@dxos/plugin-script 0.8.4-main.c4373fc → 0.8.4-main.c85a9c8dae

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 (512) hide show
  1. package/README.md +15 -13
  2. package/dist/lib/browser/DeploymentDialog-IIOXAS47.mjs +138 -0
  3. package/dist/lib/browser/DeploymentDialog-IIOXAS47.mjs.map +7 -0
  4. package/dist/lib/browser/NotebookContainer-VVZOKGRC.mjs +850 -0
  5. package/dist/lib/browser/NotebookContainer-VVZOKGRC.mjs.map +7 -0
  6. package/dist/lib/browser/ScriptContainer-A5SSIUH6.mjs +93 -0
  7. package/dist/lib/browser/ScriptContainer-A5SSIUH6.mjs.map +7 -0
  8. package/dist/lib/browser/ScriptObjectSettings-HYYC7KXC.mjs +294 -0
  9. package/dist/lib/browser/ScriptObjectSettings-HYYC7KXC.mjs.map +7 -0
  10. package/dist/lib/browser/ScriptPluginSettings-UTWA7CBT.mjs +55 -0
  11. package/dist/lib/browser/ScriptPluginSettings-UTWA7CBT.mjs.map +7 -0
  12. package/dist/lib/browser/ScriptProperties-HREPUE65.mjs +28 -0
  13. package/dist/lib/browser/ScriptProperties-HREPUE65.mjs.map +7 -0
  14. package/dist/lib/browser/TestContainer-D4Y2K2TT.mjs +39 -0
  15. package/dist/lib/browser/TestContainer-D4Y2K2TT.mjs.map +7 -0
  16. package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs +69 -0
  17. package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs.map +7 -0
  18. package/dist/lib/browser/blueprint-definition-YMZEJBAZ.mjs +17 -0
  19. package/dist/lib/browser/blueprint-definition-YMZEJBAZ.mjs.map +7 -0
  20. package/dist/lib/browser/blueprints/index.mjs +8 -0
  21. package/dist/lib/browser/chunk-6IXFDTAI.mjs +113 -0
  22. package/dist/lib/browser/chunk-6IXFDTAI.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-ATTZUDT7.mjs +67 -0
  24. package/dist/lib/browser/chunk-ATTZUDT7.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-G3XIOLLI.mjs +174 -0
  26. package/dist/lib/browser/chunk-G3XIOLLI.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  28. package/dist/lib/browser/chunk-J7PGML5B.mjs +105 -0
  29. package/dist/lib/browser/chunk-J7PGML5B.mjs.map +7 -0
  30. package/dist/lib/browser/chunk-MUEVLYXJ.mjs +397 -0
  31. package/dist/lib/browser/chunk-MUEVLYXJ.mjs.map +7 -0
  32. package/dist/lib/browser/chunk-PLDBKKYO.mjs +789 -0
  33. package/dist/lib/browser/chunk-PLDBKKYO.mjs.map +7 -0
  34. package/dist/lib/browser/chunk-Q66L5EUR.mjs +20 -0
  35. package/dist/lib/browser/chunk-Q66L5EUR.mjs.map +7 -0
  36. package/dist/lib/browser/chunk-TW27W3EL.mjs +29 -0
  37. package/dist/lib/browser/chunk-TW27W3EL.mjs.map +7 -0
  38. package/dist/lib/browser/{chunk-EZVXV6DA.mjs → chunk-WYR4QHPE.mjs} +7 -2
  39. package/dist/lib/browser/chunk-WYR4QHPE.mjs.map +7 -0
  40. package/dist/lib/browser/chunk-ZYU2LP6U.mjs +11 -0
  41. package/dist/lib/browser/chunk-ZYU2LP6U.mjs.map +7 -0
  42. package/dist/lib/browser/compiler-53G6ZHQM.mjs +99 -0
  43. package/dist/lib/browser/compiler-53G6ZHQM.mjs.map +7 -0
  44. package/dist/lib/browser/index.mjs +120 -136
  45. package/dist/lib/browser/index.mjs.map +4 -4
  46. package/dist/lib/browser/meta.json +1 -1
  47. package/dist/lib/browser/operation-resolver-CYEISDDK.mjs +79 -0
  48. package/dist/lib/browser/operation-resolver-CYEISDDK.mjs.map +7 -0
  49. package/dist/lib/browser/react-surface-26P6HAFD.mjs +141 -0
  50. package/dist/lib/browser/react-surface-26P6HAFD.mjs.map +7 -0
  51. package/dist/lib/browser/settings-76UM7442.mjs +36 -0
  52. package/dist/lib/browser/settings-76UM7442.mjs.map +7 -0
  53. package/dist/lib/browser/templates/index.mjs +2 -1
  54. package/dist/lib/browser/types/index.mjs +12 -6
  55. package/dist/lib/node-esm/DeploymentDialog-ZHPHEV2H.mjs +139 -0
  56. package/dist/lib/node-esm/DeploymentDialog-ZHPHEV2H.mjs.map +7 -0
  57. package/dist/lib/node-esm/NotebookContainer-ZLWTNMQA.mjs +851 -0
  58. package/dist/lib/node-esm/NotebookContainer-ZLWTNMQA.mjs.map +7 -0
  59. package/dist/lib/node-esm/ScriptContainer-S4UKQAWP.mjs +94 -0
  60. package/dist/lib/node-esm/ScriptContainer-S4UKQAWP.mjs.map +7 -0
  61. package/dist/lib/node-esm/ScriptObjectSettings-C5QBRERY.mjs +295 -0
  62. package/dist/lib/node-esm/ScriptObjectSettings-C5QBRERY.mjs.map +7 -0
  63. package/dist/lib/node-esm/ScriptPluginSettings-MFACDW4R.mjs +56 -0
  64. package/dist/lib/node-esm/ScriptPluginSettings-MFACDW4R.mjs.map +7 -0
  65. package/dist/lib/node-esm/ScriptProperties-FMNIX3KU.mjs +29 -0
  66. package/dist/lib/node-esm/ScriptProperties-FMNIX3KU.mjs.map +7 -0
  67. package/dist/lib/node-esm/TestContainer-AO45YPGV.mjs +40 -0
  68. package/dist/lib/node-esm/TestContainer-AO45YPGV.mjs.map +7 -0
  69. package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs +70 -0
  70. package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs.map +7 -0
  71. package/dist/lib/node-esm/blueprint-definition-5MGY6BRQ.mjs +18 -0
  72. package/dist/lib/node-esm/blueprint-definition-5MGY6BRQ.mjs.map +7 -0
  73. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  74. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs +176 -0
  76. package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs.map +7 -0
  77. package/dist/lib/node-esm/{chunk-OG2SIKHE.mjs → chunk-5HSJPAK7.mjs} +7 -2
  78. package/dist/lib/node-esm/chunk-5HSJPAK7.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-H46R2RS5.mjs +790 -0
  80. package/dist/lib/node-esm/chunk-H46R2RS5.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  82. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-JGN7TDJH.mjs +69 -0
  84. package/dist/lib/node-esm/chunk-JGN7TDJH.mjs.map +7 -0
  85. package/dist/lib/node-esm/{chunk-OQGBKNYU.mjs → chunk-QG6ANK4B.mjs} +34 -17
  86. package/dist/lib/node-esm/chunk-QG6ANK4B.mjs.map +7 -0
  87. package/dist/lib/node-esm/chunk-S7DSCLOW.mjs +31 -0
  88. package/dist/lib/node-esm/chunk-S7DSCLOW.mjs.map +7 -0
  89. package/dist/lib/node-esm/chunk-TZ2EBTPQ.mjs +22 -0
  90. package/dist/lib/node-esm/chunk-TZ2EBTPQ.mjs.map +7 -0
  91. package/dist/lib/node-esm/chunk-UFBVE33O.mjs +12 -0
  92. package/dist/lib/node-esm/chunk-UFBVE33O.mjs.map +7 -0
  93. package/dist/lib/node-esm/chunk-WWD5LUU6.mjs +114 -0
  94. package/dist/lib/node-esm/chunk-WWD5LUU6.mjs.map +7 -0
  95. package/dist/lib/node-esm/chunk-ZDJ2FI7E.mjs +398 -0
  96. package/dist/lib/node-esm/chunk-ZDJ2FI7E.mjs.map +7 -0
  97. package/dist/lib/node-esm/compiler-HHQW7EP3.mjs +100 -0
  98. package/dist/lib/node-esm/compiler-HHQW7EP3.mjs.map +7 -0
  99. package/dist/lib/node-esm/index.mjs +120 -136
  100. package/dist/lib/node-esm/index.mjs.map +4 -4
  101. package/dist/lib/node-esm/meta.json +1 -1
  102. package/dist/lib/node-esm/operation-resolver-HFFDXWND.mjs +80 -0
  103. package/dist/lib/node-esm/operation-resolver-HFFDXWND.mjs.map +7 -0
  104. package/dist/lib/node-esm/react-surface-THCIK266.mjs +142 -0
  105. package/dist/lib/node-esm/react-surface-THCIK266.mjs.map +7 -0
  106. package/dist/lib/node-esm/settings-CCHDPLFJ.mjs +37 -0
  107. package/dist/lib/node-esm/settings-CCHDPLFJ.mjs.map +7 -0
  108. package/dist/lib/node-esm/templates/index.mjs +2 -1
  109. package/dist/lib/node-esm/types/index.mjs +12 -6
  110. package/dist/types/src/ScriptPlugin.d.ts +2 -1
  111. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  112. package/dist/types/src/blueprints/index.d.ts +2 -0
  113. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  114. package/dist/types/src/blueprints/script-blueprint.d.ts +4 -0
  115. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  117. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  118. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  119. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +12 -0
  121. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
  123. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
  124. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +6 -0
  125. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  126. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  127. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  128. package/dist/types/src/capabilities/compiler/compiler.d.ts +6 -0
  129. package/dist/types/src/capabilities/compiler/compiler.d.ts.map +1 -0
  130. package/dist/types/src/capabilities/compiler/index.d.ts +3 -0
  131. package/dist/types/src/capabilities/compiler/index.d.ts.map +1 -0
  132. package/dist/types/src/capabilities/index.d.ts +6 -7
  133. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  134. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  135. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  136. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  137. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  138. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  139. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  140. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  141. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  142. package/dist/types/src/capabilities/settings/index.d.ts +7 -0
  143. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  144. package/dist/types/src/capabilities/settings/settings.d.ts +10 -0
  145. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  146. package/dist/types/src/compiler/compiler.d.ts +1 -1
  147. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  148. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +1 -1
  149. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  150. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +15 -0
  151. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -0
  152. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +9 -0
  153. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -0
  154. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +8 -10
  155. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  156. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +26 -8
  157. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/NotebookStack/index.d.ts +1 -0
  159. package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -1
  160. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  161. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  162. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  163. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  164. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  165. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  166. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +8 -8
  167. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  168. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +27 -8
  169. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  170. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  171. package/dist/types/src/components/TestPanel/index.d.ts +0 -1
  172. package/dist/types/src/components/TestPanel/index.d.ts.map +1 -1
  173. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +3 -2
  174. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  175. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +1 -7
  176. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  177. package/dist/types/src/components/index.d.ts +4 -5
  178. package/dist/types/src/components/index.d.ts.map +1 -1
  179. package/dist/types/src/constants.d.ts +2 -0
  180. package/dist/types/src/constants.d.ts.map +1 -0
  181. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.d.ts +2 -4
  182. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
  183. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.stories.d.ts +25 -6
  184. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
  185. package/dist/types/src/containers/DeploymentDialog/index.d.ts +3 -0
  186. package/dist/types/src/containers/DeploymentDialog/index.d.ts.map +1 -0
  187. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts +7 -0
  188. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts.map +1 -0
  189. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts +7 -0
  190. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts.map +1 -0
  191. package/dist/types/src/containers/NotebookContainer/index.d.ts +3 -0
  192. package/dist/types/src/containers/NotebookContainer/index.d.ts.map +1 -0
  193. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts +10 -0
  194. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts.map +1 -0
  195. package/dist/types/src/containers/ScriptContainer/index.d.ts +3 -0
  196. package/dist/types/src/containers/ScriptContainer/index.d.ts.map +1 -0
  197. package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts +7 -0
  198. package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts.map +1 -0
  199. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts +3 -0
  200. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts.map +1 -0
  201. package/dist/types/src/containers/ScriptPluginSettings/ScriptPluginSettings.d.ts +8 -0
  202. package/dist/types/src/containers/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
  203. package/dist/types/src/containers/ScriptPluginSettings/index.d.ts +3 -0
  204. package/dist/types/src/containers/ScriptPluginSettings/index.d.ts.map +1 -0
  205. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +7 -0
  206. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
  207. package/dist/types/src/containers/ScriptProperties/index.d.ts +3 -0
  208. package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
  209. package/dist/types/src/containers/TestContainer/TestContainer.d.ts +8 -0
  210. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
  211. package/dist/types/src/containers/TestContainer/index.d.ts +3 -0
  212. package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
  213. package/dist/types/src/containers/index.d.ts +9 -0
  214. package/dist/types/src/containers/index.d.ts.map +1 -0
  215. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  216. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  217. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  218. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  219. package/dist/types/src/hooks/deploy.d.ts +17 -31
  220. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  221. package/dist/types/src/hooks/format.d.ts +5 -4
  222. package/dist/types/src/hooks/format.d.ts.map +1 -1
  223. package/dist/types/src/hooks/index.d.ts +1 -0
  224. package/dist/types/src/hooks/index.d.ts.map +1 -1
  225. package/dist/types/src/hooks/template.d.ts +7 -16
  226. package/dist/types/src/hooks/template.d.ts.map +1 -1
  227. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  228. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  229. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  230. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  231. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  232. package/dist/types/src/index.d.ts +2 -1
  233. package/dist/types/src/index.d.ts.map +1 -1
  234. package/dist/types/src/meta.d.ts +2 -2
  235. package/dist/types/src/meta.d.ts.map +1 -1
  236. package/dist/types/src/notebook/compute-graph.d.ts +58 -0
  237. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -0
  238. package/dist/types/src/notebook/compute-graph.test.d.ts +2 -0
  239. package/dist/types/src/notebook/compute-graph.test.d.ts.map +1 -0
  240. package/dist/types/src/notebook/eval.d.ts +13 -0
  241. package/dist/types/src/notebook/eval.d.ts.map +1 -0
  242. package/dist/types/src/notebook/index.d.ts +1 -1
  243. package/dist/types/src/notebook/index.d.ts.map +1 -1
  244. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -1
  245. package/dist/types/src/templates/anthropic.d.ts +8 -0
  246. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  247. package/dist/types/src/templates/chess-bot.d.ts +16 -0
  248. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  249. package/dist/types/src/templates/commentary.d.ts +16 -0
  250. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  251. package/dist/types/src/templates/forex-effect.d.ts +4 -1
  252. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  253. package/dist/types/src/templates/forex.d.ts +4 -1
  254. package/dist/types/src/templates/forex.d.ts.map +1 -1
  255. package/dist/types/src/templates/index.d.ts +52 -1
  256. package/dist/types/src/templates/index.d.ts.map +1 -1
  257. package/dist/types/src/templates/ping.d.ts +3 -0
  258. package/dist/types/src/templates/ping.d.ts.map +1 -0
  259. package/dist/types/src/testing/data.d.ts +2 -9
  260. package/dist/types/src/testing/data.d.ts.map +1 -1
  261. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  262. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  263. package/dist/types/src/translations.d.ts +11 -3
  264. package/dist/types/src/translations.d.ts.map +1 -1
  265. package/dist/types/src/types/Notebook.d.ts +108 -0
  266. package/dist/types/src/types/Notebook.d.ts.map +1 -0
  267. package/dist/types/src/types/actions.d.ts +30 -48
  268. package/dist/types/src/types/actions.d.ts.map +1 -1
  269. package/dist/types/src/types/capabilities.d.ts +12 -0
  270. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  271. package/dist/types/src/types/events.d.ts +5 -0
  272. package/dist/types/src/types/events.d.ts.map +1 -0
  273. package/dist/types/src/types/index.d.ts +4 -1
  274. package/dist/types/src/types/index.d.ts.map +1 -1
  275. package/dist/types/src/types/types.d.ts +6 -0
  276. package/dist/types/src/types/types.d.ts.map +1 -0
  277. package/dist/types/src/util/deploy.d.ts +4 -4
  278. package/dist/types/src/util/deploy.d.ts.map +1 -1
  279. package/dist/types/src/util/functions.d.ts +3 -3
  280. package/dist/types/src/util/functions.d.ts.map +1 -1
  281. package/dist/types/tsconfig.tsbuildinfo +1 -1
  282. package/package.json +114 -79
  283. package/src/ScriptPlugin.tsx +44 -85
  284. package/src/blueprints/index.ts +5 -0
  285. package/src/blueprints/script-blueprint.ts +31 -0
  286. package/src/capabilities/app-graph-builder/app-graph-builder.ts +56 -0
  287. package/src/capabilities/app-graph-builder/index.ts +7 -0
  288. package/src/capabilities/{artifact-definition.ts → artifact-definition/artifact-definition.ts} +97 -95
  289. package/src/capabilities/artifact-definition/index.ts +7 -0
  290. package/src/capabilities/blueprint-definition/blueprint-definition.ts +17 -0
  291. package/src/capabilities/blueprint-definition/index.ts +7 -0
  292. package/src/capabilities/compiler/compiler.ts +103 -0
  293. package/src/capabilities/compiler/index.ts +7 -0
  294. package/src/capabilities/index.ts +6 -10
  295. package/src/capabilities/operation-resolver/index.ts +7 -0
  296. package/src/capabilities/operation-resolver/operation-resolver.ts +75 -0
  297. package/src/capabilities/react-surface/index.ts +7 -0
  298. package/src/capabilities/react-surface/react-surface.tsx +121 -0
  299. package/src/capabilities/settings/index.ts +7 -0
  300. package/src/capabilities/settings/settings.ts +33 -0
  301. package/src/compiler/compiler.ts +10 -3
  302. package/src/components/FrameContainer/FrameContainer.tsx +6 -5
  303. package/src/components/FrameContainer/frame.html +21 -21
  304. package/src/components/NotebookStack/NotebookCell.tsx +215 -0
  305. package/src/components/NotebookStack/NotebookMenu.tsx +47 -0
  306. package/src/components/NotebookStack/NotebookStack.stories.tsx +33 -15
  307. package/src/components/NotebookStack/NotebookStack.tsx +55 -82
  308. package/src/components/NotebookStack/index.ts +1 -0
  309. package/src/components/QueryEditor/QueryEditor.stories.tsx +102 -0
  310. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  311. package/src/components/QueryEditor/index.ts +5 -0
  312. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +46 -23
  313. package/src/components/ScriptToolbar/ScriptToolbar.tsx +28 -31
  314. package/src/components/TestPanel/TestPanel.tsx +61 -36
  315. package/src/components/TestPanel/index.ts +0 -1
  316. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +26 -25
  317. package/src/components/TypescriptEditor/TypescriptEditor.tsx +70 -74
  318. package/src/components/index.ts +4 -9
  319. package/src/constants.ts +7 -0
  320. package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +61 -0
  321. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +99 -0
  322. package/src/containers/DeploymentDialog/index.ts +7 -0
  323. package/src/containers/NotebookContainer/NotebookContainer.stories.tsx +87 -0
  324. package/src/containers/NotebookContainer/NotebookContainer.tsx +268 -0
  325. package/src/containers/NotebookContainer/index.ts +7 -0
  326. package/src/containers/ScriptContainer/ScriptContainer.tsx +84 -0
  327. package/src/containers/ScriptContainer/index.ts +7 -0
  328. package/src/{components/Settings → containers/ScriptObjectSettings}/ScriptObjectSettings.tsx +55 -50
  329. package/src/containers/ScriptObjectSettings/index.ts +7 -0
  330. package/src/{components/Settings → containers/ScriptPluginSettings}/ScriptPluginSettings.tsx +19 -14
  331. package/src/containers/ScriptPluginSettings/index.ts +7 -0
  332. package/src/containers/ScriptProperties/ScriptProperties.tsx +33 -0
  333. package/src/containers/ScriptProperties/index.ts +7 -0
  334. package/src/containers/TestContainer/TestContainer.tsx +28 -0
  335. package/src/containers/TestContainer/index.ts +7 -0
  336. package/src/containers/index.ts +13 -0
  337. package/src/e2e/ai.test.ts +92 -0
  338. package/src/e2e/deploy.test.ts +64 -0
  339. package/src/hooks/deploy.ts +43 -35
  340. package/src/hooks/format.ts +8 -3
  341. package/src/hooks/index.ts +1 -0
  342. package/src/hooks/template.ts +22 -26
  343. package/src/hooks/useCompiler.ts +24 -0
  344. package/src/hooks/useCreateAndDeployScriptTemplates.ts +14 -16
  345. package/src/hooks/useToolbarState.ts +29 -4
  346. package/src/index.ts +2 -1
  347. package/src/meta.ts +8 -4
  348. package/src/notebook/compute-graph.test.ts +82 -0
  349. package/src/notebook/{notebook.ts → compute-graph.ts} +75 -33
  350. package/src/notebook/eval.ts +105 -0
  351. package/src/notebook/index.ts +1 -1
  352. package/src/notebook/vfs-parser.ts +43 -82
  353. package/src/templates/anthropic.ts +42 -0
  354. package/src/templates/chess-bot.ts +58 -0
  355. package/src/templates/commentary.ts +231 -0
  356. package/src/templates/data-generator.ts +1 -1
  357. package/src/templates/forex-effect.ts +22 -27
  358. package/src/templates/forex.ts +7 -6
  359. package/src/templates/gmail.ts +1 -2
  360. package/src/templates/index.ts +24 -11
  361. package/src/templates/ping.ts +17 -0
  362. package/src/testing/data.ts +43 -8
  363. package/src/testing/simulator.test.ts +40 -0
  364. package/src/translations.ts +11 -3
  365. package/src/types/Notebook.ts +41 -0
  366. package/src/types/actions.ts +23 -27
  367. package/src/types/capabilities.ts +17 -0
  368. package/src/types/events.ts +11 -0
  369. package/src/types/index.ts +4 -1
  370. package/src/types/types.ts +15 -0
  371. package/src/util/deploy.ts +30 -40
  372. package/src/util/functions.ts +32 -28
  373. package/src/vite-env.d.ts +2 -0
  374. package/dist/lib/browser/DeploymentDialog-7FNPALCV.mjs +0 -12
  375. package/dist/lib/browser/NotebookContainer-ZSXYRRZB.mjs +0 -578
  376. package/dist/lib/browser/NotebookContainer-ZSXYRRZB.mjs.map +0 -7
  377. package/dist/lib/browser/ScriptContainer-24LLLTLB.mjs +0 -149
  378. package/dist/lib/browser/ScriptContainer-24LLLTLB.mjs.map +0 -7
  379. package/dist/lib/browser/app-graph-builder-DPYULSME.mjs +0 -65
  380. package/dist/lib/browser/app-graph-builder-DPYULSME.mjs.map +0 -7
  381. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs +0 -28
  382. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs.map +0 -7
  383. package/dist/lib/browser/chunk-DXWTBOND.mjs +0 -282
  384. package/dist/lib/browser/chunk-DXWTBOND.mjs.map +0 -7
  385. package/dist/lib/browser/chunk-ETFBQURU.mjs +0 -254
  386. package/dist/lib/browser/chunk-ETFBQURU.mjs.map +0 -7
  387. package/dist/lib/browser/chunk-EZVXV6DA.mjs.map +0 -7
  388. package/dist/lib/browser/chunk-I3THDIT5.mjs +0 -90
  389. package/dist/lib/browser/chunk-I3THDIT5.mjs.map +0 -7
  390. package/dist/lib/browser/chunk-N6M34EUC.mjs +0 -112
  391. package/dist/lib/browser/chunk-N6M34EUC.mjs.map +0 -7
  392. package/dist/lib/browser/chunk-NNYSARXK.mjs +0 -153
  393. package/dist/lib/browser/chunk-NNYSARXK.mjs.map +0 -7
  394. package/dist/lib/browser/chunk-OKXN2N7M.mjs +0 -15
  395. package/dist/lib/browser/chunk-OKXN2N7M.mjs.map +0 -7
  396. package/dist/lib/browser/chunk-SRSEZWDY.mjs +0 -646
  397. package/dist/lib/browser/chunk-SRSEZWDY.mjs.map +0 -7
  398. package/dist/lib/browser/chunk-SWBZUZDX.mjs +0 -80
  399. package/dist/lib/browser/chunk-SWBZUZDX.mjs.map +0 -7
  400. package/dist/lib/browser/chunk-VFJJA4WR.mjs +0 -88
  401. package/dist/lib/browser/chunk-VFJJA4WR.mjs.map +0 -7
  402. package/dist/lib/browser/compiler-G2N2CG63.mjs +0 -98
  403. package/dist/lib/browser/compiler-G2N2CG63.mjs.map +0 -7
  404. package/dist/lib/browser/intent-resolver-FYZRLYNT.mjs +0 -105
  405. package/dist/lib/browser/intent-resolver-FYZRLYNT.mjs.map +0 -7
  406. package/dist/lib/browser/react-surface-CFRYAL2P.mjs +0 -127
  407. package/dist/lib/browser/react-surface-CFRYAL2P.mjs.map +0 -7
  408. package/dist/lib/browser/settings-L3HCZRBP.mjs +0 -24
  409. package/dist/lib/browser/settings-L3HCZRBP.mjs.map +0 -7
  410. package/dist/lib/node-esm/DeploymentDialog-AKAGR37W.mjs +0 -13
  411. package/dist/lib/node-esm/NotebookContainer-2O3N3XPE.mjs +0 -579
  412. package/dist/lib/node-esm/NotebookContainer-2O3N3XPE.mjs.map +0 -7
  413. package/dist/lib/node-esm/ScriptContainer-IKOB6FHQ.mjs +0 -150
  414. package/dist/lib/node-esm/ScriptContainer-IKOB6FHQ.mjs.map +0 -7
  415. package/dist/lib/node-esm/app-graph-builder-UXJGHXSL.mjs +0 -66
  416. package/dist/lib/node-esm/app-graph-builder-UXJGHXSL.mjs.map +0 -7
  417. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs +0 -30
  418. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs.map +0 -7
  419. package/dist/lib/node-esm/chunk-5IKGUOMI.mjs +0 -154
  420. package/dist/lib/node-esm/chunk-5IKGUOMI.mjs.map +0 -7
  421. package/dist/lib/node-esm/chunk-7MR2L4T3.mjs +0 -283
  422. package/dist/lib/node-esm/chunk-7MR2L4T3.mjs.map +0 -7
  423. package/dist/lib/node-esm/chunk-C33FKUSC.mjs +0 -91
  424. package/dist/lib/node-esm/chunk-C33FKUSC.mjs.map +0 -7
  425. package/dist/lib/node-esm/chunk-NUXZQQ6P.mjs +0 -16
  426. package/dist/lib/node-esm/chunk-NUXZQQ6P.mjs.map +0 -7
  427. package/dist/lib/node-esm/chunk-OG2SIKHE.mjs.map +0 -7
  428. package/dist/lib/node-esm/chunk-OQGBKNYU.mjs.map +0 -7
  429. package/dist/lib/node-esm/chunk-PMQ3D535.mjs +0 -647
  430. package/dist/lib/node-esm/chunk-PMQ3D535.mjs.map +0 -7
  431. package/dist/lib/node-esm/chunk-U4CZGISN.mjs +0 -255
  432. package/dist/lib/node-esm/chunk-U4CZGISN.mjs.map +0 -7
  433. package/dist/lib/node-esm/chunk-VRSDE4CI.mjs +0 -114
  434. package/dist/lib/node-esm/chunk-VRSDE4CI.mjs.map +0 -7
  435. package/dist/lib/node-esm/chunk-ZF5ULKED.mjs +0 -81
  436. package/dist/lib/node-esm/chunk-ZF5ULKED.mjs.map +0 -7
  437. package/dist/lib/node-esm/compiler-PLDAZ5GJ.mjs +0 -99
  438. package/dist/lib/node-esm/compiler-PLDAZ5GJ.mjs.map +0 -7
  439. package/dist/lib/node-esm/intent-resolver-6J3CFL5T.mjs +0 -106
  440. package/dist/lib/node-esm/intent-resolver-6J3CFL5T.mjs.map +0 -7
  441. package/dist/lib/node-esm/react-surface-NPKEO7SA.mjs +0 -128
  442. package/dist/lib/node-esm/react-surface-NPKEO7SA.mjs.map +0 -7
  443. package/dist/lib/node-esm/settings-YWGZP4EW.mjs +0 -25
  444. package/dist/lib/node-esm/settings-YWGZP4EW.mjs.map +0 -7
  445. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  446. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  447. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  448. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  449. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  450. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  451. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  452. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  453. package/dist/types/src/capabilities/compiler.d.ts +0 -4
  454. package/dist/types/src/capabilities/compiler.d.ts.map +0 -1
  455. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  456. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  457. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  458. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  459. package/dist/types/src/capabilities/settings.d.ts +0 -4
  460. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  461. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
  462. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +0 -1
  463. package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
  464. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
  465. package/dist/types/src/components/NotebookContainer.d.ts +0 -10
  466. package/dist/types/src/components/NotebookContainer.d.ts.map +0 -1
  467. package/dist/types/src/components/NotebookContainer.stories.d.ts +0 -231
  468. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +0 -1
  469. package/dist/types/src/components/ScriptContainer.d.ts +0 -12
  470. package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
  471. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +0 -8
  472. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
  473. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +0 -6
  474. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
  475. package/dist/types/src/components/Settings/index.d.ts +0 -3
  476. package/dist/types/src/components/Settings/index.d.ts.map +0 -1
  477. package/dist/types/src/components/TestPanel/TestContainer.d.ts +0 -8
  478. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
  479. package/dist/types/src/events.d.ts +0 -4
  480. package/dist/types/src/events.d.ts.map +0 -1
  481. package/dist/types/src/notebook/notebook.d.ts +0 -39
  482. package/dist/types/src/notebook/notebook.d.ts.map +0 -1
  483. package/dist/types/src/notebook/notebook.test.d.ts +0 -2
  484. package/dist/types/src/notebook/notebook.test.d.ts.map +0 -1
  485. package/dist/types/src/templates/chess.d.ts +0 -3
  486. package/dist/types/src/templates/chess.d.ts.map +0 -1
  487. package/dist/types/src/templates/echo.d.ts +0 -6
  488. package/dist/types/src/templates/echo.d.ts.map +0 -1
  489. package/dist/types/src/types/schema.d.ts +0 -35
  490. package/dist/types/src/types/schema.d.ts.map +0 -1
  491. package/src/capabilities/app-graph-builder.ts +0 -65
  492. package/src/capabilities/blueprint-definition.ts +0 -30
  493. package/src/capabilities/capabilities.ts +0 -12
  494. package/src/capabilities/compiler.ts +0 -34
  495. package/src/capabilities/intent-resolver.ts +0 -87
  496. package/src/capabilities/react-surface.tsx +0 -102
  497. package/src/capabilities/settings.ts +0 -21
  498. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +0 -53
  499. package/src/components/DeploymentDialog/DeploymentDialog.tsx +0 -106
  500. package/src/components/DeploymentDialog/index.ts +0 -9
  501. package/src/components/NotebookContainer.stories.tsx +0 -36
  502. package/src/components/NotebookContainer.tsx +0 -82
  503. package/src/components/ScriptContainer.tsx +0 -69
  504. package/src/components/Settings/index.ts +0 -6
  505. package/src/components/TestPanel/TestContainer.tsx +0 -27
  506. package/src/events.ts +0 -11
  507. package/src/notebook/notebook.test.ts +0 -38
  508. package/src/templates/chess.ts +0 -49
  509. package/src/templates/echo.ts +0 -8
  510. package/src/types/schema.ts +0 -42
  511. /package/dist/lib/browser/{DeploymentDialog-7FNPALCV.mjs.map → blueprints/index.mjs.map} +0 -0
  512. /package/dist/lib/{node-esm/DeploymentDialog-AKAGR37W.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
@@ -2,15 +2,40 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { Atom } from '@effect-atom/atom-react';
5
6
  import { useMemo } from 'react';
6
7
 
7
- import { live } from '@dxos/live-object';
8
+ import { Capabilities } from '@dxos/app-framework';
9
+ import { useCapability } from '@dxos/app-framework/ui';
8
10
 
9
11
  import { type DeployState } from './deploy';
10
12
 
11
13
  export type ScriptToolbarState = Partial<DeployState>;
12
14
 
13
- // TODO(burdon): Replace with context provider?
14
- export const useToolbarState = (initialState: ScriptToolbarState = {}) => {
15
- return useMemo(() => live<ScriptToolbarState>(initialState), []);
15
+ export type ScriptToolbarStateStore = {
16
+ atom: Atom.Writable<ScriptToolbarState>;
17
+ get value(): ScriptToolbarState;
18
+ update: (updater: (current: ScriptToolbarState) => ScriptToolbarState) => void;
19
+ set: <K extends keyof ScriptToolbarState>(key: K, value: ScriptToolbarState[K]) => void;
20
+ };
21
+
22
+ export const useToolbarState = (initialState: ScriptToolbarState = {}): ScriptToolbarStateStore => {
23
+ const registry = useCapability(Capabilities.AtomRegistry);
24
+ const atom = useMemo(() => Atom.make<ScriptToolbarState>(initialState), []);
25
+
26
+ return useMemo(
27
+ () => ({
28
+ atom,
29
+ get value() {
30
+ return registry.get(atom);
31
+ },
32
+ update: (updater: (current: ScriptToolbarState) => ScriptToolbarState) => {
33
+ registry.set(atom, updater(registry.get(atom)));
34
+ },
35
+ set: <K extends keyof ScriptToolbarState>(key: K, v: ScriptToolbarState[K]) => {
36
+ registry.set(atom, { ...registry.get(atom), [key]: v });
37
+ },
38
+ }),
39
+ [atom, registry],
40
+ );
16
41
  };
package/src/index.ts CHANGED
@@ -2,8 +2,9 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export { ScriptCapabilities } from './capabilities';
5
+ export { ScriptCapabilities, ScriptEvents } from './types';
6
6
  export * from './components';
7
+ export * from './containers';
7
8
  export * from './meta';
8
9
  export * from './util';
9
10
 
package/src/meta.ts CHANGED
@@ -2,14 +2,18 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type PluginMeta } from '@dxos/app-framework';
5
+ import { type Plugin } from '@dxos/app-framework';
6
+ import { trim } from '@dxos/util';
6
7
 
7
- export const meta: PluginMeta = {
8
+ export const meta: Plugin.Meta = {
8
9
  id: 'dxos.org/plugin/script',
9
10
  name: 'Scripts',
10
- description:
11
- 'Scripts enable you to deploy custom functions that run on the edge. These functions can be referenced by your AI agent and called inside of cells in any Sheet. Use scripts to interact with API’s or external data inside of Composer.',
11
+ description: trim`
12
+ Write and deploy custom JavaScript functions that extend your workspace capabilities.
13
+ Create AI agent tools, spreadsheet formulas, and automation scripts that integrate seamlessly with other plugins.
14
+ `,
12
15
  icon: 'ph--code--regular',
16
+ iconHue: 'sky',
13
17
  source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-explorer',
14
18
  tags: ['labs'],
15
19
  screenshots: ['https://dxos.network/plugin-details-scripts-dark.png'],
@@ -0,0 +1,82 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Registry } from '@effect-atom/atom-react';
6
+ import { describe, expect, test } from 'vitest';
7
+
8
+ import { Obj } from '@dxos/echo';
9
+
10
+ import { createNotebook } from '../testing';
11
+
12
+ import { ComputeGraph } from './compute-graph';
13
+
14
+ describe('notebook', () => {
15
+ test('parse dependency graph', async () => {
16
+ const registry = Registry.make();
17
+ const notebook = createNotebook();
18
+ const graph = new ComputeGraph(notebook, registry);
19
+ const result = graph.parse();
20
+
21
+ const getId = (i: number) => notebook.cells[i].id;
22
+
23
+ // Check dependencies.
24
+ expect(result.dependencyGraph).toMatchObject({
25
+ [getId(0)]: [getId(1), getId(2)],
26
+ [getId(3)]: [getId(1)],
27
+ [getId(4)]: [getId(0), getId(3)],
28
+ });
29
+
30
+ // Compute values.
31
+ const values = await graph.evaluate();
32
+ expect(values).toEqual({
33
+ [getId(0)]: 300,
34
+ [getId(2)]: 200,
35
+ [getId(3)]: 200,
36
+ [getId(4)]: 500,
37
+ });
38
+ });
39
+
40
+ test('evalScript blocks access to window and document', async () => {
41
+ const registry = Registry.make();
42
+ const notebook = createNotebook();
43
+ // Replace one of the cells with code that tries to access window/document.
44
+ const sourceTarget = notebook.cells[2].source?.target;
45
+ if (sourceTarget) {
46
+ Obj.change(sourceTarget, (t) => {
47
+ t.content = 'b = typeof window';
48
+ });
49
+ }
50
+
51
+ const graph = new ComputeGraph(notebook, registry);
52
+ graph.parse();
53
+ const values = await graph.evaluate();
54
+
55
+ // Should evaluate to 'undefined' since window is blocked.
56
+ expect(values[notebook.cells[2].id]).toBe('undefined');
57
+
58
+ // Test document access.
59
+ if (sourceTarget) {
60
+ Obj.change(sourceTarget, (t) => {
61
+ t.content = 'b = typeof document';
62
+ });
63
+ }
64
+ graph.parse();
65
+ const values2 = await graph.evaluate();
66
+
67
+ // Should evaluate to 'undefined' since document is blocked.
68
+ expect(values2[notebook.cells[2].id]).toBe('undefined');
69
+
70
+ // Test that safe globals still work.
71
+ if (sourceTarget) {
72
+ Obj.change(sourceTarget, (t) => {
73
+ t.content = 'b = Math.max(100, 200)';
74
+ });
75
+ }
76
+ graph.parse();
77
+ const values3 = await graph.evaluate();
78
+
79
+ // Should evaluate correctly.
80
+ expect(values3[notebook.cells[2].id]).toBe(200);
81
+ });
82
+ });
@@ -2,46 +2,88 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Signal, signal } from '@preact/signals-core';
5
+ import { Atom, type Registry } from '@effect-atom/atom-react';
6
6
 
7
7
  import { log } from '@dxos/log';
8
8
 
9
9
  import { type Notebook } from '../types';
10
10
 
11
+ import { evalScript } from './eval';
11
12
  import { type ParsedExpression, VirtualTypeScriptParser } from './vfs-parser';
12
13
 
13
14
  /**
14
15
  * Compute graph that evaluates the notebook cells.
15
16
  */
17
+ // TODO(burdon): Reconcile with @dxos/conductor.
16
18
  export class ComputeGraph {
17
19
  private readonly _parser = new VirtualTypeScriptParser();
18
20
 
19
- private _expressions = signal<Record<string, ParsedExpression>>({});
20
- private _values = signal<Record<string, any>>({});
21
+ private _expressionsAtom = Atom.make<Record<string, ParsedExpression>>({});
22
+ private _valuesByCellIdAtom = Atom.make<Record<string, any>>({});
23
+ private _valuesByNameAtom = Atom.make<Record<string, any>>({});
21
24
 
22
- constructor(private readonly _notebook: Notebook.Notebook) {}
25
+ constructor(
26
+ private readonly _notebook: Notebook.Notebook,
27
+ private readonly _registry: Registry.Registry,
28
+ ) {}
23
29
 
24
30
  /**
25
- * Parsed expressions by cell ID.
31
+ * Atom for parsed expressions by cell ID.
26
32
  */
27
- get expressions(): Signal<Record<string, ParsedExpression>> {
28
- return this._expressions;
33
+ get expressions(): Atom.Atom<Record<string, ParsedExpression>> {
34
+ return this._expressionsAtom;
29
35
  }
30
36
 
31
37
  /**
32
- * Computed values by cell ID.
38
+ * Get current expressions by cell ID.
33
39
  */
34
- get values(): Signal<Record<string, any>> {
35
- return this._values;
40
+ getExpressions(): Record<string, ParsedExpression> {
41
+ return this._registry.get(this._expressionsAtom);
42
+ }
43
+
44
+ /**
45
+ * Atom for computed values by cell ID.
46
+ */
47
+ get values(): Atom.Atom<Record<string, any>> {
48
+ return this._valuesByCellIdAtom;
49
+ }
50
+
51
+ /**
52
+ * Get computed values by cell ID.
53
+ */
54
+ getValues(): Record<string, any> {
55
+ return this._registry.get(this._valuesByCellIdAtom);
56
+ }
57
+
58
+ /**
59
+ * Atom for computed values by name.
60
+ */
61
+ get valuesByName(): Atom.Atom<Record<string, any>> {
62
+ return this._valuesByNameAtom;
63
+ }
64
+
65
+ /**
66
+ * Get current values by name.
67
+ */
68
+ getValuesByName(): Record<string, any> {
69
+ return this._registry.get(this._valuesByNameAtom);
70
+ }
71
+
72
+ /**
73
+ * Get computed value by cell ID.
74
+ */
75
+ getValue(cellId: string): any {
76
+ return this._registry.get(this._valuesByCellIdAtom)[cellId];
36
77
  }
37
78
 
38
79
  /**
39
80
  * Compute values.
40
81
  */
41
- evaluate() {
82
+ async evaluate() {
42
83
  // Parse expressions.
43
84
  const { expressions, dependencyGraph } = this.parse();
44
- this._values.value = {};
85
+ this._registry.set(this._valuesByCellIdAtom, {});
86
+ this._registry.set(this._valuesByNameAtom, {});
45
87
 
46
88
  // Create a map of cell IDs to expressions for easy lookup.
47
89
  const cellExpressions = new Map<string, ParsedExpression>();
@@ -64,7 +106,7 @@ export class ComputeGraph {
64
106
  continue;
65
107
  }
66
108
 
67
- const cellSource = this._notebook.cells.find((cell) => cell.id === cellId)?.script.target?.content;
109
+ const cellSource = this._notebook.cells.find((cell) => cell.id === cellId)?.source?.target?.content;
68
110
  if (!cellSource) {
69
111
  log.error('no source for cell', { cellId });
70
112
  continue;
@@ -89,7 +131,7 @@ export class ComputeGraph {
89
131
  rhs = rhs.slice(0, -1).trim();
90
132
  }
91
133
 
92
- const result = this.evalScript(rhs, valuesByName);
134
+ const result = await this.eval(rhs, valuesByName);
93
135
  valuesByName[expr.name] = result;
94
136
  if (typeof result !== 'function') {
95
137
  valuesByCellId[cellId] = result;
@@ -97,35 +139,43 @@ export class ComputeGraph {
97
139
  }
98
140
  } else {
99
141
  // For expressions without assignment, just evaluate.
100
- const result = this.evalScript(cellSource, valuesByName);
142
+ const result = await this.eval(cellSource, valuesByName);
101
143
  valuesByCellId[cellId] = result;
102
144
  }
103
145
  } catch (error) {
146
+ // TODO(burdon): Set error state.
104
147
  log.error('error evaluating cell', { cellId, error });
105
148
  }
106
149
  }
107
150
 
108
- this._values.value = valuesByCellId;
151
+ this._registry.set(this._valuesByCellIdAtom, valuesByCellId);
152
+ this._registry.set(this._valuesByNameAtom, valuesByName);
109
153
  return valuesByCellId;
110
154
  }
111
155
 
156
+ private async eval(source: string, values: Record<string, any>) {
157
+ return evalScript(source, values);
158
+ }
159
+
112
160
  /**
113
161
  * Parse expressions.
114
162
  */
115
163
  parse() {
116
- const expressions = this._notebook.cells.reduce<Record<string, ParsedExpression>>((acc, cell) => {
117
- const text = cell.script.target?.content.trim();
118
- if (text) {
119
- const parsed = this._parser.parseExpression(text);
120
- acc[cell.id] = parsed;
121
- }
164
+ const expressions = this._notebook.cells
165
+ .filter((cell) => cell.type === 'script')
166
+ .reduce<Record<string, ParsedExpression>>((acc, cell) => {
167
+ const text = cell.source?.target?.content.trim();
168
+ if (text) {
169
+ const parsed = this._parser.parseExpression(text);
170
+ acc[cell.id] = parsed;
171
+ }
122
172
 
123
- return acc;
124
- }, {});
173
+ return acc;
174
+ }, {});
125
175
 
126
176
  // Build dependency graph.
127
177
  const dependencyGraph = this.buildDependencyGraph(expressions);
128
- this._expressions.value = expressions;
178
+ this._registry.set(this._expressionsAtom, expressions);
129
179
  return { expressions, dependencyGraph };
130
180
  }
131
181
 
@@ -177,12 +227,4 @@ export class ComputeGraph {
177
227
 
178
228
  return graph;
179
229
  }
180
-
181
- /**
182
- * Evaluate the script (with dependencies as arguments).
183
- */
184
- private evalScript(code: string, deps: Record<string, any> = {}) {
185
- // eslint-disable-next-line @typescript-eslint/no-implied-eval
186
- return new Function(...Object.keys(deps), 'return ' + code)(...Object.values(deps));
187
- }
188
230
  }
@@ -0,0 +1,105 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { trim } from '@dxos/util';
6
+
7
+ /**
8
+ * Evaluate the script (with dependencies as arguments).
9
+ */
10
+ export const evalScript = async (code: string, deps: Record<string, any> = {}) => {
11
+ // Create a sandboxed environment that blocks access to window and document.
12
+ const sandbox = {
13
+ ...deps,
14
+
15
+ // Block access to global objects.
16
+ console: undefined,
17
+ document: undefined,
18
+ global: undefined,
19
+ globalThis: undefined,
20
+ self: undefined,
21
+ window: undefined,
22
+
23
+ // Allow some safe globals.
24
+ Array,
25
+ Boolean,
26
+ Date,
27
+ Error,
28
+ JSON,
29
+ Map,
30
+ Math,
31
+ Number,
32
+ Object,
33
+ Promise,
34
+ RegExp,
35
+ Set,
36
+ String,
37
+
38
+ // Functions.
39
+ isFinite,
40
+ isNaN,
41
+ parseFloat,
42
+ parseInt,
43
+
44
+ // Note: undefined and null are not included as they are keywords, not variables.
45
+ };
46
+
47
+ // Create function with all sandbox keys as parameters.
48
+ const sandboxKeys = Object.keys(sandbox);
49
+ const sandboxValues = Object.values(sandbox);
50
+
51
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval
52
+ const fn = new Function(
53
+ ...sandboxKeys,
54
+ trim`
55
+ 'use strict';
56
+ return ${code};
57
+ `,
58
+ );
59
+
60
+ return fn(...sandboxValues);
61
+ };
62
+
63
+ /**
64
+ * Globals.
65
+ */
66
+ export const builtIns = new Set([
67
+ // Types.
68
+ 'Array',
69
+ 'Date',
70
+ 'Error',
71
+ 'JSON',
72
+ 'Map',
73
+ 'Math',
74
+ 'Number',
75
+ 'Object',
76
+ 'Promise',
77
+ 'RegExp',
78
+ 'Set',
79
+ 'String',
80
+
81
+ // Functions.
82
+ 'isFinite',
83
+ 'isNaN',
84
+ 'parseFloat',
85
+ 'parseInt',
86
+ ]);
87
+
88
+ /**
89
+ * Default system definitions.
90
+ */
91
+ export const systemDefinitions = trim`
92
+ interface Array<T> { length: number; [n: number]: T; }
93
+ interface Boolean {}
94
+ interface Function {}
95
+ interface IArguments {}
96
+ interface Number {}
97
+ interface Object {}
98
+ interface RegExp {}
99
+ interface String { length: number; }
100
+
101
+ interface CallableFunction extends Function {}
102
+ interface NewableFunction extends Function {}
103
+
104
+ declare var console: { log(...args: any[]): void };
105
+ `;
@@ -2,4 +2,4 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './notebook';
5
+ export * from './compute-graph';