@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.
Files changed (114) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +57 -0
  3. package/README.md +15 -0
  4. package/dist/ApiKeyPoolService-BmMkau07.d.cts +170 -0
  5. package/dist/ApiKeyPoolService-BmMkau07.d.ts +170 -0
  6. package/dist/ProviderProxy-f_8ziIhW.d.cts +120 -0
  7. package/dist/ProviderProxy-vjt8sQQk.d.ts +120 -0
  8. package/dist/SubscriptionAuthSource-Cr4fVEYY.d.cts +264 -0
  9. package/dist/SubscriptionAuthSource-D89zmiSS.d.ts +264 -0
  10. package/dist/auth/GeminiCodeAssistProjectResolver.cjs +218 -0
  11. package/dist/auth/GeminiCodeAssistProjectResolver.d.cts +68 -0
  12. package/dist/auth/GeminiCodeAssistProjectResolver.d.ts +68 -0
  13. package/dist/auth/GeminiCodeAssistProjectResolver.js +189 -0
  14. package/dist/completion/ApiKeyPoolService.cjs +331 -0
  15. package/dist/completion/ApiKeyPoolService.d.cts +2 -0
  16. package/dist/completion/ApiKeyPoolService.d.ts +2 -0
  17. package/dist/completion/ApiKeyPoolService.js +306 -0
  18. package/dist/completion.cjs +4027 -0
  19. package/dist/completion.d.cts +17 -0
  20. package/dist/completion.d.ts +17 -0
  21. package/dist/completion.js +3983 -0
  22. package/dist/index-BTSmc9Sm.d.ts +645 -0
  23. package/dist/index-DXazdTzZ.d.cts +645 -0
  24. package/dist/index.cjs +10428 -0
  25. package/dist/index.d.cts +128 -0
  26. package/dist/index.d.ts +128 -0
  27. package/dist/index.js +10339 -0
  28. package/dist/outbound-api/subscriptionRegistryPort.cjs +38 -0
  29. package/dist/outbound-api/subscriptionRegistryPort.d.cts +73 -0
  30. package/dist/outbound-api/subscriptionRegistryPort.d.ts +73 -0
  31. package/dist/outbound-api/subscriptionRegistryPort.js +12 -0
  32. package/dist/outbound-api.cjs +5264 -0
  33. package/dist/outbound-api.d.cts +320 -0
  34. package/dist/outbound-api.d.ts +320 -0
  35. package/dist/outbound-api.js +5218 -0
  36. package/dist/pipeline/SubscriptionAuthSource.cjs +131 -0
  37. package/dist/pipeline/SubscriptionAuthSource.d.cts +3 -0
  38. package/dist/pipeline/SubscriptionAuthSource.d.ts +3 -0
  39. package/dist/pipeline/SubscriptionAuthSource.js +103 -0
  40. package/dist/pipeline/SubscriptionAuthStrategy.cjs +18 -0
  41. package/dist/pipeline/SubscriptionAuthStrategy.d.cts +61 -0
  42. package/dist/pipeline/SubscriptionAuthStrategy.d.ts +61 -0
  43. package/dist/pipeline/SubscriptionAuthStrategy.js +0 -0
  44. package/dist/ports/gemini-code-assist-resolver.cjs +38 -0
  45. package/dist/ports/gemini-code-assist-resolver.d.cts +26 -0
  46. package/dist/ports/gemini-code-assist-resolver.d.ts +26 -0
  47. package/dist/ports/gemini-code-assist-resolver.js +12 -0
  48. package/dist/ports.cjs +18 -0
  49. package/dist/ports.d.cts +15 -0
  50. package/dist/ports.d.ts +15 -0
  51. package/dist/ports.js +0 -0
  52. package/dist/provider-proxy/ingress/providerProxyShared.cjs +2958 -0
  53. package/dist/provider-proxy/ingress/providerProxyShared.d.cts +77 -0
  54. package/dist/provider-proxy/ingress/providerProxyShared.d.ts +77 -0
  55. package/dist/provider-proxy/ingress/providerProxyShared.js +2925 -0
  56. package/dist/provider-proxy/matchText.cjs +73 -0
  57. package/dist/provider-proxy/matchText.d.cts +47 -0
  58. package/dist/provider-proxy/matchText.d.ts +47 -0
  59. package/dist/provider-proxy/matchText.js +45 -0
  60. package/dist/provider-proxy/types.cjs +18 -0
  61. package/dist/provider-proxy/types.d.cts +12 -0
  62. package/dist/provider-proxy/types.d.ts +12 -0
  63. package/dist/provider-proxy/types.js +0 -0
  64. package/dist/provider-proxy.cjs +4667 -0
  65. package/dist/provider-proxy.d.cts +69 -0
  66. package/dist/provider-proxy.d.ts +69 -0
  67. package/dist/provider-proxy.js +4636 -0
  68. package/dist/serializeError.cjs +82 -0
  69. package/dist/serializeError.d.cts +24 -0
  70. package/dist/serializeError.d.ts +24 -0
  71. package/dist/serializeError.js +57 -0
  72. package/dist/sse-parser.cjs +456 -0
  73. package/dist/sse-parser.d.cts +143 -0
  74. package/dist/sse-parser.d.ts +143 -0
  75. package/dist/sse-parser.js +430 -0
  76. package/dist/transformer/TransformerChainExecutor.cjs +321 -0
  77. package/dist/transformer/TransformerChainExecutor.d.cts +104 -0
  78. package/dist/transformer/TransformerChainExecutor.d.ts +104 -0
  79. package/dist/transformer/TransformerChainExecutor.js +294 -0
  80. package/dist/transformer/TransformerService.cjs +290 -0
  81. package/dist/transformer/TransformerService.d.cts +138 -0
  82. package/dist/transformer/TransformerService.d.ts +138 -0
  83. package/dist/transformer/TransformerService.js +265 -0
  84. package/dist/transformer/transformers/GeminiCodeAssistTransformer.cjs +1115 -0
  85. package/dist/transformer/transformers/GeminiCodeAssistTransformer.d.cts +102 -0
  86. package/dist/transformer/transformers/GeminiCodeAssistTransformer.d.ts +102 -0
  87. package/dist/transformer/transformers/GeminiCodeAssistTransformer.js +1085 -0
  88. package/dist/transformer/transformers/GeminiTransformer.cjs +1013 -0
  89. package/dist/transformer/transformers/GeminiTransformer.d.cts +70 -0
  90. package/dist/transformer/transformers/GeminiTransformer.d.ts +70 -0
  91. package/dist/transformer/transformers/GeminiTransformer.js +986 -0
  92. package/dist/transformer/transformers/OpenAIResponseTransformer.cjs +538 -0
  93. package/dist/transformer/transformers/OpenAIResponseTransformer.d.cts +53 -0
  94. package/dist/transformer/transformers/OpenAIResponseTransformer.d.ts +53 -0
  95. package/dist/transformer/transformers/OpenAIResponseTransformer.js +513 -0
  96. package/dist/transformer/transformers/OpenCodeGoTransformer.cjs +73 -0
  97. package/dist/transformer/transformers/OpenCodeGoTransformer.d.cts +51 -0
  98. package/dist/transformer/transformers/OpenCodeGoTransformer.d.ts +51 -0
  99. package/dist/transformer/transformers/OpenCodeGoTransformer.js +48 -0
  100. package/dist/transformer/types.cjs +18 -0
  101. package/dist/transformer/types.d.cts +405 -0
  102. package/dist/transformer/types.d.ts +405 -0
  103. package/dist/transformer/types.js +0 -0
  104. package/dist/transformer.cjs +3736 -0
  105. package/dist/transformer.d.cts +33 -0
  106. package/dist/transformer.d.ts +33 -0
  107. package/dist/transformer.js +3712 -0
  108. package/dist/types-CGGrKqC_.d.cts +142 -0
  109. package/dist/types-CbCN2NQP.d.ts +142 -0
  110. package/dist/types-DCzHkhJt.d.ts +467 -0
  111. package/dist/types-DZIQbgp0.d.cts +467 -0
  112. package/dist/usage-event-sink-BX7FE1NL.d.cts +59 -0
  113. package/dist/usage-event-sink-BX7FE1NL.d.ts +59 -0
  114. 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 };