@dxos/plugin-script 0.8.4-main.7ace549 → 0.8.4-main.8baae0fced

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 (553) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +15 -13
  3. package/dist/lib/neutral/DeploymentDialog-6DBF3V6C.mjs +112 -0
  4. package/dist/lib/neutral/DeploymentDialog-6DBF3V6C.mjs.map +7 -0
  5. package/dist/lib/{browser/NotebookContainer-MHY3DXDE.mjs → neutral/NotebookArticle-VBBVX4BW.mjs} +245 -299
  6. package/dist/lib/neutral/NotebookArticle-VBBVX4BW.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/{browser/chunk-EB6AXFXO.mjs → neutral/chunk-436PZKYX.mjs} +4 -3
  33. package/dist/lib/neutral/chunk-436PZKYX.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-4OWPUMGN.mjs +8 -0
  35. package/dist/lib/neutral/chunk-4OWPUMGN.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-A4LRH25S.mjs +105 -0
  37. package/dist/lib/neutral/chunk-A4LRH25S.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-BDRB6ZX2.mjs +52 -0
  39. package/dist/lib/neutral/chunk-BDRB6ZX2.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-BMO5VOKL.mjs +125 -0
  41. package/dist/lib/neutral/chunk-BMO5VOKL.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-MI6X5CTJ.mjs +336 -0
  43. package/dist/lib/neutral/chunk-MI6X5CTJ.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-SNUWHNEW.mjs +8 -0
  45. package/dist/lib/neutral/chunk-SNUWHNEW.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-VXDJH6OL.mjs +150 -0
  47. package/dist/lib/neutral/chunk-VXDJH6OL.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 +721 -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-ZUHIXCBS.mjs +46 -0
  55. package/dist/lib/neutral/create-ZUHIXCBS.mjs.map +7 -0
  56. package/dist/lib/neutral/create-object-F2NWICFV.mjs +44 -0
  57. package/dist/lib/neutral/create-object-F2NWICFV.mjs.map +7 -0
  58. package/dist/lib/neutral/create-script-H5S4AO47.mjs +45 -0
  59. package/dist/lib/neutral/create-script-H5S4AO47.mjs.map +7 -0
  60. package/dist/lib/neutral/delete-PAUWA2QM.mjs +21 -0
  61. package/dist/lib/neutral/delete-PAUWA2QM.mjs.map +7 -0
  62. package/dist/lib/neutral/deploy-M73G7HMP.mjs +63 -0
  63. package/dist/lib/neutral/deploy-M73G7HMP.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-UO27IPCL.mjs +59 -0
  68. package/dist/lib/neutral/inspect-invocations-UO27IPCL.mjs.map +7 -0
  69. package/dist/lib/neutral/install-function-MSWSC244.mjs +49 -0
  70. package/dist/lib/neutral/install-function-MSWSC244.mjs.map +7 -0
  71. package/dist/lib/neutral/invoke-V6XYXKLD.mjs +32 -0
  72. package/dist/lib/neutral/invoke-V6XYXKLD.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-KIZ7XZ5G.mjs +18 -0
  76. package/dist/lib/neutral/operation-handler-KIZ7XZ5G.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-4MMKQ6BR.mjs +34 -0
  81. package/dist/lib/neutral/query-deployed-functions-4MMKQ6BR.mjs.map +7 -0
  82. package/dist/lib/neutral/react-surface-K4SSUR57.mjs +120 -0
  83. package/dist/lib/neutral/react-surface-K4SSUR57.mjs.map +7 -0
  84. package/dist/lib/neutral/read-FFOSK6A3.mjs +26 -0
  85. package/dist/lib/neutral/read-FFOSK6A3.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 +104 -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-PJS5GG3Y.mjs +63 -0
  93. package/dist/lib/neutral/update-PJS5GG3Y.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 +129 -0
  105. package/dist/types/src/blueprints/functions/definitions.d.ts.map +1 -0
  106. package/dist/types/src/blueprints/functions/delete.d.ts +16 -0
  107. package/dist/types/src/blueprints/functions/delete.d.ts.map +1 -0
  108. package/dist/types/src/blueprints/functions/deploy.d.ts +20 -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 +27 -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 +20 -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 +20 -0
  121. package/dist/types/src/blueprints/functions/read.d.ts.map +1 -0
  122. package/dist/types/src/blueprints/functions/update.d.ts +25 -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 -229
  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 -229
  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 +20 -26
  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 +12 -0
  261. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  262. package/dist/types/src/templates/commentary.d.ts +13 -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 -92
  285. package/dist/types/src/translations.d.ts.map +1 -1
  286. package/dist/types/src/types/Notebook.d.ts +109 -22
  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 +178 -101
  306. package/src/ScriptPlugin.node.ts +21 -0
  307. package/src/ScriptPlugin.test.ts +31 -0
  308. package/src/ScriptPlugin.tsx +23 -80
  309. package/src/ScriptPlugin.workerd.ts +18 -0
  310. package/src/blueprints/functions/create.ts +47 -0
  311. package/src/blueprints/functions/definitions.ts +323 -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 +48 -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 +42 -32
  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 +110 -194
  349. package/src/components/TestPanel/index.ts +0 -1
  350. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +24 -17
  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/{components/NotebookContainer.tsx → containers/NotebookArticle/NotebookArticle.tsx} +93 -98
  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 +42 -33
  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 +5 -4
  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 +3 -3
  395. package/src/templates/forex-effect.ts +35 -29
  396. package/src/templates/forex.ts +27 -17
  397. package/src/templates/gmail.ts +4 -4
  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} +11 -12
  403. package/src/testing/test-script.ts +28 -0
  404. package/src/translations.ts +86 -87
  405. package/src/types/Notebook.ts +18 -15
  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 +25 -29
  413. package/src/util/functions.ts +30 -27
  414. package/src/vite-env.d.ts +2 -0
  415. package/dist/lib/browser/DeploymentDialog-5TKNGPVR.mjs +0 -14
  416. package/dist/lib/browser/NotebookContainer-MHY3DXDE.mjs.map +0 -7
  417. package/dist/lib/browser/ScriptContainer-CW6YN3DQ.mjs +0 -148
  418. package/dist/lib/browser/ScriptContainer-CW6YN3DQ.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-ALS6X4HU.mjs +0 -304
  426. package/dist/lib/browser/chunk-ALS6X4HU.mjs.map +0 -7
  427. package/dist/lib/browser/chunk-EB6AXFXO.mjs.map +0 -7
  428. package/dist/lib/browser/chunk-M6KJPUJK.mjs +0 -111
  429. package/dist/lib/browser/chunk-M6KJPUJK.mjs.map +0 -7
  430. package/dist/lib/browser/chunk-N5EYLQOT.mjs +0 -647
  431. package/dist/lib/browser/chunk-N5EYLQOT.mjs.map +0 -7
  432. package/dist/lib/browser/chunk-QIZ3BPRK.mjs +0 -103
  433. package/dist/lib/browser/chunk-QIZ3BPRK.mjs.map +0 -7
  434. package/dist/lib/browser/chunk-SAN5Y7FI.mjs +0 -155
  435. package/dist/lib/browser/chunk-SAN5Y7FI.mjs.map +0 -7
  436. package/dist/lib/browser/chunk-ULJFT73Q.mjs +0 -513
  437. package/dist/lib/browser/chunk-ULJFT73Q.mjs.map +0 -7
  438. package/dist/lib/browser/chunk-UOQ6NCH3.mjs +0 -15
  439. package/dist/lib/browser/chunk-UOQ6NCH3.mjs.map +0 -7
  440. package/dist/lib/browser/compiler-4KHRSX7J.mjs +0 -86
  441. package/dist/lib/browser/compiler-4KHRSX7J.mjs.map +0 -7
  442. package/dist/lib/browser/index.mjs +0 -268
  443. package/dist/lib/browser/index.mjs.map +0 -7
  444. package/dist/lib/browser/intent-resolver-TXTBWOVD.mjs +0 -104
  445. package/dist/lib/browser/intent-resolver-TXTBWOVD.mjs.map +0 -7
  446. package/dist/lib/browser/meta.json +0 -1
  447. package/dist/lib/browser/react-surface-R245YN52.mjs +0 -128
  448. package/dist/lib/browser/react-surface-R245YN52.mjs.map +0 -7
  449. package/dist/lib/browser/settings-MHJXRGDF.mjs +0 -26
  450. package/dist/lib/browser/settings-MHJXRGDF.mjs.map +0 -7
  451. package/dist/lib/browser/types/index.mjs +0 -14
  452. package/dist/lib/node-esm/DeploymentDialog-2ULNOZQH.mjs +0 -15
  453. package/dist/lib/node-esm/NotebookContainer-U4C2HQ4T.mjs +0 -818
  454. package/dist/lib/node-esm/NotebookContainer-U4C2HQ4T.mjs.map +0 -7
  455. package/dist/lib/node-esm/ScriptContainer-VRPEKB4T.mjs +0 -149
  456. package/dist/lib/node-esm/ScriptContainer-VRPEKB4T.mjs.map +0 -7
  457. package/dist/lib/node-esm/app-graph-builder-NCVLUL5R.mjs +0 -67
  458. package/dist/lib/node-esm/app-graph-builder-NCVLUL5R.mjs.map +0 -7
  459. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs +0 -31
  460. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs.map +0 -7
  461. package/dist/lib/node-esm/chunk-55JZVM6K.mjs +0 -16
  462. package/dist/lib/node-esm/chunk-55JZVM6K.mjs.map +0 -7
  463. package/dist/lib/node-esm/chunk-57JA6XL5.mjs +0 -90
  464. package/dist/lib/node-esm/chunk-57JA6XL5.mjs.map +0 -7
  465. package/dist/lib/node-esm/chunk-HDKR5WCD.mjs +0 -113
  466. package/dist/lib/node-esm/chunk-HDKR5WCD.mjs.map +0 -7
  467. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  468. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  469. package/dist/lib/node-esm/chunk-IBV2DR36.mjs +0 -33
  470. package/dist/lib/node-esm/chunk-IBV2DR36.mjs.map +0 -7
  471. package/dist/lib/node-esm/chunk-ND4BPYPR.mjs +0 -156
  472. package/dist/lib/node-esm/chunk-ND4BPYPR.mjs.map +0 -7
  473. package/dist/lib/node-esm/chunk-UEVZP5DN.mjs +0 -648
  474. package/dist/lib/node-esm/chunk-UEVZP5DN.mjs.map +0 -7
  475. package/dist/lib/node-esm/chunk-VJSRZRLI.mjs +0 -514
  476. package/dist/lib/node-esm/chunk-VJSRZRLI.mjs.map +0 -7
  477. package/dist/lib/node-esm/chunk-VTRMJSQL.mjs +0 -305
  478. package/dist/lib/node-esm/chunk-VTRMJSQL.mjs.map +0 -7
  479. package/dist/lib/node-esm/chunk-XYKKDWUR.mjs +0 -104
  480. package/dist/lib/node-esm/chunk-XYKKDWUR.mjs.map +0 -7
  481. package/dist/lib/node-esm/compiler-DU5NQISX.mjs +0 -87
  482. package/dist/lib/node-esm/compiler-DU5NQISX.mjs.map +0 -7
  483. package/dist/lib/node-esm/index.mjs +0 -269
  484. package/dist/lib/node-esm/index.mjs.map +0 -7
  485. package/dist/lib/node-esm/intent-resolver-D6AVAQRA.mjs +0 -105
  486. package/dist/lib/node-esm/intent-resolver-D6AVAQRA.mjs.map +0 -7
  487. package/dist/lib/node-esm/meta.json +0 -1
  488. package/dist/lib/node-esm/react-surface-MHT3PJ6C.mjs +0 -129
  489. package/dist/lib/node-esm/react-surface-MHT3PJ6C.mjs.map +0 -7
  490. package/dist/lib/node-esm/settings-BVJORMMJ.mjs +0 -27
  491. package/dist/lib/node-esm/settings-BVJORMMJ.mjs.map +0 -7
  492. package/dist/lib/node-esm/templates/index.mjs +0 -11
  493. package/dist/lib/node-esm/types/index.mjs +0 -15
  494. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  495. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  496. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  497. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  498. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
  499. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +0 -251
  500. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +0 -1
  501. package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
  502. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
  503. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +0 -1
  504. package/dist/types/src/components/FrameContainer/frame.d.ts +0 -2
  505. package/dist/types/src/components/FrameContainer/frame.d.ts.map +0 -1
  506. package/dist/types/src/components/FrameContainer/index.d.ts +0 -2
  507. package/dist/types/src/components/FrameContainer/index.d.ts.map +0 -1
  508. package/dist/types/src/components/NotebookContainer.d.ts +0 -10
  509. package/dist/types/src/components/NotebookContainer.d.ts.map +0 -1
  510. package/dist/types/src/components/NotebookContainer.stories.d.ts +0 -254
  511. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +0 -1
  512. package/dist/types/src/components/ScriptContainer.d.ts +0 -12
  513. package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
  514. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +0 -8
  515. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
  516. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +0 -6
  517. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
  518. package/dist/types/src/components/Settings/index.d.ts +0 -3
  519. package/dist/types/src/components/Settings/index.d.ts.map +0 -1
  520. package/dist/types/src/components/TestPanel/TestContainer.d.ts +0 -8
  521. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
  522. package/dist/types/src/events.d.ts +0 -4
  523. package/dist/types/src/events.d.ts.map +0 -1
  524. package/dist/types/src/templates/chess.d.ts +0 -3
  525. package/dist/types/src/templates/chess.d.ts.map +0 -1
  526. package/dist/types/src/testing/data.d.ts +0 -3
  527. package/dist/types/src/testing/data.d.ts.map +0 -1
  528. package/dist/types/src/types/actions.d.ts +0 -54
  529. package/dist/types/src/types/actions.d.ts.map +0 -1
  530. package/src/capabilities/capabilities.ts +0 -12
  531. package/src/capabilities/intent-resolver.ts +0 -86
  532. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +0 -58
  533. package/src/components/DeploymentDialog/DeploymentDialog.tsx +0 -123
  534. package/src/components/DeploymentDialog/index.ts +0 -9
  535. package/src/components/FrameContainer/frame.html +0 -25
  536. package/src/components/FrameContainer/frame.tsx +0 -51
  537. package/src/components/NotebookContainer.stories.tsx +0 -83
  538. package/src/components/ScriptContainer.tsx +0 -70
  539. package/src/components/Settings/ScriptObjectSettings.tsx +0 -298
  540. package/src/components/Settings/ScriptPluginSettings.tsx +0 -61
  541. package/src/components/Settings/index.ts +0 -6
  542. package/src/components/TestPanel/TestContainer.tsx +0 -27
  543. package/src/events.ts +0 -11
  544. package/src/templates/chess.ts +0 -49
  545. package/src/types/actions.ts +0 -53
  546. /package/dist/lib/{browser/templates → neutral/blueprints}/index.mjs.map +0 -0
  547. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  548. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
  549. /package/dist/lib/{browser/types → neutral}/index.mjs.map +0 -0
  550. /package/dist/lib/{browser/DeploymentDialog-5TKNGPVR.mjs.map → neutral/meta.mjs.map} +0 -0
  551. /package/dist/lib/{node-esm/templates → neutral/operations}/index.mjs.map +0 -0
  552. /package/dist/lib/{node-esm/types → neutral/templates}/index.mjs.map +0 -0
  553. /package/dist/lib/{node-esm/DeploymentDialog-2ULNOZQH.mjs.map → neutral/types/index.mjs.map} +0 -0
@@ -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
+ );
@@ -0,0 +1,248 @@
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 { AiRequest, GenerationObserver } from '@dxos/assistant';
16
+ import { ArtifactId } from '@dxos/assistant';
17
+ import { Trace, Operation, OperationRegistry } from '@dxos/compute';
18
+ import { Collection, Database, Filter, Obj, Ref, Relation } 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: '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: ArtifactId.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.getDXN(Relation.getTarget(relation)).toString(),
129
+ game: Obj.getDXN(chessGame).toString(),
130
+ });
131
+ return Obj.getDXN(Relation.getTarget(relation)).toString() === Obj.getDXN(chessGame).toString();
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 rootCollection = yield* Database.load<Collection.Collection>(
162
+ properties[Collection.Collection.typename],
163
+ );
164
+
165
+ log.info('rootCollection', { rootCollection });
166
+
167
+ // Create a new markdown document
168
+ const gameName = chessGame.name || 'Chess Game';
169
+ document = yield* Database.add(
170
+ Markdown.make({
171
+ name: `${gameName} Commentary`,
172
+ content: `# ${gameName} Commentary\n\n${commentary}`,
173
+ }),
174
+ );
175
+
176
+ const documentRef = Ref.make(document);
177
+ Obj.update(rootCollection, (rootCollection) => {
178
+ rootCollection.objects.push(documentRef);
179
+ });
180
+
181
+ // Create the HasSubject relation
182
+ yield* Database.add(
183
+ Relation.make(HasSubject.HasSubject, {
184
+ [Relation.Source]: document,
185
+ [Relation.Target]: chessGame,
186
+ completedAt: new Date().toISOString(),
187
+ }),
188
+ );
189
+ } else {
190
+ document = docs[0];
191
+
192
+ // Load the text content and append the commentary
193
+ const text = yield* Database.load(document.content);
194
+ const accessor = createDocAccessor(text, ['content']);
195
+ accessor.handle.change((doc: A.Doc<Text.Text>) => {
196
+ A.splice(doc, accessor.path.slice(), text.content.length, 0, commentary);
197
+ });
198
+ }
199
+
200
+ log.info('result', { documentId: Obj.getDXN(document).toString(), commentary });
201
+
202
+ yield* Database.flush();
203
+
204
+ return {
205
+ documentId: Obj.getDXN(document).toString(),
206
+ commentary,
207
+ };
208
+ },
209
+ Effect.provide(
210
+ Layer.mergeAll(
211
+ AiService.model('@anthropic/claude-haiku-4-5'),
212
+ ToolResolverService.layerEmpty,
213
+ ToolExecutionService.layerEmpty,
214
+ Trace.writerLayerNoop,
215
+ Database.notAvailable,
216
+ Layer.succeed(Operation.Service, {
217
+ invoke: () => Effect.die('Not available.'),
218
+ schedule: () => Effect.die('Not available.'),
219
+ invokePromise: async () => ({ error: new Error('Not available.') }),
220
+ } as any),
221
+ Layer.succeed(OperationRegistry.Service, { resolve: () => Effect.succeed(undefined) } as any),
222
+ ),
223
+ ),
224
+ ),
225
+ ),
226
+ );
227
+
228
+ const COMMENTARY_SYSTEM_PROMPT = trim`
229
+ You are a professional chess commentator providing live commentary for a chess match.
230
+
231
+ # Style
232
+ - Write in an engaging, enthusiastic style as if commentating for a live audience
233
+ - Be concise but informative (2-4 sentences)
234
+ - Explain the strategic implications of the move
235
+ - Note any tactical elements (captures, threats, checks)
236
+ - Comment on the position and what it means for the game
237
+
238
+ # Format
239
+ - Write in plain text (no markdown formatting in the commentary itself)
240
+ - Be natural and conversational
241
+ - Use chess terminology appropriately but keep it accessible
242
+
243
+ # Special Situations
244
+ - If it's checkmate, express excitement about the conclusion
245
+ - If it's check, note the pressure on the king
246
+ - If a piece is captured, mention the material exchange
247
+ - Comment on the development of pieces and control of key squares when relevant
248
+ `;
@@ -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
+ await space.db.graph.schemaRegistry.register([Expando]);
27
27
  const result: Record<string, any> = {};
28
28
  const objects: Expando[] = [];
29
29
 
@@ -29,7 +29,7 @@ const MessageSchema = S.Struct({
29
29
  content: S.String,
30
30
  }).pipe(
31
31
  EchoObject({
32
- typename: 'example.com/type/Message',
32
+ typename: 'com.example.type.message',
33
33
  version: '0.1.0',
34
34
  }),
35
35
  );
@@ -42,7 +42,7 @@ const generateSnowflake = (unixTimestamp: number): bigint => {
42
42
  };
43
43
 
44
44
  export default defineFunction({
45
- key: 'dxos.org/script/discord',
45
+ key: 'org.dxos.script.discord',
46
46
  name: 'Discord',
47
47
  inputSchema: S.Struct({
48
48
  // TODO(wittjosiah): Remove. This is used to provide a terminal for a cron trigger.
@@ -60,7 +60,7 @@ export default defineFunction({
60
60
  handler: ({ data: { channelId, queueId, after = DEFAULT_AFTER, pageSize = 5 }, context: { space } }: any) =>
61
61
  Effect.gen(function* () {
62
62
  const { token } = yield* Effect.tryPromise({
63
- try: () => space.db.query(Filter.typename('dxos.org/type/AccessToken', { source: 'discord.com' })).first(),
63
+ try: () => space.db.query(Filter.typename('org.dxos.type.accessToken', { source: 'discord.com' })).first(),
64
64
  catch: (e: any) => e,
65
65
  });
66
66
  const { objects } = yield* Effect.tryPromise({
@@ -2,41 +2,47 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- // @ts-ignore
6
- import { S, defineFunction } from 'dxos:functions';
7
- import {
8
- FetchHttpClient,
9
- HttpClient,
10
- HttpClientRequest,
11
- // @ts-ignore
12
- } from 'https://esm.sh/@effect/platform@0.89.0?deps=effect@3.17.0&bundle=false';
13
- // @ts-ignore
14
- import * as Effect from 'https://esm.sh/effect@3.17.0/Effect?bundle=false';
15
- // @ts-ignore
16
- import * as Schedule from 'https://esm.sh/effect@3.17.0/Schedule?bundle=false';
5
+ import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
6
+ import * as HttpClient from '@effect/platform/HttpClient';
7
+ import * as HttpClientRequest from '@effect/platform/HttpClientRequest';
8
+ import * as Effect from 'effect/Effect';
9
+ import * as Schedule from 'effect/Schedule';
10
+ import * as Schema from 'effect/Schema';
17
11
 
18
- export default defineFunction({
19
- key: 'dxos.org/script/forex-effect',
20
- name: 'Forex Effect',
21
- description: 'Returns the exchange rate between two currencies.',
12
+ import { Operation } from '@dxos/compute';
22
13
 
23
- inputSchema: S.Struct({
24
- from: S.String.annotations({ description: 'The source currency' }),
25
- to: S.String.annotations({ description: 'The target currency' }),
14
+ const ForexEffect = Operation.make({
15
+ meta: {
16
+ key: 'org.dxos.script.forex-effect',
17
+ name: 'Forex Effect',
18
+ description: 'Returns the exchange rate between two currencies.',
19
+ },
20
+ input: Schema.Struct({
21
+ from: Schema.String.annotations({ description: 'The source currency' }),
22
+ to: Schema.String.annotations({ description: 'The target currency' }),
26
23
  }),
24
+ output: Schema.Any,
25
+ });
27
26
 
28
- outputSchema: S.String.annotations({ description: 'The exchange rate between the two currencies' }),
29
-
30
- handler: async ({ data: { from, to } }: any) =>
31
- Effect.gen(function* () {
32
- const res = yield* HttpClientRequest.get(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`).pipe(
27
+ export default ForexEffect.pipe(
28
+ Operation.withHandler(
29
+ Effect.fnUntraced(function* ({ from: rawFrom, to: rawTo }) {
30
+ const from = rawFrom.toUpperCase();
31
+ const to = rawTo.toUpperCase();
32
+ const json: any = yield* HttpClientRequest.get(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`).pipe(
33
33
  HttpClient.execute,
34
- Effect.flatMap((res: any) => res.json),
35
- Effect.timeout('1 second'),
34
+ Effect.flatMap((response) => response.json),
35
+ Effect.timeout('5 seconds'),
36
36
  Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),
37
37
  Effect.scoped,
38
38
  );
39
39
 
40
- return res.data.rates[to].toString();
41
- }).pipe(Effect.provide(FetchHttpClient.layer)),
42
- });
40
+ const rate = json?.data?.rates?.[to];
41
+ if (rate == null) {
42
+ return yield* Effect.fail(new Error(`No rate found for ${from} -> ${to}`));
43
+ }
44
+
45
+ return rate.toString();
46
+ }, Effect.provide(FetchHttpClient.layer)),
47
+ ),
48
+ );
@@ -2,25 +2,35 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- // @ts-ignore
6
- import { S, defineFunction } from 'dxos:functions';
5
+ import * as Effect from 'effect/Effect';
6
+ import * as Schema from 'effect/Schema';
7
7
 
8
- export default defineFunction({
9
- key: 'dxos.org/script/forex',
10
- name: 'Forex',
11
- description: 'Returns the exchange rate between two currencies.',
8
+ import { Operation } from '@dxos/compute';
12
9
 
13
- inputSchema: S.Struct({
14
- from: S.String.annotations({ description: 'The source currency' }),
15
- to: S.String.annotations({ description: 'The target currency' }),
10
+ const Forex = Operation.make({
11
+ meta: {
12
+ key: 'org.dxos.script.forex',
13
+ name: 'Forex',
14
+ description: 'Returns the exchange rate between two currencies.',
15
+ },
16
+ input: Schema.Struct({
17
+ from: Schema.String.annotations({ description: 'The source currency' }),
18
+ to: Schema.String.annotations({ description: 'The target currency' }),
16
19
  }),
20
+ output: Schema.Any,
21
+ });
17
22
 
18
- handler: async ({ data: { from, to } }: any) => {
19
- const res = await fetch(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`);
20
- const {
21
- data: { rates },
22
- } = await res.json();
23
+ export default Forex.pipe(
24
+ Operation.withHandler(
25
+ Effect.fn(function* ({ from: rawFrom, to: rawTo }) {
26
+ const from = rawFrom.toUpperCase();
27
+ const to = rawTo.toUpperCase();
28
+ const res = yield* Effect.promise(() => fetch(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`));
29
+ const {
30
+ data: { rates },
31
+ } = yield* Effect.promise(() => res.json());
23
32
 
24
- return rates[to].toString();
25
- },
26
- });
33
+ return rates[to].toString();
34
+ }),
35
+ ),
36
+ );