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