@nx-ddd/any-func 19.10.0 → 19.12.1
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/fesm2022/nx-ddd-any-func.mjs +102 -123
- package/fesm2022/nx-ddd-any-func.mjs.map +1 -1
- package/index.d.ts +34 -12
- package/package.json +2 -2
|
@@ -3,14 +3,14 @@ import { targetConstructorToSchema as targetConstructorToSchema$1 } from 'class-
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Injectable, InjectionToken, inject } from '@angular/core';
|
|
5
5
|
import { injectOpenAiService } from '@nx-ddd/common/infrastructure/externals/openai';
|
|
6
|
-
import { provideOpenaiService } from '@nx-ddd/common/infrastructure/externals/openai/impl';
|
|
7
6
|
import { lastValueFrom, of, map, switchMap, tap, catchError, retry } from 'rxjs';
|
|
8
|
-
import pLimit from 'p-limit';
|
|
9
7
|
import { ZodSchema } from 'zod';
|
|
10
8
|
import zodToJsonSchema from 'zod-to-json-schema';
|
|
11
9
|
import { LOCAL_STORAGE } from '@nx-ddd/any-func/adapters/local-storage';
|
|
12
10
|
import CryptoJS from 'crypto-js';
|
|
13
11
|
import { ValidatorAdapter } from '@nx-ddd/any-func/adapters/validator';
|
|
12
|
+
import pLimit from 'p-limit';
|
|
13
|
+
import { provideOpenaiService } from '@nx-ddd/common/infrastructure/externals/openai/impl';
|
|
14
14
|
|
|
15
15
|
// 環境差異を吸収するため、try-catchでdynamic importしてdefaultMetadataStorageを取得します。
|
|
16
16
|
let defaultMetadataStorage;
|
|
@@ -192,24 +192,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImpor
|
|
|
192
192
|
type: Injectable
|
|
193
193
|
}] });
|
|
194
194
|
|
|
195
|
+
/**
|
|
196
|
+
* InjectionToken for AnyFuncService
|
|
197
|
+
*/
|
|
195
198
|
const ANY_FUNC_SERVICE = new InjectionToken('[@nx-ddd/any-func] AnyFuncService');
|
|
199
|
+
/**
|
|
200
|
+
* InjectionToken for AnyFuncConfig
|
|
201
|
+
*/
|
|
202
|
+
const ANY_FUNC_CONFIG = new InjectionToken('[@nx-ddd/any-func] AnyFuncConfig');
|
|
203
|
+
/**
|
|
204
|
+
* Injects the AnyFuncService
|
|
205
|
+
*/
|
|
196
206
|
function injectAnyFunc() {
|
|
197
207
|
return inject(ANY_FUNC_SERVICE, { optional: true }) ?? {};
|
|
198
208
|
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Type guard for browser File object
|
|
212
|
+
*/
|
|
199
213
|
function isBrowserFile(obj) {
|
|
200
214
|
return typeof File !== 'undefined' && obj instanceof File;
|
|
201
215
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
return [
|
|
206
|
-
{ provide: ANY_FUNC_SERVICE, useClass: AnyFuncService },
|
|
207
|
-
{ provide: ANY_FUNC_CONFIG, useFactory },
|
|
208
|
-
CacheAdapter,
|
|
209
|
-
provideOpenaiService(() => ({ apiKey: config.openaiApiKey, dangerouslyAllowBrowser: config.dangerouslyAllowBrowser })),
|
|
210
|
-
];
|
|
211
|
-
}
|
|
216
|
+
/**
|
|
217
|
+
* Helper class for building OpenAI message content
|
|
218
|
+
*/
|
|
212
219
|
class OpenAiMessageHelper {
|
|
220
|
+
/**
|
|
221
|
+
* Converts an image file to base64 string
|
|
222
|
+
*/
|
|
213
223
|
static async imageToBase64(imageFile) {
|
|
214
224
|
return new Promise((resolve, reject) => {
|
|
215
225
|
const reader = new FileReader();
|
|
@@ -221,6 +231,9 @@ class OpenAiMessageHelper {
|
|
|
221
231
|
reader.readAsDataURL(imageFile);
|
|
222
232
|
});
|
|
223
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Builds message content from files
|
|
236
|
+
*/
|
|
224
237
|
static async buildFilesMessage(files) {
|
|
225
238
|
return await Promise.all(files.map(async (file) => ({
|
|
226
239
|
type: 'image_url',
|
|
@@ -228,11 +241,61 @@ class OpenAiMessageHelper {
|
|
|
228
241
|
})));
|
|
229
242
|
}
|
|
230
243
|
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Embedding-related utilities for AnyFuncService
|
|
247
|
+
*/
|
|
248
|
+
class EmbeddingsHelper {
|
|
249
|
+
cache;
|
|
250
|
+
openai;
|
|
251
|
+
constructor(cache, openai) {
|
|
252
|
+
this.cache = cache;
|
|
253
|
+
this.openai = openai;
|
|
254
|
+
}
|
|
255
|
+
async getEmbeddings(item, accessor) {
|
|
256
|
+
const props = { item, model: 'text-embedding-3-small' };
|
|
257
|
+
let embedding = await this.cache.get(props);
|
|
258
|
+
if (embedding)
|
|
259
|
+
return embedding;
|
|
260
|
+
embedding = await this.openai.embeddings.create({ model: props.model, input: accessor(item) }).then(res => res.data[0].embedding);
|
|
261
|
+
await this.cache.set(props, embedding);
|
|
262
|
+
return embedding;
|
|
263
|
+
}
|
|
264
|
+
async sort(items, accessor, target) {
|
|
265
|
+
const dist = (a, b) => Math.sqrt(a.reduce((acc, v, i) => acc + (v - b[i]) ** 2, 0));
|
|
266
|
+
const targetEmbeddings = await this.getEmbeddings(target, s => s);
|
|
267
|
+
const limit = pLimit(10);
|
|
268
|
+
const embeddings = await Promise.all(items.map(item => limit(() => this.getEmbeddings(item, accessor))));
|
|
269
|
+
const items_ = items.map((item, i) => ({ item, embedding: embeddings[i], distance: dist(embeddings[i], targetEmbeddings) }));
|
|
270
|
+
return items_.sort((a, b) => a.distance - b.distance).map(({ item }) => item);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Provides the AnyFuncService with configuration
|
|
276
|
+
*/
|
|
277
|
+
function provideAnyFunc(useFactory) {
|
|
278
|
+
const config = useFactory();
|
|
279
|
+
return [
|
|
280
|
+
{ provide: ANY_FUNC_SERVICE, useClass: AnyFuncService },
|
|
281
|
+
{ provide: ANY_FUNC_CONFIG, useFactory },
|
|
282
|
+
CacheAdapter,
|
|
283
|
+
provideOpenaiService(() => ({
|
|
284
|
+
apiKey: config.openaiApiKey,
|
|
285
|
+
dangerouslyAllowBrowser: config.dangerouslyAllowBrowser
|
|
286
|
+
})),
|
|
287
|
+
];
|
|
288
|
+
}
|
|
289
|
+
|
|
231
290
|
class AnyFuncService {
|
|
232
291
|
openai = injectOpenAiService();
|
|
233
292
|
config = inject(ANY_FUNC_CONFIG, { optional: true }) ?? { debug: false };
|
|
234
293
|
cache = inject(CacheAdapter);
|
|
235
294
|
validator = inject(ValidatorAdapter);
|
|
295
|
+
embeddingsHelper;
|
|
296
|
+
constructor() {
|
|
297
|
+
this.embeddingsHelper = new EmbeddingsHelper(this.cache, this.openai);
|
|
298
|
+
}
|
|
236
299
|
/** @deprecated use callByJsonSchema instead */
|
|
237
300
|
async jsonSchema(_input, jsonSchema, options = {}) {
|
|
238
301
|
return this.callByJsonSchema(_input, jsonSchema, options);
|
|
@@ -240,107 +303,64 @@ class AnyFuncService {
|
|
|
240
303
|
async callByJsonSchema(_input, jsonSchema, { instructions = '', model = 'gpt-4o', specs = [], embeddings = false, sample = 3, temperature = 0, maxRetry = 3, validator = (data) => this.validator.validate(jsonSchema, data), } = {}) {
|
|
241
304
|
for (const spec of specs) {
|
|
242
305
|
const errors = await validator(spec.output);
|
|
243
|
-
if (errors.length > 0)
|
|
306
|
+
if (errors.length > 0)
|
|
244
307
|
throw new Error(JSON.stringify(errors, null, 2));
|
|
245
|
-
}
|
|
246
308
|
}
|
|
247
309
|
const content = await this.parseInput(_input);
|
|
248
|
-
const sortedSpecs = embeddings ? await this.sort(specs, embeddings, _input) : specs;
|
|
310
|
+
const sortedSpecs = embeddings ? await this.embeddingsHelper.sort(specs, embeddings, _input) : specs;
|
|
249
311
|
const messages = [
|
|
250
312
|
{ role: 'system', content: instructions },
|
|
251
313
|
...(await this.buildChatMessages(sortedSpecs.slice(0, sample).reverse())),
|
|
252
314
|
{ role: 'user', content },
|
|
253
315
|
];
|
|
254
|
-
return lastValueFrom(of(null).pipe(map(() => messages), switchMap(() => this.complete(_input, jsonSchema, messages, {
|
|
255
|
-
model,
|
|
256
|
-
sample,
|
|
257
|
-
temperature,
|
|
258
|
-
})), tap(message => messages.push(message)), switchMap(async (message) => {
|
|
316
|
+
return lastValueFrom(of(null).pipe(map(() => messages), switchMap(() => this.complete(_input, jsonSchema, messages, { model, sample, temperature })), tap(message => messages.push(message)), switchMap(async (message) => {
|
|
259
317
|
const toolCall = message.tool_calls[0];
|
|
260
|
-
if (toolCall.type !== 'function')
|
|
318
|
+
if (toolCall.type !== 'function')
|
|
261
319
|
throw new Error('Unexpected tool call type');
|
|
262
|
-
}
|
|
263
320
|
const output = JSON.parse(toolCall.function.arguments);
|
|
264
321
|
console.debug('[AnyFuncService#complete] output:', output);
|
|
265
322
|
const errors = await validator(output);
|
|
266
323
|
console.debug('[AnyFuncService#complete] errors:', errors);
|
|
267
324
|
if (errors.length > 0) {
|
|
268
|
-
messages.push({
|
|
269
|
-
|
|
270
|
-
content: JSON.stringify(errors),
|
|
271
|
-
tool_call_id: message.tool_calls[0].id,
|
|
272
|
-
});
|
|
273
|
-
if (this.config.debug) {
|
|
325
|
+
messages.push({ role: 'tool', content: JSON.stringify(errors), tool_call_id: message.tool_calls[0].id });
|
|
326
|
+
if (this.config.debug)
|
|
274
327
|
console.debug('messages', JSON.stringify(messages, null, 2));
|
|
275
|
-
}
|
|
276
328
|
throw new Error(JSON.stringify(errors, null, 2));
|
|
277
329
|
}
|
|
278
330
|
else {
|
|
279
|
-
messages.push({
|
|
280
|
-
|
|
281
|
-
content: JSON.stringify(output),
|
|
282
|
-
tool_call_id: message.tool_calls[0].id,
|
|
283
|
-
});
|
|
284
|
-
if (this.config.debug) {
|
|
331
|
+
messages.push({ role: 'tool', content: JSON.stringify(output), tool_call_id: message.tool_calls[0].id });
|
|
332
|
+
if (this.config.debug)
|
|
285
333
|
console.debug('messages', JSON.stringify(messages, null, 2));
|
|
286
|
-
}
|
|
287
334
|
}
|
|
288
335
|
return output;
|
|
289
|
-
}), catchError((error) => {
|
|
290
|
-
console.error(error);
|
|
291
|
-
throw error;
|
|
292
|
-
}), retry(maxRetry)));
|
|
293
|
-
// debugPrice(model, res.usage);
|
|
336
|
+
}), catchError((error) => { console.error(error); throw error; }), retry(maxRetry)));
|
|
294
337
|
}
|
|
295
|
-
async callByZod(_input, zod,
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
specs,
|
|
300
|
-
embeddings,
|
|
301
|
-
sample,
|
|
302
|
-
temperature,
|
|
303
|
-
maxRetry,
|
|
304
|
-
validator,
|
|
305
|
-
});
|
|
338
|
+
async callByZod(_input, zod, options = {}) {
|
|
339
|
+
const schema = zodToJsonSchema(zod, { $refStrategy: 'none' });
|
|
340
|
+
const validator = options.validator ?? ((data) => this.validator.validate(schema, data));
|
|
341
|
+
return this.jsonSchema(_input, schema, { ...options, validator });
|
|
306
342
|
}
|
|
307
|
-
async callByClassValidator(_input, args,
|
|
343
|
+
async callByClassValidator(_input, args, options = {}) {
|
|
308
344
|
const parameters = targetConstructorToSchema(args);
|
|
345
|
+
const validator = options.validator ?? ((data) => this.validator.validate(parameters, data));
|
|
309
346
|
console.debug('[AnyFuncService#call] parameters:', parameters);
|
|
310
|
-
return this.jsonSchema(_input, parameters, {
|
|
311
|
-
instructions,
|
|
312
|
-
model,
|
|
313
|
-
specs,
|
|
314
|
-
embeddings,
|
|
315
|
-
sample,
|
|
316
|
-
temperature,
|
|
317
|
-
maxRetry,
|
|
318
|
-
validator,
|
|
319
|
-
});
|
|
347
|
+
return this.jsonSchema(_input, parameters, { ...options, validator });
|
|
320
348
|
}
|
|
321
349
|
async call(_input, args, params = {}) {
|
|
322
|
-
if (args instanceof ZodSchema)
|
|
350
|
+
if (args instanceof ZodSchema)
|
|
323
351
|
return this.callByZod(_input, args, params);
|
|
324
|
-
|
|
325
|
-
// class validatorか判定
|
|
326
|
-
if (args instanceof Function) {
|
|
352
|
+
if (args instanceof Function)
|
|
327
353
|
return this.callByClassValidator(_input, args, params);
|
|
328
|
-
}
|
|
329
354
|
if (typeof args === 'object' && args !== null && 'type' in args && args.type === 'object') {
|
|
330
355
|
return this.callByJsonSchema(_input, args, params);
|
|
331
356
|
}
|
|
332
357
|
throw new Error('Invalid args type');
|
|
333
358
|
}
|
|
334
|
-
async complete(_input, jsonSchema, messages, { model = 'gpt-4o', temperature = 0
|
|
359
|
+
async complete(_input, jsonSchema, messages, { model = 'gpt-4o', temperature = 0 } = {}) {
|
|
335
360
|
const tool = buildFunctionTool({ name: 'function', description: '', parameters: jsonSchema });
|
|
336
361
|
const props = {
|
|
337
|
-
model,
|
|
338
|
-
|
|
339
|
-
tools: [tool],
|
|
340
|
-
tool_choice: {
|
|
341
|
-
type: 'function',
|
|
342
|
-
function: { name: 'function' }
|
|
343
|
-
},
|
|
362
|
+
model, messages, tools: [tool],
|
|
363
|
+
tool_choice: { type: 'function', function: { name: 'function' } },
|
|
344
364
|
temperature,
|
|
345
365
|
};
|
|
346
366
|
const res = await this.cache.call(props, props => this.openai.chat.completions.create(props));
|
|
@@ -351,67 +371,26 @@ class AnyFuncService {
|
|
|
351
371
|
const parsedInput = await this.parseInput(input);
|
|
352
372
|
return [
|
|
353
373
|
{ role: 'user', content: parsedInput },
|
|
354
|
-
{
|
|
355
|
-
role: 'assistant',
|
|
356
|
-
content: null,
|
|
357
|
-
tool_calls: [
|
|
358
|
-
{
|
|
359
|
-
id: 'call-example',
|
|
360
|
-
type: 'function',
|
|
361
|
-
function: {
|
|
362
|
-
name: 'function',
|
|
363
|
-
arguments: JSON.stringify(output),
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
],
|
|
367
|
-
},
|
|
374
|
+
{ role: 'assistant', content: null, tool_calls: [{ id: 'call-example', type: 'function', function: { name: 'function', arguments: JSON.stringify(output) } }] },
|
|
368
375
|
{ role: 'tool', content: 'success', tool_call_id: 'call-example' },
|
|
369
376
|
];
|
|
370
377
|
}));
|
|
371
378
|
return messages.flat();
|
|
372
379
|
}
|
|
373
|
-
async getEmbeddings(item, accessor) {
|
|
374
|
-
const props = { item, model: 'text-embedding-3-small' };
|
|
375
|
-
let embedding = await this.cache.get(props);
|
|
376
|
-
if (embedding)
|
|
377
|
-
return embedding;
|
|
378
|
-
embedding = await this.openai.embeddings.create({
|
|
379
|
-
model: props.model,
|
|
380
|
-
input: accessor(item),
|
|
381
|
-
}).then(res => res.data[0].embedding);
|
|
382
|
-
await this.cache.set(props, embedding);
|
|
383
|
-
return embedding;
|
|
384
|
-
}
|
|
385
|
-
async sort(items, accessor, target) {
|
|
386
|
-
const dist = (a, b) => Math.sqrt(a.reduce((acc, v, i) => acc + (v - b[i]) ** 2, 0));
|
|
387
|
-
const targetEmbeddings = await this.getEmbeddings(target, s => s);
|
|
388
|
-
const limit = pLimit(10);
|
|
389
|
-
const embeddings = await Promise.all(items.map(item => limit(() => this.getEmbeddings(item, accessor))));
|
|
390
|
-
const items_ = items.map((item, i) => ({
|
|
391
|
-
item,
|
|
392
|
-
embedding: embeddings[i],
|
|
393
|
-
distance: dist(embeddings[i], targetEmbeddings),
|
|
394
|
-
}));
|
|
395
|
-
const sorted = items_.sort((a, b) => a.distance - b.distance);
|
|
396
|
-
return sorted.map(({ item }) => item);
|
|
397
|
-
}
|
|
398
380
|
async parseInput(input) {
|
|
399
|
-
if (isBrowserFile(input))
|
|
381
|
+
if (isBrowserFile(input))
|
|
400
382
|
return await OpenAiMessageHelper.buildFilesMessage([input]);
|
|
401
|
-
|
|
402
|
-
else if (input === 'string') {
|
|
383
|
+
else if (input === 'string')
|
|
403
384
|
return input;
|
|
404
|
-
|
|
405
|
-
else {
|
|
385
|
+
else
|
|
406
386
|
return JSON.stringify(input);
|
|
407
|
-
}
|
|
408
387
|
}
|
|
409
388
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AnyFuncService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
410
389
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AnyFuncService });
|
|
411
390
|
}
|
|
412
391
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AnyFuncService, decorators: [{
|
|
413
392
|
type: Injectable
|
|
414
|
-
}] });
|
|
393
|
+
}], ctorParameters: () => [] });
|
|
415
394
|
|
|
416
395
|
// Re-export from impl to maintain backwards compatibility
|
|
417
396
|
|
|
@@ -419,5 +398,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImpor
|
|
|
419
398
|
* Generated bundle index. Do not edit.
|
|
420
399
|
*/
|
|
421
400
|
|
|
422
|
-
export { ANY_FUNC_SERVICE, AiFunction, AiSystem, AiToolsAgent, AnyFuncService, addTool, buildFunctionTool, buildToolFromSchema, getAiSystemConfig, getTools, injectAnyFunc, provideAnyFunc, setAiSystemConfig, targetConstructorToSchema };
|
|
401
|
+
export { ANY_FUNC_CONFIG, ANY_FUNC_SERVICE, AiFunction, AiSystem, AiToolsAgent, AnyFuncService, addTool, buildFunctionTool, buildToolFromSchema, getAiSystemConfig, getTools, injectAnyFunc, provideAnyFunc, setAiSystemConfig, targetConstructorToSchema };
|
|
423
402
|
//# sourceMappingURL=nx-ddd-any-func.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx-ddd-any-func.mjs","sources":["../tmp-esm2022/impl/json-schema/default-metadata-storage.js","../tmp-esm2022/impl/json-schema/json-schema.js","../tmp-esm2022/agent/agent.js","../tmp-esm2022/impl/adapters/cache/cache.adapter.js","../tmp-esm2022/any-func/any-func.service.impl.js","../tmp-esm2022/any-func/any-func.service.js","../tmp-esm2022/nx-ddd-any-func.js"],"sourcesContent":["// 環境差異を吸収するため、try-catchでdynamic importしてdefaultMetadataStorageを取得します。\nlet defaultMetadataStorage;\ntry {\n ({ defaultMetadataStorage } = require('class-transformer/cjs/storage'));\n}\ncatch {\n // Ignore error if class-transformer is not available\n}\nexport function getMetadataStorage() {\n return defaultMetadataStorage;\n}\nexport function setMetadataStorage(metadataStorage) {\n defaultMetadataStorage = metadataStorage;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1tZXRhZGF0YS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9hbnktZnVuYy9zcmMvbGliL2ltcGwvanNvbi1zY2hlbWEvZGVmYXVsdC1tZXRhZGF0YS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNFQUFzRTtBQUN0RSxJQUFJLHNCQUFnRixDQUFDO0FBRXJGLElBQUksQ0FBQztJQUNILENBQUMsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUFDLE1BQU0sQ0FBQztJQUNQLHFEQUFxRDtBQUN2RCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLHNCQUFzQixDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsZUFBeUU7SUFDMUcsc0JBQXNCLEdBQUcsZUFBZSxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDnkrDlooPlt67nlbDjgpLlkLjlj47jgZnjgovjgZ/jgoHjgIF0cnktY2F0Y2jjgadkeW5hbWljIGltcG9ydOOBl+OBpmRlZmF1bHRNZXRhZGF0YVN0b3JhZ2XjgpLlj5blvpfjgZfjgb7jgZnjgIJcbmxldCBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlOiBpbXBvcnQoJ2NsYXNzLXRyYW5zZm9ybWVyL2VzbTUvc3RvcmFnZScpLk1ldGFkYXRhU3RvcmFnZTtcblxudHJ5IHtcbiAgKHsgZGVmYXVsdE1ldGFkYXRhU3RvcmFnZSB9ID0gcmVxdWlyZSgnY2xhc3MtdHJhbnNmb3JtZXIvY2pzL3N0b3JhZ2UnKSk7XG59IGNhdGNoIHtcbiAgLy8gSWdub3JlIGVycm9yIGlmIGNsYXNzLXRyYW5zZm9ybWVyIGlzIG5vdCBhdmFpbGFibGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1ldGFkYXRhU3RvcmFnZSgpIHtcbiAgcmV0dXJuIGRlZmF1bHRNZXRhZGF0YVN0b3JhZ2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNZXRhZGF0YVN0b3JhZ2UobWV0YWRhdGFTdG9yYWdlOiBpbXBvcnQoJ2NsYXNzLXRyYW5zZm9ybWVyL2VzbTUvc3RvcmFnZScpLk1ldGFkYXRhU3RvcmFnZSkge1xuICBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlID0gbWV0YWRhdGFTdG9yYWdlO1xufVxuIl19","import { ValidationTypes } from \"class-validator\";\nimport { targetConstructorToSchema as _targetConstructorToSchema } from \"class-validator-jsonschema\";\nimport { getMetadataStorage } from \"./default-metadata-storage\";\n// import { defaultMetadataStorage } from 'c/lass-transformer/esm5/storage';\n// setMetadataStorage(defaultMetadataStorage);\nfunction getPropType(target, property) {\n return Reflect.getMetadata('design:type', target, property);\n}\nfunction targetToSchema(type, options) {\n if (typeof type === 'function') {\n if (type.prototype === String.prototype ||\n type.prototype === Symbol.prototype) {\n return { type: 'string' };\n }\n else if (type.prototype === Number.prototype) {\n return { type: 'number' };\n }\n else if (type.prototype === Boolean.prototype) {\n return { type: 'boolean' };\n }\n return targetConstructorToSchema(type, options);\n }\n}\nconst additionalConverters = {\n [ValidationTypes.NESTED_VALIDATION]: (meta, options) => {\n if (typeof meta.target === 'function') {\n const typeMeta = options.classTransformerMetadataStorage\n ? options.classTransformerMetadataStorage.findTypeMetadata(meta.target, meta.propertyName)\n : null;\n const childType = typeMeta\n ? typeMeta.typeFunction()\n : getPropType(meta.target.prototype, meta.propertyName);\n return targetToSchema(childType, options);\n }\n },\n isDayjs: (meta) => {\n return {\n type: 'string',\n format: 'date-time', // JSON Schemaで日付型を指定\n };\n },\n};\nexport function targetConstructorToSchema(target, options = {}) {\n return _targetConstructorToSchema(target, {\n ...options,\n additionalConverters,\n classTransformerMetadataStorage: getMetadataStorage(),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2FueS1mdW5jL3NyYy9saWIvaW1wbC9qc29uLXNjaGVtYS9qc29uLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixJQUFJLDBCQUEwQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFHcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsNEVBQTRFO0FBRTVFLDhDQUE4QztBQUU5QyxTQUFTLFdBQVcsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7SUFDbkQsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDN0QsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixJQUFTLEVBQ1QsT0FBWTtJQUVaLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDL0IsSUFDRSxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTO1lBQ25DLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFDbkMsQ0FBQztZQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUE7UUFDM0IsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0MsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQTtRQUMzQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFBO1FBQzVCLENBQUM7UUFFRCxPQUFPLHlCQUF5QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sb0JBQW9CLEdBQUU7SUFDMUIsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLElBQVMsRUFBRSxPQUFZLEVBQUUsRUFBRTtRQUMvRCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsK0JBQStCO2dCQUN0RCxDQUFDLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLGdCQUFnQixDQUN0RCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxZQUFZLENBQ2xCO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUE7WUFDUixNQUFNLFNBQVMsR0FBRyxRQUFRO2dCQUN4QixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtnQkFDekIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDekQsT0FBTyxjQUFjLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFlLEVBQUU7UUFDbEMsT0FBTztZQUNMLElBQUksRUFBRSxRQUFRO1lBQ2QsTUFBTSxFQUFFLFdBQVcsRUFBRSxxQkFBcUI7U0FDM0MsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE1BQWdCLEVBQUUsVUFBNkIsRUFBRTtJQUN6RixPQUFPLDBCQUEwQixDQUFDLE1BQU0sRUFBRTtRQUN4QyxHQUFHLE9BQU87UUFDVixvQkFBb0I7UUFDcEIsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUU7S0FDdEQsQ0FBZ0IsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdGlvblR5cGVzIH0gZnJvbSBcImNsYXNzLXZhbGlkYXRvclwiXG5pbXBvcnQgeyB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hIGFzIF90YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hIH0gZnJvbSBcImNsYXNzLXZhbGlkYXRvci1qc29uc2NoZW1hXCJcbmltcG9ydCB7IElPcHRpb25zIH0gZnJvbSBcImNsYXNzLXZhbGlkYXRvci1qc29uc2NoZW1hL2J1aWxkL29wdGlvbnNcIjtcbmltcG9ydCB7IEpTT05TY2hlbWE3IH0gZnJvbSAnanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgZ2V0TWV0YWRhdGFTdG9yYWdlIH0gZnJvbSBcIi4vZGVmYXVsdC1tZXRhZGF0YS1zdG9yYWdlXCI7XG4vLyBpbXBvcnQgeyBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlIH0gZnJvbSAnYy9sYXNzLXRyYW5zZm9ybWVyL2VzbTUvc3RvcmFnZSc7XG5cbi8vIHNldE1ldGFkYXRhU3RvcmFnZShkZWZhdWx0TWV0YWRhdGFTdG9yYWdlKTtcblxuZnVuY3Rpb24gZ2V0UHJvcFR5cGUodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Rlc2lnbjp0eXBlJywgdGFyZ2V0LCBwcm9wZXJ0eSlcbn1cblxuZnVuY3Rpb24gdGFyZ2V0VG9TY2hlbWEoXG4gIHR5cGU6IGFueSxcbiAgb3B0aW9uczogYW55XG4pOiBhbnkge1xuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoXG4gICAgICB0eXBlLnByb3RvdHlwZSA9PT0gU3RyaW5nLnByb3RvdHlwZSB8fFxuICAgICAgdHlwZS5wcm90b3R5cGUgPT09IFN5bWJvbC5wcm90b3R5cGVcbiAgICApIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzdHJpbmcnIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUucHJvdG90eXBlID09PSBOdW1iZXIucHJvdG90eXBlKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnbnVtYmVyJyB9XG4gICAgfSBlbHNlIGlmICh0eXBlLnByb3RvdHlwZSA9PT0gQm9vbGVhbi5wcm90b3R5cGUpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdib29sZWFuJyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEodHlwZSwgb3B0aW9ucylcbiAgfVxufVxuXG5jb25zdCBhZGRpdGlvbmFsQ29udmVydGVycz0ge1xuICBbVmFsaWRhdGlvblR5cGVzLk5FU1RFRF9WQUxJREFUSU9OXTogKG1ldGE6IGFueSwgb3B0aW9uczogYW55KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBtZXRhLnRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgdHlwZU1ldGEgPSBvcHRpb25zLmNsYXNzVHJhbnNmb3JtZXJNZXRhZGF0YVN0b3JhZ2VcbiAgICAgICAgPyBvcHRpb25zLmNsYXNzVHJhbnNmb3JtZXJNZXRhZGF0YVN0b3JhZ2UuZmluZFR5cGVNZXRhZGF0YShcbiAgICAgICAgICAgIG1ldGEudGFyZ2V0LFxuICAgICAgICAgICAgbWV0YS5wcm9wZXJ0eU5hbWVcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbFxuICAgICAgY29uc3QgY2hpbGRUeXBlID0gdHlwZU1ldGFcbiAgICAgICAgPyB0eXBlTWV0YS50eXBlRnVuY3Rpb24oKVxuICAgICAgICA6IGdldFByb3BUeXBlKG1ldGEudGFyZ2V0LnByb3RvdHlwZSwgbWV0YS5wcm9wZXJ0eU5hbWUpXG4gICAgICByZXR1cm4gdGFyZ2V0VG9TY2hlbWEoY2hpbGRUeXBlLCBvcHRpb25zKVxuICAgIH1cbiAgfSxcbiAgaXNEYXlqczogKG1ldGE6IGFueSk6IEpTT05TY2hlbWE3ID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBmb3JtYXQ6ICdkYXRlLXRpbWUnLCAvLyBKU09OIFNjaGVtYeOBp+aXpeS7mOWei+OCkuaMh+WumlxuICAgIH07XG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSh0YXJnZXQ6IEZ1bmN0aW9uLCBvcHRpb25zOiBQYXJ0aWFsPElPcHRpb25zPiA9IHt9KTogSlNPTlNjaGVtYTcge1xuICByZXR1cm4gX3RhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEodGFyZ2V0LCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBhZGRpdGlvbmFsQ29udmVydGVycyxcbiAgICBjbGFzc1RyYW5zZm9ybWVyTWV0YWRhdGFTdG9yYWdlOiBnZXRNZXRhZGF0YVN0b3JhZ2UoKSxcbiAgfSkgYXMgSlNPTlNjaGVtYTc7XG59XG4iXX0=","import { targetConstructorToSchema } from '../impl/json-schema';\nconst AI_TOOLS = '[ai-tools]';\nconst AI_SYSTEM = '[ai-system]';\nexport function addTool(obj, tool) {\n obj[AI_TOOLS] = obj[AI_TOOLS] ?? [];\n obj[AI_TOOLS].push(tool);\n return obj;\n}\nexport function getTools(obj) {\n return obj[AI_TOOLS] ?? [];\n}\nexport function buildFunctionTool(params) {\n return {\n type: 'function',\n function: {\n name: params.name,\n description: params.description,\n parameters: params.parameters,\n },\n };\n}\nexport function buildToolFromSchema(name, description, schema) {\n const parameters = targetConstructorToSchema(schema);\n return buildFunctionTool({ name, description, parameters });\n}\nexport function AiFunction(params) {\n return function (target, propertyKey, descriptor) {\n // 引数の型を取得\n const args = Reflect.getMetadata('design:paramtypes', target, propertyKey);\n const tool = buildToolFromSchema(propertyKey, params?.description ?? '', args[0]);\n addTool(target, tool);\n return descriptor;\n };\n}\nexport function setAiSystemConfig(obj, config) {\n obj[AI_SYSTEM] = config;\n return obj;\n}\nexport function getAiSystemConfig(obj) {\n return obj[AI_SYSTEM];\n}\nexport function AiSystem({ model = 'gpt-4-1106-preview', instructions = ``, shots = [], }) {\n return function (target) {\n setAiSystemConfig(target, { model, instructions, shots });\n return target;\n };\n}\nexport class AiToolsAgent {\n openai;\n constructor(openai) {\n this.openai = openai;\n }\n messages = [\n { role: 'system', content: '' },\n ];\n results = [];\n get tools() {\n return getTools(this.constructor);\n }\n get config() {\n return getAiSystemConfig(this.constructor);\n }\n async completion(tools = this.tools) {\n const message = await this.openai.chat.completions.create({\n model: this.config.model,\n messages: this.messages,\n tools,\n });\n for (const call of message.choices?.[0]?.message?.tool_calls ?? []) {\n if (call.type === 'function') {\n const func = this[call.function.name];\n const result = func(JSON.parse(call.function.arguments));\n this.results.push(result);\n }\n }\n }\n async execute(message, options = {}) {\n this.messages.push({ role: 'user', content: message });\n await this.completion(options.tools);\n return this.results.at(-1);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2FueS1mdW5jL3NyYy9saWIvYWdlbnQvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEUsTUFBTSxRQUFRLEdBQUcsWUFBcUIsQ0FBQztBQUN2QyxNQUFNLFNBQVMsR0FBRyxhQUFzQixDQUFDO0FBRXpDLE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBMkIsRUFBRSxJQUFZO0lBQy9ELEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUEyQjtJQUNsRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUlqQztJQUNDLE9BQU87UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtTQUM5QjtLQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVksRUFBRSxXQUFtQixFQUFFLE1BQWdCO0lBQ3JGLE1BQU0sVUFBVSxHQUFHLHlCQUF5QixDQUFDLE1BQU0sQ0FBdUIsQ0FBQztJQUMzRSxPQUFPLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUs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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFRLENBQUM7SUFDcEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhdENvbXBsZXRpb25NZXNzYWdlUGFyYW0sIEZ1bmN0aW9uUGFyYW1ldGVycywgIH0gZnJvbSBcIm9wZW5haS9yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEZ1bmN0aW9uVG9vbCB9IGZyb20gXCJvcGVuYWkvcmVzb3VyY2VzL2JldGEvYXNzaXN0YW50c1wiO1xuaW1wb3J0IHsgQ2hhdENvbXBsZXRpb25DcmVhdGVQYXJhbXNCYXNlIH0gZnJvbSBcIm9wZW5haS9yZXNvdXJjZXMvY2hhdC9jb21wbGV0aW9uc1wiO1xuaW1wb3J0IHsgT3BlbkFpU2VydmljZUltcGwgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9pbmZyYXN0cnVjdHVyZS9leHRlcm5hbHMvb3BlbmFpL2ltcGwnO1xuaW1wb3J0IHsgdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSB9IGZyb20gJy4uL2ltcGwvanNvbi1zY2hlbWEnO1xuXG5jb25zdCBBSV9UT09MUyA9ICdbYWktdG9vbHNdJyBhcyBjb25zdDtcbmNvbnN0IEFJX1NZU1RFTSA9ICdbYWktc3lzdGVtXScgYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRUb29sKG9iajoge1tBSV9UT09MU106IG9iamVjdFtdfSwgdG9vbDogb2JqZWN0KSB7XG4gIG9ialtBSV9UT09MU10gPSBvYmpbQUlfVE9PTFNdID8/IFtdO1xuICBvYmpbQUlfVE9PTFNdLnB1c2godG9vbCk7XG4gIHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29scyhvYmo6IHtbQUlfVE9PTFNdOiBvYmplY3RbXX0pOiBhbnlbXSB7XG4gIHJldHVybiBvYmpbQUlfVE9PTFNdID8/IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGdW5jdGlvblRvb2wocGFyYW1zOiB7XG4gIG5hbWU6IHN0cmluZyxcbiAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgcGFyYW1ldGVyczogRnVuY3Rpb25QYXJhbWV0ZXJzLFxufSk6IEZ1bmN0aW9uVG9vbCB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICBmdW5jdGlvbjoge1xuICAgICAgbmFtZTogcGFyYW1zLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcGFyYW1zLmRlc2NyaXB0aW9uLFxuICAgICAgcGFyYW1ldGVyczogcGFyYW1zLnBhcmFtZXRlcnMsXG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRUb29sRnJvbVNjaGVtYShuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcsIHNjaGVtYTogRnVuY3Rpb24pOiBGdW5jdGlvblRvb2wge1xuICBjb25zdCBwYXJhbWV0ZXJzID0gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYShzY2hlbWEpIGFzIEZ1bmN0aW9uUGFyYW1ldGVycztcbiAgcmV0dXJuIGJ1aWxkRnVuY3Rpb25Ub29sKHsgbmFtZSwgZGVzY3JpcHRpb24sIHBhcmFtZXRlcnMgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBaUZ1bmN0aW9uKHBhcmFtcz86IHtkZXNjcmlwdGlvbj86IHN0cmluZ30pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgLy8g5byV5pWw44Gu5Z6L44KS5Y+W5b6XXG4gICAgY29uc3QgYXJncyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Rlc2lnbjpwYXJhbXR5cGVzJywgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgY29uc3QgdG9vbCA9IGJ1aWxkVG9vbEZyb21TY2hlbWEocHJvcGVydHlLZXksIHBhcmFtcz8uZGVzY3JpcHRpb24gPz8gJycsIGFyZ3NbMF0pO1xuICAgIGFkZFRvb2wodGFyZ2V0LCB0b29sKTtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBaVN5c3RlbUNvbmZpZyB7XG4gIG1vZGVsPzogQ2hhdENvbXBsZXRpb25DcmVhdGVQYXJhbXNCYXNlWydtb2RlbCddO1xuICBpbnN0cnVjdGlvbnM/OiBzdHJpbmc7XG4gIHNob3RzPzoge2lucHV0OiBzdHJpbmcsIG91dHB1dDogc3RyaW5nfVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QWlTeXN0ZW1Db25maWcob2JqOiB7W0FJX1NZU1RFTV06IEFpU3lzdGVtQ29uZmlnfSwgY29uZmlnOiBBaVN5c3RlbUNvbmZpZykge1xuICBvYmpbQUlfU1lTVEVNXSA9IGNvbmZpZztcbiAgcmV0dXJuIG9iajtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFpU3lzdGVtQ29uZmlnKG9iajoge1tBSV9TWVNURU1dOiBBaVN5c3RlbUNvbmZpZ30pOiBBaVN5c3RlbUNvbmZpZyB7XG4gIHJldHVybiBvYmpbQUlfU1lTVEVNXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFpU3lzdGVtKHtcbiAgbW9kZWwgPSAnZ3B0LTQtMTEwNi1wcmV2aWV3JyxcbiAgaW5zdHJ1Y3Rpb25zID0gYGAsXG4gIHNob3RzID0gW10sXG59OiBBaVN5c3RlbUNvbmZpZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55KSB7XG4gICAgc2V0QWlTeXN0ZW1Db25maWcodGFyZ2V0LCB7bW9kZWwsIGluc3RydWN0aW9ucywgc2hvdHN9KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQWlUb29sc0FnZW50IHtcbiAgY29uc3RydWN0b3IgKHByb3RlY3RlZCBvcGVuYWk6IE9wZW5BaVNlcnZpY2VJbXBsKSB7IH1cbiAgXG4gIG1lc3NhZ2VzOiBDaGF0Q29tcGxldGlvbk1lc3NhZ2VQYXJhbVtdID0gW1xuICAgIHsgcm9sZTogJ3N5c3RlbScgYXMgY29uc3QsIGNvbnRlbnQ6ICcnIH0sXG4gIF07XG5cbiAgcmVzdWx0czogYW55W10gPSBbXTtcblxuICBnZXQgdG9vbHMoKSB7XG4gICAgcmV0dXJuIGdldFRvb2xzKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KTtcbiAgfVxuXG4gIGdldCBjb25maWcoKSB7XG4gICAgcmV0dXJuIGdldEFpU3lzdGVtQ29uZmlnKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRpb24odG9vbHM6IGFueVtdID0gdGhpcy50b29scykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm9wZW5haS5jaGF0LmNvbXBsZXRpb25zLmNyZWF0ZSh7XG4gICAgICBtb2RlbDogdGhpcy5jb25maWcubW9kZWwhLFxuICAgICAgbWVzc2FnZXM6IHRoaXMubWVzc2FnZXMsXG4gICAgICB0b29scyxcbiAgICB9KTtcbiAgICBmb3IgKGNvbnN0IGNhbGwgb2YgbWVzc2FnZS5jaG9pY2VzPy5bMF0/Lm1lc3NhZ2U/LnRvb2xfY2FsbHMgPz8gW10pIHtcbiAgICAgIGlmIChjYWxsLnR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgZnVuYyA9ICh0aGlzIGFzIGFueSlbY2FsbC5mdW5jdGlvbi5uYW1lXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZnVuYyhKU09OLnBhcnNlKGNhbGwuZnVuY3Rpb24uYXJndW1lbnRzKSk7XG4gICAgICAgIHRoaXMucmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZTxUPWFueT4obWVzc2FnZTogc3RyaW5nLCBvcHRpb25zOiB7dG9vbHM/OiBhbnlbXX0gPSB7fSk6IFByb21pc2U8VD4ge1xuICAgIHRoaXMubWVzc2FnZXMucHVzaCh7cm9sZTogJ3VzZXInLCBjb250ZW50OiBtZXNzYWdlfSk7XG4gICAgYXdhaXQgdGhpcy5jb21wbGV0aW9uKG9wdGlvbnMudG9vbHMpO1xuICAgIHJldHVybiB0aGlzLnJlc3VsdHMuYXQoLTEpIGFzIGFueTtcbiAgfVxufVxuXG4iXX0=","import { Injectable } from \"@angular/core\";\nimport { LOCAL_STORAGE } from '@nx-ddd/any-func/adapters/local-storage';\nimport CryptoJS from 'crypto-js';\nimport * as i0 from \"@angular/core\";\nexport class CacheAdapter {\n localStorage = LOCAL_STORAGE.inject();\n async get(keyOrObj) {\n const key = this.makeKey(keyOrObj);\n return this.parseJson(this.localStorage.getItem(key));\n }\n async set(keyOrObj, value) {\n const key = this.makeKey(keyOrObj);\n this.localStorage.setItem(key, this.makeJson(value));\n }\n async call(props, callback) {\n const key = this.makeKey(props);\n let value = await this.get(key);\n if (value)\n return value;\n value = await callback(props);\n await this.set(key, value);\n return value;\n }\n makeKey(keyOrObj) {\n const value = typeof keyOrObj === 'string' ? keyOrObj : JSON.stringify(keyOrObj);\n return CryptoJS.SHA256(value).toString();\n }\n makeJson(valueOrObj) {\n return JSON.stringify(valueOrObj);\n }\n parseJson(value) {\n return JSON.parse(value);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CacheAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CacheAdapter });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CacheAdapter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvYW55LWZ1bmMvc3JjL2xpYi9pbXBsL2FkYXB0ZXJzL2NhY2hlL2NhY2hlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDOztBQUdqQyxNQUFNLE9BQU8sWUFBWTtJQUNiLFlBQVksR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFaEQsS0FBSyxDQUFDLEdBQUcsQ0FBSSxRQUF5QjtRQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBYSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQXlCLEVBQUUsS0FBVTtRQUM3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQWlDLEtBQVEsRUFBRSxRQUFrQztRQUNyRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBSSxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUs7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4QixLQUFLLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFUyxPQUFPLENBQUMsUUFBeUI7UUFDekMsTUFBTSxLQUFLLEdBQUcsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakYsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFUyxRQUFRLENBQUMsVUFBZTtRQUNoQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVTLFNBQVMsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO3VHQWpDVSxZQUFZOzJHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0UgfSBmcm9tICdAbngtZGRkL2FueS1mdW5jL2FkYXB0ZXJzL2xvY2FsLXN0b3JhZ2UnO1xuaW1wb3J0IENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYWNoZUFkYXB0ZXIge1xuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlID0gTE9DQUxfU1RPUkFHRS5pbmplY3QoKTtcblxuICBhc3luYyBnZXQ8VD4oa2V5T3JPYmo6IHN0cmluZyB8IG9iamVjdCk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLm1ha2VLZXkoa2V5T3JPYmopO1xuICAgIHJldHVybiB0aGlzLnBhcnNlSnNvbih0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpIGFzIFQgfCBudWxsO1xuICB9XG5cbiAgYXN5bmMgc2V0KGtleU9yT2JqOiBzdHJpbmcgfCBvYmplY3QsIHZhbHVlOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLm1ha2VLZXkoa2V5T3JPYmopO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0aGlzLm1ha2VKc29uKHZhbHVlKSk7XG4gIH1cblxuICBhc3luYyBjYWxsPFAgZXh0ZW5kcyAoc3RyaW5nIHwgb2JqZWN0KSwgVD4ocHJvcHM6IFAsIGNhbGxiYWNrOiAocHJvcHM6IFApID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLm1ha2VLZXkocHJvcHMpO1xuICAgIGxldCB2YWx1ZSA9IGF3YWl0IHRoaXMuZ2V0PFQ+KGtleSk7XG4gICAgaWYgKHZhbHVlKSByZXR1cm4gdmFsdWU7XG4gICAgdmFsdWUgPSBhd2FpdCBjYWxsYmFjayhwcm9wcyk7XG4gICAgYXdhaXQgdGhpcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuIHZhbHVlOyBcbiAgfVxuXG4gIHByb3RlY3RlZCBtYWtlS2V5KGtleU9yT2JqOiBzdHJpbmcgfCBvYmplY3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIGtleU9yT2JqID09PSAnc3RyaW5nJyA/IGtleU9yT2JqIDogSlNPTi5zdHJpbmdpZnkoa2V5T3JPYmopO1xuICAgIHJldHVybiBDcnlwdG9KUy5TSEEyNTYodmFsdWUpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFrZUpzb24odmFsdWVPck9iajogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWVPck9iaik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VKc29uKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgfVxufVxuIl19","import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { injectOpenAiService } from '@nx-ddd/common/infrastructure/externals/openai';\nimport { provideOpenaiService } from '@nx-ddd/common/infrastructure/externals/openai/impl';\nimport { catchError, lastValueFrom, map, of, retry, switchMap, tap } from 'rxjs';\nimport pLimit from 'p-limit';\nimport { ZodSchema } from 'zod';\nimport zodToJsonSchema from 'zod-to-json-schema';\nimport { buildFunctionTool } from '../agent';\nimport { targetConstructorToSchema } from '../impl/json-schema';\nimport { CacheAdapter } from '../impl/adapters/cache';\nimport { ValidatorAdapter } from '@nx-ddd/any-func/adapters/validator';\nimport * as i0 from \"@angular/core\";\nexport const ANY_FUNC_SERVICE = new InjectionToken('[@nx-ddd/any-func] AnyFuncService');\nexport function injectAnyFunc() {\n return inject(ANY_FUNC_SERVICE, { optional: true }) ?? {};\n}\nfunction isBrowserFile(obj) {\n return typeof File !== 'undefined' && obj instanceof File;\n}\nconst ANY_FUNC_CONFIG = new InjectionToken('[@nx-ddd/any-func] AnyFuncConfig');\nexport function provideAnyFunc(useFactory) {\n const config = useFactory();\n return [\n { provide: ANY_FUNC_SERVICE, useClass: AnyFuncService },\n { provide: ANY_FUNC_CONFIG, useFactory },\n CacheAdapter,\n provideOpenaiService(() => ({ apiKey: config.openaiApiKey, dangerouslyAllowBrowser: config.dangerouslyAllowBrowser })),\n ];\n}\nclass OpenAiMessageHelper {\n static async imageToBase64(imageFile) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result;\n resolve(base64String.split(',')[1]);\n };\n reader.onerror = reject;\n reader.readAsDataURL(imageFile);\n });\n }\n static async buildFilesMessage(files) {\n return await Promise.all(files.map(async (file) => ({\n type: 'image_url',\n image_url: { url: `data:image/jpeg;base64,${await this.imageToBase64(file)}` },\n })));\n }\n}\nexport class AnyFuncService {\n openai = injectOpenAiService();\n config = inject(ANY_FUNC_CONFIG, { optional: true }) ?? { debug: false };\n cache = inject(CacheAdapter);\n validator = inject(ValidatorAdapter);\n /** @deprecated use callByJsonSchema instead */\n async jsonSchema(_input, jsonSchema, options = {}) {\n return this.callByJsonSchema(_input, jsonSchema, options);\n }\n async callByJsonSchema(_input, jsonSchema, { instructions = '', model = 'gpt-4o', specs = [], embeddings = false, sample = 3, temperature = 0, maxRetry = 3, validator = (data) => this.validator.validate(jsonSchema, data), } = {}) {\n for (const spec of specs) {\n const errors = await validator(spec.output);\n if (errors.length > 0) {\n throw new Error(JSON.stringify(errors, null, 2));\n }\n }\n const content = await this.parseInput(_input);\n const sortedSpecs = embeddings ? await this.sort(specs, embeddings, _input) : specs;\n const messages = [\n { role: 'system', content: instructions },\n ...(await this.buildChatMessages(sortedSpecs.slice(0, sample).reverse())),\n { role: 'user', content },\n ];\n return lastValueFrom(of(null).pipe(map(() => messages), switchMap(() => this.complete(_input, jsonSchema, messages, {\n model,\n sample,\n temperature,\n })), tap(message => messages.push(message)), switchMap(async (message) => {\n const toolCall = message.tool_calls[0];\n if (toolCall.type !== 'function') {\n throw new Error('Unexpected tool call type');\n }\n const output = JSON.parse(toolCall.function.arguments);\n console.debug('[AnyFuncService#complete] output:', output);\n const errors = await validator(output);\n console.debug('[AnyFuncService#complete] errors:', errors);\n if (errors.length > 0) {\n messages.push({\n role: 'tool',\n content: JSON.stringify(errors),\n tool_call_id: message.tool_calls[0].id,\n });\n if (this.config.debug) {\n console.debug('messages', JSON.stringify(messages, null, 2));\n }\n throw new Error(JSON.stringify(errors, null, 2));\n }\n else {\n messages.push({\n role: 'tool',\n content: JSON.stringify(output),\n tool_call_id: message.tool_calls[0].id,\n });\n if (this.config.debug) {\n console.debug('messages', JSON.stringify(messages, null, 2));\n }\n }\n return output;\n }), catchError((error) => {\n console.error(error);\n throw error;\n }), retry(maxRetry)));\n // debugPrice(model, res.usage);\n }\n async callByZod(_input, zod, { instructions = '', model = 'gpt-4o', specs = [], embeddings = false, sample = 3, temperature = 0, maxRetry = 3, validator = (data) => this.validator.validate(zodToJsonSchema(zod, { $refStrategy: 'none' }), data), } = {}) {\n return this.jsonSchema(_input, zodToJsonSchema(zod, { $refStrategy: 'none' }), {\n instructions,\n model,\n specs,\n embeddings,\n sample,\n temperature,\n maxRetry,\n validator,\n });\n }\n async callByClassValidator(_input, args, { instructions = '', model = 'gpt-4o', specs = [], embeddings = false, sample = 3, temperature = 0, maxRetry = 3, validator = (data) => this.validator.validate(targetConstructorToSchema(args), data), } = {}) {\n const parameters = targetConstructorToSchema(args);\n console.debug('[AnyFuncService#call] parameters:', parameters);\n return this.jsonSchema(_input, parameters, {\n instructions,\n model,\n specs,\n embeddings,\n sample,\n temperature,\n maxRetry,\n validator,\n });\n }\n async call(_input, args, params = {}) {\n if (args instanceof ZodSchema) {\n return this.callByZod(_input, args, params);\n }\n // class validatorか判定\n if (args instanceof Function) {\n return this.callByClassValidator(_input, args, params);\n }\n if (typeof args === 'object' && args !== null && 'type' in args && args.type === 'object') {\n return this.callByJsonSchema(_input, args, params);\n }\n throw new Error('Invalid args type');\n }\n async complete(_input, jsonSchema, messages, { model = 'gpt-4o', temperature = 0, } = {}) {\n const tool = buildFunctionTool({ name: 'function', description: '', parameters: jsonSchema });\n const props = {\n model,\n messages,\n tools: [tool],\n tool_choice: {\n type: 'function',\n function: { name: 'function' }\n },\n temperature,\n };\n const res = await this.cache.call(props, props => this.openai.chat.completions.create(props));\n return res.choices[0].message;\n }\n async buildChatMessages(specs) {\n const messages = await Promise.all(specs.map(async ({ input, output }) => {\n const parsedInput = await this.parseInput(input);\n return [\n { role: 'user', content: parsedInput },\n {\n role: 'assistant',\n content: null,\n tool_calls: [\n {\n id: 'call-example',\n type: 'function',\n function: {\n name: 'function',\n arguments: JSON.stringify(output),\n }\n }\n ],\n },\n { role: 'tool', content: 'success', tool_call_id: 'call-example' },\n ];\n }));\n return messages.flat();\n }\n async getEmbeddings(item, accessor) {\n const props = { item, model: 'text-embedding-3-small' };\n let embedding = await this.cache.get(props);\n if (embedding)\n return embedding;\n embedding = await this.openai.embeddings.create({\n model: props.model,\n input: accessor(item),\n }).then(res => res.data[0].embedding);\n await this.cache.set(props, embedding);\n return embedding;\n }\n async sort(items, accessor, target) {\n const dist = (a, b) => Math.sqrt(a.reduce((acc, v, i) => acc + (v - b[i]) ** 2, 0));\n const targetEmbeddings = await this.getEmbeddings(target, s => s);\n const limit = pLimit(10);\n const embeddings = await Promise.all(items.map(item => limit(() => this.getEmbeddings(item, accessor))));\n const items_ = items.map((item, i) => ({\n item,\n embedding: embeddings[i],\n distance: dist(embeddings[i], targetEmbeddings),\n }));\n const sorted = items_.sort((a, b) => a.distance - b.distance);\n return sorted.map(({ item }) => item);\n }\n async parseInput(input) {\n if (isBrowserFile(input)) {\n return await OpenAiMessageHelper.buildFilesMessage([input]);\n }\n else if (input === 'string') {\n return input;\n }\n else {\n return JSON.stringify(input);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AnyFuncService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AnyFuncService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AnyFuncService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW55LWZ1bmMuc2VydmljZS5pbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9hbnktZnVuYy9zcmMvbGliL2FueS1mdW5jL2FueS1mdW5jLnNlcnZpY2UuaW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDM0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRixPQUFPLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFHN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNoQyxPQUFPLGVBQWUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUd2RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsbUNBQW1DLENBQUMsQ0FBQztBQUV4RyxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxJQUFJLEVBQW9CLENBQUM7QUFDNUUsQ0FBQztBQUdE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Qzt1R0F0T1UsY0FBYzsyR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0T3BlbkFpU2VydmljZSB9IGZyb20gJ0BueC1kZGQvY29tbW9uL2luZnJhc3RydWN0dXJlL2V4dGVybmFscy9vcGVuYWknO1xuaW1wb3J0IHsgcHJvdmlkZU9wZW5haVNlcnZpY2UgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9pbmZyYXN0cnVjdHVyZS9leHRlcm5hbHMvb3BlbmFpL2ltcGwnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbGFzdFZhbHVlRnJvbSwgbWFwLCBvZiwgcmV0cnksIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgcExpbWl0IGZyb20gJ3AtbGltaXQnO1xuaW1wb3J0IHR5cGUgeyBDaGF0Q29tcGxldGlvbk1lc3NhZ2VQYXJhbSwgRnVuY3Rpb25QYXJhbWV0ZXJzIH0gZnJvbSAnb3BlbmFpL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBDbGllbnRPcHRpb25zIH0gZnJvbSAnb3BlbmFpJztcbmltcG9ydCB7IFpvZFNjaGVtYSB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgem9kVG9Kc29uU2NoZW1hIGZyb20gJ3pvZC10by1qc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBidWlsZEZ1bmN0aW9uVG9vbCB9IGZyb20gJy4uL2FnZW50JztcbmltcG9ydCB7IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEgfSBmcm9tICcuLi9pbXBsL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IENhY2hlQWRhcHRlciB9IGZyb20gJy4uL2ltcGwvYWRhcHRlcnMvY2FjaGUnO1xuaW1wb3J0IHsgVmFsaWRhdG9yQWRhcHRlciB9IGZyb20gJ0BueC1kZGQvYW55LWZ1bmMvYWRhcHRlcnMvdmFsaWRhdG9yJztcbmltcG9ydCB7IEpzb25TY2hlbWEgfSBmcm9tICdqc29uLXNjaGVtYS1saWJyYXJ5JztcblxuZXhwb3J0IGNvbnN0IEFOWV9GVU5DX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48QW55RnVuY1NlcnZpY2U+KCdbQG54LWRkZC9hbnktZnVuY10gQW55RnVuY1NlcnZpY2UnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEFueUZ1bmMoKTogQW55RnVuY1NlcnZpY2Uge1xuICByZXR1cm4gaW5qZWN0KEFOWV9GVU5DX1NFUlZJQ0UsIHtvcHRpb25hbDogdHJ1ZX0pID8/IHt9IGFzIEFueUZ1bmNTZXJ2aWNlO1xufVxuXG5cbmZ1bmN0aW9uIGlzQnJvd3NlckZpbGUob2JqOiB1bmtub3duKTogb2JqIGlzIEZpbGUge1xuICByZXR1cm4gdHlwZW9mIEZpbGUgIT09ICd1bmRlZmluZWQnICYmIG9iaiBpbnN0YW5jZW9mIEZpbGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsbE9wdGlvbnM8SSwgTywgUyBleHRlbmRzIHsgaW5wdXQ6IEksIG91dHB1dDogTyB9ID0geyBpbnB1dDogSSwgb3V0cHV0OiBPIH0+IHtcbiAgaW5zdHJ1Y3Rpb25zPzogc3RyaW5nLFxuICBtb2RlbD86IHN0cmluZyxcbiAgc3BlY3M/OiBTW10sXG4gIGVtYmVkZGluZ3M/OiBmYWxzZSB8ICgoc3BlYzogUykgPT4gc3RyaW5nKSxcbiAgc2FtcGxlPzogbnVtYmVyLFxuICB0ZW1wZXJhdHVyZT86IG51bWJlcixcbiAgbWF4UmV0cnk/OiBudW1iZXIsXG4gIHZhbGlkYXRvcj86IChvdXRwdXQ6IE8pID0+IFByb21pc2U8YW55Pixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbnlGdW5jQ29uZmlnIGV4dGVuZHMgQ2xpZW50T3B0aW9ucyB7XG4gIGRlYnVnOiBib29sZWFuO1xuICBvcGVuYWlBcGlLZXk6IHN0cmluZztcbn1cblxuY29uc3QgQU5ZX0ZVTkNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFueUZ1bmNDb25maWc+KCdbQG54LWRkZC9hbnktZnVuY10gQW55RnVuY0NvbmZpZycpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFueUZ1bmModXNlRmFjdG9yeT86ICgpID0+IEFueUZ1bmNDb25maWcpIHtcbiAgY29uc3QgY29uZmlnID0gdXNlRmFjdG9yeSgpO1xuICByZXR1cm4gW1xuICAgIHsgcHJvdmlkZTogQU5ZX0ZVTkNfU0VSVklDRSwgdXNlQ2xhc3M6IEFueUZ1bmNTZXJ2aWNlIH0sXG4gICAgeyBwcm92aWRlOiBBTllfRlVOQ19DT05GSUcsIHVzZUZhY3RvcnkgfSxcbiAgICBDYWNoZUFkYXB0ZXIsXG4gICAgcHJvdmlkZU9wZW5haVNlcnZpY2UoKCkgPT4gKHsgYXBpS2V5OiBjb25maWcub3BlbmFpQXBpS2V5LCBkYW5nZXJvdXNseUFsbG93QnJvd3NlcjogY29uZmlnLmRhbmdlcm91c2x5QWxsb3dCcm93c2VyIH0pKSxcbiAgXVxufVxuXG5jbGFzcyBPcGVuQWlNZXNzYWdlSGVscGVyIHtcbiAgc3RhdGljIGFzeW5jIGltYWdlVG9CYXNlNjQoaW1hZ2VGaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2U2NFN0cmluZyA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICByZXNvbHZlKGJhc2U2NFN0cmluZy5zcGxpdCgnLCcpWzFdKTtcbiAgICAgIH07XG4gICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGltYWdlRmlsZSk7XG4gICAgfSk7XG4gIH1cbiAgICBcbiAgc3RhdGljIGFzeW5jIGJ1aWxkRmlsZXNNZXNzYWdlKGZpbGVzOiBGaWxlW10pOiBQcm9taXNlPENoYXRDb21wbGV0aW9uTWVzc2FnZVBhcmFtWydjb250ZW50J10+IHtcbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiAoe1xuICAgICAgdHlwZTogJ2ltYWdlX3VybCcgYXMgY29uc3QsXG4gICAgICBpbWFnZV91cmw6IHsgdXJsOiBgZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwke2F3YWl0IHRoaXMuaW1hZ2VUb0Jhc2U2NChmaWxlKX1gIH0sXG4gICAgfSkpKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW55RnVuY1NlcnZpY2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3BlbmFpID0gaW5qZWN0T3BlbkFpU2VydmljZSgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEFOWV9GVU5DX0NPTkZJRywge29wdGlvbmFsOiB0cnVlfSkgPz8geyBkZWJ1ZzogZmFsc2UgfTtcbiAgcHJvdGVjdGVkIGNhY2hlID0gaW5qZWN0KENhY2hlQWRhcHRlcik7XG4gIHByb3RlY3RlZCB2YWxpZGF0b3IgPSBpbmplY3QoVmFsaWRhdG9yQWRhcHRlcik7XG5cbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBjYWxsQnlKc29uU2NoZW1hIGluc3RlYWQgKi9cbiAgYXN5bmMganNvblNjaGVtYShfaW5wdXQ6IGFueSwganNvblNjaGVtYTogRnVuY3Rpb25QYXJhbWV0ZXJzLCBvcHRpb25zOiBDYWxsT3B0aW9uczxhbnksIGFueT4gPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbEJ5SnNvblNjaGVtYShfaW5wdXQsIGpzb25TY2hlbWEsIG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgY2FsbEJ5SnNvblNjaGVtYShfaW5wdXQ6IGFueSwganNvblNjaGVtYTogRnVuY3Rpb25QYXJhbWV0ZXJzLCB7XG4gICAgaW5zdHJ1Y3Rpb25zID0gJycsXG4gICAgbW9kZWwgPSAnZ3B0LTRvJyxcbiAgICBzcGVjcyA9IFtdLFxuICAgIGVtYmVkZGluZ3MgPSBmYWxzZSxcbiAgICBzYW1wbGUgPSAzLFxuICAgIHRlbXBlcmF0dXJlID0gMCxcbiAgICBtYXhSZXRyeSA9IDMsXG4gICAgdmFsaWRhdG9yID0gKGRhdGE6IGFueSkgPT4gdGhpcy52YWxpZGF0b3IudmFsaWRhdGUoanNvblNjaGVtYSwgZGF0YSksXG4gIH06IENhbGxPcHRpb25zPGFueSwgYW55PiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBmb3IgKGNvbnN0IHNwZWMgb2Ygc3BlY3MpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IHZhbGlkYXRvcihzcGVjLm91dHB1dCk7XG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9ycywgbnVsbCwgMikpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB0aGlzLnBhcnNlSW5wdXQoX2lucHV0KTtcbiAgICBjb25zdCBzb3J0ZWRTcGVjcyA9IGVtYmVkZGluZ3MgPyBhd2FpdCB0aGlzLnNvcnQoc3BlY3MsIGVtYmVkZGluZ3MsIF9pbnB1dCkgOiBzcGVjcztcbiAgICBjb25zdCBtZXNzYWdlczogQ2hhdENvbXBsZXRpb25NZXNzYWdlUGFyYW1bXSA9IFtcbiAgICAgIHsgcm9sZTogJ3N5c3RlbScsIGNvbnRlbnQ6IGluc3RydWN0aW9ucyB9LFxuICAgICAgLi4uKGF3YWl0IHRoaXMuYnVpbGRDaGF0TWVzc2FnZXMoc29ydGVkU3BlY3Muc2xpY2UoMCwgc2FtcGxlKS5yZXZlcnNlKCkpKSxcbiAgICAgIHsgcm9sZTogJ3VzZXInLCBjb250ZW50IH0sXG4gICAgXTtcbiAgICByZXR1cm4gbGFzdFZhbHVlRnJvbShvZihudWxsKS5waXBlKFxuICAgICAgbWFwKCgpID0+IG1lc3NhZ2VzKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbXBsZXRlKF9pbnB1dCwganNvblNjaGVtYSwgbWVzc2FnZXMsIHtcbiAgICAgICAgbW9kZWwsXG4gICAgICAgIHNhbXBsZSxcbiAgICAgICAgdGVtcGVyYXR1cmUsXG4gICAgICB9KSksXG4gICAgICB0YXAobWVzc2FnZSA9PiAgbWVzc2FnZXMucHVzaChtZXNzYWdlKSksXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgY29uc3QgdG9vbENhbGwgPSBtZXNzYWdlLnRvb2xfY2FsbHMhWzBdO1xuICAgICAgICBpZiAodG9vbENhbGwudHlwZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCB0b29sIGNhbGwgdHlwZScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IEpTT04ucGFyc2UodG9vbENhbGwuZnVuY3Rpb24uYXJndW1lbnRzKTtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW0FueUZ1bmNTZXJ2aWNlI2NvbXBsZXRlXSBvdXRwdXQ6Jywgb3V0cHV0KTtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gYXdhaXQgdmFsaWRhdG9yKG91dHB1dCk7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoJ1tBbnlGdW5jU2VydmljZSNjb21wbGV0ZV0gZXJyb3JzOicsIGVycm9ycyk7XG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIG1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgICAgcm9sZTogJ3Rvb2wnLFxuICAgICAgICAgICAgY29udGVudDogSlNPTi5zdHJpbmdpZnkoZXJyb3JzKSxcbiAgICAgICAgICAgIHRvb2xfY2FsbF9pZDogbWVzc2FnZS50b29sX2NhbGxzIVswXS5pZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ21lc3NhZ2VzJywgSlNPTi5zdHJpbmdpZnkobWVzc2FnZXMsIG51bGwsIDIpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyb3JzLCBudWxsLCAyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgICByb2xlOiAndG9vbCcsXG4gICAgICAgICAgICBjb250ZW50OiBKU09OLnN0cmluZ2lmeShvdXRwdXQpLFxuICAgICAgICAgICAgdG9vbF9jYWxsX2lkOiBtZXNzYWdlLnRvb2xfY2FsbHMhWzBdLmlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnbWVzc2FnZXMnLCBKU09OLnN0cmluZ2lmeShtZXNzYWdlcywgbnVsbCwgMikpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pLFxuICAgICAgcmV0cnkobWF4UmV0cnkpLFxuICAgICkpO1xuICAgIC8vIGRlYnVnUHJpY2UobW9kZWwsIHJlcy51c2FnZSk7XG4gIH1cblxuICBhc3luYyBjYWxsQnlab2Q8SSwgTz4oX2lucHV0OiBJLCB6b2Q6IFpvZFNjaGVtYTxPPiwge1xuICAgIGluc3RydWN0aW9ucyA9ICcnLFxuICAgIG1vZGVsID0gJ2dwdC00bycsXG4gICAgc3BlY3MgPSBbXSxcbiAgICBlbWJlZGRpbmdzID0gZmFsc2UsXG4gICAgc2FtcGxlID0gMyxcbiAgICB0ZW1wZXJhdHVyZSA9IDAsXG4gICAgbWF4UmV0cnkgPSAzLFxuICAgIHZhbGlkYXRvciA9IChkYXRhOiBhbnkpID0+IHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlKHpvZFRvSnNvblNjaGVtYSh6b2QgYXMgYW55LCB7ICRyZWZTdHJhdGVneTogJ25vbmUnIH0pLCBkYXRhKSxcbiAgfTogQ2FsbE9wdGlvbnM8SSwgTz4gPSB7fSk6IFByb21pc2U8Tz4ge1xuICAgIHJldHVybiB0aGlzLmpzb25TY2hlbWEoX2lucHV0LCB6b2RUb0pzb25TY2hlbWEoem9kIGFzIGFueSwgeyAkcmVmU3RyYXRlZ3k6ICdub25lJyB9KSwge1xuICAgICAgaW5zdHJ1Y3Rpb25zLFxuICAgICAgbW9kZWwsXG4gICAgICBzcGVjcyxcbiAgICAgIGVtYmVkZGluZ3MsXG4gICAgICBzYW1wbGUsXG4gICAgICB0ZW1wZXJhdHVyZSxcbiAgICAgIG1heFJldHJ5LFxuICAgICAgdmFsaWRhdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY2FsbEJ5Q2xhc3NWYWxpZGF0b3I8SSwgTz4oX2lucHV0OiBJLCBhcmdzOiB7bmV3ICgpOiBPfSwge1xuICAgIGluc3RydWN0aW9ucyA9ICcnLFxuICAgIG1vZGVsID0gJ2dwdC00bycsXG4gICAgc3BlY3MgPSBbXSxcbiAgICBlbWJlZGRpbmdzID0gZmFsc2UsXG4gICAgc2FtcGxlID0gMyxcbiAgICB0ZW1wZXJhdHVyZSA9IDAsXG4gICAgbWF4UmV0cnkgPSAzLFxuICAgIHZhbGlkYXRvciA9IChkYXRhOiBhbnkpID0+IHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlKHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoYXJncyksIGRhdGEpLFxuICB9OiBDYWxsT3B0aW9uczxJLCBPPiA9IHt9KTogUHJvbWlzZTxPPiB7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoYXJncykgYXMgRnVuY3Rpb25QYXJhbWV0ZXJzO1xuICAgIGNvbnNvbGUuZGVidWcoJ1tBbnlGdW5jU2VydmljZSNjYWxsXSBwYXJhbWV0ZXJzOicsIHBhcmFtZXRlcnMpO1xuICAgIHJldHVybiB0aGlzLmpzb25TY2hlbWEoX2lucHV0LCBwYXJhbWV0ZXJzLCB7XG4gICAgICBpbnN0cnVjdGlvbnMsXG4gICAgICBtb2RlbCxcbiAgICAgIHNwZWNzLFxuICAgICAgZW1iZWRkaW5ncyxcbiAgICAgIHNhbXBsZSxcbiAgICAgIHRlbXBlcmF0dXJlLFxuICAgICAgbWF4UmV0cnksXG4gICAgICB2YWxpZGF0b3IsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjYWxsPEksIE8+KF9pbnB1dDogSSwgYXJnczoge25ldyAoKTogT30gfCBab2RTY2hlbWE8Tz4gfCBKc29uU2NoZW1hLCBwYXJhbXM6IENhbGxPcHRpb25zPEksIE8+ID0ge30pOiBQcm9taXNlPE8+IHtcbiAgICBpZiAoYXJncyBpbnN0YW5jZW9mIFpvZFNjaGVtYSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbEJ5Wm9kKF9pbnB1dCwgYXJncywgcGFyYW1zKTtcbiAgICB9XG4gICAgLy8gY2xhc3MgdmFsaWRhdG9y44GL5Yik5a6aXG4gICAgaWYgKGFyZ3MgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbEJ5Q2xhc3NWYWxpZGF0b3IoX2lucHV0LCBhcmdzLCBwYXJhbXMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmIGFyZ3MgIT09IG51bGwgJiYgJ3R5cGUnIGluIGFyZ3MgJiYgYXJncy50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbEJ5SnNvblNjaGVtYShfaW5wdXQsIGFyZ3MsIHBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmdzIHR5cGUnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb21wbGV0ZTxJLCBPPihcbiAgICBfaW5wdXQ6IGFueSxcbiAgICBqc29uU2NoZW1hOiBGdW5jdGlvblBhcmFtZXRlcnMsXG4gICAgbWVzc2FnZXM6IENoYXRDb21wbGV0aW9uTWVzc2FnZVBhcmFtW10sXG4gICAge1xuICAgICAgbW9kZWwgPSAnZ3B0LTRvJyxcbiAgICAgIHRlbXBlcmF0dXJlID0gMCxcbiAgICB9OiBDYWxsT3B0aW9uczxJLCBPPiAmIHtmdW5jdGlvbk91dHB1dD86IG9iamVjdH0gPSB7fVxuICApIHtcbiAgICBcbiAgICBjb25zdCB0b29sID0gYnVpbGRGdW5jdGlvblRvb2woe25hbWU6ICdmdW5jdGlvbicsIGRlc2NyaXB0aW9uOiAnJywgcGFyYW1ldGVyczoganNvblNjaGVtYX0pO1xuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgbW9kZWwsXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIHRvb2xzOiBbIHRvb2wgXSxcbiAgICAgIHRvb2xfY2hvaWNlOiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbicgYXMgY29uc3QsXG4gICAgICAgIGZ1bmN0aW9uOiB7IG5hbWU6ICdmdW5jdGlvbicgfVxuICAgICAgfSxcbiAgICAgIHRlbXBlcmF0dXJlLFxuICAgIH07XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jYWNoZS5jYWxsKHByb3BzLCBwcm9wcyA9PiB0aGlzLm9wZW5haS5jaGF0LmNvbXBsZXRpb25zLmNyZWF0ZShwcm9wcykpO1xuICAgIHJldHVybiByZXMuY2hvaWNlc1swXS5tZXNzYWdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkQ2hhdE1lc3NhZ2VzKHNwZWNzOiB7XG4gICAgaW5wdXQ6IGFueTtcbiAgICBvdXRwdXQ6IGFueTtcbiAgfVtdKTogUHJvbWlzZTx7cm9sZTogJ2Fzc2lzdGFudCcgfCAndXNlcicsIGNvbnRlbnQ6IHN0cmluZ31bXT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgUHJvbWlzZS5hbGwoc3BlY3MubWFwKGFzeW5jICh7IGlucHV0LCBvdXRwdXQgfSkgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkSW5wdXQgPSBhd2FpdCB0aGlzLnBhcnNlSW5wdXQoaW5wdXQpO1xuICAgICAgcmV0dXJuIDxDaGF0Q29tcGxldGlvbk1lc3NhZ2VQYXJhbVtdPltcbiAgICAgICAgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IHBhcnNlZElucHV0IH0sXG4gICAgICAgIHtcbiAgICAgICAgICByb2xlOiAnYXNzaXN0YW50JyxcbiAgICAgICAgICBjb250ZW50OiBudWxsLFxuICAgICAgICAgIHRvb2xfY2FsbHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdjYWxsLWV4YW1wbGUnLFxuICAgICAgICAgICAgICB0eXBlOiAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgICBmdW5jdGlvbjoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICAgICAgYXJndW1lbnRzOiBKU09OLnN0cmluZ2lmeShvdXRwdXQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgeyByb2xlOiAndG9vbCcsIGNvbnRlbnQ6ICdzdWNjZXNzJywgdG9vbF9jYWxsX2lkOiAnY2FsbC1leGFtcGxlJyB9LFxuICAgICAgXTtcbiAgICB9KSlcbiAgICByZXR1cm4gbWVzc2FnZXMuZmxhdCgpIGFzIHtyb2xlOiAnYXNzaXN0YW50JyB8ICd1c2VyJywgY29udGVudDogc3RyaW5nfVtdO1xuICB9XG5cbiAgYXN5bmMgZ2V0RW1iZWRkaW5nczxUPihpdGVtOiBULCBhY2Nlc3NvcjogKGl0ZW06IFQpID0+IHN0cmluZyk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICBjb25zdCBwcm9wcyA9IHsgaXRlbSwgbW9kZWw6ICd0ZXh0LWVtYmVkZGluZy0zLXNtYWxsJyB9O1xuICAgIGxldCBlbWJlZGRpbmcgPSBhd2FpdCB0aGlzLmNhY2hlLmdldDxudW1iZXJbXT4ocHJvcHMpO1xuICAgIGlmIChlbWJlZGRpbmcpIHJldHVybiBlbWJlZGRpbmc7XG4gICAgZW1iZWRkaW5nID0gYXdhaXQgdGhpcy5vcGVuYWkuZW1iZWRkaW5ncy5jcmVhdGUoe1xuICAgICAgbW9kZWw6IHByb3BzLm1vZGVsLFxuICAgICAgaW5wdXQ6IGFjY2Vzc29yKGl0ZW0pLFxuICAgIH0pLnRoZW4ocmVzID0+IHJlcy5kYXRhWzBdLmVtYmVkZGluZyk7XG4gICAgYXdhaXQgdGhpcy5jYWNoZS5zZXQocHJvcHMsIGVtYmVkZGluZyk7XG4gICAgcmV0dXJuIGVtYmVkZGluZztcbiAgfVxuXG4gIGFzeW5jIHNvcnQ8VD4oaXRlbXM6IFRbXSwgYWNjZXNzb3I6IChpdGVtOiBUKSA9PiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCBkaXN0ID0gKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSkgPT4gTWF0aC5zcXJ0KGEucmVkdWNlKChhY2MsIHYsIGkpID0+IGFjYyArICh2IC0gYltpXSkgKiogMiwgMCkpO1xuICAgIGNvbnN0IHRhcmdldEVtYmVkZGluZ3MgPSBhd2FpdCB0aGlzLmdldEVtYmVkZGluZ3ModGFyZ2V0LCBzID0+IHMpO1xuICAgIGNvbnN0IGxpbWl0ID0gcExpbWl0KDEwKTtcbiAgICBjb25zdCBlbWJlZGRpbmdzID0gYXdhaXQgUHJvbWlzZS5hbGwoaXRlbXMubWFwKGl0ZW0gPT4gbGltaXQoKCkgPT4gdGhpcy5nZXRFbWJlZGRpbmdzKGl0ZW0sIGFjY2Vzc29yKSkpKTtcbiAgICBjb25zdCBpdGVtc18gPSBpdGVtcy5tYXAoKGl0ZW0sIGkpID0+ICh7XG4gICAgICBpdGVtLFxuICAgICAgZW1iZWRkaW5nOiBlbWJlZGRpbmdzW2ldLFxuICAgICAgZGlzdGFuY2U6IGRpc3QoZW1iZWRkaW5nc1tpXSwgdGFyZ2V0RW1iZWRkaW5ncyksXG4gICAgfSkpO1xuICAgIGNvbnN0IHNvcnRlZCA9IGl0ZW1zXy5zb3J0KChhLCBiKSA9PiBhLmRpc3RhbmNlIC0gYi5kaXN0YW5jZSk7XG4gICAgcmV0dXJuIHNvcnRlZC5tYXAoKHtpdGVtfSkgPT4gaXRlbSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBhcnNlSW5wdXQoaW5wdXQ6IGFueSkge1xuICAgIGlmIChpc0Jyb3dzZXJGaWxlKGlucHV0KSkge1xuICAgICAgcmV0dXJuIGF3YWl0IE9wZW5BaU1lc3NhZ2VIZWxwZXIuYnVpbGRGaWxlc01lc3NhZ2UoW2lucHV0XSk7XG4gICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGlucHV0KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","// Re-export from impl to maintain backwards compatibility\nexport { ANY_FUNC_SERVICE, injectAnyFunc } from './any-func.service.impl';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW55LWZ1bmMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvYW55LWZ1bmMvc3JjL2xpYi9hbnktZnVuYy9hbnktZnVuYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBEQUEwRDtBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZS1leHBvcnQgZnJvbSBpbXBsIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5leHBvcnQgeyBBTllfRlVOQ19TRVJWSUNFLCBpbmplY3RBbnlGdW5jIH0gZnJvbSAnLi9hbnktZnVuYy5zZXJ2aWNlLmltcGwnO1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWFueS1mdW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9hbnktZnVuYy9zcmMvbGliL254LWRkZC1hbnktZnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["_targetConstructorToSchema"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nx-ddd-any-func.mjs","sources":["../tmp-esm2022/impl/json-schema/default-metadata-storage.js","../tmp-esm2022/impl/json-schema/json-schema.js","../tmp-esm2022/agent/agent.js","../tmp-esm2022/impl/adapters/cache/cache.adapter.js","../tmp-esm2022/any-func/tokens.js","../tmp-esm2022/any-func/message-helper.js","../tmp-esm2022/any-func/embeddings.js","../tmp-esm2022/any-func/providers.js","../tmp-esm2022/any-func/any-func.service.impl.js","../tmp-esm2022/any-func/any-func.service.js","../tmp-esm2022/nx-ddd-any-func.js"],"sourcesContent":["// 環境差異を吸収するため、try-catchでdynamic importしてdefaultMetadataStorageを取得します。\nlet defaultMetadataStorage;\ntry {\n ({ defaultMetadataStorage } = require('class-transformer/cjs/storage'));\n}\ncatch {\n // Ignore error if class-transformer is not available\n}\nexport function getMetadataStorage() {\n return defaultMetadataStorage;\n}\nexport function setMetadataStorage(metadataStorage) {\n defaultMetadataStorage = metadataStorage;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1tZXRhZGF0YS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9hbnktZnVuYy9zcmMvbGliL2ltcGwvanNvbi1zY2hlbWEvZGVmYXVsdC1tZXRhZGF0YS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNFQUFzRTtBQUN0RSxJQUFJLHNCQUFnRixDQUFDO0FBRXJGLElBQUksQ0FBQztJQUNILENBQUMsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUFDLE1BQU0sQ0FBQztJQUNQLHFEQUFxRDtBQUN2RCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLHNCQUFzQixDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsZUFBeUU7SUFDMUcsc0JBQXNCLEdBQUcsZUFBZSxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDnkrDlooPlt67nlbDjgpLlkLjlj47jgZnjgovjgZ/jgoHjgIF0cnktY2F0Y2jjgadkeW5hbWljIGltcG9ydOOBl+OBpmRlZmF1bHRNZXRhZGF0YVN0b3JhZ2XjgpLlj5blvpfjgZfjgb7jgZnjgIJcbmxldCBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlOiBpbXBvcnQoJ2NsYXNzLXRyYW5zZm9ybWVyL2VzbTUvc3RvcmFnZScpLk1ldGFkYXRhU3RvcmFnZTtcblxudHJ5IHtcbiAgKHsgZGVmYXVsdE1ldGFkYXRhU3RvcmFnZSB9ID0gcmVxdWlyZSgnY2xhc3MtdHJhbnNmb3JtZXIvY2pzL3N0b3JhZ2UnKSk7XG59IGNhdGNoIHtcbiAgLy8gSWdub3JlIGVycm9yIGlmIGNsYXNzLXRyYW5zZm9ybWVyIGlzIG5vdCBhdmFpbGFibGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1ldGFkYXRhU3RvcmFnZSgpIHtcbiAgcmV0dXJuIGRlZmF1bHRNZXRhZGF0YVN0b3JhZ2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNZXRhZGF0YVN0b3JhZ2UobWV0YWRhdGFTdG9yYWdlOiBpbXBvcnQoJ2NsYXNzLXRyYW5zZm9ybWVyL2VzbTUvc3RvcmFnZScpLk1ldGFkYXRhU3RvcmFnZSkge1xuICBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlID0gbWV0YWRhdGFTdG9yYWdlO1xufVxuIl19","import { ValidationTypes } from \"class-validator\";\nimport { targetConstructorToSchema as _targetConstructorToSchema } from \"class-validator-jsonschema\";\nimport { getMetadataStorage } from \"./default-metadata-storage\";\n// import { defaultMetadataStorage } from 'c/lass-transformer/esm5/storage';\n// setMetadataStorage(defaultMetadataStorage);\nfunction getPropType(target, property) {\n return Reflect.getMetadata('design:type', target, property);\n}\nfunction targetToSchema(type, options) {\n if (typeof type === 'function') {\n if (type.prototype === String.prototype ||\n type.prototype === Symbol.prototype) {\n return { type: 'string' };\n }\n else if (type.prototype === Number.prototype) {\n return { type: 'number' };\n }\n else if (type.prototype === Boolean.prototype) {\n return { type: 'boolean' };\n }\n return targetConstructorToSchema(type, options);\n }\n}\nconst additionalConverters = {\n [ValidationTypes.NESTED_VALIDATION]: (meta, options) => {\n if (typeof meta.target === 'function') {\n const typeMeta = options.classTransformerMetadataStorage\n ? options.classTransformerMetadataStorage.findTypeMetadata(meta.target, meta.propertyName)\n : null;\n const childType = typeMeta\n ? typeMeta.typeFunction()\n : getPropType(meta.target.prototype, meta.propertyName);\n return targetToSchema(childType, options);\n }\n },\n isDayjs: (meta) => {\n return {\n type: 'string',\n format: 'date-time', // JSON Schemaで日付型を指定\n };\n },\n};\nexport function targetConstructorToSchema(target, options = {}) {\n return _targetConstructorToSchema(target, {\n ...options,\n additionalConverters,\n classTransformerMetadataStorage: getMetadataStorage(),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2FueS1mdW5jL3NyYy9saWIvaW1wbC9qc29uLXNjaGVtYS9qc29uLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixJQUFJLDBCQUEwQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFHcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsNEVBQTRFO0FBRTVFLDhDQUE4QztBQUU5QyxTQUFTLFdBQVcsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7SUFDbkQsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDN0QsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixJQUFTLEVBQ1QsT0FBWTtJQUVaLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDL0IsSUFDRSxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTO1lBQ25DLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFDbkMsQ0FBQztZQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUE7UUFDM0IsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0MsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQTtRQUMzQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFBO1FBQzVCLENBQUM7UUFFRCxPQUFPLHlCQUF5QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sb0JBQW9CLEdBQUU7SUFDMUIsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLElBQVMsRUFBRSxPQUFZLEVBQUUsRUFBRTtRQUMvRCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsK0JBQStCO2dCQUN0RCxDQUFDLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLGdCQUFnQixDQUN0RCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxZQUFZLENBQ2xCO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUE7WUFDUixNQUFNLFNBQVMsR0FBRyxRQUFRO2dCQUN4QixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtnQkFDekIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDekQsT0FBTyxjQUFjLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFlLEVBQUU7UUFDbEMsT0FBTztZQUNMLElBQUksRUFBRSxRQUFRO1lBQ2QsTUFBTSxFQUFFLFdBQVcsRUFBRSxxQkFBcUI7U0FDM0MsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE1BQWdCLEVBQUUsVUFBNkIsRUFBRTtJQUN6RixPQUFPLDBCQUEwQixDQUFDLE1BQU0sRUFBRTtRQUN4QyxHQUFHLE9BQU87UUFDVixvQkFBb0I7UUFDcEIsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUU7S0FDdEQsQ0FBZ0IsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdGlvblR5cGVzIH0gZnJvbSBcImNsYXNzLXZhbGlkYXRvclwiXG5pbXBvcnQgeyB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hIGFzIF90YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hIH0gZnJvbSBcImNsYXNzLXZhbGlkYXRvci1qc29uc2NoZW1hXCJcbmltcG9ydCB7IElPcHRpb25zIH0gZnJvbSBcImNsYXNzLXZhbGlkYXRvci1qc29uc2NoZW1hL2J1aWxkL29wdGlvbnNcIjtcbmltcG9ydCB7IEpTT05TY2hlbWE3IH0gZnJvbSAnanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgZ2V0TWV0YWRhdGFTdG9yYWdlIH0gZnJvbSBcIi4vZGVmYXVsdC1tZXRhZGF0YS1zdG9yYWdlXCI7XG4vLyBpbXBvcnQgeyBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlIH0gZnJvbSAnYy9sYXNzLXRyYW5zZm9ybWVyL2VzbTUvc3RvcmFnZSc7XG5cbi8vIHNldE1ldGFkYXRhU3RvcmFnZShkZWZhdWx0TWV0YWRhdGFTdG9yYWdlKTtcblxuZnVuY3Rpb24gZ2V0UHJvcFR5cGUodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Rlc2lnbjp0eXBlJywgdGFyZ2V0LCBwcm9wZXJ0eSlcbn1cblxuZnVuY3Rpb24gdGFyZ2V0VG9TY2hlbWEoXG4gIHR5cGU6IGFueSxcbiAgb3B0aW9uczogYW55XG4pOiBhbnkge1xuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoXG4gICAgICB0eXBlLnByb3RvdHlwZSA9PT0gU3RyaW5nLnByb3RvdHlwZSB8fFxuICAgICAgdHlwZS5wcm90b3R5cGUgPT09IFN5bWJvbC5wcm90b3R5cGVcbiAgICApIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzdHJpbmcnIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUucHJvdG90eXBlID09PSBOdW1iZXIucHJvdG90eXBlKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnbnVtYmVyJyB9XG4gICAgfSBlbHNlIGlmICh0eXBlLnByb3RvdHlwZSA9PT0gQm9vbGVhbi5wcm90b3R5cGUpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdib29sZWFuJyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEodHlwZSwgb3B0aW9ucylcbiAgfVxufVxuXG5jb25zdCBhZGRpdGlvbmFsQ29udmVydGVycz0ge1xuICBbVmFsaWRhdGlvblR5cGVzLk5FU1RFRF9WQUxJREFUSU9OXTogKG1ldGE6IGFueSwgb3B0aW9uczogYW55KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBtZXRhLnRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgdHlwZU1ldGEgPSBvcHRpb25zLmNsYXNzVHJhbnNmb3JtZXJNZXRhZGF0YVN0b3JhZ2VcbiAgICAgICAgPyBvcHRpb25zLmNsYXNzVHJhbnNmb3JtZXJNZXRhZGF0YVN0b3JhZ2UuZmluZFR5cGVNZXRhZGF0YShcbiAgICAgICAgICAgIG1ldGEudGFyZ2V0LFxuICAgICAgICAgICAgbWV0YS5wcm9wZXJ0eU5hbWVcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbFxuICAgICAgY29uc3QgY2hpbGRUeXBlID0gdHlwZU1ldGFcbiAgICAgICAgPyB0eXBlTWV0YS50eXBlRnVuY3Rpb24oKVxuICAgICAgICA6IGdldFByb3BUeXBlKG1ldGEudGFyZ2V0LnByb3RvdHlwZSwgbWV0YS5wcm9wZXJ0eU5hbWUpXG4gICAgICByZXR1cm4gdGFyZ2V0VG9TY2hlbWEoY2hpbGRUeXBlLCBvcHRpb25zKVxuICAgIH1cbiAgfSxcbiAgaXNEYXlqczogKG1ldGE6IGFueSk6IEpTT05TY2hlbWE3ID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBmb3JtYXQ6ICdkYXRlLXRpbWUnLCAvLyBKU09OIFNjaGVtYeOBp+aXpeS7mOWei+OCkuaMh+WumlxuICAgIH07XG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSh0YXJnZXQ6IEZ1bmN0aW9uLCBvcHRpb25zOiBQYXJ0aWFsPElPcHRpb25zPiA9IHt9KTogSlNPTlNjaGVtYTcge1xuICByZXR1cm4gX3RhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEodGFyZ2V0LCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBhZGRpdGlvbmFsQ29udmVydGVycyxcbiAgICBjbGFzc1RyYW5zZm9ybWVyTWV0YWRhdGFTdG9yYWdlOiBnZXRNZXRhZGF0YVN0b3JhZ2UoKSxcbiAgfSkgYXMgSlNPTlNjaGVtYTc7XG59XG4iXX0=","import { targetConstructorToSchema } from '../impl/json-schema';\nconst AI_TOOLS = '[ai-tools]';\nconst AI_SYSTEM = '[ai-system]';\nexport function addTool(obj, tool) {\n obj[AI_TOOLS] = obj[AI_TOOLS] ?? [];\n obj[AI_TOOLS].push(tool);\n return obj;\n}\nexport function getTools(obj) {\n return obj[AI_TOOLS] ?? [];\n}\nexport function buildFunctionTool(params) {\n return {\n type: 'function',\n function: {\n name: params.name,\n description: params.description,\n parameters: params.parameters,\n },\n };\n}\nexport function buildToolFromSchema(name, description, schema) {\n const parameters = targetConstructorToSchema(schema);\n return buildFunctionTool({ name, description, parameters });\n}\nexport function AiFunction(params) {\n return function (target, propertyKey, descriptor) {\n // 引数の型を取得\n const args = Reflect.getMetadata('design:paramtypes', target, propertyKey);\n const tool = buildToolFromSchema(propertyKey, params?.description ?? '', args[0]);\n addTool(target, tool);\n return descriptor;\n };\n}\nexport function setAiSystemConfig(obj, config) {\n obj[AI_SYSTEM] = config;\n return obj;\n}\nexport function getAiSystemConfig(obj) {\n return obj[AI_SYSTEM];\n}\nexport function AiSystem({ model = 'gpt-4-1106-preview', instructions = ``, shots = [], }) {\n return function (target) {\n setAiSystemConfig(target, { model, instructions, shots });\n return target;\n };\n}\nexport class AiToolsAgent {\n openai;\n constructor(openai) {\n this.openai = openai;\n }\n messages = [\n { role: 'system', content: '' },\n ];\n results = [];\n get tools() {\n return getTools(this.constructor);\n }\n get config() {\n return getAiSystemConfig(this.constructor);\n }\n async completion(tools = this.tools) {\n const message = await this.openai.chat.completions.create({\n model: this.config.model,\n messages: this.messages,\n tools,\n });\n for (const call of message.choices?.[0]?.message?.tool_calls ?? []) {\n if (call.type === 'function') {\n const func = this[call.function.name];\n const result = func(JSON.parse(call.function.arguments));\n this.results.push(result);\n }\n }\n }\n async execute(message, options = {}) {\n this.messages.push({ role: 'user', content: message });\n await this.completion(options.tools);\n return this.results.at(-1);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2FueS1mdW5jL3NyYy9saWIvYWdlbnQvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEUsTUFBTSxRQUFRLEdBQUcsWUFBcUIsQ0FBQztBQUN2QyxNQUFNLFNBQVMsR0FBRyxhQUFzQixDQUFDO0FBRXpDLE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBMkIsRUFBRSxJQUFZO0lBQy9ELEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUEyQjtJQUNsRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUlqQztJQUNDLE9BQU87UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtTQUM5QjtLQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVksRUFBRSxXQUFtQixFQUFFLE1BQWdCO0lBQ3JGLE1BQU0sVUFBVSxHQUFHLHlCQUF5QixDQUFDLE1BQU0sQ0FBdUIsQ0FBQztJQUMzRSxPQUFPLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUs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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFRLENBQUM7SUFDcEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhdENvbXBsZXRpb25NZXNzYWdlUGFyYW0sIEZ1bmN0aW9uUGFyYW1ldGVycywgIH0gZnJvbSBcIm9wZW5haS9yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEZ1bmN0aW9uVG9vbCB9IGZyb20gXCJvcGVuYWkvcmVzb3VyY2VzL2JldGEvYXNzaXN0YW50c1wiO1xuaW1wb3J0IHsgQ2hhdENvbXBsZXRpb25DcmVhdGVQYXJhbXNCYXNlIH0gZnJvbSBcIm9wZW5haS9yZXNvdXJjZXMvY2hhdC9jb21wbGV0aW9uc1wiO1xuaW1wb3J0IHsgT3BlbkFpU2VydmljZUltcGwgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9pbmZyYXN0cnVjdHVyZS9leHRlcm5hbHMvb3BlbmFpL2ltcGwnO1xuaW1wb3J0IHsgdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSB9IGZyb20gJy4uL2ltcGwvanNvbi1zY2hlbWEnO1xuXG5jb25zdCBBSV9UT09MUyA9ICdbYWktdG9vbHNdJyBhcyBjb25zdDtcbmNvbnN0IEFJX1NZU1RFTSA9ICdbYWktc3lzdGVtXScgYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRUb29sKG9iajoge1tBSV9UT09MU106IG9iamVjdFtdfSwgdG9vbDogb2JqZWN0KSB7XG4gIG9ialtBSV9UT09MU10gPSBvYmpbQUlfVE9PTFNdID8/IFtdO1xuICBvYmpbQUlfVE9PTFNdLnB1c2godG9vbCk7XG4gIHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29scyhvYmo6IHtbQUlfVE9PTFNdOiBvYmplY3RbXX0pOiBhbnlbXSB7XG4gIHJldHVybiBvYmpbQUlfVE9PTFNdID8/IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGdW5jdGlvblRvb2wocGFyYW1zOiB7XG4gIG5hbWU6IHN0cmluZyxcbiAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgcGFyYW1ldGVyczogRnVuY3Rpb25QYXJhbWV0ZXJzLFxufSk6IEZ1bmN0aW9uVG9vbCB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICBmdW5jdGlvbjoge1xuICAgICAgbmFtZTogcGFyYW1zLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcGFyYW1zLmRlc2NyaXB0aW9uLFxuICAgICAgcGFyYW1ldGVyczogcGFyYW1zLnBhcmFtZXRlcnMsXG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRUb29sRnJvbVNjaGVtYShuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcsIHNjaGVtYTogRnVuY3Rpb24pOiBGdW5jdGlvblRvb2wge1xuICBjb25zdCBwYXJhbWV0ZXJzID0gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYShzY2hlbWEpIGFzIEZ1bmN0aW9uUGFyYW1ldGVycztcbiAgcmV0dXJuIGJ1aWxkRnVuY3Rpb25Ub29sKHsgbmFtZSwgZGVzY3JpcHRpb24sIHBhcmFtZXRlcnMgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBaUZ1bmN0aW9uKHBhcmFtcz86IHtkZXNjcmlwdGlvbj86IHN0cmluZ30pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgLy8g5byV5pWw44Gu5Z6L44KS5Y+W5b6XXG4gICAgY29uc3QgYXJncyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Rlc2lnbjpwYXJhbXR5cGVzJywgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgY29uc3QgdG9vbCA9IGJ1aWxkVG9vbEZyb21TY2hlbWEocHJvcGVydHlLZXksIHBhcmFtcz8uZGVzY3JpcHRpb24gPz8gJycsIGFyZ3NbMF0pO1xuICAgIGFkZFRvb2wodGFyZ2V0LCB0b29sKTtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBaVN5c3RlbUNvbmZpZyB7XG4gIG1vZGVsPzogQ2hhdENvbXBsZXRpb25DcmVhdGVQYXJhbXNCYXNlWydtb2RlbCddO1xuICBpbnN0cnVjdGlvbnM/OiBzdHJpbmc7XG4gIHNob3RzPzoge2lucHV0OiBzdHJpbmcsIG91dHB1dDogc3RyaW5nfVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QWlTeXN0ZW1Db25maWcob2JqOiB7W0FJX1NZU1RFTV06IEFpU3lzdGVtQ29uZmlnfSwgY29uZmlnOiBBaVN5c3RlbUNvbmZpZykge1xuICBvYmpbQUlfU1lTVEVNXSA9IGNvbmZpZztcbiAgcmV0dXJuIG9iajtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFpU3lzdGVtQ29uZmlnKG9iajoge1tBSV9TWVNURU1dOiBBaVN5c3RlbUNvbmZpZ30pOiBBaVN5c3RlbUNvbmZpZyB7XG4gIHJldHVybiBvYmpbQUlfU1lTVEVNXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFpU3lzdGVtKHtcbiAgbW9kZWwgPSAnZ3B0LTQtMTEwNi1wcmV2aWV3JyxcbiAgaW5zdHJ1Y3Rpb25zID0gYGAsXG4gIHNob3RzID0gW10sXG59OiBBaVN5c3RlbUNvbmZpZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55KSB7XG4gICAgc2V0QWlTeXN0ZW1Db25maWcodGFyZ2V0LCB7bW9kZWwsIGluc3RydWN0aW9ucywgc2hvdHN9KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQWlUb29sc0FnZW50IHtcbiAgY29uc3RydWN0b3IgKHByb3RlY3RlZCBvcGVuYWk6IE9wZW5BaVNlcnZpY2VJbXBsKSB7IH1cbiAgXG4gIG1lc3NhZ2VzOiBDaGF0Q29tcGxldGlvbk1lc3NhZ2VQYXJhbVtdID0gW1xuICAgIHsgcm9sZTogJ3N5c3RlbScgYXMgY29uc3QsIGNvbnRlbnQ6ICcnIH0sXG4gIF07XG5cbiAgcmVzdWx0czogYW55W10gPSBbXTtcblxuICBnZXQgdG9vbHMoKSB7XG4gICAgcmV0dXJuIGdldFRvb2xzKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KTtcbiAgfVxuXG4gIGdldCBjb25maWcoKSB7XG4gICAgcmV0dXJuIGdldEFpU3lzdGVtQ29uZmlnKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRpb24odG9vbHM6IGFueVtdID0gdGhpcy50b29scykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm9wZW5haS5jaGF0LmNvbXBsZXRpb25zLmNyZWF0ZSh7XG4gICAgICBtb2RlbDogdGhpcy5jb25maWcubW9kZWwhLFxuICAgICAgbWVzc2FnZXM6IHRoaXMubWVzc2FnZXMsXG4gICAgICB0b29scyxcbiAgICB9KTtcbiAgICBmb3IgKGNvbnN0IGNhbGwgb2YgbWVzc2FnZS5jaG9pY2VzPy5bMF0/Lm1lc3NhZ2U/LnRvb2xfY2FsbHMgPz8gW10pIHtcbiAgICAgIGlmIChjYWxsLnR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgZnVuYyA9ICh0aGlzIGFzIGFueSlbY2FsbC5mdW5jdGlvbi5uYW1lXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZnVuYyhKU09OLnBhcnNlKGNhbGwuZnVuY3Rpb24uYXJndW1lbnRzKSk7XG4gICAgICAgIHRoaXMucmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZTxUPWFueT4obWVzc2FnZTogc3RyaW5nLCBvcHRpb25zOiB7dG9vbHM/OiBhbnlbXX0gPSB7fSk6IFByb21pc2U8VD4ge1xuICAgIHRoaXMubWVzc2FnZXMucHVzaCh7cm9sZTogJ3VzZXInLCBjb250ZW50OiBtZXNzYWdlfSk7XG4gICAgYXdhaXQgdGhpcy5jb21wbGV0aW9uKG9wdGlvbnMudG9vbHMpO1xuICAgIHJldHVybiB0aGlzLnJlc3VsdHMuYXQoLTEpIGFzIGFueTtcbiAgfVxufVxuXG4iXX0=","import { Injectable } from \"@angular/core\";\nimport { LOCAL_STORAGE } from '@nx-ddd/any-func/adapters/local-storage';\nimport CryptoJS from 'crypto-js';\nimport * as i0 from \"@angular/core\";\nexport class CacheAdapter {\n localStorage = LOCAL_STORAGE.inject();\n async get(keyOrObj) {\n const key = this.makeKey(keyOrObj);\n return this.parseJson(this.localStorage.getItem(key));\n }\n async set(keyOrObj, value) {\n const key = this.makeKey(keyOrObj);\n this.localStorage.setItem(key, this.makeJson(value));\n }\n async call(props, callback) {\n const key = this.makeKey(props);\n let value = await this.get(key);\n if (value)\n return value;\n value = await callback(props);\n await this.set(key, value);\n return value;\n }\n makeKey(keyOrObj) {\n const value = typeof keyOrObj === 'string' ? keyOrObj : JSON.stringify(keyOrObj);\n return CryptoJS.SHA256(value).toString();\n }\n makeJson(valueOrObj) {\n return JSON.stringify(valueOrObj);\n }\n parseJson(value) {\n return JSON.parse(value);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CacheAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CacheAdapter });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CacheAdapter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvYW55LWZ1bmMvc3JjL2xpYi9pbXBsL2FkYXB0ZXJzL2NhY2hlL2NhY2hlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDOztBQUdqQyxNQUFNLE9BQU8sWUFBWTtJQUNiLFlBQVksR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFaEQsS0FBSyxDQUFDLEdBQUcsQ0FBSSxRQUF5QjtRQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBYSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQXlCLEVBQUUsS0FBVTtRQUM3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQWlDLEtBQVEsRUFBRSxRQUFrQztRQUNyRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBSSxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUs7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4QixLQUFLLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFUyxPQUFPLENBQUMsUUFBeUI7UUFDekMsTUFBTSxLQUFLLEdBQUcsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakYsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFUyxRQUFRLENBQUMsVUFBZTtRQUNoQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVTLFNBQVMsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO3VHQWpDVSxZQUFZOzJHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0UgfSBmcm9tICdAbngtZGRkL2FueS1mdW5jL2FkYXB0ZXJzL2xvY2FsLXN0b3JhZ2UnO1xuaW1wb3J0IENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYWNoZUFkYXB0ZXIge1xuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlID0gTE9DQUxfU1RPUkFHRS5pbmplY3QoKTtcblxuICBhc3luYyBnZXQ8VD4oa2V5T3JPYmo6IHN0cmluZyB8IG9iamVjdCk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLm1ha2VLZXkoa2V5T3JPYmopO1xuICAgIHJldHVybiB0aGlzLnBhcnNlSnNvbih0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpIGFzIFQgfCBudWxsO1xuICB9XG5cbiAgYXN5bmMgc2V0KGtleU9yT2JqOiBzdHJpbmcgfCBvYmplY3QsIHZhbHVlOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLm1ha2VLZXkoa2V5T3JPYmopO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0aGlzLm1ha2VKc29uKHZhbHVlKSk7XG4gIH1cblxuICBhc3luYyBjYWxsPFAgZXh0ZW5kcyAoc3RyaW5nIHwgb2JqZWN0KSwgVD4ocHJvcHM6IFAsIGNhbGxiYWNrOiAocHJvcHM6IFApID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLm1ha2VLZXkocHJvcHMpO1xuICAgIGxldCB2YWx1ZSA9IGF3YWl0IHRoaXMuZ2V0PFQ+KGtleSk7XG4gICAgaWYgKHZhbHVlKSByZXR1cm4gdmFsdWU7XG4gICAgdmFsdWUgPSBhd2FpdCBjYWxsYmFjayhwcm9wcyk7XG4gICAgYXdhaXQgdGhpcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuIHZhbHVlOyBcbiAgfVxuXG4gIHByb3RlY3RlZCBtYWtlS2V5KGtleU9yT2JqOiBzdHJpbmcgfCBvYmplY3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIGtleU9yT2JqID09PSAnc3RyaW5nJyA/IGtleU9yT2JqIDogSlNPTi5zdHJpbmdpZnkoa2V5T3JPYmopO1xuICAgIHJldHVybiBDcnlwdG9KUy5TSEEyNTYodmFsdWUpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFrZUpzb24odmFsdWVPck9iajogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWVPck9iaik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VKc29uKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgfVxufVxuIl19","import { inject, InjectionToken } from '@angular/core';\n/**\n * InjectionToken for AnyFuncService\n */\nexport const ANY_FUNC_SERVICE = new InjectionToken('[@nx-ddd/any-func] AnyFuncService');\n/**\n * InjectionToken for AnyFuncConfig\n */\nexport const ANY_FUNC_CONFIG = new InjectionToken('[@nx-ddd/any-func] AnyFuncConfig');\n/**\n * Injects the AnyFuncService\n */\nexport function injectAnyFunc() {\n return inject(ANY_FUNC_SERVICE, { optional: true }) ?? {};\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9hbnktZnVuYy9zcmMvbGliL2FueS1mdW5jL3Rva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFNLG1DQUFtQyxDQUFDLENBQUM7QUFFN0Y7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQWdCLGtDQUFrQyxDQUFDLENBQUM7QUFFckc7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxJQUFJLEVBQU8sQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBBbnlGdW5jQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogSW5qZWN0aW9uVG9rZW4gZm9yIEFueUZ1bmNTZXJ2aWNlXG4gKi9cbmV4cG9ydCBjb25zdCBBTllfRlVOQ19TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ1tAbngtZGRkL2FueS1mdW5jXSBBbnlGdW5jU2VydmljZScpO1xuXG4vKipcbiAqIEluamVjdGlvblRva2VuIGZvciBBbnlGdW5jQ29uZmlnXG4gKi9cbmV4cG9ydCBjb25zdCBBTllfRlVOQ19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48QW55RnVuY0NvbmZpZz4oJ1tAbngtZGRkL2FueS1mdW5jXSBBbnlGdW5jQ29uZmlnJyk7XG5cbi8qKlxuICogSW5qZWN0cyB0aGUgQW55RnVuY1NlcnZpY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEFueUZ1bmM8VCA9IGFueT4oKTogVCB7XG4gIHJldHVybiBpbmplY3QoQU5ZX0ZVTkNfU0VSVklDRSwge29wdGlvbmFsOiB0cnVlfSkgPz8ge30gYXMgVDtcbn1cbiJdfQ==","/**\n * Type guard for browser File object\n */\nexport function isBrowserFile(obj) {\n return typeof File !== 'undefined' && obj instanceof File;\n}\n/**\n * Helper class for building OpenAI message content\n */\nexport class OpenAiMessageHelper {\n /**\n * Converts an image file to base64 string\n */\n static async imageToBase64(imageFile) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result;\n resolve(base64String.split(',')[1]);\n };\n reader.onerror = reject;\n reader.readAsDataURL(imageFile);\n });\n }\n /**\n * Builds message content from files\n */\n static async buildFilesMessage(files) {\n return await Promise.all(files.map(async (file) => ({\n type: 'image_url',\n image_url: { url: `data:image/jpeg;base64,${await this.imageToBase64(file)}` },\n })));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2FueS1mdW5jL3NyYy9saWIvYW55LWZ1bmMvbWVzc2FnZS1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVk7SUFDeEMsT0FBTyxPQUFPLElBQUksS0FBSyxXQUFXLElBQUksR0FBRyxZQUFZLElBQUksQ0FBQztBQUM1RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBZTtRQUN4QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQ25CLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO2dCQUM3QyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQWE7UUFDMUMsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELElBQUksRUFBRSxXQUFvQjtZQUMxQixTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsMEJBQTBCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1NBQy9FLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENoYXRDb21wbGV0aW9uTWVzc2FnZVBhcmFtIH0gZnJvbSAnb3BlbmFpL3Jlc291cmNlcyc7XG5cbi8qKlxuICogVHlwZSBndWFyZCBmb3IgYnJvd3NlciBGaWxlIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCcm93c2VyRmlsZShvYmo6IHVua25vd24pOiBvYmogaXMgRmlsZSB7XG4gIHJldHVybiB0eXBlb2YgRmlsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgb2JqIGluc3RhbmNlb2YgRmlsZTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIGJ1aWxkaW5nIE9wZW5BSSBtZXNzYWdlIGNvbnRlbnRcbiAqL1xuZXhwb3J0IGNsYXNzIE9wZW5BaU1lc3NhZ2VIZWxwZXIge1xuICAvKipcbiAgICogQ29udmVydHMgYW4gaW1hZ2UgZmlsZSB0byBiYXNlNjQgc3RyaW5nXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgaW1hZ2VUb0Jhc2U2NChpbWFnZUZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZTY0U3RyaW5nID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgIHJlc29sdmUoYmFzZTY0U3RyaW5nLnNwbGl0KCcsJylbMV0pO1xuICAgICAgfTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gcmVqZWN0O1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoaW1hZ2VGaWxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgbWVzc2FnZSBjb250ZW50IGZyb20gZmlsZXNcbiAgICovXG4gIHN0YXRpYyBhc3luYyBidWlsZEZpbGVzTWVzc2FnZShmaWxlczogRmlsZVtdKTogUHJvbWlzZTxDaGF0Q29tcGxldGlvbk1lc3NhZ2VQYXJhbVsnY29udGVudCddPiB7XG4gICAgcmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcChhc3luYyAoZmlsZSkgPT4gKHtcbiAgICAgIHR5cGU6ICdpbWFnZV91cmwnIGFzIGNvbnN0LFxuICAgICAgaW1hZ2VfdXJsOiB7IHVybDogYGRhdGE6aW1hZ2UvanBlZztiYXNlNjQsJHthd2FpdCB0aGlzLmltYWdlVG9CYXNlNjQoZmlsZSl9YCB9LFxuICAgIH0pKSk7XG4gIH1cbn1cbiJdfQ==","import pLimit from 'p-limit';\n/**\n * Embedding-related utilities for AnyFuncService\n */\nexport class EmbeddingsHelper {\n cache;\n openai;\n constructor(cache, openai) {\n this.cache = cache;\n this.openai = openai;\n }\n async getEmbeddings(item, accessor) {\n const props = { item, model: 'text-embedding-3-small' };\n let embedding = await this.cache.get(props);\n if (embedding)\n return embedding;\n embedding = await this.openai.embeddings.create({ model: props.model, input: accessor(item) }).then(res => res.data[0].embedding);\n await this.cache.set(props, embedding);\n return embedding;\n }\n async sort(items, accessor, target) {\n const dist = (a, b) => Math.sqrt(a.reduce((acc, v, i) => acc + (v - b[i]) ** 2, 0));\n const targetEmbeddings = await this.getEmbeddings(target, s => s);\n const limit = pLimit(10);\n const embeddings = await Promise.all(items.map(item => limit(() => this.getEmbeddings(item, accessor))));\n const items_ = items.map((item, i) => ({ item, embedding: embeddings[i], distance: dist(embeddings[i], targetEmbeddings) }));\n return items_.sort((a, b) => a.distance - b.distance).map(({ item }) => item);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvYW55LWZ1bmMvc3JjL2xpYi9hbnktZnVuYy9lbWJlZGRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUc3Qjs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFFakI7SUFDQTtJQUZWLFlBQ1UsS0FBbUIsRUFDbkIsTUFBOEg7UUFEOUgsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUF3SDtJQUNySSxDQUFDO0lBRUosS0FBSyxDQUFDLGFBQWEsQ0FBSSxJQUFPLEVBQUUsUUFBNkI7UUFDM0QsTUFBTSxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLENBQUM7UUFDeEQsSUFBSSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBVyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLFNBQVM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNoQyxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xJLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFJLEtBQVUsRUFBRSxRQUE2QixFQUFFLE1BQWM7UUFDckUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFXLEVBQUUsQ0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hHLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0gsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBMaW1pdCBmcm9tICdwLWxpbWl0JztcbmltcG9ydCB7IENhY2hlQWRhcHRlciB9IGZyb20gJy4uL2ltcGwvYWRhcHRlcnMvY2FjaGUnO1xuXG4vKipcbiAqIEVtYmVkZGluZy1yZWxhdGVkIHV0aWxpdGllcyBmb3IgQW55RnVuY1NlcnZpY2VcbiAqL1xuZXhwb3J0IGNsYXNzIEVtYmVkZGluZ3NIZWxwZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNhY2hlOiBDYWNoZUFkYXB0ZXIsXG4gICAgcHJpdmF0ZSBvcGVuYWk6IHsgZW1iZWRkaW5nczogeyBjcmVhdGU6IChwYXJhbXM6IHsgbW9kZWw6IHN0cmluZzsgaW5wdXQ6IHN0cmluZyB9KSA9PiBQcm9taXNlPHsgZGF0YTogeyBlbWJlZGRpbmc6IG51bWJlcltdIH1bXSB9PiB9IH1cbiAgKSB7fVxuXG4gIGFzeW5jIGdldEVtYmVkZGluZ3M8VD4oaXRlbTogVCwgYWNjZXNzb3I6IChpdGVtOiBUKSA9PiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgY29uc3QgcHJvcHMgPSB7IGl0ZW0sIG1vZGVsOiAndGV4dC1lbWJlZGRpbmctMy1zbWFsbCcgfTtcbiAgICBsZXQgZW1iZWRkaW5nID0gYXdhaXQgdGhpcy5jYWNoZS5nZXQ8bnVtYmVyW10+KHByb3BzKTtcbiAgICBpZiAoZW1iZWRkaW5nKSByZXR1cm4gZW1iZWRkaW5nO1xuICAgIGVtYmVkZGluZyA9IGF3YWl0IHRoaXMub3BlbmFpLmVtYmVkZGluZ3MuY3JlYXRlKHsgbW9kZWw6IHByb3BzLm1vZGVsLCBpbnB1dDogYWNjZXNzb3IoaXRlbSkgfSkudGhlbihyZXMgPT4gcmVzLmRhdGFbMF0uZW1iZWRkaW5nKTtcbiAgICBhd2FpdCB0aGlzLmNhY2hlLnNldChwcm9wcywgZW1iZWRkaW5nKTtcbiAgICByZXR1cm4gZW1iZWRkaW5nO1xuICB9XG5cbiAgYXN5bmMgc29ydDxUPihpdGVtczogVFtdLCBhY2Nlc3NvcjogKGl0ZW06IFQpID0+IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IGRpc3QgPSAoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKSA9PiBNYXRoLnNxcnQoYS5yZWR1Y2UoKGFjYywgdiwgaSkgPT4gYWNjICsgKHYgLSBiW2ldKSAqKiAyLCAwKSk7XG4gICAgY29uc3QgdGFyZ2V0RW1iZWRkaW5ncyA9IGF3YWl0IHRoaXMuZ2V0RW1iZWRkaW5ncyh0YXJnZXQsIHMgPT4gcyk7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoMTApO1xuICAgIGNvbnN0IGVtYmVkZGluZ3MgPSBhd2FpdCBQcm9taXNlLmFsbChpdGVtcy5tYXAoaXRlbSA9PiBsaW1pdCgoKSA9PiB0aGlzLmdldEVtYmVkZGluZ3MoaXRlbSwgYWNjZXNzb3IpKSkpO1xuICAgIGNvbnN0IGl0ZW1zXyA9IGl0ZW1zLm1hcCgoaXRlbSwgaSkgPT4gKHsgaXRlbSwgZW1iZWRkaW5nOiBlbWJlZGRpbmdzW2ldLCBkaXN0YW5jZTogZGlzdChlbWJlZGRpbmdzW2ldLCB0YXJnZXRFbWJlZGRpbmdzKSB9KSk7XG4gICAgcmV0dXJuIGl0ZW1zXy5zb3J0KChhLCBiKSA9PiBhLmRpc3RhbmNlIC0gYi5kaXN0YW5jZSkubWFwKCh7aXRlbX0pID0+IGl0ZW0pO1xuICB9XG59XG4iXX0=","import { provideOpenaiService } from '@nx-ddd/common/infrastructure/externals/openai/impl';\nimport { CacheAdapter } from '../impl/adapters/cache';\nimport { ANY_FUNC_SERVICE, ANY_FUNC_CONFIG } from './tokens';\nimport { AnyFuncService } from './any-func.service.impl';\n/**\n * Provides the AnyFuncService with configuration\n */\nexport function provideAnyFunc(useFactory) {\n const config = useFactory();\n return [\n { provide: ANY_FUNC_SERVICE, useClass: AnyFuncService },\n { provide: ANY_FUNC_CONFIG, useFactory },\n CacheAdapter,\n provideOpenaiService(() => ({\n apiKey: config.openaiApiKey,\n dangerouslyAllowBrowser: config.dangerouslyAllowBrowser\n })),\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9hbnktZnVuYy9zcmMvbGliL2FueS1mdW5jL3Byb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLFVBQWdDO0lBQzdELE1BQU0sTUFBTSxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQzVCLE9BQU87UUFDTCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFO1FBQ3ZELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUU7UUFDeEMsWUFBWTtRQUNaLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQzNCLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyx1QkFBdUI7U0FDeEQsQ0FBQyxDQUFDO0tBQ0osQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm92aWRlT3BlbmFpU2VydmljZSB9IGZyb20gJ0BueC1kZGQvY29tbW9uL2luZnJhc3RydWN0dXJlL2V4dGVybmFscy9vcGVuYWkvaW1wbCc7XG5pbXBvcnQgeyBDYWNoZUFkYXB0ZXIgfSBmcm9tICcuLi9pbXBsL2FkYXB0ZXJzL2NhY2hlJztcbmltcG9ydCB7IEFOWV9GVU5DX1NFUlZJQ0UsIEFOWV9GVU5DX0NPTkZJRyB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7IEFueUZ1bmNDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEFueUZ1bmNTZXJ2aWNlIH0gZnJvbSAnLi9hbnktZnVuYy5zZXJ2aWNlLmltcGwnO1xuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBBbnlGdW5jU2VydmljZSB3aXRoIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBbnlGdW5jKHVzZUZhY3Rvcnk/OiAoKSA9PiBBbnlGdW5jQ29uZmlnKSB7XG4gIGNvbnN0IGNvbmZpZyA9IHVzZUZhY3RvcnkoKTtcbiAgcmV0dXJuIFtcbiAgICB7IHByb3ZpZGU6IEFOWV9GVU5DX1NFUlZJQ0UsIHVzZUNsYXNzOiBBbnlGdW5jU2VydmljZSB9LFxuICAgIHsgcHJvdmlkZTogQU5ZX0ZVTkNfQ09ORklHLCB1c2VGYWN0b3J5IH0sXG4gICAgQ2FjaGVBZGFwdGVyLFxuICAgIHByb3ZpZGVPcGVuYWlTZXJ2aWNlKCgpID0+ICh7XG4gICAgICBhcGlLZXk6IGNvbmZpZy5vcGVuYWlBcGlLZXksXG4gICAgICBkYW5nZXJvdXNseUFsbG93QnJvd3NlcjogY29uZmlnLmRhbmdlcm91c2x5QWxsb3dCcm93c2VyXG4gICAgfSkpLFxuICBdXG59XG4iXX0=","import { inject, Injectable } from '@angular/core';\nimport { injectOpenAiService } from '@nx-ddd/common/infrastructure/externals/openai';\nimport { catchError, lastValueFrom, map, of, retry, switchMap, tap } from 'rxjs';\nimport { ZodSchema } from 'zod';\nimport zodToJsonSchema from 'zod-to-json-schema';\nimport { buildFunctionTool } from '../agent';\nimport { targetConstructorToSchema } from '../impl/json-schema';\nimport { CacheAdapter } from '../impl/adapters/cache';\nimport { ValidatorAdapter } from '@nx-ddd/any-func/adapters/validator';\nimport { ANY_FUNC_CONFIG } from './tokens';\nimport { isBrowserFile, OpenAiMessageHelper } from './message-helper';\nimport { EmbeddingsHelper } from './embeddings';\nimport * as i0 from \"@angular/core\";\nexport { ANY_FUNC_SERVICE, ANY_FUNC_CONFIG, injectAnyFunc } from './tokens';\nexport { provideAnyFunc } from './providers';\nexport class AnyFuncService {\n openai = injectOpenAiService();\n config = inject(ANY_FUNC_CONFIG, { optional: true }) ?? { debug: false };\n cache = inject(CacheAdapter);\n validator = inject(ValidatorAdapter);\n embeddingsHelper;\n constructor() {\n this.embeddingsHelper = new EmbeddingsHelper(this.cache, this.openai);\n }\n /** @deprecated use callByJsonSchema instead */\n async jsonSchema(_input, jsonSchema, options = {}) {\n return this.callByJsonSchema(_input, jsonSchema, options);\n }\n async callByJsonSchema(_input, jsonSchema, { instructions = '', model = 'gpt-4o', specs = [], embeddings = false, sample = 3, temperature = 0, maxRetry = 3, validator = (data) => this.validator.validate(jsonSchema, data), } = {}) {\n for (const spec of specs) {\n const errors = await validator(spec.output);\n if (errors.length > 0)\n throw new Error(JSON.stringify(errors, null, 2));\n }\n const content = await this.parseInput(_input);\n const sortedSpecs = embeddings ? await this.embeddingsHelper.sort(specs, embeddings, _input) : specs;\n const messages = [\n { role: 'system', content: instructions },\n ...(await this.buildChatMessages(sortedSpecs.slice(0, sample).reverse())),\n { role: 'user', content },\n ];\n return lastValueFrom(of(null).pipe(map(() => messages), switchMap(() => this.complete(_input, jsonSchema, messages, { model, sample, temperature })), tap(message => messages.push(message)), switchMap(async (message) => {\n const toolCall = message.tool_calls[0];\n if (toolCall.type !== 'function')\n throw new Error('Unexpected tool call type');\n const output = JSON.parse(toolCall.function.arguments);\n console.debug('[AnyFuncService#complete] output:', output);\n const errors = await validator(output);\n console.debug('[AnyFuncService#complete] errors:', errors);\n if (errors.length > 0) {\n messages.push({ role: 'tool', content: JSON.stringify(errors), tool_call_id: message.tool_calls[0].id });\n if (this.config.debug)\n console.debug('messages', JSON.stringify(messages, null, 2));\n throw new Error(JSON.stringify(errors, null, 2));\n }\n else {\n messages.push({ role: 'tool', content: JSON.stringify(output), tool_call_id: message.tool_calls[0].id });\n if (this.config.debug)\n console.debug('messages', JSON.stringify(messages, null, 2));\n }\n return output;\n }), catchError((error) => { console.error(error); throw error; }), retry(maxRetry)));\n }\n async callByZod(_input, zod, options = {}) {\n const schema = zodToJsonSchema(zod, { $refStrategy: 'none' });\n const validator = options.validator ?? ((data) => this.validator.validate(schema, data));\n return this.jsonSchema(_input, schema, { ...options, validator });\n }\n async callByClassValidator(_input, args, options = {}) {\n const parameters = targetConstructorToSchema(args);\n const validator = options.validator ?? ((data) => this.validator.validate(parameters, data));\n console.debug('[AnyFuncService#call] parameters:', parameters);\n return this.jsonSchema(_input, parameters, { ...options, validator });\n }\n async call(_input, args, params = {}) {\n if (args instanceof ZodSchema)\n return this.callByZod(_input, args, params);\n if (args instanceof Function)\n return this.callByClassValidator(_input, args, params);\n if (typeof args === 'object' && args !== null && 'type' in args && args.type === 'object') {\n return this.callByJsonSchema(_input, args, params);\n }\n throw new Error('Invalid args type');\n }\n async complete(_input, jsonSchema, messages, { model = 'gpt-4o', temperature = 0 } = {}) {\n const tool = buildFunctionTool({ name: 'function', description: '', parameters: jsonSchema });\n const props = {\n model, messages, tools: [tool],\n tool_choice: { type: 'function', function: { name: 'function' } },\n temperature,\n };\n const res = await this.cache.call(props, props => this.openai.chat.completions.create(props));\n return res.choices[0].message;\n }\n async buildChatMessages(specs) {\n const messages = await Promise.all(specs.map(async ({ input, output }) => {\n const parsedInput = await this.parseInput(input);\n return [\n { role: 'user', content: parsedInput },\n { role: 'assistant', content: null, tool_calls: [{ id: 'call-example', type: 'function', function: { name: 'function', arguments: JSON.stringify(output) } }] },\n { role: 'tool', content: 'success', tool_call_id: 'call-example' },\n ];\n }));\n return messages.flat();\n }\n async parseInput(input) {\n if (isBrowserFile(input))\n return await OpenAiMessageHelper.buildFilesMessage([input]);\n else if (input === 'string')\n return input;\n else\n return JSON.stringify(input);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AnyFuncService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AnyFuncService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AnyFuncService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW55LWZ1bmMuc2VydmljZS5pbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9hbnktZnVuYy9zcmMvbGliL2FueS1mdW5jL2FueS1mdW5jLnNlcnZpY2UuaW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDaEMsT0FBTyxlQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBSWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHN0MsTUFBTSxPQUFPLGNBQWM7SUFD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Q0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUMvSixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFO2FBQ25FLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFxRCxDQUFDO0lBQzVFLENBQUM7SUFFTyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQVU7UUFDakMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxNQUFNLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNqRixJQUFJLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7O1lBQ3JDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO3VHQTlHVSxjQUFjOzJHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdE9wZW5BaVNlcnZpY2UgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9pbmZyYXN0cnVjdHVyZS9leHRlcm5hbHMvb3BlbmFpJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGxhc3RWYWx1ZUZyb20sIG1hcCwgb2YsIHJldHJ5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBDaGF0Q29tcGxldGlvbk1lc3NhZ2VQYXJhbSwgRnVuY3Rpb25QYXJhbWV0ZXJzIH0gZnJvbSAnb3BlbmFpL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBab2RTY2hlbWEgfSBmcm9tICd6b2QnO1xuaW1wb3J0IHpvZFRvSnNvblNjaGVtYSBmcm9tICd6b2QtdG8tanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgYnVpbGRGdW5jdGlvblRvb2wgfSBmcm9tICcuLi9hZ2VudCc7XG5pbXBvcnQgeyB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hIH0gZnJvbSAnLi4vaW1wbC9qc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBDYWNoZUFkYXB0ZXIgfSBmcm9tICcuLi9pbXBsL2FkYXB0ZXJzL2NhY2hlJztcbmltcG9ydCB7IFZhbGlkYXRvckFkYXB0ZXIgfSBmcm9tICdAbngtZGRkL2FueS1mdW5jL2FkYXB0ZXJzL3ZhbGlkYXRvcic7XG5pbXBvcnQgeyBKc29uU2NoZW1hIH0gZnJvbSAnanNvbi1zY2hlbWEtbGlicmFyeSc7XG5pbXBvcnQgeyBDYWxsT3B0aW9ucywgQW55RnVuY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQU5ZX0ZVTkNfQ09ORklHIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHsgaXNCcm93c2VyRmlsZSwgT3BlbkFpTWVzc2FnZUhlbHBlciB9IGZyb20gJy4vbWVzc2FnZS1oZWxwZXInO1xuaW1wb3J0IHsgRW1iZWRkaW5nc0hlbHBlciB9IGZyb20gJy4vZW1iZWRkaW5ncyc7XG5cbi8vIFJlLWV4cG9ydCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IHsgQ2FsbE9wdGlvbnMsIEFueUZ1bmNDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7IEFOWV9GVU5DX1NFUlZJQ0UsIEFOWV9GVU5DX0NPTkZJRywgaW5qZWN0QW55RnVuYyB9IGZyb20gJy4vdG9rZW5zJztcbmV4cG9ydCB7IHByb3ZpZGVBbnlGdW5jIH0gZnJvbSAnLi9wcm92aWRlcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW55RnVuY1NlcnZpY2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3BlbmFpID0gaW5qZWN0T3BlbkFpU2VydmljZSgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEFOWV9GVU5DX0NPTkZJRywge29wdGlvbmFsOiB0cnVlfSkgPz8geyBkZWJ1ZzogZmFsc2UgfTtcbiAgcHJvdGVjdGVkIGNhY2hlID0gaW5qZWN0KENhY2hlQWRhcHRlcik7XG4gIHByb3RlY3RlZCB2YWxpZGF0b3IgPSBpbmplY3QoVmFsaWRhdG9yQWRhcHRlcik7XG4gIHByaXZhdGUgZW1iZWRkaW5nc0hlbHBlcjogRW1iZWRkaW5nc0hlbHBlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmVtYmVkZGluZ3NIZWxwZXIgPSBuZXcgRW1iZWRkaW5nc0hlbHBlcih0aGlzLmNhY2hlLCB0aGlzLm9wZW5haSk7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgdXNlIGNhbGxCeUpzb25TY2hlbWEgaW5zdGVhZCAqL1xuICBhc3luYyBqc29uU2NoZW1hKF9pbnB1dDogYW55LCBqc29uU2NoZW1hOiBGdW5jdGlvblBhcmFtZXRlcnMsIG9wdGlvbnM6IENhbGxPcHRpb25zPGFueSwgYW55PiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsQnlKc29uU2NoZW1hKF9pbnB1dCwganNvblNjaGVtYSwgb3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjYWxsQnlKc29uU2NoZW1hKF9pbnB1dDogYW55LCBqc29uU2NoZW1hOiBGdW5jdGlvblBhcmFtZXRlcnMsIHtcbiAgICBpbnN0cnVjdGlvbnMgPSAnJywgbW9kZWwgPSAnZ3B0LTRvJywgc3BlY3MgPSBbXSwgZW1iZWRkaW5ncyA9IGZhbHNlLFxuICAgIHNhbXBsZSA9IDMsIHRlbXBlcmF0dXJlID0gMCwgbWF4UmV0cnkgPSAzLFxuICAgIHZhbGlkYXRvciA9IChkYXRhOiBhbnkpID0+IHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlKGpzb25TY2hlbWEsIGRhdGEpLFxuICB9OiBDYWxsT3B0aW9uczxhbnksIGFueT4gPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgZm9yIChjb25zdCBzcGVjIG9mIHNwZWNzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB2YWxpZGF0b3Ioc3BlYy5vdXRwdXQpO1xuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyb3JzLCBudWxsLCAyKSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB0aGlzLnBhcnNlSW5wdXQoX2lucHV0KTtcbiAgICBjb25zdCBzb3J0ZWRTcGVjcyA9IGVtYmVkZGluZ3MgPyBhd2FpdCB0aGlzLmVtYmVkZGluZ3NIZWxwZXIuc29ydChzcGVjcywgZW1iZWRkaW5ncywgX2lucHV0KSA6IHNwZWNzO1xuICAgIGNvbnN0IG1lc3NhZ2VzOiBDaGF0Q29tcGxldGlvbk1lc3NhZ2VQYXJhbVtdID0gW1xuICAgICAgeyByb2xlOiAnc3lzdGVtJywgY29udGVudDogaW5zdHJ1Y3Rpb25zIH0sXG4gICAgICAuLi4oYXdhaXQgdGhpcy5idWlsZENoYXRNZXNzYWdlcyhzb3J0ZWRTcGVjcy5zbGljZSgwLCBzYW1wbGUpLnJldmVyc2UoKSkpLFxuICAgICAgeyByb2xlOiAndXNlcicsIGNvbnRlbnQgfSxcbiAgICBdO1xuICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKG9mKG51bGwpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gbWVzc2FnZXMpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29tcGxldGUoX2lucHV0LCBqc29uU2NoZW1hLCBtZXNzYWdlcywgeyBtb2RlbCwgc2FtcGxlLCB0ZW1wZXJhdHVyZSB9KSksXG4gICAgICB0YXAobWVzc2FnZSA9PiBtZXNzYWdlcy5wdXNoKG1lc3NhZ2UpKSxcbiAgICAgIHN3aXRjaE1hcChhc3luYyAobWVzc2FnZSkgPT4ge1xuICAgICAgICBjb25zdCB0b29sQ2FsbCA9IG1lc3NhZ2UudG9vbF9jYWxscyFbMF07XG4gICAgICAgIGlmICh0b29sQ2FsbC50eXBlICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgdG9vbCBjYWxsIHR5cGUnKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5wYXJzZSh0b29sQ2FsbC5mdW5jdGlvbi5hcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdbQW55RnVuY1NlcnZpY2UjY29tcGxldGVdIG91dHB1dDonLCBvdXRwdXQpO1xuICAgICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB2YWxpZGF0b3Iob3V0cHV0KTtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW0FueUZ1bmNTZXJ2aWNlI2NvbXBsZXRlXSBlcnJvcnM6JywgZXJyb3JzKTtcbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbWVzc2FnZXMucHVzaCh7IHJvbGU6ICd0b29sJywgY29udGVudDogSlNPTi5zdHJpbmdpZnkoZXJyb3JzKSwgdG9vbF9jYWxsX2lkOiBtZXNzYWdlLnRvb2xfY2FsbHMhWzBdLmlkIH0pO1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnbWVzc2FnZXMnLCBKU09OLnN0cmluZ2lmeShtZXNzYWdlcywgbnVsbCwgMikpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeShlcnJvcnMsIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtZXNzYWdlcy5wdXNoKHsgcm9sZTogJ3Rvb2wnLCBjb250ZW50OiBKU09OLnN0cmluZ2lmeShvdXRwdXQpLCB0b29sX2NhbGxfaWQ6IG1lc3NhZ2UudG9vbF9jYWxscyFbMF0uaWQgfSk7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSBjb25zb2xlLmRlYnVnKCdtZXNzYWdlcycsIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VzLCBudWxsLCAyKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHsgY29uc29sZS5lcnJvcihlcnJvcik7IHRocm93IGVycm9yOyB9KSxcbiAgICAgIHJldHJ5KG1heFJldHJ5KSxcbiAgICApKTtcbiAgfVxuXG4gIGFzeW5jIGNhbGxCeVpvZDxJLCBPPihfaW5wdXQ6IEksIHpvZDogWm9kU2NoZW1hPE8+LCBvcHRpb25zOiBDYWxsT3B0aW9uczxJLCBPPiA9IHt9KTogUHJvbWlzZTxPPiB7XG4gICAgY29uc3Qgc2NoZW1hID0gem9kVG9Kc29uU2NoZW1hKHpvZCBhcyBhbnksIHsgJHJlZlN0cmF0ZWd5OiAnbm9uZScgfSk7XG4gICAgY29uc3QgdmFsaWRhdG9yID0gb3B0aW9ucy52YWxpZGF0b3IgPz8gKChkYXRhOiBhbnkpID0+IHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlKHNjaGVtYSwgZGF0YSkpO1xuICAgIHJldHVybiB0aGlzLmpzb25TY2hlbWEoX2lucHV0LCBzY2hlbWEsIHsgLi4ub3B0aW9ucywgdmFsaWRhdG9yIH0pO1xuICB9XG5cbiAgYXN5bmMgY2FsbEJ5Q2xhc3NWYWxpZGF0b3I8SSwgTz4oX2lucHV0OiBJLCBhcmdzOiB7bmV3ICgpOiBPfSwgb3B0aW9uczogQ2FsbE9wdGlvbnM8SSwgTz4gPSB7fSk6IFByb21pc2U8Tz4ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hKGFyZ3MpIGFzIEZ1bmN0aW9uUGFyYW1ldGVycztcbiAgICBjb25zdCB2YWxpZGF0b3IgPSBvcHRpb25zLnZhbGlkYXRvciA/PyAoKGRhdGE6IGFueSkgPT4gdGhpcy52YWxpZGF0b3IudmFsaWRhdGUocGFyYW1ldGVycywgZGF0YSkpO1xuICAgIGNvbnNvbGUuZGVidWcoJ1tBbnlGdW5jU2VydmljZSNjYWxsXSBwYXJhbWV0ZXJzOicsIHBhcmFtZXRlcnMpO1xuICAgIHJldHVybiB0aGlzLmpzb25TY2hlbWEoX2lucHV0LCBwYXJhbWV0ZXJzLCB7IC4uLm9wdGlvbnMsIHZhbGlkYXRvciB9KTtcbiAgfVxuXG4gIGFzeW5jIGNhbGw8SSwgTz4oX2lucHV0OiBJLCBhcmdzOiB7bmV3ICgpOiBPfSB8IFpvZFNjaGVtYTxPPiB8IEpzb25TY2hlbWEsIHBhcmFtczogQ2FsbE9wdGlvbnM8SSwgTz4gPSB7fSk6IFByb21pc2U8Tz4ge1xuICAgIGlmIChhcmdzIGluc3RhbmNlb2YgWm9kU2NoZW1hKSByZXR1cm4gdGhpcy5jYWxsQnlab2QoX2lucHV0LCBhcmdzLCBwYXJhbXMpO1xuICAgIGlmIChhcmdzIGluc3RhbmNlb2YgRnVuY3Rpb24pIHJldHVybiB0aGlzLmNhbGxCeUNsYXNzVmFsaWRhdG9yKF9pbnB1dCwgYXJncywgcGFyYW1zKTtcbiAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmIGFyZ3MgIT09IG51bGwgJiYgJ3R5cGUnIGluIGFyZ3MgJiYgYXJncy50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbEJ5SnNvblNjaGVtYShfaW5wdXQsIGFyZ3MsIHBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmdzIHR5cGUnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb21wbGV0ZTxJLCBPPihcbiAgICBfaW5wdXQ6IGFueSwganNvblNjaGVtYTogRnVuY3Rpb25QYXJhbWV0ZXJzLCBtZXNzYWdlczogQ2hhdENvbXBsZXRpb25NZXNzYWdlUGFyYW1bXSxcbiAgICB7IG1vZGVsID0gJ2dwdC00bycsIHRlbXBlcmF0dXJlID0gMCB9OiBDYWxsT3B0aW9uczxJLCBPPiAmIHtmdW5jdGlvbk91dHB1dD86IG9iamVjdH0gPSB7fVxuICApIHtcbiAgICBjb25zdCB0b29sID0gYnVpbGRGdW5jdGlvblRvb2woe25hbWU6ICdmdW5jdGlvbicsIGRlc2NyaXB0aW9uOiAnJywgcGFyYW1ldGVyczoganNvblNjaGVtYX0pO1xuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgbW9kZWwsIG1lc3NhZ2VzLCB0b29sczogW3Rvb2xdLFxuICAgICAgdG9vbF9jaG9pY2U6IHsgdHlwZTogJ2Z1bmN0aW9uJyBhcyBjb25zdCwgZnVuY3Rpb246IHsgbmFtZTogJ2Z1bmN0aW9uJyB9IH0sXG4gICAgICB0ZW1wZXJhdHVyZSxcbiAgICB9O1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY2FjaGUuY2FsbChwcm9wcywgcHJvcHMgPT4gdGhpcy5vcGVuYWkuY2hhdC5jb21wbGV0aW9ucy5jcmVhdGUocHJvcHMpKTtcbiAgICByZXR1cm4gcmVzLmNob2ljZXNbMF0ubWVzc2FnZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZENoYXRNZXNzYWdlcyhzcGVjczogeyBpbnB1dDogYW55OyBvdXRwdXQ6IGFueSB9W10pOiBQcm9taXNlPHtyb2xlOiAnYXNzaXN0YW50JyB8ICd1c2VyJywgY29udGVudDogc3RyaW5nfVtdPiB7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBhd2FpdCBQcm9taXNlLmFsbChzcGVjcy5tYXAoYXN5bmMgKHsgaW5wdXQsIG91dHB1dCB9KSA9PiB7XG4gICAgICBjb25zdCBwYXJzZWRJbnB1dCA9IGF3YWl0IHRoaXMucGFyc2VJbnB1dChpbnB1dCk7XG4gICAgICByZXR1cm4gPENoYXRDb21wbGV0aW9uTWVzc2FnZVBhcmFtW10+W1xuICAgICAgICB7IHJvbGU6ICd1c2VyJywgY29udGVudDogcGFyc2VkSW5wdXQgfSxcbiAgICAgICAgeyByb2xlOiAnYXNzaXN0YW50JywgY29udGVudDogbnVsbCwgdG9vbF9jYWxsczogW3sgaWQ6ICdjYWxsLWV4YW1wbGUnLCB0eXBlOiAnZnVuY3Rpb24nLCBmdW5jdGlvbjogeyBuYW1lOiAnZnVuY3Rpb24nLCBhcmd1bWVudHM6IEpTT04uc3RyaW5naWZ5KG91dHB1dCkgfSB9XSB9LFxuICAgICAgICB7IHJvbGU6ICd0b29sJywgY29udGVudDogJ3N1Y2Nlc3MnLCB0b29sX2NhbGxfaWQ6ICdjYWxsLWV4YW1wbGUnIH0sXG4gICAgICBdO1xuICAgIH0pKTtcbiAgICByZXR1cm4gbWVzc2FnZXMuZmxhdCgpIGFzIHtyb2xlOiAnYXNzaXN0YW50JyB8ICd1c2VyJywgY29udGVudDogc3RyaW5nfVtdO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwYXJzZUlucHV0KGlucHV0OiBhbnkpIHtcbiAgICBpZiAoaXNCcm93c2VyRmlsZShpbnB1dCkpIHJldHVybiBhd2FpdCBPcGVuQWlNZXNzYWdlSGVscGVyLmJ1aWxkRmlsZXNNZXNzYWdlKFtpbnB1dF0pO1xuICAgIGVsc2UgaWYgKGlucHV0ID09PSAnc3RyaW5nJykgcmV0dXJuIGlucHV0O1xuICAgIGVsc2UgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGlucHV0KTtcbiAgfVxufVxuIl19","// Re-export from impl to maintain backwards compatibility\nexport { ANY_FUNC_SERVICE, ANY_FUNC_CONFIG, injectAnyFunc, provideAnyFunc, AnyFuncService, } from './any-func.service.impl';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW55LWZ1bmMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvYW55LWZ1bmMvc3JjL2xpYi9hbnktZnVuYy9hbnktZnVuYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBEQUEwRDtBQUMxRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLGNBQWMsR0FHZixNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUmUtZXhwb3J0IGZyb20gaW1wbCB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuZXhwb3J0IHtcbiAgQU5ZX0ZVTkNfU0VSVklDRSxcbiAgQU5ZX0ZVTkNfQ09ORklHLFxuICBpbmplY3RBbnlGdW5jLFxuICBwcm92aWRlQW55RnVuYyxcbiAgQW55RnVuY1NlcnZpY2UsXG4gIENhbGxPcHRpb25zLFxuICBBbnlGdW5jQ29uZmlnLFxufSBmcm9tICcuL2FueS1mdW5jLnNlcnZpY2UuaW1wbCc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWFueS1mdW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9hbnktZnVuYy9zcmMvbGliL254LWRkZC1hbnktZnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["_targetConstructorToSchema"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -4,12 +4,12 @@ import { FunctionTool } from 'openai/resources/beta/assistants';
|
|
|
4
4
|
import { ChatCompletionCreateParamsBase } from 'openai/resources/chat/completions';
|
|
5
5
|
import * as _nx_ddd_common_infrastructure_externals_openai_impl from '@nx-ddd/common/infrastructure/externals/openai/impl';
|
|
6
6
|
import { OpenAiServiceImpl } from '@nx-ddd/common/infrastructure/externals/openai/impl';
|
|
7
|
+
import { ZodSchema } from 'zod';
|
|
7
8
|
import * as i0 from '@angular/core';
|
|
8
9
|
import { InjectionToken } from '@angular/core';
|
|
9
|
-
import { ClientOptions } from 'openai';
|
|
10
|
-
import { ZodSchema } from 'zod';
|
|
11
10
|
import { ValidatorAdapter } from '@nx-ddd/any-func/adapters/validator';
|
|
12
11
|
import { JsonSchema } from 'json-schema-library';
|
|
12
|
+
import { ClientOptions } from 'openai';
|
|
13
13
|
import { IOptions } from 'class-validator-jsonschema/build/options';
|
|
14
14
|
import { JSONSchema7 } from 'json-schema';
|
|
15
15
|
|
|
@@ -74,8 +74,9 @@ declare class CacheAdapter {
|
|
|
74
74
|
static ɵprov: i0.ɵɵInjectableDeclaration<CacheAdapter>;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Options for AnyFuncService call methods
|
|
79
|
+
*/
|
|
79
80
|
interface CallOptions<I, O, S extends {
|
|
80
81
|
input: I;
|
|
81
82
|
output: O;
|
|
@@ -92,19 +93,40 @@ interface CallOptions<I, O, S extends {
|
|
|
92
93
|
maxRetry?: number;
|
|
93
94
|
validator?: (output: O) => Promise<any>;
|
|
94
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Configuration for AnyFuncService
|
|
98
|
+
*/
|
|
95
99
|
interface AnyFuncConfig extends ClientOptions {
|
|
96
100
|
debug: boolean;
|
|
97
101
|
openaiApiKey: string;
|
|
98
102
|
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* InjectionToken for AnyFuncService
|
|
106
|
+
*/
|
|
107
|
+
declare const ANY_FUNC_SERVICE: InjectionToken<any>;
|
|
108
|
+
/**
|
|
109
|
+
* InjectionToken for AnyFuncConfig
|
|
110
|
+
*/
|
|
111
|
+
declare const ANY_FUNC_CONFIG: InjectionToken<AnyFuncConfig>;
|
|
112
|
+
/**
|
|
113
|
+
* Injects the AnyFuncService
|
|
114
|
+
*/
|
|
115
|
+
declare function injectAnyFunc<T = any>(): T;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Provides the AnyFuncService with configuration
|
|
119
|
+
*/
|
|
99
120
|
declare function provideAnyFunc(useFactory?: () => AnyFuncConfig): (typeof CacheAdapter | i0.Provider[] | {
|
|
100
|
-
provide: InjectionToken<
|
|
121
|
+
provide: i0.InjectionToken<any>;
|
|
101
122
|
useClass: typeof AnyFuncService;
|
|
102
123
|
useFactory?: undefined;
|
|
103
124
|
} | {
|
|
104
|
-
provide: InjectionToken<AnyFuncConfig>;
|
|
125
|
+
provide: i0.InjectionToken<AnyFuncConfig>;
|
|
105
126
|
useFactory: () => AnyFuncConfig;
|
|
106
127
|
useClass?: undefined;
|
|
107
128
|
})[];
|
|
129
|
+
|
|
108
130
|
declare class AnyFuncService {
|
|
109
131
|
protected readonly openai: _nx_ddd_common_infrastructure_externals_openai_impl.OpenAiServiceImpl;
|
|
110
132
|
protected readonly config: AnyFuncConfig | {
|
|
@@ -112,17 +134,19 @@ declare class AnyFuncService {
|
|
|
112
134
|
};
|
|
113
135
|
protected cache: CacheAdapter;
|
|
114
136
|
protected validator: ValidatorAdapter;
|
|
137
|
+
private embeddingsHelper;
|
|
138
|
+
constructor();
|
|
115
139
|
/** @deprecated use callByJsonSchema instead */
|
|
116
140
|
jsonSchema(_input: any, jsonSchema: FunctionParameters, options?: CallOptions<any, any>): Promise<any>;
|
|
117
141
|
callByJsonSchema(_input: any, jsonSchema: FunctionParameters, { instructions, model, specs, embeddings, sample, temperature, maxRetry, validator, }?: CallOptions<any, any>): Promise<any>;
|
|
118
|
-
callByZod<I, O>(_input: I, zod: ZodSchema<O>,
|
|
142
|
+
callByZod<I, O>(_input: I, zod: ZodSchema<O>, options?: CallOptions<I, O>): Promise<O>;
|
|
119
143
|
callByClassValidator<I, O>(_input: I, args: {
|
|
120
144
|
new (): O;
|
|
121
|
-
},
|
|
145
|
+
}, options?: CallOptions<I, O>): Promise<O>;
|
|
122
146
|
call<I, O>(_input: I, args: {
|
|
123
147
|
new (): O;
|
|
124
148
|
} | ZodSchema<O> | JsonSchema, params?: CallOptions<I, O>): Promise<O>;
|
|
125
|
-
protected complete<I, O>(_input: any, jsonSchema: FunctionParameters, messages: ChatCompletionMessageParam[], { model, temperature
|
|
149
|
+
protected complete<I, O>(_input: any, jsonSchema: FunctionParameters, messages: ChatCompletionMessageParam[], { model, temperature }?: CallOptions<I, O> & {
|
|
126
150
|
functionOutput?: object;
|
|
127
151
|
}): Promise<openai_resources.ChatCompletionMessage>;
|
|
128
152
|
protected buildChatMessages(specs: {
|
|
@@ -132,8 +156,6 @@ declare class AnyFuncService {
|
|
|
132
156
|
role: 'assistant' | 'user';
|
|
133
157
|
content: string;
|
|
134
158
|
}[]>;
|
|
135
|
-
getEmbeddings<T>(item: T, accessor: (item: T) => string): Promise<number[]>;
|
|
136
|
-
sort<T>(items: T[], accessor: (item: T) => string, target: string): Promise<T[]>;
|
|
137
159
|
private parseInput;
|
|
138
160
|
static ɵfac: i0.ɵɵFactoryDeclaration<AnyFuncService, never>;
|
|
139
161
|
static ɵprov: i0.ɵɵInjectableDeclaration<AnyFuncService>;
|
|
@@ -141,5 +163,5 @@ declare class AnyFuncService {
|
|
|
141
163
|
|
|
142
164
|
declare function targetConstructorToSchema(target: Function, options?: Partial<IOptions>): JSONSchema7;
|
|
143
165
|
|
|
144
|
-
export { ANY_FUNC_SERVICE, AiFunction, AiSystem, AiToolsAgent, AnyFuncService, addTool, buildFunctionTool, buildToolFromSchema, getAiSystemConfig, getTools, injectAnyFunc, provideAnyFunc, setAiSystemConfig, targetConstructorToSchema };
|
|
166
|
+
export { ANY_FUNC_CONFIG, ANY_FUNC_SERVICE, AiFunction, AiSystem, AiToolsAgent, AnyFuncService, addTool, buildFunctionTool, buildToolFromSchema, getAiSystemConfig, getTools, injectAnyFunc, provideAnyFunc, setAiSystemConfig, targetConstructorToSchema };
|
|
145
167
|
export type { AiSystemConfig, AnyFuncConfig, CallOptions };
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx-ddd/any-func",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.12.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": ">=17.0.0",
|
|
6
|
-
"@nx-ddd/common": "19.
|
|
6
|
+
"@nx-ddd/common": "19.12.1",
|
|
7
7
|
"class-transformer": "^0.5.1",
|
|
8
8
|
"class-validator": "^0.14.0",
|
|
9
9
|
"class-validator-jsonschema": "^5.0.0",
|