@xpert-ai/plugin-sdk 3.6.0 → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/index.cjs.d.ts +1 -0
  2. package/index.cjs.js +45273 -5
  3. package/index.esm.d.ts +1 -0
  4. package/index.esm.js +45192 -0
  5. package/package.json +3 -3
  6. package/src/index.d.ts +12 -0
  7. package/src/lib/ai-model/abstract-provider.d.ts +41 -0
  8. package/src/lib/ai-model/ai-model-provider.decorator.d.ts +2 -0
  9. package/src/lib/ai-model/ai-model-provider.interface.d.ts +42 -0
  10. package/src/lib/ai-model/ai-model-provider.registry.d.ts +6 -0
  11. package/src/lib/ai-model/ai-model.d.ts +33 -0
  12. package/src/lib/ai-model/entities/defaults.d.ts +3 -0
  13. package/src/lib/ai-model/entities/index.d.ts +2 -0
  14. package/src/lib/ai-model/entities/model_entities.d.ts +14 -0
  15. package/src/lib/ai-model/errors.d.ts +5 -0
  16. package/src/lib/ai-model/index.d.ts +8 -0
  17. package/src/lib/ai-model/llm.d.ts +49 -0
  18. package/src/lib/ai-model/openai-compatible/completions.d.ts +23 -0
  19. package/src/lib/ai-model/openai-compatible/index.d.ts +3 -0
  20. package/src/lib/ai-model/openai-compatible/rerank.d.ts +20 -0
  21. package/src/lib/ai-model/openai-compatible/speech2text.d.ts +17 -0
  22. package/src/lib/ai-model/types/index.d.ts +11 -0
  23. package/src/lib/ai-model/types/model.d.ts +43 -0
  24. package/src/lib/ai-model/types/rerank.d.ts +20 -0
  25. package/src/lib/ai-model/types/speech2text.d.ts +3 -0
  26. package/src/lib/ai-model/types/text-embedding-model.d.ts +7 -0
  27. package/src/lib/ai-model/types/tts.d.ts +5 -0
  28. package/src/lib/core/file-system.d.ts +55 -0
  29. package/src/lib/core/i18n.d.ts +2 -0
  30. package/src/lib/core/index.d.ts +5 -0
  31. package/src/lib/core/permissions.d.ts +74 -0
  32. package/src/lib/core/schema.d.ts +22 -0
  33. package/src/lib/core/utils.d.ts +12 -0
  34. package/src/lib/integration/index.d.ts +3 -0
  35. package/src/lib/integration/strategy.decorator.d.ts +2 -0
  36. package/src/lib/integration/strategy.interface.d.ts +9 -0
  37. package/src/lib/integration/strategy.registry.d.ts +6 -0
  38. package/src/lib/logger.d.ts +2 -0
  39. package/src/lib/plugin-metadata.d.ts +17 -0
  40. package/src/lib/plugin.d.ts +8 -0
  41. package/src/lib/{plugin.hook.ts → plugin.hook.d.ts} +0 -4
  42. package/src/lib/plugin.interface.d.ts +59 -0
  43. package/src/lib/rag/image/index.d.ts +3 -0
  44. package/src/lib/rag/image/strategy.decorator.d.ts +5 -0
  45. package/src/lib/rag/image/strategy.interface.d.ts +31 -0
  46. package/src/lib/rag/image/strategy.registry.d.ts +6 -0
  47. package/src/lib/rag/index.d.ts +7 -0
  48. package/src/lib/rag/knowledge/index.d.ts +3 -0
  49. package/src/lib/rag/knowledge/knowledge-strategy.decorator.d.ts +2 -0
  50. package/src/lib/rag/knowledge/knowledge-strategy.interface.d.ts +15 -0
  51. package/src/lib/rag/knowledge/knowledge-strategy.registry.d.ts +6 -0
  52. package/src/lib/rag/retriever/index.d.ts +3 -0
  53. package/src/lib/rag/retriever/strategy.decorator.d.ts +5 -0
  54. package/src/lib/rag/retriever/strategy.interface.d.ts +30 -0
  55. package/src/lib/rag/retriever/strategy.registry.d.ts +6 -0
  56. package/src/lib/rag/source/index.d.ts +3 -0
  57. package/src/lib/rag/source/strategy.decorator.d.ts +5 -0
  58. package/src/lib/rag/source/strategy.interface.d.ts +36 -0
  59. package/src/lib/rag/source/strategy.registry.d.ts +6 -0
  60. package/src/lib/rag/textsplitter/index.d.ts +3 -0
  61. package/src/lib/rag/textsplitter/strategy.decorator.d.ts +2 -0
  62. package/src/lib/rag/textsplitter/strategy.interface.d.ts +23 -0
  63. package/src/lib/rag/textsplitter/strategy.registry.d.ts +6 -0
  64. package/src/lib/rag/transformer/index.d.ts +3 -0
  65. package/src/lib/rag/transformer/strategy.decorator.d.ts +5 -0
  66. package/src/lib/rag/transformer/strategy.interface.d.ts +26 -0
  67. package/src/lib/rag/transformer/strategy.registry.d.ts +6 -0
  68. package/src/lib/rag/types.d.ts +18 -0
  69. package/src/lib/strategy.d.ts +12 -0
  70. package/src/lib/toolset/builtin.d.ts +54 -0
  71. package/src/lib/toolset/index.d.ts +5 -0
  72. package/src/lib/toolset/strategy.decorator.d.ts +5 -0
  73. package/src/lib/toolset/strategy.interface.d.ts +28 -0
  74. package/src/lib/toolset/strategy.registry.d.ts +6 -0
  75. package/src/lib/toolset/toolset.d.ts +53 -0
  76. package/src/lib/types.d.ts +47 -0
  77. package/src/lib/vectorstore/index.d.ts +3 -0
  78. package/src/lib/vectorstore/strategy.decorator.d.ts +2 -0
  79. package/src/lib/vectorstore/strategy.interface.d.ts +24 -0
  80. package/src/lib/vectorstore/strategy.registry.d.ts +6 -0
  81. package/src/lib/workflow/index.d.ts +2 -0
  82. package/src/lib/workflow/node/index.d.ts +3 -0
  83. package/src/lib/workflow/node/strategy.decorator.d.ts +5 -0
  84. package/src/lib/workflow/node/strategy.interface.d.ts +41 -0
  85. package/src/lib/workflow/node/strategy.registry.d.ts +9 -0
  86. package/src/lib/workflow/trigger/index.d.ts +3 -0
  87. package/src/lib/workflow/trigger/strategy.decorator.d.ts +2 -0
  88. package/src/lib/workflow/trigger/strategy.interface.d.ts +22 -0
  89. package/src/lib/workflow/trigger/strategy.registry.d.ts +6 -0
  90. package/.eslintrc.json +0 -30
  91. package/.swcrc +0 -29
  92. package/jest.config.ts +0 -28
  93. package/project.json +0 -59
  94. package/src/index.ts +0 -11
  95. package/src/lib/core/file-system.ts +0 -113
  96. package/src/lib/core/i18n.ts +0 -31
  97. package/src/lib/core/index.ts +0 -4
  98. package/src/lib/core/permissions.ts +0 -97
  99. package/src/lib/core/schema.ts +0 -23
  100. package/src/lib/integration/index.ts +0 -3
  101. package/src/lib/integration/strategy.decorator.ts +0 -6
  102. package/src/lib/integration/strategy.interface.ts +0 -11
  103. package/src/lib/integration/strategy.registry.ts +0 -12
  104. package/src/lib/logger.ts +0 -18
  105. package/src/lib/plugin-metadata.ts +0 -20
  106. package/src/lib/plugin.interface.ts +0 -67
  107. package/src/lib/plugin.ts +0 -32
  108. package/src/lib/rag/image/index.ts +0 -3
  109. package/src/lib/rag/image/strategy.decorator.ts +0 -9
  110. package/src/lib/rag/image/strategy.interface.ts +0 -37
  111. package/src/lib/rag/image/strategy.registry.ts +0 -17
  112. package/src/lib/rag/index.ts +0 -7
  113. package/src/lib/rag/knowledge/index.ts +0 -3
  114. package/src/lib/rag/knowledge/knowledge-strategy.decorator.ts +0 -6
  115. package/src/lib/rag/knowledge/knowledge-strategy.interface.ts +0 -15
  116. package/src/lib/rag/knowledge/knowledge-strategy.registry.ts +0 -12
  117. package/src/lib/rag/retriever/index.ts +0 -3
  118. package/src/lib/rag/retriever/strategy.decorator.ts +0 -9
  119. package/src/lib/rag/retriever/strategy.interface.ts +0 -32
  120. package/src/lib/rag/retriever/strategy.registry.ts +0 -12
  121. package/src/lib/rag/source/index.ts +0 -3
  122. package/src/lib/rag/source/strategy.decorator.ts +0 -9
  123. package/src/lib/rag/source/strategy.interface.ts +0 -36
  124. package/src/lib/rag/source/strategy.registry.ts +0 -17
  125. package/src/lib/rag/textsplitter/index.ts +0 -3
  126. package/src/lib/rag/textsplitter/strategy.decorator.ts +0 -6
  127. package/src/lib/rag/textsplitter/strategy.interface.ts +0 -28
  128. package/src/lib/rag/textsplitter/strategy.registry.ts +0 -17
  129. package/src/lib/rag/transformer/index.ts +0 -3
  130. package/src/lib/rag/transformer/strategy.decorator.ts +0 -9
  131. package/src/lib/rag/transformer/strategy.interface.ts +0 -34
  132. package/src/lib/rag/transformer/strategy.registry.ts +0 -14
  133. package/src/lib/rag/types.ts +0 -76
  134. package/src/lib/strategy.ts +0 -37
  135. package/src/lib/toolset/builtin.ts +0 -111
  136. package/src/lib/toolset/index.ts +0 -5
  137. package/src/lib/toolset/strategy.decorator.ts +0 -9
  138. package/src/lib/toolset/strategy.interface.ts +0 -32
  139. package/src/lib/toolset/strategy.registry.ts +0 -17
  140. package/src/lib/toolset/toolset.ts +0 -76
  141. package/src/lib/types.ts +0 -47
  142. package/src/lib/vectorstore/index.ts +0 -3
  143. package/src/lib/vectorstore/strategy.decorator.ts +0 -6
  144. package/src/lib/vectorstore/strategy.interface.ts +0 -25
  145. package/src/lib/vectorstore/strategy.registry.ts +0 -17
  146. package/src/lib/workflow/index.ts +0 -2
  147. package/src/lib/workflow/node/index.ts +0 -3
  148. package/src/lib/workflow/node/strategy.decorator.ts +0 -9
  149. package/src/lib/workflow/node/strategy.interface.ts +0 -51
  150. package/src/lib/workflow/node/strategy.registry.ts +0 -18
  151. package/src/lib/workflow/trigger/index.ts +0 -3
  152. package/src/lib/workflow/trigger/strategy.decorator.ts +0 -6
  153. package/src/lib/workflow/trigger/strategy.interface.ts +0 -27
  154. package/src/lib/workflow/trigger/strategy.registry.ts +0 -17
  155. package/tsconfig.json +0 -22
  156. package/tsconfig.lib.json +0 -10
  157. package/tsconfig.spec.json +0 -9
@@ -0,0 +1,8 @@
1
+ import { PluginMetadata } from './plugin.interface';
2
+ /**
3
+ * Decorator function for extending NestJS features with additional metadata.
4
+ *
5
+ * @param pluginMetadata Metadata to be applied to the target class.
6
+ * @returns Class decorator function.
7
+ */
8
+ export declare function XpertServerPlugin(pluginMetadata: PluginMetadata): ClassDecorator;
@@ -8,7 +8,6 @@ export interface IOnPluginBootstrap {
8
8
  */
9
9
  onPluginBootstrap(): void | Promise<void>;
10
10
  }
11
-
12
11
  /**
13
12
  * Interface for plugins with a destroy lifecycle method.
14
13
  */
@@ -19,7 +18,6 @@ export interface IOnPluginDestroy {
19
18
  */
20
19
  onPluginDestroy(): void | Promise<void>;
21
20
  }
22
-
23
21
  /**
24
22
  * Interface for plugins supporting basic seed operations.
25
23
  */
@@ -30,7 +28,6 @@ export interface IOnPluginWithBasicSeed {
30
28
  */
31
29
  onPluginBasicSeed(): void | Promise<void>;
32
30
  }
33
-
34
31
  /**
35
32
  * Interface for plugins supporting default seed operations.
36
33
  */
@@ -41,7 +38,6 @@ export interface IOnPluginWithDefaultSeed {
41
38
  */
42
39
  onPluginDefaultSeed(): void | Promise<void>;
43
40
  }
44
-
45
41
  /**
46
42
  * Interface for plugins supporting random seed operations.
47
43
  */
@@ -0,0 +1,59 @@
1
+ import { ModuleMetadata, Type } from '@nestjs/common';
2
+ /**
3
+ * Metadata definition for a plugin in NestJS.
4
+ */
5
+ export interface PluginMetadata extends ModuleMetadata {
6
+ /**
7
+ * List of entities injected by the plugin.
8
+ */
9
+ entities?: Array<Type<any>> | (() => Array<Type<any>>);
10
+ /**
11
+ * List of subscribers injected by the plugin.
12
+ */
13
+ subscribers?: Array<Type<any>> | (() => Array<Type<any>>);
14
+ }
15
+ /**
16
+ * Interface for plugins with a bootstrap lifecycle method.
17
+ */
18
+ export interface IOnPluginBootstrap {
19
+ /**
20
+ * Called when the plugin is being initialized.
21
+ * @returns A void or a Promise representing the completion of the operation.
22
+ */
23
+ onPluginBootstrap(): void | Promise<void>;
24
+ }
25
+ /**
26
+ * Interface for plugins with a destroy lifecycle method.
27
+ */
28
+ export interface IOnPluginDestroy {
29
+ /**
30
+ * Called when the plugin is being destroyed.
31
+ * @returns A void or a Promise representing the completion of the operation.
32
+ */
33
+ onPluginDestroy(): void | Promise<void>;
34
+ }
35
+ /**
36
+ * Interface for plugins supporting various seed operations.
37
+ */
38
+ export interface IOnPluginSeedable {
39
+ /**
40
+ * Invoked when seeding basic plugin data.
41
+ * @returns A void or a Promise representing the completion of the operation.
42
+ */
43
+ onPluginBasicSeed?(): void | Promise<void>;
44
+ /**
45
+ * Invoked when seeding default plugin data.
46
+ * @returns A void or a Promise representing the completion of the operation.
47
+ */
48
+ onPluginDefaultSeed?(): void | Promise<void>;
49
+ /**
50
+ * Invoked when seeding random plugin data.
51
+ * @returns A void or a Promise representing the completion of the operation.
52
+ */
53
+ onPluginRandomSeed?(): void | Promise<void>;
54
+ }
55
+ /**
56
+ * Represents the combined lifecycle methods for a plugin.
57
+ * This type combines interfaces for initializing and destroying a plugin.
58
+ */
59
+ export type PluginLifecycleMethods = IOnPluginBootstrap & IOnPluginDestroy & IOnPluginSeedable;
@@ -0,0 +1,3 @@
1
+ export * from './strategy.decorator';
2
+ export * from './strategy.interface';
3
+ export * from './strategy.registry';
@@ -0,0 +1,5 @@
1
+ export declare const IMAGE_UNDERSTANDING_STRATEGY = "IMAGE_UNDERSTANDING_STRATEGY";
2
+ /**
3
+ * Decorator to mark a provider as an Image Understanding Strategy
4
+ */
5
+ export declare const ImageUnderstandingStrategy: (provider: string) => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,31 @@
1
+ import { DocumentInterface } from '@langchain/core/documents';
2
+ import { BaseChatModel } from '@langchain/core/language_models/chat_models';
3
+ import { IDocumentUnderstandingProvider, IKnowledgeDocument } from '@metad/contracts';
4
+ import { Permissions, XpFileSystem } from '../../core/index';
5
+ import { ChunkMetadata } from '../types';
6
+ export type TImageUnderstandingConfig = {
7
+ stage: 'test' | 'prod';
8
+ visionModel: BaseChatModel;
9
+ permissions?: {
10
+ fileSystem?: XpFileSystem;
11
+ };
12
+ };
13
+ export type TImageUnderstandingResult = {
14
+ chunks: DocumentInterface<Partial<ChunkMetadata>>[];
15
+ metadata: any;
16
+ };
17
+ export interface IImageUnderstandingStrategy<TConfig extends TImageUnderstandingConfig = TImageUnderstandingConfig> {
18
+ readonly permissions: Permissions;
19
+ /**
20
+ * Metadata about this strategy
21
+ */
22
+ readonly meta: IDocumentUnderstandingProvider;
23
+ /**
24
+ * Validate the configuration
25
+ */
26
+ validateConfig(config: TConfig): Promise<void>;
27
+ /**
28
+ * Understand image files (e.g., OCR, VLM, Chart Parsing)
29
+ */
30
+ understandImages(doc: IKnowledgeDocument<ChunkMetadata>, config: TConfig): Promise<TImageUnderstandingResult>;
31
+ }
@@ -0,0 +1,6 @@
1
+ import { DiscoveryService, Reflector } from '@nestjs/core';
2
+ import { BaseStrategyRegistry } from '../../strategy';
3
+ import { IImageUnderstandingStrategy, TImageUnderstandingConfig } from './strategy.interface';
4
+ export declare class ImageUnderstandingRegistry<TConfig extends TImageUnderstandingConfig = TImageUnderstandingConfig> extends BaseStrategyRegistry<IImageUnderstandingStrategy<TConfig>> {
5
+ constructor(discoveryService: DiscoveryService, reflector: Reflector);
6
+ }
@@ -0,0 +1,7 @@
1
+ export * from './textsplitter/index';
2
+ export * from './source/index';
3
+ export * from './transformer/index';
4
+ export * from './retriever/index';
5
+ export * from './types';
6
+ export * from './image/index';
7
+ export * from './knowledge/index';
@@ -0,0 +1,3 @@
1
+ export * from './knowledge-strategy.decorator';
2
+ export * from './knowledge-strategy.interface';
3
+ export * from './knowledge-strategy.registry';
@@ -0,0 +1,2 @@
1
+ export declare const KNOWLEDGE_STRATEGY = "KNOWLEDGE_STRATEGY";
2
+ export declare const KnowledgeStrategyKey: (provider: string) => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,15 @@
1
+ import { IIntegration } from '@metad/contracts';
2
+ import { Document } from '@langchain/core/documents';
3
+ export type TKnowledgeStrategyParams = {
4
+ query: string;
5
+ k: number;
6
+ filter: Record<string, any>;
7
+ options: {
8
+ knowledgebaseId: string;
9
+ };
10
+ };
11
+ export interface KnowledgeStrategy {
12
+ execute(integration: IIntegration, payload: TKnowledgeStrategyParams): Promise<{
13
+ chunks: [Document, number][];
14
+ }>;
15
+ }
@@ -0,0 +1,6 @@
1
+ import { DiscoveryService, Reflector } from '@nestjs/core';
2
+ import { BaseStrategyRegistry } from '../../strategy';
3
+ import { KnowledgeStrategy } from './knowledge-strategy.interface';
4
+ export declare class KnowledgeStrategyRegistry extends BaseStrategyRegistry<KnowledgeStrategy> {
5
+ constructor(discoveryService: DiscoveryService, reflector: Reflector);
6
+ }
@@ -0,0 +1,3 @@
1
+ export * from './strategy.decorator';
2
+ export * from './strategy.interface';
3
+ export * from './strategy.registry';
@@ -0,0 +1,5 @@
1
+ export declare const RETRIEVER_STRATEGY = "RETRIEVER_STRATEGY";
2
+ /**
3
+ * Decorator to mark a provider as a Retriever Strategy
4
+ */
5
+ export declare const RetrieverStrategy: (provider: string) => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,30 @@
1
+ import { VectorStore } from '@langchain/core/vectorstores';
2
+ import { I18nObject } from '@metad/contracts';
3
+ import { Document } from '@langchain/core/documents';
4
+ export type TRetrieverConfig = {
5
+ vectorStore: VectorStore;
6
+ };
7
+ export interface IRetrieverStrategy<TConfig extends TRetrieverConfig = TRetrieverConfig> {
8
+ /**
9
+ * Metadata about this retriever
10
+ */
11
+ readonly meta: {
12
+ name: string;
13
+ label: I18nObject;
14
+ configSchema: any;
15
+ icon: {
16
+ svg?: string;
17
+ color?: string;
18
+ };
19
+ };
20
+ /**
21
+ * Validate the configuration
22
+ */
23
+ validateConfig(config: TConfig): Promise<void>;
24
+ /**
25
+ * Retrieve relevant documents for a given query
26
+ */
27
+ retrieve(query: string, options?: TConfig): Promise<{
28
+ documents: Document[];
29
+ }>;
30
+ }
@@ -0,0 +1,6 @@
1
+ import { DiscoveryService, Reflector } from '@nestjs/core';
2
+ import { BaseStrategyRegistry } from '../../strategy';
3
+ import { IRetrieverStrategy } from './strategy.interface';
4
+ export declare class RetrieverRegistry extends BaseStrategyRegistry<IRetrieverStrategy> {
5
+ constructor(discoveryService: DiscoveryService, reflector: Reflector);
6
+ }
@@ -0,0 +1,3 @@
1
+ export * from './strategy.decorator';
2
+ export * from './strategy.interface';
3
+ export * from './strategy.registry';
@@ -0,0 +1,5 @@
1
+ export declare const DOCUMENT_SOURCE_STRATEGY = "DOCUMENT_SOURCE_STRATEGY";
2
+ /**
3
+ * Decorator to mark a provider as a Document Source Strategy
4
+ */
5
+ export declare const DocumentSourceStrategy: (provider: string) => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,36 @@
1
+ import { IDocumentSourceProvider, IIntegration } from '@metad/contracts';
2
+ import { Document } from '@langchain/core/documents';
3
+ import { Permissions } from '../../core';
4
+ export interface IDocumentSourceStrategy<TConfig = any> {
5
+ readonly permissions: Permissions;
6
+ /**
7
+ * Metadata about this document source
8
+ */
9
+ readonly meta: IDocumentSourceProvider;
10
+ /**
11
+ * Validate the configuration
12
+ */
13
+ validateConfig(config: TConfig): Promise<void>;
14
+ /**
15
+ * Test the connection to the source
16
+ *
17
+ * @param config
18
+ */
19
+ test(config: TConfig): Promise<any>;
20
+ /**
21
+ * Load documents from the source
22
+ */
23
+ loadDocuments(config: TConfig, context?: {
24
+ integration?: IIntegration;
25
+ }): Promise<Document[]>;
26
+ /**
27
+ * Load a single document by its ID
28
+ *
29
+ * @deprecated Planning
30
+ * @param documentId
31
+ * @param context
32
+ */
33
+ loadDocument?(document: Document, context: {
34
+ integration?: IIntegration;
35
+ }): Promise<Document>;
36
+ }
@@ -0,0 +1,6 @@
1
+ import { DiscoveryService, Reflector } from '@nestjs/core';
2
+ import { BaseStrategyRegistry } from '../../strategy';
3
+ import { IDocumentSourceStrategy } from './strategy.interface';
4
+ export declare class DocumentSourceRegistry<TConfig = any> extends BaseStrategyRegistry<IDocumentSourceStrategy<TConfig>> {
5
+ constructor(discoveryService: DiscoveryService, reflector: Reflector);
6
+ }
@@ -0,0 +1,3 @@
1
+ export * from './strategy.decorator';
2
+ export * from './strategy.interface';
3
+ export * from './strategy.registry';
@@ -0,0 +1,2 @@
1
+ export declare const TEXT_SPLITTER_STRATEGY = "TEXT_SPLITTER_STRATEGY";
2
+ export declare const TextSplitterStrategy: (provider: string) => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,23 @@
1
+ import { IDocumentChunkerProvider, KnowledgeStructureEnum } from '@metad/contracts';
2
+ import { DocumentInterface } from '@langchain/core/documents';
3
+ import { ChunkMetadata } from '../types';
4
+ /**
5
+ * Split text content into chunks for embedding and retrieval
6
+ */
7
+ export interface ITextSplitterStrategy<TConfig = any> {
8
+ /**
9
+ * Metadata about this splitter
10
+ */
11
+ readonly meta: IDocumentChunkerProvider;
12
+ readonly structure: KnowledgeStructureEnum;
13
+ /**
14
+ * Validate the configuration
15
+ */
16
+ validateConfig(config: TConfig): Promise<void>;
17
+ /**
18
+ * Split a text into chunks and pages (if applicable)
19
+ */
20
+ splitDocuments(documents: DocumentInterface[], options?: TConfig): Promise<{
21
+ chunks: DocumentInterface<ChunkMetadata>[];
22
+ }>;
23
+ }
@@ -0,0 +1,6 @@
1
+ import { DiscoveryService, Reflector } from '@nestjs/core';
2
+ import { BaseStrategyRegistry } from '../../strategy';
3
+ import { ITextSplitterStrategy } from './strategy.interface';
4
+ export declare class TextSplitterRegistry<TConfig = any> extends BaseStrategyRegistry<ITextSplitterStrategy<TConfig>> {
5
+ constructor(discoveryService: DiscoveryService, reflector: Reflector);
6
+ }
@@ -0,0 +1,3 @@
1
+ export * from './strategy.decorator';
2
+ export * from './strategy.interface';
3
+ export * from './strategy.registry';
@@ -0,0 +1,5 @@
1
+ export declare const DOCUMENT_TRANSFORMER_STRATEGY = "DOCUMENT_TRANSFORMER_STRATEGY";
2
+ /**
3
+ * Decorator to mark a provider as a Document Transformer Strategy
4
+ */
5
+ export declare const DocumentTransformerStrategy: (provider: string) => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,26 @@
1
+ import { IDocumentProcessorProvider, IIntegration, IKnowledgeDocument } from '@metad/contracts';
2
+ import { Permissions, XpFileSystem } from '../../core/index';
3
+ import { ChunkMetadata } from '../types';
4
+ export type TDocumentTransformerConfig = {
5
+ stage: 'test' | 'prod';
6
+ tempDir?: string;
7
+ permissions?: {
8
+ fileSystem?: XpFileSystem;
9
+ integration?: IIntegration;
10
+ };
11
+ };
12
+ export interface IDocumentTransformerStrategy<TConfig extends TDocumentTransformerConfig = TDocumentTransformerConfig> {
13
+ /**
14
+ * Metadata about this transformer
15
+ */
16
+ readonly meta: IDocumentProcessorProvider;
17
+ readonly permissions: Permissions;
18
+ /**
19
+ * Validate the configuration
20
+ */
21
+ validateConfig(config: TConfig): Promise<void>;
22
+ /**
23
+ * Transform documents (e.g., extract, OCR, normalize, enrich metadata)
24
+ */
25
+ transformDocuments(files: Partial<IKnowledgeDocument>[], config: TConfig): Promise<Partial<IKnowledgeDocument<ChunkMetadata>>[]>;
26
+ }
@@ -0,0 +1,6 @@
1
+ import { DiscoveryService, Reflector } from '@nestjs/core';
2
+ import { BaseStrategyRegistry } from '../../strategy';
3
+ import { IDocumentTransformerStrategy, TDocumentTransformerConfig } from './strategy.interface';
4
+ export declare class DocumentTransformerRegistry<TConfig extends TDocumentTransformerConfig = TDocumentTransformerConfig> extends BaseStrategyRegistry<IDocumentTransformerStrategy<TConfig>> {
5
+ constructor(discoveryService: DiscoveryService, reflector: Reflector);
6
+ }
@@ -0,0 +1,18 @@
1
+ import { DocumentInterface } from '@langchain/core/documents';
2
+ import { IDocChunkMetadata } from '@metad/contracts';
3
+ export { TDocumentAsset } from '@metad/contracts';
4
+ export interface ChunkMetadata extends IDocChunkMetadata {
5
+ startOffset?: number;
6
+ endOffset?: number;
7
+ type?: 'parent' | 'child';
8
+ [key: string]: any;
9
+ }
10
+ /**
11
+ * Merge parent chunks with their child chunks based on metadata (parentId and chunkId)
12
+ *
13
+ * @deprecated use buildChunkTreeAndFindLeaves instead
14
+ */
15
+ export declare function mergeParentChildChunks(chunks: DocumentInterface<ChunkMetadata>[], // Parent chunks
16
+ children: DocumentInterface<ChunkMetadata>[]): DocumentInterface<ChunkMetadata>[];
17
+ export declare function isRemoteFile(path: string): boolean;
18
+ export declare function downloadRemoteFile(url: string, dest: string): Promise<string>;
@@ -0,0 +1,12 @@
1
+ import { OnModuleInit } from "@nestjs/common";
2
+ import { DiscoveryService, Reflector } from "@nestjs/core";
3
+ export declare class BaseStrategyRegistry<S> implements OnModuleInit {
4
+ protected readonly strategyKey: string;
5
+ protected discoveryService: DiscoveryService;
6
+ protected reflector: Reflector;
7
+ protected strategies: Map<string, S>;
8
+ constructor(strategyKey: string, discoveryService: DiscoveryService, reflector: Reflector);
9
+ onModuleInit(): void;
10
+ get(type: string): S;
11
+ list(): S[];
12
+ }
@@ -0,0 +1,54 @@
1
+ import { StructuredToolInterface } from '@langchain/core/tools';
2
+ import { BaseStore } from '@langchain/langgraph';
3
+ import { I18nObject, IXpertToolset, ToolProviderCredentials, TToolCredentials, TToolsetParams, XpertToolsetCategoryEnum } from '@metad/contracts';
4
+ import { Logger } from '@nestjs/common';
5
+ import { CommandBus, QueryBus } from '@nestjs/cqrs';
6
+ import { BaseToolset } from './toolset';
7
+ /**
8
+ * The context params of creating toolset
9
+ */
10
+ export type TBuiltinToolsetParams = TToolsetParams & {
11
+ commandBus: CommandBus;
12
+ queryBus: QueryBus;
13
+ store?: BaseStore;
14
+ };
15
+ export interface IBuiltinToolset {
16
+ validateCredentials(credentials: TToolCredentials): Promise<void>;
17
+ }
18
+ export declare abstract class BuiltinToolset<T extends StructuredToolInterface = StructuredToolInterface, C = TToolCredentials> extends BaseToolset<T> implements IBuiltinToolset {
19
+ providerName: string;
20
+ protected toolset?: IXpertToolset;
21
+ protected params?: TBuiltinToolsetParams;
22
+ static provider: string;
23
+ protected logger: Logger;
24
+ providerType: XpertToolsetCategoryEnum.BUILTIN;
25
+ credentialsSchema?: {
26
+ [key: string]: ToolProviderCredentials;
27
+ };
28
+ get tenantId(): string;
29
+ get organizationId(): string;
30
+ get commandBus(): CommandBus<import("@nestjs/cqrs").ICommand>;
31
+ get queryBus(): QueryBus<import("@nestjs/cqrs").IQuery>;
32
+ get xpertId(): string;
33
+ constructor(providerName: string, toolset?: IXpertToolset, params?: TBuiltinToolsetParams);
34
+ validateCredentials(credentials: C): Promise<void>;
35
+ _validateCredentials(credentials: C): Promise<void>;
36
+ getId(): string;
37
+ getCredentials(): C;
38
+ getToolTitle(name: string): string | I18nObject;
39
+ /**
40
+ * Get credentials schema
41
+ *
42
+ * @returns Credentials schema
43
+ */
44
+ getCredentialsSchema(): {
45
+ [key: string]: ToolProviderCredentials;
46
+ };
47
+ /**
48
+ * Get toolset entity
49
+ *
50
+ * @returns XpertToolset
51
+ */
52
+ getToolset(): IXpertToolset;
53
+ getName(): string;
54
+ }
@@ -0,0 +1,5 @@
1
+ export * from './strategy.decorator';
2
+ export * from './strategy.interface';
3
+ export * from './strategy.registry';
4
+ export * from './builtin';
5
+ export * from './toolset';
@@ -0,0 +1,5 @@
1
+ export declare const TOOLSET_STRATEGY = "TOOLSET_STRATEGY";
2
+ /**
3
+ * Decorator to mark a provider as a Toolset Strategy
4
+ */
5
+ export declare const ToolsetStrategy: (provider: string) => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,28 @@
1
+ import { DynamicStructuredTool } from '@langchain/core/tools';
2
+ import { I18nObject } from '@metad/contracts';
3
+ import { ZodSchema } from 'zod';
4
+ import { BuiltinToolset } from './builtin';
5
+ export interface IToolsetStrategy<TConfig = any> {
6
+ /**
7
+ * Metadata about this toolset
8
+ */
9
+ readonly meta: {
10
+ author: string;
11
+ tags: string[];
12
+ name: string;
13
+ label: I18nObject;
14
+ description?: I18nObject;
15
+ configSchema: any;
16
+ icon?: {
17
+ svg?: string;
18
+ png?: string;
19
+ color?: string;
20
+ };
21
+ };
22
+ /**
23
+ * Validate the configuration
24
+ */
25
+ validateConfig(config: TConfig): Promise<void>;
26
+ create(config: TConfig): Promise<BuiltinToolset>;
27
+ createTools(): DynamicStructuredTool<ZodSchema>[];
28
+ }
@@ -0,0 +1,6 @@
1
+ import { DiscoveryService, Reflector } from '@nestjs/core';
2
+ import { IToolsetStrategy } from './strategy.interface';
3
+ import { BaseStrategyRegistry } from '../strategy';
4
+ export declare class ToolsetRegistry<TConfig = any> extends BaseStrategyRegistry<IToolsetStrategy<TConfig>> {
5
+ constructor(discoveryService: DiscoveryService, reflector: Reflector);
6
+ }
@@ -0,0 +1,53 @@
1
+ import { BaseToolkit, StructuredTool, StructuredToolInterface } from "@langchain/core/tools";
2
+ import { I18nObject, TStateVariable, TToolsetParams } from "@metad/contracts";
3
+ import { z } from 'zod';
4
+ type ZodObjectAny = z.ZodObject<any, any, any, any>;
5
+ /**
6
+ * Base ability for all toolsets
7
+ */
8
+ export declare abstract class BaseToolset<T extends StructuredToolInterface = StructuredToolInterface> extends BaseToolkit {
9
+ protected params?: TToolsetParams;
10
+ abstract providerName: string;
11
+ tools: T[];
12
+ stateVariables: TStateVariable[];
13
+ constructor(params?: TToolsetParams);
14
+ /**
15
+ * Async init tools
16
+ *
17
+ * @returns
18
+ */
19
+ initTools(): Promise<T[]>;
20
+ /**
21
+ * Get ID of the toolset
22
+ */
23
+ abstract getId(): string;
24
+ /**
25
+ * Get name of the toolset
26
+ */
27
+ abstract getName(): string;
28
+ /**
29
+ * Get one tool
30
+ *
31
+ * @param toolName
32
+ * @returns
33
+ */
34
+ getTool(toolName: string): StructuredToolInterface<import("@langchain/core/tools").ToolSchemaBase, any, any>;
35
+ /**
36
+ * Get state variables config
37
+ *
38
+ * @returns State variables
39
+ */
40
+ getVariables(): Promise<TStateVariable[]>;
41
+ /**
42
+ * Get title of tool
43
+ */
44
+ abstract getToolTitle(name: string): string | I18nObject;
45
+ /**
46
+ * Close all (connections).
47
+ */
48
+ close(): Promise<void>;
49
+ }
50
+ export declare abstract class BaseTool<T extends ZodObjectAny = ZodObjectAny> extends StructuredTool<T> {
51
+ schema: any;
52
+ }
53
+ export {};
@@ -0,0 +1,47 @@
1
+ import { PluginMeta } from '@metad/contracts';
2
+ import type { DynamicModule, INestApplicationContext } from '@nestjs/common';
3
+ import type { ZodSchema } from 'zod';
4
+ export interface PluginLifecycle {
5
+ /** Called after module registration but before application startup */
6
+ onInit?(ctx: PluginContext): Promise<void> | void;
7
+ /** Called after application startup (can start serving externally) */
8
+ onStart?(ctx: PluginContext): Promise<void> | void;
9
+ /** Called during graceful shutdown */
10
+ onStop?(ctx: PluginContext): Promise<void> | void;
11
+ }
12
+ export interface PluginHealth {
13
+ /** Returns health status and optional dependency check details */
14
+ checkHealth?(ctx: PluginContext): Promise<{
15
+ status: 'up' | 'down';
16
+ details?: any;
17
+ }> | {
18
+ status: 'up' | 'down';
19
+ details?: any;
20
+ };
21
+ }
22
+ export interface PluginConfigSpec<T extends object = any> {
23
+ /** Zod validation schema for plugin-level config (optional) */
24
+ schema?: ZodSchema<T>;
25
+ /** Default configuration */
26
+ defaults?: Partial<T>;
27
+ }
28
+ export interface XpertPlugin<TConfig extends object = any> extends PluginLifecycle, PluginHealth {
29
+ meta: PluginMeta;
30
+ config?: PluginConfigSpec<TConfig>;
31
+ /** Returns the DynamicModule to be mounted to the main application (can be set as global) */
32
+ register(ctx: PluginContext<TConfig>): DynamicModule;
33
+ }
34
+ export interface PluginContext<TConfig extends object = any> {
35
+ app: INestApplicationContext;
36
+ logger: PluginLogger;
37
+ config: TConfig;
38
+ /** Helper method to access other Providers in the container */
39
+ resolve<TInput = any, TResult = TInput>(token: any): TResult;
40
+ }
41
+ export interface PluginLogger {
42
+ child(meta: Record<string, any>): PluginLogger;
43
+ debug(msg: string, meta?: any): void;
44
+ log(msg: string, meta?: any): void;
45
+ warn(msg: string, meta?: any): void;
46
+ error(msg: string, meta?: any): void;
47
+ }
@@ -0,0 +1,3 @@
1
+ export * from './strategy.decorator';
2
+ export * from './strategy.interface';
3
+ export * from './strategy.registry';
@@ -0,0 +1,2 @@
1
+ export declare const VECTOR_STORE_STRATEGY = "VECTOR_STORE_STRATEGY";
2
+ export declare const VectorStoreStrategy: (provider: string) => import("@nestjs/common").CustomDecorator<string>;