@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.
- package/.eslintrc.json +30 -0
- package/.swcrc +29 -0
- package/SCHEMA_SPECIFICATION.md +2 -0
- package/index.cjs.js +5 -649
- package/jest.config.ts +28 -0
- package/package.json +3 -3
- package/project.json +59 -0
- package/src/index.ts +11 -0
- package/src/lib/core/file-system.ts +113 -0
- package/src/lib/core/i18n.ts +31 -0
- package/src/lib/core/index.ts +4 -0
- package/src/lib/core/permissions.ts +97 -0
- package/src/lib/core/schema.ts +23 -0
- package/src/lib/integration/index.ts +3 -0
- package/src/lib/integration/strategy.decorator.ts +6 -0
- package/src/lib/integration/strategy.interface.ts +11 -0
- package/src/lib/integration/strategy.registry.ts +12 -0
- package/src/lib/logger.ts +18 -0
- package/src/lib/plugin-metadata.ts +20 -0
- package/src/lib/{plugin.hook.d.ts → plugin.hook.ts} +4 -0
- package/src/lib/plugin.interface.ts +67 -0
- package/src/lib/plugin.ts +32 -0
- package/src/lib/rag/image/index.ts +3 -0
- package/src/lib/rag/image/strategy.decorator.ts +9 -0
- package/src/lib/rag/image/strategy.interface.ts +37 -0
- package/src/lib/rag/image/strategy.registry.ts +17 -0
- package/src/lib/rag/index.ts +7 -0
- package/src/lib/rag/knowledge/index.ts +3 -0
- package/src/lib/rag/knowledge/knowledge-strategy.decorator.ts +6 -0
- package/src/lib/rag/knowledge/knowledge-strategy.interface.ts +15 -0
- package/src/lib/rag/knowledge/knowledge-strategy.registry.ts +12 -0
- package/src/lib/rag/retriever/index.ts +3 -0
- package/src/lib/rag/retriever/strategy.decorator.ts +9 -0
- package/src/lib/rag/retriever/strategy.interface.ts +32 -0
- package/src/lib/rag/retriever/strategy.registry.ts +12 -0
- package/src/lib/rag/source/index.ts +3 -0
- package/src/lib/rag/source/strategy.decorator.ts +9 -0
- package/src/lib/rag/source/strategy.interface.ts +36 -0
- package/src/lib/rag/source/strategy.registry.ts +17 -0
- package/src/lib/rag/textsplitter/index.ts +3 -0
- package/src/lib/rag/textsplitter/strategy.decorator.ts +6 -0
- package/src/lib/rag/textsplitter/strategy.interface.ts +28 -0
- package/src/lib/rag/textsplitter/strategy.registry.ts +17 -0
- package/src/lib/rag/transformer/index.ts +3 -0
- package/src/lib/rag/transformer/strategy.decorator.ts +9 -0
- package/src/lib/rag/transformer/strategy.interface.ts +34 -0
- package/src/lib/rag/transformer/strategy.registry.ts +14 -0
- package/src/lib/rag/types.ts +76 -0
- package/src/lib/strategy.ts +37 -0
- package/src/lib/toolset/builtin.ts +111 -0
- package/src/lib/toolset/index.ts +5 -0
- package/src/lib/toolset/strategy.decorator.ts +9 -0
- package/src/lib/toolset/strategy.interface.ts +32 -0
- package/src/lib/toolset/strategy.registry.ts +17 -0
- package/src/lib/toolset/toolset.ts +76 -0
- package/src/lib/types.ts +47 -0
- package/src/lib/vectorstore/index.ts +3 -0
- package/src/lib/vectorstore/strategy.decorator.ts +6 -0
- package/src/lib/vectorstore/strategy.interface.ts +25 -0
- package/src/lib/vectorstore/strategy.registry.ts +17 -0
- package/src/lib/workflow/index.ts +2 -0
- package/src/lib/workflow/node/index.ts +3 -0
- package/src/lib/workflow/node/strategy.decorator.ts +9 -0
- package/src/lib/workflow/node/strategy.interface.ts +51 -0
- package/src/lib/workflow/node/strategy.registry.ts +18 -0
- package/src/lib/workflow/trigger/index.ts +3 -0
- package/src/lib/workflow/trigger/strategy.decorator.ts +6 -0
- package/src/lib/workflow/trigger/strategy.interface.ts +27 -0
- package/src/lib/workflow/trigger/strategy.registry.ts +17 -0
- package/tsconfig.json +22 -0
- package/tsconfig.lib.json +10 -0
- package/tsconfig.spec.json +9 -0
- package/index.cjs.d.ts +0 -1
- package/index.esm.d.ts +0 -1
- package/index.esm.js +0 -616
- package/src/index.d.ts +0 -12
- package/src/lib/core/file-system.d.ts +0 -42
- package/src/lib/core/i18n.d.ts +0 -2
- package/src/lib/core/index.d.ts +0 -4
- package/src/lib/core/permissions.d.ts +0 -74
- package/src/lib/core/schema.d.ts +0 -22
- package/src/lib/integration/index.d.ts +0 -3
- package/src/lib/integration/strategy.decorator.d.ts +0 -2
- package/src/lib/integration/strategy.interface.d.ts +0 -9
- package/src/lib/integration/strategy.registry.d.ts +0 -6
- package/src/lib/knowledge/index.d.ts +0 -3
- package/src/lib/knowledge/knowledge-strategy.decorator.d.ts +0 -2
- package/src/lib/knowledge/knowledge-strategy.interface.d.ts +0 -15
- package/src/lib/knowledge/knowledge-strategy.registry.d.ts +0 -12
- package/src/lib/logger.d.ts +0 -2
- package/src/lib/plugin-metadata.d.ts +0 -17
- package/src/lib/plugin.d.ts +0 -8
- package/src/lib/plugin.interface.d.ts +0 -59
- package/src/lib/rag/image/index.d.ts +0 -3
- package/src/lib/rag/image/strategy.decorator.d.ts +0 -5
- package/src/lib/rag/image/strategy.interface.d.ts +0 -32
- package/src/lib/rag/image/strategy.registry.d.ts +0 -6
- package/src/lib/rag/index.d.ts +0 -6
- package/src/lib/rag/retriever/index.d.ts +0 -3
- package/src/lib/rag/retriever/strategy.decorator.d.ts +0 -5
- package/src/lib/rag/retriever/strategy.interface.d.ts +0 -30
- package/src/lib/rag/retriever/strategy.registry.d.ts +0 -6
- package/src/lib/rag/source/index.d.ts +0 -3
- package/src/lib/rag/source/strategy.decorator.d.ts +0 -5
- package/src/lib/rag/source/strategy.interface.d.ts +0 -36
- package/src/lib/rag/source/strategy.registry.d.ts +0 -6
- package/src/lib/rag/textsplitter/index.d.ts +0 -3
- package/src/lib/rag/textsplitter/strategy.decorator.d.ts +0 -2
- package/src/lib/rag/textsplitter/strategy.interface.d.ts +0 -24
- package/src/lib/rag/textsplitter/strategy.registry.d.ts +0 -6
- package/src/lib/rag/transformer/index.d.ts +0 -3
- package/src/lib/rag/transformer/strategy.decorator.d.ts +0 -5
- package/src/lib/rag/transformer/strategy.interface.d.ts +0 -26
- package/src/lib/rag/transformer/strategy.registry.d.ts +0 -6
- package/src/lib/rag/types.d.ts +0 -37
- package/src/lib/strategy.d.ts +0 -12
- package/src/lib/toolset/builtin.d.ts +0 -54
- package/src/lib/toolset/index.d.ts +0 -5
- package/src/lib/toolset/strategy.decorator.d.ts +0 -5
- package/src/lib/toolset/strategy.interface.d.ts +0 -28
- package/src/lib/toolset/strategy.registry.d.ts +0 -6
- package/src/lib/toolset/toolset.d.ts +0 -53
- package/src/lib/types.d.ts +0 -47
- package/src/lib/vectorstore/index.d.ts +0 -3
- package/src/lib/vectorstore/strategy.decorator.d.ts +0 -2
- package/src/lib/vectorstore/strategy.interface.d.ts +0 -24
- package/src/lib/vectorstore/strategy.registry.d.ts +0 -6
- package/src/lib/workflow/index.d.ts +0 -2
- package/src/lib/workflow/node/index.d.ts +0 -3
- package/src/lib/workflow/node/strategy.decorator.d.ts +0 -5
- package/src/lib/workflow/node/strategy.interface.d.ts +0 -40
- package/src/lib/workflow/node/strategy.registry.d.ts +0 -9
- package/src/lib/workflow/trigger/index.d.ts +0 -3
- package/src/lib/workflow/trigger/strategy.decorator.d.ts +0 -2
- package/src/lib/workflow/trigger/strategy.interface.d.ts +0 -22
- package/src/lib/workflow/trigger/strategy.registry.d.ts +0 -6
package/src/lib/types.ts
ADDED
|
@@ -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
|
+
|
|
5
|
+
export interface PluginLifecycle {
|
|
6
|
+
/** Called after module registration but before application startup */
|
|
7
|
+
onInit?(ctx: PluginContext): Promise<void> | void;
|
|
8
|
+
/** Called after application startup (can start serving externally) */
|
|
9
|
+
onStart?(ctx: PluginContext): Promise<void> | void;
|
|
10
|
+
/** Called during graceful shutdown */
|
|
11
|
+
onStop?(ctx: PluginContext): Promise<void> | void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface PluginHealth {
|
|
15
|
+
/** Returns health status and optional dependency check details */
|
|
16
|
+
checkHealth?(ctx: PluginContext): Promise<{ status: 'up' | 'down'; details?: any }> | { status: 'up' | 'down'; details?: any };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface PluginConfigSpec<T extends object = any> {
|
|
20
|
+
/** Zod validation schema for plugin-level config (optional) */
|
|
21
|
+
schema?: ZodSchema<T>;
|
|
22
|
+
/** Default configuration */
|
|
23
|
+
defaults?: Partial<T>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface XpertPlugin<TConfig extends object = any> extends PluginLifecycle, PluginHealth {
|
|
27
|
+
meta: PluginMeta;
|
|
28
|
+
config?: PluginConfigSpec<TConfig>;
|
|
29
|
+
/** Returns the DynamicModule to be mounted to the main application (can be set as global) */
|
|
30
|
+
register(ctx: PluginContext<TConfig>): DynamicModule;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface PluginContext<TConfig extends object = any> {
|
|
34
|
+
app: INestApplicationContext; // Nest runtime context (injected after startup)
|
|
35
|
+
logger: PluginLogger; // Logger wrapper provided by SDK
|
|
36
|
+
config: TConfig; // Final config after validation and merging
|
|
37
|
+
/** Helper method to access other Providers in the container */
|
|
38
|
+
resolve<TInput = any, TResult = TInput>(token: any): TResult;
|
|
39
|
+
}
|
|
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,25 @@
|
|
|
1
|
+
import { EmbeddingsInterface } from '@langchain/core/embeddings'
|
|
2
|
+
import { VectorStore } from '@langchain/core/vectorstores'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Interface for VectorStore strategy。
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export interface IVectorStoreStrategy<TConfig extends {collectionName?: string}> {
|
|
10
|
+
/**
|
|
11
|
+
* Metadata about the strategy
|
|
12
|
+
*/
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly description?: string;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Validate configuration for VectorStore
|
|
18
|
+
*/
|
|
19
|
+
validateConfig(config: TConfig): Promise<void>;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Create a VectorStore with given config
|
|
23
|
+
*/
|
|
24
|
+
createStore(embeddings: EmbeddingsInterface, config: TConfig): Promise<VectorStore>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { DiscoveryService, Reflector } from '@nestjs/core';
|
|
3
|
+
import { BaseStrategyRegistry } from '../strategy';
|
|
4
|
+
import { VECTOR_STORE_STRATEGY } from './strategy.decorator';
|
|
5
|
+
import { IVectorStoreStrategy } from './strategy.interface';
|
|
6
|
+
|
|
7
|
+
@Injectable()
|
|
8
|
+
export class VectorStoreRegistry<TConfig = any>
|
|
9
|
+
extends BaseStrategyRegistry<IVectorStoreStrategy<TConfig>>
|
|
10
|
+
{
|
|
11
|
+
constructor(
|
|
12
|
+
discoveryService: DiscoveryService,
|
|
13
|
+
reflector: Reflector
|
|
14
|
+
) {
|
|
15
|
+
super(VECTOR_STORE_STRATEGY, discoveryService, reflector);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SetMetadata } from '@nestjs/common';
|
|
2
|
+
|
|
3
|
+
export const WORKFLOW_NODE_STRATEGY = 'WORKFLOW_NODE_STRATEGY';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Decorator to mark a provider as a Workflow Node Strategy
|
|
7
|
+
*/
|
|
8
|
+
export const WorkflowNodeStrategy = (provider: string) =>
|
|
9
|
+
SetMetadata(WORKFLOW_NODE_STRATEGY, provider);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Runnable } from '@langchain/core/runnables'
|
|
2
|
+
import { BaseChannel } from '@langchain/langgraph'
|
|
3
|
+
import {
|
|
4
|
+
IEnvironment,
|
|
5
|
+
IWorkflowNode,
|
|
6
|
+
TWorkflowNodeMeta,
|
|
7
|
+
TXpertGraph,
|
|
8
|
+
TXpertParameter,
|
|
9
|
+
TXpertTeamNode
|
|
10
|
+
} from '@metad/contracts'
|
|
11
|
+
|
|
12
|
+
export type TWorkflowNodeParams<TConfig = any> = {
|
|
13
|
+
xpertId: string
|
|
14
|
+
agentKey?: string
|
|
15
|
+
node: TXpertTeamNode
|
|
16
|
+
config: TConfig
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type TWorkflowNodeResult = {
|
|
20
|
+
name?: string
|
|
21
|
+
graph: Runnable
|
|
22
|
+
ends: string[]
|
|
23
|
+
channel?: {
|
|
24
|
+
name: string
|
|
25
|
+
annotation: BaseChannel
|
|
26
|
+
}
|
|
27
|
+
navigator?: (state, config) => Promise<any>
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Workflow Node Strategy interface
|
|
32
|
+
*/
|
|
33
|
+
export interface IWorkflowNodeStrategy<TConfig = any, TResult = any> {
|
|
34
|
+
/**
|
|
35
|
+
* Metadata describing the node (type, label, description, config schema, etc.)
|
|
36
|
+
*/
|
|
37
|
+
meta: TWorkflowNodeMeta
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Create the node subgraph
|
|
41
|
+
*/
|
|
42
|
+
create(payload: {
|
|
43
|
+
graph: TXpertGraph
|
|
44
|
+
node: TXpertTeamNode & { type: 'workflow' }
|
|
45
|
+
xpertId: string
|
|
46
|
+
environment: IEnvironment
|
|
47
|
+
isDraft: boolean
|
|
48
|
+
}): TWorkflowNodeResult
|
|
49
|
+
|
|
50
|
+
outputVariables(entity: IWorkflowNode): TXpertParameter[]
|
|
51
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { DiscoveryService, Reflector } from '@nestjs/core';
|
|
3
|
+
import { BaseStrategyRegistry } from '../../strategy';
|
|
4
|
+
import { WORKFLOW_NODE_STRATEGY } from './strategy.decorator';
|
|
5
|
+
import { IWorkflowNodeStrategy } from './strategy.interface';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Registry for Workflow Node Strategies
|
|
9
|
+
*/
|
|
10
|
+
@Injectable()
|
|
11
|
+
export class WorkflowNodeRegistry<TConfig = any, TResult = any> extends BaseStrategyRegistry<IWorkflowNodeStrategy<TConfig, TResult>> {
|
|
12
|
+
constructor(
|
|
13
|
+
discoveryService: DiscoveryService,
|
|
14
|
+
reflector: Reflector
|
|
15
|
+
) {
|
|
16
|
+
super(WORKFLOW_NODE_STRATEGY, discoveryService, reflector);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TWorkflowTriggerMeta, TXpertTeamNode } from '@metad/contracts'
|
|
2
|
+
|
|
3
|
+
export type TWorkflowTriggerParams<T> = {
|
|
4
|
+
xpertId: string
|
|
5
|
+
agentKey?: string
|
|
6
|
+
node?: TXpertTeamNode
|
|
7
|
+
config: T
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface IWorkflowTriggerStrategy<T> {
|
|
11
|
+
meta: TWorkflowTriggerMeta
|
|
12
|
+
|
|
13
|
+
validate(payload: TWorkflowTriggerParams<T>): Promise<any[]>
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the trigger when publish xpert workflow
|
|
17
|
+
*
|
|
18
|
+
* @param payload
|
|
19
|
+
* @param callback
|
|
20
|
+
*/
|
|
21
|
+
publish(payload: TWorkflowTriggerParams<T>, callback: (payload: any) => void): Promise<any> | void
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Stop the trigger
|
|
25
|
+
*/
|
|
26
|
+
stop(payload: TWorkflowTriggerParams<T>): void;
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injectable } from '@nestjs/common'
|
|
2
|
+
import { DiscoveryService, Reflector } from '@nestjs/core'
|
|
3
|
+
import { BaseStrategyRegistry } from '../../strategy'
|
|
4
|
+
import { WORKFLOW_TRIGGER_STRATEGY } from './strategy.decorator'
|
|
5
|
+
import { IWorkflowTriggerStrategy } from './strategy.interface'
|
|
6
|
+
|
|
7
|
+
@Injectable()
|
|
8
|
+
export class WorkflowTriggerRegistry<T = any> extends BaseStrategyRegistry<IWorkflowTriggerStrategy<T>> {
|
|
9
|
+
|
|
10
|
+
constructor(
|
|
11
|
+
discoveryService: DiscoveryService,
|
|
12
|
+
reflector: Reflector
|
|
13
|
+
) {
|
|
14
|
+
super(WORKFLOW_TRIGGER_STRATEGY, discoveryService, reflector);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"module": "commonjs",
|
|
5
|
+
"forceConsistentCasingInFileNames": true,
|
|
6
|
+
"strict": true,
|
|
7
|
+
"noImplicitOverride": true,
|
|
8
|
+
"noPropertyAccessFromIndexSignature": true,
|
|
9
|
+
"noImplicitReturns": true,
|
|
10
|
+
"noFallthroughCasesInSwitch": true
|
|
11
|
+
},
|
|
12
|
+
"files": [],
|
|
13
|
+
"include": [],
|
|
14
|
+
"references": [
|
|
15
|
+
{
|
|
16
|
+
"path": "./tsconfig.lib.json"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "./tsconfig.spec.json"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
package/index.cjs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./src/index";
|
package/index.esm.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./src/index";
|