@animalabs/membrane 0.5.40 → 0.5.42
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/formatters/pseudo-prefill.d.ts +71 -0
- package/dist/formatters/pseudo-prefill.d.ts.map +1 -0
- package/dist/formatters/pseudo-prefill.js +410 -0
- package/dist/formatters/pseudo-prefill.js.map +1 -0
- package/dist/membrane.d.ts +5 -0
- package/dist/membrane.d.ts.map +1 -1
- package/dist/membrane.js +91 -44
- package/dist/membrane.js.map +1 -1
- package/dist/providers/bedrock.d.ts.map +1 -1
- package/dist/providers/bedrock.js +27 -8
- package/dist/providers/bedrock.js.map +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +11 -2
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/openai-compatible.d.ts.map +1 -1
- package/dist/providers/openai-compatible.js +27 -16
- package/dist/providers/openai-compatible.js.map +1 -1
- package/dist/providers/openai-completions.d.ts.map +1 -1
- package/dist/providers/openai-completions.js +48 -24
- package/dist/providers/openai-completions.js.map +1 -1
- package/dist/providers/openai-responses.d.ts.map +1 -1
- package/dist/providers/openai-responses.js +6 -1
- package/dist/providers/openai-responses.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +27 -16
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +37 -17
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/utils.d.ts +44 -0
- package/dist/providers/utils.d.ts.map +1 -0
- package/dist/providers/utils.js +100 -0
- package/dist/providers/utils.js.map +1 -0
- package/dist/transforms/prefill.d.ts.map +1 -1
- package/dist/transforms/prefill.js +44 -45
- package/dist/transforms/prefill.js.map +1 -1
- package/dist/types/request.d.ts +8 -0
- package/dist/types/request.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/membrane.ts +96 -46
- package/src/providers/bedrock.ts +25 -9
- package/src/providers/gemini.ts +9 -2
- package/src/providers/openai-compatible.ts +27 -18
- package/src/providers/openai-completions.ts +47 -25
- package/src/providers/openai-responses.ts +5 -1
- package/src/providers/openai.ts +27 -18
- package/src/providers/openrouter.ts +36 -19
- package/src/providers/utils.ts +109 -0
- package/src/types/request.ts +9 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safely parse a JSON string, returning an empty object on failure.
|
|
3
|
+
* Used for tool call arguments which may be malformed from streaming.
|
|
4
|
+
*/
|
|
5
|
+
export function safeParseJson(str) {
|
|
6
|
+
try {
|
|
7
|
+
return JSON.parse(str || '{}');
|
|
8
|
+
}
|
|
9
|
+
catch (e) {
|
|
10
|
+
console.warn('[membrane] Failed to parse tool arguments JSON:', e);
|
|
11
|
+
return {};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a combined AbortSignal that fires on either the caller's signal
|
|
16
|
+
* or a timeout (whichever comes first).
|
|
17
|
+
*
|
|
18
|
+
* The returned `cleanup` function MUST be called in a `finally` block to
|
|
19
|
+
* clear the timeout and remove the event listener, preventing leaks.
|
|
20
|
+
*
|
|
21
|
+
* Timeout aborts with `DOMException('Request timed out', 'AbortError')`
|
|
22
|
+
* so it classifies identically to user-initiated aborts.
|
|
23
|
+
*/
|
|
24
|
+
export function createCombinedSignal(signal, timeoutMs) {
|
|
25
|
+
if (!signal && !timeoutMs)
|
|
26
|
+
return {};
|
|
27
|
+
if (signal && !timeoutMs)
|
|
28
|
+
return { signal };
|
|
29
|
+
const controller = new AbortController();
|
|
30
|
+
let timeoutId;
|
|
31
|
+
if (timeoutMs) {
|
|
32
|
+
timeoutId = setTimeout(() => controller.abort(new DOMException('Request timed out', 'AbortError')), timeoutMs);
|
|
33
|
+
}
|
|
34
|
+
const onAbort = () => controller.abort(signal.reason);
|
|
35
|
+
if (signal) {
|
|
36
|
+
if (signal.aborted) {
|
|
37
|
+
controller.abort(signal.reason);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
signal: controller.signal,
|
|
45
|
+
cleanup: () => {
|
|
46
|
+
if (timeoutId)
|
|
47
|
+
clearTimeout(timeoutId);
|
|
48
|
+
if (signal)
|
|
49
|
+
signal.removeEventListener('abort', onAbort);
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* SSE (Server-Sent Events) line parser that correctly handles events
|
|
55
|
+
* split across multiple TCP chunks.
|
|
56
|
+
*
|
|
57
|
+
* The naive approach of `chunk.split('\n').filter(l => l.startsWith('data: '))`
|
|
58
|
+
* silently drops events when an SSE line spans two chunks:
|
|
59
|
+
* Chunk 1: `data: {"choices":[{"delta":{"content":"don'` (no newline — incomplete)
|
|
60
|
+
* Chunk 2: `t do that"}}]}\n` (doesn't start with `data: `)
|
|
61
|
+
* Result: the entire event is lost, causing "skipped words" in output.
|
|
62
|
+
*
|
|
63
|
+
* This parser buffers partial lines and only yields complete `data: ...` lines.
|
|
64
|
+
*/
|
|
65
|
+
export class SSELineParser {
|
|
66
|
+
buffer = '';
|
|
67
|
+
/**
|
|
68
|
+
* Feed a raw chunk from the stream reader and get back complete SSE data lines.
|
|
69
|
+
* Each returned string is the content after `data: ` (e.g. the JSON payload or `[DONE]`).
|
|
70
|
+
*/
|
|
71
|
+
feed(chunk) {
|
|
72
|
+
this.buffer += chunk;
|
|
73
|
+
const results = [];
|
|
74
|
+
// Split on newlines, keeping the last (potentially incomplete) segment in the buffer
|
|
75
|
+
const lines = this.buffer.split('\n');
|
|
76
|
+
this.buffer = lines.pop() || '';
|
|
77
|
+
for (const line of lines) {
|
|
78
|
+
const trimmed = line.trim();
|
|
79
|
+
if (trimmed.startsWith('data: ')) {
|
|
80
|
+
results.push(trimmed.slice(6));
|
|
81
|
+
}
|
|
82
|
+
// Skip empty lines, comments (`:...`), and other SSE fields (event:, id:, retry:)
|
|
83
|
+
}
|
|
84
|
+
return results;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Flush any remaining buffered content (call when stream ends).
|
|
88
|
+
*/
|
|
89
|
+
flush() {
|
|
90
|
+
if (!this.buffer.trim())
|
|
91
|
+
return [];
|
|
92
|
+
const trimmed = this.buffer.trim();
|
|
93
|
+
this.buffer = '';
|
|
94
|
+
if (trimmed.startsWith('data: ')) {
|
|
95
|
+
return [trimmed.slice(6)];
|
|
96
|
+
}
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/providers/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefill.d.ts","sourceRoot":"","sources":["../../src/transforms/prefill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAEV,iBAAiB,EAGjB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAQ3B;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAM1E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAAC;CAC1C;AAMD,MAAM,WAAW,sBAAsB;IACrC,4DAA4D;IAC5D,aAAa,EAAE,oBAAoB,EAAE,CAAC;IAEtC,kDAAkD;IAClD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAE5B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IAEf,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IAEpB,4DAA4D;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IAEzB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,sCAAsC;IACtC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD,MAAM,WAAW,uBAAuB;IACtC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,wDAAwD;IACxD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,mCAAmC;IACnC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEvD,kFAAkF;IAClF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,mDAAmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"prefill.d.ts","sourceRoot":"","sources":["../../src/transforms/prefill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAEV,iBAAiB,EAGjB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAQ3B;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAM1E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAAC;CAC1C;AAMD,MAAM,WAAW,sBAAsB;IACrC,4DAA4D;IAC5D,aAAa,EAAE,oBAAoB,EAAE,CAAC;IAEtC,kDAAkD;IAClD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAE5B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IAEf,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IAEpB,4DAA4D;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IAEzB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,sCAAsC;IACtC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD,MAAM,WAAW,uBAAuB;IACtC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,wDAAwD;IACxD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,mCAAmC;IACnC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEvD,kFAAkF;IAClF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,mDAAmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CA4NxB;AA4LD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,sBAAsB,EACtC,WAAW,EAAE,MAAM,GAClB,sBAAsB,CAuBxB"}
|
|
@@ -35,6 +35,15 @@ export function transformToPrefill(request, options = {}) {
|
|
|
35
35
|
// Track conversation lines for current section
|
|
36
36
|
let currentConversation = [];
|
|
37
37
|
let lastNonEmptyParticipant = null;
|
|
38
|
+
// Calculate tool injection point based on total message count (not current segment)
|
|
39
|
+
// Tools should be injected N messages from the end of the entire conversation
|
|
40
|
+
const totalMessages = messages.length;
|
|
41
|
+
const toolInjectionIndex = Math.max(0, totalMessages - toolInjectionPosition);
|
|
42
|
+
let toolsInjected = false;
|
|
43
|
+
const hasToolsForConversation = toolInjectionMode === 'conversation' &&
|
|
44
|
+
request.tools &&
|
|
45
|
+
request.tools.length > 0;
|
|
46
|
+
const toolsText = hasToolsForConversation ? formatToolsForInjection(request.tools) : '';
|
|
38
47
|
// Build system prompt
|
|
39
48
|
let systemText = request.system ?? '';
|
|
40
49
|
// Inject tool definitions into system prompt if mode is 'system'
|
|
@@ -126,6 +135,13 @@ export function transformToPrefill(request, options = {}) {
|
|
|
126
135
|
}
|
|
127
136
|
passedCacheMarker = true;
|
|
128
137
|
}
|
|
138
|
+
// Inject tools BEFORE this message if we've reached the injection point
|
|
139
|
+
// For short conversations (toolInjectionIndex <= 0), inject at the very beginning (i === 0)
|
|
140
|
+
const shouldInjectHere = toolInjectionIndex > 0 ? i >= toolInjectionIndex : i === 0;
|
|
141
|
+
if (hasToolsForConversation && !toolsInjected && shouldInjectHere) {
|
|
142
|
+
currentConversation.push(toolsText);
|
|
143
|
+
toolsInjected = true;
|
|
144
|
+
}
|
|
129
145
|
// Check bot continuation logic
|
|
130
146
|
const isBotMessage = message.participant === assistantName;
|
|
131
147
|
const isContinuation = isBotMessage && lastNonEmptyParticipant === assistantName && !hasToolResult;
|
|
@@ -134,13 +150,8 @@ export function transformToPrefill(request, options = {}) {
|
|
|
134
150
|
continue;
|
|
135
151
|
}
|
|
136
152
|
else if (isLastMessage && isEmpty) {
|
|
137
|
-
// Completion target -
|
|
138
|
-
|
|
139
|
-
currentConversation.push(`${message.participant}: <thinking>`);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
currentConversation.push(`${message.participant}:`);
|
|
143
|
-
}
|
|
153
|
+
// Completion target - turn prefix will be added AFTER tool injection
|
|
154
|
+
// (handled below, not here)
|
|
144
155
|
}
|
|
145
156
|
else if (text) {
|
|
146
157
|
// Regular message - append delimiter if configured
|
|
@@ -150,45 +161,33 @@ export function transformToPrefill(request, options = {}) {
|
|
|
150
161
|
}
|
|
151
162
|
}
|
|
152
163
|
}
|
|
153
|
-
//
|
|
164
|
+
// Determine the turn prefix to use (added AFTER tool injection)
|
|
165
|
+
let turnPrefix;
|
|
166
|
+
if (prefillThinking) {
|
|
167
|
+
turnPrefix = `${assistantName}: <thinking>`;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
turnPrefix = `${assistantName}:`;
|
|
171
|
+
}
|
|
172
|
+
// Flush any remaining conversation
|
|
173
|
+
// If tools haven't been injected yet (short conversation), add them now
|
|
174
|
+
if (hasToolsForConversation && !toolsInjected) {
|
|
175
|
+
currentConversation.push(toolsText);
|
|
176
|
+
toolsInjected = true;
|
|
177
|
+
}
|
|
178
|
+
// Add turn prefix at the very end (after tools and all messages)
|
|
154
179
|
if (currentConversation.length > 0) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const combined = [
|
|
167
|
-
...beforeTools,
|
|
168
|
-
toolsText,
|
|
169
|
-
...afterTools,
|
|
170
|
-
].join(joiner);
|
|
171
|
-
providerMessages.push({
|
|
172
|
-
role: 'assistant',
|
|
173
|
-
content: combined,
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
// Short conversation: inject tools at the end (right before completion point)
|
|
178
|
-
const combined = [...currentConversation, toolsText].join(joiner);
|
|
179
|
-
providerMessages.push({
|
|
180
|
-
role: 'assistant',
|
|
181
|
-
content: combined,
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
// No tool injection needed
|
|
187
|
-
providerMessages.push({
|
|
188
|
-
role: 'assistant',
|
|
189
|
-
content: currentConversation.join(joiner),
|
|
190
|
-
});
|
|
191
|
-
}
|
|
180
|
+
providerMessages.push({
|
|
181
|
+
role: 'assistant',
|
|
182
|
+
content: [...currentConversation, turnPrefix].join(joiner),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Empty conversation, just turn prefix
|
|
187
|
+
providerMessages.push({
|
|
188
|
+
role: 'assistant',
|
|
189
|
+
content: turnPrefix,
|
|
190
|
+
});
|
|
192
191
|
}
|
|
193
192
|
// Build stop sequences from participants
|
|
194
193
|
const stopSequences = buildStopSequences(messages, assistantName, maxParticipantsForStop, additionalStopSequences);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefill.js","sourceRoot":"","sources":["../../src/transforms/prefill.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prefill.js","sourceRoot":"","sources":["../../src/transforms/prefill.ts"],"names":[],"mappings":"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"}
|
package/dist/types/request.d.ts
CHANGED
|
@@ -102,6 +102,14 @@ export interface NormalizedRequest {
|
|
|
102
102
|
* Default: 'Claude'
|
|
103
103
|
*/
|
|
104
104
|
assistantParticipant?: string;
|
|
105
|
+
/**
|
|
106
|
+
* Control streaming behavior when calling membrane.stream().
|
|
107
|
+
* - true or undefined: use streaming (default)
|
|
108
|
+
* - false: force non-streaming — membrane.stream() will internally use
|
|
109
|
+
* complete() and synthesize streaming callbacks from the full response.
|
|
110
|
+
* Useful for working around provider streaming bugs.
|
|
111
|
+
*/
|
|
112
|
+
streaming?: boolean;
|
|
105
113
|
/** Provider-specific parameters (pass-through) */
|
|
106
114
|
providerParams?: Record<string, unknown>;
|
|
107
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/types/request.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IAEd,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,qCAAqC;IACrC,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,uCAAuC;IACvC,eAAe,CAAC,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;QACjC,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;QACtD,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;KAC1C,CAAC;CACH;AAMD,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,YAAY,GACZ,oBAAoB,CAAC;AAEzB,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAEhC,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAMD,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAMD,MAAM,MAAM,QAAQ,GAChB,KAAK,GACL,QAAQ,GACR,MAAM,CAAC;AAMX,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAE9B,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IAEzB,uBAAuB;IACvB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IAEzB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,kCAAkC;IAClC,aAAa,CAAC,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAAC;IAE9C;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C"}
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/types/request.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@animalabs/membrane",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.42",
|
|
4
4
|
"description": "LLM middleware - a selective boundary that transforms what passes through",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
+
"bun": "./src/index.ts",
|
|
10
11
|
"types": "./dist/index.d.ts",
|
|
11
12
|
"import": "./dist/index.js"
|
|
12
13
|
}
|
package/src/membrane.ts
CHANGED
|
@@ -152,9 +152,9 @@ export class Membrane {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
// Wait before retry
|
|
155
|
+
// Wait before retry (abort-aware)
|
|
156
156
|
const delay = this.calculateRetryDelay(attempts);
|
|
157
|
-
await this.sleep(delay);
|
|
157
|
+
await this.sleep(delay, options.signal);
|
|
158
158
|
continue;
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -185,6 +185,26 @@ export class Membrane {
|
|
|
185
185
|
request: NormalizedRequest,
|
|
186
186
|
options: StreamOptions = {}
|
|
187
187
|
): Promise<NormalizedResponse | AbortedResponse> {
|
|
188
|
+
// If streaming is explicitly disabled on the request, fall back to complete()
|
|
189
|
+
// and synthesize the streaming callbacks from the full response
|
|
190
|
+
if (request.streaming === false) {
|
|
191
|
+
const response = await this.complete(request, options);
|
|
192
|
+
// Synthesize onChunk callbacks so callers that depend on them still work
|
|
193
|
+
if (options.onChunk && 'content' in response) {
|
|
194
|
+
for (let i = 0; i < response.content.length; i++) {
|
|
195
|
+
const block = response.content[i]!;
|
|
196
|
+
if (block.type === 'text' && block.text) {
|
|
197
|
+
options.onChunk(block.text, {
|
|
198
|
+
type: 'text',
|
|
199
|
+
visible: true,
|
|
200
|
+
blockIndex: i,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return response;
|
|
206
|
+
}
|
|
207
|
+
|
|
188
208
|
// Determine tool mode
|
|
189
209
|
const toolMode = this.resolveToolMode(request);
|
|
190
210
|
|
|
@@ -255,6 +275,7 @@ export class Membrane {
|
|
|
255
275
|
let totalUsage: DetailedUsage = { inputTokens: 0, outputTokens: 0 };
|
|
256
276
|
const contentBlocks: ContentBlock[] = [];
|
|
257
277
|
let lastStopReason: StopReason = 'end_turn';
|
|
278
|
+
let lastStopSequence: string | undefined;
|
|
258
279
|
let rawRequest: unknown;
|
|
259
280
|
let rawResponse: unknown;
|
|
260
281
|
|
|
@@ -393,6 +414,7 @@ export class Membrane {
|
|
|
393
414
|
onResponse?.(rawResponse);
|
|
394
415
|
|
|
395
416
|
lastStopReason = this.mapStopReason(streamResult.stopReason);
|
|
417
|
+
lastStopSequence = streamResult.stopSequence ?? undefined;
|
|
396
418
|
|
|
397
419
|
// Accumulate usage (including cache metrics)
|
|
398
420
|
totalUsage.inputTokens += streamResult.usage.inputTokens;
|
|
@@ -662,7 +684,8 @@ export class Membrane {
|
|
|
662
684
|
rawResponse,
|
|
663
685
|
executedToolCalls,
|
|
664
686
|
executedToolResults,
|
|
665
|
-
initialBlockType
|
|
687
|
+
initialBlockType,
|
|
688
|
+
lastStopSequence
|
|
666
689
|
);
|
|
667
690
|
|
|
668
691
|
// Append non-text content blocks (e.g., generated_image) that the XML parser can't handle
|
|
@@ -715,6 +738,7 @@ export class Membrane {
|
|
|
715
738
|
let toolDepth = 0;
|
|
716
739
|
let totalUsage: DetailedUsage = { inputTokens: 0, outputTokens: 0 };
|
|
717
740
|
let lastStopReason: StopReason = 'end_turn';
|
|
741
|
+
let lastStopSequence: string | undefined;
|
|
718
742
|
let rawRequest: unknown;
|
|
719
743
|
let rawResponse: unknown;
|
|
720
744
|
|
|
@@ -772,6 +796,7 @@ export class Membrane {
|
|
|
772
796
|
onResponse?.(rawResponse);
|
|
773
797
|
|
|
774
798
|
lastStopReason = this.mapStopReason(streamResult.stopReason);
|
|
799
|
+
lastStopSequence = streamResult.stopSequence ?? undefined;
|
|
775
800
|
|
|
776
801
|
// Accumulate usage (including cache metrics)
|
|
777
802
|
totalUsage.inputTokens += streamResult.usage.inputTokens;
|
|
@@ -881,6 +906,7 @@ export class Membrane {
|
|
|
881
906
|
details: {
|
|
882
907
|
stop: {
|
|
883
908
|
reason: lastStopReason,
|
|
909
|
+
triggeredSequence: lastStopSequence,
|
|
884
910
|
wasTruncated: lastStopReason === 'max_tokens',
|
|
885
911
|
},
|
|
886
912
|
usage: { ...totalUsage },
|
|
@@ -1061,6 +1087,24 @@ export class Membrane {
|
|
|
1061
1087
|
// Internal Methods
|
|
1062
1088
|
// ==========================================================================
|
|
1063
1089
|
|
|
1090
|
+
/**
|
|
1091
|
+
* Extract base provider params from config, with thinking temperature enforcement.
|
|
1092
|
+
* Used by transformRequest, buildContinuationRequest, and buildContinuationRequestWithImages.
|
|
1093
|
+
*/
|
|
1094
|
+
private getBaseProviderParams(config: NormalizedRequest['config']) {
|
|
1095
|
+
// Anthropic requires temperature=1 when extended thinking is enabled
|
|
1096
|
+
const temperature = config.thinking?.enabled ? 1 : config.temperature;
|
|
1097
|
+
return {
|
|
1098
|
+
model: config.model,
|
|
1099
|
+
maxTokens: config.maxTokens,
|
|
1100
|
+
temperature,
|
|
1101
|
+
topP: config.topP,
|
|
1102
|
+
topK: config.topK,
|
|
1103
|
+
presencePenalty: config.presencePenalty,
|
|
1104
|
+
frequencyPenalty: config.frequencyPenalty,
|
|
1105
|
+
};
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1064
1108
|
/**
|
|
1065
1109
|
* Transform a normalized request into provider format using the formatter
|
|
1066
1110
|
*/
|
|
@@ -1097,13 +1141,7 @@ export class Membrane {
|
|
|
1097
1141
|
});
|
|
1098
1142
|
|
|
1099
1143
|
const providerRequest = {
|
|
1100
|
-
|
|
1101
|
-
maxTokens: request.config.maxTokens,
|
|
1102
|
-
temperature: request.config.temperature,
|
|
1103
|
-
topP: request.config.topP,
|
|
1104
|
-
topK: request.config.topK,
|
|
1105
|
-
presencePenalty: request.config.presencePenalty,
|
|
1106
|
-
frequencyPenalty: request.config.frequencyPenalty,
|
|
1144
|
+
...this.getBaseProviderParams(request.config),
|
|
1107
1145
|
messages: buildResult.messages,
|
|
1108
1146
|
system: buildResult.systemContent,
|
|
1109
1147
|
stopSequences: buildResult.stopSequences,
|
|
@@ -1152,9 +1190,7 @@ export class Membrane {
|
|
|
1152
1190
|
}
|
|
1153
1191
|
|
|
1154
1192
|
return {
|
|
1155
|
-
|
|
1156
|
-
maxTokens: originalRequest.config.maxTokens,
|
|
1157
|
-
temperature: originalRequest.config.temperature,
|
|
1193
|
+
...this.getBaseProviderParams(originalRequest.config),
|
|
1158
1194
|
messages,
|
|
1159
1195
|
system: prefillResult.systemContent
|
|
1160
1196
|
? (Array.isArray(prefillResult.systemContent) && prefillResult.systemContent.length > 0
|
|
@@ -1162,7 +1198,11 @@ export class Membrane {
|
|
|
1162
1198
|
: prefillResult.systemContent)
|
|
1163
1199
|
: undefined,
|
|
1164
1200
|
stopSequences: prefillResult.stopSequences,
|
|
1165
|
-
extra:
|
|
1201
|
+
extra: {
|
|
1202
|
+
...originalRequest.providerParams,
|
|
1203
|
+
// Pre-serialized prompt for completions adapters — skip re-serialization
|
|
1204
|
+
prompt: trimmedAccumulated,
|
|
1205
|
+
},
|
|
1166
1206
|
};
|
|
1167
1207
|
}
|
|
1168
1208
|
|
|
@@ -1193,42 +1233,34 @@ export class Membrane {
|
|
|
1193
1233
|
// Anthropic quirk: assistant content cannot end with trailing whitespace
|
|
1194
1234
|
const trimmedAccumulated = accumulated.trimEnd();
|
|
1195
1235
|
|
|
1196
|
-
// Build messages: copy
|
|
1197
|
-
const messages: any[] =
|
|
1236
|
+
// Build messages: copy all, then replace only the last assistant with split-turn
|
|
1237
|
+
const messages: any[] = prefillResult.messages.map(msg => ({ ...msg }));
|
|
1198
1238
|
|
|
1199
|
-
//
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1239
|
+
// Find last assistant — replace in-place via splice to preserve history
|
|
1240
|
+
let insertIdx = messages.length;
|
|
1241
|
+
for (let idx = messages.length - 1; idx >= 0; idx--) {
|
|
1242
|
+
if (messages[idx].role === 'assistant') {
|
|
1243
|
+
insertIdx = idx;
|
|
1244
|
+
break;
|
|
1204
1245
|
}
|
|
1205
|
-
messages.push({ ...msg });
|
|
1206
1246
|
}
|
|
1207
1247
|
|
|
1208
|
-
// Add assistant message with accumulated content (ends mid-XML)
|
|
1209
|
-
messages.push({
|
|
1210
|
-
role: 'assistant',
|
|
1211
|
-
content: trimmedAccumulated,
|
|
1212
|
-
});
|
|
1213
|
-
|
|
1214
|
-
// Add user message with just the images
|
|
1215
|
-
messages.push({
|
|
1216
|
-
role: 'user',
|
|
1217
|
-
content: images,
|
|
1218
|
-
});
|
|
1219
|
-
|
|
1220
|
-
// Add assistant prefill with closing XML tags
|
|
1221
1248
|
// Anthropic quirk: assistant content cannot end with trailing whitespace
|
|
1222
1249
|
const trimmedAfterXml = afterImageXml.trimEnd();
|
|
1223
|
-
|
|
1224
|
-
role: 'assistant',
|
|
1225
|
-
content:
|
|
1226
|
-
|
|
1250
|
+
const splitTurnMessages = [
|
|
1251
|
+
{ role: 'assistant', content: trimmedAccumulated },
|
|
1252
|
+
{ role: 'user', content: images },
|
|
1253
|
+
{ role: 'assistant', content: trimmedAfterXml },
|
|
1254
|
+
];
|
|
1255
|
+
|
|
1256
|
+
if (insertIdx < messages.length) {
|
|
1257
|
+
messages.splice(insertIdx, 1, ...splitTurnMessages);
|
|
1258
|
+
} else {
|
|
1259
|
+
messages.push(...splitTurnMessages);
|
|
1260
|
+
}
|
|
1227
1261
|
|
|
1228
1262
|
return {
|
|
1229
|
-
|
|
1230
|
-
maxTokens: originalRequest.config.maxTokens,
|
|
1231
|
-
temperature: originalRequest.config.temperature,
|
|
1263
|
+
...this.getBaseProviderParams(originalRequest.config),
|
|
1232
1264
|
messages,
|
|
1233
1265
|
system: prefillResult.systemContent
|
|
1234
1266
|
? (Array.isArray(prefillResult.systemContent) && prefillResult.systemContent.length > 0
|
|
@@ -1384,7 +1416,8 @@ export class Membrane {
|
|
|
1384
1416
|
rawResponse: unknown,
|
|
1385
1417
|
executedToolCalls: ToolCall[] = [],
|
|
1386
1418
|
executedToolResults: ToolResult[] = [],
|
|
1387
|
-
startInsideBlock: 'thinking' | 'tool_call' | 'tool_result' | null = null
|
|
1419
|
+
startInsideBlock: 'thinking' | 'tool_call' | 'tool_result' | null = null,
|
|
1420
|
+
triggeredSequence?: string
|
|
1388
1421
|
): NormalizedResponse {
|
|
1389
1422
|
// Parse accumulated text into structured content blocks
|
|
1390
1423
|
// This extracts thinking, tool_use, tool_result, and text blocks
|
|
@@ -1420,6 +1453,7 @@ export class Membrane {
|
|
|
1420
1453
|
details: {
|
|
1421
1454
|
stop: {
|
|
1422
1455
|
reason: stopReason,
|
|
1456
|
+
triggeredSequence,
|
|
1423
1457
|
wasTruncated: stopReason === 'max_tokens',
|
|
1424
1458
|
},
|
|
1425
1459
|
usage: {
|
|
@@ -1482,8 +1516,18 @@ export class Membrane {
|
|
|
1482
1516
|
return new MembraneError(errorInfo);
|
|
1483
1517
|
}
|
|
1484
1518
|
|
|
1485
|
-
private sleep(ms: number): Promise<void> {
|
|
1486
|
-
return new Promise((resolve) =>
|
|
1519
|
+
private sleep(ms: number, signal?: AbortSignal): Promise<void> {
|
|
1520
|
+
return new Promise((resolve, reject) => {
|
|
1521
|
+
if (signal?.aborted) {
|
|
1522
|
+
reject(signal.reason ?? new DOMException('The operation was aborted.', 'AbortError'));
|
|
1523
|
+
return;
|
|
1524
|
+
}
|
|
1525
|
+
const timer = setTimeout(resolve, ms);
|
|
1526
|
+
signal?.addEventListener('abort', () => {
|
|
1527
|
+
clearTimeout(timer);
|
|
1528
|
+
reject(signal.reason ?? new DOMException('The operation was aborted.', 'AbortError'));
|
|
1529
|
+
}, { once: true });
|
|
1530
|
+
});
|
|
1487
1531
|
}
|
|
1488
1532
|
|
|
1489
1533
|
/**
|
|
@@ -1598,6 +1642,7 @@ export class Membrane {
|
|
|
1598
1642
|
let totalUsage: BasicUsage = { inputTokens: 0, outputTokens: 0 };
|
|
1599
1643
|
const contentBlocks: ContentBlock[] = [];
|
|
1600
1644
|
let lastStopReason: StopReason = 'end_turn';
|
|
1645
|
+
let lastStopSequence: string | undefined;
|
|
1601
1646
|
let rawRequest: unknown;
|
|
1602
1647
|
let rawResponse: unknown;
|
|
1603
1648
|
|
|
@@ -1721,6 +1766,7 @@ export class Membrane {
|
|
|
1721
1766
|
|
|
1722
1767
|
rawResponse = streamResult.raw;
|
|
1723
1768
|
lastStopReason = this.mapStopReason(streamResult.stopReason);
|
|
1769
|
+
lastStopSequence = streamResult.stopSequence ?? undefined;
|
|
1724
1770
|
|
|
1725
1771
|
// Accumulate usage
|
|
1726
1772
|
totalUsage.inputTokens += streamResult.usage.inputTokens;
|
|
@@ -1990,7 +2036,8 @@ export class Membrane {
|
|
|
1990
2036
|
rawResponse,
|
|
1991
2037
|
executedToolCalls,
|
|
1992
2038
|
executedToolResults,
|
|
1993
|
-
initialBlockType
|
|
2039
|
+
initialBlockType,
|
|
2040
|
+
lastStopSequence
|
|
1994
2041
|
);
|
|
1995
2042
|
|
|
1996
2043
|
stream.emit({ type: 'complete', response });
|
|
@@ -2030,6 +2077,7 @@ export class Membrane {
|
|
|
2030
2077
|
let toolDepth = 0;
|
|
2031
2078
|
let totalUsage: BasicUsage = { inputTokens: 0, outputTokens: 0 };
|
|
2032
2079
|
let lastStopReason: StopReason = 'end_turn';
|
|
2080
|
+
let lastStopSequence: string | undefined;
|
|
2033
2081
|
let rawRequest: unknown;
|
|
2034
2082
|
let rawResponse: unknown;
|
|
2035
2083
|
|
|
@@ -2091,6 +2139,7 @@ export class Membrane {
|
|
|
2091
2139
|
|
|
2092
2140
|
rawResponse = streamResult.raw;
|
|
2093
2141
|
lastStopReason = this.mapStopReason(streamResult.stopReason);
|
|
2142
|
+
lastStopSequence = streamResult.stopSequence ?? undefined;
|
|
2094
2143
|
|
|
2095
2144
|
// Accumulate usage
|
|
2096
2145
|
totalUsage.inputTokens += streamResult.usage.inputTokens;
|
|
@@ -2188,6 +2237,7 @@ export class Membrane {
|
|
|
2188
2237
|
details: {
|
|
2189
2238
|
stop: {
|
|
2190
2239
|
reason: lastStopReason,
|
|
2240
|
+
triggeredSequence: lastStopSequence,
|
|
2191
2241
|
wasTruncated: lastStopReason === 'max_tokens',
|
|
2192
2242
|
},
|
|
2193
2243
|
usage: { ...totalUsage },
|