@dxos/plugin-script 0.8.1-staging.5be625a → 0.8.1-staging.9eaf14f

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 (257) hide show
  1. package/dist/lib/browser/DeploymentDialog-AEPYJKPO.mjs +12 -0
  2. package/dist/lib/browser/DeploymentDialog-AEPYJKPO.mjs.map +7 -0
  3. package/dist/lib/browser/{ScriptContainer-DDXZNAPF.mjs → ScriptContainer-R25PRK2D.mjs} +26 -33
  4. package/dist/lib/browser/ScriptContainer-R25PRK2D.mjs.map +7 -0
  5. package/dist/lib/browser/app-graph-builder-RRLY67QC.mjs +64 -0
  6. package/dist/lib/browser/app-graph-builder-RRLY67QC.mjs.map +7 -0
  7. package/dist/lib/browser/{artifact-definition-GYCZJGR4.mjs → artifact-definition-WXFYD2V5.mjs} +5 -5
  8. package/dist/lib/browser/artifact-definition-WXFYD2V5.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-T7XG5GED.mjs → chunk-2CGZFDCR.mjs} +290 -277
  10. package/dist/lib/browser/chunk-2CGZFDCR.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-4VD3K3PY.mjs +15 -0
  12. package/dist/lib/browser/{chunk-FG66JYON.mjs.map → chunk-4VD3K3PY.mjs.map} +3 -3
  13. package/dist/lib/browser/chunk-CSZXPLYY.mjs +147 -0
  14. package/dist/lib/browser/chunk-CSZXPLYY.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-KLEOGVXY.mjs +352 -0
  16. package/dist/lib/browser/chunk-KLEOGVXY.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-MQZQB5VD.mjs +233 -0
  18. package/dist/lib/browser/chunk-MQZQB5VD.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-AJNRPWAA.mjs → chunk-R2CHVWJ2.mjs} +5 -4
  20. package/dist/lib/browser/chunk-R2CHVWJ2.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-SUCBNCEQ.mjs +87 -0
  22. package/dist/lib/browser/chunk-SUCBNCEQ.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-27LV6ARH.mjs → chunk-WSK3YQXI.mjs} +9 -3
  24. package/dist/lib/browser/{chunk-27LV6ARH.mjs.map → chunk-WSK3YQXI.mjs.map} +3 -3
  25. package/dist/lib/browser/{compiler-ZQLHHJ5P.mjs → compiler-56LTBEQB.mjs} +7 -7
  26. package/dist/lib/browser/index.mjs +62 -52
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/intent-resolver-WCVXKRBR.mjs +90 -0
  29. package/dist/lib/browser/intent-resolver-WCVXKRBR.mjs.map +7 -0
  30. package/dist/lib/browser/meta.json +1 -1
  31. package/dist/lib/browser/react-surface-WXZVPNGI.mjs +117 -0
  32. package/dist/lib/browser/react-surface-WXZVPNGI.mjs.map +7 -0
  33. package/dist/lib/browser/{settings-467GVEBU.mjs → settings-Z7B37V2I.mjs} +6 -6
  34. package/dist/lib/browser/{settings-467GVEBU.mjs.map → settings-Z7B37V2I.mjs.map} +3 -3
  35. package/dist/lib/browser/types.mjs +5 -2
  36. package/dist/lib/node/DeploymentDialog-O4MU4OMF.cjs +33 -0
  37. package/dist/lib/node/DeploymentDialog-O4MU4OMF.cjs.map +7 -0
  38. package/dist/lib/node/{ScriptContainer-DM4WSS4Y.cjs → ScriptContainer-5KY6ZOQD.cjs} +29 -34
  39. package/dist/lib/node/ScriptContainer-5KY6ZOQD.cjs.map +7 -0
  40. package/dist/lib/node/app-graph-builder-6I2BWD46.cjs +80 -0
  41. package/dist/lib/node/app-graph-builder-6I2BWD46.cjs.map +7 -0
  42. package/dist/lib/node/{artifact-definition-3SNVJ34V.cjs → artifact-definition-6NVXEHJD.cjs} +11 -11
  43. package/dist/lib/node/artifact-definition-6NVXEHJD.cjs.map +7 -0
  44. package/dist/lib/node/chunk-65MIJR3Q.cjs +173 -0
  45. package/dist/lib/node/chunk-65MIJR3Q.cjs.map +7 -0
  46. package/dist/lib/node/chunk-F4DP7WON.cjs +372 -0
  47. package/dist/lib/node/chunk-F4DP7WON.cjs.map +7 -0
  48. package/dist/lib/node/{chunk-AOKGOI5J.cjs → chunk-JICWAOWZ.cjs} +6 -6
  49. package/dist/lib/node/{chunk-AOKGOI5J.cjs.map → chunk-JICWAOWZ.cjs.map} +3 -3
  50. package/dist/lib/node/{chunk-VLQUYHPB.cjs → chunk-SLDJM45C.cjs} +286 -272
  51. package/dist/lib/node/chunk-SLDJM45C.cjs.map +7 -0
  52. package/dist/lib/node/chunk-VYBEBLDO.cjs +251 -0
  53. package/dist/lib/node/chunk-VYBEBLDO.cjs.map +7 -0
  54. package/dist/lib/node/chunk-X7MHLHHS.cjs +91 -0
  55. package/dist/lib/node/chunk-X7MHLHHS.cjs.map +7 -0
  56. package/dist/lib/node/{chunk-XFB6JL2G.cjs → chunk-XFZPWFEG.cjs} +8 -7
  57. package/dist/lib/node/chunk-XFZPWFEG.cjs.map +7 -0
  58. package/dist/lib/node/{chunk-2XX4L67K.cjs → chunk-YJQZHKKA.cjs} +11 -4
  59. package/dist/lib/node/{chunk-2XX4L67K.cjs.map → chunk-YJQZHKKA.cjs.map} +3 -3
  60. package/dist/lib/node/{compiler-5ALLTH2B.cjs → compiler-W2RU3M7U.cjs} +8 -8
  61. package/dist/lib/node/index.cjs +72 -62
  62. package/dist/lib/node/index.cjs.map +3 -3
  63. package/dist/lib/node/intent-resolver-J4NBDNFH.cjs +100 -0
  64. package/dist/lib/node/intent-resolver-J4NBDNFH.cjs.map +7 -0
  65. package/dist/lib/node/meta.json +1 -1
  66. package/dist/lib/node/react-surface-27KTUBIZ.cjs +129 -0
  67. package/dist/lib/node/react-surface-27KTUBIZ.cjs.map +7 -0
  68. package/dist/lib/node/{settings-WLYT2XQF.cjs → settings-EI6VPNKN.cjs} +9 -9
  69. package/dist/lib/node/{settings-WLYT2XQF.cjs.map → settings-EI6VPNKN.cjs.map} +3 -3
  70. package/dist/lib/node/types.cjs +6 -4
  71. package/dist/lib/node/types.cjs.map +2 -2
  72. package/dist/lib/node-esm/DeploymentDialog-SSQSWLHX.mjs +13 -0
  73. package/dist/lib/node-esm/DeploymentDialog-SSQSWLHX.mjs.map +7 -0
  74. package/dist/lib/node-esm/{ScriptContainer-HWCHDARL.mjs → ScriptContainer-W2F4FGDV.mjs} +26 -33
  75. package/dist/lib/node-esm/ScriptContainer-W2F4FGDV.mjs.map +7 -0
  76. package/dist/lib/node-esm/app-graph-builder-H5XLRVX3.mjs +65 -0
  77. package/dist/lib/node-esm/app-graph-builder-H5XLRVX3.mjs.map +7 -0
  78. package/dist/lib/node-esm/{artifact-definition-VAFNV62U.mjs → artifact-definition-KQ64AYBP.mjs} +5 -5
  79. package/dist/lib/node-esm/artifact-definition-KQ64AYBP.mjs.map +7 -0
  80. package/dist/lib/node-esm/{chunk-BIFA5BEB.mjs → chunk-4MTPYMV2.mjs} +290 -277
  81. package/dist/lib/node-esm/chunk-4MTPYMV2.mjs.map +7 -0
  82. package/dist/lib/node-esm/{chunk-MFXRE7ZD.mjs → chunk-EB5DSAD4.mjs} +5 -5
  83. package/dist/lib/node-esm/{chunk-MFXRE7ZD.mjs.map → chunk-EB5DSAD4.mjs.map} +3 -3
  84. package/dist/lib/node-esm/chunk-F4HA5C34.mjs +234 -0
  85. package/dist/lib/node-esm/chunk-F4HA5C34.mjs.map +7 -0
  86. package/dist/lib/node-esm/{chunk-5S2KBIMH.mjs → chunk-FDEAVT67.mjs} +9 -3
  87. package/dist/lib/node-esm/{chunk-5S2KBIMH.mjs.map → chunk-FDEAVT67.mjs.map} +3 -3
  88. package/dist/lib/node-esm/chunk-MU3JKVL2.mjs +148 -0
  89. package/dist/lib/node-esm/chunk-MU3JKVL2.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-PBGVTGL2.mjs +353 -0
  91. package/dist/lib/node-esm/chunk-PBGVTGL2.mjs.map +7 -0
  92. package/dist/lib/node-esm/chunk-QDYGTY4L.mjs +89 -0
  93. package/dist/lib/node-esm/chunk-QDYGTY4L.mjs.map +7 -0
  94. package/dist/lib/node-esm/{chunk-WQ4YIZ2L.mjs → chunk-RW2APVMV.mjs} +5 -4
  95. package/dist/lib/node-esm/chunk-RW2APVMV.mjs.map +7 -0
  96. package/dist/lib/node-esm/{compiler-K7GYROAO.mjs → compiler-VT5C2Z3T.mjs} +7 -7
  97. package/dist/lib/node-esm/index.mjs +62 -52
  98. package/dist/lib/node-esm/index.mjs.map +3 -3
  99. package/dist/lib/node-esm/intent-resolver-PDZ2A26X.mjs +91 -0
  100. package/dist/lib/node-esm/intent-resolver-PDZ2A26X.mjs.map +7 -0
  101. package/dist/lib/node-esm/meta.json +1 -1
  102. package/dist/lib/node-esm/react-surface-UCUVDVSH.mjs +118 -0
  103. package/dist/lib/node-esm/react-surface-UCUVDVSH.mjs.map +7 -0
  104. package/dist/lib/node-esm/{settings-DR3B6GHE.mjs → settings-HU5UEFRF.mjs} +6 -6
  105. package/dist/lib/node-esm/{settings-DR3B6GHE.mjs.map → settings-HU5UEFRF.mjs.map} +3 -3
  106. package/dist/lib/node-esm/types.mjs +5 -2
  107. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/app-graph-builder.d.ts +181 -0
  109. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  110. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/index.d.ts +178 -1
  112. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  115. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +11 -0
  116. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
  117. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +18 -0
  118. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
  119. package/dist/types/src/components/DeploymentDialog/index.d.ts +4 -0
  120. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +1 -0
  121. package/dist/types/src/components/ScriptContainer.d.ts +3 -4
  122. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  123. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  124. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +8 -0
  125. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -0
  126. package/dist/types/src/components/{ScriptSettings/ScriptSettings.d.ts → Settings/ScriptPluginSettings.d.ts} +2 -2
  127. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -0
  128. package/dist/types/src/components/Settings/index.d.ts +3 -0
  129. package/dist/types/src/components/Settings/index.d.ts.map +1 -0
  130. package/dist/types/src/components/TestPanel/TestPanel.d.ts +7 -0
  131. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -0
  132. package/dist/types/src/components/TestPanel/index.d.ts +2 -0
  133. package/dist/types/src/components/TestPanel/index.d.ts.map +1 -0
  134. package/dist/types/src/components/index.d.ts +8 -5
  135. package/dist/types/src/components/index.d.ts.map +1 -1
  136. package/dist/types/src/hooks/deploy.d.ts +10 -7
  137. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  138. package/dist/types/src/hooks/index.d.ts +1 -1
  139. package/dist/types/src/hooks/index.d.ts.map +1 -1
  140. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts +17 -0
  141. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -0
  142. package/dist/types/src/hooks/useToolbarAction.d.ts +2 -3
  143. package/dist/types/src/hooks/useToolbarAction.d.ts.map +1 -1
  144. package/dist/types/src/meta.d.ts +1 -0
  145. package/dist/types/src/meta.d.ts.map +1 -1
  146. package/dist/types/src/templates/chess.d.ts.map +1 -1
  147. package/dist/types/src/templates/data-generator.d.ts +10 -0
  148. package/dist/types/src/templates/data-generator.d.ts.map +1 -0
  149. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  150. package/dist/types/src/templates/gmail.d.ts +3 -0
  151. package/dist/types/src/templates/gmail.d.ts.map +1 -0
  152. package/dist/types/src/templates/index.d.ts.map +1 -1
  153. package/dist/types/src/translations.d.ts +66 -15
  154. package/dist/types/src/translations.d.ts.map +1 -1
  155. package/dist/types/src/types.d.ts +4 -0
  156. package/dist/types/src/types.d.ts.map +1 -1
  157. package/dist/types/src/util/deploy.d.ts +25 -0
  158. package/dist/types/src/util/deploy.d.ts.map +1 -0
  159. package/dist/types/src/util/functions.d.ts +11 -0
  160. package/dist/types/src/util/functions.d.ts.map +1 -0
  161. package/dist/types/src/util/index.d.ts +3 -0
  162. package/dist/types/src/util/index.d.ts.map +1 -0
  163. package/package.json +51 -49
  164. package/src/ScriptPlugin.tsx +12 -17
  165. package/src/capabilities/app-graph-builder.ts +47 -0
  166. package/src/capabilities/artifact-definition.ts +1 -1
  167. package/src/capabilities/capabilities.ts +2 -2
  168. package/src/capabilities/index.ts +2 -1
  169. package/src/capabilities/intent-resolver.ts +39 -5
  170. package/src/capabilities/react-surface.tsx +62 -33
  171. package/src/capabilities/settings.ts +2 -2
  172. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +39 -0
  173. package/src/components/DeploymentDialog/DeploymentDialog.tsx +112 -0
  174. package/src/components/DeploymentDialog/index.ts +9 -0
  175. package/src/components/ScriptContainer.tsx +22 -35
  176. package/src/components/ScriptToolbar/ScriptToolbar.tsx +3 -4
  177. package/src/components/{ScriptSettingsPanel.tsx → Settings/ScriptObjectSettings.tsx} +120 -102
  178. package/src/components/{ScriptSettings/ScriptSettings.tsx → Settings/ScriptPluginSettings.tsx} +3 -3
  179. package/src/components/Settings/index.ts +6 -0
  180. package/src/components/{DebugPanel/DebugPanel.tsx → TestPanel/TestPanel.tsx} +8 -14
  181. package/src/components/{LogsPanel → TestPanel}/index.ts +1 -1
  182. package/src/components/index.ts +4 -4
  183. package/src/hooks/deploy.ts +31 -80
  184. package/src/hooks/index.ts +1 -1
  185. package/src/hooks/useCreateAndDeployScriptTemplates.ts +59 -0
  186. package/src/hooks/useToolbarAction.ts +9 -22
  187. package/src/meta.ts +5 -0
  188. package/src/templates/chess.ts +4 -0
  189. package/src/templates/data-generator.ts +73 -0
  190. package/src/templates/discord.ts +1 -1
  191. package/src/templates/forex-effect.ts +2 -1
  192. package/src/templates/gmail.ts +244 -0
  193. package/src/templates/index.ts +14 -0
  194. package/src/translations.ts +27 -8
  195. package/src/types.ts +4 -0
  196. package/src/util/deploy.ts +126 -0
  197. package/src/util/functions.ts +53 -0
  198. package/src/util/index.ts +6 -0
  199. package/dist/lib/browser/ScriptContainer-DDXZNAPF.mjs.map +0 -7
  200. package/dist/lib/browser/artifact-definition-GYCZJGR4.mjs.map +0 -7
  201. package/dist/lib/browser/chunk-4SSKJNMZ.mjs +0 -69
  202. package/dist/lib/browser/chunk-4SSKJNMZ.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-AJNRPWAA.mjs.map +0 -7
  204. package/dist/lib/browser/chunk-FG66JYON.mjs +0 -15
  205. package/dist/lib/browser/chunk-LJN26TSM.mjs +0 -526
  206. package/dist/lib/browser/chunk-LJN26TSM.mjs.map +0 -7
  207. package/dist/lib/browser/chunk-T7XG5GED.mjs.map +0 -7
  208. package/dist/lib/browser/intent-resolver-3B3Z67FP.mjs +0 -45
  209. package/dist/lib/browser/intent-resolver-3B3Z67FP.mjs.map +0 -7
  210. package/dist/lib/browser/react-surface-ICXHFHN7.mjs +0 -79
  211. package/dist/lib/browser/react-surface-ICXHFHN7.mjs.map +0 -7
  212. package/dist/lib/node/ScriptContainer-DM4WSS4Y.cjs.map +0 -7
  213. package/dist/lib/node/artifact-definition-3SNVJ34V.cjs.map +0 -7
  214. package/dist/lib/node/chunk-I5Z6TRZY.cjs +0 -548
  215. package/dist/lib/node/chunk-I5Z6TRZY.cjs.map +0 -7
  216. package/dist/lib/node/chunk-VLQUYHPB.cjs.map +0 -7
  217. package/dist/lib/node/chunk-XCQNFRZ6.cjs +0 -77
  218. package/dist/lib/node/chunk-XCQNFRZ6.cjs.map +0 -7
  219. package/dist/lib/node/chunk-XFB6JL2G.cjs.map +0 -7
  220. package/dist/lib/node/intent-resolver-CN5WMMAD.cjs +0 -59
  221. package/dist/lib/node/intent-resolver-CN5WMMAD.cjs.map +0 -7
  222. package/dist/lib/node/react-surface-IER3VEZR.cjs +0 -95
  223. package/dist/lib/node/react-surface-IER3VEZR.cjs.map +0 -7
  224. package/dist/lib/node-esm/ScriptContainer-HWCHDARL.mjs.map +0 -7
  225. package/dist/lib/node-esm/artifact-definition-VAFNV62U.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-4YUSGXJ2.mjs +0 -71
  227. package/dist/lib/node-esm/chunk-4YUSGXJ2.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-BIFA5BEB.mjs.map +0 -7
  229. package/dist/lib/node-esm/chunk-F2O475DQ.mjs +0 -527
  230. package/dist/lib/node-esm/chunk-F2O475DQ.mjs.map +0 -7
  231. package/dist/lib/node-esm/chunk-WQ4YIZ2L.mjs.map +0 -7
  232. package/dist/lib/node-esm/intent-resolver-6F7CVQEX.mjs +0 -46
  233. package/dist/lib/node-esm/intent-resolver-6F7CVQEX.mjs.map +0 -7
  234. package/dist/lib/node-esm/react-surface-EXSKKZNP.mjs +0 -80
  235. package/dist/lib/node-esm/react-surface-EXSKKZNP.mjs.map +0 -7
  236. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts +0 -7
  237. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +0 -1
  238. package/dist/types/src/components/DebugPanel/index.d.ts +0 -2
  239. package/dist/types/src/components/DebugPanel/index.d.ts.map +0 -1
  240. package/dist/types/src/components/LogsPanel/LogsPanel.d.ts +0 -8
  241. package/dist/types/src/components/LogsPanel/LogsPanel.d.ts.map +0 -1
  242. package/dist/types/src/components/LogsPanel/index.d.ts +0 -2
  243. package/dist/types/src/components/LogsPanel/index.d.ts.map +0 -1
  244. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +0 -1
  245. package/dist/types/src/components/ScriptSettings/index.d.ts +0 -2
  246. package/dist/types/src/components/ScriptSettings/index.d.ts.map +0 -1
  247. package/dist/types/src/components/ScriptSettingsPanel.d.ts +0 -7
  248. package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +0 -1
  249. package/dist/types/src/hooks/view.d.ts +0 -21
  250. package/dist/types/src/hooks/view.d.ts.map +0 -1
  251. package/src/components/DebugPanel/index.ts +0 -5
  252. package/src/components/LogsPanel/LogsPanel.tsx +0 -116
  253. package/src/components/ScriptSettings/index.ts +0 -5
  254. package/src/hooks/view.ts +0 -38
  255. /package/dist/lib/browser/{compiler-ZQLHHJ5P.mjs.map → compiler-56LTBEQB.mjs.map} +0 -0
  256. /package/dist/lib/node/{compiler-5ALLTH2B.cjs.map → compiler-W2RU3M7U.cjs.map} +0 -0
  257. /package/dist/lib/node-esm/{compiler-K7GYROAO.mjs.map → compiler-VT5C2Z3T.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/Settings/ScriptObjectSettings.tsx", "../../../src/components/Settings/ScriptPluginSettings.tsx", "../../../src/components/TestPanel/TestPanel.tsx", "../../../src/components/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Octokit } from '@octokit/core';\nimport React, { type ChangeEvent, useCallback, useEffect, useState } from 'react';\n\nimport { createIntent, SettingsAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { FunctionType, type ScriptType, getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions/types';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { Button, Clipboard, Input, useControlledState, useTranslation } from '@dxos/react-ui';\nimport { AccessTokenType } from '@dxos/schema';\n\nimport { SCRIPT_PLUGIN } from '../../meta';\n\nexport type ScriptObjectSettingsProps = {\n object: ScriptType;\n};\n\nexport const ScriptObjectSettings = ({ object }: ScriptObjectSettingsProps) => {\n return (\n <>\n <Binding object={object} />\n <Publishing object={object} />\n </>\n );\n};\n\nexport const ScriptProperties = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n return (\n <Input.Root>\n <Input.Label>{t('description label')}</Input.Label>\n <Input.TextInput\n placeholder={t('description placeholder')}\n value={object.description ?? ''}\n onChange={(event) => {\n object.description = event.target.value;\n }}\n />\n </Input.Root>\n );\n};\n\nconst Binding = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const client = useClient();\n const space = getSpace(object);\n const [fn] = useQuery(space, Filter.schema(FunctionType, { source: object }));\n\n const functionPath = fn && getUserFunctionUrlInMetadata(getMeta(fn));\n const functionUrl =\n functionPath &&\n getInvocationUrl(functionPath, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: space?.id,\n });\n\n const [binding, setBinding] = useControlledState(fn?.binding ?? '');\n const handleBindingChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setBinding(event.target.value);\n },\n [setBinding],\n );\n\n const handleBindingBlur = useCallback(() => {\n fn.binding = binding;\n }, [fn, binding]);\n\n if (!fn || !functionUrl) {\n return null;\n }\n\n // TODO(burdon): Use form.\n return (\n <div role='form' className='flex flex-col p-2 gap-2'>\n <h2>{t('remote function settings heading')}</h2>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('function url label')}</Input.Label>\n <div role='none' className='flex gap-1'>\n <Input.TextInput\n disabled\n value={functionUrl}\n onChange={(event) => {\n fn.name = event.target.value;\n }}\n />\n <Clipboard.IconButton value={functionUrl} />\n </div>\n </div>\n </Input.Root>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('function binding label')}</Input.Label>\n <Input.TextInput\n placeholder={t('function binding placeholder')}\n value={binding}\n onChange={handleBindingChange}\n onBlur={handleBindingBlur}\n />\n </div>\n </Input.Root>\n </div>\n );\n};\n\n// TODO(burdon): Move to separate tab?\nconst Publishing = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const space = getSpace(object);\n const [githubToken] = useQuery(space, Filter.schema(AccessTokenType, { source: 'github.com' }));\n const gistKey = getMeta(object).keys.find(({ source }) => source === 'github.com');\n const [gistUrl, setGistUrl] = useState<string | undefined>();\n\n useEffect(() => {\n const token = githubToken?.token;\n const gistId = gistKey?.id;\n if (!token || !gistId) {\n setGistUrl(undefined);\n return;\n }\n\n const timeout = setTimeout(async () => {\n try {\n const octokit = new Octokit({ auth: githubToken.token });\n const response = await octokit.request('GET /gists/{gist_id}', {\n gist_id: gistId,\n });\n setGistUrl(response.data.html_url);\n } catch (err) {\n log.catch(err);\n setGistUrl(undefined);\n }\n });\n\n return () => clearTimeout(timeout);\n }, [githubToken, gistKey]);\n\n const handleOpenTokenManager = useCallback(\n () => dispatch(createIntent(SettingsAction.Open, { plugin: 'dxos.org/plugin/token-manager' })),\n [],\n );\n\n const [publishing, setPublishing] = useState(false);\n const handlePublish = useCallback(async () => {\n setPublishing(true);\n const octokit = new Octokit({ auth: githubToken.token });\n const source = await object.source.load();\n const filename = object.name ? kebabize(object.name) : 'composer-script';\n const files = { [`${filename}.ts`]: { content: source.content } };\n\n try {\n // TODO(wittjosiah): Factor out to intent.\n const meta = getMeta(object);\n const githubKey = meta.keys.find(({ source }) => source === 'github.com');\n const gistId = githubKey?.id;\n if (gistId) {\n await octokit.request('PATCH /gists/{gist_id}', {\n gist_id: gistId,\n files,\n });\n } else {\n const response = await octokit.request('POST /gists', {\n public: true,\n files,\n });\n if (response.data.id) {\n meta.keys.push({ source: 'github.com', id: response.data.id });\n }\n }\n } finally {\n setPublishing(false);\n }\n }, [object, githubToken]);\n\n return (\n <div className='flex flex-col p-2 gap-4'>\n <div>\n <h2>{t('script publish settings label')}</h2>\n <p className='text-description text-sm'>{t('script publish settings description')}</p>\n </div>\n {!githubToken && (\n <div className='flex flex-col gap-2'>\n <span>{t('no github token label')}</span>\n <Button onClick={handleOpenTokenManager}>{t('open token manager label')}</Button>\n </div>\n )}\n {githubToken && (\n <div className='flex justify-end gap-2'>\n {gistUrl && <Clipboard.IconButton value={gistUrl} />}\n <Button disabled={publishing} onClick={handlePublish}>\n {t(publishing ? 'publishing label' : 'publish label')}\n </Button>\n </div>\n )}\n </div>\n );\n};\n\n// TODO(wittjosiah): Factor out.\n// From https://stackoverflow.com/a/67243723/2804332\nconst kebabize = (str: string) => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { useClient } from '@dxos/react-client';\nimport { Button, Select, useTranslation } from '@dxos/react-ui';\nimport { type EditorInputMode, EditorInputModes } from '@dxos/react-ui-editor';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { meta } from '../../meta';\nimport { type ScriptSettingsProps } from '../../types';\n\nexport const ScriptPluginSettings = ({ settings }: { settings: ScriptSettingsProps }) => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n\n // TODO(burdon): Check token.\n const handleAuthenticate = async () => {\n const { identityKey } = client.halo.identity.get()!;\n await client.halo.writeCredentials([\n {\n issuer: identityKey,\n issuanceDate: new Date(),\n subject: {\n id: identityKey,\n assertion: {\n '@type': 'dxos.halo.credentials.ServiceAccess',\n serverName: 'hub.dxos.network',\n serverKey: identityKey,\n identityKey,\n capabilities: ['composer:beta'],\n },\n },\n } satisfies Credential,\n ]);\n };\n\n return (\n <DeprecatedFormContainer>\n {/* TODO(wittjosiah): Hide outside of dev environments. */}\n <DeprecatedFormInput label={t('authenticate action label')}>\n <Button onClick={handleAuthenticate}>{t('authenticate button label')}</Button>\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('editor input mode label')}>\n <Select.Root\n value={settings.editorInputMode ?? 'default'}\n onValueChange={(value) => {\n settings.editorInputMode = value as EditorInputMode;\n }}\n >\n <Select.TriggerButton placeholder={t('select editor input mode placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorInputModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`settings editor input mode ${mode} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport { Avatar, Icon, Input, type ThemedClassName, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { errorText, mx } from '@dxos/react-ui-theme';\n\nimport { SCRIPT_PLUGIN } from '../../meta';\n\ntype State = 'pending' | 'responding';\n\n/**\n * Request or response.\n */\ntype Message = { type: 'request' | 'response'; text?: string; data?: any; error?: Error };\n\nexport type TestPanelProps = ThemedClassName<{\n functionUrl?: string;\n}>;\n\n// TODO(burdon): Need persistent history (currently lost when switching tabs)..\nexport const TestPanel = ({ classNames, functionUrl }: TestPanelProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [input, setInput] = useState('');\n const [result, setResult] = useState('');\n const [state, setState] = useState<State | null>(null);\n\n // TODO(burdon): Persistent history (thread).\n const [history, setHistory] = useState<Message[]>([]);\n\n const scrollerRef = useRef<HTMLDivElement>(null);\n const handleScroll = () => {\n if (scrollerRef.current) {\n scrollerRef.current.scrollTop = scrollerRef.current.scrollHeight;\n }\n };\n\n const controller = useRef<AbortController>();\n useEffect(() => {\n return () => {\n handleStop();\n };\n }, []);\n\n const handleStop = () => {\n controller.current?.abort('stop');\n controller.current = undefined;\n };\n\n const handleClear = () => {\n handleStop();\n setInput('');\n setResult('');\n setHistory([]);\n inputRef.current?.focus();\n };\n\n const handleResponse = ({ text, data, error }: { text?: string; data?: any; error?: Error } = {}) => {\n controller.current = undefined;\n setHistory((history) => [...history, { type: 'response', text, data, error } satisfies Message]);\n setResult('');\n setState(null);\n handleScroll();\n };\n\n const handleRequest = async (input: string) => {\n // Returns a promise that resolves when a value has been received.\n try {\n setState('pending');\n\n let data = null;\n // Detect JSON input.\n if (input.charAt(0) === '{') {\n try {\n const validJsonString = input.replace(/'/g, '\"').replace(/([{,]\\s*)([a-zA-Z0-9_]+)(\\s*:)/g, '$1\"$2\"$3');\n data = JSON.parse(validJsonString);\n input = JSON.stringify(data, null, 2);\n } catch (err) {\n inputRef.current?.focus();\n return;\n }\n }\n\n setInput('');\n setResult('');\n setHistory((history) => [...history, { type: 'request', text: input }]);\n setTimeout(() => {\n handleScroll();\n });\n\n // Throws DOMException when aborted.\n controller.current = new AbortController();\n const response = await fetch(functionUrl!, {\n signal: controller.current.signal,\n method: 'POST',\n body: input,\n headers: {\n 'Content-Type': data ? 'application/json' : 'text/plain',\n },\n });\n\n // Check for error.\n if (!response.ok) {\n const text = await response.text();\n handleResponse({ error: new Error(text || response.statusText || String(response.status)) });\n return;\n }\n\n // Check for JSON.\n const contentType = response.headers.get('content-type');\n if (contentType === 'application/json') {\n const data = await response.json();\n handleResponse({ data });\n return;\n }\n\n // Text (including streaming).\n setState('responding');\n let text = '';\n const reader = response.body!.getReader();\n const pump = async ({ done, value }: ReadableStreamReadResult<Uint8Array>): Promise<void> => {\n text = text + new TextDecoder().decode(value);\n if (!controller.current || done) {\n handleResponse({ text });\n return;\n }\n\n setResult(text);\n setTimeout(() => {\n handleScroll();\n });\n\n return reader.read().then(pump);\n };\n\n void reader\n .read()\n .then(pump)\n .catch((err) => {\n if (err.name !== 'AbortError') {\n log.catch(err);\n }\n });\n } catch (err: any) {\n if (err !== 'stop') {\n const error = err instanceof Error ? err : new Error(err);\n handleResponse({ error });\n log.catch(err);\n } else {\n handleResponse();\n }\n }\n };\n\n return (\n <div className={mx('flex flex-col h-full overflow-hidden', classNames)}>\n {/* TODO(burdon): Replace with Thread. */}\n <MessageThread ref={scrollerRef} state={state} result={result} history={history} />\n {/* TODO(burdon): Replace with Form based on the function's input schema. */}\n <Toolbar.Root classNames='p-2'>\n <Input.Root>\n <Input.TextInput\n ref={inputRef}\n autoFocus\n placeholder={t('function request placeholder')}\n value={input}\n onChange={(ev) => setInput(ev.target.value)}\n onKeyDown={(ev) => ev.key === 'Enter' && handleRequest(input)}\n />\n </Input.Root>\n <Toolbar.Button onClick={() => handleRequest(input)}>\n <Icon icon='ph--play--regular' size={4} />\n </Toolbar.Button>\n <Toolbar.Button onClick={() => (state ? handleStop() : handleClear())}>\n <Icon icon={state ? 'ph--stop--regular' : 'ph--trash--regular'} size={4} />\n </Toolbar.Button>\n </Toolbar.Root>\n </div>\n );\n};\n\n// TODO(burdon): Replace with thread?\n// TODO(burdon): Button to edit/re-run question.\ntype MessageThreadProps = {\n state: State | null;\n history: Message[];\n result: string;\n};\n\nconst MessageThread = forwardRef<HTMLDivElement, MessageThreadProps>(\n ({ state, history, result }: MessageThreadProps, forwardedRef) => {\n return (\n <div ref={forwardedRef} className='flex flex-col gap-6 h-full p-2 overflow-x-hidden overflow-y-auto'>\n {history.map((message, i) => (\n <div key={i} className='grid grid-cols-[2rem_1fr_2rem]'>\n <div className='p-1'>{message.type === 'response' && <RobotAvatar />}</div>\n <div className='overflow-auto'>\n <MessageItem message={message} />\n </div>\n </div>\n ))}\n\n {result?.length > 0 && (\n <div className='grid grid-cols-[2rem_1fr_2rem]'>\n <div className='p-1'>\n {(state === 'pending' && <Icon icon='ph--spinner--regular' size={6} classNames='animate-spin' />) || (\n <Icon icon='ph--robot--regular' size={6} classNames='animate-[pulse_1s_ease-in-out_infinite]' />\n )}\n </div>\n <div className='overflow-auto'>\n <MessageItem message={{ type: 'response', text: result }} />\n </div>\n </div>\n )}\n </div>\n );\n },\n);\n\nconst MessageItem = ({ classNames, message }: ThemedClassName<{ message: Message }>) => {\n const { type, text, data, error } = message;\n const wrapper = 'p-1 px-2 rounded-lg bg-hoverSurface overflow-auto';\n return (\n <div className={mx('flex', type === 'request' ? 'ml-[1rem] justify-end' : 'mr-[1rem]', classNames)}>\n {error && <div className={mx(wrapper, 'whitespace-pre', errorText)}>{String(error)}</div>}\n\n {text !== undefined && (\n <div className={mx(wrapper, type === 'request' && 'bg-primary-400 dark:bg-primary-600')}>\n {text || '\\u00D8'}\n </div>\n )}\n\n {data && (\n <SyntaxHighlighter language='json' className={mx(wrapper, 'px-8 py-2 text-xs')}>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n )}\n </div>\n );\n};\n\nconst RobotAvatar = () => (\n <Avatar.Root>\n <Avatar.Content size={6} variant='circle' icon='ph--robot--regular' />\n </Avatar.Root>\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './Settings';\nexport * from './TestPanel';\nexport { DEPLOYMENT_DIALOG } from './DeploymentDialog';\n\nexport const ScriptContainer = lazy(() => import('./ScriptContainer'));\nexport const DeploymentDialog = lazy(() => import('./DeploymentDialog'));\n"],
5
+ "mappings": "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",
6
+ "names": ["Octokit", "React", "useCallback", "useEffect", "useState", "createIntent", "SettingsAction", "useIntentDispatcher", "FunctionType", "getInvocationUrl", "getUserFunctionUrlInMetadata", "log", "useClient", "Filter", "getMeta", "getSpace", "useQuery", "Button", "Clipboard", "Input", "useControlledState", "useTranslation", "AccessTokenType", "ScriptObjectSettings", "object", "Binding", "Publishing", "ScriptProperties", "t", "useTranslation", "SCRIPT_PLUGIN", "Input", "Root", "Label", "TextInput", "placeholder", "value", "description", "onChange", "event", "target", "client", "useClient", "space", "getSpace", "fn", "useQuery", "Filter", "schema", "FunctionType", "source", "functionPath", "getUserFunctionUrlInMetadata", "getMeta", "functionUrl", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "spaceId", "id", "binding", "setBinding", "useControlledState", "handleBindingChange", "useCallback", "handleBindingBlur", "div", "role", "className", "h2", "disabled", "name", "Clipboard", "IconButton", "onBlur", "dispatchPromise", "dispatch", "useIntentDispatcher", "githubToken", "AccessTokenType", "gistKey", "keys", "find", "gistUrl", "setGistUrl", "useState", "useEffect", "token", "gistId", "undefined", "timeout", "setTimeout", "octokit", "Octokit", "auth", "response", "request", "gist_id", "data", "html_url", "err", "log", "catch", "clearTimeout", "handleOpenTokenManager", "createIntent", "SettingsAction", "Open", "plugin", "publishing", "setPublishing", "handlePublish", "load", "filename", "kebabize", "files", "content", "meta", "githubKey", "public", "push", "p", "span", "Button", "onClick", "str", "replace", "$", "ofs", "toLowerCase", "React", "useClient", "Button", "Select", "useTranslation", "EditorInputModes", "DeprecatedFormContainer", "DeprecatedFormInput", "ScriptPluginSettings", "settings", "t", "useTranslation", "meta", "id", "client", "useClient", "handleAuthenticate", "identityKey", "halo", "identity", "get", "writeCredentials", "issuer", "issuanceDate", "Date", "subject", "assertion", "serverName", "serverKey", "capabilities", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Button", "onClick", "Select", "Root", "value", "editorInputMode", "onValueChange", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "EditorInputModes", "map", "mode", "Option", "key", "React", "forwardRef", "useEffect", "useRef", "useState", "log", "Avatar", "Icon", "Input", "Toolbar", "useTranslation", "SyntaxHighlighter", "errorText", "mx", "TestPanel", "classNames", "functionUrl", "t", "useTranslation", "SCRIPT_PLUGIN", "inputRef", "useRef", "input", "setInput", "useState", "result", "setResult", "state", "setState", "history", "setHistory", "scrollerRef", "handleScroll", "current", "scrollTop", "scrollHeight", "controller", "useEffect", "handleStop", "abort", "undefined", "handleClear", "focus", "handleResponse", "text", "data", "error", "type", "handleRequest", "charAt", "validJsonString", "replace", "JSON", "parse", "stringify", "err", "setTimeout", "AbortController", "response", "fetch", "signal", "method", "body", "headers", "ok", "Error", "statusText", "String", "status", "contentType", "get", "json", "reader", "getReader", "pump", "done", "value", "TextDecoder", "decode", "read", "then", "catch", "name", "log", "React", "div", "className", "mx", "MessageThread", "ref", "Toolbar", "Root", "Input", "TextInput", "autoFocus", "placeholder", "onChange", "ev", "target", "onKeyDown", "key", "Button", "onClick", "Icon", "icon", "size", "forwardRef", "forwardedRef", "map", "message", "i", "RobotAvatar", "MessageItem", "length", "wrapper", "errorText", "SyntaxHighlighter", "language", "Avatar", "Content", "variant", "lazy", "ScriptContainer", "lazy", "DeploymentDialog"]
7
+ }
@@ -0,0 +1,15 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-WSK3YQXI.mjs";
4
+
5
+ // packages/plugins/plugin-script/src/capabilities/capabilities.ts
6
+ import { defineCapability } from "@dxos/app-framework";
7
+ var ScriptCapabilities;
8
+ (function(ScriptCapabilities2) {
9
+ ScriptCapabilities2.Compiler = defineCapability(`${meta.id}/capability/compiler`);
10
+ })(ScriptCapabilities || (ScriptCapabilities = {}));
11
+
12
+ export {
13
+ ScriptCapabilities
14
+ };
15
+ //# sourceMappingURL=chunk-4VD3K3PY.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/capabilities.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\n\nimport { type Compiler } from '../compiler';\nimport { SCRIPT_PLUGIN } from '../meta';\n\nexport namespace ScriptCapabilities {\n export const Compiler = defineCapability<Compiler>(`${SCRIPT_PLUGIN}/capability/compiler`);\n}\n"],
5
- "mappings": ";;;;;AAIA,SAASA,wBAAwB;;UAKhBC,qBAAAA;sBACFC,WAAWC,iBAA2B,GAAGC,aAAAA,sBAAmC;AAC3F,GAFiBH,uBAAAA,qBAAAA,CAAAA,EAAAA;",
6
- "names": ["defineCapability", "ScriptCapabilities", "Compiler", "defineCapability", "SCRIPT_PLUGIN"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\n\nimport { type Compiler } from '../compiler';\nimport { meta } from '../meta';\n\nexport namespace ScriptCapabilities {\n export const Compiler = defineCapability<Compiler>(`${meta.id}/capability/compiler`);\n}\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,wBAAwB;;UAKhBC,qBAAAA;sBACFC,WAAWC,iBAA2B,GAAGC,KAAKC,EAAE,sBAAsB;AACrF,GAFiBJ,uBAAAA,qBAAAA,CAAAA,EAAAA;",
6
+ "names": ["defineCapability", "ScriptCapabilities", "Compiler", "defineCapability", "meta", "id"]
7
7
  }
@@ -0,0 +1,147 @@
1
+ import {
2
+ useCreateAndDeployScriptTemplates
3
+ } from "./chunk-MQZQB5VD.mjs";
4
+ import {
5
+ SCRIPT_PLUGIN
6
+ } from "./chunk-WSK3YQXI.mjs";
7
+
8
+ // packages/plugins/plugin-script/src/components/DeploymentDialog/DeploymentDialog.tsx
9
+ import React, { useEffect, useMemo } from "react";
10
+ import { createIntent, LayoutAction, useIntentDispatcher } from "@dxos/app-framework";
11
+ import { getSpace } from "@dxos/react-client/echo";
12
+ import { Button, Dialog, Icon, useTranslation } from "@dxos/react-ui";
13
+ var DEPLOYMENT_DIALOG = `${SCRIPT_PLUGIN}/deployment/dialog`;
14
+ var DeploymentDialog = ({ accessToken, scriptTemplates }) => {
15
+ const { t } = useTranslation(SCRIPT_PLUGIN);
16
+ const space = useMemo(() => getSpace(accessToken), [
17
+ accessToken
18
+ ]);
19
+ const { handleCreateAndDeployScripts, status } = useCreateAndDeployScriptTemplates(space, scriptTemplates);
20
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
21
+ useEffect(() => {
22
+ if (status === "success") {
23
+ void dispatch(createIntent(LayoutAction.AddToast, {
24
+ part: "toast",
25
+ subject: {
26
+ id: `${SCRIPT_PLUGIN}/deployment-success`,
27
+ icon: "ph--check--regular",
28
+ duration: Infinity,
29
+ title: [
30
+ "script deployment toast label",
31
+ {
32
+ ns: SCRIPT_PLUGIN,
33
+ count: scriptTemplates.length
34
+ }
35
+ ],
36
+ description: [
37
+ "script deployment toast description",
38
+ {
39
+ ns: SCRIPT_PLUGIN,
40
+ count: scriptTemplates.length
41
+ }
42
+ ],
43
+ closeLabel: [
44
+ "script deployment toast close label",
45
+ {
46
+ ns: SCRIPT_PLUGIN,
47
+ count: scriptTemplates.length
48
+ }
49
+ ]
50
+ }
51
+ }));
52
+ void dispatch(createIntent(LayoutAction.UpdateDialog, {
53
+ part: "dialog",
54
+ options: {
55
+ state: false
56
+ }
57
+ }));
58
+ }
59
+ if (status === "error") {
60
+ void dispatch(createIntent(LayoutAction.UpdateDialog, {
61
+ part: "dialog",
62
+ options: {
63
+ state: false
64
+ }
65
+ }));
66
+ void dispatch(createIntent(LayoutAction.AddToast, {
67
+ part: "toast",
68
+ subject: {
69
+ id: `${SCRIPT_PLUGIN}/deployment-error`,
70
+ icon: "ph--warning--regular",
71
+ duration: Infinity,
72
+ title: [
73
+ "script deployment error toast label",
74
+ {
75
+ ns: SCRIPT_PLUGIN,
76
+ count: scriptTemplates.length
77
+ }
78
+ ],
79
+ description: [
80
+ "script deployment error toast description",
81
+ {
82
+ ns: SCRIPT_PLUGIN,
83
+ count: scriptTemplates.length
84
+ }
85
+ ],
86
+ closeLabel: [
87
+ "script deployment error toast close label",
88
+ {
89
+ ns: SCRIPT_PLUGIN,
90
+ count: scriptTemplates.length
91
+ }
92
+ ]
93
+ }
94
+ }));
95
+ }
96
+ }, [
97
+ status,
98
+ dispatch
99
+ ]);
100
+ return /* @__PURE__ */ React.createElement(Dialog.Content, null, /* @__PURE__ */ React.createElement("div", {
101
+ className: "flex justify-between items-center"
102
+ }, /* @__PURE__ */ React.createElement(Dialog.Title, null, t("deployment dialog title")), /* @__PURE__ */ React.createElement(Dialog.Close, {
103
+ asChild: true
104
+ }, /* @__PURE__ */ React.createElement(Button, {
105
+ density: "fine",
106
+ variant: "ghost"
107
+ }, /* @__PURE__ */ React.createElement(Icon, {
108
+ icon: "ph--x--regular",
109
+ size: 4
110
+ })))), /* @__PURE__ */ React.createElement("div", {
111
+ role: "none",
112
+ className: "plb-4"
113
+ }, /* @__PURE__ */ React.createElement("p", null, t("deployment dialog scripts found message", {
114
+ count: scriptTemplates.length
115
+ })), /* @__PURE__ */ React.createElement("ul", {
116
+ className: "pbs-2"
117
+ }, scriptTemplates.map((template) => {
118
+ return /* @__PURE__ */ React.createElement("li", {
119
+ key: template.id
120
+ }, template.name);
121
+ }))), /* @__PURE__ */ React.createElement("div", {
122
+ role: "none",
123
+ className: "flex flex-row-reverse gap-1"
124
+ }, /* @__PURE__ */ React.createElement(Button, {
125
+ variant: "primary",
126
+ onClick: handleCreateAndDeployScripts,
127
+ disabled: status === "pending"
128
+ }, status === "pending" ? t("deployment dialog deploy functions pending button label", {
129
+ count: scriptTemplates.length
130
+ }) : t("deployment dialog deploy functions button label", {
131
+ count: scriptTemplates.length
132
+ })), /* @__PURE__ */ React.createElement(Dialog.Close, {
133
+ asChild: true,
134
+ disabled: status === "pending"
135
+ }, /* @__PURE__ */ React.createElement(Button, {
136
+ disabled: status === "pending"
137
+ }, t("deployment dialog skip button label")))));
138
+ };
139
+
140
+ // packages/plugins/plugin-script/src/components/DeploymentDialog/index.ts
141
+ var DeploymentDialog_default = DeploymentDialog;
142
+
143
+ export {
144
+ DEPLOYMENT_DIALOG,
145
+ DeploymentDialog_default
146
+ };
147
+ //# sourceMappingURL=chunk-CSZXPLYY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/DeploymentDialog/DeploymentDialog.tsx", "../../../src/components/DeploymentDialog/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';\nimport { type AccessTokenType } from '@dxos/schema';\n\nimport { useCreateAndDeployScriptTemplates } from '../../hooks/useCreateAndDeployScriptTemplates';\nimport { SCRIPT_PLUGIN } from '../../meta';\nimport { type Template } from '../../templates';\n\nexport const DEPLOYMENT_DIALOG = `${SCRIPT_PLUGIN}/deployment/dialog`;\n\n// TODO(ZaymonFC):\n// - Show activity and feedback to the user.\n// - Only take an array of templateIds and get the name from the data.\n// - Pending / onError states.\n\ntype DeploymentDialogProps = {\n accessToken: AccessTokenType;\n scriptTemplates: Template[];\n};\n\nexport const DeploymentDialog = ({ accessToken, scriptTemplates }: DeploymentDialogProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const space = useMemo(() => getSpace(accessToken), [accessToken]);\n\n // TODO(ZaymonFC): Thinking further. All of this should get moved to intents to run async in the background.\n // Deployment shouldn't be tied to the lifecycle of the dialogue component.\n const { handleCreateAndDeployScripts, status } = useCreateAndDeployScriptTemplates(space, scriptTemplates);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n useEffect(() => {\n if (status === 'success') {\n // TODO(ZaymonFC): We can probably re-use this toast for normal script deployment.\n void dispatch(\n createIntent(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${SCRIPT_PLUGIN}/deployment-success`,\n icon: 'ph--check--regular',\n duration: Infinity,\n title: ['script deployment toast label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],\n description: ['script deployment toast description', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],\n closeLabel: ['script deployment toast close label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],\n },\n }),\n );\n void dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));\n }\n if (status === 'error') {\n void dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));\n void dispatch(\n createIntent(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${SCRIPT_PLUGIN}/deployment-error`,\n icon: 'ph--warning--regular',\n duration: Infinity,\n title: ['script deployment error toast label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],\n description: [\n 'script deployment error toast description',\n { ns: SCRIPT_PLUGIN, count: scriptTemplates.length },\n ],\n closeLabel: [\n 'script deployment error toast close label',\n { ns: SCRIPT_PLUGIN, count: scriptTemplates.length },\n ],\n },\n }),\n );\n }\n }, [status, dispatch]);\n\n return (\n <Dialog.Content>\n <div className='flex justify-between items-center'>\n <Dialog.Title>{t('deployment dialog title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Button density='fine' variant='ghost'>\n <Icon icon='ph--x--regular' size={4} />\n </Button>\n </Dialog.Close>\n </div>\n <div role='none' className='plb-4'>\n {/* TODO: Implement deployment logic and UI. */}\n <p>{t('deployment dialog scripts found message', { count: scriptTemplates.length })}</p>\n <ul className='pbs-2'>\n {scriptTemplates.map((template) => {\n return <li key={template.id}>{template.name}</li>;\n })}\n </ul>\n </div>\n <div role='none' className='flex flex-row-reverse gap-1'>\n <Button variant='primary' onClick={handleCreateAndDeployScripts} disabled={status === 'pending'}>\n {status === 'pending'\n ? t('deployment dialog deploy functions pending button label', { count: scriptTemplates.length })\n : t('deployment dialog deploy functions button label', { count: scriptTemplates.length })}\n </Button>\n <Dialog.Close asChild disabled={status === 'pending'}>\n <Button disabled={status === 'pending'}>{t('deployment dialog skip button label')}</Button>\n </Dialog.Close>\n </div>\n </Dialog.Content>\n );\n};\n\nexport default DeploymentDialog;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DeploymentDialog, DEPLOYMENT_DIALOG } from './DeploymentDialog';\n\nexport { DEPLOYMENT_DIALOG };\n\nexport default DeploymentDialog;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useEffect", "useMemo", "createIntent", "LayoutAction", "useIntentDispatcher", "getSpace", "Button", "Dialog", "Icon", "useTranslation", "DEPLOYMENT_DIALOG", "SCRIPT_PLUGIN", "DeploymentDialog", "accessToken", "scriptTemplates", "t", "useTranslation", "space", "useMemo", "getSpace", "handleCreateAndDeployScripts", "status", "useCreateAndDeployScriptTemplates", "dispatchPromise", "dispatch", "useIntentDispatcher", "useEffect", "createIntent", "LayoutAction", "AddToast", "part", "subject", "id", "icon", "duration", "Infinity", "title", "ns", "count", "length", "description", "closeLabel", "UpdateDialog", "options", "state", "Dialog", "Content", "div", "className", "Title", "Close", "asChild", "Button", "density", "variant", "Icon", "size", "role", "p", "ul", "map", "template", "li", "key", "name", "onClick", "disabled", "DeploymentDialog"]
7
+ }
@@ -0,0 +1,352 @@
1
+ import {
2
+ templates
3
+ } from "./chunk-SUCBNCEQ.mjs";
4
+ import {
5
+ deployScript,
6
+ getFunctionUrl,
7
+ isScriptDeployed
8
+ } from "./chunk-MQZQB5VD.mjs";
9
+ import {
10
+ SCRIPT_PLUGIN
11
+ } from "./chunk-WSK3YQXI.mjs";
12
+
13
+ // packages/plugins/plugin-script/src/hooks/deploy.ts
14
+ import { useCallback, useEffect, useMemo } from "react";
15
+ import { FunctionType, getUserFunctionUrlInMetadata } from "@dxos/functions";
16
+ import { log } from "@dxos/log";
17
+ import { useClient } from "@dxos/react-client";
18
+ import { Filter, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
19
+ import { useTranslation } from "@dxos/react-ui";
20
+ import { createMenuAction } from "@dxos/react-ui-menu";
21
+ import { errorMessageColors } from "@dxos/react-ui-theme";
22
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-script/src/hooks/deploy.ts";
23
+ var createDeploy = (state) => {
24
+ const errorItem = createMenuAction("error", {
25
+ label: state.error ?? [
26
+ "no error label",
27
+ {
28
+ ns: SCRIPT_PLUGIN
29
+ }
30
+ ],
31
+ icon: "ph--warning-circle--regular",
32
+ hidden: !state.error,
33
+ classNames: state.error && errorMessageColors
34
+ });
35
+ const deployAction = createMenuAction("deploy", {
36
+ type: "deploy",
37
+ label: [
38
+ state.deploying ? "pending label" : "deploy label",
39
+ {
40
+ ns: SCRIPT_PLUGIN
41
+ }
42
+ ],
43
+ icon: state.deploying ? "ph--spinner-gap--regular" : "ph--cloud-arrow-up--regular",
44
+ disabled: state.deploying,
45
+ classNames: state.deploying ? "[&_svg]:animate-spin" : ""
46
+ });
47
+ const copyAction = createMenuAction("copy", {
48
+ type: "copy",
49
+ label: [
50
+ "copy link label",
51
+ {
52
+ ns: SCRIPT_PLUGIN
53
+ }
54
+ ],
55
+ icon: "ph--link--regular",
56
+ disabled: !state.functionUrl
57
+ });
58
+ return {
59
+ nodes: [
60
+ errorItem,
61
+ deployAction,
62
+ copyAction
63
+ ],
64
+ edges: [
65
+ {
66
+ source: "root",
67
+ target: "error"
68
+ },
69
+ {
70
+ source: "root",
71
+ target: "deploy"
72
+ },
73
+ {
74
+ source: "root",
75
+ target: "copy"
76
+ }
77
+ ]
78
+ };
79
+ };
80
+ var useDeployState = ({ state, script }) => {
81
+ const { space, client, fn, existingFunctionUrl } = useDeployDeps({
82
+ script
83
+ });
84
+ useEffect(() => {
85
+ if (!existingFunctionUrl) {
86
+ return;
87
+ }
88
+ state.functionUrl = getFunctionUrl({
89
+ script,
90
+ fn,
91
+ edgeUrl: client.config.values.runtime?.services?.edge?.url ?? ""
92
+ });
93
+ }, [
94
+ existingFunctionUrl,
95
+ space,
96
+ fn,
97
+ script,
98
+ client.config.values.runtime?.services?.edge?.url
99
+ ]);
100
+ useEffect(() => {
101
+ state.deployed = isScriptDeployed({
102
+ script,
103
+ fn
104
+ });
105
+ }, [
106
+ script.changed,
107
+ existingFunctionUrl,
108
+ fn,
109
+ script
110
+ ]);
111
+ };
112
+ var useDeployDeps = ({ script }) => {
113
+ const space = getSpace(script);
114
+ const [fn] = useQuery(space, Filter.schema(FunctionType, {
115
+ source: script
116
+ }));
117
+ const client = useClient();
118
+ const existingFunctionUrl = useMemo(() => fn && getUserFunctionUrlInMetadata(getMeta(fn)), [
119
+ fn
120
+ ]);
121
+ return {
122
+ space,
123
+ fn,
124
+ client,
125
+ existingFunctionUrl
126
+ };
127
+ };
128
+ var useDeployHandler = ({ state, script }) => {
129
+ const { space, fn, client, existingFunctionUrl } = useDeployDeps({
130
+ script
131
+ });
132
+ const { t } = useTranslation(SCRIPT_PLUGIN);
133
+ return useCallback(async () => {
134
+ if (!script.source || !space) {
135
+ return;
136
+ }
137
+ state.error = void 0;
138
+ state.deploying = true;
139
+ const result = await deployScript({
140
+ script,
141
+ client,
142
+ space,
143
+ fn,
144
+ existingFunctionUrl
145
+ });
146
+ if (!result.success) {
147
+ log.catch(result.error, void 0, {
148
+ F: __dxlog_file,
149
+ L: 105,
150
+ S: void 0,
151
+ C: (f, a) => f(...a)
152
+ });
153
+ state.error = t("upload failed label");
154
+ }
155
+ state.deploying = false;
156
+ }, [
157
+ fn,
158
+ client,
159
+ t,
160
+ existingFunctionUrl,
161
+ script,
162
+ space
163
+ ]);
164
+ };
165
+ var useCopyHandler = ({ state }) => useCallback(async () => {
166
+ if (!state.functionUrl) {
167
+ return;
168
+ }
169
+ await navigator.clipboard.writeText(state.functionUrl);
170
+ }, [
171
+ state.functionUrl
172
+ ]);
173
+
174
+ // packages/plugins/plugin-script/src/hooks/useToolbarState.ts
175
+ import { useMemo as useMemo2 } from "react";
176
+ import { create } from "@dxos/live-object";
177
+ var useToolbarState = (initialState = {}) => {
178
+ return useMemo2(() => create(initialState), []);
179
+ };
180
+
181
+ // packages/plugins/plugin-script/src/hooks/format.ts
182
+ import { format } from "prettier";
183
+ import prettierPluginEstree from "prettier/plugins/estree";
184
+ import prettierPluginTypescript from "prettier/plugins/typescript";
185
+ import { useCallback as useCallback2 } from "react";
186
+ import { log as log2 } from "@dxos/log";
187
+ import { createMenuAction as createMenuAction2 } from "@dxos/react-ui-menu";
188
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-script/src/hooks/format.ts";
189
+ var createFormat = () => {
190
+ const formatAction = createMenuAction2("format", {
191
+ label: [
192
+ "format label",
193
+ {
194
+ ns: SCRIPT_PLUGIN
195
+ }
196
+ ],
197
+ icon: "ph--magic-wand--regular"
198
+ });
199
+ return {
200
+ nodes: [
201
+ formatAction
202
+ ],
203
+ edges: [
204
+ {
205
+ source: "root",
206
+ target: "format"
207
+ }
208
+ ]
209
+ };
210
+ };
211
+ var useFormatHandler = ({ script }) => useCallback2(async () => {
212
+ if (!script.source) {
213
+ return;
214
+ }
215
+ try {
216
+ script.source.target.content = await format(script.source.target.content, {
217
+ parser: "typescript",
218
+ plugins: [
219
+ prettierPluginEstree,
220
+ prettierPluginTypescript
221
+ ],
222
+ semi: true,
223
+ singleQuote: true
224
+ });
225
+ } catch (err) {
226
+ log2.catch(err, void 0, {
227
+ F: __dxlog_file2,
228
+ L: 45,
229
+ S: void 0,
230
+ C: (f, a) => f(...a)
231
+ });
232
+ }
233
+ }, [
234
+ script.source
235
+ ]);
236
+
237
+ // packages/plugins/plugin-script/src/hooks/template.ts
238
+ import { useCallback as useCallback3 } from "react";
239
+ import { FUNCTIONS_PRESET_META_KEY } from "@dxos/functions/types";
240
+ import { getMeta as getMeta2 } from "@dxos/live-object";
241
+ import { createMenuItemGroup, createMenuAction as createMenuAction3 } from "@dxos/react-ui-menu";
242
+ var createTemplateSelectGroup = () => {
243
+ return createMenuItemGroup("template-select", {
244
+ label: [
245
+ "template select group label",
246
+ {
247
+ ns: SCRIPT_PLUGIN
248
+ }
249
+ ],
250
+ variant: "dropdownMenu"
251
+ });
252
+ };
253
+ var createTemplateSelectActions = () => {
254
+ return templates.map((template) => {
255
+ return createMenuAction3(`template--${template.id}`, {
256
+ label: template.name,
257
+ value: template.id,
258
+ type: "template"
259
+ });
260
+ });
261
+ };
262
+ var createTemplateSelect = () => {
263
+ const templateSelectGroup = createTemplateSelectGroup();
264
+ const templateSelectActions = createTemplateSelectActions();
265
+ return {
266
+ nodes: [
267
+ templateSelectGroup,
268
+ ...templateSelectActions
269
+ ],
270
+ edges: [
271
+ {
272
+ source: "root",
273
+ target: "template-select"
274
+ },
275
+ ...templateSelectActions.map((action) => ({
276
+ source: "template-select",
277
+ target: action.id
278
+ }))
279
+ ]
280
+ };
281
+ };
282
+ var useTemplateSelectHandler = ({ script }) => {
283
+ return useCallback3((templateId) => {
284
+ const template = templates.find((template2) => template2.id === templateId);
285
+ if (template) {
286
+ script.name = template.name;
287
+ script.source.target.content = template.source;
288
+ const metaKeys = getMeta2(script).keys;
289
+ const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
290
+ if (oldPresetIndex >= 0) {
291
+ metaKeys.splice(oldPresetIndex, 1);
292
+ }
293
+ if (template.presetId) {
294
+ metaKeys.push({
295
+ source: FUNCTIONS_PRESET_META_KEY,
296
+ id: template.presetId
297
+ });
298
+ }
299
+ }
300
+ }, [
301
+ script
302
+ ]);
303
+ };
304
+
305
+ // packages/plugins/plugin-script/src/hooks/useToolbarAction.ts
306
+ import { useCallback as useCallback4 } from "react";
307
+ import { log as log3 } from "@dxos/log";
308
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-script/src/hooks/useToolbarAction.ts";
309
+ var useToolbarAction = (props) => {
310
+ const handleTemplateSelect = useTemplateSelectHandler(props);
311
+ const handleFormat = useFormatHandler(props);
312
+ const handleDeploy = useDeployHandler(props);
313
+ const handleCopy = useCopyHandler(props);
314
+ return useCallback4((action) => {
315
+ switch (action.properties.type) {
316
+ case "template":
317
+ handleTemplateSelect(action.properties.value);
318
+ break;
319
+ case "format":
320
+ void handleFormat();
321
+ break;
322
+ case "deploy":
323
+ void handleDeploy();
324
+ break;
325
+ case "copy":
326
+ void handleCopy();
327
+ break;
328
+ default:
329
+ log3.error("Unknown action type", action, {
330
+ F: __dxlog_file3,
331
+ L: 45,
332
+ S: void 0,
333
+ C: (f, a) => f(...a)
334
+ });
335
+ }
336
+ }, [
337
+ handleTemplateSelect,
338
+ handleFormat,
339
+ handleDeploy,
340
+ handleCopy
341
+ ]);
342
+ };
343
+
344
+ export {
345
+ createDeploy,
346
+ useDeployState,
347
+ createFormat,
348
+ createTemplateSelect,
349
+ useToolbarAction,
350
+ useToolbarState
351
+ };
352
+ //# sourceMappingURL=chunk-KLEOGVXY.mjs.map