@dxos/plugin-script 0.8.4-main.e8ec1fe → 0.8.4-main.effb148878

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 (555) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +15 -13
  3. package/dist/lib/neutral/DeploymentDialog-M3AFYQHC.mjs +114 -0
  4. package/dist/lib/neutral/DeploymentDialog-M3AFYQHC.mjs.map +7 -0
  5. package/dist/lib/{browser/NotebookContainer-RTESC4OV.mjs → neutral/NotebookArticle-NV4AHOOS.mjs} +245 -299
  6. package/dist/lib/neutral/NotebookArticle-NV4AHOOS.mjs.map +7 -0
  7. package/dist/lib/neutral/ScriptArticle-UBT27SB6.mjs +79 -0
  8. package/dist/lib/neutral/ScriptArticle-UBT27SB6.mjs.map +7 -0
  9. package/dist/lib/neutral/ScriptPlugin.mjs +39 -0
  10. package/dist/lib/neutral/ScriptPlugin.mjs.map +7 -0
  11. package/dist/lib/neutral/ScriptPlugin.node.mjs +27 -0
  12. package/dist/lib/neutral/ScriptPlugin.node.mjs.map +7 -0
  13. package/dist/lib/neutral/ScriptPlugin.workerd.mjs +21 -0
  14. package/dist/lib/neutral/ScriptPlugin.workerd.mjs.map +7 -0
  15. package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs +31 -0
  16. package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs.map +7 -0
  17. package/dist/lib/neutral/ScriptProperties-RLXNAN3N.mjs +297 -0
  18. package/dist/lib/neutral/ScriptProperties-RLXNAN3N.mjs.map +7 -0
  19. package/dist/lib/neutral/TestContainer-AFVTBYSJ.mjs +44 -0
  20. package/dist/lib/neutral/TestContainer-AFVTBYSJ.mjs.map +7 -0
  21. package/dist/lib/neutral/app-graph-builder-7AWFCEQF.mjs +52 -0
  22. package/dist/lib/neutral/app-graph-builder-7AWFCEQF.mjs.map +7 -0
  23. package/dist/lib/neutral/blueprint-definition-T33SBPP2.mjs +15 -0
  24. package/dist/lib/neutral/blueprint-definition-T33SBPP2.mjs.map +7 -0
  25. package/dist/lib/neutral/blueprints/index.mjs +10 -0
  26. package/dist/lib/neutral/capabilities/index.mjs +21 -0
  27. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  28. package/dist/lib/neutral/capabilities/node.mjs +17 -0
  29. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-2REUEDUA.mjs +56 -0
  31. package/dist/lib/neutral/chunk-2REUEDUA.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-4H6UOE5J.mjs +123 -0
  33. package/dist/lib/neutral/chunk-4H6UOE5J.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-6XGGYOY2.mjs +36 -0
  35. package/dist/lib/neutral/chunk-6XGGYOY2.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-GD5SNDAA.mjs +8 -0
  37. package/dist/lib/neutral/chunk-GD5SNDAA.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-GYQPDUTK.mjs +105 -0
  39. package/dist/lib/neutral/chunk-GYQPDUTK.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-HJ4BY42S.mjs +8 -0
  41. package/dist/lib/neutral/chunk-HJ4BY42S.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-VXDJH6OL.mjs +150 -0
  43. package/dist/lib/neutral/chunk-VXDJH6OL.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-WEIU4BCS.mjs +52 -0
  45. package/dist/lib/neutral/chunk-WEIU4BCS.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-Y3O3YZSE.mjs +345 -0
  47. package/dist/lib/neutral/chunk-Y3O3YZSE.mjs.map +7 -0
  48. package/dist/lib/neutral/compiler-ODK4UA2N.mjs +101 -0
  49. package/dist/lib/neutral/compiler-ODK4UA2N.mjs.map +7 -0
  50. package/dist/lib/neutral/components/index.mjs +722 -0
  51. package/dist/lib/neutral/components/index.mjs.map +7 -0
  52. package/dist/lib/neutral/containers/index.mjs +17 -0
  53. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  54. package/dist/lib/neutral/create-32MZYUAA.mjs +46 -0
  55. package/dist/lib/neutral/create-32MZYUAA.mjs.map +7 -0
  56. package/dist/lib/neutral/create-object-FZM5ASWM.mjs +45 -0
  57. package/dist/lib/neutral/create-object-FZM5ASWM.mjs.map +7 -0
  58. package/dist/lib/neutral/create-script-6HWJMXMD.mjs +45 -0
  59. package/dist/lib/neutral/create-script-6HWJMXMD.mjs.map +7 -0
  60. package/dist/lib/neutral/delete-475DHFZO.mjs +21 -0
  61. package/dist/lib/neutral/delete-475DHFZO.mjs.map +7 -0
  62. package/dist/lib/neutral/deploy-VMPGXUR2.mjs +63 -0
  63. package/dist/lib/neutral/deploy-VMPGXUR2.mjs.map +7 -0
  64. package/dist/lib/neutral/hooks/index.mjs +369 -0
  65. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  66. package/dist/lib/neutral/index.mjs +41 -0
  67. package/dist/lib/neutral/inspect-invocations-IHZDHE27.mjs +59 -0
  68. package/dist/lib/neutral/inspect-invocations-IHZDHE27.mjs.map +7 -0
  69. package/dist/lib/neutral/install-function-UJWJMTZY.mjs +49 -0
  70. package/dist/lib/neutral/install-function-UJWJMTZY.mjs.map +7 -0
  71. package/dist/lib/neutral/invoke-M7J6LRZB.mjs +32 -0
  72. package/dist/lib/neutral/invoke-M7J6LRZB.mjs.map +7 -0
  73. package/dist/lib/neutral/meta.json +1 -0
  74. package/dist/lib/neutral/meta.mjs +10 -0
  75. package/dist/lib/neutral/operation-handler-MOATB7ZI.mjs +18 -0
  76. package/dist/lib/neutral/operation-handler-MOATB7ZI.mjs.map +7 -0
  77. package/dist/lib/neutral/operations/index.mjs +8 -0
  78. package/dist/lib/neutral/plugin.mjs +16 -0
  79. package/dist/lib/neutral/plugin.mjs.map +7 -0
  80. package/dist/lib/neutral/query-deployed-functions-MZUBGLJG.mjs +34 -0
  81. package/dist/lib/neutral/query-deployed-functions-MZUBGLJG.mjs.map +7 -0
  82. package/dist/lib/neutral/react-surface-DPK6XU2Y.mjs +120 -0
  83. package/dist/lib/neutral/react-surface-DPK6XU2Y.mjs.map +7 -0
  84. package/dist/lib/neutral/read-LWLI7RB2.mjs +26 -0
  85. package/dist/lib/neutral/read-LWLI7RB2.mjs.map +7 -0
  86. package/dist/lib/neutral/settings-VJBW4OMK.mjs +30 -0
  87. package/dist/lib/neutral/settings-VJBW4OMK.mjs.map +7 -0
  88. package/dist/lib/{browser → neutral}/templates/index.mjs +1 -1
  89. package/dist/lib/neutral/translations.mjs +105 -0
  90. package/dist/lib/neutral/translations.mjs.map +7 -0
  91. package/dist/lib/neutral/types/index.mjs +17 -0
  92. package/dist/lib/neutral/update-HTFIQY2Z.mjs +63 -0
  93. package/dist/lib/neutral/update-HTFIQY2Z.mjs.map +7 -0
  94. package/dist/types/src/ScriptPlugin.d.ts +3 -1
  95. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  96. package/dist/types/src/ScriptPlugin.node.d.ts +4 -0
  97. package/dist/types/src/ScriptPlugin.node.d.ts.map +1 -0
  98. package/dist/types/src/ScriptPlugin.test.d.ts +2 -0
  99. package/dist/types/src/ScriptPlugin.test.d.ts.map +1 -0
  100. package/dist/types/src/ScriptPlugin.workerd.d.ts +4 -0
  101. package/dist/types/src/ScriptPlugin.workerd.d.ts.map +1 -0
  102. package/dist/types/src/blueprints/functions/create.d.ts +11 -0
  103. package/dist/types/src/blueprints/functions/create.d.ts.map +1 -0
  104. package/dist/types/src/blueprints/functions/definitions.d.ts +135 -0
  105. package/dist/types/src/blueprints/functions/definitions.d.ts.map +1 -0
  106. package/dist/types/src/blueprints/functions/delete.d.ts +17 -0
  107. package/dist/types/src/blueprints/functions/delete.d.ts.map +1 -0
  108. package/dist/types/src/blueprints/functions/deploy.d.ts +21 -0
  109. package/dist/types/src/blueprints/functions/deploy.d.ts.map +1 -0
  110. package/dist/types/src/blueprints/functions/index.d.ts +4 -0
  111. package/dist/types/src/blueprints/functions/index.d.ts.map +1 -0
  112. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts +28 -0
  113. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts.map +1 -0
  114. package/dist/types/src/blueprints/functions/install-function.d.ts +11 -0
  115. package/dist/types/src/blueprints/functions/install-function.d.ts.map +1 -0
  116. package/dist/types/src/blueprints/functions/invoke.d.ts +21 -0
  117. package/dist/types/src/blueprints/functions/invoke.d.ts.map +1 -0
  118. package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts +13 -0
  119. package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts.map +1 -0
  120. package/dist/types/src/blueprints/functions/read.d.ts +21 -0
  121. package/dist/types/src/blueprints/functions/read.d.ts.map +1 -0
  122. package/dist/types/src/blueprints/functions/update.d.ts +26 -0
  123. package/dist/types/src/blueprints/functions/update.d.ts.map +1 -0
  124. package/dist/types/src/blueprints/index.d.ts +2 -0
  125. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  126. package/dist/types/src/blueprints/script-blueprint.d.ts +4 -0
  127. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
  128. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  129. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  130. package/dist/types/src/capabilities/artifact-definition.d.ts +3 -2
  131. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  132. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -4
  133. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  134. package/dist/types/src/capabilities/compiler.d.ts +3 -1
  135. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  136. package/dist/types/src/capabilities/create-object.d.ts +16 -0
  137. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  138. package/dist/types/src/capabilities/index.d.ts +19 -7
  139. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  140. package/dist/types/src/capabilities/node.d.ts +18 -0
  141. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  142. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  143. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  144. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  145. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  146. package/dist/types/src/capabilities/settings.d.ts +5 -2
  147. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  148. package/dist/types/src/compiler/compiler.d.ts +1 -1
  149. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  150. package/dist/types/src/components/{FrameContainer/FrameContainer.d.ts → FramePanel/FramePanel.d.ts} +3 -3
  151. package/dist/types/src/components/FramePanel/FramePanel.d.ts.map +1 -0
  152. package/dist/types/src/components/FramePanel/index.d.ts +2 -0
  153. package/dist/types/src/components/FramePanel/index.d.ts.map +1 -0
  154. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +4 -4
  155. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  156. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +1 -1
  157. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -1
  158. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +5 -3
  159. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  160. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +221 -226
  161. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  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/ScriptPluginSettings/ScriptPluginSettings.d.ts +8 -0
  169. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
  170. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts +241 -0
  171. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts.map +1 -0
  172. package/dist/types/src/components/ScriptPluginSettings/index.d.ts +2 -0
  173. package/dist/types/src/components/ScriptPluginSettings/index.d.ts.map +1 -0
  174. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +8 -6
  175. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  176. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +221 -226
  177. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  178. package/dist/types/src/components/TestPanel/TestPanel.d.ts +4 -2
  179. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  180. package/dist/types/src/components/TestPanel/index.d.ts +0 -1
  181. package/dist/types/src/components/TestPanel/index.d.ts.map +1 -1
  182. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +6 -2
  183. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  184. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +3 -1
  185. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  186. package/dist/types/src/components/index.d.ts +6 -5
  187. package/dist/types/src/components/index.d.ts.map +1 -1
  188. package/dist/types/src/constants.d.ts +2 -0
  189. package/dist/types/src/constants.d.ts.map +1 -0
  190. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.d.ts +0 -2
  191. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
  192. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts +240 -0
  193. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
  194. package/dist/types/src/containers/DeploymentDialog/index.d.ts +2 -0
  195. package/dist/types/src/containers/DeploymentDialog/index.d.ts.map +1 -0
  196. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts +7 -0
  197. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts.map +1 -0
  198. package/dist/types/src/containers/NotebookArticle/NotebookArticle.stories.d.ts +7 -0
  199. package/dist/types/src/containers/NotebookArticle/NotebookArticle.stories.d.ts.map +1 -0
  200. package/dist/types/src/containers/NotebookArticle/index.d.ts +2 -0
  201. package/dist/types/src/containers/NotebookArticle/index.d.ts.map +1 -0
  202. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts +10 -0
  203. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts.map +1 -0
  204. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts +242 -0
  205. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts.map +1 -0
  206. package/dist/types/src/containers/ScriptArticle/index.d.ts +2 -0
  207. package/dist/types/src/containers/ScriptArticle/index.d.ts.map +1 -0
  208. package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts +7 -0
  209. package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts.map +1 -0
  210. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts +7 -0
  211. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts.map +1 -0
  212. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts +7 -0
  213. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts.map +1 -0
  214. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +6 -0
  215. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
  216. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts +242 -0
  217. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts.map +1 -0
  218. package/dist/types/src/containers/ScriptProperties/index.d.ts +2 -0
  219. package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
  220. package/dist/types/src/containers/TestContainer/TestContainer.d.ts +8 -0
  221. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
  222. package/dist/types/src/containers/TestContainer/index.d.ts +2 -0
  223. package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
  224. package/dist/types/src/containers/index.d.ts +7 -0
  225. package/dist/types/src/containers/index.d.ts.map +1 -0
  226. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  227. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  228. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  229. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  230. package/dist/types/src/hooks/deploy.d.ts +24 -29
  231. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  232. package/dist/types/src/hooks/format.d.ts +4 -3
  233. package/dist/types/src/hooks/format.d.ts.map +1 -1
  234. package/dist/types/src/hooks/index.d.ts +1 -0
  235. package/dist/types/src/hooks/index.d.ts.map +1 -1
  236. package/dist/types/src/hooks/template.d.ts +4 -3
  237. package/dist/types/src/hooks/template.d.ts.map +1 -1
  238. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  239. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  240. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  241. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  242. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  243. package/dist/types/src/index.d.ts +2 -3
  244. package/dist/types/src/index.d.ts.map +1 -1
  245. package/dist/types/src/meta.d.ts +2 -2
  246. package/dist/types/src/meta.d.ts.map +1 -1
  247. package/dist/types/src/notebook/compute-graph.d.ts +25 -12
  248. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -1
  249. package/dist/types/src/notebook/eval.d.ts.map +1 -1
  250. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -1
  251. package/dist/types/src/operations/create-script.d.ts +5 -0
  252. package/dist/types/src/operations/create-script.d.ts.map +1 -0
  253. package/dist/types/src/operations/index.d.ts +3 -0
  254. package/dist/types/src/operations/index.d.ts.map +1 -0
  255. package/dist/types/src/plugin.d.ts +4 -0
  256. package/dist/types/src/plugin.d.ts.map +1 -0
  257. package/dist/types/src/templates/anthropic.d.ts +7 -0
  258. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  259. package/dist/types/src/templates/chat.d.ts.map +1 -1
  260. package/dist/types/src/templates/chess-bot.d.ts +14 -0
  261. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  262. package/dist/types/src/templates/commentary.d.ts +15 -0
  263. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  264. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  265. package/dist/types/src/templates/discord.d.ts.map +1 -1
  266. package/dist/types/src/templates/email.d.ts.map +1 -1
  267. package/dist/types/src/templates/forex-effect.d.ts +5 -1
  268. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  269. package/dist/types/src/templates/forex.d.ts +5 -1
  270. package/dist/types/src/templates/forex.d.ts.map +1 -1
  271. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  272. package/dist/types/src/templates/index.d.ts +33 -24
  273. package/dist/types/src/templates/index.d.ts.map +1 -1
  274. package/dist/types/src/templates/ping.d.ts +2 -4
  275. package/dist/types/src/templates/ping.d.ts.map +1 -1
  276. package/dist/types/src/testing/index.d.ts +2 -1
  277. package/dist/types/src/testing/index.d.ts.map +1 -1
  278. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  279. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  280. package/dist/types/src/testing/test-notebook.d.ts +3 -0
  281. package/dist/types/src/testing/test-notebook.d.ts.map +1 -0
  282. package/dist/types/src/testing/test-script.d.ts +7 -0
  283. package/dist/types/src/testing/test-script.d.ts.map +1 -0
  284. package/dist/types/src/translations.d.ts +222 -90
  285. package/dist/types/src/translations.d.ts.map +1 -1
  286. package/dist/types/src/types/Notebook.d.ts +110 -24
  287. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  288. package/dist/types/src/types/ScriptCapabilities.d.ts +6 -0
  289. package/dist/types/src/types/ScriptCapabilities.d.ts.map +1 -0
  290. package/dist/types/src/types/ScriptEvents.d.ts +3 -0
  291. package/dist/types/src/types/ScriptEvents.d.ts.map +1 -0
  292. package/dist/types/src/types/ScriptOperation.d.ts +29 -0
  293. package/dist/types/src/types/ScriptOperation.d.ts.map +1 -0
  294. package/dist/types/src/types/Settings.d.ts +7 -0
  295. package/dist/types/src/types/Settings.d.ts.map +1 -0
  296. package/dist/types/src/types/index.d.ts +4 -2
  297. package/dist/types/src/types/index.d.ts.map +1 -1
  298. package/dist/types/src/types/types.d.ts +1 -5
  299. package/dist/types/src/types/types.d.ts.map +1 -1
  300. package/dist/types/src/util/deploy.d.ts +2 -2
  301. package/dist/types/src/util/deploy.d.ts.map +1 -1
  302. package/dist/types/src/util/functions.d.ts +2 -2
  303. package/dist/types/src/util/functions.d.ts.map +1 -1
  304. package/dist/types/tsconfig.tsbuildinfo +1 -1
  305. package/package.json +185 -107
  306. package/src/ScriptPlugin.node.ts +21 -0
  307. package/src/ScriptPlugin.test.ts +31 -0
  308. package/src/ScriptPlugin.tsx +24 -94
  309. package/src/ScriptPlugin.workerd.ts +18 -0
  310. package/src/blueprints/functions/create.ts +47 -0
  311. package/src/blueprints/functions/definitions.ts +332 -0
  312. package/src/blueprints/functions/delete.ts +23 -0
  313. package/src/blueprints/functions/deploy.ts +71 -0
  314. package/src/blueprints/functions/index.ts +19 -0
  315. package/src/blueprints/functions/inspect-invocations.ts +56 -0
  316. package/src/blueprints/functions/install-function.ts +56 -0
  317. package/src/blueprints/functions/invoke.ts +34 -0
  318. package/src/blueprints/functions/query-deployed-functions.ts +35 -0
  319. package/src/blueprints/functions/read.ts +29 -0
  320. package/src/blueprints/functions/update.ts +68 -0
  321. package/src/blueprints/index.ts +5 -0
  322. package/src/blueprints/script-blueprint.ts +55 -0
  323. package/src/capabilities/app-graph-builder.ts +40 -58
  324. package/src/capabilities/artifact-definition.ts +99 -97
  325. package/src/capabilities/blueprint-definition.ts +13 -24
  326. package/src/capabilities/compiler.ts +99 -22
  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 -93
  332. package/src/capabilities/settings.ts +26 -14
  333. package/src/compiler/compiler.ts +21 -3
  334. package/src/components/{FrameContainer/FrameContainer.tsx → FramePanel/FramePanel.tsx} +7 -6
  335. package/src/components/{FrameContainer → FramePanel}/index.ts +1 -1
  336. package/src/components/NotebookStack/NotebookCell.tsx +45 -33
  337. package/src/components/NotebookStack/NotebookMenu.tsx +7 -7
  338. package/src/components/NotebookStack/NotebookStack.stories.tsx +24 -25
  339. package/src/components/NotebookStack/NotebookStack.tsx +31 -20
  340. package/src/components/QueryEditor/QueryEditor.stories.tsx +96 -0
  341. package/src/components/QueryEditor/QueryEditor.tsx +49 -0
  342. package/src/components/QueryEditor/index.ts +5 -0
  343. package/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.tsx +32 -0
  344. package/src/components/ScriptPluginSettings/ScriptPluginSettings.tsx +42 -0
  345. package/src/components/ScriptPluginSettings/index.ts +5 -0
  346. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +42 -20
  347. package/src/components/ScriptToolbar/ScriptToolbar.tsx +38 -43
  348. package/src/components/TestPanel/TestPanel.tsx +111 -194
  349. package/src/components/TestPanel/index.ts +0 -1
  350. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +25 -18
  351. package/src/components/TypescriptEditor/TypescriptEditor.tsx +74 -66
  352. package/src/components/index.ts +6 -7
  353. package/src/constants.ts +7 -0
  354. package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +63 -0
  355. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +99 -0
  356. package/src/containers/DeploymentDialog/index.ts +5 -0
  357. package/src/containers/NotebookArticle/NotebookArticle.stories.tsx +85 -0
  358. package/src/containers/NotebookArticle/NotebookArticle.tsx +255 -0
  359. package/src/containers/NotebookArticle/index.ts +5 -0
  360. package/src/containers/ScriptArticle/ScriptArticle.stories.tsx +107 -0
  361. package/src/containers/ScriptArticle/ScriptArticle.tsx +85 -0
  362. package/src/containers/ScriptArticle/index.ts +5 -0
  363. package/src/containers/ScriptProperties/BlueprintEditor.tsx +102 -0
  364. package/src/containers/ScriptProperties/FunctionBinding.tsx +83 -0
  365. package/src/containers/ScriptProperties/FunctionPublishing.tsx +121 -0
  366. package/src/containers/ScriptProperties/ScriptProperties.stories.tsx +76 -0
  367. package/src/containers/ScriptProperties/ScriptProperties.tsx +24 -0
  368. package/src/containers/ScriptProperties/index.ts +5 -0
  369. package/src/containers/TestContainer/TestContainer.tsx +44 -0
  370. package/src/containers/TestContainer/index.ts +5 -0
  371. package/src/containers/index.ts +11 -0
  372. package/src/e2e/ai.test.ts +93 -0
  373. package/src/e2e/deploy.test.ts +66 -0
  374. package/src/hooks/deploy.ts +45 -35
  375. package/src/hooks/format.ts +9 -4
  376. package/src/hooks/index.ts +1 -0
  377. package/src/hooks/template.ts +19 -12
  378. package/src/hooks/useCompiler.ts +25 -0
  379. package/src/hooks/useCreateAndDeployScriptTemplates.ts +15 -20
  380. package/src/hooks/useToolbarState.ts +29 -4
  381. package/src/index.ts +2 -4
  382. package/src/meta.ts +11 -6
  383. package/src/notebook/compute-graph.test.ts +21 -9
  384. package/src/notebook/compute-graph.ts +46 -22
  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 +49 -0
  390. package/src/templates/chat.ts +1 -1
  391. package/src/templates/chess-bot.ts +63 -0
  392. package/src/templates/commentary.ts +248 -0
  393. package/src/templates/data-generator.ts +2 -2
  394. package/src/templates/discord.ts +5 -5
  395. package/src/templates/forex-effect.ts +35 -29
  396. package/src/templates/forex.ts +27 -17
  397. package/src/templates/gmail.ts +6 -6
  398. package/src/templates/index.ts +31 -18
  399. package/src/templates/ping.ts +22 -5
  400. package/src/testing/index.ts +2 -1
  401. package/src/testing/simulator.test.ts +39 -0
  402. package/src/testing/{data.ts → test-notebook.ts} +12 -13
  403. package/src/testing/test-script.ts +28 -0
  404. package/src/translations.ts +89 -87
  405. package/src/types/Notebook.ts +20 -19
  406. package/src/types/ScriptCapabilities.ts +18 -0
  407. package/src/types/ScriptEvents.ts +11 -0
  408. package/src/types/ScriptOperation.ts +42 -0
  409. package/src/types/Settings.ts +20 -0
  410. package/src/types/index.ts +5 -2
  411. package/src/types/types.ts +1 -11
  412. package/src/util/deploy.ts +29 -33
  413. package/src/util/functions.ts +32 -28
  414. package/src/vite-env.d.ts +2 -0
  415. package/dist/lib/browser/DeploymentDialog-MZX4T77L.mjs +0 -14
  416. package/dist/lib/browser/NotebookContainer-RTESC4OV.mjs.map +0 -7
  417. package/dist/lib/browser/ScriptContainer-T2BAZDJ4.mjs +0 -147
  418. package/dist/lib/browser/ScriptContainer-T2BAZDJ4.mjs.map +0 -7
  419. package/dist/lib/browser/app-graph-builder-2WR2ATTJ.mjs +0 -66
  420. package/dist/lib/browser/app-graph-builder-2WR2ATTJ.mjs.map +0 -7
  421. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs +0 -30
  422. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs.map +0 -7
  423. package/dist/lib/browser/chunk-2G2NA6DQ.mjs +0 -88
  424. package/dist/lib/browser/chunk-2G2NA6DQ.mjs.map +0 -7
  425. package/dist/lib/browser/chunk-3IJASGG5.mjs +0 -155
  426. package/dist/lib/browser/chunk-3IJASGG5.mjs.map +0 -7
  427. package/dist/lib/browser/chunk-4M7U2WVT.mjs +0 -304
  428. package/dist/lib/browser/chunk-4M7U2WVT.mjs.map +0 -7
  429. package/dist/lib/browser/chunk-5JSNQYZZ.mjs +0 -517
  430. package/dist/lib/browser/chunk-5JSNQYZZ.mjs.map +0 -7
  431. package/dist/lib/browser/chunk-EB6AXFXO.mjs +0 -31
  432. package/dist/lib/browser/chunk-EB6AXFXO.mjs.map +0 -7
  433. package/dist/lib/browser/chunk-GAFCKEII.mjs +0 -646
  434. package/dist/lib/browser/chunk-GAFCKEII.mjs.map +0 -7
  435. package/dist/lib/browser/chunk-LNNCD2H4.mjs +0 -102
  436. package/dist/lib/browser/chunk-LNNCD2H4.mjs.map +0 -7
  437. package/dist/lib/browser/chunk-M6KJPUJK.mjs +0 -111
  438. package/dist/lib/browser/chunk-M6KJPUJK.mjs.map +0 -7
  439. package/dist/lib/browser/chunk-UOQ6NCH3.mjs +0 -15
  440. package/dist/lib/browser/chunk-UOQ6NCH3.mjs.map +0 -7
  441. package/dist/lib/browser/compiler-4KHRSX7J.mjs +0 -86
  442. package/dist/lib/browser/compiler-4KHRSX7J.mjs.map +0 -7
  443. package/dist/lib/browser/index.mjs +0 -273
  444. package/dist/lib/browser/index.mjs.map +0 -7
  445. package/dist/lib/browser/intent-resolver-AFJ575VK.mjs +0 -104
  446. package/dist/lib/browser/intent-resolver-AFJ575VK.mjs.map +0 -7
  447. package/dist/lib/browser/meta.json +0 -1
  448. package/dist/lib/browser/react-surface-QEQ3QUQA.mjs +0 -128
  449. package/dist/lib/browser/react-surface-QEQ3QUQA.mjs.map +0 -7
  450. package/dist/lib/browser/settings-LNLSTZM4.mjs +0 -26
  451. package/dist/lib/browser/settings-LNLSTZM4.mjs.map +0 -7
  452. package/dist/lib/browser/types/index.mjs +0 -14
  453. package/dist/lib/node-esm/DeploymentDialog-GL5AUWMR.mjs +0 -15
  454. package/dist/lib/node-esm/NotebookContainer-SVD3A3D6.mjs +0 -818
  455. package/dist/lib/node-esm/NotebookContainer-SVD3A3D6.mjs.map +0 -7
  456. package/dist/lib/node-esm/ScriptContainer-2CE3H3JJ.mjs +0 -148
  457. package/dist/lib/node-esm/ScriptContainer-2CE3H3JJ.mjs.map +0 -7
  458. package/dist/lib/node-esm/app-graph-builder-NCVLUL5R.mjs +0 -67
  459. package/dist/lib/node-esm/app-graph-builder-NCVLUL5R.mjs.map +0 -7
  460. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs +0 -31
  461. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs.map +0 -7
  462. package/dist/lib/node-esm/chunk-55JZVM6K.mjs +0 -16
  463. package/dist/lib/node-esm/chunk-55JZVM6K.mjs.map +0 -7
  464. package/dist/lib/node-esm/chunk-57JA6XL5.mjs +0 -90
  465. package/dist/lib/node-esm/chunk-57JA6XL5.mjs.map +0 -7
  466. package/dist/lib/node-esm/chunk-HDKR5WCD.mjs +0 -113
  467. package/dist/lib/node-esm/chunk-HDKR5WCD.mjs.map +0 -7
  468. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  469. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  470. package/dist/lib/node-esm/chunk-IBV2DR36.mjs +0 -33
  471. package/dist/lib/node-esm/chunk-IBV2DR36.mjs.map +0 -7
  472. package/dist/lib/node-esm/chunk-IQTBVH4L.mjs +0 -518
  473. package/dist/lib/node-esm/chunk-IQTBVH4L.mjs.map +0 -7
  474. package/dist/lib/node-esm/chunk-KJKZ4KNO.mjs +0 -647
  475. package/dist/lib/node-esm/chunk-KJKZ4KNO.mjs.map +0 -7
  476. package/dist/lib/node-esm/chunk-NNHWLRHT.mjs +0 -103
  477. package/dist/lib/node-esm/chunk-NNHWLRHT.mjs.map +0 -7
  478. package/dist/lib/node-esm/chunk-RIE676OW.mjs +0 -156
  479. package/dist/lib/node-esm/chunk-RIE676OW.mjs.map +0 -7
  480. package/dist/lib/node-esm/chunk-YRTA4EHU.mjs +0 -305
  481. package/dist/lib/node-esm/chunk-YRTA4EHU.mjs.map +0 -7
  482. package/dist/lib/node-esm/compiler-DU5NQISX.mjs +0 -87
  483. package/dist/lib/node-esm/compiler-DU5NQISX.mjs.map +0 -7
  484. package/dist/lib/node-esm/index.mjs +0 -274
  485. package/dist/lib/node-esm/index.mjs.map +0 -7
  486. package/dist/lib/node-esm/intent-resolver-A5VVK746.mjs +0 -105
  487. package/dist/lib/node-esm/intent-resolver-A5VVK746.mjs.map +0 -7
  488. package/dist/lib/node-esm/meta.json +0 -1
  489. package/dist/lib/node-esm/react-surface-U77YT7VF.mjs +0 -129
  490. package/dist/lib/node-esm/react-surface-U77YT7VF.mjs.map +0 -7
  491. package/dist/lib/node-esm/settings-IUFMOCXY.mjs +0 -27
  492. package/dist/lib/node-esm/settings-IUFMOCXY.mjs.map +0 -7
  493. package/dist/lib/node-esm/templates/index.mjs +0 -11
  494. package/dist/lib/node-esm/types/index.mjs +0 -15
  495. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  496. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  497. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  498. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  499. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
  500. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +0 -248
  501. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +0 -1
  502. package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
  503. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
  504. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +0 -1
  505. package/dist/types/src/components/FrameContainer/frame.d.ts +0 -2
  506. package/dist/types/src/components/FrameContainer/frame.d.ts.map +0 -1
  507. package/dist/types/src/components/FrameContainer/index.d.ts +0 -2
  508. package/dist/types/src/components/FrameContainer/index.d.ts.map +0 -1
  509. package/dist/types/src/components/NotebookContainer.d.ts +0 -10
  510. package/dist/types/src/components/NotebookContainer.d.ts.map +0 -1
  511. package/dist/types/src/components/NotebookContainer.stories.d.ts +0 -251
  512. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +0 -1
  513. package/dist/types/src/components/ScriptContainer.d.ts +0 -12
  514. package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
  515. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +0 -8
  516. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
  517. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +0 -6
  518. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
  519. package/dist/types/src/components/Settings/index.d.ts +0 -3
  520. package/dist/types/src/components/Settings/index.d.ts.map +0 -1
  521. package/dist/types/src/components/TestPanel/TestContainer.d.ts +0 -8
  522. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
  523. package/dist/types/src/events.d.ts +0 -4
  524. package/dist/types/src/events.d.ts.map +0 -1
  525. package/dist/types/src/templates/chess.d.ts +0 -3
  526. package/dist/types/src/templates/chess.d.ts.map +0 -1
  527. package/dist/types/src/testing/data.d.ts +0 -3
  528. package/dist/types/src/testing/data.d.ts.map +0 -1
  529. package/dist/types/src/types/actions.d.ts +0 -54
  530. package/dist/types/src/types/actions.d.ts.map +0 -1
  531. package/src/capabilities/capabilities.ts +0 -12
  532. package/src/capabilities/intent-resolver.ts +0 -86
  533. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +0 -58
  534. package/src/components/DeploymentDialog/DeploymentDialog.tsx +0 -123
  535. package/src/components/DeploymentDialog/index.ts +0 -9
  536. package/src/components/FrameContainer/frame.html +0 -25
  537. package/src/components/FrameContainer/frame.tsx +0 -51
  538. package/src/components/NotebookContainer.stories.tsx +0 -83
  539. package/src/components/NotebookContainer.tsx +0 -263
  540. package/src/components/ScriptContainer.tsx +0 -69
  541. package/src/components/Settings/ScriptObjectSettings.tsx +0 -297
  542. package/src/components/Settings/ScriptPluginSettings.tsx +0 -61
  543. package/src/components/Settings/index.ts +0 -6
  544. package/src/components/TestPanel/TestContainer.tsx +0 -27
  545. package/src/events.ts +0 -11
  546. package/src/templates/chess.ts +0 -49
  547. package/src/types/actions.ts +0 -53
  548. /package/dist/lib/{browser/templates → neutral/blueprints}/index.mjs.map +0 -0
  549. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  550. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
  551. /package/dist/lib/{browser/types → neutral}/index.mjs.map +0 -0
  552. /package/dist/lib/{browser/DeploymentDialog-MZX4T77L.mjs.map → neutral/meta.mjs.map} +0 -0
  553. /package/dist/lib/{node-esm/templates → neutral/operations}/index.mjs.map +0 -0
  554. /package/dist/lib/{node-esm/types → neutral/templates}/index.mjs.map +0 -0
  555. /package/dist/lib/{node-esm/DeploymentDialog-GL5AUWMR.mjs.map → neutral/types/index.mjs.map} +0 -0
@@ -2,8 +2,9 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { Script } from '@dxos/compute';
5
6
  import { Obj } from '@dxos/echo';
6
- import { FUNCTIONS_PRESET_META_KEY, type Script } from '@dxos/functions';
7
+ import { FUNCTIONS_PRESET_META_KEY } from '@dxos/functions';
7
8
  import { createMenuAction } from '@dxos/react-ui-menu';
8
9
 
9
10
  import { templates } from '../templates';
@@ -15,15 +16,21 @@ const createTemplateSelectActions = (script: Script.Script) => {
15
16
  return createMenuAction<TemplateActionProperties>(
16
17
  `template--${template.id}`,
17
18
  () => {
18
- script.name = template.name;
19
- script.source!.target!.content = template.source;
20
- const metaKeys = Obj.getMeta(script).keys;
21
- const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
22
- if (oldPresetIndex >= 0) {
23
- metaKeys.splice(oldPresetIndex, 1);
24
- }
25
- if ('presetId' in template) {
26
- metaKeys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });
19
+ Obj.update(script, (script) => {
20
+ script.name = template.name;
21
+ const meta = Obj.getMeta(script);
22
+ const oldPresetIndex = meta.keys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
23
+ if (oldPresetIndex >= 0) {
24
+ meta.keys.splice(oldPresetIndex, 1);
25
+ }
26
+ if ('presetId' in template) {
27
+ meta.keys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });
28
+ }
29
+ });
30
+ if (script.source?.target) {
31
+ Obj.update(script.source.target, (obj) => {
32
+ obj.content = template.source;
33
+ });
27
34
  }
28
35
  },
29
36
  {
@@ -40,8 +47,8 @@ export const createTemplateSelect = (script: Script.Script) => {
40
47
  return {
41
48
  nodes: [...templateSelectActions],
42
49
  edges: [
43
- { source: 'root', target: 'template-select' },
44
- ...templateSelectActions.map((action) => ({ source: 'template-select', target: action.id })),
50
+ { source: 'root', target: 'template-select', relation: 'child' },
51
+ ...templateSelectActions.map((action) => ({ source: 'template-select', target: action.id, relation: 'child' })),
45
52
  ],
46
53
  };
47
54
  };
@@ -0,0 +1,25 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useCapabilities, usePluginManager } from '@dxos/app-framework/ui';
6
+ import { runAndForwardErrors } from '@dxos/effect';
7
+ import { useAsyncEffect } from '@dxos/react-ui';
8
+
9
+ import { ScriptEvents } from '#types';
10
+ import { ScriptCapabilities } from '#types';
11
+
12
+ import type { Compiler } from '../compiler';
13
+
14
+ /**
15
+ * Asynchronously sets up the compiler and returns it.
16
+ * @returns The compiler instance or undefined if it is not ready.
17
+ */
18
+ export const useCompiler = (): Compiler | undefined => {
19
+ const manager = usePluginManager();
20
+ useAsyncEffect(async () => {
21
+ await manager.activate(ScriptEvents.SetupCompiler).pipe(runAndForwardErrors);
22
+ }, [manager]);
23
+ const [compiler] = useCapabilities(ScriptCapabilities.Compiler);
24
+ return compiler;
25
+ };
@@ -2,20 +2,19 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import * as Function from 'effect/Function';
6
5
  import { useCallback, useState } from 'react';
7
6
 
8
- import { chain, createIntent } from '@dxos/app-framework';
9
- import { useIntentDispatcher } from '@dxos/app-framework/react';
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { Script } from '@dxos/compute';
10
9
  import { Obj } from '@dxos/echo';
11
- import { Script } from '@dxos/functions';
12
10
  import { invariant } from '@dxos/invariant';
13
- import { SpaceAction } from '@dxos/plugin-space/types';
11
+ import { SpaceOperation } from '@dxos/plugin-space';
14
12
  import { useClient } from '@dxos/react-client';
15
13
  import { type Space } from '@dxos/react-client/echo';
16
14
 
15
+ import { ScriptOperation } from '#types';
16
+
17
17
  import { type Template } from '../templates';
18
- import { ScriptAction } from '../types';
19
18
  import { deployScript } from '../util';
20
19
 
21
20
  type DeploymentStatus = 'idle' | 'pending' | 'success' | 'error';
@@ -28,7 +27,7 @@ type DeploymentStatus = 'idle' | 'pending' | 'success' | 'error';
28
27
  * All creation / deployment operations run concurrently for improved performance.
29
28
  */
30
29
  export const useCreateAndDeployScriptTemplates = (space: Space | undefined, scriptTemplates: Template[]) => {
31
- const { dispatchPromise: dispatch } = useIntentDispatcher();
30
+ const { invokePromise } = useOperationInvoker();
32
31
  const client = useClient();
33
32
  const [status, setStatus] = useState<DeploymentStatus>('idle');
34
33
  const [error, setError] = useState<Error | undefined>(undefined);
@@ -40,24 +39,20 @@ export const useCreateAndDeployScriptTemplates = (space: Space | undefined, scri
40
39
 
41
40
  const deploymentResults = await Promise.all(
42
41
  scriptTemplates.map(async (template) => {
43
- const result = await dispatch(
44
- Function.pipe(
45
- createIntent(ScriptAction.CreateScript, {
46
- space,
47
- initialTemplateId: template.id as any,
48
- }),
49
- chain(SpaceAction.AddObject, { target: space }),
50
- ),
51
- );
52
- invariant(Obj.instanceOf(Script.Script, result.data?.object));
53
-
54
- return deployScript({ space, client, script: result.data.object });
42
+ const createResult = await invokePromise(ScriptOperation.CreateScript, {
43
+ db: space.db,
44
+ initialTemplateId: template.id as any,
45
+ });
46
+ invariant(Obj.instanceOf(Script.Script, createResult.data?.object));
47
+ await invokePromise(SpaceOperation.AddObject, { target: space.db, object: createResult.data.object });
48
+
49
+ return deployScript({ space, client, script: createResult.data.object });
55
50
  }),
56
51
  );
57
52
 
58
53
  const hasErrors = deploymentResults.some((result) => !result.success);
59
54
  setStatus(hasErrors ? 'error' : 'success');
60
- }, [space, dispatch, client, scriptTemplates]);
55
+ }, [space, invokePromise, client, scriptTemplates]);
61
56
 
62
57
  // TODO(burdon): Return onCreateAndDeployScripts.
63
58
  return { handleCreateAndDeployScripts, status, error };
@@ -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,9 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export { ScriptCapabilities } from './capabilities';
6
- export * from './components';
5
+ export * from './blueprints';
7
6
  export * from './meta';
7
+ export * from './types';
8
8
  export * from './util';
9
-
10
- export * from './ScriptPlugin';
package/src/meta.ts CHANGED
@@ -2,15 +2,20 @@
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
6
  import { trim } from '@dxos/util';
7
7
 
8
- export const meta: PluginMeta = {
9
- id: 'dxos.org/plugin/script',
8
+ export const meta: Plugin.Meta = {
9
+ id: 'org.dxos.plugin.script',
10
10
  name: 'Scripts',
11
+ author: 'DXOS',
12
+ spec: 'PLUGIN.mdl',
11
13
  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
+ Write, deploy, and run custom TypeScript functions as ECHO objects directly inside your Composer spaces.
15
+ Scripts execute on the Cloudflare Workers-based EDGE runtime and have access to the full DXOS SDK,
16
+ Effect-TS, and a curated set of third-party libraries including HTTP, JSON, CSV, and date utilities.
17
+ An AI Script assistant wires CRUD, deploy, invoke, and invocation-inspection operations as tools
18
+ so an agent can scaffold, iterate, and test functions entirely within a chat session.
14
19
  `,
15
20
  icon: 'ph--code--regular',
16
21
  iconHue: 'sky',
@@ -22,5 +27,5 @@ export const meta: PluginMeta = {
22
27
  // TODO(ZaymonFC): Configure by scopes?
23
28
  export const defaultScriptsForIntegration: Record<string, string[]> = {
24
29
  // TODO(wittjosiah): Also include content extraction scripts in the default set.
25
- 'gmail.com': ['dxos.org/script/gmail'],
30
+ 'gmail.com': ['org.dxos.script.gmail'],
26
31
  };
@@ -2,16 +2,20 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { Registry } from '@effect-atom/atom-react';
5
6
  import { describe, expect, test } from 'vitest';
6
7
 
7
- import { createNotebook } from '../testing';
8
+ import { Obj } from '@dxos/echo';
9
+
10
+ import { createNotebook } from '#testing';
8
11
 
9
12
  import { ComputeGraph } from './compute-graph';
10
13
 
11
14
  describe('notebook', () => {
12
15
  test('parse dependency graph', async () => {
16
+ const registry = Registry.make();
13
17
  const notebook = createNotebook();
14
- const graph = new ComputeGraph(notebook);
18
+ const graph = new ComputeGraph(notebook, registry);
15
19
  const result = graph.parse();
16
20
 
17
21
  const getId = (i: number) => notebook.cells[i].id;
@@ -34,13 +38,17 @@ describe('notebook', () => {
34
38
  });
35
39
 
36
40
  test('evalScript blocks access to window and document', async () => {
41
+ const registry = Registry.make();
37
42
  const notebook = createNotebook();
38
43
  // Replace one of the cells with code that tries to access window/document.
39
- if (notebook.cells[2].source?.target) {
40
- notebook.cells[2].source.target.content = 'b = typeof window';
44
+ const sourceTarget = notebook.cells[2].source?.target;
45
+ if (sourceTarget) {
46
+ Obj.update(sourceTarget, (sourceTarget) => {
47
+ sourceTarget.content = 'b = typeof window';
48
+ });
41
49
  }
42
50
 
43
- const graph = new ComputeGraph(notebook);
51
+ const graph = new ComputeGraph(notebook, registry);
44
52
  graph.parse();
45
53
  const values = await graph.evaluate();
46
54
 
@@ -48,8 +56,10 @@ describe('notebook', () => {
48
56
  expect(values[notebook.cells[2].id]).toBe('undefined');
49
57
 
50
58
  // Test document access.
51
- if (notebook.cells[2].source?.target) {
52
- notebook.cells[2].source.target.content = 'b = typeof document';
59
+ if (sourceTarget) {
60
+ Obj.update(sourceTarget, (sourceTarget) => {
61
+ sourceTarget.content = 'b = typeof document';
62
+ });
53
63
  }
54
64
  graph.parse();
55
65
  const values2 = await graph.evaluate();
@@ -58,8 +68,10 @@ describe('notebook', () => {
58
68
  expect(values2[notebook.cells[2].id]).toBe('undefined');
59
69
 
60
70
  // Test that safe globals still work.
61
- if (notebook.cells[2].source?.target) {
62
- notebook.cells[2].source.target.content = 'b = Math.max(100, 200)';
71
+ if (sourceTarget) {
72
+ Obj.update(sourceTarget, (sourceTarget) => {
73
+ sourceTarget.content = 'b = Math.max(100, 200)';
74
+ });
63
75
  }
64
76
  graph.parse();
65
77
  const values3 = await graph.evaluate();
@@ -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';
@@ -18,38 +18,62 @@ import { type ParsedExpression, VirtualTypeScriptParser } from './vfs-parser';
18
18
  export class ComputeGraph {
19
19
  private readonly _parser = new VirtualTypeScriptParser();
20
20
 
21
- private _expressions = signal<Record<string, ParsedExpression>>({});
22
- private _valuesByCellId = signal<Record<string, any>>({});
23
- private _valuesByName = 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>>({});
24
24
 
25
- constructor(private readonly _notebook: Notebook.Notebook) {}
25
+ constructor(
26
+ private readonly _notebook: Notebook.Notebook,
27
+ private readonly _registry: Registry.Registry,
28
+ ) {}
26
29
 
27
30
  /**
28
- * Parsed expressions by cell ID.
31
+ * Atom for parsed expressions by cell ID.
29
32
  */
30
- get expressions(): Signal<Record<string, ParsedExpression>> {
31
- return this._expressions;
33
+ get expressions(): Atom.Atom<Record<string, ParsedExpression>> {
34
+ return this._expressionsAtom;
32
35
  }
33
36
 
34
37
  /**
35
- * Computed values by cell ID.
38
+ * Get current expressions by cell ID.
36
39
  */
37
- get values(): Signal<Record<string, any>> {
38
- return this._valuesByCellId;
40
+ getExpressions(): Record<string, ParsedExpression> {
41
+ return this._registry.get(this._expressionsAtom);
39
42
  }
40
43
 
41
44
  /**
42
- * Computed values by name.
45
+ * Atom for computed values by cell ID.
43
46
  */
44
- get valuesByName(): Signal<Record<string, any>> {
45
- return this._valuesByName;
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);
46
70
  }
47
71
 
48
72
  /**
49
73
  * Get computed value by cell ID.
50
74
  */
51
- getValue(cellId: string) {
52
- return this._valuesByCellId.value[cellId];
75
+ getValue(cellId: string): any {
76
+ return this._registry.get(this._valuesByCellIdAtom)[cellId];
53
77
  }
54
78
 
55
79
  /**
@@ -58,8 +82,8 @@ export class ComputeGraph {
58
82
  async evaluate() {
59
83
  // Parse expressions.
60
84
  const { expressions, dependencyGraph } = this.parse();
61
- this._valuesByCellId.value = {};
62
- this._valuesByName.value = {};
85
+ this._registry.set(this._valuesByCellIdAtom, {});
86
+ this._registry.set(this._valuesByNameAtom, {});
63
87
 
64
88
  // Create a map of cell IDs to expressions for easy lookup.
65
89
  const cellExpressions = new Map<string, ParsedExpression>();
@@ -124,8 +148,8 @@ export class ComputeGraph {
124
148
  }
125
149
  }
126
150
 
127
- this._valuesByCellId.value = valuesByCellId;
128
- this._valuesByName.value = valuesByName;
151
+ this._registry.set(this._valuesByCellIdAtom, valuesByCellId);
152
+ this._registry.set(this._valuesByNameAtom, valuesByName);
129
153
  return valuesByCellId;
130
154
  }
131
155
 
@@ -151,7 +175,7 @@ export class ComputeGraph {
151
175
 
152
176
  // Build dependency graph.
153
177
  const dependencyGraph = this.buildDependencyGraph(expressions);
154
- this._expressions.value = expressions;
178
+ this._registry.set(this._expressionsAtom, expressions);
155
179
  return { expressions, dependencyGraph };
156
180
  }
157
181
 
@@ -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,49 @@
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
+
14
+ const Anthropic = Operation.make({
15
+ meta: {
16
+ key: 'org.dxos.script.anthropic',
17
+ name: 'Anthropic Chat',
18
+ description: 'Chat with Anthropic',
19
+ },
20
+ input: Schema.Struct({
21
+ message: Schema.String,
22
+ }),
23
+ output: Schema.Any,
24
+ services: [AiService.AiService],
25
+ });
26
+
27
+ export default Anthropic.pipe(
28
+ Operation.withHandler(
29
+ Effect.fn(function* ({ message }) {
30
+ const model = (yield* AiService.AiService).model('@anthropic/claude-sonnet-4-5');
31
+
32
+ //
33
+ // Basic example.
34
+ //
35
+ const { text } = yield* LanguageModel.generateText({ prompt: message }).pipe(Effect.provide(model));
36
+
37
+ //
38
+ // Streaming example.
39
+ //
40
+ const parts = yield* LanguageModel.streamText({
41
+ prompt: 'Count from 1 to 5, one number per line.',
42
+ }).pipe(Stream.runCollect, Effect.map(Chunk.toArray), Effect.provide(model));
43
+ const textDeltas = parts.filter((p) => p.type === 'text-delta');
44
+ const fullText = textDeltas.map((p) => (p as { delta: string }).delta).join('');
45
+
46
+ return { response: text, streamText: fullText };
47
+ }),
48
+ ),
49
+ );
@@ -76,7 +76,7 @@ export default async ({ data: { bodyText }, context: { space, ai } }: any) => {
76
76
 
77
77
  const getContext = async ({ space }: any) => {
78
78
  let context = '';
79
- const { objects: docs } = await space.crud.query({ __typename: 'dxos.org/type/Document' }).run();
79
+ const { objects: docs } = await space.crud.query({ __typename: 'org.dxos.type.document' }).run();
80
80
  for (const doc of docs) {
81
81
  const { content } = await space.crud.query({ id: doc.content }).first();
82
82
  context += content + '\n\n';
@@ -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 } 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: 'org.dxos.script.chess-bot',
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
+ );