@xpert-ai/plugin-sdk 0.0.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 (72) hide show
  1. package/.eslintrc.json +30 -0
  2. package/.swcrc +29 -0
  3. package/PERMISSIONS.md +181 -0
  4. package/README.md +19 -0
  5. package/SCHEMA_SPECIFICATION.md +332 -0
  6. package/jest.config.ts +28 -0
  7. package/package.json +11 -0
  8. package/project.json +29 -0
  9. package/src/index.ts +12 -0
  10. package/src/lib/core/file-system.ts +96 -0
  11. package/src/lib/core/index.ts +3 -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 +10 -0
  17. package/src/lib/integration/strategy.registry.ts +12 -0
  18. package/src/lib/knowledge/index.ts +3 -0
  19. package/src/lib/knowledge/knowledge-strategy.decorator.ts +6 -0
  20. package/src/lib/knowledge/knowledge-strategy.interface.ts +15 -0
  21. package/src/lib/knowledge/knowledge-strategy.registry.ts +36 -0
  22. package/src/lib/logger.ts +18 -0
  23. package/src/lib/plugin-metadata.ts +20 -0
  24. package/src/lib/plugin.hook.ts +54 -0
  25. package/src/lib/plugin.interface.ts +67 -0
  26. package/src/lib/plugin.ts +32 -0
  27. package/src/lib/rag/image/index.ts +3 -0
  28. package/src/lib/rag/image/strategy.decorator.ts +9 -0
  29. package/src/lib/rag/image/strategy.interface.ts +42 -0
  30. package/src/lib/rag/image/strategy.registry.ts +17 -0
  31. package/src/lib/rag/index.ts +6 -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 +28 -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 +48 -0
  47. package/src/lib/rag/transformer/strategy.registry.ts +14 -0
  48. package/src/lib/rag/types.ts +86 -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 +49 -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
@@ -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,2 @@
1
+ export * from './trigger/index'
2
+ export * from './node/index'
@@ -0,0 +1,3 @@
1
+ export * from './strategy.decorator'
2
+ export * from './strategy.interface'
3
+ export * from './strategy.registry'
@@ -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,49 @@
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
+ /**
20
+ * Workflow Node Strategy interface
21
+ */
22
+ export interface IWorkflowNodeStrategy<TConfig = any, TResult = any> {
23
+ /**
24
+ * Metadata describing the node (type, label, description, config schema, etc.)
25
+ */
26
+ meta: TWorkflowNodeMeta
27
+
28
+ /**
29
+ * Create the node subgraph
30
+ */
31
+ create(payload: {
32
+ graph: TXpertGraph
33
+ node: TXpertTeamNode & { type: 'workflow' }
34
+ xpertId: string
35
+ environment: IEnvironment
36
+ isDraft: boolean
37
+ }): {
38
+ name?: string
39
+ graph: Runnable
40
+ ends: string[]
41
+ channel: {
42
+ name: string
43
+ annotation: BaseChannel
44
+ }
45
+ navigator?: (state, config) => Promise<any>
46
+ }
47
+
48
+ outputVariables(entity: IWorkflowNode): TXpertParameter[]
49
+ }
@@ -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,3 @@
1
+ export * from './strategy.decorator'
2
+ export * from './strategy.interface'
3
+ export * from './strategy.registry'
@@ -0,0 +1,6 @@
1
+ import { SetMetadata } from '@nestjs/common';
2
+
3
+ export const WORKFLOW_TRIGGER_STRATEGY = 'WORKFLOW_TRIGGER_STRATEGY';
4
+
5
+ export const WorkflowTriggerStrategy = (provider: string) =>
6
+ SetMetadata(WORKFLOW_TRIGGER_STRATEGY, provider);
@@ -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
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../dist/out-tsc",
5
+ "declaration": true,
6
+ "types": ["node"]
7
+ },
8
+ "include": ["src/**/*.ts"],
9
+ "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"]
10
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../dist/out-tsc",
5
+ "module": "commonjs",
6
+ "types": ["jest", "node"]
7
+ },
8
+ "include": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"]
9
+ }