@dxos/plugin-script 0.8.1-staging.5be625a → 0.8.1-staging.97aedb1
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-AEPYJKPO.mjs +12 -0
- package/dist/lib/browser/DeploymentDialog-AEPYJKPO.mjs.map +7 -0
- package/dist/lib/browser/{ScriptContainer-DDXZNAPF.mjs → ScriptContainer-R25PRK2D.mjs} +26 -33
- package/dist/lib/browser/ScriptContainer-R25PRK2D.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-RRLY67QC.mjs +64 -0
- package/dist/lib/browser/app-graph-builder-RRLY67QC.mjs.map +7 -0
- package/dist/lib/browser/{artifact-definition-GYCZJGR4.mjs → artifact-definition-WXFYD2V5.mjs} +5 -5
- package/dist/lib/browser/artifact-definition-WXFYD2V5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-T7XG5GED.mjs → chunk-2CGZFDCR.mjs} +290 -277
- package/dist/lib/browser/chunk-2CGZFDCR.mjs.map +7 -0
- package/dist/lib/browser/chunk-4VD3K3PY.mjs +15 -0
- package/dist/lib/browser/{chunk-FG66JYON.mjs.map → chunk-4VD3K3PY.mjs.map} +3 -3
- package/dist/lib/browser/chunk-CSZXPLYY.mjs +147 -0
- package/dist/lib/browser/chunk-CSZXPLYY.mjs.map +7 -0
- package/dist/lib/browser/chunk-KLEOGVXY.mjs +352 -0
- package/dist/lib/browser/chunk-KLEOGVXY.mjs.map +7 -0
- package/dist/lib/browser/chunk-MQZQB5VD.mjs +233 -0
- package/dist/lib/browser/chunk-MQZQB5VD.mjs.map +7 -0
- package/dist/lib/browser/{chunk-AJNRPWAA.mjs → chunk-R2CHVWJ2.mjs} +5 -4
- package/dist/lib/browser/chunk-R2CHVWJ2.mjs.map +7 -0
- package/dist/lib/browser/chunk-SUCBNCEQ.mjs +87 -0
- package/dist/lib/browser/chunk-SUCBNCEQ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-27LV6ARH.mjs → chunk-WSK3YQXI.mjs} +9 -3
- package/dist/lib/browser/{chunk-27LV6ARH.mjs.map → chunk-WSK3YQXI.mjs.map} +3 -3
- package/dist/lib/browser/{compiler-ZQLHHJ5P.mjs → compiler-56LTBEQB.mjs} +7 -7
- package/dist/lib/browser/index.mjs +62 -52
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-WCVXKRBR.mjs +90 -0
- package/dist/lib/browser/intent-resolver-WCVXKRBR.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-surface-WXZVPNGI.mjs +117 -0
- package/dist/lib/browser/react-surface-WXZVPNGI.mjs.map +7 -0
- package/dist/lib/browser/{settings-467GVEBU.mjs → settings-Z7B37V2I.mjs} +6 -6
- package/dist/lib/browser/{settings-467GVEBU.mjs.map → settings-Z7B37V2I.mjs.map} +3 -3
- package/dist/lib/browser/types.mjs +5 -2
- package/dist/lib/node/DeploymentDialog-O4MU4OMF.cjs +33 -0
- package/dist/lib/node/DeploymentDialog-O4MU4OMF.cjs.map +7 -0
- package/dist/lib/node/{ScriptContainer-DM4WSS4Y.cjs → ScriptContainer-5KY6ZOQD.cjs} +29 -34
- package/dist/lib/node/ScriptContainer-5KY6ZOQD.cjs.map +7 -0
- package/dist/lib/node/app-graph-builder-6I2BWD46.cjs +80 -0
- package/dist/lib/node/app-graph-builder-6I2BWD46.cjs.map +7 -0
- package/dist/lib/node/{artifact-definition-3SNVJ34V.cjs → artifact-definition-6NVXEHJD.cjs} +11 -11
- package/dist/lib/node/artifact-definition-6NVXEHJD.cjs.map +7 -0
- package/dist/lib/node/chunk-65MIJR3Q.cjs +173 -0
- package/dist/lib/node/chunk-65MIJR3Q.cjs.map +7 -0
- package/dist/lib/node/chunk-F4DP7WON.cjs +372 -0
- package/dist/lib/node/chunk-F4DP7WON.cjs.map +7 -0
- package/dist/lib/node/{chunk-AOKGOI5J.cjs → chunk-JICWAOWZ.cjs} +6 -6
- package/dist/lib/node/{chunk-AOKGOI5J.cjs.map → chunk-JICWAOWZ.cjs.map} +3 -3
- package/dist/lib/node/{chunk-VLQUYHPB.cjs → chunk-SLDJM45C.cjs} +286 -272
- package/dist/lib/node/chunk-SLDJM45C.cjs.map +7 -0
- package/dist/lib/node/chunk-VYBEBLDO.cjs +251 -0
- package/dist/lib/node/chunk-VYBEBLDO.cjs.map +7 -0
- package/dist/lib/node/chunk-X7MHLHHS.cjs +91 -0
- package/dist/lib/node/chunk-X7MHLHHS.cjs.map +7 -0
- package/dist/lib/node/{chunk-XFB6JL2G.cjs → chunk-XFZPWFEG.cjs} +8 -7
- package/dist/lib/node/chunk-XFZPWFEG.cjs.map +7 -0
- package/dist/lib/node/{chunk-2XX4L67K.cjs → chunk-YJQZHKKA.cjs} +11 -4
- package/dist/lib/node/{chunk-2XX4L67K.cjs.map → chunk-YJQZHKKA.cjs.map} +3 -3
- package/dist/lib/node/{compiler-5ALLTH2B.cjs → compiler-W2RU3M7U.cjs} +8 -8
- package/dist/lib/node/index.cjs +72 -62
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/intent-resolver-J4NBDNFH.cjs +100 -0
- package/dist/lib/node/intent-resolver-J4NBDNFH.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/react-surface-27KTUBIZ.cjs +129 -0
- package/dist/lib/node/react-surface-27KTUBIZ.cjs.map +7 -0
- package/dist/lib/node/{settings-WLYT2XQF.cjs → settings-EI6VPNKN.cjs} +9 -9
- package/dist/lib/node/{settings-WLYT2XQF.cjs.map → settings-EI6VPNKN.cjs.map} +3 -3
- package/dist/lib/node/types.cjs +6 -4
- package/dist/lib/node/types.cjs.map +2 -2
- package/dist/lib/node-esm/DeploymentDialog-SSQSWLHX.mjs +13 -0
- package/dist/lib/node-esm/DeploymentDialog-SSQSWLHX.mjs.map +7 -0
- package/dist/lib/node-esm/{ScriptContainer-HWCHDARL.mjs → ScriptContainer-W2F4FGDV.mjs} +26 -33
- package/dist/lib/node-esm/ScriptContainer-W2F4FGDV.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-H5XLRVX3.mjs +65 -0
- package/dist/lib/node-esm/app-graph-builder-H5XLRVX3.mjs.map +7 -0
- package/dist/lib/node-esm/{artifact-definition-VAFNV62U.mjs → artifact-definition-KQ64AYBP.mjs} +5 -5
- package/dist/lib/node-esm/artifact-definition-KQ64AYBP.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-BIFA5BEB.mjs → chunk-4MTPYMV2.mjs} +290 -277
- package/dist/lib/node-esm/chunk-4MTPYMV2.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-MFXRE7ZD.mjs → chunk-EB5DSAD4.mjs} +5 -5
- package/dist/lib/node-esm/{chunk-MFXRE7ZD.mjs.map → chunk-EB5DSAD4.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-F4HA5C34.mjs +234 -0
- package/dist/lib/node-esm/chunk-F4HA5C34.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-5S2KBIMH.mjs → chunk-FDEAVT67.mjs} +9 -3
- package/dist/lib/node-esm/{chunk-5S2KBIMH.mjs.map → chunk-FDEAVT67.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-MU3JKVL2.mjs +148 -0
- package/dist/lib/node-esm/chunk-MU3JKVL2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-PBGVTGL2.mjs +353 -0
- package/dist/lib/node-esm/chunk-PBGVTGL2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-QDYGTY4L.mjs +89 -0
- package/dist/lib/node-esm/chunk-QDYGTY4L.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-WQ4YIZ2L.mjs → chunk-RW2APVMV.mjs} +5 -4
- package/dist/lib/node-esm/chunk-RW2APVMV.mjs.map +7 -0
- package/dist/lib/node-esm/{compiler-K7GYROAO.mjs → compiler-VT5C2Z3T.mjs} +7 -7
- package/dist/lib/node-esm/index.mjs +62 -52
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-PDZ2A26X.mjs +91 -0
- package/dist/lib/node-esm/intent-resolver-PDZ2A26X.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-surface-UCUVDVSH.mjs +118 -0
- package/dist/lib/node-esm/react-surface-UCUVDVSH.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-DR3B6GHE.mjs → settings-HU5UEFRF.mjs} +6 -6
- package/dist/lib/node-esm/{settings-DR3B6GHE.mjs.map → settings-HU5UEFRF.mjs.map} +3 -3
- package/dist/lib/node-esm/types.mjs +5 -2
- package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +181 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +178 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +11 -0
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +18 -0
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
- package/dist/types/src/components/DeploymentDialog/index.d.ts +4 -0
- package/dist/types/src/components/DeploymentDialog/index.d.ts.map +1 -0
- package/dist/types/src/components/ScriptContainer.d.ts +3 -4
- package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
- package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +8 -0
- package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/{ScriptSettings/ScriptSettings.d.ts → Settings/ScriptPluginSettings.d.ts} +2 -2
- package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -0
- package/dist/types/src/components/Settings/index.d.ts +3 -0
- package/dist/types/src/components/Settings/index.d.ts.map +1 -0
- package/dist/types/src/components/TestPanel/TestPanel.d.ts +7 -0
- package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -0
- package/dist/types/src/components/TestPanel/index.d.ts +2 -0
- package/dist/types/src/components/TestPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +8 -5
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/deploy.d.ts +10 -7
- package/dist/types/src/hooks/deploy.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts +17 -0
- package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -0
- package/dist/types/src/hooks/useToolbarAction.d.ts +2 -3
- package/dist/types/src/hooks/useToolbarAction.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -0
- package/dist/types/src/meta.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 +10 -0
- package/dist/types/src/templates/data-generator.d.ts.map +1 -0
- package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
- package/dist/types/src/templates/gmail.d.ts +3 -0
- package/dist/types/src/templates/gmail.d.ts.map +1 -0
- package/dist/types/src/templates/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +66 -15
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +4 -0
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/util/deploy.d.ts +25 -0
- package/dist/types/src/util/deploy.d.ts.map +1 -0
- package/dist/types/src/util/functions.d.ts +11 -0
- package/dist/types/src/util/functions.d.ts.map +1 -0
- package/dist/types/src/util/index.d.ts +3 -0
- package/dist/types/src/util/index.d.ts.map +1 -0
- package/package.json +51 -49
- package/src/ScriptPlugin.tsx +12 -17
- package/src/capabilities/app-graph-builder.ts +47 -0
- package/src/capabilities/artifact-definition.ts +1 -1
- package/src/capabilities/capabilities.ts +2 -2
- package/src/capabilities/index.ts +2 -1
- package/src/capabilities/intent-resolver.ts +39 -5
- package/src/capabilities/react-surface.tsx +62 -33
- package/src/capabilities/settings.ts +2 -2
- package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +39 -0
- package/src/components/DeploymentDialog/DeploymentDialog.tsx +112 -0
- package/src/components/DeploymentDialog/index.ts +9 -0
- package/src/components/ScriptContainer.tsx +22 -35
- package/src/components/ScriptToolbar/ScriptToolbar.tsx +3 -4
- package/src/components/{ScriptSettingsPanel.tsx → Settings/ScriptObjectSettings.tsx} +120 -102
- package/src/components/{ScriptSettings/ScriptSettings.tsx → Settings/ScriptPluginSettings.tsx} +3 -3
- package/src/components/Settings/index.ts +6 -0
- package/src/components/{DebugPanel/DebugPanel.tsx → TestPanel/TestPanel.tsx} +8 -14
- package/src/components/{LogsPanel → TestPanel}/index.ts +1 -1
- package/src/components/index.ts +4 -4
- package/src/hooks/deploy.ts +31 -80
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useCreateAndDeployScriptTemplates.ts +59 -0
- package/src/hooks/useToolbarAction.ts +9 -22
- package/src/meta.ts +5 -0
- package/src/templates/chess.ts +4 -0
- package/src/templates/data-generator.ts +73 -0
- package/src/templates/discord.ts +1 -1
- package/src/templates/forex-effect.ts +2 -1
- package/src/templates/gmail.ts +244 -0
- package/src/templates/index.ts +14 -0
- package/src/translations.ts +27 -8
- package/src/types.ts +4 -0
- package/src/util/deploy.ts +126 -0
- package/src/util/functions.ts +53 -0
- package/src/util/index.ts +6 -0
- package/dist/lib/browser/ScriptContainer-DDXZNAPF.mjs.map +0 -7
- package/dist/lib/browser/artifact-definition-GYCZJGR4.mjs.map +0 -7
- package/dist/lib/browser/chunk-4SSKJNMZ.mjs +0 -69
- package/dist/lib/browser/chunk-4SSKJNMZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-AJNRPWAA.mjs.map +0 -7
- package/dist/lib/browser/chunk-FG66JYON.mjs +0 -15
- package/dist/lib/browser/chunk-LJN26TSM.mjs +0 -526
- package/dist/lib/browser/chunk-LJN26TSM.mjs.map +0 -7
- package/dist/lib/browser/chunk-T7XG5GED.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-3B3Z67FP.mjs +0 -45
- package/dist/lib/browser/intent-resolver-3B3Z67FP.mjs.map +0 -7
- package/dist/lib/browser/react-surface-ICXHFHN7.mjs +0 -79
- package/dist/lib/browser/react-surface-ICXHFHN7.mjs.map +0 -7
- package/dist/lib/node/ScriptContainer-DM4WSS4Y.cjs.map +0 -7
- package/dist/lib/node/artifact-definition-3SNVJ34V.cjs.map +0 -7
- package/dist/lib/node/chunk-I5Z6TRZY.cjs +0 -548
- package/dist/lib/node/chunk-I5Z6TRZY.cjs.map +0 -7
- package/dist/lib/node/chunk-VLQUYHPB.cjs.map +0 -7
- package/dist/lib/node/chunk-XCQNFRZ6.cjs +0 -77
- package/dist/lib/node/chunk-XCQNFRZ6.cjs.map +0 -7
- package/dist/lib/node/chunk-XFB6JL2G.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-CN5WMMAD.cjs +0 -59
- package/dist/lib/node/intent-resolver-CN5WMMAD.cjs.map +0 -7
- package/dist/lib/node/react-surface-IER3VEZR.cjs +0 -95
- package/dist/lib/node/react-surface-IER3VEZR.cjs.map +0 -7
- package/dist/lib/node-esm/ScriptContainer-HWCHDARL.mjs.map +0 -7
- package/dist/lib/node-esm/artifact-definition-VAFNV62U.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4YUSGXJ2.mjs +0 -71
- package/dist/lib/node-esm/chunk-4YUSGXJ2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BIFA5BEB.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-F2O475DQ.mjs +0 -527
- package/dist/lib/node-esm/chunk-F2O475DQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WQ4YIZ2L.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-6F7CVQEX.mjs +0 -46
- package/dist/lib/node-esm/intent-resolver-6F7CVQEX.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-EXSKKZNP.mjs +0 -80
- package/dist/lib/node-esm/react-surface-EXSKKZNP.mjs.map +0 -7
- package/dist/types/src/components/DebugPanel/DebugPanel.d.ts +0 -7
- package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +0 -1
- package/dist/types/src/components/DebugPanel/index.d.ts +0 -2
- package/dist/types/src/components/DebugPanel/index.d.ts.map +0 -1
- package/dist/types/src/components/LogsPanel/LogsPanel.d.ts +0 -8
- package/dist/types/src/components/LogsPanel/LogsPanel.d.ts.map +0 -1
- package/dist/types/src/components/LogsPanel/index.d.ts +0 -2
- package/dist/types/src/components/LogsPanel/index.d.ts.map +0 -1
- package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +0 -1
- package/dist/types/src/components/ScriptSettings/index.d.ts +0 -2
- package/dist/types/src/components/ScriptSettings/index.d.ts.map +0 -1
- package/dist/types/src/components/ScriptSettingsPanel.d.ts +0 -7
- package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +0 -1
- package/dist/types/src/hooks/view.d.ts +0 -21
- package/dist/types/src/hooks/view.d.ts.map +0 -1
- package/src/components/DebugPanel/index.ts +0 -5
- package/src/components/LogsPanel/LogsPanel.tsx +0 -116
- package/src/components/ScriptSettings/index.ts +0 -5
- package/src/hooks/view.ts +0 -38
- /package/dist/lib/browser/{compiler-ZQLHHJ5P.mjs.map → compiler-56LTBEQB.mjs.map} +0 -0
- /package/dist/lib/node/{compiler-5ALLTH2B.cjs.map → compiler-W2RU3M7U.cjs.map} +0 -0
- /package/dist/lib/node-esm/{compiler-K7GYROAO.mjs.map → compiler-VT5C2Z3T.mjs.map} +0 -0
|
@@ -3,22 +3,26 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Octokit } from '@octokit/core';
|
|
6
|
+
import { isNotNullable } from 'effect/Predicate';
|
|
6
7
|
|
|
7
|
-
import { contributes, Capabilities, createResolver } from '@dxos/app-framework';
|
|
8
|
+
import { contributes, Capabilities, createResolver, createIntent, LayoutAction } from '@dxos/app-framework';
|
|
8
9
|
import { ScriptType } from '@dxos/functions/types';
|
|
9
10
|
import { create, makeRef } from '@dxos/live-object';
|
|
11
|
+
import { TokenManagerAction } from '@dxos/plugin-token-manager/types';
|
|
10
12
|
import { TextType } from '@dxos/schema';
|
|
11
13
|
|
|
14
|
+
import { DEPLOYMENT_DIALOG } from '../components';
|
|
15
|
+
import { defaultScriptsForIntegration } from '../meta';
|
|
12
16
|
import { templates } from '../templates';
|
|
13
17
|
import { ScriptAction } from '../types';
|
|
14
18
|
|
|
15
19
|
export default () =>
|
|
16
|
-
contributes(
|
|
17
|
-
Capabilities.IntentResolver,
|
|
20
|
+
contributes(Capabilities.IntentResolver, [
|
|
18
21
|
createResolver({
|
|
19
22
|
intent: ScriptAction.Create,
|
|
20
|
-
resolve: async ({ name, gistUrl }) => {
|
|
23
|
+
resolve: async ({ name, gistUrl, initialTemplateId }) => {
|
|
21
24
|
let content = templates[0].source;
|
|
25
|
+
|
|
22
26
|
const gistId = gistUrl?.split('/').at(-1);
|
|
23
27
|
if (gistId) {
|
|
24
28
|
// TODO(wittjosiah): Capability which contributes Octokit?
|
|
@@ -33,6 +37,14 @@ export default () =>
|
|
|
33
37
|
}
|
|
34
38
|
}
|
|
35
39
|
|
|
40
|
+
if (initialTemplateId) {
|
|
41
|
+
const template = templates.find((template) => template.id === initialTemplateId);
|
|
42
|
+
if (template) {
|
|
43
|
+
content = template.source;
|
|
44
|
+
name = template.name;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
36
48
|
return {
|
|
37
49
|
data: {
|
|
38
50
|
object: create(ScriptType, {
|
|
@@ -43,4 +55,26 @@ export default () =>
|
|
|
43
55
|
};
|
|
44
56
|
},
|
|
45
57
|
}),
|
|
46
|
-
|
|
58
|
+
createResolver({
|
|
59
|
+
intent: TokenManagerAction.AccessTokenCreated,
|
|
60
|
+
resolve: async ({ accessToken }) => {
|
|
61
|
+
const scriptTemplates = (defaultScriptsForIntegration[accessToken.source] ?? [])
|
|
62
|
+
.map((id) => templates.find((t) => t.id === id))
|
|
63
|
+
.filter(isNotNullable);
|
|
64
|
+
|
|
65
|
+
if (scriptTemplates.length > 0) {
|
|
66
|
+
return {
|
|
67
|
+
intents: [
|
|
68
|
+
createIntent(LayoutAction.UpdateDialog, {
|
|
69
|
+
part: 'dialog',
|
|
70
|
+
subject: DEPLOYMENT_DIALOG,
|
|
71
|
+
options: { blockAlign: 'start', state: true, props: { accessToken, scriptTemplates } },
|
|
72
|
+
}),
|
|
73
|
+
],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return { data: undefined };
|
|
78
|
+
},
|
|
79
|
+
}),
|
|
80
|
+
]);
|
|
@@ -5,66 +5,95 @@
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
7
|
import { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';
|
|
8
|
+
import { InvocationTracePanel } from '@dxos/devtools';
|
|
8
9
|
import { isInstanceOf } from '@dxos/echo-schema';
|
|
9
10
|
import { ScriptType } from '@dxos/functions/types';
|
|
10
11
|
import { SettingsStore } from '@dxos/local-storage';
|
|
11
|
-
import {
|
|
12
|
+
import { getSpace } from '@dxos/react-client/echo';
|
|
13
|
+
import { StackItem } from '@dxos/react-ui-stack';
|
|
14
|
+
import { type AccessTokenType } from '@dxos/schema';
|
|
12
15
|
|
|
13
16
|
import { ScriptCapabilities } from './capabilities';
|
|
14
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
ScriptContainer,
|
|
19
|
+
ScriptPluginSettings,
|
|
20
|
+
ScriptObjectSettings,
|
|
21
|
+
TestPanel,
|
|
22
|
+
ScriptProperties,
|
|
23
|
+
DeploymentDialog,
|
|
24
|
+
DEPLOYMENT_DIALOG,
|
|
25
|
+
} from '../components';
|
|
15
26
|
import { useDeployState, useToolbarState } from '../hooks';
|
|
16
|
-
import {
|
|
27
|
+
import { meta } from '../meta';
|
|
17
28
|
import { type ScriptSettingsProps } from '../types';
|
|
18
29
|
|
|
19
30
|
export default () =>
|
|
20
31
|
contributes(Capabilities.ReactSurface, [
|
|
21
32
|
createSurface({
|
|
22
|
-
id: `${
|
|
33
|
+
id: `${meta.id}/plugin-settings`,
|
|
23
34
|
role: 'article',
|
|
24
35
|
filter: (data): data is { subject: SettingsStore<ScriptSettingsProps> } =>
|
|
25
|
-
data.subject instanceof SettingsStore && data.subject.prefix ===
|
|
26
|
-
component: ({ data: { subject } }) => <
|
|
36
|
+
data.subject instanceof SettingsStore && data.subject.prefix === meta.id,
|
|
37
|
+
component: ({ data: { subject } }) => <ScriptPluginSettings settings={subject.value} />,
|
|
27
38
|
}),
|
|
28
39
|
createSurface({
|
|
29
|
-
id: `${
|
|
40
|
+
id: `${meta.id}/article`,
|
|
30
41
|
role: 'article',
|
|
31
|
-
filter: (data): data is { subject: ScriptType
|
|
32
|
-
isInstanceOf(ScriptType, data.subject),
|
|
42
|
+
filter: (data): data is { subject: ScriptType } => isInstanceOf(ScriptType, data.subject),
|
|
33
43
|
component: ({ data, role }) => {
|
|
34
44
|
const compiler = useCapability(ScriptCapabilities.Compiler);
|
|
35
45
|
// TODO(dmaretskyi): Since settings store is not reactive, this would break on the script plugin being enabled without a page reload.
|
|
36
|
-
const settings = useCapability(Capabilities.SettingsStore).getStore<ScriptSettingsProps>(
|
|
37
|
-
return
|
|
38
|
-
<ScriptContainer
|
|
39
|
-
role={role}
|
|
40
|
-
script={data.subject}
|
|
41
|
-
variant={data.variant}
|
|
42
|
-
settings={settings}
|
|
43
|
-
env={compiler.environment}
|
|
44
|
-
/>
|
|
45
|
-
);
|
|
46
|
+
const settings = useCapability(Capabilities.SettingsStore).getStore<ScriptSettingsProps>(meta.id)?.value;
|
|
47
|
+
return <ScriptContainer role={role} script={data.subject} settings={settings} env={compiler.environment} />;
|
|
46
48
|
},
|
|
47
49
|
}),
|
|
48
50
|
createSurface({
|
|
49
|
-
id: `${
|
|
50
|
-
role: '
|
|
51
|
-
|
|
51
|
+
id: `${meta.id}/companion/base-settings`,
|
|
52
|
+
role: 'base-object-settings',
|
|
53
|
+
filter: (data): data is { subject: ScriptType } => isInstanceOf(ScriptType, data.subject),
|
|
54
|
+
component: ({ data }) => <ScriptProperties object={data.subject} />,
|
|
55
|
+
}),
|
|
56
|
+
createSurface({
|
|
57
|
+
id: `${meta.id}/companion/settings`,
|
|
58
|
+
role: 'object-settings',
|
|
52
59
|
filter: (data): data is { subject: ScriptType } => isInstanceOf(ScriptType, data.subject),
|
|
53
|
-
component: ({ data }) => {
|
|
60
|
+
component: ({ data }) => <ScriptObjectSettings object={data.subject} />,
|
|
61
|
+
}),
|
|
62
|
+
createSurface({
|
|
63
|
+
id: `${meta.id}/companion/execute`,
|
|
64
|
+
role: 'article',
|
|
65
|
+
filter: (data): data is { companionTo: ScriptType } =>
|
|
66
|
+
isInstanceOf(ScriptType, data.companionTo) && data.subject === 'execute',
|
|
67
|
+
component: ({ data, role }) => {
|
|
54
68
|
// TODO(wittjosiah): Decouple hooks from toolbar state.
|
|
55
69
|
const state = useToolbarState();
|
|
56
|
-
useDeployState({ state, script: data.
|
|
57
|
-
return
|
|
70
|
+
useDeployState({ state, script: data.companionTo });
|
|
71
|
+
return (
|
|
72
|
+
<StackItem.Content role={role}>
|
|
73
|
+
<TestPanel functionUrl={state.functionUrl} />
|
|
74
|
+
</StackItem.Content>
|
|
75
|
+
);
|
|
58
76
|
},
|
|
59
77
|
}),
|
|
60
78
|
createSurface({
|
|
61
|
-
id: `${
|
|
62
|
-
role: '
|
|
63
|
-
filter: (data): data is {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
79
|
+
id: `${meta.id}/companion/logs`,
|
|
80
|
+
role: 'article',
|
|
81
|
+
filter: (data): data is { companionTo: ScriptType } =>
|
|
82
|
+
isInstanceOf(ScriptType, data.companionTo) && data.subject === 'logs',
|
|
83
|
+
component: ({ data, role }) => {
|
|
84
|
+
const space = getSpace(data.companionTo);
|
|
85
|
+
return (
|
|
86
|
+
<StackItem.Content role={role}>
|
|
87
|
+
<InvocationTracePanel space={space} script={data.companionTo} detailAxis='block' />
|
|
88
|
+
</StackItem.Content>
|
|
89
|
+
);
|
|
90
|
+
},
|
|
91
|
+
}),
|
|
92
|
+
createSurface({
|
|
93
|
+
id: DEPLOYMENT_DIALOG,
|
|
94
|
+
role: 'dialog',
|
|
95
|
+
filter: (data): data is { props: { accessToken: AccessTokenType; scriptTemplates: any } } =>
|
|
96
|
+
data.component === DEPLOYMENT_DIALOG,
|
|
97
|
+
component: ({ data }) => <DeploymentDialog {...data.props} />,
|
|
69
98
|
}),
|
|
70
99
|
]);
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
import { Capabilities, contributes } from '@dxos/app-framework';
|
|
6
6
|
import { create } from '@dxos/live-object';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { meta } from '../meta';
|
|
9
9
|
import { ScriptSettingsSchema } from '../types';
|
|
10
10
|
|
|
11
11
|
export default () => {
|
|
12
12
|
const settings = create(ScriptSettingsSchema, { editorInputMode: 'vscode' });
|
|
13
|
-
return contributes(Capabilities.Settings, { schema: ScriptSettingsSchema, prefix:
|
|
13
|
+
return contributes(Capabilities.Settings, { schema: ScriptSettingsSchema, prefix: meta.id, value: settings });
|
|
14
14
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import '@dxos-theme';
|
|
6
|
+
|
|
7
|
+
import { type Meta } from '@storybook/react';
|
|
8
|
+
import React from 'react';
|
|
9
|
+
|
|
10
|
+
import { Dialog } from '@dxos/react-ui';
|
|
11
|
+
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
12
|
+
|
|
13
|
+
import translations from '../../translations';
|
|
14
|
+
import { DeploymentDialog } from '../DeploymentDialog/DeploymentDialog';
|
|
15
|
+
|
|
16
|
+
export const Default = {
|
|
17
|
+
args: {
|
|
18
|
+
accessToken: { value: 'example-token' },
|
|
19
|
+
scripts: [
|
|
20
|
+
{ label: 'Script 1', templateId: 'template1' },
|
|
21
|
+
{ label: 'Script 2', templateId: 'template2' },
|
|
22
|
+
{ label: 'Script 3', templateId: 'template3' },
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
render: (args: any) => (
|
|
26
|
+
<Dialog.Root defaultOpen={true}>
|
|
27
|
+
<DeploymentDialog {...args} />
|
|
28
|
+
</Dialog.Root>
|
|
29
|
+
),
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const meta: Meta = {
|
|
33
|
+
title: 'plugins/plugin-script/DeploymentDialog',
|
|
34
|
+
component: DeploymentDialog,
|
|
35
|
+
parameters: { translations },
|
|
36
|
+
decorators: [withTheme, withLayout({ tooltips: true })],
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default meta;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { useEffect, useMemo } from 'react';
|
|
6
|
+
|
|
7
|
+
import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
|
|
8
|
+
import { getSpace } from '@dxos/react-client/echo';
|
|
9
|
+
import { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';
|
|
10
|
+
import { type AccessTokenType } from '@dxos/schema';
|
|
11
|
+
|
|
12
|
+
import { useCreateAndDeployScriptTemplates } from '../../hooks/useCreateAndDeployScriptTemplates';
|
|
13
|
+
import { SCRIPT_PLUGIN } from '../../meta';
|
|
14
|
+
import { type Template } from '../../templates';
|
|
15
|
+
|
|
16
|
+
export const DEPLOYMENT_DIALOG = `${SCRIPT_PLUGIN}/deployment/dialog`;
|
|
17
|
+
|
|
18
|
+
// TODO(ZaymonFC):
|
|
19
|
+
// - Show activity and feedback to the user.
|
|
20
|
+
// - Only take an array of templateIds and get the name from the data.
|
|
21
|
+
// - Pending / onError states.
|
|
22
|
+
|
|
23
|
+
type DeploymentDialogProps = {
|
|
24
|
+
accessToken: AccessTokenType;
|
|
25
|
+
scriptTemplates: Template[];
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const DeploymentDialog = ({ accessToken, scriptTemplates }: DeploymentDialogProps) => {
|
|
29
|
+
const { t } = useTranslation(SCRIPT_PLUGIN);
|
|
30
|
+
const space = useMemo(() => getSpace(accessToken), [accessToken]);
|
|
31
|
+
|
|
32
|
+
// TODO(ZaymonFC): Thinking further. All of this should get moved to intents to run async in the background.
|
|
33
|
+
// Deployment shouldn't be tied to the lifecycle of the dialogue component.
|
|
34
|
+
const { handleCreateAndDeployScripts, status } = useCreateAndDeployScriptTemplates(space, scriptTemplates);
|
|
35
|
+
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
36
|
+
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (status === 'success') {
|
|
39
|
+
// TODO(ZaymonFC): We can probably re-use this toast for normal script deployment.
|
|
40
|
+
void dispatch(
|
|
41
|
+
createIntent(LayoutAction.AddToast, {
|
|
42
|
+
part: 'toast',
|
|
43
|
+
subject: {
|
|
44
|
+
id: `${SCRIPT_PLUGIN}/deployment-success`,
|
|
45
|
+
icon: 'ph--check--regular',
|
|
46
|
+
duration: Infinity,
|
|
47
|
+
title: ['script deployment toast label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],
|
|
48
|
+
description: ['script deployment toast description', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],
|
|
49
|
+
closeLabel: ['script deployment toast close label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],
|
|
50
|
+
},
|
|
51
|
+
}),
|
|
52
|
+
);
|
|
53
|
+
void dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));
|
|
54
|
+
}
|
|
55
|
+
if (status === 'error') {
|
|
56
|
+
void dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));
|
|
57
|
+
void dispatch(
|
|
58
|
+
createIntent(LayoutAction.AddToast, {
|
|
59
|
+
part: 'toast',
|
|
60
|
+
subject: {
|
|
61
|
+
id: `${SCRIPT_PLUGIN}/deployment-error`,
|
|
62
|
+
icon: 'ph--warning--regular',
|
|
63
|
+
duration: Infinity,
|
|
64
|
+
title: ['script deployment error toast label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],
|
|
65
|
+
description: [
|
|
66
|
+
'script deployment error toast description',
|
|
67
|
+
{ ns: SCRIPT_PLUGIN, count: scriptTemplates.length },
|
|
68
|
+
],
|
|
69
|
+
closeLabel: [
|
|
70
|
+
'script deployment error toast close label',
|
|
71
|
+
{ ns: SCRIPT_PLUGIN, count: scriptTemplates.length },
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
}),
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
}, [status, dispatch]);
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<Dialog.Content>
|
|
81
|
+
<div className='flex justify-between items-center'>
|
|
82
|
+
<Dialog.Title>{t('deployment dialog title')}</Dialog.Title>
|
|
83
|
+
<Dialog.Close asChild>
|
|
84
|
+
<Button density='fine' variant='ghost'>
|
|
85
|
+
<Icon icon='ph--x--regular' size={4} />
|
|
86
|
+
</Button>
|
|
87
|
+
</Dialog.Close>
|
|
88
|
+
</div>
|
|
89
|
+
<div role='none' className='plb-4'>
|
|
90
|
+
{/* TODO: Implement deployment logic and UI. */}
|
|
91
|
+
<p>{t('deployment dialog scripts found message', { count: scriptTemplates.length })}</p>
|
|
92
|
+
<ul className='pbs-2'>
|
|
93
|
+
{scriptTemplates.map((template) => {
|
|
94
|
+
return <li key={template.id}>{template.name}</li>;
|
|
95
|
+
})}
|
|
96
|
+
</ul>
|
|
97
|
+
</div>
|
|
98
|
+
<div role='none' className='flex flex-row-reverse gap-1'>
|
|
99
|
+
<Button variant='primary' onClick={handleCreateAndDeployScripts} disabled={status === 'pending'}>
|
|
100
|
+
{status === 'pending'
|
|
101
|
+
? t('deployment dialog deploy functions pending button label', { count: scriptTemplates.length })
|
|
102
|
+
: t('deployment dialog deploy functions button label', { count: scriptTemplates.length })}
|
|
103
|
+
</Button>
|
|
104
|
+
<Dialog.Close asChild disabled={status === 'pending'}>
|
|
105
|
+
<Button disabled={status === 'pending'}>{t('deployment dialog skip button label')}</Button>
|
|
106
|
+
</Dialog.Close>
|
|
107
|
+
</div>
|
|
108
|
+
</Dialog.Content>
|
|
109
|
+
);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export default DeploymentDialog;
|
|
@@ -12,30 +12,30 @@ import { createDataExtensions, listener, stackItemContentEditorClassNames } from
|
|
|
12
12
|
import { StackItem } from '@dxos/react-ui-stack';
|
|
13
13
|
import { mx } from '@dxos/react-ui-theme';
|
|
14
14
|
|
|
15
|
-
import { LogsPanel } from './LogsPanel';
|
|
16
15
|
import { ScriptToolbar } from './ScriptToolbar';
|
|
17
16
|
import { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';
|
|
18
17
|
import { useDeployState, useToolbarState } from '../hooks';
|
|
19
18
|
import { type ScriptSettingsProps } from '../types';
|
|
20
19
|
|
|
21
|
-
export type ScriptEditorProps = ThemedClassName<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
20
|
+
export type ScriptEditorProps = ThemedClassName<
|
|
21
|
+
{
|
|
22
|
+
role?: string;
|
|
23
|
+
script: ScriptType;
|
|
24
|
+
settings?: ScriptSettingsProps;
|
|
25
|
+
} & Pick<TypescriptEditorProps, 'env'>
|
|
26
|
+
>;
|
|
28
27
|
|
|
29
28
|
export const ScriptContainer = ({
|
|
30
|
-
role,
|
|
31
29
|
classNames,
|
|
30
|
+
role,
|
|
32
31
|
script,
|
|
33
|
-
variant,
|
|
34
32
|
settings = { editorInputMode: 'vscode' },
|
|
35
33
|
env,
|
|
36
34
|
}: ScriptEditorProps) => {
|
|
37
35
|
const identity = useIdentity();
|
|
38
36
|
const space = getSpace(script);
|
|
37
|
+
const state = useToolbarState();
|
|
38
|
+
useDeployState({ state, script });
|
|
39
39
|
|
|
40
40
|
const extensions = useMemo(
|
|
41
41
|
() => [
|
|
@@ -53,34 +53,21 @@ export const ScriptContainer = ({
|
|
|
53
53
|
identity,
|
|
54
54
|
}),
|
|
55
55
|
],
|
|
56
|
-
[script, script.source.target
|
|
56
|
+
[identity, space, script, script.source.target],
|
|
57
57
|
);
|
|
58
58
|
|
|
59
|
-
const state = useToolbarState();
|
|
60
|
-
useDeployState({ state, script });
|
|
61
|
-
|
|
62
|
-
if (!space) {
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
59
|
return (
|
|
67
|
-
<StackItem.Content toolbar=
|
|
68
|
-
{
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
className={mx(stackItemContentEditorClassNames(role), 'grow')}
|
|
79
|
-
inputMode={settings.editorInputMode}
|
|
80
|
-
toolbar
|
|
81
|
-
/>
|
|
82
|
-
</>
|
|
83
|
-
)}
|
|
60
|
+
<StackItem.Content toolbar classNames='divide-y divide-separator'>
|
|
61
|
+
<ScriptToolbar state={state} role={role} script={script} />
|
|
62
|
+
<TypescriptEditor
|
|
63
|
+
id={script.id}
|
|
64
|
+
env={env}
|
|
65
|
+
initialValue={script.source?.target?.content}
|
|
66
|
+
extensions={extensions}
|
|
67
|
+
className={mx(stackItemContentEditorClassNames(role))}
|
|
68
|
+
inputMode={settings.editorInputMode}
|
|
69
|
+
toolbar
|
|
70
|
+
/>
|
|
84
71
|
</StackItem.Content>
|
|
85
72
|
);
|
|
86
73
|
};
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
createDeploy,
|
|
16
16
|
createFormat,
|
|
17
17
|
createTemplateSelect,
|
|
18
|
-
createView,
|
|
19
18
|
useToolbarAction,
|
|
20
19
|
} from '../../hooks';
|
|
21
20
|
|
|
@@ -30,10 +29,9 @@ const createToolbar = (state: ScriptToolbarState) => {
|
|
|
30
29
|
const format = createFormat();
|
|
31
30
|
const gap = createGapSeparator();
|
|
32
31
|
const deploy = createDeploy(state);
|
|
33
|
-
const view = createView(state);
|
|
34
32
|
return {
|
|
35
|
-
nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes
|
|
36
|
-
edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges
|
|
33
|
+
nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],
|
|
34
|
+
edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],
|
|
37
35
|
};
|
|
38
36
|
};
|
|
39
37
|
|
|
@@ -41,6 +39,7 @@ export const ScriptToolbar = ({ script, role, state, classNames }: ScriptToolbar
|
|
|
41
39
|
const handleAction = useToolbarAction({ state, script });
|
|
42
40
|
const toolbarCreator = useCallback(() => createToolbar(state), [state]);
|
|
43
41
|
const menu = useMenuActions(toolbarCreator);
|
|
42
|
+
|
|
44
43
|
return (
|
|
45
44
|
<div role='none' className={stackItemContentToolbarClassNames(role)}>
|
|
46
45
|
<ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>
|