pipework 0.266.0 → 0.268.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.268.0
4
+
5
+ - **Changed: pipework is inlined into vite only in test projects that resolve to `isolate: true`** (#942). Every generated vitest project put `pipework` in `server.deps.inline`, so each fork sent about 1,036 `pipework/dist` modules through vite's transform, about 10-30 s per e2e file, even in `isolate: false` projects, where one module registry is shared per fork and inlining protects nothing. Now `pipework` is inlined only when the project's effective `isolate` is true (dedicated `vitest.isolate` at profile, module or workspace level, else `extra.test.isolate`, else the default `false`), or its pool is `vmThreads` or `vmForks`. Entries in `vitest.inlineDeps` are always inlined as before. An app that relied on vite transforming pipework in an `isolate: false` project (for example `vi.mock` of a module pipework imports internally) can add `'pipework'` to `vitest.inlineDeps`.
6
+
7
+ ## 0.267.0
8
+
9
+ - **Fixed: a `retry-after` no longer zeroes an outbound quota until the window's reset** (#937). Any response carrying `retry-after` (a transient 503 included) set `remaining` to 0 and kept the later of the window's reset and the pause, so a few seconds' pause closed the key for every caller until the hourly reset, up to an hour, with the budget unspent. A `retry-after` is now a pause of its own, whatever the status: calls of every class are refused until `now + retry-after` and no longer, and `remaining` and the window's reset are not touched. The pause is kept in two new `outbound_quota` columns, `paused_until` and `paused_status`; apps with `quota: {}` generate a migration for them. `QuotaExhaustedError` gains `reason` (`'spent'` or `'paused'`) and `pausedStatus`; for a pause its `resetAt` is the pause's end (a job is handed back until then) and its message reads `paused by retry-after (status 503) until …`. `record(key, headers, { status })` takes the response's status; `call` passes it from the result or the thrown error. `state()` returns `pausedUntil` and `pausedStatus`. `alerts.source.quotaExhausted` raises while a pause is live, reading `github:installation:x paused by retry-after (status 503) until 14:54Z; 12382/15000 left`, with `pausedUntil` and `pausedStatus` in its context. A call refused during a pause counts as `refused` in `quota.spend`.
10
+
3
11
  ## 0.266.0
4
12
 
5
13
  - **Added: a client that disconnects cancels its request's work** (#938). Before, a request whose client aborted ran its handler and its transaction to completion, holding the connection. Now, when the connection closes before the response is finished, the request's signal aborts: the running statement is cancelled on the server, the transaction rolled back and the connection returned to the pool, for request-wide transactions and `.transaction('manual')` checkpoints alike. Handlers see the signal on the context (`flow.require().signal`) and as the `signal` dep, and can pass it to their own outbound calls. It aborts with `RequestAbortedError` (499, `REQUEST_ABORTED`). An aborted request is logged at info as `request aborted by client`, records a 499 error step, sends nothing and does not call `onInternalError`, so it does not raise a request-fault alert. `transactionTimeoutMs` bounds only opening the transactions; it never timed the handler.
package/REFERENCE.md CHANGED
@@ -1594,7 +1594,7 @@ await links.beginUse(code, { kind: 'view', proof: { person: pass } })
1594
1594
 
1595
1595
  Every process of an app that calls one rate-limited upstream (a GitHub App installation's hourly limit, Stripe, an LLM provider) spends the same budget. `quota` shares it by caller class: the budget is read from the upstream's own response headers and kept in Postgres, so each process sees what the others spent, and a reserve stops bulk work from starving priority calls.
1596
1596
 
1597
- Opt in with blueprint `quota: {}`. The generated migration then includes one table, not tenant-scoped: `outbound_quota` — `key` (primary key, one row per upstream), `remaining`, `limit` (null unless the upstream sends it), `reset_at`, `updated_at`. A second table, `outbound_quota_spend`, counts calls per caller: `key`, `caller`, `window_end` (the budget row's `reset_at`; `infinity` for calls made before any window was recorded), `sent`, `refused`, `updated_at`, primary key `(key, caller, window_end)`.
1597
+ Opt in with blueprint `quota: {}`. The generated migration then includes one table, not tenant-scoped: `outbound_quota` — `key` (primary key, one row per upstream), `remaining`, `limit` (null unless the upstream sends it), `reset_at`, `updated_at`, `paused_until` and `paused_status` (both null unless a `retry-after` set a pause). A second table, `outbound_quota_spend`, counts calls per caller: `key`, `caller`, `window_end` (the budget row's `reset_at`; `infinity` for calls made before any window was recorded), `sent`, `refused`, `updated_at`, primary key `(key, caller, window_end)`.
1598
1598
 
1599
1599
  ### `quota.create`
1600
1600
 
@@ -1611,12 +1611,12 @@ All reads and writes run on their own autocommitted connection, outside the call
1611
1611
 
1612
1612
  ### Methods
1613
1613
 
1614
- - `call({ key, class, caller? }, send, { headers? }?)` — `caller` (typed `K`) labels the call in `spend`; without it the call counts under `unlabelled`. Takes one unit with a single atomic `UPDATE` (only while the window is open and `remaining > reserve`), runs `send`, then records the budget from the response headers (`result.headers` when it has a `get`; `headers(result)` for other clients, which may return a plain header map). If `send` throws, headers on `err.response.headers` or `err.headers` are still recorded, and the error is rethrown. With no row for the key, or a window that has passed, the call is sent without taking a unit (the budget is unknown) and the response is recorded. A refused call throws `QuotaExhaustedError` before sending. The count is made by the same statement that takes the unit (a refusal counts under `refused`, a send under `sent`); a call sent without a known window counts under `infinity` and moves into the first window a response records.
1614
+ - `call({ key, class, caller? }, send, { headers? }?)` — `caller` (typed `K`) labels the call in `spend`; without it the call counts under `unlabelled`. Takes one unit with a single atomic `UPDATE` (only while the window is open and `remaining > reserve`), runs `send`, then records the budget from the response headers (`result.headers` when it has a `get`; `headers(result)` for other clients, which may return a plain header map). If `send` throws, headers on `err.response.headers` or `err.headers` are still recorded, and the error is rethrown. With no row for the key, or a window that has passed, the call is sent without taking a unit (the budget is unknown) and the response is recorded. A refused call throws `QuotaExhaustedError` before sending; a call is also refused, for every class, while a `retry-after` pause is live (the check is in the same `UPDATE`). On a throw the status is read from `err.response.status` or `err.status`, on a result from `result.status` (numbers only). The count is made by the same statement that takes the unit (a refusal, including one while paused, counts under `refused`, a send under `sent`); a call sent without a known window counts under `infinity` and moves into the first window a response records.
1615
1615
  - `spend(key)` — `{ current, previous, unplaced }`: `current` and `previous` are `{ resetAt, callers: { caller, sent, refused }[] }` for the window of the live budget row and the one before it (null when absent), callers sorted by sent + refused descending; `unplaced` is the callers counted before any window was known. A call recorded with `record(key, headers)` (a response not sent through `call`) is not counted, so every call must go through `call` for the counts to be whole.
1616
- - `record(key, headers)` — records headers from a call sent through your own client. In the same window the stored value only goes down (`LEAST`), so a stale header cannot undo concurrent spending; a later reset replaces the row; an earlier one is ignored. `retry-after` (seconds) sets `remaining` to 0 until at least that long from now.
1617
- - `state(key)` — `{ remaining, limit, resetAt }`, or `null` when there is no row or its window has passed.
1616
+ - `record(key, headers, { status? }?)` — records headers from a call sent through your own client. In the same window the stored value only goes down (`LEAST`), so a stale header cannot undo concurrent spending; a later reset replaces the row; an earlier one is ignored. A `retry-after` (seconds), on any status, pauses the key until that long from now and does nothing else: `remaining` and `reset_at` of an existing row are not written, and two pauses keep the later end (`paused_until = GREATEST(...)`). `status` is kept as `paused_status`. With no row for the key, one is made with `remaining` 0 and a window ending with the pause, so it expires with it; the next response with budget headers replaces it. A response with budget headers and a `retry-after` records both.
1617
+ - `state(key)` — `{ remaining, limit, resetAt, pausedUntil, pausedStatus }`, or `null` when there is no row or both its window and any pause have passed. `pausedUntil` and `pausedStatus` are `null` unless a pause is live.
1618
1618
 
1619
- `QuotaExhaustedError` (`code` `QUOTA_EXHAUSTED`, status 429) carries `key`, `class`, `remaining`, `reserve` and `resetAt`. Thrown inside a job handler, the worker hands the job back like `jobs.later`, to run at `resetAt`; the attempt is not counted.
1619
+ `QuotaExhaustedError` (`code` `QUOTA_EXHAUSTED`, status 429) carries `key`, `class`, `remaining`, `reserve`, `resetAt`, `reason` (`'spent'`, or `'paused'` while a `retry-after` pause is live) and `pausedStatus` (the status that set the pause, else `null`). For a pause `resetAt` is the end of the pause, so `retryAfterSeconds` is the pause, and the message reads `Quota for "<key>" is paused by retry-after (status 503) until <iso>; <remaining> remaining of the window.` Thrown inside a job handler, the worker hands the job back like `jobs.later`, to run at `resetAt`; the attempt is not counted.
1620
1620
 
1621
1621
  ### Example: GitHub calls shared by class
1622
1622
 
@@ -1928,7 +1928,7 @@ Pass in `sources`; each raises with a fixed key on a tick and, where it can tell
1928
1928
  - `alerts.source.longRunning({ olderThanMs, table?, severity? = 'warning' })` — `job-long-running:<jobType>` while a job has been claimed longer; resolves when none is.
1929
1929
  - `alerts.source.backlog({ maxPending?, maxOldestAgeMs?, table?, severity? = 'warning', owner?, runbook? })` — `queue-backlog:<jobType>` while that type has more jobs ready to claim than `maxPending`, or the oldest has waited longer than `maxOldestAgeMs`; resolves when under both. The alert carries `owner`, `runbook` and a context `{ ready, running, oldestReadyWaitMs }`. A custom `AlertSource` condition may set `owner`, `runbook` and `context` too.
1930
1930
  - `alerts.source.unitFault({ window, owner?, runbook?, severity? = 'error', units?, database? })` — `unit-fault:<unit>` while a systemd unit has stopped abnormally within `window` ms, message `<unit>: <lastResult> x<count> in <N> min`, context `{ count, lastResult, lastExitCode, lastExitStatus, firstAt, lastAt }`; resolves once the window passes with no new fault. Faults come from the unit itself, so a crash-looping or OOM-killed service (`MemoryMax=` gives `oom-kill`) is reported even though it cannot report its own death: add `ExecStopPost=pipework alerts unit-fault --unit %n` (optionally `--database <name>`) to the unit. The command reads `$SERVICE_RESULT`, `$EXIT_CODE` and `$EXIT_STATUS`, writes one row to `pipework_unit_faults` over one short connection (no manifold boot), and writes nothing for a clean stop. The table comes with the `alerts` blueprint flag.
1931
- - `alerts.source.quotaExhausted({ keys?, floor? = 0, severity? = 'error', owner?, runbook?, database? })` — `quota-exhausted:<key>` while a `quota` row has `remaining` at or under `floor` before its reset, or a `quota.call` was refused against it since it was last recorded; resolves when the row recovers or its reset passes. `keys` is a non-empty array or a RegExp. Needs `quota` configured. The alert carries `owner`, `runbook` and a context `{ key, remaining, limit, resetAt, refused, topCallers }`, where `topCallers` is the three callers that spent the most in that window (`{ caller, sent, refused }[]`, empty when none are counted); the message reads `github:installation:subseam 0/15000 until 18:33Z`, with `; top: run-list 9100, sync 4200` appended when `topCallers` is not empty.
1931
+ - `alerts.source.quotaExhausted({ keys?, floor? = 0, severity? = 'error', owner?, runbook?, database? })` — `quota-exhausted:<key>` while a `quota` row has `remaining` at or under `floor` before its reset, or a `quota.call` was refused against it since it was last recorded, or a `retry-after` pause on it is live; resolves when the row recovers, its reset passes, or the pause ends. `keys` is a non-empty array or a RegExp. Needs `quota` configured. The alert carries `owner`, `runbook` and a context `{ key, remaining, limit, resetAt, refused, pausedUntil, pausedStatus, topCallers }` (`pausedUntil` and `pausedStatus` `null` unless paused; `topCallers` is the three callers that spent the most in that window, `{ caller, sent, refused }[]`); the message reads `github:installation:subseam 0/15000 until 18:33Z` (with `; top: ...` appended as above when `topCallers` is not empty), and for a pause `github:installation:subseam paused by retry-after (status 503) until 18:33Z; 12000/15000 left`.
1932
1932
  - `alerts.source.query({ name, query, id, message, context?, subject?, severity? = 'error', owner?, runbook?, database? })` — for a condition that is true right now, over any table (pipework's or the app's). `query` is an SQL fragment returning one row per subject; each row raises `<name>:<id>`, and an open alert under `<name>:` that a tick no longer returns is resolved. `name` is non-empty and has no `:`. The query runs as the system, across tenants.
1933
1933
  ```ts
1934
1934
  alerts.source.query({
@@ -145,8 +145,9 @@ export declare function unitFaultSource(options: {
145
145
  /**
146
146
  * Raises `quota-exhausted:<key>` while an upstream quota row (needs `quota` configured) has remaining at or
147
147
  * under `floor` (default 0) before its reset, or refused a call since it was last recorded; resolves when the
148
- * row recovers or its reset passes. `keys` limits it to those keys (a non-empty array or a RegExp). Conditions
149
- * carry `owner`, `runbook` and a context of `key`, `remaining`, `limit`, `resetAt`, `refused` and `topCallers` (the three callers that spent the most in the window, from `quota` spend counts).
148
+ * row recovers or its reset passes. It also raises while a `retry-after` pause is live (`paused_until`), reading
149
+ * "paused", not exhausted. `keys` limits it to those keys (a non-empty array or a RegExp). Conditions carry
150
+ * `owner`, `runbook` and a context of `key`, `remaining`, `limit`, `resetAt`, `refused`, `pausedUntil`, `pausedStatus` and `topCallers` (the three callers that spent the most in the window, from `quota` spend counts).
150
151
  */
151
152
  export declare function quotaExhaustedSource(options?: {
152
153
  owner?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/infra/alerts/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/infra/alerts/sources.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAK3D,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5E,gHAAgH;IAChH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;CACtC;AAED,UAAU,WAAW;IAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAE7E,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAElC,UAAU,YAAY;IAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAe5I,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,CAWvF;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAA;IACnB,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,cAAc,CAAC,SAAS,CAAC,CAAA;CAC3D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAuBpE;AAED,MAAM,WAAW,YAAY;IAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE;AAEvH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,gHAAgH;IAChH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAA;IACpB,oGAAoG;IACpG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAA;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,cAAc,CAAC,SAAS,CAAC,CAAA;IACrE,4FAA4F;IAC5F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,iGAAiG;IACjG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,WAAW,CA2DxE;AAQD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,CAwCxN;AAED,0IAA0I;AAC1I,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG,WAAW,CAgBvH;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CA6B9K;AAED,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAO,GAAG,WAAW,CAqBpH;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAqClL;AAgBD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,CAwEpM;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,CAmBtN;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAO,GAAG,WAAW,CAoBvK"}
@@ -320,8 +320,9 @@ function topCallers(r) {
320
320
  /**
321
321
  * Raises `quota-exhausted:<key>` while an upstream quota row (needs `quota` configured) has remaining at or
322
322
  * under `floor` (default 0) before its reset, or refused a call since it was last recorded; resolves when the
323
- * row recovers or its reset passes. `keys` limits it to those keys (a non-empty array or a RegExp). Conditions
324
- * carry `owner`, `runbook` and a context of `key`, `remaining`, `limit`, `resetAt`, `refused` and `topCallers` (the three callers that spent the most in the window, from `quota` spend counts).
323
+ * row recovers or its reset passes. It also raises while a `retry-after` pause is live (`paused_until`), reading
324
+ * "paused", not exhausted. `keys` limits it to those keys (a non-empty array or a RegExp). Conditions carry
325
+ * `owner`, `runbook` and a context of `key`, `remaining`, `limit`, `resetAt`, `refused`, `pausedUntil`, `pausedStatus` and `topCallers` (the three callers that spent the most in the window, from `quota` spend counts).
325
326
  */
326
327
  export function quotaExhaustedSource(options = {}) {
327
328
  const floor = options.floor ?? 0;
@@ -344,6 +345,9 @@ export function quotaExhaustedSource(options = {}) {
344
345
  SELECT q.key, q.remaining, q."limit", q.reset_at,
345
346
  (q.remaining > ${floor} AND q.refused_at IS NOT NULL AND q.refused_at >= q.updated_at) AS refused_only,
346
347
  (q.refused_at IS NOT NULL AND q.refused_at >= q.updated_at) AS refused,
348
+ (q.paused_until > now()) AS paused,
349
+ CASE WHEN q.paused_until > now() THEN q.paused_until END AS paused_until,
350
+ CASE WHEN q.paused_until > now() THEN q.paused_status END AS paused_status,
347
351
  COALESCE(top.callers, '[]'::jsonb) AS top_callers
348
352
  FROM outbound_quota q
349
353
  LEFT JOIN LATERAL (
@@ -353,14 +357,19 @@ export function quotaExhaustedSource(options = {}) {
353
357
  WHERE s.key = q.key AND s.window_end = q.reset_at
354
358
  ORDER BY sent + refused DESC, caller LIMIT 3) t
355
359
  ) top ON true
356
- WHERE q.reset_at > now() ${keyFilter}
357
- AND (q.remaining <= ${floor} OR (q.refused_at IS NOT NULL AND q.refused_at >= q.updated_at))
360
+ WHERE (q.reset_at > now() OR q.paused_until > now()) ${keyFilter}
361
+ AND (q.remaining <= ${floor} OR (q.refused_at IS NOT NULL AND q.refused_at >= q.updated_at) OR q.paused_until > now())
358
362
  ORDER BY q.key`,
359
363
  id: r => String(r['key']),
360
364
  message: r => {
361
365
  const remaining = Number(r['remaining']);
362
366
  const limit = r['limit'] === null ? null : Number(r['limit']);
363
367
  const head = limit === null ? `${String(r['key'])} ${String(remaining)} remaining` : `${String(r['key'])} ${String(remaining)}/${String(limit)}`;
368
+ if (r['paused'] === true) {
369
+ const status = r['paused_status'] === null ? null : Number(r['paused_status']);
370
+ const left = limit === null ? `${String(remaining)} left` : `${String(remaining)}/${String(limit)} left`;
371
+ return `${String(r['key'])} paused by retry-after${status !== null ? ` (status ${String(status)})` : ''} until ${untilText(new Date(r['paused_until']), new Date())}; ${left}`;
372
+ }
364
373
  const top = topCallers(r);
365
374
  const spenders = top.length === 0 ? '' : `; top: ${top.map(c => `${c.caller} ${String(c.sent + c.refused)}`).join(', ')}`;
366
375
  return `${head} until ${untilText(new Date(r['reset_at']), new Date())}${r['refused_only'] === true ? '; a call was refused' : ''}${spenders}`;
@@ -373,6 +382,8 @@ export function quotaExhaustedSource(options = {}) {
373
382
  resetAt: new Date(r['reset_at']).toISOString(),
374
383
  refused: r['refused'] === true,
375
384
  topCallers: topCallers(r),
385
+ pausedUntil: r['paused_until'] === null ? null : new Date(r['paused_until']).toISOString(),
386
+ pausedStatus: r['paused_status'] === null ? null : Number(r['paused_status']),
376
387
  }),
377
388
  });
378
389
  if (!(keys instanceof RegExp))
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/infra/alerts/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/infra/alerts/sources.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { PipeworkError } from '../../core/errors/base.js';
2
2
  /**
3
3
  * Thrown by `quota.call` before sending, when the upstream's recorded budget for `key`
4
- * has fallen to the reserve kept for other classes. Inside a job it is handed back like
5
- * `jobs.later` until `resetAt`.
4
+ * has fallen to the reserve kept for other classes (`reason` 'spent'), or while a `retry-after`
5
+ * pause is live (`reason` 'paused'; `resetAt` is then the end of the pause). Inside a job it is
6
+ * handed back like `jobs.later` until `resetAt`.
6
7
  */
7
8
  export declare class QuotaExhaustedError extends PipeworkError {
8
9
  readonly code: "QUOTA_EXHAUSTED";
@@ -12,6 +13,9 @@ export declare class QuotaExhaustedError extends PipeworkError {
12
13
  readonly remaining: number;
13
14
  readonly reserve: number;
14
15
  readonly resetAt: Date;
16
+ readonly reason: 'spent' | 'paused';
17
+ /** For a pause: the status of the response that carried the `retry-after`, when known. */
18
+ readonly pausedStatus: number | null;
15
19
  /** Whole seconds from now to `resetAt`; sent as Retry-After and in the 429 body. */
16
20
  readonly retryAfterSeconds: number;
17
21
  constructor(info: {
@@ -20,6 +24,8 @@ export declare class QuotaExhaustedError extends PipeworkError {
20
24
  remaining: number;
21
25
  reserve: number;
22
26
  resetAt: Date;
27
+ reason?: 'spent' | 'paused';
28
+ pausedStatus?: number | null;
23
29
  });
24
30
  }
25
31
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/infra/quota/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEzD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAS;IAC1C,QAAQ,CAAC,UAAU,EAAG,GAAG,CAAS;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAA;IACtB,oFAAoF;IACpF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;gBAEtB,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,IAAI,CAAA;KAAE;CAapG"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/infra/quota/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEzD;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAS;IAC1C,QAAQ,CAAC,UAAU,EAAG,GAAG,CAAS;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAA;IACnC,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,oFAAoF;IACpF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;gBAEtB,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;CAoB/J"}
@@ -1,8 +1,9 @@
1
1
  import { PipeworkError } from '../../core/errors/base.js';
2
2
  /**
3
3
  * Thrown by `quota.call` before sending, when the upstream's recorded budget for `key`
4
- * has fallen to the reserve kept for other classes. Inside a job it is handed back like
5
- * `jobs.later` until `resetAt`.
4
+ * has fallen to the reserve kept for other classes (`reason` 'spent'), or while a `retry-after`
5
+ * pause is live (`reason` 'paused'; `resetAt` is then the end of the pause). Inside a job it is
6
+ * handed back like `jobs.later` until `resetAt`.
6
7
  */
7
8
  export class QuotaExhaustedError extends PipeworkError {
8
9
  code = 'QUOTA_EXHAUSTED';
@@ -12,17 +13,27 @@ export class QuotaExhaustedError extends PipeworkError {
12
13
  remaining;
13
14
  reserve;
14
15
  resetAt;
16
+ reason;
17
+ /** For a pause: the status of the response that carried the `retry-after`, when known. */
18
+ pausedStatus;
15
19
  /** Whole seconds from now to `resetAt`; sent as Retry-After and in the 429 body. */
16
20
  retryAfterSeconds;
17
21
  constructor(info) {
18
- super(`[pipework] Quota for "${info.key}" is exhausted for class "${info.class}": ` +
19
- `${String(info.remaining)} remaining, ${String(info.reserve)} held in reserve; resets at ${info.resetAt.toISOString()}.`);
22
+ const paused = info.reason === 'paused';
23
+ const status = info.pausedStatus ?? null;
24
+ super(paused
25
+ ? `[pipework] Quota for "${info.key}" is paused by retry-after${status !== null ? ` (status ${String(status)})` : ''} until ${info.resetAt.toISOString()}; ` +
26
+ `${String(info.remaining)} remaining of the window.`
27
+ : `[pipework] Quota for "${info.key}" is exhausted for class "${info.class}": ` +
28
+ `${String(info.remaining)} remaining, ${String(info.reserve)} held in reserve; resets at ${info.resetAt.toISOString()}.`);
20
29
  this.name = 'QuotaExhaustedError';
21
30
  this.key = info.key;
22
31
  this.class = info.class;
23
32
  this.remaining = info.remaining;
24
33
  this.reserve = info.reserve;
25
34
  this.resetAt = info.resetAt;
35
+ this.reason = info.reason ?? 'spent';
36
+ this.pausedStatus = status;
26
37
  this.retryAfterSeconds = Math.max(0, Math.ceil((info.resetAt.getTime() - Date.now()) / 1000));
27
38
  }
28
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/infra/quota/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEzD;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAC3C,IAAI,GAAG,iBAA0B,CAAA;IACjC,UAAU,GAAG,GAAY,CAAA;IACzB,GAAG,CAAQ;IACX,KAAK,CAAQ;IACb,SAAS,CAAQ;IACjB,OAAO,CAAQ;IACf,OAAO,CAAM;IACtB,oFAAoF;IAC3E,iBAAiB,CAAQ;IAElC,YAAY,IAAuF;QACjG,KAAK,CACH,yBAAyB,IAAI,CAAC,GAAG,6BAA6B,IAAI,CAAC,KAAK,KAAK;YAC7E,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,+BAA+B,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CACzH,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC/F,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/infra/quota/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAC3C,IAAI,GAAG,iBAA0B,CAAA;IACjC,UAAU,GAAG,GAAY,CAAA;IACzB,GAAG,CAAQ;IACX,KAAK,CAAQ;IACb,SAAS,CAAQ;IACjB,OAAO,CAAQ;IACf,OAAO,CAAM;IACb,MAAM,CAAoB;IACnC,0FAA0F;IACjF,YAAY,CAAe;IACpC,oFAAoF;IAC3E,iBAAiB,CAAQ;IAElC,YAAY,IAAkJ;QAC5J,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAA;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAA;QACxC,KAAK,CACH,MAAM;YACJ,CAAC,CAAC,yBAAyB,IAAI,CAAC,GAAG,6BAA6B,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI;gBAC1J,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B;YACtD,CAAC,CAAC,yBAAyB,IAAI,CAAC,GAAG,6BAA6B,IAAI,CAAC,KAAK,KAAK;gBAC7E,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,+BAA+B,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAC7H,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAA;QACpC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC/F,CAAC;CACF"}
@@ -27,6 +27,10 @@ export interface QuotaState {
27
27
  readonly remaining: number;
28
28
  readonly limit: number | null;
29
29
  readonly resetAt: Date;
30
+ /** The end of a live `retry-after` pause; null when none or it has passed. */
31
+ readonly pausedUntil: Date | null;
32
+ /** The status of the response that set the pause, when known. */
33
+ readonly pausedStatus: number | null;
30
34
  }
31
35
  export interface QuotaCallOptions<R> {
32
36
  /** Where to read the response headers; default `result.headers` when it has a `get`. */
@@ -63,8 +67,10 @@ export interface Quota<C extends string, K extends string = string> {
63
67
  class: C;
64
68
  caller?: K;
65
69
  }, send: () => Promise<R>, opts?: QuotaCallOptions<R>): Promise<R>;
66
- /** Records the budget from headers of a call sent through the caller's own client. */
67
- record(key: string, headers: QuotaHeaderInput): Promise<void>;
70
+ /** Records the budget from headers of a call sent through the caller's own client. A `retry-after` pauses the key for that many seconds; `status` is kept with the pause. */
71
+ record(key: string, headers: QuotaHeaderInput, opts?: {
72
+ status?: number;
73
+ }): Promise<void>;
68
74
  /** The recorded budget; null when there is none or its window has passed. */
69
75
  state(key: string): Promise<QuotaState | null>;
70
76
  /** Calls counted per caller for the key's current and previous window. A response recorded with `record` instead of `call` is not counted. */
@@ -1 +1 @@
1
- {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/infra/quota/handle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/infra/quota/handle.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,12 @@ function headersOf(value) {
38
38
  return null;
39
39
  return headers;
40
40
  }
41
+ function numberField(value, name) {
42
+ if (typeof value !== 'object' || value === null)
43
+ return null;
44
+ const n = value[name];
45
+ return typeof n === 'number' && Number.isFinite(n) ? n : null;
46
+ }
41
47
  function resolveDb(database) {
42
48
  const ctx = getContext();
43
49
  if (ctx === undefined) {
@@ -86,7 +92,7 @@ export function createQuota(config = {}) {
86
92
  ORDER BY window_end DESC LIMIT ${retain}) kept)
87
93
  AND window_end <> 'infinity'::timestamptz`);
88
94
  }
89
- async function record(key, input) {
95
+ async function record(key, input, opts = {}) {
90
96
  const headers = toHeaders(input);
91
97
  const budget = read(headers);
92
98
  const retryAfter = intHeader(headers, 'retry-after');
@@ -130,18 +136,23 @@ export function createQuota(config = {}) {
130
136
  });
131
137
  }
132
138
  if (retryAfter !== null) {
139
+ // A pause of its own: remaining and reset_at of an existing row are not touched.
140
+ const secs = Math.max(0, retryAfter);
141
+ const status = opts.status !== undefined && Number.isInteger(opts.status) ? opts.status : null;
133
142
  await conn.execute(sql `
134
- INSERT INTO outbound_quota (key, remaining, "limit", reset_at, updated_at)
135
- VALUES (${key}, 0, NULL, now() + make_interval(secs => ${Math.max(0, retryAfter)}), clock_timestamp())
143
+ INSERT INTO outbound_quota (key, remaining, "limit", reset_at, paused_until, paused_status, updated_at)
144
+ VALUES (${key}, 0, NULL, now() + make_interval(secs => ${secs}), now() + make_interval(secs => ${secs}), ${status}, clock_timestamp())
136
145
  ON CONFLICT (key) DO UPDATE SET
137
- remaining = 0,
138
- reset_at = GREATEST(outbound_quota.reset_at, now() + make_interval(secs => ${Math.max(0, retryAfter)})),
139
- updated_at = clock_timestamp()`);
146
+ paused_until = GREATEST(COALESCE(outbound_quota.paused_until, '-infinity'), now() + make_interval(secs => ${secs})),
147
+ paused_status = ${status}`);
140
148
  }
141
149
  }
142
150
  async function state(key) {
143
151
  const rows = await db().execute(sql `
144
- SELECT remaining, "limit", reset_at FROM outbound_quota WHERE key = ${key} AND reset_at > now()`);
152
+ SELECT remaining, "limit", reset_at,
153
+ CASE WHEN paused_until > now() THEN paused_until END AS paused_until,
154
+ CASE WHEN paused_until > now() THEN paused_status END AS paused_status
155
+ FROM outbound_quota WHERE key = ${key} AND (reset_at > now() OR paused_until > now())`);
145
156
  const row = rows[0];
146
157
  if (row === undefined)
147
158
  return null;
@@ -149,6 +160,8 @@ export function createQuota(config = {}) {
149
160
  remaining: Number(row['remaining']),
150
161
  limit: row['limit'] === null ? null : Number(row['limit']),
151
162
  resetAt: new Date(row['reset_at']),
163
+ pausedUntil: row['paused_until'] === null ? null : new Date(row['paused_until']),
164
+ pausedStatus: row['paused_status'] === null ? null : Number(row['paused_status']),
152
165
  };
153
166
  }
154
167
  async function take(key, cls, caller) {
@@ -159,6 +172,7 @@ export function createQuota(config = {}) {
159
172
  WITH taken AS (
160
173
  UPDATE outbound_quota SET remaining = remaining - 1, updated_at = clock_timestamp()
161
174
  WHERE key = ${key} AND reset_at > now() AND remaining > ${reserve}
175
+ AND (paused_until IS NULL OR paused_until <= now())
162
176
  RETURNING key, reset_at)
163
177
  INSERT INTO outbound_quota_spend (key, caller, window_end, sent)
164
178
  SELECT key, ${caller}, reset_at, 1 FROM taken
@@ -170,15 +184,15 @@ export function createQuota(config = {}) {
170
184
  const rows = await conn.execute(sql `
171
185
  WITH asked AS (
172
186
  UPDATE outbound_quota SET refused_at = clock_timestamp()
173
- WHERE key = ${key} AND reset_at > now()
174
- RETURNING key, remaining, reset_at),
187
+ WHERE key = ${key} AND (reset_at > now() OR paused_until > now())
188
+ RETURNING key, remaining, reset_at, paused_until, paused_status),
175
189
  counted AS (
176
190
  INSERT INTO outbound_quota_spend (key, caller, window_end, refused)
177
191
  SELECT key, ${caller}, reset_at, 1 FROM asked
178
192
  ON CONFLICT (key, caller, window_end) DO UPDATE SET
179
193
  refused = outbound_quota_spend.refused + 1, updated_at = clock_timestamp()
180
194
  RETURNING 1)
181
- SELECT remaining, reset_at FROM asked`);
195
+ SELECT remaining, reset_at, paused_until, paused_status FROM asked`);
182
196
  const row = rows[0];
183
197
  if (row === undefined) {
184
198
  // unknown budget: send optimistically, counted until a response places the window
@@ -189,6 +203,15 @@ export function createQuota(config = {}) {
189
203
  sent = outbound_quota_spend.sent + 1, updated_at = clock_timestamp()`);
190
204
  return;
191
205
  }
206
+ if (row['paused_until'] !== null && toDate(row['paused_until']).getTime() > Date.now()) {
207
+ throw new QuotaExhaustedError({
208
+ key, class: cls, reserve,
209
+ remaining: Number(row['remaining']),
210
+ resetAt: toDate(row['paused_until']),
211
+ reason: 'paused',
212
+ pausedStatus: row['paused_status'] === null ? null : Number(row['paused_status']),
213
+ });
214
+ }
192
215
  throw new QuotaExhaustedError({
193
216
  key, class: cls, reserve,
194
217
  remaining: Number(row['remaining']),
@@ -243,8 +266,9 @@ export function createQuota(config = {}) {
243
266
  catch (err) {
244
267
  const e = err;
245
268
  const found = headersOf(e?.response) ?? headersOf(err);
269
+ const status = numberField(e?.response, 'status') ?? numberField(err, 'status');
246
270
  if (found !== null)
247
- await record(target.key, found).catch((recordErr) => { logRecordFailure(target.key, recordErr); });
271
+ await record(target.key, found, status !== null ? { status } : {}).catch((recordErr) => { logRecordFailure(target.key, recordErr); });
248
272
  throw err;
249
273
  }
250
274
  const found = opts.headers !== undefined
@@ -254,8 +278,9 @@ export function createQuota(config = {}) {
254
278
  return h !== null && typeof h.get === 'function' ? h : null;
255
279
  })();
256
280
  // The call was sent: a failure to record must not reject it, or a retry would send it again.
281
+ const resultStatus = numberField(result, 'status');
257
282
  if (found !== null)
258
- await record(target.key, found).catch((recordErr) => { logRecordFailure(target.key, recordErr); });
283
+ await record(target.key, found, resultStatus !== null ? { status: resultStatus } : {}).catch((recordErr) => { logRecordFailure(target.key, recordErr); });
259
284
  return result;
260
285
  },
261
286
  };
@@ -1 +1 @@
1
- {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../src/infra/quota/handle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../src/infra/quota/handle.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,18 @@ export declare const outboundQuota: import("../../data/domain/types.js").Defined
22
22
  }> & import("../../data/domain/field.js").FieldModifiers<Date | null, {
23
23
  nullable: true;
24
24
  }>;
25
+ /** A `retry-after` pause: calls are refused until this time, whatever `remaining` says. Never touches `remaining` or `resetAt`. */
26
+ pausedUntil: import("../../data/domain/types.js").FieldDescriptor<Date | null, {
27
+ nullable: true;
28
+ }> & import("../../data/domain/field.js").FieldModifiers<Date | null, {
29
+ nullable: true;
30
+ }>;
31
+ /** The status of the response whose `retry-after` set the pause, when known. */
32
+ pausedStatus: import("../../data/domain/types.js").FieldDescriptor<number | null, {
33
+ nullable: true;
34
+ }> & import("../../data/domain/field.js").FieldModifiers<number | null, {
35
+ nullable: true;
36
+ }>;
25
37
  }, "outbound_quota">;
26
38
  export declare const outboundQuotaSpend: import("../../data/domain/types.js").DefinedTable<{
27
39
  key: import("../../data/domain/types.js").FieldDescriptor<string, {}> & import("../../data/domain/field.js").FieldModifiers<string, {}>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/infra/quota/schema.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;IAMxB,uGAAuG;;;;;;oBAEvG,CAAA;AAIF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;0BAS7B,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/infra/quota/schema.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;IAMxB,uGAAuG;;;;;;IAEvG,mIAAmI;;;;;;IAEnI,gFAAgF;;;;;;oBAEhF,CAAA;AAIF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;0BAS7B,CAAA"}
@@ -10,6 +10,10 @@ export const outboundQuota = define('outbound_quota', {
10
10
  updatedAt: field.timestamp().default('now'),
11
11
  /** When a call was last refused against this row; it counts while it is not older than `updatedAt`. */
12
12
  refusedAt: field.timestamp().nullable(),
13
+ /** A `retry-after` pause: calls are refused until this time, whatever `remaining` says. Never touches `remaining` or `resetAt`. */
14
+ pausedUntil: field.timestamp().nullable(),
15
+ /** The status of the response whose `retry-after` set the pause, when known. */
16
+ pausedStatus: field.integer().nullable(),
13
17
  });
14
18
  // Calls per (key, caller, window): `window_end` is the budget row's reset_at; 'infinity' holds calls made
15
19
  // before any window was known, moved into the first window a response records.
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/infra/quota/schema.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,oEAAoE;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE;IACpD,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAC9B,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE;IAC1B,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE;IAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3C,uGAAuG;IACvG,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAEF,0GAA0G;AAC1G,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,sBAAsB,EAAE;IAC/D,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE;IACjB,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;IACpB,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;IAC5B,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC5C,EAAE;IACD,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC;CAC3C,CAAC,CAAA"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/infra/quota/schema.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,oEAAoE;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE;IACpD,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAC9B,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE;IAC1B,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE;IAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3C,uGAAuG;IACvG,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IACvC,mIAAmI;IACnI,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IACzC,gFAAgF;IAChF,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAA;AAEF,0GAA0G;AAC1G,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,sBAAsB,EAAE;IAC/D,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE;IACjB,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;IACpB,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;IAC5B,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC5C,EAAE;IACD,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC;CAC3C,CAAC,CAAA"}
@@ -258,7 +258,7 @@ function buildProjectConfig(modulePath, moduleConfig, workspace, configDir, work
258
258
  const include = moduleConfig.include ?? workspace.include;
259
259
  const exclude = moduleConfig.exclude ?? workspace.exclude;
260
260
  const setupFiles = buildSetupFiles(database, moduleConfig.setupFiles);
261
- const inlineDeps = buildInlineDeps(workspace.inlineDeps);
261
+ const inlineDeps = workspace.inlineDeps ?? [];
262
262
  const extra = moduleConfig.extra ?? {};
263
263
  return buildProject({
264
264
  name: modulePath,
@@ -285,7 +285,7 @@ function buildProfileConfig(modulePath, profileName, moduleConfig, profileConfig
285
285
  const exclude = profileConfig.exclude ?? moduleConfig.exclude ?? workspace.exclude;
286
286
  const profileSetupFiles = profileConfig.setupFiles ?? moduleConfig.setupFiles;
287
287
  const setupFiles = buildSetupFiles(database, profileSetupFiles);
288
- const inlineDeps = buildInlineDeps(workspace.inlineDeps);
288
+ const inlineDeps = workspace.inlineDeps ?? [];
289
289
  const moduleExtra = moduleConfig.extra ?? {};
290
290
  const extra = profileConfig.extra !== undefined
291
291
  ? { ...moduleExtra, ...profileConfig.extra }
@@ -311,6 +311,7 @@ function buildProfileConfig(modulePath, profileName, moduleConfig, profileConfig
311
311
  });
312
312
  }
313
313
  function buildProject(input) {
314
+ const inlineDeps = buildInlineDeps(input);
314
315
  return {
315
316
  ...input.extra,
316
317
  plugins: [
@@ -331,7 +332,7 @@ function buildProject(input) {
331
332
  hookTimeout: input.hookTimeout,
332
333
  server: {
333
334
  deps: {
334
- inline: input.inlineDeps,
335
+ inline: inlineDeps,
335
336
  },
336
337
  },
337
338
  setupFiles: input.setupFiles,
@@ -356,12 +357,23 @@ function buildSetupFiles(database, userSetupFiles) {
356
357
  }
357
358
  return files;
358
359
  }
359
- function buildInlineDeps(workspaceInlineDeps) {
360
- const deps = new Set(['pipework']);
361
- if (workspaceInlineDeps !== undefined) {
362
- for (const dep of workspaceInlineDeps) {
363
- deps.add(dep);
364
- }
360
+ // Pipework is inlined only where the effective isolate is true: a fresh module
361
+ // registry per file needs it. A shared-registry fork already matches Node's single
362
+ // module instance, so inlining buys nothing there. The vm pools isolate per file
363
+ // whatever `isolate` says, so they always inline. Precedence mirrors buildProject's
364
+ // emitted config: dedicated field, then `extra.test`, then the default.
365
+ function buildInlineDeps(input) {
366
+ const extraTest = 'test' in input.extra ? input.extra['test'] : {};
367
+ const extraIsolate = typeof extraTest['isolate'] === 'boolean' ? extraTest['isolate'] : undefined;
368
+ const extraPool = extraTest['pool'];
369
+ const isolate = input.isolate ?? extraIsolate ?? DEFAULT_ISOLATE;
370
+ const pool = input.pool ?? extraPool ?? DEFAULT_POOL;
371
+ const deps = new Set();
372
+ if (isolate || pool === 'vmThreads' || pool === 'vmForks') {
373
+ deps.add('pipework');
374
+ }
375
+ for (const dep of input.inlineDeps) {
376
+ deps.add(dep);
365
377
  }
366
378
  return [...deps];
367
379
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vitest-workspace.js","sourceRoot":"","sources":["../../src/test/vitest-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vitest-workspace.js","sourceRoot":"","sources":["../../src/test/vitest-workspace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.266.0",
3
+ "version": "0.268.0",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -396,8 +396,9 @@ function topCallers(r: Record<string, unknown>): { caller: string; sent: number;
396
396
  /**
397
397
  * Raises `quota-exhausted:<key>` while an upstream quota row (needs `quota` configured) has remaining at or
398
398
  * under `floor` (default 0) before its reset, or refused a call since it was last recorded; resolves when the
399
- * row recovers or its reset passes. `keys` limits it to those keys (a non-empty array or a RegExp). Conditions
400
- * carry `owner`, `runbook` and a context of `key`, `remaining`, `limit`, `resetAt`, `refused` and `topCallers` (the three callers that spent the most in the window, from `quota` spend counts).
399
+ * row recovers or its reset passes. It also raises while a `retry-after` pause is live (`paused_until`), reading
400
+ * "paused", not exhausted. `keys` limits it to those keys (a non-empty array or a RegExp). Conditions carry
401
+ * `owner`, `runbook` and a context of `key`, `remaining`, `limit`, `resetAt`, `refused`, `pausedUntil`, `pausedStatus` and `topCallers` (the three callers that spent the most in the window, from `quota` spend counts).
401
402
  */
402
403
  export function quotaExhaustedSource(options: { owner?: string; runbook?: string; keys?: readonly string[] | RegExp; floor?: number; severity?: AlertSeverity; database?: string } = {}): AlertSource {
403
404
  const floor = options.floor ?? 0
@@ -420,6 +421,9 @@ export function quotaExhaustedSource(options: { owner?: string; runbook?: string
420
421
  SELECT q.key, q.remaining, q."limit", q.reset_at,
421
422
  (q.remaining > ${floor} AND q.refused_at IS NOT NULL AND q.refused_at >= q.updated_at) AS refused_only,
422
423
  (q.refused_at IS NOT NULL AND q.refused_at >= q.updated_at) AS refused,
424
+ (q.paused_until > now()) AS paused,
425
+ CASE WHEN q.paused_until > now() THEN q.paused_until END AS paused_until,
426
+ CASE WHEN q.paused_until > now() THEN q.paused_status END AS paused_status,
423
427
  COALESCE(top.callers, '[]'::jsonb) AS top_callers
424
428
  FROM outbound_quota q
425
429
  LEFT JOIN LATERAL (
@@ -429,14 +433,19 @@ export function quotaExhaustedSource(options: { owner?: string; runbook?: string
429
433
  WHERE s.key = q.key AND s.window_end = q.reset_at
430
434
  ORDER BY sent + refused DESC, caller LIMIT 3) t
431
435
  ) top ON true
432
- WHERE q.reset_at > now() ${keyFilter}
433
- AND (q.remaining <= ${floor} OR (q.refused_at IS NOT NULL AND q.refused_at >= q.updated_at))
436
+ WHERE (q.reset_at > now() OR q.paused_until > now()) ${keyFilter}
437
+ AND (q.remaining <= ${floor} OR (q.refused_at IS NOT NULL AND q.refused_at >= q.updated_at) OR q.paused_until > now())
434
438
  ORDER BY q.key`,
435
439
  id: r => String(r['key']),
436
440
  message: r => {
437
441
  const remaining = Number(r['remaining'])
438
442
  const limit = r['limit'] === null ? null : Number(r['limit'])
439
443
  const head = limit === null ? `${String(r['key'])} ${String(remaining)} remaining` : `${String(r['key'])} ${String(remaining)}/${String(limit)}`
444
+ if (r['paused'] === true) {
445
+ const status = r['paused_status'] === null ? null : Number(r['paused_status'])
446
+ const left = limit === null ? `${String(remaining)} left` : `${String(remaining)}/${String(limit)} left`
447
+ return `${String(r['key'])} paused by retry-after${status !== null ? ` (status ${String(status)})` : ''} until ${untilText(new Date(r['paused_until'] as string | Date), new Date())}; ${left}`
448
+ }
440
449
  const top = topCallers(r)
441
450
  const spenders = top.length === 0 ? '' : `; top: ${top.map(c => `${c.caller} ${String(c.sent + c.refused)}`).join(', ')}`
442
451
  return `${head} until ${untilText(new Date(r['reset_at'] as string | Date), new Date())}${r['refused_only'] === true ? '; a call was refused' : ''}${spenders}`
@@ -449,6 +458,8 @@ export function quotaExhaustedSource(options: { owner?: string; runbook?: string
449
458
  resetAt: new Date(r['reset_at'] as string | Date).toISOString(),
450
459
  refused: r['refused'] === true,
451
460
  topCallers: topCallers(r),
461
+ pausedUntil: r['paused_until'] === null ? null : new Date(r['paused_until'] as string | Date).toISOString(),
462
+ pausedStatus: r['paused_status'] === null ? null : Number(r['paused_status']),
452
463
  }),
453
464
  })
454
465
  if (!(keys instanceof RegExp)) return base
@@ -2,8 +2,9 @@ import { PipeworkError } from '../../core/errors/base.js'
2
2
 
3
3
  /**
4
4
  * Thrown by `quota.call` before sending, when the upstream's recorded budget for `key`
5
- * has fallen to the reserve kept for other classes. Inside a job it is handed back like
6
- * `jobs.later` until `resetAt`.
5
+ * has fallen to the reserve kept for other classes (`reason` 'spent'), or while a `retry-after`
6
+ * pause is live (`reason` 'paused'; `resetAt` is then the end of the pause). Inside a job it is
7
+ * handed back like `jobs.later` until `resetAt`.
7
8
  */
8
9
  export class QuotaExhaustedError extends PipeworkError {
9
10
  readonly code = 'QUOTA_EXHAUSTED' as const
@@ -13,13 +14,21 @@ export class QuotaExhaustedError extends PipeworkError {
13
14
  readonly remaining: number
14
15
  readonly reserve: number
15
16
  readonly resetAt: Date
17
+ readonly reason: 'spent' | 'paused'
18
+ /** For a pause: the status of the response that carried the `retry-after`, when known. */
19
+ readonly pausedStatus: number | null
16
20
  /** Whole seconds from now to `resetAt`; sent as Retry-After and in the 429 body. */
17
21
  readonly retryAfterSeconds: number
18
22
 
19
- constructor(info: { key: string; class: string; remaining: number; reserve: number; resetAt: Date }) {
23
+ constructor(info: { key: string; class: string; remaining: number; reserve: number; resetAt: Date; reason?: 'spent' | 'paused'; pausedStatus?: number | null }) {
24
+ const paused = info.reason === 'paused'
25
+ const status = info.pausedStatus ?? null
20
26
  super(
21
- `[pipework] Quota for "${info.key}" is exhausted for class "${info.class}": ` +
22
- `${String(info.remaining)} remaining, ${String(info.reserve)} held in reserve; resets at ${info.resetAt.toISOString()}.`,
27
+ paused
28
+ ? `[pipework] Quota for "${info.key}" is paused by retry-after${status !== null ? ` (status ${String(status)})` : ''} until ${info.resetAt.toISOString()}; ` +
29
+ `${String(info.remaining)} remaining of the window.`
30
+ : `[pipework] Quota for "${info.key}" is exhausted for class "${info.class}": ` +
31
+ `${String(info.remaining)} remaining, ${String(info.reserve)} held in reserve; resets at ${info.resetAt.toISOString()}.`,
23
32
  )
24
33
  this.name = 'QuotaExhaustedError'
25
34
  this.key = info.key
@@ -27,6 +36,8 @@ export class QuotaExhaustedError extends PipeworkError {
27
36
  this.remaining = info.remaining
28
37
  this.reserve = info.reserve
29
38
  this.resetAt = info.resetAt
39
+ this.reason = info.reason ?? 'spent'
40
+ this.pausedStatus = status
30
41
  this.retryAfterSeconds = Math.max(0, Math.ceil((info.resetAt.getTime() - Date.now()) / 1000))
31
42
  }
32
43
  }
@@ -35,6 +35,10 @@ export interface QuotaState {
35
35
  readonly remaining: number
36
36
  readonly limit: number | null
37
37
  readonly resetAt: Date
38
+ /** The end of a live `retry-after` pause; null when none or it has passed. */
39
+ readonly pausedUntil: Date | null
40
+ /** The status of the response that set the pause, when known. */
41
+ readonly pausedStatus: number | null
38
42
  }
39
43
 
40
44
  export interface QuotaCallOptions<R> {
@@ -72,8 +76,8 @@ export interface QuotaSpend<K extends string = string> {
72
76
  export interface Quota<C extends string, K extends string = string> {
73
77
  /** Takes one unit of the upstream's budget for this class, sends, and records the budget from the response headers. `caller` labels the call in `spend`; without it the call counts as 'unlabelled'. */
74
78
  call<R>(target: { key: string; class: C; caller?: K }, send: () => Promise<R>, opts?: QuotaCallOptions<R>): Promise<R>
75
- /** Records the budget from headers of a call sent through the caller's own client. */
76
- record(key: string, headers: QuotaHeaderInput): Promise<void>
79
+ /** Records the budget from headers of a call sent through the caller's own client. A `retry-after` pauses the key for that many seconds; `status` is kept with the pause. */
80
+ record(key: string, headers: QuotaHeaderInput, opts?: { status?: number }): Promise<void>
77
81
  /** The recorded budget; null when there is none or its window has passed. */
78
82
  state(key: string): Promise<QuotaState | null>
79
83
  /** Calls counted per caller for the key's current and previous window. A response recorded with `record` instead of `call` is not counted. */
@@ -112,6 +116,12 @@ function headersOf(value: unknown): QuotaHeaderInput | null {
112
116
  return headers as QuotaHeaderInput
113
117
  }
114
118
 
119
+ function numberField(value: unknown, name: string): number | null {
120
+ if (typeof value !== 'object' || value === null) return null
121
+ const n = (value as Record<string, unknown>)[name]
122
+ return typeof n === 'number' && Number.isFinite(n) ? n : null
123
+ }
124
+
115
125
  function resolveDb(database: string | undefined): DB {
116
126
  const ctx = getContext()
117
127
  if (ctx === undefined) {
@@ -169,7 +179,7 @@ export function createQuota<C extends string, K extends string = string>(config:
169
179
  AND window_end <> 'infinity'::timestamptz`)
170
180
  }
171
181
 
172
- async function record(key: string, input: QuotaHeaderInput): Promise<void> {
182
+ async function record(key: string, input: QuotaHeaderInput, opts: { status?: number } = {}): Promise<void> {
173
183
  const headers = toHeaders(input)
174
184
  const budget = read(headers)
175
185
  const retryAfter = intHeader(headers, 'retry-after')
@@ -210,25 +220,32 @@ export function createQuota<C extends string, K extends string = string>(config:
210
220
  })
211
221
  }
212
222
  if (retryAfter !== null) {
223
+ // A pause of its own: remaining and reset_at of an existing row are not touched.
224
+ const secs = Math.max(0, retryAfter)
225
+ const status = opts.status !== undefined && Number.isInteger(opts.status) ? opts.status : null
213
226
  await conn.execute(sql`
214
- INSERT INTO outbound_quota (key, remaining, "limit", reset_at, updated_at)
215
- VALUES (${key}, 0, NULL, now() + make_interval(secs => ${Math.max(0, retryAfter)}), clock_timestamp())
227
+ INSERT INTO outbound_quota (key, remaining, "limit", reset_at, paused_until, paused_status, updated_at)
228
+ VALUES (${key}, 0, NULL, now() + make_interval(secs => ${secs}), now() + make_interval(secs => ${secs}), ${status}, clock_timestamp())
216
229
  ON CONFLICT (key) DO UPDATE SET
217
- remaining = 0,
218
- reset_at = GREATEST(outbound_quota.reset_at, now() + make_interval(secs => ${Math.max(0, retryAfter)})),
219
- updated_at = clock_timestamp()`)
230
+ paused_until = GREATEST(COALESCE(outbound_quota.paused_until, '-infinity'), now() + make_interval(secs => ${secs})),
231
+ paused_status = ${status}`)
220
232
  }
221
233
  }
222
234
 
223
235
  async function state(key: string): Promise<QuotaState | null> {
224
236
  const rows = await db().execute(sql`
225
- SELECT remaining, "limit", reset_at FROM outbound_quota WHERE key = ${key} AND reset_at > now()`)
237
+ SELECT remaining, "limit", reset_at,
238
+ CASE WHEN paused_until > now() THEN paused_until END AS paused_until,
239
+ CASE WHEN paused_until > now() THEN paused_status END AS paused_status
240
+ FROM outbound_quota WHERE key = ${key} AND (reset_at > now() OR paused_until > now())`)
226
241
  const row = rows[0]
227
242
  if (row === undefined) return null
228
243
  return {
229
244
  remaining: Number(row['remaining']),
230
245
  limit: row['limit'] === null ? null : Number(row['limit']),
231
246
  resetAt: new Date(row['reset_at'] as string | Date),
247
+ pausedUntil: row['paused_until'] === null ? null : new Date(row['paused_until'] as string | Date),
248
+ pausedStatus: row['paused_status'] === null ? null : Number(row['paused_status']),
232
249
  }
233
250
  }
234
251
 
@@ -240,6 +257,7 @@ export function createQuota<C extends string, K extends string = string>(config:
240
257
  WITH taken AS (
241
258
  UPDATE outbound_quota SET remaining = remaining - 1, updated_at = clock_timestamp()
242
259
  WHERE key = ${key} AND reset_at > now() AND remaining > ${reserve}
260
+ AND (paused_until IS NULL OR paused_until <= now())
243
261
  RETURNING key, reset_at)
244
262
  INSERT INTO outbound_quota_spend (key, caller, window_end, sent)
245
263
  SELECT key, ${caller}, reset_at, 1 FROM taken
@@ -250,15 +268,15 @@ export function createQuota<C extends string, K extends string = string>(config:
250
268
  const rows = await conn.execute(sql`
251
269
  WITH asked AS (
252
270
  UPDATE outbound_quota SET refused_at = clock_timestamp()
253
- WHERE key = ${key} AND reset_at > now()
254
- RETURNING key, remaining, reset_at),
271
+ WHERE key = ${key} AND (reset_at > now() OR paused_until > now())
272
+ RETURNING key, remaining, reset_at, paused_until, paused_status),
255
273
  counted AS (
256
274
  INSERT INTO outbound_quota_spend (key, caller, window_end, refused)
257
275
  SELECT key, ${caller}, reset_at, 1 FROM asked
258
276
  ON CONFLICT (key, caller, window_end) DO UPDATE SET
259
277
  refused = outbound_quota_spend.refused + 1, updated_at = clock_timestamp()
260
278
  RETURNING 1)
261
- SELECT remaining, reset_at FROM asked`)
279
+ SELECT remaining, reset_at, paused_until, paused_status FROM asked`)
262
280
  const row = rows[0]
263
281
  if (row === undefined) {
264
282
  // unknown budget: send optimistically, counted until a response places the window
@@ -269,6 +287,15 @@ export function createQuota<C extends string, K extends string = string>(config:
269
287
  sent = outbound_quota_spend.sent + 1, updated_at = clock_timestamp()`)
270
288
  return
271
289
  }
290
+ if (row['paused_until'] !== null && toDate(row['paused_until']).getTime() > Date.now()) {
291
+ throw new QuotaExhaustedError({
292
+ key, class: cls, reserve,
293
+ remaining: Number(row['remaining']),
294
+ resetAt: toDate(row['paused_until']),
295
+ reason: 'paused',
296
+ pausedStatus: row['paused_status'] === null ? null : Number(row['paused_status']),
297
+ })
298
+ }
272
299
  throw new QuotaExhaustedError({
273
300
  key, class: cls, reserve,
274
301
  remaining: Number(row['remaining']),
@@ -320,7 +347,8 @@ export function createQuota<C extends string, K extends string = string>(config:
320
347
  } catch (err) {
321
348
  const e = err as { response?: unknown } | null
322
349
  const found = headersOf(e?.response) ?? headersOf(err)
323
- if (found !== null) await record(target.key, found).catch((recordErr: unknown) => { logRecordFailure(target.key, recordErr) })
350
+ const status = numberField(e?.response, 'status') ?? numberField(err, 'status')
351
+ if (found !== null) await record(target.key, found, status !== null ? { status } : {}).catch((recordErr: unknown) => { logRecordFailure(target.key, recordErr) })
324
352
  throw err
325
353
  }
326
354
  const found = opts.headers !== undefined
@@ -330,7 +358,8 @@ export function createQuota<C extends string, K extends string = string>(config:
330
358
  return h !== null && typeof (h as QuotaHeaders).get === 'function' ? h : null
331
359
  })()
332
360
  // The call was sent: a failure to record must not reject it, or a retry would send it again.
333
- if (found !== null) await record(target.key, found).catch((recordErr: unknown) => { logRecordFailure(target.key, recordErr) })
361
+ const resultStatus = numberField(result, 'status')
362
+ if (found !== null) await record(target.key, found, resultStatus !== null ? { status: resultStatus } : {}).catch((recordErr: unknown) => { logRecordFailure(target.key, recordErr) })
334
363
  return result
335
364
  },
336
365
  }
@@ -12,6 +12,10 @@ export const outboundQuota = define('outbound_quota', {
12
12
  updatedAt: field.timestamp().default('now'),
13
13
  /** When a call was last refused against this row; it counts while it is not older than `updatedAt`. */
14
14
  refusedAt: field.timestamp().nullable(),
15
+ /** A `retry-after` pause: calls are refused until this time, whatever `remaining` says. Never touches `remaining` or `resetAt`. */
16
+ pausedUntil: field.timestamp().nullable(),
17
+ /** The status of the response whose `retry-after` set the pause, when known. */
18
+ pausedStatus: field.integer().nullable(),
15
19
  })
16
20
 
17
21
  // Calls per (key, caller, window): `window_end` is the budget row's reset_at; 'infinity' holds calls made
@@ -324,7 +324,7 @@ function buildProjectConfig(
324
324
  const exclude = moduleConfig.exclude ?? workspace.exclude
325
325
 
326
326
  const setupFiles = buildSetupFiles(database, moduleConfig.setupFiles)
327
- const inlineDeps = buildInlineDeps(workspace.inlineDeps)
327
+ const inlineDeps = workspace.inlineDeps ?? []
328
328
 
329
329
  const extra = moduleConfig.extra ?? {}
330
330
 
@@ -363,7 +363,7 @@ function buildProfileConfig(
363
363
 
364
364
  const profileSetupFiles = profileConfig.setupFiles ?? moduleConfig.setupFiles
365
365
  const setupFiles = buildSetupFiles(database, profileSetupFiles)
366
- const inlineDeps = buildInlineDeps(workspace.inlineDeps)
366
+ const inlineDeps = workspace.inlineDeps ?? []
367
367
 
368
368
  const moduleExtra = moduleConfig.extra ?? {}
369
369
  const extra = profileConfig.extra !== undefined
@@ -410,6 +410,7 @@ interface ProjectBuildInput {
410
410
  }
411
411
 
412
412
  function buildProject(input: ProjectBuildInput): UserWorkspaceConfig {
413
+ const inlineDeps = buildInlineDeps(input)
413
414
  return {
414
415
  ...input.extra,
415
416
  plugins: [
@@ -430,7 +431,7 @@ function buildProject(input: ProjectBuildInput): UserWorkspaceConfig {
430
431
  hookTimeout: input.hookTimeout,
431
432
  server: {
432
433
  deps: {
433
- inline: input.inlineDeps,
434
+ inline: inlineDeps,
434
435
  },
435
436
  },
436
437
  setupFiles: input.setupFiles,
@@ -457,12 +458,23 @@ function buildSetupFiles(database: boolean, userSetupFiles: string[] | undefined
457
458
  return files
458
459
  }
459
460
 
460
- function buildInlineDeps(workspaceInlineDeps: string[] | undefined): string[] {
461
- const deps = new Set<string>(['pipework'])
462
- if (workspaceInlineDeps !== undefined) {
463
- for (const dep of workspaceInlineDeps) {
464
- deps.add(dep)
465
- }
461
+ // Pipework is inlined only where the effective isolate is true: a fresh module
462
+ // registry per file needs it. A shared-registry fork already matches Node's single
463
+ // module instance, so inlining buys nothing there. The vm pools isolate per file
464
+ // whatever `isolate` says, so they always inline. Precedence mirrors buildProject's
465
+ // emitted config: dedicated field, then `extra.test`, then the default.
466
+ function buildInlineDeps(input: ProjectBuildInput): string[] {
467
+ const extraTest = 'test' in input.extra ? input.extra['test'] as Record<string, unknown> : {}
468
+ const extraIsolate = typeof extraTest['isolate'] === 'boolean' ? extraTest['isolate'] : undefined
469
+ const extraPool = extraTest['pool']
470
+ const isolate = input.isolate ?? extraIsolate ?? DEFAULT_ISOLATE
471
+ const pool = input.pool ?? extraPool ?? DEFAULT_POOL
472
+ const deps = new Set<string>()
473
+ if (isolate || pool === 'vmThreads' || pool === 'vmForks') {
474
+ deps.add('pipework')
475
+ }
476
+ for (const dep of input.inlineDeps) {
477
+ deps.add(dep)
466
478
  }
467
479
  return [...deps]
468
480
  }