@holokai/holo-provider-openai 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/README.md +771 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +3 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +163 -0
- package/dist/manifest.js.map +1 -0
- package/dist/openai.auditor.d.ts +15 -0
- package/dist/openai.auditor.d.ts.map +1 -0
- package/dist/openai.auditor.js +164 -0
- package/dist/openai.auditor.js.map +1 -0
- package/dist/openai.provider.d.ts +24 -0
- package/dist/openai.provider.d.ts.map +1 -0
- package/dist/openai.provider.js +111 -0
- package/dist/openai.provider.js.map +1 -0
- package/dist/openai.response.factory.d.ts +8 -0
- package/dist/openai.response.factory.d.ts.map +1 -0
- package/dist/openai.response.factory.js +15 -0
- package/dist/openai.response.factory.js.map +1 -0
- package/dist/openai.translator.d.ts +22 -0
- package/dist/openai.translator.d.ts.map +1 -0
- package/dist/openai.translator.js +74 -0
- package/dist/openai.translator.js.map +1 -0
- package/dist/openai.wire.adapter.d.ts +12 -0
- package/dist/openai.wire.adapter.d.ts.map +1 -0
- package/dist/openai.wire.adapter.js +17 -0
- package/dist/openai.wire.adapter.js.map +1 -0
- package/dist/plugin.d.ts +14 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +59 -0
- package/dist/plugin.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/openai.chatcompletions.service.d.ts +12 -0
- package/dist/services/openai.chatcompletions.service.d.ts.map +1 -0
- package/dist/services/openai.chatcompletions.service.js +66 -0
- package/dist/services/openai.chatcompletions.service.js.map +1 -0
- package/dist/translators/index.d.ts +10 -0
- package/dist/translators/index.d.ts.map +1 -0
- package/dist/translators/index.js +10 -0
- package/dist/translators/index.js.map +1 -0
- package/dist/translators/openai.chatcompletion.request.translators.d.ts +23 -0
- package/dist/translators/openai.chatcompletion.request.translators.d.ts.map +1 -0
- package/dist/translators/openai.chatcompletion.request.translators.js +201 -0
- package/dist/translators/openai.chatcompletion.request.translators.js.map +1 -0
- package/dist/translators/openai.chatcompletion.response.translators.d.ts +18 -0
- package/dist/translators/openai.chatcompletion.response.translators.d.ts.map +1 -0
- package/dist/translators/openai.chatcompletion.response.translators.js +117 -0
- package/dist/translators/openai.chatcompletion.response.translators.js.map +1 -0
- package/dist/translators/openai.content.translators.d.ts +28 -0
- package/dist/translators/openai.content.translators.d.ts.map +1 -0
- package/dist/translators/openai.content.translators.js +100 -0
- package/dist/translators/openai.content.translators.js.map +1 -0
- package/dist/translators/openai.message.translators.d.ts +15 -0
- package/dist/translators/openai.message.translators.d.ts.map +1 -0
- package/dist/translators/openai.message.translators.js +144 -0
- package/dist/translators/openai.message.translators.js.map +1 -0
- package/dist/translators/openai.response.message.translators.d.ts +12 -0
- package/dist/translators/openai.response.message.translators.d.ts.map +1 -0
- package/dist/translators/openai.response.message.translators.js +100 -0
- package/dist/translators/openai.response.message.translators.js.map +1 -0
- package/dist/translators/openai.responses.request.translators.d.ts +10 -0
- package/dist/translators/openai.responses.request.translators.d.ts.map +1 -0
- package/dist/translators/openai.responses.request.translators.js +172 -0
- package/dist/translators/openai.responses.request.translators.js.map +1 -0
- package/dist/translators/openai.tool.translators.d.ts +19 -0
- package/dist/translators/openai.tool.translators.d.ts.map +1 -0
- package/dist/translators/openai.tool.translators.js +80 -0
- package/dist/translators/openai.tool.translators.js.map +1 -0
- package/dist/translators/openai.usage.translators.d.ts +12 -0
- package/dist/translators/openai.usage.translators.d.ts.map +1 -0
- package/dist/translators/openai.usage.translators.js +42 -0
- package/dist/translators/openai.usage.translators.js.map +1 -0
- package/dist/translators/streaming/index.d.ts +6 -0
- package/dist/translators/streaming/index.d.ts.map +1 -0
- package/dist/translators/streaming/index.js +6 -0
- package/dist/translators/streaming/index.js.map +1 -0
- package/dist/translators/streaming/openai.content.delta.translator.d.ts +12 -0
- package/dist/translators/streaming/openai.content.delta.translator.d.ts.map +1 -0
- package/dist/translators/streaming/openai.content.delta.translator.js +82 -0
- package/dist/translators/streaming/openai.content.delta.translator.js.map +1 -0
- package/dist/translators/streaming/openai.message.delta.translator.d.ts +12 -0
- package/dist/translators/streaming/openai.message.delta.translator.d.ts.map +1 -0
- package/dist/translators/streaming/openai.message.delta.translator.js +152 -0
- package/dist/translators/streaming/openai.message.delta.translator.js.map +1 -0
- package/dist/translators/streaming/openai.message.start.translator.d.ts +12 -0
- package/dist/translators/streaming/openai.message.start.translator.d.ts.map +1 -0
- package/dist/translators/streaming/openai.message.start.translator.js +80 -0
- package/dist/translators/streaming/openai.message.start.translator.js.map +1 -0
- package/dist/translators/streaming/openai.message.stop.translator.d.ts +14 -0
- package/dist/translators/streaming/openai.message.stop.translator.d.ts.map +1 -0
- package/dist/translators/streaming/openai.message.stop.translator.js +112 -0
- package/dist/translators/streaming/openai.message.stop.translator.js.map +1 -0
- package/dist/translators/streaming/openai.stream.translator.d.ts +20 -0
- package/dist/translators/streaming/openai.stream.translator.d.ts.map +1 -0
- package/dist/translators/streaming/openai.stream.translator.js +86 -0
- package/dist/translators/streaming/openai.stream.translator.js.map +1 -0
- package/package.json +72 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Provider Plugin
|
|
3
|
+
*
|
|
4
|
+
* Entry point for the OpenAI provider plugin.
|
|
5
|
+
* Exports the plugin instance as default export per Holo plugin contract.
|
|
6
|
+
*/
|
|
7
|
+
import { OpenAIProviderPlugin } from './plugin.js';
|
|
8
|
+
export * from './services';
|
|
9
|
+
export * from './translators';
|
|
10
|
+
export * from './manifest';
|
|
11
|
+
export * from './openai.auditor';
|
|
12
|
+
export * from './openai.translator';
|
|
13
|
+
export * from './plugin';
|
|
14
|
+
declare const _default: OpenAIProviderPlugin;
|
|
15
|
+
export default _default;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAEjD,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAE3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;;AAGzB,wBAA0C"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Provider Plugin
|
|
3
|
+
*
|
|
4
|
+
* Entry point for the OpenAI provider plugin.
|
|
5
|
+
* Exports the plugin instance as default export per Holo plugin contract.
|
|
6
|
+
*/
|
|
7
|
+
import { OpenAIProviderPlugin } from './plugin.js';
|
|
8
|
+
export * from './services';
|
|
9
|
+
export * from './translators';
|
|
10
|
+
export * from './manifest';
|
|
11
|
+
export * from './openai.auditor';
|
|
12
|
+
export * from './openai.translator';
|
|
13
|
+
export * from './plugin';
|
|
14
|
+
// Export singleton instance as default for plugin loading
|
|
15
|
+
export default new OpenAIProviderPlugin();
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAEjD,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAE3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AAEzB,0DAA0D;AAC1D,eAAe,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAE5C,eAAO,MAAM,QAAQ,EAAE,cAyLtB,CAAC"}
|
package/dist/manifest.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
export const manifest = {
|
|
2
|
+
// Required identity
|
|
3
|
+
name: '@holokai/provider-openai',
|
|
4
|
+
family: 'openai',
|
|
5
|
+
version: '1.0.0',
|
|
6
|
+
pluginType: 'provider',
|
|
7
|
+
displayName: 'OpenAI Provider',
|
|
8
|
+
description: 'First-party OpenAI provider plugin for Holokai, providing chat, tools, and streaming via the Holo universal format.',
|
|
9
|
+
// Optional metadata
|
|
10
|
+
author: {
|
|
11
|
+
name: 'Holokai Team',
|
|
12
|
+
url: 'https://holok.ai'
|
|
13
|
+
},
|
|
14
|
+
license: 'MIT',
|
|
15
|
+
homepage: 'https://holok.ai/docs/providers/openai',
|
|
16
|
+
repository: {
|
|
17
|
+
type: 'git',
|
|
18
|
+
url: 'https://github.com/holokai/holokai',
|
|
19
|
+
directory: 'packages/provider-openai'
|
|
20
|
+
},
|
|
21
|
+
bugs: {
|
|
22
|
+
url: 'https://github.com/holokai/holokai/issues'
|
|
23
|
+
},
|
|
24
|
+
keywords: [
|
|
25
|
+
'holokai',
|
|
26
|
+
'holo',
|
|
27
|
+
'openai',
|
|
28
|
+
'provider',
|
|
29
|
+
'llm',
|
|
30
|
+
'chat-completions',
|
|
31
|
+
'tools',
|
|
32
|
+
'streaming'
|
|
33
|
+
],
|
|
34
|
+
// Engine / dependency requirements
|
|
35
|
+
engineVersion: '>=1.0.0 <2.0.0',
|
|
36
|
+
peerDependencies: {
|
|
37
|
+
'@holokai/sdk': '^1.0.0'
|
|
38
|
+
},
|
|
39
|
+
dependencies: {
|
|
40
|
+
openai: '^4.73.0'
|
|
41
|
+
},
|
|
42
|
+
// Capabilities
|
|
43
|
+
capabilities: {
|
|
44
|
+
supportsStreaming: true,
|
|
45
|
+
supportsHotReload: true,
|
|
46
|
+
supportsAsync: true,
|
|
47
|
+
supportsBatching: false,
|
|
48
|
+
supportsDistributed: true,
|
|
49
|
+
// Custom capability flags
|
|
50
|
+
supportsTools: true,
|
|
51
|
+
supportsVision: true,
|
|
52
|
+
supportsStructuredOutputs: true
|
|
53
|
+
},
|
|
54
|
+
// Permissions (what the host must allow)
|
|
55
|
+
permissions: ['network', 'env'],
|
|
56
|
+
// Configuration schema (what the operator configures for this plugin)
|
|
57
|
+
configSchema: {
|
|
58
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
59
|
+
type: 'object',
|
|
60
|
+
title: 'OpenAI Provider Configuration',
|
|
61
|
+
description: 'Configuration for the @holokai/provider-openai plugin. Used by Holokai to connect to the OpenAI API.',
|
|
62
|
+
properties: {
|
|
63
|
+
apiKey: {
|
|
64
|
+
type: 'string',
|
|
65
|
+
description: 'OpenAI API key. This SHOULD be supplied via secure secret management (env/secret store), not hard-coded.',
|
|
66
|
+
minLength: 20
|
|
67
|
+
},
|
|
68
|
+
organizationId: {
|
|
69
|
+
type: 'string',
|
|
70
|
+
description: 'Optional OpenAI organization ID to use for requests.',
|
|
71
|
+
minLength: 1
|
|
72
|
+
},
|
|
73
|
+
projectId: {
|
|
74
|
+
type: 'string',
|
|
75
|
+
description: 'Optional OpenAI project ID (for org/project-scoped keys).'
|
|
76
|
+
},
|
|
77
|
+
baseUrl: {
|
|
78
|
+
type: 'string',
|
|
79
|
+
description: 'Optional custom base URL for OpenAI-compatible endpoints (e.g., proxy or Azure/OpenAI-compatible gateway).',
|
|
80
|
+
format: 'uri'
|
|
81
|
+
},
|
|
82
|
+
defaultModel: {
|
|
83
|
+
type: 'string',
|
|
84
|
+
description: 'Default OpenAI model to use when no model is specified in the HoloRequest (e.g., "gpt-4o-mini").'
|
|
85
|
+
},
|
|
86
|
+
allowedModels: {
|
|
87
|
+
type: 'array',
|
|
88
|
+
description: 'Optional allowlist of OpenAI model IDs that this plugin may use. If set, all requests will be validated against this list.',
|
|
89
|
+
items: {
|
|
90
|
+
type: 'string'
|
|
91
|
+
},
|
|
92
|
+
uniqueItems: true
|
|
93
|
+
},
|
|
94
|
+
timeoutMs: {
|
|
95
|
+
type: 'integer',
|
|
96
|
+
description: 'Default request timeout in milliseconds for OpenAI calls.',
|
|
97
|
+
minimum: 1000,
|
|
98
|
+
maximum: 600000,
|
|
99
|
+
default: 60000
|
|
100
|
+
},
|
|
101
|
+
maxRetries: {
|
|
102
|
+
type: 'integer',
|
|
103
|
+
description: 'Maximum number of retry attempts for transient OpenAI errors.',
|
|
104
|
+
minimum: 0,
|
|
105
|
+
maximum: 10,
|
|
106
|
+
default: 2
|
|
107
|
+
},
|
|
108
|
+
enableStructuredOutputs: {
|
|
109
|
+
type: 'boolean',
|
|
110
|
+
description: 'Enable OpenAI structured outputs (json_object/json_schema) when requested via Holo response_format.',
|
|
111
|
+
default: true
|
|
112
|
+
},
|
|
113
|
+
enableVision: {
|
|
114
|
+
type: 'boolean',
|
|
115
|
+
description: 'Enable multimodal/vision support for models that accept image content.',
|
|
116
|
+
default: true
|
|
117
|
+
},
|
|
118
|
+
logRequests: {
|
|
119
|
+
type: 'boolean',
|
|
120
|
+
description: 'If true, log summarized request/response metadata for observability (never full content or secrets).',
|
|
121
|
+
default: false
|
|
122
|
+
},
|
|
123
|
+
telemetrySampleRate: {
|
|
124
|
+
type: 'number',
|
|
125
|
+
description: 'Sampling rate (0.0–1.0) for sending telemetry events related to this provider.',
|
|
126
|
+
minimum: 0,
|
|
127
|
+
maximum: 1,
|
|
128
|
+
default: 1
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
required: ['apiKey'],
|
|
132
|
+
additionalProperties: false
|
|
133
|
+
},
|
|
134
|
+
// Marketplace metadata
|
|
135
|
+
category: 'ai-providers',
|
|
136
|
+
screenshots: [
|
|
137
|
+
'https://holok.ai/assets/screenshots/provider-openai-1.png'
|
|
138
|
+
],
|
|
139
|
+
changelog: 'https://holok.ai/docs/providers/openai/changelog',
|
|
140
|
+
pricing: {
|
|
141
|
+
model: 'free',
|
|
142
|
+
price: 0,
|
|
143
|
+
currency: 'USD',
|
|
144
|
+
billingPeriod: 'one-time'
|
|
145
|
+
},
|
|
146
|
+
support: {
|
|
147
|
+
email: 'support@holok.ai',
|
|
148
|
+
documentation: 'https://holok.ai/docs/providers/openai'
|
|
149
|
+
},
|
|
150
|
+
// Upgrade semantics
|
|
151
|
+
upgradeFrom: '>=1.0.0',
|
|
152
|
+
// Entrypoints
|
|
153
|
+
main: 'dist/index.js',
|
|
154
|
+
types: 'dist/index.d.ts',
|
|
155
|
+
// Custom metadata for host/runtime
|
|
156
|
+
custom: {
|
|
157
|
+
// Used by the host/plugin loader to auto-wire this plugin
|
|
158
|
+
providerKind: 'openai',
|
|
159
|
+
// Hints for the host UI
|
|
160
|
+
recommendedDefaultModel: 'gpt-4o-mini'
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseAuditor, HoloWorkerRequest, HoloWorkerResponse, ProviderEnvelope } from "@holokai/sdk";
|
|
2
|
+
import { ChatCompletionCreateParamsBase } from "openai/resources/chat/completions";
|
|
3
|
+
import { ResponseCreateParamsBase } from "openai/resources/responses/responses";
|
|
4
|
+
import { LlmRequest, LlmResponse } from "@holokai/sdk/core/entities";
|
|
5
|
+
export declare class OpenAIAuditor extends BaseAuditor {
|
|
6
|
+
readonly provider = "openai";
|
|
7
|
+
protected toHoloRequest(workerRequest: HoloWorkerRequest, llmRequest: Omit<LlmRequest, 'id'>): void;
|
|
8
|
+
protected mapProviderPayload(workerRequest: HoloWorkerRequest, llmRequest: Omit<LlmRequest, 'id'>): void;
|
|
9
|
+
protected mapResponseToHolo(workerResponse: HoloWorkerResponse, llmResponse: Omit<LlmResponse, 'id'>): void;
|
|
10
|
+
protected collectResponseMetrics(workerResponse: HoloWorkerResponse, llmResponse: Omit<LlmResponse, 'id'>): void;
|
|
11
|
+
private extractUserPromptFromMessages;
|
|
12
|
+
private extractSystemPromptFromMessages;
|
|
13
|
+
protected createProviderEnvelope(payload: ResponseCreateParamsBase | ChatCompletionCreateParamsBase): Promise<ProviderEnvelope>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=openai.auditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.auditor.d.ts","sourceRoot":"","sources":["../src/openai.auditor.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAe,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAC,8BAA8B,EAAC,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAC,wBAAwB,EAAC,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAC,UAAU,EAAE,WAAW,EAAY,MAAM,4BAA4B,CAAC;AAE9E,qBACa,aAAc,SAAQ,WAAW;IAC1C,QAAQ,CAAC,QAAQ,YAAY;IAE7B,SAAS,CAAC,aAAa,CAAC,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI;IAmBnG,SAAS,CAAC,kBAAkB,CAAC,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI;IAsBxG,SAAS,CAAC,iBAAiB,CACvB,cAAc,EAAE,kBAAkB,EAClC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GACrC,IAAI;IA4BP,SAAS,CAAC,sBAAsB,CAC5B,cAAc,EAAE,kBAAkB,EAClC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GACrC,IAAI;IAyCP,OAAO,CAAC,6BAA6B;IAqBrC,OAAO,CAAC,+BAA+B;cAOvB,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,GAAG,8BAA8B,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAKxI"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { injectable } from 'tsyringe';
|
|
8
|
+
import { BaseAuditor, pickDefined } from "@holokai/sdk";
|
|
9
|
+
import { LlmStatus } from "@holokai/sdk/core/entities";
|
|
10
|
+
let OpenAIAuditor = class OpenAIAuditor extends BaseAuditor {
|
|
11
|
+
provider = 'openai';
|
|
12
|
+
toHoloRequest(workerRequest, llmRequest) {
|
|
13
|
+
const payload = workerRequest.payload;
|
|
14
|
+
// Set model
|
|
15
|
+
llmRequest.model_slug = payload.model;
|
|
16
|
+
// Extract user prompt from messages
|
|
17
|
+
const userPrompt = this.extractUserPromptFromMessages(payload.messages);
|
|
18
|
+
if (userPrompt !== undefined) {
|
|
19
|
+
llmRequest.user_prompt = userPrompt;
|
|
20
|
+
}
|
|
21
|
+
// Extract system prompt from messages
|
|
22
|
+
const systemPrompt = this.extractSystemPromptFromMessages(payload.messages);
|
|
23
|
+
if (systemPrompt !== undefined) {
|
|
24
|
+
llmRequest.system_prompt = systemPrompt;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
mapProviderPayload(workerRequest, llmRequest) {
|
|
28
|
+
const payload = workerRequest.payload;
|
|
29
|
+
// Set options (OpenAI-specific parameters)
|
|
30
|
+
const options = {};
|
|
31
|
+
if (payload.max_tokens !== undefined)
|
|
32
|
+
options.max_tokens = payload.max_tokens;
|
|
33
|
+
if (payload.temperature !== undefined)
|
|
34
|
+
options.temperature = payload.temperature;
|
|
35
|
+
if (payload.top_p !== undefined)
|
|
36
|
+
options.top_p = payload.top_p;
|
|
37
|
+
if (payload.frequency_penalty !== undefined)
|
|
38
|
+
options.frequency_penalty = payload.frequency_penalty;
|
|
39
|
+
if (payload.presence_penalty !== undefined)
|
|
40
|
+
options.presence_penalty = payload.presence_penalty;
|
|
41
|
+
if (payload.stop !== undefined)
|
|
42
|
+
options.stop = payload.stop;
|
|
43
|
+
if (payload.stream !== undefined)
|
|
44
|
+
options.stream = payload.stream;
|
|
45
|
+
if (payload.tools !== undefined)
|
|
46
|
+
options.tools = payload.tools;
|
|
47
|
+
if (payload.tool_choice !== undefined)
|
|
48
|
+
options.tool_choice = payload.tool_choice;
|
|
49
|
+
if (payload.response_format !== undefined)
|
|
50
|
+
options.response_format = payload.response_format;
|
|
51
|
+
if (payload.seed !== undefined)
|
|
52
|
+
options.seed = payload.seed;
|
|
53
|
+
if (payload.user !== undefined)
|
|
54
|
+
options.user = payload.user;
|
|
55
|
+
if (Object.keys(options).length > 0) {
|
|
56
|
+
llmRequest.options = options;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
mapResponseToHolo(workerResponse, llmResponse) {
|
|
60
|
+
const payload = workerResponse.payload;
|
|
61
|
+
// Extract model from payload
|
|
62
|
+
llmResponse.model_slug = payload.model || 'unknown';
|
|
63
|
+
// Extract response text from final response
|
|
64
|
+
if (workerResponse.fullResponse !== undefined) {
|
|
65
|
+
llmResponse.response = workerResponse.fullResponse;
|
|
66
|
+
}
|
|
67
|
+
else if (payload.object === 'chat.completion') {
|
|
68
|
+
// Non-streaming completion
|
|
69
|
+
const choice = payload.choices?.[0];
|
|
70
|
+
if (choice?.message?.content !== undefined) {
|
|
71
|
+
llmResponse.response = choice.message.content;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else if (payload.object === 'chat.completion.chunk') {
|
|
75
|
+
// Streaming chunk
|
|
76
|
+
const choice = payload.choices?.[0];
|
|
77
|
+
if (choice?.delta?.content !== undefined) {
|
|
78
|
+
llmResponse.response = choice.delta.content;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Ensure response is never undefined for successful completions
|
|
82
|
+
if (llmResponse.response === undefined) {
|
|
83
|
+
llmResponse.response = '';
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
collectResponseMetrics(workerResponse, llmResponse) {
|
|
87
|
+
const payload = workerResponse.payload;
|
|
88
|
+
// Extract token usage from metrics or payload
|
|
89
|
+
if (workerResponse.metrics) {
|
|
90
|
+
llmResponse.usage_raw = workerResponse.metrics;
|
|
91
|
+
llmResponse.input_tokens = workerResponse.metrics.inputTokens;
|
|
92
|
+
llmResponse.output_tokens = workerResponse.metrics.outputTokens;
|
|
93
|
+
llmResponse.time_to_first_token = workerResponse.metrics.timeToFirstToken;
|
|
94
|
+
llmResponse.total_processing_time = workerResponse.metrics.totalProcessingTime;
|
|
95
|
+
}
|
|
96
|
+
else if (payload.usage) {
|
|
97
|
+
llmResponse.usage_raw = payload.usage;
|
|
98
|
+
llmResponse.input_tokens = payload.usage.prompt_tokens;
|
|
99
|
+
llmResponse.output_tokens = payload.usage.completion_tokens;
|
|
100
|
+
llmResponse.time_to_first_token = payload.usage.timeToFirstToken;
|
|
101
|
+
llmResponse.total_processing_time = payload.usage.totalProcessingTime;
|
|
102
|
+
}
|
|
103
|
+
// Set status based on completion and finish reason
|
|
104
|
+
const choice = payload.choices?.[0];
|
|
105
|
+
if (choice?.finish_reason) {
|
|
106
|
+
if (choice.finish_reason === 'length') {
|
|
107
|
+
llmResponse.status = LlmStatus.PARTIAL;
|
|
108
|
+
}
|
|
109
|
+
else if (choice.finish_reason === 'stop' || choice.finish_reason === 'end_turn') {
|
|
110
|
+
llmResponse.status = LlmStatus.SUCCESS;
|
|
111
|
+
}
|
|
112
|
+
else if (choice.finish_reason === 'content_filter') {
|
|
113
|
+
llmResponse.status = LlmStatus.ERROR;
|
|
114
|
+
llmResponse.error_message = 'Content filtered by OpenAI';
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
llmResponse.status = LlmStatus.SUCCESS;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else if (payload.error) {
|
|
121
|
+
llmResponse.status = LlmStatus.ERROR;
|
|
122
|
+
llmResponse.error_message = payload.error.message || 'OpenAI API error';
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
llmResponse.status = LlmStatus.SUCCESS;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
extractUserPromptFromMessages(messages) {
|
|
129
|
+
if (!messages || !Array.isArray(messages))
|
|
130
|
+
return undefined;
|
|
131
|
+
const userMessages = messages.filter(msg => msg.role === 'user');
|
|
132
|
+
if (userMessages.length === 0)
|
|
133
|
+
return undefined;
|
|
134
|
+
// Return the last user message content
|
|
135
|
+
const lastUserMessage = userMessages[userMessages.length - 1];
|
|
136
|
+
if (typeof lastUserMessage.content === 'string') {
|
|
137
|
+
return lastUserMessage.content;
|
|
138
|
+
}
|
|
139
|
+
else if (Array.isArray(lastUserMessage.content)) {
|
|
140
|
+
// Handle content array - extract text content
|
|
141
|
+
const textParts = lastUserMessage.content
|
|
142
|
+
.filter((part) => part.type === 'text')
|
|
143
|
+
.map((part) => part.text);
|
|
144
|
+
return textParts.length > 0 ? textParts.join('\n') : undefined;
|
|
145
|
+
}
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
extractSystemPromptFromMessages(messages) {
|
|
149
|
+
if (!messages || !Array.isArray(messages))
|
|
150
|
+
return undefined;
|
|
151
|
+
const systemMessage = messages.find(msg => msg.role === 'system');
|
|
152
|
+
return systemMessage && typeof systemMessage.content === 'string' ? systemMessage.content : undefined;
|
|
153
|
+
}
|
|
154
|
+
async createProviderEnvelope(payload) {
|
|
155
|
+
return pickDefined({
|
|
156
|
+
model_slug: payload.model
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
OpenAIAuditor = __decorate([
|
|
161
|
+
injectable()
|
|
162
|
+
], OpenAIAuditor);
|
|
163
|
+
export { OpenAIAuditor };
|
|
164
|
+
//# sourceMappingURL=openai.auditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.auditor.js","sourceRoot":"","sources":["../src/openai.auditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import { BaseProvider, IAuditor, IProviderTranslator, IResponseFactory, ProviderContext, RunHandle } from '@holokai/sdk';
|
|
3
|
+
import { ResponseCreateParamsBase, ResponseErrorEvent } from 'openai/resources/responses/responses';
|
|
4
|
+
import { ChatCompletionCreateParamsBase } from 'openai/resources/chat/completions';
|
|
5
|
+
import { Model } from 'openai/resources/models';
|
|
6
|
+
import { APIError } from "openai/core/error";
|
|
7
|
+
/**
|
|
8
|
+
* OpenAI provider for connecting to OpenAI API
|
|
9
|
+
*/
|
|
10
|
+
export declare class OpenAIProvider extends BaseProvider<OpenAI, ResponseCreateParamsBase | ChatCompletionCreateParamsBase> {
|
|
11
|
+
protected createAuditor(): IAuditor;
|
|
12
|
+
protected createClient(): OpenAI;
|
|
13
|
+
protected createTranslator(): IProviderTranslator;
|
|
14
|
+
protected createResponseFactory(): IResponseFactory;
|
|
15
|
+
getModels(allowedModels: string[] | true): Promise<{
|
|
16
|
+
object: string;
|
|
17
|
+
data: Model[];
|
|
18
|
+
}>;
|
|
19
|
+
protected handleError(error: APIError): Promise<ResponseErrorEvent>;
|
|
20
|
+
protected handleRequest(payload: ResponseCreateParamsBase | ChatCompletionCreateParamsBase, ctx: ProviderContext): Promise<RunHandle<any>>;
|
|
21
|
+
private runResponses;
|
|
22
|
+
private runChatCompletions;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=openai.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.provider.d.ts","sourceRoot":"","sources":["../src/openai.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACH,YAAY,EACZ,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EAEf,SAAS,EACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,wBAAwB,EAAE,kBAAkB,EAAsB,MAAM,sCAAsC,CAAC;AACvH,OAAO,EAAC,8BAA8B,EAAC,MAAM,mCAAmC,CAAC;AAEjF,OAAO,EAAC,KAAK,EAAa,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAI3C;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY,CAAC,MAAM,EAAE,wBAAwB,GAAG,8BAA8B,CAAC;IAE/G,SAAS,CAAC,aAAa,IAAI,QAAQ;IAInC,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhC,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAIjD,SAAS,CAAC,qBAAqB,IAAI,gBAAgB;IAI7C,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,EAAE,CAAA;KAAE,CAAC;cAa3E,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC;cASzD,aAAa,CACzB,OAAO,EAAE,wBAAwB,GAAG,8BAA8B,EAClE,GAAG,EAAE,eAAe,GACrB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAUZ,YAAY;YA4CZ,kBAAkB;CAyCnC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import { BaseProvider, RequestType } from '@holokai/sdk';
|
|
3
|
+
import { OpenAIAuditor } from './openai.auditor';
|
|
4
|
+
import { OpenAITranslator } from './openai.translator';
|
|
5
|
+
import { OpenAIResponseFactory } from './openai.response.factory';
|
|
6
|
+
/**
|
|
7
|
+
* OpenAI provider for connecting to OpenAI API
|
|
8
|
+
*/
|
|
9
|
+
export class OpenAIProvider extends BaseProvider {
|
|
10
|
+
createAuditor() {
|
|
11
|
+
return new OpenAIAuditor();
|
|
12
|
+
}
|
|
13
|
+
createClient() {
|
|
14
|
+
return new OpenAI(this._config);
|
|
15
|
+
}
|
|
16
|
+
createTranslator() {
|
|
17
|
+
return OpenAITranslator.instance();
|
|
18
|
+
}
|
|
19
|
+
createResponseFactory() {
|
|
20
|
+
return OpenAIResponseFactory.instance();
|
|
21
|
+
}
|
|
22
|
+
async getModels(allowedModels) {
|
|
23
|
+
const response = await this.client.models.list();
|
|
24
|
+
if (allowedModels === true) {
|
|
25
|
+
return response;
|
|
26
|
+
}
|
|
27
|
+
const data = response.data.filter(model => allowedModels.includes(model.id));
|
|
28
|
+
return {
|
|
29
|
+
object: response.object,
|
|
30
|
+
data
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async handleError(error) {
|
|
34
|
+
if (error.error) {
|
|
35
|
+
// may need to validate what the error is
|
|
36
|
+
return error.error;
|
|
37
|
+
}
|
|
38
|
+
return this.responseFactory.createError(error.message, error.code ? error.code : undefined);
|
|
39
|
+
}
|
|
40
|
+
async handleRequest(payload, ctx) {
|
|
41
|
+
switch (ctx.requestType) {
|
|
42
|
+
case RequestType.RESPONSES:
|
|
43
|
+
return this.runResponses(payload, ctx);
|
|
44
|
+
default:
|
|
45
|
+
return this.runChatCompletions(payload, ctx);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// --- Responses API ---
|
|
49
|
+
async runResponses(req, ctx) {
|
|
50
|
+
if (!req.stream) {
|
|
51
|
+
return {
|
|
52
|
+
final: async () => {
|
|
53
|
+
return this.client.responses.create({ ...req, stream: false });
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const finalPromise = (async () => {
|
|
58
|
+
const stream = await this.client.responses.create({
|
|
59
|
+
...req,
|
|
60
|
+
stream: true
|
|
61
|
+
});
|
|
62
|
+
let finalChunk;
|
|
63
|
+
for await (const event of stream) {
|
|
64
|
+
ctx.emitStreamEvent(event);
|
|
65
|
+
if (event.type === 'response.output_text.delta') {
|
|
66
|
+
ctx.emitTextDelta(event.delta);
|
|
67
|
+
}
|
|
68
|
+
if (event.type === 'response.completed' ||
|
|
69
|
+
event.type === 'response.failed' ||
|
|
70
|
+
event.type === 'response.incomplete' ||
|
|
71
|
+
event.type === 'error') {
|
|
72
|
+
finalChunk = event;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return finalChunk;
|
|
76
|
+
})();
|
|
77
|
+
return { final: () => finalPromise };
|
|
78
|
+
}
|
|
79
|
+
// --- Chat Completions API ---
|
|
80
|
+
async runChatCompletions(req, ctx) {
|
|
81
|
+
if (!req.stream) {
|
|
82
|
+
return {
|
|
83
|
+
final: async () => {
|
|
84
|
+
return this.client.chat.completions.create({ ...req, stream: false });
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const streamingReq = {
|
|
89
|
+
...req,
|
|
90
|
+
stream: true,
|
|
91
|
+
stream_options: { include_usage: true },
|
|
92
|
+
};
|
|
93
|
+
this.client.chat.completions.create(streamingReq);
|
|
94
|
+
const finalPromise = (async () => {
|
|
95
|
+
const stream = await this.client.chat.completions.create(streamingReq);
|
|
96
|
+
let finalChunk;
|
|
97
|
+
for await (const chunk of stream) {
|
|
98
|
+
ctx.emitStreamEvent(chunk);
|
|
99
|
+
const delta = chunk?.choices?.[0]?.delta?.content;
|
|
100
|
+
if (typeof delta === 'string' && delta.length) {
|
|
101
|
+
ctx.emitTextDelta(delta);
|
|
102
|
+
}
|
|
103
|
+
if (chunk?.usage)
|
|
104
|
+
finalChunk = chunk;
|
|
105
|
+
}
|
|
106
|
+
return finalChunk;
|
|
107
|
+
})();
|
|
108
|
+
return { final: () => finalPromise };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=openai.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.provider.js","sourceRoot":"","sources":["../src/openai.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IResponseFactory } from "@holokai/sdk";
|
|
2
|
+
import { ResponseErrorEvent } from "openai/resources/responses/responses";
|
|
3
|
+
export type OpenAIResponseCode = 'server_error' | 'rate_limit_exceeded' | 'invalid_prompt' | 'vector_store_timeout' | 'invalid_image' | 'invalid_image_format' | 'invalid_base64_image' | 'invalid_image_url' | 'image_too_large' | 'image_too_small' | 'image_parse_error' | 'image_content_policy_violation' | 'invalid_image_mode' | 'image_file_too_large' | 'unsupported_image_media_type' | 'empty_image_file' | 'failed_to_download_image' | 'image_file_not_found';
|
|
4
|
+
export declare class OpenAIResponseFactory implements IResponseFactory {
|
|
5
|
+
createError(message: string, code?: OpenAIResponseCode): ResponseErrorEvent;
|
|
6
|
+
static instance(): OpenAIResponseFactory;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=openai.response.factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.response.factory.d.ts","sourceRoot":"","sources":["../src/openai.response.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sCAAsC,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAK,cAAc,GAC3C,qBAAqB,GACrB,gBAAgB,GAChB,sBAAsB,GACtB,eAAe,GACf,sBAAsB,GACtB,sBAAsB,GACtB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,gCAAgC,GAChC,oBAAoB,GACpB,sBAAsB,GACtB,8BAA8B,GAC9B,kBAAkB,GAClB,0BAA0B,GAC1B,sBAAsB,CAAC;AAE7B,qBAAa,qBAAsB,YAAW,gBAAgB;IAC1D,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAqC,GAAG,kBAAkB;IAU7F,MAAM,CAAC,QAAQ,IAAI,qBAAqB;CAG3C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class OpenAIResponseFactory {
|
|
2
|
+
createError(message, code = 'invalid_prompt') {
|
|
3
|
+
return {
|
|
4
|
+
type: 'error',
|
|
5
|
+
message,
|
|
6
|
+
param: null,
|
|
7
|
+
code,
|
|
8
|
+
sequence_number: 0
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
static instance() {
|
|
12
|
+
return new OpenAIResponseFactory();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=openai.response.factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.response.factory.js","sourceRoot":"","sources":["../src/openai.response.factory.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,qBAAqB;IAC9B,WAAW,CAAC,OAAe,EAAE,OAA2B,gBAAgB;QACpE,OAAO;YACH,IAAI,EAAE,OAAO;YACb,OAAO;YACP,KAAK,EAAE,IAAI;YACX,IAAI;YACJ,eAAe,EAAE,CAAC;SACrB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,IAAI,qBAAqB,EAAE,CAAC;IACvC,CAAC;CACJ"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { IProviderTranslator } from "@holokai/sdk/provider";
|
|
3
|
+
import { OpenAIMessageTranslator, OpenAIRequestTranslator, OpenAIResponseTranslator, OpenAIStreamTranslator } from "./translators";
|
|
4
|
+
import { HoloMessage, HoloRequest, HoloResponse, HoloStreamChunk } from "@holokai/sdk";
|
|
5
|
+
import { ChatCompletion, ChatCompletionChunk, ChatCompletionMessageParam } from "openai/resources/chat/completions/completions";
|
|
6
|
+
import { ChatCompletionCreateParamsBase } from "openai/resources/chat/completions";
|
|
7
|
+
export declare class OpenAITranslator implements IProviderTranslator {
|
|
8
|
+
private readonly responseTranslator;
|
|
9
|
+
private readonly requestTranslator;
|
|
10
|
+
private readonly messageTranslator;
|
|
11
|
+
private readonly streamTranslator;
|
|
12
|
+
constructor(responseTranslator: OpenAIResponseTranslator, requestTranslator: OpenAIRequestTranslator, messageTranslator: OpenAIMessageTranslator, streamTranslator: OpenAIStreamTranslator);
|
|
13
|
+
static instance(): IProviderTranslator;
|
|
14
|
+
fromHoloResponse(response: HoloResponse): Promise<Partial<ChatCompletion | ChatCompletionChunk>>;
|
|
15
|
+
toHoloResponse(response: ChatCompletion | ChatCompletionChunk): Promise<Partial<HoloResponse>>;
|
|
16
|
+
fromHoloRequest(request: HoloRequest): Promise<Partial<ChatCompletionCreateParamsBase>>;
|
|
17
|
+
toHoloRequest(request: ChatCompletionCreateParamsBase): Promise<Partial<HoloRequest>>;
|
|
18
|
+
fromHoloMessages(messages: HoloMessage[]): Promise<Partial<ChatCompletionMessageParam>[]>;
|
|
19
|
+
toHoloMessages(messages: ChatCompletionMessageParam[]): Promise<Partial<HoloMessage>[]>;
|
|
20
|
+
fromHoloStreamChunks(chunks: HoloStreamChunk[]): Promise<unknown>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=openai.translator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.translator.d.ts","sourceRoot":"","sources":["../src/openai.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGH,uBAAuB,EACvB,uBAAuB,EAEvB,wBAAwB,EACxB,sBAAsB,EAKzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AACrF,OAAO,EACH,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC7B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAC,8BAA8B,EAAC,MAAM,mCAAmC,CAAC;AAQjF,qBACa,gBAAiB,YAAW,mBAAmB;IAEpD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAHhB,kBAAkB,EAAE,wBAAwB,EAC5C,iBAAiB,EAAE,uBAAuB,EAC1C,iBAAiB,EAAE,uBAAuB,EAC1C,gBAAgB,EAAE,sBAAsB;IAI7D,MAAM,CAAC,QAAQ,IAAI,mBAAmB;IAkChC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAAC;IAIhG,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAI9F,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAIvF,aAAa,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAIrF,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;IAIzF,cAAc,CAAC,QAAQ,EAAE,0BAA0B,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAIvF,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAG1E"}
|