@dxos/plugin-script 0.8.4-main.c1de068 → 0.8.4-main.c351d160a8

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 (511) hide show
  1. package/README.md +15 -13
  2. package/dist/lib/browser/DeploymentDialog-SSJP2BBZ.mjs +138 -0
  3. package/dist/lib/browser/DeploymentDialog-SSJP2BBZ.mjs.map +7 -0
  4. package/dist/lib/browser/NotebookContainer-Q6Z2CPH6.mjs +848 -0
  5. package/dist/lib/browser/NotebookContainer-Q6Z2CPH6.mjs.map +7 -0
  6. package/dist/lib/browser/ScriptContainer-IKITE6OA.mjs +93 -0
  7. package/dist/lib/browser/ScriptContainer-IKITE6OA.mjs.map +7 -0
  8. package/dist/lib/browser/ScriptObjectSettings-X4WV5TBD.mjs +294 -0
  9. package/dist/lib/browser/ScriptObjectSettings-X4WV5TBD.mjs.map +7 -0
  10. package/dist/lib/browser/ScriptPluginSettings-5WUKIWCC.mjs +55 -0
  11. package/dist/lib/browser/ScriptPluginSettings-5WUKIWCC.mjs.map +7 -0
  12. package/dist/lib/browser/ScriptProperties-5YERQAL2.mjs +28 -0
  13. package/dist/lib/browser/ScriptProperties-5YERQAL2.mjs.map +7 -0
  14. package/dist/lib/browser/TestContainer-ZI2PQRXB.mjs +39 -0
  15. package/dist/lib/browser/TestContainer-ZI2PQRXB.mjs.map +7 -0
  16. package/dist/lib/browser/app-graph-builder-QPXX4YK5.mjs +63 -0
  17. package/dist/lib/browser/app-graph-builder-QPXX4YK5.mjs.map +7 -0
  18. package/dist/lib/browser/blueprint-definition-2UX353LT.mjs +17 -0
  19. package/dist/lib/browser/blueprint-definition-2UX353LT.mjs.map +7 -0
  20. package/dist/lib/browser/blueprints/index.mjs +8 -0
  21. package/dist/lib/browser/{chunk-QYAREHGH.mjs → chunk-37XPSUAH.mjs} +9 -6
  22. package/dist/lib/browser/chunk-37XPSUAH.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-7JL6WNT6.mjs +397 -0
  24. package/dist/lib/browser/chunk-7JL6WNT6.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-7SXHORK4.mjs +105 -0
  26. package/dist/lib/browser/chunk-7SXHORK4.mjs.map +7 -0
  27. package/dist/lib/browser/{compiler-CXCUA4UQ.mjs → chunk-ATTZUDT7.mjs} +17 -32
  28. package/dist/lib/browser/chunk-ATTZUDT7.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-G3XIOLLI.mjs +174 -0
  30. package/dist/lib/browser/chunk-G3XIOLLI.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-IHEZBW44.mjs +789 -0
  32. package/dist/lib/browser/chunk-IHEZBW44.mjs.map +7 -0
  33. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  34. package/dist/lib/browser/chunk-KIYJ6XPN.mjs +20 -0
  35. package/dist/lib/browser/chunk-KIYJ6XPN.mjs.map +7 -0
  36. package/dist/lib/browser/chunk-MYSQ4VH5.mjs +29 -0
  37. package/dist/lib/browser/chunk-MYSQ4VH5.mjs.map +7 -0
  38. package/dist/lib/browser/chunk-OWMMXCIP.mjs +116 -0
  39. package/dist/lib/browser/chunk-OWMMXCIP.mjs.map +7 -0
  40. package/dist/lib/browser/chunk-X44CJ7F5.mjs +11 -0
  41. package/dist/lib/browser/chunk-X44CJ7F5.mjs.map +7 -0
  42. package/dist/lib/browser/compiler-ZVLONXEG.mjs +99 -0
  43. package/dist/lib/browser/compiler-ZVLONXEG.mjs.map +7 -0
  44. package/dist/lib/browser/index.mjs +150 -108
  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-YYHZGLYR.mjs +79 -0
  48. package/dist/lib/browser/operation-resolver-YYHZGLYR.mjs.map +7 -0
  49. package/dist/lib/browser/react-surface-SZ7BHELP.mjs +142 -0
  50. package/dist/lib/browser/react-surface-SZ7BHELP.mjs.map +7 -0
  51. package/dist/lib/browser/settings-XGV2T3PC.mjs +36 -0
  52. package/dist/lib/browser/settings-XGV2T3PC.mjs.map +7 -0
  53. package/dist/lib/browser/templates/index.mjs +2 -1
  54. package/dist/lib/browser/types/index.mjs +14 -6
  55. package/dist/lib/node-esm/DeploymentDialog-V3HYTNFB.mjs +139 -0
  56. package/dist/lib/node-esm/DeploymentDialog-V3HYTNFB.mjs.map +7 -0
  57. package/dist/lib/node-esm/NotebookContainer-MDHOETIH.mjs +849 -0
  58. package/dist/lib/node-esm/NotebookContainer-MDHOETIH.mjs.map +7 -0
  59. package/dist/lib/node-esm/ScriptContainer-4E4EK6ZF.mjs +94 -0
  60. package/dist/lib/node-esm/ScriptContainer-4E4EK6ZF.mjs.map +7 -0
  61. package/dist/lib/node-esm/ScriptObjectSettings-RPY2ZLDJ.mjs +295 -0
  62. package/dist/lib/node-esm/ScriptObjectSettings-RPY2ZLDJ.mjs.map +7 -0
  63. package/dist/lib/node-esm/ScriptPluginSettings-H4ESISSG.mjs +56 -0
  64. package/dist/lib/node-esm/ScriptPluginSettings-H4ESISSG.mjs.map +7 -0
  65. package/dist/lib/node-esm/ScriptProperties-NNDYQTOW.mjs +29 -0
  66. package/dist/lib/node-esm/ScriptProperties-NNDYQTOW.mjs.map +7 -0
  67. package/dist/lib/node-esm/TestContainer-G2TVP2KS.mjs +40 -0
  68. package/dist/lib/node-esm/TestContainer-G2TVP2KS.mjs.map +7 -0
  69. package/dist/lib/node-esm/app-graph-builder-GNGOYXIU.mjs +64 -0
  70. package/dist/lib/node-esm/app-graph-builder-GNGOYXIU.mjs.map +7 -0
  71. package/dist/lib/node-esm/blueprint-definition-4UDBPYRQ.mjs +18 -0
  72. package/dist/lib/node-esm/blueprint-definition-4UDBPYRQ.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-3EV4C6GW.mjs +107 -0
  76. package/dist/lib/node-esm/chunk-3EV4C6GW.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-4YAEFFW2.mjs +12 -0
  78. package/dist/lib/node-esm/chunk-4YAEFFW2.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs +176 -0
  80. package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-BOPXK25O.mjs +790 -0
  82. package/dist/lib/node-esm/chunk-BOPXK25O.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-DMELV4YV.mjs +22 -0
  84. package/dist/lib/node-esm/chunk-DMELV4YV.mjs.map +7 -0
  85. package/dist/lib/node-esm/chunk-DQMM7ZL5.mjs +31 -0
  86. package/dist/lib/node-esm/chunk-DQMM7ZL5.mjs.map +7 -0
  87. package/dist/lib/node-esm/chunk-EV57E4Q4.mjs +117 -0
  88. package/dist/lib/node-esm/chunk-EV57E4Q4.mjs.map +7 -0
  89. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  90. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  91. package/dist/lib/node-esm/{compiler-EPFKQXPE.mjs → chunk-JGN7TDJH.mjs} +17 -31
  92. package/dist/lib/node-esm/chunk-JGN7TDJH.mjs.map +7 -0
  93. package/dist/lib/node-esm/chunk-KL6LGVVM.mjs +398 -0
  94. package/dist/lib/node-esm/chunk-KL6LGVVM.mjs.map +7 -0
  95. package/dist/lib/node-esm/{chunk-AHXJ6NQU.mjs → chunk-L3JLWXB5.mjs} +9 -6
  96. package/dist/lib/node-esm/chunk-L3JLWXB5.mjs.map +7 -0
  97. package/dist/lib/node-esm/compiler-INUOAXU7.mjs +100 -0
  98. package/dist/lib/node-esm/compiler-INUOAXU7.mjs.map +7 -0
  99. package/dist/lib/node-esm/index.mjs +150 -108
  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-OTHAYHTN.mjs +80 -0
  103. package/dist/lib/node-esm/operation-resolver-OTHAYHTN.mjs.map +7 -0
  104. package/dist/lib/node-esm/react-surface-DLEXFWGV.mjs +143 -0
  105. package/dist/lib/node-esm/react-surface-DLEXFWGV.mjs.map +7 -0
  106. package/dist/lib/node-esm/settings-JZUMGPNG.mjs +37 -0
  107. package/dist/lib/node-esm/settings-JZUMGPNG.mjs.map +7 -0
  108. package/dist/lib/node-esm/templates/index.mjs +2 -1
  109. package/dist/lib/node-esm/types/index.mjs +14 -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/FramePanel/FramePanel.d.ts +12 -0
  149. package/dist/types/src/components/FramePanel/FramePanel.d.ts.map +1 -0
  150. package/dist/types/src/components/FramePanel/index.d.ts +2 -0
  151. package/dist/types/src/components/FramePanel/index.d.ts.map +1 -0
  152. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +15 -0
  153. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -0
  154. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +9 -0
  155. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -0
  156. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +14 -0
  157. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -0
  158. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +252 -0
  159. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -0
  160. package/dist/types/src/components/NotebookStack/index.d.ts +3 -0
  161. package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -0
  162. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  163. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  164. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  165. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  166. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  167. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  168. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +8 -8
  169. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  170. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +249 -10
  171. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  172. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  173. package/dist/types/src/components/TestPanel/index.d.ts +0 -1
  174. package/dist/types/src/components/TestPanel/index.d.ts.map +1 -1
  175. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +5 -2
  176. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  177. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +11 -4
  178. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  179. package/dist/types/src/components/index.d.ts +5 -7
  180. package/dist/types/src/components/index.d.ts.map +1 -1
  181. package/dist/types/src/constants.d.ts +2 -0
  182. package/dist/types/src/constants.d.ts.map +1 -0
  183. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts +9 -0
  184. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
  185. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts +252 -0
  186. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
  187. package/dist/types/src/containers/DeploymentDialog/index.d.ts +3 -0
  188. package/dist/types/src/containers/DeploymentDialog/index.d.ts.map +1 -0
  189. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts +7 -0
  190. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts.map +1 -0
  191. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts +7 -0
  192. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts.map +1 -0
  193. package/dist/types/src/containers/NotebookContainer/index.d.ts +3 -0
  194. package/dist/types/src/containers/NotebookContainer/index.d.ts.map +1 -0
  195. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts +10 -0
  196. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts.map +1 -0
  197. package/dist/types/src/containers/ScriptContainer/index.d.ts +3 -0
  198. package/dist/types/src/containers/ScriptContainer/index.d.ts.map +1 -0
  199. package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts +7 -0
  200. package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts.map +1 -0
  201. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts +3 -0
  202. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts.map +1 -0
  203. package/dist/types/src/containers/ScriptPluginSettings/ScriptPluginSettings.d.ts +8 -0
  204. package/dist/types/src/containers/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
  205. package/dist/types/src/containers/ScriptPluginSettings/index.d.ts +3 -0
  206. package/dist/types/src/containers/ScriptPluginSettings/index.d.ts.map +1 -0
  207. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +7 -0
  208. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
  209. package/dist/types/src/containers/ScriptProperties/index.d.ts +3 -0
  210. package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
  211. package/dist/types/src/containers/TestContainer/TestContainer.d.ts +8 -0
  212. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
  213. package/dist/types/src/containers/TestContainer/index.d.ts +3 -0
  214. package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
  215. package/dist/types/src/containers/index.d.ts +9 -0
  216. package/dist/types/src/containers/index.d.ts.map +1 -0
  217. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  218. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  219. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  220. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  221. package/dist/types/src/hooks/deploy.d.ts +20 -33
  222. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  223. package/dist/types/src/hooks/format.d.ts +5 -4
  224. package/dist/types/src/hooks/format.d.ts.map +1 -1
  225. package/dist/types/src/hooks/index.d.ts +1 -0
  226. package/dist/types/src/hooks/index.d.ts.map +1 -1
  227. package/dist/types/src/hooks/template.d.ts +7 -16
  228. package/dist/types/src/hooks/template.d.ts.map +1 -1
  229. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  230. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  231. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  232. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  233. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  234. package/dist/types/src/index.d.ts +3 -1
  235. package/dist/types/src/index.d.ts.map +1 -1
  236. package/dist/types/src/meta.d.ts +2 -3
  237. package/dist/types/src/meta.d.ts.map +1 -1
  238. package/dist/types/src/notebook/compute-graph.d.ts +58 -0
  239. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -0
  240. package/dist/types/src/notebook/compute-graph.test.d.ts +2 -0
  241. package/dist/types/src/notebook/compute-graph.test.d.ts.map +1 -0
  242. package/dist/types/src/notebook/eval.d.ts +13 -0
  243. package/dist/types/src/notebook/eval.d.ts.map +1 -0
  244. package/dist/types/src/notebook/index.d.ts +2 -0
  245. package/dist/types/src/notebook/index.d.ts.map +1 -0
  246. package/dist/types/src/notebook/vfs-parser.d.ts +74 -0
  247. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -0
  248. package/dist/types/src/notebook/vfs-parser.test.d.ts +2 -0
  249. package/dist/types/src/notebook/vfs-parser.test.d.ts.map +1 -0
  250. package/dist/types/src/templates/anthropic.d.ts +8 -0
  251. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  252. package/dist/types/src/templates/chess-bot.d.ts +16 -0
  253. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  254. package/dist/types/src/templates/commentary.d.ts +16 -0
  255. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  256. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  257. package/dist/types/src/templates/discord.d.ts.map +1 -1
  258. package/dist/types/src/templates/forex-effect.d.ts +4 -1
  259. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  260. package/dist/types/src/templates/forex.d.ts +4 -1
  261. package/dist/types/src/templates/forex.d.ts.map +1 -1
  262. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  263. package/dist/types/src/templates/index.d.ts +52 -1
  264. package/dist/types/src/templates/index.d.ts.map +1 -1
  265. package/dist/types/src/templates/ping.d.ts +3 -0
  266. package/dist/types/src/templates/ping.d.ts.map +1 -0
  267. package/dist/types/src/testing/data.d.ts +3 -0
  268. package/dist/types/src/testing/data.d.ts.map +1 -0
  269. package/dist/types/src/testing/index.d.ts +2 -0
  270. package/dist/types/src/testing/index.d.ts.map +1 -0
  271. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  272. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  273. package/dist/types/src/translations.d.ts +34 -5
  274. package/dist/types/src/translations.d.ts.map +1 -1
  275. package/dist/types/src/types/Notebook.d.ts +108 -0
  276. package/dist/types/src/types/Notebook.d.ts.map +1 -0
  277. package/dist/types/src/types/actions.d.ts +40 -0
  278. package/dist/types/src/types/actions.d.ts.map +1 -0
  279. package/dist/types/src/types/capabilities.d.ts +12 -0
  280. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  281. package/dist/types/src/types/events.d.ts +5 -0
  282. package/dist/types/src/types/events.d.ts.map +1 -0
  283. package/dist/types/src/types/index.d.ts +5 -1
  284. package/dist/types/src/types/index.d.ts.map +1 -1
  285. package/dist/types/src/types/types.d.ts +6 -0
  286. package/dist/types/src/types/types.d.ts.map +1 -0
  287. package/dist/types/src/util/deploy.d.ts +7 -7
  288. package/dist/types/src/util/deploy.d.ts.map +1 -1
  289. package/dist/types/src/util/functions.d.ts +6 -3
  290. package/dist/types/src/util/functions.d.ts.map +1 -1
  291. package/dist/types/tsconfig.tsbuildinfo +1 -1
  292. package/package.json +124 -85
  293. package/src/ScriptPlugin.tsx +57 -77
  294. package/src/blueprints/index.ts +5 -0
  295. package/src/blueprints/script-blueprint.ts +31 -0
  296. package/src/capabilities/app-graph-builder/app-graph-builder.ts +56 -0
  297. package/src/capabilities/app-graph-builder/index.ts +7 -0
  298. package/src/capabilities/{artifact-definition.ts → artifact-definition/artifact-definition.ts} +103 -105
  299. package/src/capabilities/artifact-definition/index.ts +7 -0
  300. package/src/capabilities/blueprint-definition/blueprint-definition.ts +17 -0
  301. package/src/capabilities/blueprint-definition/index.ts +7 -0
  302. package/src/capabilities/compiler/compiler.ts +103 -0
  303. package/src/capabilities/compiler/index.ts +7 -0
  304. package/src/capabilities/index.ts +6 -10
  305. package/src/capabilities/operation-resolver/index.ts +7 -0
  306. package/src/capabilities/operation-resolver/operation-resolver.ts +75 -0
  307. package/src/capabilities/react-surface/index.ts +7 -0
  308. package/src/capabilities/react-surface/react-surface.tsx +129 -0
  309. package/src/capabilities/settings/index.ts +7 -0
  310. package/src/capabilities/settings/settings.ts +33 -0
  311. package/src/compiler/compiler.ts +11 -4
  312. package/src/components/{FrameContainer/FrameContainer.tsx → FramePanel/FramePanel.tsx} +10 -8
  313. package/src/components/{FrameContainer → FramePanel}/index.ts +1 -1
  314. package/src/components/NotebookStack/NotebookCell.tsx +215 -0
  315. package/src/components/NotebookStack/NotebookMenu.tsx +47 -0
  316. package/src/components/NotebookStack/NotebookStack.stories.tsx +54 -0
  317. package/src/components/NotebookStack/NotebookStack.tsx +86 -0
  318. package/src/components/NotebookStack/index.ts +6 -0
  319. package/src/components/QueryEditor/QueryEditor.stories.tsx +96 -0
  320. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  321. package/src/components/QueryEditor/index.ts +5 -0
  322. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +56 -17
  323. package/src/components/ScriptToolbar/ScriptToolbar.tsx +38 -34
  324. package/src/components/TestPanel/TestPanel.tsx +67 -42
  325. package/src/components/TestPanel/index.ts +0 -1
  326. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +89 -34
  327. package/src/components/TypescriptEditor/TypescriptEditor.tsx +84 -81
  328. package/src/components/index.ts +5 -7
  329. package/src/constants.ts +7 -0
  330. package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +61 -0
  331. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +99 -0
  332. package/src/containers/DeploymentDialog/index.ts +7 -0
  333. package/src/containers/NotebookContainer/NotebookContainer.stories.tsx +87 -0
  334. package/src/containers/NotebookContainer/NotebookContainer.tsx +267 -0
  335. package/src/containers/NotebookContainer/index.ts +7 -0
  336. package/src/containers/ScriptContainer/ScriptContainer.tsx +84 -0
  337. package/src/containers/ScriptContainer/index.ts +7 -0
  338. package/src/containers/ScriptObjectSettings/ScriptObjectSettings.tsx +291 -0
  339. package/src/containers/ScriptObjectSettings/index.ts +7 -0
  340. package/src/containers/ScriptPluginSettings/ScriptPluginSettings.tsx +66 -0
  341. package/src/containers/ScriptPluginSettings/index.ts +7 -0
  342. package/src/containers/ScriptProperties/ScriptProperties.tsx +33 -0
  343. package/src/containers/ScriptProperties/index.ts +7 -0
  344. package/src/containers/TestContainer/TestContainer.tsx +28 -0
  345. package/src/containers/TestContainer/index.ts +7 -0
  346. package/src/containers/index.ts +13 -0
  347. package/src/e2e/ai.test.ts +92 -0
  348. package/src/e2e/deploy.test.ts +64 -0
  349. package/src/hooks/deploy.ts +52 -45
  350. package/src/hooks/format.ts +10 -5
  351. package/src/hooks/index.ts +1 -0
  352. package/src/hooks/template.ts +22 -25
  353. package/src/hooks/useCompiler.ts +24 -0
  354. package/src/hooks/useCreateAndDeployScriptTemplates.ts +15 -16
  355. package/src/hooks/useToolbarState.ts +29 -4
  356. package/src/index.ts +3 -1
  357. package/src/meta.ts +10 -8
  358. package/src/notebook/compute-graph.test.ts +82 -0
  359. package/src/notebook/compute-graph.ts +230 -0
  360. package/src/notebook/eval.ts +105 -0
  361. package/src/notebook/index.ts +5 -0
  362. package/src/notebook/vfs-parser.test.ts +149 -0
  363. package/src/notebook/vfs-parser.ts +451 -0
  364. package/src/templates/anthropic.ts +42 -0
  365. package/src/templates/chat.ts +1 -1
  366. package/src/templates/chess-bot.ts +58 -0
  367. package/src/templates/commentary.ts +231 -0
  368. package/src/templates/data-generator.ts +10 -4
  369. package/src/templates/discord.ts +14 -6
  370. package/src/templates/forex-effect.ts +24 -25
  371. package/src/templates/forex.ts +9 -6
  372. package/src/templates/gmail.ts +37 -67
  373. package/src/templates/index.ts +36 -23
  374. package/src/templates/ping.ts +17 -0
  375. package/src/testing/data.ts +72 -0
  376. package/src/testing/index.ts +5 -0
  377. package/src/testing/simulator.test.ts +40 -0
  378. package/src/translations.ts +37 -7
  379. package/src/types/Notebook.ts +45 -0
  380. package/src/types/actions.ts +45 -0
  381. package/src/types/capabilities.ts +17 -0
  382. package/src/types/events.ts +11 -0
  383. package/src/types/index.ts +5 -1
  384. package/src/types/types.ts +15 -0
  385. package/src/util/deploy.ts +38 -61
  386. package/src/util/functions.ts +58 -25
  387. package/src/vite-env.d.ts +2 -0
  388. package/dist/lib/browser/DeploymentDialog-M4QIHTDR.mjs +0 -12
  389. package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs +0 -262
  390. package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs.map +0 -7
  391. package/dist/lib/browser/app-graph-builder-HLQ7K3BT.mjs +0 -64
  392. package/dist/lib/browser/app-graph-builder-HLQ7K3BT.mjs.map +0 -7
  393. package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs +0 -249
  394. package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs.map +0 -7
  395. package/dist/lib/browser/chunk-3U6DTUH3.mjs +0 -283
  396. package/dist/lib/browser/chunk-3U6DTUH3.mjs.map +0 -7
  397. package/dist/lib/browser/chunk-5TVBECWH.mjs +0 -15
  398. package/dist/lib/browser/chunk-5TVBECWH.mjs.map +0 -7
  399. package/dist/lib/browser/chunk-FIM2MVNJ.mjs +0 -555
  400. package/dist/lib/browser/chunk-FIM2MVNJ.mjs.map +0 -7
  401. package/dist/lib/browser/chunk-FMDXKOP7.mjs +0 -233
  402. package/dist/lib/browser/chunk-FMDXKOP7.mjs.map +0 -7
  403. package/dist/lib/browser/chunk-IS4OG2UW.mjs +0 -39
  404. package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +0 -7
  405. package/dist/lib/browser/chunk-P4HQKUCP.mjs +0 -153
  406. package/dist/lib/browser/chunk-P4HQKUCP.mjs.map +0 -7
  407. package/dist/lib/browser/chunk-QYAREHGH.mjs.map +0 -7
  408. package/dist/lib/browser/chunk-R4R7VOFY.mjs +0 -88
  409. package/dist/lib/browser/chunk-R4R7VOFY.mjs.map +0 -7
  410. package/dist/lib/browser/compiler-CXCUA4UQ.mjs.map +0 -7
  411. package/dist/lib/browser/intent-resolver-7B77IG3N.mjs +0 -91
  412. package/dist/lib/browser/intent-resolver-7B77IG3N.mjs.map +0 -7
  413. package/dist/lib/browser/react-surface-FYYXZA7C.mjs +0 -104
  414. package/dist/lib/browser/react-surface-FYYXZA7C.mjs.map +0 -7
  415. package/dist/lib/browser/settings-KCTBK5TY.mjs +0 -24
  416. package/dist/lib/browser/settings-KCTBK5TY.mjs.map +0 -7
  417. package/dist/lib/node-esm/DeploymentDialog-3KPRWFE7.mjs +0 -13
  418. package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs +0 -263
  419. package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs.map +0 -7
  420. package/dist/lib/node-esm/app-graph-builder-7EYIHWH4.mjs +0 -65
  421. package/dist/lib/node-esm/app-graph-builder-7EYIHWH4.mjs.map +0 -7
  422. package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs +0 -250
  423. package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs.map +0 -7
  424. package/dist/lib/node-esm/chunk-35M3CHYE.mjs +0 -16
  425. package/dist/lib/node-esm/chunk-35M3CHYE.mjs.map +0 -7
  426. package/dist/lib/node-esm/chunk-7NMI4CEU.mjs +0 -556
  427. package/dist/lib/node-esm/chunk-7NMI4CEU.mjs.map +0 -7
  428. package/dist/lib/node-esm/chunk-AHXJ6NQU.mjs.map +0 -7
  429. package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs +0 -90
  430. package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs.map +0 -7
  431. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs +0 -40
  432. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +0 -7
  433. package/dist/lib/node-esm/chunk-QKK3NDHW.mjs +0 -154
  434. package/dist/lib/node-esm/chunk-QKK3NDHW.mjs.map +0 -7
  435. package/dist/lib/node-esm/chunk-RT43MACC.mjs +0 -284
  436. package/dist/lib/node-esm/chunk-RT43MACC.mjs.map +0 -7
  437. package/dist/lib/node-esm/chunk-XJPK3IYI.mjs +0 -234
  438. package/dist/lib/node-esm/chunk-XJPK3IYI.mjs.map +0 -7
  439. package/dist/lib/node-esm/compiler-EPFKQXPE.mjs.map +0 -7
  440. package/dist/lib/node-esm/intent-resolver-FRZGS4TB.mjs +0 -92
  441. package/dist/lib/node-esm/intent-resolver-FRZGS4TB.mjs.map +0 -7
  442. package/dist/lib/node-esm/react-surface-V32NWHKN.mjs +0 -105
  443. package/dist/lib/node-esm/react-surface-V32NWHKN.mjs.map +0 -7
  444. package/dist/lib/node-esm/settings-DXZ334A3.mjs +0 -25
  445. package/dist/lib/node-esm/settings-DXZ334A3.mjs.map +0 -7
  446. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  447. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  448. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  449. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  450. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  451. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  452. package/dist/types/src/capabilities/compiler.d.ts +0 -4
  453. package/dist/types/src/capabilities/compiler.d.ts.map +0 -1
  454. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  455. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  456. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  457. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  458. package/dist/types/src/capabilities/settings.d.ts +0 -4
  459. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  460. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +0 -11
  461. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
  462. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +0 -18
  463. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +0 -1
  464. package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
  465. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
  466. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +0 -12
  467. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +0 -1
  468. package/dist/types/src/components/FrameContainer/frame.d.ts +0 -2
  469. package/dist/types/src/components/FrameContainer/frame.d.ts.map +0 -1
  470. package/dist/types/src/components/FrameContainer/index.d.ts +0 -2
  471. package/dist/types/src/components/FrameContainer/index.d.ts.map +0 -1
  472. package/dist/types/src/components/ScriptContainer.d.ts +0 -12
  473. package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
  474. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +0 -8
  475. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
  476. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +0 -6
  477. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
  478. package/dist/types/src/components/Settings/index.d.ts +0 -3
  479. package/dist/types/src/components/Settings/index.d.ts.map +0 -1
  480. package/dist/types/src/components/TestPanel/TestContainer.d.ts +0 -8
  481. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
  482. package/dist/types/src/events.d.ts +0 -4
  483. package/dist/types/src/events.d.ts.map +0 -1
  484. package/dist/types/src/templates/chess.d.ts +0 -3
  485. package/dist/types/src/templates/chess.d.ts.map +0 -1
  486. package/dist/types/src/templates/echo.d.ts +0 -6
  487. package/dist/types/src/templates/echo.d.ts.map +0 -1
  488. package/dist/types/src/types/schema.d.ts +0 -38
  489. package/dist/types/src/types/schema.d.ts.map +0 -1
  490. package/src/capabilities/app-graph-builder.ts +0 -64
  491. package/src/capabilities/capabilities.ts +0 -12
  492. package/src/capabilities/compiler.ts +0 -33
  493. package/src/capabilities/intent-resolver.ts +0 -80
  494. package/src/capabilities/react-surface.tsx +0 -89
  495. package/src/capabilities/settings.ts +0 -21
  496. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +0 -39
  497. package/src/components/DeploymentDialog/DeploymentDialog.tsx +0 -112
  498. package/src/components/DeploymentDialog/index.ts +0 -9
  499. package/src/components/FrameContainer/frame.html +0 -25
  500. package/src/components/FrameContainer/frame.tsx +0 -51
  501. package/src/components/ScriptContainer.tsx +0 -68
  502. package/src/components/Settings/ScriptObjectSettings.tsx +0 -206
  503. package/src/components/Settings/ScriptPluginSettings.tsx +0 -71
  504. package/src/components/Settings/index.ts +0 -6
  505. package/src/components/TestPanel/TestContainer.tsx +0 -26
  506. package/src/events.ts +0 -11
  507. package/src/templates/chess.ts +0 -47
  508. package/src/templates/echo.ts +0 -8
  509. package/src/types/schema.ts +0 -37
  510. /package/dist/lib/browser/{DeploymentDialog-M4QIHTDR.mjs.map → blueprints/index.mjs.map} +0 -0
  511. /package/dist/lib/{node-esm/DeploymentDialog-3KPRWFE7.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
@@ -2,19 +2,18 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { pipe } from 'effect/Function';
6
5
  import { useCallback, useState } from 'react';
7
6
 
8
- import { chain, createIntent, useIntentDispatcher } from '@dxos/app-framework';
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
9
8
  import { Obj } from '@dxos/echo';
10
- import { ScriptType } from '@dxos/functions';
9
+ import { Script } from '@dxos/functions';
11
10
  import { invariant } from '@dxos/invariant';
12
- import { SpaceAction } from '@dxos/plugin-space/types';
11
+ import { SpaceOperation } from '@dxos/plugin-space/types';
13
12
  import { useClient } from '@dxos/react-client';
14
13
  import { type Space } from '@dxos/react-client/echo';
15
14
 
16
15
  import { type Template } from '../templates';
17
- import { ScriptAction } from '../types';
16
+ import { ScriptOperation } from '../types';
18
17
  import { deployScript } from '../util';
19
18
 
20
19
  type DeploymentStatus = 'idle' | 'pending' | 'success' | 'error';
@@ -27,7 +26,7 @@ type DeploymentStatus = 'idle' | 'pending' | 'success' | 'error';
27
26
  * All creation / deployment operations run concurrently for improved performance.
28
27
  */
29
28
  export const useCreateAndDeployScriptTemplates = (space: Space | undefined, scriptTemplates: Template[]) => {
30
- const { dispatchPromise: dispatch } = useIntentDispatcher();
29
+ const { invokePromise } = useOperationInvoker();
31
30
  const client = useClient();
32
31
  const [status, setStatus] = useState<DeploymentStatus>('idle');
33
32
  const [error, setError] = useState<Error | undefined>(undefined);
@@ -39,21 +38,21 @@ export const useCreateAndDeployScriptTemplates = (space: Space | undefined, scri
39
38
 
40
39
  const deploymentResults = await Promise.all(
41
40
  scriptTemplates.map(async (template) => {
42
- const result = await dispatch(
43
- pipe(
44
- createIntent(ScriptAction.Create, { space, initialTemplateId: template.id }),
45
- chain(SpaceAction.AddObject, { target: space }),
46
- ),
47
- );
48
- invariant(Obj.instanceOf(ScriptType, result.data?.object));
49
-
50
- return deployScript({ space, client, script: result.data.object });
41
+ const createResult = await invokePromise(ScriptOperation.CreateScript, {
42
+ db: space.db,
43
+ initialTemplateId: template.id as any,
44
+ });
45
+ invariant(Obj.instanceOf(Script.Script, createResult.data?.object));
46
+ await invokePromise(SpaceOperation.AddObject, { target: space.db, object: createResult.data.object });
47
+
48
+ return deployScript({ space, client, script: createResult.data.object });
51
49
  }),
52
50
  );
53
51
 
54
52
  const hasErrors = deploymentResults.some((result) => !result.success);
55
53
  setStatus(hasErrors ? 'error' : 'success');
56
- }, [space, dispatch, client, scriptTemplates]);
54
+ }, [space, invokePromise, client, scriptTemplates]);
57
55
 
56
+ // TODO(burdon): Return onCreateAndDeployScripts.
58
57
  return { handleCreateAndDeployScripts, status, error };
59
58
  };
@@ -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,10 @@
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';
9
+ export * from './util';
8
10
 
9
11
  export * from './ScriptPlugin';
package/src/meta.ts CHANGED
@@ -2,16 +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 SCRIPT_PLUGIN = 'dxos.org/plugin/script';
8
-
9
- export const meta: PluginMeta = {
10
- id: SCRIPT_PLUGIN,
8
+ export const meta: Plugin.Meta = {
9
+ id: 'org.dxos.plugin.script',
11
10
  name: 'Scripts',
12
- description:
13
- 'Scripts in Composer allow 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
+ `,
14
15
  icon: 'ph--code--regular',
16
+ iconHue: 'sky',
15
17
  source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-explorer',
16
18
  tags: ['labs'],
17
19
  screenshots: ['https://dxos.network/plugin-details-scripts-dark.png'],
@@ -20,5 +22,5 @@ export const meta: PluginMeta = {
20
22
  // TODO(ZaymonFC): Configure by scopes?
21
23
  export const defaultScriptsForIntegration: Record<string, string[]> = {
22
24
  // TODO(wittjosiah): Also include content extraction scripts in the default set.
23
- 'gmail.com': ['dxos.org/script/gmail'],
25
+ 'gmail.com': ['org.dxos.script.gmail'],
24
26
  };
@@ -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
+ });
@@ -0,0 +1,230 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Atom, type Registry } from '@effect-atom/atom-react';
6
+
7
+ import { log } from '@dxos/log';
8
+
9
+ import { type Notebook } from '../types';
10
+
11
+ import { evalScript } from './eval';
12
+ import { type ParsedExpression, VirtualTypeScriptParser } from './vfs-parser';
13
+
14
+ /**
15
+ * Compute graph that evaluates the notebook cells.
16
+ */
17
+ // TODO(burdon): Reconcile with @dxos/conductor.
18
+ export class ComputeGraph {
19
+ private readonly _parser = new VirtualTypeScriptParser();
20
+
21
+ private _expressionsAtom = Atom.make<Record<string, ParsedExpression>>({});
22
+ private _valuesByCellIdAtom = Atom.make<Record<string, any>>({});
23
+ private _valuesByNameAtom = Atom.make<Record<string, any>>({});
24
+
25
+ constructor(
26
+ private readonly _notebook: Notebook.Notebook,
27
+ private readonly _registry: Registry.Registry,
28
+ ) {}
29
+
30
+ /**
31
+ * Atom for parsed expressions by cell ID.
32
+ */
33
+ get expressions(): Atom.Atom<Record<string, ParsedExpression>> {
34
+ return this._expressionsAtom;
35
+ }
36
+
37
+ /**
38
+ * Get current expressions by cell ID.
39
+ */
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];
77
+ }
78
+
79
+ /**
80
+ * Compute values.
81
+ */
82
+ async evaluate() {
83
+ // Parse expressions.
84
+ const { expressions, dependencyGraph } = this.parse();
85
+ this._registry.set(this._valuesByCellIdAtom, {});
86
+ this._registry.set(this._valuesByNameAtom, {});
87
+
88
+ // Create a map of cell IDs to expressions for easy lookup.
89
+ const cellExpressions = new Map<string, ParsedExpression>();
90
+ Object.entries(expressions).forEach(([id, expr]) => {
91
+ cellExpressions.set(id, expr);
92
+ });
93
+
94
+ // Topological sort to determine evaluation order.
95
+ const evaluationOrder = this.topologicalSort(Object.keys(expressions), dependencyGraph);
96
+
97
+ // Values by reference name.
98
+ const valuesByName: Record<string, any> = {};
99
+ const valuesByCellId: Record<string, any> = {};
100
+
101
+ // Evaluate cells in dependency order.
102
+ for (const cellId of evaluationOrder) {
103
+ const expr = cellExpressions.get(cellId);
104
+ if (!expr) {
105
+ log.error('no expression for cell', { cellId });
106
+ continue;
107
+ }
108
+
109
+ const cellSource = this._notebook.cells.find((cell) => cell.id === cellId)?.source?.target?.content;
110
+ if (!cellSource) {
111
+ log.error('no source for cell', { cellId });
112
+ continue;
113
+ }
114
+
115
+ try {
116
+ // For assignments or declarations, evaluate and store the value.
117
+ if (expr.name && expr.value !== undefined) {
118
+ // If the parser extracted a literal value, use it directly.
119
+ valuesByName[expr.name] = expr.value;
120
+ valuesByCellId[cellId] = expr.value;
121
+ } else if (expr.name) {
122
+ // For non-literal assignments, we need to evaluate the expression.
123
+ // The parser identifies it's an assignment, so we can extract the RHS.
124
+ const equalIndex = cellSource.indexOf('=');
125
+ if (equalIndex !== -1) {
126
+ // Find the actual assignment operator (not in strings or other contexts).
127
+ let rhs = cellSource.substring(equalIndex + 1).trim();
128
+
129
+ // Handle semicolon at the end.
130
+ if (rhs.endsWith(';')) {
131
+ rhs = rhs.slice(0, -1).trim();
132
+ }
133
+
134
+ const result = await this.eval(rhs, valuesByName);
135
+ valuesByName[expr.name] = result;
136
+ if (typeof result !== 'function') {
137
+ valuesByCellId[cellId] = result;
138
+ }
139
+ }
140
+ } else {
141
+ // For expressions without assignment, just evaluate.
142
+ const result = await this.eval(cellSource, valuesByName);
143
+ valuesByCellId[cellId] = result;
144
+ }
145
+ } catch (error) {
146
+ // TODO(burdon): Set error state.
147
+ log.error('error evaluating cell', { cellId, error });
148
+ }
149
+ }
150
+
151
+ this._registry.set(this._valuesByCellIdAtom, valuesByCellId);
152
+ this._registry.set(this._valuesByNameAtom, valuesByName);
153
+ return valuesByCellId;
154
+ }
155
+
156
+ private async eval(source: string, values: Record<string, any>) {
157
+ return evalScript(source, values);
158
+ }
159
+
160
+ /**
161
+ * Parse expressions.
162
+ */
163
+ parse() {
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
+ }
172
+
173
+ return acc;
174
+ }, {});
175
+
176
+ // Build dependency graph.
177
+ const dependencyGraph = this.buildDependencyGraph(expressions);
178
+ this._registry.set(this._expressionsAtom, expressions);
179
+ return { expressions, dependencyGraph };
180
+ }
181
+
182
+ private topologicalSort(nodes: string[], dependencies: Record<string, string[]>): string[] {
183
+ const visited = new Set<string>();
184
+ const result: string[] = [];
185
+
186
+ const visit = (node: string) => {
187
+ if (visited.has(node)) {
188
+ return;
189
+ }
190
+
191
+ visited.add(node);
192
+
193
+ // Visit dependencies first.
194
+ const deps = dependencies[node] || [];
195
+ deps.forEach((dep) => visit(dep));
196
+ result.push(node);
197
+ };
198
+
199
+ // Visit all nodes.
200
+ nodes.forEach((node) => visit(node));
201
+ return result;
202
+ }
203
+
204
+ private buildDependencyGraph(expressions: Record<string, ParsedExpression>): Record<string, string[]> {
205
+ // Create a map of variable names to their cell IDs.
206
+ const nameToCellId = new Map<string, string>();
207
+ Object.entries(expressions).forEach(([id, expr]) => {
208
+ if (expr.name) {
209
+ nameToCellId.set(expr.name, id);
210
+ }
211
+ });
212
+
213
+ // Build the dependency graph using cell IDs.
214
+ const graph: Record<string, string[]> = {};
215
+ Object.entries(expressions).forEach(([id, expr]) => {
216
+ if (expr.references && expr.references.length > 0) {
217
+ // Map variable references to cell IDs.
218
+ const dependencyCellIds = expr.references
219
+ .map((ref) => nameToCellId.get(ref))
220
+ .filter((cellId): cellId is string => cellId !== undefined && cellId !== id);
221
+
222
+ if (dependencyCellIds.length > 0) {
223
+ graph[id] = dependencyCellIds;
224
+ }
225
+ }
226
+ });
227
+
228
+ return graph;
229
+ }
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
+ `;
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './compute-graph';