@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.
Files changed (151) hide show
  1. package/dist/context/index.d.ts +1 -1
  2. package/dist/context/index.d.ts.map +1 -1
  3. package/dist/context/index.js +1 -1
  4. package/dist/context/index.js.map +1 -1
  5. package/dist/context/process.d.ts +3 -1
  6. package/dist/context/process.d.ts.map +1 -1
  7. package/dist/context/process.js +230 -49
  8. package/dist/context/process.js.map +1 -1
  9. package/dist/context/types.d.ts +30 -0
  10. package/dist/context/types.d.ts.map +1 -1
  11. package/dist/context/types.js +16 -0
  12. package/dist/context/types.js.map +1 -1
  13. package/dist/floating-cache-marker.test.js +21 -0
  14. package/dist/floating-cache-marker.test.js.map +1 -1
  15. package/dist/formatters/anthropic-xml.d.ts +2 -0
  16. package/dist/formatters/anthropic-xml.d.ts.map +1 -1
  17. package/dist/formatters/anthropic-xml.js +57 -19
  18. package/dist/formatters/anthropic-xml.js.map +1 -1
  19. package/dist/formatters/normalize-tool-pairs.d.ts +7 -0
  20. package/dist/formatters/normalize-tool-pairs.d.ts.map +1 -1
  21. package/dist/formatters/normalize-tool-pairs.js +45 -0
  22. package/dist/formatters/normalize-tool-pairs.js.map +1 -1
  23. package/dist/formatters/types.d.ts +29 -0
  24. package/dist/formatters/types.d.ts.map +1 -1
  25. package/dist/membrane.d.ts +137 -8
  26. package/dist/membrane.d.ts.map +1 -1
  27. package/dist/membrane.js +812 -310
  28. package/dist/membrane.js.map +1 -1
  29. package/dist/providers/anthropic.d.ts +26 -0
  30. package/dist/providers/anthropic.d.ts.map +1 -1
  31. package/dist/providers/anthropic.js +142 -25
  32. package/dist/providers/anthropic.js.map +1 -1
  33. package/dist/providers/bedrock.d.ts +8 -0
  34. package/dist/providers/bedrock.d.ts.map +1 -1
  35. package/dist/providers/bedrock.js +24 -1
  36. package/dist/providers/bedrock.js.map +1 -1
  37. package/dist/providers/gemini.d.ts +11 -0
  38. package/dist/providers/gemini.d.ts.map +1 -1
  39. package/dist/providers/gemini.js +104 -82
  40. package/dist/providers/gemini.js.map +1 -1
  41. package/dist/providers/mock.d.ts +2 -0
  42. package/dist/providers/mock.d.ts.map +1 -1
  43. package/dist/providers/mock.js +2 -0
  44. package/dist/providers/mock.js.map +1 -1
  45. package/dist/providers/openai-compatible.d.ts +7 -0
  46. package/dist/providers/openai-compatible.d.ts.map +1 -1
  47. package/dist/providers/openai-compatible.js +99 -48
  48. package/dist/providers/openai-compatible.js.map +1 -1
  49. package/dist/providers/openai-completions.d.ts +5 -0
  50. package/dist/providers/openai-completions.d.ts.map +1 -1
  51. package/dist/providers/openai-completions.js +107 -44
  52. package/dist/providers/openai-completions.js.map +1 -1
  53. package/dist/providers/openai-responses-api.d.ts +16 -0
  54. package/dist/providers/openai-responses-api.d.ts.map +1 -1
  55. package/dist/providers/openai-responses-api.js +38 -10
  56. package/dist/providers/openai-responses-api.js.map +1 -1
  57. package/dist/providers/openai-responses.d.ts +2 -0
  58. package/dist/providers/openai-responses.d.ts.map +1 -1
  59. package/dist/providers/openai-responses.js +8 -1
  60. package/dist/providers/openai-responses.js.map +1 -1
  61. package/dist/providers/openai.d.ts +7 -0
  62. package/dist/providers/openai.d.ts.map +1 -1
  63. package/dist/providers/openai.js +92 -44
  64. package/dist/providers/openai.js.map +1 -1
  65. package/dist/providers/openrouter.d.ts +9 -0
  66. package/dist/providers/openrouter.d.ts.map +1 -1
  67. package/dist/providers/openrouter.js +118 -62
  68. package/dist/providers/openrouter.js.map +1 -1
  69. package/dist/providers/utils.d.ts +74 -2
  70. package/dist/providers/utils.d.ts.map +1 -1
  71. package/dist/providers/utils.js +184 -3
  72. package/dist/providers/utils.js.map +1 -1
  73. package/dist/registry/default-pricing.d.ts +22 -0
  74. package/dist/registry/default-pricing.d.ts.map +1 -1
  75. package/dist/registry/default-pricing.js +162 -28
  76. package/dist/registry/default-pricing.js.map +1 -1
  77. package/dist/types/content.d.ts +13 -0
  78. package/dist/types/content.d.ts.map +1 -1
  79. package/dist/types/content.js.map +1 -1
  80. package/dist/types/errors.d.ts +15 -0
  81. package/dist/types/errors.d.ts.map +1 -1
  82. package/dist/types/errors.js +26 -0
  83. package/dist/types/errors.js.map +1 -1
  84. package/dist/types/index.d.ts +3 -3
  85. package/dist/types/index.d.ts.map +1 -1
  86. package/dist/types/index.js +1 -1
  87. package/dist/types/index.js.map +1 -1
  88. package/dist/types/provider.d.ts +50 -0
  89. package/dist/types/provider.d.ts.map +1 -1
  90. package/dist/types/response.d.ts +85 -4
  91. package/dist/types/response.d.ts.map +1 -1
  92. package/dist/types/response.js.map +1 -1
  93. package/dist/types/streaming.d.ts +6 -1
  94. package/dist/types/streaming.d.ts.map +1 -1
  95. package/dist/utils/cache-marker-budget.d.ts +82 -0
  96. package/dist/utils/cache-marker-budget.d.ts.map +1 -0
  97. package/dist/utils/cache-marker-budget.js +189 -0
  98. package/dist/utils/cache-marker-budget.js.map +1 -0
  99. package/dist/utils/cost.d.ts +22 -0
  100. package/dist/utils/cost.d.ts.map +1 -1
  101. package/dist/utils/cost.js +55 -0
  102. package/dist/utils/cost.js.map +1 -1
  103. package/dist/utils/thinking-carriers.d.ts +80 -0
  104. package/dist/utils/thinking-carriers.d.ts.map +1 -0
  105. package/dist/utils/thinking-carriers.js +115 -0
  106. package/dist/utils/thinking-carriers.js.map +1 -0
  107. package/dist/utils/tool-parser.d.ts +24 -0
  108. package/dist/utils/tool-parser.d.ts.map +1 -1
  109. package/dist/utils/tool-parser.js +367 -161
  110. package/dist/utils/tool-parser.js.map +1 -1
  111. package/dist/utils/usage.d.ts +71 -0
  112. package/dist/utils/usage.d.ts.map +1 -0
  113. package/dist/utils/usage.js +161 -0
  114. package/dist/utils/usage.js.map +1 -0
  115. package/dist/yielding-stream.d.ts +8 -0
  116. package/dist/yielding-stream.d.ts.map +1 -1
  117. package/dist/yielding-stream.js +49 -3
  118. package/dist/yielding-stream.js.map +1 -1
  119. package/package.json +1 -1
  120. package/src/context/index.ts +1 -0
  121. package/src/context/process.ts +305 -59
  122. package/src/context/types.ts +38 -0
  123. package/src/floating-cache-marker.test.ts +24 -0
  124. package/src/formatters/anthropic-xml.ts +62 -20
  125. package/src/formatters/normalize-tool-pairs.ts +49 -0
  126. package/src/formatters/types.ts +32 -0
  127. package/src/membrane.ts +963 -313
  128. package/src/providers/anthropic.ts +161 -19
  129. package/src/providers/bedrock.ts +25 -1
  130. package/src/providers/gemini.ts +125 -87
  131. package/src/providers/mock.ts +3 -0
  132. package/src/providers/openai-compatible.ts +102 -45
  133. package/src/providers/openai-completions.ts +112 -46
  134. package/src/providers/openai-responses-api.ts +45 -15
  135. package/src/providers/openai-responses.ts +8 -1
  136. package/src/providers/openai.ts +95 -42
  137. package/src/providers/openrouter.ts +125 -63
  138. package/src/providers/utils.ts +227 -6
  139. package/src/registry/default-pricing.ts +165 -28
  140. package/src/types/content.ts +14 -0
  141. package/src/types/errors.ts +28 -0
  142. package/src/types/index.ts +6 -0
  143. package/src/types/provider.ts +55 -0
  144. package/src/types/response.ts +109 -8
  145. package/src/types/streaming.ts +8 -2
  146. package/src/utils/cache-marker-budget.ts +208 -0
  147. package/src/utils/cost.ts +64 -0
  148. package/src/utils/thinking-carriers.ts +125 -0
  149. package/src/utils/tool-parser.ts +473 -174
  150. package/src/utils/usage.ts +184 -0
  151. package/src/yielding-stream.ts +54 -3
@@ -36,7 +36,43 @@ export declare class Membrane {
36
36
  */
37
37
  stream(request: NormalizedRequest, options?: StreamOptions): Promise<NormalizedResponse | AbortedResponse>;
38
38
  /**
39
- * Determine the effective tool mode
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
- /** See the floating-cache-marker block in buildNativeToolRequest. */
55
- private floatBudgetWarned;
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
- * (matched in stream order), and prepend any leftover provider blocks —
78
- * signature-only thinking (display:'omitted') never appears in the text
79
- * stream, so the parser produces no block for it. redacted_thinking
80
- * blocks are always prepended verbatim.
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
  */
@@ -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,EAEf,cAAc,EACd,aAAa,EACb,eAAe,EAYhB,MAAM,kBAAkB,CAAC;AAqB1B,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EAGtB,MAAM,4BAA4B,CAAC;AAiBpC,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAmB;gBAGlC,OAAO,EAAE,eAAe,EACxB,MAAM,GAAE,cAAmB;IAkB7B;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,kBAAkB,CAAC;IAyG9B;;;;;;;;;;;;;;;;;OAiBG;IACG,MAAM,CACV,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,kBAAkB,GAAG,eAAe,CAAC;IA8FhD;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;;;OAMG;YACW,kBAAkB;IAimBhC;;OAEG;YACW,qBAAqB;IAwOnC,qEAAqE;IACrE,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAuT9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuD5B;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;IAkBrC;;;;;;;;;OASG;IACH,OAAO,CAAC,2BAA2B;IA+BnC;;;;;;;OAOG;YACW,sBAAsB;IASpC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAIpC;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;YA4EV,UAAU;IA4DxB,OAAO,CAAC,wBAAwB;IA8ChC;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,kCAAkC;IAoD1C,OAAO,CAAC,iBAAiB;IAqIzB,OAAO,CAAC,kBAAkB;IAkF1B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,cAAc;IAItB,qFAAqF;IACrF,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,KAAK;IAcb;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,cAAc,CACZ,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,cAAc;IAuBjB;;OAEG;YACW,mBAAmB;IAqlBjC;;OAEG;YACW,sBAAsB;CA2UrC"}
1
+ {"version":3,"file":"membrane.d.ts","sourceRoot":"","sources":["../src/membrane.ts"],"names":[],"mappings":"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"}