skybridge 0.0.0-dev.c323857 → 0.0.0-dev.c36ba3f

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 (191) hide show
  1. package/README.md +153 -0
  2. package/bin/run.js +0 -4
  3. package/dist/cli/detect-port.d.ts +18 -0
  4. package/dist/cli/detect-port.js +61 -0
  5. package/dist/cli/detect-port.js.map +1 -0
  6. package/dist/cli/telemetry.d.ts +7 -0
  7. package/dist/cli/telemetry.js +123 -0
  8. package/dist/cli/telemetry.js.map +1 -0
  9. package/dist/cli/types.d.ts +5 -0
  10. package/dist/cli/types.js +2 -0
  11. package/dist/cli/types.js.map +1 -0
  12. package/dist/cli/use-execute-steps.d.ts +3 -2
  13. package/dist/cli/use-execute-steps.js +6 -1
  14. package/dist/cli/use-execute-steps.js.map +1 -1
  15. package/dist/cli/use-messages.d.ts +3 -0
  16. package/dist/cli/use-messages.js +11 -0
  17. package/dist/cli/use-messages.js.map +1 -0
  18. package/dist/cli/use-nodemon.d.ts +2 -0
  19. package/dist/cli/use-nodemon.js +64 -0
  20. package/dist/cli/use-nodemon.js.map +1 -0
  21. package/dist/cli/use-tunnel.d.ts +7 -0
  22. package/dist/cli/use-tunnel.js +92 -0
  23. package/dist/cli/use-tunnel.js.map +1 -0
  24. package/dist/cli/use-typescript-check.d.ts +8 -0
  25. package/dist/cli/use-typescript-check.js +59 -0
  26. package/dist/cli/use-typescript-check.js.map +1 -0
  27. package/dist/commands/build.js +4 -2
  28. package/dist/commands/build.js.map +1 -1
  29. package/dist/commands/dev.d.ts +4 -1
  30. package/dist/commands/dev.js +33 -9
  31. package/dist/commands/dev.js.map +1 -1
  32. package/dist/commands/start.d.ts +3 -1
  33. package/dist/commands/start.js +34 -15
  34. package/dist/commands/start.js.map +1 -1
  35. package/dist/commands/telemetry/disable.d.ts +5 -0
  36. package/dist/commands/telemetry/disable.js +14 -0
  37. package/dist/commands/telemetry/disable.js.map +1 -0
  38. package/dist/commands/telemetry/enable.d.ts +5 -0
  39. package/dist/commands/telemetry/enable.js +14 -0
  40. package/dist/commands/telemetry/enable.js.map +1 -0
  41. package/dist/commands/telemetry/status.d.ts +5 -0
  42. package/dist/commands/telemetry/status.js +14 -0
  43. package/dist/commands/telemetry/status.js.map +1 -0
  44. package/dist/server/asset-base-url-transform-plugin.d.ts +10 -0
  45. package/dist/server/asset-base-url-transform-plugin.js +33 -0
  46. package/dist/server/asset-base-url-transform-plugin.js.map +1 -0
  47. package/dist/server/asset-base-url-transform-plugin.test.js +55 -0
  48. package/dist/server/asset-base-url-transform-plugin.test.js.map +1 -0
  49. package/dist/server/express.d.ts +15 -0
  50. package/dist/server/express.js +77 -0
  51. package/dist/server/express.js.map +1 -0
  52. package/dist/server/express.test.d.ts +1 -0
  53. package/dist/server/express.test.js +252 -0
  54. package/dist/server/express.test.js.map +1 -0
  55. package/dist/server/index.d.ts +1 -0
  56. package/dist/server/index.js.map +1 -1
  57. package/dist/server/metric.d.ts +14 -0
  58. package/dist/server/metric.js +62 -0
  59. package/dist/server/metric.js.map +1 -0
  60. package/dist/server/middleware.d.ts +124 -0
  61. package/dist/server/middleware.js +93 -0
  62. package/dist/server/middleware.js.map +1 -0
  63. package/dist/server/middleware.test-d.d.ts +1 -0
  64. package/dist/server/middleware.test-d.js +75 -0
  65. package/dist/server/middleware.test-d.js.map +1 -0
  66. package/dist/server/middleware.test.d.ts +1 -0
  67. package/dist/server/middleware.test.js +490 -0
  68. package/dist/server/middleware.test.js.map +1 -0
  69. package/dist/server/server.d.ts +52 -1
  70. package/dist/server/server.js +176 -12
  71. package/dist/server/server.js.map +1 -1
  72. package/dist/server/templates/development.hbs +1 -55
  73. package/dist/server/templates/production.hbs +1 -2
  74. package/dist/server/widgetsDevServer.d.ts +2 -1
  75. package/dist/server/widgetsDevServer.js +7 -2
  76. package/dist/server/widgetsDevServer.js.map +1 -1
  77. package/dist/test/utils.d.ts +5 -1
  78. package/dist/test/utils.js +3 -2
  79. package/dist/test/utils.js.map +1 -1
  80. package/dist/test/widget.test.js +100 -21
  81. package/dist/test/widget.test.js.map +1 -1
  82. package/dist/version.d.ts +1 -0
  83. package/dist/version.js +5 -0
  84. package/dist/version.js.map +1 -0
  85. package/dist/web/bridges/apps-sdk/adaptor.d.ts +14 -4
  86. package/dist/web/bridges/apps-sdk/adaptor.js +53 -5
  87. package/dist/web/bridges/apps-sdk/adaptor.js.map +1 -1
  88. package/dist/web/bridges/apps-sdk/bridge.d.ts +5 -5
  89. package/dist/web/bridges/apps-sdk/bridge.js.map +1 -1
  90. package/dist/web/bridges/apps-sdk/index.d.ts +2 -2
  91. package/dist/web/bridges/apps-sdk/index.js +1 -1
  92. package/dist/web/bridges/apps-sdk/index.js.map +1 -1
  93. package/dist/web/bridges/apps-sdk/types.d.ts +32 -27
  94. package/dist/web/bridges/apps-sdk/types.js.map +1 -1
  95. package/dist/web/bridges/apps-sdk/use-apps-sdk-context.d.ts +2 -0
  96. package/dist/web/bridges/apps-sdk/{use-apps-sdk-bridge.js → use-apps-sdk-context.js} +2 -2
  97. package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js.map +1 -0
  98. package/dist/web/bridges/mcp-app/adaptor.d.ts +33 -4
  99. package/dist/web/bridges/mcp-app/adaptor.js +163 -40
  100. package/dist/web/bridges/mcp-app/adaptor.js.map +1 -1
  101. package/dist/web/bridges/mcp-app/bridge.d.ts +18 -35
  102. package/dist/web/bridges/mcp-app/bridge.js +43 -197
  103. package/dist/web/bridges/mcp-app/bridge.js.map +1 -1
  104. package/dist/web/bridges/mcp-app/index.d.ts +2 -2
  105. package/dist/web/bridges/mcp-app/index.js +1 -1
  106. package/dist/web/bridges/mcp-app/index.js.map +1 -1
  107. package/dist/web/bridges/mcp-app/types.d.ts +2 -2
  108. package/dist/web/bridges/mcp-app/use-mcp-app-context.d.ts +7 -0
  109. package/dist/web/bridges/mcp-app/use-mcp-app-context.js +7 -0
  110. package/dist/web/bridges/mcp-app/use-mcp-app-context.js.map +1 -0
  111. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.d.ts +1 -0
  112. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js +26 -0
  113. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js.map +1 -0
  114. package/dist/web/bridges/types.d.ts +39 -4
  115. package/dist/web/components/modal-provider.d.ts +4 -0
  116. package/dist/web/components/modal-provider.js +45 -0
  117. package/dist/web/components/modal-provider.js.map +1 -0
  118. package/dist/web/create-store.js +15 -1
  119. package/dist/web/create-store.js.map +1 -1
  120. package/dist/web/create-store.test.js +11 -5
  121. package/dist/web/create-store.test.js.map +1 -1
  122. package/dist/web/data-llm.test.js +12 -10
  123. package/dist/web/data-llm.test.js.map +1 -1
  124. package/dist/web/generate-helpers.d.ts +1 -1
  125. package/dist/web/generate-helpers.js +1 -1
  126. package/dist/web/hooks/index.d.ts +2 -1
  127. package/dist/web/hooks/index.js +1 -0
  128. package/dist/web/hooks/index.js.map +1 -1
  129. package/dist/web/hooks/test/utils.js +4 -0
  130. package/dist/web/hooks/test/utils.js.map +1 -1
  131. package/dist/web/hooks/use-display-mode.d.ts +3 -3
  132. package/dist/web/hooks/use-display-mode.js.map +1 -1
  133. package/dist/web/hooks/use-display-mode.test-d.d.ts +1 -0
  134. package/dist/web/hooks/use-display-mode.test-d.js +8 -0
  135. package/dist/web/hooks/use-display-mode.test-d.js.map +1 -0
  136. package/dist/web/hooks/use-files.d.ts +3 -6
  137. package/dist/web/hooks/use-files.js +5 -2
  138. package/dist/web/hooks/use-files.js.map +1 -1
  139. package/dist/web/hooks/use-files.test.js +28 -3
  140. package/dist/web/hooks/use-files.test.js.map +1 -1
  141. package/dist/web/hooks/use-layout.d.ts +1 -1
  142. package/dist/web/hooks/use-layout.test.js +5 -4
  143. package/dist/web/hooks/use-layout.test.js.map +1 -1
  144. package/dist/web/hooks/use-open-external.d.ts +3 -1
  145. package/dist/web/hooks/use-open-external.js +1 -1
  146. package/dist/web/hooks/use-open-external.js.map +1 -1
  147. package/dist/web/hooks/use-open-external.test.js +26 -11
  148. package/dist/web/hooks/use-open-external.test.js.map +1 -1
  149. package/dist/web/hooks/use-request-modal.d.ts +2 -2
  150. package/dist/web/hooks/use-request-modal.js +9 -7
  151. package/dist/web/hooks/use-request-modal.js.map +1 -1
  152. package/dist/web/hooks/use-request-modal.test.js +5 -1
  153. package/dist/web/hooks/use-request-modal.test.js.map +1 -1
  154. package/dist/web/hooks/use-set-open-in-app-url.d.ts +1 -0
  155. package/dist/web/hooks/use-set-open-in-app-url.js +8 -0
  156. package/dist/web/hooks/use-set-open-in-app-url.js.map +1 -0
  157. package/dist/web/hooks/use-set-open-in-app-url.test.d.ts +1 -0
  158. package/dist/web/hooks/use-set-open-in-app-url.test.js +43 -0
  159. package/dist/web/hooks/use-set-open-in-app-url.test.js.map +1 -0
  160. package/dist/web/hooks/use-tool-info.test.js +3 -2
  161. package/dist/web/hooks/use-tool-info.test.js.map +1 -1
  162. package/dist/web/hooks/use-user.js +18 -2
  163. package/dist/web/hooks/use-user.js.map +1 -1
  164. package/dist/web/hooks/use-user.test.js +31 -2
  165. package/dist/web/hooks/use-user.test.js.map +1 -1
  166. package/dist/web/hooks/use-widget-state.test.js +123 -7
  167. package/dist/web/hooks/use-widget-state.test.js.map +1 -1
  168. package/dist/web/mount-widget.js +9 -1
  169. package/dist/web/mount-widget.js.map +1 -1
  170. package/dist/web/plugin/plugin.js +24 -9
  171. package/dist/web/plugin/plugin.js.map +1 -1
  172. package/dist/web/plugin/transform-data-llm.js +1 -1
  173. package/dist/web/plugin/transform-data-llm.js.map +1 -1
  174. package/dist/web/plugin/validate-widget.d.ts +5 -0
  175. package/dist/web/plugin/validate-widget.js +27 -0
  176. package/dist/web/plugin/validate-widget.js.map +1 -0
  177. package/dist/web/plugin/validate-widget.test.d.ts +1 -0
  178. package/dist/web/plugin/validate-widget.test.js +42 -0
  179. package/dist/web/plugin/validate-widget.test.js.map +1 -0
  180. package/dist/web/proxy.js +0 -1
  181. package/dist/web/proxy.js.map +1 -1
  182. package/package.json +38 -26
  183. package/tsconfig.base.json +31 -0
  184. package/dist/web/bridges/apps-sdk/use-apps-sdk-bridge.d.ts +0 -2
  185. package/dist/web/bridges/apps-sdk/use-apps-sdk-bridge.js.map +0 -1
  186. package/dist/web/bridges/mcp-app/use-mcp-app-bridge.d.ts +0 -5
  187. package/dist/web/bridges/mcp-app/use-mcp-app-bridge.js +0 -7
  188. package/dist/web/bridges/mcp-app/use-mcp-app-bridge.js.map +0 -1
  189. package/dist/web/bridges/mcp-app/use-mcp-app-bridge.test.js +0 -57
  190. package/dist/web/bridges/mcp-app/use-mcp-app-bridge.test.js.map +0 -1
  191. /package/dist/{web/bridges/mcp-app/use-mcp-app-bridge.test.d.ts → server/asset-base-url-transform-plugin.test.d.ts} +0 -0
@@ -0,0 +1,42 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { validateWidget } from "./validate-widget.js";
3
+ describe("validateWidget", () => {
4
+ it("returns no warnings for a valid widget", () => {
5
+ expect(validateWidget("export default MyWidget;\nmountWidget(<MyWidget />);", "src/widgets/my-widget.tsx")).toEqual([]);
6
+ });
7
+ it("accepts all default export syntaxes", () => {
8
+ for (const exportLine of [
9
+ "export default MyWidget;",
10
+ "export default function MyWidget() {}",
11
+ "export { Foo as default };",
12
+ ]) {
13
+ expect(validateWidget(`${exportLine}\nmountWidget(<MyWidget />);`, "src/widgets/my-widget.tsx")).toEqual([]);
14
+ }
15
+ });
16
+ it("warns when export default is missing", () => {
17
+ const warnings = validateWidget("mountWidget(<MyWidget />);", "src/widgets/my-widget.tsx");
18
+ expect(warnings).toHaveLength(1);
19
+ expect(warnings[0]?.message).toContain("missing a default export");
20
+ expect(warnings[0]?.message).toContain("my-widget.tsx");
21
+ });
22
+ it("warns when mountWidget() call is missing", () => {
23
+ const warnings = validateWidget("export default MyWidget;", "src/widgets/my-widget.tsx");
24
+ expect(warnings).toHaveLength(1);
25
+ expect(warnings[0]?.message).toContain("missing a mountWidget() call");
26
+ expect(warnings[0]?.message).toContain("my-widget.tsx");
27
+ });
28
+ it("ignores commented-out code", () => {
29
+ const code = `
30
+ // export default MyWidget;
31
+ // mountWidget(<MyWidget />);
32
+ /* export default MyWidget; */
33
+ /* mountWidget(<MyWidget />); */
34
+ `;
35
+ expect(validateWidget(code, "src/widgets/my-widget.tsx")).toHaveLength(2);
36
+ });
37
+ it("uses filename from path for directory widgets", () => {
38
+ const warnings = validateWidget("", "src/widgets/foo/index.tsx");
39
+ expect(warnings[0]?.message).toContain("index.tsx");
40
+ });
41
+ });
42
+ //# sourceMappingURL=validate-widget.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-widget.test.js","sourceRoot":"","sources":["../../../src/web/plugin/validate-widget.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CACJ,cAAc,CACZ,sDAAsD,EACtD,2BAA2B,CAC5B,CACF,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,KAAK,MAAM,UAAU,IAAI;YACvB,0BAA0B;YAC1B,uCAAuC;YACvC,4BAA4B;SAC7B,EAAE,CAAC;YACF,MAAM,CACJ,cAAc,CACZ,GAAG,UAAU,8BAA8B,EAC3C,2BAA2B,CAC5B,CACF,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,QAAQ,GAAG,cAAc,CAC7B,4BAA4B,EAC5B,2BAA2B,CAC5B,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACnE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,QAAQ,GAAG,cAAc,CAC7B,0BAA0B,EAC1B,2BAA2B,CAC5B,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACvE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,IAAI,GAAG;;;;;KAKZ,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;QACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,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");
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/web/proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/web/proxy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,20 @@
1
1
  {
2
2
  "name": "skybridge",
3
- "version": "0.0.0-dev.c323857",
4
- "description": "Skybridge is a framework for building ChatGPT apps",
3
+ "version": "0.0.0-dev.c36ba3f",
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"
@@ -29,43 +33,48 @@
29
33
  "author": "Frédéric Barthelet",
30
34
  "license": "ISC",
31
35
  "peerDependencies": {
32
- "@modelcontextprotocol/sdk": ">=1.0.0",
36
+ "@modelcontextprotocol/sdk": ">=1.27.0",
37
+ "@skybridge/devtools": ">=0.35.14 <1.0.0",
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.28.5",
38
- "@oclif/core": "^4.8.0",
39
- "cors": "^2.8.5",
44
+ "@babel/core": "^7.29.0",
45
+ "@modelcontextprotocol/ext-apps": "^1.6.0",
46
+ "@oclif/core": "^4.10.5",
47
+ "ci-info": "^4.4.0",
48
+ "cors": "^2.8.6",
40
49
  "dequal": "^2.0.3",
41
- "es-toolkit": "^1.43.0",
50
+ "es-toolkit": "^1.45.1",
42
51
  "express": "^5.2.1",
43
- "handlebars": "^4.7.8",
44
- "ink": "^6.6.0",
52
+ "handlebars": "^4.7.9",
53
+ "ink": "^7.0.1",
54
+ "posthog-node": "^5.29.2",
45
55
  "superjson": "^2.2.6",
46
- "vite": "^7.3.1",
47
- "zustand": "^5.0.9"
56
+ "zustand": "^5.0.12"
48
57
  },
49
58
  "devDependencies": {
50
- "@modelcontextprotocol/ext-apps": "^0.4.0",
51
- "@modelcontextprotocol/sdk": "^1.25.2",
59
+ "@modelcontextprotocol/sdk": "^1.29.0",
52
60
  "@testing-library/dom": "^10.4.1",
53
- "@testing-library/react": "^16.3.1",
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
- "@types/jsdom": "^27.0.0",
59
- "@types/node": "^24.10.4",
60
- "@types/react": "^19.2.7",
66
+ "@types/jsdom": "^28.0.1",
67
+ "@types/node": "^24.12.2",
68
+ "@types/react": "^19.2.14",
61
69
  "@types/react-dom": "^19.2.3",
62
- "@vitest/ui": "^4.0.16",
63
- "jsdom": "^27.4.0",
64
- "shx": "^0.3.4",
70
+ "@vitest/ui": "^4.1.4",
71
+ "jsdom": "^29.0.2",
72
+ "shx": "^0.4.0",
65
73
  "ts-node": "^10.9.2",
66
- "typescript": "^5.9.3",
67
- "vitest": "^4.0.16",
68
- "zod": "^4.3.5"
74
+ "typescript": "^6.0.3",
75
+ "vite": "^8.0.0",
76
+ "vitest": "^4.1.4",
77
+ "zod": "^4.3.6"
69
78
  },
70
79
  "bin": {
71
80
  "sb": "./bin/run.js",
@@ -75,7 +84,10 @@
75
84
  "bin": "skybridge",
76
85
  "commands": "./dist/commands",
77
86
  "dirname": "skybridge",
78
- "topicSeparator": " "
87
+ "topicSeparator": " ",
88
+ "hooks": {
89
+ "finally": "./dist/cli/telemetry"
90
+ }
79
91
  },
80
92
  "scripts": {
81
93
  "build": "shx rm -rf dist && tsc && pnpm run build:templates",
@@ -0,0 +1,31 @@
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
+ // Type declarations
19
+ "types": ["node", "vite/client"],
20
+
21
+ // Strictness and checking options
22
+ "strict": true,
23
+ "skipLibCheck": true,
24
+ "forceConsistentCasingInFileNames": true,
25
+
26
+ // Code quality & diagnostics
27
+ "noUnusedLocals": true,
28
+ "noUnusedParameters": true,
29
+ "noFallthroughCasesInSwitch": true
30
+ }
31
+ }
@@ -1,2 +0,0 @@
1
- import type { OpenAiProperties } from "./types.js";
2
- export declare function useAppsSdkBridge<K extends keyof OpenAiProperties>(key: K): OpenAiProperties[K];
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-apps-sdk-bridge.js","sourceRoot":"","sources":["../../../../src/web/bridges/apps-sdk/use-apps-sdk-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,UAAU,gBAAgB,CAC9B,GAAM;IAEN,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CACtD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CACxB,CAAC;AACJ,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { McpUiInitializeRequest } from "@modelcontextprotocol/ext-apps";
2
- import type { McpAppBridgeContext } from "./types.js";
3
- type McpAppInitializationOptions = Pick<McpUiInitializeRequest["params"], "appInfo">;
4
- export declare function useMcpAppBridge<K extends keyof McpAppBridgeContext>(key: K, options?: Partial<McpAppInitializationOptions>, requestTimeout?: number): McpAppBridgeContext[K];
5
- export {};
@@ -1,7 +0,0 @@
1
- import { useSyncExternalStore } from "react";
2
- import { McpAppBridge } from "./bridge.js";
3
- export function useMcpAppBridge(key, options, requestTimeout) {
4
- const bridge = McpAppBridge.getInstance(options, requestTimeout);
5
- return useSyncExternalStore(bridge.subscribe(key), () => bridge.getSnapshot(key));
6
- }
7
- //# sourceMappingURL=use-mcp-app-bridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-mcp-app-bridge.js","sourceRoot":"","sources":["../../../../src/web/bridges/mcp-app/use-mcp-app-bridge.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,MAAM,UAAU,eAAe,CAC7B,GAAM,EACN,OAA8C,EAC9C,cAAuB;IAEvB,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACjE,OAAO,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CACtD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CACxB,CAAC;AACJ,CAAC"}
@@ -1,57 +0,0 @@
1
- import { act, renderHook, waitFor } from "@testing-library/react";
2
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
- import { getMcpAppHostPostMessageMock, MockResizeObserver, } from "../../hooks/test/utils.js";
4
- import { McpAppBridge } from "./bridge.js";
5
- import { useMcpAppBridge } from "./use-mcp-app-bridge.js";
6
- describe("useMcpAppBridge", () => {
7
- beforeEach(async () => {
8
- vi.stubGlobal("skybridge", { hostType: "mcp-app" });
9
- vi.stubGlobal("ResizeObserver", MockResizeObserver);
10
- McpAppBridge.resetInstance();
11
- });
12
- afterEach(() => {
13
- vi.unstubAllGlobals();
14
- vi.clearAllMocks();
15
- });
16
- it("should return the theme value from host context and update on notification", async () => {
17
- vi.stubGlobal("parent", {
18
- postMessage: getMcpAppHostPostMessageMock({ theme: "light" }),
19
- });
20
- const { result } = renderHook(() => useMcpAppBridge("theme"));
21
- await waitFor(() => {
22
- expect(result.current).toBe("light");
23
- });
24
- });
25
- it("should reject the request after timeout", async () => {
26
- vi.useFakeTimers();
27
- const consoleErrorSpy = vi
28
- .spyOn(console, "error")
29
- .mockImplementation(() => { });
30
- const nonRespondingMock = vi.fn();
31
- vi.stubGlobal("parent", { postMessage: nonRespondingMock });
32
- renderHook(() => useMcpAppBridge("theme", undefined, 100));
33
- expect(nonRespondingMock).toHaveBeenCalledWith(expect.objectContaining({ method: "ui/initialize" }), "*");
34
- await act(async () => {
35
- await vi.advanceTimersByTimeAsync(100);
36
- });
37
- expect(consoleErrorSpy).toHaveBeenCalledWith(new Error("Request timed out"));
38
- consoleErrorSpy.mockRestore();
39
- vi.useRealTimers();
40
- });
41
- it("should send size-changed notification after successful initialization", async () => {
42
- const postMessageMock = getMcpAppHostPostMessageMock({ theme: "light" });
43
- vi.stubGlobal("parent", { postMessage: postMessageMock });
44
- renderHook(() => useMcpAppBridge("theme"));
45
- await waitFor(() => {
46
- expect(postMessageMock).toHaveBeenCalledWith(expect.objectContaining({
47
- jsonrpc: "2.0",
48
- method: "ui/notifications/size-changed",
49
- params: expect.objectContaining({
50
- width: expect.any(Number),
51
- height: expect.any(Number),
52
- }),
53
- }), "*");
54
- });
55
- });
56
- });
57
- //# sourceMappingURL=use-mcp-app-bridge.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-mcp-app-bridge.test.js","sourceRoot":"","sources":["../../../../src/web/bridges/mcp-app/use-mcp-app-bridge.test.ts"],"names":[],"mappings":"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"}