skybridge 0.0.0-dev.a2fbf1a → 0.0.0-dev.a3a64fe

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 (87) hide show
  1. package/dist/cli/detect-port.d.ts +18 -0
  2. package/dist/cli/detect-port.js +61 -0
  3. package/dist/cli/detect-port.js.map +1 -0
  4. package/dist/cli/use-nodemon.d.ts +1 -0
  5. package/dist/cli/use-nodemon.js +24 -9
  6. package/dist/cli/use-nodemon.js.map +1 -1
  7. package/dist/commands/build.js +1 -1
  8. package/dist/commands/build.js.map +1 -1
  9. package/dist/commands/dev.d.ts +1 -0
  10. package/dist/commands/dev.js +12 -1
  11. package/dist/commands/dev.js.map +1 -1
  12. package/dist/commands/start.d.ts +3 -1
  13. package/dist/commands/start.js +32 -8
  14. package/dist/commands/start.js.map +1 -1
  15. package/dist/server/const.d.ts +1 -0
  16. package/dist/server/const.js +2 -0
  17. package/dist/server/const.js.map +1 -0
  18. package/dist/server/express.d.ts +9 -0
  19. package/dist/server/express.js +72 -0
  20. package/dist/server/express.js.map +1 -0
  21. package/dist/server/express.test.d.ts +1 -0
  22. package/dist/server/express.test.js +74 -0
  23. package/dist/server/express.test.js.map +1 -0
  24. package/dist/server/index.d.ts +1 -0
  25. package/dist/server/index.js.map +1 -1
  26. package/dist/server/middleware.d.ts +96 -0
  27. package/dist/server/middleware.js +93 -0
  28. package/dist/server/middleware.js.map +1 -0
  29. package/dist/server/middleware.test-d.d.ts +1 -0
  30. package/dist/server/middleware.test-d.js +52 -0
  31. package/dist/server/middleware.test-d.js.map +1 -0
  32. package/dist/server/middleware.test.d.ts +1 -0
  33. package/dist/server/middleware.test.js +383 -0
  34. package/dist/server/middleware.test.js.map +1 -0
  35. package/dist/server/server.d.ts +40 -0
  36. package/dist/server/server.js +122 -16
  37. package/dist/server/server.js.map +1 -1
  38. package/dist/server/widgetsDevServer.js +8 -2
  39. package/dist/server/widgetsDevServer.js.map +1 -1
  40. package/dist/test/widget.test.js +20 -14
  41. package/dist/test/widget.test.js.map +1 -1
  42. package/dist/web/bridges/apps-sdk/adaptor.d.ts +4 -4
  43. package/dist/web/bridges/apps-sdk/adaptor.js +26 -15
  44. package/dist/web/bridges/apps-sdk/adaptor.js.map +1 -1
  45. package/dist/web/bridges/apps-sdk/bridge.d.ts +1 -1
  46. package/dist/web/bridges/apps-sdk/index.d.ts +1 -1
  47. package/dist/web/bridges/apps-sdk/index.js.map +1 -1
  48. package/dist/web/bridges/apps-sdk/types.d.ts +14 -8
  49. package/dist/web/bridges/apps-sdk/types.js.map +1 -1
  50. package/dist/web/bridges/mcp-app/adaptor.d.ts +3 -3
  51. package/dist/web/bridges/mcp-app/adaptor.js +14 -12
  52. package/dist/web/bridges/mcp-app/adaptor.js.map +1 -1
  53. package/dist/web/bridges/mcp-app/bridge.js +5 -0
  54. package/dist/web/bridges/mcp-app/bridge.js.map +1 -1
  55. package/dist/web/bridges/types.d.ts +7 -3
  56. package/dist/web/create-store.test.js +6 -3
  57. package/dist/web/create-store.test.js.map +1 -1
  58. package/dist/web/data-llm.test.js +10 -8
  59. package/dist/web/data-llm.test.js.map +1 -1
  60. package/dist/web/hooks/index.d.ts +1 -1
  61. package/dist/web/hooks/index.js.map +1 -1
  62. package/dist/web/hooks/use-display-mode.d.ts +3 -3
  63. package/dist/web/hooks/use-display-mode.js.map +1 -1
  64. package/dist/web/hooks/use-display-mode.test-d.d.ts +1 -0
  65. package/dist/web/hooks/use-display-mode.test-d.js +8 -0
  66. package/dist/web/hooks/use-display-mode.test-d.js.map +1 -0
  67. package/dist/web/hooks/use-files.test.js +5 -1
  68. package/dist/web/hooks/use-files.test.js.map +1 -1
  69. package/dist/web/hooks/use-open-external.d.ts +3 -1
  70. package/dist/web/hooks/use-open-external.js +1 -1
  71. package/dist/web/hooks/use-open-external.js.map +1 -1
  72. package/dist/web/hooks/use-open-external.test.js +11 -1
  73. package/dist/web/hooks/use-open-external.test.js.map +1 -1
  74. package/dist/web/hooks/use-set-open-in-app-url.test.js +5 -11
  75. package/dist/web/hooks/use-set-open-in-app-url.test.js.map +1 -1
  76. package/dist/web/hooks/use-widget-state.test.js +9 -6
  77. package/dist/web/hooks/use-widget-state.test.js.map +1 -1
  78. package/dist/web/plugin/plugin.js +8 -0
  79. package/dist/web/plugin/plugin.js.map +1 -1
  80. package/dist/web/plugin/validate-widget.d.ts +5 -0
  81. package/dist/web/plugin/validate-widget.js +27 -0
  82. package/dist/web/plugin/validate-widget.js.map +1 -0
  83. package/dist/web/plugin/validate-widget.test.d.ts +1 -0
  84. package/dist/web/plugin/validate-widget.test.js +42 -0
  85. package/dist/web/plugin/validate-widget.test.js.map +1 -0
  86. package/package.json +18 -14
  87. package/tsconfig.base.json +28 -0
@@ -1 +1 @@
1
- {"version":3,"file":"use-set-open-in-app-url.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-set-open-in-app-url.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,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,IAAI,mBAA6C,CAAC;QAElD,UAAU,CAAC,GAAG,EAAE;YACd,mBAAmB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3D,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;gBACtB,eAAe,EAAE,mBAAmB;aACrC,CAAC,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE;gBACzB,QAAQ,EAAE,UAAU;gBACpB,SAAS,EAAE,qBAAqB;aACjC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACb,EAAE,CAAC,gBAAgB,EAAE,CAAC;YACtB,EAAE,CAAC,aAAa,EAAE,CAAC;YACnB,cAAc,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;YAC/F,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAE1D,MAAM,IAAI,GAAG,0BAA0B,CAAC;YACxC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE3B,MAAM,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAE1D,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CACtC,iCAAiC,CAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE;gBACzB,QAAQ,EAAE,UAAU;gBACpB,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;YACH,cAAc,CAAC,aAAa,EAAE,CAAC;YAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAE1D,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAC9D,gFAAgF,CACjF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;YAC9E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAE1D,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC,OAAO,CACvE,oEAAoE,CACrE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"use-set-open-in-app-url.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-set-open-in-app-url.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,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,IAAI,mBAA6C,CAAC;QAElD,UAAU,CAAC,GAAG,EAAE;YACd,mBAAmB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3D,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;gBACtB,eAAe,EAAE,mBAAmB;aACrC,CAAC,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE;gBACzB,QAAQ,EAAE,UAAU;gBACpB,SAAS,EAAE,qBAAqB;aACjC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACb,EAAE,CAAC,gBAAgB,EAAE,CAAC;YACtB,EAAE,CAAC,aAAa,EAAE,CAAC;YACnB,cAAc,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;YAC/F,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAE1D,MAAM,IAAI,GAAG,0BAA0B,CAAC;YACxC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE3B,MAAM,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAE1D,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CACtC,iCAAiC,CAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAE1D,MAAM,IAAI,GAAG,mCAAmC,CAAC;YACjD,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE3B,MAAM,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -23,7 +23,7 @@ describe("useWidgetState", () => {
23
23
  expect(result.current[0]).toEqual(defaultState);
24
24
  });
25
25
  it("should initialize with window.openai.widgetState when available", () => {
26
- OpenaiMock.widgetState = windowState;
26
+ OpenaiMock.widgetState = { modelContent: windowState };
27
27
  const { result } = renderHook(() => useWidgetState(defaultState));
28
28
  expect(result.current[0]).toEqual(windowState);
29
29
  });
@@ -33,7 +33,10 @@ describe("useWidgetState", () => {
33
33
  act(() => {
34
34
  result.current[1](newState);
35
35
  });
36
- expect(OpenaiMock.setWidgetState).toHaveBeenCalledWith(newState);
36
+ expect(OpenaiMock.setWidgetState).toHaveBeenCalledWith({
37
+ modelContent: newState,
38
+ privateContent: {},
39
+ });
37
40
  expect(result.current[0]).toEqual(newState);
38
41
  });
39
42
  it("should call window.openai.setWidgetState when setWidgetState is called with a function updater", async () => {
@@ -42,17 +45,17 @@ describe("useWidgetState", () => {
42
45
  result.current[1]((prev) => ({ ...prev, count: prev.count + 1 }));
43
46
  });
44
47
  expect(OpenaiMock.setWidgetState).toHaveBeenCalledWith({
45
- count: 1,
46
- name: "test",
48
+ modelContent: { count: 1, name: "test" },
49
+ privateContent: {},
47
50
  });
48
51
  expect(result.current[0]).toEqual({ count: 1, name: "test" });
49
52
  });
50
53
  it("should update state when window.openai.widgetState changes", () => {
51
- OpenaiMock.widgetState = defaultState;
54
+ OpenaiMock.widgetState = { modelContent: defaultState };
52
55
  const { result, rerender } = renderHook(() => useWidgetState(defaultState));
53
56
  expect(result.current[0]).toEqual(defaultState);
54
57
  // Simulate window.openai.widgetState changing
55
- OpenaiMock.widgetState = windowState;
58
+ OpenaiMock.widgetState = { modelContent: windowState };
56
59
  // Trigger re-render to simulate the useEffect running
57
60
  rerender();
58
61
  expect(result.current[0]).toEqual(windowState);
@@ -1 +1 @@
1
- {"version":3,"file":"use-widget-state.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-widget-state.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,MAAM,EACN,EAAE,EAEF,EAAE,GACH,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,UAA0D,CAAC;IAE/D,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG;YACX,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SACrD,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACtB,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAEjD,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;QAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QAElE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QAElE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;QACvG,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAEhD,GAAG,CAAC,GAAG,EAAE;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;QAC9G,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QAElE,GAAG,CAAC,GAAG,EAAE;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC;YACrD,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;QACtC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QAE5E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEhD,8CAA8C;QAC9C,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;QACrC,sDAAsD;QACtD,QAAQ,EAAE,CAAC;QAEX,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"use-widget-state.test.js","sourceRoot":"","sources":["../../../src/web/hooks/use-widget-state.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
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",
@@ -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,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAExE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACjD,MAAM,iBAAiB,GAAG,OAAO,CAC/B,WAAW,EACX,oCAAoC,CACrC,CAAC;YACF,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;YAEzE,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBAC9B,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;YAElE,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE;oBACL,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,IAAI;oBACZ,YAAY,EAAE,KAAK;oBACnB,aAAa,EAAE;wBACb,KAAK;qBACN;iBACF;gBACD,YAAY,EAAE;oBACZ,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE;wBAC3B,OAAO;4BACL,OAAO,EAAE,yCAAyC,QAAQ,GAAG;yBAC9D,CAAC;oBACJ,CAAC;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,KAAK;QACd,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;YACtB,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC"}
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skybridge",
3
- "version": "0.0.0-dev.a2fbf1a",
3
+ "version": "0.0.0-dev.a3a64fe",
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,40 +34,41 @@
31
34
  "license": "ISC",
32
35
  "peerDependencies": {
33
36
  "@modelcontextprotocol/sdk": ">=1.0.0",
37
+ "@skybridge/devtools": ">=0.26.1",
34
38
  "nodemon": ">=3.0.0",
35
39
  "react": ">=18.0.0",
36
- "react-dom": ">=18.0.0"
40
+ "react-dom": ">=18.0.0",
41
+ "vite": "^7.3.1"
37
42
  },
38
43
  "dependencies": {
39
44
  "@babel/core": "^7.29.0",
40
- "@oclif/core": "^4.8.0",
45
+ "@oclif/core": "^4.8.4",
41
46
  "ci-info": "^4.4.0",
42
47
  "cors": "^2.8.6",
43
48
  "dequal": "^2.0.3",
44
- "es-toolkit": "^1.44.0",
49
+ "es-toolkit": "^1.45.1",
45
50
  "express": "^5.2.1",
46
51
  "handlebars": "^4.7.8",
47
- "ink": "^6.6.0",
48
- "posthog-node": "^5.24.14",
52
+ "ink": "^6.8.0",
53
+ "posthog-node": "^5.28.0",
49
54
  "superjson": "^2.2.6",
50
- "vite": "^7.3.1",
51
55
  "zustand": "^5.0.11"
52
56
  },
53
57
  "devDependencies": {
54
- "@modelcontextprotocol/ext-apps": "^1.0.1",
55
- "@modelcontextprotocol/sdk": "^1.25.2",
58
+ "@modelcontextprotocol/ext-apps": "^1.2.0",
59
+ "@modelcontextprotocol/sdk": "^1.27.1",
56
60
  "@testing-library/dom": "^10.4.1",
57
61
  "@testing-library/react": "^16.3.2",
58
62
  "@total-typescript/tsconfig": "^1.0.4",
59
63
  "@types/babel__core": "^7.20.5",
60
64
  "@types/cors": "^2.8.19",
61
65
  "@types/express": "^5.0.6",
62
- "@types/jsdom": "^27.0.0",
63
- "@types/node": "^24.10.12",
64
- "@types/react": "^19.2.13",
66
+ "@types/jsdom": "^28.0.0",
67
+ "@types/node": "^24.12.0",
68
+ "@types/react": "^19.2.14",
65
69
  "@types/react-dom": "^19.2.3",
66
70
  "@vitest/ui": "^4.0.18",
67
- "jsdom": "^28.0.0",
71
+ "jsdom": "^29.0.0",
68
72
  "shx": "^0.4.0",
69
73
  "ts-node": "^10.9.2",
70
74
  "typescript": "^5.9.3",
@@ -0,0 +1,28 @@
1
+ {
2
+ "compilerOptions": {
3
+ // Module resolution options
4
+ "module": "NodeNext",
5
+ "esModuleInterop": true,
6
+ "verbatimModuleSyntax": true,
7
+
8
+ // Output options
9
+ "noEmit": false,
10
+ "incremental": true,
11
+ "sourceMap": true,
12
+
13
+ // Language and environment options
14
+ "target": "ES2022",
15
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
16
+ "jsx": "react-jsx",
17
+
18
+ // Strictness and checking options
19
+ "strict": true,
20
+ "skipLibCheck": true,
21
+ "forceConsistentCasingInFileNames": true,
22
+
23
+ // Code quality & diagnostics
24
+ "noUnusedLocals": true,
25
+ "noUnusedParameters": true,
26
+ "noFallthroughCasesInSwitch": true
27
+ }
28
+ }