@loopstack/ai-module 0.15.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.
Files changed (55) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +2 -0
  3. package/dist/ai.module.d.ts +2 -0
  4. package/dist/ai.module.js +50 -0
  5. package/dist/ai.module.js.map +1 -0
  6. package/dist/documents/ai-message-document.d.ts +3 -0
  7. package/dist/documents/ai-message-document.js +38 -0
  8. package/dist/documents/ai-message-document.js.map +1 -0
  9. package/dist/documents/ai-message-document.yaml +5 -0
  10. package/dist/documents/index.d.ts +1 -0
  11. package/dist/documents/index.js +18 -0
  12. package/dist/documents/index.js.map +1 -0
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.js +20 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/providers/anthropic.provider.d.ts +5 -0
  17. package/dist/providers/anthropic.provider.js +29 -0
  18. package/dist/providers/anthropic.provider.js.map +1 -0
  19. package/dist/providers/openai.provider.d.ts +5 -0
  20. package/dist/providers/openai.provider.js +29 -0
  21. package/dist/providers/openai.provider.js.map +1 -0
  22. package/dist/schemas/ai-generate-tool-base.schema.d.ts +57 -0
  23. package/dist/schemas/ai-generate-tool-base.schema.js +23 -0
  24. package/dist/schemas/ai-generate-tool-base.schema.js.map +1 -0
  25. package/dist/services/ai-messages-helper.service.d.ts +9 -0
  26. package/dist/services/ai-messages-helper.service.js +30 -0
  27. package/dist/services/ai-messages-helper.service.js.map +1 -0
  28. package/dist/services/ai-provider-model-helper.service.d.ts +15 -0
  29. package/dist/services/ai-provider-model-helper.service.js +57 -0
  30. package/dist/services/ai-provider-model-helper.service.js.map +1 -0
  31. package/dist/services/ai-provider-registry.service.d.ts +15 -0
  32. package/dist/services/ai-provider-registry.service.js +73 -0
  33. package/dist/services/ai-provider-registry.service.js.map +1 -0
  34. package/dist/services/ai-tools-helper.service.d.ts +4 -0
  35. package/dist/services/ai-tools-helper.service.js +34 -0
  36. package/dist/services/ai-tools-helper.service.js.map +1 -0
  37. package/dist/services/index.d.ts +4 -0
  38. package/dist/services/index.js +21 -0
  39. package/dist/services/index.js.map +1 -0
  40. package/dist/tools/ai-generate-document.tool.d.ts +10 -0
  41. package/dist/tools/ai-generate-document.tool.js +50 -0
  42. package/dist/tools/ai-generate-document.tool.js.map +1 -0
  43. package/dist/tools/ai-generate-object.tool.d.ts +89 -0
  44. package/dist/tools/ai-generate-object.tool.js +85 -0
  45. package/dist/tools/ai-generate-object.tool.js.map +1 -0
  46. package/dist/tools/ai-generate-text.tool.d.ts +77 -0
  47. package/dist/tools/ai-generate-text.tool.js +112 -0
  48. package/dist/tools/ai-generate-text.tool.js.map +1 -0
  49. package/dist/tools/delegate-tool-call.tool.d.ts +16 -0
  50. package/dist/tools/delegate-tool-call.tool.js +57 -0
  51. package/dist/tools/delegate-tool-call.tool.js.map +1 -0
  52. package/dist/tools/index.d.ts +4 -0
  53. package/dist/tools/index.js +21 -0
  54. package/dist/tools/index.js.map +1 -0
  55. package/package.json +101 -0
package/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ Copyright 2025 Loopstack GmbH
8
+
9
+ Licensed under the Apache License, Version 2.0 (the "License");
10
+ you may not use this skeleton application except in compliance with the License.
11
+ You may obtain a copy of the License at
12
+
13
+ http://www.apache.org/licenses/LICENSE-2.0
14
+
15
+ Unless required by applicable law or agreed to in writing, software
16
+ distributed under the License is distributed on an "AS IS" BASIS,
17
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ See the License for the specific language governing permissions and
19
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # Loopstack AI Module
2
+
@@ -0,0 +1,2 @@
1
+ export declare class AiModule {
2
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AiModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const core_1 = require("@loopstack/core");
12
+ const ai_provider_registry_service_1 = require("./services/ai-provider-registry.service");
13
+ const openai_provider_1 = require("./providers/openai.provider");
14
+ const anthropic_provider_1 = require("./providers/anthropic.provider");
15
+ const core_2 = require("@nestjs/core");
16
+ const services_1 = require("./services");
17
+ const services_2 = require("./services");
18
+ const services_3 = require("./services");
19
+ const tools_1 = require("./tools");
20
+ const documents_1 = require("./documents");
21
+ const core_ui_module_1 = require("@loopstack/core-ui-module");
22
+ let AiModule = class AiModule {
23
+ };
24
+ exports.AiModule = AiModule;
25
+ exports.AiModule = AiModule = __decorate([
26
+ (0, common_1.Module)({
27
+ imports: [core_1.LoopCoreModule, core_ui_module_1.CoreUiModule, core_2.DiscoveryModule],
28
+ providers: [
29
+ services_1.AiMessagesHelperService,
30
+ services_2.AiProviderModelHelperService,
31
+ services_3.AiToolsHelperService,
32
+ ai_provider_registry_service_1.AiProviderRegistryService,
33
+ openai_provider_1.OpenAiProviderService,
34
+ anthropic_provider_1.AnthropicProviderService,
35
+ tools_1.AiGenerateDocument,
36
+ tools_1.AiGenerateObject,
37
+ tools_1.AiGenerateText,
38
+ tools_1.DelegateToolCall,
39
+ documents_1.AiMessageDocument,
40
+ ],
41
+ exports: [
42
+ tools_1.AiGenerateDocument,
43
+ tools_1.AiGenerateObject,
44
+ tools_1.AiGenerateText,
45
+ tools_1.DelegateToolCall,
46
+ documents_1.AiMessageDocument,
47
+ ],
48
+ })
49
+ ], AiModule);
50
+ //# sourceMappingURL=ai.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.module.js","sourceRoot":"","sources":["../src/ai.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,0CAAiD;AACjD,0FAAoF;AACpF,iEAAoE;AACpE,uEAA0E;AAC1E,uCAA+C;AAC/C,yCAAqD;AACrD,yCAA0D;AAC1D,yCAAkD;AAClD,mCAKiB;AACjB,2CAAgD;AAChD,8DAAyD;AAgClD,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAAG,CAAA;AAAX,4BAAQ;mBAAR,QAAQ;IA9BpB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAc,EAAE,6BAAY,EAAE,sBAAe,CAAC;QACxD,SAAS,EAAE;YAET,kCAAuB;YACvB,uCAA4B;YAC5B,+BAAoB;YACpB,wDAAyB;YAGzB,uCAAqB;YACrB,6CAAwB;YAGxB,0BAAkB;YAClB,wBAAgB;YAChB,sBAAc;YACd,wBAAgB;YAGhB,6BAAiB;SAClB;QACD,OAAO,EAAE;YACP,0BAAkB;YAClB,wBAAgB;YAChB,sBAAc;YACd,wBAAgB;YAChB,6BAAiB;SAClB;KACF,CAAC;GACW,QAAQ,CAAG"}
@@ -0,0 +1,3 @@
1
+ import { DocumentBase } from '@loopstack/core';
2
+ export declare class AiMessageDocument extends DocumentBase {
3
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AiMessageDocument = void 0;
10
+ const common_1 = require("@loopstack/common");
11
+ const zod_1 = require("zod");
12
+ const common_2 = require("@nestjs/common");
13
+ const core_1 = require("@loopstack/core");
14
+ const AiMessageDocumentSchema = zod_1.z.object({
15
+ id: zod_1.z.string().optional(),
16
+ role: zod_1.z.union([
17
+ zod_1.z.literal('system'),
18
+ zod_1.z.literal('user'),
19
+ zod_1.z.literal('assistant'),
20
+ ]),
21
+ metadata: zod_1.z.any().optional(),
22
+ parts: zod_1.z.array(zod_1.z.any()),
23
+ });
24
+ let AiMessageDocument = class AiMessageDocument extends core_1.DocumentBase {
25
+ };
26
+ exports.AiMessageDocument = AiMessageDocument;
27
+ exports.AiMessageDocument = AiMessageDocument = __decorate([
28
+ (0, common_2.Injectable)(),
29
+ (0, common_1.BlockConfig)({
30
+ config: {
31
+ type: 'document',
32
+ description: 'Ai Message Document.',
33
+ },
34
+ configFile: __dirname + '/ai-message-document.yaml',
35
+ }),
36
+ (0, common_1.WithArguments)(AiMessageDocumentSchema)
37
+ ], AiMessageDocument);
38
+ //# sourceMappingURL=ai-message-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-message-document.js","sourceRoot":"","sources":["../../src/documents/ai-message-document.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8CAA+D;AAC/D,6BAAwB;AACxB,2CAA4C;AAC5C,0CAA+C;AAE/C,MAAM,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC;QACZ,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnB,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACjB,OAAC,CAAC,OAAO,CAAC,WAAW,CAAC;KACvB,CAAC;IACF,QAAQ,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC;CACxB,CAAC,CAAC;AAWI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,mBAAY;CAAG,CAAA;AAAzC,8CAAiB;4BAAjB,iBAAiB;IAT7B,IAAA,mBAAU,GAAE;IACZ,IAAA,oBAAW,EAAC;QACX,MAAM,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,sBAAsB;SACpC;QACD,UAAU,EAAE,SAAS,GAAG,2BAA2B;KACpD,CAAC;IACD,IAAA,sBAAa,EAAC,uBAAuB,CAAC;GAC1B,iBAAiB,CAAwB"}
@@ -0,0 +1,5 @@
1
+ tags:
2
+ - message
3
+ ui:
4
+ form:
5
+ widget: ai-message
@@ -0,0 +1 @@
1
+ export * from './ai-message-document';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ai-message-document"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC"}
@@ -0,0 +1,3 @@
1
+ export * from './ai.module';
2
+ export * from './tools';
3
+ export * from './documents';
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ai.module"), exports);
18
+ __exportStar(require("./tools"), exports);
19
+ __exportStar(require("./documents"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,0CAAwB;AACxB,8CAA4B"}
@@ -0,0 +1,5 @@
1
+ import { AiProviderInterface, AiProviderOptions } from '@loopstack/common';
2
+ export declare class AnthropicProviderService implements AiProviderInterface {
3
+ createClient(options: AiProviderOptions): import("@ai-sdk/anthropic").AnthropicProvider;
4
+ getModel(client: any, model: string): any;
5
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AnthropicProviderService = void 0;
10
+ const anthropic_1 = require("@ai-sdk/anthropic");
11
+ const common_1 = require("@loopstack/common");
12
+ let AnthropicProviderService = class AnthropicProviderService {
13
+ createClient(options) {
14
+ return (0, anthropic_1.createAnthropic)({
15
+ apiKey: options.apiKey,
16
+ baseURL: options.baseURL,
17
+ });
18
+ }
19
+ getModel(client, model) {
20
+ return client(model);
21
+ }
22
+ };
23
+ exports.AnthropicProviderService = AnthropicProviderService;
24
+ exports.AnthropicProviderService = AnthropicProviderService = __decorate([
25
+ (0, common_1.AiProvider)({
26
+ name: 'anthropic',
27
+ })
28
+ ], AnthropicProviderService);
29
+ //# sourceMappingURL=anthropic.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.provider.js","sourceRoot":"","sources":["../../src/providers/anthropic.provider.ts"],"names":[],"mappings":";;;;;;;;;AAAA,iDAAoD;AACpD,8CAI2B;AAKpB,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,YAAY,CAAC,OAA0B;QACrC,OAAO,IAAA,2BAAe,EAAC;YACrB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,MAAW,EAAE,KAAa;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAA;AAXY,4DAAwB;mCAAxB,wBAAwB;IAHpC,IAAA,mBAAU,EAAC;QACV,IAAI,EAAE,WAAW;KAClB,CAAC;GACW,wBAAwB,CAWpC"}
@@ -0,0 +1,5 @@
1
+ import { AiProviderInterface, AiProviderOptions } from '@loopstack/common';
2
+ export declare class OpenAiProviderService implements AiProviderInterface {
3
+ createClient(options: AiProviderOptions): import("@ai-sdk/openai").OpenAIProvider;
4
+ getModel(client: any, model: string): any;
5
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.OpenAiProviderService = void 0;
10
+ const openai_1 = require("@ai-sdk/openai");
11
+ const common_1 = require("@loopstack/common");
12
+ let OpenAiProviderService = class OpenAiProviderService {
13
+ createClient(options) {
14
+ return (0, openai_1.createOpenAI)({
15
+ apiKey: options.apiKey,
16
+ baseURL: options.baseURL,
17
+ });
18
+ }
19
+ getModel(client, model) {
20
+ return client(model);
21
+ }
22
+ };
23
+ exports.OpenAiProviderService = OpenAiProviderService;
24
+ exports.OpenAiProviderService = OpenAiProviderService = __decorate([
25
+ (0, common_1.AiProvider)({
26
+ name: 'openai',
27
+ })
28
+ ], OpenAiProviderService);
29
+ //# sourceMappingURL=openai.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.provider.js","sourceRoot":"","sources":["../../src/providers/openai.provider.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA8C;AAC9C,8CAI2B;AAKpB,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,YAAY,CAAC,OAA0B;QACrC,OAAO,IAAA,qBAAY,EAAC;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,MAAW,EAAE,KAAa;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAA;AAXY,sDAAqB;gCAArB,qBAAqB;IAHjC,IAAA,mBAAU,EAAC;QACV,IAAI,EAAE,QAAQ;KACf,CAAC;GACW,qBAAqB,CAWjC"}
@@ -0,0 +1,57 @@
1
+ import { z } from 'zod';
2
+ export declare const AiGenerateToolBaseSchema: z.ZodObject<{
3
+ llm: z.ZodOptional<z.ZodObject<{
4
+ model: z.ZodOptional<z.ZodString>;
5
+ provider: z.ZodOptional<z.ZodString>;
6
+ envApiKey: z.ZodOptional<z.ZodString>;
7
+ cacheResponse: z.ZodOptional<z.ZodBoolean>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ model?: string;
10
+ provider?: string;
11
+ envApiKey?: string;
12
+ cacheResponse?: boolean;
13
+ }, {
14
+ model?: string;
15
+ provider?: string;
16
+ envApiKey?: string;
17
+ cacheResponse?: boolean;
18
+ }>>;
19
+ messages: z.ZodOptional<z.ZodArray<z.ZodObject<{
20
+ role: z.ZodEnum<["system", "assistant", "user", "tool"]>;
21
+ content: z.ZodAny;
22
+ }, "strip", z.ZodTypeAny, {
23
+ role?: "system" | "assistant" | "user" | "tool";
24
+ content?: any;
25
+ }, {
26
+ role?: "system" | "assistant" | "user" | "tool";
27
+ content?: any;
28
+ }>, "many">>;
29
+ prompt: z.ZodOptional<z.ZodString>;
30
+ messagesSearchTag: z.ZodOptional<z.ZodString>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ llm?: {
33
+ model?: string;
34
+ provider?: string;
35
+ envApiKey?: string;
36
+ cacheResponse?: boolean;
37
+ };
38
+ messages?: {
39
+ role?: "system" | "assistant" | "user" | "tool";
40
+ content?: any;
41
+ }[];
42
+ prompt?: string;
43
+ messagesSearchTag?: string;
44
+ }, {
45
+ llm?: {
46
+ model?: string;
47
+ provider?: string;
48
+ envApiKey?: string;
49
+ cacheResponse?: boolean;
50
+ };
51
+ messages?: {
52
+ role?: "system" | "assistant" | "user" | "tool";
53
+ content?: any;
54
+ }[];
55
+ prompt?: string;
56
+ messagesSearchTag?: string;
57
+ }>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiGenerateToolBaseSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.AiGenerateToolBaseSchema = zod_1.z.object({
6
+ llm: zod_1.z
7
+ .object({
8
+ model: zod_1.z.string().optional(),
9
+ provider: zod_1.z.string().optional(),
10
+ envApiKey: zod_1.z.string().optional(),
11
+ cacheResponse: zod_1.z.boolean().optional(),
12
+ })
13
+ .optional(),
14
+ messages: zod_1.z
15
+ .array(zod_1.z.object({
16
+ role: zod_1.z.enum(['system', 'assistant', 'user', 'tool']),
17
+ content: zod_1.z.any(),
18
+ }))
19
+ .optional(),
20
+ prompt: zod_1.z.string().optional(),
21
+ messagesSearchTag: zod_1.z.string().optional(),
22
+ });
23
+ //# sourceMappingURL=ai-generate-tool-base.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-generate-tool-base.schema.js","sourceRoot":"","sources":["../../src/schemas/ai-generate-tool-base.schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,GAAG,EAAE,OAAC;SACH,MAAM,CAAC;QACN,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KACtC,CAAC;SACD,QAAQ,EAAE;IACb,QAAQ,EAAE,OAAC;SACR,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,EAAE,OAAC,CAAC,GAAG,EAAE;KACjB,CAAC,CACH;SACA,QAAQ,EAAE;IACb,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ModelMessage } from '@ai-sdk/provider-utils';
2
+ import { DocumentEntity } from '@loopstack/common';
3
+ export declare class AiMessagesHelperService {
4
+ private searchMessages;
5
+ getMessages(documents: DocumentEntity[], args: {
6
+ messages?: ModelMessage[];
7
+ messagesSearchTag?: string;
8
+ }): any[];
9
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AiMessagesHelperService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let AiMessagesHelperService = class AiMessagesHelperService {
12
+ searchMessages(documents, tag) {
13
+ return documents
14
+ .filter((document) => document.tags?.includes(tag))
15
+ .sort((a, b) => a.createdAt.valueOf() - b.createdAt.valueOf())
16
+ .map((document) => document.content);
17
+ }
18
+ getMessages(documents, args) {
19
+ let messages = args.messages;
20
+ if (!messages?.length) {
21
+ messages = this.searchMessages(documents, args.messagesSearchTag ?? 'message');
22
+ }
23
+ return messages;
24
+ }
25
+ };
26
+ exports.AiMessagesHelperService = AiMessagesHelperService;
27
+ exports.AiMessagesHelperService = AiMessagesHelperService = __decorate([
28
+ (0, common_1.Injectable)()
29
+ ], AiMessagesHelperService);
30
+ //# sourceMappingURL=ai-messages-helper.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-messages-helper.service.js","sourceRoot":"","sources":["../../src/services/ai-messages-helper.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAKrC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAC1B,cAAc,CACpB,SAA2B,EAC3B,GAAW;QAEX,OAAO,SAAS;aACb,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;aAClD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;aAC7D,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,WAAW,CACT,SAA2B,EAC3B,IAA+D;QAE/D,IAAI,QAAQ,GAAQ,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAC5B,SAAS,EACT,IAAI,CAAC,iBAAiB,IAAI,SAAS,CACpC,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AAzBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;GACA,uBAAuB,CAyBnC"}
@@ -0,0 +1,15 @@
1
+ import { AiProviderRegistryService } from './ai-provider-registry.service';
2
+ export interface AiProviderModelConfig {
3
+ model?: string;
4
+ provider?: string;
5
+ envApiKey?: string;
6
+ cacheResponse?: boolean;
7
+ }
8
+ export declare class AiProviderModelHelperService {
9
+ private readonly aiProviderRegistry;
10
+ constructor(aiProviderRegistry: AiProviderRegistryService);
11
+ private getApiKey;
12
+ private getModel;
13
+ private getProvider;
14
+ getProviderModel(config: AiProviderModelConfig): any;
15
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AiProviderModelHelperService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const ai_provider_registry_service_1 = require("./ai-provider-registry.service");
15
+ let AiProviderModelHelperService = class AiProviderModelHelperService {
16
+ aiProviderRegistry;
17
+ constructor(aiProviderRegistry) {
18
+ this.aiProviderRegistry = aiProviderRegistry;
19
+ }
20
+ getApiKey(envApiKey, providerName) {
21
+ const defaultKey = `${providerName.toUpperCase()}_API_KEY`;
22
+ const apiKey = envApiKey ? process.env[envApiKey] : process.env[defaultKey];
23
+ if (!apiKey) {
24
+ throw new Error(`No API key found! Please make sure to provide "${envApiKey ?? defaultKey}" in your .env file.`);
25
+ }
26
+ return apiKey;
27
+ }
28
+ getModel(modelName) {
29
+ const model = modelName ?? process.env['DEFAULT_MODEL'];
30
+ if (!modelName) {
31
+ throw new Error(`No Model defined. Please provide DEFAULT_MODEL or set the model parameter in the completion service call.`);
32
+ }
33
+ return model;
34
+ }
35
+ getProvider(name) {
36
+ const provider = name ?? process.env['DEFAULT_PROVIDER'];
37
+ if (!provider) {
38
+ throw new Error(`No Provider defined. Please provide DEFAULT_PROVIDER or set the provider parameter in the completion service call.`);
39
+ }
40
+ return provider;
41
+ }
42
+ getProviderModel(config) {
43
+ const modelName = this.getModel(config.model);
44
+ const providerName = this.getProvider(config.provider);
45
+ const apiKey = this.getApiKey(config.envApiKey, providerName);
46
+ return this.aiProviderRegistry.createModel(providerName, {
47
+ apiKey: apiKey,
48
+ model: modelName,
49
+ });
50
+ }
51
+ };
52
+ exports.AiProviderModelHelperService = AiProviderModelHelperService;
53
+ exports.AiProviderModelHelperService = AiProviderModelHelperService = __decorate([
54
+ (0, common_1.Injectable)(),
55
+ __metadata("design:paramtypes", [ai_provider_registry_service_1.AiProviderRegistryService])
56
+ ], AiProviderModelHelperService);
57
+ //# sourceMappingURL=ai-provider-model-helper.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-provider-model-helper.service.js","sourceRoot":"","sources":["../../src/services/ai-provider-model-helper.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,iFAA2E;AAUpE,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IACV;IAA7B,YAA6B,kBAA6C;QAA7C,uBAAkB,GAAlB,kBAAkB,CAA2B;IAAG,CAAC;IAEtE,SAAS,CACf,SAA6B,EAC7B,YAAoB;QAEpB,MAAM,UAAU,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC;QAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE5E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,kDAAkD,SAAS,IAAI,UAAU,sBAAsB,CAChG,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,QAAQ,CAAC,SAA6B;QAC5C,MAAM,KAAK,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,2GAA2G,CAC5G,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,WAAW,CAAC,IAAwB;QAC1C,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,oHAAoH,CACrH,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,MAA6B;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,YAAY,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AArDY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;qCAEsC,wDAAyB;GAD/D,4BAA4B,CAqDxC"}
@@ -0,0 +1,15 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { DiscoveryService, Reflector } from '@nestjs/core';
3
+ import { AiProviderOptions } from '@loopstack/common';
4
+ export declare class AiProviderRegistryService implements OnModuleInit {
5
+ private readonly discoveryService;
6
+ private readonly reflector;
7
+ private readonly logger;
8
+ private readonly providers;
9
+ constructor(discoveryService: DiscoveryService, reflector: Reflector);
10
+ onModuleInit(): void;
11
+ private loadProviders;
12
+ private registerProvider;
13
+ createModel(providerName: string, options: AiProviderOptions): any;
14
+ getAvailableProviders(): string[];
15
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var AiProviderRegistryService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AiProviderRegistryService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const core_1 = require("@nestjs/core");
16
+ const common_2 = require("@loopstack/common");
17
+ let AiProviderRegistryService = AiProviderRegistryService_1 = class AiProviderRegistryService {
18
+ discoveryService;
19
+ reflector;
20
+ logger = new common_1.Logger(AiProviderRegistryService_1.name);
21
+ providers = new Map();
22
+ constructor(discoveryService, reflector) {
23
+ this.discoveryService = discoveryService;
24
+ this.reflector = reflector;
25
+ }
26
+ onModuleInit() {
27
+ this.loadProviders();
28
+ }
29
+ loadProviders() {
30
+ const providers = this.discoveryService.getProviders();
31
+ providers
32
+ .filter((wrapper) => wrapper.isDependencyTreeStatic())
33
+ .filter((wrapper) => wrapper.instance)
34
+ .forEach((wrapper) => {
35
+ const { instance } = wrapper;
36
+ const metadata = this.reflector.get(common_2.AI_PROVIDER_DECORATOR, instance.constructor);
37
+ if (metadata) {
38
+ this.registerProvider(metadata.name, instance);
39
+ this.logger.log(`Registered AI provider: ${metadata.name}`);
40
+ }
41
+ });
42
+ }
43
+ registerProvider(name, provider) {
44
+ if (this.providers.has(name)) {
45
+ this.logger.warn(`Provider ${name} already exists, overriding...`);
46
+ }
47
+ this.providers.set(name.toLowerCase(), provider);
48
+ }
49
+ createModel(providerName, options) {
50
+ const provider = this.providers.get(providerName.toLowerCase());
51
+ if (!provider) {
52
+ throw new Error(`AI provider '${providerName}' not found. Available providers: ${this.getAvailableProviders().join(', ')}`);
53
+ }
54
+ try {
55
+ const client = provider.createClient(options);
56
+ return provider.getModel(client, options.model);
57
+ }
58
+ catch (error) {
59
+ this.logger.error(`Failed to create model for provider ${providerName}:`, error);
60
+ throw error;
61
+ }
62
+ }
63
+ getAvailableProviders() {
64
+ return Array.from(this.providers.keys());
65
+ }
66
+ };
67
+ exports.AiProviderRegistryService = AiProviderRegistryService;
68
+ exports.AiProviderRegistryService = AiProviderRegistryService = AiProviderRegistryService_1 = __decorate([
69
+ (0, common_1.Injectable)(),
70
+ __metadata("design:paramtypes", [core_1.DiscoveryService,
71
+ core_1.Reflector])
72
+ ], AiProviderRegistryService);
73
+ //# sourceMappingURL=ai-provider-registry.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-provider-registry.service.js","sourceRoot":"","sources":["../../src/services/ai-provider-registry.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAkE;AAClE,uCAA2D;AAC3D,8CAK2B;AAGpB,IAAM,yBAAyB,iCAA/B,MAAM,yBAAyB;IAKjB;IACA;IALF,MAAM,GAAG,IAAI,eAAM,CAAC,2BAAyB,CAAC,IAAI,CAAC,CAAC;IACpD,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEpE,YACmB,gBAAkC,EAClC,SAAoB;QADpB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ,YAAY;QACV,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAEvD,SAAS;aACN,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;aACrD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;aACrC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACjC,8BAAqB,EACrB,QAAQ,CAAC,WAAW,CACrB,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,gBAAgB,CAAC,IAAY,EAAE,QAA6B;QAClE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,gCAAgC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,WAAW,CAAC,YAAoB,EAAE,OAA0B;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QAEhE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,gBAAgB,YAAY,qCAAqC,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3G,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,uCAAuC,YAAY,GAAG,EACtD,KAAK,CACN,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,qBAAqB;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AAhEY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;qCAM0B,uBAAgB;QACvB,gBAAS;GAN5B,yBAAyB,CAgErC"}
@@ -0,0 +1,4 @@
1
+ import { WorkflowBase } from '@loopstack/core';
2
+ export declare class AiToolsHelperService {
3
+ getTools(tools: string[], parent: WorkflowBase): Record<string, any> | undefined;
4
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AiToolsHelperService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let AiToolsHelperService = class AiToolsHelperService {
12
+ getTools(tools, parent) {
13
+ const toolDefinitions = {};
14
+ for (const toolName of tools) {
15
+ const tool = parent.getTool(toolName);
16
+ if (!tool) {
17
+ throw new Error(`Tool with name ${toolName} not available in Workflow context.`);
18
+ }
19
+ const inputSchema = tool.argsSchema;
20
+ if (inputSchema) {
21
+ toolDefinitions[toolName] = {
22
+ description: tool.config.description,
23
+ inputSchema,
24
+ };
25
+ }
26
+ }
27
+ return Object.keys(toolDefinitions).length ? toolDefinitions : undefined;
28
+ }
29
+ };
30
+ exports.AiToolsHelperService = AiToolsHelperService;
31
+ exports.AiToolsHelperService = AiToolsHelperService = __decorate([
32
+ (0, common_1.Injectable)()
33
+ ], AiToolsHelperService);
34
+ //# sourceMappingURL=ai-tools-helper.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-tools-helper.service.js","sourceRoot":"","sources":["../../src/services/ai-tools-helper.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAIrC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,QAAQ,CACN,KAAe,EACf,MAAoB;QAGpB,MAAM,eAAe,GAAwB,EAAE,CAAC;QAEhD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,qCAAqC,CAChE,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;YAEpC,IAAI,WAAW,EAAE,CAAC;gBAChB,eAAe,CAAC,QAAQ,CAAC,GAAG;oBAC1B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;oBACpC,WAAW;iBACL,CAAC;YACX,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;CACF,CAAA;AA5BY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;GACA,oBAAoB,CA4BhC"}