@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.
- package/dist/membrane.d.ts.map +1 -1
- package/dist/membrane.js +104 -11
- package/dist/membrane.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +11 -1
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/bedrock.d.ts.map +1 -1
- package/dist/providers/bedrock.js +23 -4
- package/dist/providers/bedrock.js.map +1 -1
- package/dist/types/yielding-stream.d.ts +10 -1
- package/dist/types/yielding-stream.d.ts.map +1 -1
- package/dist/types/yielding-stream.js.map +1 -1
- package/package.json +5 -1
- package/src/membrane.ts +127 -13
- package/src/providers/anthropic.ts +12 -0
- package/src/providers/bedrock.ts +21 -4
- package/src/types/yielding-stream.ts +10 -1
- package/dist/context/index.d.ts +0 -12
- package/dist/context/index.js +0 -11
- package/dist/context/index.js.map +0 -1
- package/dist/context/process.d.ts +0 -43
- package/dist/context/process.js +0 -381
- package/dist/context/process.js.map +0 -1
- package/dist/context/types.d.ts +0 -164
- package/dist/context/types.js +0 -61
- package/dist/context/types.js.map +0 -1
- package/dist/formatters/anthropic-xml.d.ts +0 -63
- package/dist/formatters/anthropic-xml.js +0 -417
- package/dist/formatters/anthropic-xml.js.map +0 -1
- package/dist/formatters/completions.d.ts +0 -68
- package/dist/formatters/completions.js +0 -261
- package/dist/formatters/completions.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -8
- package/dist/formatters/index.js +0 -7
- package/dist/formatters/index.js.map +0 -1
- package/dist/formatters/native.d.ts +0 -35
- package/dist/formatters/native.js +0 -336
- package/dist/formatters/native.js.map +0 -1
- package/dist/formatters/types.d.ts +0 -167
- package/dist/formatters/types.js +0 -7
- package/dist/formatters/types.js.map +0 -1
- package/dist/index.d.ts +0 -13
- package/dist/index.js +0 -20
- package/dist/index.js.map +0 -1
- package/dist/membrane.d.ts +0 -146
- package/dist/providers/anthropic.d.ts +0 -36
- package/dist/providers/bedrock.d.ts +0 -43
- package/dist/providers/gemini.d.ts +0 -68
- package/dist/providers/gemini.js +0 -538
- package/dist/providers/gemini.js.map +0 -1
- package/dist/providers/index.d.ts +0 -13
- package/dist/providers/index.js +0 -13
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/mock.d.ts +0 -90
- package/dist/providers/mock.d.ts.map +0 -1
- package/dist/providers/mock.js +0 -210
- package/dist/providers/mock.js.map +0 -1
- package/dist/providers/openai-compatible.d.ts +0 -82
- package/dist/providers/openai-compatible.js +0 -480
- package/dist/providers/openai-compatible.js.map +0 -1
- package/dist/providers/openai-completions.d.ts +0 -89
- package/dist/providers/openai-completions.js +0 -347
- package/dist/providers/openai-completions.js.map +0 -1
- package/dist/providers/openai-responses.d.ts +0 -77
- package/dist/providers/openai-responses.js +0 -333
- package/dist/providers/openai-responses.js.map +0 -1
- package/dist/providers/openai.d.ts +0 -77
- package/dist/providers/openai.js +0 -533
- package/dist/providers/openai.js.map +0 -1
- package/dist/providers/openrouter.d.ts +0 -82
- package/dist/providers/openrouter.js +0 -556
- package/dist/providers/openrouter.js.map +0 -1
- package/dist/providers/utils.d.ts +0 -44
- package/dist/providers/utils.d.ts.map +0 -1
- package/dist/providers/utils.js +0 -100
- package/dist/providers/utils.js.map +0 -1
- package/dist/registry/default-pricing.d.ts +0 -3
- package/dist/registry/default-pricing.d.ts.map +0 -1
- package/dist/registry/default-pricing.js +0 -75
- package/dist/registry/default-pricing.js.map +0 -1
- package/dist/transforms/chat.d.ts +0 -52
- package/dist/transforms/chat.js +0 -136
- package/dist/transforms/chat.js.map +0 -1
- package/dist/transforms/index.d.ts +0 -5
- package/dist/transforms/index.js +0 -7
- package/dist/transforms/index.js.map +0 -1
- package/dist/types/config.d.ts +0 -110
- package/dist/types/config.js +0 -21
- package/dist/types/config.js.map +0 -1
- package/dist/types/content.d.ts +0 -87
- package/dist/types/content.d.ts.map +0 -1
- package/dist/types/content.js +0 -40
- package/dist/types/content.js.map +0 -1
- package/dist/types/errors.d.ts +0 -50
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/errors.js +0 -253
- package/dist/types/errors.js.map +0 -1
- package/dist/types/index.d.ts +0 -20
- package/dist/types/index.js +0 -10
- package/dist/types/index.js.map +0 -1
- package/dist/types/message.d.ts +0 -52
- package/dist/types/message.d.ts.map +0 -1
- package/dist/types/message.js +0 -38
- package/dist/types/message.js.map +0 -1
- package/dist/types/provider.d.ts +0 -169
- package/dist/types/provider.d.ts.map +0 -1
- package/dist/types/provider.js +0 -5
- package/dist/types/provider.js.map +0 -1
- package/dist/types/request.d.ts +0 -116
- package/dist/types/request.d.ts.map +0 -1
- package/dist/types/request.js +0 -5
- package/dist/types/request.js.map +0 -1
- package/dist/types/response.d.ts +0 -131
- package/dist/types/response.d.ts.map +0 -1
- package/dist/types/response.js +0 -7
- package/dist/types/response.js.map +0 -1
- package/dist/types/streaming.d.ts +0 -194
- package/dist/types/streaming.js +0 -5
- package/dist/types/streaming.js.map +0 -1
- package/dist/types/tools.d.ts +0 -71
- package/dist/types/tools.d.ts.map +0 -1
- package/dist/types/tools.js +0 -5
- package/dist/types/tools.js.map +0 -1
- package/dist/utils/cost.d.ts +0 -10
- package/dist/utils/cost.d.ts.map +0 -1
- package/dist/utils/cost.js +0 -19
- package/dist/utils/cost.js.map +0 -1
- package/dist/utils/index.d.ts +0 -7
- package/dist/utils/index.js +0 -6
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/stream-parser.d.ts +0 -84
- package/dist/utils/stream-parser.js +0 -418
- package/dist/utils/stream-parser.js.map +0 -1
- package/dist/utils/tool-parser.d.ts +0 -134
- package/dist/utils/tool-parser.js +0 -600
- package/dist/utils/tool-parser.js.map +0 -1
- package/dist/yielding-stream.d.ts +0 -60
- package/dist/yielding-stream.js +0 -206
- package/dist/yielding-stream.js.map +0 -1
package/dist/providers/mock.d.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mock Provider Adapter for testing
|
|
3
|
-
*
|
|
4
|
-
* Returns canned responses without calling any real LLM API.
|
|
5
|
-
* Useful for testing the framework without API costs.
|
|
6
|
-
*/
|
|
7
|
-
import type { ProviderAdapter, ProviderRequest, ProviderRequestOptions, ProviderResponse, StreamCallbacks } from '../types/provider.js';
|
|
8
|
-
export interface MockAdapterConfig {
|
|
9
|
-
/** Default response text when no specific response is configured */
|
|
10
|
-
defaultResponse?: string;
|
|
11
|
-
/** Simulated delay in ms for complete() calls */
|
|
12
|
-
completeDelayMs?: number;
|
|
13
|
-
/** Simulated delay in ms between stream chunks */
|
|
14
|
-
streamChunkDelayMs?: number;
|
|
15
|
-
/** Size of chunks when streaming (characters) */
|
|
16
|
-
streamChunkSize?: number;
|
|
17
|
-
/** If true, echo back the last user message */
|
|
18
|
-
echoMode?: boolean;
|
|
19
|
-
/** Queue of responses to return (FIFO, then falls back to default) */
|
|
20
|
-
responseQueue?: string[];
|
|
21
|
-
/** Function to generate response based on request */
|
|
22
|
-
responseGenerator?: (request: ProviderRequest) => string;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Mock adapter for testing without real LLM calls.
|
|
26
|
-
*/
|
|
27
|
-
export declare class MockAdapter implements ProviderAdapter {
|
|
28
|
-
readonly name = "mock";
|
|
29
|
-
private config;
|
|
30
|
-
private responseQueue;
|
|
31
|
-
private requestLog;
|
|
32
|
-
constructor(config?: MockAdapterConfig);
|
|
33
|
-
supportsModel(_modelId: string): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Add a response to the queue.
|
|
36
|
-
*/
|
|
37
|
-
queueResponse(response: string): void;
|
|
38
|
-
/**
|
|
39
|
-
* Add multiple responses to the queue.
|
|
40
|
-
*/
|
|
41
|
-
queueResponses(responses: string[]): void;
|
|
42
|
-
/**
|
|
43
|
-
* Clear the response queue.
|
|
44
|
-
*/
|
|
45
|
-
clearQueue(): void;
|
|
46
|
-
/**
|
|
47
|
-
* Get the request log.
|
|
48
|
-
*/
|
|
49
|
-
getRequestLog(): Array<{
|
|
50
|
-
timestamp: number;
|
|
51
|
-
request: ProviderRequest;
|
|
52
|
-
}>;
|
|
53
|
-
/**
|
|
54
|
-
* Get the last request made.
|
|
55
|
-
*/
|
|
56
|
-
getLastRequest(): ProviderRequest | undefined;
|
|
57
|
-
/**
|
|
58
|
-
* Clear the request log.
|
|
59
|
-
*/
|
|
60
|
-
clearRequestLog(): void;
|
|
61
|
-
/**
|
|
62
|
-
* Reset the adapter (clear queue and request log).
|
|
63
|
-
*/
|
|
64
|
-
reset(): void;
|
|
65
|
-
/**
|
|
66
|
-
* Get the response for a request.
|
|
67
|
-
*/
|
|
68
|
-
private getResponse;
|
|
69
|
-
complete(request: ProviderRequest, options?: ProviderRequestOptions): Promise<ProviderResponse>;
|
|
70
|
-
stream(request: ProviderRequest, callbacks: StreamCallbacks, options?: ProviderRequestOptions): Promise<ProviderResponse>;
|
|
71
|
-
/**
|
|
72
|
-
* Check if the abort signal is set and throw if so.
|
|
73
|
-
*/
|
|
74
|
-
private checkAbort;
|
|
75
|
-
/**
|
|
76
|
-
* Sleep that can be interrupted by an abort signal.
|
|
77
|
-
*/
|
|
78
|
-
private abortableSleep;
|
|
79
|
-
private sleep;
|
|
80
|
-
private estimateTokens;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Create a mock adapter with echo mode enabled.
|
|
84
|
-
*/
|
|
85
|
-
export declare function createEchoAdapter(config?: Omit<MockAdapterConfig, 'echoMode'>): MockAdapter;
|
|
86
|
-
/**
|
|
87
|
-
* Create a mock adapter with specific canned responses.
|
|
88
|
-
*/
|
|
89
|
-
export declare function createCannedAdapter(responses: string[], config?: Omit<MockAdapterConfig, 'responseQueue'>): MockAdapter;
|
|
90
|
-
//# sourceMappingURL=mock.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAC;CAC1D;AAWD;;GAEG;AACH,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,MAAM,CAAwG;IACtH,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,UAAU,CAA8D;gBAEpE,MAAM,GAAE,iBAAsB;IAK1C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAIzC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAIvE;;OAEG;IACH,cAAc,IAAI,eAAe,GAAG,SAAS;IAI7C;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,CAAC,WAAW;IAoCb,QAAQ,CACZ,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,gBAAgB,CAAC;IA2BtB,MAAM,CACV,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,eAAe,EAC1B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,gBAAgB,CAAC;IAuC5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,cAAc;CAIvB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,WAAW,CAE3F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,GAAG,WAAW,CAEvH"}
|
package/dist/providers/mock.js
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mock Provider Adapter for testing
|
|
3
|
-
*
|
|
4
|
-
* Returns canned responses without calling any real LLM API.
|
|
5
|
-
* Useful for testing the framework without API costs.
|
|
6
|
-
*/
|
|
7
|
-
import { abortError } from '../types/errors.js';
|
|
8
|
-
const DEFAULT_CONFIG = {
|
|
9
|
-
defaultResponse: 'This is a mock response from the test adapter.',
|
|
10
|
-
completeDelayMs: 10,
|
|
11
|
-
streamChunkDelayMs: 5,
|
|
12
|
-
streamChunkSize: 10,
|
|
13
|
-
echoMode: false,
|
|
14
|
-
responseQueue: [],
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Mock adapter for testing without real LLM calls.
|
|
18
|
-
*/
|
|
19
|
-
export class MockAdapter {
|
|
20
|
-
name = 'mock';
|
|
21
|
-
config;
|
|
22
|
-
responseQueue;
|
|
23
|
-
requestLog = [];
|
|
24
|
-
constructor(config = {}) {
|
|
25
|
-
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
26
|
-
this.responseQueue = [...(config.responseQueue ?? [])];
|
|
27
|
-
}
|
|
28
|
-
supportsModel(_modelId) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Add a response to the queue.
|
|
33
|
-
*/
|
|
34
|
-
queueResponse(response) {
|
|
35
|
-
this.responseQueue.push(response);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Add multiple responses to the queue.
|
|
39
|
-
*/
|
|
40
|
-
queueResponses(responses) {
|
|
41
|
-
this.responseQueue.push(...responses);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Clear the response queue.
|
|
45
|
-
*/
|
|
46
|
-
clearQueue() {
|
|
47
|
-
this.responseQueue = [];
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get the request log.
|
|
51
|
-
*/
|
|
52
|
-
getRequestLog() {
|
|
53
|
-
return [...this.requestLog];
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get the last request made.
|
|
57
|
-
*/
|
|
58
|
-
getLastRequest() {
|
|
59
|
-
return this.requestLog[this.requestLog.length - 1]?.request;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Clear the request log.
|
|
63
|
-
*/
|
|
64
|
-
clearRequestLog() {
|
|
65
|
-
this.requestLog = [];
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Reset the adapter (clear queue and request log).
|
|
69
|
-
*/
|
|
70
|
-
reset() {
|
|
71
|
-
this.clearQueue();
|
|
72
|
-
this.clearRequestLog();
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Get the response for a request.
|
|
76
|
-
*/
|
|
77
|
-
getResponse(request) {
|
|
78
|
-
// Log the request
|
|
79
|
-
this.requestLog.push({ timestamp: Date.now(), request });
|
|
80
|
-
// Try queued response first
|
|
81
|
-
if (this.responseQueue.length > 0) {
|
|
82
|
-
return this.responseQueue.shift();
|
|
83
|
-
}
|
|
84
|
-
// Try response generator
|
|
85
|
-
if (this.config.responseGenerator) {
|
|
86
|
-
return this.config.responseGenerator(request);
|
|
87
|
-
}
|
|
88
|
-
// Echo mode - reflect back the last user message
|
|
89
|
-
if (this.config.echoMode) {
|
|
90
|
-
const lastMessage = request.messages[request.messages.length - 1];
|
|
91
|
-
if (lastMessage && typeof lastMessage === 'object') {
|
|
92
|
-
const content = lastMessage.content;
|
|
93
|
-
if (typeof content === 'string') {
|
|
94
|
-
return `[Echo] ${content}`;
|
|
95
|
-
}
|
|
96
|
-
if (Array.isArray(content)) {
|
|
97
|
-
const textBlock = content.find((b) => b.type === 'text');
|
|
98
|
-
if (textBlock) {
|
|
99
|
-
return `[Echo] ${textBlock.text}`;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return '[Echo] (no text found in last message)';
|
|
104
|
-
}
|
|
105
|
-
// Default response
|
|
106
|
-
return this.config.defaultResponse;
|
|
107
|
-
}
|
|
108
|
-
async complete(request, options) {
|
|
109
|
-
// Check for abort before starting
|
|
110
|
-
this.checkAbort(options?.signal);
|
|
111
|
-
// Call onRequest callback if provided
|
|
112
|
-
options?.onRequest?.(request);
|
|
113
|
-
// Simulate processing delay
|
|
114
|
-
if (this.config.completeDelayMs > 0) {
|
|
115
|
-
await this.abortableSleep(this.config.completeDelayMs, options?.signal);
|
|
116
|
-
}
|
|
117
|
-
const responseText = this.getResponse(request);
|
|
118
|
-
return {
|
|
119
|
-
content: [{ type: 'text', text: responseText }],
|
|
120
|
-
stopReason: 'end_turn',
|
|
121
|
-
usage: {
|
|
122
|
-
inputTokens: this.estimateTokens(JSON.stringify(request.messages)),
|
|
123
|
-
outputTokens: this.estimateTokens(responseText),
|
|
124
|
-
},
|
|
125
|
-
model: request.model,
|
|
126
|
-
rawRequest: request,
|
|
127
|
-
raw: { mock: true, responseText },
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
async stream(request, callbacks, options) {
|
|
131
|
-
// Check for abort before starting
|
|
132
|
-
this.checkAbort(options?.signal);
|
|
133
|
-
// Call onRequest callback if provided
|
|
134
|
-
options?.onRequest?.(request);
|
|
135
|
-
const responseText = this.getResponse(request);
|
|
136
|
-
let streamedText = '';
|
|
137
|
-
// Stream the response in chunks
|
|
138
|
-
let offset = 0;
|
|
139
|
-
while (offset < responseText.length) {
|
|
140
|
-
// Check for abort before each chunk
|
|
141
|
-
this.checkAbort(options?.signal);
|
|
142
|
-
const chunk = responseText.slice(offset, offset + this.config.streamChunkSize);
|
|
143
|
-
callbacks.onChunk(chunk);
|
|
144
|
-
streamedText += chunk;
|
|
145
|
-
offset += this.config.streamChunkSize;
|
|
146
|
-
if (offset < responseText.length && this.config.streamChunkDelayMs > 0) {
|
|
147
|
-
await this.abortableSleep(this.config.streamChunkDelayMs, options?.signal);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return {
|
|
151
|
-
content: [{ type: 'text', text: responseText }],
|
|
152
|
-
stopReason: 'end_turn',
|
|
153
|
-
usage: {
|
|
154
|
-
inputTokens: this.estimateTokens(JSON.stringify(request.messages)),
|
|
155
|
-
outputTokens: this.estimateTokens(responseText),
|
|
156
|
-
},
|
|
157
|
-
model: request.model,
|
|
158
|
-
rawRequest: request,
|
|
159
|
-
raw: { mock: true, responseText },
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Check if the abort signal is set and throw if so.
|
|
164
|
-
*/
|
|
165
|
-
checkAbort(signal) {
|
|
166
|
-
if (signal?.aborted) {
|
|
167
|
-
throw abortError('Request aborted');
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Sleep that can be interrupted by an abort signal.
|
|
172
|
-
*/
|
|
173
|
-
abortableSleep(ms, signal) {
|
|
174
|
-
return new Promise((resolve, reject) => {
|
|
175
|
-
if (signal?.aborted) {
|
|
176
|
-
reject(abortError('Request aborted'));
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
const onAbort = () => {
|
|
180
|
-
clearTimeout(timeout);
|
|
181
|
-
reject(abortError('Request aborted'));
|
|
182
|
-
};
|
|
183
|
-
const timeout = setTimeout(() => {
|
|
184
|
-
signal?.removeEventListener('abort', onAbort);
|
|
185
|
-
resolve();
|
|
186
|
-
}, ms);
|
|
187
|
-
signal?.addEventListener('abort', onAbort, { once: true });
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
sleep(ms) {
|
|
191
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
192
|
-
}
|
|
193
|
-
estimateTokens(text) {
|
|
194
|
-
// Rough estimate: ~4 characters per token
|
|
195
|
-
return Math.ceil(text.length / 4);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Create a mock adapter with echo mode enabled.
|
|
200
|
-
*/
|
|
201
|
-
export function createEchoAdapter(config) {
|
|
202
|
-
return new MockAdapter({ ...config, echoMode: true });
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Create a mock adapter with specific canned responses.
|
|
206
|
-
*/
|
|
207
|
-
export function createCannedAdapter(responses, config) {
|
|
208
|
-
return new MockAdapter({ ...config, responseQueue: responses });
|
|
209
|
-
}
|
|
210
|
-
//# sourceMappingURL=mock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAI-Compatible provider adapter
|
|
3
|
-
*
|
|
4
|
-
* Generic adapter for any OpenAI-compatible API endpoint:
|
|
5
|
-
* - Ollama (http://localhost:11434/v1)
|
|
6
|
-
* - vLLM
|
|
7
|
-
* - Together AI
|
|
8
|
-
* - Groq
|
|
9
|
-
* - Local inference servers
|
|
10
|
-
* - Any other OpenAI-compatible endpoint
|
|
11
|
-
*
|
|
12
|
-
* Uses the standard OpenAI chat completions format with tool_calls support.
|
|
13
|
-
*/
|
|
14
|
-
import type { ProviderAdapter, ProviderRequest, ProviderRequestOptions, ProviderResponse, StreamCallbacks, ContentBlock } from '../types/index.js';
|
|
15
|
-
interface OpenAIContentPart {
|
|
16
|
-
type: 'text' | 'image_url';
|
|
17
|
-
text?: string;
|
|
18
|
-
image_url?: {
|
|
19
|
-
url: string;
|
|
20
|
-
detail?: string;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
interface OpenAIMessage {
|
|
24
|
-
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
25
|
-
content?: string | OpenAIContentPart[] | null;
|
|
26
|
-
tool_calls?: OpenAIToolCall[];
|
|
27
|
-
tool_call_id?: string;
|
|
28
|
-
}
|
|
29
|
-
interface OpenAIToolCall {
|
|
30
|
-
id: string;
|
|
31
|
-
type: 'function';
|
|
32
|
-
function: {
|
|
33
|
-
name: string;
|
|
34
|
-
arguments: string;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
export interface OpenAICompatibleAdapterConfig {
|
|
38
|
-
/** Base URL for the API (required, e.g., 'http://localhost:11434/v1') */
|
|
39
|
-
baseURL: string;
|
|
40
|
-
/** API key (optional for local servers) */
|
|
41
|
-
apiKey?: string;
|
|
42
|
-
/** Provider name for logging/identification (default: 'openai-compatible') */
|
|
43
|
-
providerName?: string;
|
|
44
|
-
/** Default max tokens */
|
|
45
|
-
defaultMaxTokens?: number;
|
|
46
|
-
/** Additional headers to include with requests */
|
|
47
|
-
extraHeaders?: Record<string, string>;
|
|
48
|
-
}
|
|
49
|
-
export declare class OpenAICompatibleAdapter implements ProviderAdapter {
|
|
50
|
-
readonly name: string;
|
|
51
|
-
private baseURL;
|
|
52
|
-
private apiKey;
|
|
53
|
-
private defaultMaxTokens;
|
|
54
|
-
private extraHeaders;
|
|
55
|
-
constructor(config: OpenAICompatibleAdapterConfig);
|
|
56
|
-
supportsModel(_modelId: string): boolean;
|
|
57
|
-
complete(request: ProviderRequest, options?: ProviderRequestOptions): Promise<ProviderResponse>;
|
|
58
|
-
stream(request: ProviderRequest, callbacks: StreamCallbacks, options?: ProviderRequestOptions): Promise<ProviderResponse>;
|
|
59
|
-
private getHeaders;
|
|
60
|
-
private buildRequest;
|
|
61
|
-
private convertMessages;
|
|
62
|
-
private convertTools;
|
|
63
|
-
private makeRequest;
|
|
64
|
-
private parseResponse;
|
|
65
|
-
private parseStreamedResponse;
|
|
66
|
-
private messageToContent;
|
|
67
|
-
private mapFinishReason;
|
|
68
|
-
private handleError;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Convert normalized content blocks to OpenAI message format
|
|
72
|
-
*/
|
|
73
|
-
export declare function toOpenAIMessages(messages: {
|
|
74
|
-
role: string;
|
|
75
|
-
content: ContentBlock[];
|
|
76
|
-
}[]): OpenAIMessage[];
|
|
77
|
-
/**
|
|
78
|
-
* Convert OpenAI response message to normalized content blocks
|
|
79
|
-
*/
|
|
80
|
-
export declare function fromOpenAIMessage(message: OpenAIMessage): ContentBlock[];
|
|
81
|
-
export {};
|
|
82
|
-
//# sourceMappingURL=openai-compatible.d.ts.map
|