@xpert-ai/plugin-sdk 3.6.0 → 3.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs.d.ts +1 -0
- package/index.cjs.js +65517 -4
- package/index.esm.d.ts +1 -0
- package/index.esm.js +65419 -0
- package/package.json +4 -4
- package/src/index.d.ts +13 -0
- package/src/lib/ai-model/abstract-provider.d.ts +41 -0
- package/src/lib/ai-model/ai-model-provider.decorator.d.ts +2 -0
- package/src/lib/ai-model/ai-model-provider.interface.d.ts +42 -0
- package/src/lib/ai-model/ai-model-provider.registry.d.ts +6 -0
- package/src/lib/ai-model/ai-model.d.ts +33 -0
- package/src/lib/ai-model/entities/defaults.d.ts +3 -0
- package/src/lib/ai-model/entities/index.d.ts +2 -0
- package/src/lib/ai-model/entities/model_entities.d.ts +14 -0
- package/src/lib/ai-model/errors.d.ts +5 -0
- package/src/lib/ai-model/index.d.ts +8 -0
- package/src/lib/ai-model/llm.d.ts +49 -0
- package/src/lib/ai-model/openai-compatible/completions.d.ts +23 -0
- package/src/lib/ai-model/openai-compatible/index.d.ts +3 -0
- package/src/lib/ai-model/openai-compatible/rerank.d.ts +20 -0
- package/src/lib/ai-model/openai-compatible/speech2text.d.ts +17 -0
- package/src/lib/ai-model/types/index.d.ts +11 -0
- package/src/lib/ai-model/types/model.d.ts +43 -0
- package/src/lib/ai-model/types/rerank.d.ts +20 -0
- package/src/lib/ai-model/types/speech2text.d.ts +3 -0
- package/src/lib/ai-model/types/text-embedding-model.d.ts +7 -0
- package/src/lib/ai-model/types/tts.d.ts +5 -0
- package/src/lib/core/file-system.d.ts +55 -0
- package/src/lib/core/i18n.d.ts +2 -0
- package/src/lib/core/index.d.ts +5 -0
- package/src/lib/core/permissions.d.ts +74 -0
- package/src/lib/core/schema.d.ts +22 -0
- package/src/lib/core/utils.d.ts +12 -0
- package/src/lib/data/datasource/adapter.strategy.d.ts +20 -0
- package/src/lib/data/datasource/index.d.ts +5 -0
- package/src/lib/data/datasource/strategy.decorator.d.ts +2 -0
- package/src/lib/data/datasource/strategy.interface.d.ts +19 -0
- package/src/lib/data/datasource/strategy.registry.d.ts +7 -0
- package/src/lib/data/datasource/types.d.ts +255 -0
- package/src/lib/data/index.d.ts +1 -0
- package/src/lib/integration/index.d.ts +3 -0
- package/src/lib/integration/strategy.decorator.d.ts +2 -0
- package/src/lib/integration/strategy.interface.d.ts +9 -0
- package/src/lib/integration/strategy.registry.d.ts +6 -0
- package/src/lib/logger.d.ts +2 -0
- package/src/lib/plugin-metadata.d.ts +17 -0
- package/src/lib/plugin.d.ts +8 -0
- package/src/lib/{plugin.hook.ts → plugin.hook.d.ts} +0 -4
- package/src/lib/plugin.interface.d.ts +59 -0
- package/src/lib/rag/image/index.d.ts +3 -0
- package/src/lib/rag/image/strategy.decorator.d.ts +5 -0
- package/src/lib/rag/image/strategy.interface.d.ts +31 -0
- package/src/lib/rag/image/strategy.registry.d.ts +6 -0
- package/src/lib/rag/index.d.ts +7 -0
- package/src/lib/rag/knowledge/index.d.ts +3 -0
- package/src/lib/rag/knowledge/knowledge-strategy.decorator.d.ts +2 -0
- package/src/lib/rag/knowledge/knowledge-strategy.interface.d.ts +15 -0
- package/src/lib/rag/knowledge/knowledge-strategy.registry.d.ts +6 -0
- package/src/lib/rag/retriever/index.d.ts +3 -0
- package/src/lib/rag/retriever/strategy.decorator.d.ts +5 -0
- package/src/lib/rag/retriever/strategy.interface.d.ts +30 -0
- package/src/lib/rag/retriever/strategy.registry.d.ts +6 -0
- package/src/lib/rag/source/index.d.ts +3 -0
- package/src/lib/rag/source/strategy.decorator.d.ts +5 -0
- package/src/lib/rag/source/strategy.interface.d.ts +36 -0
- package/src/lib/rag/source/strategy.registry.d.ts +6 -0
- package/src/lib/rag/textsplitter/index.d.ts +3 -0
- package/src/lib/rag/textsplitter/strategy.decorator.d.ts +2 -0
- package/src/lib/rag/textsplitter/strategy.interface.d.ts +23 -0
- package/src/lib/rag/textsplitter/strategy.registry.d.ts +6 -0
- package/src/lib/rag/transformer/index.d.ts +3 -0
- package/src/lib/rag/transformer/strategy.decorator.d.ts +5 -0
- package/src/lib/rag/transformer/strategy.interface.d.ts +26 -0
- package/src/lib/rag/transformer/strategy.registry.d.ts +6 -0
- package/src/lib/rag/types.d.ts +18 -0
- package/src/lib/strategy.d.ts +12 -0
- package/src/lib/toolset/builtin.d.ts +54 -0
- package/src/lib/toolset/index.d.ts +5 -0
- package/src/lib/toolset/strategy.decorator.d.ts +5 -0
- package/src/lib/toolset/strategy.interface.d.ts +28 -0
- package/src/lib/toolset/strategy.registry.d.ts +6 -0
- package/src/lib/toolset/toolset.d.ts +53 -0
- package/src/lib/types.d.ts +47 -0
- package/src/lib/vectorstore/index.d.ts +3 -0
- package/src/lib/vectorstore/strategy.decorator.d.ts +2 -0
- package/src/lib/vectorstore/strategy.interface.d.ts +24 -0
- package/src/lib/vectorstore/strategy.registry.d.ts +6 -0
- package/src/lib/workflow/index.d.ts +2 -0
- package/src/lib/workflow/node/index.d.ts +3 -0
- package/src/lib/workflow/node/strategy.decorator.d.ts +5 -0
- package/src/lib/workflow/node/strategy.interface.d.ts +41 -0
- package/src/lib/workflow/node/strategy.registry.d.ts +9 -0
- package/src/lib/workflow/trigger/index.d.ts +3 -0
- package/src/lib/workflow/trigger/strategy.decorator.d.ts +2 -0
- package/src/lib/workflow/trigger/strategy.interface.d.ts +22 -0
- package/src/lib/workflow/trigger/strategy.registry.d.ts +6 -0
- package/.eslintrc.json +0 -30
- package/.swcrc +0 -29
- package/jest.config.ts +0 -28
- package/project.json +0 -59
- package/src/index.ts +0 -11
- package/src/lib/core/file-system.ts +0 -113
- package/src/lib/core/i18n.ts +0 -31
- package/src/lib/core/index.ts +0 -4
- package/src/lib/core/permissions.ts +0 -97
- package/src/lib/core/schema.ts +0 -23
- package/src/lib/integration/index.ts +0 -3
- package/src/lib/integration/strategy.decorator.ts +0 -6
- package/src/lib/integration/strategy.interface.ts +0 -11
- package/src/lib/integration/strategy.registry.ts +0 -12
- package/src/lib/logger.ts +0 -18
- package/src/lib/plugin-metadata.ts +0 -20
- package/src/lib/plugin.interface.ts +0 -67
- package/src/lib/plugin.ts +0 -32
- package/src/lib/rag/image/index.ts +0 -3
- package/src/lib/rag/image/strategy.decorator.ts +0 -9
- package/src/lib/rag/image/strategy.interface.ts +0 -37
- package/src/lib/rag/image/strategy.registry.ts +0 -17
- package/src/lib/rag/index.ts +0 -7
- package/src/lib/rag/knowledge/index.ts +0 -3
- package/src/lib/rag/knowledge/knowledge-strategy.decorator.ts +0 -6
- package/src/lib/rag/knowledge/knowledge-strategy.interface.ts +0 -15
- package/src/lib/rag/knowledge/knowledge-strategy.registry.ts +0 -12
- package/src/lib/rag/retriever/index.ts +0 -3
- package/src/lib/rag/retriever/strategy.decorator.ts +0 -9
- package/src/lib/rag/retriever/strategy.interface.ts +0 -32
- package/src/lib/rag/retriever/strategy.registry.ts +0 -12
- package/src/lib/rag/source/index.ts +0 -3
- package/src/lib/rag/source/strategy.decorator.ts +0 -9
- package/src/lib/rag/source/strategy.interface.ts +0 -36
- package/src/lib/rag/source/strategy.registry.ts +0 -17
- package/src/lib/rag/textsplitter/index.ts +0 -3
- package/src/lib/rag/textsplitter/strategy.decorator.ts +0 -6
- package/src/lib/rag/textsplitter/strategy.interface.ts +0 -28
- package/src/lib/rag/textsplitter/strategy.registry.ts +0 -17
- package/src/lib/rag/transformer/index.ts +0 -3
- package/src/lib/rag/transformer/strategy.decorator.ts +0 -9
- package/src/lib/rag/transformer/strategy.interface.ts +0 -34
- package/src/lib/rag/transformer/strategy.registry.ts +0 -14
- package/src/lib/rag/types.ts +0 -76
- package/src/lib/strategy.ts +0 -37
- package/src/lib/toolset/builtin.ts +0 -111
- package/src/lib/toolset/index.ts +0 -5
- package/src/lib/toolset/strategy.decorator.ts +0 -9
- package/src/lib/toolset/strategy.interface.ts +0 -32
- package/src/lib/toolset/strategy.registry.ts +0 -17
- package/src/lib/toolset/toolset.ts +0 -76
- package/src/lib/types.ts +0 -47
- package/src/lib/vectorstore/index.ts +0 -3
- package/src/lib/vectorstore/strategy.decorator.ts +0 -6
- package/src/lib/vectorstore/strategy.interface.ts +0 -25
- package/src/lib/vectorstore/strategy.registry.ts +0 -17
- package/src/lib/workflow/index.ts +0 -2
- package/src/lib/workflow/node/index.ts +0 -3
- package/src/lib/workflow/node/strategy.decorator.ts +0 -9
- package/src/lib/workflow/node/strategy.interface.ts +0 -51
- package/src/lib/workflow/node/strategy.registry.ts +0 -18
- package/src/lib/workflow/trigger/index.ts +0 -3
- package/src/lib/workflow/trigger/strategy.decorator.ts +0 -6
- package/src/lib/workflow/trigger/strategy.interface.ts +0 -27
- package/src/lib/workflow/trigger/strategy.registry.ts +0 -17
- package/tsconfig.json +0 -22
- package/tsconfig.lib.json +0 -10
- package/tsconfig.spec.json +0 -9
|
@@ -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,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,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,24 @@
|
|
|
1
|
+
import { EmbeddingsInterface } from '@langchain/core/embeddings';
|
|
2
|
+
import { VectorStore } from '@langchain/core/vectorstores';
|
|
3
|
+
/**
|
|
4
|
+
* Interface for VectorStore strategy。
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export interface IVectorStoreStrategy<TConfig extends {
|
|
9
|
+
collectionName?: string;
|
|
10
|
+
}> {
|
|
11
|
+
/**
|
|
12
|
+
* Metadata about the strategy
|
|
13
|
+
*/
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly description?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Validate configuration for VectorStore
|
|
18
|
+
*/
|
|
19
|
+
validateConfig(config: TConfig): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Create a VectorStore with given config
|
|
22
|
+
*/
|
|
23
|
+
createStore(embeddings: EmbeddingsInterface, config: TConfig): Promise<VectorStore>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DiscoveryService, Reflector } from '@nestjs/core';
|
|
2
|
+
import { BaseStrategyRegistry } from '../strategy';
|
|
3
|
+
import { IVectorStoreStrategy } from './strategy.interface';
|
|
4
|
+
export declare class VectorStoreRegistry<TConfig = any> extends BaseStrategyRegistry<IVectorStoreStrategy<TConfig>> {
|
|
5
|
+
constructor(discoveryService: DiscoveryService, reflector: Reflector);
|
|
6
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Runnable } from '@langchain/core/runnables';
|
|
2
|
+
import { BaseChannel } from '@langchain/langgraph';
|
|
3
|
+
import { IEnvironment, IWorkflowNode, TWorkflowNodeMeta, TXpertGraph, TXpertParameter, TXpertTeamNode } from '@metad/contracts';
|
|
4
|
+
export type TWorkflowNodeParams<TConfig = any> = {
|
|
5
|
+
xpertId: string;
|
|
6
|
+
agentKey?: string;
|
|
7
|
+
node: TXpertTeamNode;
|
|
8
|
+
config: TConfig;
|
|
9
|
+
};
|
|
10
|
+
export type TWorkflowNodeResult = {
|
|
11
|
+
name?: string;
|
|
12
|
+
graph: Runnable;
|
|
13
|
+
ends: string[];
|
|
14
|
+
channel?: {
|
|
15
|
+
name: string;
|
|
16
|
+
annotation: BaseChannel;
|
|
17
|
+
};
|
|
18
|
+
navigator?: (state: any, config: any) => Promise<any>;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Workflow Node Strategy interface
|
|
22
|
+
*/
|
|
23
|
+
export interface IWorkflowNodeStrategy<TConfig = any, TResult = any> {
|
|
24
|
+
/**
|
|
25
|
+
* Metadata describing the node (type, label, description, config schema, etc.)
|
|
26
|
+
*/
|
|
27
|
+
meta: TWorkflowNodeMeta;
|
|
28
|
+
/**
|
|
29
|
+
* Create the node subgraph
|
|
30
|
+
*/
|
|
31
|
+
create(payload: {
|
|
32
|
+
graph: TXpertGraph;
|
|
33
|
+
node: TXpertTeamNode & {
|
|
34
|
+
type: 'workflow';
|
|
35
|
+
};
|
|
36
|
+
xpertId: string;
|
|
37
|
+
environment: IEnvironment;
|
|
38
|
+
isDraft: boolean;
|
|
39
|
+
}): TWorkflowNodeResult;
|
|
40
|
+
outputVariables(entity: IWorkflowNode): TXpertParameter[];
|
|
41
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DiscoveryService, Reflector } from '@nestjs/core';
|
|
2
|
+
import { BaseStrategyRegistry } from '../../strategy';
|
|
3
|
+
import { IWorkflowNodeStrategy } from './strategy.interface';
|
|
4
|
+
/**
|
|
5
|
+
* Registry for Workflow Node Strategies
|
|
6
|
+
*/
|
|
7
|
+
export declare class WorkflowNodeRegistry<TConfig = any, TResult = any> extends BaseStrategyRegistry<IWorkflowNodeStrategy<TConfig, TResult>> {
|
|
8
|
+
constructor(discoveryService: DiscoveryService, reflector: Reflector);
|
|
9
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TWorkflowTriggerMeta, TXpertTeamNode } from '@metad/contracts';
|
|
2
|
+
export type TWorkflowTriggerParams<T> = {
|
|
3
|
+
xpertId: string;
|
|
4
|
+
agentKey?: string;
|
|
5
|
+
node?: TXpertTeamNode;
|
|
6
|
+
config: T;
|
|
7
|
+
};
|
|
8
|
+
export interface IWorkflowTriggerStrategy<T> {
|
|
9
|
+
meta: TWorkflowTriggerMeta;
|
|
10
|
+
validate(payload: TWorkflowTriggerParams<T>): Promise<any[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Initialize the trigger when publish xpert workflow
|
|
13
|
+
*
|
|
14
|
+
* @param payload
|
|
15
|
+
* @param callback
|
|
16
|
+
*/
|
|
17
|
+
publish(payload: TWorkflowTriggerParams<T>, callback: (payload: any) => void): Promise<any> | void;
|
|
18
|
+
/**
|
|
19
|
+
* Stop the trigger
|
|
20
|
+
*/
|
|
21
|
+
stop(payload: TWorkflowTriggerParams<T>): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DiscoveryService, Reflector } from '@nestjs/core';
|
|
2
|
+
import { BaseStrategyRegistry } from '../../strategy';
|
|
3
|
+
import { IWorkflowTriggerStrategy } from './strategy.interface';
|
|
4
|
+
export declare class WorkflowTriggerRegistry<T = any> extends BaseStrategyRegistry<IWorkflowTriggerStrategy<T>> {
|
|
5
|
+
constructor(discoveryService: DiscoveryService, reflector: Reflector);
|
|
6
|
+
}
|
package/.eslintrc.json
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": ["../../.eslintrc.json"],
|
|
3
|
-
"ignorePatterns": ["!**/*"],
|
|
4
|
-
"overrides": [
|
|
5
|
-
{
|
|
6
|
-
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
|
|
7
|
-
"rules": {}
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"files": ["*.ts", "*.tsx"],
|
|
11
|
-
"rules": {}
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"files": ["*.js", "*.jsx"],
|
|
15
|
-
"rules": {}
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"files": ["*.json"],
|
|
19
|
-
"parser": "jsonc-eslint-parser",
|
|
20
|
-
"rules": {
|
|
21
|
-
"@nx/dependency-checks": [
|
|
22
|
-
"error",
|
|
23
|
-
{
|
|
24
|
-
"ignoredFiles": ["{projectRoot}/rollup.config.{js,ts,mjs,mts}"]
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
}
|
package/.swcrc
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"jsc": {
|
|
3
|
-
"target": "es2017",
|
|
4
|
-
"parser": {
|
|
5
|
-
"syntax": "typescript",
|
|
6
|
-
"decorators": true,
|
|
7
|
-
"dynamicImport": true
|
|
8
|
-
},
|
|
9
|
-
"transform": {
|
|
10
|
-
"decoratorMetadata": true,
|
|
11
|
-
"legacyDecorator": true
|
|
12
|
-
},
|
|
13
|
-
"keepClassNames": true,
|
|
14
|
-
"externalHelpers": true,
|
|
15
|
-
"loose": true
|
|
16
|
-
},
|
|
17
|
-
"module": {
|
|
18
|
-
"type": "es6"
|
|
19
|
-
},
|
|
20
|
-
"sourceMaps": true,
|
|
21
|
-
"exclude": [
|
|
22
|
-
"jest.config.ts",
|
|
23
|
-
".*\\.spec.tsx?$",
|
|
24
|
-
".*\\.test.tsx?$",
|
|
25
|
-
"./src/jest-setup.ts$",
|
|
26
|
-
"./**/jest-setup.ts$",
|
|
27
|
-
".*.js$"
|
|
28
|
-
]
|
|
29
|
-
}
|
package/jest.config.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
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/project.json
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "plugin-sdk",
|
|
3
|
-
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
|
4
|
-
"sourceRoot": "packages/plugin-sdk/src",
|
|
5
|
-
"projectType": "library",
|
|
6
|
-
"tags": [],
|
|
7
|
-
"targets": {
|
|
8
|
-
"build": {
|
|
9
|
-
"executor": "@nx/rollup:rollup",
|
|
10
|
-
"outputs": ["{options.outputPath}"],
|
|
11
|
-
"options": {
|
|
12
|
-
"outputPath": "packages/plugin-sdk/dist",
|
|
13
|
-
"main": "packages/plugin-sdk/src/index.ts",
|
|
14
|
-
"tsConfig": "packages/plugin-sdk/tsconfig.lib.json",
|
|
15
|
-
"assets": [
|
|
16
|
-
{
|
|
17
|
-
"glob": "*.md",
|
|
18
|
-
"input": "packages/plugin-sdk/",
|
|
19
|
-
"output": "."
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
|
-
"project": "packages/plugin-sdk/package.json",
|
|
23
|
-
"compiler": "swc",
|
|
24
|
-
"format": ["cjs", "esm"],
|
|
25
|
-
"external": [
|
|
26
|
-
"@langchain/core",
|
|
27
|
-
"@metad/contracts",
|
|
28
|
-
"@nestjs/common",
|
|
29
|
-
"@nestjs/core",
|
|
30
|
-
"@nestjs/microservices",
|
|
31
|
-
"lodash-es",
|
|
32
|
-
"i18next-fs-backend",
|
|
33
|
-
"i18next",
|
|
34
|
-
"kafkajs",
|
|
35
|
-
"amqplib",
|
|
36
|
-
"mqtt",
|
|
37
|
-
"nats",
|
|
38
|
-
"zod",
|
|
39
|
-
"fs",
|
|
40
|
-
"path"
|
|
41
|
-
]
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
"test": {
|
|
45
|
-
"executor": "@nx/jest:jest",
|
|
46
|
-
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
|
|
47
|
-
"options": {
|
|
48
|
-
"jestConfig": "packages/plugin-sdk/jest.config.ts"
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
"nx-release-publish": {
|
|
52
|
-
"executor": "@nx/js:release-publish",
|
|
53
|
-
"options": {
|
|
54
|
-
"packageRoot": "packages/plugin-sdk/dist",
|
|
55
|
-
"access": "public"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from './lib/plugin'
|
|
2
|
-
export * from './lib/plugin.interface'
|
|
3
|
-
export * from './lib/plugin-metadata'
|
|
4
|
-
export * from './lib/types'
|
|
5
|
-
export * from './lib/logger'
|
|
6
|
-
export * from './lib/integration/index'
|
|
7
|
-
export * from './lib/workflow/index'
|
|
8
|
-
export * from './lib/vectorstore/index'
|
|
9
|
-
export * from './lib/rag/index'
|
|
10
|
-
export * from './lib/toolset/index'
|
|
11
|
-
export * from './lib/core/index'
|