@mate-academy/llm-gateway 2.3.0 → 2.4.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/README.md +159 -0
- package/dist/LLMService.typedefs.d.ts +9 -0
- package/dist/LLMService.typedefs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.js +1 -1
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.js.map +1 -1
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.entity.d.ts +4 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.entity.js +2 -1
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.entity.js.map +1 -1
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.d.ts +7 -1
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js +77 -1
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js.map +1 -1
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAICompletion.service.d.ts +7 -1
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAICompletion.service.js +79 -2
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAICompletion.service.js.map +1 -1
- package/dist/providers/OpenAI/OpenAI.constants.js +1 -1
- package/dist/providers/OpenAI/OpenAI.constants.js.map +1 -1
- package/dist/providers/OpenAI/services/OpenAIAssistance.service.d.ts +7 -1
- package/dist/providers/OpenAI/services/OpenAIAssistance.service.js +117 -3
- package/dist/providers/OpenAI/services/OpenAIAssistance.service.js.map +1 -1
- package/dist/providers/OpenAI/services/OpenAICompletion.service.d.ts +7 -1
- package/dist/providers/OpenAI/services/OpenAICompletion.service.js +86 -2
- package/dist/providers/OpenAI/services/OpenAICompletion.service.js.map +1 -1
- package/dist/services/LLMAssistanceService.abstract.d.ts +8 -1
- package/dist/services/LLMAssistanceService.abstract.js.map +1 -1
- package/dist/services/LLMCompletionService.abstract.d.ts +8 -1
- package/dist/services/LLMCompletionService.abstract.js.map +1 -1
- package/dist/utilities/functional.utils.js.map +1 -0
- package/dist/utilities/index.d.ts +3 -0
- package/dist/utilities/index.js +22 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/promptBuilder.js.map +1 -0
- package/dist/utilities/schema/AbstractSchemaBuilder.d.ts +50 -0
- package/dist/utilities/schema/AbstractSchemaBuilder.js +11 -0
- package/dist/utilities/schema/AbstractSchemaBuilder.js.map +1 -0
- package/dist/utilities/schema/LLMSchema.d.ts +119 -0
- package/dist/utilities/schema/LLMSchema.js +286 -0
- package/dist/utilities/schema/LLMSchema.js.map +1 -0
- package/dist/utilities/schema/LLMSchemaInterface.d.ts +47 -0
- package/dist/utilities/schema/LLMSchemaInterface.js +3 -0
- package/dist/utilities/schema/LLMSchemaInterface.js.map +1 -0
- package/dist/utilities/schema/index.d.ts +3 -0
- package/dist/utilities/schema/index.js +11 -0
- package/dist/utilities/schema/index.js.map +1 -0
- package/package.json +19 -11
- package/dist/functional.utils.js.map +0 -1
- package/dist/promptBuilder.js.map +0 -1
- /package/dist/{functional.utils.d.ts → utilities/functional.utils.d.ts} +0 -0
- /package/dist/{functional.utils.js → utilities/functional.utils.js} +0 -0
- /package/dist/{promptBuilder.d.ts → utilities/promptBuilder.d.ts} +0 -0
- /package/dist/{promptBuilder.js → utilities/promptBuilder.js} +0 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LLMSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
6
|
+
const genai_1 = require("@google/genai");
|
|
7
|
+
/**
|
|
8
|
+
* Concrete implementation of schema builder using Zod as the underlying validator.
|
|
9
|
+
* This implementation can be replaced with another validator without changing the public API.
|
|
10
|
+
*/
|
|
11
|
+
class LLMSchema {
|
|
12
|
+
zodSchema;
|
|
13
|
+
constructor(zodSchema) {
|
|
14
|
+
this.zodSchema = zodSchema;
|
|
15
|
+
}
|
|
16
|
+
// ============ Factory Methods ============
|
|
17
|
+
/**
|
|
18
|
+
* Creates a string schema
|
|
19
|
+
*/
|
|
20
|
+
static string() {
|
|
21
|
+
return new LLMSchema(zod_1.z.string());
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates a number schema
|
|
25
|
+
*/
|
|
26
|
+
static number() {
|
|
27
|
+
return new LLMSchema(zod_1.z.number());
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a boolean schema
|
|
31
|
+
*/
|
|
32
|
+
static boolean() {
|
|
33
|
+
return new LLMSchema(zod_1.z.boolean());
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Creates an object schema
|
|
37
|
+
*/
|
|
38
|
+
static object(shape) {
|
|
39
|
+
const zodShape = {};
|
|
40
|
+
for (const [key, schema] of Object.entries(shape)) {
|
|
41
|
+
zodShape[key] = schema.zodSchema;
|
|
42
|
+
}
|
|
43
|
+
return new LLMSchema(zod_1.z.object(zodShape));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Creates an array schema
|
|
47
|
+
*/
|
|
48
|
+
static array(itemSchema) {
|
|
49
|
+
return new LLMSchema(zod_1.z.array(itemSchema.zodSchema));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Creates an enum schema
|
|
53
|
+
*/
|
|
54
|
+
static enum(values) {
|
|
55
|
+
return new LLMSchema(zod_1.z.enum(values));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Creates a union schema
|
|
59
|
+
*/
|
|
60
|
+
static union(schemas) {
|
|
61
|
+
const zodSchemas = schemas.map(s => s.zodSchema);
|
|
62
|
+
return new LLMSchema(zod_1.z.union(zodSchemas));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Creates a literal schema
|
|
66
|
+
*/
|
|
67
|
+
static literal(value) {
|
|
68
|
+
return new LLMSchema(zod_1.z.literal(value));
|
|
69
|
+
}
|
|
70
|
+
// ============ Modifier Methods ============
|
|
71
|
+
/**
|
|
72
|
+
* Makes the schema optional
|
|
73
|
+
*/
|
|
74
|
+
optional() {
|
|
75
|
+
return new LLMSchema(this.zodSchema.optional());
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Makes the schema nullable
|
|
79
|
+
*/
|
|
80
|
+
nullable() {
|
|
81
|
+
return new LLMSchema(this.zodSchema.nullable());
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Sets a default value
|
|
85
|
+
*/
|
|
86
|
+
default(value) {
|
|
87
|
+
return new LLMSchema(this.zodSchema.default(value));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Adds a description (for documentation)
|
|
91
|
+
*/
|
|
92
|
+
describe(description) {
|
|
93
|
+
return new LLMSchema(this.zodSchema.describe(description));
|
|
94
|
+
}
|
|
95
|
+
// ============ String-specific Modifiers ============
|
|
96
|
+
/**
|
|
97
|
+
* Sets minimum string length
|
|
98
|
+
*/
|
|
99
|
+
min(length) {
|
|
100
|
+
if (this.zodSchema instanceof zod_1.z.ZodString) {
|
|
101
|
+
return new LLMSchema(this.zodSchema.min(length));
|
|
102
|
+
}
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Sets maximum string length
|
|
107
|
+
*/
|
|
108
|
+
max(length) {
|
|
109
|
+
if (this.zodSchema instanceof zod_1.z.ZodString) {
|
|
110
|
+
return new LLMSchema(this.zodSchema.max(length));
|
|
111
|
+
}
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Validates as email
|
|
116
|
+
*/
|
|
117
|
+
email() {
|
|
118
|
+
if (this.zodSchema instanceof zod_1.z.ZodString) {
|
|
119
|
+
return new LLMSchema(this.zodSchema.email());
|
|
120
|
+
}
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validates as URL
|
|
125
|
+
*/
|
|
126
|
+
url() {
|
|
127
|
+
if (this.zodSchema instanceof zod_1.z.ZodString) {
|
|
128
|
+
return new LLMSchema(this.zodSchema.url());
|
|
129
|
+
}
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Validates as UUID
|
|
134
|
+
*/
|
|
135
|
+
uuid() {
|
|
136
|
+
if (this.zodSchema instanceof zod_1.z.ZodString) {
|
|
137
|
+
return new LLMSchema(this.zodSchema.uuid());
|
|
138
|
+
}
|
|
139
|
+
return this;
|
|
140
|
+
}
|
|
141
|
+
// ============ Number-specific Modifiers ============
|
|
142
|
+
/**
|
|
143
|
+
* Validates as integer
|
|
144
|
+
*/
|
|
145
|
+
int() {
|
|
146
|
+
if (this.zodSchema instanceof zod_1.z.ZodNumber) {
|
|
147
|
+
return new LLMSchema(this.zodSchema.int());
|
|
148
|
+
}
|
|
149
|
+
return this;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Validates as positive number
|
|
153
|
+
*/
|
|
154
|
+
positive() {
|
|
155
|
+
if (this.zodSchema instanceof zod_1.z.ZodNumber) {
|
|
156
|
+
return new LLMSchema(this.zodSchema.positive());
|
|
157
|
+
}
|
|
158
|
+
return this;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Validates as negative number
|
|
162
|
+
*/
|
|
163
|
+
negative() {
|
|
164
|
+
if (this.zodSchema instanceof zod_1.z.ZodNumber) {
|
|
165
|
+
return new LLMSchema(this.zodSchema.negative());
|
|
166
|
+
}
|
|
167
|
+
return this;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Validates as non-positive number
|
|
171
|
+
*/
|
|
172
|
+
nonpositive() {
|
|
173
|
+
if (this.zodSchema instanceof zod_1.z.ZodNumber) {
|
|
174
|
+
return new LLMSchema(this.zodSchema.nonpositive());
|
|
175
|
+
}
|
|
176
|
+
return this;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Validates as non-negative number
|
|
180
|
+
*/
|
|
181
|
+
nonnegative() {
|
|
182
|
+
if (this.zodSchema instanceof zod_1.z.ZodNumber) {
|
|
183
|
+
return new LLMSchema(this.zodSchema.nonnegative());
|
|
184
|
+
}
|
|
185
|
+
return this;
|
|
186
|
+
}
|
|
187
|
+
// ============ Internal Methods (Package Use Only) ============
|
|
188
|
+
/**
|
|
189
|
+
* @internal
|
|
190
|
+
* Parses data using the schema
|
|
191
|
+
*/
|
|
192
|
+
_parse(data) {
|
|
193
|
+
const result = this.zodSchema.safeParse(data);
|
|
194
|
+
if (result.success) {
|
|
195
|
+
return {
|
|
196
|
+
success: true,
|
|
197
|
+
data: result.data,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
success: false,
|
|
202
|
+
error: result.error.message,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* @internal
|
|
207
|
+
* Converts schema to OpenAI JSON Schema format
|
|
208
|
+
*/
|
|
209
|
+
_toOpenAISchema() {
|
|
210
|
+
return (0, zod_to_json_schema_1.zodToJsonSchema)(this.zodSchema, {
|
|
211
|
+
target: 'openApi3',
|
|
212
|
+
$refStrategy: 'none',
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* @internal
|
|
217
|
+
* Converts schema to Google Generative AI format
|
|
218
|
+
*/
|
|
219
|
+
_toGoogleSchema() {
|
|
220
|
+
const jsonSchema = (0, zod_to_json_schema_1.zodToJsonSchema)(this.zodSchema, {
|
|
221
|
+
target: 'jsonSchema7',
|
|
222
|
+
$refStrategy: 'none',
|
|
223
|
+
});
|
|
224
|
+
return this._convertJsonSchemaToGoogleFormat(jsonSchema);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* @internal
|
|
228
|
+
* Converts JSON Schema to Google's Type-based format
|
|
229
|
+
*/
|
|
230
|
+
_convertJsonSchemaToGoogleFormat(jsonSchema) {
|
|
231
|
+
// Handle null type
|
|
232
|
+
if (jsonSchema.type === 'null') {
|
|
233
|
+
return { type: genai_1.Type.STRING, nullable: true };
|
|
234
|
+
}
|
|
235
|
+
// Handle arrays with anyOf (for unions)
|
|
236
|
+
if (jsonSchema.anyOf) {
|
|
237
|
+
// For now, we'll use the first type in the union
|
|
238
|
+
// This is a simplification - full union support would be more complex
|
|
239
|
+
return this._convertJsonSchemaToGoogleFormat(jsonSchema.anyOf[0]);
|
|
240
|
+
}
|
|
241
|
+
// Handle objects
|
|
242
|
+
if (jsonSchema.type === 'object') {
|
|
243
|
+
const properties = {};
|
|
244
|
+
const required = jsonSchema.required || [];
|
|
245
|
+
for (const [key, value] of Object.entries(jsonSchema.properties || {})) {
|
|
246
|
+
const convertedProperty = this._convertJsonSchemaToGoogleFormat(value);
|
|
247
|
+
properties[key] = convertedProperty;
|
|
248
|
+
}
|
|
249
|
+
return {
|
|
250
|
+
type: genai_1.Type.OBJECT,
|
|
251
|
+
properties,
|
|
252
|
+
required,
|
|
253
|
+
propertyOrdering: Object.keys(properties),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
// Handle arrays
|
|
257
|
+
if (jsonSchema.type === 'array') {
|
|
258
|
+
return {
|
|
259
|
+
type: genai_1.Type.ARRAY,
|
|
260
|
+
items: this._convertJsonSchemaToGoogleFormat(jsonSchema.items || {}),
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
// Handle strings
|
|
264
|
+
if (jsonSchema.type === 'string') {
|
|
265
|
+
if (jsonSchema.enum) {
|
|
266
|
+
return {
|
|
267
|
+
type: genai_1.Type.STRING,
|
|
268
|
+
enum: jsonSchema.enum,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
return { type: genai_1.Type.STRING };
|
|
272
|
+
}
|
|
273
|
+
// Handle numbers
|
|
274
|
+
if (jsonSchema.type === 'number' || jsonSchema.type === 'integer') {
|
|
275
|
+
return { type: genai_1.Type.NUMBER };
|
|
276
|
+
}
|
|
277
|
+
// Handle booleans
|
|
278
|
+
if (jsonSchema.type === 'boolean') {
|
|
279
|
+
return { type: genai_1.Type.BOOLEAN };
|
|
280
|
+
}
|
|
281
|
+
// Default fallback
|
|
282
|
+
return { type: genai_1.Type.STRING };
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
exports.LLMSchema = LLMSchema;
|
|
286
|
+
//# sourceMappingURL=LLMSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMSchema.js","sourceRoot":"","sources":["../../../src/utilities/schema/LLMSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result of parsing data against a schema
|
|
3
|
+
*/
|
|
4
|
+
export interface ParseResult<T> {
|
|
5
|
+
success: boolean;
|
|
6
|
+
data?: T;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Abstract interface for schema implementations
|
|
11
|
+
* This allows for different validation libraries to be used internally
|
|
12
|
+
*/
|
|
13
|
+
export interface LLMSchemaInterface<T = any> {
|
|
14
|
+
/**
|
|
15
|
+
* Parse and validate data against the schema
|
|
16
|
+
* @internal - Used internally by the package
|
|
17
|
+
*/
|
|
18
|
+
_parse(data: unknown): ParseResult<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Convert schema to OpenAI JSON Schema format
|
|
21
|
+
* @internal - Used internally by the package
|
|
22
|
+
*/
|
|
23
|
+
_toOpenAISchema(): any;
|
|
24
|
+
/**
|
|
25
|
+
* Convert schema to Google Generative AI format
|
|
26
|
+
* @internal - Used internally by the package
|
|
27
|
+
*/
|
|
28
|
+
_toGoogleSchema(): any;
|
|
29
|
+
optional(): LLMSchemaInterface<T | undefined>;
|
|
30
|
+
nullable(): LLMSchemaInterface<T | null>;
|
|
31
|
+
default(value: any): LLMSchemaInterface<T>;
|
|
32
|
+
describe(description: string): LLMSchemaInterface<T>;
|
|
33
|
+
min(length: number): LLMSchemaInterface<T>;
|
|
34
|
+
max(length: number): LLMSchemaInterface<T>;
|
|
35
|
+
email(): LLMSchemaInterface<T>;
|
|
36
|
+
url(): LLMSchemaInterface<T>;
|
|
37
|
+
uuid(): LLMSchemaInterface<T>;
|
|
38
|
+
int(): LLMSchemaInterface<T>;
|
|
39
|
+
positive(): LLMSchemaInterface<T>;
|
|
40
|
+
negative(): LLMSchemaInterface<T>;
|
|
41
|
+
nonpositive(): LLMSchemaInterface<T>;
|
|
42
|
+
nonnegative(): LLMSchemaInterface<T>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Type inference helper for schemas
|
|
46
|
+
*/
|
|
47
|
+
export type InferSchema<T> = T extends LLMSchemaInterface<infer U> ? U : never;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMSchemaInterface.js","sourceRoot":"","sources":["../../../src/utilities/schema/LLMSchemaInterface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Schema = exports.LLMSchema = void 0;
|
|
4
|
+
// Export the concrete implementation as the main schema builder
|
|
5
|
+
var LLMSchema_1 = require("./LLMSchema");
|
|
6
|
+
Object.defineProperty(exports, "LLMSchema", { enumerable: true, get: function () { return LLMSchema_1.LLMSchema; } });
|
|
7
|
+
// Re-export LLMSchema as the default schema interface implementation
|
|
8
|
+
// This allows users to use LLMSchema while keeping implementation flexible
|
|
9
|
+
var LLMSchema_2 = require("./LLMSchema");
|
|
10
|
+
Object.defineProperty(exports, "Schema", { enumerable: true, get: function () { return LLMSchema_2.LLMSchema; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/schema/index.ts"],"names":[],"mappings":";;;AAGA,gEAAgE;AAChE,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,qEAAqE;AACrE,2EAA2E;AAC3E,yCAAkD;AAAzC,mGAAA,SAAS,OAAU"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mate-academy/llm-gateway",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "A gateway package for LLM services.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -45,35 +45,43 @@
|
|
|
45
45
|
],
|
|
46
46
|
"services/*": [
|
|
47
47
|
"dist/services/*"
|
|
48
|
+
],
|
|
49
|
+
"utilities": [
|
|
50
|
+
"dist/utilities/index.d.ts"
|
|
51
|
+
],
|
|
52
|
+
"utilities/*": [
|
|
53
|
+
"dist/utilities/*"
|
|
48
54
|
]
|
|
49
55
|
}
|
|
50
56
|
},
|
|
51
57
|
"devDependencies": {
|
|
52
58
|
"@mate-academy/ts-config": "^1.0.5",
|
|
53
59
|
"@types/glob": "^9.0.0",
|
|
54
|
-
"@types/inquirer": "^9.0.
|
|
60
|
+
"@types/inquirer": "^9.0.9",
|
|
55
61
|
"@types/jest": "^30.0.0",
|
|
56
62
|
"@types/mime-types": "^3.0.1",
|
|
57
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
63
|
+
"@typescript-eslint/eslint-plugin": "^8.39.0",
|
|
58
64
|
"dotenv": "^17.2.1",
|
|
59
|
-
"eslint": "^9.
|
|
65
|
+
"eslint": "^9.32.0",
|
|
60
66
|
"eslint-plugin-no-only-tests": "^3.3.0",
|
|
61
67
|
"glob": "^11.0.3",
|
|
62
|
-
"inquirer": "^12.
|
|
68
|
+
"inquirer": "^12.9.0",
|
|
63
69
|
"jest": "^30.0.5",
|
|
64
70
|
"terser": "^5.43.1",
|
|
65
|
-
"ts-jest": "^29.4.
|
|
71
|
+
"ts-jest": "^29.4.1",
|
|
66
72
|
"tsc-alias": "^1.8.16",
|
|
67
|
-
"typescript": "^5.
|
|
68
|
-
"typescript-eslint": "^8.
|
|
73
|
+
"typescript": "^5.9.2",
|
|
74
|
+
"typescript-eslint": "^8.39.0"
|
|
69
75
|
},
|
|
70
76
|
"dependencies": {
|
|
71
|
-
"@google/genai": "^1.
|
|
77
|
+
"@google/genai": "^1.13.0",
|
|
72
78
|
"@mate-academy/core": "^1.10.4",
|
|
73
79
|
"axios": "^1.11.0",
|
|
74
80
|
"js-tiktoken": "^1.0.20",
|
|
75
81
|
"mime-types": "^3.0.1",
|
|
76
|
-
"openai": "^5.
|
|
77
|
-
"uuid": "^11.1.0"
|
|
82
|
+
"openai": "^5.12.1",
|
|
83
|
+
"uuid": "^11.1.0",
|
|
84
|
+
"zod": "^3.25.76",
|
|
85
|
+
"zod-to-json-schema": "^3.24.6"
|
|
78
86
|
}
|
|
79
87
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"functional.utils.js","sourceRoot":"","sources":["../src/functional.utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,IAAI,GAAG,CAAuB,GAAM,EAAE,IAAS,EAAc,EAAE,CAAC,CAC3E,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACvB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAExC,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAAgB,CAAC,CACrB,CAAC;AANW,QAAA,IAAI,QAMf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptBuilder.js","sourceRoot":"","sources":["../src/promptBuilder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;AAoHH,oDAQC;AA1DD,SAAS,aAAa,CACpB,MAAc,EACd,SAA2D;IAE3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC;IACnD,+DAA+D;IAC/D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CACtD,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAClE,EAAE,MAAM,CAAC,CACX,CAAC;IAEF,MAAM,0BAA0B,GAAG,CAAC,MAAc,EAAU,EAAE;QAC5D,qEAAqE;QACrE,OAAO,MAAM,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;YACjF,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;YAErC,IAAI,KAAK,EAAE,CAAC;gBACV,6EAA6E;gBAC7E,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;gBAC7D,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YAC5C,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,MAAM,GAAG,MAAM,CAAC;IAEpB,mFAAmF;IACnF,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAE5C,6CAA6C;IAC7C,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAmB,QAAW;IAChE,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,EAAO,CAAC;IAE7C,OAAO,CACL,GAAG,IAEqC,EAChC,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,CAAC;AACvD,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|