chorus-codes 0.8.24 → 0.8.26

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 (154) 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 +2 -2
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  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 +2 -2
  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 +3 -3
  34. package/.next/server/app/new.segments/_full.segment.rsc +3 -3
  35. package/.next/server/app/new.segments/_head.segment.rsc +1 -1
  36. package/.next/server/app/new.segments/_index.segment.rsc +2 -2
  37. package/.next/server/app/new.segments/_tree.segment.rsc +2 -2
  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 +3 -3
  45. package/.next/server/app/onboarding.segments/_full.segment.rsc +3 -3
  46. package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
  47. package/.next/server/app/onboarding.segments/_index.segment.rsc +2 -2
  48. package/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
  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 +2 -2
  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 +3 -3
  59. package/.next/server/app/personas.segments/_full.segment.rsc +3 -3
  60. package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
  61. package/.next/server/app/personas.segments/_index.segment.rsc +2 -2
  62. package/.next/server/app/personas.segments/_tree.segment.rsc +2 -2
  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 +2 -2
  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 +2 -2
  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 +3 -3
  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 +3 -3
  79. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  80. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  82. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  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 +2 -2
  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 +3 -3
  90. package/.next/server/app/templates.segments/_full.segment.rsc +3 -3
  91. package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
  92. package/.next/server/app/templates.segments/_index.segment.rsc +2 -2
  93. package/.next/server/app/templates.segments/_tree.segment.rsc +2 -2
  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 +1 -1
  97. package/.next/server/chunks/189.js +1 -0
  98. package/.next/server/chunks/{144.js → 21.js} +1 -1
  99. package/.next/server/chunks/{668.js → 313.js} +1 -1
  100. package/.next/server/chunks/681.js +1 -1
  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/249-2e840495c38ee022.js +25 -0
  106. package/.next/static/chunks/641-2908cb9553b8753a.js +1 -0
  107. package/.next/static/chunks/690-092c26db4082d49a.js +1 -0
  108. package/.next/static/chunks/app/connect/{page-a3a0af374f90ad4c.js → page-ad4409761e870bd0.js} +1 -1
  109. package/.next/static/chunks/app/demo/[scenario]/{page-6a0e4aec4bb96fee.js → page-39673968f543c473.js} +1 -1
  110. package/.next/static/chunks/app/new/{page-b96d75506030acf8.js → page-b5f609ab9413ac00.js} +1 -1
  111. package/.next/static/chunks/app/onboarding/{page-4be5a1d944e32672.js → page-8b0850fef487abdc.js} +1 -1
  112. package/.next/static/chunks/app/{page-35375a7c8b3d117a.js → page-9bdbaad592d0ce56.js} +1 -1
  113. package/.next/static/chunks/app/personas/{page-3884f8907107a4e6.js → page-440c6033a773100c.js} +1 -1
  114. package/.next/static/chunks/app/runs/[runId]/{page-b5bcf0c093389207.js → page-ffc36f12f1b63ebe.js} +1 -1
  115. package/.next/static/chunks/app/runs/{page-376175c1ac803558.js → page-6962ea572c9e4b74.js} +1 -1
  116. package/.next/static/chunks/app/settings/page-ad7180ee0d142704.js +25 -0
  117. package/.next/static/chunks/app/settings/permissions/{page-c90795aa9299bbe8.js → page-cd767401ac71a29c.js} +1 -1
  118. package/.next/static/chunks/app/templates/page-0112ab3c7ab5185d.js +1 -0
  119. package/.next/static/css/df4972a256406ec7.css +3 -0
  120. package/.next/trace +20 -20
  121. package/.next/trace-build +1 -1
  122. package/dist/daemon/cli-semaphore.js +266 -0
  123. package/dist/daemon/cli-semaphore.js.map +1 -0
  124. package/dist/daemon/routes/settings.js +39 -0
  125. package/dist/daemon/routes/settings.js.map +1 -1
  126. package/dist/daemon/runner/doer-driver.js +243 -214
  127. package/dist/daemon/runner/doer-driver.js.map +1 -1
  128. package/dist/daemon/runner/doer.js +24 -1
  129. package/dist/daemon/runner/doer.js.map +1 -1
  130. package/dist/daemon/runner/reviewer-driver.js +299 -255
  131. package/dist/daemon/runner/reviewer-driver.js.map +1 -1
  132. package/dist/daemon/runner/reviewer.js +27 -1
  133. package/dist/daemon/runner/reviewer.js.map +1 -1
  134. package/dist/daemon/runner.js +19 -0
  135. package/dist/daemon/runner.js.map +1 -1
  136. package/dist/lib/db/chats.js +28 -0
  137. package/dist/lib/db/chats.js.map +1 -1
  138. package/dist/lib/db/connection.js +6 -0
  139. package/dist/lib/db/connection.js.map +1 -1
  140. package/dist/lib/db/schema.sql +6 -0
  141. package/dist/lib/model-pricing.js +306 -0
  142. package/dist/lib/model-pricing.js.map +1 -0
  143. package/dist/lib/settings/concurrency.js +101 -0
  144. package/dist/lib/settings/concurrency.js.map +1 -0
  145. package/package.json +1 -1
  146. package/.next/server/chunks/946.js +0 -1
  147. package/.next/static/chunks/116-8bf7e014066cedde.js +0 -25
  148. package/.next/static/chunks/15-d438a2b057302bed.js +0 -1
  149. package/.next/static/chunks/641-60721f44faf711b9.js +0 -1
  150. package/.next/static/chunks/app/settings/page-1792a3e289409b2d.js +0 -25
  151. package/.next/static/chunks/app/templates/page-1449b0aea2e7cb68.js +0 -1
  152. package/.next/static/css/d2bb161eb5bee944.css +0 -3
  153. /package/.next/static/{jdUcCHB2b5lVrf4v8iQjl → eOeXty5cBGWg7xnmtF6ST}/_buildManifest.js +0 -0
  154. /package/.next/static/{jdUcCHB2b5lVrf4v8iQjl → eOeXty5cBGWg7xnmtF6ST}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":10597230,"timestamp":6758377658278,"id":14,"parentId":1,"tags":{},"startTime":1778149748084,"traceId":"7ab2362f13fe80d4"},{"name":"run-typescript","duration":5750629,"timestamp":6758388259882,"id":2103,"parentId":1,"tags":{},"startTime":1778149758686,"traceId":"7ab2362f13fe80d4"},{"name":"static-check","duration":396941,"timestamp":6758394053266,"id":2106,"parentId":1,"tags":{},"startTime":1778149764479,"traceId":"7ab2362f13fe80d4"},{"name":"static-generation","duration":1274366,"timestamp":6758394612747,"id":2146,"parentId":1,"tags":{},"startTime":1778149765039,"traceId":"7ab2362f13fe80d4"},{"name":"collect-build-traces","duration":6259994,"timestamp":6758394450667,"id":2143,"parentId":1,"tags":{},"startTime":1778149764877,"traceId":"7ab2362f13fe80d4"},{"name":"telemetry-flush","duration":31,"timestamp":6758400712271,"id":2155,"parentId":1,"tags":{},"startTime":1778149771138,"traceId":"7ab2362f13fe80d4"},{"name":"next-build","duration":23144821,"timestamp":6758377567490,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"webpack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778149747994,"traceId":"7ab2362f13fe80d4"}]
1
+ [{"name":"run-webpack","duration":10796114,"timestamp":6766667988726,"id":14,"parentId":1,"tags":{},"startTime":1778158038415,"traceId":"96ba550fd6eb03e5"},{"name":"run-typescript","duration":5584072,"timestamp":6766678787710,"id":2118,"parentId":1,"tags":{},"startTime":1778158049214,"traceId":"96ba550fd6eb03e5"},{"name":"static-check","duration":391682,"timestamp":6766684429367,"id":2121,"parentId":1,"tags":{},"startTime":1778158054855,"traceId":"96ba550fd6eb03e5"},{"name":"static-generation","duration":897815,"timestamp":6766685736633,"id":2161,"parentId":1,"tags":{},"startTime":1778158056163,"traceId":"96ba550fd6eb03e5"},{"name":"collect-build-traces","duration":6311220,"timestamp":6766684821443,"id":2158,"parentId":1,"tags":{},"startTime":1778158055247,"traceId":"96ba550fd6eb03e5"},{"name":"telemetry-flush","duration":35,"timestamp":6766691134339,"id":2170,"parentId":1,"tags":{},"startTime":1778158061560,"traceId":"96ba550fd6eb03e5"},{"name":"next-build","duration":23236409,"timestamp":6766667897975,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"webpack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778158038324,"traceId":"96ba550fd6eb03e5"}]
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ /**
3
+ * Daemon-wide semaphore for local-CLI subprocesses.
4
+ *
5
+ * Two layers, both daemon-process-wide (NOT per-chat):
6
+ *
7
+ * 1. Global cap (`maxParallelCli`) — total number of local-CLI shim
8
+ * processes in flight across all chats.
9
+ *
10
+ * 2. Per-lineage cap (`perCli['opencode-cli']` etc.) — subset cap
11
+ * per binary family.
12
+ *
13
+ * `acquire(lineage)` blocks until BOTH a global slot AND a lineage slot
14
+ * are available, then returns a `release()` function the caller MUST
15
+ * invoke (use try/finally). Releasing returns the slots and wakes the
16
+ * next waiter for whichever queue had backpressure.
17
+ *
18
+ * Settings are read dynamically per acquire so the user can tune the
19
+ * caps in /settings and have it take effect on the next reviewer that
20
+ * tries to start — no daemon restart needed.
21
+ *
22
+ * HTTP-dispatched shims (openrouter, future API-only shims) DO NOT call
23
+ * acquire — they consume zero local CPU/RAM, just network. The
24
+ * semaphore exists to prevent the user's box melting under N parallel
25
+ * subprocess children.
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports._testing = void 0;
29
+ exports.acquire = acquire;
30
+ exports.snapshot = snapshot;
31
+ const concurrency_js_1 = require("../lib/settings/concurrency.js");
32
+ /**
33
+ * Module-level state. The daemon is a singleton process so this is the
34
+ * authoritative cross-chat counter. Tests use `_resetForTests` to clear
35
+ * between cases.
36
+ */
37
+ let globalInFlight = 0;
38
+ const perCliInFlight = new Map();
39
+ /**
40
+ * FIFO queue of waiters. We don't split per lineage because checking
41
+ * whether a waiter at the head can proceed is cheap (two map lookups +
42
+ * a settings read), and a single FIFO preserves fairness — a waiter
43
+ * that came in first won't be starved by a later arrival of a different
44
+ * lineage that happens to have free capacity.
45
+ *
46
+ * Trade-off: under heavy load with one bottlenecked lineage, the queue
47
+ * head might block on perCli cap while later waiters of other lineages
48
+ * could have run immediately. We accept this — fairness > throughput at
49
+ * the scale chorus operates (single-user, ~10 chats max).
50
+ */
51
+ const waiters = [];
52
+ function getPerCli(lineage) {
53
+ return perCliInFlight.get(lineage) ?? 0;
54
+ }
55
+ function incPerCli(lineage) {
56
+ perCliInFlight.set(lineage, getPerCli(lineage) + 1);
57
+ }
58
+ function decPerCli(lineage) {
59
+ const next = getPerCli(lineage) - 1;
60
+ if (next <= 0) {
61
+ perCliInFlight.delete(lineage);
62
+ }
63
+ else {
64
+ perCliInFlight.set(lineage, next);
65
+ }
66
+ }
67
+ /**
68
+ * Mutex flag preventing reentrant `tryGrantHead` execution. The
69
+ * function does an `await getConcurrency()` (DB read) inside its loop,
70
+ * so two concurrent callers (e.g. two near-simultaneous `release()`
71
+ * events) would otherwise both pass the `waiters.length > 0` check,
72
+ * both hit the await, both resume, and both try to shift the same
73
+ * waiter — leading to undefined access and double-grant. With this
74
+ * flag, the second caller bails immediately; the first caller's loop
75
+ * will pick up any newly-released capacity before exiting.
76
+ *
77
+ * `dirty` is the companion: when a reentrant call bails, it sets
78
+ * `dirty = true` to signal "you have new work to do." The live
79
+ * tryGrantHead checks this in `finally` and re-enters if set. In
80
+ * single-threaded JS this is technically belt-and-suspenders — there
81
+ * is no yield between the live's `while`-exit and `granting = false`
82
+ * for an external push to slip in — but it eliminates any ambiguity
83
+ * under a future refactor that might introduce a yield point in that
84
+ * window, and at most costs one extra tryGrantHead call per drain.
85
+ */
86
+ let granting = false;
87
+ let dirty = false;
88
+ /**
89
+ * Try to grant the head waiter (and subsequent waiters whose lineage
90
+ * has free capacity). Called after every release and from `acquire()`.
91
+ *
92
+ * Walks from head: if the head can run, grant it and continue. If not
93
+ * (their per-CLI cap is hit), STOP — strict FIFO. We deliberately do
94
+ * NOT skip the head to grant a later waiter of a different lineage,
95
+ * even if that later one has free capacity. Skipping would convert the
96
+ * queue from "fair FIFO" into "lineage-affinity scheduler" which is
97
+ * surprising under load.
98
+ *
99
+ * Errors (e.g. settings DB unavailable) are swallowed and logged —
100
+ * propagating would land as an unhandled rejection in the
101
+ * fire-and-forget call site in `release()`, crashing the daemon and
102
+ * stranding the queue head forever.
103
+ */
104
+ async function tryGrantHead() {
105
+ if (granting) {
106
+ // A live tryGrantHead is mid-flight; mark dirty so it knows new
107
+ // work arrived and re-runs before clearing the mutex.
108
+ dirty = true;
109
+ return;
110
+ }
111
+ granting = true;
112
+ dirty = false;
113
+ try {
114
+ // Outer drain loop: re-runs the inner grant pass while any reentrant
115
+ // call set `dirty = true`. Without this, an aborted-waiter splice
116
+ // that pokes us mid-grant could be swallowed (the abort's
117
+ // tryGrantHead call sees granting=true, bails, and we'd exit
118
+ // without re-checking the queue).
119
+ do {
120
+ dirty = false;
121
+ while (waiters.length > 0) {
122
+ const config = await (0, concurrency_js_1.getConcurrency)();
123
+ // Defensive recheck — another release may have fired and emptied
124
+ // the queue while we were awaiting the DB read.
125
+ if (waiters.length === 0)
126
+ break;
127
+ if (globalInFlight >= config.maxParallelCli)
128
+ break;
129
+ const head = waiters[0];
130
+ const perCliCap = (0, concurrency_js_1.resolvePerCliCap)(config, head.lineage);
131
+ if (getPerCli(head.lineage) >= perCliCap)
132
+ break;
133
+ waiters.shift();
134
+ globalInFlight++;
135
+ incPerCli(head.lineage);
136
+ head.cleanup?.();
137
+ head.resolve();
138
+ }
139
+ // If a reentrant call marked dirty (e.g. an abort spliced the
140
+ // blocked head, freeing the queue), loop again so the new state
141
+ // gets a chance to grant. Without this we'd exit while leaving
142
+ // an eligible waiter unattended until the next external event.
143
+ } while (dirty);
144
+ }
145
+ catch (err) {
146
+ // Settings DB unreachable, corrupt, or any other unexpected failure.
147
+ // Logged but never re-thrown — the void-call in release() can't
148
+ // catch it, and an unhandled rejection here would crash the daemon
149
+ // AND strand the queue head forever (subsequent releases would
150
+ // re-trigger and silently fail again, creating a permanent
151
+ // semaphore deadlock).
152
+ console.error('[chorus] cli-semaphore tryGrantHead failed:', err);
153
+ }
154
+ finally {
155
+ granting = false;
156
+ }
157
+ }
158
+ /**
159
+ * Acquire global + per-lineage slots. Blocks until both are free.
160
+ * Returns a release function the caller MUST invoke (typically in a
161
+ * `finally` block) to free the slots and wake the next waiter.
162
+ *
163
+ * Implementation note: every call enqueues, even when there's no
164
+ * contention. Without this, two concurrent callers could both pass the
165
+ * `waiters.length === 0 && globalInFlight < cap` check (separated by
166
+ * the `await getConcurrency()` yield) and both increment, exceeding
167
+ * the cap. Always-enqueue routes everything through `tryGrantHead`'s
168
+ * mutex so increments are atomic w.r.t. the cap check. The extra
169
+ * microtask cost is negligible at chorus's scale.
170
+ *
171
+ * Idempotent on release — calling release() twice is a no-op so a
172
+ * caller that double-frees on an error path doesn't underflow the
173
+ * counters.
174
+ *
175
+ * Cancellation: the optional `signal` lets a caller bail out of a
176
+ * queued wait without leaving a stale waiter blocking the head. On
177
+ * abort, the waiter is removed from the queue and the returned promise
178
+ * rejects. If the slot was already granted before abort fires, the
179
+ * caller is responsible for invoking the release function as usual —
180
+ * we don't auto-release because the caller may already have spawned
181
+ * the subprocess.
182
+ */
183
+ async function acquire(lineage, signal) {
184
+ return new Promise((resolve, reject) => {
185
+ if (signal?.aborted) {
186
+ reject(signal.reason ?? new Error('aborted'));
187
+ return;
188
+ }
189
+ const waiter = {
190
+ lineage,
191
+ resolve: () => resolve(makeRelease(lineage)),
192
+ reject,
193
+ };
194
+ if (signal) {
195
+ const onAbort = () => {
196
+ const i = waiters.indexOf(waiter);
197
+ if (i >= 0)
198
+ waiters.splice(i, 1);
199
+ // Also re-poke the queue: the aborted waiter may have been
200
+ // blocking later waiters of a different lineage.
201
+ void tryGrantHead();
202
+ reject(signal.reason ?? new Error('aborted'));
203
+ };
204
+ signal.addEventListener('abort', onAbort, { once: true });
205
+ waiter.cleanup = () => signal.removeEventListener('abort', onAbort);
206
+ }
207
+ waiters.push(waiter);
208
+ void tryGrantHead();
209
+ });
210
+ }
211
+ function makeRelease(lineage) {
212
+ let released = false;
213
+ return () => {
214
+ if (released)
215
+ return;
216
+ released = true;
217
+ globalInFlight = Math.max(0, globalInFlight - 1);
218
+ decPerCli(lineage);
219
+ // Don't await — the caller doesn't care, and awaiting would couple
220
+ // every release to the settings read inside tryGrantHead.
221
+ // tryGrantHead has its own try/catch so a DB failure can't surface
222
+ // as an unhandled rejection here.
223
+ void tryGrantHead();
224
+ };
225
+ }
226
+ /**
227
+ * Diagnostic snapshot. Used by /api/v1/diagnostics for the health page.
228
+ */
229
+ function snapshot() {
230
+ return {
231
+ globalInFlight,
232
+ perCli: Object.fromEntries(perCliInFlight),
233
+ queueDepth: waiters.length,
234
+ };
235
+ }
236
+ /**
237
+ * @internal — for tests only. Resets all in-flight counters and clears
238
+ * the wait queue. Tests use this between cases since the module-level
239
+ * state is otherwise sticky across the whole vitest worker.
240
+ *
241
+ * Pending waiters get rejected with a 'reset' error so a previous
242
+ * test's queued acquire() doesn't leak into the next test as a hung
243
+ * promise. Without this, awaiting a never-rejected acquire from a
244
+ * prior test would silently hang the next test until vitest's timeout.
245
+ */
246
+ exports._testing = {
247
+ reset: () => {
248
+ globalInFlight = 0;
249
+ perCliInFlight.clear();
250
+ granting = false;
251
+ dirty = false;
252
+ while (waiters.length > 0) {
253
+ const w = waiters.shift();
254
+ if (!w)
255
+ break;
256
+ w.cleanup?.();
257
+ try {
258
+ w.reject(new Error('cli-semaphore reset (tests)'));
259
+ }
260
+ catch {
261
+ /* defensive — never let one waiter's reject handler block another */
262
+ }
263
+ }
264
+ },
265
+ };
266
+ //# sourceMappingURL=cli-semaphore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-semaphore.js","sourceRoot":"","sources":["../../src/daemon/cli-semaphore.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAgLH,0BAgCC;AAoBD,4BAUC;AA5OD,mEAIwC;AAgBxC;;;;GAIG;AACH,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,MAAM,cAAc,GAA+B,IAAI,GAAG,EAAE,CAAC;AAE7D;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,GAAa,EAAE,CAAC;AAE7B,SAAS,SAAS,CAAC,OAAsB;IACvC,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,SAAS,CAAC,OAAsB;IACvC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,SAAS,CAAC,OAAsB;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACd,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,KAAK,GAAG,KAAK,CAAC;AAElB;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,YAAY;IACzB,IAAI,QAAQ,EAAE,CAAC;QACb,gEAAgE;QAChE,sDAAsD;QACtD,KAAK,GAAG,IAAI,CAAC;QACb,OAAO;IACT,CAAC;IACD,QAAQ,GAAG,IAAI,CAAC;IAChB,KAAK,GAAG,KAAK,CAAC;IACd,IAAI,CAAC;QACH,qEAAqE;QACrE,kEAAkE;QAClE,0DAA0D;QAC1D,6DAA6D;QAC7D,kCAAkC;QAClC,GAAG,CAAC;YACF,KAAK,GAAG,KAAK,CAAC;YACd,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAc,GAAE,CAAC;gBACtC,iEAAiE;gBACjE,gDAAgD;gBAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAChC,IAAI,cAAc,IAAI,MAAM,CAAC,cAAc;oBAAE,MAAM;gBAEnD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,SAAS,GAAG,IAAA,iCAAgB,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS;oBAAE,MAAM;gBAEhD,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,cAAc,EAAE,CAAC;gBACjB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;YACD,8DAA8D;YAC9D,gEAAgE;YAChE,+DAA+D;YAC/D,+DAA+D;QACjE,CAAC,QAAQ,KAAK,EAAE;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qEAAqE;QACrE,gEAAgE;QAChE,mEAAmE;QACnE,+DAA+D;QAC/D,2DAA2D;QAC3D,uBAAuB;QACvB,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;YAAS,CAAC;QACT,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACI,KAAK,UAAU,OAAO,CAC3B,OAAsB,EACtB,MAAoB;IAEpB,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACjD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAW;YACrB,OAAO;YACP,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM;SACP,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,2DAA2D;gBAC3D,iDAAiD;gBACjD,KAAK,YAAY,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAO,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,OAAsB;IACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,OAAO,GAAG,EAAE;QACV,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;QACjD,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,mEAAmE;QACnE,0DAA0D;QAC1D,mEAAmE;QACnE,kCAAkC;QAClC,KAAK,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ;IAKtB,OAAO;QACL,cAAc;QACd,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;QAC1C,UAAU,EAAE,OAAO,CAAC,MAAM;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACU,QAAA,QAAQ,GAAG;IACtB,KAAK,EAAE,GAAS,EAAE;QAChB,cAAc,GAAG,CAAC,CAAC;QACnB,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,GAAG,KAAK,CAAC;QACjB,KAAK,GAAG,KAAK,CAAC;QACd,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC;gBAAE,MAAM;YACd,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;YACvE,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -96,6 +96,45 @@ function registerSettingsRoutes(fastify) {
96
96
  return (0, api_response_js_1.errorResponse)('validation', message);
97
97
  }
98
98
  });
99
+ // ─── Concurrency (daemon-wide CLI subprocess caps) ────────────────────
100
+ fastify.get('/settings/concurrency', async () => {
101
+ try {
102
+ const { getConcurrency, CLI_LINEAGES, _defaults } = await import('../../lib/settings/concurrency.js');
103
+ return (0, api_response_js_1.successResponse)({
104
+ ...(await getConcurrency()),
105
+ // Surface the canonical CLI list + defaults so the cockpit
106
+ // doesn't have to mirror them. Cockpit renders one input per
107
+ // lineage; missing perCli keys fall through to defaults.
108
+ cliLineages: CLI_LINEAGES,
109
+ defaults: _defaults,
110
+ });
111
+ }
112
+ catch (error) {
113
+ const message = error instanceof Error ? error.message : 'Unknown error';
114
+ return (0, api_response_js_1.errorResponse)('internal', message);
115
+ }
116
+ });
117
+ fastify.put('/settings/concurrency', async (request) => {
118
+ try {
119
+ const { getConcurrency, setConcurrency, ConcurrencySchema } = await import('../../lib/settings/concurrency.js');
120
+ const current = await getConcurrency();
121
+ const body = request.body ?? {};
122
+ // Merge incoming patch with current state — partial PUTs are
123
+ // friendlier to the cockpit (it can save just the changed input
124
+ // without having to round-trip the whole object).
125
+ const merged = {
126
+ maxParallelCli: body.maxParallelCli ?? current.maxParallelCli,
127
+ perCli: { ...current.perCli, ...(body.perCli ?? {}) },
128
+ };
129
+ const validated = ConcurrencySchema.parse(merged);
130
+ await setConcurrency(validated);
131
+ return (0, api_response_js_1.successResponse)(validated);
132
+ }
133
+ catch (error) {
134
+ const message = error instanceof Error ? error.message : 'Unknown error';
135
+ return (0, api_response_js_1.errorResponse)('validation', message);
136
+ }
137
+ });
99
138
  // ─── Telemetry (anonymous heartbeat opt-out) ─────────────────────────
100
139
  fastify.get('/settings/telemetry', async () => {
101
140
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/daemon/routes/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/daemon/routes/settings.ts"],"names":[],"mappings":"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"}