@nx-ddd/any-func 19.84.0 → 19.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,4 +9,3 @@ function provideLocalStorage() {
9
9
  */
10
10
 
11
11
  export { provideLocalStorage };
12
- //# sourceMappingURL=nx-ddd-any-func-adapters-local-storage-browser.mjs.map
@@ -15,4 +15,3 @@ function provideLocalStorage() {
15
15
  */
16
16
 
17
17
  export { provideLocalStorage };
18
- //# sourceMappingURL=nx-ddd-any-func-adapters-local-storage-node.mjs.map
@@ -7,4 +7,3 @@ const LOCAL_STORAGE = makeDI('LOCAL_STORAGE');
7
7
  */
8
8
 
9
9
  export { LOCAL_STORAGE };
10
- //# sourceMappingURL=nx-ddd-any-func-adapters-local-storage.mjs.map
@@ -30,4 +30,3 @@ function provideValidatorAdapter() {
30
30
  */
31
31
 
32
32
  export { ValidatorAdapterCommonjs, provideValidatorAdapter };
33
- //# sourceMappingURL=nx-ddd-any-func-adapters-validator-commonjs.mjs.map
@@ -25,4 +25,3 @@ function provideValidatorAdapter() {
25
25
  */
26
26
 
27
27
  export { ValidatorAdapterEsmodule, provideValidatorAdapter };
28
- //# sourceMappingURL=nx-ddd-any-func-adapters-validator-esmodule.mjs.map
@@ -14,4 +14,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
14
14
  */
15
15
 
16
16
  export { ValidatorAdapter };
17
- //# sourceMappingURL=nx-ddd-any-func-adapters-validator.mjs.map
@@ -16,4 +16,3 @@ function provideAnyFuncForBrowser(configFactory) {
16
16
  */
17
17
 
18
18
  export { provideAnyFuncForBrowser };
19
- //# sourceMappingURL=nx-ddd-any-func-browser.mjs.map
@@ -16,4 +16,3 @@ function provideAnyFuncForServer(configFactory) {
16
16
  */
17
17
 
18
18
  export { provideAnyFuncForServer };
19
- //# sourceMappingURL=nx-ddd-any-func-server.mjs.map
@@ -365,4 +365,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
365
365
  */
366
366
 
367
367
  export { ANY_FUNC_CONFIG, ANY_FUNC_SERVICE, AiFunction, AiSystem, AiToolsAgent, AnyFuncService, addTool, buildFunctionTool, buildToolFromSchema, getAiSystemConfig, getTools, injectAnyFunc, provideAnyFunc, setAiSystemConfig, targetConstructorToSchema };
368
- //# sourceMappingURL=nx-ddd-any-func.mjs.map
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@nx-ddd/any-func",
3
- "version": "19.84.0",
3
+ "version": "19.85.0",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=17.0.0",
6
- "@nx-ddd/common": "19.84.0",
6
+ "@nx-ddd/common": "19.85.0",
7
7
  "class-transformer": "^0.5.1",
8
8
  "class-validator": "^0.14.0",
9
9
  "class-validator-jsonschema": "^5.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-any-func-adapters-local-storage-browser.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/adapters/local-storage-browser/index.ts","../../../../../packages/@nx-ddd/any-func/src/lib/adapters/local-storage-browser/nx-ddd-any-func-adapters-local-storage-browser.ts"],"sourcesContent":["import { LOCAL_STORAGE } from \"@nx-ddd/any-func/adapters/local-storage\";\n\nexport function provideLocalStorage() {\n return LOCAL_STORAGE.provide(() => localStorage);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;SAEgB,mBAAmB,GAAA;IACjC,OAAO,aAAa,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC;AAClD;;ACJA;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-any-func-adapters-local-storage-node.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/adapters/local-storage-node/index.ts","../../../../../packages/@nx-ddd/any-func/src/lib/adapters/local-storage-node/nx-ddd-any-func-adapters-local-storage-node.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore -- node-localstorage has no type declarations\nimport { LocalStorage } from \"node-localstorage\";\nimport { LOCAL_STORAGE } from \"@nx-ddd/any-func/adapters/local-storage\";\nimport { EnvironmentProviders, makeEnvironmentProviders } from \"@angular/core\";\n\nexport function provideLocalStorage(): EnvironmentProviders {\n return makeEnvironmentProviders([\n LOCAL_STORAGE.provide(() => new LocalStorage('node_modules/.cache/any-func', 5 * 1024 * 1024 * 1024))\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;AACA;SAKgB,mBAAmB,GAAA;AACjC,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA,aAAa,CAAC,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,8BAA8B,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACrG,KAAA,CAAC;AACJ;;ACVA;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-any-func-adapters-local-storage.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/adapters/local-storage/index.ts","../../../../../packages/@nx-ddd/any-func/src/lib/adapters/local-storage/nx-ddd-any-func-adapters-local-storage.ts"],"sourcesContent":["import { makeDI } from \"@nx-ddd/core\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore -- node-localstorage has no type declarations\nimport { LocalStorage } from \"node-localstorage\";\n\nexport const LOCAL_STORAGE = makeDI<LocalStorage>('LOCAL_STORAGE');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAKa,aAAa,GAAG,MAAM,CAAe,eAAe;;ACLjE;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-any-func-adapters-validator-commonjs.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/adapters/validator-commonjs/index.ts","../../../../../packages/@nx-ddd/any-func/src/lib/adapters/validator-commonjs/nx-ddd-any-func-adapters-validator-commonjs.ts"],"sourcesContent":["import { JsonError, JsonSchema, compileSchema, draft07 } from \"json-schema-library\";\nimport { ValidatorAdapter } from \"@nx-ddd/any-func/adapters/validator\";\nimport { Injectable } from \"@angular/core\";\nimport { EnvironmentProviders, makeEnvironmentProviders } from \"@angular/core\";\n\n@Injectable({providedIn: 'root'})\nexport class ValidatorAdapterCommonjs extends ValidatorAdapter {\n async validate(schema: JsonSchema, data: any): Promise<JsonError[]> {\n const compiledSchema = compileSchema(schema, { drafts: [draft07] });\n const result = compiledSchema.validate(data);\n\n if (Array.isArray(result)) {\n return result;\n }\n return result.errors || [];\n }\n}\n\nexport function provideValidatorAdapter(): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: ValidatorAdapter, useClass: ValidatorAdapterCommonjs },\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAMM,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;AAC5D,IAAA,MAAM,QAAQ,CAAC,MAAkB,EAAE,IAAS,EAAA;AAC1C,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;AAE5C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,OAAO,MAAM;QACf;AACA,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE;IAC5B;uGATW,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADZ,MAAM,EAAA,CAAA;;2FAClB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;SAahB,uBAAuB,GAAA;AACrC,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,wBAAwB,EAAE;AAClE,KAAA,CAAC;AACJ;;ACtBA;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-any-func-adapters-validator-esmodule.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/adapters/validator-esmodule/index.ts","../../../../../packages/@nx-ddd/any-func/src/lib/adapters/validator-esmodule/nx-ddd-any-func-adapters-validator-esmodule.ts"],"sourcesContent":["import { JsonError, JsonSchema } from \"json-schema-library\";\nimport { ValidatorAdapter } from \"@nx-ddd/any-func/adapters/validator\";\nimport { Injectable } from \"@angular/core\";\nimport { compileSchema } from 'json-schema-library';\n\n@Injectable({providedIn: 'root'})\nexport class ValidatorAdapterEsmodule extends ValidatorAdapter {\n async validate(schema: JsonSchema, data: any): Promise<JsonError[]> {\n return compileSchema(schema).validate(data).errors;\n }\n}\n\nexport function provideValidatorAdapter() {\n return [\n { provide: ValidatorAdapter, useClass: ValidatorAdapterEsmodule },\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAMM,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;AAC5D,IAAA,MAAM,QAAQ,CAAC,MAAkB,EAAE,IAAS,EAAA;QAC1C,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM;IACpD;uGAHW,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADZ,MAAM,EAAA,CAAA;;2FAClB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;SAOhB,uBAAuB,GAAA;IACrC,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,wBAAwB,EAAE;KAClE;AACH;;AChBA;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-any-func-adapters-validator.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/adapters/validator/index.ts","../../../../../packages/@nx-ddd/any-func/src/lib/adapters/validator/nx-ddd-any-func-adapters-validator.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport type { JsonError, JsonSchema } from \"json-schema-library\";\n\n@Injectable()\nexport abstract class ValidatorAdapter {\n abstract validate(schema: JsonSchema, data: any): Promise<JsonError[]>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAIsB,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAhB,gBAAgB,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;ACHD;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-any-func-browser.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/browser/index.ts","../../../../../packages/@nx-ddd/any-func/src/lib/browser/nx-ddd-any-func-browser.ts"],"sourcesContent":["import { EnvironmentProviders, makeEnvironmentProviders } from \"@angular/core\";\nimport { AnyFuncConfig, provideAnyFunc } from \"@nx-ddd/any-func\";\nimport { provideLocalStorage } from \"@nx-ddd/any-func/adapters/local-storage-browser\";\nimport { provideValidatorAdapter } from \"@nx-ddd/any-func/adapters/validator-esmodule\";\n\nexport function provideAnyFuncForBrowser(configFactory?: () => AnyFuncConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideAnyFunc(configFactory),\n provideValidatorAdapter(),\n provideLocalStorage(),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAKM,SAAU,wBAAwB,CAAC,aAAmC,EAAA;AAC1E,IAAA,OAAO,wBAAwB,CAAC;QAC9B,cAAc,CAAC,aAAa,CAAC;AAC7B,QAAA,uBAAuB,EAAE;AACzB,QAAA,mBAAmB,EAAE;AACtB,KAAA,CAAC;AACJ;;ACXA;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-any-func-server.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/server/index.ts","../../../../../packages/@nx-ddd/any-func/src/lib/server/nx-ddd-any-func-server.ts"],"sourcesContent":["import { EnvironmentProviders, makeEnvironmentProviders } from \"@angular/core\";\nimport { AnyFuncConfig, provideAnyFunc } from \"@nx-ddd/any-func\";\nimport { provideLocalStorage } from \"@nx-ddd/any-func/adapters/local-storage-node\";\nimport { provideValidatorAdapter } from \"@nx-ddd/any-func/adapters/validator-commonjs\";\n\nexport function provideAnyFuncForServer(configFactory?: () => AnyFuncConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideAnyFunc(configFactory),\n provideValidatorAdapter(),\n provideLocalStorage(),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAKM,SAAU,uBAAuB,CAAC,aAAmC,EAAA;AACzE,IAAA,OAAO,wBAAwB,CAAC;QAC9B,cAAc,CAAC,aAAa,CAAC;AAC7B,QAAA,uBAAuB,EAAE;AACzB,QAAA,mBAAmB,EAAE;AACtB,KAAA,CAAC;AACJ;;ACXA;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-any-func.mjs","sources":["../../../../../packages/@nx-ddd/any-func/src/lib/impl/json-schema/default-metadata-storage.ts","../../../../../packages/@nx-ddd/any-func/src/lib/impl/json-schema/json-schema.ts","../../../../../packages/@nx-ddd/any-func/src/lib/agent/agent.ts","../../../../../packages/@nx-ddd/any-func/src/lib/impl/adapters/cache/cache.adapter.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/tokens.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/message-helper.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/embeddings.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/providers.ts","../../../../../packages/@nx-ddd/any-func/src/lib/any-func/any-func.service.impl.ts","../../../../../packages/@nx-ddd/any-func/src/lib/nx-ddd-any-func.ts"],"sourcesContent":["\nlet defaultMetadataStorage: any;\n\ntry {\n ({ defaultMetadataStorage } = require('class-transformer/cjs/storage'));\n} catch {\n void 0;\n}\n\nexport function getMetadataStorage() {\n return defaultMetadataStorage;\n}\n\nexport function setMetadataStorage(metadataStorage: any) {\n defaultMetadataStorage = metadataStorage;\n}\n","import { ValidationTypes } from \"class-validator\"\nimport { targetConstructorToSchema as _targetConstructorToSchema } from \"class-validator-jsonschema\"\nimport { IOptions } from \"class-validator-jsonschema/build/options\";\nimport { JSONSchema7 } from 'json-schema';\nimport { getMetadataStorage } from \"./default-metadata-storage\";\n\n\n\n\nfunction getPropType(target: object, property: string) {\n return Reflect.getMetadata('design:type', target, property)\n}\n\nfunction targetToSchema(\n type: any,\n options: any\n): any {\n if (typeof type === 'function') {\n if (\n type.prototype === String.prototype ||\n type.prototype === Symbol.prototype\n ) {\n return { type: 'string' }\n } else if (type.prototype === Number.prototype) {\n return { type: 'number' }\n } else if (type.prototype === Boolean.prototype) {\n return { type: 'boolean' }\n }\n\n return targetConstructorToSchema(type, options)\n }\n}\n\nconst additionalConverters= {\n [ValidationTypes.NESTED_VALIDATION]: (meta: any, options: any) => {\n if (typeof meta.target === 'function') {\n const typeMeta = options.classTransformerMetadataStorage\n ? options.classTransformerMetadataStorage.findTypeMetadata(\n meta.target,\n meta.propertyName\n )\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: any): JSONSchema7 => {\n return {\n type: 'string',\n format: 'date-time', \n };\n },\n};\n\nexport function targetConstructorToSchema(target: Function, options: Partial<IOptions> = {}): JSONSchema7 {\n return _targetConstructorToSchema(target, {\n ...options,\n additionalConverters,\n classTransformerMetadataStorage: getMetadataStorage(),\n }) as JSONSchema7;\n}\n","import { ChatCompletionMessageParam, FunctionParameters, } from \"openai/resources\";\nimport { FunctionTool } from \"openai/resources/beta/assistants\";\nimport { ChatCompletionCreateParamsBase } from \"openai/resources/chat/completions\";\nimport { OpenAiServiceImpl } from '@nx-ddd/common/infrastructure/externals/openai/impl';\nimport { targetConstructorToSchema } from '../impl/json-schema';\n\nconst AI_TOOLS = '[ai-tools]' as const;\nconst AI_SYSTEM = '[ai-system]' as const;\n\nexport function addTool(obj: {[AI_TOOLS]: object[]}, tool: object) {\n obj[AI_TOOLS] = obj[AI_TOOLS] ?? [];\n obj[AI_TOOLS].push(tool);\n return obj;\n}\n\nexport function getTools(obj: {[AI_TOOLS]: object[]}): any[] {\n return obj[AI_TOOLS] ?? [];\n}\n\nexport function buildFunctionTool(params: {\n name: string,\n description: string,\n parameters: FunctionParameters,\n}): FunctionTool {\n return {\n type: 'function',\n function: {\n name: params.name,\n description: params.description,\n parameters: params.parameters,\n },\n }\n}\n\nexport function buildToolFromSchema(name: string, description: string, schema: Function): FunctionTool {\n const parameters = targetConstructorToSchema(schema) as FunctionParameters;\n return buildFunctionTool({ name, description, parameters });\n}\n\nexport function AiFunction(params?: {description?: string}) {\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\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}\n\nexport interface AiSystemConfig {\n model?: ChatCompletionCreateParamsBase['model'];\n instructions?: string;\n shots?: {input: string, output: string}[];\n}\n\nexport function setAiSystemConfig(obj: {[AI_SYSTEM]: AiSystemConfig}, config: AiSystemConfig) {\n obj[AI_SYSTEM] = config;\n return obj;\n}\n\nexport function getAiSystemConfig(obj: {[AI_SYSTEM]: AiSystemConfig}): AiSystemConfig {\n return obj[AI_SYSTEM];\n}\n\nexport function AiSystem({\n model = 'gpt-4-1106-preview',\n instructions = ``,\n shots = [],\n}: AiSystemConfig) {\n return function (target: any) {\n setAiSystemConfig(target, {model, instructions, shots});\n return target;\n };\n}\n\nexport class AiToolsAgent {\n constructor (protected openai: OpenAiServiceImpl) { }\n \n messages: ChatCompletionMessageParam[] = [\n { role: 'system' as const, content: '' },\n ];\n\n results: any[] = [];\n\n get tools() {\n return getTools(this.constructor as any);\n }\n\n get config() {\n return getAiSystemConfig(this.constructor as any);\n }\n\n async completion(tools: any[] = 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 as any)[call.function.name];\n const result = func(JSON.parse(call.function.arguments));\n this.results.push(result);\n }\n }\n }\n\n async execute<T=any>(message: string, options: {tools?: any[]} = {}): Promise<T> {\n this.messages.push({role: 'user', content: message});\n await this.completion(options.tools);\n return this.results.at(-1) as any;\n }\n}\n\n","import { Injectable } from \"@angular/core\";\nimport { LOCAL_STORAGE } from '@nx-ddd/any-func/adapters/local-storage';\nimport CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CacheAdapter {\n protected localStorage = LOCAL_STORAGE.inject();\n\n async get<T>(keyOrObj: string | object): Promise<T | null> {\n const key = this.makeKey(keyOrObj);\n return this.parseJson(this.localStorage.getItem(key)) as T | null;\n }\n\n async set(keyOrObj: string | object, value: any): Promise<void> {\n const key = this.makeKey(keyOrObj);\n this.localStorage.setItem(key, this.makeJson(value));\n }\n\n async call<P extends (string | object), T>(props: P, callback: (props: P) => Promise<T>): Promise<T> {\n const key = this.makeKey(props);\n let value = await this.get<T>(key);\n if (value) return value;\n value = await callback(props);\n await this.set(key, value);\n return value; \n }\n\n protected makeKey(keyOrObj: string | object): string {\n const value = typeof keyOrObj === 'string' ? keyOrObj : JSON.stringify(keyOrObj);\n return CryptoJS.SHA256(value).toString();\n }\n\n protected makeJson(valueOrObj: any): string {\n return JSON.stringify(valueOrObj);\n }\n\n protected parseJson(value: string): any {\n return JSON.parse(value);\n }\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport type { AnyFuncConfig } from './types';\n\n\nexport const ANY_FUNC_SERVICE = new InjectionToken<any>('[@nx-ddd/any-func] AnyFuncService');\n\n\nexport const ANY_FUNC_CONFIG = new InjectionToken<AnyFuncConfig>('[@nx-ddd/any-func] AnyFuncConfig');\n\n\nexport function injectAnyFunc<T = any>(): T {\n return inject(ANY_FUNC_SERVICE, {optional: true}) ?? {} as T;\n}\n","import type { ChatCompletionMessageParam } from 'openai/resources';\n\n\nexport function isBrowserFile(obj: unknown): obj is File {\n return typeof File !== 'undefined' && obj instanceof File;\n}\n\n\nexport class OpenAiMessageHelper {\n \n static async imageToBase64(imageFile: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result as string;\n resolve(base64String.split(',')[1]);\n };\n reader.onerror = reject;\n reader.readAsDataURL(imageFile);\n });\n }\n\n \n static async buildFilesMessage(files: File[]): Promise<ChatCompletionMessageParam['content']> {\n return await Promise.all(files.map(async (file) => ({\n type: 'image_url' as const,\n image_url: { url: `data:image/jpeg;base64,${await this.imageToBase64(file)}` },\n })));\n }\n}\n","import pLimit from 'p-limit';\nimport { CacheAdapter } from '../impl/adapters/cache';\n\n\nexport class EmbeddingsHelper {\n constructor(\n private cache: CacheAdapter,\n private openai: { embeddings: { create: (params: { model: string; input: string }) => Promise<{ data: { embedding: number[] }[] }> } }\n ) {}\n\n async getEmbeddings<T>(item: T, accessor: (item: T) => string): Promise<number[]> {\n const props = { item, model: 'text-embedding-3-small' };\n const cached = await this.cache.get<number[]>(props);\n if (cached) return cached;\n const 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\n async sort<T>(items: T[], accessor: (item: T) => string, target: string): Promise<T[]> {\n const dist = (a: number[], b: number[]) => 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","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 { AnyFuncConfig } from './types';\nimport { AnyFuncService } from './any-func.service.impl';\n\n\nexport function provideAnyFunc(useFactory?: () => AnyFuncConfig) {\n const config = useFactory?.() ?? ({} as AnyFuncConfig);\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","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 type { ChatCompletionMessageParam, FunctionParameters } from 'openai/resources';\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 { JsonSchema } from 'json-schema-library';\nimport { CallOptions, AnyFuncConfig } from './types';\nimport { ANY_FUNC_CONFIG } from './tokens';\nimport { isBrowserFile, OpenAiMessageHelper } from './message-helper';\nimport { EmbeddingsHelper } from './embeddings';\n\n\nexport { CallOptions, AnyFuncConfig } from './types';\nexport { ANY_FUNC_SERVICE, ANY_FUNC_CONFIG, injectAnyFunc } from './tokens';\nexport { provideAnyFunc } from './providers';\n\n@Injectable()\nexport class AnyFuncService {\n protected readonly openai = injectOpenAiService();\n protected readonly config = inject(ANY_FUNC_CONFIG, {optional: true}) ?? { debug: false };\n protected cache = inject(CacheAdapter);\n protected validator = inject(ValidatorAdapter);\n private embeddingsHelper: EmbeddingsHelper;\n\n constructor() {\n this.embeddingsHelper = new EmbeddingsHelper(this.cache, this.openai);\n }\n\n \n async jsonSchema(_input: any, jsonSchema: FunctionParameters, options: CallOptions<any, any> = {}): Promise<any> {\n return this.callByJsonSchema(_input, jsonSchema, options);\n }\n\n async callByJsonSchema(_input: any, jsonSchema: FunctionParameters, {\n instructions = '', model = 'gpt-4o', specs = [], embeddings = false,\n sample = 3, temperature = 0, maxRetry = 3,\n validator = (data: any) => this.validator.validate(jsonSchema, data),\n }: CallOptions<any, any> = {}): Promise<any> {\n for (const spec of specs) {\n const errors = await validator(spec.output);\n if (errors.length > 0) 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: ChatCompletionMessageParam[] = [\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(\n map(() => messages),\n switchMap(() => this.complete(_input, jsonSchema, messages, { model, sample, temperature })),\n tap(message => messages.push(message)),\n switchMap(async (message) => {\n const toolCall = message.tool_calls![0];\n if (toolCall.type !== 'function') 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) console.debug('messages', JSON.stringify(messages, null, 2));\n throw new Error(JSON.stringify(errors, null, 2));\n } else {\n messages.push({ role: 'tool', content: JSON.stringify(output), tool_call_id: message.tool_calls![0].id });\n if (this.config.debug) console.debug('messages', JSON.stringify(messages, null, 2));\n }\n return output;\n }),\n catchError((error) => { console.error(error); throw error; }),\n retry(maxRetry),\n ));\n }\n\n async callByZod<I, O>(_input: I, zod: ZodSchema<O>, options: CallOptions<I, O> = {}): Promise<O> {\n const schema = zodToJsonSchema(zod as any, { $refStrategy: 'none' });\n const validator = options.validator ?? ((data: any) => this.validator.validate(schema, data));\n return this.jsonSchema(_input, schema, { ...options, validator });\n }\n\n async callByClassValidator<I, O>(_input: I, args: {new (): O}, options: CallOptions<I, O> = {}): Promise<O> {\n const parameters = targetConstructorToSchema(args) as FunctionParameters;\n const validator = options.validator ?? ((data: any) => this.validator.validate(parameters, data));\n console.debug('[AnyFuncService#call] parameters:', parameters);\n return this.jsonSchema(_input, parameters, { ...options, validator });\n }\n\n async call<I, O>(_input: I, args: {new (): O} | ZodSchema<O> | JsonSchema, params: CallOptions<I, O> = {}): Promise<O> {\n if (args instanceof ZodSchema) return this.callByZod(_input, args, params);\n if (args instanceof Function) 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\n protected async complete<I, O>(\n _input: any, jsonSchema: FunctionParameters, messages: ChatCompletionMessageParam[],\n { model = 'gpt-4o', temperature = 0 }: CallOptions<I, O> & {functionOutput?: object} = {}\n ) {\n const tool = buildFunctionTool({name: 'function', description: '', parameters: jsonSchema});\n const props = {\n model, messages, tools: [tool],\n tool_choice: { type: 'function' as const, 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\n protected async buildChatMessages(specs: { input: any; output: any }[]): Promise<{role: 'assistant' | 'user', content: string}[]> {\n const messages = await Promise.all(specs.map(async ({ input, output }) => {\n const parsedInput = await this.parseInput(input);\n return <ChatCompletionMessageParam[]>[\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() as {role: 'assistant' | 'user', content: string}[];\n }\n\n private async parseInput(input: any) {\n if (isBrowserFile(input)) return await OpenAiMessageHelper.buildFilesMessage([input]);\n else if (input === 'string') return input;\n else return JSON.stringify(input);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_targetConstructorToSchema"],"mappings":"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"}