@dxos/plugin-script 0.8.4-main.3eb6e50203 → 0.8.4-main.3fbcb4aa9b
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/README.md +15 -13
- package/dist/lib/{browser/chunk-BU6CGVU2.mjs → neutral/DeploymentDialog-6DBF3V6C.mjs} +25 -50
- package/dist/lib/neutral/DeploymentDialog-6DBF3V6C.mjs.map +7 -0
- package/dist/lib/{browser/NotebookContainer-UQ4I24R6.mjs → neutral/NotebookContainer-FIAQI3A2.mjs} +60 -145
- package/dist/lib/neutral/NotebookContainer-FIAQI3A2.mjs.map +7 -0
- package/dist/lib/neutral/ScriptContainer-2OPBAXFB.mjs +79 -0
- package/dist/lib/neutral/ScriptContainer-2OPBAXFB.mjs.map +7 -0
- package/dist/lib/neutral/ScriptPlugin.mjs +39 -0
- package/dist/lib/neutral/ScriptPlugin.mjs.map +7 -0
- package/dist/lib/neutral/ScriptPlugin.node.mjs +27 -0
- package/dist/lib/neutral/ScriptPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs +31 -0
- package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs.map +7 -0
- package/dist/lib/neutral/ScriptProperties-F6NE6M4H.mjs +296 -0
- package/dist/lib/neutral/ScriptProperties-F6NE6M4H.mjs.map +7 -0
- package/dist/lib/neutral/TestContainer-JNFPLAJX.mjs +44 -0
- package/dist/lib/neutral/TestContainer-JNFPLAJX.mjs.map +7 -0
- package/dist/lib/neutral/access-token-created-ENMCEGVU.mjs +34 -0
- package/dist/lib/neutral/access-token-created-ENMCEGVU.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-7AWFCEQF.mjs +52 -0
- package/dist/lib/neutral/app-graph-builder-7AWFCEQF.mjs.map +7 -0
- package/dist/lib/neutral/blueprint-definition-T33SBPP2.mjs +15 -0
- package/dist/lib/neutral/blueprint-definition-T33SBPP2.mjs.map +7 -0
- package/dist/lib/neutral/blueprints/index.mjs +10 -0
- package/dist/lib/neutral/capabilities/index.mjs +21 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/node.mjs +17 -0
- package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
- package/dist/lib/neutral/chunk-2DMPFVUM.mjs +8 -0
- package/dist/lib/neutral/chunk-2DMPFVUM.mjs.map +7 -0
- package/dist/lib/neutral/chunk-4RJALG6K.mjs +151 -0
- package/dist/lib/neutral/chunk-4RJALG6K.mjs.map +7 -0
- package/dist/lib/neutral/chunk-B4FVQEHV.mjs +8 -0
- package/dist/lib/neutral/chunk-B4FVQEHV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-BDRB6ZX2.mjs +52 -0
- package/dist/lib/neutral/chunk-BDRB6ZX2.mjs.map +7 -0
- package/dist/lib/{browser/chunk-4N5TLXEJ.mjs → neutral/chunk-BUKQITZT.mjs} +29 -29
- package/dist/lib/neutral/chunk-BUKQITZT.mjs.map +7 -0
- package/dist/lib/neutral/chunk-D7DFASAE.mjs +52 -0
- package/dist/lib/neutral/chunk-D7DFASAE.mjs.map +7 -0
- package/dist/lib/neutral/chunk-MI6X5CTJ.mjs +336 -0
- package/dist/lib/neutral/chunk-MI6X5CTJ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-P2F3STZN.mjs +8 -0
- package/dist/lib/neutral/chunk-P2F3STZN.mjs.map +7 -0
- package/dist/lib/neutral/chunk-PDB6UOSB.mjs +125 -0
- package/dist/lib/neutral/chunk-PDB6UOSB.mjs.map +7 -0
- package/dist/lib/{browser/chunk-WYR4QHPE.mjs → neutral/chunk-UYR3YH4Q.mjs} +3 -3
- package/dist/lib/{browser/chunk-WYR4QHPE.mjs.map → neutral/chunk-UYR3YH4Q.mjs.map} +3 -3
- package/dist/lib/{browser/compiler-VPUVTFQD.mjs → neutral/compiler-SMVIP5UN.mjs} +27 -87
- package/dist/lib/neutral/compiler-SMVIP5UN.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +719 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +17 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/create-OZRIZ7RN.mjs +44 -0
- package/dist/lib/neutral/create-OZRIZ7RN.mjs.map +7 -0
- package/dist/lib/neutral/create-object-F2NWICFV.mjs +44 -0
- package/dist/lib/neutral/create-object-F2NWICFV.mjs.map +7 -0
- package/dist/lib/neutral/create-script-VBA3SLSU.mjs +45 -0
- package/dist/lib/neutral/create-script-VBA3SLSU.mjs.map +7 -0
- package/dist/lib/neutral/delete-PAUWA2QM.mjs +21 -0
- package/dist/lib/neutral/delete-PAUWA2QM.mjs.map +7 -0
- package/dist/lib/neutral/deploy-CXVW54JJ.mjs +62 -0
- package/dist/lib/neutral/deploy-CXVW54JJ.mjs.map +7 -0
- package/dist/lib/{browser/chunk-WWCDIB6Z.mjs → neutral/hooks/index.mjs} +110 -298
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +41 -0
- package/dist/lib/neutral/inspect-invocations-LEOEP5I2.mjs +59 -0
- package/dist/lib/neutral/inspect-invocations-LEOEP5I2.mjs.map +7 -0
- package/dist/lib/neutral/install-function-5N24Q45W.mjs +51 -0
- package/dist/lib/neutral/install-function-5N24Q45W.mjs.map +7 -0
- package/dist/lib/neutral/invoke-5QVEZ3X5.mjs +33 -0
- package/dist/lib/neutral/invoke-5QVEZ3X5.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +10 -0
- package/dist/lib/neutral/operation-handler-OTCWYDFI.mjs +18 -0
- package/dist/lib/neutral/operation-handler-OTCWYDFI.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/query-deployed-functions-FVD7NYPA.mjs +30 -0
- package/dist/lib/neutral/query-deployed-functions-FVD7NYPA.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-JH2AOK7V.mjs +117 -0
- package/dist/lib/neutral/react-surface-JH2AOK7V.mjs.map +7 -0
- package/dist/lib/neutral/read-FFOSK6A3.mjs +26 -0
- package/dist/lib/neutral/read-FFOSK6A3.mjs.map +7 -0
- package/dist/lib/{browser/settings-5SF77MRH.mjs → neutral/settings-VJBW4OMK.mjs} +6 -12
- package/dist/lib/neutral/settings-VJBW4OMK.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/templates/index.mjs +1 -1
- package/dist/lib/neutral/translations.mjs +104 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +17 -0
- package/dist/lib/neutral/update-PJS5GG3Y.mjs +63 -0
- package/dist/lib/neutral/update-PJS5GG3Y.mjs.map +7 -0
- package/dist/types/src/ScriptPlugin.d.ts +1 -0
- package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
- package/dist/types/src/ScriptPlugin.node.d.ts +4 -0
- package/dist/types/src/ScriptPlugin.node.d.ts.map +1 -0
- package/dist/types/src/ScriptPlugin.test.d.ts +2 -0
- package/dist/types/src/ScriptPlugin.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/create.d.ts +11 -0
- package/dist/types/src/blueprints/functions/create.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/definitions.d.ts +141 -0
- package/dist/types/src/blueprints/functions/definitions.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/delete.d.ts +18 -0
- package/dist/types/src/blueprints/functions/delete.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/deploy.d.ts +22 -0
- package/dist/types/src/blueprints/functions/deploy.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/index.d.ts +4 -0
- package/dist/types/src/blueprints/functions/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/inspect-invocations.d.ts +29 -0
- package/dist/types/src/blueprints/functions/inspect-invocations.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/install-function.d.ts +11 -0
- package/dist/types/src/blueprints/functions/install-function.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/invoke.d.ts +22 -0
- package/dist/types/src/blueprints/functions/invoke.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts +13 -0
- package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/read.d.ts +22 -0
- package/dist/types/src/blueprints/functions/read.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/update.d.ts +27 -0
- package/dist/types/src/blueprints/functions/update.d.ts.map +1 -0
- package/dist/types/src/blueprints/index.d.ts +1 -1
- package/dist/types/src/blueprints/index.d.ts.map +1 -1
- package/dist/types/src/blueprints/script-blueprint.d.ts +3 -21
- package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/{artifact-definition/artifact-definition.d.ts → artifact-definition.d.ts} +1 -1
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/compiler.d.ts +6 -0
- package/dist/types/src/capabilities/compiler.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.d.ts +16 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +19 -6
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/node.d.ts +18 -0
- package/dist/types/src/capabilities/node.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +5 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +7 -0
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/compiler/compiler.d.ts.map +1 -1
- package/dist/types/src/components/{FrameContainer/FrameContainer.d.ts → FramePanel/FramePanel.d.ts} +3 -3
- package/dist/types/src/components/FramePanel/FramePanel.d.ts.map +1 -0
- package/dist/types/src/components/FramePanel/index.d.ts +2 -0
- package/dist/types/src/components/FramePanel/index.d.ts.map +1 -0
- package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +1 -1
- package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
- package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +1 -1
- package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -1
- package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +4 -2
- package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
- package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +219 -228
- package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
- package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -1
- package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts +8 -0
- package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
- package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts +241 -0
- package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ScriptPluginSettings/index.d.ts +2 -0
- package/dist/types/src/components/ScriptPluginSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +7 -5
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +219 -228
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/TestPanel/TestPanel.d.ts +4 -2
- package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
- package/dist/types/src/components/TestPanel/index.d.ts +0 -1
- package/dist/types/src/components/TestPanel/index.d.ts.map +1 -1
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +5 -2
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +3 -1
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +6 -5
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/constants.d.ts +2 -0
- package/dist/types/src/constants.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.d.ts +0 -2
- package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
- package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts +240 -0
- package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/DeploymentDialog/index.d.ts +2 -0
- package/dist/types/src/containers/DeploymentDialog/index.d.ts.map +1 -0
- package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts +7 -0
- package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts.map +1 -0
- package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/NotebookContainer/index.d.ts +2 -0
- package/dist/types/src/containers/NotebookContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts +10 -0
- package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptContainer/ScriptContainer.stories.d.ts +242 -0
- package/dist/types/src/containers/ScriptContainer/ScriptContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptContainer/index.d.ts +2 -0
- package/dist/types/src/containers/ScriptContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts +7 -0
- package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts +7 -0
- package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts +7 -0
- package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +6 -0
- package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts +242 -0
- package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptProperties/index.d.ts +2 -0
- package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
- package/dist/types/src/{components/TestPanel → containers/TestContainer}/TestContainer.d.ts +1 -1
- package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
- package/dist/types/src/containers/TestContainer/index.d.ts +2 -0
- package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +7 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/hooks/deploy.d.ts +18 -5
- package/dist/types/src/hooks/deploy.d.ts.map +1 -1
- package/dist/types/src/hooks/format.d.ts +2 -1
- package/dist/types/src/hooks/format.d.ts.map +1 -1
- package/dist/types/src/hooks/template.d.ts +2 -1
- package/dist/types/src/hooks/template.d.ts.map +1 -1
- package/dist/types/src/hooks/useCompiler.d.ts.map +1 -1
- package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
- package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/notebook/compute-graph.d.ts +1 -1
- package/dist/types/src/notebook/compute-graph.d.ts.map +1 -1
- package/dist/types/src/notebook/eval.d.ts.map +1 -1
- package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -1
- package/dist/types/src/operations/access-token-created.d.ts +5 -0
- package/dist/types/src/operations/access-token-created.d.ts.map +1 -0
- package/dist/types/src/operations/create-script.d.ts +5 -0
- package/dist/types/src/operations/create-script.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +3 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/templates/anthropic.d.ts +4 -5
- package/dist/types/src/templates/anthropic.d.ts.map +1 -1
- package/dist/types/src/templates/chat.d.ts.map +1 -1
- package/dist/types/src/templates/chess-bot.d.ts +8 -12
- package/dist/types/src/templates/chess-bot.d.ts.map +1 -1
- package/dist/types/src/templates/commentary.d.ts +8 -11
- package/dist/types/src/templates/commentary.d.ts.map +1 -1
- 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/email.d.ts.map +1 -1
- package/dist/types/src/templates/forex-effect.d.ts +3 -2
- package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
- package/dist/types/src/templates/forex.d.ts +3 -2
- 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/templates/index.d.ts +29 -29
- package/dist/types/src/templates/index.d.ts.map +1 -1
- package/dist/types/src/templates/ping.d.ts +2 -1
- package/dist/types/src/templates/ping.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +2 -1
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-notebook.d.ts +3 -0
- package/dist/types/src/testing/test-notebook.d.ts.map +1 -0
- package/dist/types/src/testing/test-script.d.ts +7 -0
- package/dist/types/src/testing/test-script.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +222 -92
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Notebook.d.ts +47 -27
- package/dist/types/src/types/Notebook.d.ts.map +1 -1
- package/dist/types/src/types/ScriptCapabilities.d.ts +6 -0
- package/dist/types/src/types/ScriptCapabilities.d.ts.map +1 -0
- package/dist/types/src/types/ScriptEvents.d.ts +3 -0
- package/dist/types/src/types/ScriptEvents.d.ts.map +1 -0
- package/dist/types/src/types/ScriptOperation.d.ts +29 -0
- package/dist/types/src/types/ScriptOperation.d.ts.map +1 -0
- package/dist/types/src/types/Settings.d.ts +7 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +4 -4
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +1 -5
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util/deploy.d.ts +2 -2
- package/dist/types/src/util/deploy.d.ts.map +1 -1
- package/dist/types/src/util/functions.d.ts +2 -2
- package/dist/types/src/util/functions.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +154 -105
- package/src/ScriptPlugin.node.ts +21 -0
- package/src/ScriptPlugin.test.ts +31 -0
- package/src/ScriptPlugin.tsx +11 -43
- package/src/blueprints/functions/create.ts +47 -0
- package/src/blueprints/functions/definitions.ts +323 -0
- package/src/blueprints/functions/delete.ts +23 -0
- package/src/blueprints/functions/deploy.ts +70 -0
- package/src/blueprints/functions/index.ts +19 -0
- package/src/blueprints/functions/inspect-invocations.ts +56 -0
- package/src/blueprints/functions/install-function.ts +56 -0
- package/src/blueprints/functions/invoke.ts +35 -0
- package/src/blueprints/functions/query-deployed-functions.ts +31 -0
- package/src/blueprints/functions/read.ts +29 -0
- package/src/blueprints/functions/update.ts +68 -0
- package/src/blueprints/index.ts +1 -1
- package/src/blueprints/script-blueprint.ts +40 -9
- package/src/capabilities/app-graph-builder.ts +47 -0
- package/src/capabilities/{artifact-definition/artifact-definition.ts → artifact-definition.ts} +4 -5
- package/src/capabilities/blueprint-definition.ts +19 -0
- package/src/capabilities/{compiler/compiler.ts → compiler.ts} +17 -9
- package/src/capabilities/create-object.ts +48 -0
- package/src/capabilities/index.ts +14 -6
- package/src/capabilities/node.ts +16 -0
- package/src/capabilities/operation-handler.ts +21 -0
- package/src/capabilities/react-surface.tsx +130 -0
- package/src/capabilities/{settings/settings.ts → settings.ts} +4 -4
- package/src/compiler/compiler.ts +8 -1
- package/src/components/{FrameContainer/FrameContainer.tsx → FramePanel/FramePanel.tsx} +4 -5
- package/src/components/{FrameContainer → FramePanel}/index.ts +1 -1
- package/src/components/NotebookStack/NotebookCell.tsx +30 -21
- package/src/components/NotebookStack/NotebookMenu.tsx +7 -7
- package/src/components/NotebookStack/NotebookStack.stories.tsx +9 -11
- package/src/components/NotebookStack/NotebookStack.tsx +27 -16
- package/src/components/QueryEditor/QueryEditor.stories.tsx +18 -22
- package/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.tsx +32 -0
- package/src/components/ScriptPluginSettings/ScriptPluginSettings.tsx +42 -0
- package/src/components/ScriptPluginSettings/index.ts +5 -0
- package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +8 -9
- package/src/components/ScriptToolbar/ScriptToolbar.tsx +24 -26
- package/src/components/TestPanel/TestPanel.tsx +95 -181
- package/src/components/TestPanel/index.ts +0 -1
- package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +17 -15
- package/src/components/TypescriptEditor/TypescriptEditor.tsx +26 -19
- package/src/components/index.ts +6 -7
- package/src/constants.ts +7 -0
- package/src/{components → containers}/DeploymentDialog/DeploymentDialog.stories.tsx +8 -7
- package/src/{components → containers}/DeploymentDialog/DeploymentDialog.tsx +27 -31
- package/src/containers/DeploymentDialog/index.ts +5 -0
- package/src/{components → containers/NotebookContainer}/NotebookContainer.stories.tsx +22 -24
- package/src/{components → containers/NotebookContainer}/NotebookContainer.tsx +60 -77
- package/src/containers/NotebookContainer/index.ts +5 -0
- package/src/containers/ScriptContainer/ScriptContainer.stories.tsx +106 -0
- package/src/{components → containers/ScriptContainer}/ScriptContainer.tsx +28 -27
- package/src/containers/ScriptContainer/index.ts +5 -0
- package/src/containers/ScriptProperties/BlueprintEditor.tsx +101 -0
- package/src/containers/ScriptProperties/FunctionBinding.tsx +83 -0
- package/src/containers/ScriptProperties/FunctionPublishing.tsx +121 -0
- package/src/containers/ScriptProperties/ScriptProperties.stories.tsx +75 -0
- package/src/containers/ScriptProperties/ScriptProperties.tsx +24 -0
- package/src/containers/ScriptProperties/index.ts +5 -0
- package/src/containers/TestContainer/TestContainer.tsx +44 -0
- package/src/containers/TestContainer/index.ts +5 -0
- package/src/containers/index.ts +11 -0
- package/src/e2e/ai.test.ts +7 -6
- package/src/e2e/deploy.test.ts +7 -5
- package/src/hooks/deploy.ts +15 -13
- package/src/hooks/format.ts +6 -5
- package/src/hooks/template.ts +9 -8
- package/src/hooks/useCompiler.ts +3 -2
- package/src/hooks/useCreateAndDeployScriptTemplates.ts +4 -3
- package/src/index.ts +2 -4
- package/src/meta.ts +2 -2
- package/src/notebook/compute-graph.test.ts +7 -7
- package/src/notebook/compute-graph.ts +1 -1
- package/src/notebook/vfs-parser.ts +10 -3
- package/src/operations/access-token-created.ts +37 -0
- package/src/operations/create-script.ts +46 -0
- package/src/operations/index.ts +10 -0
- package/src/plugin.ts +11 -0
- package/src/templates/anthropic.ts +19 -12
- package/src/templates/chat.ts +1 -1
- package/src/templates/chess-bot.ts +42 -37
- package/src/templates/commentary.ts +182 -163
- package/src/templates/data-generator.ts +1 -1
- package/src/templates/discord.ts +3 -3
- package/src/templates/forex-effect.ts +30 -19
- package/src/templates/forex.ts +24 -15
- package/src/templates/gmail.ts +4 -4
- package/src/templates/index.ts +18 -18
- package/src/templates/ping.ts +16 -8
- package/src/testing/index.ts +2 -1
- package/src/testing/simulator.test.ts +3 -4
- package/src/testing/{data.ts → test-notebook.ts} +11 -12
- package/src/testing/test-script.ts +29 -0
- package/src/translations.ts +86 -87
- package/src/types/Notebook.ts +11 -7
- package/src/types/ScriptCapabilities.ts +18 -0
- package/src/types/ScriptEvents.ts +11 -0
- package/src/types/ScriptOperation.ts +42 -0
- package/src/types/Settings.ts +20 -0
- package/src/types/index.ts +5 -4
- package/src/types/types.ts +1 -11
- package/src/util/deploy.ts +13 -11
- package/src/util/functions.ts +9 -8
- package/dist/lib/browser/DeploymentDialog-XUAFCNI7.mjs +0 -14
- package/dist/lib/browser/NotebookContainer-UQ4I24R6.mjs.map +0 -7
- package/dist/lib/browser/ScriptContainer-NB76645V.mjs +0 -149
- package/dist/lib/browser/ScriptContainer-NB76645V.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs +0 -69
- package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs.map +0 -7
- package/dist/lib/browser/blueprint-definition-5RFKE7VK.mjs +0 -18
- package/dist/lib/browser/blueprint-definition-5RFKE7VK.mjs.map +0 -7
- package/dist/lib/browser/blueprints/index.mjs +0 -8
- package/dist/lib/browser/chunk-3BSF5BIA.mjs +0 -113
- package/dist/lib/browser/chunk-3BSF5BIA.mjs.map +0 -7
- package/dist/lib/browser/chunk-4N5TLXEJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-BKGEAUUH.mjs +0 -270
- package/dist/lib/browser/chunk-BKGEAUUH.mjs.map +0 -7
- package/dist/lib/browser/chunk-BU6CGVU2.mjs.map +0 -7
- package/dist/lib/browser/chunk-F3QKSKSF.mjs +0 -35
- package/dist/lib/browser/chunk-F3QKSKSF.mjs.map +0 -7
- package/dist/lib/browser/chunk-I7CSE6T3.mjs +0 -110
- package/dist/lib/browser/chunk-I7CSE6T3.mjs.map +0 -7
- package/dist/lib/browser/chunk-LYMPME7J.mjs +0 -609
- package/dist/lib/browser/chunk-LYMPME7J.mjs.map +0 -7
- package/dist/lib/browser/chunk-WWCDIB6Z.mjs.map +0 -7
- package/dist/lib/browser/compiler-VPUVTFQD.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -245
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/operation-resolver-NYDY7GDT.mjs +0 -83
- package/dist/lib/browser/operation-resolver-NYDY7GDT.mjs.map +0 -7
- package/dist/lib/browser/react-surface-FYOQSC6S.mjs +0 -140
- package/dist/lib/browser/react-surface-FYOQSC6S.mjs.map +0 -7
- package/dist/lib/browser/settings-5SF77MRH.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -18
- package/dist/lib/node-esm/DeploymentDialog-GGWDQMEB.mjs +0 -15
- package/dist/lib/node-esm/DeploymentDialog-GGWDQMEB.mjs.map +0 -7
- package/dist/lib/node-esm/NotebookContainer-DQGZ6QHI.mjs +0 -846
- package/dist/lib/node-esm/NotebookContainer-DQGZ6QHI.mjs.map +0 -7
- package/dist/lib/node-esm/ScriptContainer-PCNJFUWX.mjs +0 -150
- package/dist/lib/node-esm/ScriptContainer-PCNJFUWX.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs +0 -70
- package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs.map +0 -7
- package/dist/lib/node-esm/blueprint-definition-EYL5GNDC.mjs +0 -19
- package/dist/lib/node-esm/blueprint-definition-EYL5GNDC.mjs.map +0 -7
- package/dist/lib/node-esm/blueprints/index.mjs +0 -9
- package/dist/lib/node-esm/chunk-3CKQUF55.mjs +0 -610
- package/dist/lib/node-esm/chunk-3CKQUF55.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3QBXN6QC.mjs +0 -271
- package/dist/lib/node-esm/chunk-3QBXN6QC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5HSJPAK7.mjs +0 -33
- package/dist/lib/node-esm/chunk-5HSJPAK7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ECRSTVR6.mjs +0 -558
- package/dist/lib/node-esm/chunk-ECRSTVR6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KRVL7UYI.mjs +0 -114
- package/dist/lib/node-esm/chunk-KRVL7UYI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SLU3KRV3.mjs +0 -112
- package/dist/lib/node-esm/chunk-SLU3KRV3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-U6PXM2HT.mjs +0 -138
- package/dist/lib/node-esm/chunk-U6PXM2HT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-V37R7KB5.mjs +0 -107
- package/dist/lib/node-esm/chunk-V37R7KB5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Y3G5NCTP.mjs +0 -36
- package/dist/lib/node-esm/chunk-Y3G5NCTP.mjs.map +0 -7
- package/dist/lib/node-esm/compiler-WUOSY6MS.mjs +0 -162
- package/dist/lib/node-esm/compiler-WUOSY6MS.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -246
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/operation-resolver-AJNJXGCE.mjs +0 -84
- package/dist/lib/node-esm/operation-resolver-AJNJXGCE.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-LREMOVNJ.mjs +0 -141
- package/dist/lib/node-esm/react-surface-LREMOVNJ.mjs.map +0 -7
- package/dist/lib/node-esm/settings-ILI762CY.mjs +0 -37
- package/dist/lib/node-esm/settings-ILI762CY.mjs.map +0 -7
- package/dist/lib/node-esm/templates/index.mjs +0 -11
- package/dist/lib/node-esm/types/index.mjs +0 -19
- package/dist/lib/node-esm/types/index.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +0 -6
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/artifact-definition/index.d.ts +0 -3
- package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -10
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/compiler/compiler.d.ts +0 -6
- package/dist/types/src/capabilities/compiler/compiler.d.ts.map +0 -1
- package/dist/types/src/capabilities/compiler/index.d.ts +0 -3
- package/dist/types/src/capabilities/compiler/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -5
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/index.d.ts +0 -7
- package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/settings.d.ts +0 -10
- package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +0 -249
- package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
- package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
- package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +0 -1
- package/dist/types/src/components/FrameContainer/frame.d.ts +0 -2
- package/dist/types/src/components/FrameContainer/frame.d.ts.map +0 -1
- package/dist/types/src/components/FrameContainer/index.d.ts +0 -2
- package/dist/types/src/components/FrameContainer/index.d.ts.map +0 -1
- package/dist/types/src/components/NotebookContainer.d.ts +0 -8
- package/dist/types/src/components/NotebookContainer.d.ts.map +0 -1
- package/dist/types/src/components/NotebookContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/ScriptContainer.d.ts +0 -11
- package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
- package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +0 -8
- package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +0 -8
- package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
- package/dist/types/src/components/Settings/index.d.ts +0 -3
- package/dist/types/src/components/Settings/index.d.ts.map +0 -1
- package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
- package/dist/types/src/testing/data.d.ts +0 -3
- package/dist/types/src/testing/data.d.ts.map +0 -1
- package/dist/types/src/types/actions.d.ts +0 -40
- package/dist/types/src/types/actions.d.ts.map +0 -1
- package/dist/types/src/types/capabilities.d.ts +0 -12
- package/dist/types/src/types/capabilities.d.ts.map +0 -1
- package/dist/types/src/types/events.d.ts +0 -5
- package/dist/types/src/types/events.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -56
- package/src/capabilities/app-graph-builder/index.ts +0 -7
- package/src/capabilities/artifact-definition/index.ts +0 -7
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +0 -24
- package/src/capabilities/blueprint-definition/index.ts +0 -7
- package/src/capabilities/compiler/index.ts +0 -7
- package/src/capabilities/operation-resolver/index.ts +0 -7
- package/src/capabilities/operation-resolver/operation-resolver.ts +0 -75
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/capabilities/react-surface/react-surface.tsx +0 -119
- package/src/capabilities/settings/index.ts +0 -7
- package/src/components/DeploymentDialog/index.ts +0 -9
- package/src/components/FrameContainer/frame.html +0 -25
- package/src/components/FrameContainer/frame.tsx +0 -51
- package/src/components/Settings/ScriptObjectSettings.tsx +0 -309
- package/src/components/Settings/ScriptPluginSettings.tsx +0 -66
- package/src/components/Settings/index.ts +0 -6
- package/src/components/TestPanel/TestContainer.tsx +0 -27
- package/src/types/actions.ts +0 -45
- package/src/types/capabilities.ts +0 -17
- package/src/types/events.ts +0 -11
- /package/dist/lib/{browser → neutral}/blueprints/index.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
- /package/dist/lib/{browser/templates → neutral}/index.mjs.map +0 -0
- /package/dist/lib/{browser/DeploymentDialog-XUAFCNI7.mjs.map → neutral/meta.mjs.map} +0 -0
- /package/dist/lib/{browser/types → neutral/operations}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/blueprints → neutral/templates}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/templates → neutral/types}/index.mjs.map +0 -0
- /package/dist/types/src/{components → containers/NotebookContainer}/NotebookContainer.stories.d.ts +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/index.ts", "../../../../src/components/FramePanel/FramePanel.tsx", "../../../../src/components/NotebookStack/NotebookMenu.tsx", "../../../../src/components/NotebookStack/NotebookStack.tsx", "../../../../src/components/NotebookStack/NotebookCell.tsx", "../../../../src/components/TypescriptEditor/TypescriptEditor.tsx", "../../../../src/components/QueryEditor/QueryEditor.tsx", "../../../../src/components/ScriptToolbar/ScriptToolbar.tsx", "../../../../src/components/TestPanel/TestPanel.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport * from './FramePanel';\nexport * from './NotebookStack';\nexport * from './QueryEditor';\nexport * from './ScriptToolbar';\nexport * from './TestPanel';\nexport * from './TypescriptEditor';\n\nexport const ScriptPluginSettings: ComponentType<any> = lazy(() => import('./ScriptPluginSettings'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useEffect, useRef } from 'react';\n\nimport { clientServiceBundle } from '@dxos/client-protocol';\nimport { type BundleResult } from '@dxos/functions-runtime/bundler';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { createProtoRpcPeer } from '@dxos/rpc';\nimport { createIFramePort } from '@dxos/rpc-tunnel';\nimport { mx } from '@dxos/ui-theme';\n\nexport type FramePanelProps = {\n containerUrl: string;\n result: BundleResult;\n debug?: boolean;\n};\n\n/**\n * IFrame container for the compiled script.\n */\nexport const FramePanel = ({ containerUrl, result, debug = true }: FramePanelProps) => {\n const client = useClient();\n const iframeRef = useRef<HTMLIFrameElement>(null);\n useEffect(() => {\n if (iframeRef.current) {\n // Connect iframe to client.\n const rpc = createProtoRpcPeer({\n exposed: clientServiceBundle,\n handlers: (client as any)._services.services, // TODO(burdon): Remove cast?\n port: createIFramePort({\n channel: 'frame',\n iframe: iframeRef.current,\n origin: '*',\n }),\n });\n\n rpc.open().catch((e) => log.catch(e));\n return () => {\n rpc.close().catch((e) => log.catch(e));\n };\n }\n }, [iframeRef]);\n\n // Encodes compiled code via URL.\n invariant(result.sourceHash, 'Source hash is required.');\n const sourceHash = Buffer.from(result.sourceHash).toString('hex');\n const src =\n 'bundle' in result\n ? `${containerUrl}?ts=${sourceHash}#code=${encodeURIComponent(new TextDecoder().decode(Object.values(result.bundle as any)[0] as Uint8Array))}`\n : undefined;\n\n return (\n <>\n <iframe ref={iframeRef} sandbox='allow-scripts' src={src} style={{ width: '100%', height: '100%' }} />\n\n {debug && (\n <div className='relative'>\n <div\n className={mx(\n 'flex absolute right-2 bottom-2 w-[30rem] h-[200px] bg-base-surface ring rounded-sm',\n 'z-20 overflow-x-hidden overflow-y-auto',\n )}\n >\n <pre className='text-xs whitespace-break-spaces break-all p-2'>\n {JSON.stringify(\n {\n timestamp: result.timestamp,\n sourceHash,\n error: 'error' in result ? result.error : undefined,\n src,\n },\n undefined,\n 2,\n )}\n </pre>\n </div>\n </div>\n )}\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DropdownMenu, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { type Notebook } from '#types';\n\nexport type NotebookMenuProps = {\n cell?: Notebook.Cell;\n onCellInsert?: (type: Notebook.CellType, after: string | undefined) => void;\n onCellDelete?: (id: string) => void;\n};\n\n// TODO(burdon): Better way to organize menu?\nexport const NotebookMenu = ({ cell, onCellInsert, onCellDelete }: NotebookMenuProps) => {\n const { t } = useTranslation(meta.id);\n return (\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n <DropdownMenu.Item onClick={() => onCellInsert?.('script', cell?.id)}>\n {t('notebook-cell-insert-script.label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('prompt', cell?.id)}>\n {t('notebook-cell-insert-prompt.label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('query', cell?.id)}>\n {t('notebook-cell-insert-query.label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('markdown', cell?.id)}>\n {t('notebook-cell-insert-markdown.label')}\n </DropdownMenu.Item>\n {cell && onCellDelete && (\n <DropdownMenu.Item onClick={() => onCellDelete?.(cell.id)}>\n {t('notebook-cell-delete.label')}\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DropdownMenu, IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { Stack, StackItem, type StackProps } from '@dxos/react-ui-stack';\nimport { composable, composableProps } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\nimport { type Notebook } from '#types';\n\nimport { type TypescriptEditorProps } from '../TypescriptEditor';\nimport { NotebookCell, type NotebookCellProps } from './NotebookCell';\nimport { NotebookMenu } from './NotebookMenu';\n\nconst minSectionHeight = 'min-h-[16rem]';\n\nexport type NotebookStackProps = ThemedClassName<\n {\n notebook?: Notebook.Notebook;\n onRearrange?: StackProps['onRearrange'];\n } & (Pick<NotebookSectionProps, 'db' | 'graph' | 'promptResults' | 'onCellInsert' | 'onCellDelete'> &\n Pick<TypescriptEditorProps, 'env'>)\n>;\n\n// TODO(burdon): Option for narrow rail (with compact buttons that align with first button in toolbar).\nexport const NotebookStack = composable<HTMLDivElement, NotebookStackProps>(\n ({ notebook, onRearrange, db, graph, promptResults, onCellInsert, onCellDelete, env, ...props }, forwardedRef) => {\n const sectionProps = { db, graph, promptResults, onCellInsert, onCellDelete, env };\n return (\n <Stack\n {...composableProps(props)}\n orientation='vertical'\n size='contain'\n rail\n onRearrange={onRearrange}\n ref={forwardedRef}\n >\n {notebook?.cells.map((cell, i) => (\n <NotebookSection key={i} cell={cell} {...sectionProps} />\n ))}\n </Stack>\n );\n },\n);\n\ntype NotebookSectionProps = NotebookCellProps;\n\nconst NotebookSection = ({\n cell,\n db,\n env,\n promptResults,\n onCellInsert,\n onCellDelete,\n ...props\n}: NotebookSectionProps) => {\n const { t } = useTranslation(meta.id);\n const resizable = cell.type === 'query';\n\n return (\n <StackItem.Root role='section' item={cell} draggable classNames={resizable && minSectionHeight}>\n <StackItem.Heading classNames='h-full p-1 justify-between dx-attention-surface'>\n <StackItem.DragHandle asChild>\n <IconButton variant='ghost' icon='ph--dots-six-vertical--regular' iconOnly label='Drag handle' />\n </StackItem.DragHandle>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--dots-three--regular'\n iconOnly\n label={t('notebook-cell-insert.label')}\n />\n </DropdownMenu.Trigger>\n <NotebookMenu cell={cell} onCellInsert={onCellInsert} onCellDelete={onCellDelete} />\n </DropdownMenu.Root>\n {resizable && <StackItem.ResizeHandle />}\n </StackItem.Heading>\n\n {/* TODO(burdon): Move drag preview to outer stack (uniformly). */}\n <StackItem.DragPreview>\n {({ item: cell }) => (\n <StackItem.Content classNames='overflow-visible bg-group-surface border border-subdued-separator'>\n <NotebookCell db={db} cell={cell} env={env} dragging />\n </StackItem.Content>\n )}\n </StackItem.DragPreview>\n\n <StackItem.Content classNames='overflow-visible'>\n <NotebookCell db={db} cell={cell} env={env} promptResults={promptResults} {...props} />\n </StackItem.Content>\n </StackItem.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Database, Obj } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { invariant } from '@dxos/invariant';\nimport { TemplateEditor } from '@dxos/plugin-assistant/components';\nimport { useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';\nimport { Editor, type EditorViewProps } from '@dxos/react-ui-editor';\nimport {\n type BasicExtensionsOptions,\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n} from '@dxos/ui-editor';\nimport { mx } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { type Notebook } from '#types';\n\nimport { type ComputeGraph } from '../../notebook';\nimport { TypescriptEditor, type TypescriptEditorProps } from '../TypescriptEditor';\nimport { type NotebookMenuProps } from './NotebookMenu';\n\nconst editorStyles = 'p-2 ps-3';\nconst valueStyles = 'p-1 ps-3';\n\nexport type NotebookCellProps = {\n db?: Database.Database;\n graph?: ComputeGraph;\n dragging?: boolean;\n cell: Notebook.Cell;\n promptResults?: Record<string, string>;\n} & (Pick<NotebookMenuProps, 'onCellInsert' | 'onCellDelete'> & Pick<TypescriptEditorProps, 'env'>);\n\n// TODO(burdon): Show evaluation errors.\nexport const NotebookCell = ({ db, graph, dragging, cell, promptResults, env }: NotebookCellProps) => {\n const { t } = useTranslation(meta.id);\n\n const extensions = useMemo(() => {\n return cell.source?.target\n ? [\n createDataExtensions({\n id: cell.id,\n text: createDocAccessor(cell.source.target, ['content']),\n }),\n ].filter(isNonNullable)\n : [];\n }, [cell.source?.target]);\n\n const explorerGraph = cell.graph?.target;\n\n const handleQueryChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(\n (value: string) => {\n invariant(cell.source?.target);\n Obj.update(cell.source.target, (obj) => {\n obj.content = value;\n });\n },\n [cell],\n );\n\n switch (cell.type) {\n case 'markdown':\n if (!cell.source?.target) {\n return null;\n }\n\n return (\n <NotebookTextEditor\n id={cell.id}\n classNames={editorStyles}\n initialValue={cell.source.target.content}\n extensions={extensions}\n />\n );\n\n case 'script':\n if (!cell.source?.target) {\n return null;\n }\n\n return (\n <>\n <TypescriptEditor\n id={cell.id}\n role='section'\n classNames={editorStyles}\n initialValue={cell.source.target.content}\n extensions={extensions}\n env={env}\n options={{\n placeholder: t('notebook-cell.placeholder'),\n highlightActiveLine: false,\n lineNumbers: false,\n }}\n />\n <NotebookCellValue cell={cell} graph={graph} />\n </>\n );\n\n case 'query':\n if (!cell.source?.target) {\n return null;\n }\n\n // TODO(burdon): Remove app-framework deps (via render prop).\n return (\n <div className={mx('h-full overflow-hidden grid', explorerGraph && !dragging && 'grid-rows-[min-content_1fr]')}>\n <QueryEditor\n id={cell.id}\n classNames={[editorStyles, 'border-b border-subdued-separator']}\n db={db}\n value={cell.source.target.content}\n onChange={handleQueryChange}\n />\n {explorerGraph && !dragging && (\n <Surface.Surface\n type={AppSurface.Section}\n limit={1}\n data={{ subject: explorerGraph, attendableId: cell.id }}\n />\n )}\n </div>\n );\n\n // TODO(burdon): Use streaming response from Chat.\n case 'prompt':\n if (!cell.prompt?.target) {\n return null;\n }\n\n return (\n <>\n <TemplateEditor\n id={cell.id}\n template={cell.prompt.target.instructions}\n lineNumbers={false}\n classNames={editorStyles}\n />\n <NotebookPromptResult cell={cell} promptResults={promptResults} />\n </>\n );\n\n default:\n return null;\n }\n};\n\nconst NotebookCellValue = ({ cell, graph }: NotebookCellProps) => {\n const name = graph?.getExpressions()[cell.id]?.name;\n const value = graph?.getValue(cell.id);\n if (value == null) {\n return null;\n }\n\n return (\n <div\n className={mx(\n 'flex w-full bg-group-surface border-y border-subdued-separator text-description font-mono',\n valueStyles,\n )}\n >\n {name && (\n <>\n <span className='text-success-text'>{name}</span>\n <span className='text-description'> = </span>\n </>\n )}\n <span>{value}</span>\n </div>\n );\n};\n\nconst NotebookPromptResult = ({ cell, promptResults }: NotebookCellProps) => {\n if (!cell.prompt) {\n return null;\n }\n\n const value = promptResults?.[cell.prompt.dxn.toString()];\n if (value == null) {\n return null;\n }\n\n return (\n <div className={mx('flex w-full bg-group-surface text-description border-y border-subdued-separator', valueStyles)}>\n <NotebookTextEditor readOnly value={value} />\n </div>\n );\n};\n\nconst NotebookTextEditor = ({\n extensions: extensionsProp,\n readOnly,\n ...props\n}: EditorViewProps & Pick<BasicExtensionsOptions, 'readOnly'>) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const extensions = useMemo(() => {\n return [\n createBasicExtensions({\n placeholder: t('notebook-markdown.placeholder'),\n readOnly,\n }),\n createThemeExtensions({ themeMode, syntaxHighlighting: true }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n extensionsProp,\n ].filter(isNonNullable);\n }, [extensionsProp]);\n\n return (\n <Editor.Root>\n <Editor.View {...props} extensions={extensions} selectionEnd />\n </Editor.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { autocompletion, completionKeymap } from '@codemirror/autocomplete';\nimport { javascript } from '@codemirror/lang-javascript';\nimport { HighlightStyle } from '@codemirror/language';\nimport { lintKeymap } from '@codemirror/lint';\nimport { Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { tags } from '@lezer/highlight';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport { type VirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport { continueKeymap } from '@valtown/codemirror-continue';\nimport { type HoverInfo, tsAutocomplete, tsFacet, tsHover, tsLinter, tsSync } from '@valtown/codemirror-ts';\nimport React from 'react';\n\nimport { type ThemeMode, type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport { type UseTextEditorProps, useTextEditor } from '@dxos/react-ui-editor';\nimport { Domino } from '@dxos/ui';\nimport {\n type BasicExtensionsOptions,\n InputModeExtensions,\n createBasicExtensions,\n createThemeExtensions,\n defaultStyles,\n} from '@dxos/ui-editor';\nimport { type EditorInputMode } from '@dxos/ui-editor/types';\nimport { composable, composableProps } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nexport type TypescriptEditorProps = ThemedClassName<\n {\n id: string;\n role?: string;\n inputMode?: EditorInputMode;\n toolbar?: boolean;\n env?: VirtualTypeScriptEnvironment;\n options?: BasicExtensionsOptions;\n } & Pick<UseTextEditorProps, 'initialValue' | 'extensions' | 'scrollTo' | 'selection'>\n>;\n\nexport const TypescriptEditor = composable<HTMLDivElement, TypescriptEditorProps>(\n (\n {\n classNames,\n id,\n role = 'article',\n inputMode = 'vscode',\n env,\n options,\n initialValue,\n extensions,\n scrollTo,\n selection,\n ...props\n },\n forwardedRef,\n ) => {\n const { themeMode } = useThemeContext();\n const { parentRef, focusAttributes } = useTextEditor(\n () => ({\n id,\n initialValue,\n selection,\n scrollTo,\n extensions: [\n extensions,\n createBasicExtensions({\n highlightActiveLine: true,\n indentWithTab: true,\n lineNumbers: true,\n lineWrapping: false,\n scrollPastEnd: role !== 'section',\n search: true,\n ...options,\n }),\n createThemeExtensions({\n monospace: true,\n themeMode,\n syntaxHighlighting: true,\n }),\n\n InputModeExtensions[inputMode],\n javascript({ typescript: true }),\n autocompletion({ override: env ? [tsAutocomplete()] : undefined }),\n\n // Continues block comments when pressing Enter.\n Prec.high(keymap.of(continueKeymap)),\n keymap.of(completionKeymap),\n keymap.of(lintKeymap),\n\n // https://github.com/val-town/codemirror-ts\n env && [\n // TODO(burdon): Fix type.\n tsFacet.of({ env: env as any, path: `./src/${id}.ts` }),\n tsSync(),\n tsLinter(),\n tsHover({ renderTooltip: createTooltipRenderer(themeMode) }),\n ],\n ].filter(isNonNullable),\n }),\n [themeMode, id, extensions, inputMode, selection, scrollTo, env],\n );\n\n return (\n <div {...composableProps(props, { classNames, ...focusAttributes })} ref={composeRefs(parentRef, forwardedRef)} />\n );\n },\n);\n\n// TODO(burdon): Factor out (react-ui-editor).\nconst createTooltipRenderer = (themeMode: ThemeMode) => {\n const theme = HighlightStyle.define(themeMode === 'dark' ? defaultStyles.dark : defaultStyles.light);\n\n const classFromKind = (_kind: string) => {\n // E.g., localName, methodName, parameterName, etc.\n const kind = _kind.endsWith('Name') ? 'name' : _kind;\n const validTag = kind in tags;\n if (!validTag) {\n return '';\n }\n\n const tag = tags[kind as keyof typeof tags];\n if (typeof tag === 'function') {\n return '';\n }\n\n return theme.style([tag]) ?? '';\n };\n\n return (info: HoverInfo) => {\n const children =\n info.quickInfo?.displayParts?.map(({ kind, text }) =>\n Domino.of('span').classNames(classFromKind(kind)).text(text),\n ) ?? [];\n return {\n dom: Domino.of('div')\n .classNames('xs:max-w-80 max-w-lg p-1 bg-base-surface rounded-sm border border-separator')\n .append(...children).root,\n };\n };\n};\n\nexport default TypescriptEditor;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\nimport { ScriptTarget } from 'typescript';\n\nimport queryApi from '@dxos/echo-query/api.d.ts?raw';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { Compiler } from '../../compiler';\nimport { TypescriptEditor, type TypescriptEditorProps } from '../TypescriptEditor';\n\nconst GLOBALS = `\n namespace QueryAPI {\n ${queryApi}\n }\n\n declare global {\n const Query: typeof QueryAPI.Query;\n const Filter: typeof QueryAPI.Filter;\n const Order: typeof QueryAPI.Order;\n }\n\n export {};\n`;\n\nexport type QueryEditorProps = Omit<TypescriptEditorProps, 'env'>;\n\nexport const QueryEditor = (props: QueryEditorProps) => {\n const [compiler, setCompiler] = useState<Compiler>();\n\n useAsyncEffect(async () => {\n const compiler = new Compiler({\n lib: ['ES5'],\n target: ScriptTarget.ES2022,\n });\n await compiler.initialize(GLOBALS);\n setCompiler(compiler);\n }, []);\n\n if (!compiler) {\n return null;\n }\n\n return <TypescriptEditor {...props} env={compiler.environment} />;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport React, { useMemo } from 'react';\n\nimport { type Script } from '@dxos/compute';\nimport { ElevationProvider, useTranslation } from '@dxos/react-ui';\nimport { type ActionGraphProps, Menu, MenuRootProps, createGapSeparator, useMenuActions } from '@dxos/react-ui-menu';\nimport { composable, composableProps } from '@dxos/ui-theme';\n\nimport {\n type CreateDeployOptions,\n type ScriptToolbarStateStore,\n createDeploy,\n createFormat,\n createTemplateSelect,\n useDeployDeps,\n} from '#hooks';\nimport { meta } from '#meta';\n\nexport type ScriptToolbarProps = Pick<MenuRootProps, 'attendableId'> & {\n script: Script.Script;\n state: ScriptToolbarStateStore;\n};\n\nexport const ScriptToolbar = composable<HTMLDivElement, ScriptToolbarProps>(\n ({ script, attendableId, role, state, ...props }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const options = useDeployDeps({ script });\n const menuCreator = useMemo(\n () => createToolbarActions({ state, script, t, ...options }),\n [state, script, options, t],\n );\n const menuActions = useMenuActions(menuCreator);\n\n return (\n <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>\n <Menu.Root {...menuActions} attendableId={attendableId}>\n <Menu.Toolbar {...composableProps(props)} ref={forwardedRef} />\n </Menu.Root>\n </ElevationProvider>\n );\n },\n);\n\nconst createToolbarActions = ({ state, script, ...options }: CreateDeployOptions): Atom.Atom<ActionGraphProps> =>\n Atom.make((get) => {\n // Subscribe to state changes.\n get(state.atom);\n const templateSelect = createTemplateSelect(script);\n const format = createFormat(script);\n const gap = createGapSeparator();\n const deploy = createDeploy({ state, script, ...options });\n return {\n nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],\n edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],\n };\n });\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useRef, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport { Avatar, Icon, Input, ScrollArea, type ThemedClassName, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\ntype State = 'pending';\n\n/**\n * Request or response.\n */\ntype Message = {\n type: 'request' | 'response';\n text?: string;\n data?: any;\n error?: Error;\n};\n\nexport type TestPanelProps = ThemedClassName<{\n onInvoke?: (input: unknown) => Promise<unknown>;\n}>;\n\n// TODO(burdon): Need persistent history (currently lost when switching tabs).\nexport const TestPanel = composable<HTMLDivElement, TestPanelProps>(\n ({ classNames, onInvoke, ...props }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [input, setInput] = 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 handleClear = () => {\n setInput('');\n setHistory([]);\n inputRef.current?.focus();\n };\n\n const handleResponse = ({\n text,\n data,\n error,\n }: {\n text?: string;\n data?: any;\n error?: Error;\n } = {}) => {\n setHistory((history) => [...history, { type: 'response', text, data, error } satisfies Message]);\n setState(null);\n handleScroll();\n };\n\n const handleRequest = async (input: string) => {\n if (!onInvoke) {\n handleResponse({ error: new Error('Function not deployed') });\n return;\n }\n\n let data: unknown = input;\n let displayText = 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 displayText = JSON.stringify(data, null, 2);\n } catch (err) {\n handleResponse({ error: new Error('Invalid JSON input') });\n return;\n }\n }\n\n try {\n setState('pending');\n setInput('');\n setHistory((history) => [...history, { type: 'request', text: displayText }]);\n setTimeout(handleScroll);\n\n const result = await onInvoke(data);\n\n if (typeof result === 'string') {\n handleResponse({ text: result });\n } else {\n handleResponse({ data: result });\n }\n } catch (err: any) {\n const error = err instanceof Error ? err : new Error(String(err));\n handleResponse({ error });\n log.catch(err);\n }\n };\n\n return (\n <div\n {...composableProps(props, { classNames: ['flex flex-col h-full overflow-hidden', classNames] })}\n ref={forwardedRef}\n >\n {/* TODO(burdon): Replace with Thread. */}\n <MessageThread ref={scrollerRef} state={state} history={history} />\n {/* TODO(burdon): Replace with Form based on the function's input schema. */}\n <Toolbar.Root>\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.IconButton icon='ph--play--regular' label='Execute' iconOnly onClick={() => handleRequest(input)} />\n <Toolbar.IconButton icon='ph--trash--regular' label='Clear' iconOnly onClick={handleClear} />\n </Toolbar.Root>\n </div>\n );\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};\n\nconst MessageThread = forwardRef<HTMLDivElement, MessageThreadProps>(\n ({ state, history }: MessageThreadProps, forwardedRef) => {\n return (\n <ScrollArea.Root orientation='vertical' classNames='h-full' ref={forwardedRef}>\n <ScrollArea.Viewport classNames='gap-6 p-2'>\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 {state === 'pending' && (\n <div className='grid grid-cols-[2rem_1fr_2rem]'>\n <div className='p-1'>\n <Icon icon='ph--spinner--regular' size={6} classNames='animate-spin' />\n </div>\n </div>\n )}\n </ScrollArea.Viewport>\n </ScrollArea.Root>\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-hover-surface 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 text-error-text')}>{String(error)}</div>}\n\n {text !== undefined && (\n <div className={mx(wrapper, type === 'request' && 'bg-primary-500 dark:bg-primary-600')}>\n {text || '\\u00D8'}\n </div>\n )}\n\n {data && <JsonHighlighter data={data} classNames={mx(wrapper, 'text-xs')} />}\n </div>\n );\n};\n\nconst RobotAvatar = () => (\n <Avatar.Root>\n <Avatar.Content size={6} variant='circle' icon='ph--drone--regular' />\n </Avatar.Root>\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["lazy", "React", "useEffect", "useRef", "clientServiceBundle", "invariant", "log", "useClient", "createProtoRpcPeer", "createIFramePort", "mx", "iframeRef", "current", "rpc", "handlers", "services", "port", "channel", "iframe", "origin", "open", "close", "catch", "e", "src", "result", "sourceHash", "encodeURIComponent", "TextDecoder", "values", "undefined", "ref", "style", "height", "debug", "className", "div", "pre", "timestamp", "error", "React", "DropdownMenu", "useTranslation", "meta", "NotebookMenu", "cell", "onCellInsert", "onCellDelete", "t", "id", "Portal", "Content", "Viewport", "Item", "onClick", "Arrow", "React", "DropdownMenu", "IconButton", "useTranslation", "Stack", "StackItem", "composable", "composableProps", "meta", "React", "useCallback", "useMemo", "Surface", "AppSurface", "Obj", "createDocAccessor", "invariant", "TemplateEditor", "useThemeContext", "useTranslation", "QueryEditor", "Editor", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "mx", "isNonNullable", "meta", "autocompletion", "completionKeymap", "javascript", "HighlightStyle", "lintKeymap", "Prec", "keymap", "tags", "composeRefs", "continueKeymap", "tsAutocomplete", "tsFacet", "tsHover", "tsLinter", "tsSync", "React", "useThemeContext", "useTextEditor", "Domino", "InputModeExtensions", "createBasicExtensions", "createThemeExtensions", "defaultStyles", "composable", "composableProps", "isNonNullable", "TypescriptEditor", "classNames", "id", "role", "inputMode", "env", "options", "initialValue", "extensions", "scrollTo", "selection", "props", "forwardedRef", "themeMode", "parentRef", "focusAttributes", "highlightActiveLine", "indentWithTab", "lineNumbers", "lineWrapping", "scrollPastEnd", "search", "monospace", "syntaxHighlighting", "typescript", "override", "undefined", "high", "of", "path", "renderTooltip", "createTooltipRenderer", "filter", "div", "ref", "theme", "define", "dark", "light", "classFromKind", "_kind", "kind", "endsWith", "validTag", "tag", "style", "info", "children", "quickInfo", "displayParts", "map", "text", "dom", "append", "root", "__dxlog_file", "editorStyles", "NotebookCell", "extensions", "useMemo", "cell", "target", "createDataExtensions", "createDocAccessor", "isNonNullable", "source", "explorerGraph", "invariant", "Obj", "obj", "content", "value", "initialValue", "React", "classNames", "env", "options", "highlightActiveLine", "lineNumbers", "graph", "QueryEditor", "id", "mx", "db", "onChange", "dragging", "type", "AppSurface", "limit", "data", "subject", "attendableId", "prompt", "instructions", "promptResults", "getValue", "name", "className", "span", "NotebookPromptResult", "NotebookTextEditor", "readOnly", "useThemeContext", "meta", "createBasicExtensions", "createThemeExtensions", "syntaxHighlighting", "createMarkdownExtensions", "decorateMarkdown", "extensionsProp", "filter", "selectionEnd", "minSectionHeight", "NotebookStack", "composable", "notebook", "onRearrange", "db", "graph", "promptResults", "onCellInsert", "onCellDelete", "env", "props", "forwardedRef", "sectionProps", "React", "Stack", "composableProps", "orientation", "size", "rail", "ref", "cells", "map", "cell", "i", "NotebookSection", "key", "t", "useTranslation", "meta", "id", "resizable", "type", "StackItem", "Root", "role", "item", "draggable", "classNames", "Heading", "DragHandle", "asChild", "IconButton", "variant", "icon", "iconOnly", "label", "DropdownMenu", "Trigger", "NotebookMenu", "ResizeHandle", "DragPreview", "Content", "NotebookCell", "dragging", "React", "useState", "ScriptTarget", "queryApi", "useAsyncEffect", "GLOBALS", "queryApi", "QueryEditor", "props", "compiler", "setCompiler", "useState", "useAsyncEffect", "Compiler", "lib", "target", "ScriptTarget", "ES2022", "initialize", "React", "TypescriptEditor", "env", "environment", "Atom", "React", "useMemo", "ElevationProvider", "useTranslation", "Menu", "createGapSeparator", "useMenuActions", "composable", "composableProps", "createDeploy", "createFormat", "createTemplateSelect", "useDeployDeps", "meta", "ScriptToolbar", "script", "attendableId", "role", "state", "props", "forwardedRef", "t", "id", "options", "menuCreator", "createToolbarActions", "menuActions", "elevation", "Root", "Toolbar", "ref", "make", "get", "atom", "templateSelect", "format", "gap", "deploy", "nodes", "edges", "React", "forwardRef", "useRef", "useState", "log", "Avatar", "Icon", "Input", "ScrollArea", "Toolbar", "useTranslation", "JsonHighlighter", "composable", "composableProps", "mx", "meta", "__dxlog_file", "inputRef", "input", "setInput", "setState", "history", "setHistory", "handleScroll", "current", "handleResponse", "text", "data", "error", "handleRequest", "charAt", "validJsonString", "displayText", "stringify", "err", "setTimeout", "result", "catch", "classNames", "ref", "scrollerRef", "state", "autoFocus", "placeholder", "value", "onChange", "ev", "onKeyDown", "icon", "iconOnly", "onClick", "MessageThread", "forwardedRef", "message", "i", "className", "MessageItem", "div", "wrapper", "String", "undefined", "type", "RobotAvatar", "ScriptPluginSettings", "lazy"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/index.ts
|
|
4
|
+
import { lazy } from "react";
|
|
5
|
+
var DeploymentDialog = lazy(() => import("../DeploymentDialog-6DBF3V6C.mjs"));
|
|
6
|
+
var NotebookContainer = lazy(() => import("../NotebookContainer-FIAQI3A2.mjs"));
|
|
7
|
+
var ScriptContainer = lazy(() => import("../ScriptContainer-2OPBAXFB.mjs"));
|
|
8
|
+
var ScriptProperties = lazy(() => import("../ScriptProperties-F6NE6M4H.mjs"));
|
|
9
|
+
var TestContainer = lazy(() => import("../TestContainer-JNFPLAJX.mjs"));
|
|
10
|
+
export {
|
|
11
|
+
DeploymentDialog,
|
|
12
|
+
NotebookContainer,
|
|
13
|
+
ScriptContainer,
|
|
14
|
+
ScriptProperties,
|
|
15
|
+
TestContainer
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/containers/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const DeploymentDialog: ComponentType<any> = lazy(() => import('./DeploymentDialog'));\nexport const NotebookContainer: ComponentType<any> = lazy(() => import('./NotebookContainer'));\nexport const ScriptContainer: ComponentType<any> = lazy(() => import('./ScriptContainer'));\nexport const ScriptProperties: ComponentType<any> = lazy(() => import('./ScriptProperties'));\nexport const TestContainer: ComponentType<any> = lazy(() => import('./TestContainer'));\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAA6BA,YAAY;AAElC,IAAMC,mBAAuCD,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC/D,IAAME,oBAAwCF,KAAK,MAAM,OAAO,mCAAA,CAAA;AAChE,IAAMG,kBAAsCH,KAAK,MAAM,OAAO,iCAAA,CAAA;AAC9D,IAAMI,mBAAuCJ,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC/D,IAAMK,gBAAoCL,KAAK,MAAM,OAAO,+BAAA,CAAA;",
|
|
6
|
+
"names": ["lazy", "DeploymentDialog", "NotebookContainer", "ScriptContainer", "ScriptProperties", "TestContainer"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Create
|
|
3
|
+
} from "./chunk-MI6X5CTJ.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/blueprints/functions/create.ts
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import { Script, Operation } from "@dxos/compute";
|
|
9
|
+
import { Database, Obj, Ref } from "@dxos/echo";
|
|
10
|
+
import { CollectionModel } from "@dxos/schema";
|
|
11
|
+
var create_default = Create.pipe(Operation.withHandler(Effect.fn(function* ({ name, source, templateId }) {
|
|
12
|
+
let scriptSource = source ?? "";
|
|
13
|
+
if (templateId) {
|
|
14
|
+
const template = yield* findTemplate(templateId);
|
|
15
|
+
if (template) {
|
|
16
|
+
scriptSource = template.source;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const script = Script.make({
|
|
20
|
+
name,
|
|
21
|
+
source: scriptSource
|
|
22
|
+
});
|
|
23
|
+
const { db } = yield* Database.Service;
|
|
24
|
+
db.add(script);
|
|
25
|
+
const fn2 = Obj.make(Operation.PersistentOperation, {
|
|
26
|
+
name,
|
|
27
|
+
version: "0.0.0",
|
|
28
|
+
source: Ref.make(script)
|
|
29
|
+
});
|
|
30
|
+
yield* CollectionModel.add({
|
|
31
|
+
object: fn2
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
function: Obj.getDXN(fn2).toString()
|
|
35
|
+
};
|
|
36
|
+
})));
|
|
37
|
+
var findTemplate = (templateId) => Effect.promise(async () => {
|
|
38
|
+
const { templates } = await import("./templates/index.mjs");
|
|
39
|
+
return templates.find((template) => template.id === templateId);
|
|
40
|
+
});
|
|
41
|
+
export {
|
|
42
|
+
create_default as default
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=create-OZRIZ7RN.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/blueprints/functions/create.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Script, Operation } from '@dxos/compute';\nimport { Database, Obj, Ref } from '@dxos/echo';\nimport { CollectionModel } from '@dxos/schema';\n\nimport { Create } from './definitions';\n\nexport default Create.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ name, source, templateId }) {\n let scriptSource = source ?? '';\n\n if (templateId) {\n const template = yield* findTemplate(templateId);\n if (template) {\n scriptSource = template.source;\n }\n }\n\n const script = Script.make({ name, source: scriptSource });\n const { db } = yield* Database.Service;\n db.add(script);\n\n const fn = Obj.make(Operation.PersistentOperation, {\n name,\n version: '0.0.0',\n source: Ref.make(script),\n });\n yield* CollectionModel.add({ object: fn });\n\n return {\n function: Obj.getDXN(fn).toString(),\n };\n }),\n ),\n);\n\nconst findTemplate = (templateId: string) =>\n Effect.promise(async () => {\n const { templates } = await import('../../templates');\n return templates.find((template) => template.id === templateId);\n });\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,QAAQC,iBAAiB;AAClC,SAASC,UAAUC,KAAKC,WAAW;AACnC,SAASC,uBAAuB;AAIhC,IAAA,iBAAeC,OAAOC,KACpBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,MAAMC,QAAQC,WAAU,GAAE;AAC/C,MAAIC,eAAeF,UAAU;AAE7B,MAAIC,YAAY;AACd,UAAME,WAAW,OAAOC,aAAaH,UAAAA;AACrC,QAAIE,UAAU;AACZD,qBAAeC,SAASH;IAC1B;EACF;AAEA,QAAMK,SAASC,OAAOC,KAAK;IAAER;IAAMC,QAAQE;EAAa,CAAA;AACxD,QAAM,EAAEM,GAAE,IAAK,OAAOC,SAASC;AAC/BF,KAAGG,IAAIN,MAAAA;AAEP,QAAMP,MAAKc,IAAIL,KAAKX,UAAUiB,qBAAqB;IACjDd;IACAe,SAAS;IACTd,QAAQe,IAAIR,KAAKF,MAAAA;EACnB,CAAA;AACA,SAAOW,gBAAgBL,IAAI;IAAEM,QAAQnB;EAAG,CAAA;AAExC,SAAO;IACLoB,UAAUN,IAAIO,OAAOrB,GAAAA,EAAIsB,SAAQ;EACnC;AACF,CAAA,CAAA,CAAA;AAIJ,IAAMhB,eAAe,CAACH,eACboB,eAAQ,YAAA;AACb,QAAM,EAAEC,UAAS,IAAK,MAAM,OAAO,uBAAA;AACnC,SAAOA,UAAUC,KAAK,CAACpB,aAAaA,SAASqB,OAAOvB,UAAAA;AACtD,CAAA;",
|
|
6
|
+
"names": ["Effect", "Script", "Operation", "Database", "Obj", "Ref", "CollectionModel", "Create", "pipe", "Operation", "withHandler", "fn", "name", "source", "templateId", "scriptSource", "template", "findTemplate", "script", "Script", "make", "db", "Database", "Service", "add", "Obj", "PersistentOperation", "version", "Ref", "CollectionModel", "object", "function", "getDXN", "toString", "promise", "templates", "find", "id"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/capabilities/create-object.ts
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import { Capability } from "@dxos/app-framework";
|
|
6
|
+
import { Operation, Script } from "@dxos/compute";
|
|
7
|
+
import { SpaceOperation } from "@dxos/plugin-space";
|
|
8
|
+
import { SpaceCapabilities } from "@dxos/plugin-space";
|
|
9
|
+
import { ScriptOperation } from "#types";
|
|
10
|
+
import { Notebook } from "#types";
|
|
11
|
+
var create_object_default = Capability.makeModule(Effect.fnUntraced(function* () {
|
|
12
|
+
return [
|
|
13
|
+
Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
|
|
14
|
+
id: Script.Script.typename,
|
|
15
|
+
inputSchema: ScriptOperation.ScriptProps,
|
|
16
|
+
createObject: (props, options) => Effect.gen(function* () {
|
|
17
|
+
const { object } = yield* Operation.invoke(ScriptOperation.CreateScript, props);
|
|
18
|
+
return yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
19
|
+
object,
|
|
20
|
+
target: options.target,
|
|
21
|
+
hidden: true,
|
|
22
|
+
targetNodeId: options.targetNodeId
|
|
23
|
+
});
|
|
24
|
+
})
|
|
25
|
+
}),
|
|
26
|
+
Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
|
|
27
|
+
id: Notebook.Notebook.typename,
|
|
28
|
+
inputSchema: ScriptOperation.NotebookProps,
|
|
29
|
+
createObject: (props, options) => Effect.gen(function* () {
|
|
30
|
+
const object = Notebook.make(props);
|
|
31
|
+
return yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
32
|
+
object,
|
|
33
|
+
target: options.target,
|
|
34
|
+
hidden: true,
|
|
35
|
+
targetNodeId: options.targetNodeId
|
|
36
|
+
});
|
|
37
|
+
})
|
|
38
|
+
})
|
|
39
|
+
];
|
|
40
|
+
}));
|
|
41
|
+
export {
|
|
42
|
+
create_object_default as default
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=create-object-F2NWICFV.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/create-object.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation, Script } from '@dxos/compute';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\n\nimport { ScriptOperation } from '#types';\nimport { Notebook } from '#types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return [\n Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Script.Script.typename,\n inputSchema: ScriptOperation.ScriptProps,\n createObject: (props, options) =>\n Effect.gen(function* () {\n const { object } = yield* Operation.invoke(ScriptOperation.CreateScript, props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n }),\n }),\n Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Notebook.Notebook.typename,\n inputSchema: ScriptOperation.NotebookProps,\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Notebook.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n }),\n }),\n ];\n }),\n);\n"],
|
|
5
|
+
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,WAAWC,cAAc;AAClC,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAElC,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AAEzB,IAAA,wBAAeN,WAAWO,WACjBC,kBAAW,aAAA;AAChB,SAAO;IACLR,WAAWS,YAAYL,kBAAkBM,mBAAmB;MAC1DC,IAAIT,OAAOA,OAAOU;MAClBC,aAAaR,gBAAgBS;MAC7BC,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,cAAM,EAAEC,OAAM,IAAK,OAAOlB,UAAUmB,OAAOf,gBAAgBgB,cAAcL,KAAAA;AACzE,eAAO,OAAOf,UAAUmB,OAAOjB,eAAemB,WAAW;UACvDH;UACAI,QAAQN,QAAQM;UAChBC,QAAQ;UACRC,cAAcR,QAAQQ;QACxB,CAAA;MACF,CAAA;IACJ,CAAA;IACAzB,WAAWS,YAAYL,kBAAkBM,mBAAmB;MAC1DC,IAAIL,SAASA,SAASM;MACtBC,aAAaR,gBAAgBqB;MAC7BX,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,cAAMC,SAASb,SAASqB,KAAKX,KAAAA;AAC7B,eAAO,OAAOf,UAAUmB,OAAOjB,eAAemB,WAAW;UACvDH;UACAI,QAAQN,QAAQM;UAChBC,QAAQ;UACRC,cAAcR,QAAQQ;QACxB,CAAA;MACF,CAAA;IACJ,CAAA;;AAEJ,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Capability", "Operation", "Script", "SpaceOperation", "SpaceCapabilities", "ScriptOperation", "Notebook", "makeModule", "fnUntraced", "contributes", "CreateObjectEntry", "id", "typename", "inputSchema", "ScriptProps", "createObject", "props", "options", "gen", "object", "invoke", "CreateScript", "AddObject", "target", "hidden", "targetNodeId", "NotebookProps", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ScriptOperation_exports
|
|
3
|
+
} from "./chunk-PDB6UOSB.mjs";
|
|
4
|
+
import {
|
|
5
|
+
templates
|
|
6
|
+
} from "./chunk-BUKQITZT.mjs";
|
|
7
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
8
|
+
|
|
9
|
+
// src/operations/create-script.ts
|
|
10
|
+
import { Octokit } from "@octokit/core";
|
|
11
|
+
import * as Effect from "effect/Effect";
|
|
12
|
+
import { Script, Operation } from "@dxos/compute";
|
|
13
|
+
var handler = ScriptOperation_exports.CreateScript.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ name, gistUrl, initialTemplateId }) {
|
|
14
|
+
let source = templates[0].source;
|
|
15
|
+
let scriptName = name;
|
|
16
|
+
const gistId = gistUrl?.split("/").at(-1);
|
|
17
|
+
if (gistId) {
|
|
18
|
+
const octokit = new Octokit();
|
|
19
|
+
const response = yield* Effect.promise(() => octokit.request("GET /gists/{gist_id}", {
|
|
20
|
+
gist_id: gistId
|
|
21
|
+
}));
|
|
22
|
+
const gistContent = Object.values(response.data.files ?? {})[0]?.content;
|
|
23
|
+
if (gistContent) {
|
|
24
|
+
source = gistContent;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (initialTemplateId) {
|
|
28
|
+
const template = templates.find((template2) => template2.id === initialTemplateId);
|
|
29
|
+
if (template) {
|
|
30
|
+
source = template.source;
|
|
31
|
+
scriptName = scriptName || template.name;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
object: Script.make({
|
|
36
|
+
name: scriptName,
|
|
37
|
+
source
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
})));
|
|
41
|
+
var create_script_default = handler;
|
|
42
|
+
export {
|
|
43
|
+
create_script_default as default
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=create-script-VBA3SLSU.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/create-script.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Octokit } from '@octokit/core';\nimport * as Effect from 'effect/Effect';\n\nimport { Script, Operation } from '@dxos/compute';\n\nimport { templates } from '../templates';\nimport { ScriptOperation } from '../types';\n\nconst handler: Operation.WithHandler<typeof ScriptOperation.CreateScript> = ScriptOperation.CreateScript.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ name, gistUrl, initialTemplateId }) {\n let source = templates[0].source;\n let scriptName = name;\n\n const gistId = gistUrl?.split('/').at(-1);\n if (gistId) {\n const octokit = new Octokit();\n const response = yield* Effect.promise(() =>\n octokit.request('GET /gists/{gist_id}', {\n gist_id: gistId,\n }),\n );\n const gistContent = Object.values(response.data.files ?? {})[0]?.content;\n if (gistContent) {\n source = gistContent;\n }\n }\n\n if (initialTemplateId) {\n const template = templates.find((template) => template.id === initialTemplateId);\n if (template) {\n source = template.source;\n scriptName = scriptName || template.name;\n }\n }\n\n return { object: Script.make({ name: scriptName, source }) };\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;AAIA,SAASA,eAAe;AACxB,YAAYC,YAAY;AAExB,SAASC,QAAQC,iBAAiB;AAKlC,IAAMC,UAAsEC,wBAAgBC,aAAaC,KACvGC,UAAUC,YACDC,kBAAW,WAAW,EAAEC,MAAMC,SAASC,kBAAiB,GAAE;AAC/D,MAAIC,SAASC,UAAU,CAAA,EAAGD;AAC1B,MAAIE,aAAaL;AAEjB,QAAMM,SAASL,SAASM,MAAM,GAAA,EAAKC,GAAG,EAAC;AACvC,MAAIF,QAAQ;AACV,UAAMG,UAAU,IAAIC,QAAAA;AACpB,UAAMC,WAAW,OAAcC,eAAQ,MACrCH,QAAQI,QAAQ,wBAAwB;MACtCC,SAASR;IACX,CAAA,CAAA;AAEF,UAAMS,cAAcC,OAAOC,OAAON,SAASO,KAAKC,SAAS,CAAC,CAAA,EAAG,CAAA,GAAIC;AACjE,QAAIL,aAAa;AACfZ,eAASY;IACX;EACF;AAEA,MAAIb,mBAAmB;AACrB,UAAMmB,WAAWjB,UAAUkB,KAAK,CAACD,cAAaA,UAASE,OAAOrB,iBAAAA;AAC9D,QAAImB,UAAU;AACZlB,eAASkB,SAASlB;AAClBE,mBAAaA,cAAcgB,SAASrB;IACtC;EACF;AAEA,SAAO;IAAEwB,QAAQC,OAAOC,KAAK;MAAE1B,MAAMK;MAAYF;IAAO,CAAA;EAAG;AAC7D,CAAA,CAAA,CAAA;AAIJ,IAAA,wBAAeV;",
|
|
6
|
+
"names": ["Octokit", "Effect", "Script", "Operation", "handler", "ScriptOperation", "CreateScript", "pipe", "Operation", "withHandler", "fnUntraced", "name", "gistUrl", "initialTemplateId", "source", "templates", "scriptName", "gistId", "split", "at", "octokit", "Octokit", "response", "promise", "request", "gist_id", "gistContent", "Object", "values", "data", "files", "content", "template", "find", "id", "object", "Script", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Delete
|
|
3
|
+
} from "./chunk-MI6X5CTJ.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/blueprints/functions/delete.ts
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import { Operation } from "@dxos/compute";
|
|
9
|
+
import { Database } from "@dxos/echo";
|
|
10
|
+
var delete_default = Delete.pipe(Operation.withHandler(Effect.fn(function* ({ function: fn2 }) {
|
|
11
|
+
const { db } = yield* Database.Service;
|
|
12
|
+
const loaded = yield* Database.load(fn2);
|
|
13
|
+
if (loaded.source?.target) {
|
|
14
|
+
db.remove(loaded.source.target);
|
|
15
|
+
}
|
|
16
|
+
db.remove(loaded);
|
|
17
|
+
})));
|
|
18
|
+
export {
|
|
19
|
+
delete_default as default
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=delete-PAUWA2QM.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/blueprints/functions/delete.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database } from '@dxos/echo';\n\nimport { Delete } from './definitions';\n\nexport default Delete.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ function: fn }) {\n const { db } = yield* Database.Service;\n const loaded = yield* Database.load(fn);\n if (loaded.source?.target) {\n db.remove(loaded.source.target);\n }\n db.remove(loaded);\n }),\n ),\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AAIzB,IAAA,iBAAeC,OAAOC,KACpBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,UAAUD,IAAE,GAAE;AACnC,QAAM,EAAEE,GAAE,IAAK,OAAOC,SAASC;AAC/B,QAAMC,SAAS,OAAOF,SAASG,KAAKN,GAAAA;AACpC,MAAIK,OAAOE,QAAQC,QAAQ;AACzBN,OAAGO,OAAOJ,OAAOE,OAAOC,MAAM;EAChC;AACAN,KAAGO,OAAOJ,MAAAA;AACZ,CAAA,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Operation", "Database", "Delete", "pipe", "Operation", "withHandler", "fn", "function", "db", "Database", "Service", "loaded", "load", "source", "target", "remove"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Deploy
|
|
3
|
+
} from "./chunk-MI6X5CTJ.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/blueprints/functions/deploy.ts
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import wasmUrl from "esbuild-wasm/esbuild.wasm?url";
|
|
9
|
+
import { ClientService } from "@dxos/client";
|
|
10
|
+
import { Operation } from "@dxos/compute";
|
|
11
|
+
import { Context } from "@dxos/context";
|
|
12
|
+
import { Database, Obj } from "@dxos/echo";
|
|
13
|
+
import { getUserFunctionIdInMetadata } from "@dxos/functions";
|
|
14
|
+
import { bundleFunction, initializeBundler } from "@dxos/functions-runtime/bundler";
|
|
15
|
+
import { FunctionsServiceClient, incrementSemverPatch } from "@dxos/functions-runtime/edge";
|
|
16
|
+
import { FunctionRuntimeKind } from "@dxos/protocols";
|
|
17
|
+
import { getSpace } from "@dxos/react-client/echo";
|
|
18
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/blueprints/functions/deploy.ts";
|
|
19
|
+
var deploy_default = Deploy.pipe(Operation.withHandler(Effect.fn(function* ({ function: fn2 }) {
|
|
20
|
+
const loaded = yield* Database.load(fn2);
|
|
21
|
+
const client = yield* ClientService;
|
|
22
|
+
if (!loaded.source) {
|
|
23
|
+
return yield* Effect.fail(new Error("Function has no source script."));
|
|
24
|
+
}
|
|
25
|
+
const script = yield* Database.load(loaded.source);
|
|
26
|
+
const space = getSpace(loaded);
|
|
27
|
+
if (!space || !script.source?.target?.content) {
|
|
28
|
+
return yield* Effect.fail(new Error("Script source or space not available"));
|
|
29
|
+
}
|
|
30
|
+
yield* Effect.promise(() => initializeBundler({
|
|
31
|
+
wasmUrl
|
|
32
|
+
}));
|
|
33
|
+
const buildResult = yield* Effect.promise(() => bundleFunction({
|
|
34
|
+
source: script.source.target.content
|
|
35
|
+
}));
|
|
36
|
+
if ("error" in buildResult) {
|
|
37
|
+
return yield* Effect.fail(buildResult.error ?? new Error("Bundle creation failed"));
|
|
38
|
+
}
|
|
39
|
+
const existingFunctionId = getUserFunctionIdInMetadata(Obj.getMeta(loaded));
|
|
40
|
+
const functionsService = FunctionsServiceClient.fromClient(client);
|
|
41
|
+
const newFunction = yield* Effect.promise(() => functionsService.deploy(Context.default(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 38 }), {
|
|
42
|
+
ownerPublicKey: space.key,
|
|
43
|
+
version: loaded.version ? incrementSemverPatch(loaded.version) : "0.0.1",
|
|
44
|
+
functionId: existingFunctionId,
|
|
45
|
+
entryPoint: buildResult.entryPoint,
|
|
46
|
+
assets: buildResult.assets,
|
|
47
|
+
runtime: FunctionRuntimeKind.enums.WORKER_LOADER
|
|
48
|
+
}));
|
|
49
|
+
Operation.setFrom(loaded, newFunction);
|
|
50
|
+
Obj.update(script, (script2) => {
|
|
51
|
+
script2.changed = false;
|
|
52
|
+
});
|
|
53
|
+
const edgeFunctionId = getUserFunctionIdInMetadata(Obj.getMeta(loaded));
|
|
54
|
+
return {
|
|
55
|
+
function: Obj.getDXN(loaded).toString(),
|
|
56
|
+
functionUrl: edgeFunctionId ? `${client.config.values.runtime?.services?.edge?.url ?? ""}/functions/${edgeFunctionId}` : void 0
|
|
57
|
+
};
|
|
58
|
+
})));
|
|
59
|
+
export {
|
|
60
|
+
deploy_default as default
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=deploy-CXVW54JJ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/blueprints/functions/deploy.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport wasmUrl from 'esbuild-wasm/esbuild.wasm?url';\n\nimport { ClientService } from '@dxos/client';\nimport { Script, Operation } from '@dxos/compute';\nimport { Context } from '@dxos/context';\nimport { Database, Obj } from '@dxos/echo';\nimport { getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { bundleFunction, initializeBundler } from '@dxos/functions-runtime/bundler';\nimport { FunctionsServiceClient, incrementSemverPatch } from '@dxos/functions-runtime/edge';\nimport { FunctionRuntimeKind } from '@dxos/protocols';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { Deploy } from './definitions';\n\nexport default Deploy.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ function: fn }) {\n const loaded = yield* Database.load(fn);\n const client = yield* ClientService;\n if (!loaded.source) {\n return yield* Effect.fail(new Error('Function has no source script.'));\n }\n const script = (yield* Database.load(loaded.source)) as Script.Script;\n\n const space = getSpace(loaded);\n if (!space || !script.source?.target?.content) {\n return yield* Effect.fail(new Error('Script source or space not available'));\n }\n\n yield* Effect.promise(() => initializeBundler({ wasmUrl }));\n const buildResult = yield* Effect.promise(() => bundleFunction({ source: script.source!.target!.content }));\n if ('error' in buildResult) {\n return yield* Effect.fail(buildResult.error ?? new Error('Bundle creation failed'));\n }\n\n const existingFunctionId = getUserFunctionIdInMetadata(Obj.getMeta(loaded));\n\n const functionsService = FunctionsServiceClient.fromClient(client);\n const newFunction = yield* Effect.promise(() =>\n functionsService.deploy(Context.default(), {\n ownerPublicKey: space.key,\n version: loaded.version ? incrementSemverPatch(loaded.version) : '0.0.1',\n functionId: existingFunctionId,\n entryPoint: buildResult.entryPoint,\n assets: buildResult.assets,\n runtime: FunctionRuntimeKind.enums.WORKER_LOADER,\n }),\n );\n\n Operation.setFrom(loaded, newFunction);\n\n Obj.update(script, (script) => {\n script.changed = false;\n });\n\n const edgeFunctionId = getUserFunctionIdInMetadata(Obj.getMeta(loaded));\n return {\n function: Obj.getDXN(loaded).toString(),\n functionUrl: edgeFunctionId\n ? `${client.config.values.runtime?.services?.edge?.url ?? ''}/functions/${edgeFunctionId}`\n : undefined,\n };\n }),\n ),\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,aAAa;AAEpB,SAASC,qBAAqB;AAC9B,SAAiBC,iBAAiB;AAClC,SAASC,eAAe;AACxB,SAASC,UAAUC,WAAW;AAC9B,SAASC,mCAAmC;AAC5C,SAASC,gBAAgBC,yBAAyB;AAClD,SAASC,wBAAwBC,4BAA4B;AAC7D,SAASC,2BAA2B;AACpC,SAASC,gBAAgB;AAIzB,IAAA,eAAeC;IAIT,iBAAMC,OAAS,KAAOC,UAAAA,YAAAA,UAAAA,WAAAA,EAAAA,UAAAA,IAAAA,GAAAA;AACtB,QAAKC,SAAOC,OAAQ,SAAA,KAAAC,GAAA;QAClB,SAAO,OAAOC;AAChB,MAAA,CAAA,OAAA,QAAA;AACA,WAAMC,OAAiBC,YAAAA,IAASC,MAAKN,gCAAa,CAAA;EAElD;AACA,QAAKO,SAAUH,OAAOH,SAAQO,KAAAA,OAAQC,MAAS;QAC7C,QAAO,SAAON,MAAW;AAC3B,MAAA,CAAA,SAAA,CAAA,OAAA,QAAA,QAAA,SAAA;AAEA,WAAOA,OAAe,YAAMO,IAAAA,MAAAA,sCAAkB,CAAA;;SAAU,eAAA,MAAA,kBAAA;IAClDC;;QAAkG,cAAA,OAAA,eAAA,MAAA,eAAA;IACpG,QAAWA,OAAAA,OAAa,OAAA;EAC1B,CAAA,CAAA;AACF,MAAA,WAAA,aAAA;AAEA,WAAMC,OAAAA,YAAqBC,YAAAA,SAAAA,IAA4BC,MAAIC,wBAAQf,CAAAA;EAEnE;AACA,QAAMgB,qBAAqBb,4BACzBc,IAAAA,QAAiBC,MAAOC,CAAAA;2BACNZ,uBAAS,WAAA,MAAA;sBAChBP,OAAiBoB,eAAAA,MAAAA,iBAA4BC,OAAO,QAAI,QAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,GAAA,CAAA,GAAA;IACjEC,gBAAYV,MAAAA;IACZW,SAAAA,OAAYZ,UAAYY,qBAAU,OAAA,OAAA,IAAA;IAClCC,YAAQb;IACRc,YAASC,YAAAA;IACX,QAAA,YAAA;IAGFC,SAAiB,oBAASX,MAAAA;EAEtBY,CAAAA,CAAAA;YACFxB,QAAc,QAAG,WAAA;AACnB,MAAA,OAAA,QAAA,CAAAA,YAAA;AAEA,IAAAA,QAAMyB,UAAAA;EACN,CAAA;QACEC,iBAAcC,4BAAuB,IAAA,QAAA,MAAA,CAAA;SACrCC;IAGF,UAAA,IAAA,OAAA,MAAA,EAAA,SAAA;IAGJ,aAAA,iBAAA,GAAA,OAAA,OAAA,OAAA,SAAA,UAAA,MAAA,OAAA,EAAA,cAAA,cAAA,KAAA;;;",
|
|
6
|
+
"names": ["Effect", "wasmUrl", "ClientService", "Operation", "Context", "Database", "Obj", "getUserFunctionIdInMetadata", "bundleFunction", "initializeBundler", "FunctionsServiceClient", "incrementSemverPatch", "FunctionRuntimeKind", "getSpace", "Deploy", "client", "ClientService", "loaded", "source", "fn", "Effect", "script", "Database", "load", "space", "target", "content", "initializeBundler", "buildResult", "existingFunctionId", "getUserFunctionIdInMetadata", "Obj", "getMeta", "newFunction", "functionsService", "deploy", "Context", "incrementSemverPatch", "version", "functionId", "entryPoint", "assets", "runtime", "FunctionRuntimeKind", "Operation", "update", "edgeFunctionId", "function", "getDXN", "functionUrl"]
|
|
7
|
+
}
|