skybridge 0.0.0-dev.ad7314d → 0.0.0-dev.b0530f1
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 +21 -674
- package/README.md +74 -147
- package/dist/src/server/devtoolsStaticServer.d.ts +15 -0
- package/dist/src/server/devtoolsStaticServer.js +38 -0
- package/dist/src/server/devtoolsStaticServer.js.map +1 -0
- package/dist/src/server/index.d.ts +3 -0
- package/dist/src/server/index.js +1 -0
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/server/inferUtilityTypes.d.ts +64 -0
- package/dist/src/server/inferUtilityTypes.js +2 -0
- package/dist/src/server/inferUtilityTypes.js.map +1 -0
- package/dist/src/server/server.d.ts +62 -9
- package/dist/src/server/server.js +56 -28
- package/dist/src/server/server.js.map +1 -1
- package/dist/src/server/templateHelper.d.ts +9 -8
- package/dist/src/server/templateHelper.js +5 -12
- package/dist/src/server/templateHelper.js.map +1 -1
- package/dist/src/server/templates/development.hbs +3 -2
- package/dist/src/server/templates/production.hbs +3 -2
- package/dist/src/server/widgetsDevServer.js +3 -3
- package/dist/src/server/widgetsDevServer.js.map +1 -1
- package/dist/src/test/utils.d.ts +97 -1
- package/dist/src/test/utils.js +182 -3
- package/dist/src/test/utils.js.map +1 -1
- package/dist/src/test/widget.test.js +75 -21
- package/dist/src/test/widget.test.js.map +1 -1
- package/dist/src/web/create-store.d.ts +3 -0
- package/dist/src/web/create-store.js +25 -0
- package/dist/src/web/create-store.js.map +1 -0
- package/dist/src/web/create-store.test.js +70 -0
- package/dist/src/web/create-store.test.js.map +1 -0
- package/dist/src/web/data-llm.d.ts +14 -0
- package/dist/src/web/data-llm.js +68 -0
- package/dist/src/web/data-llm.js.map +1 -0
- package/dist/src/web/data-llm.test.js +76 -0
- package/dist/src/web/data-llm.test.js.map +1 -0
- package/dist/src/web/generate-helpers.d.ts +115 -0
- package/dist/src/web/generate-helpers.js +111 -0
- package/dist/src/web/generate-helpers.js.map +1 -0
- package/dist/src/web/generate-helpers.test-d.d.ts +1 -0
- package/dist/src/web/generate-helpers.test-d.js +180 -0
- package/dist/src/web/generate-helpers.test-d.js.map +1 -0
- package/dist/src/web/generate-helpers.test.d.ts +1 -0
- package/dist/src/web/generate-helpers.test.js +17 -0
- package/dist/src/web/generate-helpers.test.js.map +1 -0
- package/dist/src/web/helpers/state.d.ts +7 -0
- package/dist/src/web/helpers/state.js +40 -0
- package/dist/src/web/helpers/state.js.map +1 -0
- package/dist/src/web/helpers/state.test.d.ts +1 -0
- package/dist/src/web/helpers/state.test.js +53 -0
- package/dist/src/web/helpers/state.test.js.map +1 -0
- package/dist/src/web/hooks/index.d.ts +12 -0
- package/dist/src/web/hooks/index.js +13 -0
- package/dist/src/web/hooks/index.js.map +1 -0
- package/dist/src/web/hooks/use-call-tool.d.ts +100 -0
- package/dist/src/web/{use-call-tool.js → hooks/use-call-tool.js} +26 -10
- package/dist/src/web/hooks/use-call-tool.js.map +1 -0
- package/dist/src/web/hooks/use-call-tool.test-d.d.ts +1 -0
- package/dist/src/web/hooks/use-call-tool.test-d.js +104 -0
- package/dist/src/web/hooks/use-call-tool.test-d.js.map +1 -0
- package/dist/src/web/hooks/use-call-tool.test.d.ts +1 -0
- package/dist/src/web/hooks/use-call-tool.test.js +165 -0
- package/dist/src/web/hooks/use-call-tool.test.js.map +1 -0
- package/dist/src/web/hooks/use-display-mode.d.ts +4 -0
- package/dist/src/web/hooks/use-display-mode.js +7 -0
- package/dist/src/web/hooks/use-display-mode.js.map +1 -0
- package/dist/src/web/hooks/use-display-mode.test.d.ts +1 -0
- package/dist/src/web/hooks/use-display-mode.test.js +40 -0
- package/dist/src/web/hooks/use-display-mode.test.js.map +1 -0
- package/dist/src/web/hooks/use-files.d.ts +10 -0
- package/dist/src/web/hooks/use-files.js +7 -0
- package/dist/src/web/hooks/use-files.js.map +1 -0
- package/dist/src/web/hooks/use-files.test.d.ts +1 -0
- package/dist/src/web/hooks/use-files.test.js +29 -0
- package/dist/src/web/hooks/use-files.test.js.map +1 -0
- package/dist/src/web/hooks/use-locale.d.ts +1 -0
- package/dist/src/web/hooks/use-locale.js +5 -0
- package/dist/src/web/hooks/use-locale.js.map +1 -0
- package/dist/src/web/hooks/use-locale.test.d.ts +1 -0
- package/dist/src/web/hooks/use-locale.test.js +21 -0
- package/dist/src/web/hooks/use-locale.test.js.map +1 -0
- package/dist/src/web/hooks/use-open-external.d.ts +1 -0
- package/dist/src/web/hooks/use-open-external.js +6 -0
- package/dist/src/web/hooks/use-open-external.js.map +1 -0
- package/dist/src/web/hooks/use-open-external.test.d.ts +1 -0
- package/dist/src/web/hooks/use-open-external.test.js +24 -0
- package/dist/src/web/hooks/use-open-external.test.js.map +1 -0
- package/dist/src/web/hooks/use-openai-global.d.ts +2 -0
- package/dist/src/web/{use-openai-global.js → hooks/use-openai-global.js} +7 -3
- package/dist/src/web/hooks/use-openai-global.js.map +1 -0
- package/dist/src/web/hooks/use-request-modal.d.ts +6 -0
- package/dist/src/web/hooks/use-request-modal.js +9 -0
- package/dist/src/web/hooks/use-request-modal.js.map +1 -0
- package/dist/src/web/hooks/use-request-modal.test.d.ts +1 -0
- package/dist/src/web/hooks/use-request-modal.test.js +24 -0
- package/dist/src/web/hooks/use-request-modal.test.js.map +1 -0
- package/dist/src/web/hooks/use-send-follow-up-message.d.ts +1 -0
- package/dist/src/web/hooks/use-send-follow-up-message.js +11 -0
- package/dist/src/web/hooks/use-send-follow-up-message.js.map +1 -0
- package/dist/src/web/hooks/use-theme.d.ts +1 -0
- package/dist/src/web/hooks/use-theme.js +5 -0
- package/dist/src/web/hooks/use-theme.js.map +1 -0
- package/dist/src/web/hooks/use-theme.test.d.ts +1 -0
- package/dist/src/web/hooks/use-theme.test.js +26 -0
- package/dist/src/web/hooks/use-theme.test.js.map +1 -0
- package/dist/src/web/hooks/use-tool-info.d.ts +25 -0
- package/dist/src/web/hooks/use-tool-info.js +20 -0
- package/dist/src/web/hooks/use-tool-info.js.map +1 -0
- package/dist/src/web/hooks/use-tool-info.test-d.d.ts +1 -0
- package/dist/src/web/hooks/use-tool-info.test-d.js +73 -0
- package/dist/src/web/hooks/use-tool-info.test-d.js.map +1 -0
- package/dist/src/web/hooks/use-tool-info.test.d.ts +1 -0
- package/dist/src/web/hooks/use-tool-info.test.js +59 -0
- package/dist/src/web/hooks/use-tool-info.test.js.map +1 -0
- package/dist/src/web/hooks/use-user-agent.d.ts +1 -0
- package/dist/src/web/hooks/use-user-agent.js +5 -0
- package/dist/src/web/hooks/use-user-agent.js.map +1 -0
- package/dist/src/web/hooks/use-user-agent.test.d.ts +1 -0
- package/dist/src/web/hooks/use-user-agent.test.js +31 -0
- package/dist/src/web/hooks/use-user-agent.test.js.map +1 -0
- package/dist/src/web/hooks/use-widget-state.d.ts +4 -0
- package/dist/src/web/hooks/use-widget-state.js +32 -0
- package/dist/src/web/hooks/use-widget-state.js.map +1 -0
- package/dist/src/web/hooks/use-widget-state.test.d.ts +1 -0
- package/dist/src/web/hooks/use-widget-state.test.js +60 -0
- package/dist/src/web/hooks/use-widget-state.test.js.map +1 -0
- package/dist/src/web/index.d.ts +6 -6
- package/dist/src/web/index.js +6 -6
- package/dist/src/web/index.js.map +1 -1
- package/dist/src/web/mount-widget.js +5 -0
- package/dist/src/web/mount-widget.js.map +1 -1
- package/dist/src/web/plugin/data-llm.test.d.ts +1 -0
- package/dist/src/web/plugin/data-llm.test.js +81 -0
- package/dist/src/web/plugin/data-llm.test.js.map +1 -0
- package/dist/src/web/plugin/plugin.js +39 -0
- package/dist/src/web/plugin/plugin.js.map +1 -0
- package/dist/src/web/plugin/transform-data-llm.d.ts +12 -0
- package/dist/src/web/plugin/transform-data-llm.js +93 -0
- package/dist/src/web/plugin/transform-data-llm.js.map +1 -0
- package/dist/src/web/plugin/transform-data-llm.test.d.ts +1 -0
- package/dist/src/web/plugin/transform-data-llm.test.js +81 -0
- package/dist/src/web/plugin/transform-data-llm.test.js.map +1 -0
- package/dist/src/web/proxy.d.ts +1 -0
- package/dist/src/web/proxy.js +48 -0
- package/dist/src/web/proxy.js.map +1 -0
- package/dist/src/web/types.d.ts +47 -17
- package/dist/src/web/types.js +1 -0
- package/dist/src/web/types.js.map +1 -1
- package/dist/vitest.config.js +0 -1
- package/dist/vitest.config.js.map +1 -1
- package/package.json +15 -5
- package/dist/src/test/setup.js +0 -9
- package/dist/src/test/setup.js.map +0 -1
- package/dist/src/web/plugin.js +0 -30
- package/dist/src/web/plugin.js.map +0 -1
- package/dist/src/web/use-call-tool.d.ts +0 -54
- package/dist/src/web/use-call-tool.js.map +0 -1
- package/dist/src/web/use-call-tool.test.js +0 -66
- package/dist/src/web/use-call-tool.test.js.map +0 -1
- package/dist/src/web/use-openai-global.d.ts +0 -2
- package/dist/src/web/use-openai-global.js.map +0 -1
- package/dist/src/web/use-tool-output.d.ts +0 -3
- package/dist/src/web/use-tool-output.js +0 -5
- package/dist/src/web/use-tool-output.js.map +0 -1
- package/dist/src/web/use-tool-response-metadata.d.ts +0 -3
- package/dist/src/web/use-tool-response-metadata.js +0 -5
- package/dist/src/web/use-tool-response-metadata.js.map +0 -1
- /package/dist/src/{test/setup.d.ts → web/create-store.test.d.ts} +0 -0
- /package/dist/src/web/{use-call-tool.test.d.ts → data-llm.test.d.ts} +0 -0
- /package/dist/src/web/{plugin.d.ts → plugin/plugin.d.ts} +0 -0
package/dist/src/web/types.d.ts
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
export type
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import "react";
|
|
2
|
+
declare module "react" {
|
|
3
|
+
interface HTMLAttributes<T> {
|
|
4
|
+
"data-llm"?: string;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export type UnknownObject = Record<string, unknown>;
|
|
8
|
+
export type Prettify<T> = {
|
|
9
|
+
[K in keyof T]: T[K];
|
|
10
|
+
} & {};
|
|
11
|
+
export type Objectify<T> = T & UnknownObject;
|
|
12
|
+
type RequiredKeys<T> = {
|
|
13
|
+
[K in keyof T]-?: Record<string, never> extends Pick<T, K> ? never : K;
|
|
14
|
+
}[keyof T];
|
|
15
|
+
export type HasRequiredKeys<T> = RequiredKeys<T> extends never ? false : true;
|
|
16
|
+
type WidgetState = UnknownObject;
|
|
17
|
+
type FileMetadata = {
|
|
18
|
+
fileId: string;
|
|
19
|
+
};
|
|
12
20
|
export declare const TOOL_RESPONSE_EVENT_TYPE = "openai:tool_response";
|
|
13
21
|
export declare class ToolResponseEvent extends CustomEvent<{
|
|
14
22
|
tool: {
|
|
@@ -20,13 +28,13 @@ export declare class ToolResponseEvent extends CustomEvent<{
|
|
|
20
28
|
}
|
|
21
29
|
declare global {
|
|
22
30
|
interface Window {
|
|
23
|
-
openai:
|
|
31
|
+
openai: OpenAiMethods<WidgetState> & OpenAiProperties;
|
|
24
32
|
}
|
|
25
33
|
interface WindowEventMap {
|
|
26
34
|
[SET_GLOBALS_EVENT_TYPE]: SetGlobalsEvent;
|
|
27
35
|
}
|
|
28
36
|
}
|
|
29
|
-
export type
|
|
37
|
+
export type OpenAiProperties<ToolInput extends UnknownObject = Record<never, unknown>, ToolOutput extends UnknownObject = UnknownObject, ToolResponseMetadata extends UnknownObject = UnknownObject, WidgetState extends UnknownObject = UnknownObject> = {
|
|
30
38
|
theme: Theme;
|
|
31
39
|
userAgent: UserAgent;
|
|
32
40
|
locale: string;
|
|
@@ -34,7 +42,9 @@ export type OpenAiGlobals<ToolInput extends UnknownObject = UnknownObject, ToolO
|
|
|
34
42
|
displayMode: DisplayMode;
|
|
35
43
|
safeArea: SafeArea;
|
|
36
44
|
toolInput: ToolInput;
|
|
37
|
-
toolOutput: ToolOutput |
|
|
45
|
+
toolOutput: ToolOutput | {
|
|
46
|
+
text: string;
|
|
47
|
+
} | null;
|
|
38
48
|
toolResponseMetadata: ToolResponseMetadata | null;
|
|
39
49
|
widgetState: WidgetState | null;
|
|
40
50
|
};
|
|
@@ -49,7 +59,7 @@ export type CallToolResponse = {
|
|
|
49
59
|
result: string;
|
|
50
60
|
meta: Record<string, unknown>;
|
|
51
61
|
};
|
|
52
|
-
type
|
|
62
|
+
export type OpenAiMethods<WidgetState extends UnknownObject = UnknownObject> = {
|
|
53
63
|
/** Calls a tool on your MCP. Returns the full response. */
|
|
54
64
|
callTool: <ToolArgs extends CallToolArgs = null, ToolResponse extends CallToolResponse = CallToolResponse>(name: string, args: ToolArgs) => Promise<ToolResponse>;
|
|
55
65
|
/** Triggers a followup turn in the ChatGPT conversation */
|
|
@@ -57,7 +67,7 @@ type API<WidgetState extends UnknownObject> = {
|
|
|
57
67
|
prompt: string;
|
|
58
68
|
}) => Promise<void>;
|
|
59
69
|
/** Opens an external link, redirects web page or mobile app */
|
|
60
|
-
openExternal(
|
|
70
|
+
openExternal(args: {
|
|
61
71
|
href: string;
|
|
62
72
|
}): void;
|
|
63
73
|
/** For transitioning an app from inline to fullscreen or pip */
|
|
@@ -70,11 +80,31 @@ type API<WidgetState extends UnknownObject> = {
|
|
|
70
80
|
*/
|
|
71
81
|
mode: DisplayMode;
|
|
72
82
|
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Sets the widget state.
|
|
85
|
+
* This state is persisted across widget renders.
|
|
86
|
+
*/
|
|
73
87
|
setWidgetState: (state: WidgetState) => Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Opens a modal portaled outside of the widget iFrame.
|
|
90
|
+
* This ensures the modal is correctly displayed and not limited to the widget's area.
|
|
91
|
+
*/
|
|
92
|
+
requestModal: (args: {
|
|
93
|
+
title: string;
|
|
94
|
+
}) => Promise<void>;
|
|
95
|
+
/** Uploads a new file to the host */
|
|
96
|
+
uploadFile: (file: File) => Promise<FileMetadata>;
|
|
97
|
+
/**
|
|
98
|
+
* Downloads a file from the host that was previously uploaded.
|
|
99
|
+
* Only files uploaded by the same connector instance can be downloaded.
|
|
100
|
+
*/
|
|
101
|
+
downloadFile: (file: FileMetadata) => Promise<{
|
|
102
|
+
downloadUrl: string;
|
|
103
|
+
}>;
|
|
74
104
|
};
|
|
75
105
|
export declare const SET_GLOBALS_EVENT_TYPE = "openai:set_globals";
|
|
76
106
|
export declare class SetGlobalsEvent extends CustomEvent<{
|
|
77
|
-
globals: Partial<
|
|
107
|
+
globals: Partial<OpenAiProperties>;
|
|
78
108
|
}> {
|
|
79
109
|
readonly type = "openai:set_globals";
|
|
80
110
|
}
|
package/dist/src/web/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/web/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/web/types.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC;AAuBf,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAC/D,MAAM,OAAO,iBAAkB,SAAQ,WAErC;IACkB,IAAI,GAAG,wBAAwB,CAAC;CACnD;AA8FD,sDAAsD;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAC3D,MAAM,OAAO,eAAgB,SAAQ,WAEnC;IACkB,IAAI,GAAG,sBAAsB,CAAC;CACjD"}
|
package/dist/vitest.config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;KACd;CACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skybridge",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.b0530f1",
|
|
4
4
|
"description": "Skybridge is a framework for building ChatGPT apps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -19,7 +19,11 @@
|
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build": "tsc && pnpm run build:templates",
|
|
21
21
|
"build:templates": "cp -r src/server/templates dist/src/server/",
|
|
22
|
-
"
|
|
22
|
+
"format": "biome check --write --error-on-warnings",
|
|
23
|
+
"test": "pnpm run test:unit && pnpm run test:type && pnpm run test:format",
|
|
24
|
+
"test:unit": "vitest run",
|
|
25
|
+
"test:type": "tsc --noEmit",
|
|
26
|
+
"test:format": "biome ci",
|
|
23
27
|
"docs:dev": "pnpm --filter @skybridge/docs start",
|
|
24
28
|
"docs:build": "pnpm --filter @skybridge/docs build",
|
|
25
29
|
"docs:serve": "pnpm --filter @skybridge/docs serve"
|
|
@@ -33,21 +37,26 @@
|
|
|
33
37
|
"author": "Frédéric Barthelet",
|
|
34
38
|
"license": "ISC",
|
|
35
39
|
"peerDependencies": {
|
|
40
|
+
"@modelcontextprotocol/sdk": ">=1.0.0",
|
|
36
41
|
"react": ">=18.0.0",
|
|
37
42
|
"react-dom": ">=18.0.0"
|
|
38
43
|
},
|
|
39
44
|
"dependencies": {
|
|
40
|
-
"@
|
|
45
|
+
"@babel/core": "^7.28.5",
|
|
41
46
|
"cors": "^2.8.5",
|
|
42
47
|
"express": "^5.1.0",
|
|
43
48
|
"handlebars": "^4.7.8",
|
|
49
|
+
"superjson": "^2.2.6",
|
|
44
50
|
"vite": "^7.1.11",
|
|
45
|
-
"
|
|
51
|
+
"zustand": "^5.0.9"
|
|
46
52
|
},
|
|
47
53
|
"devDependencies": {
|
|
54
|
+
"@biomejs/biome": "2.3.8",
|
|
55
|
+
"@modelcontextprotocol/sdk": "^1.24.3",
|
|
48
56
|
"@testing-library/dom": "^10.4.1",
|
|
49
57
|
"@testing-library/react": "^16.3.0",
|
|
50
58
|
"@total-typescript/tsconfig": "^1.0.4",
|
|
59
|
+
"@types/babel__core": "^7.20.5",
|
|
51
60
|
"@types/cors": "^2.8.19",
|
|
52
61
|
"@types/express": "^5.0.3",
|
|
53
62
|
"@types/jsdom": "^21.1.6",
|
|
@@ -57,7 +66,8 @@
|
|
|
57
66
|
"@vitest/ui": "^2.1.8",
|
|
58
67
|
"jsdom": "^25.0.1",
|
|
59
68
|
"typescript": "^5.9.3",
|
|
60
|
-
"vitest": "^2.1.8"
|
|
69
|
+
"vitest": "^2.1.8",
|
|
70
|
+
"zod": "^4.1.13"
|
|
61
71
|
},
|
|
62
72
|
"packageManager": "pnpm@10.17.1"
|
|
63
73
|
}
|
package/dist/src/test/setup.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/test/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,+CAA+C;AAC/C,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,OAAO;IACV,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;IACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;IACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;CACb,CAAC"}
|
package/dist/src/web/plugin.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export function skybridge() {
|
|
2
|
-
return {
|
|
3
|
-
name: "skybridge",
|
|
4
|
-
async config(config) {
|
|
5
|
-
// Dynamic imports to ensure Node modules are only loaded in Node.js context
|
|
6
|
-
const { globSync } = await import("node:fs");
|
|
7
|
-
const { resolve } = await import("node:path");
|
|
8
|
-
const projectRoot = config.root || process.cwd();
|
|
9
|
-
const widgetsPattern = resolve(projectRoot, "src/widgets/*.{js,ts,jsx,tsx,html}");
|
|
10
|
-
const input = Object.fromEntries(globSync(widgetsPattern).map((file) => [
|
|
11
|
-
file.match(/src\/widgets\/(.+)\.tsx$/)?.[1],
|
|
12
|
-
file,
|
|
13
|
-
]));
|
|
14
|
-
return {
|
|
15
|
-
build: {
|
|
16
|
-
minify: true,
|
|
17
|
-
cssCodeSplit: false,
|
|
18
|
-
rollupOptions: {
|
|
19
|
-
input,
|
|
20
|
-
output: {
|
|
21
|
-
entryFileNames: "[name].js",
|
|
22
|
-
assetFileNames: "[name][extname]",
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/web/plugin.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,IAAI,EAAE,WAAW;QAEjB,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,4EAA4E;YAC5E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAE9C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACjD,MAAM,cAAc,GAAG,OAAO,CAC5B,WAAW,EACX,oCAAoC,CACrC,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3C,IAAI;aACL,CAAC,CACH,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;oBACZ,YAAY,EAAE,KAAK;oBACnB,aAAa,EAAE;wBACb,KAAK;wBACL,MAAM,EAAE;4BACN,cAAc,EAAE,WAAW;4BAC3B,cAAc,EAAE,iBAAiB;yBAClC;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { CallToolArgs, CallToolResponse } from "./types.js";
|
|
2
|
-
export declare const useCallTool: <ToolArgs extends CallToolArgs = null, ToolResponse extends CallToolResponse = CallToolResponse>(name: string) => {
|
|
3
|
-
callTool: (toolArgs: ToolArgs, sideEffects?: {
|
|
4
|
-
onSuccess?: (data: ToolResponse, toolArgs: ToolArgs) => void;
|
|
5
|
-
onError?: (error: unknown, toolArgs: ToolArgs) => void;
|
|
6
|
-
}) => void;
|
|
7
|
-
callToolAsync: (toolArgs: ToolArgs) => Promise<ToolResponse>;
|
|
8
|
-
status: "idle";
|
|
9
|
-
isIdle: true;
|
|
10
|
-
isPending: false;
|
|
11
|
-
isSuccess: false;
|
|
12
|
-
isError: false;
|
|
13
|
-
data: undefined;
|
|
14
|
-
error: undefined;
|
|
15
|
-
} | {
|
|
16
|
-
callTool: (toolArgs: ToolArgs, sideEffects?: {
|
|
17
|
-
onSuccess?: (data: ToolResponse, toolArgs: ToolArgs) => void;
|
|
18
|
-
onError?: (error: unknown, toolArgs: ToolArgs) => void;
|
|
19
|
-
}) => void;
|
|
20
|
-
callToolAsync: (toolArgs: ToolArgs) => Promise<ToolResponse>;
|
|
21
|
-
status: "pending";
|
|
22
|
-
isIdle: false;
|
|
23
|
-
isPending: true;
|
|
24
|
-
isSuccess: false;
|
|
25
|
-
isError: false;
|
|
26
|
-
data: undefined;
|
|
27
|
-
error: undefined;
|
|
28
|
-
} | {
|
|
29
|
-
callTool: (toolArgs: ToolArgs, sideEffects?: {
|
|
30
|
-
onSuccess?: (data: ToolResponse, toolArgs: ToolArgs) => void;
|
|
31
|
-
onError?: (error: unknown, toolArgs: ToolArgs) => void;
|
|
32
|
-
}) => void;
|
|
33
|
-
callToolAsync: (toolArgs: ToolArgs) => Promise<ToolResponse>;
|
|
34
|
-
status: "error";
|
|
35
|
-
isIdle: false;
|
|
36
|
-
isPending: false;
|
|
37
|
-
isSuccess: false;
|
|
38
|
-
isError: true;
|
|
39
|
-
data: undefined;
|
|
40
|
-
error: unknown;
|
|
41
|
-
} | {
|
|
42
|
-
callTool: (toolArgs: ToolArgs, sideEffects?: {
|
|
43
|
-
onSuccess?: (data: ToolResponse, toolArgs: ToolArgs) => void;
|
|
44
|
-
onError?: (error: unknown, toolArgs: ToolArgs) => void;
|
|
45
|
-
}) => void;
|
|
46
|
-
callToolAsync: (toolArgs: ToolArgs) => Promise<ToolResponse>;
|
|
47
|
-
status: "success";
|
|
48
|
-
isIdle: false;
|
|
49
|
-
isPending: false;
|
|
50
|
-
isSuccess: true;
|
|
51
|
-
isError: false;
|
|
52
|
-
data: ToolResponse;
|
|
53
|
-
error: undefined;
|
|
54
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-call-tool.js","sourceRoot":"","sources":["../../../src/web/use-call-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AA4BjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAIzB,IAAY,EACZ,EAAE;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAK1D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE;QACjD,gBAAgB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CACvC,IAAI,EACJ,QAAQ,CACT,CAAC;YACF,gBAAgB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEhE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CACf,QAAkB,EAClB,WAGC,EACD,EAAE;QACF,aAAa,CAAC,QAAQ,CAAC;aACpB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,IAAI,WAAW,EAAE,SAAS,EAAE,CAAC;gBAC3B,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;gBACzB,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG;QACpB,MAAM;QACN,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,MAAM,KAAK,MAAM;QACzB,SAAS,EAAE,MAAM,KAAK,SAAS;QAC/B,SAAS,EAAE,MAAM,KAAK,SAAS;QAC/B,OAAO,EAAE,MAAM,KAAK,OAAO;KACG,CAAC;IAEjC,OAAO;QACL,GAAG,aAAa;QAChB,QAAQ;QACR,aAAa;KACd,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { useCallTool } from "./use-call-tool.js";
|
|
2
|
-
import { describe, it, expect, vi, beforeEach, afterEach, } from "vitest";
|
|
3
|
-
import { renderHook, act, waitFor } from "@testing-library/react";
|
|
4
|
-
describe("useCallTool - onSuccess callback", () => {
|
|
5
|
-
let OpenaiMock;
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
OpenaiMock = {
|
|
8
|
-
callTool: vi.fn(),
|
|
9
|
-
};
|
|
10
|
-
vi.stubGlobal("openai", OpenaiMock);
|
|
11
|
-
});
|
|
12
|
-
afterEach(() => {
|
|
13
|
-
vi.unstubAllGlobals();
|
|
14
|
-
vi.resetAllMocks();
|
|
15
|
-
});
|
|
16
|
-
const toolName = "test-tool";
|
|
17
|
-
const args = { input: "test input" };
|
|
18
|
-
const data = {
|
|
19
|
-
content: [{ type: "text", text: "test result" }],
|
|
20
|
-
structuredContent: { result: "test" },
|
|
21
|
-
isError: false,
|
|
22
|
-
result: "test result",
|
|
23
|
-
meta: {},
|
|
24
|
-
};
|
|
25
|
-
const error = new Error("test error");
|
|
26
|
-
it("should call window.openai.callTool with correct arguments", async () => {
|
|
27
|
-
const { result } = renderHook(() => useCallTool(toolName));
|
|
28
|
-
act(() => {
|
|
29
|
-
result.current.callTool(args);
|
|
30
|
-
});
|
|
31
|
-
expect(OpenaiMock.callTool).toHaveBeenCalledWith(toolName, args);
|
|
32
|
-
});
|
|
33
|
-
it("should call onSuccess callback with correct data and toolArgs on successful execution", async () => {
|
|
34
|
-
const onSuccess = vi.fn();
|
|
35
|
-
const onError = vi.fn();
|
|
36
|
-
OpenaiMock.callTool.mockResolvedValueOnce(data);
|
|
37
|
-
const { result } = renderHook(() => useCallTool(toolName));
|
|
38
|
-
act(() => {
|
|
39
|
-
result.current.callTool(args, {
|
|
40
|
-
onSuccess,
|
|
41
|
-
onError,
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
await waitFor(() => {
|
|
45
|
-
expect(onSuccess).toHaveBeenCalledWith(data, args);
|
|
46
|
-
expect(onError).not.toHaveBeenCalled();
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
it("should call onError callback with error and toolArgs on failed execution", async () => {
|
|
50
|
-
const onSuccess = vi.fn();
|
|
51
|
-
const onError = vi.fn();
|
|
52
|
-
OpenaiMock.callTool.mockRejectedValueOnce(error);
|
|
53
|
-
const { result } = renderHook(() => useCallTool(toolName));
|
|
54
|
-
act(() => {
|
|
55
|
-
result.current.callTool(args, {
|
|
56
|
-
onSuccess,
|
|
57
|
-
onError,
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
await waitFor(() => {
|
|
61
|
-
expect(onSuccess).not.toHaveBeenCalled();
|
|
62
|
-
expect(onError).toHaveBeenCalledWith(error, args);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
//# sourceMappingURL=use-call-tool.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-call-tool.test.js","sourceRoot":"","sources":["../../../src/web/use-call-tool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-openai-global.js","sourceRoot":"","sources":["../../../src/web/use-openai-global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAC;AAEzF,MAAM,UAAU,eAAe,CAAgC,GAAM;IACnE,OAAO,oBAAoB,CACzB,CAAC,QAAQ,EAAE,EAAE;QACX,MAAM,eAAe,GAAG,CAAC,KAAsB,EAAE,EAAE;YACjD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvD,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,eAAe,EAAE;YAC/D,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;QACtE,CAAC,CAAC;IACJ,CAAC,EACD,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-tool-output.js","sourceRoot":"","sources":["../../../src/web/use-tool-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,aAAa;IAC3B,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-tool-response-metadata.js","sourceRoot":"","sources":["../../../src/web/use-tool-response-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,uBAAuB;IACrC,OAAO,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACjD,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|