@dxos/plugin-script 0.8.4-main.ae835ea → 0.8.4-main.bcb3aa67d6

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 (510) hide show
  1. package/README.md +15 -13
  2. package/dist/lib/browser/DeploymentDialog-WUND47NK.mjs +115 -0
  3. package/dist/lib/browser/DeploymentDialog-WUND47NK.mjs.map +7 -0
  4. package/dist/lib/browser/{NotebookContainer-C36N7AFF.mjs → NotebookContainer-TGHMYWWK.mjs} +275 -254
  5. package/dist/lib/browser/NotebookContainer-TGHMYWWK.mjs.map +7 -0
  6. package/dist/lib/browser/ScriptContainer-BOCXMLNN.mjs +82 -0
  7. package/dist/lib/browser/ScriptContainer-BOCXMLNN.mjs.map +7 -0
  8. package/dist/lib/browser/ScriptObjectSettings-QKJFTSLS.mjs +295 -0
  9. package/dist/lib/browser/ScriptObjectSettings-QKJFTSLS.mjs.map +7 -0
  10. package/dist/lib/browser/ScriptPluginSettings-AMWZF7LZ.mjs +47 -0
  11. package/dist/lib/browser/ScriptPluginSettings-AMWZF7LZ.mjs.map +7 -0
  12. package/dist/lib/browser/ScriptProperties-VBOIIRJJ.mjs +26 -0
  13. package/dist/lib/browser/ScriptProperties-VBOIIRJJ.mjs.map +7 -0
  14. package/dist/lib/browser/TestContainer-5VNOC6I3.mjs +50 -0
  15. package/dist/lib/browser/TestContainer-5VNOC6I3.mjs.map +7 -0
  16. package/dist/lib/browser/access-token-created-XR7LB2XV.mjs +37 -0
  17. package/dist/lib/browser/access-token-created-XR7LB2XV.mjs.map +7 -0
  18. package/dist/lib/browser/blueprints/index.mjs +58 -0
  19. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-AE5EX2VP.mjs +78 -0
  21. package/dist/lib/browser/chunk-AE5EX2VP.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-DL37UOJE.mjs +105 -0
  23. package/dist/lib/browser/chunk-DL37UOJE.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-TXVJW26E.mjs +50 -0
  25. package/dist/lib/browser/chunk-TXVJW26E.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-ZLF66W2O.mjs +337 -0
  27. package/dist/lib/browser/chunk-ZLF66W2O.mjs.map +7 -0
  28. package/dist/lib/browser/create-V3MRNIUS.mjs +45 -0
  29. package/dist/lib/browser/create-V3MRNIUS.mjs.map +7 -0
  30. package/dist/lib/browser/create-script-IEY3HJ33.mjs +46 -0
  31. package/dist/lib/browser/create-script-IEY3HJ33.mjs.map +7 -0
  32. package/dist/lib/browser/delete-7QKDZ2QS.mjs +21 -0
  33. package/dist/lib/browser/delete-7QKDZ2QS.mjs.map +7 -0
  34. package/dist/lib/browser/deploy-SM2V6SNL.mjs +65 -0
  35. package/dist/lib/browser/deploy-SM2V6SNL.mjs.map +7 -0
  36. package/dist/lib/browser/index.mjs +1179 -232
  37. package/dist/lib/browser/index.mjs.map +4 -4
  38. package/dist/lib/browser/inspect-invocations-L4GAXXT3.mjs +55 -0
  39. package/dist/lib/browser/inspect-invocations-L4GAXXT3.mjs.map +7 -0
  40. package/dist/lib/browser/install-function-YDAA5EB6.mjs +54 -0
  41. package/dist/lib/browser/install-function-YDAA5EB6.mjs.map +7 -0
  42. package/dist/lib/browser/invoke-OKJMYOZB.mjs +36 -0
  43. package/dist/lib/browser/invoke-OKJMYOZB.mjs.map +7 -0
  44. package/dist/lib/browser/meta.json +1 -1
  45. package/dist/lib/browser/operations/index.mjs +14 -0
  46. package/dist/lib/browser/operations/index.mjs.map +7 -0
  47. package/dist/lib/browser/query-deployed-functions-L3SIQHB5.mjs +33 -0
  48. package/dist/lib/browser/query-deployed-functions-L3SIQHB5.mjs.map +7 -0
  49. package/dist/lib/browser/read-YL7TNJC7.mjs +26 -0
  50. package/dist/lib/browser/read-YL7TNJC7.mjs.map +7 -0
  51. package/dist/lib/browser/templates/index.mjs +1 -1
  52. package/dist/lib/browser/types/index.mjs +7 -7
  53. package/dist/lib/browser/update-4RC6QH62.mjs +63 -0
  54. package/dist/lib/browser/update-4RC6QH62.mjs.map +7 -0
  55. package/dist/lib/node-esm/DeploymentDialog-XMR2CKP6.mjs +116 -0
  56. package/dist/lib/node-esm/DeploymentDialog-XMR2CKP6.mjs.map +7 -0
  57. package/dist/lib/node-esm/{NotebookContainer-FOVFGJQR.mjs → NotebookContainer-YUVZF6IS.mjs} +275 -254
  58. package/dist/lib/node-esm/NotebookContainer-YUVZF6IS.mjs.map +7 -0
  59. package/dist/lib/node-esm/ScriptContainer-G4D2YSFE.mjs +83 -0
  60. package/dist/lib/node-esm/ScriptContainer-G4D2YSFE.mjs.map +7 -0
  61. package/dist/lib/node-esm/ScriptObjectSettings-XIOE66BL.mjs +296 -0
  62. package/dist/lib/node-esm/ScriptObjectSettings-XIOE66BL.mjs.map +7 -0
  63. package/dist/lib/node-esm/ScriptPluginSettings-SDWEDLUU.mjs +48 -0
  64. package/dist/lib/node-esm/ScriptPluginSettings-SDWEDLUU.mjs.map +7 -0
  65. package/dist/lib/node-esm/ScriptProperties-5H2Z4XRF.mjs +27 -0
  66. package/dist/lib/node-esm/ScriptProperties-5H2Z4XRF.mjs.map +7 -0
  67. package/dist/lib/node-esm/TestContainer-SEFC4F2O.mjs +51 -0
  68. package/dist/lib/node-esm/TestContainer-SEFC4F2O.mjs.map +7 -0
  69. package/dist/lib/node-esm/access-token-created-AZEUHFPA.mjs +38 -0
  70. package/dist/lib/node-esm/access-token-created-AZEUHFPA.mjs.map +7 -0
  71. package/dist/lib/node-esm/blueprints/index.mjs +59 -0
  72. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-ELIPYPNQ.mjs +79 -0
  74. package/dist/lib/node-esm/chunk-ELIPYPNQ.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-QZMVI6AH.mjs +339 -0
  76. package/dist/lib/node-esm/chunk-QZMVI6AH.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-U2LUPXPK.mjs +51 -0
  78. package/dist/lib/node-esm/chunk-U2LUPXPK.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-ZLTGO4XB.mjs +107 -0
  80. package/dist/lib/node-esm/chunk-ZLTGO4XB.mjs.map +7 -0
  81. package/dist/lib/node-esm/create-XQAER3WF.mjs +46 -0
  82. package/dist/lib/node-esm/create-XQAER3WF.mjs.map +7 -0
  83. package/dist/lib/node-esm/create-script-2CGVQ3AU.mjs +47 -0
  84. package/dist/lib/node-esm/create-script-2CGVQ3AU.mjs.map +7 -0
  85. package/dist/lib/node-esm/delete-JA2S3K6Z.mjs +22 -0
  86. package/dist/lib/node-esm/delete-JA2S3K6Z.mjs.map +7 -0
  87. package/dist/lib/node-esm/deploy-FILYYRWE.mjs +66 -0
  88. package/dist/lib/node-esm/deploy-FILYYRWE.mjs.map +7 -0
  89. package/dist/lib/node-esm/index.mjs +1179 -232
  90. package/dist/lib/node-esm/index.mjs.map +4 -4
  91. package/dist/lib/node-esm/inspect-invocations-PLSHQCFM.mjs +56 -0
  92. package/dist/lib/node-esm/inspect-invocations-PLSHQCFM.mjs.map +7 -0
  93. package/dist/lib/node-esm/install-function-4TVXEWYF.mjs +55 -0
  94. package/dist/lib/node-esm/install-function-4TVXEWYF.mjs.map +7 -0
  95. package/dist/lib/node-esm/invoke-J4Z7CS44.mjs +37 -0
  96. package/dist/lib/node-esm/invoke-J4Z7CS44.mjs.map +7 -0
  97. package/dist/lib/node-esm/meta.json +1 -1
  98. package/dist/lib/node-esm/operations/index.mjs +15 -0
  99. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  100. package/dist/lib/node-esm/query-deployed-functions-JBYIJGLW.mjs +34 -0
  101. package/dist/lib/node-esm/query-deployed-functions-JBYIJGLW.mjs.map +7 -0
  102. package/dist/lib/node-esm/read-HDE5XOGZ.mjs +27 -0
  103. package/dist/lib/node-esm/read-HDE5XOGZ.mjs.map +7 -0
  104. package/dist/lib/node-esm/templates/index.mjs +1 -1
  105. package/dist/lib/node-esm/types/index.mjs +7 -7
  106. package/dist/lib/node-esm/update-6O53SY6U.mjs +64 -0
  107. package/dist/lib/node-esm/update-6O53SY6U.mjs.map +7 -0
  108. package/dist/types/src/ScriptPlugin.d.ts +2 -1
  109. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  110. package/dist/types/src/blueprints/functions/create.d.ts +11 -0
  111. package/dist/types/src/blueprints/functions/create.d.ts.map +1 -0
  112. package/dist/types/src/blueprints/functions/definitions.d.ts +142 -0
  113. package/dist/types/src/blueprints/functions/definitions.d.ts.map +1 -0
  114. package/dist/types/src/blueprints/functions/delete.d.ts +18 -0
  115. package/dist/types/src/blueprints/functions/delete.d.ts.map +1 -0
  116. package/dist/types/src/blueprints/functions/deploy.d.ts +22 -0
  117. package/dist/types/src/blueprints/functions/deploy.d.ts.map +1 -0
  118. package/dist/types/src/blueprints/functions/index.d.ts +4 -0
  119. package/dist/types/src/blueprints/functions/index.d.ts.map +1 -0
  120. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts +30 -0
  121. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts.map +1 -0
  122. package/dist/types/src/blueprints/functions/install-function.d.ts +11 -0
  123. package/dist/types/src/blueprints/functions/install-function.d.ts.map +1 -0
  124. package/dist/types/src/blueprints/functions/invoke.d.ts +22 -0
  125. package/dist/types/src/blueprints/functions/invoke.d.ts.map +1 -0
  126. package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts +13 -0
  127. package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts.map +1 -0
  128. package/dist/types/src/blueprints/functions/read.d.ts +22 -0
  129. package/dist/types/src/blueprints/functions/read.d.ts.map +1 -0
  130. package/dist/types/src/blueprints/functions/update.d.ts +27 -0
  131. package/dist/types/src/blueprints/functions/update.d.ts.map +1 -0
  132. package/dist/types/src/blueprints/index.d.ts +2 -0
  133. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  134. package/dist/types/src/blueprints/script-blueprint.d.ts +4 -0
  135. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
  136. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  137. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  138. package/dist/types/src/capabilities/artifact-definition.d.ts +3 -2
  139. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  140. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -4
  141. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  142. package/dist/types/src/capabilities/compiler.d.ts +3 -1
  143. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  144. package/dist/types/src/capabilities/index.d.ts +12 -7
  145. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  146. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  147. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  148. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  149. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  150. package/dist/types/src/capabilities/settings.d.ts +8 -2
  151. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  152. package/dist/types/src/compiler/compiler.d.ts +1 -1
  153. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  154. package/dist/types/src/components/FramePanel/FramePanel.d.ts +12 -0
  155. package/dist/types/src/components/FramePanel/FramePanel.d.ts.map +1 -0
  156. package/dist/types/src/components/FramePanel/index.d.ts +2 -0
  157. package/dist/types/src/components/FramePanel/index.d.ts.map +1 -0
  158. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +4 -4
  159. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  160. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +1 -1
  161. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -1
  162. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +9 -3
  163. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  164. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +242 -226
  165. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  167. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  168. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  169. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  170. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  171. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  172. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts +8 -0
  173. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
  174. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts +262 -0
  175. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts.map +1 -0
  176. package/dist/types/src/components/ScriptPluginSettings/index.d.ts +3 -0
  177. package/dist/types/src/components/ScriptPluginSettings/index.d.ts.map +1 -0
  178. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +11 -5
  179. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  180. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +242 -226
  181. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  182. package/dist/types/src/components/TestPanel/TestPanel.d.ts +8 -2
  183. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  184. package/dist/types/src/components/TestPanel/index.d.ts +0 -1
  185. package/dist/types/src/components/TestPanel/index.d.ts.map +1 -1
  186. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +9 -2
  187. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  188. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +7 -1
  189. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  190. package/dist/types/src/components/index.d.ts +6 -5
  191. package/dist/types/src/components/index.d.ts.map +1 -1
  192. package/dist/types/src/constants.d.ts +2 -0
  193. package/dist/types/src/constants.d.ts.map +1 -0
  194. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.d.ts +2 -4
  195. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
  196. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts +261 -0
  197. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
  198. package/dist/types/src/containers/DeploymentDialog/index.d.ts +3 -0
  199. package/dist/types/src/containers/DeploymentDialog/index.d.ts.map +1 -0
  200. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts +7 -0
  201. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts.map +1 -0
  202. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts +7 -0
  203. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts.map +1 -0
  204. package/dist/types/src/containers/NotebookContainer/index.d.ts +3 -0
  205. package/dist/types/src/containers/NotebookContainer/index.d.ts.map +1 -0
  206. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts +10 -0
  207. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts.map +1 -0
  208. package/dist/types/src/containers/ScriptContainer/index.d.ts +3 -0
  209. package/dist/types/src/containers/ScriptContainer/index.d.ts.map +1 -0
  210. package/dist/types/src/{components/Settings → containers/ScriptObjectSettings}/ScriptObjectSettings.d.ts +0 -1
  211. package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts.map +1 -0
  212. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts +3 -0
  213. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts.map +1 -0
  214. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +7 -0
  215. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
  216. package/dist/types/src/containers/ScriptProperties/index.d.ts +3 -0
  217. package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
  218. package/dist/types/src/{components/TestPanel → containers/TestContainer}/TestContainer.d.ts +1 -1
  219. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
  220. package/dist/types/src/containers/TestContainer/index.d.ts +3 -0
  221. package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
  222. package/dist/types/src/containers/index.d.ts +8 -0
  223. package/dist/types/src/containers/index.d.ts.map +1 -0
  224. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  225. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  226. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  227. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  228. package/dist/types/src/hooks/deploy.d.ts +25 -26
  229. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  230. package/dist/types/src/hooks/format.d.ts +3 -2
  231. package/dist/types/src/hooks/format.d.ts.map +1 -1
  232. package/dist/types/src/hooks/index.d.ts +1 -0
  233. package/dist/types/src/hooks/index.d.ts.map +1 -1
  234. package/dist/types/src/hooks/template.d.ts +3 -2
  235. package/dist/types/src/hooks/template.d.ts.map +1 -1
  236. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  237. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  238. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  239. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  240. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  241. package/dist/types/src/index.d.ts +2 -1
  242. package/dist/types/src/index.d.ts.map +1 -1
  243. package/dist/types/src/meta.d.ts +2 -2
  244. package/dist/types/src/meta.d.ts.map +1 -1
  245. package/dist/types/src/notebook/compute-graph.d.ts +25 -12
  246. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -1
  247. package/dist/types/src/operations/access-token-created.d.ts +5 -0
  248. package/dist/types/src/operations/access-token-created.d.ts.map +1 -0
  249. package/dist/types/src/operations/create-script.d.ts +5 -0
  250. package/dist/types/src/operations/create-script.d.ts.map +1 -0
  251. package/dist/types/src/operations/definitions.d.ts +29 -0
  252. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  253. package/dist/types/src/operations/index.d.ts +4 -0
  254. package/dist/types/src/operations/index.d.ts.map +1 -0
  255. package/dist/types/src/templates/anthropic.d.ts +7 -0
  256. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  257. package/dist/types/src/templates/chess-bot.d.ts +18 -0
  258. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  259. package/dist/types/src/templates/commentary.d.ts +19 -0
  260. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  261. package/dist/types/src/templates/forex-effect.d.ts +5 -1
  262. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  263. package/dist/types/src/templates/forex.d.ts +5 -1
  264. package/dist/types/src/templates/forex.d.ts.map +1 -1
  265. package/dist/types/src/templates/index.d.ts +25 -16
  266. package/dist/types/src/templates/index.d.ts.map +1 -1
  267. package/dist/types/src/templates/ping.d.ts +2 -4
  268. package/dist/types/src/templates/ping.d.ts.map +1 -1
  269. package/dist/types/src/testing/data.d.ts +1 -1
  270. package/dist/types/src/testing/data.d.ts.map +1 -1
  271. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  272. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  273. package/dist/types/src/translations.d.ts +91 -84
  274. package/dist/types/src/translations.d.ts.map +1 -1
  275. package/dist/types/src/types/Notebook.d.ts +108 -23
  276. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  277. package/dist/types/src/types/Settings.d.ts +6 -0
  278. package/dist/types/src/types/Settings.d.ts.map +1 -0
  279. package/dist/types/src/types/capabilities.d.ts +12 -0
  280. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  281. package/dist/types/src/types/events.d.ts +5 -0
  282. package/dist/types/src/types/events.d.ts.map +1 -0
  283. package/dist/types/src/types/index.d.ts +2 -1
  284. package/dist/types/src/types/index.d.ts.map +1 -1
  285. package/dist/types/src/types/types.d.ts +1 -5
  286. package/dist/types/src/types/types.d.ts.map +1 -1
  287. package/dist/types/src/util/deploy.d.ts +3 -2
  288. package/dist/types/src/util/deploy.d.ts.map +1 -1
  289. package/dist/types/src/util/functions.d.ts +3 -2
  290. package/dist/types/src/util/functions.d.ts.map +1 -1
  291. package/dist/types/tsconfig.tsbuildinfo +1 -1
  292. package/package.json +136 -86
  293. package/src/ScriptPlugin.tsx +64 -86
  294. package/src/blueprints/functions/create.ts +48 -0
  295. package/src/blueprints/functions/definitions.ts +324 -0
  296. package/src/blueprints/functions/delete.ts +23 -0
  297. package/src/blueprints/functions/deploy.ts +70 -0
  298. package/src/blueprints/functions/index.ts +19 -0
  299. package/src/blueprints/functions/inspect-invocations.ts +55 -0
  300. package/src/blueprints/functions/install-function.ts +56 -0
  301. package/src/blueprints/functions/invoke.ts +35 -0
  302. package/src/blueprints/functions/query-deployed-functions.ts +31 -0
  303. package/src/blueprints/functions/read.ts +30 -0
  304. package/src/blueprints/functions/update.ts +69 -0
  305. package/src/blueprints/index.ts +5 -0
  306. package/src/blueprints/script-blueprint.ts +56 -0
  307. package/src/capabilities/app-graph-builder.ts +39 -57
  308. package/src/capabilities/artifact-definition.ts +97 -95
  309. package/src/capabilities/blueprint-definition.ts +11 -24
  310. package/src/capabilities/compiler.ts +92 -23
  311. package/src/capabilities/index.ts +11 -9
  312. package/src/capabilities/operation-handler.ts +20 -0
  313. package/src/capabilities/react-surface.tsx +132 -82
  314. package/src/capabilities/settings.ts +26 -14
  315. package/src/compiler/compiler.ts +10 -3
  316. package/src/components/{FrameContainer/FrameContainer.tsx → FramePanel/FramePanel.tsx} +8 -7
  317. package/src/components/{FrameContainer → FramePanel}/index.ts +1 -1
  318. package/src/components/NotebookStack/NotebookCell.tsx +40 -33
  319. package/src/components/NotebookStack/NotebookMenu.tsx +7 -7
  320. package/src/components/NotebookStack/NotebookStack.stories.tsx +21 -22
  321. package/src/components/NotebookStack/NotebookStack.tsx +30 -19
  322. package/src/components/QueryEditor/QueryEditor.stories.tsx +96 -0
  323. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  324. package/src/components/QueryEditor/index.ts +5 -0
  325. package/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.tsx +32 -0
  326. package/src/components/ScriptPluginSettings/ScriptPluginSettings.tsx +64 -0
  327. package/src/components/ScriptPluginSettings/index.ts +7 -0
  328. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +39 -17
  329. package/src/components/ScriptToolbar/ScriptToolbar.tsx +39 -44
  330. package/src/components/TestPanel/TestPanel.tsx +121 -178
  331. package/src/components/TestPanel/index.ts +0 -1
  332. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +25 -18
  333. package/src/components/TypescriptEditor/TypescriptEditor.tsx +73 -66
  334. package/src/components/index.ts +7 -8
  335. package/src/constants.ts +7 -0
  336. package/src/{components → containers}/DeploymentDialog/DeploymentDialog.stories.tsx +30 -25
  337. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +98 -0
  338. package/src/containers/DeploymentDialog/index.ts +7 -0
  339. package/src/{components → containers/NotebookContainer}/NotebookContainer.stories.tsx +30 -29
  340. package/src/{components → containers/NotebookContainer}/NotebookContainer.tsx +97 -92
  341. package/src/containers/NotebookContainer/index.ts +7 -0
  342. package/src/containers/ScriptContainer/ScriptContainer.tsx +85 -0
  343. package/src/containers/ScriptContainer/index.ts +7 -0
  344. package/src/{components/Settings → containers/ScriptObjectSettings}/ScriptObjectSettings.tsx +84 -75
  345. package/src/containers/ScriptObjectSettings/index.ts +7 -0
  346. package/src/containers/ScriptProperties/ScriptProperties.tsx +33 -0
  347. package/src/containers/ScriptProperties/index.ts +7 -0
  348. package/src/containers/TestContainer/TestContainer.tsx +45 -0
  349. package/src/containers/TestContainer/index.ts +7 -0
  350. package/src/containers/index.ts +12 -0
  351. package/src/e2e/ai.test.ts +93 -0
  352. package/src/e2e/deploy.test.ts +65 -0
  353. package/src/hooks/deploy.ts +44 -35
  354. package/src/hooks/format.ts +8 -3
  355. package/src/hooks/index.ts +1 -0
  356. package/src/hooks/template.ts +17 -11
  357. package/src/hooks/useCompiler.ts +24 -0
  358. package/src/hooks/useCreateAndDeployScriptTemplates.ts +13 -15
  359. package/src/hooks/useToolbarState.ts +29 -4
  360. package/src/index.ts +2 -1
  361. package/src/meta.ts +4 -4
  362. package/src/notebook/compute-graph.test.ts +21 -9
  363. package/src/notebook/compute-graph.ts +46 -22
  364. package/src/operations/access-token-created.ts +36 -0
  365. package/src/operations/create-script.ts +47 -0
  366. package/src/operations/definitions.ts +40 -0
  367. package/src/operations/index.ts +12 -0
  368. package/src/templates/anthropic.ts +49 -0
  369. package/src/templates/chat.ts +1 -1
  370. package/src/templates/chess-bot.ts +61 -0
  371. package/src/templates/commentary.ts +244 -0
  372. package/src/templates/data-generator.ts +2 -2
  373. package/src/templates/discord.ts +3 -3
  374. package/src/templates/forex-effect.ts +35 -29
  375. package/src/templates/forex.ts +27 -17
  376. package/src/templates/gmail.ts +5 -6
  377. package/src/templates/index.ts +31 -18
  378. package/src/templates/ping.ts +22 -5
  379. package/src/testing/data.ts +8 -8
  380. package/src/testing/simulator.test.ts +40 -0
  381. package/src/translations.ts +92 -84
  382. package/src/types/Notebook.ts +19 -15
  383. package/src/types/Settings.ts +17 -0
  384. package/src/types/capabilities.ts +17 -0
  385. package/src/types/events.ts +11 -0
  386. package/src/types/index.ts +2 -1
  387. package/src/types/types.ts +1 -11
  388. package/src/util/deploy.ts +28 -32
  389. package/src/util/functions.ts +31 -26
  390. package/src/vite-env.d.ts +2 -0
  391. package/dist/lib/browser/DeploymentDialog-E5NXT4UQ.mjs +0 -14
  392. package/dist/lib/browser/DeploymentDialog-E5NXT4UQ.mjs.map +0 -7
  393. package/dist/lib/browser/NotebookContainer-C36N7AFF.mjs.map +0 -7
  394. package/dist/lib/browser/ScriptContainer-4YPRUM3C.mjs +0 -148
  395. package/dist/lib/browser/ScriptContainer-4YPRUM3C.mjs.map +0 -7
  396. package/dist/lib/browser/app-graph-builder-LEOPGBJD.mjs +0 -66
  397. package/dist/lib/browser/app-graph-builder-LEOPGBJD.mjs.map +0 -7
  398. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs +0 -30
  399. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs.map +0 -7
  400. package/dist/lib/browser/chunk-5S5YQNJZ.mjs +0 -304
  401. package/dist/lib/browser/chunk-5S5YQNJZ.mjs.map +0 -7
  402. package/dist/lib/browser/chunk-A5K3TXYA.mjs +0 -269
  403. package/dist/lib/browser/chunk-A5K3TXYA.mjs.map +0 -7
  404. package/dist/lib/browser/chunk-EB6AXFXO.mjs +0 -31
  405. package/dist/lib/browser/chunk-EB6AXFXO.mjs.map +0 -7
  406. package/dist/lib/browser/chunk-HCURXADW.mjs +0 -102
  407. package/dist/lib/browser/chunk-HCURXADW.mjs.map +0 -7
  408. package/dist/lib/browser/chunk-HHTOAI2J.mjs +0 -644
  409. package/dist/lib/browser/chunk-HHTOAI2J.mjs.map +0 -7
  410. package/dist/lib/browser/chunk-IQMYIWHG.mjs +0 -153
  411. package/dist/lib/browser/chunk-IQMYIWHG.mjs.map +0 -7
  412. package/dist/lib/browser/chunk-LI4P25M5.mjs +0 -111
  413. package/dist/lib/browser/chunk-LI4P25M5.mjs.map +0 -7
  414. package/dist/lib/browser/chunk-Q2DGRQRN.mjs +0 -255
  415. package/dist/lib/browser/chunk-Q2DGRQRN.mjs.map +0 -7
  416. package/dist/lib/browser/chunk-ST3ACVUC.mjs +0 -88
  417. package/dist/lib/browser/chunk-ST3ACVUC.mjs.map +0 -7
  418. package/dist/lib/browser/chunk-UOQ6NCH3.mjs +0 -15
  419. package/dist/lib/browser/chunk-UOQ6NCH3.mjs.map +0 -7
  420. package/dist/lib/browser/compiler-Q4UY2COU.mjs +0 -86
  421. package/dist/lib/browser/compiler-Q4UY2COU.mjs.map +0 -7
  422. package/dist/lib/browser/intent-resolver-AMMHATM7.mjs +0 -105
  423. package/dist/lib/browser/intent-resolver-AMMHATM7.mjs.map +0 -7
  424. package/dist/lib/browser/react-surface-X4NATU6B.mjs +0 -128
  425. package/dist/lib/browser/react-surface-X4NATU6B.mjs.map +0 -7
  426. package/dist/lib/browser/settings-6UXY7F7D.mjs +0 -26
  427. package/dist/lib/browser/settings-6UXY7F7D.mjs.map +0 -7
  428. package/dist/lib/node-esm/DeploymentDialog-OSHHSEBH.mjs +0 -15
  429. package/dist/lib/node-esm/DeploymentDialog-OSHHSEBH.mjs.map +0 -7
  430. package/dist/lib/node-esm/NotebookContainer-FOVFGJQR.mjs.map +0 -7
  431. package/dist/lib/node-esm/ScriptContainer-EW24D5II.mjs +0 -149
  432. package/dist/lib/node-esm/ScriptContainer-EW24D5II.mjs.map +0 -7
  433. package/dist/lib/node-esm/app-graph-builder-XJ3MY5BM.mjs +0 -67
  434. package/dist/lib/node-esm/app-graph-builder-XJ3MY5BM.mjs.map +0 -7
  435. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs +0 -31
  436. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs.map +0 -7
  437. package/dist/lib/node-esm/chunk-2GVTWESW.mjs +0 -90
  438. package/dist/lib/node-esm/chunk-2GVTWESW.mjs.map +0 -7
  439. package/dist/lib/node-esm/chunk-55JZVM6K.mjs +0 -16
  440. package/dist/lib/node-esm/chunk-55JZVM6K.mjs.map +0 -7
  441. package/dist/lib/node-esm/chunk-EJLYOSD7.mjs +0 -113
  442. package/dist/lib/node-esm/chunk-EJLYOSD7.mjs.map +0 -7
  443. package/dist/lib/node-esm/chunk-GA27XSEY.mjs +0 -270
  444. package/dist/lib/node-esm/chunk-GA27XSEY.mjs.map +0 -7
  445. package/dist/lib/node-esm/chunk-IBV2DR36.mjs +0 -33
  446. package/dist/lib/node-esm/chunk-IBV2DR36.mjs.map +0 -7
  447. package/dist/lib/node-esm/chunk-N2XLVOFB.mjs +0 -103
  448. package/dist/lib/node-esm/chunk-N2XLVOFB.mjs.map +0 -7
  449. package/dist/lib/node-esm/chunk-O7HXE72S.mjs +0 -256
  450. package/dist/lib/node-esm/chunk-O7HXE72S.mjs.map +0 -7
  451. package/dist/lib/node-esm/chunk-OZ6LCME4.mjs +0 -645
  452. package/dist/lib/node-esm/chunk-OZ6LCME4.mjs.map +0 -7
  453. package/dist/lib/node-esm/chunk-TUGLYZDT.mjs +0 -305
  454. package/dist/lib/node-esm/chunk-TUGLYZDT.mjs.map +0 -7
  455. package/dist/lib/node-esm/chunk-UEGPBCSF.mjs +0 -154
  456. package/dist/lib/node-esm/chunk-UEGPBCSF.mjs.map +0 -7
  457. package/dist/lib/node-esm/compiler-I6A4KE6E.mjs +0 -87
  458. package/dist/lib/node-esm/compiler-I6A4KE6E.mjs.map +0 -7
  459. package/dist/lib/node-esm/intent-resolver-YKLZQR7U.mjs +0 -106
  460. package/dist/lib/node-esm/intent-resolver-YKLZQR7U.mjs.map +0 -7
  461. package/dist/lib/node-esm/react-surface-LVGLBSTE.mjs +0 -129
  462. package/dist/lib/node-esm/react-surface-LVGLBSTE.mjs.map +0 -7
  463. package/dist/lib/node-esm/settings-O4EZPUE3.mjs +0 -27
  464. package/dist/lib/node-esm/settings-O4EZPUE3.mjs.map +0 -7
  465. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  466. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  467. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  468. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  469. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
  470. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +0 -248
  471. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +0 -1
  472. package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
  473. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
  474. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +0 -12
  475. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +0 -1
  476. package/dist/types/src/components/FrameContainer/frame.d.ts +0 -2
  477. package/dist/types/src/components/FrameContainer/frame.d.ts.map +0 -1
  478. package/dist/types/src/components/FrameContainer/index.d.ts +0 -2
  479. package/dist/types/src/components/FrameContainer/index.d.ts.map +0 -1
  480. package/dist/types/src/components/NotebookContainer.d.ts +0 -10
  481. package/dist/types/src/components/NotebookContainer.d.ts.map +0 -1
  482. package/dist/types/src/components/NotebookContainer.stories.d.ts +0 -251
  483. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +0 -1
  484. package/dist/types/src/components/ScriptContainer.d.ts +0 -12
  485. package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
  486. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
  487. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +0 -6
  488. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
  489. package/dist/types/src/components/Settings/index.d.ts +0 -3
  490. package/dist/types/src/components/Settings/index.d.ts.map +0 -1
  491. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
  492. package/dist/types/src/events.d.ts +0 -4
  493. package/dist/types/src/events.d.ts.map +0 -1
  494. package/dist/types/src/templates/chess.d.ts +0 -3
  495. package/dist/types/src/templates/chess.d.ts.map +0 -1
  496. package/dist/types/src/types/actions.d.ts +0 -54
  497. package/dist/types/src/types/actions.d.ts.map +0 -1
  498. package/src/capabilities/capabilities.ts +0 -12
  499. package/src/capabilities/intent-resolver.ts +0 -86
  500. package/src/components/DeploymentDialog/DeploymentDialog.tsx +0 -106
  501. package/src/components/DeploymentDialog/index.ts +0 -9
  502. package/src/components/FrameContainer/frame.html +0 -25
  503. package/src/components/FrameContainer/frame.tsx +0 -51
  504. package/src/components/ScriptContainer.tsx +0 -69
  505. package/src/components/Settings/ScriptPluginSettings.tsx +0 -61
  506. package/src/components/Settings/index.ts +0 -6
  507. package/src/components/TestPanel/TestContainer.tsx +0 -27
  508. package/src/events.ts +0 -11
  509. package/src/templates/chess.ts +0 -49
  510. package/src/types/actions.ts +0 -53
@@ -0,0 +1,85 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import React, { useMemo } from 'react';
6
+
7
+ import { type ObjectSurfaceProps } from '@dxos/app-toolkit/ui';
8
+ import { Obj } from '@dxos/echo';
9
+ import { createDocAccessor } from '@dxos/echo-db';
10
+ import { type Script } from '@dxos/functions';
11
+ import { getSpace } from '@dxos/react-client/echo';
12
+ import { useIdentity } from '@dxos/react-client/halo';
13
+ import { Panel } from '@dxos/react-ui';
14
+ import { createDataExtensions, listener, editorClassNames } from '@dxos/ui-editor';
15
+
16
+ import { ScriptToolbar, TypescriptEditor, type TypescriptEditorProps } from '#components';
17
+ import { useDeployState, useToolbarState } from '#hooks';
18
+ import { type Settings } from '#types';
19
+
20
+ export type ScriptEditorProps = ObjectSurfaceProps<
21
+ Script.Script,
22
+ {
23
+ settings?: Settings.Settings;
24
+ } & Pick<TypescriptEditorProps, 'env'>
25
+ >;
26
+
27
+ export const ScriptContainer = ({
28
+ role,
29
+ attendableId,
30
+ subject: script,
31
+ settings = { editorInputMode: 'vscode' },
32
+ env,
33
+ }: ScriptEditorProps) => {
34
+ const identity = useIdentity();
35
+ const space = getSpace(script);
36
+ const state = useToolbarState();
37
+ useDeployState({ script, state });
38
+
39
+ const extensions = useMemo(() => {
40
+ if (!script.source.target) {
41
+ return [];
42
+ }
43
+
44
+ return [
45
+ createDataExtensions({
46
+ id: script.id,
47
+ text: createDocAccessor(script.source.target, ['content']),
48
+ messenger: space,
49
+ identity,
50
+ }),
51
+ listener({
52
+ onChange: ({ text }) => {
53
+ if (script.source.target?.content !== text) {
54
+ Obj.change(script, (obj) => {
55
+ obj.changed = true;
56
+ });
57
+ }
58
+ },
59
+ }),
60
+ ];
61
+ }, [identity, space, script, script.source.target]);
62
+
63
+ if (!extensions.length) {
64
+ return null;
65
+ }
66
+
67
+ return (
68
+ <Panel.Root role={role}>
69
+ <Panel.Toolbar asChild>
70
+ <ScriptToolbar script={script} attendableId={attendableId} state={state} role={role} />
71
+ </Panel.Toolbar>
72
+ <Panel.Content asChild>
73
+ <TypescriptEditor
74
+ classNames={editorClassNames(role)}
75
+ id={script.id}
76
+ env={env}
77
+ initialValue={script.source?.target?.content}
78
+ extensions={extensions}
79
+ inputMode={settings.editorInputMode}
80
+ toolbar
81
+ />
82
+ </Panel.Content>
83
+ </Panel.Root>
84
+ );
85
+ };
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { ScriptContainer } from './ScriptContainer';
6
+
7
+ export default ScriptContainer;
@@ -6,17 +6,21 @@ import { Octokit } from '@octokit/core';
6
6
  import React, { type ChangeEvent, useCallback, useState } from 'react';
7
7
 
8
8
  import { ToolId } from '@dxos/ai';
9
- import { SettingsAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';
9
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
10
+ import { SettingsOperation } from '@dxos/app-toolkit';
10
11
  import { Blueprint, Template } from '@dxos/blueprints';
11
- import { Function, type Script, getInvocationUrl, getUserFunctionIdInMetadata } from '@dxos/functions';
12
+ import { Filter, Obj, Ref } from '@dxos/echo';
13
+ import { type Script, getUserFunctionIdInMetadata } from '@dxos/functions';
14
+ import { Operation } from '@dxos/operation';
15
+ import { getInvocationUrl } from '@dxos/functions-runtime';
12
16
  import { log } from '@dxos/log';
13
17
  import { useClient } from '@dxos/react-client';
14
- import { Filter, Ref, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';
18
+ import { useQuery } from '@dxos/react-client/echo';
15
19
  import { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from '@dxos/react-ui';
16
- import { DataType } from '@dxos/schema';
20
+ import { AccessToken } from '@dxos/types';
17
21
  import { kebabize } from '@dxos/util';
18
22
 
19
- import { meta } from '../../meta';
23
+ import { meta } from '#meta';
20
24
 
21
25
  export type ScriptObjectSettingsProps = {
22
26
  object: Script.Script;
@@ -32,31 +36,15 @@ export const ScriptObjectSettings = ({ object }: ScriptObjectSettingsProps) => {
32
36
  );
33
37
  };
34
38
 
35
- export const ScriptProperties = ({ object }: ScriptObjectSettingsProps) => {
36
- const { t } = useTranslation(meta.id);
37
- return (
38
- <Input.Root>
39
- <Input.Label>{t('description label')}</Input.Label>
40
- <Input.TextInput
41
- placeholder={t('description placeholder')}
42
- value={object.description ?? ''}
43
- onChange={(event) => {
44
- object.description = event.target.value;
45
- }}
46
- />
47
- </Input.Root>
48
- );
49
- };
50
-
51
39
  const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
52
40
  const { t } = useTranslation(meta.id);
53
- const space = getSpace(object);
54
- const [fn] = useQuery(space, Filter.type(Function.Function, { source: Ref.make(object) }));
55
- const blueprints = useQuery(space, Filter.type(Blueprint.Blueprint));
41
+ const db = Obj.getDatabase(object);
42
+ const [fn] = useQuery(db, Filter.type(Operation.PersistentOperation, { source: Ref.make(object) }));
43
+ const blueprints = useQuery(db, Filter.type(Blueprint.Blueprint));
56
44
 
57
45
  const [creating, setCreating] = useState(false);
58
46
  const [instructions, setInstructions] = useState<string>(`You can run the script "${object.name ?? 'script'}".`);
59
- const blueprintKey = `dxos.org/blueprint/${kebabize(object.name ?? 'script')}`;
47
+ const blueprintKey = `org.dxos.blueprint.${kebabize(object.name ?? 'script')}`;
60
48
  const existingBlueprint = blueprints.find((bp) => bp.key === blueprintKey);
61
49
 
62
50
  useAsyncEffect(async () => {
@@ -68,7 +56,7 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
68
56
  }, [existingBlueprint]);
69
57
 
70
58
  const handleSave = useCallback(async () => {
71
- if (!space) {
59
+ if (!db) {
72
60
  return;
73
61
  }
74
62
 
@@ -76,15 +64,19 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
76
64
  try {
77
65
  if (existingBlueprint) {
78
66
  const text = await existingBlueprint.instructions.source.load();
79
- text.content = instructions;
67
+ Obj.change(text, (obj) => {
68
+ obj.content = instructions;
69
+ });
80
70
  if (fn?.key) {
81
71
  const toolId = ToolId.make(fn.key);
82
72
  if (!existingBlueprint.tools?.includes(toolId)) {
83
- existingBlueprint.tools = [...(existingBlueprint.tools ?? []), toolId];
73
+ Obj.change(existingBlueprint, (obj) => {
74
+ obj.tools = [...(obj.tools ?? []), toolId];
75
+ });
84
76
  }
85
77
  }
86
78
  } else if (fn?.key) {
87
- space.db.add(
79
+ db.add(
88
80
  Blueprint.make({
89
81
  key: blueprintKey,
90
82
  name: object.name ?? 'Script',
@@ -95,25 +87,29 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
95
87
  }),
96
88
  );
97
89
  }
98
- await space.db.flush();
90
+ await db.flush();
99
91
  } finally {
100
92
  setCreating(false);
101
93
  }
102
- }, [space, existingBlueprint, fn, blueprintKey, object.name, instructions]);
94
+ }, [db, existingBlueprint, fn, blueprintKey, object.name, instructions]);
103
95
 
104
96
  return (
105
- <div className='flex flex-col gap-4 mlb-cardSpacingBlock'>
97
+ <div className='flex flex-col gap-4 my-form-padding'>
106
98
  <div>
107
- <h2>{t('blueprint editor label', { default: 'Blueprint' })}</h2>
99
+ <h2>{t('blueprint-editor.label', { default: 'Blueprint' })}</h2>
108
100
  <p className='text-description text-sm'>
109
- {t('blueprint editor description', { default: 'Create a blueprint that exposes this script as a tool.' })}
101
+ {t('blueprint-editor.description', {
102
+ default: 'Create a blueprint that exposes this script as a tool.',
103
+ })}
110
104
  </p>
111
105
  </div>
112
106
  <Input.Root>
113
107
  <div role='none' className='flex flex-col gap-1'>
114
- <Input.Label>{t('blueprint instructions label', { default: 'Instructions' })}</Input.Label>
108
+ <Input.Label>{t('blueprint-instructions.label', { default: 'Instructions' })}</Input.Label>
115
109
  <Input.TextArea
116
- placeholder={t('blueprint instructions placeholder', { default: 'Describe how this tool should be used.' })}
110
+ placeholder={t('blueprint-instructions.placeholder', {
111
+ default: 'Describe how this tool should be used.',
112
+ })}
117
113
  rows={6}
118
114
  value={instructions}
119
115
  onChange={(event) => setInstructions(event.target.value)}
@@ -135,14 +131,14 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
135
131
  const Binding = ({ object }: ScriptObjectSettingsProps) => {
136
132
  const { t } = useTranslation(meta.id);
137
133
  const client = useClient();
138
- const space = getSpace(object);
139
- const [fn] = useQuery(space, Filter.type(Function.Function, { source: Ref.make(object) }));
134
+ const db = Obj.getDatabase(object);
135
+ const [fn] = useQuery(db, Filter.type(Operation.PersistentOperation, { source: Ref.make(object) }));
140
136
 
141
- const functionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
137
+ const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
142
138
  const functionUrl =
143
139
  functionId &&
144
140
  getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? '', {
145
- spaceId: space?.id,
141
+ spaceId: db?.spaceId,
146
142
  });
147
143
 
148
144
  const [binding, setBinding] = useControlledState(fn?.binding ?? '');
@@ -154,37 +150,44 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
154
150
  );
155
151
 
156
152
  const handleBindingBlur = useCallback(() => {
157
- fn.binding = binding;
153
+ if (fn) {
154
+ Obj.change(fn, (obj) => {
155
+ obj.binding = binding;
156
+ });
157
+ }
158
158
  }, [fn, binding]);
159
159
 
160
- if (!fn || !functionUrl) {
160
+ if (!fn) {
161
161
  return null;
162
162
  }
163
163
 
164
- // TODO(burdon): Use form.
165
164
  return (
166
- <div role='form' className='flex flex-col gap-2 mlb-cardSpacingBlock'>
167
- <h2>{t('remote function settings heading')}</h2>
168
- <Input.Root>
169
- <div role='none' className='flex flex-col gap-1'>
170
- <Input.Label>{t('function url label')}</Input.Label>
171
- <div role='none' className='flex gap-1'>
172
- <Input.TextInput
173
- disabled
174
- value={functionUrl}
175
- onChange={(event) => {
176
- fn.name = event.target.value;
177
- }}
178
- />
179
- <Clipboard.IconButton value={functionUrl} />
165
+ <div role='form' className='flex flex-col gap-2 my-form-padding'>
166
+ <h2>{t('remote-function-settings.heading')}</h2>
167
+ {functionUrl && (
168
+ <Input.Root>
169
+ <div role='none' className='flex flex-col gap-1'>
170
+ <Input.Label>{t('function-url.label')}</Input.Label>
171
+ <div role='none' className='flex gap-1'>
172
+ <Input.TextInput
173
+ disabled
174
+ value={functionUrl}
175
+ onChange={(event) => {
176
+ Obj.change(fn, (obj) => {
177
+ obj.name = event.target.value;
178
+ });
179
+ }}
180
+ />
181
+ <Clipboard.IconButton value={functionUrl} />
182
+ </div>
180
183
  </div>
181
- </div>
182
- </Input.Root>
184
+ </Input.Root>
185
+ )}
183
186
  <Input.Root>
184
187
  <div role='none' className='flex flex-col gap-1'>
185
- <Input.Label>{t('function binding label')}</Input.Label>
188
+ <Input.Label>{t('function-binding.label')}</Input.Label>
186
189
  <Input.TextInput
187
- placeholder={t('function binding placeholder')}
190
+ placeholder={t('function-binding.placeholder')}
188
191
  value={binding}
189
192
  onChange={handleBindingChange}
190
193
  onBlur={handleBindingBlur}
@@ -198,10 +201,10 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
198
201
  // TODO(burdon): Move to separate tab?
199
202
  const Publishing = ({ object }: ScriptObjectSettingsProps) => {
200
203
  const { t } = useTranslation(meta.id);
201
- const { dispatchPromise: dispatch } = useIntentDispatcher();
202
- const space = getSpace(object);
203
- const [githubToken] = useQuery(space, Filter.type(DataType.AccessToken, { source: 'github.com' }));
204
- const gistKey = getMeta(object).keys.find(({ source }) => source === 'github.com');
204
+ const { invokePromise } = useOperationInvoker();
205
+ const db = Obj.getDatabase(object);
206
+ const [githubToken] = useQuery(db, Filter.type(AccessToken.AccessToken, { source: 'github.com' }));
207
+ const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === 'github.com');
205
208
  const [gistUrl, setGistUrl] = useState<string | undefined>();
206
209
 
207
210
  useAsyncEffect(async () => {
@@ -225,8 +228,11 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
225
228
  }, [githubToken, gistKey]);
226
229
 
227
230
  const handleOpenTokenManager = useCallback(
228
- () => dispatch(createIntent(SettingsAction.Open, { plugin: 'dxos.org/plugin/token-manager' })),
229
- [],
231
+ () =>
232
+ invokePromise(SettingsOperation.Open, {
233
+ plugin: 'org.dxos.plugin.token-manager',
234
+ }),
235
+ [invokePromise],
230
236
  );
231
237
 
232
238
  const [publishing, setPublishing] = useState(false);
@@ -239,7 +245,7 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
239
245
 
240
246
  try {
241
247
  // TODO(wittjosiah): Factor out to intent.
242
- const meta = getMeta(object);
248
+ const meta = Obj.getMeta(object);
243
249
  const githubKey = meta.keys.find(({ source }) => source === 'github.com');
244
250
  const gistId = githubKey?.id;
245
251
  if (gistId) {
@@ -252,8 +258,11 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
252
258
  public: true,
253
259
  files,
254
260
  });
255
- if (response.data.id) {
256
- meta.keys.push({ source: 'github.com', id: response.data.id });
261
+ const gistId = response.data.id;
262
+ if (gistId) {
263
+ Obj.change(object, (obj) => {
264
+ Obj.getMeta(obj).keys.push({ source: 'github.com', id: gistId });
265
+ });
257
266
  }
258
267
  }
259
268
  } finally {
@@ -262,15 +271,15 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
262
271
  }, [object, githubToken]);
263
272
 
264
273
  return (
265
- <div className='flex flex-col gap-4 mlb-cardSpacingBlock'>
274
+ <div className='flex flex-col gap-4 my-form-padding'>
266
275
  <div>
267
- <h2>{t('script publish settings label')}</h2>
268
- <p className='text-description text-sm'>{t('script publish settings description')}</p>
276
+ <h2>{t('script-publish-settings.label')}</h2>
277
+ <p className='text-description text-sm'>{t('script-publish-settings.description')}</p>
269
278
  </div>
270
279
  {!githubToken && (
271
280
  <div className='flex flex-col gap-2'>
272
- <span>{t('no github token label')}</span>
273
- <Button onClick={handleOpenTokenManager}>{t('open token manager label')}</Button>
281
+ <span>{t('no-github-token.label')}</span>
282
+ <Button onClick={handleOpenTokenManager}>{t('open-token-manager.label')}</Button>
274
283
  </div>
275
284
  )}
276
285
  {githubToken && (
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { ScriptObjectSettings } from './ScriptObjectSettings';
6
+
7
+ export default ScriptObjectSettings;
@@ -0,0 +1,33 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { Obj } from '@dxos/echo';
8
+ import { type Script } from '@dxos/functions';
9
+ import { Input, useTranslation } from '@dxos/react-ui';
10
+
11
+ import { meta } from '#meta';
12
+
13
+ export type ScriptPropertiesProps = {
14
+ object: Script.Script;
15
+ };
16
+
17
+ export const ScriptProperties = ({ object }: ScriptPropertiesProps) => {
18
+ const { t } = useTranslation(meta.id);
19
+ return (
20
+ <Input.Root>
21
+ <Input.Label>{t('description.label')}</Input.Label>
22
+ <Input.TextInput
23
+ placeholder={t('description.placeholder')}
24
+ value={object.description ?? ''}
25
+ onChange={(event) => {
26
+ Obj.change(object, (obj) => {
27
+ obj.description = event.target.value;
28
+ });
29
+ }}
30
+ />
31
+ </Input.Root>
32
+ );
33
+ };
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { ScriptProperties } from './ScriptProperties';
6
+
7
+ export default ScriptProperties;
@@ -0,0 +1,45 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React, { useCallback, useMemo } from 'react';
6
+
7
+ import { Context } from '@dxos/context';
8
+
9
+ import { type Script } from '@dxos/functions';
10
+ import { FunctionsServiceClient } from '@dxos/functions-runtime/edge';
11
+ import { Panel } from '@dxos/react-ui';
12
+ import { getSpace } from '@dxos/react-client/echo';
13
+
14
+ import { TestPanel } from '#components';
15
+ import { useDeployDeps } from '#hooks';
16
+
17
+ export type TestContainerProps = {
18
+ role: string;
19
+ script: Script.Script;
20
+ };
21
+
22
+ export const TestContainer = ({ role, script }: TestContainerProps) => {
23
+ const { client, fn, existingFunctionId } = useDeployDeps({ script });
24
+ const space = getSpace(script);
25
+
26
+ const functionsClient = useMemo(() => FunctionsServiceClient.fromClient(client), [client]);
27
+
28
+ const handleInvoke = useCallback(
29
+ async (input: unknown) => {
30
+ if (!fn) {
31
+ throw new Error('Function not deployed');
32
+ }
33
+ return functionsClient.invoke(Context.default(), fn, input, { spaceId: space?.id });
34
+ },
35
+ [fn, functionsClient, space?.id],
36
+ );
37
+
38
+ return (
39
+ <Panel.Root role={role} className='dx-document'>
40
+ <Panel.Content asChild>
41
+ <TestPanel onInvoke={existingFunctionId ? handleInvoke : undefined} />
42
+ </Panel.Content>
43
+ </Panel.Root>
44
+ );
45
+ };
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { TestContainer } from './TestContainer';
6
+
7
+ export default TestContainer;
@@ -0,0 +1,12 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type ComponentType, lazy } from 'react';
6
+
7
+ export const DeploymentDialog: ComponentType<any> = lazy(() => import('./DeploymentDialog'));
8
+ export const NotebookContainer: ComponentType<any> = lazy(() => import('./NotebookContainer'));
9
+ export const ScriptContainer: ComponentType<any> = lazy(() => import('./ScriptContainer'));
10
+ export const ScriptObjectSettings: ComponentType<any> = lazy(() => import('./ScriptObjectSettings'));
11
+ export const ScriptProperties: ComponentType<any> = lazy(() => import('./ScriptProperties'));
12
+ export const TestContainer: ComponentType<any> = lazy(() => import('./TestContainer'));
@@ -0,0 +1,93 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { describe } from '@effect/vitest';
6
+ import { test } from 'vitest';
7
+
8
+ import { Client } from '@dxos/client';
9
+ import { type Space } from '@dxos/client-protocol';
10
+ import { configPreset } from '@dxos/config';
11
+ import { Context } from '@dxos/context';
12
+ import { Operation } from '@dxos/operation';
13
+ import { FunctionsServiceClient } from '@dxos/functions-runtime/edge';
14
+ import { bundleFunction } from '@dxos/functions-runtime/native';
15
+ import { FunctionRuntimeKind } from '@dxos/protocols';
16
+ import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
17
+
18
+ // To heavy to run in CI.
19
+ describe.runIf(process.env.DX_TEST_TAGS?.includes('functions-e2e')).skip('Function', () => {
20
+ const config = configPreset({ edge: 'local' });
21
+
22
+ test('bundle anthropic function', { timeout: 120_000 }, async () => {
23
+ await bundleFunction({
24
+ entryPoint: new URL('../templates/anthropic.ts', import.meta.url).pathname,
25
+ verbose: true,
26
+ });
27
+ });
28
+
29
+ test('deploy empty function', { timeout: 120_000 }, async () => {
30
+ const { space, functionsServiceClient } = await setup();
31
+
32
+ await sync(space);
33
+ const func = await deployFunction(
34
+ space,
35
+ functionsServiceClient,
36
+ new URL('../templates/ping.ts', import.meta.url).pathname,
37
+ );
38
+ console.log(func);
39
+ throw new Error('test');
40
+ });
41
+
42
+ test('deploy and invoke anthropic function', { timeout: 120_000 }, async () => {
43
+ const { space, functionsServiceClient } = await setup();
44
+ await sync(space);
45
+ const func = await deployFunction(
46
+ space,
47
+ functionsServiceClient,
48
+ new URL('../templates/anthropic.ts', import.meta.url).pathname,
49
+ );
50
+
51
+ const result = await functionsServiceClient.invoke(Context.default(), func, {
52
+ message: 'Hello, world!',
53
+ });
54
+ console.log(result);
55
+ });
56
+
57
+ const setup = async () => {
58
+ const client = await new Client({ config, types: [Operation.PersistentOperation] }).initialize();
59
+ await client.halo.createIdentity();
60
+
61
+ const space = await client.spaces.create();
62
+ await space.waitUntilReady();
63
+ await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);
64
+
65
+ const functionsServiceClient = FunctionsServiceClient.fromClient(client);
66
+ return { client, space, functionsServiceClient };
67
+ };
68
+
69
+ const sync = async (space: Space) => {
70
+ await space.db.flush();
71
+ await space.internal.syncToEdge({
72
+ onProgress: (state) =>
73
+ console.log(state ? `${state.unsyncedDocumentCount} documents syncing...` : 'connecting to edge...'),
74
+ });
75
+ };
76
+
77
+ const deployFunction = async (space: Space, functionsServiceClient: FunctionsServiceClient, entryPoint: string) => {
78
+ const artifact = await bundleFunction({
79
+ entryPoint,
80
+ verbose: true,
81
+ });
82
+ const func = await functionsServiceClient.deploy(Context.default(), {
83
+ version: '0.0.1',
84
+ ownerPublicKey: space.key,
85
+ entryPoint: artifact.entryPoint,
86
+ assets: artifact.assets,
87
+ runtime: FunctionRuntimeKind.enums.WORKER_LOADER,
88
+ });
89
+
90
+ space.db.add(func);
91
+ return func;
92
+ };
93
+ });
@@ -0,0 +1,65 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { readFile } from 'node:fs/promises';
6
+
7
+ import { describe, expect, test } from 'vitest';
8
+
9
+ import { Client, type Config } from '@dxos/client';
10
+ import { createEdgeIdentity } from '@dxos/client/edge';
11
+ import { configPreset } from '@dxos/config';
12
+ import { Context } from '@dxos/context';
13
+ import { bundleFunction } from '@dxos/functions-runtime/bundler';
14
+ import { FunctionsServiceClient } from '@dxos/functions-runtime/edge';
15
+ import { invariant } from '@dxos/invariant';
16
+ import { log } from '@dxos/log';
17
+
18
+ describe.runIf(process.env.DX_TEST_TAGS?.includes('functions-e2e'))('Functions deployment', () => {
19
+ test('deploys FOREX (effect) function and invokes it via EDGE (main)', { timeout: 120_000 }, async () => {
20
+ const config = configPreset({ edge: 'main' });
21
+ await testDeploy(config);
22
+ });
23
+
24
+ test('deploys FOREX (effect) function and invokes it via EDGE (production)', { timeout: 120_000 }, async () => {
25
+ const config = configPreset({ edge: 'production' });
26
+ await testDeploy(config);
27
+ });
28
+
29
+ const testDeploy = async (config: Config) => {
30
+ await using client = await new Client({ config }).initialize();
31
+ await client.halo.createIdentity();
32
+
33
+ const space = await client.spaces.create();
34
+ await space.waitUntilReady();
35
+
36
+ // Inline echo function source.
37
+ const source = await readFile(new URL('../templates/forex-effect.ts', import.meta.url), 'utf-8');
38
+
39
+ // Bundle and upload.
40
+ const buildResult = await bundleFunction({ source });
41
+ if ('error' in buildResult) {
42
+ throw buildResult.error ?? new Error('Bundle creation failed');
43
+ }
44
+ const functionsServiceClient = FunctionsServiceClient.fromClient(client);
45
+
46
+ const func = await functionsServiceClient.deploy(Context.default(), {
47
+ ownerPublicKey: space.key,
48
+ version: '0.0.1',
49
+ entryPoint: buildResult.entryPoint,
50
+ assets: buildResult.assets,
51
+ });
52
+
53
+ // Invoke deployed function via EDGE directly.
54
+ const edgeClient = client.edge.http;
55
+ invariant(edgeClient, 'edgeClient is required');
56
+ edgeClient.setIdentity(createEdgeIdentity(client));
57
+
58
+ const input = { from: 'USD', to: 'EUR' };
59
+ const result = await functionsServiceClient.invoke(Context.default(), func, input);
60
+ log.info('>>> result', { result, func });
61
+ const resultNumber = Number(result);
62
+ expect(resultNumber).toBeGreaterThan(0);
63
+ expect(resultNumber).toBeLessThan(100);
64
+ };
65
+ });