chorus-codes 0.8.28 → 0.8.30

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 (146) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +4 -4
  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.js +1 -1
  24. package/.next/server/app/connect/page.js.nft.json +1 -1
  25. package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/demo/[scenario]/page.js +1 -1
  27. package/.next/server/app/demo/[scenario]/page.js.nft.json +1 -1
  28. package/.next/server/app/demo/[scenario]/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/new/page.js +1 -1
  30. package/.next/server/app/new/page.js.nft.json +1 -1
  31. package/.next/server/app/new/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/new.html +1 -1
  33. package/.next/server/app/new.rsc +2 -2
  34. package/.next/server/app/new.segments/_full.segment.rsc +2 -2
  35. package/.next/server/app/new.segments/_head.segment.rsc +1 -1
  36. package/.next/server/app/new.segments/_index.segment.rsc +1 -1
  37. package/.next/server/app/new.segments/_tree.segment.rsc +1 -1
  38. package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +2 -2
  39. package/.next/server/app/new.segments/new.segment.rsc +1 -1
  40. package/.next/server/app/onboarding/page.js +1 -1
  41. package/.next/server/app/onboarding/page.js.nft.json +1 -1
  42. package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  43. package/.next/server/app/onboarding.html +1 -1
  44. package/.next/server/app/onboarding.rsc +2 -2
  45. package/.next/server/app/onboarding.segments/_full.segment.rsc +2 -2
  46. package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
  47. package/.next/server/app/onboarding.segments/_index.segment.rsc +1 -1
  48. package/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
  49. package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +2 -2
  50. package/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
  51. package/.next/server/app/page.js +1 -1
  52. package/.next/server/app/page.js.nft.json +1 -1
  53. package/.next/server/app/page_client-reference-manifest.js +1 -1
  54. package/.next/server/app/personas/page.js +1 -1
  55. package/.next/server/app/personas/page.js.nft.json +1 -1
  56. package/.next/server/app/personas/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/personas.html +1 -1
  58. package/.next/server/app/personas.rsc +2 -2
  59. package/.next/server/app/personas.segments/_full.segment.rsc +2 -2
  60. package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
  61. package/.next/server/app/personas.segments/_index.segment.rsc +1 -1
  62. package/.next/server/app/personas.segments/_tree.segment.rsc +1 -1
  63. package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +2 -2
  64. package/.next/server/app/personas.segments/personas.segment.rsc +1 -1
  65. package/.next/server/app/runs/[runId]/page.js +1 -1
  66. package/.next/server/app/runs/[runId]/page.js.nft.json +1 -1
  67. package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/runs/page.js +1 -1
  69. package/.next/server/app/runs/page.js.nft.json +1 -1
  70. package/.next/server/app/runs/page_client-reference-manifest.js +1 -1
  71. package/.next/server/app/settings/page.js +1 -1
  72. package/.next/server/app/settings/page.js.nft.json +1 -1
  73. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/settings/permissions/page.js +1 -1
  75. package/.next/server/app/settings/permissions/page.js.nft.json +1 -1
  76. package/.next/server/app/settings/permissions/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/settings.html +1 -1
  78. package/.next/server/app/settings.rsc +2 -2
  79. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  80. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  84. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  85. package/.next/server/app/templates/page.js +1 -1
  86. package/.next/server/app/templates/page.js.nft.json +1 -1
  87. package/.next/server/app/templates/page_client-reference-manifest.js +1 -1
  88. package/.next/server/app/templates.html +1 -1
  89. package/.next/server/app/templates.rsc +2 -2
  90. package/.next/server/app/templates.segments/_full.segment.rsc +2 -2
  91. package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
  92. package/.next/server/app/templates.segments/_index.segment.rsc +1 -1
  93. package/.next/server/app/templates.segments/_tree.segment.rsc +1 -1
  94. package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +2 -2
  95. package/.next/server/app/templates.segments/templates.segment.rsc +1 -1
  96. package/.next/server/app-paths-manifest.json +4 -4
  97. package/.next/server/chunks/189.js +1 -1
  98. package/.next/server/chunks/{313.js → 385.js} +3 -3
  99. package/.next/server/chunks/681.js +1 -1
  100. package/.next/server/chunks/827.js +25 -0
  101. package/.next/server/middleware-build-manifest.js +1 -1
  102. package/.next/server/pages/404.html +1 -1
  103. package/.next/server/pages/500.html +1 -1
  104. package/.next/server/server-reference-manifest.json +1 -1
  105. package/.next/static/chunks/{641-02dbc18bdc194ee1.js → 641-7e3f4fc19494c5dc.js} +1 -1
  106. package/.next/static/chunks/{249-2e840495c38ee022.js → 742-e466c37ab445a8a1.js} +8 -8
  107. package/.next/static/chunks/app/connect/{page-ad4409761e870bd0.js → page-d61d0769677393ba.js} +1 -1
  108. package/.next/static/chunks/app/demo/[scenario]/{page-39673968f543c473.js → page-b653a3566b7e08d8.js} +1 -1
  109. package/.next/static/chunks/app/new/{page-b5f609ab9413ac00.js → page-27eb1817c252cd2e.js} +1 -1
  110. package/.next/static/chunks/app/onboarding/{page-8b0850fef487abdc.js → page-da4e2a72a0246245.js} +1 -1
  111. package/.next/static/chunks/app/{page-9bdbaad592d0ce56.js → page-76efbecd45d24a1a.js} +1 -1
  112. package/.next/static/chunks/app/personas/{page-440c6033a773100c.js → page-013358172d93e623.js} +1 -1
  113. package/.next/static/chunks/app/runs/[runId]/{page-ffc36f12f1b63ebe.js → page-9aa69b618b2943c1.js} +1 -1
  114. package/.next/static/chunks/app/runs/{page-6962ea572c9e4b74.js → page-d99788d00708dc0b.js} +1 -1
  115. package/.next/static/chunks/app/settings/{page-ad7180ee0d142704.js → page-e2f6b190d3794681.js} +1 -1
  116. package/.next/static/chunks/app/settings/permissions/{page-cd767401ac71a29c.js → page-1315296235b0994f.js} +1 -1
  117. package/.next/static/chunks/app/templates/{page-0112ab3c7ab5185d.js → page-c712fc69b314d734.js} +1 -1
  118. package/.next/trace +20 -20
  119. package/.next/trace-build +1 -1
  120. package/README.md +6 -5
  121. package/dist/cli/commands/start.js +12 -6
  122. package/dist/cli/commands/start.js.map +1 -1
  123. package/dist/cli/index.js +2 -2
  124. package/dist/cli/index.js.map +1 -1
  125. package/dist/cli/open-browser.js +16 -0
  126. package/dist/cli/open-browser.js.map +1 -0
  127. package/dist/cli/port-utils.js +2 -0
  128. package/dist/cli/port-utils.js.map +1 -1
  129. package/dist/daemon/agents/codex.js +41 -21
  130. package/dist/daemon/agents/codex.js.map +1 -1
  131. package/dist/daemon/output-watcher.js +3 -3
  132. package/dist/daemon/output-watcher.js.map +1 -1
  133. package/dist/daemon/runner/reviewer-driver.js +40 -0
  134. package/dist/daemon/runner/reviewer-driver.js.map +1 -1
  135. package/dist/lib/cli-precheck.js +29 -1
  136. package/dist/lib/cli-precheck.js.map +1 -1
  137. package/dist/lib/db/voices.js +1 -1
  138. package/dist/lib/db/voices.js.map +1 -1
  139. package/dist/lib/template-schema.js +30 -0
  140. package/dist/lib/template-schema.js.map +1 -1
  141. package/dist/lib/voice-failure-tracker.js +137 -0
  142. package/dist/lib/voice-failure-tracker.js.map +1 -0
  143. package/package.json +1 -1
  144. package/.next/server/chunks/21.js +0 -25
  145. /package/.next/static/{NjUsrVtX8A7dE29z5nGfv → TWx7XFZiSWXC2bdxzZkHz}/_buildManifest.js +0 -0
  146. /package/.next/static/{NjUsrVtX8A7dE29z5nGfv → TWx7XFZiSWXC2bdxzZkHz}/_ssgManifest.js +0 -0
@@ -27,10 +27,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  return (mod && mod.__esModule) ? mod : { "default": mod };
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.hasKeychainEntry = hasKeychainEntry;
30
31
  exports.precheckLineage = precheckLineage;
31
32
  const node_fs_1 = __importDefault(require("node:fs"));
32
33
  const node_path_1 = __importDefault(require("node:path"));
33
34
  const node_os_1 = __importDefault(require("node:os"));
35
+ const node_child_process_1 = require("node:child_process");
34
36
  const cli_health_1 = require("./cli-health");
35
37
  /**
36
38
  * Per-lineage credential file we treat as "user is logged in." Each CLI
@@ -79,6 +81,31 @@ const LOGIN_HINT = {
79
81
  moonshot: 'Run `kimi` once interactively, or set up opencode if you use the kimi-via-opencode transport.',
80
82
  openrouter: 'Save an OpenRouter API key on the Connect page.',
81
83
  };
84
+ /**
85
+ * Claude Code v2+ stores OAuth credentials in the macOS Keychain instead of a
86
+ * file on disk. Probe the Keychain for existence only (no `-w` flag — avoids
87
+ * ACL prompts in headless contexts). Returns false on non-macOS platforms.
88
+ */
89
+ const KEYCHAIN_SERVICES = {
90
+ anthropic: 'Claude Code-credentials',
91
+ };
92
+ function hasKeychainEntry(lineage) {
93
+ if (process.platform !== 'darwin')
94
+ return false;
95
+ const service = KEYCHAIN_SERVICES[lineage];
96
+ if (!service)
97
+ return false;
98
+ try {
99
+ (0, node_child_process_1.execFileSync)('security', ['find-generic-password', '-s', service], {
100
+ stdio: 'ignore',
101
+ timeout: 5000,
102
+ });
103
+ return true;
104
+ }
105
+ catch {
106
+ return false;
107
+ }
108
+ }
82
109
  /**
83
110
  * Check whether at least one of the candidate credential paths for `lineage`
84
111
  * exists and is readable. Existence-only — we don't parse contents (each CLI
@@ -127,8 +154,9 @@ async function precheckLineage(lineage) {
127
154
  }
128
155
  // Layer 2: credential file presence. Cheap, catches "logged out" without
129
156
  // paying the spawn tax. See CRED_PATHS for the per-CLI lookups.
157
+ // Falls back to macOS Keychain for CLIs that store creds there (Claude Code v2+).
130
158
  const cred = hasCredFile(lineage);
131
- if (!cred.exists) {
159
+ if (!cred.exists && !hasKeychainEntry(lineage)) {
132
160
  return {
133
161
  ok: false,
134
162
  reason: 'auth_missing',
@@ -1 +1 @@
1
- {"version":3,"file":"cli-precheck.js","sourceRoot":"","sources":["../../src/lib/cli-precheck.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-precheck.js","sourceRoot":"","sources":["../../src/lib/cli-precheck.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ const VoiceRowSchema = zod_1.z.object({
14
14
  input_cost_per_mtok: zod_1.z.number().nullable(),
15
15
  output_cost_per_mtok: zod_1.z.number().nullable(),
16
16
  enabled: zod_1.z.coerce.boolean(),
17
- disabled_reason: zod_1.z.enum(['user', 'auto_missing']).nullable().optional().default(null),
17
+ disabled_reason: zod_1.z.enum(['user', 'auto_missing', 'auto_quota']).nullable().optional().default(null),
18
18
  created_at: zod_1.z.number().int(),
19
19
  updated_at: zod_1.z.number().int(),
20
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"voices.js","sourceRoot":"","sources":["../../../src/lib/db/voices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voices.js","sourceRoot":"","sources":["../../../src/lib/db/voices.ts"],"names":[],"mappings":"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"}
@@ -73,6 +73,36 @@ const ReviewerSchema = zod_1.z.object({
73
73
  */
74
74
  persona: zod_1.z.string().optional(),
75
75
  })),
76
+ }).superRefine((reviewer, ctx) => {
77
+ // Reject `require: N` when N > candidates.length at template-save
78
+ // time. Without this guard the run would queue, fail to grant
79
+ // enough slots, and surface as an immediate, opaque chat-failure
80
+ // (issue #15: "Job moves immediately to failure upon Start press").
81
+ // Validating here turns it into a clean schema error users can fix
82
+ // before the run ever starts.
83
+ if (reviewer.require > reviewer.candidates.length) {
84
+ ctx.addIssue({
85
+ code: zod_1.z.ZodIssueCode.custom,
86
+ path: ['require'],
87
+ message: `reviewer.require (${reviewer.require}) cannot exceed reviewer.candidates.length (${reviewer.candidates.length}). ` +
88
+ `Either lower require or add more candidates.`,
89
+ });
90
+ }
91
+ // Cross-lineage diversity is a stricter constraint: when crossLineage
92
+ // is true, you also can't satisfy `require: N` with fewer than N
93
+ // distinct lineages. Caught at template-save so the runner doesn't
94
+ // have to surface "no diverse fallback available" mid-run.
95
+ if (reviewer.crossLineage && reviewer.require > 0) {
96
+ const distinctLineages = new Set(reviewer.candidates.map((c) => c.lineage)).size;
97
+ if (reviewer.require > distinctLineages) {
98
+ ctx.addIssue({
99
+ code: zod_1.z.ZodIssueCode.custom,
100
+ path: ['require'],
101
+ message: `reviewer.require (${reviewer.require}) exceeds distinct lineages (${distinctLineages}) in candidates with crossLineage=true. ` +
102
+ `Either lower require, disable crossLineage, or add candidates from more lineages.`,
103
+ });
104
+ }
105
+ }
76
106
  });
77
107
  const InputsSchema = zod_1.z.object({
78
108
  include: zod_1.z.array(zod_1.z.string()).default([]),
@@ -1 +1 @@
1
- {"version":3,"file":"template-schema.js","sourceRoot":"","sources":["../../src/lib/template-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-schema.js","sourceRoot":"","sources":["../../src/lib/template-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-failure-tracker.js","sourceRoot":"","sources":["../../src/lib/voice-failure-tracker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chorus-codes",
3
- "version": "0.8.28",
3
+ "version": "0.8.30",
4
4
  "description": "Driver-agnostic multi-LLM peer review for code decisions. Bring your own CLI; Chorus convenes 2-4 other LLMs to review the work before you ship.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "99x Agency",