@dxos/plugin-script 0.8.4-main.2c6827d → 0.8.4-main.3c1ae3b

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 (168) hide show
  1. package/dist/lib/browser/DeploymentDialog-FIHD4UVK.mjs +15 -0
  2. package/dist/lib/browser/{NotebookContainer-RTESC4OV.mjs → NotebookContainer-GL2Z5I5Q.mjs} +26 -26
  3. package/dist/lib/browser/NotebookContainer-GL2Z5I5Q.mjs.map +7 -0
  4. package/dist/lib/browser/{ScriptContainer-T2BAZDJ4.mjs → ScriptContainer-F4OK3OG6.mjs} +9 -7
  5. package/dist/lib/browser/ScriptContainer-F4OK3OG6.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-4M7U2WVT.mjs → chunk-2SXDKBM7.mjs} +7 -7
  7. package/dist/lib/browser/chunk-2SXDKBM7.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-M6KJPUJK.mjs → chunk-6X7QVTRB.mjs} +4 -3
  9. package/dist/lib/browser/{chunk-M6KJPUJK.mjs.map → chunk-6X7QVTRB.mjs.map} +2 -2
  10. package/dist/lib/browser/{chunk-3IJASGG5.mjs → chunk-75RTLLH4.mjs} +2 -2
  11. package/dist/lib/browser/{chunk-GAFCKEII.mjs → chunk-7WFISUBY.mjs} +11 -10
  12. package/dist/lib/browser/chunk-7WFISUBY.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-LNNCD2H4.mjs → chunk-MQHBMJLH.mjs} +7 -6
  14. package/dist/lib/browser/chunk-MQHBMJLH.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-2G2NA6DQ.mjs → chunk-S22N3BUR.mjs} +5 -5
  16. package/dist/lib/browser/chunk-S22N3BUR.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-5JSNQYZZ.mjs → chunk-UGDRMROB.mjs} +147 -122
  18. package/dist/lib/browser/chunk-UGDRMROB.mjs.map +7 -0
  19. package/dist/lib/browser/compiler-2HV5KXV4.mjs +143 -0
  20. package/dist/lib/browser/compiler-2HV5KXV4.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +40 -58
  22. package/dist/lib/browser/index.mjs.map +4 -4
  23. package/dist/lib/browser/{intent-resolver-AFJ575VK.mjs → intent-resolver-3B4ESSCU.mjs} +9 -8
  24. package/dist/lib/browser/meta.json +1 -1
  25. package/dist/lib/browser/{react-surface-QEQ3QUQA.mjs → react-surface-ASV2KBRA.mjs} +15 -15
  26. package/dist/lib/browser/react-surface-ASV2KBRA.mjs.map +7 -0
  27. package/dist/lib/browser/{settings-LNLSTZM4.mjs → settings-4NKLTJTT.mjs} +3 -3
  28. package/dist/lib/browser/templates/index.mjs +1 -1
  29. package/dist/lib/browser/types/index.mjs +2 -2
  30. package/dist/lib/node-esm/{DeploymentDialog-GL5AUWMR.mjs → DeploymentDialog-5EN2KZE5.mjs} +6 -5
  31. package/dist/lib/node-esm/{NotebookContainer-SVD3A3D6.mjs → NotebookContainer-7RCEXND7.mjs} +26 -26
  32. package/dist/lib/node-esm/NotebookContainer-7RCEXND7.mjs.map +7 -0
  33. package/dist/lib/node-esm/{ScriptContainer-2CE3H3JJ.mjs → ScriptContainer-763IAKOD.mjs} +9 -7
  34. package/dist/lib/node-esm/ScriptContainer-763IAKOD.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-57JA6XL5.mjs → chunk-2S43VHAM.mjs} +5 -5
  36. package/dist/lib/node-esm/chunk-2S43VHAM.mjs.map +7 -0
  37. package/dist/lib/node-esm/{chunk-NNHWLRHT.mjs → chunk-32AMTGGN.mjs} +7 -6
  38. package/dist/lib/node-esm/chunk-32AMTGGN.mjs.map +7 -0
  39. package/dist/lib/node-esm/{chunk-IQTBVH4L.mjs → chunk-4VVV5L5A.mjs} +147 -122
  40. package/dist/lib/node-esm/chunk-4VVV5L5A.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-RIE676OW.mjs → chunk-535YDI5V.mjs} +2 -2
  42. package/dist/lib/node-esm/{chunk-HDKR5WCD.mjs → chunk-6H4FYMCX.mjs} +4 -3
  43. package/dist/lib/node-esm/{chunk-HDKR5WCD.mjs.map → chunk-6H4FYMCX.mjs.map} +2 -2
  44. package/dist/lib/node-esm/{chunk-KJKZ4KNO.mjs → chunk-DKS2EQW6.mjs} +11 -10
  45. package/dist/lib/node-esm/chunk-DKS2EQW6.mjs.map +7 -0
  46. package/dist/lib/node-esm/{chunk-YRTA4EHU.mjs → chunk-NQN3JE2R.mjs} +7 -7
  47. package/dist/lib/node-esm/chunk-NQN3JE2R.mjs.map +7 -0
  48. package/dist/lib/node-esm/compiler-KPEZKEHC.mjs +144 -0
  49. package/dist/lib/node-esm/compiler-KPEZKEHC.mjs.map +7 -0
  50. package/dist/lib/node-esm/index.mjs +40 -58
  51. package/dist/lib/node-esm/index.mjs.map +4 -4
  52. package/dist/lib/node-esm/{intent-resolver-A5VVK746.mjs → intent-resolver-GIACMXI4.mjs} +9 -8
  53. package/dist/lib/{browser/intent-resolver-AFJ575VK.mjs.map → node-esm/intent-resolver-GIACMXI4.mjs.map} +1 -1
  54. package/dist/lib/node-esm/meta.json +1 -1
  55. package/dist/lib/node-esm/{react-surface-U77YT7VF.mjs → react-surface-NXBO7VYB.mjs} +15 -15
  56. package/dist/lib/node-esm/react-surface-NXBO7VYB.mjs.map +7 -0
  57. package/dist/lib/node-esm/{settings-IUFMOCXY.mjs → settings-PW5NXWLW.mjs} +3 -3
  58. package/dist/lib/node-esm/templates/index.mjs +1 -1
  59. package/dist/lib/node-esm/types/index.mjs +2 -2
  60. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  63. package/dist/types/src/compiler/compiler.d.ts +1 -1
  64. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  65. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +3 -0
  66. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  68. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -1
  69. package/dist/types/src/components/NotebookContainer.stories.d.ts +3 -0
  70. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  72. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +3 -0
  73. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  75. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  76. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  77. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  78. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  79. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  80. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  81. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +3 -0
  82. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  83. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  84. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  85. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  86. package/dist/types/src/hooks/deploy.d.ts +3 -21
  87. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  88. package/dist/types/src/hooks/index.d.ts +1 -0
  89. package/dist/types/src/hooks/index.d.ts.map +1 -1
  90. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  91. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  92. package/dist/types/src/templates/chess.d.ts +6 -1
  93. package/dist/types/src/templates/chess.d.ts.map +1 -1
  94. package/dist/types/src/templates/forex-effect.d.ts +4 -1
  95. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  96. package/dist/types/src/templates/forex.d.ts +4 -1
  97. package/dist/types/src/templates/forex.d.ts.map +1 -1
  98. package/dist/types/src/testing/deploy.test.d.ts +2 -0
  99. package/dist/types/src/testing/deploy.test.d.ts.map +1 -0
  100. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  101. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  102. package/dist/types/src/translations.d.ts +2 -0
  103. package/dist/types/src/translations.d.ts.map +1 -1
  104. package/dist/types/src/types/Notebook.d.ts +7 -7
  105. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  106. package/dist/types/src/types/actions.d.ts +3 -3
  107. package/dist/types/src/util/deploy.d.ts.map +1 -1
  108. package/dist/types/src/util/functions.d.ts.map +1 -1
  109. package/dist/types/tsconfig.tsbuildinfo +1 -1
  110. package/package.json +63 -59
  111. package/src/ScriptPlugin.tsx +13 -28
  112. package/src/capabilities/artifact-definition.ts +11 -11
  113. package/src/capabilities/compiler.ts +66 -16
  114. package/src/capabilities/react-surface.tsx +5 -6
  115. package/src/compiler/compiler.ts +10 -3
  116. package/src/components/FrameContainer/FrameContainer.tsx +3 -1
  117. package/src/components/NotebookContainer.tsx +14 -17
  118. package/src/components/NotebookStack/NotebookCell.tsx +6 -4
  119. package/src/components/QueryEditor/QueryEditor.stories.tsx +89 -0
  120. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  121. package/src/components/QueryEditor/index.ts +5 -0
  122. package/src/components/ScriptContainer.tsx +3 -2
  123. package/src/components/Settings/ScriptObjectSettings.tsx +5 -4
  124. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +1 -1
  125. package/src/components/TypescriptEditor/TypescriptEditor.tsx +2 -2
  126. package/src/e2e/deploy.test.ts +64 -0
  127. package/src/hooks/deploy.ts +3 -2
  128. package/src/hooks/index.ts +1 -0
  129. package/src/hooks/useCompiler.ts +23 -0
  130. package/src/templates/chess.ts +9 -8
  131. package/src/templates/data-generator.ts +1 -1
  132. package/src/templates/forex-effect.ts +22 -27
  133. package/src/templates/forex.ts +7 -6
  134. package/src/testing/deploy.test.ts +63 -0
  135. package/src/testing/simulator.test.ts +40 -0
  136. package/src/translations.ts +2 -0
  137. package/src/types/Notebook.ts +5 -4
  138. package/src/util/deploy.ts +18 -28
  139. package/src/util/functions.ts +3 -2
  140. package/src/vite-env.d.ts +2 -0
  141. package/dist/lib/browser/DeploymentDialog-MZX4T77L.mjs +0 -14
  142. package/dist/lib/browser/NotebookContainer-RTESC4OV.mjs.map +0 -7
  143. package/dist/lib/browser/ScriptContainer-T2BAZDJ4.mjs.map +0 -7
  144. package/dist/lib/browser/chunk-2G2NA6DQ.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-4M7U2WVT.mjs.map +0 -7
  146. package/dist/lib/browser/chunk-5JSNQYZZ.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-GAFCKEII.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-LNNCD2H4.mjs.map +0 -7
  149. package/dist/lib/browser/compiler-4KHRSX7J.mjs +0 -86
  150. package/dist/lib/browser/compiler-4KHRSX7J.mjs.map +0 -7
  151. package/dist/lib/browser/react-surface-QEQ3QUQA.mjs.map +0 -7
  152. package/dist/lib/node-esm/NotebookContainer-SVD3A3D6.mjs.map +0 -7
  153. package/dist/lib/node-esm/ScriptContainer-2CE3H3JJ.mjs.map +0 -7
  154. package/dist/lib/node-esm/chunk-57JA6XL5.mjs.map +0 -7
  155. package/dist/lib/node-esm/chunk-IQTBVH4L.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-KJKZ4KNO.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-NNHWLRHT.mjs.map +0 -7
  158. package/dist/lib/node-esm/chunk-YRTA4EHU.mjs.map +0 -7
  159. package/dist/lib/node-esm/compiler-DU5NQISX.mjs +0 -87
  160. package/dist/lib/node-esm/compiler-DU5NQISX.mjs.map +0 -7
  161. package/dist/lib/node-esm/react-surface-U77YT7VF.mjs.map +0 -7
  162. /package/dist/lib/browser/{DeploymentDialog-MZX4T77L.mjs.map → DeploymentDialog-FIHD4UVK.mjs.map} +0 -0
  163. /package/dist/lib/browser/{chunk-3IJASGG5.mjs.map → chunk-75RTLLH4.mjs.map} +0 -0
  164. /package/dist/lib/{node-esm/intent-resolver-A5VVK746.mjs.map → browser/intent-resolver-3B4ESSCU.mjs.map} +0 -0
  165. /package/dist/lib/browser/{settings-LNLSTZM4.mjs.map → settings-4NKLTJTT.mjs.map} +0 -0
  166. /package/dist/lib/node-esm/{DeploymentDialog-GL5AUWMR.mjs.map → DeploymentDialog-5EN2KZE5.mjs.map} +0 -0
  167. /package/dist/lib/node-esm/{chunk-RIE676OW.mjs.map → chunk-535YDI5V.mjs.map} +0 -0
  168. /package/dist/lib/node-esm/{settings-IUFMOCXY.mjs.map → settings-PW5NXWLW.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-script",
3
- "version": "0.8.4-main.2c6827d",
3
+ "version": "0.8.4-main.3c1ae3b",
4
4
  "description": "Braneframe notebook plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -58,62 +58,65 @@
58
58
  "@preact/signals-core": "^1.12.1",
59
59
  "@typescript/vfs": "^1.6.0",
60
60
  "@valtown/codemirror-continue": "^2.3.1",
61
- "@valtown/codemirror-ts": "^2.2.0",
61
+ "@valtown/codemirror-ts": "^2.3.1",
62
62
  "codemirror": "^6.0.1",
63
63
  "date-fns": "^3.3.1",
64
64
  "esbuild-wasm": "^0.16.14",
65
65
  "prettier": "^3.6.2",
66
66
  "react-syntax-highlighter": "^15.6.1",
67
67
  "typescript": "^5.9.3",
68
- "@dxos/ai": "0.8.4-main.2c6827d",
69
- "@dxos/assistant-toolkit": "0.8.4-main.2c6827d",
70
- "@dxos/app-framework": "0.8.4-main.2c6827d",
71
- "@dxos/assistant": "0.8.4-main.2c6827d",
72
- "@dxos/async": "0.8.4-main.2c6827d",
73
- "@dxos/blueprints": "0.8.4-main.2c6827d",
74
- "@dxos/compute": "0.8.4-main.2c6827d",
75
- "@dxos/debug": "0.8.4-main.2c6827d",
76
- "@dxos/client-protocol": "0.8.4-main.2c6827d",
77
- "@dxos/echo": "0.8.4-main.2c6827d",
78
- "@dxos/devtools": "0.8.4-main.2c6827d",
79
- "@dxos/client": "0.8.4-main.2c6827d",
80
- "@dxos/echo-protocol": "0.8.4-main.2c6827d",
81
- "@dxos/echo-query": "0.8.4-main.2c6827d",
82
- "@dxos/functions-runtime": "0.8.4-main.2c6827d",
83
- "@dxos/functions": "0.8.4-main.2c6827d",
84
- "@dxos/invariant": "0.8.4-main.2c6827d",
85
- "@dxos/live-object": "0.8.4-main.2c6827d",
86
- "@dxos/local-storage": "0.8.4-main.2c6827d",
87
- "@dxos/log": "0.8.4-main.2c6827d",
88
- "@dxos/keys": "0.8.4-main.2c6827d",
89
- "@dxos/plugin-assistant": "0.8.4-main.2c6827d",
90
- "@dxos/plugin-automation": "0.8.4-main.2c6827d",
91
- "@dxos/plugin-client": "0.8.4-main.2c6827d",
92
- "@dxos/plugin-explorer": "0.8.4-main.2c6827d",
93
- "@dxos/plugin-deck": "0.8.4-main.2c6827d",
94
- "@dxos/plugin-graph": "0.8.4-main.2c6827d",
95
- "@dxos/plugin-space": "0.8.4-main.2c6827d",
96
- "@dxos/plugin-markdown": "0.8.4-main.2c6827d",
97
- "@dxos/plugin-theme": "0.8.4-main.2c6827d",
98
- "@dxos/plugin-stack": "0.8.4-main.2c6827d",
99
- "@dxos/plugin-token-manager": "0.8.4-main.2c6827d",
100
- "@dxos/protocols": "0.8.4-main.2c6827d",
101
- "@dxos/react-edge-client": "0.8.4-main.2c6827d",
102
- "@dxos/react-ui-components": "0.8.4-main.2c6827d",
103
- "@dxos/react-ui-editor": "0.8.4-main.2c6827d",
104
- "@dxos/react-ui-attention": "0.8.4-main.2c6827d",
105
- "@dxos/react-ui-form": "0.8.4-main.2c6827d",
106
- "@dxos/react-ui-list": "0.8.4-main.2c6827d",
107
- "@dxos/react-ui-menu": "0.8.4-main.2c6827d",
108
- "@dxos/react-ui-stack": "0.8.4-main.2c6827d",
109
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.2c6827d",
110
- "@dxos/rpc": "0.8.4-main.2c6827d",
111
- "@dxos/rpc-tunnel": "0.8.4-main.2c6827d",
112
- "@dxos/react-client": "0.8.4-main.2c6827d",
113
- "@dxos/schema": "0.8.4-main.2c6827d",
114
- "@dxos/types": "0.8.4-main.2c6827d",
115
- "@dxos/vendor-quickjs": "0.8.4-main.2c6827d",
116
- "@dxos/util": "0.8.4-main.2c6827d"
68
+ "@dxos/app-framework": "0.8.4-main.3c1ae3b",
69
+ "@dxos/ai": "0.8.4-main.3c1ae3b",
70
+ "@dxos/async": "0.8.4-main.3c1ae3b",
71
+ "@dxos/assistant": "0.8.4-main.3c1ae3b",
72
+ "@dxos/blueprints": "0.8.4-main.3c1ae3b",
73
+ "@dxos/assistant-toolkit": "0.8.4-main.3c1ae3b",
74
+ "@dxos/client-protocol": "0.8.4-main.3c1ae3b",
75
+ "@dxos/client": "0.8.4-main.3c1ae3b",
76
+ "@dxos/compute": "0.8.4-main.3c1ae3b",
77
+ "@dxos/config": "0.8.4-main.3c1ae3b",
78
+ "@dxos/debug": "0.8.4-main.3c1ae3b",
79
+ "@dxos/echo": "0.8.4-main.3c1ae3b",
80
+ "@dxos/echo-db": "0.8.4-main.3c1ae3b",
81
+ "@dxos/devtools": "0.8.4-main.3c1ae3b",
82
+ "@dxos/echo-protocol": "0.8.4-main.3c1ae3b",
83
+ "@dxos/echo-query": "0.8.4-main.3c1ae3b",
84
+ "@dxos/functions": "0.8.4-main.3c1ae3b",
85
+ "@dxos/functions-simulator-cloudflare": "0.8.4-main.3c1ae3b",
86
+ "@dxos/invariant": "0.8.4-main.3c1ae3b",
87
+ "@dxos/functions-runtime": "0.8.4-main.3c1ae3b",
88
+ "@dxos/keys": "0.8.4-main.3c1ae3b",
89
+ "@dxos/live-object": "0.8.4-main.3c1ae3b",
90
+ "@dxos/local-storage": "0.8.4-main.3c1ae3b",
91
+ "@dxos/log": "0.8.4-main.3c1ae3b",
92
+ "@dxos/plugin-automation": "0.8.4-main.3c1ae3b",
93
+ "@dxos/plugin-assistant": "0.8.4-main.3c1ae3b",
94
+ "@dxos/plugin-deck": "0.8.4-main.3c1ae3b",
95
+ "@dxos/plugin-client": "0.8.4-main.3c1ae3b",
96
+ "@dxos/plugin-explorer": "0.8.4-main.3c1ae3b",
97
+ "@dxos/plugin-graph": "0.8.4-main.3c1ae3b",
98
+ "@dxos/plugin-markdown": "0.8.4-main.3c1ae3b",
99
+ "@dxos/plugin-space": "0.8.4-main.3c1ae3b",
100
+ "@dxos/plugin-theme": "0.8.4-main.3c1ae3b",
101
+ "@dxos/plugin-stack": "0.8.4-main.3c1ae3b",
102
+ "@dxos/plugin-token-manager": "0.8.4-main.3c1ae3b",
103
+ "@dxos/protocols": "0.8.4-main.3c1ae3b",
104
+ "@dxos/react-client": "0.8.4-main.3c1ae3b",
105
+ "@dxos/react-ui-components": "0.8.4-main.3c1ae3b",
106
+ "@dxos/react-ui-attention": "0.8.4-main.3c1ae3b",
107
+ "@dxos/react-ui-editor": "0.8.4-main.3c1ae3b",
108
+ "@dxos/react-ui-list": "0.8.4-main.3c1ae3b",
109
+ "@dxos/react-ui-menu": "0.8.4-main.3c1ae3b",
110
+ "@dxos/react-ui-form": "0.8.4-main.3c1ae3b",
111
+ "@dxos/react-ui-stack": "0.8.4-main.3c1ae3b",
112
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.3c1ae3b",
113
+ "@dxos/rpc": "0.8.4-main.3c1ae3b",
114
+ "@dxos/react-edge-client": "0.8.4-main.3c1ae3b",
115
+ "@dxos/types": "0.8.4-main.3c1ae3b",
116
+ "@dxos/schema": "0.8.4-main.3c1ae3b",
117
+ "@dxos/rpc-tunnel": "0.8.4-main.3c1ae3b",
118
+ "@dxos/util": "0.8.4-main.3c1ae3b",
119
+ "@dxos/vendor-quickjs": "0.8.4-main.3c1ae3b"
117
120
  },
118
121
  "devDependencies": {
119
122
  "@effect-atom/atom-react": "^0.3.4",
@@ -124,12 +127,13 @@
124
127
  "react": "~19.2.0",
125
128
  "react-dom": "~19.2.0",
126
129
  "vite": "7.1.9",
127
- "@dxos/echo-db": "0.8.4-main.2c6827d",
128
- "@dxos/plugin-automation": "0.8.4-main.2c6827d",
129
- "@dxos/random": "0.8.4-main.2c6827d",
130
- "@dxos/react-ui": "0.8.4-main.2c6827d",
131
- "@dxos/react-ui-theme": "0.8.4-main.2c6827d",
132
- "@dxos/storybook-utils": "0.8.4-main.2c6827d"
130
+ "@dxos/config": "0.8.4-main.3c1ae3b",
131
+ "@dxos/echo-db": "0.8.4-main.3c1ae3b",
132
+ "@dxos/plugin-automation": "0.8.4-main.3c1ae3b",
133
+ "@dxos/random": "0.8.4-main.3c1ae3b",
134
+ "@dxos/react-ui": "0.8.4-main.3c1ae3b",
135
+ "@dxos/react-ui-theme": "0.8.4-main.3c1ae3b",
136
+ "@dxos/storybook-utils": "0.8.4-main.3c1ae3b"
133
137
  },
134
138
  "peerDependencies": {
135
139
  "@effect-atom/atom-react": "^0.3.4",
@@ -137,8 +141,8 @@
137
141
  "effect": "^3.13.3",
138
142
  "react": "^19.0.0",
139
143
  "react-dom": "^19.0.0",
140
- "@dxos/react-ui-theme": "0.8.4-main.2c6827d",
141
- "@dxos/react-ui": "0.8.4-main.2c6827d"
144
+ "@dxos/react-ui-theme": "0.8.4-main.3c1ae3b",
145
+ "@dxos/react-ui": "0.8.4-main.3c1ae3b"
142
146
  },
143
147
  "publishConfig": {
144
148
  "access": "public"
@@ -5,9 +5,8 @@
5
5
  import { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from '@dxos/app-framework';
6
6
  import { Ref } from '@dxos/echo';
7
7
  import { Script } from '@dxos/functions';
8
- import { ClientEvents } from '@dxos/plugin-client';
9
- import { SpaceCapabilities } from '@dxos/plugin-space';
10
- import { defineObjectForm } from '@dxos/plugin-space/types';
8
+ import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
9
+ import { type CreateObjectIntent } from '@dxos/plugin-space/types';
11
10
 
12
11
  import {
13
12
  AppGraphBuilder,
@@ -49,6 +48,10 @@ export const ScriptPlugin = definePlugin(meta, () => [
49
48
  iconHue: 'sky',
50
49
  // TODO(wittjosiah): Move out of metadata.
51
50
  loadReferences: async (script: Script.Script) => await Ref.Array.loadAll([script.source]),
51
+ inputSchema: ScriptAction.ScriptProps,
52
+ createObjectIntent: ((props, options) =>
53
+ createIntent(ScriptAction.CreateScript, { ...props, space: options.space })) satisfies CreateObjectIntent,
54
+ addToCollectionOnCreate: true,
52
55
  },
53
56
  }),
54
57
  contributes(Capabilities.Metadata, {
@@ -56,6 +59,10 @@ export const ScriptPlugin = definePlugin(meta, () => [
56
59
  metadata: {
57
60
  icon: 'ph--notebook--regular',
58
61
  iconHue: 'sky',
62
+ inputSchema: ScriptAction.NotebookProps,
63
+ createObjectIntent: ((props, options) =>
64
+ createIntent(ScriptAction.CreateNotebook, { ...props, space: options.space })) satisfies CreateObjectIntent,
65
+ addToCollectionOnCreate: true,
59
66
  },
60
67
  }),
61
68
  ],
@@ -66,36 +73,14 @@ export const ScriptPlugin = definePlugin(meta, () => [
66
73
  activate: AppGraphBuilder,
67
74
  }),
68
75
  defineModule({
69
- id: `${meta.id}/module/script/object-form`,
76
+ id: `${meta.id}/module/schema`,
70
77
  activatesOn: ClientEvents.SetupSchema,
71
- activate: () =>
72
- contributes(
73
- SpaceCapabilities.ObjectForm,
74
- defineObjectForm({
75
- objectSchema: Script.Script,
76
- formSchema: ScriptAction.ScriptProps,
77
- getIntent: (props, options) => createIntent(ScriptAction.CreateScript, { ...props, space: options.space }),
78
- }),
79
- ),
80
- }),
81
- defineModule({
82
- id: `${meta.id}/module/notebook/object-form`,
83
- activatesOn: ClientEvents.SetupSchema,
84
- activate: () =>
85
- contributes(
86
- SpaceCapabilities.ObjectForm,
87
- defineObjectForm({
88
- objectSchema: Notebook.Notebook,
89
- formSchema: ScriptAction.NotebookProps,
90
- getIntent: (props, options) => createIntent(ScriptAction.CreateNotebook, { ...props, space: options.space }),
91
- }),
92
- ),
78
+ activate: () => contributes(ClientCapabilities.Schema, [Script.Script]),
93
79
  }),
80
+
94
81
  defineModule({
95
82
  id: `${meta.id}/module/react-surface`,
96
83
  activatesOn: Events.SetupReactSurface,
97
- // TODO(wittjosiah): Should occur before the script editor is loaded when surfaces activation is more granular.
98
- activatesBefore: [ScriptEvents.SetupCompiler],
99
84
  activate: ReactSurface,
100
85
  }),
101
86
  defineModule({
@@ -54,7 +54,7 @@ export default () => {
54
54
  The description is used by AI to understand the script and its purpose.
55
55
  The description must provide cases on when the script should be used.
56
56
 
57
- Schema:
57
+ Schema:
58
58
  The schema is defined using a schema-DSL library called Effect Schema.
59
59
  The input schema describes the arguments that the script accepts.
60
60
  The output schema describes the result that the script produces.
@@ -75,18 +75,18 @@ export default () => {
75
75
  - Detailed output schema
76
76
 
77
77
  <apis>
78
- export function defineFunction(params: {
79
- description: string,
80
- inputSchema: Schema.Schema,
81
- outputSchema: Schema.Schema,
82
- handler: (params: { event: { data: TInput } }) => Promise<TOutput>
78
+ export function defineFunction(params: {
79
+ description: string,
80
+ inputSchema: Schema.Schema,
81
+ outputSchema: Schema.Schema,
82
+ handler: (params: { event: { data: TInput } }) => Promise<TOutput>
83
83
  }): FunctionDefinition
84
84
  /**
85
85
  * Effect Schema
86
86
  */
87
- export const Schema;
87
+ export const Schema;
88
88
 
89
- // Examples:
89
+ // Examples:
90
90
 
91
91
  Schema.String
92
92
  Schema.Number
@@ -112,7 +112,7 @@ export default () => {
112
112
 
113
113
  The function must return the result that matches the output schema.
114
114
  </handler_function>
115
-
115
+
116
116
  <example>
117
117
  import { defineFunction, S } from 'dxos:functions';
118
118
 
@@ -181,7 +181,7 @@ export default () => {
181
181
  execute: async ({ id }, { extensions }) => {
182
182
  invariant(extensions?.space, 'No space');
183
183
 
184
- const script = (await extensions.space.db.query(Filter.ids(id)).first()) as ScriptType;
184
+ const script = (await extensions.space.db.query(Filter.id(id)).first()) as ScriptType;
185
185
  const { content } = await script.source.load();
186
186
 
187
187
  return ToolResult.Success({
@@ -203,7 +203,7 @@ export default () => {
203
203
  execute: async ({ id, code }, { extensions }) => {
204
204
  invariant(extensions?.space, 'No space');
205
205
 
206
- const script = (await extensions.space.db.query(Filter.ids(id)).first()) as ScriptType;
206
+ const script = (await extensions.space.db.query(Filter.id(id)).first()) as ScriptType;
207
207
  const source = await script.source.load();
208
208
  if (!source) {
209
209
  return ToolResult.Error('Script not found');
@@ -2,33 +2,83 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- // @ts-ignore
5
+ import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
6
+ import * as HttpClient from '@effect/platform/HttpClient';
7
+ import * as Effect from 'effect/Effect';
8
+ import * as Schedule from 'effect/Schedule';
9
+ import * as Schema from 'effect/Schema';
6
10
  import wasmUrl from 'esbuild-wasm/esbuild.wasm?url';
11
+ import * as ts from 'typescript';
7
12
 
8
13
  import { contributes } from '@dxos/app-framework';
9
14
  import { initializeBundler } from '@dxos/functions-runtime/bundler';
15
+ import { trim } from '@dxos/util';
10
16
 
11
17
  import { Compiler } from '../compiler';
12
18
 
13
19
  import { ScriptCapabilities } from './capabilities';
14
20
 
21
+ const SCRIPT_PACKAGES_BUCKET = 'https://pub-5745ae82e450484aa28f75fc6a175935.r2.dev/dev/';
22
+ const DECLARATION_EXTS = ['.d.ts', '.d.mts'];
23
+ const NO_TYPES = true; // Types temopararly disabled due to compiler erorrs.
24
+
15
25
  export default async () => {
16
- const compiler = new Compiler();
17
-
18
- await compiler.initialize();
19
- // TODO(wittjosiah): Fetch types for https modules.
20
- compiler.setFile('/src/typings.d.ts', "declare module 'https://*';");
21
- // TODO(wittjosiah): Proper function handler types.
22
- // TODO(wittjosiah): Remove.
23
- compiler.setFile(
24
- '/src/runtime.ts',
25
- `
26
- export const Filter: any = {};
27
- export type FunctionHandler = ({ event, context }: { event: any; context: any }) => Promise<Response>;
28
- export const functionHandler = (handler: FunctionHandler) => handler;
29
- `,
30
- );
31
26
  await initializeBundler({ wasmUrl });
32
27
 
28
+ const runtimeModules = await Effect.runPromise(fetchRuntimeModules().pipe(Effect.provide(FetchHttpClient.layer)));
29
+
30
+ const compiler = new Compiler({
31
+ skipLibCheck: true,
32
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
33
+ allowImportingTsExtensions: true,
34
+ noEmit: true,
35
+ strict: true,
36
+ esModuleInterop: true,
37
+ paths: Object.fromEntries(runtimeModules.map((mod) => [mod.moduleName, [`./src/${mod.filename}`]])),
38
+ });
39
+
40
+ await compiler.initialize(trim`
41
+ declare module 'https://*';
42
+ ${NO_TYPES ? '' : 'declare module "*";'}
43
+ `);
44
+ if (!NO_TYPES) {
45
+ for (const mod of runtimeModules) {
46
+ compiler.setFile(`/src/${mod.filename}`, mod.content);
47
+ }
48
+ }
49
+
33
50
  return contributes(ScriptCapabilities.Compiler, compiler);
34
51
  };
52
+
53
+ const fetchRuntimeModules = Effect.fnUntraced(function* () {
54
+ const manifest = yield* HttpClient.get(new URL('manifest.json', SCRIPT_PACKAGES_BUCKET)).pipe(
55
+ Effect.flatMap((_) => _.json),
56
+ Effect.flatMap(Schema.decodeUnknown(Schema.Struct({ files: Schema.Array(Schema.String) }))),
57
+ );
58
+
59
+ const declarationFiles = manifest.files.filter((file) => DECLARATION_EXTS.some((ext) => file.endsWith(ext)));
60
+
61
+ let fetched = 0;
62
+ const modules = yield* Effect.forEach(
63
+ declarationFiles,
64
+ Effect.fnUntraced(
65
+ function* (file) {
66
+ const response = yield* HttpClient.get(new URL(file, SCRIPT_PACKAGES_BUCKET)).pipe(
67
+ Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),
68
+ );
69
+ const content = yield* response.text;
70
+ fetched++;
71
+
72
+ const moduleName = file.replace(/\.d\.(ts|mts)$/, '');
73
+ return {
74
+ moduleName,
75
+ filename: file,
76
+ content,
77
+ };
78
+ },
79
+ Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),
80
+ ),
81
+ { concurrency: 20 },
82
+ );
83
+ return modules;
84
+ });
@@ -24,11 +24,10 @@ import {
24
24
  ScriptProperties,
25
25
  TestContainer,
26
26
  } from '../components';
27
+ import { useCompiler } from '../hooks';
27
28
  import { meta } from '../meta';
28
29
  import { Notebook, type ScriptSettings } from '../types';
29
30
 
30
- import { ScriptCapabilities } from './capabilities';
31
-
32
31
  export default () =>
33
32
  contributes(Capabilities.ReactSurface, [
34
33
  createSurface({
@@ -43,10 +42,10 @@ export default () =>
43
42
  role: ['article', 'section'],
44
43
  filter: (data): data is { subject: Script.Script } => Obj.instanceOf(Script.Script, data.subject),
45
44
  component: ({ data, role }) => {
46
- const compiler = useCapability(ScriptCapabilities.Compiler);
45
+ const compiler = useCompiler();
47
46
  // TODO(dmaretskyi): Since settings store is not reactive, this would break on the script plugin being enabled without a page reload.
48
47
  const settings = useCapability(Capabilities.SettingsStore).getStore<ScriptSettings>(meta.id)?.value;
49
- return <ScriptContainer role={role} script={data.subject} settings={settings} env={compiler.environment} />;
48
+ return <ScriptContainer role={role} script={data.subject} settings={settings} env={compiler?.environment} />;
50
49
  },
51
50
  }),
52
51
  createSurface({
@@ -54,8 +53,8 @@ export default () =>
54
53
  role: 'article',
55
54
  filter: (data): data is { subject: Notebook.Notebook } => Obj.instanceOf(Notebook.Notebook, data.subject),
56
55
  component: ({ data, role }) => {
57
- const compiler = useCapability(ScriptCapabilities.Compiler);
58
- return <NotebookContainer role={role} notebook={data.subject} env={compiler.environment} />;
56
+ const compiler = useCompiler();
57
+ return <NotebookContainer role={role} notebook={data.subject} env={compiler?.environment} />;
59
58
  },
60
59
  }),
61
60
  // TODO(burdon): Standardize PluginSettings vs ObjectSettings.
@@ -12,6 +12,8 @@ import ts from 'typescript';
12
12
 
13
13
  import { invariant } from '@dxos/invariant';
14
14
 
15
+ const GLOBALS = 'globals.d.ts';
16
+
15
17
  const defaultOptions: ts.CompilerOptions = {
16
18
  lib: ['DOM', 'es2022'],
17
19
  target: ts.ScriptTarget.ES2022,
@@ -23,16 +25,21 @@ export class Compiler {
23
25
 
24
26
  constructor(private readonly _options: ts.CompilerOptions = defaultOptions) {}
25
27
 
26
- async initialize(): Promise<void> {
28
+ async initialize(globals?: string): Promise<void> {
27
29
  if (this._env) {
28
30
  return;
29
31
  }
30
32
 
31
33
  // TODO(wittjosiah): Figure out how to get workers working in plugin packages.
32
34
  // https://github.com/val-town/codemirror-ts?tab=readme-ov-file#setup-worker
33
- this._fsMap = await createDefaultMapFromCDN(this._options, '5.5.4', true, ts);
35
+ this._fsMap = await createDefaultMapFromCDN(this._options, '5.7.2', true, ts);
36
+ if (globals) {
37
+ this._fsMap.set(GLOBALS, globals);
38
+ }
39
+
40
+ const rootFiles = globals ? [GLOBALS] : [];
34
41
  const system = createSystem(this._fsMap);
35
- this._env = createVirtualTypeScriptEnvironment(system, [], ts, this._options);
42
+ this._env = createVirtualTypeScriptEnvironment(system, rootFiles, ts, this._options);
36
43
  }
37
44
 
38
45
  get environment() {
@@ -49,7 +49,9 @@ export const FrameContainer = ({ containerUrl, result, debug = true }: FrameCont
49
49
  invariant(result.sourceHash, 'Source hash is required.');
50
50
  const sourceHash = Buffer.from(result.sourceHash).toString('hex');
51
51
  const src =
52
- 'bundle' in result ? `${containerUrl}?ts=${sourceHash}#code=${encodeURIComponent(result.bundle)}` : undefined;
52
+ 'bundle' in result
53
+ ? `${containerUrl}?ts=${sourceHash}#code=${encodeURIComponent(new TextDecoder().decode(Object.values(result.bundle as any)[0] as Uint8Array))}`
54
+ : undefined;
53
55
 
54
56
  return (
55
57
  <>
@@ -22,7 +22,7 @@ import { getSpace } from '@dxos/react-client/echo';
22
22
  import { DropdownMenu, IconButton, Toolbar, useTranslation } from '@dxos/react-ui';
23
23
  import { useAttention } from '@dxos/react-ui-attention';
24
24
  import { StackItem } from '@dxos/react-ui-stack';
25
- import { Text } from '@dxos/schema';
25
+ import { Text, View } from '@dxos/schema';
26
26
  import { isNonNullable } from '@dxos/util';
27
27
 
28
28
  import { meta } from '../meta';
@@ -63,26 +63,23 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
63
63
  const { name, filter } = builder.build(source);
64
64
  if (filter) {
65
65
  const ast = Query.select(filter).ast;
66
- const view = cell.view?.target;
67
- if (!view) {
68
- const graph = Graph.make({ query: { ast } });
69
- const { view } = await Graph.makeView({
70
- space,
71
- presentation: graph,
72
- });
73
- cell.view = Ref.make(view);
66
+ const graph = cell.graph?.target;
67
+ if (!graph) {
68
+ const { view } = await View.makeFromSpace({ space });
69
+ const graph = Graph.make({ query: { ast }, view });
70
+ cell.graph = Ref.make(graph);
74
71
  cell.name = name;
75
72
  } else {
76
- view.query.ast = ast;
73
+ graph.query.ast = ast;
77
74
  }
78
75
  }
79
76
  }
80
77
 
81
- if (cell.name && cell.view?.target) {
82
- const view = Obj.getSnapshot(cell.view?.target);
83
- const query = Query.fromAst(view.query.ast);
84
- const result = await space?.db.query(query).run();
85
- const objectIds = result?.objects?.map((obj) => obj.id);
78
+ if (cell.name && cell.graph?.target) {
79
+ const graph = Obj.getSnapshot(cell.graph?.target);
80
+ const query = Query.fromAst(graph.query.ast);
81
+ const objects = await space?.db.query(query).run();
82
+ const objectIds = objects?.map((obj) => obj.id);
86
83
  setQueryValues((prev) => ({ ...prev, [cell.name!]: objectIds }));
87
84
  }
88
85
  }
@@ -153,8 +150,8 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
153
150
 
154
151
  case 'prompt': {
155
152
  if (space) {
156
- const result = await space.db.query(Query.select(Filter.type(Blueprint.Blueprint))).run();
157
- const blueprints = result.objects
153
+ const objects = await space.db.query(Query.select(Filter.type(Blueprint.Blueprint))).run();
154
+ const blueprints = objects
158
155
  .filter((blueprint) => INCLUDE_BLUEPRINTS.includes(blueprint.key))
159
156
  .map((blueprint) => Ref.make(blueprint));
160
157
  cell.prompt = Ref.make(Prompt.make({ instructions: '', blueprints }));
@@ -5,9 +5,9 @@
5
5
  import React, { useCallback, useMemo } from 'react';
6
6
 
7
7
  import { Surface } from '@dxos/app-framework/react';
8
+ import { createDocAccessor } from '@dxos/echo-db';
8
9
  import { invariant } from '@dxos/invariant';
9
10
  import { TemplateEditor } from '@dxos/plugin-assistant';
10
- import { createDocAccessor } from '@dxos/react-client/echo';
11
11
  import { type Space } from '@dxos/react-client/echo';
12
12
  import { useThemeContext, useTranslation } from '@dxos/react-ui';
13
13
  import { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';
@@ -57,7 +57,7 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
57
57
  : [];
58
58
  }, [cell.source?.target]);
59
59
 
60
- const view = cell.view?.target;
60
+ const explorerGraph = cell.graph?.target;
61
61
 
62
62
  const handleQueryChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(
63
63
  (value: string) => {
@@ -113,7 +113,9 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
113
113
 
114
114
  // TODO(burdon): Remove app-framework deps (via render prop).
115
115
  return (
116
- <div className={mx('bs-full overflow-hidden grid', view && !dragging && 'grid-rows-[min-content_1fr]')}>
116
+ <div
117
+ className={mx('bs-full overflow-hidden grid', explorerGraph && !dragging && 'grid-rows-[min-content_1fr]')}
118
+ >
117
119
  <QueryEditor
118
120
  id={cell.id}
119
121
  classNames={[editorStyles, 'border-be border-subduedSeparator']}
@@ -121,7 +123,7 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
121
123
  value={cell.source.target.content}
122
124
  onChange={handleQueryChange}
123
125
  />
124
- {view && !dragging && <Surface role='section' limit={1} data={{ subject: view }} />}
126
+ {explorerGraph && !dragging && <Surface role='section' limit={1} data={{ subject: explorerGraph }} />}
125
127
  </div>
126
128
  );
127
129