skybridge 0.0.0-dev.ddb8489 → 0.0.0-dev.de389fc

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.
Files changed (95) hide show
  1. package/README.md +9 -5
  2. package/dist/cli/use-nodemon.d.ts +1 -0
  3. package/dist/cli/use-nodemon.js +10 -3
  4. package/dist/cli/use-nodemon.js.map +1 -1
  5. package/dist/commands/dev.d.ts +0 -1
  6. package/dist/commands/dev.js +1 -7
  7. package/dist/commands/dev.js.map +1 -1
  8. package/dist/server/express.d.ts +4 -2
  9. package/dist/server/express.js +3 -3
  10. package/dist/server/express.js.map +1 -1
  11. package/dist/server/express.test.js +117 -11
  12. package/dist/server/express.test.js.map +1 -1
  13. package/dist/server/index.d.ts +1 -0
  14. package/dist/server/index.js.map +1 -1
  15. package/dist/server/middleware.d.ts +124 -0
  16. package/dist/server/middleware.js +93 -0
  17. package/dist/server/middleware.js.map +1 -0
  18. package/dist/server/middleware.test-d.d.ts +1 -0
  19. package/dist/server/middleware.test-d.js +75 -0
  20. package/dist/server/middleware.test-d.js.map +1 -0
  21. package/dist/server/middleware.test.d.ts +1 -0
  22. package/dist/server/middleware.test.js +490 -0
  23. package/dist/server/middleware.test.js.map +1 -0
  24. package/dist/server/server.d.ts +43 -1
  25. package/dist/server/server.js +101 -30
  26. package/dist/server/server.js.map +1 -1
  27. package/dist/server/templateHelper.d.ts +0 -1
  28. package/dist/server/templateHelper.js.map +1 -1
  29. package/dist/server/templates/development.hbs +0 -55
  30. package/dist/server/widgetsDevServer.d.ts +2 -1
  31. package/dist/server/widgetsDevServer.js +2 -8
  32. package/dist/server/widgetsDevServer.js.map +1 -1
  33. package/dist/test/widget.test.js +17 -15
  34. package/dist/test/widget.test.js.map +1 -1
  35. package/dist/web/bridges/apps-sdk/adaptor.d.ts +4 -4
  36. package/dist/web/bridges/apps-sdk/adaptor.js +8 -4
  37. package/dist/web/bridges/apps-sdk/adaptor.js.map +1 -1
  38. package/dist/web/bridges/apps-sdk/bridge.d.ts +1 -1
  39. package/dist/web/bridges/apps-sdk/index.d.ts +1 -1
  40. package/dist/web/bridges/apps-sdk/index.js.map +1 -1
  41. package/dist/web/bridges/apps-sdk/types.d.ts +8 -5
  42. package/dist/web/bridges/apps-sdk/types.js.map +1 -1
  43. package/dist/web/bridges/mcp-app/adaptor.d.ts +6 -4
  44. package/dist/web/bridges/mcp-app/adaptor.js +33 -39
  45. package/dist/web/bridges/mcp-app/adaptor.js.map +1 -1
  46. package/dist/web/bridges/mcp-app/bridge.d.ts +13 -30
  47. package/dist/web/bridges/mcp-app/bridge.js +43 -201
  48. package/dist/web/bridges/mcp-app/bridge.js.map +1 -1
  49. package/dist/web/bridges/mcp-app/use-mcp-app-context.d.ts +5 -3
  50. package/dist/web/bridges/mcp-app/use-mcp-app-context.js +2 -2
  51. package/dist/web/bridges/mcp-app/use-mcp-app-context.js.map +1 -1
  52. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js +1 -41
  53. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js.map +1 -1
  54. package/dist/web/bridges/types.d.ts +7 -3
  55. package/dist/web/components/modal-provider.js +1 -3
  56. package/dist/web/components/modal-provider.js.map +1 -1
  57. package/dist/web/create-store.test.js +7 -2
  58. package/dist/web/create-store.test.js.map +1 -1
  59. package/dist/web/data-llm.test.js +2 -1
  60. package/dist/web/data-llm.test.js.map +1 -1
  61. package/dist/web/hooks/index.d.ts +1 -1
  62. package/dist/web/hooks/index.js.map +1 -1
  63. package/dist/web/hooks/test/utils.js +4 -0
  64. package/dist/web/hooks/test/utils.js.map +1 -1
  65. package/dist/web/hooks/use-display-mode.d.ts +3 -3
  66. package/dist/web/hooks/use-display-mode.js.map +1 -1
  67. package/dist/web/hooks/use-display-mode.test-d.d.ts +1 -0
  68. package/dist/web/hooks/use-display-mode.test-d.js +8 -0
  69. package/dist/web/hooks/use-display-mode.test-d.js.map +1 -0
  70. package/dist/web/hooks/use-layout.test.js +3 -3
  71. package/dist/web/hooks/use-layout.test.js.map +1 -1
  72. package/dist/web/hooks/use-open-external.d.ts +3 -1
  73. package/dist/web/hooks/use-open-external.js +1 -1
  74. package/dist/web/hooks/use-open-external.js.map +1 -1
  75. package/dist/web/hooks/use-open-external.test.js +26 -11
  76. package/dist/web/hooks/use-open-external.test.js.map +1 -1
  77. package/dist/web/hooks/use-tool-info.test.js +1 -1
  78. package/dist/web/hooks/use-tool-info.test.js.map +1 -1
  79. package/dist/web/hooks/use-user.test.js +1 -1
  80. package/dist/web/hooks/use-user.test.js.map +1 -1
  81. package/dist/web/hooks/use-widget-state.test.js +2 -0
  82. package/dist/web/hooks/use-widget-state.test.js.map +1 -1
  83. package/dist/web/plugin/plugin.js +8 -0
  84. package/dist/web/plugin/plugin.js.map +1 -1
  85. package/dist/web/plugin/validate-widget.d.ts +5 -0
  86. package/dist/web/plugin/validate-widget.js +27 -0
  87. package/dist/web/plugin/validate-widget.js.map +1 -0
  88. package/dist/web/plugin/validate-widget.test.d.ts +1 -0
  89. package/dist/web/plugin/validate-widget.test.js +42 -0
  90. package/dist/web/plugin/validate-widget.test.js.map +1 -0
  91. package/package.json +15 -15
  92. package/tsconfig.base.json +3 -0
  93. package/dist/server/const.d.ts +0 -1
  94. package/dist/server/const.js +0 -2
  95. package/dist/server/const.js.map +0 -1
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Extract the TS-private `_requestHandlers` and `_notificationHandlers` maps
3
+ * from the SDK's `Server` (extends `Protocol`). These are runtime-accessible
4
+ * but declared `private` in TypeScript.
5
+ *
6
+ * Validates with `instanceof Map` so an incompatible SDK version fails fast
7
+ * instead of silently breaking.
8
+ */
9
+ export function getHandlerMaps(server) {
10
+ const obj = server;
11
+ if (!("_requestHandlers" in obj && obj._requestHandlers instanceof Map) ||
12
+ !("_notificationHandlers" in obj && obj._notificationHandlers instanceof Map)) {
13
+ throw new Error("Incompatible MCP SDK version: expected _requestHandlers and _notificationHandlers on Server");
14
+ }
15
+ return {
16
+ requestHandlers: obj._requestHandlers,
17
+ notificationHandlers: obj._notificationHandlers,
18
+ };
19
+ }
20
+ /**
21
+ * Check if a single filter pattern matches a given method.
22
+ *
23
+ * - Exact: `"tools/call"` matches only `"tools/call"`
24
+ * - Wildcard: `"tools/*"` matches any method starting with `"tools/"`
25
+ * - Category `"request"`: matches when `isNotification` is false
26
+ * - Category `"notification"`: matches when `isNotification` is true
27
+ */
28
+ export function matchesFilter(method, filter, isNotification) {
29
+ if (filter === "request") {
30
+ return !isNotification;
31
+ }
32
+ if (filter === "notification") {
33
+ return isNotification;
34
+ }
35
+ if (filter.endsWith("/*")) {
36
+ const prefix = filter.slice(0, -1); // "tools/*" → "tools/"
37
+ return method.startsWith(prefix);
38
+ }
39
+ return method === filter;
40
+ }
41
+ function matchesAnyFilter(method, filter, isNotification) {
42
+ if (filter === null) {
43
+ return true;
44
+ }
45
+ if (typeof filter === "string") {
46
+ return matchesFilter(method, filter, isNotification);
47
+ }
48
+ return filter.some((pattern) => matchesFilter(method, pattern, isNotification));
49
+ }
50
+ /**
51
+ * Build an onion-model middleware chain for a specific method.
52
+ *
53
+ * Filters `entries` to those matching `method`, then composes them
54
+ * so the first registered middleware is the outermost layer.
55
+ * `next()` is guarded against multiple calls within a single middleware.
56
+ */
57
+ export function buildMiddlewareChain(method, isNotification, originalHandler, entries) {
58
+ const applicable = entries.filter((entry) => matchesAnyFilter(method, entry.filter, isNotification));
59
+ if (applicable.length === 0) {
60
+ return originalHandler;
61
+ }
62
+ return (...args) => {
63
+ const rawRequest = args[0];
64
+ // SDK calls request handlers as handler(request, extra) but
65
+ // notification handlers as handler(notification) — no extra arg.
66
+ const extra = isNotification ? undefined : args[1];
67
+ const mcpRequest = {
68
+ method,
69
+ params: rawRequest?.params ?? {},
70
+ };
71
+ let index = 0;
72
+ const executeLayer = () => {
73
+ const entry = applicable[index++];
74
+ if (!entry) {
75
+ if (rawRequest) {
76
+ rawRequest.params = mcpRequest.params;
77
+ }
78
+ return originalHandler(...args);
79
+ }
80
+ let nextCalled = false;
81
+ const next = () => {
82
+ if (nextCalled) {
83
+ throw new Error(`next() called multiple times in middleware for "${method}"`);
84
+ }
85
+ nextCalled = true;
86
+ return executeLayer();
87
+ };
88
+ return Promise.resolve(entry.handler(mcpRequest, extra, next));
89
+ };
90
+ return executeLayer();
91
+ };
92
+ }
93
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,75 @@
1
+ import { expectTypeOf, test } from "vitest";
2
+ const server = null;
3
+ test("request category narrows extra and next() result", () => {
4
+ server.mcpMiddleware("request", async (_request, extra, next) => {
5
+ expectTypeOf(extra).toEqualTypeOf();
6
+ extra.signal;
7
+ const result = await next();
8
+ expectTypeOf(result).toEqualTypeOf();
9
+ return result;
10
+ });
11
+ });
12
+ test("notification category narrows extra and next() result", () => {
13
+ server.mcpMiddleware("notification", async (_request, extra, next) => {
14
+ expectTypeOf(extra).toEqualTypeOf();
15
+ // @ts-expect-error extra is undefined, cannot access .signal
16
+ extra.signal;
17
+ const result = await next();
18
+ expectTypeOf(result).toEqualTypeOf();
19
+ });
20
+ });
21
+ test("exact method tools/call narrows params, extra, and next() result", () => {
22
+ server.mcpMiddleware("tools/call", async (request, extra, next) => {
23
+ expectTypeOf(request.params.name).toBeString();
24
+ expectTypeOf(extra).toEqualTypeOf();
25
+ const result = await next();
26
+ expectTypeOf(result).toEqualTypeOf();
27
+ return result;
28
+ });
29
+ });
30
+ test("exact method tools/list narrows next() to ListToolsResult", () => {
31
+ server.mcpMiddleware("tools/list", async (_request, _extra, next) => {
32
+ const result = await next();
33
+ expectTypeOf(result).toEqualTypeOf();
34
+ return result;
35
+ });
36
+ });
37
+ test("exact notification method narrows extra and next() result", () => {
38
+ server.mcpMiddleware("notifications/initialized", async (_request, extra, next) => {
39
+ expectTypeOf(extra).toEqualTypeOf();
40
+ // @ts-expect-error extra is undefined
41
+ extra.signal;
42
+ const result = await next();
43
+ expectTypeOf(result).toEqualTypeOf();
44
+ });
45
+ });
46
+ test("McpTypedMiddlewareFn narrows params, extra, and next() per method", () => {
47
+ expectTypeOf().toBeString();
48
+ expectTypeOf().toEqualTypeOf();
49
+ expectTypeOf().toEqualTypeOf();
50
+ expectTypeOf().toEqualTypeOf();
51
+ expectTypeOf().toEqualTypeOf();
52
+ });
53
+ test("McpResultFor maps methods to correct result types", () => {
54
+ expectTypeOf().toEqualTypeOf();
55
+ expectTypeOf().toEqualTypeOf();
56
+ expectTypeOf().toEqualTypeOf();
57
+ });
58
+ test("wildcard tools/* narrows next() to union of tools result types", () => {
59
+ server.mcpMiddleware("tools/*", async (_request, _extra, next) => {
60
+ const result = await next();
61
+ expectTypeOf(result).toEqualTypeOf();
62
+ return result;
63
+ });
64
+ });
65
+ test("McpResultFor resolves wildcards to union of matching result types", () => {
66
+ expectTypeOf().toEqualTypeOf();
67
+ });
68
+ test("catch-all middleware has no narrowing on extra or params", () => {
69
+ server.mcpMiddleware((_request, extra, next) => {
70
+ expectTypeOf(extra).toEqualTypeOf();
71
+ expectTypeOf(_request.params).toEqualTypeOf();
72
+ return next();
73
+ });
74
+ });
75
+ //# sourceMappingURL=middleware.test-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.test-d.js","sourceRoot":"","sources":["../../src/server/middleware.test-d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};