skybridge 0.0.0-dev.d20f258 → 0.0.0-dev.d23dff1

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 (124) hide show
  1. package/README.md +9 -4
  2. package/dist/cli/detect-port.d.ts +18 -0
  3. package/dist/cli/detect-port.js +61 -0
  4. package/dist/cli/detect-port.js.map +1 -0
  5. package/dist/cli/types.d.ts +5 -0
  6. package/dist/cli/types.js +2 -0
  7. package/dist/cli/types.js.map +1 -0
  8. package/dist/cli/use-execute-steps.d.ts +1 -1
  9. package/dist/cli/use-execute-steps.js +2 -7
  10. package/dist/cli/use-execute-steps.js.map +1 -1
  11. package/dist/cli/use-nodemon.d.ts +1 -5
  12. package/dist/cli/use-nodemon.js +22 -17
  13. package/dist/cli/use-nodemon.js.map +1 -1
  14. package/dist/cli/use-tunnel.d.ts +8 -0
  15. package/dist/cli/use-tunnel.js +101 -0
  16. package/dist/cli/use-tunnel.js.map +1 -0
  17. package/dist/commands/build.js +3 -30
  18. package/dist/commands/build.js.map +1 -1
  19. package/dist/commands/dev.d.ts +2 -1
  20. package/dist/commands/dev.js +20 -7
  21. package/dist/commands/dev.js.map +1 -1
  22. package/dist/commands/start.d.ts +3 -1
  23. package/dist/commands/start.js +34 -15
  24. package/dist/commands/start.js.map +1 -1
  25. package/dist/server/express.d.ts +15 -0
  26. package/dist/server/express.js +77 -0
  27. package/dist/server/express.js.map +1 -0
  28. package/dist/server/express.test.js +252 -0
  29. package/dist/server/express.test.js.map +1 -0
  30. package/dist/server/index.d.ts +1 -1
  31. package/dist/server/index.js +0 -1
  32. package/dist/server/index.js.map +1 -1
  33. package/dist/server/middleware.d.ts +124 -0
  34. package/dist/server/middleware.js +93 -0
  35. package/dist/server/middleware.js.map +1 -0
  36. package/dist/server/middleware.test-d.d.ts +1 -0
  37. package/dist/server/middleware.test-d.js +75 -0
  38. package/dist/server/middleware.test-d.js.map +1 -0
  39. package/dist/server/middleware.test.d.ts +1 -0
  40. package/dist/server/middleware.test.js +490 -0
  41. package/dist/server/middleware.test.js.map +1 -0
  42. package/dist/server/server.d.ts +52 -1
  43. package/dist/server/server.js +161 -12
  44. package/dist/server/server.js.map +1 -1
  45. package/dist/server/templates/development.hbs +0 -53
  46. package/dist/server/widgetsDevServer.d.ts +2 -1
  47. package/dist/server/widgetsDevServer.js +7 -2
  48. package/dist/server/widgetsDevServer.js.map +1 -1
  49. package/dist/test/widget.test.js +27 -19
  50. package/dist/test/widget.test.js.map +1 -1
  51. package/dist/web/bridges/apps-sdk/adaptor.d.ts +4 -4
  52. package/dist/web/bridges/apps-sdk/adaptor.js +26 -15
  53. package/dist/web/bridges/apps-sdk/adaptor.js.map +1 -1
  54. package/dist/web/bridges/apps-sdk/bridge.d.ts +1 -1
  55. package/dist/web/bridges/apps-sdk/index.d.ts +1 -1
  56. package/dist/web/bridges/apps-sdk/index.js.map +1 -1
  57. package/dist/web/bridges/apps-sdk/types.d.ts +14 -8
  58. package/dist/web/bridges/apps-sdk/types.js.map +1 -1
  59. package/dist/web/bridges/mcp-app/adaptor.d.ts +6 -4
  60. package/dist/web/bridges/mcp-app/adaptor.js +37 -38
  61. package/dist/web/bridges/mcp-app/adaptor.js.map +1 -1
  62. package/dist/web/bridges/mcp-app/bridge.d.ts +13 -30
  63. package/dist/web/bridges/mcp-app/bridge.js +43 -196
  64. package/dist/web/bridges/mcp-app/bridge.js.map +1 -1
  65. package/dist/web/bridges/mcp-app/use-mcp-app-context.d.ts +5 -3
  66. package/dist/web/bridges/mcp-app/use-mcp-app-context.js +2 -2
  67. package/dist/web/bridges/mcp-app/use-mcp-app-context.js.map +1 -1
  68. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js +1 -41
  69. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js.map +1 -1
  70. package/dist/web/bridges/types.d.ts +8 -3
  71. package/dist/web/components/modal-provider.js +1 -3
  72. package/dist/web/components/modal-provider.js.map +1 -1
  73. package/dist/web/create-store.test.js +9 -4
  74. package/dist/web/create-store.test.js.map +1 -1
  75. package/dist/web/data-llm.test.js +11 -8
  76. package/dist/web/data-llm.test.js.map +1 -1
  77. package/dist/web/hooks/index.d.ts +1 -1
  78. package/dist/web/hooks/index.js.map +1 -1
  79. package/dist/web/hooks/test/utils.js +4 -0
  80. package/dist/web/hooks/test/utils.js.map +1 -1
  81. package/dist/web/hooks/use-display-mode.d.ts +3 -3
  82. package/dist/web/hooks/use-display-mode.js.map +1 -1
  83. package/dist/web/hooks/use-display-mode.test-d.d.ts +1 -0
  84. package/dist/web/hooks/use-display-mode.test-d.js +8 -0
  85. package/dist/web/hooks/use-display-mode.test-d.js.map +1 -0
  86. package/dist/web/hooks/use-files.test.js +5 -1
  87. package/dist/web/hooks/use-files.test.js.map +1 -1
  88. package/dist/web/hooks/use-layout.test.js +3 -3
  89. package/dist/web/hooks/use-layout.test.js.map +1 -1
  90. package/dist/web/hooks/use-open-external.d.ts +3 -1
  91. package/dist/web/hooks/use-open-external.js +1 -1
  92. package/dist/web/hooks/use-open-external.js.map +1 -1
  93. package/dist/web/hooks/use-open-external.test.js +26 -11
  94. package/dist/web/hooks/use-open-external.test.js.map +1 -1
  95. package/dist/web/hooks/use-request-modal.test.js +5 -1
  96. package/dist/web/hooks/use-request-modal.test.js.map +1 -1
  97. package/dist/web/hooks/use-set-open-in-app-url.test.js +5 -11
  98. package/dist/web/hooks/use-set-open-in-app-url.test.js.map +1 -1
  99. package/dist/web/hooks/use-tool-info.test.js +1 -1
  100. package/dist/web/hooks/use-tool-info.test.js.map +1 -1
  101. package/dist/web/hooks/use-user.js +18 -2
  102. package/dist/web/hooks/use-user.js.map +1 -1
  103. package/dist/web/hooks/use-user.test.js +29 -1
  104. package/dist/web/hooks/use-user.test.js.map +1 -1
  105. package/dist/web/hooks/use-widget-state.test.js +9 -6
  106. package/dist/web/hooks/use-widget-state.test.js.map +1 -1
  107. package/dist/web/plugin/plugin.js +17 -9
  108. package/dist/web/plugin/plugin.js.map +1 -1
  109. package/dist/web/plugin/validate-widget.d.ts +5 -0
  110. package/dist/web/plugin/validate-widget.js +27 -0
  111. package/dist/web/plugin/validate-widget.js.map +1 -0
  112. package/dist/web/plugin/validate-widget.test.d.ts +1 -0
  113. package/dist/web/plugin/validate-widget.test.js +42 -0
  114. package/dist/web/plugin/validate-widget.test.js.map +1 -0
  115. package/dist/web/proxy.js +0 -1
  116. package/dist/web/proxy.js.map +1 -1
  117. package/package.json +27 -24
  118. package/tsconfig.base.json +31 -0
  119. package/dist/cli/server-entry.js +0 -47
  120. package/dist/cli/server-entry.js.map +0 -1
  121. package/dist/server/mcpMiddleware.d.ts +0 -6
  122. package/dist/server/mcpMiddleware.js +0 -51
  123. package/dist/server/mcpMiddleware.js.map +0 -1
  124. /package/dist/{cli/server-entry.d.ts → server/express.test.d.ts} +0 -0
@@ -1,22 +1,25 @@
1
1
  import { transform as dataLlmTransform } from "./transform-data-llm.js";
2
+ import { validateWidget } from "./validate-widget.js";
3
+ // Matches widget entry files (e.g. src/widgets/foo.tsx, src/widgets/foo/index.tsx) with optional Vite query strings
4
+ const WIDGET_ENTRY_RE = /\/src\/widgets\/(?:[^/]+\.(?:jsx|tsx)|[^/]+\/index\.tsx)(?:\?.*)?$/;
2
5
  export function skybridge() {
3
6
  return {
4
7
  name: "skybridge",
5
8
  async config(config) {
6
9
  // Dynamic imports to ensure Node modules are only loaded in Node.js context
7
10
  const { globSync } = await import("node:fs");
8
- const { resolve } = await import("node:path");
11
+ const { basename, dirname, parse, resolve } = await import("node:path");
9
12
  const projectRoot = config.root || process.cwd();
10
13
  const flatWidgetPattern = resolve(projectRoot, "src/widgets/*.{js,ts,jsx,tsx,html}");
11
14
  const dirWidgetPattern = resolve(projectRoot, "src/widgets/*/index.tsx");
12
- const flatWidgets = globSync(flatWidgetPattern).map((file) => [
13
- file.match(/src\/widgets\/([^/]+)\.tsx$/)?.[1],
14
- file,
15
- ]);
16
- const dirWidgets = globSync(dirWidgetPattern).map((file) => [
17
- file.match(/src\/widgets\/([^/]+)\/index\.tsx$/)?.[1],
18
- file,
19
- ]);
15
+ const flatWidgets = globSync(flatWidgetPattern).map((file) => {
16
+ const name = parse(file).name;
17
+ return [name, file];
18
+ });
19
+ const dirWidgets = globSync(dirWidgetPattern).map((file) => {
20
+ const name = basename(dirname(file));
21
+ return [name, file];
22
+ });
20
23
  const input = Object.fromEntries([...flatWidgets, ...dirWidgets]);
21
24
  return {
22
25
  base: "/assets",
@@ -39,6 +42,11 @@ export function skybridge() {
39
42
  },
40
43
  enforce: "pre",
41
44
  async transform(code, id) {
45
+ if (WIDGET_ENTRY_RE.test(id)) {
46
+ for (const warning of validateWidget(code, id)) {
47
+ this.warn(warning.message);
48
+ }
49
+ }
42
50
  return await dataLlmTransform(code, id);
43
51
  },
44
52
  };
@@ -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;YAE9C,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,CAAC;gBAC5D,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9C,IAAI;aACL,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1D,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrD,IAAI;aACL,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"}
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;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,oHAAoH;AACpH,MAAM,eAAe,GACnB,oEAAoE,CAAC;AAEvE,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,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7B,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ interface Warning {
2
+ message: string;
3
+ }
4
+ export declare function validateWidget(code: string, filePath: string): Warning[];
5
+ export {};
@@ -0,0 +1,27 @@
1
+ function hasExportDefault(code) {
2
+ return (/export\s+default\s/.test(code) ||
3
+ /export\s*\{[^}]*\bas\s+default\b[^}]*}/.test(code));
4
+ }
5
+ function hasMountWidgetCall(code) {
6
+ return /mountWidget\s*\(/.test(code);
7
+ }
8
+ function stripComments(code) {
9
+ return code.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "");
10
+ }
11
+ export function validateWidget(code, filePath) {
12
+ code = stripComments(code);
13
+ const warnings = [];
14
+ const fileName = filePath.split("/").pop() ?? filePath;
15
+ if (!hasExportDefault(code)) {
16
+ warnings.push({
17
+ message: `Widget file "${fileName}" is missing a default export. Add "export default <ComponentName>" to ensure the widget is properly registered.`,
18
+ });
19
+ }
20
+ if (!hasMountWidgetCall(code)) {
21
+ warnings.push({
22
+ message: `Widget file "${fileName}" is missing a mountWidget() call. Add "mountWidget(<Component />)" to mount the component to the DOM.`,
23
+ });
24
+ }
25
+ return warnings;
26
+ }
27
+ //# sourceMappingURL=validate-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-widget.js","sourceRoot":"","sources":["../../../src/web/plugin/validate-widget.ts"],"names":[],"mappings":"AAIA,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,CACL,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CACpD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;IAEvD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,gBAAgB,QAAQ,kHAAkH;SACpJ,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,gBAAgB,QAAQ,wGAAwG;SAC1I,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "skybridge",
3
- "version": "0.0.0-dev.d20f258",
3
+ "version": "0.0.0-dev.d23dff1",
4
4
  "description": "Skybridge is a framework for building ChatGPT and MCP Apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,9 +9,12 @@
9
9
  "type": "module",
10
10
  "files": [
11
11
  "dist",
12
- "README.md"
12
+ "README.md",
13
+ "tsconfig.base.json"
13
14
  ],
14
15
  "exports": {
16
+ "./tsconfig": "./tsconfig.base.json",
17
+ "./tsconfig.json": "./tsconfig.base.json",
15
18
  "./server": {
16
19
  "types": "./dist/server/index.d.ts",
17
20
  "default": "./dist/server/index.js"
@@ -31,46 +34,46 @@
31
34
  "license": "ISC",
32
35
  "peerDependencies": {
33
36
  "@modelcontextprotocol/sdk": ">=1.0.0",
34
- "@skybridge/devtools": ">=0.23.4 <1.0.0",
37
+ "@skybridge/devtools": ">=0.35.10 <1.0.0",
35
38
  "nodemon": ">=3.0.0",
36
39
  "react": ">=18.0.0",
37
- "react-dom": ">=18.0.0"
40
+ "react-dom": ">=18.0.0",
41
+ "vite": ">=7.3.1"
38
42
  },
39
43
  "dependencies": {
40
- "@babel/core": "^7.28.6",
41
- "@oclif/core": "^4.8.0",
42
- "ci-info": "^4.3.1",
43
- "cors": "^2.8.5",
44
+ "@babel/core": "^7.29.0",
45
+ "@modelcontextprotocol/ext-apps": "^1.3.1",
46
+ "@oclif/core": "^4.10.2",
47
+ "ci-info": "^4.4.0",
48
+ "cors": "^2.8.6",
44
49
  "dequal": "^2.0.3",
45
- "es-toolkit": "^1.43.0",
50
+ "es-toolkit": "^1.45.1",
46
51
  "express": "^5.2.1",
47
52
  "handlebars": "^4.7.8",
48
- "ink": "^6.6.0",
49
- "posthog-node": "^5.21.0",
53
+ "ink": "^6.8.0",
54
+ "posthog-node": "^5.28.5",
50
55
  "superjson": "^2.2.6",
51
- "vite": "^7.3.1",
52
- "zustand": "^5.0.10"
56
+ "zustand": "^5.0.12"
53
57
  },
54
58
  "devDependencies": {
55
- "@modelcontextprotocol/ext-apps": "^0.4.0",
56
- "@modelcontextprotocol/sdk": "^1.25.2",
59
+ "@modelcontextprotocol/sdk": "^1.27.1",
57
60
  "@testing-library/dom": "^10.4.1",
58
- "@testing-library/react": "^16.3.1",
61
+ "@testing-library/react": "^16.3.2",
59
62
  "@total-typescript/tsconfig": "^1.0.4",
60
63
  "@types/babel__core": "^7.20.5",
61
64
  "@types/cors": "^2.8.19",
62
65
  "@types/express": "^5.0.6",
63
- "@types/jsdom": "^27.0.0",
64
- "@types/node": "^24.10.8",
65
- "@types/react": "^19.2.8",
66
+ "@types/jsdom": "^28.0.1",
67
+ "@types/node": "^24.12.0",
68
+ "@types/react": "^19.2.14",
66
69
  "@types/react-dom": "^19.2.3",
67
- "@vitest/ui": "^4.0.17",
68
- "jsdom": "^27.4.0",
70
+ "@vitest/ui": "^4.1.1",
71
+ "jsdom": "^29.0.1",
69
72
  "shx": "^0.4.0",
70
73
  "ts-node": "^10.9.2",
71
- "typescript": "^5.9.3",
72
- "vitest": "^4.0.17",
73
- "zod": "^4.3.5"
74
+ "typescript": "^6.0.2",
75
+ "vitest": "^4.1.1",
76
+ "zod": "^4.3.6"
74
77
  },
75
78
  "bin": {
76
79
  "sb": "./bin/run.js",
@@ -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,47 +0,0 @@
1
- import path from "node:path";
2
- import cors from "cors";
3
- import express, {} from "express";
4
- import { createMcpMiddleware, McpServer } from "skybridge/server";
5
- // Dynamically import the user's server.ts
6
- const serverPath = path.resolve(process.cwd(), "server/src/server.ts");
7
- const serverModule = await import(serverPath).catch(() => {
8
- console.error("Error: A server.ts file must be present in the server/src directory");
9
- process.exit(1);
10
- });
11
- const server = serverModule.default;
12
- if (!server) {
13
- console.error("Error: server.ts must export a default MCP server instance");
14
- process.exit(1);
15
- }
16
- if (!(server instanceof McpServer)) {
17
- console.error("Error: server.ts must export an instance of McpServer from 'skybridge/server'");
18
- process.exit(1);
19
- }
20
- const app = express();
21
- app.use(express.json());
22
- // Add MCP middleware
23
- app.use(createMcpMiddleware(server));
24
- const env = process.env.NODE_ENV || "development";
25
- if (env !== "production") {
26
- const { widgetsDevServer } = await import("skybridge/server");
27
- const { devtoolsStaticServer } = await import("@skybridge/devtools");
28
- app.use(await devtoolsStaticServer());
29
- app.use(await widgetsDevServer());
30
- }
31
- if (env === "production") {
32
- const distDir = path.join(process.cwd(), "dist");
33
- app.use("/assets", cors());
34
- app.use("/assets", express.static(path.join(distDir, "assets")));
35
- }
36
- const port = 3000;
37
- app.listen(port, (error) => {
38
- if (error) {
39
- console.error("Failed to start server:", error);
40
- process.exit(1);
41
- }
42
- });
43
- process.on("SIGINT", async () => {
44
- console.log("Server shutdown complete");
45
- process.exit(0);
46
- });
47
- //# sourceMappingURL=server-entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-entry.js","sourceRoot":"","sources":["../../src/cli/server-entry.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,EAAE,EAAgB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlE,0CAA0C;AAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sBAAsB,CAAC,CAAC;AACvE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;IACvD,OAAO,CAAC,KAAK,CACX,qEAAqE,CACtE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;AAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC,CAAC,MAAM,YAAY,SAAS,CAAC,EAAE,CAAC;IACnC,OAAO,CAAC,KAAK,CACX,+EAA+E,CAChF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,GAAG,GAAG,OAAO,EAAwC,CAAC;AAE5D,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAExB,qBAAqB;AACrB,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;AAErC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AAElD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC9D,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACrE,GAAG,CAAC,GAAG,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC;IACtC,GAAG,CAAC,GAAG,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3B,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;IACzB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC9B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { RequestHandler } from "express";
2
- import type { McpServer } from "../server/server.js";
3
- /**
4
- * Creates Express middleware for handling MCP requests
5
- */
6
- export declare function createMcpMiddleware(server: McpServer): RequestHandler;
@@ -1,51 +0,0 @@
1
- import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
2
- /**
3
- * Creates Express middleware for handling MCP requests
4
- */
5
- export function createMcpMiddleware(server) {
6
- return async (req, res, next) => {
7
- // Only handle requests to the /mcp path
8
- if (req.path !== "/mcp") {
9
- return next();
10
- }
11
- if (req.method === "POST") {
12
- try {
13
- const transport = new StreamableHTTPServerTransport({
14
- sessionIdGenerator: undefined,
15
- });
16
- res.on("close", () => {
17
- transport.close();
18
- });
19
- await server.connect(transport);
20
- await transport.handleRequest(req, res, req.body);
21
- }
22
- catch (error) {
23
- console.error("Error handling MCP request:", error);
24
- if (!res.headersSent) {
25
- res.status(500).json({
26
- jsonrpc: "2.0",
27
- error: {
28
- code: -32603,
29
- message: "Internal server error",
30
- },
31
- id: null,
32
- });
33
- }
34
- }
35
- }
36
- else if (req.method === "GET" || req.method === "DELETE") {
37
- res.writeHead(405).end(JSON.stringify({
38
- jsonrpc: "2.0",
39
- error: {
40
- code: -32000,
41
- message: "Method not allowed.",
42
- },
43
- id: null,
44
- }));
45
- }
46
- else {
47
- next();
48
- }
49
- };
50
- }
51
- //# sourceMappingURL=mcpMiddleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcpMiddleware.js","sourceRoot":"","sources":["../../src/server/mcpMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAInG;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC9B,wCAAwC;QACxC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;oBAClD,kBAAkB,EAAE,SAAS;iBAC9B,CAAC,CAAC;gBAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBACnB,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC;gBAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAEhC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;gBACpD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE;4BACL,IAAI,EAAE,CAAC,KAAK;4BACZ,OAAO,EAAE,uBAAuB;yBACjC;wBACD,EAAE,EAAE,IAAI;qBACT,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3D,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CACpB,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC,KAAK;oBACZ,OAAO,EAAE,qBAAqB;iBAC/B;gBACD,EAAE,EAAE,IAAI;aACT,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}