@dxos/plugin-script 0.8.1 → 0.8.2-main.10c050d

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 (250) hide show
  1. package/dist/lib/browser/DeploymentDialog-NLWQHNKE.mjs +12 -0
  2. package/dist/lib/browser/ScriptContainer-Q2K5FJSC.mjs +272 -0
  3. package/dist/lib/browser/ScriptContainer-Q2K5FJSC.mjs.map +7 -0
  4. package/dist/lib/browser/{app-graph-builder-RRLY67QC.mjs → app-graph-builder-V3HPXJAD.mjs} +10 -10
  5. package/dist/lib/browser/app-graph-builder-V3HPXJAD.mjs.map +7 -0
  6. package/dist/lib/browser/{artifact-definition-WXFYD2V5.mjs → artifact-definition-L3AIY4XA.mjs} +45 -48
  7. package/dist/lib/browser/artifact-definition-L3AIY4XA.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-MQZQB5VD.mjs → chunk-6T64VQHF.mjs} +10 -10
  9. package/dist/lib/browser/chunk-6T64VQHF.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-WSK3YQXI.mjs → chunk-6ZHHWU6S.mjs} +4 -3
  11. package/dist/lib/browser/{chunk-WSK3YQXI.mjs.map → chunk-6ZHHWU6S.mjs.map} +2 -2
  12. package/dist/lib/browser/chunk-74DEDPHT.mjs +530 -0
  13. package/dist/lib/browser/chunk-74DEDPHT.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-BTEFFA4C.mjs +153 -0
  15. package/dist/lib/browser/chunk-BTEFFA4C.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-KLEOGVXY.mjs → chunk-JQOAZJTK.mjs} +87 -156
  17. package/dist/lib/browser/chunk-JQOAZJTK.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-M6QMJBKQ.mjs +87 -0
  19. package/dist/lib/browser/chunk-M6QMJBKQ.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-WB3X5Z7Q.mjs +40 -0
  21. package/dist/lib/browser/chunk-WB3X5Z7Q.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-4VD3K3PY.mjs → chunk-YSQMXTYO.mjs} +3 -3
  23. package/dist/lib/{node-esm/chunk-EB5DSAD4.mjs.map → browser/chunk-YSQMXTYO.mjs.map} +1 -1
  24. package/dist/lib/browser/{compiler-56LTBEQB.mjs → compiler-W4BYJYTL.mjs} +3 -3
  25. package/dist/lib/browser/compiler-W4BYJYTL.mjs.map +7 -0
  26. package/dist/lib/browser/index.mjs +17 -16
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/{intent-resolver-WCVXKRBR.mjs → intent-resolver-U5YRUE7W.mjs} +14 -14
  29. package/dist/lib/browser/intent-resolver-U5YRUE7W.mjs.map +7 -0
  30. package/dist/lib/browser/meta.json +1 -1
  31. package/dist/lib/browser/{react-surface-WXZVPNGI.mjs → react-surface-3MSPT54G.mjs} +12 -12
  32. package/dist/lib/browser/react-surface-3MSPT54G.mjs.map +7 -0
  33. package/dist/lib/browser/{settings-Z7B37V2I.mjs → settings-FU7NTENS.mjs} +5 -5
  34. package/dist/lib/browser/settings-FU7NTENS.mjs.map +7 -0
  35. package/dist/lib/browser/types.mjs +2 -2
  36. package/dist/lib/node/{DeploymentDialog-O4MU4OMF.cjs → DeploymentDialog-PC5AL3BB.cjs} +10 -10
  37. package/dist/lib/node/DeploymentDialog-PC5AL3BB.cjs.map +7 -0
  38. package/dist/lib/node/ScriptContainer-56SH6R24.cjs +289 -0
  39. package/dist/lib/node/ScriptContainer-56SH6R24.cjs.map +7 -0
  40. package/dist/lib/node/{app-graph-builder-6I2BWD46.cjs → app-graph-builder-YE4OM4OC.cjs} +17 -17
  41. package/dist/lib/node/app-graph-builder-YE4OM4OC.cjs.map +7 -0
  42. package/dist/lib/node/{artifact-definition-6NVXEHJD.cjs → artifact-definition-6BD6CVOV.cjs} +55 -58
  43. package/dist/lib/node/artifact-definition-6BD6CVOV.cjs.map +7 -0
  44. package/dist/lib/node/chunk-5LHP5EUJ.cjs +557 -0
  45. package/dist/lib/node/chunk-5LHP5EUJ.cjs.map +7 -0
  46. package/dist/lib/node/chunk-BYLHJ26I.cjs +91 -0
  47. package/dist/lib/node/chunk-BYLHJ26I.cjs.map +7 -0
  48. package/dist/lib/node/{chunk-XFZPWFEG.cjs → chunk-HCRW6T3G.cjs} +19 -20
  49. package/dist/lib/node/chunk-HCRW6T3G.cjs.map +7 -0
  50. package/dist/lib/node/{chunk-F4DP7WON.cjs → chunk-NRZJV5SV.cjs} +93 -160
  51. package/dist/lib/node/chunk-NRZJV5SV.cjs.map +7 -0
  52. package/dist/lib/node/{chunk-YJQZHKKA.cjs → chunk-QG2X6J74.cjs} +7 -6
  53. package/dist/lib/node/{chunk-YJQZHKKA.cjs.map → chunk-QG2X6J74.cjs.map} +2 -2
  54. package/dist/lib/node/chunk-RARNZD62.cjs +179 -0
  55. package/dist/lib/node/chunk-RARNZD62.cjs.map +7 -0
  56. package/dist/lib/node/{chunk-VYBEBLDO.cjs → chunk-V6L73D7S.cjs} +14 -14
  57. package/dist/lib/node/chunk-V6L73D7S.cjs.map +7 -0
  58. package/dist/lib/node/{chunk-JICWAOWZ.cjs → chunk-ZEV3VARQ.cjs} +7 -7
  59. package/dist/lib/node/{chunk-JICWAOWZ.cjs.map → chunk-ZEV3VARQ.cjs.map} +1 -1
  60. package/dist/lib/node/{compiler-W2RU3M7U.cjs → compiler-TFSJRLL4.cjs} +7 -7
  61. package/dist/lib/node/{compiler-W2RU3M7U.cjs.map → compiler-TFSJRLL4.cjs.map} +3 -3
  62. package/dist/lib/node/index.cjs +46 -45
  63. package/dist/lib/node/index.cjs.map +3 -3
  64. package/dist/lib/node/{intent-resolver-J4NBDNFH.cjs → intent-resolver-7SF26VGC.cjs} +21 -21
  65. package/dist/lib/node/intent-resolver-7SF26VGC.cjs.map +7 -0
  66. package/dist/lib/node/meta.json +1 -1
  67. package/dist/lib/node/{react-surface-27KTUBIZ.cjs → react-surface-L6RS7BT2.cjs} +38 -38
  68. package/dist/lib/node/react-surface-L6RS7BT2.cjs.map +7 -0
  69. package/dist/lib/node/{settings-EI6VPNKN.cjs → settings-RRCQ7ZQD.cjs} +9 -9
  70. package/dist/lib/node/settings-RRCQ7ZQD.cjs.map +7 -0
  71. package/dist/lib/node/types.cjs +5 -5
  72. package/dist/lib/node/types.cjs.map +1 -1
  73. package/dist/lib/node-esm/{DeploymentDialog-SSQSWLHX.mjs → DeploymentDialog-QHB2BGNJ.mjs} +5 -5
  74. package/dist/lib/node-esm/ScriptContainer-6RCZ43TI.mjs +273 -0
  75. package/dist/lib/node-esm/ScriptContainer-6RCZ43TI.mjs.map +7 -0
  76. package/dist/lib/node-esm/{app-graph-builder-H5XLRVX3.mjs → app-graph-builder-4CN7URJQ.mjs} +10 -10
  77. package/dist/lib/node-esm/app-graph-builder-4CN7URJQ.mjs.map +7 -0
  78. package/dist/lib/node-esm/{artifact-definition-KQ64AYBP.mjs → artifact-definition-PPV2XKU7.mjs} +45 -48
  79. package/dist/lib/node-esm/artifact-definition-PPV2XKU7.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-25GOLUXY.mjs +154 -0
  81. package/dist/lib/node-esm/chunk-25GOLUXY.mjs.map +7 -0
  82. package/dist/lib/node-esm/{chunk-EB5DSAD4.mjs → chunk-2KJYPUQD.mjs} +3 -3
  83. package/dist/lib/{browser/chunk-4VD3K3PY.mjs.map → node-esm/chunk-2KJYPUQD.mjs.map} +1 -1
  84. package/dist/lib/node-esm/{chunk-F4HA5C34.mjs → chunk-47MABIVX.mjs} +10 -10
  85. package/dist/lib/node-esm/chunk-47MABIVX.mjs.map +7 -0
  86. package/dist/lib/node-esm/{chunk-FDEAVT67.mjs → chunk-AEB5TPEW.mjs} +4 -3
  87. package/dist/lib/node-esm/{chunk-FDEAVT67.mjs.map → chunk-AEB5TPEW.mjs.map} +2 -2
  88. package/dist/lib/node-esm/chunk-KOO76P2Y.mjs +531 -0
  89. package/dist/lib/node-esm/chunk-KOO76P2Y.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-UESZKXLR.mjs +41 -0
  91. package/dist/lib/node-esm/chunk-UESZKXLR.mjs.map +7 -0
  92. package/dist/lib/node-esm/{chunk-PBGVTGL2.mjs → chunk-WD7OFSM3.mjs} +87 -156
  93. package/dist/lib/node-esm/chunk-WD7OFSM3.mjs.map +7 -0
  94. package/dist/lib/node-esm/chunk-Z44O2YIK.mjs +89 -0
  95. package/dist/lib/node-esm/chunk-Z44O2YIK.mjs.map +7 -0
  96. package/dist/lib/node-esm/{compiler-VT5C2Z3T.mjs → compiler-7PQ4D43R.mjs} +3 -3
  97. package/dist/lib/{browser/compiler-56LTBEQB.mjs.map → node-esm/compiler-7PQ4D43R.mjs.map} +3 -3
  98. package/dist/lib/node-esm/index.mjs +17 -16
  99. package/dist/lib/node-esm/index.mjs.map +3 -3
  100. package/dist/lib/node-esm/{intent-resolver-PDZ2A26X.mjs → intent-resolver-3APO7YDF.mjs} +14 -14
  101. package/dist/lib/node-esm/intent-resolver-3APO7YDF.mjs.map +7 -0
  102. package/dist/lib/node-esm/meta.json +1 -1
  103. package/dist/lib/node-esm/{react-surface-UCUVDVSH.mjs → react-surface-S5LHD3IA.mjs} +12 -12
  104. package/dist/lib/node-esm/react-surface-S5LHD3IA.mjs.map +7 -0
  105. package/dist/lib/node-esm/{settings-HU5UEFRF.mjs → settings-NKNC32QC.mjs} +5 -5
  106. package/dist/lib/node-esm/settings-NKNC32QC.mjs.map +7 -0
  107. package/dist/lib/node-esm/types.mjs +2 -2
  108. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  110. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/index.d.ts +1 -177
  113. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  114. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  115. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +2 -2
  116. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  117. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  118. package/dist/types/src/components/ScriptContainer.d.ts +1 -1
  119. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  120. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +1 -1
  121. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  122. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +1 -1
  123. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  124. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  125. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  126. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  127. package/dist/types/src/components/index.d.ts +1 -1
  128. package/dist/types/src/hooks/deploy.d.ts +22 -19
  129. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  130. package/dist/types/src/hooks/format.d.ts +2 -5
  131. package/dist/types/src/hooks/format.d.ts.map +1 -1
  132. package/dist/types/src/hooks/index.d.ts +0 -1
  133. package/dist/types/src/hooks/index.d.ts.map +1 -1
  134. package/dist/types/src/hooks/template.d.ts +2 -5
  135. package/dist/types/src/hooks/template.d.ts.map +1 -1
  136. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  137. package/dist/types/src/hooks/useToolbarState.d.ts +1 -1
  138. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  139. package/dist/types/src/meta.d.ts.map +1 -1
  140. package/dist/types/src/templates/chat.d.ts +1 -1
  141. package/dist/types/src/templates/chat.d.ts.map +1 -1
  142. package/dist/types/src/templates/chess.d.ts.map +1 -1
  143. package/dist/types/src/templates/data-generator.d.ts +0 -7
  144. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  145. package/dist/types/src/templates/discord.d.ts.map +1 -1
  146. package/dist/types/src/templates/echo.d.ts +1 -1
  147. package/dist/types/src/templates/echo.d.ts.map +1 -1
  148. package/dist/types/src/templates/email.d.ts +1 -1
  149. package/dist/types/src/templates/email.d.ts.map +1 -1
  150. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  151. package/dist/types/src/templates/forex.d.ts.map +1 -1
  152. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  153. package/dist/types/src/translations.d.ts +2 -110
  154. package/dist/types/src/translations.d.ts.map +1 -1
  155. package/dist/types/src/types.d.ts +27 -26
  156. package/dist/types/src/types.d.ts.map +1 -1
  157. package/dist/types/src/util/deploy.d.ts.map +1 -1
  158. package/dist/types/src/util/functions.d.ts.map +1 -1
  159. package/dist/types/tsconfig.tsbuildinfo +1 -1
  160. package/package.json +59 -53
  161. package/src/ScriptPlugin.tsx +4 -2
  162. package/src/capabilities/app-graph-builder.ts +46 -29
  163. package/src/capabilities/artifact-definition.ts +40 -38
  164. package/src/capabilities/intent-resolver.ts +7 -7
  165. package/src/capabilities/react-surface.tsx +5 -5
  166. package/src/capabilities/settings.ts +2 -2
  167. package/src/compiler/compiler.ts +3 -3
  168. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +1 -1
  169. package/src/components/DeploymentDialog/DeploymentDialog.tsx +2 -2
  170. package/src/components/ScriptContainer.tsx +2 -2
  171. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +1 -1
  172. package/src/components/ScriptToolbar/ScriptToolbar.tsx +27 -18
  173. package/src/components/Settings/ScriptObjectSettings.tsx +5 -5
  174. package/src/components/TypescriptEditor/TypescriptEditor.tsx +0 -6
  175. package/src/hooks/deploy.ts +61 -55
  176. package/src/hooks/format.ts +26 -26
  177. package/src/hooks/index.ts +0 -1
  178. package/src/hooks/template.ts +24 -32
  179. package/src/hooks/useToolbarState.ts +2 -2
  180. package/src/meta.ts +3 -2
  181. package/src/templates/chat.ts +4 -10
  182. package/src/templates/chess.ts +2 -7
  183. package/src/templates/data-generator.ts +20 -45
  184. package/src/templates/discord.ts +17 -15
  185. package/src/templates/echo.ts +1 -12
  186. package/src/templates/email.ts +8 -14
  187. package/src/templates/forex-effect.ts +4 -8
  188. package/src/templates/forex.ts +1 -5
  189. package/src/templates/gmail.ts +37 -28
  190. package/src/translations.ts +1 -1
  191. package/src/types.ts +13 -14
  192. package/src/util/deploy.ts +6 -10
  193. package/dist/lib/browser/DeploymentDialog-AEPYJKPO.mjs +0 -12
  194. package/dist/lib/browser/ScriptContainer-R25PRK2D.mjs +0 -248
  195. package/dist/lib/browser/ScriptContainer-R25PRK2D.mjs.map +0 -7
  196. package/dist/lib/browser/app-graph-builder-RRLY67QC.mjs.map +0 -7
  197. package/dist/lib/browser/artifact-definition-WXFYD2V5.mjs.map +0 -7
  198. package/dist/lib/browser/chunk-2CGZFDCR.mjs +0 -480
  199. package/dist/lib/browser/chunk-2CGZFDCR.mjs.map +0 -7
  200. package/dist/lib/browser/chunk-CSZXPLYY.mjs +0 -147
  201. package/dist/lib/browser/chunk-CSZXPLYY.mjs.map +0 -7
  202. package/dist/lib/browser/chunk-KLEOGVXY.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-MQZQB5VD.mjs.map +0 -7
  204. package/dist/lib/browser/chunk-R2CHVWJ2.mjs +0 -41
  205. package/dist/lib/browser/chunk-R2CHVWJ2.mjs.map +0 -7
  206. package/dist/lib/browser/chunk-SUCBNCEQ.mjs +0 -87
  207. package/dist/lib/browser/chunk-SUCBNCEQ.mjs.map +0 -7
  208. package/dist/lib/browser/intent-resolver-WCVXKRBR.mjs.map +0 -7
  209. package/dist/lib/browser/react-surface-WXZVPNGI.mjs.map +0 -7
  210. package/dist/lib/browser/settings-Z7B37V2I.mjs.map +0 -7
  211. package/dist/lib/node/DeploymentDialog-O4MU4OMF.cjs.map +0 -7
  212. package/dist/lib/node/ScriptContainer-5KY6ZOQD.cjs +0 -267
  213. package/dist/lib/node/ScriptContainer-5KY6ZOQD.cjs.map +0 -7
  214. package/dist/lib/node/app-graph-builder-6I2BWD46.cjs.map +0 -7
  215. package/dist/lib/node/artifact-definition-6NVXEHJD.cjs.map +0 -7
  216. package/dist/lib/node/chunk-65MIJR3Q.cjs +0 -173
  217. package/dist/lib/node/chunk-65MIJR3Q.cjs.map +0 -7
  218. package/dist/lib/node/chunk-F4DP7WON.cjs.map +0 -7
  219. package/dist/lib/node/chunk-SLDJM45C.cjs +0 -507
  220. package/dist/lib/node/chunk-SLDJM45C.cjs.map +0 -7
  221. package/dist/lib/node/chunk-VYBEBLDO.cjs.map +0 -7
  222. package/dist/lib/node/chunk-X7MHLHHS.cjs +0 -91
  223. package/dist/lib/node/chunk-X7MHLHHS.cjs.map +0 -7
  224. package/dist/lib/node/chunk-XFZPWFEG.cjs.map +0 -7
  225. package/dist/lib/node/intent-resolver-J4NBDNFH.cjs.map +0 -7
  226. package/dist/lib/node/react-surface-27KTUBIZ.cjs.map +0 -7
  227. package/dist/lib/node/settings-EI6VPNKN.cjs.map +0 -7
  228. package/dist/lib/node-esm/ScriptContainer-W2F4FGDV.mjs +0 -249
  229. package/dist/lib/node-esm/ScriptContainer-W2F4FGDV.mjs.map +0 -7
  230. package/dist/lib/node-esm/app-graph-builder-H5XLRVX3.mjs.map +0 -7
  231. package/dist/lib/node-esm/artifact-definition-KQ64AYBP.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-4MTPYMV2.mjs +0 -481
  233. package/dist/lib/node-esm/chunk-4MTPYMV2.mjs.map +0 -7
  234. package/dist/lib/node-esm/chunk-F4HA5C34.mjs.map +0 -7
  235. package/dist/lib/node-esm/chunk-MU3JKVL2.mjs +0 -148
  236. package/dist/lib/node-esm/chunk-MU3JKVL2.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-PBGVTGL2.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-QDYGTY4L.mjs +0 -89
  239. package/dist/lib/node-esm/chunk-QDYGTY4L.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-RW2APVMV.mjs +0 -42
  241. package/dist/lib/node-esm/chunk-RW2APVMV.mjs.map +0 -7
  242. package/dist/lib/node-esm/compiler-VT5C2Z3T.mjs.map +0 -7
  243. package/dist/lib/node-esm/intent-resolver-PDZ2A26X.mjs.map +0 -7
  244. package/dist/lib/node-esm/react-surface-UCUVDVSH.mjs.map +0 -7
  245. package/dist/lib/node-esm/settings-HU5UEFRF.mjs.map +0 -7
  246. package/dist/types/src/hooks/useToolbarAction.d.ts +0 -13
  247. package/dist/types/src/hooks/useToolbarAction.d.ts.map +0 -1
  248. package/src/hooks/useToolbarAction.ts +0 -50
  249. /package/dist/lib/browser/{DeploymentDialog-AEPYJKPO.mjs.map → DeploymentDialog-NLWQHNKE.mjs.map} +0 -0
  250. /package/dist/lib/node-esm/{DeploymentDialog-SSQSWLHX.mjs.map → DeploymentDialog-QHB2BGNJ.mjs.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ScriptAction
3
- } from "./chunk-R2CHVWJ2.mjs";
3
+ } from "./chunk-WB3X5Z7Q.mjs";
4
4
 
5
5
  // packages/plugins/plugin-script/src/util/functions.ts
6
6
  import { getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions";
@@ -59,10 +59,11 @@ var updateFunctionMetadata = (script, storedFunction, meta, functionId) => {
59
59
  };
60
60
 
61
61
  // packages/plugins/plugin-script/src/util/deploy.ts
62
- import { FunctionType, getUserFunctionUrlInMetadata as getUserFunctionUrlInMetadata2, incrementSemverPatch, setUserFunctionUrlInMetadata, uploadWorkerFunction } from "@dxos/functions";
62
+ import { FunctionType, getUserFunctionUrlInMetadata as getUserFunctionUrlInMetadata2, makeFunctionUrl, setUserFunctionUrlInMetadata } from "@dxos/functions";
63
63
  import { Bundler } from "@dxos/functions/bundler";
64
+ import { incrementSemverPatch, uploadWorkerFunction } from "@dxos/functions/edge";
64
65
  import { log as log2 } from "@dxos/log";
65
- import { create, getMeta as getMeta2, makeRef } from "@dxos/react-client/echo";
66
+ import { live, getMeta as getMeta2, makeRef } from "@dxos/react-client/echo";
66
67
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-script/src/util/deploy.ts";
67
68
  var isScriptDeployed = ({ script, fn }) => {
68
69
  const existingFunctionUrl = fn && getUserFunctionUrlInMetadata2(getMeta2(fn));
@@ -84,7 +85,7 @@ var deployScript = async ({ script, client, space, fn, existingFunctionUrl }) =>
84
85
  }
85
86
  const { functionId, version, meta } = await uploadWorkerFunction({
86
87
  client,
87
- spaceId: space.id,
88
+ ownerPublicKey: space.key,
88
89
  version: fn ? incrementSemverPatch(fn.version) : "0.0.1",
89
90
  functionId: existingFunctionId,
90
91
  source: bundle
@@ -98,7 +99,9 @@ var deployScript = async ({ script, client, space, fn, existingFunctionUrl }) =>
98
99
  const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, functionId, version);
99
100
  script.changed = false;
100
101
  updateFunctionMetadata(script, storedFunction, meta, functionId);
101
- const functionUrl = makeFunctionUrl(space.id, functionId);
102
+ const functionUrl = makeFunctionUrl({
103
+ functionId
104
+ });
102
105
  setUserFunctionUrlInMetadata(getMeta2(storedFunction), functionUrl);
103
106
  return {
104
107
  success: true,
@@ -149,16 +152,13 @@ var createOrUpdateFunctionInSpace = (space, fn, script, functionId, version) =>
149
152
  fn.version = version;
150
153
  return fn;
151
154
  } else {
152
- return space.db.add(create(FunctionType, {
155
+ return space.db.add(live(FunctionType, {
153
156
  name: functionId,
154
157
  version,
155
158
  source: makeRef(script)
156
159
  }));
157
160
  }
158
161
  };
159
- var makeFunctionUrl = (spaceId, functionId) => {
160
- return `/${spaceId}/${functionId}`;
161
- };
162
162
 
163
163
  // packages/plugins/plugin-script/src/hooks/useCreateAndDeployScriptTemplates.ts
164
164
  import { pipe } from "effect/Function";
@@ -230,4 +230,4 @@ export {
230
230
  deployScript,
231
231
  useCreateAndDeployScriptTemplates
232
232
  };
233
- //# sourceMappingURL=chunk-MQZQB5VD.mjs.map
233
+ //# sourceMappingURL=chunk-6T64VQHF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util/functions.ts", "../../../src/util/deploy.ts", "../../../src/hooks/useCreateAndDeployScriptTemplates.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ScriptType, getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { getMeta, getSpace } from '@dxos/react-client/echo';\n\n/**\n * Get the function URL for a given script and client configuration\n */\nexport const getFunctionUrl = ({\n script,\n fn,\n edgeUrl,\n}: {\n script: ScriptType;\n fn: any;\n edgeUrl: string;\n}): string | undefined => {\n const space = getSpace(script);\n const existingFunctionUrl = fn && getUserFunctionUrlInMetadata(getMeta(fn));\n\n if (!existingFunctionUrl) {\n return undefined;\n }\n\n return getInvocationUrl(existingFunctionUrl, edgeUrl, {\n spaceId: space?.id,\n });\n};\n\nexport const updateFunctionMetadata = (script: ScriptType, storedFunction: any, meta: any, functionId: string) => {\n if (script.description !== undefined && script.description.trim() !== '') {\n storedFunction.description = script.description;\n } else if (meta.description) {\n storedFunction.description = meta.description;\n } else {\n log.verbose('no description in function metadata', { functionId });\n }\n\n if (meta.inputSchema) {\n storedFunction.inputSchema = meta.inputSchema;\n } else {\n log.verbose('no input schema in function metadata', { functionId });\n }\n\n if (meta.outputSchema) {\n storedFunction.outputSchema = meta.outputSchema;\n } else {\n log.verbose('no output schema in function metadata', { functionId });\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Client } from '@dxos/client';\nimport {\n FunctionType,\n type ScriptType,\n getUserFunctionUrlInMetadata,\n makeFunctionUrl,\n setUserFunctionUrlInMetadata,\n} from '@dxos/functions';\nimport { Bundler } from '@dxos/functions/bundler';\nimport { incrementSemverPatch, uploadWorkerFunction } from '@dxos/functions/edge';\nimport { log } from '@dxos/log';\nimport { live, getMeta, makeRef, type Space } from '@dxos/react-client/echo';\n\nimport { updateFunctionMetadata } from './functions';\n\nexport const isScriptDeployed = ({ script, fn }: { script: ScriptType; fn: any }): boolean => {\n const existingFunctionUrl = fn && getUserFunctionUrlInMetadata(getMeta(fn));\n return Boolean(existingFunctionUrl) && !script.changed;\n};\n\ntype DeployScriptProps = {\n script: ScriptType;\n client: Client;\n space: Space;\n fn?: FunctionType;\n existingFunctionUrl?: string;\n};\n\ntype DeployScriptResult = { success: boolean; error?: Error; functionUrl?: string };\n\n/**\n * Deploy a script to a space, handling bundling and uploading to the FaaS infrastructure.\n */\nexport const deployScript = async ({\n script,\n client,\n space,\n fn,\n existingFunctionUrl,\n}: DeployScriptProps): Promise<DeployScriptResult> => {\n const validationError = validateDeployInputs(script, space);\n if (validationError) {\n return { success: false, error: validationError };\n }\n\n try {\n const existingFunctionId = extractFunctionId(existingFunctionUrl);\n\n const { bundle, error } = await bundleScript(script.source!.target!.content);\n if (error || !bundle) {\n throw error || new Error('Bundle creation failed');\n }\n\n const { functionId, version, meta } = await uploadWorkerFunction({\n client,\n ownerPublicKey: space.key,\n version: fn ? incrementSemverPatch(fn.version) : '0.0.1',\n functionId: existingFunctionId,\n source: bundle,\n });\n\n if (functionId === undefined || version === undefined) {\n throw new Error(`Upload didn't return expected data: ${JSON.stringify({ functionId, version })}`);\n }\n\n const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, functionId, version);\n script.changed = false;\n updateFunctionMetadata(script, storedFunction, meta, functionId);\n\n const functionUrl = makeFunctionUrl({ functionId });\n setUserFunctionUrlInMetadata(getMeta(storedFunction), functionUrl);\n\n return { success: true, functionUrl };\n } catch (err: any) {\n log.catch(err);\n return { success: false, error: err };\n }\n};\n\n/**\n * Validate inputs for script deployment.\n */\nconst validateDeployInputs = (script: ScriptType, space: Space): Error | null => {\n if (!script.source || !space) {\n return new Error('Script source or space not available');\n }\n return null;\n};\n\nconst extractFunctionId = (functionUrl?: string): string | undefined => {\n return functionUrl?.split('/').at(-1);\n};\n\nconst bundleScript = async (source: string): Promise<{ bundle?: string; error?: Error }> => {\n const bundler = new Bundler({ platform: 'browser', sandboxedModules: [], remoteModules: {} });\n const buildResult = await bundler.bundle({ source });\n\n if (buildResult.error || !buildResult.bundle) {\n return { error: buildResult.error || new Error('Bundle creation failed') };\n }\n\n return { bundle: buildResult.bundle };\n};\n\nconst createOrUpdateFunctionInSpace = (\n space: Space,\n fn: FunctionType | undefined,\n script: ScriptType,\n functionId: string,\n version: string,\n): FunctionType => {\n if (fn) {\n fn.version = version;\n return fn;\n } else {\n return space.db.add(live(FunctionType, { name: functionId, version, source: makeRef(script) }));\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { pipe } from 'effect/Function';\nimport { useCallback, useState } from 'react';\n\nimport { chain, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { ScriptType } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { useClient } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { type Template } from '../templates';\nimport { ScriptAction } from '../types';\nimport { deployScript } from '../util';\n\ntype DeploymentStatus = 'idle' | 'pending' | 'success' | 'error';\n\n/**\n * Hook for creating and deploying multiple script templates concurrently.\n *\n * Takes a space and an array of script template IDs, then provides a callback\n * function that creates each script from its template and deploys it to the space.\n * All creation / deployment operations run concurrently for improved performance.\n */\nexport const useCreateAndDeployScriptTemplates = (space: Space | undefined, scriptTemplates: Template[]) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const [status, setStatus] = useState<DeploymentStatus>('idle');\n const [error, setError] = useState<Error | undefined>(undefined);\n\n const handleCreateAndDeployScripts = useCallback(async () => {\n invariant(space);\n setStatus('pending');\n setError(undefined);\n\n const deploymentResults = await Promise.all(\n scriptTemplates.map(async (template) => {\n const result = await dispatch(\n pipe(\n createIntent(ScriptAction.Create, { space, initialTemplateId: template.id }),\n chain(SpaceAction.AddObject, { target: space }),\n ),\n );\n invariant(isInstanceOf(ScriptType, result.data?.object));\n\n return deployScript({ space, client, script: result.data.object });\n }),\n );\n\n const hasErrors = deploymentResults.some((result) => !result.success);\n setStatus(hasErrors ? 'error' : 'success');\n }, [space, dispatch, client, scriptTemplates]);\n\n return { handleCreateAndDeployScripts, status, error };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["getInvocationUrl", "getUserFunctionUrlInMetadata", "log", "getMeta", "getSpace", "getFunctionUrl", "script", "fn", "edgeUrl", "space", "existingFunctionUrl", "undefined", "spaceId", "id", "updateFunctionMetadata", "storedFunction", "meta", "functionId", "description", "trim", "verbose", "inputSchema", "outputSchema", "FunctionType", "getUserFunctionUrlInMetadata", "makeFunctionUrl", "setUserFunctionUrlInMetadata", "Bundler", "incrementSemverPatch", "uploadWorkerFunction", "log", "live", "getMeta", "makeRef", "isScriptDeployed", "script", "fn", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "Boolean", "changed", "deployScript", "client", "space", "validationError", "validateDeployInputs", "success", "error", "existingFunctionId", "extractFunctionId", "bundle", "bundleScript", "source", "target", "content", "Error", "functionId", "version", "meta", "uploadWorkerFunction", "ownerPublicKey", "key", "incrementSemverPatch", "undefined", "JSON", "stringify", "storedFunction", "createOrUpdateFunctionInSpace", "updateFunctionMetadata", "functionUrl", "makeFunctionUrl", "setUserFunctionUrlInMetadata", "err", "log", "catch", "split", "at", "bundler", "Bundler", "platform", "sandboxedModules", "remoteModules", "buildResult", "db", "add", "live", "FunctionType", "name", "makeRef", "pipe", "useCallback", "useState", "chain", "createIntent", "useIntentDispatcher", "isInstanceOf", "ScriptType", "invariant", "SpaceAction", "useClient", "useCreateAndDeployScriptTemplates", "space", "scriptTemplates", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "status", "setStatus", "useState", "error", "setError", "undefined", "handleCreateAndDeployScripts", "useCallback", "invariant", "deploymentResults", "Promise", "all", "map", "template", "result", "pipe", "createIntent", "ScriptAction", "Create", "initialTemplateId", "id", "chain", "SpaceAction", "AddObject", "target", "isInstanceOf", "ScriptType", "data", "object", "deployScript", "script", "hasErrors", "some", "success"]
7
+ }
@@ -5,15 +5,16 @@ var meta = {
5
5
  name: "Scripts",
6
6
  description: "Scripts in Composer allow you to deploy custom functions that run on the edge. These functions can be referenced by your AI agent and called inside of cells in any Sheet. Use scripts to interact with API\u2019s or external data inside of Composer.",
7
7
  icon: "ph--code--regular",
8
- source: "https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-explorer",
8
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-explorer",
9
9
  tags: [
10
- "experimental"
10
+ "labs"
11
11
  ],
12
12
  screenshots: [
13
13
  "https://dxos.network/plugin-details-scripts-dark.png"
14
14
  ]
15
15
  };
16
16
  var defaultScriptsForIntegration = {
17
+ // TODO(wittjosiah): Also include content extraction scripts in the default set.
17
18
  "gmail.com": [
18
19
  "dxos.org/script/gmail"
19
20
  ]
@@ -24,4 +25,4 @@ export {
24
25
  meta,
25
26
  defaultScriptsForIntegration
26
27
  };
27
- //# sourceMappingURL=chunk-WSK3YQXI.mjs.map
28
+ //# sourceMappingURL=chunk-6ZHHWU6S.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SCRIPT_PLUGIN = 'dxos.org/plugin/script';\n\nexport const meta: PluginMeta = {\n id: SCRIPT_PLUGIN,\n name: 'Scripts',\n description:\n 'Scripts in Composer allow you to deploy custom functions that run on the edge. These functions can be referenced by your AI agent and called inside of cells in any Sheet. Use scripts to interact with API’s or external data inside of Composer.',\n icon: 'ph--code--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-explorer',\n tags: ['experimental'],\n screenshots: ['https://dxos.network/plugin-details-scripts-dark.png'],\n};\n\n// TODO(ZaymonFC): Configure by scopes?\nexport const defaultScriptsForIntegration: Record<string, string[]> = {\n 'gmail.com': ['dxos.org/script/gmail'],\n};\n"],
5
- "mappings": ";AAMO,IAAMA,gBAAgB;AAEtB,IAAMC,OAAmB;EAC9BC,IAAIF;EACJG,MAAM;EACNC,aACE;EACFC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa;IAAC;;AAChB;AAGO,IAAMC,+BAAyD;EACpE,aAAa;IAAC;;AAChB;",
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SCRIPT_PLUGIN = 'dxos.org/plugin/script';\n\nexport const meta: PluginMeta = {\n id: SCRIPT_PLUGIN,\n name: 'Scripts',\n description:\n 'Scripts in Composer allow you to deploy custom functions that run on the edge. These functions can be referenced by your AI agent and called inside of cells in any Sheet. Use scripts to interact with API’s or external data inside of Composer.',\n icon: 'ph--code--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-explorer',\n tags: ['labs'],\n screenshots: ['https://dxos.network/plugin-details-scripts-dark.png'],\n};\n\n// TODO(ZaymonFC): Configure by scopes?\nexport const defaultScriptsForIntegration: Record<string, string[]> = {\n // TODO(wittjosiah): Also include content extraction scripts in the default set.\n 'gmail.com': ['dxos.org/script/gmail'],\n};\n"],
5
+ "mappings": ";AAMO,IAAMA,gBAAgB;AAEtB,IAAMC,OAAmB;EAC9BC,IAAIF;EACJG,MAAM;EACNC,aACE;EACFC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa;IAAC;;AAChB;AAGO,IAAMC,+BAAyD;;EAEpE,aAAa;IAAC;;AAChB;",
6
6
  "names": ["SCRIPT_PLUGIN", "meta", "id", "name", "description", "icon", "source", "tags", "screenshots", "defaultScriptsForIntegration"]
7
7
  }
@@ -0,0 +1,530 @@
1
+ import {
2
+ SCRIPT_PLUGIN,
3
+ meta
4
+ } from "./chunk-6ZHHWU6S.mjs";
5
+
6
+ // packages/plugins/plugin-script/src/components/Settings/ScriptObjectSettings.tsx
7
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
8
+ import { Octokit } from "@octokit/core";
9
+ import React, { useCallback, useEffect, useState } from "react";
10
+ import { createIntent, SettingsAction, useIntentDispatcher } from "@dxos/app-framework";
11
+ import { FunctionType, getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions";
12
+ import { log } from "@dxos/log";
13
+ import { useClient } from "@dxos/react-client";
14
+ import { Filter, getMeta, getSpace, Ref, useQuery } from "@dxos/react-client/echo";
15
+ import { Button, Clipboard, Input, useControlledState, useTranslation } from "@dxos/react-ui";
16
+ import { DataType } from "@dxos/schema";
17
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-script/src/components/Settings/ScriptObjectSettings.tsx";
18
+ var ScriptObjectSettings = ({ object }) => {
19
+ var _effect = _useSignals();
20
+ try {
21
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Binding, {
22
+ object
23
+ }), /* @__PURE__ */ React.createElement(Publishing, {
24
+ object
25
+ }));
26
+ } finally {
27
+ _effect.f();
28
+ }
29
+ };
30
+ var ScriptProperties = ({ object }) => {
31
+ var _effect = _useSignals();
32
+ try {
33
+ const { t } = useTranslation(SCRIPT_PLUGIN);
34
+ return /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, t("description label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
35
+ placeholder: t("description placeholder"),
36
+ value: object.description ?? "",
37
+ onChange: (event) => {
38
+ object.description = event.target.value;
39
+ }
40
+ }));
41
+ } finally {
42
+ _effect.f();
43
+ }
44
+ };
45
+ var Binding = ({ object }) => {
46
+ var _effect = _useSignals();
47
+ try {
48
+ const { t } = useTranslation(SCRIPT_PLUGIN);
49
+ const client = useClient();
50
+ const space = getSpace(object);
51
+ const [fn] = useQuery(space, Filter.type(FunctionType, {
52
+ source: Ref.make(object)
53
+ }));
54
+ const functionPath = fn && getUserFunctionUrlInMetadata(getMeta(fn));
55
+ const functionUrl = functionPath && getInvocationUrl(functionPath, client.config.values.runtime?.services?.edge?.url ?? "", {
56
+ spaceId: space?.id
57
+ });
58
+ const [binding, setBinding] = useControlledState(fn?.binding ?? "");
59
+ const handleBindingChange = useCallback((event) => {
60
+ setBinding(event.target.value);
61
+ }, [
62
+ setBinding
63
+ ]);
64
+ const handleBindingBlur = useCallback(() => {
65
+ fn.binding = binding;
66
+ }, [
67
+ fn,
68
+ binding
69
+ ]);
70
+ if (!fn || !functionUrl) {
71
+ return null;
72
+ }
73
+ return /* @__PURE__ */ React.createElement("div", {
74
+ role: "form",
75
+ className: "flex flex-col p-2 gap-2"
76
+ }, /* @__PURE__ */ React.createElement("h2", null, t("remote function settings heading")), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement("div", {
77
+ role: "none",
78
+ className: "flex flex-col gap-1"
79
+ }, /* @__PURE__ */ React.createElement(Input.Label, null, t("function url label")), /* @__PURE__ */ React.createElement("div", {
80
+ role: "none",
81
+ className: "flex gap-1"
82
+ }, /* @__PURE__ */ React.createElement(Input.TextInput, {
83
+ disabled: true,
84
+ value: functionUrl,
85
+ onChange: (event) => {
86
+ fn.name = event.target.value;
87
+ }
88
+ }), /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
89
+ value: functionUrl
90
+ })))), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement("div", {
91
+ role: "none",
92
+ className: "flex flex-col gap-1"
93
+ }, /* @__PURE__ */ React.createElement(Input.Label, null, t("function binding label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
94
+ placeholder: t("function binding placeholder"),
95
+ value: binding,
96
+ onChange: handleBindingChange,
97
+ onBlur: handleBindingBlur
98
+ }))));
99
+ } finally {
100
+ _effect.f();
101
+ }
102
+ };
103
+ var Publishing = ({ object }) => {
104
+ var _effect = _useSignals();
105
+ try {
106
+ const { t } = useTranslation(SCRIPT_PLUGIN);
107
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
108
+ const space = getSpace(object);
109
+ const [githubToken] = useQuery(space, Filter.type(DataType.AccessToken, {
110
+ source: "github.com"
111
+ }));
112
+ const gistKey = getMeta(object).keys.find(({ source }) => source === "github.com");
113
+ const [gistUrl, setGistUrl] = useState();
114
+ useEffect(() => {
115
+ const token = githubToken?.token;
116
+ const gistId = gistKey?.id;
117
+ if (!token || !gistId) {
118
+ setGistUrl(void 0);
119
+ return;
120
+ }
121
+ const timeout = setTimeout(async () => {
122
+ try {
123
+ const octokit = new Octokit({
124
+ auth: githubToken.token
125
+ });
126
+ const response = await octokit.request("GET /gists/{gist_id}", {
127
+ gist_id: gistId
128
+ });
129
+ setGistUrl(response.data.html_url);
130
+ } catch (err) {
131
+ log.catch(err, void 0, {
132
+ F: __dxlog_file,
133
+ L: 135,
134
+ S: void 0,
135
+ C: (f, a) => f(...a)
136
+ });
137
+ setGistUrl(void 0);
138
+ }
139
+ });
140
+ return () => clearTimeout(timeout);
141
+ }, [
142
+ githubToken,
143
+ gistKey
144
+ ]);
145
+ const handleOpenTokenManager = useCallback(() => dispatch(createIntent(SettingsAction.Open, {
146
+ plugin: "dxos.org/plugin/token-manager"
147
+ })), []);
148
+ const [publishing, setPublishing] = useState(false);
149
+ const handlePublish = useCallback(async () => {
150
+ setPublishing(true);
151
+ const octokit = new Octokit({
152
+ auth: githubToken.token
153
+ });
154
+ const source = await object.source.load();
155
+ const filename = object.name ? kebabize(object.name) : "composer-script";
156
+ const files = {
157
+ [`${filename}.ts`]: {
158
+ content: source.content
159
+ }
160
+ };
161
+ try {
162
+ const meta2 = getMeta(object);
163
+ const githubKey = meta2.keys.find(({ source: source2 }) => source2 === "github.com");
164
+ const gistId = githubKey?.id;
165
+ if (gistId) {
166
+ await octokit.request("PATCH /gists/{gist_id}", {
167
+ gist_id: gistId,
168
+ files
169
+ });
170
+ } else {
171
+ const response = await octokit.request("POST /gists", {
172
+ public: true,
173
+ files
174
+ });
175
+ if (response.data.id) {
176
+ meta2.keys.push({
177
+ source: "github.com",
178
+ id: response.data.id
179
+ });
180
+ }
181
+ }
182
+ } finally {
183
+ setPublishing(false);
184
+ }
185
+ }, [
186
+ object,
187
+ githubToken
188
+ ]);
189
+ return /* @__PURE__ */ React.createElement("div", {
190
+ className: "flex flex-col p-2 gap-4"
191
+ }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("h2", null, t("script publish settings label")), /* @__PURE__ */ React.createElement("p", {
192
+ className: "text-description text-sm"
193
+ }, t("script publish settings description"))), !githubToken && /* @__PURE__ */ React.createElement("div", {
194
+ className: "flex flex-col gap-2"
195
+ }, /* @__PURE__ */ React.createElement("span", null, t("no github token label")), /* @__PURE__ */ React.createElement(Button, {
196
+ onClick: handleOpenTokenManager
197
+ }, t("open token manager label"))), githubToken && /* @__PURE__ */ React.createElement("div", {
198
+ className: "flex justify-end gap-2"
199
+ }, gistUrl && /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
200
+ value: gistUrl
201
+ }), /* @__PURE__ */ React.createElement(Button, {
202
+ disabled: publishing,
203
+ onClick: handlePublish
204
+ }, t(publishing ? "publishing label" : "publish label"))));
205
+ } finally {
206
+ _effect.f();
207
+ }
208
+ };
209
+ var kebabize = (str) => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? "-" : "") + $.toLowerCase());
210
+
211
+ // packages/plugins/plugin-script/src/components/Settings/ScriptPluginSettings.tsx
212
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
213
+ import React2 from "react";
214
+ import { useClient as useClient2 } from "@dxos/react-client";
215
+ import { Button as Button2, Select, useTranslation as useTranslation2 } from "@dxos/react-ui";
216
+ import { EditorInputModes } from "@dxos/react-ui-editor";
217
+ import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
218
+ var ScriptPluginSettings = ({ settings }) => {
219
+ var _effect = _useSignals2();
220
+ try {
221
+ const { t } = useTranslation2(meta.id);
222
+ const client = useClient2();
223
+ const handleAuthenticate = async () => {
224
+ const { identityKey } = client.halo.identity.get();
225
+ await client.halo.writeCredentials([
226
+ {
227
+ issuer: identityKey,
228
+ issuanceDate: /* @__PURE__ */ new Date(),
229
+ subject: {
230
+ id: identityKey,
231
+ assertion: {
232
+ "@type": "dxos.halo.credentials.ServiceAccess",
233
+ serverName: "hub.dxos.network",
234
+ serverKey: identityKey,
235
+ identityKey,
236
+ capabilities: [
237
+ "composer:beta"
238
+ ]
239
+ }
240
+ }
241
+ }
242
+ ]);
243
+ };
244
+ return /* @__PURE__ */ React2.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
245
+ label: t("authenticate action label")
246
+ }, /* @__PURE__ */ React2.createElement(Button2, {
247
+ onClick: handleAuthenticate
248
+ }, t("authenticate button label"))), /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
249
+ label: t("editor input mode label")
250
+ }, /* @__PURE__ */ React2.createElement(Select.Root, {
251
+ value: settings.editorInputMode ?? "default",
252
+ onValueChange: (value) => {
253
+ settings.editorInputMode = value;
254
+ }
255
+ }, /* @__PURE__ */ React2.createElement(Select.TriggerButton, {
256
+ placeholder: t("select editor input mode placeholder")
257
+ }), /* @__PURE__ */ React2.createElement(Select.Portal, null, /* @__PURE__ */ React2.createElement(Select.Content, null, /* @__PURE__ */ React2.createElement(Select.Viewport, null, EditorInputModes.map((mode) => /* @__PURE__ */ React2.createElement(Select.Option, {
258
+ key: mode,
259
+ value: mode
260
+ }, t(`settings editor input mode ${mode} label`)))))))));
261
+ } finally {
262
+ _effect.f();
263
+ }
264
+ };
265
+
266
+ // packages/plugins/plugin-script/src/components/TestPanel/TestPanel.tsx
267
+ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
268
+ import React3, { forwardRef, useEffect as useEffect2, useRef, useState as useState2 } from "react";
269
+ import { log as log2 } from "@dxos/log";
270
+ import { Avatar, Icon, Input as Input2, Toolbar, useTranslation as useTranslation3 } from "@dxos/react-ui";
271
+ import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
272
+ import { errorText, mx } from "@dxos/react-ui-theme";
273
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-script/src/components/TestPanel/TestPanel.tsx";
274
+ var TestPanel = ({ classNames, functionUrl }) => {
275
+ var _effect = _useSignals3();
276
+ try {
277
+ const { t } = useTranslation3(SCRIPT_PLUGIN);
278
+ const inputRef = useRef(null);
279
+ const [input, setInput] = useState2("");
280
+ const [result, setResult] = useState2("");
281
+ const [state, setState] = useState2(null);
282
+ const [history, setHistory] = useState2([]);
283
+ const scrollerRef = useRef(null);
284
+ const handleScroll = () => {
285
+ if (scrollerRef.current) {
286
+ scrollerRef.current.scrollTop = scrollerRef.current.scrollHeight;
287
+ }
288
+ };
289
+ const controller = useRef();
290
+ useEffect2(() => {
291
+ return () => {
292
+ handleStop();
293
+ };
294
+ }, []);
295
+ const handleStop = () => {
296
+ controller.current?.abort("stop");
297
+ controller.current = void 0;
298
+ };
299
+ const handleClear = () => {
300
+ handleStop();
301
+ setInput("");
302
+ setResult("");
303
+ setHistory([]);
304
+ inputRef.current?.focus();
305
+ };
306
+ const handleResponse = ({ text, data, error } = {}) => {
307
+ controller.current = void 0;
308
+ setHistory((history2) => [
309
+ ...history2,
310
+ {
311
+ type: "response",
312
+ text,
313
+ data,
314
+ error
315
+ }
316
+ ]);
317
+ setResult("");
318
+ setState(null);
319
+ handleScroll();
320
+ };
321
+ const handleRequest = async (input2) => {
322
+ try {
323
+ setState("pending");
324
+ let data = null;
325
+ if (input2.charAt(0) === "{") {
326
+ try {
327
+ const validJsonString = input2.replace(/'/g, '"').replace(/([{,]\s*)([a-zA-Z0-9_]+)(\s*:)/g, '$1"$2"$3');
328
+ data = JSON.parse(validJsonString);
329
+ input2 = JSON.stringify(data, null, 2);
330
+ } catch (err) {
331
+ inputRef.current?.focus();
332
+ return;
333
+ }
334
+ }
335
+ setInput("");
336
+ setResult("");
337
+ setHistory((history2) => [
338
+ ...history2,
339
+ {
340
+ type: "request",
341
+ text: input2
342
+ }
343
+ ]);
344
+ setTimeout(() => {
345
+ handleScroll();
346
+ });
347
+ controller.current = new AbortController();
348
+ const response = await fetch(functionUrl, {
349
+ signal: controller.current.signal,
350
+ method: "POST",
351
+ body: input2,
352
+ headers: {
353
+ "Content-Type": data ? "application/json" : "text/plain"
354
+ }
355
+ });
356
+ if (!response.ok) {
357
+ const text2 = await response.text();
358
+ handleResponse({
359
+ error: new Error(text2 || response.statusText || String(response.status))
360
+ });
361
+ return;
362
+ }
363
+ const contentType = response.headers.get("content-type");
364
+ if (contentType === "application/json") {
365
+ const data2 = await response.json();
366
+ handleResponse({
367
+ data: data2
368
+ });
369
+ return;
370
+ }
371
+ setState("responding");
372
+ let text = "";
373
+ const reader = response.body.getReader();
374
+ const pump = async ({ done, value }) => {
375
+ text = text + new TextDecoder().decode(value);
376
+ if (!controller.current || done) {
377
+ handleResponse({
378
+ text
379
+ });
380
+ return;
381
+ }
382
+ setResult(text);
383
+ setTimeout(() => {
384
+ handleScroll();
385
+ });
386
+ return reader.read().then(pump);
387
+ };
388
+ void reader.read().then(pump).catch((err) => {
389
+ if (err.name !== "AbortError") {
390
+ log2.catch(err, void 0, {
391
+ F: __dxlog_file2,
392
+ L: 147,
393
+ S: void 0,
394
+ C: (f, a) => f(...a)
395
+ });
396
+ }
397
+ });
398
+ } catch (err) {
399
+ if (err !== "stop") {
400
+ const error = err instanceof Error ? err : new Error(err);
401
+ handleResponse({
402
+ error
403
+ });
404
+ log2.catch(err, void 0, {
405
+ F: __dxlog_file2,
406
+ L: 154,
407
+ S: void 0,
408
+ C: (f, a) => f(...a)
409
+ });
410
+ } else {
411
+ handleResponse();
412
+ }
413
+ }
414
+ };
415
+ return /* @__PURE__ */ React3.createElement("div", {
416
+ className: mx("flex flex-col h-full overflow-hidden", classNames)
417
+ }, /* @__PURE__ */ React3.createElement(MessageThread, {
418
+ ref: scrollerRef,
419
+ state,
420
+ result,
421
+ history
422
+ }), /* @__PURE__ */ React3.createElement(Toolbar.Root, {
423
+ classNames: "p-2"
424
+ }, /* @__PURE__ */ React3.createElement(Input2.Root, null, /* @__PURE__ */ React3.createElement(Input2.TextInput, {
425
+ ref: inputRef,
426
+ autoFocus: true,
427
+ placeholder: t("function request placeholder"),
428
+ value: input,
429
+ onChange: (ev) => setInput(ev.target.value),
430
+ onKeyDown: (ev) => ev.key === "Enter" && handleRequest(input)
431
+ })), /* @__PURE__ */ React3.createElement(Toolbar.Button, {
432
+ onClick: () => handleRequest(input)
433
+ }, /* @__PURE__ */ React3.createElement(Icon, {
434
+ icon: "ph--play--regular",
435
+ size: 4
436
+ })), /* @__PURE__ */ React3.createElement(Toolbar.Button, {
437
+ onClick: () => state ? handleStop() : handleClear()
438
+ }, /* @__PURE__ */ React3.createElement(Icon, {
439
+ icon: state ? "ph--stop--regular" : "ph--trash--regular",
440
+ size: 4
441
+ }))));
442
+ } finally {
443
+ _effect.f();
444
+ }
445
+ };
446
+ var MessageThread = /* @__PURE__ */ forwardRef(({ state, history, result }, forwardedRef) => {
447
+ var _effect = _useSignals3();
448
+ try {
449
+ return /* @__PURE__ */ React3.createElement("div", {
450
+ ref: forwardedRef,
451
+ className: "flex flex-col gap-6 h-full p-2 overflow-x-hidden overflow-y-auto"
452
+ }, history.map((message, i) => /* @__PURE__ */ React3.createElement("div", {
453
+ key: i,
454
+ className: "grid grid-cols-[2rem_1fr_2rem]"
455
+ }, /* @__PURE__ */ React3.createElement("div", {
456
+ className: "p-1"
457
+ }, message.type === "response" && /* @__PURE__ */ React3.createElement(RobotAvatar, null)), /* @__PURE__ */ React3.createElement("div", {
458
+ className: "overflow-auto"
459
+ }, /* @__PURE__ */ React3.createElement(MessageItem, {
460
+ message
461
+ })))), result?.length > 0 && /* @__PURE__ */ React3.createElement("div", {
462
+ className: "grid grid-cols-[2rem_1fr_2rem]"
463
+ }, /* @__PURE__ */ React3.createElement("div", {
464
+ className: "p-1"
465
+ }, state === "pending" && /* @__PURE__ */ React3.createElement(Icon, {
466
+ icon: "ph--spinner--regular",
467
+ size: 6,
468
+ classNames: "animate-spin"
469
+ }) || /* @__PURE__ */ React3.createElement(Icon, {
470
+ icon: "ph--robot--regular",
471
+ size: 6,
472
+ classNames: "animate-[pulse_1s_ease-in-out_infinite]"
473
+ })), /* @__PURE__ */ React3.createElement("div", {
474
+ className: "overflow-auto"
475
+ }, /* @__PURE__ */ React3.createElement(MessageItem, {
476
+ message: {
477
+ type: "response",
478
+ text: result
479
+ }
480
+ }))));
481
+ } finally {
482
+ _effect.f();
483
+ }
484
+ });
485
+ var MessageItem = ({ classNames, message }) => {
486
+ var _effect = _useSignals3();
487
+ try {
488
+ const { type, text, data, error } = message;
489
+ const wrapper = "p-1 px-2 rounded-lg bg-hoverSurface overflow-auto";
490
+ return /* @__PURE__ */ React3.createElement("div", {
491
+ className: mx("flex", type === "request" ? "ml-[1rem] justify-end" : "mr-[1rem]", classNames)
492
+ }, error && /* @__PURE__ */ React3.createElement("div", {
493
+ className: mx(wrapper, "whitespace-pre", errorText)
494
+ }, String(error)), text !== void 0 && /* @__PURE__ */ React3.createElement("div", {
495
+ className: mx(wrapper, type === "request" && "bg-primary-400 dark:bg-primary-600")
496
+ }, text || "\xD8"), data && /* @__PURE__ */ React3.createElement(SyntaxHighlighter, {
497
+ language: "json",
498
+ className: mx(wrapper, "px-8 py-2 text-xs")
499
+ }, JSON.stringify(data, null, 2)));
500
+ } finally {
501
+ _effect.f();
502
+ }
503
+ };
504
+ var RobotAvatar = () => {
505
+ var _effect = _useSignals3();
506
+ try {
507
+ return /* @__PURE__ */ React3.createElement(Avatar.Root, null, /* @__PURE__ */ React3.createElement(Avatar.Content, {
508
+ size: 6,
509
+ variant: "circle",
510
+ icon: "ph--robot--regular"
511
+ }));
512
+ } finally {
513
+ _effect.f();
514
+ }
515
+ };
516
+
517
+ // packages/plugins/plugin-script/src/components/index.ts
518
+ import { lazy } from "react";
519
+ var ScriptContainer = lazy(() => import("./ScriptContainer-Q2K5FJSC.mjs"));
520
+ var DeploymentDialog = lazy(() => import("./DeploymentDialog-NLWQHNKE.mjs"));
521
+
522
+ export {
523
+ ScriptObjectSettings,
524
+ ScriptProperties,
525
+ ScriptPluginSettings,
526
+ TestPanel,
527
+ ScriptContainer,
528
+ DeploymentDialog
529
+ };
530
+ //# sourceMappingURL=chunk-74DEDPHT.mjs.map