@fias/plugin-dev-harness 1.1.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/dist/bridge/live-handler.d.ts +27 -0
- package/dist/bridge/live-handler.d.ts.map +1 -0
- package/dist/bridge/live-handler.js +47 -0
- package/dist/bridge/live-handler.js.map +1 -0
- package/dist/bridge/live-handler.test.d.ts +2 -0
- package/dist/bridge/live-handler.test.d.ts.map +1 -0
- package/dist/bridge/live-handler.test.js +182 -0
- package/dist/bridge/live-handler.test.js.map +1 -0
- package/dist/bridge/mock-handler.d.ts +25 -0
- package/dist/bridge/mock-handler.d.ts.map +1 -0
- package/dist/bridge/mock-handler.js +81 -0
- package/dist/bridge/mock-handler.js.map +1 -0
- package/dist/bridge/mock-handler.test.d.ts +2 -0
- package/dist/bridge/mock-handler.test.d.ts.map +1 -0
- package/dist/bridge/mock-handler.test.js +322 -0
- package/dist/bridge/mock-handler.test.js.map +1 -0
- package/dist/bridge/types.d.ts +18 -0
- package/dist/bridge/types.d.ts.map +1 -0
- package/dist/bridge/types.js +8 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/cli/dev.d.ts +15 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +64 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/cli/dev.test.d.ts +2 -0
- package/dist/cli/dev.test.d.ts.map +1 -0
- package/dist/cli/dev.test.js +114 -0
- package/dist/cli/dev.test.js.map +1 -0
- package/dist/cli/entities.d.ts +9 -0
- package/dist/cli/entities.d.ts.map +1 -0
- package/dist/cli/entities.js +71 -0
- package/dist/cli/entities.js.map +1 -0
- package/dist/cli/entities.test.d.ts +2 -0
- package/dist/cli/entities.test.d.ts.map +1 -0
- package/dist/cli/entities.test.js +179 -0
- package/dist/cli/entities.test.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +29 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/index.test.d.ts +2 -0
- package/dist/cli/index.test.d.ts.map +1 -0
- package/dist/cli/index.test.js +55 -0
- package/dist/cli/index.test.js.map +1 -0
- package/dist/cli/login.d.ts +9 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +80 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/login.test.d.ts +2 -0
- package/dist/cli/login.test.d.ts.map +1 -0
- package/dist/cli/login.test.js +53 -0
- package/dist/cli/login.test.js.map +1 -0
- package/dist/cli/submit.d.ts +9 -0
- package/dist/cli/submit.d.ts.map +1 -0
- package/dist/cli/submit.js +250 -0
- package/dist/cli/submit.js.map +1 -0
- package/dist/cli/submit.test.d.ts +2 -0
- package/dist/cli/submit.test.d.ts.map +1 -0
- package/dist/cli/submit.test.js +381 -0
- package/dist/cli/submit.test.js.map +1 -0
- package/dist/cli/validate.d.ts +9 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +154 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/cli/validate.test.d.ts +2 -0
- package/dist/cli/validate.test.d.ts.map +1 -0
- package/dist/cli/validate.test.js +275 -0
- package/dist/cli/validate.test.js.map +1 -0
- package/dist/config/config-loader.d.ts +25 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +78 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-loader.test.d.ts +2 -0
- package/dist/config/config-loader.test.d.ts.map +1 -0
- package/dist/config/config-loader.test.js +163 -0
- package/dist/config/config-loader.test.js.map +1 -0
- package/dist/config/credentials.d.ts +11 -0
- package/dist/config/credentials.d.ts.map +1 -0
- package/dist/config/credentials.js +71 -0
- package/dist/config/credentials.js.map +1 -0
- package/dist/config/credentials.test.d.ts +2 -0
- package/dist/config/credentials.test.d.ts.map +1 -0
- package/dist/config/credentials.test.js +115 -0
- package/dist/config/credentials.test.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/mocks/entity-responses.d.ts +15 -0
- package/dist/mocks/entity-responses.d.ts.map +1 -0
- package/dist/mocks/entity-responses.js +21 -0
- package/dist/mocks/entity-responses.js.map +1 -0
- package/dist/mocks/entity-responses.test.d.ts +2 -0
- package/dist/mocks/entity-responses.test.d.ts.map +1 -0
- package/dist/mocks/entity-responses.test.js +53 -0
- package/dist/mocks/entity-responses.test.js.map +1 -0
- package/dist/mocks/theme.d.ts +22 -0
- package/dist/mocks/theme.d.ts.map +1 -0
- package/dist/mocks/theme.js +37 -0
- package/dist/mocks/theme.js.map +1 -0
- package/dist/mocks/theme.test.d.ts +2 -0
- package/dist/mocks/theme.test.d.ts.map +1 -0
- package/dist/mocks/theme.test.js +66 -0
- package/dist/mocks/theme.test.js.map +1 -0
- package/dist/mocks/user.d.ts +12 -0
- package/dist/mocks/user.d.ts.map +1 -0
- package/dist/mocks/user.js +14 -0
- package/dist/mocks/user.js.map +1 -0
- package/dist/mocks/user.test.d.ts +2 -0
- package/dist/mocks/user.test.d.ts.map +1 -0
- package/dist/mocks/user.test.js +23 -0
- package/dist/mocks/user.test.js.map +1 -0
- package/dist/server/harness-server.d.ts +24 -0
- package/dist/server/harness-server.d.ts.map +1 -0
- package/dist/server/harness-server.js +433 -0
- package/dist/server/harness-server.js.map +1 -0
- package/dist/server/harness-server.test.d.ts +2 -0
- package/dist/server/harness-server.test.d.ts.map +1 -0
- package/dist/server/harness-server.test.js +178 -0
- package/dist/server/harness-server.test.js.map +1 -0
- package/dist/server/static/harness.css +160 -0
- package/dist/server/static/harness.html +35 -0
- package/dist/server/static/harness.js +345 -0
- package/package.json +43 -0
- package/templates/fias-dev.config.json +12 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live Bridge Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles bridge requests by proxying them to the FIAS Developer API.
|
|
5
|
+
* Uses real AI models and deducts credits.
|
|
6
|
+
*
|
|
7
|
+
* Local-only operations (get_theme, get_user) are handled with mock
|
|
8
|
+
* data, matching what the production PluginBridgeHost does client-side.
|
|
9
|
+
*/
|
|
10
|
+
import type { BridgeHandler, BridgeRequest } from './types';
|
|
11
|
+
export interface LiveHandlerOptions {
|
|
12
|
+
apiKey: string;
|
|
13
|
+
apiUrl: string;
|
|
14
|
+
permissions: string[];
|
|
15
|
+
mockUser: {
|
|
16
|
+
userId: string;
|
|
17
|
+
displayName: string;
|
|
18
|
+
avatar: string | null;
|
|
19
|
+
};
|
|
20
|
+
mockTheme: 'light' | 'dark';
|
|
21
|
+
}
|
|
22
|
+
export declare class LiveBridgeHandler implements BridgeHandler {
|
|
23
|
+
private options;
|
|
24
|
+
constructor(options: LiveHandlerOptions);
|
|
25
|
+
handle(request: BridgeRequest): Promise<unknown>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=live-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-handler.d.ts","sourceRoot":"","sources":["../../src/bridge/live-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAED,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,EAAE,kBAAkB;IAIjC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAiCvD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Live Bridge Handler
|
|
4
|
+
*
|
|
5
|
+
* Handles bridge requests by proxying them to the FIAS Developer API.
|
|
6
|
+
* Uses real AI models and deducts credits.
|
|
7
|
+
*
|
|
8
|
+
* Local-only operations (get_theme, get_user) are handled with mock
|
|
9
|
+
* data, matching what the production PluginBridgeHost does client-side.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LiveBridgeHandler = void 0;
|
|
13
|
+
const theme_1 = require("../mocks/theme");
|
|
14
|
+
class LiveBridgeHandler {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.options = options;
|
|
17
|
+
}
|
|
18
|
+
async handle(request) {
|
|
19
|
+
// Local-only operations (same as production PluginBridgeHost)
|
|
20
|
+
switch (request.type) {
|
|
21
|
+
case 'get_user':
|
|
22
|
+
return this.options.mockUser;
|
|
23
|
+
case 'get_theme':
|
|
24
|
+
return (0, theme_1.getTheme)(this.options.mockTheme);
|
|
25
|
+
}
|
|
26
|
+
// Proxy to Developer API for server-side operations
|
|
27
|
+
const response = await fetch(`${this.options.apiUrl}/developer/bridge`, {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
headers: {
|
|
30
|
+
'Content-Type': 'application/json',
|
|
31
|
+
Authorization: `Bearer ${this.options.apiKey}`,
|
|
32
|
+
'X-Plugin-Permissions': this.options.permissions.join(','),
|
|
33
|
+
},
|
|
34
|
+
body: JSON.stringify({
|
|
35
|
+
type: request.type,
|
|
36
|
+
payload: request.payload,
|
|
37
|
+
}),
|
|
38
|
+
});
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
const err = await response.json().catch(() => ({ error: { message: 'Bridge call failed' } }));
|
|
41
|
+
throw new Error(err.error?.message || `API error: ${response.status}`);
|
|
42
|
+
}
|
|
43
|
+
return response.json();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.LiveBridgeHandler = LiveBridgeHandler;
|
|
47
|
+
//# sourceMappingURL=live-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-handler.js","sourceRoot":"","sources":["../../src/bridge/live-handler.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAGH,0CAA0C;AAU1C,MAAa,iBAAiB;IAG5B,YAAY,OAA2B;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,8DAA8D;QAC9D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAE/B,KAAK,WAAW;gBACd,OAAO,IAAA,gBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,oDAAoD;QACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,mBAAmB,EAAE;YACtE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC9C,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;aAC3D;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9F,MAAM,IAAI,KAAK,CACZ,GAAwC,CAAC,KAAK,EAAE,OAAO,IAAI,cAAc,QAAQ,CAAC,MAAM,EAAE,CAC5F,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACF;AAxCD,8CAwCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-handler.test.d.ts","sourceRoot":"","sources":["../../src/bridge/live-handler.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const live_handler_1 = require("./live-handler");
|
|
4
|
+
const theme_1 = require("../mocks/theme");
|
|
5
|
+
describe('bridge/LiveBridgeHandler', () => {
|
|
6
|
+
const defaultOptions = {
|
|
7
|
+
apiKey: 'fias_sk_test_key_123',
|
|
8
|
+
apiUrl: 'https://api.fias.app/v1',
|
|
9
|
+
permissions: ['theme:read', 'entities:invoke', 'storage:sandbox'],
|
|
10
|
+
mockUser: {
|
|
11
|
+
userId: 'test_user_001',
|
|
12
|
+
displayName: 'Test User',
|
|
13
|
+
avatar: null,
|
|
14
|
+
},
|
|
15
|
+
mockTheme: 'dark',
|
|
16
|
+
};
|
|
17
|
+
let handler;
|
|
18
|
+
let originalFetch;
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
originalFetch = global.fetch;
|
|
21
|
+
handler = new live_handler_1.LiveBridgeHandler({ ...defaultOptions });
|
|
22
|
+
});
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
global.fetch = originalFetch;
|
|
25
|
+
});
|
|
26
|
+
describe('get_user', () => {
|
|
27
|
+
it('returns the configured mock user (no network call)', async () => {
|
|
28
|
+
global.fetch = jest.fn().mockRejectedValue(new Error('Should not be called'));
|
|
29
|
+
const result = await handler.handle({ type: 'get_user', payload: {} });
|
|
30
|
+
expect(result).toEqual({
|
|
31
|
+
userId: 'test_user_001',
|
|
32
|
+
displayName: 'Test User',
|
|
33
|
+
avatar: null,
|
|
34
|
+
});
|
|
35
|
+
expect(global.fetch).not.toHaveBeenCalled();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('get_theme', () => {
|
|
39
|
+
it('returns dark theme when mockTheme is dark (no network call)', async () => {
|
|
40
|
+
global.fetch = jest.fn().mockRejectedValue(new Error('Should not be called'));
|
|
41
|
+
const result = await handler.handle({ type: 'get_theme', payload: {} });
|
|
42
|
+
expect(result).toEqual(theme_1.DARK_THEME);
|
|
43
|
+
expect(global.fetch).not.toHaveBeenCalled();
|
|
44
|
+
});
|
|
45
|
+
it('returns light theme when mockTheme is light', async () => {
|
|
46
|
+
const lightHandler = new live_handler_1.LiveBridgeHandler({
|
|
47
|
+
...defaultOptions,
|
|
48
|
+
mockTheme: 'light',
|
|
49
|
+
});
|
|
50
|
+
global.fetch = jest.fn().mockRejectedValue(new Error('Should not be called'));
|
|
51
|
+
const result = await lightHandler.handle({ type: 'get_theme', payload: {} });
|
|
52
|
+
expect(result).toEqual(theme_1.LIGHT_THEME);
|
|
53
|
+
expect(global.fetch).not.toHaveBeenCalled();
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('entity_invoke (proxied to API)', () => {
|
|
57
|
+
it('calls fetch with correct URL, headers, and body', async () => {
|
|
58
|
+
const mockResponse = {
|
|
59
|
+
output: 'AI response text',
|
|
60
|
+
metadata: { entityId: 'entity_1', tokensUsed: 150, cost: 0.003 },
|
|
61
|
+
};
|
|
62
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
63
|
+
ok: true,
|
|
64
|
+
json: () => Promise.resolve(mockResponse),
|
|
65
|
+
});
|
|
66
|
+
const result = await handler.handle({
|
|
67
|
+
type: 'entity_invoke',
|
|
68
|
+
payload: { entityId: 'entity_1', input: 'Hello AI' },
|
|
69
|
+
});
|
|
70
|
+
expect(global.fetch).toHaveBeenCalledWith('https://api.fias.app/v1/developer/bridge', {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
headers: {
|
|
73
|
+
'Content-Type': 'application/json',
|
|
74
|
+
Authorization: 'Bearer fias_sk_test_key_123',
|
|
75
|
+
'X-Plugin-Permissions': 'theme:read,entities:invoke,storage:sandbox',
|
|
76
|
+
},
|
|
77
|
+
body: JSON.stringify({
|
|
78
|
+
type: 'entity_invoke',
|
|
79
|
+
payload: { entityId: 'entity_1', input: 'Hello AI' },
|
|
80
|
+
}),
|
|
81
|
+
});
|
|
82
|
+
expect(result).toEqual(mockResponse);
|
|
83
|
+
});
|
|
84
|
+
it('throws error with API message when response is not ok', async () => {
|
|
85
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
86
|
+
ok: false,
|
|
87
|
+
status: 403,
|
|
88
|
+
json: () => Promise.resolve({ error: { message: 'Insufficient credits' } }),
|
|
89
|
+
});
|
|
90
|
+
await expect(handler.handle({
|
|
91
|
+
type: 'entity_invoke',
|
|
92
|
+
payload: { entityId: 'entity_1', input: 'Hello' },
|
|
93
|
+
})).rejects.toThrow('Insufficient credits');
|
|
94
|
+
});
|
|
95
|
+
it('throws generic error when response is not ok and json parsing fails', async () => {
|
|
96
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
97
|
+
ok: false,
|
|
98
|
+
status: 500,
|
|
99
|
+
json: () => Promise.reject(new Error('Invalid JSON')),
|
|
100
|
+
});
|
|
101
|
+
await expect(handler.handle({
|
|
102
|
+
type: 'entity_invoke',
|
|
103
|
+
payload: { entityId: 'entity_1', input: 'Hello' },
|
|
104
|
+
})).rejects.toThrow('Bridge call failed');
|
|
105
|
+
});
|
|
106
|
+
it('throws generic status error when error object has no message', async () => {
|
|
107
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
108
|
+
ok: false,
|
|
109
|
+
status: 502,
|
|
110
|
+
json: () => Promise.resolve({}),
|
|
111
|
+
});
|
|
112
|
+
await expect(handler.handle({
|
|
113
|
+
type: 'entity_invoke',
|
|
114
|
+
payload: { entityId: 'entity_1', input: 'Hello' },
|
|
115
|
+
})).rejects.toThrow('API error: 502');
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe('storage_read (proxied to API)', () => {
|
|
119
|
+
it('proxies storage_read to the API', async () => {
|
|
120
|
+
const mockResponse = { content: 'file data', exists: true, sizeBytes: 9 };
|
|
121
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
122
|
+
ok: true,
|
|
123
|
+
json: () => Promise.resolve(mockResponse),
|
|
124
|
+
});
|
|
125
|
+
const result = await handler.handle({
|
|
126
|
+
type: 'storage_read',
|
|
127
|
+
payload: { path: 'data.txt' },
|
|
128
|
+
});
|
|
129
|
+
expect(global.fetch).toHaveBeenCalledWith('https://api.fias.app/v1/developer/bridge', expect.objectContaining({
|
|
130
|
+
method: 'POST',
|
|
131
|
+
body: JSON.stringify({
|
|
132
|
+
type: 'storage_read',
|
|
133
|
+
payload: { path: 'data.txt' },
|
|
134
|
+
}),
|
|
135
|
+
}));
|
|
136
|
+
expect(result).toEqual(mockResponse);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe('storage_write (proxied to API)', () => {
|
|
140
|
+
it('proxies storage_write to the API', async () => {
|
|
141
|
+
const mockResponse = { success: true, s3Key: 'plugins/data.txt' };
|
|
142
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
143
|
+
ok: true,
|
|
144
|
+
json: () => Promise.resolve(mockResponse),
|
|
145
|
+
});
|
|
146
|
+
const result = await handler.handle({
|
|
147
|
+
type: 'storage_write',
|
|
148
|
+
payload: { path: 'data.txt', content: 'hello' },
|
|
149
|
+
});
|
|
150
|
+
expect(result).toEqual(mockResponse);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe('storage_list (proxied to API)', () => {
|
|
154
|
+
it('proxies storage_list to the API', async () => {
|
|
155
|
+
const mockResponse = { files: ['a.txt', 'b.txt'] };
|
|
156
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
157
|
+
ok: true,
|
|
158
|
+
json: () => Promise.resolve(mockResponse),
|
|
159
|
+
});
|
|
160
|
+
const result = await handler.handle({
|
|
161
|
+
type: 'storage_list',
|
|
162
|
+
payload: { prefix: '' },
|
|
163
|
+
});
|
|
164
|
+
expect(result).toEqual(mockResponse);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe('storage_delete (proxied to API)', () => {
|
|
168
|
+
it('proxies storage_delete to the API', async () => {
|
|
169
|
+
const mockResponse = { success: true };
|
|
170
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
171
|
+
ok: true,
|
|
172
|
+
json: () => Promise.resolve(mockResponse),
|
|
173
|
+
});
|
|
174
|
+
const result = await handler.handle({
|
|
175
|
+
type: 'storage_delete',
|
|
176
|
+
payload: { path: 'old.txt' },
|
|
177
|
+
});
|
|
178
|
+
expect(result).toEqual(mockResponse);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
//# sourceMappingURL=live-handler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-handler.test.js","sourceRoot":"","sources":["../../src/bridge/live-handler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock Bridge Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles bridge requests in mock mode with canned responses.
|
|
5
|
+
* Storage is backed by an in-memory map (persists across reloads
|
|
6
|
+
* within the same server session).
|
|
7
|
+
*/
|
|
8
|
+
import type { BridgeHandler, BridgeRequest } from './types';
|
|
9
|
+
import type { MockEntityConfig } from '../config/config-loader';
|
|
10
|
+
export interface MockHandlerOptions {
|
|
11
|
+
mockUser: {
|
|
12
|
+
userId: string;
|
|
13
|
+
displayName: string;
|
|
14
|
+
avatar: string | null;
|
|
15
|
+
};
|
|
16
|
+
mockTheme: 'light' | 'dark';
|
|
17
|
+
mockEntities?: Record<string, MockEntityConfig>;
|
|
18
|
+
}
|
|
19
|
+
export declare class MockBridgeHandler implements BridgeHandler {
|
|
20
|
+
private options;
|
|
21
|
+
private storage;
|
|
22
|
+
constructor(options: MockHandlerOptions);
|
|
23
|
+
handle(request: BridgeRequest): Promise<unknown>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=mock-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-handler.d.ts","sourceRoot":"","sources":["../../src/bridge/mock-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACjD;AAED,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAA6B;gBAEhC,OAAO,EAAE,kBAAkB;IAIjC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CA+EvD"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mock Bridge Handler
|
|
4
|
+
*
|
|
5
|
+
* Handles bridge requests in mock mode with canned responses.
|
|
6
|
+
* Storage is backed by an in-memory map (persists across reloads
|
|
7
|
+
* within the same server session).
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.MockBridgeHandler = void 0;
|
|
11
|
+
const theme_1 = require("../mocks/theme");
|
|
12
|
+
const entity_responses_1 = require("../mocks/entity-responses");
|
|
13
|
+
class MockBridgeHandler {
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.storage = new Map();
|
|
16
|
+
this.options = options;
|
|
17
|
+
}
|
|
18
|
+
async handle(request) {
|
|
19
|
+
switch (request.type) {
|
|
20
|
+
case 'get_user':
|
|
21
|
+
return this.options.mockUser;
|
|
22
|
+
case 'get_theme':
|
|
23
|
+
return (0, theme_1.getTheme)(this.options.mockTheme);
|
|
24
|
+
case 'entity_invoke': {
|
|
25
|
+
const { entityId, input } = request.payload;
|
|
26
|
+
if (!entityId || !input) {
|
|
27
|
+
throw new Error('entityId and input are required');
|
|
28
|
+
}
|
|
29
|
+
// Check for custom mock response
|
|
30
|
+
const customMock = this.options.mockEntities?.[entityId];
|
|
31
|
+
const mockResponse = customMock
|
|
32
|
+
? { response: customMock.response, delay: customMock.delay ?? 1000 }
|
|
33
|
+
: (0, entity_responses_1.getDefaultMockResponse)(entityId, input);
|
|
34
|
+
// Simulate AI delay
|
|
35
|
+
await new Promise((resolve) => setTimeout(resolve, mockResponse.delay));
|
|
36
|
+
return {
|
|
37
|
+
output: mockResponse.response,
|
|
38
|
+
metadata: {
|
|
39
|
+
entityId,
|
|
40
|
+
tokensUsed: 0,
|
|
41
|
+
cost: 0,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
case 'storage_read': {
|
|
46
|
+
const { path: filePath } = request.payload;
|
|
47
|
+
if (!filePath)
|
|
48
|
+
throw new Error('path is required');
|
|
49
|
+
const content = this.storage.get(filePath);
|
|
50
|
+
return content !== undefined
|
|
51
|
+
? { content, exists: true, sizeBytes: Buffer.byteLength(content) }
|
|
52
|
+
: { content: null, exists: false };
|
|
53
|
+
}
|
|
54
|
+
case 'storage_write': {
|
|
55
|
+
const { path: filePath, content } = request.payload;
|
|
56
|
+
if (!filePath)
|
|
57
|
+
throw new Error('path is required');
|
|
58
|
+
if (content === undefined)
|
|
59
|
+
throw new Error('content is required');
|
|
60
|
+
this.storage.set(filePath, content);
|
|
61
|
+
return { success: true, s3Key: `mock/${filePath}` };
|
|
62
|
+
}
|
|
63
|
+
case 'storage_list': {
|
|
64
|
+
const { prefix } = request.payload;
|
|
65
|
+
const files = Array.from(this.storage.keys()).filter((key) => !prefix || key.startsWith(prefix));
|
|
66
|
+
return { files };
|
|
67
|
+
}
|
|
68
|
+
case 'storage_delete': {
|
|
69
|
+
const { path: filePath } = request.payload;
|
|
70
|
+
if (!filePath)
|
|
71
|
+
throw new Error('path is required');
|
|
72
|
+
this.storage.delete(filePath);
|
|
73
|
+
return { success: true };
|
|
74
|
+
}
|
|
75
|
+
default:
|
|
76
|
+
throw new Error(`Unknown bridge call type: ${request.type}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.MockBridgeHandler = MockBridgeHandler;
|
|
81
|
+
//# sourceMappingURL=mock-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-handler.js","sourceRoot":"","sources":["../../src/bridge/mock-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-handler.test.d.ts","sourceRoot":"","sources":["../../src/bridge/mock-handler.test.ts"],"names":[],"mappings":""}
|