@omnicross/core 0.1.0
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/LICENSE +21 -0
- package/NOTICE +57 -0
- package/README.md +15 -0
- package/dist/ApiKeyPoolService-BmMkau07.d.cts +170 -0
- package/dist/ApiKeyPoolService-BmMkau07.d.ts +170 -0
- package/dist/ProviderProxy-f_8ziIhW.d.cts +120 -0
- package/dist/ProviderProxy-vjt8sQQk.d.ts +120 -0
- package/dist/SubscriptionAuthSource-Cr4fVEYY.d.cts +264 -0
- package/dist/SubscriptionAuthSource-D89zmiSS.d.ts +264 -0
- package/dist/auth/GeminiCodeAssistProjectResolver.cjs +218 -0
- package/dist/auth/GeminiCodeAssistProjectResolver.d.cts +68 -0
- package/dist/auth/GeminiCodeAssistProjectResolver.d.ts +68 -0
- package/dist/auth/GeminiCodeAssistProjectResolver.js +189 -0
- package/dist/completion/ApiKeyPoolService.cjs +331 -0
- package/dist/completion/ApiKeyPoolService.d.cts +2 -0
- package/dist/completion/ApiKeyPoolService.d.ts +2 -0
- package/dist/completion/ApiKeyPoolService.js +306 -0
- package/dist/completion.cjs +4027 -0
- package/dist/completion.d.cts +17 -0
- package/dist/completion.d.ts +17 -0
- package/dist/completion.js +3983 -0
- package/dist/index-BTSmc9Sm.d.ts +645 -0
- package/dist/index-DXazdTzZ.d.cts +645 -0
- package/dist/index.cjs +10428 -0
- package/dist/index.d.cts +128 -0
- package/dist/index.d.ts +128 -0
- package/dist/index.js +10339 -0
- package/dist/outbound-api/subscriptionRegistryPort.cjs +38 -0
- package/dist/outbound-api/subscriptionRegistryPort.d.cts +73 -0
- package/dist/outbound-api/subscriptionRegistryPort.d.ts +73 -0
- package/dist/outbound-api/subscriptionRegistryPort.js +12 -0
- package/dist/outbound-api.cjs +5264 -0
- package/dist/outbound-api.d.cts +320 -0
- package/dist/outbound-api.d.ts +320 -0
- package/dist/outbound-api.js +5218 -0
- package/dist/pipeline/SubscriptionAuthSource.cjs +131 -0
- package/dist/pipeline/SubscriptionAuthSource.d.cts +3 -0
- package/dist/pipeline/SubscriptionAuthSource.d.ts +3 -0
- package/dist/pipeline/SubscriptionAuthSource.js +103 -0
- package/dist/pipeline/SubscriptionAuthStrategy.cjs +18 -0
- package/dist/pipeline/SubscriptionAuthStrategy.d.cts +61 -0
- package/dist/pipeline/SubscriptionAuthStrategy.d.ts +61 -0
- package/dist/pipeline/SubscriptionAuthStrategy.js +0 -0
- package/dist/ports/gemini-code-assist-resolver.cjs +38 -0
- package/dist/ports/gemini-code-assist-resolver.d.cts +26 -0
- package/dist/ports/gemini-code-assist-resolver.d.ts +26 -0
- package/dist/ports/gemini-code-assist-resolver.js +12 -0
- package/dist/ports.cjs +18 -0
- package/dist/ports.d.cts +15 -0
- package/dist/ports.d.ts +15 -0
- package/dist/ports.js +0 -0
- package/dist/provider-proxy/ingress/providerProxyShared.cjs +2958 -0
- package/dist/provider-proxy/ingress/providerProxyShared.d.cts +77 -0
- package/dist/provider-proxy/ingress/providerProxyShared.d.ts +77 -0
- package/dist/provider-proxy/ingress/providerProxyShared.js +2925 -0
- package/dist/provider-proxy/matchText.cjs +73 -0
- package/dist/provider-proxy/matchText.d.cts +47 -0
- package/dist/provider-proxy/matchText.d.ts +47 -0
- package/dist/provider-proxy/matchText.js +45 -0
- package/dist/provider-proxy/types.cjs +18 -0
- package/dist/provider-proxy/types.d.cts +12 -0
- package/dist/provider-proxy/types.d.ts +12 -0
- package/dist/provider-proxy/types.js +0 -0
- package/dist/provider-proxy.cjs +4667 -0
- package/dist/provider-proxy.d.cts +69 -0
- package/dist/provider-proxy.d.ts +69 -0
- package/dist/provider-proxy.js +4636 -0
- package/dist/serializeError.cjs +82 -0
- package/dist/serializeError.d.cts +24 -0
- package/dist/serializeError.d.ts +24 -0
- package/dist/serializeError.js +57 -0
- package/dist/sse-parser.cjs +456 -0
- package/dist/sse-parser.d.cts +143 -0
- package/dist/sse-parser.d.ts +143 -0
- package/dist/sse-parser.js +430 -0
- package/dist/transformer/TransformerChainExecutor.cjs +321 -0
- package/dist/transformer/TransformerChainExecutor.d.cts +104 -0
- package/dist/transformer/TransformerChainExecutor.d.ts +104 -0
- package/dist/transformer/TransformerChainExecutor.js +294 -0
- package/dist/transformer/TransformerService.cjs +290 -0
- package/dist/transformer/TransformerService.d.cts +138 -0
- package/dist/transformer/TransformerService.d.ts +138 -0
- package/dist/transformer/TransformerService.js +265 -0
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.cjs +1115 -0
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.d.cts +102 -0
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.d.ts +102 -0
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.js +1085 -0
- package/dist/transformer/transformers/GeminiTransformer.cjs +1013 -0
- package/dist/transformer/transformers/GeminiTransformer.d.cts +70 -0
- package/dist/transformer/transformers/GeminiTransformer.d.ts +70 -0
- package/dist/transformer/transformers/GeminiTransformer.js +986 -0
- package/dist/transformer/transformers/OpenAIResponseTransformer.cjs +538 -0
- package/dist/transformer/transformers/OpenAIResponseTransformer.d.cts +53 -0
- package/dist/transformer/transformers/OpenAIResponseTransformer.d.ts +53 -0
- package/dist/transformer/transformers/OpenAIResponseTransformer.js +513 -0
- package/dist/transformer/transformers/OpenCodeGoTransformer.cjs +73 -0
- package/dist/transformer/transformers/OpenCodeGoTransformer.d.cts +51 -0
- package/dist/transformer/transformers/OpenCodeGoTransformer.d.ts +51 -0
- package/dist/transformer/transformers/OpenCodeGoTransformer.js +48 -0
- package/dist/transformer/types.cjs +18 -0
- package/dist/transformer/types.d.cts +405 -0
- package/dist/transformer/types.d.ts +405 -0
- package/dist/transformer/types.js +0 -0
- package/dist/transformer.cjs +3736 -0
- package/dist/transformer.d.cts +33 -0
- package/dist/transformer.d.ts +33 -0
- package/dist/transformer.js +3712 -0
- package/dist/types-CGGrKqC_.d.cts +142 -0
- package/dist/types-CbCN2NQP.d.ts +142 -0
- package/dist/types-DCzHkhJt.d.ts +467 -0
- package/dist/types-DZIQbgp0.d.cts +467 -0
- package/dist/usage-event-sink-BX7FE1NL.d.cts +59 -0
- package/dist/usage-event-sink-BX7FE1NL.d.ts +59 -0
- package/package.json +62 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { MessageBlock } from '@omnicross/contracts/message-blocks';
|
|
2
|
+
import { SimpleChatAudio, SimpleChatVideo } from '@omnicross/contracts/completion-types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* SSE Parser Utility
|
|
6
|
+
*
|
|
7
|
+
* Reusable Server-Sent Events parser for streaming API responses.
|
|
8
|
+
* Supports OpenAI and Anthropic SSE formats with proper buffer handling.
|
|
9
|
+
*
|
|
10
|
+
* @module sse-parser
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* SSE event data after parsing
|
|
15
|
+
*/
|
|
16
|
+
interface SSEEvent {
|
|
17
|
+
/** Raw event type (e.g., 'message', 'content_block_delta') */
|
|
18
|
+
type?: string;
|
|
19
|
+
/** Parsed JSON data */
|
|
20
|
+
data: unknown;
|
|
21
|
+
/** Raw data string */
|
|
22
|
+
raw: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Callbacks for SSE stream processing
|
|
26
|
+
*/
|
|
27
|
+
interface SSEParserCallbacks {
|
|
28
|
+
/** Called when text content delta is received */
|
|
29
|
+
onDelta?: (content: string) => void;
|
|
30
|
+
/** Called when reasoning/thinking content is received */
|
|
31
|
+
onReasoning?: (reasoning: string) => void;
|
|
32
|
+
/** Called when usage statistics are received */
|
|
33
|
+
onUsage?: (usage: {
|
|
34
|
+
promptTokens: number;
|
|
35
|
+
completionTokens: number;
|
|
36
|
+
totalTokens: number;
|
|
37
|
+
}) => void;
|
|
38
|
+
/** Called when stream ends normally */
|
|
39
|
+
onDone?: () => void;
|
|
40
|
+
/** Called when an error occurs */
|
|
41
|
+
onError?: (error: string) => void;
|
|
42
|
+
/** Called for each raw SSE event (for debugging) */
|
|
43
|
+
onRawEvent?: (event: SSEEvent) => void;
|
|
44
|
+
/** Called when a structured content block is detected (e.g., Anthropic server_tool_use) */
|
|
45
|
+
onBlock?: (block: MessageBlock) => void;
|
|
46
|
+
/** Called when audio content is received (e.g., OpenAI TTS) */
|
|
47
|
+
onAudio?: (audio: SimpleChatAudio) => void;
|
|
48
|
+
/** Called when video content is received */
|
|
49
|
+
onVideo?: (video: SimpleChatVideo) => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* SSE parser format
|
|
53
|
+
*/
|
|
54
|
+
type SSEFormat = 'openai' | 'anthropic' | 'gemini' | 'openai-response';
|
|
55
|
+
/**
|
|
56
|
+
* Create a reusable SSE parser for streaming API responses.
|
|
57
|
+
*
|
|
58
|
+
* Usage:
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const parser = createSSEParser('openai', {
|
|
61
|
+
* onDelta: (content) => console.log('Content:', content),
|
|
62
|
+
* onDone: () => console.log('Stream complete')
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* // Feed chunks as they arrive
|
|
66
|
+
* for await (const chunk of reader) {
|
|
67
|
+
* parser.push(chunk);
|
|
68
|
+
* }
|
|
69
|
+
*
|
|
70
|
+
* // Get accumulated results
|
|
71
|
+
* const { content, reasoning, usage } = parser.getResult();
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @param format - SSE format ('openai' or 'anthropic')
|
|
75
|
+
* @param callbacks - Event callbacks
|
|
76
|
+
* @returns Parser instance with push(), flush(), and getResult() methods
|
|
77
|
+
*/
|
|
78
|
+
declare function createSSEParser(format: SSEFormat, callbacks: SSEParserCallbacks): {
|
|
79
|
+
/**
|
|
80
|
+
* Push a chunk of data to the parser
|
|
81
|
+
* @param chunk - Raw SSE chunk from response stream
|
|
82
|
+
*/
|
|
83
|
+
push(chunk: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* Flush any remaining data in the buffer
|
|
86
|
+
*/
|
|
87
|
+
flush(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Get accumulated results
|
|
90
|
+
*/
|
|
91
|
+
getResult(): {
|
|
92
|
+
content: string;
|
|
93
|
+
reasoning: string;
|
|
94
|
+
usage?: {
|
|
95
|
+
promptTokens: number;
|
|
96
|
+
completionTokens: number;
|
|
97
|
+
totalTokens: number;
|
|
98
|
+
} | undefined;
|
|
99
|
+
metrics?: {
|
|
100
|
+
completionTokens: number;
|
|
101
|
+
timeCompletionMs: number;
|
|
102
|
+
timeFirstTokenMs?: number;
|
|
103
|
+
};
|
|
104
|
+
blocks: MessageBlock[];
|
|
105
|
+
audios: SimpleChatAudio[];
|
|
106
|
+
videos: SimpleChatVideo[];
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Check if stream is complete
|
|
110
|
+
*/
|
|
111
|
+
isDone(): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Reset parser state for reuse
|
|
114
|
+
*/
|
|
115
|
+
reset(): void;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Helper function to stream and parse SSE response
|
|
119
|
+
*
|
|
120
|
+
* @param response - Fetch response with SSE body
|
|
121
|
+
* @param format - SSE format
|
|
122
|
+
* @param callbacks - Event callbacks
|
|
123
|
+
* @returns Promise that resolves when stream is complete
|
|
124
|
+
*/
|
|
125
|
+
declare function streamSSEResponse(response: Response, format: SSEFormat, callbacks: SSEParserCallbacks): Promise<{
|
|
126
|
+
content: string;
|
|
127
|
+
reasoning: string;
|
|
128
|
+
usage?: {
|
|
129
|
+
promptTokens: number;
|
|
130
|
+
completionTokens: number;
|
|
131
|
+
totalTokens: number;
|
|
132
|
+
};
|
|
133
|
+
metrics?: {
|
|
134
|
+
completionTokens: number;
|
|
135
|
+
timeCompletionMs: number;
|
|
136
|
+
timeFirstTokenMs?: number;
|
|
137
|
+
};
|
|
138
|
+
blocks: MessageBlock[];
|
|
139
|
+
audios: SimpleChatAudio[];
|
|
140
|
+
videos: SimpleChatVideo[];
|
|
141
|
+
}>;
|
|
142
|
+
|
|
143
|
+
export { type SSEEvent, type SSEFormat, type SSEParserCallbacks, createSSEParser, streamSSEResponse };
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { MessageBlock } from '@omnicross/contracts/message-blocks';
|
|
2
|
+
import { SimpleChatAudio, SimpleChatVideo } from '@omnicross/contracts/completion-types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* SSE Parser Utility
|
|
6
|
+
*
|
|
7
|
+
* Reusable Server-Sent Events parser for streaming API responses.
|
|
8
|
+
* Supports OpenAI and Anthropic SSE formats with proper buffer handling.
|
|
9
|
+
*
|
|
10
|
+
* @module sse-parser
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* SSE event data after parsing
|
|
15
|
+
*/
|
|
16
|
+
interface SSEEvent {
|
|
17
|
+
/** Raw event type (e.g., 'message', 'content_block_delta') */
|
|
18
|
+
type?: string;
|
|
19
|
+
/** Parsed JSON data */
|
|
20
|
+
data: unknown;
|
|
21
|
+
/** Raw data string */
|
|
22
|
+
raw: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Callbacks for SSE stream processing
|
|
26
|
+
*/
|
|
27
|
+
interface SSEParserCallbacks {
|
|
28
|
+
/** Called when text content delta is received */
|
|
29
|
+
onDelta?: (content: string) => void;
|
|
30
|
+
/** Called when reasoning/thinking content is received */
|
|
31
|
+
onReasoning?: (reasoning: string) => void;
|
|
32
|
+
/** Called when usage statistics are received */
|
|
33
|
+
onUsage?: (usage: {
|
|
34
|
+
promptTokens: number;
|
|
35
|
+
completionTokens: number;
|
|
36
|
+
totalTokens: number;
|
|
37
|
+
}) => void;
|
|
38
|
+
/** Called when stream ends normally */
|
|
39
|
+
onDone?: () => void;
|
|
40
|
+
/** Called when an error occurs */
|
|
41
|
+
onError?: (error: string) => void;
|
|
42
|
+
/** Called for each raw SSE event (for debugging) */
|
|
43
|
+
onRawEvent?: (event: SSEEvent) => void;
|
|
44
|
+
/** Called when a structured content block is detected (e.g., Anthropic server_tool_use) */
|
|
45
|
+
onBlock?: (block: MessageBlock) => void;
|
|
46
|
+
/** Called when audio content is received (e.g., OpenAI TTS) */
|
|
47
|
+
onAudio?: (audio: SimpleChatAudio) => void;
|
|
48
|
+
/** Called when video content is received */
|
|
49
|
+
onVideo?: (video: SimpleChatVideo) => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* SSE parser format
|
|
53
|
+
*/
|
|
54
|
+
type SSEFormat = 'openai' | 'anthropic' | 'gemini' | 'openai-response';
|
|
55
|
+
/**
|
|
56
|
+
* Create a reusable SSE parser for streaming API responses.
|
|
57
|
+
*
|
|
58
|
+
* Usage:
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const parser = createSSEParser('openai', {
|
|
61
|
+
* onDelta: (content) => console.log('Content:', content),
|
|
62
|
+
* onDone: () => console.log('Stream complete')
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* // Feed chunks as they arrive
|
|
66
|
+
* for await (const chunk of reader) {
|
|
67
|
+
* parser.push(chunk);
|
|
68
|
+
* }
|
|
69
|
+
*
|
|
70
|
+
* // Get accumulated results
|
|
71
|
+
* const { content, reasoning, usage } = parser.getResult();
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @param format - SSE format ('openai' or 'anthropic')
|
|
75
|
+
* @param callbacks - Event callbacks
|
|
76
|
+
* @returns Parser instance with push(), flush(), and getResult() methods
|
|
77
|
+
*/
|
|
78
|
+
declare function createSSEParser(format: SSEFormat, callbacks: SSEParserCallbacks): {
|
|
79
|
+
/**
|
|
80
|
+
* Push a chunk of data to the parser
|
|
81
|
+
* @param chunk - Raw SSE chunk from response stream
|
|
82
|
+
*/
|
|
83
|
+
push(chunk: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* Flush any remaining data in the buffer
|
|
86
|
+
*/
|
|
87
|
+
flush(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Get accumulated results
|
|
90
|
+
*/
|
|
91
|
+
getResult(): {
|
|
92
|
+
content: string;
|
|
93
|
+
reasoning: string;
|
|
94
|
+
usage?: {
|
|
95
|
+
promptTokens: number;
|
|
96
|
+
completionTokens: number;
|
|
97
|
+
totalTokens: number;
|
|
98
|
+
} | undefined;
|
|
99
|
+
metrics?: {
|
|
100
|
+
completionTokens: number;
|
|
101
|
+
timeCompletionMs: number;
|
|
102
|
+
timeFirstTokenMs?: number;
|
|
103
|
+
};
|
|
104
|
+
blocks: MessageBlock[];
|
|
105
|
+
audios: SimpleChatAudio[];
|
|
106
|
+
videos: SimpleChatVideo[];
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Check if stream is complete
|
|
110
|
+
*/
|
|
111
|
+
isDone(): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Reset parser state for reuse
|
|
114
|
+
*/
|
|
115
|
+
reset(): void;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Helper function to stream and parse SSE response
|
|
119
|
+
*
|
|
120
|
+
* @param response - Fetch response with SSE body
|
|
121
|
+
* @param format - SSE format
|
|
122
|
+
* @param callbacks - Event callbacks
|
|
123
|
+
* @returns Promise that resolves when stream is complete
|
|
124
|
+
*/
|
|
125
|
+
declare function streamSSEResponse(response: Response, format: SSEFormat, callbacks: SSEParserCallbacks): Promise<{
|
|
126
|
+
content: string;
|
|
127
|
+
reasoning: string;
|
|
128
|
+
usage?: {
|
|
129
|
+
promptTokens: number;
|
|
130
|
+
completionTokens: number;
|
|
131
|
+
totalTokens: number;
|
|
132
|
+
};
|
|
133
|
+
metrics?: {
|
|
134
|
+
completionTokens: number;
|
|
135
|
+
timeCompletionMs: number;
|
|
136
|
+
timeFirstTokenMs?: number;
|
|
137
|
+
};
|
|
138
|
+
blocks: MessageBlock[];
|
|
139
|
+
audios: SimpleChatAudio[];
|
|
140
|
+
videos: SimpleChatVideo[];
|
|
141
|
+
}>;
|
|
142
|
+
|
|
143
|
+
export { type SSEEvent, type SSEFormat, type SSEParserCallbacks, createSSEParser, streamSSEResponse };
|