@animalabs/membrane 0.5.46 → 0.5.50

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 (139) hide show
  1. package/dist/membrane.d.ts.map +1 -1
  2. package/dist/membrane.js +104 -11
  3. package/dist/membrane.js.map +1 -1
  4. package/dist/providers/anthropic.d.ts.map +1 -1
  5. package/dist/providers/anthropic.js +11 -1
  6. package/dist/providers/anthropic.js.map +1 -1
  7. package/dist/providers/bedrock.d.ts.map +1 -1
  8. package/dist/providers/bedrock.js +23 -4
  9. package/dist/providers/bedrock.js.map +1 -1
  10. package/dist/types/yielding-stream.d.ts +10 -1
  11. package/dist/types/yielding-stream.d.ts.map +1 -1
  12. package/dist/types/yielding-stream.js.map +1 -1
  13. package/package.json +5 -1
  14. package/src/membrane.ts +127 -13
  15. package/src/providers/anthropic.ts +12 -0
  16. package/src/providers/bedrock.ts +21 -4
  17. package/src/types/yielding-stream.ts +10 -1
  18. package/dist/context/index.d.ts +0 -12
  19. package/dist/context/index.js +0 -11
  20. package/dist/context/index.js.map +0 -1
  21. package/dist/context/process.d.ts +0 -43
  22. package/dist/context/process.js +0 -381
  23. package/dist/context/process.js.map +0 -1
  24. package/dist/context/types.d.ts +0 -164
  25. package/dist/context/types.js +0 -61
  26. package/dist/context/types.js.map +0 -1
  27. package/dist/formatters/anthropic-xml.d.ts +0 -63
  28. package/dist/formatters/anthropic-xml.js +0 -417
  29. package/dist/formatters/anthropic-xml.js.map +0 -1
  30. package/dist/formatters/completions.d.ts +0 -68
  31. package/dist/formatters/completions.js +0 -261
  32. package/dist/formatters/completions.js.map +0 -1
  33. package/dist/formatters/index.d.ts +0 -8
  34. package/dist/formatters/index.js +0 -7
  35. package/dist/formatters/index.js.map +0 -1
  36. package/dist/formatters/native.d.ts +0 -35
  37. package/dist/formatters/native.js +0 -336
  38. package/dist/formatters/native.js.map +0 -1
  39. package/dist/formatters/types.d.ts +0 -167
  40. package/dist/formatters/types.js +0 -7
  41. package/dist/formatters/types.js.map +0 -1
  42. package/dist/index.d.ts +0 -13
  43. package/dist/index.js +0 -20
  44. package/dist/index.js.map +0 -1
  45. package/dist/membrane.d.ts +0 -146
  46. package/dist/providers/anthropic.d.ts +0 -36
  47. package/dist/providers/bedrock.d.ts +0 -43
  48. package/dist/providers/gemini.d.ts +0 -68
  49. package/dist/providers/gemini.js +0 -538
  50. package/dist/providers/gemini.js.map +0 -1
  51. package/dist/providers/index.d.ts +0 -13
  52. package/dist/providers/index.js +0 -13
  53. package/dist/providers/index.js.map +0 -1
  54. package/dist/providers/mock.d.ts +0 -90
  55. package/dist/providers/mock.d.ts.map +0 -1
  56. package/dist/providers/mock.js +0 -210
  57. package/dist/providers/mock.js.map +0 -1
  58. package/dist/providers/openai-compatible.d.ts +0 -82
  59. package/dist/providers/openai-compatible.js +0 -480
  60. package/dist/providers/openai-compatible.js.map +0 -1
  61. package/dist/providers/openai-completions.d.ts +0 -89
  62. package/dist/providers/openai-completions.js +0 -347
  63. package/dist/providers/openai-completions.js.map +0 -1
  64. package/dist/providers/openai-responses.d.ts +0 -77
  65. package/dist/providers/openai-responses.js +0 -333
  66. package/dist/providers/openai-responses.js.map +0 -1
  67. package/dist/providers/openai.d.ts +0 -77
  68. package/dist/providers/openai.js +0 -533
  69. package/dist/providers/openai.js.map +0 -1
  70. package/dist/providers/openrouter.d.ts +0 -82
  71. package/dist/providers/openrouter.js +0 -556
  72. package/dist/providers/openrouter.js.map +0 -1
  73. package/dist/providers/utils.d.ts +0 -44
  74. package/dist/providers/utils.d.ts.map +0 -1
  75. package/dist/providers/utils.js +0 -100
  76. package/dist/providers/utils.js.map +0 -1
  77. package/dist/registry/default-pricing.d.ts +0 -3
  78. package/dist/registry/default-pricing.d.ts.map +0 -1
  79. package/dist/registry/default-pricing.js +0 -75
  80. package/dist/registry/default-pricing.js.map +0 -1
  81. package/dist/transforms/chat.d.ts +0 -52
  82. package/dist/transforms/chat.js +0 -136
  83. package/dist/transforms/chat.js.map +0 -1
  84. package/dist/transforms/index.d.ts +0 -5
  85. package/dist/transforms/index.js +0 -7
  86. package/dist/transforms/index.js.map +0 -1
  87. package/dist/types/config.d.ts +0 -110
  88. package/dist/types/config.js +0 -21
  89. package/dist/types/config.js.map +0 -1
  90. package/dist/types/content.d.ts +0 -87
  91. package/dist/types/content.d.ts.map +0 -1
  92. package/dist/types/content.js +0 -40
  93. package/dist/types/content.js.map +0 -1
  94. package/dist/types/errors.d.ts +0 -50
  95. package/dist/types/errors.d.ts.map +0 -1
  96. package/dist/types/errors.js +0 -253
  97. package/dist/types/errors.js.map +0 -1
  98. package/dist/types/index.d.ts +0 -20
  99. package/dist/types/index.js +0 -10
  100. package/dist/types/index.js.map +0 -1
  101. package/dist/types/message.d.ts +0 -52
  102. package/dist/types/message.d.ts.map +0 -1
  103. package/dist/types/message.js +0 -38
  104. package/dist/types/message.js.map +0 -1
  105. package/dist/types/provider.d.ts +0 -169
  106. package/dist/types/provider.d.ts.map +0 -1
  107. package/dist/types/provider.js +0 -5
  108. package/dist/types/provider.js.map +0 -1
  109. package/dist/types/request.d.ts +0 -116
  110. package/dist/types/request.d.ts.map +0 -1
  111. package/dist/types/request.js +0 -5
  112. package/dist/types/request.js.map +0 -1
  113. package/dist/types/response.d.ts +0 -131
  114. package/dist/types/response.d.ts.map +0 -1
  115. package/dist/types/response.js +0 -7
  116. package/dist/types/response.js.map +0 -1
  117. package/dist/types/streaming.d.ts +0 -194
  118. package/dist/types/streaming.js +0 -5
  119. package/dist/types/streaming.js.map +0 -1
  120. package/dist/types/tools.d.ts +0 -71
  121. package/dist/types/tools.d.ts.map +0 -1
  122. package/dist/types/tools.js +0 -5
  123. package/dist/types/tools.js.map +0 -1
  124. package/dist/utils/cost.d.ts +0 -10
  125. package/dist/utils/cost.d.ts.map +0 -1
  126. package/dist/utils/cost.js +0 -19
  127. package/dist/utils/cost.js.map +0 -1
  128. package/dist/utils/index.d.ts +0 -7
  129. package/dist/utils/index.js +0 -6
  130. package/dist/utils/index.js.map +0 -1
  131. package/dist/utils/stream-parser.d.ts +0 -84
  132. package/dist/utils/stream-parser.js +0 -418
  133. package/dist/utils/stream-parser.js.map +0 -1
  134. package/dist/utils/tool-parser.d.ts +0 -134
  135. package/dist/utils/tool-parser.js +0 -600
  136. package/dist/utils/tool-parser.js.map +0 -1
  137. package/dist/yielding-stream.d.ts +0 -60
  138. package/dist/yielding-stream.js +0 -206
  139. package/dist/yielding-stream.js.map +0 -1
@@ -1,60 +0,0 @@
1
- /**
2
- * YieldingStream implementation
3
- *
4
- * Provides an async iterator interface for streaming inference that yields
5
- * control back to the caller for tool execution.
6
- */
7
- import type { StreamEvent, YieldingStream, YieldingStreamOptions, ToolCallsEvent } from './types/yielding-stream.js';
8
- import type { ToolResult } from './types/tools.js';
9
- /**
10
- * Implementation of the YieldingStream interface.
11
- *
12
- * This class manages:
13
- * - An event queue for yielding events to the consumer
14
- * - A promise-based handshake for tool results
15
- * - Cancellation via AbortController
16
- * - State tracking for debugging and validation
17
- */
18
- export declare class YieldingStreamImpl implements YieldingStream {
19
- private readonly options;
20
- private readonly runInference;
21
- private state;
22
- private eventQueue;
23
- private pendingToolResults;
24
- private abortController;
25
- private _toolDepth;
26
- private eventWaiter;
27
- private producerDone;
28
- constructor(options: YieldingStreamOptions, runInference: (stream: YieldingStreamImpl) => Promise<void>);
29
- get isWaitingForTools(): boolean;
30
- get pendingToolCallIds(): string[];
31
- get toolDepth(): number;
32
- /**
33
- * Get the abort signal for use in internal operations.
34
- */
35
- get signal(): AbortSignal;
36
- provideToolResults(results: ToolResult[]): void;
37
- cancel(): void;
38
- [Symbol.asyncIterator](): AsyncIterator<StreamEvent>;
39
- /**
40
- * Push an event to be yielded to the consumer.
41
- */
42
- emit(event: StreamEvent): void;
43
- /**
44
- * Request tool execution and wait for results.
45
- * Called by the inference loop when tool calls are detected.
46
- */
47
- requestToolExecution(event: ToolCallsEvent): Promise<ToolResult[]>;
48
- /**
49
- * Mark the producer as done (inference loop finished).
50
- */
51
- markDone(): void;
52
- /**
53
- * Check if the stream has been cancelled.
54
- */
55
- get isCancelled(): boolean;
56
- private startInference;
57
- private waitForEvent;
58
- private notifyEventWaiter;
59
- }
60
- //# sourceMappingURL=yielding-stream.d.ts.map
@@ -1,206 +0,0 @@
1
- /**
2
- * YieldingStream implementation
3
- *
4
- * Provides an async iterator interface for streaming inference that yields
5
- * control back to the caller for tool execution.
6
- */
7
- // ============================================================================
8
- // YieldingStreamImpl
9
- // ============================================================================
10
- /**
11
- * Implementation of the YieldingStream interface.
12
- *
13
- * This class manages:
14
- * - An event queue for yielding events to the consumer
15
- * - A promise-based handshake for tool results
16
- * - Cancellation via AbortController
17
- * - State tracking for debugging and validation
18
- */
19
- export class YieldingStreamImpl {
20
- options;
21
- runInference;
22
- state = { status: 'idle' };
23
- eventQueue = [];
24
- pendingToolResults = null;
25
- abortController;
26
- _toolDepth = 0;
27
- // Promise/resolver for the async iterator to wait on new events
28
- eventWaiter = null;
29
- // Flag indicating the stream producer is done
30
- producerDone = false;
31
- constructor(options, runInference) {
32
- this.options = options;
33
- this.runInference = runInference;
34
- this.abortController = new AbortController();
35
- // Link external signal if provided
36
- if (options.signal) {
37
- options.signal.addEventListener('abort', () => {
38
- this.cancel();
39
- });
40
- }
41
- }
42
- // ============================================================================
43
- // Public Interface
44
- // ============================================================================
45
- get isWaitingForTools() {
46
- return this.state.status === 'waiting_for_tools';
47
- }
48
- get pendingToolCallIds() {
49
- if (this.state.status === 'waiting_for_tools') {
50
- return this.state.pendingCallIds;
51
- }
52
- return [];
53
- }
54
- get toolDepth() {
55
- return this._toolDepth;
56
- }
57
- /**
58
- * Get the abort signal for use in internal operations.
59
- */
60
- get signal() {
61
- return this.abortController.signal;
62
- }
63
- provideToolResults(results) {
64
- if (this.state.status !== 'waiting_for_tools') {
65
- throw new Error(`Cannot provide tool results: stream is not waiting for tools (status: ${this.state.status})`);
66
- }
67
- if (!this.pendingToolResults) {
68
- throw new Error('Internal error: no pending tool results promise');
69
- }
70
- // Validate that results match pending call IDs
71
- const pendingIds = new Set(this.state.pendingCallIds);
72
- const providedIds = new Set(results.map((r) => r.toolUseId));
73
- for (const id of pendingIds) {
74
- if (!providedIds.has(id)) {
75
- throw new Error(`Missing tool result for call ID: ${id}`);
76
- }
77
- }
78
- // Resolve the promise and transition state
79
- this.pendingToolResults.resolve(results);
80
- this.pendingToolResults = null;
81
- this.state = { status: 'streaming' };
82
- this._toolDepth++;
83
- }
84
- cancel() {
85
- if (this.state.status === 'done' || this.state.status === 'error') {
86
- return; // Already terminated
87
- }
88
- this.abortController.abort();
89
- // If waiting for tools, reject the pending promise
90
- if (this.pendingToolResults) {
91
- this.pendingToolResults.reject(new Error('Stream cancelled'));
92
- this.pendingToolResults = null;
93
- }
94
- // Emit aborted event and wake the iterator so it can deliver it
95
- this.emit({ type: 'aborted', reason: 'user' });
96
- this.producerDone = true;
97
- this.state = { status: 'done' };
98
- }
99
- // ============================================================================
100
- // Async Iterator Implementation
101
- // ============================================================================
102
- [Symbol.asyncIterator]() {
103
- // Start the inference loop when iteration begins
104
- this.startInference();
105
- return {
106
- next: async () => {
107
- while (true) {
108
- // Check for queued events
109
- const event = this.eventQueue.shift();
110
- if (event) {
111
- // Check if this is a terminal event
112
- if (event.type === 'complete' ||
113
- event.type === 'error' ||
114
- event.type === 'aborted') {
115
- this.state = { status: 'done' };
116
- }
117
- return { value: event, done: false };
118
- }
119
- // If producer is done and queue is empty, we're done
120
- if (this.producerDone) {
121
- return { value: undefined, done: true };
122
- }
123
- // Wait for more events
124
- await this.waitForEvent();
125
- }
126
- },
127
- };
128
- }
129
- // ============================================================================
130
- // Internal Methods (called by the inference loop)
131
- // ============================================================================
132
- /**
133
- * Push an event to be yielded to the consumer.
134
- */
135
- emit(event) {
136
- this.eventQueue.push(event);
137
- this.notifyEventWaiter();
138
- }
139
- /**
140
- * Request tool execution and wait for results.
141
- * Called by the inference loop when tool calls are detected.
142
- */
143
- async requestToolExecution(event) {
144
- // Emit the tool calls event
145
- this.emit(event);
146
- // Transition to waiting state
147
- this.state = {
148
- status: 'waiting_for_tools',
149
- pendingCallIds: event.calls.map((c) => c.id),
150
- };
151
- // Create a promise that will be resolved by provideToolResults()
152
- return new Promise((resolve, reject) => {
153
- this.pendingToolResults = { resolve, reject };
154
- });
155
- }
156
- /**
157
- * Mark the producer as done (inference loop finished).
158
- */
159
- markDone() {
160
- this.producerDone = true;
161
- this.notifyEventWaiter();
162
- }
163
- /**
164
- * Check if the stream has been cancelled.
165
- */
166
- get isCancelled() {
167
- return this.abortController.signal.aborted;
168
- }
169
- // ============================================================================
170
- // Private Helpers
171
- // ============================================================================
172
- startInference() {
173
- if (this.state.status !== 'idle') {
174
- return; // Already started
175
- }
176
- this.state = { status: 'streaming' };
177
- // Run the inference loop in the background
178
- this.runInference(this)
179
- .then(() => {
180
- this.markDone();
181
- })
182
- .catch((error) => {
183
- if (!this.isCancelled) {
184
- this.emit({ type: 'error', error });
185
- }
186
- this.markDone();
187
- });
188
- }
189
- waitForEvent() {
190
- if (!this.eventWaiter) {
191
- let resolve;
192
- const promise = new Promise((r) => {
193
- resolve = r;
194
- });
195
- this.eventWaiter = { resolve: resolve, promise };
196
- }
197
- return this.eventWaiter.promise;
198
- }
199
- notifyEventWaiter() {
200
- if (this.eventWaiter) {
201
- this.eventWaiter.resolve();
202
- this.eventWaiter = null;
203
- }
204
- }
205
- }
206
- //# sourceMappingURL=yielding-stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"yielding-stream.js","sourceRoot":"","sources":["../src/yielding-stream.ts"],"names":[],"mappings":"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"}