@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,102 @@
|
|
|
1
|
+
import { Transformer, TransformerLogger, UnifiedChatRequest, LLMProvider, TransformerContext } from '../types.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* GeminiCodeAssistTransformer — Google **Code Assist** envelope for the gemini
|
|
5
|
+
* SUBSCRIPTION path (`cloudcode-pa.googleapis.com`).
|
|
6
|
+
*
|
|
7
|
+
* The gemini-CLI OAuth subscription tokens are minted for Google's internal
|
|
8
|
+
* Code Assist API, NOT the public Gemini API. Code Assist wraps the standard
|
|
9
|
+
* `generateContent` body in a project/session envelope and uses a different
|
|
10
|
+
* URL shape (version segment + colon-method, NO `/models/<model>` path). This
|
|
11
|
+
* transformer does ONLY that envelope work and DELEGATES all inner encoding /
|
|
12
|
+
* parsing to the existing gemini utils (`buildRequestBody`,
|
|
13
|
+
* `transformResponseOut`) so the two stay in lock-step.
|
|
14
|
+
*
|
|
15
|
+
* Envelope spec — verified against gemini-cli
|
|
16
|
+
* `packages/core/src/code_assist/{server,converter,setup,types}.ts`:
|
|
17
|
+
*
|
|
18
|
+
* Request (CAGenerateContentRequest):
|
|
19
|
+
* {
|
|
20
|
+
* model: "gemini-2.5-pro", // TOP-LEVEL (NOT inside `request`)
|
|
21
|
+
* project: <resolved project id>, // TOP-LEVEL, undefined for fresh free-tier
|
|
22
|
+
* user_prompt_id: <per-turn id>, // TOP-LEVEL, snake_case
|
|
23
|
+
* request: { contents, systemInstruction, tools, toolConfig,
|
|
24
|
+
* generationConfig, ... } // standard public-Gemini body
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* URL: `${base}/${version}:${method}` — colon AFTER the version segment, NO
|
|
28
|
+
* `/models/<model>` (model lives in the body). `base` defaults to
|
|
29
|
+
* `https://cloudcode-pa.googleapis.com`, `version` to `v1internal`;
|
|
30
|
+
* both overridable via `CODE_ASSIST_ENDPOINT` / `CODE_ASSIST_API_VERSION`.
|
|
31
|
+
* Stream method `streamGenerateContent?alt=sse`, non-stream
|
|
32
|
+
* `generateContent`.
|
|
33
|
+
*
|
|
34
|
+
* Auth: `Authorization: Bearer <oauth access token>` ONLY (no x-goog-api-key).
|
|
35
|
+
* The actual Bearer is injected downstream by the subscription
|
|
36
|
+
* `OAuthBearerAuthStrategy`; this transformer just clears x-goog-api-key.
|
|
37
|
+
*
|
|
38
|
+
* Response (CaGenerateContentResponse): the standard `GenerateContentResponse`
|
|
39
|
+
* is nested under a top-level `response` key. We PEEL `.response` from the
|
|
40
|
+
* body / each SSE `data:` chunk, then hand the unwrapped stream/JSON to the
|
|
41
|
+
* existing gemini response parser (`transformResponseOut`).
|
|
42
|
+
*
|
|
43
|
+
* @module transformer/transformers/GeminiCodeAssistTransformer
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/** Resolve the Code Assist base URL (env override allowed). */
|
|
47
|
+
declare function resolveCodeAssistEndpoint(): string;
|
|
48
|
+
/** Resolve the Code Assist API version segment (env override allowed). */
|
|
49
|
+
declare function resolveCodeAssistApiVersion(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Build the Code Assist URL: `${base}/${version}:${method}`.
|
|
52
|
+
* NOTE: no `/models/<model>` segment — the model goes in the body.
|
|
53
|
+
*/
|
|
54
|
+
declare function buildCodeAssistUrl(stream: boolean): string;
|
|
55
|
+
/**
|
|
56
|
+
* GeminiCodeAssistTransformer — extends `GeminiTransformer`'s inner encoding by
|
|
57
|
+
* wrapping it in the Code Assist envelope. Registered under
|
|
58
|
+
* `gemini-code-assist` so `getTransformer('gemini-code-assist')` resolves.
|
|
59
|
+
*/
|
|
60
|
+
declare class GeminiCodeAssistTransformer implements Transformer {
|
|
61
|
+
static TransformerName: string;
|
|
62
|
+
name: string;
|
|
63
|
+
logger?: TransformerLogger;
|
|
64
|
+
/** Code Assist has no fixed `/models/:modelAndAction` endpoint pattern — the
|
|
65
|
+
* URL is built per-request in `transformRequestIn`. Left undefined so the
|
|
66
|
+
* TransformerService does NOT treat this as an endpoint (reverse) transformer. */
|
|
67
|
+
endPoint: undefined;
|
|
68
|
+
/**
|
|
69
|
+
* unified → Code Assist envelope.
|
|
70
|
+
*
|
|
71
|
+
* Builds the inner public-Gemini body via the shared `buildRequestBody`, then
|
|
72
|
+
* wraps it as `{ model, project, user_prompt_id, request: <inner> }` and sets
|
|
73
|
+
* the Code Assist URL + Bearer-only headers.
|
|
74
|
+
*
|
|
75
|
+
* The resolved Code Assist `project` is threaded in via `provider.geminiProject`
|
|
76
|
+
* (stashed by the subscription dispatch seam — see SubscriptionDispatcher /
|
|
77
|
+
* openaiResponsesIngress). `undefined` is the valid fresh free-tier value.
|
|
78
|
+
*/
|
|
79
|
+
transformRequestIn(request: UnifiedChatRequest, provider: LLMProvider, _context: TransformerContext): Promise<Record<string, unknown>>;
|
|
80
|
+
/**
|
|
81
|
+
* Code Assist request → unified (endpoint-decode parity with GeminiTransformer).
|
|
82
|
+
* Peels the top-level `request` envelope first, then delegates to the shared
|
|
83
|
+
* gemini request decoder. Not used on the subscription dispatch path (the
|
|
84
|
+
* endpoint transformer there is Anthropic/OpenAI-Response), but provided for
|
|
85
|
+
* completeness so this transformer is a drop-in for the gemini one.
|
|
86
|
+
*/
|
|
87
|
+
transformRequestOut(request: unknown, _context: TransformerContext): Promise<UnifiedChatRequest>;
|
|
88
|
+
/**
|
|
89
|
+
* Code Assist response → OpenAI-compatible. PEEL the `.response` envelope from
|
|
90
|
+
* the body / each SSE chunk, then DELEGATE to the existing gemini parser.
|
|
91
|
+
*/
|
|
92
|
+
transformResponseOut(response: Response, _context: TransformerContext): Promise<Response>;
|
|
93
|
+
/**
|
|
94
|
+
* OpenAI-compatible response → Code Assist (endpoint-encode parity). Re-wraps
|
|
95
|
+
* the standard gemini response under the top-level `response` key after the
|
|
96
|
+
* shared gemini encoder produces a public-Gemini body. Symmetric with
|
|
97
|
+
* `transformResponseOut`'s peel.
|
|
98
|
+
*/
|
|
99
|
+
transformResponseIn(response: Response, _context?: TransformerContext): Promise<Response>;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export { GeminiCodeAssistTransformer, buildCodeAssistUrl, resolveCodeAssistApiVersion, resolveCodeAssistEndpoint };
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Transformer, TransformerLogger, UnifiedChatRequest, LLMProvider, TransformerContext } from '../types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* GeminiCodeAssistTransformer — Google **Code Assist** envelope for the gemini
|
|
5
|
+
* SUBSCRIPTION path (`cloudcode-pa.googleapis.com`).
|
|
6
|
+
*
|
|
7
|
+
* The gemini-CLI OAuth subscription tokens are minted for Google's internal
|
|
8
|
+
* Code Assist API, NOT the public Gemini API. Code Assist wraps the standard
|
|
9
|
+
* `generateContent` body in a project/session envelope and uses a different
|
|
10
|
+
* URL shape (version segment + colon-method, NO `/models/<model>` path). This
|
|
11
|
+
* transformer does ONLY that envelope work and DELEGATES all inner encoding /
|
|
12
|
+
* parsing to the existing gemini utils (`buildRequestBody`,
|
|
13
|
+
* `transformResponseOut`) so the two stay in lock-step.
|
|
14
|
+
*
|
|
15
|
+
* Envelope spec — verified against gemini-cli
|
|
16
|
+
* `packages/core/src/code_assist/{server,converter,setup,types}.ts`:
|
|
17
|
+
*
|
|
18
|
+
* Request (CAGenerateContentRequest):
|
|
19
|
+
* {
|
|
20
|
+
* model: "gemini-2.5-pro", // TOP-LEVEL (NOT inside `request`)
|
|
21
|
+
* project: <resolved project id>, // TOP-LEVEL, undefined for fresh free-tier
|
|
22
|
+
* user_prompt_id: <per-turn id>, // TOP-LEVEL, snake_case
|
|
23
|
+
* request: { contents, systemInstruction, tools, toolConfig,
|
|
24
|
+
* generationConfig, ... } // standard public-Gemini body
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* URL: `${base}/${version}:${method}` — colon AFTER the version segment, NO
|
|
28
|
+
* `/models/<model>` (model lives in the body). `base` defaults to
|
|
29
|
+
* `https://cloudcode-pa.googleapis.com`, `version` to `v1internal`;
|
|
30
|
+
* both overridable via `CODE_ASSIST_ENDPOINT` / `CODE_ASSIST_API_VERSION`.
|
|
31
|
+
* Stream method `streamGenerateContent?alt=sse`, non-stream
|
|
32
|
+
* `generateContent`.
|
|
33
|
+
*
|
|
34
|
+
* Auth: `Authorization: Bearer <oauth access token>` ONLY (no x-goog-api-key).
|
|
35
|
+
* The actual Bearer is injected downstream by the subscription
|
|
36
|
+
* `OAuthBearerAuthStrategy`; this transformer just clears x-goog-api-key.
|
|
37
|
+
*
|
|
38
|
+
* Response (CaGenerateContentResponse): the standard `GenerateContentResponse`
|
|
39
|
+
* is nested under a top-level `response` key. We PEEL `.response` from the
|
|
40
|
+
* body / each SSE `data:` chunk, then hand the unwrapped stream/JSON to the
|
|
41
|
+
* existing gemini response parser (`transformResponseOut`).
|
|
42
|
+
*
|
|
43
|
+
* @module transformer/transformers/GeminiCodeAssistTransformer
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/** Resolve the Code Assist base URL (env override allowed). */
|
|
47
|
+
declare function resolveCodeAssistEndpoint(): string;
|
|
48
|
+
/** Resolve the Code Assist API version segment (env override allowed). */
|
|
49
|
+
declare function resolveCodeAssistApiVersion(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Build the Code Assist URL: `${base}/${version}:${method}`.
|
|
52
|
+
* NOTE: no `/models/<model>` segment — the model goes in the body.
|
|
53
|
+
*/
|
|
54
|
+
declare function buildCodeAssistUrl(stream: boolean): string;
|
|
55
|
+
/**
|
|
56
|
+
* GeminiCodeAssistTransformer — extends `GeminiTransformer`'s inner encoding by
|
|
57
|
+
* wrapping it in the Code Assist envelope. Registered under
|
|
58
|
+
* `gemini-code-assist` so `getTransformer('gemini-code-assist')` resolves.
|
|
59
|
+
*/
|
|
60
|
+
declare class GeminiCodeAssistTransformer implements Transformer {
|
|
61
|
+
static TransformerName: string;
|
|
62
|
+
name: string;
|
|
63
|
+
logger?: TransformerLogger;
|
|
64
|
+
/** Code Assist has no fixed `/models/:modelAndAction` endpoint pattern — the
|
|
65
|
+
* URL is built per-request in `transformRequestIn`. Left undefined so the
|
|
66
|
+
* TransformerService does NOT treat this as an endpoint (reverse) transformer. */
|
|
67
|
+
endPoint: undefined;
|
|
68
|
+
/**
|
|
69
|
+
* unified → Code Assist envelope.
|
|
70
|
+
*
|
|
71
|
+
* Builds the inner public-Gemini body via the shared `buildRequestBody`, then
|
|
72
|
+
* wraps it as `{ model, project, user_prompt_id, request: <inner> }` and sets
|
|
73
|
+
* the Code Assist URL + Bearer-only headers.
|
|
74
|
+
*
|
|
75
|
+
* The resolved Code Assist `project` is threaded in via `provider.geminiProject`
|
|
76
|
+
* (stashed by the subscription dispatch seam — see SubscriptionDispatcher /
|
|
77
|
+
* openaiResponsesIngress). `undefined` is the valid fresh free-tier value.
|
|
78
|
+
*/
|
|
79
|
+
transformRequestIn(request: UnifiedChatRequest, provider: LLMProvider, _context: TransformerContext): Promise<Record<string, unknown>>;
|
|
80
|
+
/**
|
|
81
|
+
* Code Assist request → unified (endpoint-decode parity with GeminiTransformer).
|
|
82
|
+
* Peels the top-level `request` envelope first, then delegates to the shared
|
|
83
|
+
* gemini request decoder. Not used on the subscription dispatch path (the
|
|
84
|
+
* endpoint transformer there is Anthropic/OpenAI-Response), but provided for
|
|
85
|
+
* completeness so this transformer is a drop-in for the gemini one.
|
|
86
|
+
*/
|
|
87
|
+
transformRequestOut(request: unknown, _context: TransformerContext): Promise<UnifiedChatRequest>;
|
|
88
|
+
/**
|
|
89
|
+
* Code Assist response → OpenAI-compatible. PEEL the `.response` envelope from
|
|
90
|
+
* the body / each SSE chunk, then DELEGATE to the existing gemini parser.
|
|
91
|
+
*/
|
|
92
|
+
transformResponseOut(response: Response, _context: TransformerContext): Promise<Response>;
|
|
93
|
+
/**
|
|
94
|
+
* OpenAI-compatible response → Code Assist (endpoint-encode parity). Re-wraps
|
|
95
|
+
* the standard gemini response under the top-level `response` key after the
|
|
96
|
+
* shared gemini encoder produces a public-Gemini body. Symmetric with
|
|
97
|
+
* `transformResponseOut`'s peel.
|
|
98
|
+
*/
|
|
99
|
+
transformResponseIn(response: Response, _context?: TransformerContext): Promise<Response>;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export { GeminiCodeAssistTransformer, buildCodeAssistUrl, resolveCodeAssistApiVersion, resolveCodeAssistEndpoint };
|