@frontmcp/sdk 0.3.1 → 0.4.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/LICENSE +201 -0
- package/README.md +192 -164
- package/package.json +7 -4
- package/src/__test-utils__/fixtures/hook.fixtures.d.ts +46 -0
- package/src/__test-utils__/fixtures/hook.fixtures.js +114 -0
- package/src/__test-utils__/fixtures/hook.fixtures.js.map +1 -0
- package/src/__test-utils__/fixtures/index.d.ts +7 -0
- package/src/__test-utils__/fixtures/index.js +11 -0
- package/src/__test-utils__/fixtures/index.js.map +1 -0
- package/src/__test-utils__/fixtures/plugin.fixtures.d.ts +46 -0
- package/src/__test-utils__/fixtures/plugin.fixtures.js +127 -0
- package/src/__test-utils__/fixtures/plugin.fixtures.js.map +1 -0
- package/src/__test-utils__/fixtures/provider.fixtures.d.ts +69 -0
- package/src/__test-utils__/fixtures/provider.fixtures.js +131 -0
- package/src/__test-utils__/fixtures/provider.fixtures.js.map +1 -0
- package/src/__test-utils__/fixtures/scope.fixtures.d.ts +14 -0
- package/src/__test-utils__/fixtures/scope.fixtures.js +59 -0
- package/src/__test-utils__/fixtures/scope.fixtures.js.map +1 -0
- package/src/__test-utils__/fixtures/tool.fixtures.d.ts +36 -0
- package/src/__test-utils__/fixtures/tool.fixtures.js +91 -0
- package/src/__test-utils__/fixtures/tool.fixtures.js.map +1 -0
- package/src/__test-utils__/helpers/assertion.helpers.d.ts +45 -0
- package/src/__test-utils__/helpers/assertion.helpers.js +153 -0
- package/src/__test-utils__/helpers/assertion.helpers.js.map +1 -0
- package/src/__test-utils__/helpers/async.helpers.d.ts +48 -0
- package/src/__test-utils__/helpers/async.helpers.js +112 -0
- package/src/__test-utils__/helpers/async.helpers.js.map +1 -0
- package/src/__test-utils__/helpers/index.d.ts +6 -0
- package/src/__test-utils__/helpers/index.js +10 -0
- package/src/__test-utils__/helpers/index.js.map +1 -0
- package/src/__test-utils__/helpers/setup.helpers.d.ts +54 -0
- package/src/__test-utils__/helpers/setup.helpers.js +106 -0
- package/src/__test-utils__/helpers/setup.helpers.js.map +1 -0
- package/src/__test-utils__/index.d.ts +9 -0
- package/src/__test-utils__/index.js +14 -0
- package/src/__test-utils__/index.js.map +1 -0
- package/src/__test-utils__/mocks/flow-instance.mock.d.ts +50 -0
- package/src/__test-utils__/mocks/flow-instance.mock.js +72 -0
- package/src/__test-utils__/mocks/flow-instance.mock.js.map +1 -0
- package/src/__test-utils__/mocks/hook-registry.mock.d.ts +25 -0
- package/src/__test-utils__/mocks/hook-registry.mock.js +65 -0
- package/src/__test-utils__/mocks/hook-registry.mock.js.map +1 -0
- package/src/__test-utils__/mocks/index.d.ts +8 -0
- package/src/__test-utils__/mocks/index.js +12 -0
- package/src/__test-utils__/mocks/index.js.map +1 -0
- package/src/__test-utils__/mocks/plugin-registry.mock.d.ts +43 -0
- package/src/__test-utils__/mocks/plugin-registry.mock.js +70 -0
- package/src/__test-utils__/mocks/plugin-registry.mock.js.map +1 -0
- package/src/__test-utils__/mocks/provider-registry.mock.d.ts +39 -0
- package/src/__test-utils__/mocks/provider-registry.mock.js +72 -0
- package/src/__test-utils__/mocks/provider-registry.mock.js.map +1 -0
- package/src/__test-utils__/mocks/tool-registry.mock.d.ts +43 -0
- package/src/__test-utils__/mocks/tool-registry.mock.js +79 -0
- package/src/__test-utils__/mocks/tool-registry.mock.js.map +1 -0
- package/src/app/app.utils.js.map +1 -1
- package/src/app/instances/app.local.instance.js +8 -11
- package/src/app/instances/app.local.instance.js.map +1 -1
- package/src/auth/flows/oauth.authorize.flow.d.ts +8 -8
- package/src/auth/flows/oauth.register.flow.d.ts +4 -4
- package/src/auth/flows/oauth.token.flow.d.ts +4 -4
- package/src/auth/flows/well-known.jwks.flow.d.ts +12 -12
- package/src/auth/flows/well-known.oauth-authorization-server.flow.d.ts +8 -8
- package/src/auth/flows/well-known.prm.flow.d.ts +4 -4
- package/src/common/decorators/tool.decorator.d.ts +97 -36
- package/src/common/decorators/tool.decorator.js +0 -1
- package/src/common/decorators/tool.decorator.js.map +1 -1
- package/src/common/entries/tool.entry.d.ts +54 -11
- package/src/common/entries/tool.entry.js +19 -0
- package/src/common/entries/tool.entry.js.map +1 -1
- package/src/common/interfaces/internal/registry.interface.d.ts +10 -2
- package/src/common/interfaces/internal/registry.interface.js.map +1 -1
- package/src/common/interfaces/plugin.interface.d.ts +1 -1
- package/src/common/interfaces/plugin.interface.js.map +1 -1
- package/src/common/interfaces/tool.interface.d.ts +12 -7
- package/src/common/interfaces/tool.interface.js +1 -1
- package/src/common/interfaces/tool.interface.js.map +1 -1
- package/src/common/metadata/front-mcp.metadata.d.ts +145 -145
- package/src/common/metadata/hook.metadata.d.ts +4 -2
- package/src/common/metadata/hook.metadata.js.map +1 -1
- package/src/common/metadata/prompt.metadata.d.ts +28 -28
- package/src/common/metadata/prompt.metadata.js.map +1 -1
- package/src/common/metadata/resource.metadata.d.ts +54 -54
- package/src/common/metadata/tool.metadata.d.ts +190 -7
- package/src/common/metadata/tool.metadata.js +41 -6
- package/src/common/metadata/tool.metadata.js.map +1 -1
- package/src/common/schemas/http-output.schema.d.ts +106 -106
- package/src/common/tokens/tool.tokens.js.map +1 -1
- package/src/common/types/options/logging.options.d.ts +1 -2
- package/src/common/types/options/logging.options.js +1 -9
- package/src/common/types/options/logging.options.js.map +1 -1
- package/src/common/types/options/server-info.options.d.ts +19 -19
- package/src/errors/error-handler.d.ts +65 -0
- package/src/errors/error-handler.js +107 -0
- package/src/errors/error-handler.js.map +1 -0
- package/src/errors/index.d.ts +2 -0
- package/src/errors/index.js +26 -0
- package/src/errors/index.js.map +1 -0
- package/src/errors/mcp.error.d.ts +156 -0
- package/src/errors/mcp.error.js +243 -0
- package/src/errors/mcp.error.js.map +1 -0
- package/src/flows/flow.instance.js +7 -6
- package/src/flows/flow.instance.js.map +1 -1
- package/src/flows/flow.registry.js +1 -1
- package/src/flows/flow.registry.js.map +1 -1
- package/src/front-mcp/front-mcp.providers.d.ts +20 -20
- package/src/hooks/hook.registry.d.ts +5 -3
- package/src/hooks/hook.registry.js +13 -1
- package/src/hooks/hook.registry.js.map +1 -1
- package/src/plugin/plugin.registry.d.ts +7 -2
- package/src/plugin/plugin.registry.js +23 -11
- package/src/plugin/plugin.registry.js.map +1 -1
- package/src/prompt/prompt.registry.js +1 -0
- package/src/prompt/prompt.registry.js.map +1 -1
- package/src/resource/resource.registry.js +1 -0
- package/src/resource/resource.registry.js.map +1 -1
- package/src/scope/scope.registry.js +1 -1
- package/src/scope/scope.registry.js.map +1 -1
- package/src/store/adapters/store.memory.adapter.js +3 -1
- package/src/store/adapters/store.memory.adapter.js.map +1 -1
- package/src/tool/flows/call-tool.flow.d.ts +1012 -676
- package/src/tool/flows/call-tool.flow.js +94 -61
- package/src/tool/flows/call-tool.flow.js.map +1 -1
- package/src/tool/flows/tools-list.flow.d.ts +347 -590
- package/src/tool/flows/tools-list.flow.js +76 -49
- package/src/tool/flows/tools-list.flow.js.map +1 -1
- package/src/tool/tool.instance.d.ts +27 -8
- package/src/tool/tool.instance.js +40 -5
- package/src/tool/tool.instance.js.map +1 -1
- package/src/tool/tool.registry.js +19 -21
- package/src/tool/tool.registry.js.map +1 -1
- package/src/tool/tool.utils.d.ts +3 -2
- package/src/tool/tool.utils.js +377 -14
- package/src/tool/tool.utils.js.map +1 -1
- package/src/transport/adapters/transport.sse.adapter.js.map +1 -1
- package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -1
- package/src/transport/flows/handle.sse.flow.js +6 -13
- package/src/transport/flows/handle.sse.flow.js.map +1 -1
- package/src/transport/flows/handle.streamable-http.flow.js +1 -0
- package/src/transport/flows/handle.streamable-http.flow.js.map +1 -1
- package/src/transport/mcp-handlers/call-tool-request.handler.d.ts +1 -1
- package/src/transport/mcp-handlers/call-tool-request.handler.js +10 -5
- package/src/transport/mcp-handlers/call-tool-request.handler.js.map +1 -1
- package/src/transport/mcp-handlers/index.d.ts +151 -268
- package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +124 -216
- package/src/transport/transport.local.js +1 -0
- package/src/transport/transport.local.js.map +1 -1
- package/src/utils/string.utils.js +1 -1
- package/src/utils/string.utils.js.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.helpers.js","sourceRoot":"","sources":["../../../../src/__test-utils__/helpers/setup.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["/// <reference types=\"jest\" />\n/**\n * Helper utilities for test setup and teardown\n */\n\nimport 'reflect-metadata';\n\n/**\n * Creates a clean test environment with automatic cleanup\n */\nexport function createTestEnvironment() {\n const cleanupFns: Array<() => void | Promise<void>> = [];\n\n return {\n /**\n * Registers a cleanup function to be called after the test\n */\n onCleanup(fn: () => void | Promise<void>): void {\n cleanupFns.push(fn);\n },\n\n /**\n * Cleans up all registered resources\n */\n async cleanup(): Promise<void> {\n for (const fn of cleanupFns.reverse()) {\n await fn();\n }\n cleanupFns.length = 0;\n },\n };\n}\n\n/**\n * Wraps a test function with automatic environment setup and cleanup\n */\nexport function withTestEnvironment<T extends any[]>(\n testFn: (env: ReturnType<typeof createTestEnvironment>, ...args: T) => Promise<void> | void\n) {\n return async (...args: T) => {\n const env = createTestEnvironment();\n try {\n await testFn(env, ...args);\n } finally {\n await env.cleanup();\n }\n };\n}\n\n/**\n * Creates a mock timer for testing time-based operations\n */\nexport function useFakeTimers() {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.runOnlyPendingTimers();\n jest.useRealTimers();\n });\n\n return {\n advance: (ms: number) => jest.advanceTimersByTime(ms),\n runAll: () => jest.runAllTimers(),\n runPending: () => jest.runOnlyPendingTimers(),\n };\n}\n\n/**\n * Creates a test-specific logger that can be inspected\n */\nexport function createTestLogger() {\n const logs: Array<{ level: string; message: string; data?: any }> = [];\n\n return {\n log: (message: string, data?: any) => logs.push({ level: 'log', message, data }),\n warn: (message: string, data?: any) => logs.push({ level: 'warn', message, data }),\n error: (message: string, data?: any) => logs.push({ level: 'error', message, data }),\n info: (message: string, data?: any) => logs.push({ level: 'info', message, data }),\n debug: (message: string, data?: any) => logs.push({ level: 'debug', message, data }),\n getLogs: () => logs,\n clear: () => (logs.length = 0),\n hasLog: (level: string, message: string) =>\n logs.some((log) => log.level === level && log.message.includes(message)),\n };\n}\n\n/**\n * Ensures reflect-metadata is loaded for decorator tests\n */\nexport function setupReflectMetadata() {\n beforeAll(() => {\n // Ensure reflect-metadata is loaded\n if (typeof Reflect === 'undefined' || !Reflect.getMetadata) {\n throw new Error('reflect-metadata is not loaded');\n }\n });\n}\n\n/**\n * Clears all mocks between tests\n */\nexport function setupMockClearing() {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n afterEach(() => {\n jest.restoreAllMocks();\n });\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/// <reference types="jest" />
|
|
3
|
+
/**
|
|
4
|
+
* Test utilities for FrontMCP SDK
|
|
5
|
+
*
|
|
6
|
+
* This module provides mock factories, test fixtures, and helper functions
|
|
7
|
+
* to make testing SDK components easier.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
11
|
+
tslib_1.__exportStar(require("./mocks"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./fixtures"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./helpers"), exports);
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/__test-utils__/index.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B;;;;;GAKG;;;AAEH,kDAAwB;AACxB,qDAA2B;AAC3B,oDAA0B","sourcesContent":["/// <reference types=\"jest\" />\n/**\n * Test utilities for FrontMCP SDK\n *\n * This module provides mock factories, test fixtures, and helper functions\n * to make testing SDK components easier.\n */\n\nexport * from './mocks';\nexport * from './fixtures';\nexport * from './helpers';\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock factory for FlowInstance
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Creates a mock FlowInstance for testing
|
|
6
|
+
*/
|
|
7
|
+
export declare function createMockFlowInstance(overrides?: Partial<any>): {
|
|
8
|
+
stages: Map<string, any>;
|
|
9
|
+
name: string;
|
|
10
|
+
metadata: {
|
|
11
|
+
name: string;
|
|
12
|
+
stages: string[];
|
|
13
|
+
};
|
|
14
|
+
execute: jest.Mock<Promise<{
|
|
15
|
+
success: boolean;
|
|
16
|
+
result: string;
|
|
17
|
+
}>, [context: any], any>;
|
|
18
|
+
addStage: jest.Mock<void, [stageName: string, handler: any], any>;
|
|
19
|
+
getStage: jest.Mock<any, [stageName: string], any>;
|
|
20
|
+
hasStage: jest.Mock<boolean, [stageName: string], any>;
|
|
21
|
+
run: jest.Mock<Promise<any>, [context: any], any>;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Creates a mock flow context
|
|
25
|
+
*/
|
|
26
|
+
export declare function createMockFlowContext(overrides?: Partial<any>): {
|
|
27
|
+
flowName: string;
|
|
28
|
+
stage: string;
|
|
29
|
+
data: {};
|
|
30
|
+
result: undefined;
|
|
31
|
+
error: undefined;
|
|
32
|
+
respond: jest.Mock<{
|
|
33
|
+
responded: boolean;
|
|
34
|
+
result: any;
|
|
35
|
+
}, [result: any], any>;
|
|
36
|
+
fail: jest.Mock<{
|
|
37
|
+
failed: boolean;
|
|
38
|
+
error: any;
|
|
39
|
+
}, [error: any], any>;
|
|
40
|
+
abort: jest.Mock<{
|
|
41
|
+
aborted: boolean;
|
|
42
|
+
}, [], any>;
|
|
43
|
+
next: jest.Mock<Promise<{
|
|
44
|
+
continued: boolean;
|
|
45
|
+
}>, [], any>;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Creates a mock stage handler
|
|
49
|
+
*/
|
|
50
|
+
export declare function createMockStageHandler(implementation?: (ctx: any) => Promise<any>): jest.Mock<Promise<any>, [ctx: any], any>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/// <reference types="jest" />
|
|
3
|
+
/**
|
|
4
|
+
* Mock factory for FlowInstance
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createMockFlowInstance = createMockFlowInstance;
|
|
8
|
+
exports.createMockFlowContext = createMockFlowContext;
|
|
9
|
+
exports.createMockStageHandler = createMockStageHandler;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a mock FlowInstance for testing
|
|
12
|
+
*/
|
|
13
|
+
function createMockFlowInstance(overrides = {}) {
|
|
14
|
+
const stages = new Map();
|
|
15
|
+
return {
|
|
16
|
+
stages,
|
|
17
|
+
name: 'TestFlow',
|
|
18
|
+
metadata: {
|
|
19
|
+
name: 'TestFlow',
|
|
20
|
+
stages: ['pre', 'execute', 'post', 'finalize'],
|
|
21
|
+
},
|
|
22
|
+
execute: jest.fn(async (context) => {
|
|
23
|
+
return { success: true, result: 'mock result' };
|
|
24
|
+
}),
|
|
25
|
+
addStage: jest.fn((stageName, handler) => {
|
|
26
|
+
stages.set(stageName, handler);
|
|
27
|
+
}),
|
|
28
|
+
getStage: jest.fn((stageName) => {
|
|
29
|
+
return stages.get(stageName);
|
|
30
|
+
}),
|
|
31
|
+
hasStage: jest.fn((stageName) => {
|
|
32
|
+
return stages.has(stageName);
|
|
33
|
+
}),
|
|
34
|
+
run: jest.fn(async (context) => {
|
|
35
|
+
// Mock run implementation
|
|
36
|
+
return context;
|
|
37
|
+
}),
|
|
38
|
+
...overrides,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Creates a mock flow context
|
|
43
|
+
*/
|
|
44
|
+
function createMockFlowContext(overrides = {}) {
|
|
45
|
+
return {
|
|
46
|
+
flowName: 'TestFlow',
|
|
47
|
+
stage: 'execute',
|
|
48
|
+
data: {},
|
|
49
|
+
result: undefined,
|
|
50
|
+
error: undefined,
|
|
51
|
+
respond: jest.fn((result) => {
|
|
52
|
+
return { responded: true, result };
|
|
53
|
+
}),
|
|
54
|
+
fail: jest.fn((error) => {
|
|
55
|
+
return { failed: true, error };
|
|
56
|
+
}),
|
|
57
|
+
abort: jest.fn(() => {
|
|
58
|
+
return { aborted: true };
|
|
59
|
+
}),
|
|
60
|
+
next: jest.fn(async () => {
|
|
61
|
+
return { continued: true };
|
|
62
|
+
}),
|
|
63
|
+
...overrides,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Creates a mock stage handler
|
|
68
|
+
*/
|
|
69
|
+
function createMockStageHandler(implementation) {
|
|
70
|
+
return jest.fn(implementation || (async (ctx) => ctx));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=flow-instance.mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-instance.mock.js","sourceRoot":"","sources":["../../../../src/__test-utils__/mocks/flow-instance.mock.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B;;GAEG;;AAKH,wDAkCC;AAKD,sDA0BC;AAKD,wDAEC;AA3ED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,YAA0B,EAAE;IACjE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IAEtC,OAAO;QACL,MAAM;QACN,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;SAC/C;QAED,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;YACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QAClD,CAAC,CAAC;QAEF,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,SAAiB,EAAE,OAAY,EAAE,EAAE;YACpD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;QAEF,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,SAAiB,EAAE,EAAE;YACtC,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,SAAiB,EAAE,EAAE;YACtC,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;YAClC,0BAA0B;YAC1B,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QAEF,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,YAA0B,EAAE;IAChE,OAAO;QACL,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,SAAS;QAEhB,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAW,EAAE,EAAE;YAC/B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACrC,CAAC,CAAC;QAEF,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAU,EAAE,EAAE;YAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACjC,CAAC,CAAC;QAEF,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEF,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;YACvB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC,CAAC;QAEF,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,cAA2C;IAChF,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,IAAI,CAAC,KAAK,EAAE,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["/// <reference types=\"jest\" />\n/**\n * Mock factory for FlowInstance\n */\n\n/**\n * Creates a mock FlowInstance for testing\n */\nexport function createMockFlowInstance(overrides: Partial<any> = {}) {\n const stages = new Map<string, any>();\n\n return {\n stages,\n name: 'TestFlow',\n metadata: {\n name: 'TestFlow',\n stages: ['pre', 'execute', 'post', 'finalize'],\n },\n\n execute: jest.fn(async (context: any) => {\n return { success: true, result: 'mock result' };\n }),\n\n addStage: jest.fn((stageName: string, handler: any) => {\n stages.set(stageName, handler);\n }),\n\n getStage: jest.fn((stageName: string) => {\n return stages.get(stageName);\n }),\n\n hasStage: jest.fn((stageName: string) => {\n return stages.has(stageName);\n }),\n\n run: jest.fn(async (context: any) => {\n // Mock run implementation\n return context;\n }),\n\n ...overrides,\n };\n}\n\n/**\n * Creates a mock flow context\n */\nexport function createMockFlowContext(overrides: Partial<any> = {}) {\n return {\n flowName: 'TestFlow',\n stage: 'execute',\n data: {},\n result: undefined,\n error: undefined,\n\n respond: jest.fn((result: any) => {\n return { responded: true, result };\n }),\n\n fail: jest.fn((error: any) => {\n return { failed: true, error };\n }),\n\n abort: jest.fn(() => {\n return { aborted: true };\n }),\n\n next: jest.fn(async () => {\n return { continued: true };\n }),\n\n ...overrides,\n };\n}\n\n/**\n * Creates a mock stage handler\n */\nexport function createMockStageHandler(implementation?: (ctx: any) => Promise<any>) {\n return jest.fn(implementation || (async (ctx: any) => ctx));\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock factory for HookRegistry
|
|
3
|
+
*/
|
|
4
|
+
import { HookMetadata } from '../../common/metadata';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a mock HookRegistry for testing
|
|
7
|
+
*/
|
|
8
|
+
export declare function createMockHookRegistry(overrides?: Partial<any>): {
|
|
9
|
+
hooks: HookMetadata<keyof ExtendFlows, string, any>[];
|
|
10
|
+
register: jest.Mock<HookMetadata<keyof ExtendFlows, string, any>, [hookMetadata: HookMetadata<keyof ExtendFlows, string, any>], any>;
|
|
11
|
+
getHooks: jest.Mock<HookMetadata<keyof ExtendFlows, string, any>[], [], any>;
|
|
12
|
+
getHooksForFlow: jest.Mock<HookMetadata<keyof ExtendFlows, string, any>[], [flowName: string], any>;
|
|
13
|
+
getHooksForStage: jest.Mock<HookMetadata<keyof ExtendFlows, string, any>[], [flowName: string, stage: string], any>;
|
|
14
|
+
getHooksByPriority: jest.Mock<HookMetadata<keyof ExtendFlows, string, any>[], [flowName: string, stage: string], any>;
|
|
15
|
+
clear: jest.Mock<void, [], any>;
|
|
16
|
+
executeHooks: jest.Mock<Promise<any>, [flowName: string, stage: string, context: any], any>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Creates a mock hook entry
|
|
20
|
+
*/
|
|
21
|
+
export declare function createMockHookEntry(flowName: string, stage: string, priority?: number): HookMetadata;
|
|
22
|
+
/**
|
|
23
|
+
* Adds a hook to a mock registry
|
|
24
|
+
*/
|
|
25
|
+
export declare function addHookToMock(registry: ReturnType<typeof createMockHookRegistry>, hookMetadata: HookMetadata): void;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/// <reference types="jest" />
|
|
3
|
+
/**
|
|
4
|
+
* Mock factory for HookRegistry
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createMockHookRegistry = createMockHookRegistry;
|
|
8
|
+
exports.createMockHookEntry = createMockHookEntry;
|
|
9
|
+
exports.addHookToMock = addHookToMock;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a mock HookRegistry for testing
|
|
12
|
+
*/
|
|
13
|
+
function createMockHookRegistry(overrides = {}) {
|
|
14
|
+
const hooks = [];
|
|
15
|
+
return {
|
|
16
|
+
hooks,
|
|
17
|
+
register: jest.fn((hookMetadata) => {
|
|
18
|
+
hooks.push(hookMetadata);
|
|
19
|
+
return hookMetadata;
|
|
20
|
+
}),
|
|
21
|
+
getHooks: jest.fn(() => hooks),
|
|
22
|
+
getHooksForFlow: jest.fn((flowName) => {
|
|
23
|
+
return hooks.filter((h) => h.flow === flowName);
|
|
24
|
+
}),
|
|
25
|
+
getHooksForStage: jest.fn((flowName, stage) => {
|
|
26
|
+
return hooks.filter((h) => h.flow === flowName && h.stage === stage);
|
|
27
|
+
}),
|
|
28
|
+
getHooksByPriority: jest.fn((flowName, stage) => {
|
|
29
|
+
return hooks
|
|
30
|
+
.filter((h) => h.flow === flowName && h.stage === stage)
|
|
31
|
+
.sort((a, b) => (a.priority || 0) - (b.priority || 0));
|
|
32
|
+
}),
|
|
33
|
+
clear: jest.fn(() => {
|
|
34
|
+
hooks.length = 0;
|
|
35
|
+
}),
|
|
36
|
+
executeHooks: jest.fn(async (flowName, stage, context) => {
|
|
37
|
+
const stageHooks = hooks.filter((h) => h.flow === flowName && h.stage === stage);
|
|
38
|
+
for (const hook of stageHooks) {
|
|
39
|
+
// Mock hook execution
|
|
40
|
+
}
|
|
41
|
+
return context;
|
|
42
|
+
}),
|
|
43
|
+
...overrides,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Creates a mock hook entry
|
|
48
|
+
*/
|
|
49
|
+
function createMockHookEntry(flowName, stage, priority = 0) {
|
|
50
|
+
return {
|
|
51
|
+
type: 'stage',
|
|
52
|
+
flow: flowName,
|
|
53
|
+
stage,
|
|
54
|
+
target: Symbol('MOCK_HOOK'),
|
|
55
|
+
method: 'onStage',
|
|
56
|
+
priority,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Adds a hook to a mock registry
|
|
61
|
+
*/
|
|
62
|
+
function addHookToMock(registry, hookMetadata) {
|
|
63
|
+
registry.hooks.push(hookMetadata);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=hook-registry.mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-registry.mock.js","sourceRoot":"","sources":["../../../../src/__test-utils__/mocks/hook-registry.mock.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B;;GAEG;;AAOH,wDAyCC;AAKD,kDAaC;AAKD,sCAKC;AAxED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,YAA0B,EAAE;IACjE,MAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,OAAO;QACL,KAAK;QAEL,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,YAA0B,EAAE,EAAE;YAC/C,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEF,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QAE9B,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE;YAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC;QAEF,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,QAAgB,EAAE,KAAa,EAAE,EAAE;YAC5D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACvE,CAAC,CAAC;QAEF,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,QAAgB,EAAE,KAAa,EAAE,EAAE;YAC9D,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;iBACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC;QAEF,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YAClB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC;QAEF,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,QAAgB,EAAE,KAAa,EAAE,OAAY,EAAE,EAAE;YAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YACjF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,sBAAsB;YACxB,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QAEF,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,QAAgB,EAChB,KAAa,EACb,WAAmB,CAAC;IAEpB,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAe;QACrB,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;QAC3B,MAAM,EAAE,SAAS;QACjB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,QAAmD,EACnD,YAA0B;IAE1B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC","sourcesContent":["/// <reference types=\"jest\" />\n/**\n * Mock factory for HookRegistry\n */\n\nimport { HookMetadata } from '../../common/metadata';\n\n/**\n * Creates a mock HookRegistry for testing\n */\nexport function createMockHookRegistry(overrides: Partial<any> = {}) {\n const hooks: HookMetadata[] = [];\n\n return {\n hooks,\n\n register: jest.fn((hookMetadata: HookMetadata) => {\n hooks.push(hookMetadata);\n return hookMetadata;\n }),\n\n getHooks: jest.fn(() => hooks),\n\n getHooksForFlow: jest.fn((flowName: string) => {\n return hooks.filter((h) => h.flow === flowName);\n }),\n\n getHooksForStage: jest.fn((flowName: string, stage: string) => {\n return hooks.filter((h) => h.flow === flowName && h.stage === stage);\n }),\n\n getHooksByPriority: jest.fn((flowName: string, stage: string) => {\n return hooks\n .filter((h) => h.flow === flowName && h.stage === stage)\n .sort((a, b) => (a.priority || 0) - (b.priority || 0));\n }),\n\n clear: jest.fn(() => {\n hooks.length = 0;\n }),\n\n executeHooks: jest.fn(async (flowName: string, stage: string, context: any) => {\n const stageHooks = hooks.filter((h) => h.flow === flowName && h.stage === stage);\n for (const hook of stageHooks) {\n // Mock hook execution\n }\n return context;\n }),\n\n ...overrides,\n };\n}\n\n/**\n * Creates a mock hook entry\n */\nexport function createMockHookEntry(\n flowName: string,\n stage: string,\n priority: number = 0\n): HookMetadata {\n return {\n type: 'stage',\n flow: flowName as any,\n stage,\n target: Symbol('MOCK_HOOK'),\n method: 'onStage',\n priority,\n };\n}\n\n/**\n * Adds a hook to a mock registry\n */\nexport function addHookToMock(\n registry: ReturnType<typeof createMockHookRegistry>,\n hookMetadata: HookMetadata\n) {\n registry.hooks.push(hookMetadata);\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock factories for SDK registries and components
|
|
3
|
+
*/
|
|
4
|
+
export * from './provider-registry.mock';
|
|
5
|
+
export * from './flow-instance.mock';
|
|
6
|
+
export * from './hook-registry.mock';
|
|
7
|
+
export * from './tool-registry.mock';
|
|
8
|
+
export * from './plugin-registry.mock';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mock factories for SDK registries and components
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
tslib_1.__exportStar(require("./provider-registry.mock"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./flow-instance.mock"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./hook-registry.mock"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./tool-registry.mock"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./plugin-registry.mock"), exports);
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/__test-utils__/mocks/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mEAAyC;AACzC,+DAAqC;AACrC,+DAAqC;AACrC,+DAAqC;AACrC,iEAAuC","sourcesContent":["/**\n * Mock factories for SDK registries and components\n */\n\nexport * from './provider-registry.mock';\nexport * from './flow-instance.mock';\nexport * from './hook-registry.mock';\nexport * from './tool-registry.mock';\nexport * from './plugin-registry.mock';\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock factory for PluginRegistry
|
|
3
|
+
*/
|
|
4
|
+
import { PluginMetadata } from '../../common/metadata';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a mock PluginRegistry for testing
|
|
7
|
+
*/
|
|
8
|
+
export declare function createMockPluginRegistry(overrides?: Partial<any>): {
|
|
9
|
+
plugins: Map<string, any>;
|
|
10
|
+
register: jest.Mock<any, [pluginName: string, plugin: any], any>;
|
|
11
|
+
get: jest.Mock<any, [pluginName: string], any>;
|
|
12
|
+
has: jest.Mock<boolean, [pluginName: string], any>;
|
|
13
|
+
getAll: jest.Mock<any[], [], any>;
|
|
14
|
+
getNames: jest.Mock<string[], [], any>;
|
|
15
|
+
clear: jest.Mock<void, [], any>;
|
|
16
|
+
getProviderRegistry: jest.Mock<null, [], any>;
|
|
17
|
+
getToolRegistry: jest.Mock<null, [], any>;
|
|
18
|
+
getHookRegistry: jest.Mock<null, [], any>;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Creates a mock plugin entry
|
|
22
|
+
*/
|
|
23
|
+
export declare function createMockPluginEntry(name: string, metadata?: Partial<PluginMetadata>): {
|
|
24
|
+
name: string;
|
|
25
|
+
metadata: {
|
|
26
|
+
id?: string;
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
providers?: import("@frontmcp/sdk").ProviderType[];
|
|
30
|
+
exports?: import("@frontmcp/sdk").ProviderType[];
|
|
31
|
+
plugins?: import("@frontmcp/sdk").PluginType[];
|
|
32
|
+
adapters?: import("@frontmcp/sdk").AdapterType[];
|
|
33
|
+
tools?: import("@frontmcp/sdk").ToolType[];
|
|
34
|
+
resources?: import("@frontmcp/sdk").ResourceType[];
|
|
35
|
+
prompts?: import("@frontmcp/sdk").PromptType[];
|
|
36
|
+
};
|
|
37
|
+
onInit: jest.Mock<Promise<void>, [], any>;
|
|
38
|
+
onDestroy: jest.Mock<Promise<void>, [], any>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Adds a plugin to a mock registry
|
|
42
|
+
*/
|
|
43
|
+
export declare function addPluginToMock(registry: ReturnType<typeof createMockPluginRegistry>, name: string, pluginEntry: any): void;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/// <reference types="jest" />
|
|
3
|
+
/**
|
|
4
|
+
* Mock factory for PluginRegistry
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createMockPluginRegistry = createMockPluginRegistry;
|
|
8
|
+
exports.createMockPluginEntry = createMockPluginEntry;
|
|
9
|
+
exports.addPluginToMock = addPluginToMock;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a mock PluginRegistry for testing
|
|
12
|
+
*/
|
|
13
|
+
function createMockPluginRegistry(overrides = {}) {
|
|
14
|
+
const plugins = new Map();
|
|
15
|
+
return {
|
|
16
|
+
plugins,
|
|
17
|
+
register: jest.fn((pluginName, plugin) => {
|
|
18
|
+
plugins.set(pluginName, plugin);
|
|
19
|
+
return plugin;
|
|
20
|
+
}),
|
|
21
|
+
get: jest.fn((pluginName) => {
|
|
22
|
+
return plugins.get(pluginName);
|
|
23
|
+
}),
|
|
24
|
+
has: jest.fn((pluginName) => {
|
|
25
|
+
return plugins.has(pluginName);
|
|
26
|
+
}),
|
|
27
|
+
getAll: jest.fn(() => {
|
|
28
|
+
return Array.from(plugins.values());
|
|
29
|
+
}),
|
|
30
|
+
getNames: jest.fn(() => {
|
|
31
|
+
return Array.from(plugins.keys());
|
|
32
|
+
}),
|
|
33
|
+
clear: jest.fn(() => {
|
|
34
|
+
plugins.clear();
|
|
35
|
+
}),
|
|
36
|
+
// Nested registries access
|
|
37
|
+
getProviderRegistry: jest.fn(() => null),
|
|
38
|
+
getToolRegistry: jest.fn(() => null),
|
|
39
|
+
getHookRegistry: jest.fn(() => null),
|
|
40
|
+
...overrides,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Creates a mock plugin entry
|
|
45
|
+
*/
|
|
46
|
+
function createMockPluginEntry(name, metadata) {
|
|
47
|
+
return {
|
|
48
|
+
name,
|
|
49
|
+
metadata: {
|
|
50
|
+
name,
|
|
51
|
+
description: `Mock plugin: ${name}`,
|
|
52
|
+
...metadata,
|
|
53
|
+
},
|
|
54
|
+
onInit: jest.fn(async () => { }),
|
|
55
|
+
onDestroy: jest.fn(async () => { }),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Adds a plugin to a mock registry
|
|
60
|
+
*/
|
|
61
|
+
function addPluginToMock(registry, name, pluginEntry) {
|
|
62
|
+
registry.plugins.set(name, pluginEntry);
|
|
63
|
+
registry.has.mockImplementation((n) => n === name || registry.plugins.has(n));
|
|
64
|
+
registry.get.mockImplementation((n) => {
|
|
65
|
+
if (n === name)
|
|
66
|
+
return pluginEntry;
|
|
67
|
+
return registry.plugins.get(n);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=plugin-registry.mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-registry.mock.js","sourceRoot":"","sources":["../../../../src/__test-utils__/mocks/plugin-registry.mock.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B;;GAEG;;AAOH,4DAsCC;AAKD,sDAWC;AAKD,0CAOC;AArED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,YAA0B,EAAE;IACnE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IAEvC,OAAO;QACL,OAAO;QAEP,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,UAAkB,EAAE,MAAW,EAAE,EAAE;YACpD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAChC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,UAAkB,EAAE,EAAE;YAClC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC,CAAC;QAEF,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,UAAkB,EAAE,EAAE;YAClC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC,CAAC;QAEF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YACnB,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YACrB,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YAClB,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC;QAEF,2BAA2B;QAC3B,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACxC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACpC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAEpC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,IAAY,EAAE,QAAkC;IACpF,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE;YACR,IAAI;YACJ,WAAW,EAAE,gBAAgB,IAAI,EAAE;YACnC,GAAG,QAAQ;SACZ;QACD,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;QAC/B,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;KACnC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,QAAqD,EAAE,IAAY,EAAE,WAAgB;IACnH,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAS,EAAE,EAAE;QAC5C,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,WAAW,CAAC;QACnC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/// <reference types=\"jest\" />\n/**\n * Mock factory for PluginRegistry\n */\n\nimport { PluginMetadata } from '../../common/metadata';\n\n/**\n * Creates a mock PluginRegistry for testing\n */\nexport function createMockPluginRegistry(overrides: Partial<any> = {}) {\n const plugins = new Map<string, any>();\n\n return {\n plugins,\n\n register: jest.fn((pluginName: string, plugin: any) => {\n plugins.set(pluginName, plugin);\n return plugin;\n }),\n\n get: jest.fn((pluginName: string) => {\n return plugins.get(pluginName);\n }),\n\n has: jest.fn((pluginName: string) => {\n return plugins.has(pluginName);\n }),\n\n getAll: jest.fn(() => {\n return Array.from(plugins.values());\n }),\n\n getNames: jest.fn(() => {\n return Array.from(plugins.keys());\n }),\n\n clear: jest.fn(() => {\n plugins.clear();\n }),\n\n // Nested registries access\n getProviderRegistry: jest.fn(() => null),\n getToolRegistry: jest.fn(() => null),\n getHookRegistry: jest.fn(() => null),\n\n ...overrides,\n };\n}\n\n/**\n * Creates a mock plugin entry\n */\nexport function createMockPluginEntry(name: string, metadata?: Partial<PluginMetadata>) {\n return {\n name,\n metadata: {\n name,\n description: `Mock plugin: ${name}`,\n ...metadata,\n },\n onInit: jest.fn(async () => {}),\n onDestroy: jest.fn(async () => {}),\n };\n}\n\n/**\n * Adds a plugin to a mock registry\n */\nexport function addPluginToMock(registry: ReturnType<typeof createMockPluginRegistry>, name: string, pluginEntry: any) {\n registry.plugins.set(name, pluginEntry);\n registry.has.mockImplementation((n: string) => n === name || registry.plugins.has(n));\n registry.get.mockImplementation((n: string) => {\n if (n === name) return pluginEntry;\n return registry.plugins.get(n);\n });\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock factory for ProviderRegistry
|
|
3
|
+
*/
|
|
4
|
+
import { Token } from '../../common/interfaces';
|
|
5
|
+
import { ProviderScope } from '../../common/metadata';
|
|
6
|
+
/**
|
|
7
|
+
* Creates a mock ProviderRegistry for testing
|
|
8
|
+
*/
|
|
9
|
+
export declare function createMockProviderRegistry(overrides?: Partial<any>): {
|
|
10
|
+
instances: Map<import("../../common/interfaces").Reference<any>, any>;
|
|
11
|
+
defs: Map<import("../../common/interfaces").Reference<any>, any>;
|
|
12
|
+
ready: Promise<void>;
|
|
13
|
+
getProviders: jest.Mock<never[], [], any>;
|
|
14
|
+
get: jest.Mock<any, [token: import("../../common/interfaces").Reference<any>], any>;
|
|
15
|
+
has: jest.Mock<boolean, [token: import("../../common/interfaces").Reference<any>], any>;
|
|
16
|
+
set: jest.Mock<void, [token: import("../../common/interfaces").Reference<any>, value: any], any>;
|
|
17
|
+
resolve: jest.Mock<Promise<any>, [token: import("../../common/interfaces").Reference<any>], any>;
|
|
18
|
+
createViews: jest.Mock<{
|
|
19
|
+
global: Map<import("../../common/interfaces").Reference<any>, any>;
|
|
20
|
+
session: Map<any, any>;
|
|
21
|
+
request: Map<any, any>;
|
|
22
|
+
}, [sessionId?: string | undefined], any>;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Creates a mock provider entry
|
|
26
|
+
*/
|
|
27
|
+
export declare function createMockProviderEntry(token: Token, value: any, scope?: ProviderScope): {
|
|
28
|
+
token: import("../../common/interfaces").Reference<any>;
|
|
29
|
+
value: any;
|
|
30
|
+
scope: ProviderScope;
|
|
31
|
+
metadata: {
|
|
32
|
+
name: string;
|
|
33
|
+
scope: ProviderScope;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Adds a provider to a mock registry
|
|
38
|
+
*/
|
|
39
|
+
export declare function addProviderToMock(registry: ReturnType<typeof createMockProviderRegistry>, token: Token, value: any): void;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/// <reference types="jest" />
|
|
3
|
+
/**
|
|
4
|
+
* Mock factory for ProviderRegistry
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createMockProviderRegistry = createMockProviderRegistry;
|
|
8
|
+
exports.createMockProviderEntry = createMockProviderEntry;
|
|
9
|
+
exports.addProviderToMock = addProviderToMock;
|
|
10
|
+
const metadata_1 = require("../../common/metadata");
|
|
11
|
+
/**
|
|
12
|
+
* Creates a mock ProviderRegistry for testing
|
|
13
|
+
*/
|
|
14
|
+
function createMockProviderRegistry(overrides = {}) {
|
|
15
|
+
const instances = new Map();
|
|
16
|
+
const defs = new Map();
|
|
17
|
+
return {
|
|
18
|
+
instances,
|
|
19
|
+
defs,
|
|
20
|
+
ready: Promise.resolve(),
|
|
21
|
+
getProviders: jest.fn(() => []),
|
|
22
|
+
get: jest.fn((token) => {
|
|
23
|
+
if (instances.has(token)) {
|
|
24
|
+
return instances.get(token);
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`Token not found: ${String(token)}`);
|
|
27
|
+
}),
|
|
28
|
+
has: jest.fn((token) => instances.has(token)),
|
|
29
|
+
set: jest.fn((token, value) => {
|
|
30
|
+
instances.set(token, value);
|
|
31
|
+
}),
|
|
32
|
+
resolve: jest.fn(async (token) => {
|
|
33
|
+
if (instances.has(token)) {
|
|
34
|
+
return instances.get(token);
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Cannot resolve token: ${String(token)}`);
|
|
37
|
+
}),
|
|
38
|
+
createViews: jest.fn((sessionId) => ({
|
|
39
|
+
global: new Map(instances),
|
|
40
|
+
session: new Map(),
|
|
41
|
+
request: new Map(),
|
|
42
|
+
})),
|
|
43
|
+
...overrides,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Creates a mock provider entry
|
|
48
|
+
*/
|
|
49
|
+
function createMockProviderEntry(token, value, scope = metadata_1.ProviderScope.GLOBAL) {
|
|
50
|
+
return {
|
|
51
|
+
token,
|
|
52
|
+
value,
|
|
53
|
+
scope,
|
|
54
|
+
metadata: {
|
|
55
|
+
name: String(token),
|
|
56
|
+
scope,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Adds a provider to a mock registry
|
|
62
|
+
*/
|
|
63
|
+
function addProviderToMock(registry, token, value) {
|
|
64
|
+
registry.instances.set(token, value);
|
|
65
|
+
registry.has.mockImplementation((t) => t === token || registry.instances.has(t));
|
|
66
|
+
registry.get.mockImplementation((t) => {
|
|
67
|
+
if (t === token)
|
|
68
|
+
return value;
|
|
69
|
+
return registry.instances.get(t);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=provider-registry.mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-registry.mock.js","sourceRoot":"","sources":["../../../../src/__test-utils__/mocks/provider-registry.mock.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B;;GAEG;;AAQH,gEAuCC;AAKD,0DAUC;AAKD,8CAOC;AAvED,oDAAsD;AAEtD;;GAEG;AACH,SAAgB,0BAA0B,CAAC,YAA0B,EAAE;IACrE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAc,CAAC;IAEnC,OAAO;QACL,SAAS;QACT,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;QAExB,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAE/B,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAY,EAAE,EAAE;YAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEpD,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAY,EAAE,KAAU,EAAE,EAAE;YACxC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAY,EAAE,EAAE;YACtC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,SAAkB,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC;YAC1B,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,OAAO,EAAE,IAAI,GAAG,EAAE;SACnB,CAAC,CAAC;QAEH,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,KAAY,EAAE,KAAU,EAAE,QAAuB,wBAAa,CAAC,MAAM;IAC3G,OAAO;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;YACnB,KAAK;SACN;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,QAAuD,EAAE,KAAY,EAAE,KAAU;IACjH,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAQ,EAAE,EAAE;QAC3C,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAC9B,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/// <reference types=\"jest\" />\n/**\n * Mock factory for ProviderRegistry\n */\n\nimport { Token } from '../../common/interfaces';\nimport { ProviderScope } from '../../common/metadata';\n\n/**\n * Creates a mock ProviderRegistry for testing\n */\nexport function createMockProviderRegistry(overrides: Partial<any> = {}) {\n const instances = new Map<Token, any>();\n const defs = new Map<Token, any>();\n\n return {\n instances,\n defs,\n ready: Promise.resolve(),\n\n getProviders: jest.fn(() => []),\n\n get: jest.fn((token: Token) => {\n if (instances.has(token)) {\n return instances.get(token);\n }\n throw new Error(`Token not found: ${String(token)}`);\n }),\n\n has: jest.fn((token: Token) => instances.has(token)),\n\n set: jest.fn((token: Token, value: any) => {\n instances.set(token, value);\n }),\n\n resolve: jest.fn(async (token: Token) => {\n if (instances.has(token)) {\n return instances.get(token);\n }\n throw new Error(`Cannot resolve token: ${String(token)}`);\n }),\n\n createViews: jest.fn((sessionId?: string) => ({\n global: new Map(instances),\n session: new Map(),\n request: new Map(),\n })),\n\n ...overrides,\n };\n}\n\n/**\n * Creates a mock provider entry\n */\nexport function createMockProviderEntry(token: Token, value: any, scope: ProviderScope = ProviderScope.GLOBAL) {\n return {\n token,\n value,\n scope,\n metadata: {\n name: String(token),\n scope,\n },\n };\n}\n\n/**\n * Adds a provider to a mock registry\n */\nexport function addProviderToMock(registry: ReturnType<typeof createMockProviderRegistry>, token: Token, value: any) {\n registry.instances.set(token, value);\n registry.has.mockImplementation((t: Token) => t === token || registry.instances.has(t));\n registry.get.mockImplementation((t: Token) => {\n if (t === token) return value;\n return registry.instances.get(t);\n });\n}\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock factory for ToolRegistry
|
|
3
|
+
*/
|
|
4
|
+
import { ToolMetadata } from '../../common/metadata';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a mock ToolRegistry for testing
|
|
7
|
+
*/
|
|
8
|
+
export declare function createMockToolRegistry(overrides?: Partial<any>): {
|
|
9
|
+
tools: Map<string, any>;
|
|
10
|
+
register: jest.Mock<any, [name: string, toolInstance: any], any>;
|
|
11
|
+
get: jest.Mock<any, [name: string], any>;
|
|
12
|
+
has: jest.Mock<boolean, [name: string], any>;
|
|
13
|
+
getAll: jest.Mock<any[], [], any>;
|
|
14
|
+
getNames: jest.Mock<string[], [], any>;
|
|
15
|
+
list: jest.Mock<{
|
|
16
|
+
name: string;
|
|
17
|
+
metadata: any;
|
|
18
|
+
}[], [], any>;
|
|
19
|
+
clear: jest.Mock<void, [], any>;
|
|
20
|
+
call: jest.Mock<Promise<any>, [name: string, input: any], any>;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Creates a mock tool entry
|
|
24
|
+
*/
|
|
25
|
+
export declare function createMockToolEntry(name: string, metadata?: Partial<ToolMetadata>, execute?: (input: any) => Promise<any>): {
|
|
26
|
+
name: string;
|
|
27
|
+
metadata: {
|
|
28
|
+
id?: string;
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
inputSchema: import("zod").ZodRawShape;
|
|
32
|
+
rawInputSchema?: import("json-schema").JSONSchema7;
|
|
33
|
+
outputSchema?: import("../../common/metadata").ToolOutputType;
|
|
34
|
+
tags?: string[];
|
|
35
|
+
annotations?: import("../../common/metadata").ToolAnnotations;
|
|
36
|
+
hideFromDiscovery?: boolean;
|
|
37
|
+
};
|
|
38
|
+
execute: jest.Mock<Promise<any>, [input: any], any>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Adds a tool to a mock registry
|
|
42
|
+
*/
|
|
43
|
+
export declare function addToolToMock(registry: ReturnType<typeof createMockToolRegistry>, name: string, toolEntry: any): void;
|