@dxos/plugin-script 0.8.4-main.2e9d522 → 0.8.4-main.3c1ae3b

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 (337) hide show
  1. package/dist/lib/browser/DeploymentDialog-FIHD4UVK.mjs +15 -0
  2. package/dist/lib/browser/NotebookContainer-GL2Z5I5Q.mjs +817 -0
  3. package/dist/lib/browser/NotebookContainer-GL2Z5I5Q.mjs.map +7 -0
  4. package/dist/lib/browser/ScriptContainer-F4OK3OG6.mjs +149 -0
  5. package/dist/lib/browser/ScriptContainer-F4OK3OG6.mjs.map +7 -0
  6. package/dist/lib/browser/{app-graph-builder-HLQ7K3BT.mjs → app-graph-builder-2WR2ATTJ.mjs} +12 -10
  7. package/dist/lib/browser/app-graph-builder-2WR2ATTJ.mjs.map +7 -0
  8. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs +30 -0
  9. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-2SXDKBM7.mjs +304 -0
  11. package/dist/lib/browser/chunk-2SXDKBM7.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-6X7QVTRB.mjs +112 -0
  13. package/dist/lib/browser/chunk-6X7QVTRB.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-P4HQKUCP.mjs → chunk-75RTLLH4.mjs} +23 -21
  15. package/dist/lib/browser/chunk-75RTLLH4.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-FIM2MVNJ.mjs → chunk-7WFISUBY.mjs} +182 -90
  17. package/dist/lib/browser/chunk-7WFISUBY.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-QYAREHGH.mjs → chunk-EB6AXFXO.mjs} +8 -5
  19. package/dist/lib/browser/chunk-EB6AXFXO.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  21. package/dist/lib/browser/chunk-MQHBMJLH.mjs +103 -0
  22. package/dist/lib/browser/chunk-MQHBMJLH.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-S22N3BUR.mjs +88 -0
  24. package/dist/lib/browser/chunk-S22N3BUR.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-UGDRMROB.mjs +542 -0
  26. package/dist/lib/browser/chunk-UGDRMROB.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-5TVBECWH.mjs → chunk-UOQ6NCH3.mjs} +2 -2
  28. package/dist/lib/browser/compiler-2HV5KXV4.mjs +143 -0
  29. package/dist/lib/browser/compiler-2HV5KXV4.mjs.map +7 -0
  30. package/dist/lib/browser/index.mjs +113 -67
  31. package/dist/lib/browser/index.mjs.map +4 -4
  32. package/dist/lib/browser/{intent-resolver-7B77IG3N.mjs → intent-resolver-3B4ESSCU.mjs} +40 -26
  33. package/dist/lib/browser/intent-resolver-3B4ESSCU.mjs.map +7 -0
  34. package/dist/lib/browser/meta.json +1 -1
  35. package/dist/lib/browser/{react-surface-FYYXZA7C.mjs → react-surface-ASV2KBRA.mjs} +49 -25
  36. package/dist/lib/browser/react-surface-ASV2KBRA.mjs.map +7 -0
  37. package/dist/lib/browser/{settings-KCTBK5TY.mjs → settings-4NKLTJTT.mjs} +10 -8
  38. package/dist/lib/browser/settings-4NKLTJTT.mjs.map +7 -0
  39. package/dist/lib/browser/templates/index.mjs +2 -1
  40. package/dist/lib/browser/types/index.mjs +8 -4
  41. package/dist/lib/node-esm/DeploymentDialog-5EN2KZE5.mjs +16 -0
  42. package/dist/lib/node-esm/DeploymentDialog-5EN2KZE5.mjs.map +7 -0
  43. package/dist/lib/node-esm/NotebookContainer-7RCEXND7.mjs +818 -0
  44. package/dist/lib/node-esm/NotebookContainer-7RCEXND7.mjs.map +7 -0
  45. package/dist/lib/node-esm/ScriptContainer-763IAKOD.mjs +150 -0
  46. package/dist/lib/node-esm/ScriptContainer-763IAKOD.mjs.map +7 -0
  47. package/dist/lib/node-esm/{app-graph-builder-7EYIHWH4.mjs → app-graph-builder-NCVLUL5R.mjs} +12 -10
  48. package/dist/lib/node-esm/app-graph-builder-NCVLUL5R.mjs.map +7 -0
  49. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs +31 -0
  50. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-2S43VHAM.mjs +90 -0
  52. package/dist/lib/node-esm/chunk-2S43VHAM.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-32AMTGGN.mjs +104 -0
  54. package/dist/lib/node-esm/chunk-32AMTGGN.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-4VVV5L5A.mjs +543 -0
  56. package/dist/lib/node-esm/chunk-4VVV5L5A.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-QKK3NDHW.mjs → chunk-535YDI5V.mjs} +23 -21
  58. package/dist/lib/node-esm/chunk-535YDI5V.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-35M3CHYE.mjs → chunk-55JZVM6K.mjs} +2 -2
  60. package/dist/lib/node-esm/chunk-6H4FYMCX.mjs +114 -0
  61. package/dist/lib/node-esm/chunk-6H4FYMCX.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-7NMI4CEU.mjs → chunk-DKS2EQW6.mjs} +182 -90
  63. package/dist/lib/node-esm/chunk-DKS2EQW6.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  65. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-AHXJ6NQU.mjs → chunk-IBV2DR36.mjs} +8 -5
  67. package/dist/lib/node-esm/chunk-IBV2DR36.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-NQN3JE2R.mjs +305 -0
  69. package/dist/lib/node-esm/chunk-NQN3JE2R.mjs.map +7 -0
  70. package/dist/lib/node-esm/compiler-KPEZKEHC.mjs +144 -0
  71. package/dist/lib/node-esm/compiler-KPEZKEHC.mjs.map +7 -0
  72. package/dist/lib/node-esm/index.mjs +113 -67
  73. package/dist/lib/node-esm/index.mjs.map +4 -4
  74. package/dist/lib/node-esm/{intent-resolver-FRZGS4TB.mjs → intent-resolver-GIACMXI4.mjs} +40 -26
  75. package/dist/lib/node-esm/intent-resolver-GIACMXI4.mjs.map +7 -0
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/{react-surface-V32NWHKN.mjs → react-surface-NXBO7VYB.mjs} +49 -25
  78. package/dist/lib/node-esm/react-surface-NXBO7VYB.mjs.map +7 -0
  79. package/dist/lib/node-esm/{settings-DXZ334A3.mjs → settings-PW5NXWLW.mjs} +10 -8
  80. package/dist/lib/node-esm/settings-PW5NXWLW.mjs.map +7 -0
  81. package/dist/lib/node-esm/templates/index.mjs +2 -1
  82. package/dist/lib/node-esm/types/index.mjs +8 -4
  83. package/dist/types/src/ScriptPlugin.d.ts +1 -1
  84. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/artifact-definition.d.ts +1 -1
  88. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  90. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/compiler.d.ts +1 -1
  92. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/index.d.ts +6 -6
  94. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  96. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  98. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/settings.d.ts +1 -1
  100. package/dist/types/src/compiler/compiler.d.ts +1 -1
  101. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  102. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +4 -4
  103. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  104. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +246 -13
  105. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/DeploymentDialog/index.d.ts +1 -1
  107. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +1 -1
  108. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +1 -1
  109. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  110. package/dist/types/src/components/NotebookContainer.d.ts +10 -0
  111. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -0
  112. package/dist/types/src/components/NotebookContainer.stories.d.ts +254 -0
  113. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -0
  114. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +15 -0
  115. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -0
  116. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +9 -0
  117. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -0
  118. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +14 -0
  119. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -0
  120. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +248 -0
  121. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -0
  122. package/dist/types/src/components/NotebookStack/index.d.ts +3 -0
  123. package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -0
  124. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  125. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  126. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  127. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  128. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  129. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  130. package/dist/types/src/components/ScriptContainer.d.ts +4 -4
  131. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  132. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +5 -6
  133. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  134. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +245 -10
  135. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +2 -2
  137. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  138. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +2 -2
  139. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  140. package/dist/types/src/components/TestPanel/TestContainer.d.ts +2 -2
  141. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +1 -1
  142. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  143. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +4 -2
  144. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  145. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +11 -4
  146. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/index.d.ts +3 -4
  148. package/dist/types/src/components/index.d.ts.map +1 -1
  149. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  150. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  151. package/dist/types/src/events.d.ts.map +1 -1
  152. package/dist/types/src/hooks/deploy.d.ts +11 -26
  153. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  154. package/dist/types/src/hooks/format.d.ts +2 -2
  155. package/dist/types/src/hooks/format.d.ts.map +1 -1
  156. package/dist/types/src/hooks/index.d.ts +1 -0
  157. package/dist/types/src/hooks/index.d.ts.map +1 -1
  158. package/dist/types/src/hooks/template.d.ts +4 -14
  159. package/dist/types/src/hooks/template.d.ts.map +1 -1
  160. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  161. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  162. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +1 -0
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/meta.d.ts +0 -1
  166. package/dist/types/src/meta.d.ts.map +1 -1
  167. package/dist/types/src/notebook/compute-graph.d.ts +45 -0
  168. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -0
  169. package/dist/types/src/notebook/compute-graph.test.d.ts +2 -0
  170. package/dist/types/src/notebook/compute-graph.test.d.ts.map +1 -0
  171. package/dist/types/src/notebook/eval.d.ts +13 -0
  172. package/dist/types/src/notebook/eval.d.ts.map +1 -0
  173. package/dist/types/src/notebook/index.d.ts +2 -0
  174. package/dist/types/src/notebook/index.d.ts.map +1 -0
  175. package/dist/types/src/notebook/vfs-parser.d.ts +74 -0
  176. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -0
  177. package/dist/types/src/notebook/vfs-parser.test.d.ts +2 -0
  178. package/dist/types/src/notebook/vfs-parser.test.d.ts.map +1 -0
  179. package/dist/types/src/templates/chess.d.ts +6 -1
  180. package/dist/types/src/templates/chess.d.ts.map +1 -1
  181. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  182. package/dist/types/src/templates/discord.d.ts.map +1 -1
  183. package/dist/types/src/templates/forex-effect.d.ts +4 -1
  184. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  185. package/dist/types/src/templates/forex.d.ts +4 -1
  186. package/dist/types/src/templates/forex.d.ts.map +1 -1
  187. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  188. package/dist/types/src/templates/index.d.ts +43 -1
  189. package/dist/types/src/templates/index.d.ts.map +1 -1
  190. package/dist/types/src/templates/{echo.d.ts → ping.d.ts} +1 -1
  191. package/dist/types/src/templates/ping.d.ts.map +1 -0
  192. package/dist/types/src/testing/data.d.ts +3 -0
  193. package/dist/types/src/testing/data.d.ts.map +1 -0
  194. package/dist/types/src/testing/deploy.test.d.ts +2 -0
  195. package/dist/types/src/testing/deploy.test.d.ts.map +1 -0
  196. package/dist/types/src/testing/index.d.ts +2 -0
  197. package/dist/types/src/testing/index.d.ts.map +1 -0
  198. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  199. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  200. package/dist/types/src/translations.d.ts +32 -5
  201. package/dist/types/src/translations.d.ts.map +1 -1
  202. package/dist/types/src/types/Notebook.d.ts +31 -0
  203. package/dist/types/src/types/Notebook.d.ts.map +1 -0
  204. package/dist/types/src/types/actions.d.ts +54 -0
  205. package/dist/types/src/types/actions.d.ts.map +1 -0
  206. package/dist/types/src/types/index.d.ts +3 -1
  207. package/dist/types/src/types/index.d.ts.map +1 -1
  208. package/dist/types/src/types/types.d.ts +6 -0
  209. package/dist/types/src/types/types.d.ts.map +1 -0
  210. package/dist/types/src/util/deploy.d.ts +7 -7
  211. package/dist/types/src/util/deploy.d.ts.map +1 -1
  212. package/dist/types/src/util/functions.d.ts +6 -3
  213. package/dist/types/src/util/functions.d.ts.map +1 -1
  214. package/dist/types/tsconfig.tsbuildinfo +1 -1
  215. package/package.json +87 -71
  216. package/src/ScriptPlugin.tsx +79 -75
  217. package/src/capabilities/app-graph-builder.ts +12 -11
  218. package/src/capabilities/artifact-definition.ts +19 -24
  219. package/src/capabilities/blueprint-definition.ts +30 -0
  220. package/src/capabilities/compiler.ts +69 -18
  221. package/src/capabilities/index.ts +1 -1
  222. package/src/capabilities/intent-resolver.ts +21 -15
  223. package/src/capabilities/react-surface.tsx +34 -21
  224. package/src/capabilities/settings.ts +3 -3
  225. package/src/compiler/compiler.ts +11 -4
  226. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +39 -20
  227. package/src/components/DeploymentDialog/DeploymentDialog.tsx +45 -34
  228. package/src/components/DeploymentDialog/index.ts +1 -1
  229. package/src/components/FrameContainer/FrameContainer.tsx +7 -4
  230. package/src/components/NotebookContainer.stories.tsx +83 -0
  231. package/src/components/NotebookContainer.tsx +260 -0
  232. package/src/components/NotebookStack/NotebookCell.tsx +216 -0
  233. package/src/components/NotebookStack/NotebookMenu.tsx +47 -0
  234. package/src/components/NotebookStack/NotebookStack.stories.tsx +54 -0
  235. package/src/components/NotebookStack/NotebookStack.tsx +86 -0
  236. package/src/components/NotebookStack/index.ts +6 -0
  237. package/src/components/QueryEditor/QueryEditor.stories.tsx +89 -0
  238. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  239. package/src/components/QueryEditor/index.ts +5 -0
  240. package/src/components/ScriptContainer.tsx +10 -8
  241. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +34 -17
  242. package/src/components/ScriptToolbar/ScriptToolbar.tsx +37 -30
  243. package/src/components/Settings/ScriptObjectSettings.tsx +130 -38
  244. package/src/components/Settings/ScriptPluginSettings.tsx +37 -47
  245. package/src/components/TestPanel/TestContainer.tsx +4 -3
  246. package/src/components/TestPanel/TestPanel.tsx +42 -19
  247. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +79 -31
  248. package/src/components/TypescriptEditor/TypescriptEditor.tsx +39 -37
  249. package/src/components/index.ts +3 -0
  250. package/src/e2e/deploy.test.ts +64 -0
  251. package/src/events.ts +2 -2
  252. package/src/hooks/deploy.ts +24 -24
  253. package/src/hooks/format.ts +4 -4
  254. package/src/hooks/index.ts +1 -0
  255. package/src/hooks/template.ts +6 -15
  256. package/src/hooks/useCompiler.ts +23 -0
  257. package/src/hooks/useCreateAndDeployScriptTemplates.ts +11 -6
  258. package/src/index.ts +1 -0
  259. package/src/meta.ts +7 -5
  260. package/src/notebook/compute-graph.test.ts +70 -0
  261. package/src/notebook/compute-graph.ts +206 -0
  262. package/src/notebook/eval.ts +105 -0
  263. package/src/notebook/index.ts +5 -0
  264. package/src/notebook/vfs-parser.test.ts +149 -0
  265. package/src/notebook/vfs-parser.ts +451 -0
  266. package/src/templates/chess.ts +11 -8
  267. package/src/templates/data-generator.ts +10 -4
  268. package/src/templates/discord.ts +12 -4
  269. package/src/templates/forex-effect.ts +24 -25
  270. package/src/templates/forex.ts +9 -6
  271. package/src/templates/gmail.ts +34 -64
  272. package/src/templates/index.ts +6 -6
  273. package/src/testing/data.ts +72 -0
  274. package/src/testing/deploy.test.ts +63 -0
  275. package/src/testing/index.ts +5 -0
  276. package/src/testing/simulator.test.ts +40 -0
  277. package/src/translations.ts +35 -7
  278. package/src/types/Notebook.ts +42 -0
  279. package/src/types/actions.ts +53 -0
  280. package/src/types/index.ts +3 -1
  281. package/src/types/types.ts +15 -0
  282. package/src/util/deploy.ts +33 -60
  283. package/src/util/functions.ts +39 -8
  284. package/src/vite-env.d.ts +2 -0
  285. package/dist/lib/browser/DeploymentDialog-M4QIHTDR.mjs +0 -12
  286. package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs +0 -262
  287. package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs.map +0 -7
  288. package/dist/lib/browser/app-graph-builder-HLQ7K3BT.mjs.map +0 -7
  289. package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs +0 -249
  290. package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs.map +0 -7
  291. package/dist/lib/browser/chunk-3U6DTUH3.mjs +0 -283
  292. package/dist/lib/browser/chunk-3U6DTUH3.mjs.map +0 -7
  293. package/dist/lib/browser/chunk-FIM2MVNJ.mjs.map +0 -7
  294. package/dist/lib/browser/chunk-FMDXKOP7.mjs +0 -233
  295. package/dist/lib/browser/chunk-FMDXKOP7.mjs.map +0 -7
  296. package/dist/lib/browser/chunk-IS4OG2UW.mjs +0 -39
  297. package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +0 -7
  298. package/dist/lib/browser/chunk-P4HQKUCP.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-QYAREHGH.mjs.map +0 -7
  300. package/dist/lib/browser/chunk-R4R7VOFY.mjs +0 -88
  301. package/dist/lib/browser/chunk-R4R7VOFY.mjs.map +0 -7
  302. package/dist/lib/browser/compiler-CXCUA4UQ.mjs +0 -82
  303. package/dist/lib/browser/compiler-CXCUA4UQ.mjs.map +0 -7
  304. package/dist/lib/browser/intent-resolver-7B77IG3N.mjs.map +0 -7
  305. package/dist/lib/browser/react-surface-FYYXZA7C.mjs.map +0 -7
  306. package/dist/lib/browser/settings-KCTBK5TY.mjs.map +0 -7
  307. package/dist/lib/node-esm/DeploymentDialog-3KPRWFE7.mjs +0 -13
  308. package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs +0 -263
  309. package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs.map +0 -7
  310. package/dist/lib/node-esm/app-graph-builder-7EYIHWH4.mjs.map +0 -7
  311. package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs +0 -250
  312. package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs.map +0 -7
  313. package/dist/lib/node-esm/chunk-7NMI4CEU.mjs.map +0 -7
  314. package/dist/lib/node-esm/chunk-AHXJ6NQU.mjs.map +0 -7
  315. package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs +0 -90
  316. package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs.map +0 -7
  317. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs +0 -40
  318. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-QKK3NDHW.mjs.map +0 -7
  320. package/dist/lib/node-esm/chunk-RT43MACC.mjs +0 -284
  321. package/dist/lib/node-esm/chunk-RT43MACC.mjs.map +0 -7
  322. package/dist/lib/node-esm/chunk-XJPK3IYI.mjs +0 -234
  323. package/dist/lib/node-esm/chunk-XJPK3IYI.mjs.map +0 -7
  324. package/dist/lib/node-esm/compiler-EPFKQXPE.mjs +0 -83
  325. package/dist/lib/node-esm/compiler-EPFKQXPE.mjs.map +0 -7
  326. package/dist/lib/node-esm/intent-resolver-FRZGS4TB.mjs.map +0 -7
  327. package/dist/lib/node-esm/react-surface-V32NWHKN.mjs.map +0 -7
  328. package/dist/lib/node-esm/settings-DXZ334A3.mjs.map +0 -7
  329. package/dist/types/src/templates/echo.d.ts.map +0 -1
  330. package/dist/types/src/types/schema.d.ts +0 -38
  331. package/dist/types/src/types/schema.d.ts.map +0 -1
  332. package/src/types/schema.ts +0 -37
  333. /package/dist/lib/browser/{DeploymentDialog-M4QIHTDR.mjs.map → DeploymentDialog-FIHD4UVK.mjs.map} +0 -0
  334. /package/dist/lib/{node-esm/DeploymentDialog-3KPRWFE7.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
  335. /package/dist/lib/browser/{chunk-5TVBECWH.mjs.map → chunk-UOQ6NCH3.mjs.map} +0 -0
  336. /package/dist/lib/node-esm/{chunk-35M3CHYE.mjs.map → chunk-55JZVM6K.mjs.map} +0 -0
  337. /package/src/templates/{echo.ts → ping.ts} +0 -0
@@ -0,0 +1,89 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { useCallback, useMemo, useState } from 'react';
7
+
8
+ import { createDocAccessor } from '@dxos/echo-db';
9
+ import { QuerySandbox } from '@dxos/echo-query';
10
+ import { createObject } from '@dxos/react-client/echo';
11
+ import { Toolbar, useAsyncEffect } from '@dxos/react-ui';
12
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
13
+ import { createDataExtensions } from '@dxos/react-ui-editor';
14
+ import { StackItem } from '@dxos/react-ui-stack';
15
+ import { Json } from '@dxos/react-ui-syntax-highlighter';
16
+ import { trim } from '@dxos/util';
17
+
18
+ import { QueryEditor, type QueryEditorProps } from './QueryEditor';
19
+
20
+ const SCRIPT = trim`
21
+ Query.select(Filter.type('dxos.org/type/Person'))
22
+ `;
23
+
24
+ const DefaultStory = (props: QueryEditorProps) => {
25
+ const object = useMemo(() => createObject({ content: SCRIPT }), []);
26
+ const [result, setResult] = useState<object | undefined>({});
27
+ const [sandbox, setSandbox] = useState<QuerySandbox>();
28
+
29
+ useAsyncEffect(async () => {
30
+ const sandbox = new QuerySandbox();
31
+ await sandbox.open();
32
+ setSandbox(sandbox);
33
+
34
+ return () => {
35
+ void sandbox.close();
36
+ };
37
+ }, []);
38
+
39
+ const extensions = useMemo(
40
+ () => [createDataExtensions({ id: object.id, text: createDocAccessor(object, ['content']) })],
41
+ [],
42
+ );
43
+
44
+ const handleRun = useCallback(async () => {
45
+ try {
46
+ const result = sandbox?.eval(object.content);
47
+
48
+ setResult({
49
+ timestamp: Date.now(),
50
+ result,
51
+ });
52
+ } catch (err) {
53
+ setResult({
54
+ timestamp: Date.now(),
55
+ error: String(err),
56
+ });
57
+ }
58
+ }, [object, sandbox]);
59
+
60
+ return (
61
+ <StackItem.Content toolbar>
62
+ {/* <ScriptToolbar script={script} state={{}} /> */}
63
+ <Toolbar.Root>
64
+ <Toolbar.Button onClick={handleRun}>Run</Toolbar.Button>
65
+ </Toolbar.Root>
66
+ <div role='none' className='grid grid-rows-[1fr_min-content] bs-full overflow-hidden text-sm'>
67
+ <QueryEditor {...props} initialValue={object.content} extensions={extensions} />
68
+ <Json data={result} classNames='shrink-0 p-2 border-t border-subduedSeparator' />
69
+ </div>
70
+ </StackItem.Content>
71
+ );
72
+ };
73
+
74
+ const meta = {
75
+ title: 'plugins/plugin-script/QueryEditor',
76
+ component: QueryEditor,
77
+ render: DefaultStory,
78
+ decorators: [withTheme, withLayout({ container: 'column', classNames: 'is-prose' })],
79
+ } satisfies Meta<typeof DefaultStory>;
80
+
81
+ export default meta;
82
+
83
+ type Story = StoryObj<typeof meta>;
84
+
85
+ export const Default: Story = {
86
+ args: {
87
+ id: 'test',
88
+ },
89
+ };
@@ -0,0 +1,47 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import React, { useState } from 'react';
6
+ import { ScriptTarget } from 'typescript';
7
+
8
+ import queryApi from '@dxos/echo-query/api.d.ts?raw';
9
+ import { useAsyncEffect } from '@dxos/react-ui';
10
+
11
+ import { Compiler } from '../../compiler';
12
+ import { TypescriptEditor, type TypescriptEditorProps } from '../TypescriptEditor';
13
+
14
+ const GLOBALS = `
15
+ namespace QueryAPI {
16
+ ${queryApi}
17
+ }
18
+
19
+ declare global {
20
+ const Query: typeof QueryAPI.Query;
21
+ const Filter: typeof QueryAPI.Filter;
22
+ const Order: typeof QueryAPI.Order;
23
+ }
24
+
25
+ export {};
26
+ `;
27
+
28
+ export type QueryEditorProps = Omit<TypescriptEditorProps, 'env'>;
29
+
30
+ export const QueryEditor = (props: QueryEditorProps) => {
31
+ const [compiler, setCompiler] = useState<Compiler>();
32
+
33
+ useAsyncEffect(async () => {
34
+ const compiler = new Compiler({
35
+ lib: ['ES5'],
36
+ target: ScriptTarget.ES2022,
37
+ });
38
+ await compiler.initialize(GLOBALS);
39
+ setCompiler(compiler);
40
+ }, []);
41
+
42
+ if (!compiler) {
43
+ return null;
44
+ }
45
+
46
+ return <TypescriptEditor {...props} env={compiler.environment} />;
47
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './QueryEditor';
@@ -4,21 +4,23 @@
4
4
 
5
5
  import React, { useMemo } from 'react';
6
6
 
7
- import { type ScriptType } from '@dxos/functions';
8
- import { createDocAccessor, getSpace } from '@dxos/react-client/echo';
7
+ import { createDocAccessor } from '@dxos/echo-db';
8
+ import { type Script } from '@dxos/functions';
9
+ import { getSpace } from '@dxos/react-client/echo';
9
10
  import { useIdentity } from '@dxos/react-client/halo';
10
11
  import { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/react-ui-editor';
11
12
  import { StackItem } from '@dxos/react-ui-stack';
12
13
 
14
+ import { useDeployState, useToolbarState } from '../hooks';
15
+ import { type ScriptSettings } from '../types';
16
+
13
17
  import { ScriptToolbar } from './ScriptToolbar';
14
18
  import { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';
15
- import { useDeployState, useToolbarState } from '../hooks';
16
- import { type ScriptSettingsProps } from '../types';
17
19
 
18
20
  export type ScriptEditorProps = {
19
21
  role: string;
20
- script: ScriptType;
21
- settings?: ScriptSettingsProps;
22
+ script: Script.Script;
23
+ settings?: ScriptSettings;
22
24
  } & Pick<TypescriptEditorProps, 'env'>;
23
25
 
24
26
  export const ScriptContainer = ({ role, script, settings = { editorInputMode: 'vscode' }, env }: ScriptEditorProps) => {
@@ -32,7 +34,7 @@ export const ScriptContainer = ({ role, script, settings = { editorInputMode: 'v
32
34
  script.source.target
33
35
  ? [
34
36
  listener({
35
- onChange: (text) => {
37
+ onChange: ({ text }) => {
36
38
  if (script.source.target?.content !== text) {
37
39
  script.changed = true;
38
40
  }
@@ -41,7 +43,7 @@ export const ScriptContainer = ({ role, script, settings = { editorInputMode: 'v
41
43
  createDataExtensions({
42
44
  id: script.id,
43
45
  text: createDocAccessor(script.source.target, ['content']),
44
- space,
46
+ messenger: space,
45
47
  identity,
46
48
  }),
47
49
  ]
@@ -2,29 +2,46 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
 
7
- import { type Meta } from '@storybook/react-vite';
7
+ import { IntentPlugin } from '@dxos/app-framework';
8
+ import { withPluginManager } from '@dxos/app-framework/testing';
9
+ import { Script } from '@dxos/functions';
10
+ import { ClientPlugin } from '@dxos/plugin-client';
11
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
8
12
 
9
- import { withLayout, withTheme } from '@dxos/storybook-utils';
13
+ import { translations } from '../../translations';
10
14
 
11
15
  import { ScriptToolbar } from './ScriptToolbar';
12
- import { templates } from '../../templates';
13
16
 
14
- export const Default = {
15
- args: {
16
- binding: 'example',
17
- deployed: true,
18
- templates,
19
- onFormat: () => console.log('Format'),
20
- onTogglePanel: () => {},
21
- },
22
- };
23
-
24
- const meta: Meta = {
17
+ const meta = {
25
18
  title: 'plugins/plugin-script/Toolbar',
26
19
  component: ScriptToolbar,
27
- decorators: [withTheme, withLayout()],
28
- };
20
+ // TODO(wittjosiah): Try to write story which does not depend on plugin manager.
21
+ decorators: [
22
+ withTheme,
23
+ withLayout({ classNames: 'is-prose' }),
24
+ withPluginManager({
25
+ plugins: [IntentPlugin(), ClientPlugin({})],
26
+ }),
27
+ ],
28
+ parameters: {
29
+ layout: 'centered',
30
+ translations,
31
+ },
32
+ } satisfies Meta<typeof ScriptToolbar>;
29
33
 
30
34
  export default meta;
35
+
36
+ type Story = StoryObj<typeof meta>;
37
+
38
+ export const Default: Story = {
39
+ args: {
40
+ state: {},
41
+ script: Script.make({
42
+ name: 'test',
43
+ description: 'test',
44
+ source: 'test',
45
+ }),
46
+ },
47
+ };
@@ -2,13 +2,20 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Rx } from '@effect-rx/rx-react';
5
+ import { Atom } from '@effect-atom/atom-react';
6
6
  import React, { useMemo } from 'react';
7
7
 
8
- import { type ScriptType } from '@dxos/functions';
9
- import { fullyQualifiedId } from '@dxos/react-client/echo';
10
- import { ElevationProvider, useTranslation, type ThemedClassName } from '@dxos/react-ui';
11
- import { createGapSeparator, MenuProvider, rxFromSignal, ToolbarMenu, useMenuActions } from '@dxos/react-ui-menu';
8
+ import { Obj } from '@dxos/echo';
9
+ import { type Script } from '@dxos/functions';
10
+ import { ElevationProvider, useTranslation } from '@dxos/react-ui';
11
+ import {
12
+ type ActionGraphProps,
13
+ MenuProvider,
14
+ ToolbarMenu,
15
+ atomFromSignal,
16
+ createGapSeparator,
17
+ useMenuActions,
18
+ } from '@dxos/react-ui-menu';
12
19
 
13
20
  import {
14
21
  type CreateDeployOptions,
@@ -18,12 +25,33 @@ import {
18
25
  createTemplateSelect,
19
26
  useDeployDeps,
20
27
  } from '../../hooks';
21
- import { SCRIPT_PLUGIN } from '../../meta';
28
+ import { meta } from '../../meta';
29
+
30
+ export type ScriptToolbarProps = {
31
+ role?: string;
32
+ script: Script.Script;
33
+ state: ScriptToolbarState;
34
+ };
35
+
36
+ export const ScriptToolbar = ({ script, role, state }: ScriptToolbarProps) => {
37
+ const { t } = useTranslation(meta.id);
38
+ const options = useDeployDeps({ script });
39
+ const menu = useMemo(() => createToolbarActions({ state, script, t, ...options }), [state, script, options, t]);
40
+ const actions = useMenuActions(menu);
41
+
42
+ return (
43
+ <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>
44
+ <MenuProvider {...actions} attendableId={Obj.getDXN(script).toString()}>
45
+ <ToolbarMenu />
46
+ </MenuProvider>
47
+ </ElevationProvider>
48
+ );
49
+ };
22
50
 
23
- const createToolbar = ({ state, script, ...options }: CreateDeployOptions) =>
24
- Rx.make((get) =>
51
+ const createToolbarActions = ({ state, script, ...options }: CreateDeployOptions): Atom.Atom<ActionGraphProps> =>
52
+ Atom.make((get) =>
25
53
  get(
26
- rxFromSignal(() => {
54
+ atomFromSignal(() => {
27
55
  const templateSelect = createTemplateSelect(script);
28
56
  const format = createFormat(script);
29
57
  const gap = createGapSeparator();
@@ -35,24 +63,3 @@ const createToolbar = ({ state, script, ...options }: CreateDeployOptions) =>
35
63
  }),
36
64
  ),
37
65
  );
38
-
39
- export type ScriptToolbarProps = ThemedClassName<{
40
- role?: string;
41
- script: ScriptType;
42
- state: ScriptToolbarState;
43
- }>;
44
-
45
- export const ScriptToolbar = ({ script, role, state, classNames }: ScriptToolbarProps) => {
46
- const { t } = useTranslation(SCRIPT_PLUGIN);
47
- const options = useDeployDeps({ script });
48
- const toolbarCreator = useMemo(() => createToolbar({ state, script, t, ...options }), [state, script, options, t]);
49
- const menu = useMenuActions(toolbarCreator);
50
-
51
- return (
52
- <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>
53
- <MenuProvider {...menu} attendableId={fullyQualifiedId(script)}>
54
- <ToolbarMenu classNames={classNames} />
55
- </MenuProvider>
56
- </ElevationProvider>
57
- );
58
- };
@@ -3,33 +3,40 @@
3
3
  //
4
4
 
5
5
  import { Octokit } from '@octokit/core';
6
- import React, { type ChangeEvent, useCallback, useEffect, useState } from 'react';
6
+ import React, { type ChangeEvent, useCallback, useState } from 'react';
7
7
 
8
- import { createIntent, SettingsAction, useIntentDispatcher } from '@dxos/app-framework';
9
- import { FunctionType, type ScriptType, getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';
8
+ import { ToolId } from '@dxos/ai';
9
+ import { SettingsAction, createIntent } from '@dxos/app-framework';
10
+ import { useIntentDispatcher } from '@dxos/app-framework/react';
11
+ import { Blueprint, Template } from '@dxos/blueprints';
12
+ import { Filter, Obj, Ref } from '@dxos/echo';
13
+ import { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';
14
+ import { getInvocationUrl } from '@dxos/functions-runtime';
10
15
  import { log } from '@dxos/log';
11
16
  import { useClient } from '@dxos/react-client';
12
- import { Filter, getMeta, getSpace, Ref, useQuery } from '@dxos/react-client/echo';
13
- import { Button, Clipboard, Input, useControlledState, useTranslation } from '@dxos/react-ui';
14
- import { DataType } from '@dxos/schema';
17
+ import { getSpace, useQuery } from '@dxos/react-client/echo';
18
+ import { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from '@dxos/react-ui';
19
+ import { AccessToken } from '@dxos/types';
20
+ import { kebabize } from '@dxos/util';
15
21
 
16
- import { SCRIPT_PLUGIN } from '../../meta';
22
+ import { meta } from '../../meta';
17
23
 
18
24
  export type ScriptObjectSettingsProps = {
19
- object: ScriptType;
25
+ object: Script.Script;
20
26
  };
21
27
 
22
28
  export const ScriptObjectSettings = ({ object }: ScriptObjectSettingsProps) => {
23
29
  return (
24
30
  <>
25
31
  <Binding object={object} />
32
+ <BlueprintEditor object={object} />
26
33
  <Publishing object={object} />
27
34
  </>
28
35
  );
29
36
  };
30
37
 
31
38
  export const ScriptProperties = ({ object }: ScriptObjectSettingsProps) => {
32
- const { t } = useTranslation(SCRIPT_PLUGIN);
39
+ const { t } = useTranslation(meta.id);
33
40
  return (
34
41
  <Input.Root>
35
42
  <Input.Label>{t('description label')}</Input.Label>
@@ -44,16 +51,104 @@ export const ScriptProperties = ({ object }: ScriptObjectSettingsProps) => {
44
51
  );
45
52
  };
46
53
 
54
+ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
55
+ const { t } = useTranslation(meta.id);
56
+ const space = getSpace(object);
57
+ const [fn] = useQuery(space, Filter.type(Function.Function, { source: Ref.make(object) }));
58
+ const blueprints = useQuery(space, Filter.type(Blueprint.Blueprint));
59
+
60
+ const [creating, setCreating] = useState(false);
61
+ const [instructions, setInstructions] = useState<string>(`You can run the script "${object.name ?? 'script'}".`);
62
+ const blueprintKey = `dxos.org/blueprint/${kebabize(object.name ?? 'script')}`;
63
+ const existingBlueprint = blueprints.find((bp) => bp.key === blueprintKey);
64
+
65
+ useAsyncEffect(async () => {
66
+ if (!existingBlueprint) {
67
+ return;
68
+ }
69
+ const source = await existingBlueprint.instructions.source.load();
70
+ setInstructions(source.content ?? '');
71
+ }, [existingBlueprint]);
72
+
73
+ const handleSave = useCallback(async () => {
74
+ if (!space) {
75
+ return;
76
+ }
77
+
78
+ setCreating(true);
79
+ try {
80
+ if (existingBlueprint) {
81
+ const text = await existingBlueprint.instructions.source.load();
82
+ text.content = instructions;
83
+ if (fn?.key) {
84
+ const toolId = ToolId.make(fn.key);
85
+ if (!existingBlueprint.tools?.includes(toolId)) {
86
+ existingBlueprint.tools = [...(existingBlueprint.tools ?? []), toolId];
87
+ }
88
+ }
89
+ } else if (fn?.key) {
90
+ space.db.add(
91
+ Blueprint.make({
92
+ key: blueprintKey,
93
+ name: object.name ?? 'Script',
94
+ instructions: Template.make({
95
+ source: instructions,
96
+ }),
97
+ tools: [ToolId.make(fn.key)],
98
+ }),
99
+ );
100
+ }
101
+ await space.db.flush();
102
+ } finally {
103
+ setCreating(false);
104
+ }
105
+ }, [space, existingBlueprint, fn, blueprintKey, object.name, instructions]);
106
+
107
+ return (
108
+ <div className='flex flex-col gap-4 mlb-cardSpacingBlock'>
109
+ <div>
110
+ <h2>{t('blueprint editor label', { default: 'Blueprint' })}</h2>
111
+ <p className='text-description text-sm'>
112
+ {t('blueprint editor description', {
113
+ default: 'Create a blueprint that exposes this script as a tool.',
114
+ })}
115
+ </p>
116
+ </div>
117
+ <Input.Root>
118
+ <div role='none' className='flex flex-col gap-1'>
119
+ <Input.Label>{t('blueprint instructions label', { default: 'Instructions' })}</Input.Label>
120
+ <Input.TextArea
121
+ placeholder={t('blueprint instructions placeholder', {
122
+ default: 'Describe how this tool should be used.',
123
+ })}
124
+ rows={6}
125
+ value={instructions}
126
+ onChange={(event) => setInstructions(event.target.value)}
127
+ classNames='resize-y'
128
+ />
129
+ </div>
130
+ </Input.Root>
131
+ <div className='flex justify-end gap-2'>
132
+ <Button disabled={(!existingBlueprint && !fn?.key) || creating} onClick={handleSave}>
133
+ {t(creating ? 'creating label' : 'create blueprint label', {
134
+ default: creating ? 'Creating…' : 'Create blueprint',
135
+ })}
136
+ </Button>
137
+ </div>
138
+ </div>
139
+ );
140
+ };
141
+
47
142
  const Binding = ({ object }: ScriptObjectSettingsProps) => {
48
- const { t } = useTranslation(SCRIPT_PLUGIN);
143
+ const { t } = useTranslation(meta.id);
49
144
  const client = useClient();
50
145
  const space = getSpace(object);
51
- const [fn] = useQuery(space, Filter.type(FunctionType, { source: Ref.make(object) }));
146
+ const [fn] = useQuery(space, Filter.type(Function.Function, { source: Ref.make(object) }));
52
147
 
53
- const functionPath = fn && getUserFunctionUrlInMetadata(getMeta(fn));
148
+ const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
54
149
  const functionUrl =
55
- functionPath &&
56
- getInvocationUrl(functionPath, client.config.values.runtime?.services?.edge?.url ?? '', {
150
+ functionId &&
151
+ getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? '', {
57
152
  spaceId: space?.id,
58
153
  });
59
154
 
@@ -109,14 +204,14 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
109
204
 
110
205
  // TODO(burdon): Move to separate tab?
111
206
  const Publishing = ({ object }: ScriptObjectSettingsProps) => {
112
- const { t } = useTranslation(SCRIPT_PLUGIN);
207
+ const { t } = useTranslation(meta.id);
113
208
  const { dispatchPromise: dispatch } = useIntentDispatcher();
114
209
  const space = getSpace(object);
115
- const [githubToken] = useQuery(space, Filter.type(DataType.AccessToken, { source: 'github.com' }));
116
- const gistKey = getMeta(object).keys.find(({ source }) => source === 'github.com');
210
+ const [githubToken] = useQuery(space, Filter.type(AccessToken.AccessToken, { source: 'github.com' }));
211
+ const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === 'github.com');
117
212
  const [gistUrl, setGistUrl] = useState<string | undefined>();
118
213
 
119
- useEffect(() => {
214
+ useAsyncEffect(async () => {
120
215
  const token = githubToken?.token;
121
216
  const gistId = gistKey?.id;
122
217
  if (!token || !gistId) {
@@ -124,24 +219,25 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
124
219
  return;
125
220
  }
126
221
 
127
- const timeout = setTimeout(async () => {
128
- try {
129
- const octokit = new Octokit({ auth: githubToken.token });
130
- const response = await octokit.request('GET /gists/{gist_id}', {
131
- gist_id: gistId,
132
- });
133
- setGistUrl(response.data.html_url);
134
- } catch (err) {
135
- log.catch(err);
136
- setGistUrl(undefined);
137
- }
138
- });
139
-
140
- return () => clearTimeout(timeout);
222
+ try {
223
+ const octokit = new Octokit({ auth: githubToken.token });
224
+ const response = await octokit.request('GET /gists/{gist_id}', {
225
+ gist_id: gistId,
226
+ });
227
+ setGistUrl(response.data.html_url);
228
+ } catch (err) {
229
+ log.catch(err);
230
+ setGistUrl(undefined);
231
+ }
141
232
  }, [githubToken, gistKey]);
142
233
 
143
234
  const handleOpenTokenManager = useCallback(
144
- () => dispatch(createIntent(SettingsAction.Open, { plugin: 'dxos.org/plugin/token-manager' })),
235
+ () =>
236
+ dispatch(
237
+ createIntent(SettingsAction.Open, {
238
+ plugin: 'dxos.org/plugin/token-manager',
239
+ }),
240
+ ),
145
241
  [],
146
242
  );
147
243
 
@@ -155,7 +251,7 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
155
251
 
156
252
  try {
157
253
  // TODO(wittjosiah): Factor out to intent.
158
- const meta = getMeta(object);
254
+ const meta = Obj.getMeta(object);
159
255
  const githubKey = meta.keys.find(({ source }) => source === 'github.com');
160
256
  const gistId = githubKey?.id;
161
257
  if (gistId) {
@@ -200,7 +296,3 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
200
296
  </div>
201
297
  );
202
298
  };
203
-
204
- // TODO(wittjosiah): Factor out.
205
- // From https://stackoverflow.com/a/67243723/2804332
206
- const kebabize = (str: string) => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());