@animalabs/membrane 0.5.80 → 0.5.82
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/dist/cache-wire-receipt.d.ts +13 -0
- package/dist/cache-wire-receipt.d.ts.map +1 -0
- package/dist/cache-wire-receipt.js +108 -0
- package/dist/cache-wire-receipt.js.map +1 -0
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context/index.js.map +1 -1
- package/dist/context/process.d.ts +3 -1
- package/dist/context/process.d.ts.map +1 -1
- package/dist/context/process.js +230 -49
- package/dist/context/process.js.map +1 -1
- package/dist/context/types.d.ts +30 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +16 -0
- package/dist/context/types.js.map +1 -1
- package/dist/floating-cache-marker.test.js +21 -0
- package/dist/floating-cache-marker.test.js.map +1 -1
- package/dist/formatters/anthropic-xml.d.ts +2 -0
- package/dist/formatters/anthropic-xml.d.ts.map +1 -1
- package/dist/formatters/anthropic-xml.js +64 -23
- package/dist/formatters/anthropic-xml.js.map +1 -1
- package/dist/formatters/native.d.ts.map +1 -1
- package/dist/formatters/native.js +16 -3
- package/dist/formatters/native.js.map +1 -1
- package/dist/formatters/normalize-tool-pairs.d.ts +7 -0
- package/dist/formatters/normalize-tool-pairs.d.ts.map +1 -1
- package/dist/formatters/normalize-tool-pairs.js +45 -0
- package/dist/formatters/normalize-tool-pairs.js.map +1 -1
- package/dist/formatters/types.d.ts +31 -0
- package/dist/formatters/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/membrane.d.ts +137 -8
- package/dist/membrane.d.ts.map +1 -1
- package/dist/membrane.js +823 -310
- package/dist/membrane.js.map +1 -1
- package/dist/providers/anthropic.d.ts +37 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +142 -25
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/bedrock.d.ts +8 -0
- package/dist/providers/bedrock.d.ts.map +1 -1
- package/dist/providers/bedrock.js +24 -1
- package/dist/providers/bedrock.js.map +1 -1
- package/dist/providers/gemini.d.ts +11 -0
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +104 -82
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/mock.d.ts +2 -0
- package/dist/providers/mock.d.ts.map +1 -1
- package/dist/providers/mock.js +2 -0
- package/dist/providers/mock.js.map +1 -1
- package/dist/providers/openai-compatible.d.ts +7 -0
- package/dist/providers/openai-compatible.d.ts.map +1 -1
- package/dist/providers/openai-compatible.js +99 -48
- package/dist/providers/openai-compatible.js.map +1 -1
- package/dist/providers/openai-completions.d.ts +5 -0
- package/dist/providers/openai-completions.d.ts.map +1 -1
- package/dist/providers/openai-completions.js +107 -44
- package/dist/providers/openai-completions.js.map +1 -1
- package/dist/providers/openai-responses-api.d.ts +16 -0
- package/dist/providers/openai-responses-api.d.ts.map +1 -1
- package/dist/providers/openai-responses-api.js +38 -10
- package/dist/providers/openai-responses-api.js.map +1 -1
- package/dist/providers/openai-responses.d.ts +2 -0
- package/dist/providers/openai-responses.d.ts.map +1 -1
- package/dist/providers/openai-responses.js +8 -1
- package/dist/providers/openai-responses.js.map +1 -1
- package/dist/providers/openai.d.ts +7 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +92 -44
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts +9 -0
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +118 -62
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/utils.d.ts +74 -2
- package/dist/providers/utils.d.ts.map +1 -1
- package/dist/providers/utils.js +184 -3
- package/dist/providers/utils.js.map +1 -1
- package/dist/registry/default-pricing.d.ts +22 -0
- package/dist/registry/default-pricing.d.ts.map +1 -1
- package/dist/registry/default-pricing.js +162 -28
- package/dist/registry/default-pricing.js.map +1 -1
- package/dist/types/content.d.ts +13 -0
- package/dist/types/content.d.ts.map +1 -1
- package/dist/types/content.js.map +1 -1
- package/dist/types/errors.d.ts +15 -0
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +26 -0
- package/dist/types/errors.js.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/provider.d.ts +50 -0
- package/dist/types/provider.d.ts.map +1 -1
- package/dist/types/request.d.ts +6 -0
- package/dist/types/request.d.ts.map +1 -1
- package/dist/types/response.d.ts +85 -4
- package/dist/types/response.d.ts.map +1 -1
- package/dist/types/response.js.map +1 -1
- package/dist/types/streaming.d.ts +6 -1
- package/dist/types/streaming.d.ts.map +1 -1
- package/dist/utils/cache-marker-budget.d.ts +91 -0
- package/dist/utils/cache-marker-budget.d.ts.map +1 -0
- package/dist/utils/cache-marker-budget.js +208 -0
- package/dist/utils/cache-marker-budget.js.map +1 -0
- package/dist/utils/cost.d.ts +22 -0
- package/dist/utils/cost.d.ts.map +1 -1
- package/dist/utils/cost.js +55 -0
- package/dist/utils/cost.js.map +1 -1
- package/dist/utils/thinking-carriers.d.ts +80 -0
- package/dist/utils/thinking-carriers.d.ts.map +1 -0
- package/dist/utils/thinking-carriers.js +115 -0
- package/dist/utils/thinking-carriers.js.map +1 -0
- package/dist/utils/tool-parser.d.ts +24 -0
- package/dist/utils/tool-parser.d.ts.map +1 -1
- package/dist/utils/tool-parser.js +367 -161
- package/dist/utils/tool-parser.js.map +1 -1
- package/dist/utils/usage.d.ts +71 -0
- package/dist/utils/usage.d.ts.map +1 -0
- package/dist/utils/usage.js +161 -0
- package/dist/utils/usage.js.map +1 -0
- package/dist/yielding-stream.d.ts +8 -0
- package/dist/yielding-stream.d.ts.map +1 -1
- package/dist/yielding-stream.js +49 -3
- package/dist/yielding-stream.js.map +1 -1
- package/package.json +1 -1
- package/src/cache-wire-receipt.ts +125 -0
- package/src/context/index.ts +1 -0
- package/src/context/process.ts +305 -59
- package/src/context/types.ts +38 -0
- package/src/floating-cache-marker.test.ts +24 -0
- package/src/formatters/anthropic-xml.ts +66 -23
- package/src/formatters/native.ts +23 -2
- package/src/formatters/normalize-tool-pairs.ts +49 -0
- package/src/formatters/types.ts +35 -0
- package/src/index.ts +6 -0
- package/src/membrane.ts +974 -313
- package/src/providers/anthropic.ts +173 -19
- package/src/providers/bedrock.ts +25 -1
- package/src/providers/gemini.ts +125 -87
- package/src/providers/index.ts +1 -0
- package/src/providers/mock.ts +3 -0
- package/src/providers/openai-compatible.ts +102 -45
- package/src/providers/openai-completions.ts +112 -46
- package/src/providers/openai-responses-api.ts +45 -15
- package/src/providers/openai-responses.ts +8 -1
- package/src/providers/openai.ts +95 -42
- package/src/providers/openrouter.ts +125 -63
- package/src/providers/utils.ts +227 -6
- package/src/registry/default-pricing.ts +165 -28
- package/src/types/content.ts +14 -0
- package/src/types/errors.ts +28 -0
- package/src/types/index.ts +6 -0
- package/src/types/provider.ts +55 -0
- package/src/types/request.ts +7 -0
- package/src/types/response.ts +109 -8
- package/src/types/streaming.ts +8 -2
- package/src/utils/cache-marker-budget.ts +237 -0
- package/src/utils/cost.ts +64 -0
- package/src/utils/thinking-carriers.ts +125 -0
- package/src/utils/tool-parser.ts +473 -174
- package/src/utils/usage.ts +184 -0
- package/src/yielding-stream.ts +54 -3
package/dist/providers/utils.js
CHANGED
|
@@ -1,3 +1,143 @@
|
|
|
1
|
+
import { TimeoutAbortError, authError, networkError, rateLimitError, serverError } from '../types/errors.js';
|
|
2
|
+
const RATE_LIMIT_FRAME_TOKENS = ['rate_limit', 'rate-limit', 'ratelimit', 'too_many_requests', 'resource_exhausted'];
|
|
3
|
+
const OVERLOADED_FRAME_TOKENS = ['overloaded'];
|
|
4
|
+
const SERVER_FRAME_TOKENS = ['server_error', 'internal', 'unavailable'];
|
|
5
|
+
const AUTH_FRAME_TOKENS = [
|
|
6
|
+
'invalid_api_key',
|
|
7
|
+
'api_key_invalid',
|
|
8
|
+
'authentication_error',
|
|
9
|
+
'unauthenticated',
|
|
10
|
+
'permission_denied',
|
|
11
|
+
'permission_error',
|
|
12
|
+
];
|
|
13
|
+
function readNumericField(...candidates) {
|
|
14
|
+
for (const candidate of candidates) {
|
|
15
|
+
if (typeof candidate === 'number' && Number.isFinite(candidate))
|
|
16
|
+
return candidate;
|
|
17
|
+
if (typeof candidate === 'string' && /^\d+$/.test(candidate.trim()))
|
|
18
|
+
return Number(candidate.trim());
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
function readDurationSeconds(...candidates) {
|
|
23
|
+
for (const candidate of candidates) {
|
|
24
|
+
if (typeof candidate === 'number' && Number.isFinite(candidate))
|
|
25
|
+
return candidate;
|
|
26
|
+
if (typeof candidate === 'string') {
|
|
27
|
+
const duration = candidate.trim().match(/^(\d+(?:\.\d+)?)s?$/);
|
|
28
|
+
if (duration?.[1])
|
|
29
|
+
return Number(duration[1]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
function readFrameRetryAfterMs(fields) {
|
|
35
|
+
const explicitMilliseconds = readNumericField(fields.retry_after_ms, fields.retryAfterMs);
|
|
36
|
+
if (explicitMilliseconds !== undefined)
|
|
37
|
+
return explicitMilliseconds;
|
|
38
|
+
const seconds = readDurationSeconds(fields.retry_after, fields.retryAfter, fields.retryDelay, fields.retry_delay);
|
|
39
|
+
return seconds === undefined ? undefined : Math.round(seconds * 1000);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The frame's own non-numeric `type`/`status` values — the provider's
|
|
43
|
+
* structured classification tokens (`rate_limit_error`, `RESOURCE_EXHAUSTED`,
|
|
44
|
+
* `overloaded_error`), never free prose. Matching a substring against these is
|
|
45
|
+
* safe in a way that matching the same substring against a human-readable
|
|
46
|
+
* message is not.
|
|
47
|
+
*/
|
|
48
|
+
function readFrameClassificationTokens(fields) {
|
|
49
|
+
return [fields.type, fields.status, fields.code]
|
|
50
|
+
.filter((value) => typeof value === 'string' && value.trim() !== '')
|
|
51
|
+
.map((value) => value.trim())
|
|
52
|
+
.filter((token) => !/^\d+$/.test(token));
|
|
53
|
+
}
|
|
54
|
+
function frameTokensMatch(tokens, needles) {
|
|
55
|
+
return tokens.some((token) => needles.some((needle) => token.toLowerCase().includes(needle)));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Throw when an SSE data frame carries a provider `error` payload.
|
|
59
|
+
*
|
|
60
|
+
* Every provider delivers mid-stream failures (upstream 429s, capacity loss,
|
|
61
|
+
* safety aborts) as a data line with an `error` object inside an HTTP-200
|
|
62
|
+
* stream. A loop that only looks for `choices`/`candidates` drops that frame,
|
|
63
|
+
* reaches EOF, and builds a well-formed success out of whatever arrived first:
|
|
64
|
+
* partial content, the initialised default finish reason, zero usage. Nothing
|
|
65
|
+
* distinguishes it from the model choosing to stop, so the truncated turn is
|
|
66
|
+
* persisted as a real one.
|
|
67
|
+
*
|
|
68
|
+
* The house ruled this a bug twice before it was hoisted here — once in
|
|
69
|
+
* openrouter.ts (tests/unit/openrouter-stream-error.test.ts) and once in
|
|
70
|
+
* openai-responses-api.ts — and both times the fix stayed in the one adapter
|
|
71
|
+
* that was being touched. This is the single site every SSE adapter calls.
|
|
72
|
+
*
|
|
73
|
+
* The frame is CLASSIFIED here rather than downstream. Throwing a bare
|
|
74
|
+
* `Error(string)` left `code`/`type`/`status` as prose, and each adapter's
|
|
75
|
+
* `handleError` then re-derived a category by substring-matching that prose —
|
|
76
|
+
* so a mid-stream 429 arriving as `status: 429` (no literal "429" in the
|
|
77
|
+
* message) normalized to `unknown, retryable: false` and suppressed the retry
|
|
78
|
+
* the provider was explicitly asking for. Classified failures reach the caller
|
|
79
|
+
* intact because every adapter's `handleError` returns a MembraneError
|
|
80
|
+
* unchanged. Mapping, using the structured fields only:
|
|
81
|
+
* - 429, or a rate-limit-shaped token -> rate_limit (retryable), carrying
|
|
82
|
+
* the frame's retry hint when it has one
|
|
83
|
+
* - 5xx, or an overloaded/server-shaped token -> server (retryable);
|
|
84
|
+
* overloaded-without-a-status takes 529 so it lands on the capacity
|
|
85
|
+
* backoff schedule, matching how anthropic.ts recovers the same shape
|
|
86
|
+
* - 401/403, or an auth-shaped token -> auth (non-retryable)
|
|
87
|
+
* - anything else -> the previous bare Error, so the adapter's own
|
|
88
|
+
* provider-specific fallbacks still get their swing at it
|
|
89
|
+
* The provider's message text is never dropped, and the raw frame plus the
|
|
90
|
+
* request ride along on the classified error.
|
|
91
|
+
*
|
|
92
|
+
* `errorNoun` names what carried the payload. It defaults to the SSE case, and
|
|
93
|
+
* exists because the same `{ error: { code, message } }` object also arrives on
|
|
94
|
+
* a non-streaming 200 body, where calling the failure a stream error would be
|
|
95
|
+
* false. Classification reads the payload's own fields either way — the
|
|
96
|
+
* transport was never part of the rule.
|
|
97
|
+
*/
|
|
98
|
+
export function throwOnStreamErrorFrame(parsed, providerLabel, rawRequest, errorNoun = 'stream error') {
|
|
99
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
100
|
+
return;
|
|
101
|
+
const streamError = parsed.error;
|
|
102
|
+
if (!streamError)
|
|
103
|
+
return;
|
|
104
|
+
const fields = typeof streamError === 'object' ? streamError : {};
|
|
105
|
+
const httpStatus = readNumericField(fields.code, fields.status);
|
|
106
|
+
const tokens = readFrameClassificationTokens(fields);
|
|
107
|
+
const providerMessage = typeof fields.message === 'string' && fields.message !== ''
|
|
108
|
+
? fields.message
|
|
109
|
+
: JSON.stringify(streamError);
|
|
110
|
+
const description = `${providerLabel} ${errorNoun}` +
|
|
111
|
+
`${httpStatus !== undefined ? ` (${httpStatus})` : ''}` +
|
|
112
|
+
`${tokens.length > 0 ? ` [${tokens.join(' ')}]` : ''}: ${providerMessage}`;
|
|
113
|
+
if (httpStatus === 429 || frameTokensMatch(tokens, RATE_LIMIT_FRAME_TOKENS)) {
|
|
114
|
+
throw rateLimitError(description, readFrameRetryAfterMs(fields), parsed, rawRequest);
|
|
115
|
+
}
|
|
116
|
+
if (httpStatus === 401 || httpStatus === 403 || frameTokensMatch(tokens, AUTH_FRAME_TOKENS)) {
|
|
117
|
+
throw authError(description, parsed, rawRequest);
|
|
118
|
+
}
|
|
119
|
+
const overloadedShaped = frameTokensMatch(tokens, OVERLOADED_FRAME_TOKENS);
|
|
120
|
+
if ((httpStatus !== undefined && httpStatus >= 500) || overloadedShaped || frameTokensMatch(tokens, SERVER_FRAME_TOKENS)) {
|
|
121
|
+
throw serverError(description, httpStatus ?? (overloadedShaped ? 529 : undefined), parsed, rawRequest);
|
|
122
|
+
}
|
|
123
|
+
throw new Error(description);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Throw when a stream reached EOF without ever observing a terminal event.
|
|
127
|
+
*
|
|
128
|
+
* The terminal signal (`finish_reason`, `[DONE]`, Anthropic's `message_delta`,
|
|
129
|
+
* Gemini's `finishReason`) must be an OBSERVATION, not a default. A graceful
|
|
130
|
+
* upstream close with no terminal frame — proxy/LB idle timeout, early FIN,
|
|
131
|
+
* a gateway truncating the body — otherwise yields a clean-looking
|
|
132
|
+
* `end_turn` over partial content plus a fabricated `finish_reason` that never
|
|
133
|
+
* came off the wire. Abrupt resets already reject the read; graceful ones did
|
|
134
|
+
* not. Retryable by construction: the request was never answered in full.
|
|
135
|
+
*/
|
|
136
|
+
export function assertTerminalEventObserved(sawTerminalEvent, providerLabel, rawRequest) {
|
|
137
|
+
if (sawTerminalEvent)
|
|
138
|
+
return;
|
|
139
|
+
throw networkError(`${providerLabel} stream ended before a terminal event (connection dropped mid-stream)`, undefined, rawRequest);
|
|
140
|
+
}
|
|
1
141
|
/**
|
|
2
142
|
* Safely parse a JSON string, returning an empty object on failure.
|
|
3
143
|
* Used for tool call arguments which may be malformed from streaming.
|
|
@@ -11,6 +151,46 @@ export function safeParseJson(str) {
|
|
|
11
151
|
return {};
|
|
12
152
|
}
|
|
13
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Marks the abort reason raised by an adapter's own `timeoutMs` deadline, so
|
|
156
|
+
* the error that comes back out of `fetch` can be told apart from a caller's
|
|
157
|
+
* cancellation by PROVENANCE rather than by matching its message text.
|
|
158
|
+
*
|
|
159
|
+
* `fetch` rejects with the signal's own `reason` object — identity and extra
|
|
160
|
+
* properties intact, on both the pre-headers and the body-read paths — so the
|
|
161
|
+
* mark survives the round trip through the platform. When some layer does
|
|
162
|
+
* replace the error, `isDeadlineAbort` simply reports false and the abort
|
|
163
|
+
* classifies as it did before: a missing mark degrades to the old answer, it
|
|
164
|
+
* never invents a timeout.
|
|
165
|
+
*/
|
|
166
|
+
const DEADLINE_ABORT = Symbol.for('membrane.deadlineAbort');
|
|
167
|
+
function deadlineAbortReason() {
|
|
168
|
+
const reason = new DOMException('Request timed out', 'AbortError');
|
|
169
|
+
Object.defineProperty(reason, DEADLINE_ABORT, { value: true, enumerable: false });
|
|
170
|
+
return reason;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* True when this error is the abort raised by an adapter's own deadline.
|
|
174
|
+
*
|
|
175
|
+
* A caller's cancellation never carries the mark (the combined controller is
|
|
176
|
+
* aborted with the caller's own reason), and if both race, whichever fired
|
|
177
|
+
* first is the reason the platform rejects with — so the mark answers "was
|
|
178
|
+
* this OUR deadline?" without a separate tie-break.
|
|
179
|
+
*/
|
|
180
|
+
export function isDeadlineAbort(error) {
|
|
181
|
+
return (typeof error === 'object' &&
|
|
182
|
+
error !== null &&
|
|
183
|
+
error[DEADLINE_ABORT] === true);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The typed error a deadline abort should become: a timeout by classification,
|
|
187
|
+
* an abort by provenance. Adapters return this from `handleError` instead of a
|
|
188
|
+
* bare `abortError()`, which used to erase the distinction before Membrane's
|
|
189
|
+
* caller-signal > timeout > error ladder could read it.
|
|
190
|
+
*/
|
|
191
|
+
export function deadlineTimeoutError(error, rawRequest) {
|
|
192
|
+
return new TimeoutAbortError('Request timed out', error, rawRequest);
|
|
193
|
+
}
|
|
14
194
|
/**
|
|
15
195
|
* Create a combined AbortSignal that fires on either the caller's signal
|
|
16
196
|
* or a timeout (whichever comes first).
|
|
@@ -18,8 +198,9 @@ export function safeParseJson(str) {
|
|
|
18
198
|
* The returned `cleanup` function MUST be called in a `finally` block to
|
|
19
199
|
* clear the timeout and remove the event listener, preventing leaks.
|
|
20
200
|
*
|
|
21
|
-
* Timeout aborts with `DOMException('Request timed out',
|
|
22
|
-
*
|
|
201
|
+
* Timeout aborts with a marked `DOMException('Request timed out',
|
|
202
|
+
* 'AbortError')`: abort-shaped like any cancellation, and identifiable as the
|
|
203
|
+
* deadline's doing via `isDeadlineAbort`.
|
|
23
204
|
*/
|
|
24
205
|
export function createCombinedSignal(signal, timeoutMs) {
|
|
25
206
|
if (!signal && !timeoutMs)
|
|
@@ -29,7 +210,7 @@ export function createCombinedSignal(signal, timeoutMs) {
|
|
|
29
210
|
const controller = new AbortController();
|
|
30
211
|
let timeoutId;
|
|
31
212
|
if (timeoutMs) {
|
|
32
|
-
timeoutId = setTimeout(() => controller.abort(
|
|
213
|
+
timeoutId = setTimeout(() => controller.abort(deadlineAbortReason()), timeoutMs);
|
|
33
214
|
}
|
|
34
215
|
const onAbort = () => controller.abort(signal.reason);
|
|
35
216
|
if (signal) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/providers/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAuB;IACnD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/providers/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,25 @@
|
|
|
1
1
|
import type { ModelPricing } from '../types/provider.js';
|
|
2
|
+
/**
|
|
3
|
+
* Built-in pricing table for known models, in USD per million tokens.
|
|
4
|
+
* Used as fallback when no ModelRegistry is configured; registry pricing
|
|
5
|
+
* (if available) takes precedence.
|
|
6
|
+
*
|
|
7
|
+
* Every row carries its OWN verification date through `ModelPricing.asOf`, out
|
|
8
|
+
* to `CostBreakdown.pricingAsOf`, so a caller can see how old the number it is
|
|
9
|
+
* billing against is instead of trusting a prose header. Currently-published
|
|
10
|
+
* rows were read off the provider's own price page on the date in
|
|
11
|
+
* {@link DEFAULT_PRICING_LAST_VERIFIED} (the per-section comments name the
|
|
12
|
+
* page) and carry it. A row for a RETIRED model carries the date its rate was
|
|
13
|
+
* last published instead — claude-3-5-sonnet is dated 2025-07-01 because it is
|
|
14
|
+
* no longer listed anywhere to verify against, and stamping it with the sweep
|
|
15
|
+
* date would claim a check that cannot be performed. The previous header
|
|
16
|
+
* claimed "Last updated: 2025-07" for the whole table while it carried Claude
|
|
17
|
+
* 4.6 rows, and three rows were simply wrong by the time they were checked.
|
|
18
|
+
*
|
|
19
|
+
* Matching is longest-prefix (see {@link getDefaultPricing}), so a more
|
|
20
|
+
* specific row always wins over a more general one and rows may be listed in
|
|
21
|
+
* any order.
|
|
22
|
+
*/
|
|
23
|
+
export declare const DEFAULT_PRICING_LAST_VERIFIED = "2026-08-25";
|
|
2
24
|
export declare function getDefaultPricing(modelId: string): ModelPricing | undefined;
|
|
3
25
|
//# sourceMappingURL=default-pricing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-pricing.d.ts","sourceRoot":"","sources":["../../src/registry/default-pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"default-pricing.d.ts","sourceRoot":"","sources":["../../src/registry/default-pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAoL1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAU3E"}
|
|
@@ -1,64 +1,198 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Built-in pricing table for known models.
|
|
3
|
-
*
|
|
2
|
+
* Built-in pricing table for known models, in USD per million tokens.
|
|
3
|
+
* Used as fallback when no ModelRegistry is configured; registry pricing
|
|
4
|
+
* (if available) takes precedence.
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
6
|
+
* Every row carries its OWN verification date through `ModelPricing.asOf`, out
|
|
7
|
+
* to `CostBreakdown.pricingAsOf`, so a caller can see how old the number it is
|
|
8
|
+
* billing against is instead of trusting a prose header. Currently-published
|
|
9
|
+
* rows were read off the provider's own price page on the date in
|
|
10
|
+
* {@link DEFAULT_PRICING_LAST_VERIFIED} (the per-section comments name the
|
|
11
|
+
* page) and carry it. A row for a RETIRED model carries the date its rate was
|
|
12
|
+
* last published instead — claude-3-5-sonnet is dated 2025-07-01 because it is
|
|
13
|
+
* no longer listed anywhere to verify against, and stamping it with the sweep
|
|
14
|
+
* date would claim a check that cannot be performed. The previous header
|
|
15
|
+
* claimed "Last updated: 2025-07" for the whole table while it carried Claude
|
|
16
|
+
* 4.6 rows, and three rows were simply wrong by the time they were checked.
|
|
17
|
+
*
|
|
18
|
+
* Matching is longest-prefix (see {@link getDefaultPricing}), so a more
|
|
19
|
+
* specific row always wins over a more general one and rows may be listed in
|
|
20
|
+
* any order.
|
|
7
21
|
*/
|
|
22
|
+
export const DEFAULT_PRICING_LAST_VERIFIED = '2026-08-25';
|
|
8
23
|
const PRICING_TABLE = [
|
|
9
|
-
//
|
|
24
|
+
// --------------------------------------------------------------------------
|
|
25
|
+
// Anthropic — https://docs.claude.com/en/docs/about-claude/pricing
|
|
26
|
+
// Retrieved 2026-08-25. Cache-write column is the 5-minute TTL bucket; the
|
|
27
|
+
// 1-hour bucket costs more and this table has no field for it.
|
|
28
|
+
// --------------------------------------------------------------------------
|
|
10
29
|
{
|
|
11
|
-
prefix: 'claude-
|
|
12
|
-
pricing: { inputPerMillion:
|
|
30
|
+
prefix: 'claude-fable-5',
|
|
31
|
+
pricing: { inputPerMillion: 10, outputPerMillion: 50, cacheWritePerMillion: 12.50, cacheReadPerMillion: 1, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
13
32
|
},
|
|
14
33
|
{
|
|
15
|
-
prefix: 'claude-
|
|
16
|
-
pricing: { inputPerMillion:
|
|
34
|
+
prefix: 'claude-opus-5',
|
|
35
|
+
pricing: { inputPerMillion: 5, outputPerMillion: 25, cacheWritePerMillion: 6.25, cacheReadPerMillion: 0.50, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
17
36
|
},
|
|
18
|
-
// Anthropic — Claude 4.5
|
|
19
37
|
{
|
|
20
|
-
prefix: 'claude-
|
|
21
|
-
pricing: { inputPerMillion:
|
|
38
|
+
prefix: 'claude-sonnet-5',
|
|
39
|
+
pricing: { inputPerMillion: 2, outputPerMillion: 10, cacheWritePerMillion: 2.50, cacheReadPerMillion: 0.20, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
40
|
+
},
|
|
41
|
+
// Opus 4.5 through 4.8 all price identically to Opus 5.
|
|
42
|
+
{
|
|
43
|
+
prefix: 'claude-opus-4-8',
|
|
44
|
+
pricing: { inputPerMillion: 5, outputPerMillion: 25, cacheWritePerMillion: 6.25, cacheReadPerMillion: 0.50, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
prefix: 'claude-opus-4-7',
|
|
48
|
+
pricing: { inputPerMillion: 5, outputPerMillion: 25, cacheWritePerMillion: 6.25, cacheReadPerMillion: 0.50, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
// Was priced here at 15/75 — the retired Opus 4 rate, 3x the real one.
|
|
52
|
+
prefix: 'claude-opus-4-6',
|
|
53
|
+
pricing: { inputPerMillion: 5, outputPerMillion: 25, cacheWritePerMillion: 6.25, cacheReadPerMillion: 0.50, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
22
54
|
},
|
|
23
|
-
// Anthropic — Claude 4
|
|
24
55
|
{
|
|
56
|
+
prefix: 'claude-opus-4-5',
|
|
57
|
+
pricing: { inputPerMillion: 5, outputPerMillion: 25, cacheWritePerMillion: 6.25, cacheReadPerMillion: 0.50, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
// Retired except on Bedrock and Google Cloud; also covers Opus 4.1, which
|
|
61
|
+
// is priced identically.
|
|
25
62
|
prefix: 'claude-opus-4',
|
|
26
|
-
pricing: { inputPerMillion: 15, outputPerMillion: 75, cacheWritePerMillion: 18.75, cacheReadPerMillion: 1.50, currency: 'USD' },
|
|
63
|
+
pricing: { inputPerMillion: 15, outputPerMillion: 75, cacheWritePerMillion: 18.75, cacheReadPerMillion: 1.50, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
prefix: 'claude-sonnet-4-6',
|
|
67
|
+
pricing: { inputPerMillion: 3, outputPerMillion: 15, cacheWritePerMillion: 3.75, cacheReadPerMillion: 0.30, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
prefix: 'claude-sonnet-4-5',
|
|
71
|
+
pricing: { inputPerMillion: 3, outputPerMillion: 15, cacheWritePerMillion: 3.75, cacheReadPerMillion: 0.30, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
27
72
|
},
|
|
28
73
|
{
|
|
74
|
+
// Retired except on Bedrock and Google Cloud.
|
|
29
75
|
prefix: 'claude-sonnet-4',
|
|
30
|
-
pricing: { inputPerMillion: 3, outputPerMillion: 15, cacheWritePerMillion: 3.75, cacheReadPerMillion: 0.30, currency: 'USD' },
|
|
76
|
+
pricing: { inputPerMillion: 3, outputPerMillion: 15, cacheWritePerMillion: 3.75, cacheReadPerMillion: 0.30, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
31
77
|
},
|
|
32
|
-
// Anthropic — Claude 3.5
|
|
33
78
|
{
|
|
34
|
-
|
|
35
|
-
|
|
79
|
+
// Was priced here at 0.80/4 — the retired Haiku 3.5 rate.
|
|
80
|
+
prefix: 'claude-haiku-4-5',
|
|
81
|
+
pricing: { inputPerMillion: 1, outputPerMillion: 5, cacheWritePerMillion: 1.25, cacheReadPerMillion: 0.10, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
36
82
|
},
|
|
37
83
|
{
|
|
84
|
+
// Retired except on Bedrock and Google Cloud.
|
|
38
85
|
prefix: 'claude-3-5-haiku',
|
|
39
|
-
pricing: { inputPerMillion: 0.80, outputPerMillion: 4, cacheWritePerMillion: 1
|
|
86
|
+
pricing: { inputPerMillion: 0.80, outputPerMillion: 4, cacheWritePerMillion: 1, cacheReadPerMillion: 0.08, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
// Fully retired: no longer listed on the price page as of 2026-08-25, so
|
|
90
|
+
// this is the last published rate rather than a current one.
|
|
91
|
+
prefix: 'claude-3-5-sonnet',
|
|
92
|
+
pricing: { inputPerMillion: 3, outputPerMillion: 15, cacheWritePerMillion: 3.75, cacheReadPerMillion: 0.30, currency: 'USD', asOf: '2025-07-01' },
|
|
40
93
|
},
|
|
41
|
-
//
|
|
94
|
+
// --------------------------------------------------------------------------
|
|
95
|
+
// OpenAI — https://platform.openai.com/docs/pricing (standard tier)
|
|
96
|
+
// Retrieved 2026-08-25. "Cached input" is OpenAI's discounted rate for the
|
|
97
|
+
// automatically-cached prompt prefix; note that OpenAI's prompt_tokens
|
|
98
|
+
// INCLUDES that span (see UsageCacheConvention), which membrane normalizes
|
|
99
|
+
// away before pricing, so cacheReadPerMillion is applied to a disjoint count.
|
|
100
|
+
// --------------------------------------------------------------------------
|
|
42
101
|
{
|
|
43
|
-
prefix: 'gpt-
|
|
44
|
-
pricing: { inputPerMillion:
|
|
102
|
+
prefix: 'gpt-5.6-sol',
|
|
103
|
+
pricing: { inputPerMillion: 4, outputPerMillion: 20, cacheReadPerMillion: 0.40, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
45
104
|
},
|
|
46
105
|
{
|
|
47
|
-
prefix: 'gpt-
|
|
48
|
-
pricing: { inputPerMillion: 2
|
|
106
|
+
prefix: 'gpt-5.6-terra',
|
|
107
|
+
pricing: { inputPerMillion: 2, outputPerMillion: 12, cacheReadPerMillion: 0.20, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
prefix: 'gpt-5.6-luna',
|
|
111
|
+
pricing: { inputPerMillion: 0.20, outputPerMillion: 1.20, cacheReadPerMillion: 0.02, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
// Under 272K context; the long-context tier costs more and this table has
|
|
115
|
+
// no field for context-dependent rates.
|
|
116
|
+
prefix: 'gpt-5.5',
|
|
117
|
+
pricing: { inputPerMillion: 5, outputPerMillion: 30, cacheReadPerMillion: 0.50, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
prefix: 'gpt-5.4-mini',
|
|
121
|
+
pricing: { inputPerMillion: 0.75, outputPerMillion: 4.50, cacheReadPerMillion: 0.075, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
prefix: 'gpt-5.4-nano',
|
|
125
|
+
pricing: { inputPerMillion: 0.20, outputPerMillion: 1.25, cacheReadPerMillion: 0.02, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
// Under 272K context.
|
|
129
|
+
prefix: 'gpt-5.4',
|
|
130
|
+
pricing: { inputPerMillion: 2.50, outputPerMillion: 15, cacheReadPerMillion: 0.25, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
prefix: 'gpt-5.2',
|
|
134
|
+
pricing: { inputPerMillion: 1.75, outputPerMillion: 14, cacheReadPerMillion: 0.175, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
prefix: 'gpt-5.1',
|
|
138
|
+
pricing: { inputPerMillion: 1.25, outputPerMillion: 10, cacheReadPerMillion: 0.125, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
prefix: 'gpt-5-mini',
|
|
142
|
+
pricing: { inputPerMillion: 0.25, outputPerMillion: 2, cacheReadPerMillion: 0.025, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
prefix: 'gpt-5-nano',
|
|
146
|
+
pricing: { inputPerMillion: 0.05, outputPerMillion: 0.40, cacheReadPerMillion: 0.005, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
prefix: 'gpt-5',
|
|
150
|
+
pricing: { inputPerMillion: 1.25, outputPerMillion: 10, cacheReadPerMillion: 0.125, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
49
151
|
},
|
|
50
152
|
{
|
|
51
153
|
prefix: 'gpt-4o-mini',
|
|
52
|
-
pricing: { inputPerMillion: 0.15, outputPerMillion: 0.60, cacheReadPerMillion: 0.075, currency: 'USD' },
|
|
154
|
+
pricing: { inputPerMillion: 0.15, outputPerMillion: 0.60, cacheReadPerMillion: 0.075, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
// The one gpt-4o snapshot priced differently from plain gpt-4o. Replaces a
|
|
158
|
+
// `gpt-4o-2024` row that was byte-identical to gpt-4o and so could never
|
|
159
|
+
// change any answer — while masking this genuine difference.
|
|
160
|
+
prefix: 'gpt-4o-2024-05-13',
|
|
161
|
+
pricing: { inputPerMillion: 5, outputPerMillion: 15, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
prefix: 'gpt-4o',
|
|
165
|
+
pricing: { inputPerMillion: 2.50, outputPerMillion: 10, cacheReadPerMillion: 1.25, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
166
|
+
},
|
|
167
|
+
// --------------------------------------------------------------------------
|
|
168
|
+
// Google — https://ai.google.dev/gemini-api/docs/pricing (paid tier)
|
|
169
|
+
// Retrieved 2026-08-25. Google's published output price INCLUDES thinking
|
|
170
|
+
// tokens, which is why the gemini adapter folds thoughtsTokenCount into
|
|
171
|
+
// outputTokens. Cache rates are the context-caching per-token price and
|
|
172
|
+
// exclude Google's separate per-hour storage charge, which membrane does not
|
|
173
|
+
// model. Where a model has a >200k-token tier the smaller-prompt rate is used.
|
|
174
|
+
// --------------------------------------------------------------------------
|
|
175
|
+
{
|
|
176
|
+
prefix: 'gemini-3.5-flash-lite',
|
|
177
|
+
pricing: { inputPerMillion: 0.30, outputPerMillion: 2.50, cacheReadPerMillion: 0.03, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
prefix: 'gemini-3.5-flash',
|
|
181
|
+
pricing: { inputPerMillion: 1.50, outputPerMillion: 9, cacheReadPerMillion: 0.15, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
53
182
|
},
|
|
54
|
-
// Google — Gemini 2.5
|
|
55
183
|
{
|
|
56
184
|
prefix: 'gemini-2.5-pro',
|
|
57
|
-
pricing: { inputPerMillion: 1.25, outputPerMillion: 10, currency: 'USD' },
|
|
185
|
+
pricing: { inputPerMillion: 1.25, outputPerMillion: 10, cacheReadPerMillion: 0.125, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
// Was absent, so the gemini-2.5-flash row priced it at 3x input / 6x output.
|
|
189
|
+
prefix: 'gemini-2.5-flash-lite',
|
|
190
|
+
pricing: { inputPerMillion: 0.10, outputPerMillion: 0.40, cacheReadPerMillion: 0.01, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
58
191
|
},
|
|
59
192
|
{
|
|
193
|
+
// Was priced here at 0.15/0.60 — text rate; audio input costs more.
|
|
60
194
|
prefix: 'gemini-2.5-flash',
|
|
61
|
-
pricing: { inputPerMillion: 0.
|
|
195
|
+
pricing: { inputPerMillion: 0.30, outputPerMillion: 2.50, cacheReadPerMillion: 0.03, currency: 'USD', asOf: DEFAULT_PRICING_LAST_VERIFIED },
|
|
62
196
|
},
|
|
63
197
|
];
|
|
64
198
|
export function getDefaultPricing(modelId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-pricing.js","sourceRoot":"","sources":["../../src/registry/default-pricing.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"default-pricing.js","sourceRoot":"","sources":["../../src/registry/default-pricing.ts"],"names":[],"mappings":"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"}
|
package/dist/types/content.d.ts
CHANGED
|
@@ -86,6 +86,19 @@ export interface ToolUseContent {
|
|
|
86
86
|
* block. Absent on native-tools blocks and on legacy stored blocks.
|
|
87
87
|
*/
|
|
88
88
|
rawXml?: string;
|
|
89
|
+
/**
|
|
90
|
+
* Raw accumulated argument text that FAILED to parse as JSON, kept verbatim.
|
|
91
|
+
*
|
|
92
|
+
* Present only when the provider's streamed `input_json_delta` fragments did
|
|
93
|
+
* not assemble into valid JSON — a call truncated mid-arguments (max_tokens)
|
|
94
|
+
* is the usual cause. `input` then holds whatever the provider's
|
|
95
|
+
* content_block_start carried, which for Anthropic is `{}`: a wire-valid
|
|
96
|
+
* tool call with empty arguments, indistinguishable from a genuine no-arg
|
|
97
|
+
* call once it is written to durable history. Presence of this field means
|
|
98
|
+
* `input` is NOT the model's arguments, so a consumer can refuse the block
|
|
99
|
+
* (or attempt its own repair) instead of trusting a plausible `{}`.
|
|
100
|
+
*/
|
|
101
|
+
unparseableInput?: string;
|
|
89
102
|
/** See {@link TextContent.rawItem}. */
|
|
90
103
|
rawItem?: unknown;
|
|
91
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,kEAAkE;IAClE,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;AAMnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;6EAEyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,mBAAmB,CAAC;IAC1B;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,MAAM,YAAY,GAEpB,WAAW,GAEX,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,YAAY,GAEZ,qBAAqB,GAErB,cAAc,GACd,iBAAiB,GAEjB,eAAe,GACf,uBAAuB,CAAC;AAM5B,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,WAAW,CAEvE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,YAAY,CAEzE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,eAAe,CAE/E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,YAAY,CAEzE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,YAAY,CAEzE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,qBAAqB,CAE3F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,cAAc,CAE7E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,iBAAiB,CAEnF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,eAAe,CAE/E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,uBAAuB,CAE/F;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,GAClB,KAAK,IAAI,YAAY,GAAG,eAAe,GAAG,YAAY,GAAG,YAAY,CAEvE"}
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,kEAAkE;IAClE,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;AAMnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;6EAEyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,mBAAmB,CAAC;IAC1B;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,MAAM,YAAY,GAEpB,WAAW,GAEX,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,YAAY,GAEZ,qBAAqB,GAErB,cAAc,GACd,iBAAiB,GAEjB,eAAe,GACf,uBAAuB,CAAC;AAM5B,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,WAAW,CAEvE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,YAAY,CAEzE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,eAAe,CAE/E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,YAAY,CAEzE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,YAAY,CAEzE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,qBAAqB,CAE3F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,cAAc,CAE7E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,iBAAiB,CAEnF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,eAAe,CAE/E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,uBAAuB,CAE/F;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,GAClB,KAAK,IAAI,YAAY,GAAG,eAAe,GAAG,YAAY,GAAG,YAAY,CAEvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6MH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,UAAU,aAAa,CAAC,KAAmB;IAC/C,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAmB;IACnD,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAmB;IACzD,OAAO,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,OAAO,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAmB;IACnD,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAmB;IAC3D,OAAO,KAAK,CAAC,IAAI,KAAK,mBAAmB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAmB;IAEnB,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC"}
|
package/dist/types/errors.d.ts
CHANGED
|
@@ -44,6 +44,21 @@ export declare function serverError(message: string, httpStatus?: number, raw?:
|
|
|
44
44
|
export declare function networkError(message: string, raw?: unknown, rawRequest?: unknown): MembraneError;
|
|
45
45
|
export declare function timeoutError(message: string, raw?: unknown, rawRequest?: unknown): MembraneError;
|
|
46
46
|
export declare function abortError(message?: string, rawRequest?: unknown): MembraneError;
|
|
47
|
+
/**
|
|
48
|
+
* A request cancelled by the adapter's OWN deadline (`timeoutMs`), as opposed
|
|
49
|
+
* to a caller's signal or a stray abort.
|
|
50
|
+
*
|
|
51
|
+
* It is both facts at once, and callers need both: a timeout by `type` (so
|
|
52
|
+
* `classifyError` and the abort-reason ladder report `'timeout'`), and an
|
|
53
|
+
* abort by provenance (so the streaming paths still hand back an
|
|
54
|
+
* `AbortedResponse` with whatever partial content arrived, rather than
|
|
55
|
+
* throwing). Non-retryable: the deadline that fired belongs to this call, and
|
|
56
|
+
* retrying inside it would only spend the caller's budget again.
|
|
57
|
+
*/
|
|
58
|
+
export declare class TimeoutAbortError extends MembraneError {
|
|
59
|
+
constructor(message?: string, raw?: unknown, rawRequest?: unknown);
|
|
60
|
+
}
|
|
61
|
+
export declare function isTimeoutAbortError(error: unknown): error is TimeoutAbortError;
|
|
47
62
|
export declare function safetyError(message: string, raw?: unknown, rawRequest?: unknown): MembraneError;
|
|
48
63
|
export declare function unsupportedError(message: string, rawRequest?: unknown): MembraneError;
|
|
49
64
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/types/errors.js
CHANGED
|
@@ -147,6 +147,32 @@ export function abortError(message = 'Request was aborted', rawRequest) {
|
|
|
147
147
|
rawRequest,
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* A request cancelled by the adapter's OWN deadline (`timeoutMs`), as opposed
|
|
152
|
+
* to a caller's signal or a stray abort.
|
|
153
|
+
*
|
|
154
|
+
* It is both facts at once, and callers need both: a timeout by `type` (so
|
|
155
|
+
* `classifyError` and the abort-reason ladder report `'timeout'`), and an
|
|
156
|
+
* abort by provenance (so the streaming paths still hand back an
|
|
157
|
+
* `AbortedResponse` with whatever partial content arrived, rather than
|
|
158
|
+
* throwing). Non-retryable: the deadline that fired belongs to this call, and
|
|
159
|
+
* retrying inside it would only spend the caller's budget again.
|
|
160
|
+
*/
|
|
161
|
+
export class TimeoutAbortError extends MembraneError {
|
|
162
|
+
constructor(message = 'Request timed out', raw, rawRequest) {
|
|
163
|
+
super({
|
|
164
|
+
type: 'timeout',
|
|
165
|
+
message,
|
|
166
|
+
retryable: false,
|
|
167
|
+
rawError: raw,
|
|
168
|
+
rawRequest,
|
|
169
|
+
});
|
|
170
|
+
this.name = 'TimeoutAbortError';
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export function isTimeoutAbortError(error) {
|
|
174
|
+
return error instanceof TimeoutAbortError;
|
|
175
|
+
}
|
|
150
176
|
export function safetyError(message, raw, rawRequest) {
|
|
151
177
|
return new MembraneError({
|
|
152
178
|
type: 'safety',
|