@dxos/plugin-script 0.8.3-staging.0fa589b → 0.8.4-main.1da679c

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 (233) hide show
  1. package/dist/lib/browser/DeploymentDialog-QZSTVNIS.mjs +12 -0
  2. package/dist/lib/browser/{ScriptContainer-RSN52NH7.mjs → ScriptContainer-IA7YJMFR.mjs} +20 -16
  3. package/dist/lib/browser/ScriptContainer-IA7YJMFR.mjs.map +7 -0
  4. package/dist/lib/browser/{app-graph-builder-5Z3MUX4N.mjs → app-graph-builder-5NIA7SLT.mjs} +6 -6
  5. package/dist/lib/{node-esm/app-graph-builder-IOOUTHV2.mjs.map → browser/app-graph-builder-5NIA7SLT.mjs.map} +3 -3
  6. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs +28 -0
  7. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-4AUQEB2I.mjs +88 -0
  9. package/dist/lib/browser/chunk-4AUQEB2I.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-YSQMXTYO.mjs → chunk-5TVBECWH.mjs} +3 -3
  11. package/dist/lib/browser/{chunk-3JLR2SHJ.mjs → chunk-B5QYN3AG.mjs} +52 -53
  12. package/dist/lib/browser/chunk-B5QYN3AG.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-WB3X5Z7Q.mjs → chunk-IS4OG2UW.mjs} +5 -6
  14. package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-KLGK77UK.mjs +283 -0
  16. package/dist/lib/browser/chunk-KLGK77UK.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-QJH7I2UV.mjs → chunk-NXKU3BNX.mjs} +40 -51
  18. package/dist/lib/browser/chunk-NXKU3BNX.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-6ZHHWU6S.mjs → chunk-QYAREHGH.mjs} +2 -2
  20. package/dist/lib/browser/{chunk-LA66DQGU.mjs → chunk-YCZPTTFO.mjs} +6 -6
  21. package/dist/lib/browser/chunk-YCZPTTFO.mjs.map +7 -0
  22. package/dist/lib/browser/{compiler-W4BYJYTL.mjs → compiler-O7MNN3XT.mjs} +28 -12
  23. package/dist/lib/browser/compiler-O7MNN3XT.mjs.map +7 -0
  24. package/dist/lib/browser/index.mjs +34 -31
  25. package/dist/lib/browser/index.mjs.map +3 -3
  26. package/dist/lib/browser/{intent-resolver-JOJNH4UX.mjs → intent-resolver-GGGTXYMB.mjs} +13 -14
  27. package/dist/lib/browser/intent-resolver-GGGTXYMB.mjs.map +7 -0
  28. package/dist/lib/browser/meta.json +1 -1
  29. package/dist/lib/browser/{react-surface-7BKUWL2U.mjs → react-surface-C4ZTW4QA.mjs} +15 -16
  30. package/dist/lib/browser/react-surface-C4ZTW4QA.mjs.map +7 -0
  31. package/dist/lib/browser/{settings-Z22D6JVJ.mjs → settings-A4E4R7VL.mjs} +6 -6
  32. package/dist/lib/browser/{settings-Z22D6JVJ.mjs.map → settings-A4E4R7VL.mjs.map} +1 -1
  33. package/dist/lib/browser/templates/index.mjs +9 -0
  34. package/dist/lib/browser/types/index.mjs +10 -0
  35. package/dist/lib/node-esm/{DeploymentDialog-IA4CH6WZ.mjs → DeploymentDialog-G6EHEPXN.mjs} +5 -5
  36. package/dist/lib/node-esm/{ScriptContainer-4IOOIPBF.mjs → ScriptContainer-6AVJSLU4.mjs} +20 -16
  37. package/dist/lib/node-esm/ScriptContainer-6AVJSLU4.mjs.map +7 -0
  38. package/dist/lib/node-esm/{app-graph-builder-IOOUTHV2.mjs → app-graph-builder-V7QF54LT.mjs} +6 -6
  39. package/dist/lib/{browser/app-graph-builder-5Z3MUX4N.mjs.map → node-esm/app-graph-builder-V7QF54LT.mjs.map} +3 -3
  40. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs +30 -0
  41. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs.map +7 -0
  42. package/dist/lib/node-esm/{chunk-2KJYPUQD.mjs → chunk-35M3CHYE.mjs} +3 -3
  43. package/dist/lib/node-esm/chunk-5OGRMRLA.mjs +90 -0
  44. package/dist/lib/node-esm/chunk-5OGRMRLA.mjs.map +7 -0
  45. package/dist/lib/node-esm/{chunk-AEB5TPEW.mjs → chunk-AHXJ6NQU.mjs} +2 -2
  46. package/dist/lib/node-esm/{chunk-UESZKXLR.mjs → chunk-JIPFLBYA.mjs} +5 -6
  47. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +7 -0
  48. package/dist/lib/node-esm/{chunk-MJJQBUOL.mjs → chunk-M642JUOZ.mjs} +40 -51
  49. package/dist/lib/node-esm/chunk-M642JUOZ.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-B4TP3LSZ.mjs → chunk-MPN2DI4P.mjs} +52 -53
  51. package/dist/lib/node-esm/chunk-MPN2DI4P.mjs.map +7 -0
  52. package/dist/lib/node-esm/chunk-WXKOIREL.mjs +284 -0
  53. package/dist/lib/node-esm/chunk-WXKOIREL.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-T7XDCUTF.mjs → chunk-ZA36GO4T.mjs} +6 -6
  55. package/dist/lib/node-esm/chunk-ZA36GO4T.mjs.map +7 -0
  56. package/dist/lib/node-esm/{compiler-7PQ4D43R.mjs → compiler-TZUZ7I6H.mjs} +28 -12
  57. package/dist/lib/node-esm/compiler-TZUZ7I6H.mjs.map +7 -0
  58. package/dist/lib/node-esm/index.mjs +34 -31
  59. package/dist/lib/node-esm/index.mjs.map +3 -3
  60. package/dist/lib/node-esm/{intent-resolver-HTM5PSRZ.mjs → intent-resolver-DUJWXCRR.mjs} +13 -14
  61. package/dist/lib/{browser/intent-resolver-JOJNH4UX.mjs.map → node-esm/intent-resolver-DUJWXCRR.mjs.map} +3 -3
  62. package/dist/lib/node-esm/meta.json +1 -1
  63. package/dist/lib/node-esm/{react-surface-6UO64YOS.mjs → react-surface-5CM3KXFE.mjs} +15 -16
  64. package/dist/lib/node-esm/react-surface-5CM3KXFE.mjs.map +7 -0
  65. package/dist/lib/node-esm/{settings-KZEGCDYX.mjs → settings-FZ25DUX4.mjs} +6 -6
  66. package/dist/lib/node-esm/{settings-KZEGCDYX.mjs.map → settings-FZ25DUX4.mjs.map} +1 -1
  67. package/dist/lib/node-esm/templates/index.mjs +10 -0
  68. package/dist/lib/node-esm/templates/index.mjs.map +7 -0
  69. package/dist/lib/node-esm/{types.mjs → types/index.mjs} +3 -6
  70. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  71. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  72. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/artifact-definition.d.ts +1 -1
  74. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  76. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  77. package/dist/types/src/capabilities/compiler.d.ts +1 -1
  78. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/index.d.ts +6 -6
  80. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  82. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  84. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/settings.d.ts +1 -1
  86. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  87. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +1 -1
  88. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  89. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +139 -12
  90. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  91. package/dist/types/src/components/DeploymentDialog/index.d.ts +1 -1
  92. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +1 -1
  93. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  94. package/dist/types/src/components/ScriptContainer.d.ts +3 -3
  95. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  96. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  97. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +7 -10
  98. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  100. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  101. package/dist/types/src/components/TestPanel/TestContainer.d.ts +4 -3
  102. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +1 -1
  103. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  104. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +10 -3
  105. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/index.d.ts +1 -4
  107. package/dist/types/src/components/index.d.ts.map +1 -1
  108. package/dist/types/src/hooks/deploy.d.ts +4 -3
  109. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  110. package/dist/types/src/hooks/template.d.ts.map +1 -1
  111. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  112. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  113. package/dist/types/src/templates/index.d.ts +2 -0
  114. package/dist/types/src/templates/index.d.ts.map +1 -1
  115. package/dist/types/src/translations.d.ts +68 -176
  116. package/dist/types/src/translations.d.ts.map +1 -1
  117. package/dist/types/src/types/index.d.ts +2 -0
  118. package/dist/types/src/types/index.d.ts.map +1 -0
  119. package/dist/types/src/{types.d.ts → types/schema.d.ts} +3 -5
  120. package/dist/types/src/types/schema.d.ts.map +1 -0
  121. package/dist/types/src/util/deploy.d.ts +3 -3
  122. package/dist/types/src/util/deploy.d.ts.map +1 -1
  123. package/dist/types/src/util/functions.d.ts.map +1 -1
  124. package/dist/types/tsconfig.tsbuildinfo +1 -1
  125. package/package.json +79 -70
  126. package/src/ScriptPlugin.tsx +7 -7
  127. package/src/capabilities/app-graph-builder.ts +2 -2
  128. package/src/capabilities/artifact-definition.ts +9 -12
  129. package/src/capabilities/blueprint-definition.ts +30 -0
  130. package/src/capabilities/compiler.ts +2 -1
  131. package/src/capabilities/index.ts +1 -1
  132. package/src/capabilities/intent-resolver.ts +2 -5
  133. package/src/capabilities/react-surface.tsx +6 -5
  134. package/src/compiler/compiler.ts +1 -1
  135. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +29 -17
  136. package/src/components/DeploymentDialog/DeploymentDialog.tsx +5 -5
  137. package/src/components/DeploymentDialog/index.ts +1 -1
  138. package/src/components/FrameContainer/FrameContainer.tsx +3 -2
  139. package/src/components/FrameContainer/frame.tsx +1 -1
  140. package/src/components/ScriptContainer.tsx +6 -4
  141. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +19 -14
  142. package/src/components/ScriptToolbar/ScriptToolbar.tsx +14 -4
  143. package/src/components/Settings/ScriptObjectSettings.tsx +19 -23
  144. package/src/components/Settings/ScriptPluginSettings.tsx +33 -28
  145. package/src/components/TestPanel/TestContainer.tsx +9 -3
  146. package/src/components/TestPanel/TestPanel.tsx +1 -1
  147. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +9 -16
  148. package/src/components/TypescriptEditor/TypescriptEditor.tsx +6 -4
  149. package/src/hooks/deploy.ts +11 -11
  150. package/src/hooks/template.ts +3 -3
  151. package/src/hooks/useCreateAndDeployScriptTemplates.ts +1 -0
  152. package/src/templates/chess.ts +1 -1
  153. package/src/templates/data-generator.ts +8 -4
  154. package/src/templates/discord.ts +4 -4
  155. package/src/templates/email.ts +2 -2
  156. package/src/templates/forex-effect.ts +3 -3
  157. package/src/templates/forex.ts +1 -1
  158. package/src/templates/gmail.ts +14 -55
  159. package/src/templates/index.ts +2 -0
  160. package/src/translations.ts +9 -6
  161. package/src/types/index.ts +5 -0
  162. package/src/{types.ts → types/schema.ts} +2 -7
  163. package/src/util/deploy.ts +20 -33
  164. package/src/util/functions.ts +4 -4
  165. package/dist/lib/browser/DeploymentDialog-RPPPWEEL.mjs +0 -12
  166. package/dist/lib/browser/ScriptContainer-RSN52NH7.mjs.map +0 -7
  167. package/dist/lib/browser/artifact-definition-A4TBQL75.mjs +0 -249
  168. package/dist/lib/browser/artifact-definition-A4TBQL75.mjs.map +0 -7
  169. package/dist/lib/browser/chunk-3FU4QZVP.mjs +0 -364
  170. package/dist/lib/browser/chunk-3FU4QZVP.mjs.map +0 -7
  171. package/dist/lib/browser/chunk-3JLR2SHJ.mjs.map +0 -7
  172. package/dist/lib/browser/chunk-LA66DQGU.mjs.map +0 -7
  173. package/dist/lib/browser/chunk-QJH7I2UV.mjs.map +0 -7
  174. package/dist/lib/browser/chunk-WB3X5Z7Q.mjs.map +0 -7
  175. package/dist/lib/browser/compiler-W4BYJYTL.mjs.map +0 -7
  176. package/dist/lib/browser/react-surface-7BKUWL2U.mjs.map +0 -7
  177. package/dist/lib/browser/types.mjs +0 -13
  178. package/dist/lib/node/DeploymentDialog-C3EEYGRH.cjs +0 -33
  179. package/dist/lib/node/DeploymentDialog-C3EEYGRH.cjs.map +0 -7
  180. package/dist/lib/node/ScriptContainer-CAC7AISY.cjs +0 -278
  181. package/dist/lib/node/ScriptContainer-CAC7AISY.cjs.map +0 -7
  182. package/dist/lib/node/app-graph-builder-25OOTBW4.cjs +0 -80
  183. package/dist/lib/node/app-graph-builder-25OOTBW4.cjs.map +0 -7
  184. package/dist/lib/node/artifact-definition-QKZI6PTO.cjs +0 -265
  185. package/dist/lib/node/artifact-definition-QKZI6PTO.cjs.map +0 -7
  186. package/dist/lib/node/chunk-AU2FOE26.cjs +0 -369
  187. package/dist/lib/node/chunk-AU2FOE26.cjs.map +0 -7
  188. package/dist/lib/node/chunk-BUOBOT3V.cjs +0 -179
  189. package/dist/lib/node/chunk-BUOBOT3V.cjs.map +0 -7
  190. package/dist/lib/node/chunk-HCRW6T3G.cjs +0 -60
  191. package/dist/lib/node/chunk-HCRW6T3G.cjs.map +0 -7
  192. package/dist/lib/node/chunk-OSBMUJ4T.cjs +0 -580
  193. package/dist/lib/node/chunk-OSBMUJ4T.cjs.map +0 -7
  194. package/dist/lib/node/chunk-QG2X6J74.cjs +0 -52
  195. package/dist/lib/node/chunk-QG2X6J74.cjs.map +0 -7
  196. package/dist/lib/node/chunk-YO5W2IPQ.cjs +0 -251
  197. package/dist/lib/node/chunk-YO5W2IPQ.cjs.map +0 -7
  198. package/dist/lib/node/chunk-ZEV3VARQ.cjs +0 -34
  199. package/dist/lib/node/chunk-ZEV3VARQ.cjs.map +0 -7
  200. package/dist/lib/node/compiler-TFSJRLL4.cjs +0 -104
  201. package/dist/lib/node/compiler-TFSJRLL4.cjs.map +0 -7
  202. package/dist/lib/node/index.cjs +0 -225
  203. package/dist/lib/node/index.cjs.map +0 -7
  204. package/dist/lib/node/intent-resolver-BQ2NKEM7.cjs +0 -100
  205. package/dist/lib/node/intent-resolver-BQ2NKEM7.cjs.map +0 -7
  206. package/dist/lib/node/meta.json +0 -1
  207. package/dist/lib/node/react-surface-EUKPDFU3.cjs +0 -120
  208. package/dist/lib/node/react-surface-EUKPDFU3.cjs.map +0 -7
  209. package/dist/lib/node/settings-WO53FLYZ.cjs +0 -38
  210. package/dist/lib/node/settings-WO53FLYZ.cjs.map +0 -7
  211. package/dist/lib/node/types.cjs +0 -34
  212. package/dist/lib/node/types.cjs.map +0 -7
  213. package/dist/lib/node-esm/ScriptContainer-4IOOIPBF.mjs.map +0 -7
  214. package/dist/lib/node-esm/artifact-definition-4XRYAP54.mjs +0 -250
  215. package/dist/lib/node-esm/artifact-definition-4XRYAP54.mjs.map +0 -7
  216. package/dist/lib/node-esm/chunk-B4TP3LSZ.mjs.map +0 -7
  217. package/dist/lib/node-esm/chunk-MJJQBUOL.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-T7XDCUTF.mjs.map +0 -7
  219. package/dist/lib/node-esm/chunk-UESZKXLR.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-W2DAXWHA.mjs +0 -365
  221. package/dist/lib/node-esm/chunk-W2DAXWHA.mjs.map +0 -7
  222. package/dist/lib/node-esm/compiler-7PQ4D43R.mjs.map +0 -7
  223. package/dist/lib/node-esm/intent-resolver-HTM5PSRZ.mjs.map +0 -7
  224. package/dist/lib/node-esm/react-surface-6UO64YOS.mjs.map +0 -7
  225. package/dist/types/src/types.d.ts.map +0 -1
  226. /package/dist/lib/browser/{DeploymentDialog-RPPPWEEL.mjs.map → DeploymentDialog-QZSTVNIS.mjs.map} +0 -0
  227. /package/dist/lib/browser/{chunk-YSQMXTYO.mjs.map → chunk-5TVBECWH.mjs.map} +0 -0
  228. /package/dist/lib/browser/{chunk-6ZHHWU6S.mjs.map → chunk-QYAREHGH.mjs.map} +0 -0
  229. /package/dist/lib/browser/{types.mjs.map → templates/index.mjs.map} +0 -0
  230. /package/dist/lib/{node-esm/DeploymentDialog-IA4CH6WZ.mjs.map → browser/types/index.mjs.map} +0 -0
  231. /package/dist/lib/node-esm/{types.mjs.map → DeploymentDialog-G6EHEPXN.mjs.map} +0 -0
  232. /package/dist/lib/node-esm/{chunk-2KJYPUQD.mjs.map → chunk-35M3CHYE.mjs.map} +0 -0
  233. /package/dist/lib/node-esm/{chunk-AEB5TPEW.mjs.map → chunk-AHXJ6NQU.mjs.map} +0 -0
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  useDeployState,
3
3
  useToolbarState
4
- } from "./chunk-3FU4QZVP.mjs";
4
+ } from "./chunk-KLGK77UK.mjs";
5
5
  import {
6
6
  SCRIPT_PLUGIN,
7
7
  meta
8
- } from "./chunk-6ZHHWU6S.mjs";
8
+ } from "./chunk-QYAREHGH.mjs";
9
9
 
10
- // packages/plugins/plugin-script/src/components/Settings/ScriptObjectSettings.tsx
10
+ // src/components/Settings/ScriptObjectSettings.tsx
11
11
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
12
12
  import { Octokit } from "@octokit/core";
13
- import React, { useCallback, useEffect, useState } from "react";
14
- import { createIntent, SettingsAction, useIntentDispatcher } from "@dxos/app-framework";
15
- import { FunctionType, getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions";
13
+ import React, { useCallback, useState } from "react";
14
+ import { SettingsAction, createIntent, useIntentDispatcher } from "@dxos/app-framework";
15
+ import { FunctionType, getInvocationUrl, getUserFunctionIdInMetadata } from "@dxos/functions";
16
16
  import { log } from "@dxos/log";
17
17
  import { useClient } from "@dxos/react-client";
18
- import { Filter, getMeta, getSpace, Ref, useQuery } from "@dxos/react-client/echo";
19
- import { Button, Clipboard, Input, useControlledState, useTranslation } from "@dxos/react-ui";
18
+ import { Filter, Ref, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
19
+ import { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from "@dxos/react-ui";
20
20
  import { DataType } from "@dxos/schema";
21
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-script/src/components/Settings/ScriptObjectSettings.tsx";
21
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/components/Settings/ScriptObjectSettings.tsx";
22
22
  var ScriptObjectSettings = ({ object }) => {
23
23
  var _effect = _useSignals();
24
24
  try {
@@ -55,8 +55,8 @@ var Binding = ({ object }) => {
55
55
  const [fn] = useQuery(space, Filter.type(FunctionType, {
56
56
  source: Ref.make(object)
57
57
  }));
58
- const functionPath = fn && getUserFunctionUrlInMetadata(getMeta(fn));
59
- const functionUrl = functionPath && getInvocationUrl(functionPath, client.config.values.runtime?.services?.edge?.url ?? "", {
58
+ const functionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
59
+ const functionUrl = functionId && getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? "", {
60
60
  spaceId: space?.id
61
61
  });
62
62
  const [binding, setBinding] = useControlledState(fn?.binding ?? "");
@@ -115,33 +115,30 @@ var Publishing = ({ object }) => {
115
115
  }));
116
116
  const gistKey = getMeta(object).keys.find(({ source }) => source === "github.com");
117
117
  const [gistUrl, setGistUrl] = useState();
118
- useEffect(() => {
118
+ useAsyncEffect(async () => {
119
119
  const token = githubToken?.token;
120
120
  const gistId = gistKey?.id;
121
121
  if (!token || !gistId) {
122
122
  setGistUrl(void 0);
123
123
  return;
124
124
  }
125
- const timeout = setTimeout(async () => {
126
- try {
127
- const octokit = new Octokit({
128
- auth: githubToken.token
129
- });
130
- const response = await octokit.request("GET /gists/{gist_id}", {
131
- gist_id: gistId
132
- });
133
- setGistUrl(response.data.html_url);
134
- } catch (err) {
135
- log.catch(err, void 0, {
136
- F: __dxlog_file,
137
- L: 135,
138
- S: void 0,
139
- C: (f, a) => f(...a)
140
- });
141
- setGistUrl(void 0);
142
- }
143
- });
144
- return () => clearTimeout(timeout);
125
+ try {
126
+ const octokit = new Octokit({
127
+ auth: githubToken.token
128
+ });
129
+ const response = await octokit.request("GET /gists/{gist_id}", {
130
+ gist_id: gistId
131
+ });
132
+ setGistUrl(response.data.html_url);
133
+ } catch (err) {
134
+ log.catch(err, void 0, {
135
+ F: __dxlog_file,
136
+ L: 134,
137
+ S: void 0,
138
+ C: (f, a) => f(...a)
139
+ });
140
+ setGistUrl(void 0);
141
+ }
145
142
  }, [
146
143
  githubToken,
147
144
  gistKey
@@ -212,13 +209,13 @@ var Publishing = ({ object }) => {
212
209
  };
213
210
  var kebabize = (str) => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? "-" : "") + $.toLowerCase());
214
211
 
215
- // packages/plugins/plugin-script/src/components/Settings/ScriptPluginSettings.tsx
212
+ // src/components/Settings/ScriptPluginSettings.tsx
216
213
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
217
214
  import React2 from "react";
218
215
  import { useClient as useClient2 } from "@dxos/react-client";
219
216
  import { Button as Button2, Select, useTranslation as useTranslation2 } from "@dxos/react-ui";
220
217
  import { EditorInputModes } from "@dxos/react-ui-editor";
221
- import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
218
+ import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
222
219
  var ScriptPluginSettings = ({ settings }) => {
223
220
  var _effect = _useSignals2();
224
221
  try {
@@ -245,12 +242,16 @@ var ScriptPluginSettings = ({ settings }) => {
245
242
  }
246
243
  ]);
247
244
  };
248
- return /* @__PURE__ */ React2.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
249
- label: t("authenticate action label")
245
+ return /* @__PURE__ */ React2.createElement(ControlPage, null, /* @__PURE__ */ React2.createElement(ControlSection, {
246
+ title: t("settings title", {
247
+ ns: meta.id
248
+ })
249
+ }, /* @__PURE__ */ React2.createElement(ControlGroup, null, /* @__PURE__ */ React2.createElement(ControlItemInput, {
250
+ title: t("authenticate action label")
250
251
  }, /* @__PURE__ */ React2.createElement(Button2, {
251
252
  onClick: handleAuthenticate
252
- }, t("authenticate button label"))), /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
253
- label: t("editor input mode label")
253
+ }, t("authenticate button label"))), /* @__PURE__ */ React2.createElement(ControlItemInput, {
254
+ title: t("editor input mode label")
254
255
  }, /* @__PURE__ */ React2.createElement(Select.Root, {
255
256
  value: settings.editorInputMode ?? "default",
256
257
  onValueChange: (value) => {
@@ -261,20 +262,20 @@ var ScriptPluginSettings = ({ settings }) => {
261
262
  }), /* @__PURE__ */ React2.createElement(Select.Portal, null, /* @__PURE__ */ React2.createElement(Select.Content, null, /* @__PURE__ */ React2.createElement(Select.Viewport, null, EditorInputModes.map((mode) => /* @__PURE__ */ React2.createElement(Select.Option, {
262
263
  key: mode,
263
264
  value: mode
264
- }, t(`settings editor input mode ${mode} label`)))))))));
265
+ }, t(`settings editor input mode ${mode} label`)))), /* @__PURE__ */ React2.createElement(Select.Arrow, null))))))));
265
266
  } finally {
266
267
  _effect.f();
267
268
  }
268
269
  };
269
270
 
270
- // packages/plugins/plugin-script/src/components/TestPanel/TestPanel.tsx
271
+ // src/components/TestPanel/TestPanel.tsx
271
272
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
272
- import React3, { forwardRef, useEffect as useEffect2, useRef, useState as useState2 } from "react";
273
+ import React3, { forwardRef, useEffect, useRef, useState as useState2 } from "react";
273
274
  import { log as log2 } from "@dxos/log";
274
275
  import { Avatar, Icon, Input as Input2, Toolbar, useTranslation as useTranslation3 } from "@dxos/react-ui";
275
276
  import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
276
277
  import { errorText, mx } from "@dxos/react-ui-theme";
277
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-script/src/components/TestPanel/TestPanel.tsx";
278
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/components/TestPanel/TestPanel.tsx";
278
279
  var TestPanel = ({ classNames, functionUrl }) => {
279
280
  var _effect = _useSignals3();
280
281
  try {
@@ -291,7 +292,7 @@ var TestPanel = ({ classNames, functionUrl }) => {
291
292
  }
292
293
  };
293
294
  const controller = useRef();
294
- useEffect2(() => {
295
+ useEffect(() => {
295
296
  return () => {
296
297
  handleStop();
297
298
  };
@@ -499,7 +500,7 @@ var MessageItem = ({ classNames, message }) => {
499
500
  className: mx(wrapper, type === "request" && "bg-primary-400 dark:bg-primary-600")
500
501
  }, text || "\xD8"), data && /* @__PURE__ */ React3.createElement(SyntaxHighlighter, {
501
502
  language: "json",
502
- className: mx(wrapper, "px-8 py-2 text-xs")
503
+ className: mx(wrapper, "text-xs")
503
504
  }, JSON.stringify(data, null, 2)));
504
505
  } finally {
505
506
  _effect.f();
@@ -518,11 +519,11 @@ var RobotAvatar = () => {
518
519
  }
519
520
  };
520
521
 
521
- // packages/plugins/plugin-script/src/components/TestPanel/TestContainer.tsx
522
+ // src/components/TestPanel/TestContainer.tsx
522
523
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
523
524
  import React4 from "react";
524
525
  import { StackItem } from "@dxos/react-ui-stack";
525
- var TestContainer = ({ script, role }) => {
526
+ var TestContainer = ({ script }) => {
526
527
  var _effect = _useSignals4();
527
528
  try {
528
529
  const state = useToolbarState();
@@ -530,9 +531,7 @@ var TestContainer = ({ script, role }) => {
530
531
  state,
531
532
  script
532
533
  });
533
- return /* @__PURE__ */ React4.createElement(StackItem.Content, {
534
- role
535
- }, /* @__PURE__ */ React4.createElement(TestPanel, {
534
+ return /* @__PURE__ */ React4.createElement(StackItem.Content, null, /* @__PURE__ */ React4.createElement(TestPanel, {
536
535
  functionUrl: state.functionUrl
537
536
  }));
538
537
  } finally {
@@ -540,10 +539,10 @@ var TestContainer = ({ script, role }) => {
540
539
  }
541
540
  };
542
541
 
543
- // packages/plugins/plugin-script/src/components/index.ts
542
+ // src/components/index.ts
544
543
  import { lazy } from "react";
545
- var ScriptContainer = lazy(() => import("./ScriptContainer-RSN52NH7.mjs"));
546
- var DeploymentDialog = lazy(() => import("./DeploymentDialog-RPPPWEEL.mjs"));
544
+ var ScriptContainer = lazy(() => import("./ScriptContainer-IA7YJMFR.mjs"));
545
+ var DeploymentDialog = lazy(() => import("./DeploymentDialog-QZSTVNIS.mjs"));
547
546
 
548
547
  export {
549
548
  ScriptObjectSettings,
@@ -554,4 +553,4 @@ export {
554
553
  ScriptContainer,
555
554
  DeploymentDialog
556
555
  };
557
- //# sourceMappingURL=chunk-3JLR2SHJ.mjs.map
556
+ //# sourceMappingURL=chunk-B5QYN3AG.mjs.map
@@ -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/TestPanel/TestContainer.tsx", "../../../src/components/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Octokit } from '@octokit/core';\nimport React, { type ChangeEvent, useCallback, useState } from 'react';\n\nimport { SettingsAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { FunctionType, type ScriptType, getInvocationUrl, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, Ref, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from '@dxos/react-ui';\nimport { DataType } 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.type(FunctionType, { source: Ref.make(object) }));\n\n const functionId = fn && getUserFunctionIdInMetadata(getMeta(fn));\n const functionUrl =\n functionId &&\n getInvocationUrl(functionId, 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 gap-2 mlb-cardSpacingBlock'>\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.type(DataType.AccessToken, { source: 'github.com' }));\n const gistKey = getMeta(object).keys.find(({ source }) => source === 'github.com');\n const [gistUrl, setGistUrl] = useState<string | undefined>();\n\n useAsyncEffect(async () => {\n const token = githubToken?.token;\n const gistId = gistKey?.id;\n if (!token || !gistId) {\n setGistUrl(undefined);\n return;\n }\n\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 }, [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 gap-4 mlb-cardSpacingBlock'>\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 { ControlGroup, ControlItemInput, ControlPage, ControlSection } 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 <ControlPage>\n <ControlSection title={t('settings title', { ns: meta.id })}>\n <ControlGroup>\n {/* TODO(wittjosiah): Hide outside of dev environments. */}\n <ControlItemInput title={t('authenticate action label')}>\n <Button onClick={handleAuthenticate}>{t('authenticate button label')}</Button>\n </ControlItemInput>\n\n <ControlItemInput title={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.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </ControlItemInput>\n </ControlGroup>\n </ControlSection>\n </ControlPage>\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-md 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, '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 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ScriptType } from '@dxos/functions';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { useDeployState, useToolbarState } from '../../hooks';\n\nimport { TestPanel } from './TestPanel';\n\nexport type TestContainerProps = {\n role: string;\n script: ScriptType;\n};\n\nexport const TestContainer = ({ script }: TestContainerProps) => {\n const state = useToolbarState();\n useDeployState({ state, script });\n return (\n <StackItem.Content>\n <TestPanel functionUrl={state.functionUrl} />\n </StackItem.Content>\n );\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", "useState", "SettingsAction", "createIntent", "useIntentDispatcher", "FunctionType", "getInvocationUrl", "getUserFunctionIdInMetadata", "log", "useClient", "Filter", "Ref", "getMeta", "getSpace", "useQuery", "Button", "Clipboard", "Input", "useAsyncEffect", "useControlledState", "useTranslation", "DataType", "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", "type", "FunctionType", "source", "Ref", "make", "functionId", "getUserFunctionIdInMetadata", "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", "DataType", "AccessToken", "gistKey", "keys", "find", "gistUrl", "setGistUrl", "useState", "useAsyncEffect", "token", "gistId", "undefined", "octokit", "Octokit", "auth", "response", "request", "gist_id", "data", "html_url", "err", "log", "catch", "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", "ControlGroup", "ControlItemInput", "ControlPage", "ControlSection", "ScriptPluginSettings", "settings", "t", "useTranslation", "meta", "id", "client", "useClient", "handleAuthenticate", "identityKey", "halo", "identity", "get", "writeCredentials", "issuer", "issuanceDate", "Date", "subject", "assertion", "serverName", "serverKey", "capabilities", "React", "ControlPage", "ControlSection", "title", "ns", "ControlGroup", "ControlItemInput", "Button", "onClick", "Select", "Root", "value", "editorInputMode", "onValueChange", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "EditorInputModes", "map", "mode", "Option", "key", "Arrow", "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", "React", "StackItem", "TestContainer", "script", "state", "useToolbarState", "useDeployState", "React", "StackItem", "Content", "TestPanel", "functionUrl", "lazy", "ScriptContainer", "lazy", "DeploymentDialog"]
7
+ }
@@ -1,14 +1,13 @@
1
1
  import {
2
- SCRIPT_PLUGIN
3
- } from "./chunk-6ZHHWU6S.mjs";
2
+ meta
3
+ } from "./chunk-QYAREHGH.mjs";
4
4
 
5
- // packages/plugins/plugin-script/src/types.ts
5
+ // src/types/schema.ts
6
6
  import { Schema } from "effect";
7
7
  import { SpaceSchema } from "@dxos/client/echo";
8
8
  import { ScriptType } from "@dxos/functions";
9
9
  import { EditorInputMode } from "@dxos/react-ui-editor";
10
10
  (function(ScriptAction2) {
11
- const SCRIPT_ACTION = `${SCRIPT_PLUGIN}/action`;
12
11
  ScriptAction2.CreateScriptSchema = Schema.Struct({
13
12
  name: Schema.optional(Schema.String),
14
13
  // TODO(wittjosiah): Placeholder annotation?
@@ -17,7 +16,7 @@ import { EditorInputMode } from "@dxos/react-ui-editor";
17
16
  })),
18
17
  initialTemplateId: Schema.optional(Schema.String)
19
18
  });
20
- class Create extends Schema.TaggedClass()(`${SCRIPT_ACTION}/create`, {
19
+ class Create extends Schema.TaggedClass()(`${meta.id}/action/create`, {
21
20
  input: Schema.extend(ScriptAction2.CreateScriptSchema, Schema.Struct({
22
21
  space: SpaceSchema
23
22
  })),
@@ -37,4 +36,4 @@ export {
37
36
  ScriptSettingsSchema,
38
37
  ScriptAction
39
38
  };
40
- //# sourceMappingURL=chunk-WB3X5Z7Q.mjs.map
39
+ //# sourceMappingURL=chunk-IS4OG2UW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/schema.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { SpaceSchema } from '@dxos/client/echo';\nimport { ScriptType } from '@dxos/functions';\nimport { EditorInputMode } from '@dxos/react-ui-editor';\n\nimport { meta } from '../meta';\n\nexport namespace ScriptAction {\n export const CreateScriptSchema = Schema.Struct({\n name: Schema.optional(Schema.String),\n // TODO(wittjosiah): Placeholder annotation?\n gistUrl: Schema.optional(Schema.String.annotations({ title: 'Import from Gist (url)' })),\n initialTemplateId: Schema.optional(Schema.String),\n });\n\n export type CreateScriptProps = Schema.Schema.Type<typeof CreateScriptSchema>;\n\n export class Create extends Schema.TaggedClass<Create>()(`${meta.id}/action/create`, {\n input: Schema.extend(CreateScriptSchema, Schema.Struct({ space: SpaceSchema })),\n output: Schema.Struct({\n object: ScriptType,\n }),\n }) {}\n}\n\nexport const ScriptSettingsSchema = Schema.mutable(\n Schema.Struct({\n editorInputMode: EditorInputMode,\n }),\n);\n\nexport type ScriptSettingsProps = Schema.Schema.Type<typeof ScriptSettingsSchema>;\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,mBAAmB;AAC5B,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;UAIfC,eAAAA;gBACFC,qBAAqBC,OAAOC,OAAO;IAC9CC,MAAMF,OAAOG,SAASH,OAAOI,MAAM;;IAEnCC,SAASL,OAAOG,SAASH,OAAOI,OAAOE,YAAY;MAAEC,OAAO;IAAyB,CAAA,CAAA;IACrFC,mBAAmBR,OAAOG,SAASH,OAAOI,MAAM;EAClD,CAAA;EAIO,MAAMK,eAAeT,OAAOU,YAAW,EAAW,GAAGC,KAAKC,EAAE,kBAAkB;IACnFC,OAAOb,OAAOc,OAAMhB,cAACC,oBAAoBC,OAAOC,OAAO;MAAEc,OAAOC;IAAY,CAAA,CAAA;IAC5EC,QAAQjB,OAAOC,OAAO;MACpBiB,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBALSV,SAAAA;AAMf,GAhBiBX,iBAAAA,eAAAA,CAAAA,EAAAA;AAkBV,IAAMsB,uBAAuBpB,OAAOqB,QACzCrB,OAAOC,OAAO;EACZqB,iBAAiBC;AACnB,CAAA,CAAA;;",
6
+ "names": ["Schema", "SpaceSchema", "ScriptType", "EditorInputMode", "ScriptAction", "CreateScriptSchema", "Schema", "Struct", "name", "optional", "String", "gistUrl", "annotations", "title", "initialTemplateId", "Create", "TaggedClass", "meta", "id", "input", "extend", "space", "SpaceSchema", "output", "object", "ScriptType", "ScriptSettingsSchema", "mutable", "editorInputMode", "EditorInputMode"]
7
+ }
@@ -0,0 +1,283 @@
1
+ import {
2
+ templates
3
+ } from "./chunk-4AUQEB2I.mjs";
4
+ import {
5
+ deployScript,
6
+ getFunctionUrl,
7
+ isScriptDeployed
8
+ } from "./chunk-NXKU3BNX.mjs";
9
+ import {
10
+ SCRIPT_PLUGIN
11
+ } from "./chunk-QYAREHGH.mjs";
12
+
13
+ // src/hooks/deploy.ts
14
+ import { useEffect, useMemo } from "react";
15
+ import { FunctionType, getUserFunctionIdInMetadata } from "@dxos/functions";
16
+ import { log } from "@dxos/log";
17
+ import { useClient } from "@dxos/react-client";
18
+ import { Query, Ref, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
19
+ import { createMenuAction } from "@dxos/react-ui-menu";
20
+ import { errorMessageColors } from "@dxos/react-ui-theme";
21
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/hooks/deploy.ts";
22
+ var createDeploy = ({ state, script, space, fn, client, existingFunctionId, t }) => {
23
+ const errorItem = createMenuAction("error", () => {
24
+ }, {
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", async () => {
36
+ if (!script.source || !space) {
37
+ return;
38
+ }
39
+ state.error = void 0;
40
+ state.deploying = true;
41
+ const result = await deployScript({
42
+ script,
43
+ client,
44
+ space,
45
+ fn,
46
+ existingFunctionId
47
+ });
48
+ if (!result.success) {
49
+ log.catch(result.error, void 0, {
50
+ F: __dxlog_file,
51
+ L: 59,
52
+ S: void 0,
53
+ C: (f, a) => f(...a)
54
+ });
55
+ state.error = t("upload failed label");
56
+ }
57
+ state.deploying = false;
58
+ }, {
59
+ type: "deploy",
60
+ label: [
61
+ state.deploying ? "pending label" : "deploy label",
62
+ {
63
+ ns: SCRIPT_PLUGIN
64
+ }
65
+ ],
66
+ icon: state.deploying ? "ph--spinner-gap--regular" : "ph--cloud-arrow-up--regular",
67
+ disabled: state.deploying,
68
+ classNames: state.deploying ? "[&_svg]:animate-spin" : ""
69
+ });
70
+ const copyAction = createMenuAction("copy", async () => {
71
+ if (!state.functionUrl) {
72
+ return;
73
+ }
74
+ await navigator.clipboard.writeText(state.functionUrl);
75
+ }, {
76
+ type: "copy",
77
+ label: [
78
+ "copy link label",
79
+ {
80
+ ns: SCRIPT_PLUGIN
81
+ }
82
+ ],
83
+ icon: "ph--link--regular",
84
+ disabled: !state.functionUrl
85
+ });
86
+ return {
87
+ nodes: [
88
+ errorItem,
89
+ deployAction,
90
+ copyAction
91
+ ],
92
+ edges: [
93
+ {
94
+ source: "root",
95
+ target: "error"
96
+ },
97
+ {
98
+ source: "root",
99
+ target: "deploy"
100
+ },
101
+ {
102
+ source: "root",
103
+ target: "copy"
104
+ }
105
+ ]
106
+ };
107
+ };
108
+ var useDeployState = ({ state, script }) => {
109
+ const { space, client, fn, existingFunctionId } = useDeployDeps({
110
+ script
111
+ });
112
+ useEffect(() => {
113
+ if (!existingFunctionId) {
114
+ return;
115
+ }
116
+ state.functionUrl = getFunctionUrl({
117
+ script,
118
+ fn,
119
+ edgeUrl: client.config.values.runtime?.services?.edge?.url ?? ""
120
+ });
121
+ }, [
122
+ existingFunctionId,
123
+ space,
124
+ fn,
125
+ script,
126
+ client.config.values.runtime?.services?.edge?.url
127
+ ]);
128
+ useEffect(() => {
129
+ state.deployed = isScriptDeployed({
130
+ script,
131
+ fn
132
+ });
133
+ }, [
134
+ script.changed,
135
+ existingFunctionId,
136
+ fn,
137
+ script
138
+ ]);
139
+ };
140
+ var useDeployDeps = ({ script }) => {
141
+ const space = getSpace(script);
142
+ const [fn] = useQuery(space, Query.type(FunctionType, {
143
+ source: Ref.make(script)
144
+ }));
145
+ const client = useClient();
146
+ const existingFunctionId = useMemo(() => fn && getUserFunctionIdInMetadata(getMeta(fn)), [
147
+ fn
148
+ ]);
149
+ return {
150
+ space,
151
+ fn,
152
+ client,
153
+ existingFunctionId
154
+ };
155
+ };
156
+
157
+ // src/hooks/useToolbarState.ts
158
+ import { useMemo as useMemo2 } from "react";
159
+ import { live } from "@dxos/live-object";
160
+ var useToolbarState = (initialState = {}) => {
161
+ return useMemo2(() => live(initialState), []);
162
+ };
163
+
164
+ // src/hooks/format.ts
165
+ import { format } from "prettier";
166
+ import prettierPluginEstree from "prettier/plugins/estree";
167
+ import prettierPluginTypescript from "prettier/plugins/typescript";
168
+ import { log as log2 } from "@dxos/log";
169
+ import { createMenuAction as createMenuAction2 } from "@dxos/react-ui-menu";
170
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/hooks/format.ts";
171
+ var createFormat = (script) => {
172
+ const formatAction = createMenuAction2("format", async () => {
173
+ if (!script.source) {
174
+ return;
175
+ }
176
+ try {
177
+ script.source.target.content = await format(script.source.target.content, {
178
+ parser: "typescript",
179
+ plugins: [
180
+ prettierPluginEstree,
181
+ prettierPluginTypescript
182
+ ],
183
+ semi: true,
184
+ singleQuote: true
185
+ });
186
+ } catch (err) {
187
+ log2.catch(err, void 0, {
188
+ F: __dxlog_file2,
189
+ L: 34,
190
+ S: void 0,
191
+ C: (f, a) => f(...a)
192
+ });
193
+ }
194
+ }, {
195
+ label: [
196
+ "format label",
197
+ {
198
+ ns: SCRIPT_PLUGIN
199
+ }
200
+ ],
201
+ icon: "ph--magic-wand--regular"
202
+ });
203
+ return {
204
+ nodes: [
205
+ formatAction
206
+ ],
207
+ edges: [
208
+ {
209
+ source: "root",
210
+ target: "format"
211
+ }
212
+ ]
213
+ };
214
+ };
215
+
216
+ // src/hooks/template.ts
217
+ import { Obj } from "@dxos/echo";
218
+ import { FUNCTIONS_PRESET_META_KEY } from "@dxos/functions";
219
+ import { createMenuAction as createMenuAction3, createMenuItemGroup } from "@dxos/react-ui-menu";
220
+ var createTemplateSelectGroup = () => {
221
+ return createMenuItemGroup("template-select", {
222
+ label: [
223
+ "template select group label",
224
+ {
225
+ ns: SCRIPT_PLUGIN
226
+ }
227
+ ],
228
+ variant: "dropdownMenu"
229
+ });
230
+ };
231
+ var createTemplateSelectActions = (script) => {
232
+ return templates.map((template) => {
233
+ return createMenuAction3(`template--${template.id}`, () => {
234
+ script.name = template.name;
235
+ script.source.target.content = template.source;
236
+ const metaKeys = Obj.getMeta(script).keys;
237
+ const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
238
+ if (oldPresetIndex >= 0) {
239
+ metaKeys.splice(oldPresetIndex, 1);
240
+ }
241
+ if (template.presetId) {
242
+ metaKeys.push({
243
+ source: FUNCTIONS_PRESET_META_KEY,
244
+ id: template.presetId
245
+ });
246
+ }
247
+ }, {
248
+ label: template.name,
249
+ value: template.id,
250
+ type: "template"
251
+ });
252
+ });
253
+ };
254
+ var createTemplateSelect = (script) => {
255
+ const templateSelectGroup = createTemplateSelectGroup();
256
+ const templateSelectActions = createTemplateSelectActions(script);
257
+ return {
258
+ nodes: [
259
+ templateSelectGroup,
260
+ ...templateSelectActions
261
+ ],
262
+ edges: [
263
+ {
264
+ source: "root",
265
+ target: "template-select"
266
+ },
267
+ ...templateSelectActions.map((action) => ({
268
+ source: "template-select",
269
+ target: action.id
270
+ }))
271
+ ]
272
+ };
273
+ };
274
+
275
+ export {
276
+ createDeploy,
277
+ useDeployState,
278
+ useDeployDeps,
279
+ createFormat,
280
+ createTemplateSelect,
281
+ useToolbarState
282
+ };
283
+ //# sourceMappingURL=chunk-KLGK77UK.mjs.map