@dxos/plugin-script 0.8.2-main.f11618f → 0.8.2-staging.42af850

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 (241) 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-2GIBRQLV.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-OEDM2SCN.mjs → artifact-definition-L3AIY4XA.mjs} +44 -47
  7. package/dist/lib/browser/artifact-definition-L3AIY4XA.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-SXS6PUU5.mjs → chunk-6T64VQHF.mjs} +7 -6
  9. package/dist/lib/browser/chunk-6T64VQHF.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-KJMVDGRB.mjs → chunk-6ZHHWU6S.mjs} +3 -3
  11. package/dist/lib/browser/{chunk-KJMVDGRB.mjs.map → chunk-6ZHHWU6S.mjs.map} +1 -1
  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-EGDYE5MW.mjs → chunk-JQOAZJTK.mjs} +85 -154
  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-A4VOGQ2P.mjs → chunk-YSQMXTYO.mjs} +3 -3
  23. package/dist/lib/{node-esm/chunk-HKJUN636.mjs.map → browser/chunk-YSQMXTYO.mjs.map} +1 -1
  24. package/dist/lib/browser/{compiler-O4FJK7RR.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 -17
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/{intent-resolver-C5D6TNPC.mjs → intent-resolver-U5YRUE7W.mjs} +12 -12
  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-XJCN7XXF.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-NK4XVS2E.mjs → settings-FU7NTENS.mjs} +3 -3
  34. package/dist/lib/browser/types.mjs +2 -2
  35. package/dist/lib/node/{DeploymentDialog-NUKZNILK.cjs → DeploymentDialog-PC5AL3BB.cjs} +10 -10
  36. package/dist/lib/node/DeploymentDialog-PC5AL3BB.cjs.map +7 -0
  37. package/dist/lib/node/ScriptContainer-56SH6R24.cjs +289 -0
  38. package/dist/lib/node/ScriptContainer-56SH6R24.cjs.map +7 -0
  39. package/dist/lib/node/{app-graph-builder-LNI22TZF.cjs → app-graph-builder-YE4OM4OC.cjs} +17 -17
  40. package/dist/lib/node/app-graph-builder-YE4OM4OC.cjs.map +7 -0
  41. package/dist/lib/node/{artifact-definition-SEGATFNH.cjs → artifact-definition-6BD6CVOV.cjs} +55 -58
  42. package/dist/lib/node/artifact-definition-6BD6CVOV.cjs.map +7 -0
  43. package/dist/lib/node/chunk-5LHP5EUJ.cjs +557 -0
  44. package/dist/lib/node/chunk-5LHP5EUJ.cjs.map +7 -0
  45. package/dist/lib/node/chunk-BYLHJ26I.cjs +91 -0
  46. package/dist/lib/node/chunk-BYLHJ26I.cjs.map +7 -0
  47. package/dist/lib/node/{chunk-PGEGRJP3.cjs → chunk-HCRW6T3G.cjs} +19 -20
  48. package/dist/lib/node/chunk-HCRW6T3G.cjs.map +7 -0
  49. package/dist/lib/node/{chunk-UUGLBCMY.cjs → chunk-NRZJV5SV.cjs} +93 -160
  50. package/dist/lib/node/chunk-NRZJV5SV.cjs.map +7 -0
  51. package/dist/lib/node/{chunk-NO5Y74F3.cjs → chunk-QG2X6J74.cjs} +6 -6
  52. package/dist/lib/node/{chunk-NO5Y74F3.cjs.map → chunk-QG2X6J74.cjs.map} +1 -1
  53. package/dist/lib/node/chunk-RARNZD62.cjs +179 -0
  54. package/dist/lib/node/chunk-RARNZD62.cjs.map +7 -0
  55. package/dist/lib/node/{chunk-DSFCLQ5F.cjs → chunk-V6L73D7S.cjs} +12 -11
  56. package/dist/lib/node/chunk-V6L73D7S.cjs.map +7 -0
  57. package/dist/lib/node/{chunk-KFJQVOGS.cjs → chunk-ZEV3VARQ.cjs} +7 -7
  58. package/dist/lib/node/{chunk-KFJQVOGS.cjs.map → chunk-ZEV3VARQ.cjs.map} +1 -1
  59. package/dist/lib/node/{compiler-FBC6ELQN.cjs → compiler-TFSJRLL4.cjs} +7 -7
  60. package/dist/lib/node/{compiler-FBC6ELQN.cjs.map → compiler-TFSJRLL4.cjs.map} +3 -3
  61. package/dist/lib/node/index.cjs +45 -45
  62. package/dist/lib/node/index.cjs.map +3 -3
  63. package/dist/lib/node/{intent-resolver-BQPBRVHM.cjs → intent-resolver-7SF26VGC.cjs} +21 -21
  64. package/dist/lib/node/intent-resolver-7SF26VGC.cjs.map +7 -0
  65. package/dist/lib/node/meta.json +1 -1
  66. package/dist/lib/node/{react-surface-5XHS5WYW.cjs → react-surface-L6RS7BT2.cjs} +38 -38
  67. package/dist/lib/node/react-surface-L6RS7BT2.cjs.map +7 -0
  68. package/dist/lib/node/{settings-7PVJBWC4.cjs → settings-RRCQ7ZQD.cjs} +9 -9
  69. package/dist/lib/node/types.cjs +5 -5
  70. package/dist/lib/node/types.cjs.map +1 -1
  71. package/dist/lib/node-esm/{DeploymentDialog-BIXZ5Q57.mjs → DeploymentDialog-QHB2BGNJ.mjs} +5 -5
  72. package/dist/lib/node-esm/ScriptContainer-6RCZ43TI.mjs +273 -0
  73. package/dist/lib/node-esm/ScriptContainer-6RCZ43TI.mjs.map +7 -0
  74. package/dist/lib/node-esm/{app-graph-builder-NNUXXXMZ.mjs → app-graph-builder-4CN7URJQ.mjs} +10 -10
  75. package/dist/lib/node-esm/app-graph-builder-4CN7URJQ.mjs.map +7 -0
  76. package/dist/lib/node-esm/{artifact-definition-5UHIXXHW.mjs → artifact-definition-PPV2XKU7.mjs} +44 -47
  77. package/dist/lib/node-esm/artifact-definition-PPV2XKU7.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-25GOLUXY.mjs +154 -0
  79. package/dist/lib/node-esm/chunk-25GOLUXY.mjs.map +7 -0
  80. package/dist/lib/node-esm/{chunk-HKJUN636.mjs → chunk-2KJYPUQD.mjs} +3 -3
  81. package/dist/lib/{browser/chunk-A4VOGQ2P.mjs.map → node-esm/chunk-2KJYPUQD.mjs.map} +1 -1
  82. package/dist/lib/node-esm/{chunk-TN35DSTF.mjs → chunk-47MABIVX.mjs} +7 -6
  83. package/dist/lib/node-esm/chunk-47MABIVX.mjs.map +7 -0
  84. package/dist/lib/node-esm/{chunk-H7FRB3M7.mjs → chunk-AEB5TPEW.mjs} +3 -3
  85. package/dist/lib/node-esm/{chunk-H7FRB3M7.mjs.map → chunk-AEB5TPEW.mjs.map} +1 -1
  86. package/dist/lib/node-esm/chunk-KOO76P2Y.mjs +531 -0
  87. package/dist/lib/node-esm/chunk-KOO76P2Y.mjs.map +7 -0
  88. package/dist/lib/node-esm/chunk-UESZKXLR.mjs +41 -0
  89. package/dist/lib/node-esm/chunk-UESZKXLR.mjs.map +7 -0
  90. package/dist/lib/node-esm/{chunk-NNQXJQBG.mjs → chunk-WD7OFSM3.mjs} +85 -154
  91. package/dist/lib/node-esm/chunk-WD7OFSM3.mjs.map +7 -0
  92. package/dist/lib/node-esm/chunk-Z44O2YIK.mjs +89 -0
  93. package/dist/lib/node-esm/chunk-Z44O2YIK.mjs.map +7 -0
  94. package/dist/lib/node-esm/{compiler-3NG4T5LH.mjs → compiler-7PQ4D43R.mjs} +3 -3
  95. package/dist/lib/{browser/compiler-O4FJK7RR.mjs.map → node-esm/compiler-7PQ4D43R.mjs.map} +3 -3
  96. package/dist/lib/node-esm/index.mjs +17 -17
  97. package/dist/lib/node-esm/index.mjs.map +3 -3
  98. package/dist/lib/node-esm/{intent-resolver-PPJKPHUQ.mjs → intent-resolver-3APO7YDF.mjs} +12 -12
  99. package/dist/lib/node-esm/intent-resolver-3APO7YDF.mjs.map +7 -0
  100. package/dist/lib/node-esm/meta.json +1 -1
  101. package/dist/lib/node-esm/{react-surface-7ELFL7IO.mjs → react-surface-S5LHD3IA.mjs} +12 -12
  102. package/dist/lib/node-esm/react-surface-S5LHD3IA.mjs.map +7 -0
  103. package/dist/lib/node-esm/{settings-SJYC4JLT.mjs → settings-NKNC32QC.mjs} +3 -3
  104. package/dist/lib/node-esm/types.mjs +2 -2
  105. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  106. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/index.d.ts +1 -177
  109. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  110. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  111. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +2 -2
  112. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  113. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  114. package/dist/types/src/components/ScriptContainer.d.ts +1 -1
  115. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  116. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +1 -1
  117. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  118. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +1 -1
  119. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  120. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  121. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  122. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  123. package/dist/types/src/components/index.d.ts +1 -1
  124. package/dist/types/src/hooks/deploy.d.ts +22 -19
  125. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  126. package/dist/types/src/hooks/format.d.ts +2 -5
  127. package/dist/types/src/hooks/format.d.ts.map +1 -1
  128. package/dist/types/src/hooks/index.d.ts +0 -1
  129. package/dist/types/src/hooks/index.d.ts.map +1 -1
  130. package/dist/types/src/hooks/template.d.ts +2 -5
  131. package/dist/types/src/hooks/template.d.ts.map +1 -1
  132. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  133. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  134. package/dist/types/src/templates/chat.d.ts +1 -1
  135. package/dist/types/src/templates/chat.d.ts.map +1 -1
  136. package/dist/types/src/templates/chess.d.ts.map +1 -1
  137. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  138. package/dist/types/src/templates/discord.d.ts.map +1 -1
  139. package/dist/types/src/templates/echo.d.ts +1 -1
  140. package/dist/types/src/templates/echo.d.ts.map +1 -1
  141. package/dist/types/src/templates/email.d.ts +1 -1
  142. package/dist/types/src/templates/email.d.ts.map +1 -1
  143. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  144. package/dist/types/src/templates/forex.d.ts.map +1 -1
  145. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  146. package/dist/types/src/translations.d.ts +2 -110
  147. package/dist/types/src/translations.d.ts.map +1 -1
  148. package/dist/types/src/types.d.ts +27 -26
  149. package/dist/types/src/types.d.ts.map +1 -1
  150. package/dist/types/src/util/deploy.d.ts.map +1 -1
  151. package/dist/types/src/util/functions.d.ts.map +1 -1
  152. package/dist/types/tsconfig.tsbuildinfo +1 -1
  153. package/package.json +59 -53
  154. package/src/ScriptPlugin.tsx +3 -3
  155. package/src/capabilities/app-graph-builder.ts +46 -29
  156. package/src/capabilities/artifact-definition.ts +39 -37
  157. package/src/capabilities/intent-resolver.ts +5 -5
  158. package/src/capabilities/react-surface.tsx +5 -5
  159. package/src/compiler/compiler.ts +3 -3
  160. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +1 -1
  161. package/src/components/DeploymentDialog/DeploymentDialog.tsx +2 -2
  162. package/src/components/ScriptContainer.tsx +2 -2
  163. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +1 -1
  164. package/src/components/ScriptToolbar/ScriptToolbar.tsx +27 -18
  165. package/src/components/Settings/ScriptObjectSettings.tsx +5 -5
  166. package/src/components/TypescriptEditor/TypescriptEditor.tsx +0 -6
  167. package/src/hooks/deploy.ts +61 -55
  168. package/src/hooks/format.ts +26 -26
  169. package/src/hooks/index.ts +0 -1
  170. package/src/hooks/template.ts +24 -32
  171. package/src/meta.ts +2 -2
  172. package/src/templates/chat.ts +4 -10
  173. package/src/templates/chess.ts +2 -7
  174. package/src/templates/data-generator.ts +2 -7
  175. package/src/templates/discord.ts +16 -14
  176. package/src/templates/echo.ts +1 -12
  177. package/src/templates/email.ts +8 -14
  178. package/src/templates/forex-effect.ts +4 -8
  179. package/src/templates/forex.ts +1 -5
  180. package/src/templates/gmail.ts +35 -26
  181. package/src/translations.ts +1 -1
  182. package/src/types.ts +13 -14
  183. package/src/util/deploy.ts +3 -4
  184. package/dist/lib/browser/DeploymentDialog-QEKJ54ZB.mjs +0 -12
  185. package/dist/lib/browser/ScriptContainer-ATBYTIFH.mjs +0 -248
  186. package/dist/lib/browser/ScriptContainer-ATBYTIFH.mjs.map +0 -7
  187. package/dist/lib/browser/app-graph-builder-2GIBRQLV.mjs.map +0 -7
  188. package/dist/lib/browser/artifact-definition-OEDM2SCN.mjs.map +0 -7
  189. package/dist/lib/browser/chunk-EGDYE5MW.mjs.map +0 -7
  190. package/dist/lib/browser/chunk-OZEMT3NO.mjs +0 -147
  191. package/dist/lib/browser/chunk-OZEMT3NO.mjs.map +0 -7
  192. package/dist/lib/browser/chunk-QNXJNXQZ.mjs +0 -480
  193. package/dist/lib/browser/chunk-QNXJNXQZ.mjs.map +0 -7
  194. package/dist/lib/browser/chunk-SXS6PUU5.mjs.map +0 -7
  195. package/dist/lib/browser/chunk-XEPVXV72.mjs +0 -87
  196. package/dist/lib/browser/chunk-XEPVXV72.mjs.map +0 -7
  197. package/dist/lib/browser/chunk-ZFTDU4WS.mjs +0 -41
  198. package/dist/lib/browser/chunk-ZFTDU4WS.mjs.map +0 -7
  199. package/dist/lib/browser/intent-resolver-C5D6TNPC.mjs.map +0 -7
  200. package/dist/lib/browser/react-surface-XJCN7XXF.mjs.map +0 -7
  201. package/dist/lib/node/DeploymentDialog-NUKZNILK.cjs.map +0 -7
  202. package/dist/lib/node/ScriptContainer-OHHMLPUE.cjs +0 -267
  203. package/dist/lib/node/ScriptContainer-OHHMLPUE.cjs.map +0 -7
  204. package/dist/lib/node/app-graph-builder-LNI22TZF.cjs.map +0 -7
  205. package/dist/lib/node/artifact-definition-SEGATFNH.cjs.map +0 -7
  206. package/dist/lib/node/chunk-4K23KEYT.cjs +0 -91
  207. package/dist/lib/node/chunk-4K23KEYT.cjs.map +0 -7
  208. package/dist/lib/node/chunk-DSFCLQ5F.cjs.map +0 -7
  209. package/dist/lib/node/chunk-PGEGRJP3.cjs.map +0 -7
  210. package/dist/lib/node/chunk-PMGWL64F.cjs +0 -173
  211. package/dist/lib/node/chunk-PMGWL64F.cjs.map +0 -7
  212. package/dist/lib/node/chunk-UUGLBCMY.cjs.map +0 -7
  213. package/dist/lib/node/chunk-ZZ4HK5KM.cjs +0 -507
  214. package/dist/lib/node/chunk-ZZ4HK5KM.cjs.map +0 -7
  215. package/dist/lib/node/intent-resolver-BQPBRVHM.cjs.map +0 -7
  216. package/dist/lib/node/react-surface-5XHS5WYW.cjs.map +0 -7
  217. package/dist/lib/node-esm/ScriptContainer-4YWGWPY7.mjs +0 -249
  218. package/dist/lib/node-esm/ScriptContainer-4YWGWPY7.mjs.map +0 -7
  219. package/dist/lib/node-esm/app-graph-builder-NNUXXXMZ.mjs.map +0 -7
  220. package/dist/lib/node-esm/artifact-definition-5UHIXXHW.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-4ISQLIIH.mjs +0 -481
  222. package/dist/lib/node-esm/chunk-4ISQLIIH.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-GR4VTXVM.mjs +0 -148
  224. package/dist/lib/node-esm/chunk-GR4VTXVM.mjs.map +0 -7
  225. package/dist/lib/node-esm/chunk-KGYTIL33.mjs +0 -42
  226. package/dist/lib/node-esm/chunk-KGYTIL33.mjs.map +0 -7
  227. package/dist/lib/node-esm/chunk-NNQXJQBG.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-TN35DSTF.mjs.map +0 -7
  229. package/dist/lib/node-esm/chunk-X64SI6XO.mjs +0 -89
  230. package/dist/lib/node-esm/chunk-X64SI6XO.mjs.map +0 -7
  231. package/dist/lib/node-esm/compiler-3NG4T5LH.mjs.map +0 -7
  232. package/dist/lib/node-esm/intent-resolver-PPJKPHUQ.mjs.map +0 -7
  233. package/dist/lib/node-esm/react-surface-7ELFL7IO.mjs.map +0 -7
  234. package/dist/types/src/hooks/useToolbarAction.d.ts +0 -13
  235. package/dist/types/src/hooks/useToolbarAction.d.ts.map +0 -1
  236. package/src/hooks/useToolbarAction.ts +0 -50
  237. /package/dist/lib/browser/{DeploymentDialog-QEKJ54ZB.mjs.map → DeploymentDialog-NLWQHNKE.mjs.map} +0 -0
  238. /package/dist/lib/browser/{settings-NK4XVS2E.mjs.map → settings-FU7NTENS.mjs.map} +0 -0
  239. /package/dist/lib/node/{settings-7PVJBWC4.cjs.map → settings-RRCQ7ZQD.cjs.map} +0 -0
  240. /package/dist/lib/node-esm/{DeploymentDialog-BIXZ5Q57.mjs.map → DeploymentDialog-QHB2BGNJ.mjs.map} +0 -0
  241. /package/dist/lib/node-esm/{settings-SJYC4JLT.mjs.map → settings-NKNC32QC.mjs.map} +0 -0
@@ -7,5 +7,4 @@ export * from './format';
7
7
  export * from './template';
8
8
 
9
9
  export * from './useCreateAndDeployScriptTemplates';
10
- export * from './useToolbarAction';
11
10
  export * from './useToolbarState';
@@ -2,9 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { useCallback } from 'react';
6
-
7
- import { FUNCTIONS_PRESET_META_KEY, type ScriptType } from '@dxos/functions/types';
5
+ import { FUNCTIONS_PRESET_META_KEY, type ScriptType } from '@dxos/functions';
8
6
  import { getMeta } from '@dxos/live-object';
9
7
  import { createMenuItemGroup, createMenuAction } from '@dxos/react-ui-menu';
10
8
 
@@ -20,19 +18,34 @@ const createTemplateSelectGroup = () => {
20
18
  });
21
19
  };
22
20
 
23
- const createTemplateSelectActions = () => {
21
+ const createTemplateSelectActions = (script: ScriptType) => {
24
22
  return templates.map((template) => {
25
- return createMenuAction<TemplateActionProperties>(`template--${template.id}`, {
26
- label: template.name,
27
- value: template.id,
28
- type: 'template',
29
- });
23
+ return createMenuAction<TemplateActionProperties>(
24
+ `template--${template.id}`,
25
+ () => {
26
+ script.name = template.name;
27
+ script.source!.target!.content = template.source;
28
+ const metaKeys = getMeta(script).keys;
29
+ const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
30
+ if (oldPresetIndex >= 0) {
31
+ metaKeys.splice(oldPresetIndex, 1);
32
+ }
33
+ if (template.presetId) {
34
+ metaKeys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });
35
+ }
36
+ },
37
+ {
38
+ label: template.name,
39
+ value: template.id,
40
+ type: 'template',
41
+ },
42
+ );
30
43
  });
31
44
  };
32
45
 
33
- export const createTemplateSelect = () => {
46
+ export const createTemplateSelect = (script: ScriptType) => {
34
47
  const templateSelectGroup = createTemplateSelectGroup();
35
- const templateSelectActions = createTemplateSelectActions();
48
+ const templateSelectActions = createTemplateSelectActions(script);
36
49
  return {
37
50
  nodes: [templateSelectGroup, ...templateSelectActions],
38
51
  edges: [
@@ -41,24 +54,3 @@ export const createTemplateSelect = () => {
41
54
  ],
42
55
  };
43
56
  };
44
-
45
- export const useTemplateSelectHandler = ({ script }: { script: ScriptType }) => {
46
- return useCallback(
47
- (templateId: string) => {
48
- const template = templates.find((template) => template.id === templateId);
49
- if (template) {
50
- script.name = template.name;
51
- script.source!.target!.content = template.source;
52
- const metaKeys = getMeta(script).keys;
53
- const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
54
- if (oldPresetIndex >= 0) {
55
- metaKeys.splice(oldPresetIndex, 1);
56
- }
57
- if (template.presetId) {
58
- metaKeys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });
59
- }
60
- }
61
- },
62
- [script],
63
- );
64
- };
package/src/meta.ts CHANGED
@@ -12,8 +12,8 @@ export const meta: PluginMeta = {
12
12
  description:
13
13
  '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.',
14
14
  icon: 'ph--code--regular',
15
- source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-explorer',
16
- tags: ['experimental'],
15
+ source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-explorer',
16
+ tags: ['labs'],
17
17
  screenshots: ['https://dxos.network/plugin-details-scripts-dark.png'],
18
18
  };
19
19
 
@@ -3,21 +3,15 @@
3
3
  //
4
4
 
5
5
  // @ts-ignore
6
- import { transformServerSentEvents } from 'https://esm.sh/@dxos/script-toolbox';
6
+ import { transformServerSentEvents } from 'https://esm.sh/@dxos/script-toolbox?bundle=false';
7
7
 
8
8
  /**
9
9
  * Chatbot that answers questions based on the context data.
10
10
  */
11
- export default async ({
12
- event: {
13
- data: { request },
14
- },
15
- context: { space, ai },
16
- }: any) => {
17
- const textBody = await request.text();
11
+ export default async ({ data: { bodyText }, context: { space, ai } }: any) => {
18
12
  let parsedRequest: any;
19
13
  try {
20
- parsedRequest = JSON.parse(textBody);
14
+ parsedRequest = JSON.parse(bodyText);
21
15
  } catch (err) {
22
16
  const answer = await ai.run('@cf/meta/llama-3.1-8b-instruct', {
23
17
  stream: true,
@@ -29,7 +23,7 @@ export default async ({
29
23
  ${await getContext({ space })}
30
24
 
31
25
  QUESTION:
32
- ${textBody}
26
+ ${bodyText}
33
27
  `,
34
28
  });
35
29
  return new Response(transformServerSentEvents(answer));
@@ -5,7 +5,7 @@
5
5
  // @ts-ignore
6
6
  import { defineFunction, S } from 'dxos:functions';
7
7
  // @ts-ignore
8
- import { Chess } from 'https://esm.sh/chess.js@0.13.1';
8
+ import { Chess } from 'https://esm.sh/chess.js@0.13.1?bundle=false';
9
9
 
10
10
  export default defineFunction({
11
11
  description: 'Plays a random move in a chess game.',
@@ -25,12 +25,7 @@ export default defineFunction({
25
25
  }),
26
26
  }),
27
27
 
28
- handler: async ({
29
- event: {
30
- data: { changedObjectId, player = 'b' },
31
- },
32
- context: { space },
33
- }: any) => {
28
+ handler: async ({ data: { changedObjectId, player = 'b' }, context: { space } }: any) => {
34
29
  const { pgn } = await space.db.query({ id: changedObjectId }).first();
35
30
  const game = new Chess();
36
31
  game.load_pgn(pgn);
@@ -5,7 +5,7 @@
5
5
  // @ts-ignore
6
6
  import { defineFunction, S, create, Expando } from 'dxos:functions';
7
7
  // @ts-ignore
8
- import { randText } from 'https://esm.sh/@ngneat/falso@7.1.1';
8
+ import { randText } from 'https://esm.sh/@ngneat/falso@7.1.1?bundle=false';
9
9
 
10
10
  export default defineFunction({
11
11
  inputSchema: S.Struct({
@@ -16,12 +16,7 @@ export default defineFunction({
16
16
 
17
17
  outputSchema: S.Struct({}),
18
18
 
19
- handler: async ({
20
- event: {
21
- data: { documentAmount = 1, textSize = 10, mutationAmount = 0 },
22
- },
23
- context: { space },
24
- }: any) => {
19
+ handler: async ({ data: { documentAmount = 1, textSize = 10, mutationAmount = 0 }, context: { space } }: any) => {
25
20
  await space.db.graph.schemaRegistry.addSchema([Expando]);
26
21
  const result: Record<string, any> = {};
27
22
  const objects: Expando[] = [];
@@ -3,23 +3,30 @@
3
3
  //
4
4
 
5
5
  // @ts-ignore
6
- import { create, EchoObject, defineFunction, DXN, Filter, ObjectId, S } from 'dxos:functions';
6
+ import { create, defineFunction, DXN, EchoObject, Filter, ObjectId, S } from 'dxos:functions';
7
+ // @ts-ignore
8
+ import { FetchHttpClient } from 'https://esm.sh/@effect/platform@0.77.2?deps=effect@3.14.21&bundle=false';
7
9
  import {
8
- FetchHttpClient,
10
+ DiscordConfig,
11
+ DiscordREST,
12
+ DiscordRESTMemoryLive,
9
13
  // @ts-ignore
10
- } from 'https://esm.sh/@effect/platform@0.77.2?deps=effect@3.13.3';
11
- // @ts-ignore
12
- import { DiscordConfig, DiscordREST, DiscordRESTMemoryLive } from 'https://esm.sh/dfx@0.113.0?deps=effect@3.13.3';
14
+ } from 'https://esm.sh/dfx@0.113.0?deps=effect@3.14.21&bundle=false';
13
15
  // @ts-ignore
14
- import { Effect, Config, Redacted, Ref } from 'https://esm.sh/effect@3.13.3';
16
+ import { Effect, Config, Redacted, Ref } from 'https://esm.sh/effect@3.14.21?bundle=false';
15
17
 
16
18
  const MessageSchema = S.Struct({
17
- id: S.String,
19
+ id: ObjectId,
18
20
  foreignId: S.Any, // bigint?
19
21
  from: S.String,
20
22
  created: S.String,
21
23
  content: S.String,
22
- }).pipe(EchoObject({ typename: 'example.com/type/Message', version: '0.1.0' }));
24
+ }).pipe(
25
+ EchoObject({
26
+ typename: 'example.com/type/Message',
27
+ version: '0.1.0',
28
+ }),
29
+ );
23
30
 
24
31
  const DEFAULT_AFTER = 1704067200; // 2024-01-01
25
32
 
@@ -42,12 +49,7 @@ export default defineFunction({
42
49
  newMessages: S.Number,
43
50
  }),
44
51
 
45
- handler: ({
46
- event: {
47
- data: { channelId, queueId, after = DEFAULT_AFTER, pageSize = 5 },
48
- },
49
- context: { space },
50
- }: any) =>
52
+ handler: ({ data: { channelId, queueId, after = DEFAULT_AFTER, pageSize = 5 }, context: { space } }: any) =>
51
53
  Effect.gen(function* () {
52
54
  const { token } = yield* Effect.tryPromise({
53
55
  try: () => space.db.query(Filter.typename('dxos.org/type/AccessToken', { source: 'discord.com' })).first(),
@@ -5,15 +5,4 @@
5
5
  /**
6
6
  * Echos the request data.
7
7
  */
8
- export default async ({
9
- event: {
10
- data: { request },
11
- },
12
- }: any) => {
13
- const data = await request.json();
14
- return new Response(JSON.stringify(data ?? {}), {
15
- headers: {
16
- 'Content-Type': 'application/json',
17
- },
18
- });
19
- };
8
+ export default async ({ data }: any) => data;
@@ -6,15 +6,9 @@
6
6
  * Appends a message to the end of a Document configured through a trigger.
7
7
  * Trigger must have a targetDocumentId field set in Meta.
8
8
  */
9
- export default async ({
10
- event: {
11
- data: { request },
12
- },
13
- context: { space },
14
- }: any) => {
15
- const { data, trigger } = (await request.json()) as RequestPayload;
9
+ export default async ({ data: { bodyText }, context: { space } }: any) => {
10
+ const { email, targetDocumentId: documentId } = JSON.parse(bodyText) as RequestPayload;
16
11
 
17
- const documentId = trigger.meta.targetDocumentId;
18
12
  const document = await space.db.query({ id: documentId }, { format: 'plain' }).first();
19
13
 
20
14
  const contentId = document.content['/'].split(':')[3];
@@ -23,11 +17,11 @@ export default async ({
23
17
  documentContent.content,
24
18
  '',
25
19
  '---',
26
- `**From:** ${data.from}`,
27
- `**Subject:** ${data.subject}`,
28
- `**Date:** ${data.created}`,
20
+ `**From:** ${email.from}`,
21
+ `**Subject:** ${email.subject}`,
22
+ `**Date:** ${email.created}`,
29
23
  '',
30
- data.body,
24
+ email.body,
31
25
  ].join('\n');
32
26
 
33
27
  await space.db.update({ id: contentId }, { content: modifiedContent });
@@ -36,6 +30,6 @@ export default async ({
36
30
  };
37
31
 
38
32
  type RequestPayload = {
39
- data: { from: string; subject: string; created: string; body: string };
40
- trigger: { meta: { targetDocumentId: string } };
33
+ email: { from: string; subject: string; created: string; body: string };
34
+ targetDocumentId: string;
41
35
  };
@@ -3,15 +3,15 @@
3
3
  //
4
4
 
5
5
  // @ts-ignore
6
- import { defineFunction, S } from 'dxos:functions';
6
+ import { S, defineFunction } from 'dxos:functions';
7
7
  import {
8
8
  HttpClient,
9
9
  HttpClientRequest,
10
10
  FetchHttpClient,
11
11
  // @ts-ignore
12
- } from 'https://esm.sh/@effect/platform@0.77.2?deps=effect@3.13.3';
12
+ } from 'https://esm.sh/@effect/platform@0.77.2?deps=effect@3.14.21&bundle=false';
13
13
  // @ts-ignore
14
- import { Effect, Schedule } from 'https://esm.sh/effect@3.13.3';
14
+ import { Effect, Schedule } from 'https://esm.sh/effect@3.14.21?bundle=false';
15
15
 
16
16
  export default defineFunction({
17
17
  description: 'Returns the exchange rate between two currencies.',
@@ -23,11 +23,7 @@ export default defineFunction({
23
23
 
24
24
  outputSchema: S.String.annotations({ description: 'The exchange rate between the two currencies' }),
25
25
 
26
- handler: async ({
27
- event: {
28
- data: { from, to },
29
- },
30
- }: any) =>
26
+ handler: async ({ data: { from, to } }: any) =>
31
27
  Effect.gen(function* () {
32
28
  const res = yield* HttpClientRequest.get(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`).pipe(
33
29
  HttpClient.execute,
@@ -13,11 +13,7 @@ export default defineFunction({
13
13
  to: S.String.annotations({ description: 'The target currency' }),
14
14
  }),
15
15
 
16
- handler: async ({
17
- event: {
18
- data: { from, to },
19
- },
20
- }: any) => {
16
+ handler: async ({ data: { from, to } }: any) => {
21
17
  const res = await fetch(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`);
22
18
  const {
23
19
  data: { rates },
@@ -4,47 +4,45 @@
4
4
 
5
5
  // @ts-ignore
6
6
  import { create, defineFunction, EchoObject, Filter, ObjectId, S } from 'dxos:functions';
7
+ // @ts-ignore
7
8
  import {
8
9
  HttpClient,
9
10
  HttpClientRequest,
10
11
  FetchHttpClient,
11
12
  // @ts-ignore
12
- } from 'https://esm.sh/@effect/platform@0.77.2?deps=effect@3.13.3';
13
+ } from 'https://esm.sh/@effect/platform@0.77.2?deps=effect@3.14.21&bundle=false';
13
14
  // @ts-ignore
14
- import { pipe, Chunk, Effect, Ref, Schedule, Stream } from 'https://esm.sh/effect@3.13.3';
15
-
16
- // TODO(ZaymonFC): Calculate this dynamically and expose a parameter.
17
- const DEFAULT_AFTER = '2025-01-01';
15
+ import { format, subDays } from 'https://esm.sh/date-fns@3.3.1?bundle=false';
16
+ // @ts-ignore
17
+ import { pipe, Chunk, Effect, Ref, Schedule, Stream } from 'https://esm.sh/effect@3.14.21?bundle=false';
18
18
 
19
19
  export default defineFunction({
20
20
  inputSchema: S.Struct({
21
+ mailboxId: S.String,
22
+ userId: S.optional(S.String).pipe(S.withDecodingDefault(() => 'me')),
23
+ after: S.optional(S.Union(S.Number, S.String)).pipe(
24
+ S.withDecodingDefault(() => format(subDays(new Date(), 30), 'yyyy-MM-dd')),
25
+ ),
26
+ pageSize: S.optional(S.Number).pipe(S.withDecodingDefault(() => 100)),
21
27
  // TODO(wittjosiah): Remove. This is used to provide a terminal for a cron trigger.
22
28
  tick: S.optional(S.String),
23
- userId: S.optional(S.String),
24
- after: S.optional(S.Union(S.Number, S.String)),
25
- pageSize: S.optional(S.Number),
26
- mailboxId: S.String,
27
29
  }),
28
30
 
29
31
  outputSchema: S.Struct({
30
32
  newMessages: S.Number,
31
33
  }),
32
34
 
33
- handler: ({
34
- event: {
35
- data: { mailboxId, userId = 'me', after = DEFAULT_AFTER, pageSize = 100 },
36
- },
37
- context: { space },
38
- }: any) =>
35
+ handler: ({ context: { space }, data: { mailboxId, userId, after, pageSize } }: any) =>
39
36
  Effect.gen(function* () {
40
37
  const { token } = yield* Effect.tryPromise({
41
38
  try: () => space.db.query(Filter.typename('dxos.org/type/AccessToken', { source: 'gmail.com' })).first(),
42
39
  catch: (e: any) => e,
43
40
  });
44
41
 
45
- const makeRequest = (path: string) =>
42
+ // NOTE: Google API bundles size is v. large and caused runtime issues.
43
+ const makeRequest = (url: string) =>
46
44
  pipe(
47
- path,
45
+ url,
48
46
  HttpClientRequest.get,
49
47
  HttpClientRequest.setHeaders({ Authorization: `Bearer ${token}`, Accept: 'application/json' }),
50
48
  HttpClient.execute,
@@ -54,13 +52,10 @@ export default defineFunction({
54
52
  Effect.scoped,
55
53
  );
56
54
 
57
- const listMessages = (userId: string, q: string, pageSize: number, pageToken: string | null) => {
58
- const url = `https://gmail.googleapis.com/gmail/v1/users/${userId}/messages?maxResults=${pageSize}&q=${q}`;
59
- return makeRequest(pageToken ? `${url}&pageToken=${pageToken}` : url);
60
- };
55
+ const listMessages = (userId: string, q: string, pageSize: number, pageToken: string | null) =>
56
+ makeRequest(getUrl(userId, undefined, { q, pageSize, pageToken }));
61
57
 
62
- const getMessage = (userId: string, id: string) =>
63
- makeRequest(`https://gmail.googleapis.com/gmail/v1/users/${userId}/messages/${id}`);
58
+ const getMessage = (userId: string, messageId: string) => makeRequest(getUrl(userId, messageId));
64
59
 
65
60
  const mailbox = yield* Effect.tryPromise({
66
61
  try: () => space.db.query({ id: mailboxId }).first(),
@@ -137,6 +132,16 @@ export default defineFunction({
137
132
  }).pipe(Effect.provide(FetchHttpClient.layer)),
138
133
  });
139
134
 
135
+ const getUrl = (userId: string, messageId?: string, params?: Record<string, any>) => {
136
+ const api = new URL(
137
+ [`https://gmail.googleapis.com/gmail/v1/users/${userId}/messages`, messageId].filter(Boolean).join('/'),
138
+ );
139
+ Object.entries(params ?? {})
140
+ .filter(([_, value]) => value != null)
141
+ .forEach(([key, value]) => api.searchParams.set(key, value));
142
+ return api.toString();
143
+ };
144
+
140
145
  /**
141
146
  * Parses an email string in the format "Name <email@example.com>" into separate name and email components.
142
147
  */
@@ -153,10 +158,9 @@ const parseEmailString = (emailString: string): { name?: string; email: string }
153
158
  return undefined;
154
159
  };
155
160
 
156
- // TODO(wittjosiah): These schemas should be imported from @dxos/schema.
157
-
158
161
  //
159
162
  // Schemas
163
+ // TODO(wittjosiah): These schemas should be imported from @dxos/S.
160
164
  //
161
165
 
162
166
  const ActorRoles = ['user', 'assistant'] as const;
@@ -240,5 +244,10 @@ const MessageType = S.Struct({
240
244
  }),
241
245
  ),
242
246
  ),
243
- }).pipe(EchoObject({ typename: 'dxos.org/type/Message', version: '0.1.0' }));
247
+ }).pipe(
248
+ EchoObject({
249
+ typename: 'dxos.org/type/Message',
250
+ version: '0.1.0',
251
+ }),
252
+ );
244
253
  type MessageType = S.Schema.Type<typeof MessageType>;
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { ScriptType } from '@dxos/functions/types';
5
+ import { ScriptType } from '@dxos/functions';
6
6
 
7
7
  import { SCRIPT_PLUGIN } from './meta';
8
8
 
package/src/types.ts CHANGED
@@ -2,11 +2,10 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { TitleAnnotationId } from 'effect/SchemaAST';
5
+ import { Schema } from 'effect';
6
6
 
7
7
  import { SpaceSchema } from '@dxos/client/echo';
8
- import { S } from '@dxos/echo-schema';
9
- import { ScriptType } from '@dxos/functions/types';
8
+ import { ScriptType } from '@dxos/functions';
10
9
  import { EditorInputMode } from '@dxos/react-ui-editor';
11
10
 
12
11
  import { SCRIPT_PLUGIN } from './meta';
@@ -17,27 +16,27 @@ export { SCRIPT_PLUGIN };
17
16
  export namespace ScriptAction {
18
17
  const SCRIPT_ACTION = `${SCRIPT_PLUGIN}/action`;
19
18
 
20
- export const CreateScriptSchema = S.Struct({
21
- name: S.optional(S.String),
19
+ export const CreateScriptSchema = Schema.Struct({
20
+ name: Schema.optional(Schema.String),
22
21
  // TODO(wittjosiah): Placeholder annotation?
23
- gistUrl: S.optional(S.String.annotations({ [TitleAnnotationId]: 'Import from Gist (url)' })),
24
- initialTemplateId: S.optional(S.String),
22
+ gistUrl: Schema.optional(Schema.String.annotations({ title: 'Import from Gist (url)' })),
23
+ initialTemplateId: Schema.optional(Schema.String),
25
24
  });
26
25
 
27
- export type CreateScriptProps = S.Schema.Type<typeof CreateScriptSchema>;
26
+ export type CreateScriptProps = Schema.Schema.Type<typeof CreateScriptSchema>;
28
27
 
29
- export class Create extends S.TaggedClass<Create>()(`${SCRIPT_ACTION}/create`, {
30
- input: S.extend(CreateScriptSchema, S.Struct({ space: SpaceSchema })),
31
- output: S.Struct({
28
+ export class Create extends Schema.TaggedClass<Create>()(`${SCRIPT_ACTION}/create`, {
29
+ input: Schema.extend(CreateScriptSchema, Schema.Struct({ space: SpaceSchema })),
30
+ output: Schema.Struct({
32
31
  object: ScriptType,
33
32
  }),
34
33
  }) {}
35
34
  }
36
35
 
37
- export const ScriptSettingsSchema = S.mutable(
38
- S.Struct({
36
+ export const ScriptSettingsSchema = Schema.mutable(
37
+ Schema.Struct({
39
38
  editorInputMode: EditorInputMode,
40
39
  }),
41
40
  );
42
41
 
43
- export type ScriptSettingsProps = S.Schema.Type<typeof ScriptSettingsSchema>;
42
+ export type ScriptSettingsProps = Schema.Schema.Type<typeof ScriptSettingsSchema>;
@@ -7,12 +7,11 @@ import {
7
7
  FunctionType,
8
8
  type ScriptType,
9
9
  getUserFunctionUrlInMetadata,
10
- incrementSemverPatch,
11
10
  makeFunctionUrl,
12
11
  setUserFunctionUrlInMetadata,
13
- uploadWorkerFunction,
14
12
  } from '@dxos/functions';
15
13
  import { Bundler } from '@dxos/functions/bundler';
14
+ import { incrementSemverPatch, uploadWorkerFunction } from '@dxos/functions/edge';
16
15
  import { log } from '@dxos/log';
17
16
  import { live, getMeta, makeRef, type Space } from '@dxos/react-client/echo';
18
17
 
@@ -58,7 +57,7 @@ export const deployScript = async ({
58
57
 
59
58
  const { functionId, version, meta } = await uploadWorkerFunction({
60
59
  client,
61
- spaceId: space.id,
60
+ ownerPublicKey: space.key,
62
61
  version: fn ? incrementSemverPatch(fn.version) : '0.0.1',
63
62
  functionId: existingFunctionId,
64
63
  source: bundle,
@@ -72,7 +71,7 @@ export const deployScript = async ({
72
71
  script.changed = false;
73
72
  updateFunctionMetadata(script, storedFunction, meta, functionId);
74
73
 
75
- const functionUrl = makeFunctionUrl(space.id, { functionId });
74
+ const functionUrl = makeFunctionUrl({ functionId });
76
75
  setUserFunctionUrlInMetadata(getMeta(storedFunction), functionUrl);
77
76
 
78
77
  return { success: true, functionUrl };
@@ -1,12 +0,0 @@
1
- import {
2
- DEPLOYMENT_DIALOG,
3
- DeploymentDialog_default
4
- } from "./chunk-OZEMT3NO.mjs";
5
- import "./chunk-SXS6PUU5.mjs";
6
- import "./chunk-ZFTDU4WS.mjs";
7
- import "./chunk-KJMVDGRB.mjs";
8
- export {
9
- DEPLOYMENT_DIALOG,
10
- DeploymentDialog_default as default
11
- };
12
- //# sourceMappingURL=DeploymentDialog-QEKJ54ZB.mjs.map