foon-sdk 1.0.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 +574 -0
- package/dist/cache/LRUCache.d.ts +36 -0
- package/dist/cache/LRUCache.d.ts.map +1 -0
- package/dist/cache/LRUCache.js +54 -0
- package/dist/cache/LRUCache.js.map +1 -0
- package/dist/cache/cache-key-generator.d.ts +9 -0
- package/dist/cache/cache-key-generator.d.ts.map +1 -0
- package/dist/cache/cache-key-generator.js +50 -0
- package/dist/cache/cache-key-generator.js.map +1 -0
- package/dist/cache/index.d.ts +3 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +21 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/engine/MappingEngine.d.ts +29 -0
- package/dist/engine/MappingEngine.d.ts.map +1 -0
- package/dist/engine/MappingEngine.js +196 -0
- package/dist/engine/MappingEngine.js.map +1 -0
- package/dist/engine/executor.d.ts +15 -0
- package/dist/engine/executor.d.ts.map +1 -0
- package/dist/engine/executor.js +137 -0
- package/dist/engine/executor.js.map +1 -0
- package/dist/engine/index.d.ts +5 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +23 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/jsonpath.d.ts +17 -0
- package/dist/engine/jsonpath.d.ts.map +1 -0
- package/dist/engine/jsonpath.js +73 -0
- package/dist/engine/jsonpath.js.map +1 -0
- package/dist/engine/type-converter.d.ts +12 -0
- package/dist/engine/type-converter.d.ts.map +1 -0
- package/dist/engine/type-converter.js +106 -0
- package/dist/engine/type-converter.js.map +1 -0
- package/dist/errors/error-factory.d.ts +30 -0
- package/dist/errors/error-factory.d.ts.map +1 -0
- package/dist/errors/error-factory.js +53 -0
- package/dist/errors/error-factory.js.map +1 -0
- package/dist/errors/index.d.ts +3 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +22 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/express/FonRouter.d.ts +56 -0
- package/dist/express/FonRouter.d.ts.map +1 -0
- package/dist/express/FonRouter.js +151 -0
- package/dist/express/FonRouter.js.map +1 -0
- package/dist/express/error-handler.d.ts +10 -0
- package/dist/express/error-handler.d.ts.map +1 -0
- package/dist/express/error-handler.js +55 -0
- package/dist/express/error-handler.js.map +1 -0
- package/dist/express/index.d.ts +33 -0
- package/dist/express/index.d.ts.map +1 -0
- package/dist/express/index.js +41 -0
- package/dist/express/index.js.map +1 -0
- package/dist/express/route-registry.d.ts +33 -0
- package/dist/express/route-registry.d.ts.map +1 -0
- package/dist/express/route-registry.js +52 -0
- package/dist/express/route-registry.js.map +1 -0
- package/dist/express/transform-middleware.d.ts +21 -0
- package/dist/express/transform-middleware.d.ts.map +1 -0
- package/dist/express/transform-middleware.js +62 -0
- package/dist/express/transform-middleware.js.map +1 -0
- package/dist/express/types.d.ts +73 -0
- package/dist/express/types.d.ts.map +1 -0
- package/dist/express/types.js +3 -0
- package/dist/express/types.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base/Provider.d.ts +17 -0
- package/dist/providers/base/Provider.d.ts.map +1 -0
- package/dist/providers/base/Provider.js +43 -0
- package/dist/providers/base/Provider.js.map +1 -0
- package/dist/providers/base/index.d.ts +3 -0
- package/dist/providers/base/index.d.ts.map +1 -0
- package/dist/providers/base/index.js +21 -0
- package/dist/providers/base/index.js.map +1 -0
- package/dist/providers/base/prompt-builder.d.ts +22 -0
- package/dist/providers/base/prompt-builder.d.ts.map +1 -0
- package/dist/providers/base/prompt-builder.js +105 -0
- package/dist/providers/base/prompt-builder.js.map +1 -0
- package/dist/providers/gemini/GeminiProvider.d.ts +16 -0
- package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -0
- package/dist/providers/gemini/GeminiProvider.js +48 -0
- package/dist/providers/gemini/GeminiProvider.js.map +1 -0
- package/dist/providers/gemini/gemini-client.d.ts +16 -0
- package/dist/providers/gemini/gemini-client.d.ts.map +1 -0
- package/dist/providers/gemini/gemini-client.js +83 -0
- package/dist/providers/gemini/gemini-client.js.map +1 -0
- package/dist/providers/gemini/index.d.ts +3 -0
- package/dist/providers/gemini/index.d.ts.map +1 -0
- package/dist/providers/gemini/index.js +8 -0
- package/dist/providers/gemini/index.js.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +27 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama/OllamaProvider.d.ts +17 -0
- package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -0
- package/dist/providers/ollama/OllamaProvider.js +47 -0
- package/dist/providers/ollama/OllamaProvider.js.map +1 -0
- package/dist/providers/ollama/index.d.ts +3 -0
- package/dist/providers/ollama/index.d.ts.map +1 -0
- package/dist/providers/ollama/index.js +8 -0
- package/dist/providers/ollama/index.js.map +1 -0
- package/dist/providers/ollama/ollama-client.d.ts +17 -0
- package/dist/providers/ollama/ollama-client.d.ts.map +1 -0
- package/dist/providers/ollama/ollama-client.js +83 -0
- package/dist/providers/ollama/ollama-client.js.map +1 -0
- package/dist/providers/openai/OpenAIProvider.d.ts +16 -0
- package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -0
- package/dist/providers/openai/OpenAIProvider.js +48 -0
- package/dist/providers/openai/OpenAIProvider.js.map +1 -0
- package/dist/providers/openai/index.d.ts +3 -0
- package/dist/providers/openai/index.d.ts.map +1 -0
- package/dist/providers/openai/index.js +8 -0
- package/dist/providers/openai/index.js.map +1 -0
- package/dist/providers/openai/openai-client.d.ts +16 -0
- package/dist/providers/openai/openai-client.d.ts.map +1 -0
- package/dist/providers/openai/openai-client.js +85 -0
- package/dist/providers/openai/openai-client.js.map +1 -0
- package/dist/schema/SchemaAdapter.d.ts +34 -0
- package/dist/schema/SchemaAdapter.d.ts.map +1 -0
- package/dist/schema/SchemaAdapter.js +59 -0
- package/dist/schema/SchemaAdapter.js.map +1 -0
- package/dist/schema/field-extractor.d.ts +10 -0
- package/dist/schema/field-extractor.d.ts.map +1 -0
- package/dist/schema/field-extractor.js +58 -0
- package/dist/schema/field-extractor.js.map +1 -0
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +13 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/normalizer.d.ts +6 -0
- package/dist/schema/normalizer.d.ts.map +1 -0
- package/dist/schema/normalizer.js +17 -0
- package/dist/schema/normalizer.js.map +1 -0
- package/dist/schema/validator.d.ts +17 -0
- package/dist/schema/validator.d.ts.map +1 -0
- package/dist/schema/validator.js +50 -0
- package/dist/schema/validator.js.map +1 -0
- package/dist/security/index.d.ts +5 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +21 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-validator.d.ts +6 -0
- package/dist/security/input-validator.d.ts.map +1 -0
- package/dist/security/input-validator.js +76 -0
- package/dist/security/input-validator.js.map +1 -0
- package/dist/security/prompt-sanitizer.d.ts +12 -0
- package/dist/security/prompt-sanitizer.d.ts.map +1 -0
- package/dist/security/prompt-sanitizer.js +66 -0
- package/dist/security/prompt-sanitizer.js.map +1 -0
- package/dist/security/redactor.d.ts +5 -0
- package/dist/security/redactor.d.ts.map +1 -0
- package/dist/security/redactor.js +37 -0
- package/dist/security/redactor.js.map +1 -0
- package/dist/security/security-config.d.ts +10 -0
- package/dist/security/security-config.d.ts.map +1 -0
- package/dist/security/security-config.js +26 -0
- package/dist/security/security-config.js.map +1 -0
- package/dist/trace/TraceBuilder.d.ts +58 -0
- package/dist/trace/TraceBuilder.d.ts.map +1 -0
- package/dist/trace/TraceBuilder.js +117 -0
- package/dist/trace/TraceBuilder.js.map +1 -0
- package/dist/trace/confidence-analyzer.d.ts +6 -0
- package/dist/trace/confidence-analyzer.d.ts.map +1 -0
- package/dist/trace/confidence-analyzer.js +30 -0
- package/dist/trace/confidence-analyzer.js.map +1 -0
- package/dist/trace/index.d.ts +4 -0
- package/dist/trace/index.d.ts.map +1 -0
- package/dist/trace/index.js +22 -0
- package/dist/trace/index.js.map +1 -0
- package/dist/trace/trace-utils.d.ts +20 -0
- package/dist/trace/trace-utils.d.ts.map +1 -0
- package/dist/trace/trace-utils.js +33 -0
- package/dist/trace/trace-utils.js.map +1 -0
- package/dist/transform.d.ts +30 -0
- package/dist/transform.d.ts.map +1 -0
- package/dist/transform.js +62 -0
- package/dist/transform.js.map +1 -0
- package/dist/types/cache.types.d.ts +41 -0
- package/dist/types/cache.types.d.ts.map +1 -0
- package/dist/types/cache.types.js +3 -0
- package/dist/types/cache.types.js.map +1 -0
- package/dist/types/errors.types.d.ts +22 -0
- package/dist/types/errors.types.d.ts.map +1 -0
- package/dist/types/errors.types.js +31 -0
- package/dist/types/errors.types.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mapping.types.d.ts +48 -0
- package/dist/types/mapping.types.d.ts.map +1 -0
- package/dist/types/mapping.types.js +3 -0
- package/dist/types/mapping.types.js.map +1 -0
- package/dist/types/provider.types.d.ts +62 -0
- package/dist/types/provider.types.d.ts.map +1 -0
- package/dist/types/provider.types.js +3 -0
- package/dist/types/provider.types.js.map +1 -0
- package/dist/types/schema.types.d.ts +68 -0
- package/dist/types/schema.types.d.ts.map +1 -0
- package/dist/types/schema.types.js +3 -0
- package/dist/types/schema.types.js.map +1 -0
- package/dist/types/security.types.d.ts +32 -0
- package/dist/types/security.types.d.ts.map +1 -0
- package/dist/types/security.types.js +3 -0
- package/dist/types/security.types.js.map +1 -0
- package/dist/types/trace.types.d.ts +129 -0
- package/dist/types/trace.types.d.ts.map +1 -0
- package/dist/types/trace.types.js +3 -0
- package/dist/types/trace.types.js.map +1 -0
- package/dist/types/transform.types.d.ts +56 -0
- package/dist/types/transform.types.d.ts.map +1 -0
- package/dist/types/transform.types.js +3 -0
- package/dist/types/transform.types.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeminiProvider = void 0;
|
|
4
|
+
const Provider_1 = require("../base/Provider");
|
|
5
|
+
const prompt_builder_1 = require("../base/prompt-builder");
|
|
6
|
+
const gemini_client_1 = require("./gemini-client");
|
|
7
|
+
const errors_1 = require("../../errors");
|
|
8
|
+
/**
|
|
9
|
+
* Google Gemini provider implementation
|
|
10
|
+
*/
|
|
11
|
+
class GeminiProvider extends Provider_1.Provider {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
super();
|
|
14
|
+
this.name = 'gemini';
|
|
15
|
+
this.promptVersion = 'v1.0.0';
|
|
16
|
+
if (!config.apiKey) {
|
|
17
|
+
throw new Error('Gemini API key is required');
|
|
18
|
+
}
|
|
19
|
+
this.client = new gemini_client_1.GeminiClient(config);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Propose a mapping plan using Gemini
|
|
23
|
+
*/
|
|
24
|
+
async proposeMappingPlan(input, schema, options) {
|
|
25
|
+
try {
|
|
26
|
+
// Build prompts
|
|
27
|
+
const { systemPrompt, userPrompt } = (0, prompt_builder_1.buildMappingPrompt)(schema, input, options.confidenceThreshold, options.security.includeValues || false);
|
|
28
|
+
// Call Gemini API
|
|
29
|
+
const response = await this.client.generateContent(systemPrompt, userPrompt);
|
|
30
|
+
// Parse and validate mapping plan
|
|
31
|
+
try {
|
|
32
|
+
return this.parseMappingPlan(response);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw (0, errors_1.createMappingPlanParseError)(`Failed to parse Gemini response as mapping plan: ${error instanceof Error ? error.message : String(error)}`, { rawResponse: response });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error instanceof Error &&
|
|
40
|
+
(error.message.includes('mapping plan') || error.message.includes('Gemini API'))) {
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
throw (0, errors_1.createProviderError)(`Gemini provider failed: ${error instanceof Error ? error.message : String(error)}`, { originalError: error });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.GeminiProvider = GeminiProvider;
|
|
48
|
+
//# sourceMappingURL=GeminiProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeminiProvider.js","sourceRoot":"","sources":["../../../src/providers/gemini/GeminiProvider.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,2DAA4D;AAC5D,mDAA+C;AAC/C,yCAAgF;AAEhF;;GAEG;AACH,MAAa,cAAe,SAAQ,mBAAQ;IAM1C,YAAY,MAAsB;QAChC,KAAK,EAAE,CAAC;QAND,SAAI,GAAG,QAAQ,CAAC;QAChB,kBAAa,GAAG,QAAQ,CAAC;QAOhC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAY,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,KAAc,EACd,MAAwB,EACxB,OAAwB;QAExB,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAA,mCAAkB,EACrD,MAAM,EACN,KAAK,EACL,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,IAAI,KAAK,CACxC,CAAC;YAEF,kBAAkB;YAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAE7E,kCAAkC;YAClC,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAA,oCAA2B,EAC/B,oDACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,EACF,EAAE,WAAW,EAAE,QAAQ,EAAE,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,KAAK;gBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAChF,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAA,4BAAmB,EACvB,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACnF,EAAE,aAAa,EAAE,KAAK,EAAE,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA7DD,wCA6DC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ProviderConfig } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Gemini API client
|
|
4
|
+
*/
|
|
5
|
+
export declare class GeminiClient {
|
|
6
|
+
private apiKey;
|
|
7
|
+
private model;
|
|
8
|
+
private baseUrl;
|
|
9
|
+
private timeout;
|
|
10
|
+
constructor(config: ProviderConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Generate content using Gemini API
|
|
13
|
+
*/
|
|
14
|
+
generateContent(systemPrompt: string, userPrompt: string): Promise<string>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=gemini-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-client.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/gemini-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,cAAc;IAUlC;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA0EjF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeminiClient = void 0;
|
|
4
|
+
const errors_1 = require("../../errors");
|
|
5
|
+
/**
|
|
6
|
+
* Gemini API client
|
|
7
|
+
*/
|
|
8
|
+
class GeminiClient {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
if (!config.apiKey) {
|
|
11
|
+
throw new Error('Gemini API key is required');
|
|
12
|
+
}
|
|
13
|
+
this.apiKey = config.apiKey;
|
|
14
|
+
this.model = config.model || 'gemini-1.5-flash';
|
|
15
|
+
this.baseUrl = config.baseUrl || 'https://generativelanguage.googleapis.com/v1beta';
|
|
16
|
+
this.timeout = config.timeout || 30000;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generate content using Gemini API
|
|
20
|
+
*/
|
|
21
|
+
async generateContent(systemPrompt, userPrompt) {
|
|
22
|
+
const url = `${this.baseUrl}/models/${this.model}:generateContent?key=${this.apiKey}`;
|
|
23
|
+
const payload = {
|
|
24
|
+
system_instruction: {
|
|
25
|
+
parts: [{ text: systemPrompt }],
|
|
26
|
+
},
|
|
27
|
+
contents: [
|
|
28
|
+
{
|
|
29
|
+
role: 'user',
|
|
30
|
+
parts: [{ text: userPrompt }],
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
generationConfig: {
|
|
34
|
+
temperature: 0.1, // Low temperature for deterministic output
|
|
35
|
+
topP: 0.95,
|
|
36
|
+
topK: 40,
|
|
37
|
+
maxOutputTokens: 8192,
|
|
38
|
+
responseMimeType: 'application/json', // Request JSON output
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
try {
|
|
42
|
+
const controller = new AbortController();
|
|
43
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
44
|
+
const response = await fetch(url, {
|
|
45
|
+
method: 'POST',
|
|
46
|
+
headers: {
|
|
47
|
+
'Content-Type': 'application/json',
|
|
48
|
+
},
|
|
49
|
+
body: JSON.stringify(payload),
|
|
50
|
+
signal: controller.signal,
|
|
51
|
+
});
|
|
52
|
+
clearTimeout(timeoutId);
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
const errorBody = await response.text();
|
|
55
|
+
throw (0, errors_1.createProviderError)(`Gemini API error (${response.status}): ${errorBody}`, {
|
|
56
|
+
status: response.status,
|
|
57
|
+
body: errorBody,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const data = (await response.json());
|
|
61
|
+
// Extract text from response
|
|
62
|
+
if (!data.candidates ||
|
|
63
|
+
!data.candidates[0] ||
|
|
64
|
+
!data.candidates[0].content ||
|
|
65
|
+
!data.candidates[0].content.parts ||
|
|
66
|
+
!data.candidates[0].content.parts[0]) {
|
|
67
|
+
throw (0, errors_1.createProviderError)('Invalid Gemini API response structure', { response: data });
|
|
68
|
+
}
|
|
69
|
+
return data.candidates[0].content.parts[0].text;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
73
|
+
throw (0, errors_1.createProviderError)(`Gemini API request timed out after ${this.timeout}ms`);
|
|
74
|
+
}
|
|
75
|
+
if (error instanceof Error && error.message.includes('Gemini API')) {
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
throw (0, errors_1.createProviderError)(`Gemini API request failed: ${error instanceof Error ? error.message : String(error)}`, { originalError: error });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.GeminiClient = GeminiClient;
|
|
83
|
+
//# sourceMappingURL=gemini-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-client.js","sourceRoot":"","sources":["../../../src/providers/gemini/gemini-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeminiClient = exports.GeminiProvider = void 0;
|
|
4
|
+
var GeminiProvider_1 = require("./GeminiProvider");
|
|
5
|
+
Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return GeminiProvider_1.GeminiProvider; } });
|
|
6
|
+
var gemini_client_1 = require("./gemini-client");
|
|
7
|
+
Object.defineProperty(exports, "GeminiClient", { enumerable: true, get: function () { return gemini_client_1.GeminiClient; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/gemini/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.OllamaProvider = exports.OpenAIProvider = exports.GeminiProvider = exports.Provider = void 0;
|
|
18
|
+
var Provider_1 = require("./base/Provider");
|
|
19
|
+
Object.defineProperty(exports, "Provider", { enumerable: true, get: function () { return Provider_1.Provider; } });
|
|
20
|
+
__exportStar(require("./base/prompt-builder"), exports);
|
|
21
|
+
var gemini_1 = require("./gemini");
|
|
22
|
+
Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return gemini_1.GeminiProvider; } });
|
|
23
|
+
var openai_1 = require("./openai");
|
|
24
|
+
Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return openai_1.OpenAIProvider; } });
|
|
25
|
+
var ollama_1 = require("./ollama");
|
|
26
|
+
Object.defineProperty(exports, "OllamaProvider", { enumerable: true, get: function () { return ollama_1.OllamaProvider; } });
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4CAA2C;AAAlC,oGAAA,QAAQ,OAAA;AACjB,wDAAsC;AACtC,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AACvB,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AACvB,mCAA0C;AAAjC,wGAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Provider } from '../base/Provider';
|
|
2
|
+
import { MappingPlan, NormalizedSchema, ProposalOptions, ProviderConfig } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Ollama provider implementation
|
|
5
|
+
* Supports both local Ollama installations and hosted versions
|
|
6
|
+
*/
|
|
7
|
+
export declare class OllamaProvider extends Provider {
|
|
8
|
+
readonly name = "ollama";
|
|
9
|
+
readonly promptVersion = "v1.0.0";
|
|
10
|
+
private client;
|
|
11
|
+
constructor(config: ProviderConfig);
|
|
12
|
+
/**
|
|
13
|
+
* Propose a mapping plan using Ollama
|
|
14
|
+
*/
|
|
15
|
+
proposeMappingPlan(input: unknown, schema: NormalizedSchema, options: ProposalOptions): Promise<MappingPlan>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=OllamaProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OllamaProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/ollama/OllamaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAK7F;;;GAGG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,aAAa,YAAY;IAElC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,cAAc;IAOlC;;OAEG;IACG,kBAAkB,CACtB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,WAAW,CAAC;CAsCxB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OllamaProvider = void 0;
|
|
4
|
+
const Provider_1 = require("../base/Provider");
|
|
5
|
+
const prompt_builder_1 = require("../base/prompt-builder");
|
|
6
|
+
const ollama_client_1 = require("./ollama-client");
|
|
7
|
+
const errors_1 = require("../../errors");
|
|
8
|
+
/**
|
|
9
|
+
* Ollama provider implementation
|
|
10
|
+
* Supports both local Ollama installations and hosted versions
|
|
11
|
+
*/
|
|
12
|
+
class OllamaProvider extends Provider_1.Provider {
|
|
13
|
+
constructor(config) {
|
|
14
|
+
super();
|
|
15
|
+
this.name = 'ollama';
|
|
16
|
+
this.promptVersion = 'v1.0.0';
|
|
17
|
+
// API key is optional for local Ollama
|
|
18
|
+
this.client = new ollama_client_1.OllamaClient(config);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Propose a mapping plan using Ollama
|
|
22
|
+
*/
|
|
23
|
+
async proposeMappingPlan(input, schema, options) {
|
|
24
|
+
try {
|
|
25
|
+
// Build prompts
|
|
26
|
+
const { systemPrompt, userPrompt } = (0, prompt_builder_1.buildMappingPrompt)(schema, input, options.confidenceThreshold, options.security.includeValues || false);
|
|
27
|
+
// Call Ollama API
|
|
28
|
+
const response = await this.client.generateContent(systemPrompt, userPrompt);
|
|
29
|
+
// Parse and validate mapping plan
|
|
30
|
+
try {
|
|
31
|
+
return this.parseMappingPlan(response);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw (0, errors_1.createMappingPlanParseError)(`Failed to parse Ollama response as mapping plan: ${error instanceof Error ? error.message : String(error)}`, { rawResponse: response });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error instanceof Error &&
|
|
39
|
+
(error.message.includes('mapping plan') || error.message.includes('Ollama API'))) {
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
throw (0, errors_1.createProviderError)(`Ollama provider failed: ${error instanceof Error ? error.message : String(error)}`, { originalError: error });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.OllamaProvider = OllamaProvider;
|
|
47
|
+
//# sourceMappingURL=OllamaProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OllamaProvider.js","sourceRoot":"","sources":["../../../src/providers/ollama/OllamaProvider.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,2DAA4D;AAC5D,mDAA+C;AAC/C,yCAAgF;AAEhF;;;GAGG;AACH,MAAa,cAAe,SAAQ,mBAAQ;IAM1C,YAAY,MAAsB;QAChC,KAAK,EAAE,CAAC;QAND,SAAI,GAAG,QAAQ,CAAC;QAChB,kBAAa,GAAG,QAAQ,CAAC;QAOhC,uCAAuC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAY,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,KAAc,EACd,MAAwB,EACxB,OAAwB;QAExB,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAA,mCAAkB,EACrD,MAAM,EACN,KAAK,EACL,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,IAAI,KAAK,CACxC,CAAC;YAEF,kBAAkB;YAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAE7E,kCAAkC;YAClC,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAA,oCAA2B,EAC/B,oDACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,EACF,EAAE,WAAW,EAAE,QAAQ,EAAE,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,KAAK;gBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAChF,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAA,4BAAmB,EACvB,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACnF,EAAE,aAAa,EAAE,KAAK,EAAE,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA1DD,wCA0DC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ollama/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OllamaClient = exports.OllamaProvider = void 0;
|
|
4
|
+
var OllamaProvider_1 = require("./OllamaProvider");
|
|
5
|
+
Object.defineProperty(exports, "OllamaProvider", { enumerable: true, get: function () { return OllamaProvider_1.OllamaProvider; } });
|
|
6
|
+
var ollama_client_1 = require("./ollama-client");
|
|
7
|
+
Object.defineProperty(exports, "OllamaClient", { enumerable: true, get: function () { return ollama_client_1.OllamaClient; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/ollama/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ProviderConfig } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Ollama API client
|
|
4
|
+
* Supports both local Ollama (http://localhost:11434) and hosted versions
|
|
5
|
+
*/
|
|
6
|
+
export declare class OllamaClient {
|
|
7
|
+
private apiKey?;
|
|
8
|
+
private model;
|
|
9
|
+
private baseUrl;
|
|
10
|
+
private timeout;
|
|
11
|
+
constructor(config: ProviderConfig);
|
|
12
|
+
/**
|
|
13
|
+
* Generate content using Ollama API
|
|
14
|
+
*/
|
|
15
|
+
generateContent(systemPrompt: string, userPrompt: string): Promise<string>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ollama-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-client.d.ts","sourceRoot":"","sources":["../../../src/providers/ollama/ollama-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,cAAc;IAOlC;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA4EjF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OllamaClient = void 0;
|
|
4
|
+
const errors_1 = require("../../errors");
|
|
5
|
+
/**
|
|
6
|
+
* Ollama API client
|
|
7
|
+
* Supports both local Ollama (http://localhost:11434) and hosted versions
|
|
8
|
+
*/
|
|
9
|
+
class OllamaClient {
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.apiKey = config.apiKey; // Optional for local Ollama
|
|
12
|
+
this.model = config.model || 'llama2';
|
|
13
|
+
this.baseUrl = config.baseUrl || 'http://localhost:11434';
|
|
14
|
+
this.timeout = config.timeout || 30000;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generate content using Ollama API
|
|
18
|
+
*/
|
|
19
|
+
async generateContent(systemPrompt, userPrompt) {
|
|
20
|
+
const url = `${this.baseUrl}/api/chat`;
|
|
21
|
+
const payload = {
|
|
22
|
+
model: this.model,
|
|
23
|
+
messages: [
|
|
24
|
+
{
|
|
25
|
+
role: 'system',
|
|
26
|
+
content: systemPrompt,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
role: 'user',
|
|
30
|
+
content: userPrompt,
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
stream: false,
|
|
34
|
+
options: {
|
|
35
|
+
temperature: 0.1, // Low temperature for deterministic output
|
|
36
|
+
num_predict: 8192,
|
|
37
|
+
},
|
|
38
|
+
format: 'json', // Request JSON output
|
|
39
|
+
};
|
|
40
|
+
try {
|
|
41
|
+
const controller = new AbortController();
|
|
42
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
43
|
+
const headers = {
|
|
44
|
+
'Content-Type': 'application/json',
|
|
45
|
+
};
|
|
46
|
+
// Add API key if provided (for hosted Ollama)
|
|
47
|
+
if (this.apiKey) {
|
|
48
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
49
|
+
}
|
|
50
|
+
const response = await fetch(url, {
|
|
51
|
+
method: 'POST',
|
|
52
|
+
headers,
|
|
53
|
+
body: JSON.stringify(payload),
|
|
54
|
+
signal: controller.signal,
|
|
55
|
+
});
|
|
56
|
+
clearTimeout(timeoutId);
|
|
57
|
+
if (!response.ok) {
|
|
58
|
+
const errorBody = await response.text();
|
|
59
|
+
throw (0, errors_1.createProviderError)(`Ollama API error (${response.status}): ${errorBody}`, {
|
|
60
|
+
status: response.status,
|
|
61
|
+
body: errorBody,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const data = (await response.json());
|
|
65
|
+
// Extract text from response
|
|
66
|
+
if (!data.message || !data.message.content) {
|
|
67
|
+
throw (0, errors_1.createProviderError)('Invalid Ollama API response structure', { response: data });
|
|
68
|
+
}
|
|
69
|
+
return data.message.content;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
73
|
+
throw (0, errors_1.createProviderError)(`Ollama API request timed out after ${this.timeout}ms`);
|
|
74
|
+
}
|
|
75
|
+
if (error instanceof Error && error.message.includes('Ollama API')) {
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
throw (0, errors_1.createProviderError)(`Ollama API request failed: ${error instanceof Error ? error.message : String(error)}`, { originalError: error });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.OllamaClient = OllamaClient;
|
|
83
|
+
//# sourceMappingURL=ollama-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-client.js","sourceRoot":"","sources":["../../../src/providers/ollama/ollama-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Provider } from '../base/Provider';
|
|
2
|
+
import { MappingPlan, NormalizedSchema, ProposalOptions, ProviderConfig } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* OpenAI provider implementation
|
|
5
|
+
*/
|
|
6
|
+
export declare class OpenAIProvider extends Provider {
|
|
7
|
+
readonly name = "openai";
|
|
8
|
+
readonly promptVersion = "v1.0.0";
|
|
9
|
+
private client;
|
|
10
|
+
constructor(config: ProviderConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Propose a mapping plan using OpenAI
|
|
13
|
+
*/
|
|
14
|
+
proposeMappingPlan(input: unknown, schema: NormalizedSchema, options: ProposalOptions): Promise<MappingPlan>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=OpenAIProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/OpenAIProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAK7F;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,aAAa,YAAY;IAElC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,cAAc;IAUlC;;OAEG;IACG,kBAAkB,CACtB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,WAAW,CAAC;CAsCxB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenAIProvider = void 0;
|
|
4
|
+
const Provider_1 = require("../base/Provider");
|
|
5
|
+
const prompt_builder_1 = require("../base/prompt-builder");
|
|
6
|
+
const openai_client_1 = require("./openai-client");
|
|
7
|
+
const errors_1 = require("../../errors");
|
|
8
|
+
/**
|
|
9
|
+
* OpenAI provider implementation
|
|
10
|
+
*/
|
|
11
|
+
class OpenAIProvider extends Provider_1.Provider {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
super();
|
|
14
|
+
this.name = 'openai';
|
|
15
|
+
this.promptVersion = 'v1.0.0';
|
|
16
|
+
if (!config.apiKey) {
|
|
17
|
+
throw new Error('OpenAI API key is required');
|
|
18
|
+
}
|
|
19
|
+
this.client = new openai_client_1.OpenAIClient(config);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Propose a mapping plan using OpenAI
|
|
23
|
+
*/
|
|
24
|
+
async proposeMappingPlan(input, schema, options) {
|
|
25
|
+
try {
|
|
26
|
+
// Build prompts
|
|
27
|
+
const { systemPrompt, userPrompt } = (0, prompt_builder_1.buildMappingPrompt)(schema, input, options.confidenceThreshold, options.security.includeValues || false);
|
|
28
|
+
// Call OpenAI API
|
|
29
|
+
const response = await this.client.generateContent(systemPrompt, userPrompt);
|
|
30
|
+
// Parse and validate mapping plan
|
|
31
|
+
try {
|
|
32
|
+
return this.parseMappingPlan(response);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw (0, errors_1.createMappingPlanParseError)(`Failed to parse OpenAI response as mapping plan: ${error instanceof Error ? error.message : String(error)}`, { rawResponse: response });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error instanceof Error &&
|
|
40
|
+
(error.message.includes('mapping plan') || error.message.includes('OpenAI API'))) {
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
throw (0, errors_1.createProviderError)(`OpenAI provider failed: ${error instanceof Error ? error.message : String(error)}`, { originalError: error });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.OpenAIProvider = OpenAIProvider;
|
|
48
|
+
//# sourceMappingURL=OpenAIProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../../src/providers/openai/OpenAIProvider.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,2DAA4D;AAC5D,mDAA+C;AAC/C,yCAAgF;AAEhF;;GAEG;AACH,MAAa,cAAe,SAAQ,mBAAQ;IAM1C,YAAY,MAAsB;QAChC,KAAK,EAAE,CAAC;QAND,SAAI,GAAG,QAAQ,CAAC;QAChB,kBAAa,GAAG,QAAQ,CAAC;QAOhC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAY,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,KAAc,EACd,MAAwB,EACxB,OAAwB;QAExB,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAA,mCAAkB,EACrD,MAAM,EACN,KAAK,EACL,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,IAAI,KAAK,CACxC,CAAC;YAEF,kBAAkB;YAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAE7E,kCAAkC;YAClC,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAA,oCAA2B,EAC/B,oDACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,EACF,EAAE,WAAW,EAAE,QAAQ,EAAE,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,KAAK;gBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAChF,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAA,4BAAmB,EACvB,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACnF,EAAE,aAAa,EAAE,KAAK,EAAE,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA7DD,wCA6DC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenAIClient = exports.OpenAIProvider = void 0;
|
|
4
|
+
var OpenAIProvider_1 = require("./OpenAIProvider");
|
|
5
|
+
Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return OpenAIProvider_1.OpenAIProvider; } });
|
|
6
|
+
var openai_client_1 = require("./openai-client");
|
|
7
|
+
Object.defineProperty(exports, "OpenAIClient", { enumerable: true, get: function () { return openai_client_1.OpenAIClient; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/openai/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ProviderConfig } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* OpenAI API client
|
|
4
|
+
*/
|
|
5
|
+
export declare class OpenAIClient {
|
|
6
|
+
private apiKey;
|
|
7
|
+
private model;
|
|
8
|
+
private baseUrl;
|
|
9
|
+
private timeout;
|
|
10
|
+
constructor(config: ProviderConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Generate content using OpenAI Chat Completions API
|
|
13
|
+
*/
|
|
14
|
+
generateContent(systemPrompt: string, userPrompt: string): Promise<string>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=openai-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-client.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/openai-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,cAAc;IAUlC;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA6EjF"}
|