skybridge 0.0.0-dev.ac83b8e → 0.0.0-dev.acc4947
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/README.md +145 -0
- package/bin/run.js +0 -4
- package/dist/cli/header.d.ts +4 -0
- package/dist/cli/header.js +6 -0
- package/dist/cli/header.js.map +1 -0
- package/dist/cli/run-command.d.ts +2 -1
- package/dist/cli/run-command.js +6 -3
- package/dist/cli/run-command.js.map +1 -1
- package/dist/cli/telemetry.d.ts +7 -0
- package/dist/cli/telemetry.js +123 -0
- package/dist/cli/telemetry.js.map +1 -0
- package/dist/cli/use-execute-steps.d.ts +11 -0
- package/dist/cli/use-execute-steps.js +36 -0
- package/dist/cli/use-execute-steps.js.map +1 -0
- package/dist/cli/use-nodemon.d.ts +6 -0
- package/dist/cli/use-nodemon.js +69 -0
- package/dist/cli/use-nodemon.js.map +1 -0
- package/dist/cli/use-typescript-check.d.ts +8 -0
- package/dist/cli/use-typescript-check.js +59 -0
- package/dist/cli/use-typescript-check.js.map +1 -0
- package/dist/commands/build.d.ts +2 -1
- package/dist/commands/build.js +14 -48
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/dev.d.ts +3 -2
- package/dist/commands/dev.js +21 -25
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/start.d.ts +7 -0
- package/dist/commands/start.js +33 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/telemetry/disable.d.ts +5 -0
- package/dist/commands/telemetry/disable.js +14 -0
- package/dist/commands/telemetry/disable.js.map +1 -0
- package/dist/commands/telemetry/enable.d.ts +5 -0
- package/dist/commands/telemetry/enable.js +14 -0
- package/dist/commands/telemetry/enable.js.map +1 -0
- package/dist/commands/telemetry/status.d.ts +5 -0
- package/dist/commands/telemetry/status.js +14 -0
- package/dist/commands/telemetry/status.js.map +1 -0
- package/dist/server/asset-base-url-transform-plugin.d.ts +11 -0
- package/dist/server/asset-base-url-transform-plugin.js +34 -0
- package/dist/server/asset-base-url-transform-plugin.js.map +1 -0
- package/dist/server/asset-base-url-transform-plugin.test.js +56 -0
- package/dist/server/asset-base-url-transform-plugin.test.js.map +1 -0
- package/dist/server/express.d.ts +9 -0
- package/dist/server/express.js +72 -0
- package/dist/server/express.js.map +1 -0
- package/dist/server/express.test.d.ts +1 -0
- package/dist/server/express.test.js +74 -0
- package/dist/server/express.test.js.map +1 -0
- package/dist/server/server.d.ts +8 -4
- package/dist/server/server.js +121 -58
- package/dist/server/server.js.map +1 -1
- package/dist/server/templateHelper.d.ts +1 -0
- package/dist/server/templateHelper.js.map +1 -1
- package/dist/server/templates/development.hbs +3 -2
- package/dist/server/templates/production.hbs +1 -2
- package/dist/server/widgetsDevServer.js +11 -1
- package/dist/server/widgetsDevServer.js.map +1 -1
- package/dist/test/widget.test.js +43 -16
- package/dist/test/widget.test.js.map +1 -1
- package/dist/web/bridges/apps-sdk/adaptor.d.ts +22 -0
- package/dist/web/bridges/apps-sdk/adaptor.js +71 -0
- package/dist/web/bridges/apps-sdk/adaptor.js.map +1 -0
- package/dist/web/bridges/apps-sdk/bridge.d.ts +10 -0
- package/dist/web/bridges/{apps-sdk-bridge.js → apps-sdk/bridge.js} +2 -2
- package/dist/web/bridges/apps-sdk/bridge.js.map +1 -0
- package/dist/web/bridges/apps-sdk/index.d.ts +5 -0
- package/dist/web/bridges/apps-sdk/index.js +5 -0
- package/dist/web/bridges/apps-sdk/index.js.map +1 -0
- package/dist/web/bridges/apps-sdk/types.d.ts +118 -0
- package/dist/web/bridges/apps-sdk/types.js +10 -0
- package/dist/web/bridges/apps-sdk/types.js.map +1 -0
- package/dist/web/bridges/apps-sdk/use-apps-sdk-context.d.ts +2 -0
- package/dist/web/bridges/{hooks/use-apps-sdk-bridge.js → apps-sdk/use-apps-sdk-context.js} +3 -3
- package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js.map +1 -0
- package/dist/web/bridges/get-adaptor.d.ts +2 -0
- package/dist/web/bridges/get-adaptor.js +8 -0
- package/dist/web/bridges/get-adaptor.js.map +1 -0
- package/dist/web/bridges/index.d.ts +5 -4
- package/dist/web/bridges/index.js +5 -4
- package/dist/web/bridges/index.js.map +1 -1
- package/dist/web/bridges/mcp-app/adaptor.d.ts +36 -0
- package/dist/web/bridges/mcp-app/adaptor.js +190 -0
- package/dist/web/bridges/mcp-app/adaptor.js.map +1 -0
- package/dist/web/bridges/{mcp-app-bridge.d.ts → mcp-app/bridge.d.ts} +7 -13
- package/dist/web/bridges/{mcp-app-bridge.js → mcp-app/bridge.js} +23 -19
- package/dist/web/bridges/mcp-app/bridge.js.map +1 -0
- package/dist/web/bridges/mcp-app/index.d.ts +4 -0
- package/dist/web/bridges/mcp-app/index.js +4 -0
- package/dist/web/bridges/mcp-app/index.js.map +1 -0
- package/dist/web/bridges/mcp-app/types.d.ts +8 -0
- package/dist/web/bridges/mcp-app/types.js +2 -0
- package/dist/web/bridges/mcp-app/types.js.map +1 -0
- package/dist/web/bridges/mcp-app/use-mcp-app-context.d.ts +5 -0
- package/dist/web/bridges/{hooks/use-mcp-app-bridge.js → mcp-app/use-mcp-app-context.js} +3 -3
- package/dist/web/bridges/mcp-app/use-mcp-app-context.js.map +1 -0
- package/dist/web/bridges/mcp-app/use-mcp-app-context.test.d.ts +1 -0
- package/dist/web/bridges/{hooks/use-mcp-app-bridge.test.js → mcp-app/use-mcp-app-context.test.js} +17 -13
- package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js.map +1 -0
- package/dist/web/bridges/types.d.ts +65 -24
- package/dist/web/bridges/use-host-context.d.ts +2 -0
- package/dist/web/bridges/use-host-context.js +8 -0
- package/dist/web/bridges/use-host-context.js.map +1 -0
- package/dist/web/components/modal-provider.d.ts +4 -0
- package/dist/web/components/modal-provider.js +47 -0
- package/dist/web/components/modal-provider.js.map +1 -0
- package/dist/web/create-store.js +6 -7
- package/dist/web/create-store.js.map +1 -1
- package/dist/web/create-store.test.js +108 -52
- package/dist/web/create-store.test.js.map +1 -1
- package/dist/web/data-llm.js +5 -3
- package/dist/web/data-llm.js.map +1 -1
- package/dist/web/data-llm.test.js +130 -65
- package/dist/web/data-llm.test.js.map +1 -1
- package/dist/web/generate-helpers.d.ts +3 -2
- package/dist/web/generate-helpers.js +1 -1
- package/dist/web/generate-helpers.js.map +1 -1
- package/dist/web/helpers/state.js +13 -8
- package/dist/web/helpers/state.js.map +1 -1
- package/dist/web/hooks/index.d.ts +1 -1
- package/dist/web/hooks/index.js +1 -1
- package/dist/web/hooks/index.js.map +1 -1
- package/dist/web/hooks/test/utils.d.ts +8 -2
- package/dist/web/hooks/test/utils.js +33 -13
- package/dist/web/hooks/test/utils.js.map +1 -1
- package/dist/web/hooks/use-call-tool.d.ts +3 -2
- package/dist/web/hooks/use-call-tool.js +2 -2
- package/dist/web/hooks/use-call-tool.js.map +1 -1
- package/dist/web/hooks/use-call-tool.test-d.js +1 -1
- package/dist/web/hooks/use-call-tool.test-d.js.map +1 -1
- package/dist/web/hooks/use-call-tool.test.js +3 -3
- package/dist/web/hooks/use-call-tool.test.js.map +1 -1
- package/dist/web/hooks/use-display-mode.js +3 -4
- package/dist/web/hooks/use-display-mode.js.map +1 -1
- package/dist/web/hooks/use-files.d.ts +2 -6
- package/dist/web/hooks/use-files.js +4 -2
- package/dist/web/hooks/use-files.js.map +1 -1
- package/dist/web/hooks/use-files.test.js +6 -1
- package/dist/web/hooks/use-files.test.js.map +1 -1
- package/dist/web/hooks/use-layout.d.ts +2 -2
- package/dist/web/hooks/use-layout.js +4 -4
- package/dist/web/hooks/use-layout.js.map +1 -1
- package/dist/web/hooks/use-layout.test.js +4 -3
- package/dist/web/hooks/use-layout.test.js.map +1 -1
- package/dist/web/hooks/use-open-external.js +2 -2
- package/dist/web/hooks/use-open-external.test.js +1 -1
- package/dist/web/hooks/use-request-modal.d.ts +2 -2
- package/dist/web/hooks/use-request-modal.js +9 -7
- package/dist/web/hooks/use-request-modal.js.map +1 -1
- package/dist/web/hooks/use-send-follow-up-message.js +2 -2
- package/dist/web/hooks/use-set-open-in-app-url.d.ts +1 -0
- package/dist/web/hooks/use-set-open-in-app-url.js +8 -0
- package/dist/web/hooks/use-set-open-in-app-url.js.map +1 -0
- package/dist/web/hooks/use-set-open-in-app-url.test.d.ts +1 -0
- package/dist/web/hooks/use-set-open-in-app-url.test.js +43 -0
- package/dist/web/hooks/use-set-open-in-app-url.test.js.map +1 -0
- package/dist/web/hooks/use-tool-info.js +4 -4
- package/dist/web/hooks/use-tool-info.js.map +1 -1
- package/dist/web/hooks/use-tool-info.test.js +4 -4
- package/dist/web/hooks/use-tool-info.test.js.map +1 -1
- package/dist/web/hooks/use-user.d.ts +1 -1
- package/dist/web/hooks/use-user.js +3 -3
- package/dist/web/hooks/use-user.js.map +1 -1
- package/dist/web/hooks/use-user.test.js +4 -3
- package/dist/web/hooks/use-user.test.js.map +1 -1
- package/dist/web/hooks/use-widget-state.js +10 -10
- package/dist/web/hooks/use-widget-state.js.map +1 -1
- package/dist/web/hooks/use-widget-state.test.js +7 -6
- package/dist/web/hooks/use-widget-state.test.js.map +1 -1
- package/dist/web/mount-widget.js +9 -1
- package/dist/web/mount-widget.js.map +1 -1
- package/dist/web/plugin/plugin.js +16 -9
- package/dist/web/plugin/plugin.js.map +1 -1
- package/dist/web/proxy.js +0 -1
- package/dist/web/proxy.js.map +1 -1
- package/dist/web/types.d.ts +0 -133
- package/dist/web/types.js +0 -9
- package/dist/web/types.js.map +1 -1
- package/package.json +32 -23
- package/tsconfig.base.json +28 -0
- package/dist/cli/use-version.d.ts +0 -1
- package/dist/cli/use-version.js +0 -25
- package/dist/cli/use-version.js.map +0 -1
- package/dist/web/bridges/adaptors/apps-sdk-adaptor.d.ts +0 -13
- package/dist/web/bridges/adaptors/apps-sdk-adaptor.js +0 -33
- package/dist/web/bridges/adaptors/apps-sdk-adaptor.js.map +0 -1
- package/dist/web/bridges/adaptors/mcp-app-adaptor.d.ts +0 -16
- package/dist/web/bridges/adaptors/mcp-app-adaptor.js +0 -120
- package/dist/web/bridges/adaptors/mcp-app-adaptor.js.map +0 -1
- package/dist/web/bridges/apps-sdk-bridge.d.ts +0 -10
- package/dist/web/bridges/apps-sdk-bridge.js.map +0 -1
- package/dist/web/bridges/hooks/use-adaptor.d.ts +0 -2
- package/dist/web/bridges/hooks/use-adaptor.js +0 -8
- package/dist/web/bridges/hooks/use-adaptor.js.map +0 -1
- package/dist/web/bridges/hooks/use-apps-sdk-bridge.d.ts +0 -2
- package/dist/web/bridges/hooks/use-apps-sdk-bridge.js.map +0 -1
- package/dist/web/bridges/hooks/use-bridge.d.ts +0 -2
- package/dist/web/bridges/hooks/use-bridge.js +0 -8
- package/dist/web/bridges/hooks/use-bridge.js.map +0 -1
- package/dist/web/bridges/hooks/use-mcp-app-bridge.d.ts +0 -5
- package/dist/web/bridges/hooks/use-mcp-app-bridge.js.map +0 -1
- package/dist/web/bridges/hooks/use-mcp-app-bridge.test.js.map +0 -1
- package/dist/web/bridges/mcp-app-bridge.js.map +0 -1
- package/dist/web/hooks/use-openai-global.d.ts +0 -3
- package/dist/web/hooks/use-openai-global.js +0 -6
- package/dist/web/hooks/use-openai-global.js.map +0 -1
- /package/dist/{web/bridges/hooks/use-mcp-app-bridge.test.d.ts → server/asset-base-url-transform-plugin.test.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useHostContext } from "../bridges/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* Hook for accessing session-stable user information.
|
|
4
4
|
* These values are set once at initialization and do not change during the session.
|
|
@@ -12,8 +12,8 @@ import { useBridge } from "../bridges/index.js";
|
|
|
12
12
|
* ```
|
|
13
13
|
*/
|
|
14
14
|
export function useUser() {
|
|
15
|
-
const locale =
|
|
16
|
-
const userAgent =
|
|
15
|
+
const locale = useHostContext("locale");
|
|
16
|
+
const userAgent = useHostContext("userAgent");
|
|
17
17
|
return { locale, userAgent };
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=use-user.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-user.js","sourceRoot":"","sources":["../../../src/web/hooks/use-user.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"use-user.js","sourceRoot":"","sources":["../../../src/web/hooks/use-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAOrE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO;IACrB,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { renderHook, waitFor } from "@testing-library/react";
|
|
2
2
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
3
|
-
import { McpAppAdaptor } from "../bridges/
|
|
4
|
-
import { McpAppBridge } from "../bridges/mcp-app
|
|
5
|
-
import { getMcpAppHostPostMessageMock } from "./test/utils.js";
|
|
3
|
+
import { McpAppAdaptor } from "../bridges/mcp-app/adaptor.js";
|
|
4
|
+
import { McpAppBridge } from "../bridges/mcp-app/bridge.js";
|
|
5
|
+
import { getMcpAppHostPostMessageMock, MockResizeObserver, } from "./test/utils.js";
|
|
6
6
|
import { useUser } from "./use-user.js";
|
|
7
7
|
describe("useUser", () => {
|
|
8
8
|
describe("apps-sdk host type", () => {
|
|
@@ -48,6 +48,7 @@ describe("useUser", () => {
|
|
|
48
48
|
describe("mcp-app host type", () => {
|
|
49
49
|
beforeEach(() => {
|
|
50
50
|
vi.stubGlobal("skybridge", { hostType: "mcp-app" });
|
|
51
|
+
vi.stubGlobal("ResizeObserver", MockResizeObserver);
|
|
51
52
|
});
|
|
52
53
|
afterEach(() => {
|
|
53
54
|
vi.unstubAllGlobals();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-user.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-user.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"use-user.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-user.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import { useCallback, useEffect, useState } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { getAdaptor, useHostContext } from "../bridges/index.js";
|
|
3
3
|
import { filterWidgetContext, injectWidgetContext } from "../helpers/state.js";
|
|
4
4
|
export function useWidgetState(defaultState) {
|
|
5
|
-
const
|
|
5
|
+
const adaptor = getAdaptor();
|
|
6
|
+
const widgetStateFromBridge = useHostContext("widgetState");
|
|
6
7
|
const [widgetState, _setWidgetState] = useState(() => {
|
|
7
|
-
if (
|
|
8
|
-
return filterWidgetContext(
|
|
8
|
+
if (widgetStateFromBridge !== null) {
|
|
9
|
+
return filterWidgetContext(widgetStateFromBridge);
|
|
9
10
|
}
|
|
10
11
|
return typeof defaultState === "function"
|
|
11
12
|
? defaultState()
|
|
12
13
|
: (defaultState ?? null);
|
|
13
14
|
});
|
|
14
15
|
useEffect(() => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
_setWidgetState(filterWidgetContext(widgetStateFromWindow));
|
|
16
|
+
if (widgetStateFromBridge !== null) {
|
|
17
|
+
_setWidgetState(filterWidgetContext(widgetStateFromBridge));
|
|
18
18
|
}
|
|
19
|
-
}, [
|
|
19
|
+
}, [widgetStateFromBridge]);
|
|
20
20
|
const setWidgetState = useCallback((state) => {
|
|
21
21
|
_setWidgetState((prevState) => {
|
|
22
22
|
const newState = typeof state === "function" ? state(prevState) : state;
|
|
23
23
|
const stateToSet = injectWidgetContext(newState);
|
|
24
24
|
if (stateToSet !== null) {
|
|
25
|
-
|
|
25
|
+
adaptor.setWidgetState(stateToSet);
|
|
26
26
|
}
|
|
27
27
|
return filterWidgetContext(stateToSet);
|
|
28
28
|
});
|
|
29
|
-
}, []);
|
|
29
|
+
}, [adaptor]);
|
|
30
30
|
return [widgetState, setWidgetState];
|
|
31
31
|
}
|
|
32
32
|
//# sourceMappingURL=use-widget-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-widget-state.js","sourceRoot":"","sources":["../../../src/web/hooks/use-widget-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"use-widget-state.js","sourceRoot":"","sources":["../../../src/web/hooks/use-widget-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAS/E,MAAM,UAAU,cAAc,CAC5B,YAA0C;IAE1C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,qBAAqB,GAAG,cAAc,CAAC,aAAa,CAAa,CAAC;IAExE,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAW,GAAG,EAAE;QAC7D,IAAI,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,OAAO,YAAY,KAAK,UAAU;YACvC,CAAC,CAAC,YAAY,EAAE;YAChB,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACnC,eAAe,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE5B,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,KAA+B,EAAE,EAAE;QAClC,eAAe,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACxE,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAEjD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACrC,CAAC;YAED,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,CAAC,WAAW,EAAE,cAAc,CAAU,CAAC;AAChD,CAAC"}
|
|
@@ -23,7 +23,7 @@ describe("useWidgetState", () => {
|
|
|
23
23
|
expect(result.current[0]).toEqual(defaultState);
|
|
24
24
|
});
|
|
25
25
|
it("should initialize with window.openai.widgetState when available", () => {
|
|
26
|
-
OpenaiMock.widgetState = windowState;
|
|
26
|
+
OpenaiMock.widgetState = { modelContent: windowState };
|
|
27
27
|
const { result } = renderHook(() => useWidgetState(defaultState));
|
|
28
28
|
expect(result.current[0]).toEqual(windowState);
|
|
29
29
|
});
|
|
@@ -33,7 +33,9 @@ describe("useWidgetState", () => {
|
|
|
33
33
|
act(() => {
|
|
34
34
|
result.current[1](newState);
|
|
35
35
|
});
|
|
36
|
-
expect(OpenaiMock.setWidgetState).toHaveBeenCalledWith(
|
|
36
|
+
expect(OpenaiMock.setWidgetState).toHaveBeenCalledWith({
|
|
37
|
+
modelContent: newState,
|
|
38
|
+
});
|
|
37
39
|
expect(result.current[0]).toEqual(newState);
|
|
38
40
|
});
|
|
39
41
|
it("should call window.openai.setWidgetState when setWidgetState is called with a function updater", async () => {
|
|
@@ -42,17 +44,16 @@ describe("useWidgetState", () => {
|
|
|
42
44
|
result.current[1]((prev) => ({ ...prev, count: prev.count + 1 }));
|
|
43
45
|
});
|
|
44
46
|
expect(OpenaiMock.setWidgetState).toHaveBeenCalledWith({
|
|
45
|
-
count: 1,
|
|
46
|
-
name: "test",
|
|
47
|
+
modelContent: { count: 1, name: "test" },
|
|
47
48
|
});
|
|
48
49
|
expect(result.current[0]).toEqual({ count: 1, name: "test" });
|
|
49
50
|
});
|
|
50
51
|
it("should update state when window.openai.widgetState changes", () => {
|
|
51
|
-
OpenaiMock.widgetState = defaultState;
|
|
52
|
+
OpenaiMock.widgetState = { modelContent: defaultState };
|
|
52
53
|
const { result, rerender } = renderHook(() => useWidgetState(defaultState));
|
|
53
54
|
expect(result.current[0]).toEqual(defaultState);
|
|
54
55
|
// Simulate window.openai.widgetState changing
|
|
55
|
-
OpenaiMock.widgetState = windowState;
|
|
56
|
+
OpenaiMock.widgetState = { modelContent: windowState };
|
|
56
57
|
// Trigger re-render to simulate the useEffect running
|
|
57
58
|
rerender();
|
|
58
59
|
expect(result.current[0]).toEqual(windowState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-widget-state.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-widget-state.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,MAAM,EACN,EAAE,EAEF,EAAE,GACH,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,UAA0D,CAAC;IAE/D,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG;YACX,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SACrD,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACtB,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAEjD,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;QAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QAElE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"use-widget-state.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-widget-state.test.ts"],"names":[],"mappings":"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"}
|
package/dist/web/mount-widget.js
CHANGED
|
@@ -14,6 +14,14 @@ export const mountWidget = (component) => {
|
|
|
14
14
|
if (import.meta.env.DEV) {
|
|
15
15
|
installOpenAILoggingProxy();
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
const hostType = window.skybridge?.hostType;
|
|
18
|
+
(async () => {
|
|
19
|
+
let app = component;
|
|
20
|
+
if (hostType === "mcp-app") {
|
|
21
|
+
const { ModalProvider } = await import("./components/modal-provider.js");
|
|
22
|
+
app = createElement(ModalProvider, null, component);
|
|
23
|
+
}
|
|
24
|
+
rootInstance.render(createElement(StrictMode, null, app));
|
|
25
|
+
})();
|
|
18
26
|
};
|
|
19
27
|
//# sourceMappingURL=mount-widget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount-widget.js","sourceRoot":"","sources":["../../src/web/mount-widget.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,IAAI,YAAY,GAAgB,IAAI,CAAC;AAErC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAA0B,EAAE,EAAE;IACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACxB,yBAAyB,EAAE,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"mount-widget.js","sourceRoot":"","sources":["../../src/web/mount-widget.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,IAAI,YAAY,GAAgB,IAAI,CAAC;AAErC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAA0B,EAAE,EAAE;IACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACxB,yBAAyB,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC;IAE5C,CAAC,KAAK,IAAI,EAAE;QACV,IAAI,GAAG,GAAG,SAAS,CAAC;QACpB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;YACzE,GAAG,GAAG,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;QACD,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC"}
|
|
@@ -5,18 +5,18 @@ export function skybridge() {
|
|
|
5
5
|
async config(config) {
|
|
6
6
|
// Dynamic imports to ensure Node modules are only loaded in Node.js context
|
|
7
7
|
const { globSync } = await import("node:fs");
|
|
8
|
-
const { resolve } = await import("node:path");
|
|
8
|
+
const { basename, dirname, parse, resolve } = await import("node:path");
|
|
9
9
|
const projectRoot = config.root || process.cwd();
|
|
10
10
|
const flatWidgetPattern = resolve(projectRoot, "src/widgets/*.{js,ts,jsx,tsx,html}");
|
|
11
11
|
const dirWidgetPattern = resolve(projectRoot, "src/widgets/*/index.tsx");
|
|
12
|
-
const flatWidgets = globSync(flatWidgetPattern).map((file) =>
|
|
13
|
-
file.
|
|
14
|
-
file
|
|
15
|
-
|
|
16
|
-
const dirWidgets = globSync(dirWidgetPattern).map((file) =>
|
|
17
|
-
|
|
18
|
-
file
|
|
19
|
-
|
|
12
|
+
const flatWidgets = globSync(flatWidgetPattern).map((file) => {
|
|
13
|
+
const name = parse(file).name;
|
|
14
|
+
return [name, file];
|
|
15
|
+
});
|
|
16
|
+
const dirWidgets = globSync(dirWidgetPattern).map((file) => {
|
|
17
|
+
const name = basename(dirname(file));
|
|
18
|
+
return [name, file];
|
|
19
|
+
});
|
|
20
20
|
const input = Object.fromEntries([...flatWidgets, ...dirWidgets]);
|
|
21
21
|
return {
|
|
22
22
|
base: "/assets",
|
|
@@ -28,6 +28,13 @@ export function skybridge() {
|
|
|
28
28
|
input,
|
|
29
29
|
},
|
|
30
30
|
},
|
|
31
|
+
experimental: {
|
|
32
|
+
renderBuiltUrl: (filename) => {
|
|
33
|
+
return {
|
|
34
|
+
runtime: `window.skybridge.serverUrl + "/assets/${filename}"`,
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
},
|
|
31
38
|
};
|
|
32
39
|
},
|
|
33
40
|
enforce: "pre",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/web/plugin/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAExE,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;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/web/plugin/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAExE,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,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAExE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACjD,MAAM,iBAAiB,GAAG,OAAO,CAC/B,WAAW,EACX,oCAAoC,CACrC,CAAC;YACF,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;YAEzE,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBAC9B,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;YAElE,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE;oBACL,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,IAAI;oBACZ,YAAY,EAAE,KAAK;oBACnB,aAAa,EAAE;wBACb,KAAK;qBACN;iBACF;gBACD,YAAY,EAAE;oBACZ,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE;wBAC3B,OAAO;4BACL,OAAO,EAAE,yCAAyC,QAAQ,GAAG;yBAC9D,CAAC;oBACJ,CAAC;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,KAAK;QACd,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;YACtB,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/web/proxy.js
CHANGED
|
@@ -6,7 +6,6 @@ const colors = {
|
|
|
6
6
|
};
|
|
7
7
|
export function installOpenAILoggingProxy() {
|
|
8
8
|
if (typeof window === "undefined" || !window.openai) {
|
|
9
|
-
console.warn("[openai-proxy] window.openai not found, skipping proxy installation");
|
|
10
9
|
return;
|
|
11
10
|
}
|
|
12
11
|
const descriptor = Object.getOwnPropertyDescriptor(window, "openai");
|
package/dist/web/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/web/proxy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;CACR,CAAC;AAEX,MAAM,UAAU,yBAAyB;IACvC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/web/proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/web/types.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import "react";
|
|
2
|
-
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
-
import type { WidgetHostType } from "../server/index.js";
|
|
4
2
|
declare module "react" {
|
|
5
3
|
interface HTMLAttributes<T> {
|
|
6
4
|
"data-llm"?: string;
|
|
@@ -15,135 +13,4 @@ type RequiredKeys<T> = {
|
|
|
15
13
|
[K in keyof T]-?: Record<string, never> extends Pick<T, K> ? never : K;
|
|
16
14
|
}[keyof T];
|
|
17
15
|
export type HasRequiredKeys<T> = RequiredKeys<T> extends never ? false : true;
|
|
18
|
-
type WidgetState = UnknownObject;
|
|
19
|
-
type FileMetadata = {
|
|
20
|
-
fileId: string;
|
|
21
|
-
};
|
|
22
|
-
export declare const TOOL_RESPONSE_EVENT_TYPE = "openai:tool_response";
|
|
23
|
-
export declare class ToolResponseEvent extends CustomEvent<{
|
|
24
|
-
tool: {
|
|
25
|
-
name: string;
|
|
26
|
-
args: UnknownObject;
|
|
27
|
-
};
|
|
28
|
-
}> {
|
|
29
|
-
readonly type = "openai:tool_response";
|
|
30
|
-
}
|
|
31
|
-
declare global {
|
|
32
|
-
interface Window {
|
|
33
|
-
skybridge: SkybridgeProperties;
|
|
34
|
-
openai: OpenAiMethods<WidgetState> & OpenAiProperties;
|
|
35
|
-
}
|
|
36
|
-
interface WindowEventMap {
|
|
37
|
-
[SET_GLOBALS_EVENT_TYPE]: SetGlobalsEvent;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export type SkybridgeProperties = {
|
|
41
|
-
hostType: WidgetHostType;
|
|
42
|
-
};
|
|
43
|
-
export type OpenAiProperties<ToolInput extends UnknownObject = Record<never, unknown>, ToolOutput extends UnknownObject = UnknownObject, ToolResponseMetadata extends UnknownObject = UnknownObject, WidgetState extends UnknownObject = UnknownObject> = {
|
|
44
|
-
theme: Theme;
|
|
45
|
-
userAgent: UserAgent;
|
|
46
|
-
locale: string;
|
|
47
|
-
maxHeight: number;
|
|
48
|
-
displayMode: DisplayMode;
|
|
49
|
-
safeArea: SafeArea;
|
|
50
|
-
view: View;
|
|
51
|
-
toolInput: ToolInput;
|
|
52
|
-
toolOutput: ToolOutput | {
|
|
53
|
-
text: string;
|
|
54
|
-
} | null;
|
|
55
|
-
toolResponseMetadata: ToolResponseMetadata | null;
|
|
56
|
-
widgetState: WidgetState | null;
|
|
57
|
-
};
|
|
58
|
-
export type CallToolArgs = Record<string, unknown> | null;
|
|
59
|
-
export type CallToolResponse = {
|
|
60
|
-
content: CallToolResult["content"];
|
|
61
|
-
structuredContent: Record<string, unknown>;
|
|
62
|
-
isError: boolean;
|
|
63
|
-
result: string;
|
|
64
|
-
_meta?: CallToolResult["_meta"];
|
|
65
|
-
};
|
|
66
|
-
export type RequestModalOptions = {
|
|
67
|
-
title?: string;
|
|
68
|
-
params?: Record<string, unknown>;
|
|
69
|
-
anchor?: {
|
|
70
|
-
top?: number;
|
|
71
|
-
left?: number;
|
|
72
|
-
width?: number;
|
|
73
|
-
height?: number;
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
export type OpenAiMethods<WidgetState extends UnknownObject = UnknownObject> = {
|
|
77
|
-
/** Calls a tool on your MCP. Returns the full response. */
|
|
78
|
-
callTool: <ToolArgs extends CallToolArgs = null, ToolResponse extends CallToolResponse = CallToolResponse>(name: string, args: ToolArgs) => Promise<ToolResponse>;
|
|
79
|
-
/** Triggers a followup turn in the ChatGPT conversation */
|
|
80
|
-
sendFollowUpMessage: (args: {
|
|
81
|
-
prompt: string;
|
|
82
|
-
}) => Promise<void>;
|
|
83
|
-
/** Opens an external link, redirects web page or mobile app */
|
|
84
|
-
openExternal(args: {
|
|
85
|
-
href: string;
|
|
86
|
-
}): void;
|
|
87
|
-
/** For transitioning an app from inline to fullscreen or pip */
|
|
88
|
-
requestDisplayMode: (args: {
|
|
89
|
-
mode: DisplayMode;
|
|
90
|
-
}) => Promise<{
|
|
91
|
-
/**
|
|
92
|
-
* The granted display mode. The host may reject the request.
|
|
93
|
-
* For mobile, PiP is always coerced to fullscreen.
|
|
94
|
-
*/
|
|
95
|
-
mode: DisplayMode;
|
|
96
|
-
}>;
|
|
97
|
-
/**
|
|
98
|
-
* Sets the widget state.
|
|
99
|
-
* This state is persisted across widget renders.
|
|
100
|
-
*/
|
|
101
|
-
setWidgetState: (state: WidgetState) => Promise<void>;
|
|
102
|
-
/**
|
|
103
|
-
* Opens a modal portaled outside of the widget iFrame.
|
|
104
|
-
* This ensures the modal is correctly displayed and not limited to the widget's area.
|
|
105
|
-
*/
|
|
106
|
-
requestModal: (args: RequestModalOptions) => Promise<void>;
|
|
107
|
-
/** Uploads a new file to the host */
|
|
108
|
-
uploadFile: (file: File) => Promise<FileMetadata>;
|
|
109
|
-
/**
|
|
110
|
-
* Downloads a file from the host that was previously uploaded.
|
|
111
|
-
* Only files uploaded by the same connector instance can be downloaded.
|
|
112
|
-
*/
|
|
113
|
-
getFileDownloadUrl: (file: FileMetadata) => Promise<{
|
|
114
|
-
downloadUrl: string;
|
|
115
|
-
}>;
|
|
116
|
-
};
|
|
117
|
-
export declare const SET_GLOBALS_EVENT_TYPE = "openai:set_globals";
|
|
118
|
-
export declare class SetGlobalsEvent extends CustomEvent<{
|
|
119
|
-
globals: Partial<OpenAiProperties>;
|
|
120
|
-
}> {
|
|
121
|
-
readonly type = "openai:set_globals";
|
|
122
|
-
}
|
|
123
|
-
export type CallTool = (name: string, args: Record<string, unknown>) => Promise<CallToolResponse>;
|
|
124
|
-
export type DisplayMode = "pip" | "inline" | "fullscreen" | "modal";
|
|
125
|
-
export type View = {
|
|
126
|
-
mode: DisplayMode;
|
|
127
|
-
params?: Record<string, unknown>;
|
|
128
|
-
};
|
|
129
|
-
export type Theme = "light" | "dark";
|
|
130
|
-
export type SafeAreaInsets = {
|
|
131
|
-
top: number;
|
|
132
|
-
bottom: number;
|
|
133
|
-
left: number;
|
|
134
|
-
right: number;
|
|
135
|
-
};
|
|
136
|
-
export type SafeArea = {
|
|
137
|
-
insets: SafeAreaInsets;
|
|
138
|
-
};
|
|
139
|
-
export type DeviceType = "mobile" | "tablet" | "desktop" | "unknown";
|
|
140
|
-
export type UserAgent = {
|
|
141
|
-
device: {
|
|
142
|
-
type: DeviceType;
|
|
143
|
-
};
|
|
144
|
-
capabilities: {
|
|
145
|
-
hover: boolean;
|
|
146
|
-
touch: boolean;
|
|
147
|
-
};
|
|
148
|
-
};
|
|
149
16
|
export {};
|
package/dist/web/types.js
CHANGED
|
@@ -1,11 +1,2 @@
|
|
|
1
1
|
import "react";
|
|
2
|
-
export const TOOL_RESPONSE_EVENT_TYPE = "openai:tool_response";
|
|
3
|
-
export class ToolResponseEvent extends CustomEvent {
|
|
4
|
-
type = TOOL_RESPONSE_EVENT_TYPE;
|
|
5
|
-
}
|
|
6
|
-
// Dispatched when any global changes in the host page
|
|
7
|
-
export const SET_GLOBALS_EVENT_TYPE = "openai:set_globals";
|
|
8
|
-
export class SetGlobalsEvent extends CustomEvent {
|
|
9
|
-
type = SET_GLOBALS_EVENT_TYPE;
|
|
10
|
-
}
|
|
11
2
|
//# sourceMappingURL=types.js.map
|
package/dist/web/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/web/types.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/web/types.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skybridge",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
4
|
-
"description": "Skybridge is a framework for building ChatGPT
|
|
3
|
+
"version": "0.0.0-dev.acc4947",
|
|
4
|
+
"description": "Skybridge is a framework for building ChatGPT and MCP Apps",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/alpic-ai/skybridge.git"
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"files": [
|
|
11
|
-
"dist"
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"tsconfig.base.json"
|
|
12
14
|
],
|
|
13
15
|
"exports": {
|
|
16
|
+
"./tsconfig": "./tsconfig.base.json",
|
|
17
|
+
"./tsconfig.json": "./tsconfig.base.json",
|
|
14
18
|
"./server": {
|
|
15
19
|
"types": "./dist/server/index.d.ts",
|
|
16
20
|
"default": "./dist/server/index.js"
|
|
@@ -30,44 +34,46 @@
|
|
|
30
34
|
"license": "ISC",
|
|
31
35
|
"peerDependencies": {
|
|
32
36
|
"@modelcontextprotocol/sdk": ">=1.0.0",
|
|
37
|
+
"@skybridge/devtools": ">=0.26.1",
|
|
38
|
+
"nodemon": ">=3.0.0",
|
|
33
39
|
"react": ">=18.0.0",
|
|
34
|
-
"react-dom": ">=18.0.0"
|
|
40
|
+
"react-dom": ">=18.0.0",
|
|
41
|
+
"vite": "^7.3.1"
|
|
35
42
|
},
|
|
36
43
|
"dependencies": {
|
|
37
|
-
"@babel/core": "^7.
|
|
44
|
+
"@babel/core": "^7.29.0",
|
|
38
45
|
"@oclif/core": "^4.8.0",
|
|
39
|
-
"
|
|
46
|
+
"ci-info": "^4.4.0",
|
|
47
|
+
"cors": "^2.8.6",
|
|
40
48
|
"dequal": "^2.0.3",
|
|
41
|
-
"es-toolkit": "^1.
|
|
49
|
+
"es-toolkit": "^1.44.0",
|
|
42
50
|
"express": "^5.2.1",
|
|
43
51
|
"handlebars": "^4.7.8",
|
|
44
|
-
"ink": "^6.
|
|
52
|
+
"ink": "^6.8.0",
|
|
53
|
+
"posthog-node": "^5.24.17",
|
|
45
54
|
"superjson": "^2.2.6",
|
|
46
|
-
"
|
|
47
|
-
"zustand": "^5.0.9"
|
|
55
|
+
"zustand": "^5.0.11"
|
|
48
56
|
},
|
|
49
57
|
"devDependencies": {
|
|
50
|
-
"@modelcontextprotocol/ext-apps": "^0.
|
|
51
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
58
|
+
"@modelcontextprotocol/ext-apps": "^1.0.1",
|
|
59
|
+
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
52
60
|
"@testing-library/dom": "^10.4.1",
|
|
53
|
-
"@testing-library/react": "^16.3.
|
|
61
|
+
"@testing-library/react": "^16.3.2",
|
|
54
62
|
"@total-typescript/tsconfig": "^1.0.4",
|
|
55
63
|
"@types/babel__core": "^7.20.5",
|
|
56
64
|
"@types/cors": "^2.8.19",
|
|
57
65
|
"@types/express": "^5.0.6",
|
|
58
66
|
"@types/jsdom": "^27.0.0",
|
|
59
|
-
"@types/
|
|
60
|
-
"@types/
|
|
61
|
-
"@types/react": "^19.2.7",
|
|
67
|
+
"@types/node": "^24.10.13",
|
|
68
|
+
"@types/react": "^19.2.14",
|
|
62
69
|
"@types/react-dom": "^19.2.3",
|
|
63
|
-
"@vitest/ui": "^4.0.
|
|
64
|
-
"jsdom": "^
|
|
65
|
-
"
|
|
66
|
-
"shx": "^0.3.4",
|
|
70
|
+
"@vitest/ui": "^4.0.18",
|
|
71
|
+
"jsdom": "^28.1.0",
|
|
72
|
+
"shx": "^0.4.0",
|
|
67
73
|
"ts-node": "^10.9.2",
|
|
68
74
|
"typescript": "^5.9.3",
|
|
69
|
-
"vitest": "^4.0.
|
|
70
|
-
"zod": "^4.3.
|
|
75
|
+
"vitest": "^4.0.18",
|
|
76
|
+
"zod": "^4.3.6"
|
|
71
77
|
},
|
|
72
78
|
"bin": {
|
|
73
79
|
"sb": "./bin/run.js",
|
|
@@ -77,7 +83,10 @@
|
|
|
77
83
|
"bin": "skybridge",
|
|
78
84
|
"commands": "./dist/commands",
|
|
79
85
|
"dirname": "skybridge",
|
|
80
|
-
"topicSeparator": " "
|
|
86
|
+
"topicSeparator": " ",
|
|
87
|
+
"hooks": {
|
|
88
|
+
"finally": "./dist/cli/telemetry"
|
|
89
|
+
}
|
|
81
90
|
},
|
|
82
91
|
"scripts": {
|
|
83
92
|
"build": "shx rm -rf dist && tsc && pnpm run build:templates",
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
// Module resolution options
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"esModuleInterop": true,
|
|
6
|
+
"verbatimModuleSyntax": true,
|
|
7
|
+
|
|
8
|
+
// Output options
|
|
9
|
+
"noEmit": false,
|
|
10
|
+
"incremental": true,
|
|
11
|
+
"sourceMap": true,
|
|
12
|
+
|
|
13
|
+
// Language and environment options
|
|
14
|
+
"target": "ES2022",
|
|
15
|
+
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
16
|
+
"jsx": "react-jsx",
|
|
17
|
+
|
|
18
|
+
// Strictness and checking options
|
|
19
|
+
"strict": true,
|
|
20
|
+
"skipLibCheck": true,
|
|
21
|
+
"forceConsistentCasingInFileNames": true,
|
|
22
|
+
|
|
23
|
+
// Code quality & diagnostics
|
|
24
|
+
"noUnusedLocals": true,
|
|
25
|
+
"noUnusedParameters": true,
|
|
26
|
+
"noFallthroughCasesInSwitch": true
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function getPackageVersion(): string;
|
package/dist/cli/use-version.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
function findPackageJson(startDir) {
|
|
5
|
-
let currentDir = startDir;
|
|
6
|
-
const root = path.parse(currentDir).root;
|
|
7
|
-
while (currentDir !== root) {
|
|
8
|
-
const packageJsonPath = path.join(currentDir, "package.json");
|
|
9
|
-
if (existsSync(packageJsonPath)) {
|
|
10
|
-
return packageJsonPath;
|
|
11
|
-
}
|
|
12
|
-
currentDir = path.dirname(currentDir);
|
|
13
|
-
}
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
export function getPackageVersion() {
|
|
17
|
-
const currentFileDir = path.dirname(fileURLToPath(import.meta.url));
|
|
18
|
-
const packageJsonPath = findPackageJson(currentFileDir);
|
|
19
|
-
if (!packageJsonPath) {
|
|
20
|
-
return "";
|
|
21
|
-
}
|
|
22
|
-
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
23
|
-
return packageJson.version || "";
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=use-version.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-version.js","sourceRoot":"","sources":["../../src/cli/use-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IAEzC,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,OAAO,eAAe,CAAC;QACzB,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAExD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Adaptor, BridgeInterface, CallToolResponse, DisplayMode, ExternalStore } from "../types.js";
|
|
2
|
-
export declare class AppsSdkAdaptor implements Adaptor {
|
|
3
|
-
private static instance;
|
|
4
|
-
static getInstance(): AppsSdkAdaptor;
|
|
5
|
-
static resetInstance(): void;
|
|
6
|
-
getExternalStore<K extends keyof BridgeInterface>(key: K): ExternalStore<K>;
|
|
7
|
-
callTool: <ToolArgs extends Record<string, unknown> | null = null, ToolResponse extends CallToolResponse = CallToolResponse>(name: string, args: ToolArgs) => Promise<ToolResponse>;
|
|
8
|
-
requestDisplayMode: (mode: DisplayMode) => Promise<{
|
|
9
|
-
mode: DisplayMode;
|
|
10
|
-
}>;
|
|
11
|
-
sendFollowUpMessage: (prompt: string) => Promise<void>;
|
|
12
|
-
openExternal(href: string): void;
|
|
13
|
-
}
|