skybridge 0.35.21 → 0.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/dist/cli/header.js +1 -1
- package/dist/cli/header.js.map +1 -1
- package/dist/cli/use-nodemon.js +2 -2
- package/dist/cli/use-nodemon.js.map +1 -1
- package/dist/cli/use-tunnel.d.ts +12 -5
- package/dist/cli/use-tunnel.js +34 -29
- package/dist/cli/use-tunnel.js.map +1 -1
- package/dist/cli/use-typescript-check.d.ts +1 -0
- package/dist/cli/use-typescript-check.js +41 -6
- package/dist/cli/use-typescript-check.js.map +1 -1
- package/dist/commands/build.js +28 -7
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/dev.d.ts +1 -0
- package/dist/commands/dev.js +7 -2
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/start.js +7 -10
- package/dist/commands/start.js.map +1 -1
- package/dist/server/asset-base-url-transform-plugin.js +1 -1
- package/dist/server/asset-base-url-transform-plugin.js.map +1 -1
- package/dist/server/asset-base-url-transform-plugin.test.js +29 -0
- package/dist/server/asset-base-url-transform-plugin.test.js.map +1 -1
- package/dist/server/content-helpers.d.ts +27 -0
- package/dist/server/content-helpers.js +46 -0
- package/dist/server/content-helpers.js.map +1 -0
- package/dist/server/content-helpers.test.js +70 -0
- package/dist/server/content-helpers.test.js.map +1 -0
- package/dist/server/express.js +3 -3
- package/dist/server/express.js.map +1 -1
- package/dist/server/express.test.js +39 -2
- package/dist/server/express.test.js.map +1 -1
- package/dist/server/index.d.ts +4 -3
- package/dist/server/index.js +3 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/inferUtilityTypes.d.ts +6 -6
- package/dist/server/middleware.test.js +12 -9
- package/dist/server/middleware.test.js.map +1 -1
- package/dist/server/server.d.ts +95 -72
- package/dist/server/server.js +204 -73
- package/dist/server/server.js.map +1 -1
- package/dist/server/templateHelper.d.ts +5 -5
- package/dist/server/templates/development.hbs +2 -2
- package/dist/server/templates/production.hbs +1 -1
- package/dist/server/viewsDevServer.d.ts +14 -0
- package/dist/server/viewsDevServer.js +45 -0
- package/dist/server/viewsDevServer.js.map +1 -0
- package/dist/test/utils.d.ts +8 -20
- package/dist/test/utils.js +39 -35
- package/dist/test/utils.js.map +1 -1
- package/dist/test/view.test.js +523 -0
- package/dist/test/view.test.js.map +1 -0
- package/dist/web/bridges/apps-sdk/adaptor.d.ts +2 -2
- package/dist/web/bridges/apps-sdk/adaptor.js +8 -2
- package/dist/web/bridges/apps-sdk/adaptor.js.map +1 -1
- package/dist/web/bridges/mcp-app/adaptor.d.ts +6 -6
- package/dist/web/bridges/mcp-app/adaptor.js +24 -24
- package/dist/web/bridges/mcp-app/adaptor.js.map +1 -1
- package/dist/web/bridges/types.d.ts +7 -7
- package/dist/web/components/modal-provider.js +1 -1
- package/dist/web/components/modal-provider.js.map +1 -1
- package/dist/web/create-store.js +9 -9
- package/dist/web/create-store.js.map +1 -1
- package/dist/web/create-store.test.js +14 -16
- package/dist/web/create-store.test.js.map +1 -1
- package/dist/web/data-llm.d.ts +1 -1
- package/dist/web/data-llm.js +3 -3
- package/dist/web/data-llm.js.map +1 -1
- package/dist/web/data-llm.test.js +22 -22
- package/dist/web/data-llm.test.js.map +1 -1
- package/dist/web/generate-helpers.d.ts +20 -18
- package/dist/web/generate-helpers.js +20 -18
- package/dist/web/generate-helpers.js.map +1 -1
- package/dist/web/generate-helpers.test-d.js +26 -26
- package/dist/web/generate-helpers.test-d.js.map +1 -1
- package/dist/web/helpers/state.d.ts +2 -2
- package/dist/web/helpers/state.js +11 -11
- package/dist/web/helpers/state.js.map +1 -1
- package/dist/web/helpers/state.test.js +9 -9
- package/dist/web/helpers/state.test.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/use-request-modal.d.ts +1 -1
- package/dist/web/hooks/use-request-modal.js +4 -4
- package/dist/web/hooks/use-request-modal.js.map +1 -1
- package/dist/web/hooks/use-request-modal.test.js +1 -1
- package/dist/web/hooks/use-request-modal.test.js.map +1 -1
- package/dist/web/hooks/use-view-state.d.ts +4 -0
- package/dist/web/hooks/use-view-state.js +32 -0
- package/dist/web/hooks/use-view-state.js.map +1 -0
- package/dist/web/hooks/{use-widget-state.test.js → use-view-state.test.js} +17 -17
- package/dist/web/hooks/use-view-state.test.js.map +1 -0
- package/dist/web/index.d.ts +1 -2
- package/dist/web/index.js +1 -2
- package/dist/web/index.js.map +1 -1
- package/dist/web/mount-view.d.ts +1 -0
- package/dist/web/{mount-widget.js → mount-view.js} +2 -2
- package/dist/web/mount-view.js.map +1 -0
- package/dist/web/plugin/plugin.d.ts +4 -1
- package/dist/web/plugin/plugin.js +134 -25
- package/dist/web/plugin/plugin.js.map +1 -1
- package/dist/web/plugin/scan-views.d.ts +16 -0
- package/dist/web/plugin/scan-views.js +88 -0
- package/dist/web/plugin/scan-views.js.map +1 -0
- package/dist/web/plugin/scan-views.test.d.ts +1 -0
- package/dist/web/plugin/scan-views.test.js +99 -0
- package/dist/web/plugin/scan-views.test.js.map +1 -0
- package/dist/web/plugin/validate-view.d.ts +1 -0
- package/dist/web/plugin/validate-view.js +9 -0
- package/dist/web/plugin/validate-view.js.map +1 -0
- package/dist/web/plugin/validate-view.test.d.ts +1 -0
- package/dist/web/plugin/validate-view.test.js +24 -0
- package/dist/web/plugin/validate-view.test.js.map +1 -0
- package/package.json +8 -1
- package/tsconfig.base.json +2 -0
- package/dist/server/widgetsDevServer.d.ts +0 -13
- package/dist/server/widgetsDevServer.js +0 -52
- package/dist/server/widgetsDevServer.js.map +0 -1
- package/dist/test/widget.test.js +0 -334
- package/dist/test/widget.test.js.map +0 -1
- package/dist/web/hooks/use-widget-state.d.ts +0 -4
- package/dist/web/hooks/use-widget-state.js +0 -32
- package/dist/web/hooks/use-widget-state.js.map +0 -1
- package/dist/web/hooks/use-widget-state.test.js.map +0 -1
- package/dist/web/mount-widget.d.ts +0 -1
- package/dist/web/mount-widget.js.map +0 -1
- package/dist/web/plugin/validate-widget.d.ts +0 -5
- package/dist/web/plugin/validate-widget.js +0 -27
- package/dist/web/plugin/validate-widget.js.map +0 -1
- package/dist/web/plugin/validate-widget.test.js +0 -42
- package/dist/web/plugin/validate-widget.test.js.map +0 -1
- /package/dist/{test/widget.test.d.ts → server/content-helpers.test.d.ts} +0 -0
- /package/dist/{web/hooks/use-widget-state.test.d.ts → test/view.test.d.ts} +0 -0
- /package/dist/web/{plugin/validate-widget.test.d.ts → hooks/use-view-state.test.d.ts} +0 -0
|
@@ -15,7 +15,7 @@ type TypedToolInfoReturn<TInput, TOutput, TResponseMetadata> = ToolState<Objecti
|
|
|
15
15
|
* Creates typed versions of skybridge hooks with full type inference
|
|
16
16
|
* for tool names, inputs, and outputs.
|
|
17
17
|
*
|
|
18
|
-
* This is the recommended way to use skybridge hooks in your
|
|
18
|
+
* This is the recommended way to use skybridge hooks in your views.
|
|
19
19
|
* Set this up once in a dedicated file and export the typed hooks for use across your app.
|
|
20
20
|
*
|
|
21
21
|
* @typeParam ServerType - The type of your McpServer instance (use `typeof server`).
|
|
@@ -24,11 +24,13 @@ type TypedToolInfoReturn<TInput, TOutput, TResponseMetadata> = ToolState<Objecti
|
|
|
24
24
|
*
|
|
25
25
|
* @example
|
|
26
26
|
* ```typescript
|
|
27
|
-
* //
|
|
27
|
+
* // src/server.ts
|
|
28
28
|
* const server = new McpServer({ name: "my-app", version: "1.0" }, {})
|
|
29
|
-
* .
|
|
29
|
+
* .registerTool({
|
|
30
|
+
* name: "search-trip",
|
|
30
31
|
* inputSchema: { destination: z.string() },
|
|
31
32
|
* outputSchema: { results: z.array(z.string()) },
|
|
33
|
+
* view: { component: "search-trip", description: "Search trips" },
|
|
32
34
|
* }, async ({ destination }) => {
|
|
33
35
|
* return { content: [{ type: "text", text: `Found trips to ${destination}` }] };
|
|
34
36
|
* });
|
|
@@ -38,8 +40,8 @@ type TypedToolInfoReturn<TInput, TOutput, TResponseMetadata> = ToolState<Objecti
|
|
|
38
40
|
*
|
|
39
41
|
* @example
|
|
40
42
|
* ```typescript
|
|
41
|
-
* //
|
|
42
|
-
* import type { AppType } from "
|
|
43
|
+
* // src/helpers.ts (one-time setup)
|
|
44
|
+
* import type { AppType } from "./server";
|
|
43
45
|
* import { generateHelpers } from "skybridge/web";
|
|
44
46
|
*
|
|
45
47
|
* export const { useCallTool, useToolInfo } = generateHelpers<AppType>();
|
|
@@ -47,19 +49,19 @@ type TypedToolInfoReturn<TInput, TOutput, TResponseMetadata> = ToolState<Objecti
|
|
|
47
49
|
*
|
|
48
50
|
* @example
|
|
49
51
|
* ```typescript
|
|
50
|
-
* //
|
|
51
|
-
* import { useCallTool, useToolInfo } from "../
|
|
52
|
+
* // src/views/search.tsx (usage)
|
|
53
|
+
* import { useCallTool, useToolInfo } from "../helpers";
|
|
52
54
|
*
|
|
53
|
-
* export function
|
|
54
|
-
* const { callTool, data } = useCallTool("search-
|
|
55
|
+
* export function SearchView() {
|
|
56
|
+
* const { callTool, data } = useCallTool("search-trip");
|
|
55
57
|
* // ^ autocomplete for tool names
|
|
56
58
|
* callTool({ destination: "Spain" });
|
|
57
59
|
* // ^ autocomplete for input fields
|
|
58
60
|
*
|
|
59
|
-
* const toolInfo = useToolInfo<"search-
|
|
60
|
-
* // ^ autocomplete for
|
|
61
|
-
* // toolInfo.input is typed based on
|
|
62
|
-
* // toolInfo.output.structuredContent is typed based on
|
|
61
|
+
* const toolInfo = useToolInfo<"search-trip">();
|
|
62
|
+
* // ^ autocomplete for view names
|
|
63
|
+
* // toolInfo.input is typed based on view input schema
|
|
64
|
+
* // toolInfo.output.structuredContent is typed based on view output schema
|
|
63
65
|
* }
|
|
64
66
|
* ```
|
|
65
67
|
*/
|
|
@@ -68,12 +70,12 @@ export declare function generateHelpers<ServerType = never>(): {
|
|
|
68
70
|
* Typed version of `useCallTool` that provides autocomplete for tool names
|
|
69
71
|
* and type inference for inputs and outputs.
|
|
70
72
|
*
|
|
71
|
-
* @param name - The name of the
|
|
73
|
+
* @param name - The name of the tool to call. Autocompletes based on your server's tool registry.
|
|
72
74
|
* @returns A hook with typed `callTool` function and `data` property.
|
|
73
75
|
*
|
|
74
76
|
* @example
|
|
75
77
|
* ```typescript
|
|
76
|
-
* const { callTool, data, isPending } = useCallTool("search-
|
|
78
|
+
* const { callTool, data, isPending } = useCallTool("search-trip");
|
|
77
79
|
* // TypeScript knows callTool expects { destination: string }
|
|
78
80
|
* callTool({ destination: "Spain" });
|
|
79
81
|
*
|
|
@@ -85,15 +87,15 @@ export declare function generateHelpers<ServerType = never>(): {
|
|
|
85
87
|
*/
|
|
86
88
|
useCallTool: <ToolName extends keyof InferTools<ServerType> & string>(name: ToolName) => TypedCallToolReturn<ToolInput<ServerType, ToolName>, ToolOutput<ServerType, ToolName>>;
|
|
87
89
|
/**
|
|
88
|
-
* Typed version of `useToolInfo` that provides autocomplete for
|
|
90
|
+
* Typed version of `useToolInfo` that provides autocomplete for tool names
|
|
89
91
|
* and type inference for inputs, outputs, and responseMetadata.
|
|
90
92
|
*
|
|
91
|
-
* @typeParam K - The name of the
|
|
93
|
+
* @typeParam K - The name of the tool. Autocompletes based on your server's tool registry.
|
|
92
94
|
* @returns A discriminated union with `status: "pending" | "success"` that narrows correctly.
|
|
93
95
|
*
|
|
94
96
|
* @example
|
|
95
97
|
* ```typescript
|
|
96
|
-
* const toolInfo = useToolInfo<"search-
|
|
98
|
+
* const toolInfo = useToolInfo<"search-trip">();
|
|
97
99
|
* // toolInfo.input is typed as { destination: string; ... }
|
|
98
100
|
* // toolInfo.output is typed as { results: Array<...>; ... }
|
|
99
101
|
* // toolInfo.responseMetadata is typed based on _meta in callback return
|
|
@@ -4,7 +4,7 @@ import { useToolInfo } from "./hooks/use-tool-info.js";
|
|
|
4
4
|
* Creates typed versions of skybridge hooks with full type inference
|
|
5
5
|
* for tool names, inputs, and outputs.
|
|
6
6
|
*
|
|
7
|
-
* This is the recommended way to use skybridge hooks in your
|
|
7
|
+
* This is the recommended way to use skybridge hooks in your views.
|
|
8
8
|
* Set this up once in a dedicated file and export the typed hooks for use across your app.
|
|
9
9
|
*
|
|
10
10
|
* @typeParam ServerType - The type of your McpServer instance (use `typeof server`).
|
|
@@ -13,11 +13,13 @@ import { useToolInfo } from "./hooks/use-tool-info.js";
|
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```typescript
|
|
16
|
-
* //
|
|
16
|
+
* // src/server.ts
|
|
17
17
|
* const server = new McpServer({ name: "my-app", version: "1.0" }, {})
|
|
18
|
-
* .
|
|
18
|
+
* .registerTool({
|
|
19
|
+
* name: "search-trip",
|
|
19
20
|
* inputSchema: { destination: z.string() },
|
|
20
21
|
* outputSchema: { results: z.array(z.string()) },
|
|
22
|
+
* view: { component: "search-trip", description: "Search trips" },
|
|
21
23
|
* }, async ({ destination }) => {
|
|
22
24
|
* return { content: [{ type: "text", text: `Found trips to ${destination}` }] };
|
|
23
25
|
* });
|
|
@@ -27,8 +29,8 @@ import { useToolInfo } from "./hooks/use-tool-info.js";
|
|
|
27
29
|
*
|
|
28
30
|
* @example
|
|
29
31
|
* ```typescript
|
|
30
|
-
* //
|
|
31
|
-
* import type { AppType } from "
|
|
32
|
+
* // src/helpers.ts (one-time setup)
|
|
33
|
+
* import type { AppType } from "./server";
|
|
32
34
|
* import { generateHelpers } from "skybridge/web";
|
|
33
35
|
*
|
|
34
36
|
* export const { useCallTool, useToolInfo } = generateHelpers<AppType>();
|
|
@@ -36,19 +38,19 @@ import { useToolInfo } from "./hooks/use-tool-info.js";
|
|
|
36
38
|
*
|
|
37
39
|
* @example
|
|
38
40
|
* ```typescript
|
|
39
|
-
* //
|
|
40
|
-
* import { useCallTool, useToolInfo } from "../
|
|
41
|
+
* // src/views/search.tsx (usage)
|
|
42
|
+
* import { useCallTool, useToolInfo } from "../helpers";
|
|
41
43
|
*
|
|
42
|
-
* export function
|
|
43
|
-
* const { callTool, data } = useCallTool("search-
|
|
44
|
+
* export function SearchView() {
|
|
45
|
+
* const { callTool, data } = useCallTool("search-trip");
|
|
44
46
|
* // ^ autocomplete for tool names
|
|
45
47
|
* callTool({ destination: "Spain" });
|
|
46
48
|
* // ^ autocomplete for input fields
|
|
47
49
|
*
|
|
48
|
-
* const toolInfo = useToolInfo<"search-
|
|
49
|
-
* // ^ autocomplete for
|
|
50
|
-
* // toolInfo.input is typed based on
|
|
51
|
-
* // toolInfo.output.structuredContent is typed based on
|
|
50
|
+
* const toolInfo = useToolInfo<"search-trip">();
|
|
51
|
+
* // ^ autocomplete for view names
|
|
52
|
+
* // toolInfo.input is typed based on view input schema
|
|
53
|
+
* // toolInfo.output.structuredContent is typed based on view output schema
|
|
52
54
|
* }
|
|
53
55
|
* ```
|
|
54
56
|
*/
|
|
@@ -58,12 +60,12 @@ export function generateHelpers() {
|
|
|
58
60
|
* Typed version of `useCallTool` that provides autocomplete for tool names
|
|
59
61
|
* and type inference for inputs and outputs.
|
|
60
62
|
*
|
|
61
|
-
* @param name - The name of the
|
|
63
|
+
* @param name - The name of the tool to call. Autocompletes based on your server's tool registry.
|
|
62
64
|
* @returns A hook with typed `callTool` function and `data` property.
|
|
63
65
|
*
|
|
64
66
|
* @example
|
|
65
67
|
* ```typescript
|
|
66
|
-
* const { callTool, data, isPending } = useCallTool("search-
|
|
68
|
+
* const { callTool, data, isPending } = useCallTool("search-trip");
|
|
67
69
|
* // TypeScript knows callTool expects { destination: string }
|
|
68
70
|
* callTool({ destination: "Spain" });
|
|
69
71
|
*
|
|
@@ -77,15 +79,15 @@ export function generateHelpers() {
|
|
|
77
79
|
return useCallTool(name);
|
|
78
80
|
},
|
|
79
81
|
/**
|
|
80
|
-
* Typed version of `useToolInfo` that provides autocomplete for
|
|
82
|
+
* Typed version of `useToolInfo` that provides autocomplete for tool names
|
|
81
83
|
* and type inference for inputs, outputs, and responseMetadata.
|
|
82
84
|
*
|
|
83
|
-
* @typeParam K - The name of the
|
|
85
|
+
* @typeParam K - The name of the tool. Autocompletes based on your server's tool registry.
|
|
84
86
|
* @returns A discriminated union with `status: "pending" | "success"` that narrows correctly.
|
|
85
87
|
*
|
|
86
88
|
* @example
|
|
87
89
|
* ```typescript
|
|
88
|
-
* const toolInfo = useToolInfo<"search-
|
|
90
|
+
* const toolInfo = useToolInfo<"search-trip">();
|
|
89
91
|
* // toolInfo.input is typed as { destination: string; ... }
|
|
90
92
|
* // toolInfo.output is typed as { results: Array<...>; ... }
|
|
91
93
|
* // toolInfo.responseMetadata is typed based on _meta in callback return
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-helpers.js","sourceRoot":"","sources":["../../src/web/generate-helpers.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAkB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAoBvE
|
|
1
|
+
{"version":3,"file":"generate-helpers.js","sourceRoot":"","sources":["../../src/web/generate-helpers.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAkB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAoBvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,UAAU,eAAe;IAI7B,OAAO;QACL;;;;;;;;;;;;;;;;;;WAkBG;QACH,WAAW,EAAE,CACX,IAAc,EAId,EAAE;YACF,OAAO,WAAW,CAAC,IAAI,CAGtB,CAAC;QACJ,CAAC;QAED;;;;;;;;;;;;;;;;;;;;;;;;;;WA0BG;QACH,WAAW,EAAE,GAIX,EAAE;YACF,OAAO,WAAW,EAIjB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -3,18 +3,18 @@ import { createInterfaceTestServer, createTestServer } from "../test/utils.js";
|
|
|
3
3
|
import { generateHelpers } from "./generate-helpers.js";
|
|
4
4
|
const server = createTestServer();
|
|
5
5
|
const interfaceServer = createInterfaceTestServer();
|
|
6
|
-
test("InferTools extracts the tool registry type (
|
|
7
|
-
expectTypeOf().toHaveProperty("search-
|
|
6
|
+
test("InferTools extracts the tool registry type (views + registerTool)", () => {
|
|
7
|
+
expectTypeOf().toHaveProperty("search-trip");
|
|
8
8
|
expectTypeOf().toHaveProperty("get-trip-details");
|
|
9
|
-
expectTypeOf().toHaveProperty("no-input-
|
|
9
|
+
expectTypeOf().toHaveProperty("no-input-view");
|
|
10
10
|
expectTypeOf().toHaveProperty("calculate-price");
|
|
11
|
-
expectTypeOf().toHaveProperty("inferred-output-
|
|
11
|
+
expectTypeOf().toHaveProperty("inferred-output-view");
|
|
12
12
|
expectTypeOf().toHaveProperty("inferred-tool");
|
|
13
|
-
expectTypeOf().toHaveProperty("
|
|
13
|
+
expectTypeOf().toHaveProperty("view-with-metadata");
|
|
14
14
|
expectTypeOf().toHaveProperty("tool-with-metadata");
|
|
15
|
-
expectTypeOf().toHaveProperty("
|
|
15
|
+
expectTypeOf().toHaveProperty("view-with-mixed-returns");
|
|
16
16
|
});
|
|
17
|
-
test("ToolNames returns a union of tool name literals (
|
|
17
|
+
test("ToolNames returns a union of tool name literals (views + registerTool)", () => {
|
|
18
18
|
expectTypeOf().toEqualTypeOf();
|
|
19
19
|
});
|
|
20
20
|
test("ToolInput extracts the correct input type from Zod schema", () => {
|
|
@@ -32,23 +32,23 @@ test("ToolOutput extracts the correct output type from callback (inferred)", ()
|
|
|
32
32
|
expectTypeOf().toEqualTypeOf();
|
|
33
33
|
expectTypeOf().toEqualTypeOf();
|
|
34
34
|
});
|
|
35
|
-
test("generateHelpers provides autocomplete for tool names (
|
|
35
|
+
test("generateHelpers provides autocomplete for tool names (views + registerTool)", () => {
|
|
36
36
|
const { useCallTool } = generateHelpers();
|
|
37
|
-
useCallTool("search-
|
|
37
|
+
useCallTool("search-trip");
|
|
38
38
|
useCallTool("get-trip-details");
|
|
39
|
-
useCallTool("no-input-
|
|
39
|
+
useCallTool("no-input-view");
|
|
40
40
|
useCallTool("calculate-price");
|
|
41
|
-
useCallTool("inferred-output-
|
|
41
|
+
useCallTool("inferred-output-view");
|
|
42
42
|
useCallTool("inferred-tool");
|
|
43
|
-
useCallTool("
|
|
43
|
+
useCallTool("view-with-metadata");
|
|
44
44
|
useCallTool("tool-with-metadata");
|
|
45
|
-
useCallTool("
|
|
45
|
+
useCallTool("view-with-mixed-returns");
|
|
46
46
|
// @ts-expect-error - "invalid-name" is not a valid tool name
|
|
47
47
|
useCallTool("invalid-name");
|
|
48
48
|
});
|
|
49
49
|
test("useCallTool returns correctly typed callTool function", () => {
|
|
50
50
|
const { useCallTool } = generateHelpers();
|
|
51
|
-
const { callTool } = useCallTool("search-
|
|
51
|
+
const { callTool } = useCallTool("search-trip");
|
|
52
52
|
callTool({ destination: "Spain" });
|
|
53
53
|
callTool({ destination: "France", departureDate: "2024-06-01" });
|
|
54
54
|
callTool({ destination: "Italy", maxPrice: 1000 });
|
|
@@ -57,7 +57,7 @@ test("useCallTool returns correctly typed callTool function", () => {
|
|
|
57
57
|
});
|
|
58
58
|
test("callTool can be called without args for tools with no required inputs", () => {
|
|
59
59
|
const { useCallTool } = generateHelpers();
|
|
60
|
-
const { callTool, callToolAsync } = useCallTool("no-input-
|
|
60
|
+
const { callTool, callToolAsync } = useCallTool("no-input-view");
|
|
61
61
|
callTool();
|
|
62
62
|
callTool({});
|
|
63
63
|
callToolAsync();
|
|
@@ -65,7 +65,7 @@ test("callTool can be called without args for tools with no required inputs", ()
|
|
|
65
65
|
});
|
|
66
66
|
test("callTool requires args for tools with required inputs", () => {
|
|
67
67
|
const { useCallTool } = generateHelpers();
|
|
68
|
-
const { callTool } = useCallTool("search-
|
|
68
|
+
const { callTool } = useCallTool("search-trip");
|
|
69
69
|
// @ts-expect-error - "destination" is required
|
|
70
70
|
callTool();
|
|
71
71
|
// @ts-expect-error - "destination" is required
|
|
@@ -75,7 +75,7 @@ test("callTool requires args for tools with required inputs", () => {
|
|
|
75
75
|
});
|
|
76
76
|
test("callTool supports sideEffects for tools with required inputs", () => {
|
|
77
77
|
const { useCallTool } = generateHelpers();
|
|
78
|
-
const { callTool } = useCallTool("search-
|
|
78
|
+
const { callTool } = useCallTool("search-trip");
|
|
79
79
|
callTool({ destination: "Spain" }, {
|
|
80
80
|
onSuccess: (response, args) => {
|
|
81
81
|
expectTypeOf(response.structuredContent.results).toBeArray();
|
|
@@ -96,7 +96,7 @@ test("callTool supports sideEffects for tools with required inputs", () => {
|
|
|
96
96
|
});
|
|
97
97
|
test("callTool supports sideEffects for tools with no required inputs", () => {
|
|
98
98
|
const { useCallTool } = generateHelpers();
|
|
99
|
-
const { callTool } = useCallTool("no-input-
|
|
99
|
+
const { callTool } = useCallTool("no-input-view");
|
|
100
100
|
callTool({
|
|
101
101
|
onSuccess: (response) => {
|
|
102
102
|
expectTypeOf(response).toHaveProperty("structuredContent");
|
|
@@ -110,16 +110,16 @@ test("callTool supports sideEffects for tools with no required inputs", () => {
|
|
|
110
110
|
});
|
|
111
111
|
test("callToolAsync returns correctly typed promise", () => {
|
|
112
112
|
const { useCallTool } = generateHelpers();
|
|
113
|
-
const { callToolAsync: searchAsync } = useCallTool("search-
|
|
113
|
+
const { callToolAsync: searchAsync } = useCallTool("search-trip");
|
|
114
114
|
const searchPromise = searchAsync({ destination: "Spain" });
|
|
115
115
|
expectTypeOf(searchPromise).resolves.toHaveProperty("structuredContent");
|
|
116
|
-
const { callToolAsync: noInputAsync } = useCallTool("no-input-
|
|
116
|
+
const { callToolAsync: noInputAsync } = useCallTool("no-input-view");
|
|
117
117
|
const noInputPromise = noInputAsync();
|
|
118
118
|
expectTypeOf(noInputPromise).resolves.toHaveProperty("structuredContent");
|
|
119
119
|
});
|
|
120
120
|
test("useCallTool returns correctly typed data", () => {
|
|
121
121
|
const { useCallTool } = generateHelpers();
|
|
122
|
-
const { data } = useCallTool("search-
|
|
122
|
+
const { data } = useCallTool("search-trip");
|
|
123
123
|
if (data) {
|
|
124
124
|
expectTypeOf(data.structuredContent).toExtend();
|
|
125
125
|
expectTypeOf(data.structuredContent.results).toBeArray();
|
|
@@ -128,16 +128,16 @@ test("useCallTool returns correctly typed data", () => {
|
|
|
128
128
|
});
|
|
129
129
|
test("useCallTool returns correctly typed data for callback-inferred outputs", () => {
|
|
130
130
|
const { useCallTool } = generateHelpers();
|
|
131
|
-
const { data:
|
|
132
|
-
if (
|
|
133
|
-
expectTypeOf(
|
|
131
|
+
const { data: viewData } = useCallTool("inferred-output-view");
|
|
132
|
+
if (viewData) {
|
|
133
|
+
expectTypeOf(viewData.structuredContent).toExtend();
|
|
134
134
|
}
|
|
135
135
|
const { data: toolData } = useCallTool("inferred-tool");
|
|
136
136
|
if (toolData) {
|
|
137
137
|
expectTypeOf(toolData.structuredContent).toExtend();
|
|
138
138
|
}
|
|
139
139
|
});
|
|
140
|
-
test("generateHelpers provides autocomplete for tool names in useToolInfo (
|
|
140
|
+
test("generateHelpers provides autocomplete for tool names in useToolInfo (views + registerTool)", () => {
|
|
141
141
|
const { useToolInfo } = generateHelpers();
|
|
142
142
|
useToolInfo();
|
|
143
143
|
useToolInfo();
|
|
@@ -193,7 +193,7 @@ test("ToolResponseMetadata extracts correct type when using interface declaratio
|
|
|
193
193
|
});
|
|
194
194
|
test("generateHelpers works with interface-typed server", () => {
|
|
195
195
|
const { useCallTool, useToolInfo } = generateHelpers();
|
|
196
|
-
const { data } = useCallTool("interface-
|
|
196
|
+
const { data } = useCallTool("interface-view");
|
|
197
197
|
if (data) {
|
|
198
198
|
expectTypeOf(data.structuredContent.itemName).toBeString();
|
|
199
199
|
expectTypeOf(data.structuredContent.quantity).toBeNumber();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-helpers.test-d.js","sourceRoot":"","sources":["../../src/web/generate-helpers.test-d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQ5C,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;AAGlC,MAAM,eAAe,GAAG,yBAAyB,EAAE,CAAC;AAGpD,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"generate-helpers.test-d.js","sourceRoot":"","sources":["../../src/web/generate-helpers.test-d.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type SuperJSONResult } from "superjson";
|
|
2
2
|
import type { UnknownObject } from "../types.js";
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
3
|
+
export declare function filterViewContext<T extends UnknownObject>(state?: T | null): T | null;
|
|
4
|
+
export declare function injectViewContext<T extends UnknownObject>(newState: T | null): T | null;
|
|
5
5
|
export declare function serializeState(value: UnknownObject): unknown;
|
|
6
6
|
export declare function deserializeState(value: SuperJSONResult): unknown;
|
|
7
7
|
export declare function getInitialState<State extends UnknownObject>(defaultState?: State | (() => State)): State | null;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import superjson, {} from "superjson";
|
|
2
2
|
import { getAdaptor } from "../bridges/index.js";
|
|
3
|
-
import {
|
|
4
|
-
export function
|
|
3
|
+
import { VIEW_CONTEXT_KEY } from "../data-llm.js";
|
|
4
|
+
export function filterViewContext(state) {
|
|
5
5
|
if (state === null || state === undefined) {
|
|
6
6
|
return null;
|
|
7
7
|
}
|
|
8
|
-
const { [
|
|
8
|
+
const { [VIEW_CONTEXT_KEY]: _, ...filteredState } = state;
|
|
9
9
|
return filteredState;
|
|
10
10
|
}
|
|
11
|
-
export function
|
|
11
|
+
export function injectViewContext(newState) {
|
|
12
12
|
if (newState === null) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
15
|
const currentState = getAdaptor()
|
|
16
|
-
.getHostContextStore("
|
|
16
|
+
.getHostContextStore("viewState")
|
|
17
17
|
.getSnapshot();
|
|
18
18
|
if (currentState !== null &&
|
|
19
19
|
currentState !== undefined &&
|
|
20
|
-
|
|
20
|
+
VIEW_CONTEXT_KEY in currentState) {
|
|
21
21
|
return {
|
|
22
22
|
...newState,
|
|
23
|
-
[
|
|
23
|
+
[VIEW_CONTEXT_KEY]: currentState[VIEW_CONTEXT_KEY],
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
return newState;
|
|
@@ -32,11 +32,11 @@ export function deserializeState(value) {
|
|
|
32
32
|
return superjson.deserialize(value);
|
|
33
33
|
}
|
|
34
34
|
export function getInitialState(defaultState) {
|
|
35
|
-
const
|
|
36
|
-
.getHostContextStore("
|
|
35
|
+
const viewState = getAdaptor()
|
|
36
|
+
.getHostContextStore("viewState")
|
|
37
37
|
.getSnapshot();
|
|
38
|
-
if (
|
|
39
|
-
return
|
|
38
|
+
if (viewState !== null && viewState !== undefined) {
|
|
39
|
+
return filterViewContext(viewState);
|
|
40
40
|
}
|
|
41
41
|
return typeof defaultState === "function"
|
|
42
42
|
? defaultState()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/web/helpers/state.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAwB,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/web/helpers/state.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAwB,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,MAAM,UAAU,iBAAiB,CAC/B,KAAgB;IAEhB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,KAEnD,CAAC;IAEF,OAAO,aAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAkB;IAElB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,EAAE;SAC9B,mBAAmB,CAAC,WAAW,CAAC;SAChC,WAAW,EAAmD,CAAC;IAElE,IACE,YAAY,KAAK,IAAI;QACrB,YAAY,KAAK,SAAS;QAC1B,gBAAgB,IAAI,YAAY,EAChC,CAAC;QACD,OAAO;YACL,GAAG,QAAQ;YACX,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC;SAC9C,CAAC;IACT,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,OAAO,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB;AACzE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,OAAO,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,YAAoC;IAEpC,MAAM,SAAS,GAAG,UAAU,EAAE;SAC3B,mBAAmB,CAAC,WAAW,CAAC;SAChC,WAAW,EAAkB,CAAC;IAEjC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,OAAO,YAAY,KAAK,UAAU;QACvC,CAAC,CAAC,YAAY,EAAE;QAChB,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { VIEW_CONTEXT_KEY } from "../data-llm.js";
|
|
3
|
+
import { filterViewContext, serializeState } from "./state.js";
|
|
4
4
|
describe("state helpers", () => {
|
|
5
|
-
describe("
|
|
5
|
+
describe("filterViewContext", () => {
|
|
6
6
|
it("should return null when state is null", () => {
|
|
7
|
-
expect(
|
|
7
|
+
expect(filterViewContext(null)).toBe(null);
|
|
8
8
|
});
|
|
9
9
|
it("should return null when state is undefined", () => {
|
|
10
|
-
expect(
|
|
10
|
+
expect(filterViewContext(undefined)).toBe(null);
|
|
11
11
|
});
|
|
12
|
-
it("should correctly filter
|
|
12
|
+
it("should correctly filter VIEW_CONTEXT_KEY and preserve other properties", () => {
|
|
13
13
|
const stateWithContextAndOthers = {
|
|
14
14
|
a: 1,
|
|
15
15
|
b: "two",
|
|
16
16
|
c: { nested: true },
|
|
17
|
-
[
|
|
17
|
+
[VIEW_CONTEXT_KEY]: "context",
|
|
18
18
|
};
|
|
19
|
-
const filteredWithContextAndOthers =
|
|
19
|
+
const filteredWithContextAndOthers = filterViewContext(stateWithContextAndOthers);
|
|
20
20
|
expect(filteredWithContextAndOthers).toEqual({
|
|
21
21
|
a: 1,
|
|
22
22
|
b: "two",
|
|
23
23
|
c: { nested: true },
|
|
24
24
|
});
|
|
25
25
|
const stateNoContext = { count: 5, name: "test" };
|
|
26
|
-
const filteredNoContext =
|
|
26
|
+
const filteredNoContext = filterViewContext(stateNoContext);
|
|
27
27
|
expect(filteredNoContext).toEqual(stateNoContext);
|
|
28
28
|
});
|
|
29
29
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.test.js","sourceRoot":"","sources":["../../../src/web/helpers/state.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"state.test.js","sourceRoot":"","sources":["../../../src/web/helpers/state.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAChF,MAAM,yBAAyB,GAAG;gBAChC,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,KAAK;gBACR,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACnB,CAAC,gBAAgB,CAAC,EAAE,SAAS;aAC9B,CAAC;YACF,MAAM,4BAA4B,GAAG,iBAAiB,CACpD,yBAAyB,CAC1B,CAAC;YACF,MAAM,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC;gBAC3C,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,KAAK;gBACR,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;aACpB,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAClD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAC5D,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG;gBACb,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE,IAAI;gBACP,KAAK;gBACL,IAAI;gBACJ,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM;aACvB,CAAC;YACF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE,IAAI;gBACP,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC/B,IAAI,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -8,4 +8,4 @@ export { useSendFollowUpMessage } from "./use-send-follow-up-message.js";
|
|
|
8
8
|
export { useSetOpenInAppUrl } from "./use-set-open-in-app-url.js";
|
|
9
9
|
export { useToolInfo } from "./use-tool-info.js";
|
|
10
10
|
export { type UserState, useUser } from "./use-user.js";
|
|
11
|
-
export {
|
|
11
|
+
export { useViewState } from "./use-view-state.js";
|
package/dist/web/hooks/index.js
CHANGED
|
@@ -8,5 +8,5 @@ export { useSendFollowUpMessage } from "./use-send-follow-up-message.js";
|
|
|
8
8
|
export { useSetOpenInAppUrl } from "./use-set-open-in-app-url.js";
|
|
9
9
|
export { useToolInfo } from "./use-tool-info.js";
|
|
10
10
|
export { useUser } from "./use-user.js";
|
|
11
|
-
export {
|
|
11
|
+
export { useViewState } from "./use-view-state.js";
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAoB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAuB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAkB,OAAO,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAoB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAuB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAkB,OAAO,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type RequestModalOptions } from "../bridges/index.js";
|
|
2
2
|
/**
|
|
3
|
-
* Triggers a modal containing the
|
|
3
|
+
* Triggers a modal containing the view rendered in display mode "modal"
|
|
4
4
|
*/
|
|
5
5
|
export declare function useRequestModal(): {
|
|
6
6
|
isOpen: boolean;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
2
|
import { getAdaptor, useHostContext, } from "../bridges/index.js";
|
|
3
3
|
/**
|
|
4
|
-
* Triggers a modal containing the
|
|
4
|
+
* Triggers a modal containing the view rendered in display mode "modal"
|
|
5
5
|
*/
|
|
6
6
|
export function useRequestModal() {
|
|
7
7
|
const adaptor = getAdaptor();
|
|
8
|
-
const
|
|
8
|
+
const display = useHostContext("display");
|
|
9
9
|
const open = useCallback((opts) => adaptor.openModal(opts), [adaptor]);
|
|
10
10
|
return {
|
|
11
|
-
isOpen:
|
|
12
|
-
params:
|
|
11
|
+
isOpen: display.mode === "modal",
|
|
12
|
+
params: display.params,
|
|
13
13
|
open,
|
|
14
14
|
};
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-request-modal.js","sourceRoot":"","sources":["../../../src/web/hooks/use-request-modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EACL,UAAU,EAEV,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,
|
|
1
|
+
{"version":3,"file":"use-request-modal.js","sourceRoot":"","sources":["../../../src/web/hooks/use-request-modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EACL,UAAU,EAEV,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,WAAW,CACtB,CAAC,IAAyB,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EACtD,CAAC,OAAO,CAAC,CACV,CAAC;IACF,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,OAAO;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI;KACL,CAAC;AACJ,CAAC"}
|
|
@@ -51,7 +51,7 @@ describe("useRequestModal", () => {
|
|
|
51
51
|
const options = {
|
|
52
52
|
title: "Test Modal",
|
|
53
53
|
params: { foo: "bar" },
|
|
54
|
-
template: "ui://
|
|
54
|
+
template: "ui://view/modal-template.html",
|
|
55
55
|
};
|
|
56
56
|
open(options);
|
|
57
57
|
expect(requestModalMock).toHaveBeenCalledTimes(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-request-modal.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-request-modal.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,gBAA0C,CAAC;IAE/C,UAAU,CAAC,GAAG,EAAE;QACd,gBAAgB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACrD,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;YACtB,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACzB,CAAC,CAAC;IACL,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,EAAE,CAAC,+GAA+G,EAAE,GAAG,EAAE;QACvH,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;QAEvD,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEhD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAChD,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;YACtB,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SACxB,CAAC,CAAC;QAEH,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAElC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC3C,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;YACtB,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;SAC5C,CAAC,CAAC;QAEH,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAElC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAEhC,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;YACtB,QAAQ,EAAE
|
|
1
|
+
{"version":3,"file":"use-request-modal.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-request-modal.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type SetStateAction } from "react";
|
|
2
|
+
import type { UnknownObject } from "../types.js";
|
|
3
|
+
export declare function useViewState<T extends UnknownObject>(defaultState: T | (() => T)): readonly [T, (state: SetStateAction<T>) => void];
|
|
4
|
+
export declare function useViewState<T extends UnknownObject>(defaultState?: T | (() => T | null) | null): readonly [T | null, (state: SetStateAction<T | null>) => void];
|