@dxos/plugin-script 0.8.4-main.406dc2a → 0.8.4-main.43cb759274

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 (572) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +515 -0
  3. package/README.md +15 -13
  4. package/dist/lib/neutral/DeploymentDialog-M3AFYQHC.mjs +114 -0
  5. package/dist/lib/neutral/DeploymentDialog-M3AFYQHC.mjs.map +7 -0
  6. package/dist/lib/{browser/NotebookContainer-LVGRPFY3.mjs → neutral/NotebookArticle-NV4AHOOS.mjs} +313 -233
  7. package/dist/lib/neutral/NotebookArticle-NV4AHOOS.mjs.map +7 -0
  8. package/dist/lib/neutral/ScriptArticle-UBT27SB6.mjs +79 -0
  9. package/dist/lib/neutral/ScriptArticle-UBT27SB6.mjs.map +7 -0
  10. package/dist/lib/neutral/ScriptPlugin.mjs +51 -0
  11. package/dist/lib/neutral/ScriptPlugin.mjs.map +7 -0
  12. package/dist/lib/neutral/ScriptPlugin.node.mjs +27 -0
  13. package/dist/lib/neutral/ScriptPlugin.node.mjs.map +7 -0
  14. package/dist/lib/neutral/ScriptPlugin.workerd.mjs +21 -0
  15. package/dist/lib/neutral/ScriptPlugin.workerd.mjs.map +7 -0
  16. package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs +31 -0
  17. package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs.map +7 -0
  18. package/dist/lib/neutral/ScriptProperties-RLXNAN3N.mjs +297 -0
  19. package/dist/lib/neutral/ScriptProperties-RLXNAN3N.mjs.map +7 -0
  20. package/dist/lib/neutral/TestContainer-AFVTBYSJ.mjs +44 -0
  21. package/dist/lib/neutral/TestContainer-AFVTBYSJ.mjs.map +7 -0
  22. package/dist/lib/neutral/app-graph-builder-7AWFCEQF.mjs +52 -0
  23. package/dist/lib/neutral/app-graph-builder-7AWFCEQF.mjs.map +7 -0
  24. package/dist/lib/neutral/blueprint-definition-T33SBPP2.mjs +15 -0
  25. package/dist/lib/neutral/blueprint-definition-T33SBPP2.mjs.map +7 -0
  26. package/dist/lib/neutral/blueprints/index.mjs +10 -0
  27. package/dist/lib/neutral/capabilities/index.mjs +21 -0
  28. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  29. package/dist/lib/neutral/capabilities/node.mjs +17 -0
  30. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-2REUEDUA.mjs +56 -0
  32. package/dist/lib/neutral/chunk-2REUEDUA.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-BDHDBPVM.mjs +52 -0
  34. package/dist/lib/neutral/chunk-BDHDBPVM.mjs.map +7 -0
  35. package/dist/lib/neutral/chunk-C4O7EV6M.mjs +123 -0
  36. package/dist/lib/neutral/chunk-C4O7EV6M.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-H2BRWQMY.mjs +96 -0
  38. package/dist/lib/neutral/chunk-H2BRWQMY.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  40. package/dist/lib/neutral/chunk-LHEJXJEL.mjs +8 -0
  41. package/dist/lib/neutral/chunk-LHEJXJEL.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-NQOIENTU.mjs +8 -0
  43. package/dist/lib/neutral/chunk-NQOIENTU.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-TRKXIP2Q.mjs +345 -0
  45. package/dist/lib/neutral/chunk-TRKXIP2Q.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-UA3BWOCZ.mjs +38 -0
  47. package/dist/lib/neutral/chunk-UA3BWOCZ.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-VXDJH6OL.mjs +150 -0
  49. package/dist/lib/neutral/chunk-VXDJH6OL.mjs.map +7 -0
  50. package/dist/lib/neutral/compiler-ODK4UA2N.mjs +101 -0
  51. package/dist/lib/neutral/compiler-ODK4UA2N.mjs.map +7 -0
  52. package/dist/lib/neutral/components/index.mjs +664 -0
  53. package/dist/lib/neutral/components/index.mjs.map +7 -0
  54. package/dist/lib/neutral/containers/index.mjs +17 -0
  55. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  56. package/dist/lib/neutral/create-WQJXMOUE.mjs +46 -0
  57. package/dist/lib/neutral/create-WQJXMOUE.mjs.map +7 -0
  58. package/dist/lib/neutral/create-object-FZM5ASWM.mjs +45 -0
  59. package/dist/lib/neutral/create-object-FZM5ASWM.mjs.map +7 -0
  60. package/dist/lib/neutral/create-script-66DO3UJO.mjs +45 -0
  61. package/dist/lib/neutral/create-script-66DO3UJO.mjs.map +7 -0
  62. package/dist/lib/neutral/delete-HCQIQFVP.mjs +21 -0
  63. package/dist/lib/neutral/delete-HCQIQFVP.mjs.map +7 -0
  64. package/dist/lib/neutral/deploy-7JVMMHSH.mjs +63 -0
  65. package/dist/lib/neutral/deploy-7JVMMHSH.mjs.map +7 -0
  66. package/dist/lib/neutral/hooks/index.mjs +369 -0
  67. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  68. package/dist/lib/neutral/index.mjs +41 -0
  69. package/dist/lib/neutral/inspect-invocations-6MW73SDV.mjs +59 -0
  70. package/dist/lib/neutral/inspect-invocations-6MW73SDV.mjs.map +7 -0
  71. package/dist/lib/neutral/install-function-FJIE2JAI.mjs +49 -0
  72. package/dist/lib/neutral/install-function-FJIE2JAI.mjs.map +7 -0
  73. package/dist/lib/neutral/invoke-3HVWY2KF.mjs +32 -0
  74. package/dist/lib/neutral/invoke-3HVWY2KF.mjs.map +7 -0
  75. package/dist/lib/neutral/meta.json +1 -0
  76. package/dist/lib/neutral/meta.mjs +10 -0
  77. package/dist/lib/neutral/operation-handler-X44IGZXS.mjs +18 -0
  78. package/dist/lib/neutral/operation-handler-X44IGZXS.mjs.map +7 -0
  79. package/dist/lib/neutral/operations/index.mjs +8 -0
  80. package/dist/lib/neutral/plugin.mjs +16 -0
  81. package/dist/lib/neutral/plugin.mjs.map +7 -0
  82. package/dist/lib/neutral/query-deployed-functions-F4FHJNWO.mjs +34 -0
  83. package/dist/lib/neutral/query-deployed-functions-F4FHJNWO.mjs.map +7 -0
  84. package/dist/lib/neutral/react-surface-ACNZ35FV.mjs +121 -0
  85. package/dist/lib/neutral/react-surface-ACNZ35FV.mjs.map +7 -0
  86. package/dist/lib/neutral/read-RQESBAQI.mjs +26 -0
  87. package/dist/lib/neutral/read-RQESBAQI.mjs.map +7 -0
  88. package/dist/lib/neutral/settings-VJBW4OMK.mjs +30 -0
  89. package/dist/lib/neutral/settings-VJBW4OMK.mjs.map +7 -0
  90. package/dist/lib/{browser → neutral}/templates/index.mjs +2 -1
  91. package/dist/lib/neutral/translations.mjs +105 -0
  92. package/dist/lib/neutral/translations.mjs.map +7 -0
  93. package/dist/lib/neutral/types/index.mjs +17 -0
  94. package/dist/lib/neutral/types/index.mjs.map +7 -0
  95. package/dist/lib/neutral/update-JZUNJYZM.mjs +63 -0
  96. package/dist/lib/neutral/update-JZUNJYZM.mjs.map +7 -0
  97. package/dist/types/src/ScriptPlugin.d.ts +3 -1
  98. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  99. package/dist/types/src/ScriptPlugin.node.d.ts +4 -0
  100. package/dist/types/src/ScriptPlugin.node.d.ts.map +1 -0
  101. package/dist/types/src/ScriptPlugin.test.d.ts +2 -0
  102. package/dist/types/src/ScriptPlugin.test.d.ts.map +1 -0
  103. package/dist/types/src/ScriptPlugin.workerd.d.ts +4 -0
  104. package/dist/types/src/ScriptPlugin.workerd.d.ts.map +1 -0
  105. package/dist/types/src/blueprints/functions/create.d.ts +11 -0
  106. package/dist/types/src/blueprints/functions/create.d.ts.map +1 -0
  107. package/dist/types/src/blueprints/functions/definitions.d.ts +135 -0
  108. package/dist/types/src/blueprints/functions/definitions.d.ts.map +1 -0
  109. package/dist/types/src/blueprints/functions/delete.d.ts +17 -0
  110. package/dist/types/src/blueprints/functions/delete.d.ts.map +1 -0
  111. package/dist/types/src/blueprints/functions/deploy.d.ts +21 -0
  112. package/dist/types/src/blueprints/functions/deploy.d.ts.map +1 -0
  113. package/dist/types/src/blueprints/functions/index.d.ts +4 -0
  114. package/dist/types/src/blueprints/functions/index.d.ts.map +1 -0
  115. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts +28 -0
  116. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts.map +1 -0
  117. package/dist/types/src/blueprints/functions/install-function.d.ts +11 -0
  118. package/dist/types/src/blueprints/functions/install-function.d.ts.map +1 -0
  119. package/dist/types/src/blueprints/functions/invoke.d.ts +21 -0
  120. package/dist/types/src/blueprints/functions/invoke.d.ts.map +1 -0
  121. package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts +13 -0
  122. package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts.map +1 -0
  123. package/dist/types/src/blueprints/functions/read.d.ts +21 -0
  124. package/dist/types/src/blueprints/functions/read.d.ts.map +1 -0
  125. package/dist/types/src/blueprints/functions/update.d.ts +26 -0
  126. package/dist/types/src/blueprints/functions/update.d.ts.map +1 -0
  127. package/dist/types/src/blueprints/index.d.ts +2 -0
  128. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  129. package/dist/types/src/blueprints/script-blueprint.d.ts +4 -0
  130. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  132. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  133. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -4
  134. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  135. package/dist/types/src/capabilities/compiler.d.ts +3 -1
  136. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  137. package/dist/types/src/capabilities/create-object.d.ts +16 -0
  138. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  139. package/dist/types/src/capabilities/index.d.ts +19 -7
  140. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  141. package/dist/types/src/capabilities/node.d.ts +18 -0
  142. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  143. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  144. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  145. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  146. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  147. package/dist/types/src/capabilities/settings.d.ts +5 -2
  148. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  149. package/dist/types/src/compiler/compiler.d.ts +1 -1
  150. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  151. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +5 -4
  152. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  153. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +1 -1
  154. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -1
  155. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +5 -3
  156. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  157. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +221 -229
  158. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  159. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  160. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  161. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  162. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  163. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  164. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  165. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts +8 -0
  166. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
  167. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts +241 -0
  168. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts.map +1 -0
  169. package/dist/types/src/components/ScriptPluginSettings/index.d.ts +2 -0
  170. package/dist/types/src/components/ScriptPluginSettings/index.d.ts.map +1 -0
  171. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +10 -9
  172. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  173. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +221 -229
  174. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/TestPanel/TestPanel.d.ts +4 -2
  176. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  177. package/dist/types/src/components/TestPanel/index.d.ts +0 -1
  178. package/dist/types/src/components/TestPanel/index.d.ts.map +1 -1
  179. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +6 -2
  180. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  181. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +3 -1
  182. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  183. package/dist/types/src/components/index.d.ts +5 -5
  184. package/dist/types/src/components/index.d.ts.map +1 -1
  185. package/dist/types/src/constants.d.ts +3 -0
  186. package/dist/types/src/constants.d.ts.map +1 -0
  187. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.d.ts +2 -4
  188. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
  189. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts +240 -0
  190. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
  191. package/dist/types/src/containers/DeploymentDialog/index.d.ts +2 -0
  192. package/dist/types/src/containers/DeploymentDialog/index.d.ts.map +1 -0
  193. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts +7 -0
  194. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts.map +1 -0
  195. package/dist/types/src/containers/NotebookArticle/NotebookArticle.stories.d.ts +7 -0
  196. package/dist/types/src/containers/NotebookArticle/NotebookArticle.stories.d.ts.map +1 -0
  197. package/dist/types/src/containers/NotebookArticle/index.d.ts +2 -0
  198. package/dist/types/src/containers/NotebookArticle/index.d.ts.map +1 -0
  199. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts +10 -0
  200. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts.map +1 -0
  201. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts +242 -0
  202. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts.map +1 -0
  203. package/dist/types/src/containers/ScriptArticle/index.d.ts +2 -0
  204. package/dist/types/src/containers/ScriptArticle/index.d.ts.map +1 -0
  205. package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts +7 -0
  206. package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts.map +1 -0
  207. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts +7 -0
  208. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts.map +1 -0
  209. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts +7 -0
  210. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts.map +1 -0
  211. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +6 -0
  212. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
  213. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts +242 -0
  214. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts.map +1 -0
  215. package/dist/types/src/containers/ScriptProperties/index.d.ts +2 -0
  216. package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
  217. package/dist/types/src/containers/TestContainer/TestContainer.d.ts +8 -0
  218. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
  219. package/dist/types/src/containers/TestContainer/index.d.ts +2 -0
  220. package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
  221. package/dist/types/src/containers/index.d.ts +7 -0
  222. package/dist/types/src/containers/index.d.ts.map +1 -0
  223. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  224. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  225. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  226. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  227. package/dist/types/src/hooks/deploy.d.ts +27 -30
  228. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  229. package/dist/types/src/hooks/format.d.ts +5 -4
  230. package/dist/types/src/hooks/format.d.ts.map +1 -1
  231. package/dist/types/src/hooks/index.d.ts +1 -0
  232. package/dist/types/src/hooks/index.d.ts.map +1 -1
  233. package/dist/types/src/hooks/template.d.ts +7 -16
  234. package/dist/types/src/hooks/template.d.ts.map +1 -1
  235. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  236. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  237. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  238. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  239. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  240. package/dist/types/src/index.d.ts +2 -3
  241. package/dist/types/src/index.d.ts.map +1 -1
  242. package/dist/types/src/meta.d.ts +2 -2
  243. package/dist/types/src/meta.d.ts.map +1 -1
  244. package/dist/types/src/notebook/compute-graph.d.ts +58 -0
  245. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -0
  246. package/dist/types/src/notebook/compute-graph.test.d.ts +2 -0
  247. package/dist/types/src/notebook/compute-graph.test.d.ts.map +1 -0
  248. package/dist/types/src/notebook/eval.d.ts +1 -1
  249. package/dist/types/src/notebook/eval.d.ts.map +1 -1
  250. package/dist/types/src/notebook/index.d.ts +1 -1
  251. package/dist/types/src/notebook/index.d.ts.map +1 -1
  252. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -1
  253. package/dist/types/src/operations/create-script.d.ts +5 -0
  254. package/dist/types/src/operations/create-script.d.ts.map +1 -0
  255. package/dist/types/src/operations/index.d.ts +3 -0
  256. package/dist/types/src/operations/index.d.ts.map +1 -0
  257. package/dist/types/src/plugin.d.ts +4 -0
  258. package/dist/types/src/plugin.d.ts.map +1 -0
  259. package/dist/types/src/templates/anthropic.d.ts +7 -0
  260. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  261. package/dist/types/src/templates/chess-bot.d.ts +14 -0
  262. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  263. package/dist/types/src/templates/commentary.d.ts +15 -0
  264. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  265. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  266. package/dist/types/src/templates/discord.d.ts.map +1 -1
  267. package/dist/types/src/templates/email.d.ts.map +1 -1
  268. package/dist/types/src/templates/forex-effect.d.ts +5 -1
  269. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  270. package/dist/types/src/templates/forex.d.ts +5 -1
  271. package/dist/types/src/templates/forex.d.ts.map +1 -1
  272. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  273. package/dist/types/src/templates/index.d.ts +28 -24
  274. package/dist/types/src/templates/index.d.ts.map +1 -1
  275. package/dist/types/src/templates/ping.d.ts +2 -4
  276. package/dist/types/src/templates/ping.d.ts.map +1 -1
  277. package/dist/types/src/testing/index.d.ts +2 -1
  278. package/dist/types/src/testing/index.d.ts.map +1 -1
  279. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  280. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  281. package/dist/types/src/testing/test-notebook.d.ts +3 -0
  282. package/dist/types/src/testing/test-notebook.d.ts.map +1 -0
  283. package/dist/types/src/testing/test-script.d.ts +7 -0
  284. package/dist/types/src/testing/test-script.d.ts.map +1 -0
  285. package/dist/types/src/translations.d.ts +222 -91
  286. package/dist/types/src/translations.d.ts.map +1 -1
  287. package/dist/types/src/types/Notebook.d.ts +101 -0
  288. package/dist/types/src/types/Notebook.d.ts.map +1 -0
  289. package/dist/types/src/types/ScriptCapabilities.d.ts +6 -0
  290. package/dist/types/src/types/ScriptCapabilities.d.ts.map +1 -0
  291. package/dist/types/src/types/ScriptEvents.d.ts +3 -0
  292. package/dist/types/src/types/ScriptEvents.d.ts.map +1 -0
  293. package/dist/types/src/types/ScriptOperation.d.ts +29 -0
  294. package/dist/types/src/types/ScriptOperation.d.ts.map +1 -0
  295. package/dist/types/src/types/Settings.d.ts +7 -0
  296. package/dist/types/src/types/Settings.d.ts.map +1 -0
  297. package/dist/types/src/types/index.d.ts +5 -2
  298. package/dist/types/src/types/index.d.ts.map +1 -1
  299. package/dist/types/src/types/types.d.ts +2 -0
  300. package/dist/types/src/types/types.d.ts.map +1 -0
  301. package/dist/types/src/util/deploy.d.ts +4 -4
  302. package/dist/types/src/util/deploy.d.ts.map +1 -1
  303. package/dist/types/src/util/functions.d.ts +3 -3
  304. package/dist/types/src/util/functions.d.ts.map +1 -1
  305. package/dist/types/tsconfig.tsbuildinfo +1 -1
  306. package/package.json +186 -105
  307. package/src/ScriptPlugin.node.ts +21 -0
  308. package/src/ScriptPlugin.test.ts +31 -0
  309. package/src/ScriptPlugin.tsx +29 -97
  310. package/src/ScriptPlugin.workerd.ts +18 -0
  311. package/src/blueprints/functions/create.ts +47 -0
  312. package/src/blueprints/functions/definitions.ts +332 -0
  313. package/src/blueprints/functions/delete.ts +23 -0
  314. package/src/blueprints/functions/deploy.ts +71 -0
  315. package/src/blueprints/functions/index.ts +19 -0
  316. package/src/blueprints/functions/inspect-invocations.ts +56 -0
  317. package/src/blueprints/functions/install-function.ts +56 -0
  318. package/src/blueprints/functions/invoke.ts +34 -0
  319. package/src/blueprints/functions/query-deployed-functions.ts +35 -0
  320. package/src/blueprints/functions/read.ts +29 -0
  321. package/src/blueprints/functions/update.ts +68 -0
  322. package/src/blueprints/index.ts +5 -0
  323. package/src/blueprints/script-blueprint.ts +55 -0
  324. package/src/capabilities/app-graph-builder.ts +40 -58
  325. package/src/capabilities/blueprint-definition.ts +13 -24
  326. package/src/capabilities/compiler.ts +100 -23
  327. package/src/capabilities/create-object.ts +49 -0
  328. package/src/capabilities/index.ts +13 -9
  329. package/src/capabilities/node.ts +16 -0
  330. package/src/capabilities/operation-handler.ts +21 -0
  331. package/src/capabilities/react-surface.tsx +120 -92
  332. package/src/capabilities/settings.ts +26 -14
  333. package/src/compiler/compiler.ts +21 -3
  334. package/src/components/NotebookStack/NotebookCell.tsx +100 -91
  335. package/src/components/NotebookStack/NotebookMenu.tsx +7 -7
  336. package/src/components/NotebookStack/NotebookStack.stories.tsx +34 -13
  337. package/src/components/NotebookStack/NotebookStack.tsx +40 -22
  338. package/src/components/QueryEditor/QueryEditor.stories.tsx +96 -0
  339. package/src/components/QueryEditor/QueryEditor.tsx +49 -0
  340. package/src/components/QueryEditor/index.ts +5 -0
  341. package/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.tsx +32 -0
  342. package/src/components/ScriptPluginSettings/ScriptPluginSettings.tsx +42 -0
  343. package/src/components/ScriptPluginSettings/index.ts +5 -0
  344. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +44 -22
  345. package/src/components/ScriptToolbar/ScriptToolbar.tsx +43 -48
  346. package/src/components/TestPanel/TestPanel.tsx +125 -185
  347. package/src/components/TestPanel/index.ts +0 -1
  348. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +26 -19
  349. package/src/components/TypescriptEditor/TypescriptEditor.tsx +74 -71
  350. package/src/components/index.ts +5 -7
  351. package/src/constants.ts +9 -0
  352. package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +63 -0
  353. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +99 -0
  354. package/src/containers/DeploymentDialog/index.ts +5 -0
  355. package/src/containers/NotebookArticle/NotebookArticle.stories.tsx +85 -0
  356. package/src/containers/NotebookArticle/NotebookArticle.tsx +255 -0
  357. package/src/containers/NotebookArticle/index.ts +5 -0
  358. package/src/containers/ScriptArticle/ScriptArticle.stories.tsx +107 -0
  359. package/src/containers/ScriptArticle/ScriptArticle.tsx +85 -0
  360. package/src/containers/ScriptArticle/index.ts +5 -0
  361. package/src/containers/ScriptProperties/BlueprintEditor.tsx +102 -0
  362. package/src/containers/ScriptProperties/FunctionBinding.tsx +83 -0
  363. package/src/containers/ScriptProperties/FunctionPublishing.tsx +121 -0
  364. package/src/containers/ScriptProperties/ScriptProperties.stories.tsx +76 -0
  365. package/src/containers/ScriptProperties/ScriptProperties.tsx +24 -0
  366. package/src/containers/ScriptProperties/index.ts +5 -0
  367. package/src/containers/TestContainer/TestContainer.tsx +44 -0
  368. package/src/containers/TestContainer/index.ts +5 -0
  369. package/src/containers/index.ts +11 -0
  370. package/src/e2e/ai.test.ts +93 -0
  371. package/src/e2e/deploy.test.ts +66 -0
  372. package/src/hooks/deploy.ts +47 -37
  373. package/src/hooks/format.ts +10 -5
  374. package/src/hooks/index.ts +1 -0
  375. package/src/hooks/template.ts +23 -26
  376. package/src/hooks/useCompiler.ts +25 -0
  377. package/src/hooks/useCreateAndDeployScriptTemplates.ts +15 -16
  378. package/src/hooks/useToolbarState.ts +29 -4
  379. package/src/index.ts +2 -4
  380. package/src/meta.ts +17 -7
  381. package/src/notebook/compute-graph.test.ts +82 -0
  382. package/src/notebook/{notebook.ts → compute-graph.ts} +66 -19
  383. package/src/notebook/eval.ts +1 -1
  384. package/src/notebook/index.ts +1 -1
  385. package/src/notebook/vfs-parser.ts +10 -3
  386. package/src/operations/create-script.ts +46 -0
  387. package/src/operations/index.ts +7 -0
  388. package/src/plugin.ts +11 -0
  389. package/src/templates/anthropic.ts +50 -0
  390. package/src/templates/chess-bot.ts +63 -0
  391. package/src/templates/commentary.ts +251 -0
  392. package/src/templates/data-generator.ts +2 -2
  393. package/src/templates/discord.ts +8 -8
  394. package/src/templates/forex-effect.ts +36 -29
  395. package/src/templates/forex.ts +28 -17
  396. package/src/templates/gmail.ts +10 -11
  397. package/src/templates/index.ts +29 -23
  398. package/src/templates/ping.ts +23 -5
  399. package/src/testing/index.ts +2 -1
  400. package/src/testing/simulator.test.ts +39 -0
  401. package/src/testing/test-notebook.ts +71 -0
  402. package/src/testing/test-script.ts +28 -0
  403. package/src/translations.ts +89 -88
  404. package/src/types/Notebook.ts +39 -0
  405. package/src/types/ScriptCapabilities.ts +18 -0
  406. package/src/types/ScriptEvents.ts +11 -0
  407. package/src/types/ScriptOperation.ts +42 -0
  408. package/src/types/Settings.ts +20 -0
  409. package/src/types/index.ts +6 -2
  410. package/src/types/types.ts +5 -0
  411. package/src/util/deploy.ts +33 -41
  412. package/src/util/functions.ts +35 -30
  413. package/src/vite-env.d.ts +7 -0
  414. package/dist/lib/browser/DeploymentDialog-65TWT6S5.mjs +0 -13
  415. package/dist/lib/browser/NotebookContainer-LVGRPFY3.mjs.map +0 -7
  416. package/dist/lib/browser/ScriptContainer-LRTRN7JW.mjs +0 -149
  417. package/dist/lib/browser/ScriptContainer-LRTRN7JW.mjs.map +0 -7
  418. package/dist/lib/browser/app-graph-builder-DPYULSME.mjs +0 -65
  419. package/dist/lib/browser/app-graph-builder-DPYULSME.mjs.map +0 -7
  420. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs +0 -28
  421. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs.map +0 -7
  422. package/dist/lib/browser/chunk-5CYLWXRH.mjs +0 -89
  423. package/dist/lib/browser/chunk-5CYLWXRH.mjs.map +0 -7
  424. package/dist/lib/browser/chunk-75LH4EUR.mjs +0 -326
  425. package/dist/lib/browser/chunk-75LH4EUR.mjs.map +0 -7
  426. package/dist/lib/browser/chunk-E7DXDICD.mjs +0 -282
  427. package/dist/lib/browser/chunk-E7DXDICD.mjs.map +0 -7
  428. package/dist/lib/browser/chunk-EZVXV6DA.mjs +0 -26
  429. package/dist/lib/browser/chunk-EZVXV6DA.mjs.map +0 -7
  430. package/dist/lib/browser/chunk-I3QSGUFJ.mjs +0 -646
  431. package/dist/lib/browser/chunk-I3QSGUFJ.mjs.map +0 -7
  432. package/dist/lib/browser/chunk-JO2O7W6J.mjs +0 -254
  433. package/dist/lib/browser/chunk-JO2O7W6J.mjs.map +0 -7
  434. package/dist/lib/browser/chunk-N6M34EUC.mjs +0 -112
  435. package/dist/lib/browser/chunk-N6M34EUC.mjs.map +0 -7
  436. package/dist/lib/browser/chunk-NM4WQS4F.mjs +0 -153
  437. package/dist/lib/browser/chunk-NM4WQS4F.mjs.map +0 -7
  438. package/dist/lib/browser/chunk-OKXN2N7M.mjs +0 -15
  439. package/dist/lib/browser/chunk-OKXN2N7M.mjs.map +0 -7
  440. package/dist/lib/browser/chunk-ST3ACVUC.mjs +0 -88
  441. package/dist/lib/browser/chunk-ST3ACVUC.mjs.map +0 -7
  442. package/dist/lib/browser/compiler-G2N2CG63.mjs +0 -98
  443. package/dist/lib/browser/compiler-G2N2CG63.mjs.map +0 -7
  444. package/dist/lib/browser/index.mjs +0 -279
  445. package/dist/lib/browser/index.mjs.map +0 -7
  446. package/dist/lib/browser/intent-resolver-JLU7DVLQ.mjs +0 -105
  447. package/dist/lib/browser/intent-resolver-JLU7DVLQ.mjs.map +0 -7
  448. package/dist/lib/browser/meta.json +0 -1
  449. package/dist/lib/browser/react-surface-76SDTUYG.mjs +0 -127
  450. package/dist/lib/browser/react-surface-76SDTUYG.mjs.map +0 -7
  451. package/dist/lib/browser/settings-ERFKVNUK.mjs +0 -25
  452. package/dist/lib/browser/settings-ERFKVNUK.mjs.map +0 -7
  453. package/dist/lib/browser/types/index.mjs +0 -13
  454. package/dist/lib/node-esm/DeploymentDialog-I63ZC2HH.mjs +0 -14
  455. package/dist/lib/node-esm/NotebookContainer-QY5NJGJI.mjs +0 -684
  456. package/dist/lib/node-esm/NotebookContainer-QY5NJGJI.mjs.map +0 -7
  457. package/dist/lib/node-esm/ScriptContainer-SVXCSLNH.mjs +0 -150
  458. package/dist/lib/node-esm/ScriptContainer-SVXCSLNH.mjs.map +0 -7
  459. package/dist/lib/node-esm/app-graph-builder-UXJGHXSL.mjs +0 -66
  460. package/dist/lib/node-esm/app-graph-builder-UXJGHXSL.mjs.map +0 -7
  461. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs +0 -30
  462. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs.map +0 -7
  463. package/dist/lib/node-esm/chunk-2GVTWESW.mjs +0 -90
  464. package/dist/lib/node-esm/chunk-2GVTWESW.mjs.map +0 -7
  465. package/dist/lib/node-esm/chunk-4X375PGY.mjs +0 -90
  466. package/dist/lib/node-esm/chunk-4X375PGY.mjs.map +0 -7
  467. package/dist/lib/node-esm/chunk-67OVZHI3.mjs +0 -327
  468. package/dist/lib/node-esm/chunk-67OVZHI3.mjs.map +0 -7
  469. package/dist/lib/node-esm/chunk-C2ORIPKH.mjs +0 -154
  470. package/dist/lib/node-esm/chunk-C2ORIPKH.mjs.map +0 -7
  471. package/dist/lib/node-esm/chunk-NUXZQQ6P.mjs +0 -16
  472. package/dist/lib/node-esm/chunk-NUXZQQ6P.mjs.map +0 -7
  473. package/dist/lib/node-esm/chunk-OG2SIKHE.mjs +0 -28
  474. package/dist/lib/node-esm/chunk-OG2SIKHE.mjs.map +0 -7
  475. package/dist/lib/node-esm/chunk-SMFPSKQT.mjs +0 -647
  476. package/dist/lib/node-esm/chunk-SMFPSKQT.mjs.map +0 -7
  477. package/dist/lib/node-esm/chunk-VRSDE4CI.mjs +0 -114
  478. package/dist/lib/node-esm/chunk-VRSDE4CI.mjs.map +0 -7
  479. package/dist/lib/node-esm/chunk-VZAFGLD7.mjs +0 -283
  480. package/dist/lib/node-esm/chunk-VZAFGLD7.mjs.map +0 -7
  481. package/dist/lib/node-esm/chunk-YW36TZ7K.mjs +0 -255
  482. package/dist/lib/node-esm/chunk-YW36TZ7K.mjs.map +0 -7
  483. package/dist/lib/node-esm/compiler-PLDAZ5GJ.mjs +0 -99
  484. package/dist/lib/node-esm/compiler-PLDAZ5GJ.mjs.map +0 -7
  485. package/dist/lib/node-esm/index.mjs +0 -280
  486. package/dist/lib/node-esm/index.mjs.map +0 -7
  487. package/dist/lib/node-esm/intent-resolver-SFGTIFOG.mjs +0 -106
  488. package/dist/lib/node-esm/intent-resolver-SFGTIFOG.mjs.map +0 -7
  489. package/dist/lib/node-esm/meta.json +0 -1
  490. package/dist/lib/node-esm/react-surface-SHEBNW4R.mjs +0 -128
  491. package/dist/lib/node-esm/react-surface-SHEBNW4R.mjs.map +0 -7
  492. package/dist/lib/node-esm/settings-5TYXQ42N.mjs +0 -26
  493. package/dist/lib/node-esm/settings-5TYXQ42N.mjs.map +0 -7
  494. package/dist/lib/node-esm/templates/index.mjs +0 -10
  495. package/dist/lib/node-esm/types/index.mjs +0 -14
  496. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  497. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  498. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  499. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  500. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  501. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  502. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
  503. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +0 -251
  504. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +0 -1
  505. package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
  506. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
  507. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +0 -12
  508. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +0 -1
  509. package/dist/types/src/components/FrameContainer/frame.d.ts +0 -2
  510. package/dist/types/src/components/FrameContainer/frame.d.ts.map +0 -1
  511. package/dist/types/src/components/FrameContainer/index.d.ts +0 -2
  512. package/dist/types/src/components/FrameContainer/index.d.ts.map +0 -1
  513. package/dist/types/src/components/NotebookContainer.d.ts +0 -10
  514. package/dist/types/src/components/NotebookContainer.d.ts.map +0 -1
  515. package/dist/types/src/components/NotebookContainer.stories.d.ts +0 -248
  516. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +0 -1
  517. package/dist/types/src/components/ScriptContainer.d.ts +0 -12
  518. package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
  519. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +0 -8
  520. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
  521. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +0 -6
  522. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
  523. package/dist/types/src/components/Settings/index.d.ts +0 -3
  524. package/dist/types/src/components/Settings/index.d.ts.map +0 -1
  525. package/dist/types/src/components/TestPanel/TestContainer.d.ts +0 -8
  526. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
  527. package/dist/types/src/events.d.ts +0 -4
  528. package/dist/types/src/events.d.ts.map +0 -1
  529. package/dist/types/src/notebook/notebook.d.ts +0 -35
  530. package/dist/types/src/notebook/notebook.d.ts.map +0 -1
  531. package/dist/types/src/notebook/notebook.test.d.ts +0 -2
  532. package/dist/types/src/notebook/notebook.test.d.ts.map +0 -1
  533. package/dist/types/src/templates/chat.d.ts +0 -6
  534. package/dist/types/src/templates/chat.d.ts.map +0 -1
  535. package/dist/types/src/templates/chess.d.ts +0 -3
  536. package/dist/types/src/templates/chess.d.ts.map +0 -1
  537. package/dist/types/src/testing/data.d.ts +0 -19
  538. package/dist/types/src/testing/data.d.ts.map +0 -1
  539. package/dist/types/src/types/actions.d.ts +0 -66
  540. package/dist/types/src/types/actions.d.ts.map +0 -1
  541. package/dist/types/src/types/schema.d.ts +0 -61
  542. package/dist/types/src/types/schema.d.ts.map +0 -1
  543. package/src/capabilities/artifact-definition.ts +0 -225
  544. package/src/capabilities/capabilities.ts +0 -12
  545. package/src/capabilities/intent-resolver.ts +0 -87
  546. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +0 -53
  547. package/src/components/DeploymentDialog/DeploymentDialog.tsx +0 -106
  548. package/src/components/DeploymentDialog/index.ts +0 -9
  549. package/src/components/FrameContainer/FrameContainer.tsx +0 -84
  550. package/src/components/FrameContainer/frame.html +0 -25
  551. package/src/components/FrameContainer/frame.tsx +0 -51
  552. package/src/components/FrameContainer/index.ts +0 -5
  553. package/src/components/NotebookContainer.stories.tsx +0 -32
  554. package/src/components/NotebookContainer.tsx +0 -124
  555. package/src/components/ScriptContainer.tsx +0 -69
  556. package/src/components/Settings/ScriptObjectSettings.tsx +0 -286
  557. package/src/components/Settings/ScriptPluginSettings.tsx +0 -61
  558. package/src/components/Settings/index.ts +0 -6
  559. package/src/components/TestPanel/TestContainer.tsx +0 -27
  560. package/src/events.ts +0 -11
  561. package/src/notebook/notebook.test.ts +0 -70
  562. package/src/templates/chat.ts +0 -96
  563. package/src/templates/chess.ts +0 -49
  564. package/src/testing/data.ts +0 -47
  565. package/src/types/actions.ts +0 -53
  566. package/src/types/schema.ts +0 -48
  567. /package/dist/lib/{browser/templates → neutral/blueprints}/index.mjs.map +0 -0
  568. /package/dist/lib/{browser/DeploymentDialog-65TWT6S5.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  569. /package/dist/lib/{browser/types → neutral}/index.mjs.map +0 -0
  570. /package/dist/lib/{node-esm/DeploymentDialog-I63ZC2HH.mjs.map → neutral/meta.mjs.map} +0 -0
  571. /package/dist/lib/{node-esm/templates → neutral/operations}/index.mjs.map +0 -0
  572. /package/dist/lib/{node-esm/types → neutral/templates}/index.mjs.map +0 -0
@@ -2,11 +2,11 @@
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
- import { type Notebook } from '../types';
9
+ import { type Notebook } from '#types';
10
10
 
11
11
  import { evalScript } from './eval';
12
12
  import { type ParsedExpression, VirtualTypeScriptParser } from './vfs-parser';
@@ -14,35 +14,76 @@ import { type ParsedExpression, VirtualTypeScriptParser } from './vfs-parser';
14
14
  /**
15
15
  * Compute graph that evaluates the notebook cells.
16
16
  */
17
+ // TODO(burdon): Reconcile with @dxos/conductor.
17
18
  export class ComputeGraph {
18
19
  private readonly _parser = new VirtualTypeScriptParser();
19
20
 
20
- private _expressions = signal<Record<string, ParsedExpression>>({});
21
- 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>>({});
22
24
 
23
- constructor(private readonly _notebook: Notebook.Notebook) {}
25
+ constructor(
26
+ private readonly _notebook: Notebook.Notebook,
27
+ private readonly _registry: Registry.Registry,
28
+ ) {}
24
29
 
25
30
  /**
26
- * Parsed expressions by cell ID.
31
+ * Atom for parsed expressions by cell ID.
27
32
  */
28
- get expressions(): Signal<Record<string, ParsedExpression>> {
29
- return this._expressions;
33
+ get expressions(): Atom.Atom<Record<string, ParsedExpression>> {
34
+ return this._expressionsAtom;
30
35
  }
31
36
 
32
37
  /**
33
- * Computed values by cell ID.
38
+ * Get current expressions by cell ID.
34
39
  */
35
- get values(): Signal<Record<string, any>> {
36
- 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];
37
77
  }
38
78
 
39
79
  /**
40
80
  * Compute values.
41
81
  */
42
- evaluate() {
82
+ async evaluate() {
43
83
  // Parse expressions.
44
84
  const { expressions, dependencyGraph } = this.parse();
45
- this._values.value = {};
85
+ this._registry.set(this._valuesByCellIdAtom, {});
86
+ this._registry.set(this._valuesByNameAtom, {});
46
87
 
47
88
  // Create a map of cell IDs to expressions for easy lookup.
48
89
  const cellExpressions = new Map<string, ParsedExpression>();
@@ -65,7 +106,7 @@ export class ComputeGraph {
65
106
  continue;
66
107
  }
67
108
 
68
- 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;
69
110
  if (!cellSource) {
70
111
  log.error('no source for cell', { cellId });
71
112
  continue;
@@ -90,7 +131,7 @@ export class ComputeGraph {
90
131
  rhs = rhs.slice(0, -1).trim();
91
132
  }
92
133
 
93
- const result = evalScript(rhs, valuesByName);
134
+ const result = await this.eval(rhs, valuesByName);
94
135
  valuesByName[expr.name] = result;
95
136
  if (typeof result !== 'function') {
96
137
  valuesByCellId[cellId] = result;
@@ -98,18 +139,24 @@ export class ComputeGraph {
98
139
  }
99
140
  } else {
100
141
  // For expressions without assignment, just evaluate.
101
- const result = evalScript(cellSource, valuesByName);
142
+ const result = await this.eval(cellSource, valuesByName);
102
143
  valuesByCellId[cellId] = result;
103
144
  }
104
145
  } catch (error) {
146
+ // TODO(burdon): Set error state.
105
147
  log.error('error evaluating cell', { cellId, error });
106
148
  }
107
149
  }
108
150
 
109
- this._values.value = valuesByCellId;
151
+ this._registry.set(this._valuesByCellIdAtom, valuesByCellId);
152
+ this._registry.set(this._valuesByNameAtom, valuesByName);
110
153
  return valuesByCellId;
111
154
  }
112
155
 
156
+ private async eval(source: string, values: Record<string, any>) {
157
+ return evalScript(source, values);
158
+ }
159
+
113
160
  /**
114
161
  * Parse expressions.
115
162
  */
@@ -117,7 +164,7 @@ export class ComputeGraph {
117
164
  const expressions = this._notebook.cells
118
165
  .filter((cell) => cell.type === 'script')
119
166
  .reduce<Record<string, ParsedExpression>>((acc, cell) => {
120
- const text = cell.script?.target?.content.trim();
167
+ const text = cell.source?.target?.content.trim();
121
168
  if (text) {
122
169
  const parsed = this._parser.parseExpression(text);
123
170
  acc[cell.id] = parsed;
@@ -128,7 +175,7 @@ export class ComputeGraph {
128
175
 
129
176
  // Build dependency graph.
130
177
  const dependencyGraph = this.buildDependencyGraph(expressions);
131
- this._expressions.value = expressions;
178
+ this._registry.set(this._expressionsAtom, expressions);
132
179
  return { expressions, dependencyGraph };
133
180
  }
134
181
 
@@ -7,7 +7,7 @@ import { trim } from '@dxos/util';
7
7
  /**
8
8
  * Evaluate the script (with dependencies as arguments).
9
9
  */
10
- export const evalScript = (code: string, deps: Record<string, any> = {}) => {
10
+ export const evalScript = async (code: string, deps: Record<string, any> = {}) => {
11
11
  // Create a sandboxed environment that blocks access to window and document.
12
12
  const sandbox = {
13
13
  ...deps,
@@ -2,4 +2,4 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './notebook';
5
+ export * from './compute-graph';
@@ -42,6 +42,7 @@ export class VirtualTypeScriptParser {
42
42
  protected compilerOptions: ts.CompilerOptions = {
43
43
  target: ts.ScriptTarget.ES2020,
44
44
  module: ts.ModuleKind.ESNext,
45
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
45
46
  strict: true,
46
47
  esModuleInterop: true,
47
48
  skipLibCheck: true,
@@ -91,7 +92,9 @@ export class VirtualTypeScriptParser {
91
92
  // Analyze each file.
92
93
  files.forEach((file) => {
93
94
  const sourceFile = env.getSourceFile(file.filename);
94
- if (!sourceFile || !typeChecker) return;
95
+ if (!sourceFile || !typeChecker) {
96
+ return;
97
+ }
95
98
 
96
99
  const fileResults = this.analyzeSourceFile(sourceFile, typeChecker);
97
100
  results.push(...fileResults);
@@ -207,7 +210,9 @@ export class VirtualTypeScriptParser {
207
210
  signature: ts.Signature | undefined,
208
211
  typeChecker: ts.TypeChecker,
209
212
  ): Array<{ name: string; type: string }> {
210
- if (!signature) return [];
213
+ if (!signature) {
214
+ return [];
215
+ }
211
216
 
212
217
  return signature.parameters.map((param) => ({
213
218
  name: param.getName(),
@@ -429,7 +434,9 @@ export class NotebookVirtualParser extends VirtualTypeScriptParser {
429
434
  const previousExports = new Set<string>();
430
435
  for (const [_prevCellId, prevAnalysis] of cellAnalysis) {
431
436
  prevAnalysis.exports.forEach((exp) => {
432
- if (exp.name) previousExports.add(exp.name);
437
+ if (exp.name) {
438
+ previousExports.add(exp.name);
439
+ }
433
440
  });
434
441
  }
435
442
 
@@ -0,0 +1,46 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Octokit } from '@octokit/core';
6
+ import * as Effect from 'effect/Effect';
7
+
8
+ import { Script, Operation } from '@dxos/compute';
9
+
10
+ import { templates } from '../templates';
11
+ import { ScriptOperation } from '../types';
12
+
13
+ const handler: Operation.WithHandler<typeof ScriptOperation.CreateScript> = ScriptOperation.CreateScript.pipe(
14
+ Operation.withHandler(
15
+ Effect.fnUntraced(function* ({ name, gistUrl, initialTemplateId }) {
16
+ let source = templates[0].source;
17
+ let scriptName = name;
18
+
19
+ const gistId = gistUrl?.split('/').at(-1);
20
+ if (gistId) {
21
+ const octokit = new Octokit();
22
+ const response = yield* Effect.promise(() =>
23
+ octokit.request('GET /gists/{gist_id}', {
24
+ gist_id: gistId,
25
+ }),
26
+ );
27
+ const gistContent = Object.values(response.data.files ?? {})[0]?.content;
28
+ if (gistContent) {
29
+ source = gistContent;
30
+ }
31
+ }
32
+
33
+ if (initialTemplateId) {
34
+ const template = templates.find((template) => template.id === initialTemplateId);
35
+ if (template) {
36
+ source = template.source;
37
+ scriptName = scriptName || template.name;
38
+ }
39
+ }
40
+
41
+ return { object: Script.make({ name: scriptName, source }) };
42
+ }),
43
+ ),
44
+ );
45
+
46
+ export default handler;
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { OperationHandlerSet } from '@dxos/compute';
6
+
7
+ export const ScriptOperationHandlerSet = OperationHandlerSet.lazy(() => import('./create-script'));
package/src/plugin.ts ADDED
@@ -0,0 +1,11 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Plugin } from '@dxos/app-framework';
6
+
7
+ import { meta } from './meta';
8
+
9
+ export const ScriptPlugin = Plugin.lazy(meta, () => import('#plugin'));
10
+
11
+ export { ScriptOperationHandlerSet } from './operations';
@@ -0,0 +1,50 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as LanguageModel from '@effect/ai/LanguageModel';
6
+ import * as Chunk from 'effect/Chunk';
7
+ import * as Effect from 'effect/Effect';
8
+ import * as Schema from 'effect/Schema';
9
+ import * as Stream from 'effect/Stream';
10
+
11
+ import { AiService } from '@dxos/ai';
12
+ import { Operation } from '@dxos/compute';
13
+ import { DXN } from '@dxos/keys';
14
+
15
+ const Anthropic = Operation.make({
16
+ meta: {
17
+ key: DXN.make('org.dxos.script.anthropic'),
18
+ name: 'Anthropic Chat',
19
+ description: 'Chat with Anthropic',
20
+ },
21
+ input: Schema.Struct({
22
+ message: Schema.String,
23
+ }),
24
+ output: Schema.Any,
25
+ services: [AiService.AiService],
26
+ });
27
+
28
+ export default Anthropic.pipe(
29
+ Operation.withHandler(
30
+ Effect.fn(function* ({ message }) {
31
+ const model = (yield* AiService.AiService).model('@anthropic/claude-sonnet-4-5');
32
+
33
+ //
34
+ // Basic example.
35
+ //
36
+ const { text } = yield* LanguageModel.generateText({ prompt: message }).pipe(Effect.provide(model));
37
+
38
+ //
39
+ // Streaming example.
40
+ //
41
+ const parts = yield* LanguageModel.streamText({
42
+ prompt: 'Count from 1 to 5, one number per line.',
43
+ }).pipe(Stream.runCollect, Effect.map(Chunk.toArray), Effect.provide(model));
44
+ const textDeltas = parts.filter((p) => p.type === 'text-delta');
45
+ const fullText = textDeltas.map((p) => (p as { delta: string }).delta).join('');
46
+
47
+ return { response: text, streamText: fullText };
48
+ }),
49
+ ),
50
+ );
@@ -0,0 +1,63 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Chess as ChessJS } from 'chess.js';
6
+ import * as Effect from 'effect/Effect';
7
+ import * as Schema from 'effect/Schema';
8
+
9
+ import { Operation } from '@dxos/compute';
10
+ import { Database, Obj, DXN } from '@dxos/echo';
11
+ import { Chess } from '@dxos/plugin-chess';
12
+ import { GameRef, Game, loadGame } from '@dxos/plugin-game';
13
+
14
+ const ChessBot = Operation.make({
15
+ meta: {
16
+ key: DXN.make('org.dxos.script.chessBot'),
17
+ name: 'Chess Bot',
18
+ description: 'Plays a random move in a chess game.',
19
+ },
20
+ input: Schema.Struct({
21
+ game: GameRef(Chess.State).annotations({
22
+ description: 'The chess game to comment on.',
23
+ }),
24
+ player: Schema.optional(Schema.Literal('white', 'black')).annotations({
25
+ description: 'The player to play the game as.',
26
+ }),
27
+ }),
28
+ output: Schema.Struct({
29
+ state: Schema.String.annotations({
30
+ description: 'The state of the game as an ASCII art board.',
31
+ }),
32
+ }),
33
+ types: [Game, Chess.State],
34
+ services: [Database.Service],
35
+ });
36
+
37
+ export default ChessBot.pipe(
38
+ Operation.withHandler(
39
+ Effect.fnUntraced(function* ({ game, player = 'black' }) {
40
+ const { variant } = yield* loadGame(game, Chess.State);
41
+ const chess = new ChessJS();
42
+ chess.loadPgn(variant.pgn ?? '');
43
+ if (chess.turn() !== (player === 'white' ? 'w' : 'b')) {
44
+ return { state: chess.ascii() };
45
+ }
46
+
47
+ const moves = chess.moves({ verbose: true });
48
+ const move = moves[Math.floor(Math.random() * moves.length)];
49
+ if (!move) {
50
+ return { state: chess.ascii() };
51
+ }
52
+
53
+ chess.move(move.san);
54
+ const newPgn = chess.pgn();
55
+ Obj.update(variant, (variant) => {
56
+ const mutable = variant as Obj.Mutable<typeof variant>;
57
+ mutable.pgn = newPgn;
58
+ });
59
+ yield* Database.flush();
60
+ return { state: chess.ascii() };
61
+ }),
62
+ ),
63
+ );
@@ -0,0 +1,251 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as A from '@automerge/automerge';
6
+ import { Chess as ChessJS } from 'chess.js';
7
+ import * as Array from 'effect/Array';
8
+ import * as Effect from 'effect/Effect';
9
+ import * as Function from 'effect/Function';
10
+ import * as Layer from 'effect/Layer';
11
+ import * as Option from 'effect/Option';
12
+ import * as Schema from 'effect/Schema';
13
+
14
+ import { AiService, ConsolePrinter, ToolExecutionService, ToolResolverService } from '@dxos/ai';
15
+ import { RootCollectionAnnotation } from '@dxos/app-toolkit';
16
+ import { AiRequest, GenerationObserver } from '@dxos/assistant';
17
+ import { Trace, Operation, OperationRegistry } from '@dxos/compute';
18
+ import { Annotation, Collection, Database, DXN, Filter, Obj, Ref, Relation, URI } from '@dxos/echo';
19
+ import { createDocAccessor } from '@dxos/echo-db';
20
+ import { log } from '@dxos/log';
21
+ import { Chess } from '@dxos/plugin-chess';
22
+ import { Game, GameRef, loadGame } from '@dxos/plugin-game';
23
+ import { Markdown } from '@dxos/plugin-markdown';
24
+ import { Text } from '@dxos/schema';
25
+ import { HasSubject } from '@dxos/types';
26
+ import { trim } from '@dxos/util';
27
+
28
+ const Commentary = Operation.make({
29
+ meta: {
30
+ key: DXN.make('org.dxos.function.chess.commentary'),
31
+ name: 'Commentary',
32
+ description: 'Adds commentary about the most recent move to a markdown document associated with the chess game.',
33
+ },
34
+ input: Schema.Struct({
35
+ game: GameRef(Chess.State).annotations({
36
+ description: 'The chess game to comment on.',
37
+ }),
38
+ }),
39
+ output: Schema.Union(
40
+ Schema.Struct({
41
+ documentId: URI.Schema.annotations({
42
+ description: 'The ID of the markdown document that was updated or created.',
43
+ }),
44
+ commentary: Schema.String.annotations({
45
+ description: 'The commentary that was added.',
46
+ }),
47
+ }),
48
+ Schema.Void.annotations({
49
+ description: 'Function did not find anything to comment on.',
50
+ }),
51
+ ),
52
+ types: [Game, Chess.State, Markdown.Document, Text.Text, HasSubject.HasSubject, Collection.Collection],
53
+ services: [AiService.AiService, Database.Service],
54
+ });
55
+
56
+ export default Commentary.pipe(
57
+ Operation.withHandler(
58
+ Effect.fnUntraced(
59
+ function* ({ game: gameRef }) {
60
+ // Load the game and its Chess variant state.
61
+ log.info('load game', { gameRef });
62
+ const { game: chessGame, variant: chessState } = yield* loadGame(gameRef, Chess.State);
63
+
64
+ // Load the chess position from PGN or FEN.
65
+ const chess = new ChessJS();
66
+ if (chessState.pgn) {
67
+ chess.loadPgn(chessState.pgn);
68
+ } else if (chessState.fen) {
69
+ chess.load(chessState.fen);
70
+ } else {
71
+ log.info('Early return: no pgn or fen');
72
+ return;
73
+ }
74
+
75
+ // Get the most recent move
76
+ const history = chess.history({ verbose: true });
77
+ if (history.length === 0) {
78
+ throw new Error('No moves have been played yet');
79
+ }
80
+ const lastMove = history[history.length - 1];
81
+ const moveNumber = Math.ceil(history.length / 2);
82
+ const isWhiteMove = history.length % 2 === 1;
83
+ const player = isWhiteMove ? 'White' : 'Black';
84
+ const moveNotation = lastMove.san;
85
+
86
+ // Generate AI commentary about the move
87
+ const result = yield* new AiRequest.Request({
88
+ observer: GenerationObserver.fromPrinter(new ConsolePrinter({ tag: 'chess-commentary' })),
89
+ }).run({
90
+ prompt:
91
+ `Comment on this chess move as if you're commentating a live match for an audience:\n\n` +
92
+ `Move ${moveNumber}: ${player} plays ${moveNotation} (${lastMove.from} to ${lastMove.to})${lastMove.captured ? `, capturing ${lastMove.captured}` : ''}\n` +
93
+ `Current position: ${chess.fen()}\n` +
94
+ `${chess.isCheck() ? 'The king is in check! ' : ''}` +
95
+ `${chess.isCheckmate() ? 'CHECKMATE! ' : ''}` +
96
+ `${chess.isStalemate() ? 'STALEMATE! ' : ''}` +
97
+ `\nGame so far:\n${chess.pgn()}`,
98
+ system: COMMENTARY_SYSTEM_PROMPT,
99
+ history: [],
100
+ });
101
+
102
+ const commentaryText = Function.pipe(
103
+ result,
104
+ Array.findLast((msg) => msg.sender.role === 'assistant' && msg.blocks.some((block) => block._tag === 'text')),
105
+ Option.flatMap((msg) =>
106
+ Function.pipe(
107
+ msg.blocks,
108
+ Array.findLast((block) => block._tag === 'text'),
109
+ Option.map((block) => block.text),
110
+ ),
111
+ ),
112
+ Option.getOrThrowWith(() => new Error('No commentary generated')),
113
+ );
114
+
115
+ const commentary = `## Move ${moveNumber}: ${player} plays ${moveNotation}\n\n${commentaryText}\n\n`;
116
+ log.info('commentary', { commentary });
117
+
118
+ // TODO(wittjosiah): Functions currently don't support traversals.
119
+ // const docs = yield* Database.runQuery(
120
+ // Query.select(Filter.id(chessGame.id)).targetOf(HasSubject.HasSubject).source(),
121
+ // ).pipe(Effect.map((objects) => objects.filter((object) => Obj.instanceOf(Markdown.Document, object))));
122
+ const docs = yield* Database.runQuery(Filter.type(HasSubject.HasSubject)).pipe(
123
+ Effect.map((relations) =>
124
+ relations.filter((relation) => {
125
+ // TODO(wittjosiah): This is a workaround for getTarget not handling deleted objects.
126
+ try {
127
+ log.info('relation', {
128
+ source: Obj.getURI(Relation.getTarget(relation)),
129
+ game: Obj.getURI(chessGame),
130
+ });
131
+ return Obj.getURI(Relation.getTarget(relation)) === Obj.getURI(chessGame);
132
+ } catch {
133
+ return false;
134
+ }
135
+ }),
136
+ ),
137
+ Effect.map((relations) =>
138
+ relations
139
+ .map((relation) => {
140
+ // TODO(wittjosiah): This is a workaround for getSource not handling deleted objects.
141
+ try {
142
+ return Relation.getSource(relation);
143
+ } catch {
144
+ return undefined;
145
+ }
146
+ })
147
+ .filter((source) => source !== undefined),
148
+ ),
149
+ Effect.map((sources) => {
150
+ const docs = sources.filter((source) => Obj.instanceOf(Markdown.Document, source));
151
+ log.info('docs', { sources, docs });
152
+ return docs;
153
+ }),
154
+ );
155
+ log.info('docs', { count: docs.length });
156
+
157
+ let document: Markdown.Document;
158
+ if (docs.length === 0) {
159
+ // TODO(wittjosiah): Deploy fails if `SpaceProperties` schema is imported because its from `client-protocol`.
160
+ const [properties] = yield* Database.runQuery(Filter.typename('org.dxos.type.spaceProperties'));
161
+ const rootCollectionRef = Annotation.get(properties, RootCollectionAnnotation).pipe(Option.getOrUndefined);
162
+ const rootCollection = rootCollectionRef
163
+ ? yield* Database.load<Collection.Collection>(rootCollectionRef)
164
+ : undefined;
165
+
166
+ log.info('rootCollection', { rootCollection });
167
+
168
+ // Create a new markdown document
169
+ const gameName = chessGame.name || 'Chess Game';
170
+ document = yield* Database.add(
171
+ Markdown.make({
172
+ name: `${gameName} Commentary`,
173
+ content: `# ${gameName} Commentary\n\n${commentary}`,
174
+ }),
175
+ );
176
+
177
+ const documentRef = Ref.make(document);
178
+ if (rootCollection) {
179
+ Obj.update(rootCollection, (rootCollection) => {
180
+ rootCollection.objects.push(documentRef);
181
+ });
182
+ }
183
+
184
+ // Create the HasSubject relation
185
+ yield* Database.add(
186
+ Relation.make(HasSubject.HasSubject, {
187
+ [Relation.Source]: document,
188
+ [Relation.Target]: chessGame,
189
+ completedAt: new Date().toISOString(),
190
+ }),
191
+ );
192
+ } else {
193
+ document = docs[0];
194
+
195
+ // Load the text content and append the commentary
196
+ const text = yield* Database.load(document.content);
197
+ const accessor = createDocAccessor(text, ['content']);
198
+ accessor.handle.change((doc: A.Doc<Text.Text>) => {
199
+ A.splice(doc, accessor.path.slice(), text.content.length, 0, commentary);
200
+ });
201
+ }
202
+
203
+ log.info('result', { documentId: Obj.getURI(document), commentary });
204
+
205
+ yield* Database.flush();
206
+
207
+ return {
208
+ documentId: Obj.getURI(document),
209
+ commentary,
210
+ };
211
+ },
212
+ Effect.provide(
213
+ Layer.mergeAll(
214
+ AiService.model('@anthropic/claude-haiku-4-5'),
215
+ ToolResolverService.layerEmpty,
216
+ ToolExecutionService.layerEmpty,
217
+ Trace.writerLayerNoop,
218
+ Database.notAvailable,
219
+ Layer.succeed(Operation.Service, {
220
+ invoke: () => Effect.die('Not available.'),
221
+ schedule: () => Effect.die('Not available.'),
222
+ invokePromise: async () => ({ error: new Error('Not available.') }),
223
+ } as any),
224
+ Layer.succeed(OperationRegistry.Service, { resolve: () => Effect.succeed(undefined) } as any),
225
+ ),
226
+ ),
227
+ ),
228
+ ),
229
+ );
230
+
231
+ const COMMENTARY_SYSTEM_PROMPT = trim`
232
+ You are a professional chess commentator providing live commentary for a chess match.
233
+
234
+ # Style
235
+ - Write in an engaging, enthusiastic style as if commentating for a live audience
236
+ - Be concise but informative (2-4 sentences)
237
+ - Explain the strategic implications of the move
238
+ - Note any tactical elements (captures, threats, checks)
239
+ - Comment on the position and what it means for the game
240
+
241
+ # Format
242
+ - Write in plain text (no markdown formatting in the commentary itself)
243
+ - Be natural and conversational
244
+ - Use chess terminology appropriately but keep it accessible
245
+
246
+ # Special Situations
247
+ - If it's checkmate, express excitement about the conclusion
248
+ - If it's check, note the pressure on the king
249
+ - If a piece is captured, mention the material exchange
250
+ - Comment on the development of pieces and control of key squares when relevant
251
+ `;
@@ -8,7 +8,7 @@ import { Expando, S, create, defineFunction } from 'dxos:functions';
8
8
  import { randText } from 'https://esm.sh/@ngneat/falso@7.1.1?bundle=false';
9
9
 
10
10
  export default defineFunction({
11
- key: 'dxos.org/script/data-generator',
11
+ key: 'org.dxos.script.data-generator',
12
12
  name: 'Data Generator',
13
13
  inputSchema: S.Struct({
14
14
  documentAmount: S.optional(S.Number),
@@ -23,7 +23,7 @@ export default defineFunction({
23
23
  data: { documentAmount = 1, textSize = 10, mutationAmount = 0, waitAfterCreation = 10_000 },
24
24
  context: { space },
25
25
  }: any) => {
26
- await space.db.graph.schemaRegistry.addSchema([Expando]);
26
+ space.db.graph.registry.add([Expando]);
27
27
  const result: Record<string, any> = {};
28
28
  const objects: Expando[] = [];
29
29