@animalabs/membrane 0.5.80 → 0.5.81
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/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 +57 -19
- package/dist/formatters/anthropic-xml.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 +29 -0
- package/dist/formatters/types.d.ts.map +1 -1
- package/dist/membrane.d.ts +137 -8
- package/dist/membrane.d.ts.map +1 -1
- package/dist/membrane.js +812 -310
- package/dist/membrane.js.map +1 -1
- package/dist/providers/anthropic.d.ts +26 -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/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/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 +82 -0
- package/dist/utils/cache-marker-budget.d.ts.map +1 -0
- package/dist/utils/cache-marker-budget.js +189 -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/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 +62 -20
- package/src/formatters/normalize-tool-pairs.ts +49 -0
- package/src/formatters/types.ts +32 -0
- package/src/membrane.ts +963 -313
- package/src/providers/anthropic.ts +161 -19
- package/src/providers/bedrock.ts +25 -1
- package/src/providers/gemini.ts +125 -87
- 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/response.ts +109 -8
- package/src/types/streaming.ts +8 -2
- package/src/utils/cache-marker-budget.ts +208 -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/membrane.d.ts
CHANGED
|
@@ -36,7 +36,43 @@ export declare class Membrane {
|
|
|
36
36
|
*/
|
|
37
37
|
stream(request: NormalizedRequest, options?: StreamOptions): Promise<NormalizedResponse | AbortedResponse>;
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
39
|
+
* Select the ACTIVE formatter for a request: the one instance that resolves
|
|
40
|
+
* its tool mode, builds its provider request, and parses its stream.
|
|
41
|
+
*
|
|
42
|
+
* A per-request override (`CompleteOptions.formatter` /
|
|
43
|
+
* `StreamOptions.formatter`) wins over the instance formatter, with ONE
|
|
44
|
+
* transport exception: the Responses adapter's input is a provider-native
|
|
45
|
+
* item array, and a generic override (for example Context Manager's
|
|
46
|
+
* NativeFormatter) produces Anthropic-style `{ role, content: [{ type:
|
|
47
|
+
* 'text' }] }` envelopes the Responses API rejects before inference — so a
|
|
48
|
+
* configured Responses formatter stays authoritative there.
|
|
49
|
+
*
|
|
50
|
+
* The exception is why this selection is a method rather than a `??` at each
|
|
51
|
+
* call site: while it lived inside transformRequest alone, the BUILD honored
|
|
52
|
+
* it and every other formatter reader resolved against a different instance,
|
|
53
|
+
* which is the split resolveToolMode exists to prevent, one layer down.
|
|
54
|
+
* Every entry point selects once, here, and threads the result.
|
|
55
|
+
*/
|
|
56
|
+
private resolveActiveFormatter;
|
|
57
|
+
/**
|
|
58
|
+
* Determine the effective tool mode.
|
|
59
|
+
*
|
|
60
|
+
* THE single source of truth for the mode: both complete() (via
|
|
61
|
+
* transformRequest → BuildOptions.toolMode) and the streaming paths (via
|
|
62
|
+
* their native-vs-XML path choice) resolve here, so a given request resolves
|
|
63
|
+
* to the same mode whichever entry point it arrives through.
|
|
64
|
+
*
|
|
65
|
+
* Precedence, strongest first:
|
|
66
|
+
* 1. an explicit non-'auto' `request.toolMode`
|
|
67
|
+
* 2. the mode the BUILDING formatter was explicitly constructed with
|
|
68
|
+
* (`AnthropicXmlFormatter({ toolMode: 'native' })`) — a caller's stated
|
|
69
|
+
* choice, not a derivation
|
|
70
|
+
* 3. formatter/provider derivation
|
|
71
|
+
*
|
|
72
|
+
* `formatter` is the formatter that will actually build the request — the
|
|
73
|
+
* instance `resolveActiveFormatter` selected for this call — because
|
|
74
|
+
* resolving against one formatter while building with another is exactly the
|
|
75
|
+
* split this method exists to prevent.
|
|
40
76
|
*/
|
|
41
77
|
private resolveToolMode;
|
|
42
78
|
/**
|
|
@@ -51,14 +87,31 @@ export declare class Membrane {
|
|
|
51
87
|
* Stream with native API tool execution
|
|
52
88
|
*/
|
|
53
89
|
private streamWithNativeTools;
|
|
54
|
-
/**
|
|
55
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Rate-limit state for the float's budget warning. See the
|
|
92
|
+
* floating-cache-marker block in buildNativeToolRequest.
|
|
93
|
+
*
|
|
94
|
+
* A once-per-instance latch made the ONLY observable of an over-budget wire
|
|
95
|
+
* go quiet for the life of the process: a long-lived Membrane warns for the
|
|
96
|
+
* first agent that trips it and never again, so the condition looks like it
|
|
97
|
+
* healed. Warn on the first occurrence, then at most once per interval,
|
|
98
|
+
* carrying the count of what was suppressed in between.
|
|
99
|
+
*/
|
|
100
|
+
private floatBudgetWarnState;
|
|
101
|
+
private static readonly FLOAT_BUDGET_WARN_INTERVAL_MS;
|
|
102
|
+
private warnFloatBudgetExhausted;
|
|
56
103
|
/**
|
|
57
104
|
* Build a provider request with native tool support.
|
|
58
105
|
*
|
|
59
106
|
* `toolLoopRebuild` is true when this build is a tool-loop continuation
|
|
60
107
|
* (toolDepth > 0) rather than the turn's first request — the only case
|
|
61
108
|
* where the floating cache marker applies.
|
|
109
|
+
*
|
|
110
|
+
* `activeFormatter` is the formatter the caller selected for the request
|
|
111
|
+
* (see resolveActiveFormatter). Reading `this.formatter` here instead made
|
|
112
|
+
* the native loop build through the instance formatter while the mode had
|
|
113
|
+
* been resolved against a per-request override — the two disagreeing about
|
|
114
|
+
* which formatter is active.
|
|
62
115
|
*/
|
|
63
116
|
private buildNativeToolRequest;
|
|
64
117
|
/**
|
|
@@ -74,10 +127,32 @@ export declare class Membrane {
|
|
|
74
127
|
private captureProviderThinkingBlocks;
|
|
75
128
|
/**
|
|
76
129
|
* Merge provider thinking signatures into parser-derived thinking blocks
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
130
|
+
* and prepend any leftover provider blocks — signature-only thinking
|
|
131
|
+
* (display:'omitted') never appears in the text stream, so the parser
|
|
132
|
+
* produces no block for it. redacted_thinking blocks are always prepended
|
|
133
|
+
* verbatim.
|
|
134
|
+
*
|
|
135
|
+
* Pairing is by CONTENT IDENTITY, never by index. The two lists are
|
|
136
|
+
* differently shaped whenever the provider emits a block the parser cannot
|
|
137
|
+
* see (signature-only), the parser emits a block the provider never
|
|
138
|
+
* produced (the XML path's literal `Claude: <thinking>` prefill turns
|
|
139
|
+
* VISIBLE text into a thinking block), or one provider block spans several
|
|
140
|
+
* (auto-continuation: capture runs per round while the parser sees the
|
|
141
|
+
* CONCATENATED accumulation). Index-zipping crosses the lists in all three
|
|
142
|
+
* shapes and stamps a signature onto content that never produced it —
|
|
143
|
+
* which round-trips into the consumer's stored history and fails Anthropic
|
|
144
|
+
* signature validation on the next turn.
|
|
145
|
+
*
|
|
146
|
+
* The three rules, in order:
|
|
147
|
+
* 1. identity — a provider block pairs with the parsed block whose
|
|
148
|
+
* thinking text is the same; empty-thinking (signature-only) blocks
|
|
149
|
+
* are never text-match candidates and are prepend-only.
|
|
150
|
+
* 2. span — a parsed block that reconstructs as the concatenation of a
|
|
151
|
+
* RUN of consecutive unpaired provider blocks is REPLACED in place by
|
|
152
|
+
* those originals, so the spanning block never wears a fragment's
|
|
153
|
+
* signature and no reasoning is sent twice.
|
|
154
|
+
* 3. leftover — everything still unpaired is prepended, de-duplicated
|
|
155
|
+
* against what `content` already carries (and against itself).
|
|
81
156
|
*
|
|
82
157
|
* Mutates `content` in place. Shared by the XML stream paths
|
|
83
158
|
* (streamWithXmlTools and runXmlToolsYielding).
|
|
@@ -114,7 +189,13 @@ export declare class Membrane {
|
|
|
114
189
|
*/
|
|
115
190
|
private buildThinkingParam;
|
|
116
191
|
/**
|
|
117
|
-
* Transform a normalized request into provider format using the formatter
|
|
192
|
+
* Transform a normalized request into provider format using the formatter.
|
|
193
|
+
*
|
|
194
|
+
* `activeFormatter` is the instance the caller already selected via
|
|
195
|
+
* resolveActiveFormatter — including that selection's Responses-transport
|
|
196
|
+
* authority rule, which used to live inline here. It is a parameter and not
|
|
197
|
+
* a re-derivation so that the formatter which BUILDS is the same one that
|
|
198
|
+
* resolved the tool mode and drives the loop.
|
|
118
199
|
*/
|
|
119
200
|
private transformRequest;
|
|
120
201
|
private streamOnce;
|
|
@@ -138,9 +219,48 @@ export declare class Membrane {
|
|
|
138
219
|
*/
|
|
139
220
|
private buildContinuationRequestWithImages;
|
|
140
221
|
private transformResponse;
|
|
222
|
+
/**
|
|
223
|
+
* The turn is over, and the two guards that detect a half-written tool block
|
|
224
|
+
* finally have a call site. Both shapes are defects a consumer must not
|
|
225
|
+
* persist blind: an unclosed block splices onto the NEXT round's closing tag
|
|
226
|
+
* (the loop does not resume on a length stop, so max_tokens leaves exactly
|
|
227
|
+
* this), and a block that parsed to nothing means the model believes it
|
|
228
|
+
* called a tool that never ran.
|
|
229
|
+
*/
|
|
230
|
+
private reportToolParseDiagnostics;
|
|
141
231
|
private buildFinalResponse;
|
|
232
|
+
/**
|
|
233
|
+
* Fold one discarded (billed but abandoned) attempt's usage into a carry.
|
|
234
|
+
* Returns a NEW object so a caller's earlier snapshot is never mutated.
|
|
235
|
+
*/
|
|
236
|
+
private mergeDiscardedAttempts;
|
|
237
|
+
/** One provider call's usage as a single-attempt discard record. */
|
|
238
|
+
private discardedAttemptFrom;
|
|
239
|
+
/** Price the discarded spend so a caller can read it without re-deriving. */
|
|
240
|
+
private pricedDiscardedAttempts;
|
|
142
241
|
private mapStopReason;
|
|
143
242
|
private calculateCacheHitRatio;
|
|
243
|
+
/**
|
|
244
|
+
* Pricing is resolved on TWO axes, and SOURCE outranks SPECIFICITY:
|
|
245
|
+
*
|
|
246
|
+
* registry[served] → registry[requested] → builtin[served] → builtin[requested]
|
|
247
|
+
*
|
|
248
|
+
* Specificity — preferring the model that ACTUALLY served over the id that
|
|
249
|
+
* was requested — is real: an alias or an auto-routed request otherwise
|
|
250
|
+
* prices against a string the provider already replaced, and a live
|
|
251
|
+
* 2026-08-25 call asking for `gpt-4o-mini` was served by
|
|
252
|
+
* `gpt-4o-mini-2024-07-18`. But it only breaks ties WITHIN one source.
|
|
253
|
+
* A configured `ModelRegistry` is the caller stating their own rates —
|
|
254
|
+
* account-specific, negotiated, authoritative; the built-in table is
|
|
255
|
+
* membrane's shipped guess at public list prices. Merging the two per-model
|
|
256
|
+
* (`registry[served] ?? builtin[served]`, return on the first hit) let the
|
|
257
|
+
* guess for a snapshot outrank the caller's own entry for the alias they
|
|
258
|
+
* asked for, so a caller who prices their alias and lets the provider pick
|
|
259
|
+
* the snapshot was billed at membrane's number instead of theirs.
|
|
260
|
+
*
|
|
261
|
+
* Both fallbacks stay: the served model may be absent from a source, and the
|
|
262
|
+
* provider may name none at all.
|
|
263
|
+
*/
|
|
144
264
|
private resolvePricing;
|
|
145
265
|
/** Resolve pricing + calculate cost in one call (for one-shot use outside loops). */
|
|
146
266
|
private estimateCost;
|
|
@@ -151,6 +271,15 @@ export declare class Membrane {
|
|
|
151
271
|
* Check if an error is an abort error
|
|
152
272
|
*/
|
|
153
273
|
private isAbortError;
|
|
274
|
+
/**
|
|
275
|
+
* Why a caught abort happened. The caller's own signal is authoritative:
|
|
276
|
+
* if it fired, the cancellation is theirs whatever the error text says.
|
|
277
|
+
* Otherwise an adapter-side deadline classifies as a timeout — the adapters
|
|
278
|
+
* mark the abort createCombinedSignal's timeoutMs raises and map it to a
|
|
279
|
+
* TimeoutAbortError, so the identity survives their error handling — and
|
|
280
|
+
* anything else that reached the abort catch is a failure, not a person.
|
|
281
|
+
*/
|
|
282
|
+
private abortReason;
|
|
154
283
|
/**
|
|
155
284
|
* Build an AbortedResponse from current execution state
|
|
156
285
|
*/
|
package/dist/membrane.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"membrane.d.ts","sourceRoot":"","sources":["../src/membrane.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAEf,eAAe,
|
|
1
|
+
{"version":3,"file":"membrane.d.ts","sourceRoot":"","sources":["../src/membrane.ts"],"names":[],"mappings":"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"}
|