@xpert-ai/plugin-sdk 3.6.0-beta.10 → 3.6.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 (136) hide show
  1. package/.eslintrc.json +30 -0
  2. package/.swcrc +29 -0
  3. package/SCHEMA_SPECIFICATION.md +2 -0
  4. package/index.cjs.js +5 -649
  5. package/jest.config.ts +28 -0
  6. package/package.json +3 -3
  7. package/project.json +59 -0
  8. package/src/index.ts +11 -0
  9. package/src/lib/core/file-system.ts +113 -0
  10. package/src/lib/core/i18n.ts +31 -0
  11. package/src/lib/core/index.ts +4 -0
  12. package/src/lib/core/permissions.ts +97 -0
  13. package/src/lib/core/schema.ts +23 -0
  14. package/src/lib/integration/index.ts +3 -0
  15. package/src/lib/integration/strategy.decorator.ts +6 -0
  16. package/src/lib/integration/strategy.interface.ts +11 -0
  17. package/src/lib/integration/strategy.registry.ts +12 -0
  18. package/src/lib/logger.ts +18 -0
  19. package/src/lib/plugin-metadata.ts +20 -0
  20. package/src/lib/{plugin.hook.d.ts → plugin.hook.ts} +4 -0
  21. package/src/lib/plugin.interface.ts +67 -0
  22. package/src/lib/plugin.ts +32 -0
  23. package/src/lib/rag/image/index.ts +3 -0
  24. package/src/lib/rag/image/strategy.decorator.ts +9 -0
  25. package/src/lib/rag/image/strategy.interface.ts +37 -0
  26. package/src/lib/rag/image/strategy.registry.ts +17 -0
  27. package/src/lib/rag/index.ts +7 -0
  28. package/src/lib/rag/knowledge/index.ts +3 -0
  29. package/src/lib/rag/knowledge/knowledge-strategy.decorator.ts +6 -0
  30. package/src/lib/rag/knowledge/knowledge-strategy.interface.ts +15 -0
  31. package/src/lib/rag/knowledge/knowledge-strategy.registry.ts +12 -0
  32. package/src/lib/rag/retriever/index.ts +3 -0
  33. package/src/lib/rag/retriever/strategy.decorator.ts +9 -0
  34. package/src/lib/rag/retriever/strategy.interface.ts +32 -0
  35. package/src/lib/rag/retriever/strategy.registry.ts +12 -0
  36. package/src/lib/rag/source/index.ts +3 -0
  37. package/src/lib/rag/source/strategy.decorator.ts +9 -0
  38. package/src/lib/rag/source/strategy.interface.ts +36 -0
  39. package/src/lib/rag/source/strategy.registry.ts +17 -0
  40. package/src/lib/rag/textsplitter/index.ts +3 -0
  41. package/src/lib/rag/textsplitter/strategy.decorator.ts +6 -0
  42. package/src/lib/rag/textsplitter/strategy.interface.ts +28 -0
  43. package/src/lib/rag/textsplitter/strategy.registry.ts +17 -0
  44. package/src/lib/rag/transformer/index.ts +3 -0
  45. package/src/lib/rag/transformer/strategy.decorator.ts +9 -0
  46. package/src/lib/rag/transformer/strategy.interface.ts +34 -0
  47. package/src/lib/rag/transformer/strategy.registry.ts +14 -0
  48. package/src/lib/rag/types.ts +76 -0
  49. package/src/lib/strategy.ts +37 -0
  50. package/src/lib/toolset/builtin.ts +111 -0
  51. package/src/lib/toolset/index.ts +5 -0
  52. package/src/lib/toolset/strategy.decorator.ts +9 -0
  53. package/src/lib/toolset/strategy.interface.ts +32 -0
  54. package/src/lib/toolset/strategy.registry.ts +17 -0
  55. package/src/lib/toolset/toolset.ts +76 -0
  56. package/src/lib/types.ts +47 -0
  57. package/src/lib/vectorstore/index.ts +3 -0
  58. package/src/lib/vectorstore/strategy.decorator.ts +6 -0
  59. package/src/lib/vectorstore/strategy.interface.ts +25 -0
  60. package/src/lib/vectorstore/strategy.registry.ts +17 -0
  61. package/src/lib/workflow/index.ts +2 -0
  62. package/src/lib/workflow/node/index.ts +3 -0
  63. package/src/lib/workflow/node/strategy.decorator.ts +9 -0
  64. package/src/lib/workflow/node/strategy.interface.ts +51 -0
  65. package/src/lib/workflow/node/strategy.registry.ts +18 -0
  66. package/src/lib/workflow/trigger/index.ts +3 -0
  67. package/src/lib/workflow/trigger/strategy.decorator.ts +6 -0
  68. package/src/lib/workflow/trigger/strategy.interface.ts +27 -0
  69. package/src/lib/workflow/trigger/strategy.registry.ts +17 -0
  70. package/tsconfig.json +22 -0
  71. package/tsconfig.lib.json +10 -0
  72. package/tsconfig.spec.json +9 -0
  73. package/index.cjs.d.ts +0 -1
  74. package/index.esm.d.ts +0 -1
  75. package/index.esm.js +0 -616
  76. package/src/index.d.ts +0 -12
  77. package/src/lib/core/file-system.d.ts +0 -42
  78. package/src/lib/core/i18n.d.ts +0 -2
  79. package/src/lib/core/index.d.ts +0 -4
  80. package/src/lib/core/permissions.d.ts +0 -74
  81. package/src/lib/core/schema.d.ts +0 -22
  82. package/src/lib/integration/index.d.ts +0 -3
  83. package/src/lib/integration/strategy.decorator.d.ts +0 -2
  84. package/src/lib/integration/strategy.interface.d.ts +0 -9
  85. package/src/lib/integration/strategy.registry.d.ts +0 -6
  86. package/src/lib/knowledge/index.d.ts +0 -3
  87. package/src/lib/knowledge/knowledge-strategy.decorator.d.ts +0 -2
  88. package/src/lib/knowledge/knowledge-strategy.interface.d.ts +0 -15
  89. package/src/lib/knowledge/knowledge-strategy.registry.d.ts +0 -12
  90. package/src/lib/logger.d.ts +0 -2
  91. package/src/lib/plugin-metadata.d.ts +0 -17
  92. package/src/lib/plugin.d.ts +0 -8
  93. package/src/lib/plugin.interface.d.ts +0 -59
  94. package/src/lib/rag/image/index.d.ts +0 -3
  95. package/src/lib/rag/image/strategy.decorator.d.ts +0 -5
  96. package/src/lib/rag/image/strategy.interface.d.ts +0 -32
  97. package/src/lib/rag/image/strategy.registry.d.ts +0 -6
  98. package/src/lib/rag/index.d.ts +0 -6
  99. package/src/lib/rag/retriever/index.d.ts +0 -3
  100. package/src/lib/rag/retriever/strategy.decorator.d.ts +0 -5
  101. package/src/lib/rag/retriever/strategy.interface.d.ts +0 -30
  102. package/src/lib/rag/retriever/strategy.registry.d.ts +0 -6
  103. package/src/lib/rag/source/index.d.ts +0 -3
  104. package/src/lib/rag/source/strategy.decorator.d.ts +0 -5
  105. package/src/lib/rag/source/strategy.interface.d.ts +0 -36
  106. package/src/lib/rag/source/strategy.registry.d.ts +0 -6
  107. package/src/lib/rag/textsplitter/index.d.ts +0 -3
  108. package/src/lib/rag/textsplitter/strategy.decorator.d.ts +0 -2
  109. package/src/lib/rag/textsplitter/strategy.interface.d.ts +0 -24
  110. package/src/lib/rag/textsplitter/strategy.registry.d.ts +0 -6
  111. package/src/lib/rag/transformer/index.d.ts +0 -3
  112. package/src/lib/rag/transformer/strategy.decorator.d.ts +0 -5
  113. package/src/lib/rag/transformer/strategy.interface.d.ts +0 -26
  114. package/src/lib/rag/transformer/strategy.registry.d.ts +0 -6
  115. package/src/lib/rag/types.d.ts +0 -37
  116. package/src/lib/strategy.d.ts +0 -12
  117. package/src/lib/toolset/builtin.d.ts +0 -54
  118. package/src/lib/toolset/index.d.ts +0 -5
  119. package/src/lib/toolset/strategy.decorator.d.ts +0 -5
  120. package/src/lib/toolset/strategy.interface.d.ts +0 -28
  121. package/src/lib/toolset/strategy.registry.d.ts +0 -6
  122. package/src/lib/toolset/toolset.d.ts +0 -53
  123. package/src/lib/types.d.ts +0 -47
  124. package/src/lib/vectorstore/index.d.ts +0 -3
  125. package/src/lib/vectorstore/strategy.decorator.d.ts +0 -2
  126. package/src/lib/vectorstore/strategy.interface.d.ts +0 -24
  127. package/src/lib/vectorstore/strategy.registry.d.ts +0 -6
  128. package/src/lib/workflow/index.d.ts +0 -2
  129. package/src/lib/workflow/node/index.d.ts +0 -3
  130. package/src/lib/workflow/node/strategy.decorator.d.ts +0 -5
  131. package/src/lib/workflow/node/strategy.interface.d.ts +0 -40
  132. package/src/lib/workflow/node/strategy.registry.d.ts +0 -9
  133. package/src/lib/workflow/trigger/index.d.ts +0 -3
  134. package/src/lib/workflow/trigger/strategy.decorator.d.ts +0 -2
  135. package/src/lib/workflow/trigger/strategy.interface.d.ts +0 -22
  136. package/src/lib/workflow/trigger/strategy.registry.d.ts +0 -6
package/index.cjs.js CHANGED
@@ -1,650 +1,6 @@
1
- 'use strict';
2
-
3
- var common = require('@nestjs/common');
4
- var constants = require('@nestjs/common/constants');
5
- var lodashEs = require('lodash-es');
6
- var core = require('@nestjs/core');
7
- var fs = require('fs');
8
- var http = require('http');
9
- var https = require('https');
10
- var tools = require('@langchain/core/tools');
11
- var zod = require('zod');
12
- var fsPromises = require('fs/promises');
13
- var path = require('path');
14
- var i18next = require('i18next');
15
- var FsBackend = require('i18next-fs-backend');
16
-
17
1
  /**
18
- * Metadata keys used in plugins for defining various aspects like entities, subscribers, and configurations.
19
- */ const PLUGIN_METADATA = {
20
- /**
21
- * Key representing the entities registered within the plugin.
22
- */ ENTITIES: 'entities',
23
- /**
24
- * Key representing event subscribers within the plugin.
25
- */ SUBSCRIBERS: 'subscribers'
26
- };
27
-
28
- /**
29
- * Decorator function for extending NestJS features with additional metadata.
30
- *
31
- * @param pluginMetadata Metadata to be applied to the target class.
32
- * @returns Class decorator function.
33
- */ function XpertServerPlugin(pluginMetadata) {
34
- return (targetClass)=>{
35
- // Iterate over properties in PLUGIN_METADATA
36
- for (const metadataProperty of Object.values(PLUGIN_METADATA)){
37
- const property = metadataProperty;
38
- // Check if the property exists in pluginMetadata and is not undefined
39
- if (property in pluginMetadata && pluginMetadata[property] !== undefined) {
40
- // Set metadata on the target class using Reflect
41
- Reflect.defineMetadata(property, pluginMetadata[property] || [], targetClass);
42
- }
43
- }
44
- // Pick relevant metadata from pluginMetadata based on MODULE_METADATA values
45
- const metadata = lodashEs.pick(pluginMetadata, Object.values(constants.MODULE_METADATA));
46
- // Apply the Module decorator with the picked metadata
47
- common.Module(metadata)(targetClass);
48
- };
49
- }
50
-
51
- function _extends() {
52
- _extends = Object.assign || function assign(target) {
53
- for(var i = 1; i < arguments.length; i++){
54
- var source = arguments[i];
55
- for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
56
- }
57
- return target;
58
- };
59
- return _extends.apply(this, arguments);
60
- }
61
-
62
- function createPluginLogger(scope, baseMeta = {}) {
63
- const nestLogger = new common.Logger(scope);
64
- const wrap = (level, msg, meta)=>{
65
- var _nestLogger_level;
66
- const payload = meta ? _extends({}, baseMeta, meta) : baseMeta;
67
- (_nestLogger_level = // 保持与 Nest Logger 接口对齐
68
- nestLogger[level]) == null ? void 0 : _nestLogger_level.call(nestLogger, msg + (Object.keys(payload).length ? ` ${JSON.stringify(payload)}` : ''));
69
- };
70
- return {
71
- child (meta) {
72
- return createPluginLogger(scope, _extends({}, baseMeta, meta));
73
- },
74
- debug: (msg, meta)=>wrap('debug', msg, meta),
75
- log: (msg, meta)=>wrap('log', msg, meta),
76
- warn: (msg, meta)=>wrap('warn', msg, meta),
77
- error: (msg, meta)=>wrap('error', msg, meta)
78
- };
79
- }
80
-
81
- const KNOWLEDGE_STRATEGY = 'KNOWLEDGE_STRATEGY';
82
- const KnowledgeStrategyKey = (provider)=>common.SetMetadata(KNOWLEDGE_STRATEGY, provider);
83
-
84
- function __decorate(decorators, target, key, desc) {
85
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
86
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
87
- 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;
88
- return c > 3 && r && Object.defineProperty(target, key, r), r;
89
- }
90
- function __metadata(metadataKey, metadataValue) {
91
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
92
- }
93
- typeof SuppressedError === "function" ? SuppressedError : function _SuppressedError(error, suppressed, message) {
94
- var e = new Error(message);
95
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
96
- };
97
-
98
- exports.KnowledgeStrategyRegistry = class KnowledgeStrategyRegistry {
99
- onModuleInit() {
100
- const providers = this.discoveryService.getProviders();
101
- for (const wrapper of providers){
102
- const { instance } = wrapper;
103
- if (!instance) continue;
104
- const type = this.reflector.get(KNOWLEDGE_STRATEGY, instance.constructor);
105
- if (type) {
106
- this.strategies.set(type, instance);
107
- }
108
- }
109
- }
110
- get(type) {
111
- const strategy = this.strategies.get(type);
112
- if (!strategy) {
113
- throw new Error(`No strategy found for type ${type}`);
114
- }
115
- return strategy;
116
- }
117
- constructor(discoveryService, reflector){
118
- this.discoveryService = discoveryService;
119
- this.reflector = reflector;
120
- this.strategies = new Map();
121
- }
122
- };
123
- exports.KnowledgeStrategyRegistry = __decorate([
124
- common.Injectable(),
125
- __metadata("design:type", Function),
126
- __metadata("design:paramtypes", [
127
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
128
- typeof core.Reflector === "undefined" ? Object : core.Reflector
129
- ])
130
- ], exports.KnowledgeStrategyRegistry);
131
-
132
- const INTEGRATION_STRATEGY = 'INTEGRATION_STRATEGY';
133
- const IntegrationStrategyKey = (provider)=>common.SetMetadata(INTEGRATION_STRATEGY, provider);
134
-
135
- class BaseStrategyRegistry {
136
- onModuleInit() {
137
- const providers = this.discoveryService.getProviders();
138
- for (const wrapper of providers){
139
- const { instance } = wrapper;
140
- if (!instance) continue;
141
- const type = this.reflector.get(this.strategyKey, instance.constructor);
142
- if (type) {
143
- this.strategies.set(type, instance);
144
- }
145
- }
146
- }
147
- get(type) {
148
- const strategy = this.strategies.get(type);
149
- if (!strategy) {
150
- throw new Error(`No strategy found for type ${type}`);
151
- }
152
- return strategy;
153
- }
154
- list() {
155
- return Array.from(this.strategies.values());
156
- }
157
- constructor(strategyKey, discoveryService, reflector){
158
- this.strategyKey = strategyKey;
159
- this.discoveryService = discoveryService;
160
- this.reflector = reflector;
161
- this.strategies = new Map();
162
- }
163
- }
164
-
165
- exports.IntegrationStrategyRegistry = class IntegrationStrategyRegistry extends BaseStrategyRegistry {
166
- constructor(discoveryService, reflector){
167
- super(INTEGRATION_STRATEGY, discoveryService, reflector);
168
- }
169
- };
170
- exports.IntegrationStrategyRegistry = __decorate([
171
- common.Injectable(),
172
- __metadata("design:type", Function),
173
- __metadata("design:paramtypes", [
174
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
175
- typeof core.Reflector === "undefined" ? Object : core.Reflector
176
- ])
177
- ], exports.IntegrationStrategyRegistry);
178
-
179
- const WORKFLOW_TRIGGER_STRATEGY = 'WORKFLOW_TRIGGER_STRATEGY';
180
- const WorkflowTriggerStrategy = (provider)=>common.SetMetadata(WORKFLOW_TRIGGER_STRATEGY, provider);
181
-
182
- exports.WorkflowTriggerRegistry = class WorkflowTriggerRegistry extends BaseStrategyRegistry {
183
- constructor(discoveryService, reflector){
184
- super(WORKFLOW_TRIGGER_STRATEGY, discoveryService, reflector);
185
- }
186
- };
187
- exports.WorkflowTriggerRegistry = __decorate([
188
- common.Injectable(),
189
- __metadata("design:type", Function),
190
- __metadata("design:paramtypes", [
191
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
192
- typeof core.Reflector === "undefined" ? Object : core.Reflector
193
- ])
194
- ], exports.WorkflowTriggerRegistry);
195
-
196
- const WORKFLOW_NODE_STRATEGY = 'WORKFLOW_NODE_STRATEGY';
197
- /**
198
- * Decorator to mark a provider as a Workflow Node Strategy
199
- */ const WorkflowNodeStrategy = (provider)=>common.SetMetadata(WORKFLOW_NODE_STRATEGY, provider);
200
-
201
- exports.WorkflowNodeRegistry = class WorkflowNodeRegistry extends BaseStrategyRegistry {
202
- constructor(discoveryService, reflector){
203
- super(WORKFLOW_NODE_STRATEGY, discoveryService, reflector);
204
- }
205
- };
206
- exports.WorkflowNodeRegistry = __decorate([
207
- common.Injectable(),
208
- __metadata("design:type", Function),
209
- __metadata("design:paramtypes", [
210
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
211
- typeof core.Reflector === "undefined" ? Object : core.Reflector
212
- ])
213
- ], exports.WorkflowNodeRegistry);
214
-
215
- const VECTOR_STORE_STRATEGY = 'VECTOR_STORE_STRATEGY';
216
- const VectorStoreStrategy = (provider)=>common.SetMetadata(VECTOR_STORE_STRATEGY, provider);
217
-
218
- exports.VectorStoreRegistry = class VectorStoreRegistry extends BaseStrategyRegistry {
219
- constructor(discoveryService, reflector){
220
- super(VECTOR_STORE_STRATEGY, discoveryService, reflector);
221
- }
222
- };
223
- exports.VectorStoreRegistry = __decorate([
224
- common.Injectable(),
225
- __metadata("design:type", Function),
226
- __metadata("design:paramtypes", [
227
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
228
- typeof core.Reflector === "undefined" ? Object : core.Reflector
229
- ])
230
- ], exports.VectorStoreRegistry);
231
-
232
- const TEXT_SPLITTER_STRATEGY = 'TEXT_SPLITTER_STRATEGY';
233
- const TextSplitterStrategy = (provider)=>common.SetMetadata(TEXT_SPLITTER_STRATEGY, provider);
234
-
235
- exports.TextSplitterRegistry = class TextSplitterRegistry extends BaseStrategyRegistry {
236
- constructor(discoveryService, reflector){
237
- super(TEXT_SPLITTER_STRATEGY, discoveryService, reflector);
238
- }
239
- };
240
- exports.TextSplitterRegistry = __decorate([
241
- common.Injectable(),
242
- __metadata("design:type", Function),
243
- __metadata("design:paramtypes", [
244
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
245
- typeof core.Reflector === "undefined" ? Object : core.Reflector
246
- ])
247
- ], exports.TextSplitterRegistry);
248
-
249
- const DOCUMENT_SOURCE_STRATEGY = 'DOCUMENT_SOURCE_STRATEGY';
250
- /**
251
- * Decorator to mark a provider as a Document Source Strategy
252
- */ const DocumentSourceStrategy = (provider)=>common.SetMetadata(DOCUMENT_SOURCE_STRATEGY, provider);
253
-
254
- exports.DocumentSourceRegistry = class DocumentSourceRegistry extends BaseStrategyRegistry {
255
- constructor(discoveryService, reflector){
256
- super(DOCUMENT_SOURCE_STRATEGY, discoveryService, reflector);
257
- }
258
- };
259
- exports.DocumentSourceRegistry = __decorate([
260
- common.Injectable(),
261
- __metadata("design:type", Function),
262
- __metadata("design:paramtypes", [
263
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
264
- typeof core.Reflector === "undefined" ? Object : core.Reflector
265
- ])
266
- ], exports.DocumentSourceRegistry);
267
-
268
- const DOCUMENT_TRANSFORMER_STRATEGY = 'DOCUMENT_TRANSFORMER_STRATEGY';
269
- /**
270
- * Decorator to mark a provider as a Document Transformer Strategy
271
- */ const DocumentTransformerStrategy = (provider)=>common.SetMetadata(DOCUMENT_TRANSFORMER_STRATEGY, provider);
272
-
273
- exports.DocumentTransformerRegistry = class DocumentTransformerRegistry extends BaseStrategyRegistry {
274
- constructor(discoveryService, reflector){
275
- super(DOCUMENT_TRANSFORMER_STRATEGY, discoveryService, reflector);
276
- }
277
- };
278
- exports.DocumentTransformerRegistry = __decorate([
279
- common.Injectable(),
280
- __metadata("design:type", Function),
281
- __metadata("design:paramtypes", [
282
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
283
- typeof core.Reflector === "undefined" ? Object : core.Reflector
284
- ])
285
- ], exports.DocumentTransformerRegistry);
286
-
287
- const RETRIEVER_STRATEGY = 'RETRIEVER_STRATEGY';
288
- /**
289
- * Decorator to mark a provider as a Retriever Strategy
290
- */ const RetrieverStrategy = (provider)=>common.SetMetadata(RETRIEVER_STRATEGY, provider);
291
-
292
- exports.RetrieverRegistry = class RetrieverRegistry extends BaseStrategyRegistry {
293
- constructor(discoveryService, reflector){
294
- super(RETRIEVER_STRATEGY, discoveryService, reflector);
295
- }
296
- };
297
- exports.RetrieverRegistry = __decorate([
298
- common.Injectable(),
299
- __metadata("design:type", Function),
300
- __metadata("design:paramtypes", [
301
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
302
- typeof core.Reflector === "undefined" ? Object : core.Reflector
303
- ])
304
- ], exports.RetrieverRegistry);
305
-
306
- /**
307
- * Merge parent chunks with their child chunks based on metadata (parentId and chunkId)
308
- * @param chunks
309
- * @param children
310
- * @returns
311
- */ function mergeParentChildChunks(chunks, children // Child chunks
312
- ) {
313
- const chunkMap = new Map();
314
- for (const chunk of chunks){
315
- chunkMap.set(chunk.metadata.chunkId, chunk);
316
- }
317
- for (const child of children){
318
- if (!child.metadata.parentId) {
319
- if (chunkMap.has(child.metadata.chunkId)) {
320
- console.warn(`Duplicate chunkId found: ${child.metadata.chunkId}, skipping...`);
321
- continue;
322
- }
323
- chunkMap.set(child.metadata.chunkId, child);
324
- continue;
325
- }
326
- const parent = chunkMap.get(child.metadata.parentId);
327
- if (parent) {
328
- if (!parent.metadata.children) {
329
- parent.metadata.children = [];
330
- }
331
- parent.metadata.children.push(child);
332
- }
333
- }
334
- return Array.from(chunkMap.values());
335
- }
336
- function isRemoteFile(path) {
337
- return path.startsWith('http://') || path.startsWith('https://') || path.startsWith('ftp://');
338
- }
339
- async function downloadRemoteFile(url, dest) {
340
- return new Promise((resolve, reject)=>{
341
- const file = fs.createWriteStream(dest);
342
- const client = url.startsWith('https') ? https : http;
343
- const request = client.get(url, (response)=>{
344
- if (response.statusCode !== 200) {
345
- reject(new Error(`Failed to get '${url}' (${response.statusCode})`));
346
- return;
347
- }
348
- response.pipe(file);
349
- });
350
- file.on('finish', ()=>{
351
- file.close();
352
- resolve(dest);
353
- });
354
- request.on('error', (err)=>{
355
- fs.unlink(dest, ()=>reject(err));
356
- });
357
- file.on('error', (err)=>{
358
- fs.unlink(dest, ()=>reject(err));
359
- });
360
- });
361
- }
362
-
363
- const IMAGE_UNDERSTANDING_STRATEGY = 'IMAGE_UNDERSTANDING_STRATEGY';
364
- /**
365
- * Decorator to mark a provider as an Image Understanding Strategy
366
- */ const ImageUnderstandingStrategy = (provider)=>common.SetMetadata(IMAGE_UNDERSTANDING_STRATEGY, provider);
367
-
368
- exports.ImageUnderstandingRegistry = class ImageUnderstandingRegistry extends BaseStrategyRegistry {
369
- constructor(discoveryService, reflector){
370
- super(IMAGE_UNDERSTANDING_STRATEGY, discoveryService, reflector);
371
- }
372
- };
373
- exports.ImageUnderstandingRegistry = __decorate([
374
- common.Injectable(),
375
- __metadata("design:type", Function),
376
- __metadata("design:paramtypes", [
377
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
378
- typeof core.Reflector === "undefined" ? Object : core.Reflector
379
- ])
380
- ], exports.ImageUnderstandingRegistry);
381
-
382
- const TOOLSET_STRATEGY = 'TOOLSET_STRATEGY';
383
- /**
384
- * Decorator to mark a provider as a Toolset Strategy
385
- */ const ToolsetStrategy = (provider)=>common.SetMetadata(TOOLSET_STRATEGY, provider);
386
-
387
- exports.ToolsetRegistry = class ToolsetRegistry extends BaseStrategyRegistry {
388
- constructor(discoveryService, reflector){
389
- super(TOOLSET_STRATEGY, discoveryService, reflector);
390
- }
391
- };
392
- exports.ToolsetRegistry = __decorate([
393
- common.Injectable(),
394
- __metadata("design:type", Function),
395
- __metadata("design:paramtypes", [
396
- typeof core.DiscoveryService === "undefined" ? Object : core.DiscoveryService,
397
- typeof core.Reflector === "undefined" ? Object : core.Reflector
398
- ])
399
- ], exports.ToolsetRegistry);
400
-
401
- /**
402
- * Base ability for all toolsets
403
- */ class BaseToolset extends tools.BaseToolkit {
404
- /**
405
- * Async init tools
406
- *
407
- * @returns
408
- */ async initTools() {
409
- return this.tools;
410
- }
411
- /**
412
- * Get one tool
413
- *
414
- * @param toolName
415
- * @returns
416
- */ getTool(toolName) {
417
- var _this_getTools;
418
- return (_this_getTools = this.getTools()) == null ? void 0 : _this_getTools.find((tool)=>tool.name === toolName);
419
- }
420
- /**
421
- * Get state variables config
422
- *
423
- * @returns State variables
424
- */ async getVariables() {
425
- return null;
426
- }
427
- /**
428
- * Close all (connections).
429
- */ async close() {
430
- //
431
- }
432
- constructor(params){
433
- super();
434
- this.params = params;
435
- }
436
- }
437
- class BaseTool extends tools.StructuredTool {
438
- constructor(...args){
439
- super(...args);
440
- this.schema = zod.z.object({
441
- input: zod.z.string().optional()
442
- }).transform((obj)=>obj.input);
443
- }
444
- }
445
-
446
- class BuiltinToolset extends BaseToolset {
447
- get tenantId() {
448
- var _this_params;
449
- return (_this_params = this.params) == null ? void 0 : _this_params.tenantId;
450
- }
451
- get organizationId() {
452
- var _this_params;
453
- return (_this_params = this.params) == null ? void 0 : _this_params.organizationId;
454
- }
455
- get commandBus() {
456
- var _this_params;
457
- return (_this_params = this.params) == null ? void 0 : _this_params.commandBus;
458
- }
459
- get queryBus() {
460
- var _this_params;
461
- return (_this_params = this.params) == null ? void 0 : _this_params.queryBus;
462
- }
463
- get xpertId() {
464
- var _this_params;
465
- return (_this_params = this.params) == null ? void 0 : _this_params.xpertId;
466
- }
467
- async validateCredentials(credentials) {
468
- await this._validateCredentials(credentials);
469
- }
470
- async _validateCredentials(credentials) {
471
- throw new Error('Method not implemented.');
472
- }
473
- getId() {
474
- var _this_toolset;
475
- return (_this_toolset = this.toolset) == null ? void 0 : _this_toolset.id;
476
- }
477
- getCredentials() {
478
- var _this_toolset;
479
- return (_this_toolset = this.toolset) == null ? void 0 : _this_toolset.credentials;
480
- }
481
- getToolTitle(name) {
482
- var _this_toolset_tools, _this_toolset, _this;
483
- const tool = (_this_toolset = this.toolset) == null ? void 0 : (_this_toolset_tools = _this_toolset.tools) == null ? void 0 : _this_toolset_tools.find((tool)=>tool.name === name);
484
- const identity = (_this = tool == null ? void 0 : tool.schema) == null ? void 0 : _this.identity;
485
- if (identity) {
486
- return identity.label;
487
- }
488
- return null;
489
- }
490
- /**
491
- * Get credentials schema
492
- *
493
- * @returns Credentials schema
494
- */ getCredentialsSchema() {
495
- return _extends({}, this.credentialsSchema);
496
- }
497
- /**
498
- * Get toolset entity
499
- *
500
- * @returns XpertToolset
501
- */ getToolset() {
502
- return this.toolset;
503
- }
504
- getName() {
505
- var _this_getToolset;
506
- return (_this_getToolset = this.getToolset()) == null ? void 0 : _this_getToolset.name;
507
- }
508
- constructor(providerName, toolset, params){
509
- super(params);
510
- this.providerName = providerName;
511
- this.toolset = toolset;
512
- this.params = params;
513
- this.logger = new common.Logger(this.constructor.name);
514
- }
515
- }
516
- BuiltinToolset.provider = '';
517
-
518
- /**
519
- * Restricted FileSystem based on granted permissions
520
- */ class XpFileSystem {
521
- /**
522
- * Check if operation is allowed
523
- */ ensureAllowed(op) {
524
- if (!this.allowedOps.has(op)) {
525
- throw new Error(`Permission denied: ${op} operation not allowed`);
526
- }
527
- }
528
- /**
529
- * Check if path is within scope
530
- */ ensureInScope(targetPath) {
531
- if (!this.scope || this.scope.length === 0) return;
532
- const resolved = path.resolve(targetPath);
533
- for (const s of this.scope){
534
- const absScope = path.resolve(s);
535
- if (resolved.startsWith(absScope)) return;
536
- }
537
- throw new Error(`Permission denied: path "${targetPath}" is out of scope`);
538
- }
539
- fullPath(filePath) {
540
- return path.join(this.basePath, filePath);
541
- }
542
- /**
543
- * Read file contents
544
- */ async readFile(filePath, encoding = 'utf-8') {
545
- this.ensureAllowed('read');
546
- const fullPath = this.fullPath(filePath);
547
- this.ensureInScope(fullPath);
548
- return await fsPromises.readFile(fullPath);
549
- }
550
- /**
551
- * Write file contents
552
- */ async writeFile(filePath, content) {
553
- this.ensureAllowed('write');
554
- const fullPath = this.fullPath(filePath);
555
- this.ensureInScope(fullPath);
556
- await fsPromises.mkdir(path.dirname(fullPath), {
557
- recursive: true
558
- });
559
- await fsPromises.writeFile(fullPath, content);
560
- const url = new URL(filePath, this.baseUrl);
561
- return url.href;
562
- }
563
- /**
564
- * Delete a file
565
- */ async deleteFile(filePath) {
566
- this.ensureAllowed('delete');
567
- this.ensureInScope(filePath);
568
- await fsPromises.unlink(filePath);
569
- }
570
- /**
571
- * List directory contents
572
- */ async listDir(dirPath) {
573
- this.ensureAllowed('list');
574
- this.ensureInScope(dirPath);
575
- return fsPromises.readdir(dirPath);
576
- }
577
- /**
578
- * Utility: check if a file or directory exists
579
- */ async exists(targetPath) {
580
- try {
581
- await fsPromises.access(targetPath);
582
- return true;
583
- } catch (e) {
584
- return false;
585
- }
586
- }
587
- constructor(permission, basePath, baseUrl){
588
- this.basePath = basePath;
589
- this.baseUrl = baseUrl;
590
- this.allowedOps = new Set(permission.operations);
591
- this.scope = permission.scope;
592
- }
593
- }
594
-
595
- async function createI18nInstance(pluginDir, language) {
596
- const instance = i18next.createInstance();
597
- const i18nDir = path.join(pluginDir, 'i18n');
598
- // detect available languages dynamically
599
- const lngs = fs.readdirSync(i18nDir).filter((f)=>f.endsWith('.json')).map((f)=>f.replace('.json', ''));
600
- await instance.use(FsBackend).init({
601
- lng: language,
602
- fallbackLng: 'en',
603
- preload: lngs,
604
- ns: [
605
- 'default'
606
- ],
607
- defaultNS: 'default',
608
- backend: {
609
- loadPath: path.join(i18nDir, '{{lng}}.json')
610
- },
611
- interpolation: {
612
- escapeValue: false
613
- }
614
- });
615
- return instance;
616
- }
617
-
618
- exports.BaseTool = BaseTool;
619
- exports.BaseToolset = BaseToolset;
620
- exports.BuiltinToolset = BuiltinToolset;
621
- exports.DOCUMENT_SOURCE_STRATEGY = DOCUMENT_SOURCE_STRATEGY;
622
- exports.DOCUMENT_TRANSFORMER_STRATEGY = DOCUMENT_TRANSFORMER_STRATEGY;
623
- exports.DocumentSourceStrategy = DocumentSourceStrategy;
624
- exports.DocumentTransformerStrategy = DocumentTransformerStrategy;
625
- exports.IMAGE_UNDERSTANDING_STRATEGY = IMAGE_UNDERSTANDING_STRATEGY;
626
- exports.INTEGRATION_STRATEGY = INTEGRATION_STRATEGY;
627
- exports.ImageUnderstandingStrategy = ImageUnderstandingStrategy;
628
- exports.IntegrationStrategyKey = IntegrationStrategyKey;
629
- exports.KNOWLEDGE_STRATEGY = KNOWLEDGE_STRATEGY;
630
- exports.KnowledgeStrategyKey = KnowledgeStrategyKey;
631
- exports.PLUGIN_METADATA = PLUGIN_METADATA;
632
- exports.RETRIEVER_STRATEGY = RETRIEVER_STRATEGY;
633
- exports.RetrieverStrategy = RetrieverStrategy;
634
- exports.TEXT_SPLITTER_STRATEGY = TEXT_SPLITTER_STRATEGY;
635
- exports.TOOLSET_STRATEGY = TOOLSET_STRATEGY;
636
- exports.TextSplitterStrategy = TextSplitterStrategy;
637
- exports.ToolsetStrategy = ToolsetStrategy;
638
- exports.VECTOR_STORE_STRATEGY = VECTOR_STORE_STRATEGY;
639
- exports.VectorStoreStrategy = VectorStoreStrategy;
640
- exports.WORKFLOW_NODE_STRATEGY = WORKFLOW_NODE_STRATEGY;
641
- exports.WORKFLOW_TRIGGER_STRATEGY = WORKFLOW_TRIGGER_STRATEGY;
642
- exports.WorkflowNodeStrategy = WorkflowNodeStrategy;
643
- exports.WorkflowTriggerStrategy = WorkflowTriggerStrategy;
644
- exports.XpFileSystem = XpFileSystem;
645
- exports.XpertServerPlugin = XpertServerPlugin;
646
- exports.createI18nInstance = createI18nInstance;
647
- exports.createPluginLogger = createPluginLogger;
648
- exports.downloadRemoteFile = downloadRemoteFile;
649
- exports.isRemoteFile = isRemoteFile;
650
- exports.mergeParentChildChunks = mergeParentChildChunks;
2
+ * In order to solve the problem that the `index.cjs.js` cannot be found during the development phase
3
+ * when introducing external plugins (`@xpert-ai/plugin-xxx`) and it referencing `@xpert-ai/plugin-sdk`.
4
+ * - Before using external plugins, you need to nx build this library.
5
+ */
6
+ module.exports = require('./dist/index.cjs.js')
package/jest.config.ts ADDED
@@ -0,0 +1,28 @@
1
+ /* eslint-disable */
2
+ import { readFileSync } from 'fs'
3
+
4
+ // Reading the SWC compilation config and remove the "exclude"
5
+ // for the test files to be compiled by SWC
6
+ const { exclude: _, ...swcJestConfig } = JSON.parse(readFileSync(`${__dirname}/.swcrc`, 'utf-8'))
7
+
8
+ // disable .swcrc look-up by SWC core because we're passing in swcJestConfig ourselves.
9
+ // If we do not disable this, SWC Core will read .swcrc and won't transform our test files due to "exclude"
10
+ if (swcJestConfig.swcrc === undefined) {
11
+ swcJestConfig.swcrc = false
12
+ }
13
+
14
+ // Uncomment if using global setup/teardown files being transformed via swc
15
+ // https://nx.dev/packages/jest/documents/overview#global-setup/teardown-with-nx-libraries
16
+ // jest needs EsModule Interop to find the default exported setup/teardown functions
17
+ // swcJestConfig.module.noInterop = false;
18
+
19
+ export default {
20
+ displayName: 'plugin-sdk',
21
+ preset: '../../jest.preset.js',
22
+ transform: {
23
+ '^.+\\.[tj]s$': ['@swc/jest', swcJestConfig]
24
+ },
25
+ moduleFileExtensions: ['ts', 'js', 'html'],
26
+ testEnvironment: 'node',
27
+ coverageDirectory: '../../coverage/packages/plugin-sdk'
28
+ }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@xpert-ai/plugin-sdk",
3
- "version": "3.6.0-beta.10",
3
+ "version": "3.6.0",
4
4
  "license": "AGPL-3.0",
5
5
  "dependencies": {},
6
- "main": "./index.cjs.js",
7
- "module": "./index.esm.js",
6
+ "main": "./index.cjs",
7
+ "module": "./index.js",
8
8
  "publishConfig": {
9
9
  "access": "public"
10
10
  },