@dxos/plugin-script 0.8.4-main.c1de068 → 0.8.4-main.c351d160a8
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/DeploymentDialog-SSJP2BBZ.mjs +138 -0
- package/dist/lib/browser/DeploymentDialog-SSJP2BBZ.mjs.map +7 -0
- package/dist/lib/browser/NotebookContainer-Q6Z2CPH6.mjs +848 -0
- package/dist/lib/browser/NotebookContainer-Q6Z2CPH6.mjs.map +7 -0
- package/dist/lib/browser/ScriptContainer-IKITE6OA.mjs +93 -0
- package/dist/lib/browser/ScriptContainer-IKITE6OA.mjs.map +7 -0
- package/dist/lib/browser/ScriptObjectSettings-X4WV5TBD.mjs +294 -0
- package/dist/lib/browser/ScriptObjectSettings-X4WV5TBD.mjs.map +7 -0
- package/dist/lib/browser/ScriptPluginSettings-5WUKIWCC.mjs +55 -0
- package/dist/lib/browser/ScriptPluginSettings-5WUKIWCC.mjs.map +7 -0
- package/dist/lib/browser/ScriptProperties-5YERQAL2.mjs +28 -0
- package/dist/lib/browser/ScriptProperties-5YERQAL2.mjs.map +7 -0
- package/dist/lib/browser/TestContainer-ZI2PQRXB.mjs +39 -0
- package/dist/lib/browser/TestContainer-ZI2PQRXB.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-QPXX4YK5.mjs +63 -0
- package/dist/lib/browser/app-graph-builder-QPXX4YK5.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-2UX353LT.mjs +17 -0
- package/dist/lib/browser/blueprint-definition-2UX353LT.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +8 -0
- package/dist/lib/browser/{chunk-QYAREHGH.mjs → chunk-37XPSUAH.mjs} +9 -6
- package/dist/lib/browser/chunk-37XPSUAH.mjs.map +7 -0
- package/dist/lib/browser/chunk-7JL6WNT6.mjs +397 -0
- package/dist/lib/browser/chunk-7JL6WNT6.mjs.map +7 -0
- package/dist/lib/browser/chunk-7SXHORK4.mjs +105 -0
- package/dist/lib/browser/chunk-7SXHORK4.mjs.map +7 -0
- package/dist/lib/browser/{compiler-CXCUA4UQ.mjs → chunk-ATTZUDT7.mjs} +17 -32
- package/dist/lib/browser/chunk-ATTZUDT7.mjs.map +7 -0
- package/dist/lib/browser/chunk-G3XIOLLI.mjs +174 -0
- package/dist/lib/browser/chunk-G3XIOLLI.mjs.map +7 -0
- package/dist/lib/browser/chunk-IHEZBW44.mjs +789 -0
- package/dist/lib/browser/chunk-IHEZBW44.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-KIYJ6XPN.mjs +20 -0
- package/dist/lib/browser/chunk-KIYJ6XPN.mjs.map +7 -0
- package/dist/lib/browser/chunk-MYSQ4VH5.mjs +29 -0
- package/dist/lib/browser/chunk-MYSQ4VH5.mjs.map +7 -0
- package/dist/lib/browser/chunk-OWMMXCIP.mjs +116 -0
- package/dist/lib/browser/chunk-OWMMXCIP.mjs.map +7 -0
- package/dist/lib/browser/chunk-X44CJ7F5.mjs +11 -0
- package/dist/lib/browser/chunk-X44CJ7F5.mjs.map +7 -0
- package/dist/lib/browser/compiler-ZVLONXEG.mjs +99 -0
- package/dist/lib/browser/compiler-ZVLONXEG.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +150 -108
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operation-resolver-YYHZGLYR.mjs +79 -0
- package/dist/lib/browser/operation-resolver-YYHZGLYR.mjs.map +7 -0
- package/dist/lib/browser/react-surface-SZ7BHELP.mjs +142 -0
- package/dist/lib/browser/react-surface-SZ7BHELP.mjs.map +7 -0
- package/dist/lib/browser/settings-XGV2T3PC.mjs +36 -0
- package/dist/lib/browser/settings-XGV2T3PC.mjs.map +7 -0
- package/dist/lib/browser/templates/index.mjs +2 -1
- package/dist/lib/browser/types/index.mjs +14 -6
- package/dist/lib/node-esm/DeploymentDialog-V3HYTNFB.mjs +139 -0
- package/dist/lib/node-esm/DeploymentDialog-V3HYTNFB.mjs.map +7 -0
- package/dist/lib/node-esm/NotebookContainer-MDHOETIH.mjs +849 -0
- package/dist/lib/node-esm/NotebookContainer-MDHOETIH.mjs.map +7 -0
- package/dist/lib/node-esm/ScriptContainer-4E4EK6ZF.mjs +94 -0
- package/dist/lib/node-esm/ScriptContainer-4E4EK6ZF.mjs.map +7 -0
- package/dist/lib/node-esm/ScriptObjectSettings-RPY2ZLDJ.mjs +295 -0
- package/dist/lib/node-esm/ScriptObjectSettings-RPY2ZLDJ.mjs.map +7 -0
- package/dist/lib/node-esm/ScriptPluginSettings-H4ESISSG.mjs +56 -0
- package/dist/lib/node-esm/ScriptPluginSettings-H4ESISSG.mjs.map +7 -0
- package/dist/lib/node-esm/ScriptProperties-NNDYQTOW.mjs +29 -0
- package/dist/lib/node-esm/ScriptProperties-NNDYQTOW.mjs.map +7 -0
- package/dist/lib/node-esm/TestContainer-G2TVP2KS.mjs +40 -0
- package/dist/lib/node-esm/TestContainer-G2TVP2KS.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-GNGOYXIU.mjs +64 -0
- package/dist/lib/node-esm/app-graph-builder-GNGOYXIU.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-4UDBPYRQ.mjs +18 -0
- package/dist/lib/node-esm/blueprint-definition-4UDBPYRQ.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +9 -0
- package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-3EV4C6GW.mjs +107 -0
- package/dist/lib/node-esm/chunk-3EV4C6GW.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-4YAEFFW2.mjs +12 -0
- package/dist/lib/node-esm/chunk-4YAEFFW2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs +176 -0
- package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-BOPXK25O.mjs +790 -0
- package/dist/lib/node-esm/chunk-BOPXK25O.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-DMELV4YV.mjs +22 -0
- package/dist/lib/node-esm/chunk-DMELV4YV.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-DQMM7ZL5.mjs +31 -0
- package/dist/lib/node-esm/chunk-DQMM7ZL5.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-EV57E4Q4.mjs +117 -0
- package/dist/lib/node-esm/chunk-EV57E4Q4.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/{compiler-EPFKQXPE.mjs → chunk-JGN7TDJH.mjs} +17 -31
- package/dist/lib/node-esm/chunk-JGN7TDJH.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-KL6LGVVM.mjs +398 -0
- package/dist/lib/node-esm/chunk-KL6LGVVM.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-AHXJ6NQU.mjs → chunk-L3JLWXB5.mjs} +9 -6
- package/dist/lib/node-esm/chunk-L3JLWXB5.mjs.map +7 -0
- package/dist/lib/node-esm/compiler-INUOAXU7.mjs +100 -0
- package/dist/lib/node-esm/compiler-INUOAXU7.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +150 -108
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/operation-resolver-OTHAYHTN.mjs +80 -0
- package/dist/lib/node-esm/operation-resolver-OTHAYHTN.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-DLEXFWGV.mjs +143 -0
- package/dist/lib/node-esm/react-surface-DLEXFWGV.mjs.map +7 -0
- package/dist/lib/node-esm/settings-JZUMGPNG.mjs +37 -0
- package/dist/lib/node-esm/settings-JZUMGPNG.mjs.map +7 -0
- package/dist/lib/node-esm/templates/index.mjs +2 -1
- package/dist/lib/node-esm/types/index.mjs +14 -6
- package/dist/types/src/ScriptPlugin.d.ts +2 -1
- package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/index.d.ts +2 -0
- package/dist/types/src/blueprints/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/script-blueprint.d.ts +4 -0
- package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +12 -0
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
- package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +6 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/compiler/compiler.d.ts +6 -0
- package/dist/types/src/capabilities/compiler/compiler.d.ts.map +1 -0
- package/dist/types/src/capabilities/compiler/index.d.ts +3 -0
- package/dist/types/src/capabilities/compiler/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +6 -7
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/index.d.ts +7 -0
- package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/settings.d.ts +10 -0
- package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
- package/dist/types/src/compiler/compiler.d.ts +1 -1
- package/dist/types/src/compiler/compiler.d.ts.map +1 -1
- package/dist/types/src/components/FramePanel/FramePanel.d.ts +12 -0
- 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 +15 -0
- package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -0
- package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +9 -0
- package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -0
- package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +14 -0
- package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -0
- package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +252 -0
- package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -0
- package/dist/types/src/components/NotebookStack/index.d.ts +3 -0
- package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -0
- package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
- package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
- package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
- package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
- package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
- package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +8 -8
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +249 -10
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
- 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 +11 -4
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +5 -7
- 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/containers/DeploymentDialog/DeploymentDialog.d.ts +9 -0
- package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
- package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts +252 -0
- package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
- package/dist/types/src/containers/DeploymentDialog/index.d.ts +3 -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 +7 -0
- package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/NotebookContainer/index.d.ts +3 -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/index.d.ts +3 -0
- package/dist/types/src/containers/ScriptContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts +7 -0
- package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptObjectSettings/index.d.ts +3 -0
- package/dist/types/src/containers/ScriptObjectSettings/index.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptPluginSettings/ScriptPluginSettings.d.ts +8 -0
- package/dist/types/src/containers/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptPluginSettings/index.d.ts +3 -0
- package/dist/types/src/containers/ScriptPluginSettings/index.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +7 -0
- package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
- package/dist/types/src/containers/ScriptProperties/index.d.ts +3 -0
- package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
- package/dist/types/src/containers/TestContainer/TestContainer.d.ts +8 -0
- package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
- package/dist/types/src/containers/TestContainer/index.d.ts +3 -0
- package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +9 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/e2e/ai.test.d.ts +2 -0
- package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
- package/dist/types/src/e2e/deploy.test.d.ts +2 -0
- package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
- package/dist/types/src/hooks/deploy.d.ts +20 -33
- package/dist/types/src/hooks/deploy.d.ts.map +1 -1
- package/dist/types/src/hooks/format.d.ts +5 -4
- package/dist/types/src/hooks/format.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/template.d.ts +7 -16
- package/dist/types/src/hooks/template.d.ts.map +1 -1
- package/dist/types/src/hooks/useCompiler.d.ts +7 -0
- package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
- package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
- package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
- package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +3 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -3
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/notebook/compute-graph.d.ts +58 -0
- package/dist/types/src/notebook/compute-graph.d.ts.map +1 -0
- package/dist/types/src/notebook/compute-graph.test.d.ts +2 -0
- package/dist/types/src/notebook/compute-graph.test.d.ts.map +1 -0
- package/dist/types/src/notebook/eval.d.ts +13 -0
- package/dist/types/src/notebook/eval.d.ts.map +1 -0
- package/dist/types/src/notebook/index.d.ts +2 -0
- package/dist/types/src/notebook/index.d.ts.map +1 -0
- package/dist/types/src/notebook/vfs-parser.d.ts +74 -0
- package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -0
- package/dist/types/src/notebook/vfs-parser.test.d.ts +2 -0
- package/dist/types/src/notebook/vfs-parser.test.d.ts.map +1 -0
- package/dist/types/src/templates/anthropic.d.ts +8 -0
- package/dist/types/src/templates/anthropic.d.ts.map +1 -0
- package/dist/types/src/templates/chess-bot.d.ts +16 -0
- package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
- package/dist/types/src/templates/commentary.d.ts +16 -0
- package/dist/types/src/templates/commentary.d.ts.map +1 -0
- 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/forex-effect.d.ts +4 -1
- package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
- package/dist/types/src/templates/forex.d.ts +4 -1
- package/dist/types/src/templates/forex.d.ts.map +1 -1
- package/dist/types/src/templates/gmail.d.ts.map +1 -1
- package/dist/types/src/templates/index.d.ts +52 -1
- package/dist/types/src/templates/index.d.ts.map +1 -1
- package/dist/types/src/templates/ping.d.ts +3 -0
- package/dist/types/src/templates/ping.d.ts.map +1 -0
- package/dist/types/src/testing/data.d.ts +3 -0
- package/dist/types/src/testing/data.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +2 -0
- package/dist/types/src/testing/index.d.ts.map +1 -0
- package/dist/types/src/testing/simulator.test.d.ts +2 -0
- package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +34 -5
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Notebook.d.ts +108 -0
- package/dist/types/src/types/Notebook.d.ts.map +1 -0
- package/dist/types/src/types/actions.d.ts +40 -0
- package/dist/types/src/types/actions.d.ts.map +1 -0
- package/dist/types/src/types/capabilities.d.ts +12 -0
- package/dist/types/src/types/capabilities.d.ts.map +1 -0
- package/dist/types/src/types/events.d.ts +5 -0
- package/dist/types/src/types/events.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +5 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +6 -0
- package/dist/types/src/types/types.d.ts.map +1 -0
- package/dist/types/src/util/deploy.d.ts +7 -7
- package/dist/types/src/util/deploy.d.ts.map +1 -1
- package/dist/types/src/util/functions.d.ts +6 -3
- package/dist/types/src/util/functions.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +124 -85
- package/src/ScriptPlugin.tsx +57 -77
- package/src/blueprints/index.ts +5 -0
- package/src/blueprints/script-blueprint.ts +31 -0
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +56 -0
- package/src/capabilities/app-graph-builder/index.ts +7 -0
- package/src/capabilities/{artifact-definition.ts → artifact-definition/artifact-definition.ts} +103 -105
- package/src/capabilities/artifact-definition/index.ts +7 -0
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +17 -0
- package/src/capabilities/blueprint-definition/index.ts +7 -0
- package/src/capabilities/compiler/compiler.ts +103 -0
- package/src/capabilities/compiler/index.ts +7 -0
- package/src/capabilities/index.ts +6 -10
- package/src/capabilities/operation-resolver/index.ts +7 -0
- package/src/capabilities/operation-resolver/operation-resolver.ts +75 -0
- package/src/capabilities/react-surface/index.ts +7 -0
- package/src/capabilities/react-surface/react-surface.tsx +129 -0
- package/src/capabilities/settings/index.ts +7 -0
- package/src/capabilities/settings/settings.ts +33 -0
- package/src/compiler/compiler.ts +11 -4
- package/src/components/{FrameContainer/FrameContainer.tsx → FramePanel/FramePanel.tsx} +10 -8
- package/src/components/{FrameContainer → FramePanel}/index.ts +1 -1
- package/src/components/NotebookStack/NotebookCell.tsx +215 -0
- package/src/components/NotebookStack/NotebookMenu.tsx +47 -0
- package/src/components/NotebookStack/NotebookStack.stories.tsx +54 -0
- package/src/components/NotebookStack/NotebookStack.tsx +86 -0
- package/src/components/NotebookStack/index.ts +6 -0
- package/src/components/QueryEditor/QueryEditor.stories.tsx +96 -0
- package/src/components/QueryEditor/QueryEditor.tsx +47 -0
- package/src/components/QueryEditor/index.ts +5 -0
- package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +56 -17
- package/src/components/ScriptToolbar/ScriptToolbar.tsx +38 -34
- package/src/components/TestPanel/TestPanel.tsx +67 -42
- package/src/components/TestPanel/index.ts +0 -1
- package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +89 -34
- package/src/components/TypescriptEditor/TypescriptEditor.tsx +84 -81
- package/src/components/index.ts +5 -7
- package/src/constants.ts +7 -0
- package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +61 -0
- package/src/containers/DeploymentDialog/DeploymentDialog.tsx +99 -0
- package/src/containers/DeploymentDialog/index.ts +7 -0
- package/src/containers/NotebookContainer/NotebookContainer.stories.tsx +87 -0
- package/src/containers/NotebookContainer/NotebookContainer.tsx +267 -0
- package/src/containers/NotebookContainer/index.ts +7 -0
- package/src/containers/ScriptContainer/ScriptContainer.tsx +84 -0
- package/src/containers/ScriptContainer/index.ts +7 -0
- package/src/containers/ScriptObjectSettings/ScriptObjectSettings.tsx +291 -0
- package/src/containers/ScriptObjectSettings/index.ts +7 -0
- package/src/containers/ScriptPluginSettings/ScriptPluginSettings.tsx +66 -0
- package/src/containers/ScriptPluginSettings/index.ts +7 -0
- package/src/containers/ScriptProperties/ScriptProperties.tsx +33 -0
- package/src/containers/ScriptProperties/index.ts +7 -0
- package/src/containers/TestContainer/TestContainer.tsx +28 -0
- package/src/containers/TestContainer/index.ts +7 -0
- package/src/containers/index.ts +13 -0
- package/src/e2e/ai.test.ts +92 -0
- package/src/e2e/deploy.test.ts +64 -0
- package/src/hooks/deploy.ts +52 -45
- package/src/hooks/format.ts +10 -5
- package/src/hooks/index.ts +1 -0
- package/src/hooks/template.ts +22 -25
- package/src/hooks/useCompiler.ts +24 -0
- package/src/hooks/useCreateAndDeployScriptTemplates.ts +15 -16
- package/src/hooks/useToolbarState.ts +29 -4
- package/src/index.ts +3 -1
- package/src/meta.ts +10 -8
- package/src/notebook/compute-graph.test.ts +82 -0
- package/src/notebook/compute-graph.ts +230 -0
- package/src/notebook/eval.ts +105 -0
- package/src/notebook/index.ts +5 -0
- package/src/notebook/vfs-parser.test.ts +149 -0
- package/src/notebook/vfs-parser.ts +451 -0
- package/src/templates/anthropic.ts +42 -0
- package/src/templates/chat.ts +1 -1
- package/src/templates/chess-bot.ts +58 -0
- package/src/templates/commentary.ts +231 -0
- package/src/templates/data-generator.ts +10 -4
- package/src/templates/discord.ts +14 -6
- package/src/templates/forex-effect.ts +24 -25
- package/src/templates/forex.ts +9 -6
- package/src/templates/gmail.ts +37 -67
- package/src/templates/index.ts +36 -23
- package/src/templates/ping.ts +17 -0
- package/src/testing/data.ts +72 -0
- package/src/testing/index.ts +5 -0
- package/src/testing/simulator.test.ts +40 -0
- package/src/translations.ts +37 -7
- package/src/types/Notebook.ts +45 -0
- package/src/types/actions.ts +45 -0
- package/src/types/capabilities.ts +17 -0
- package/src/types/events.ts +11 -0
- package/src/types/index.ts +5 -1
- package/src/types/types.ts +15 -0
- package/src/util/deploy.ts +38 -61
- package/src/util/functions.ts +58 -25
- package/src/vite-env.d.ts +2 -0
- package/dist/lib/browser/DeploymentDialog-M4QIHTDR.mjs +0 -12
- package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs +0 -262
- package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-HLQ7K3BT.mjs +0 -64
- package/dist/lib/browser/app-graph-builder-HLQ7K3BT.mjs.map +0 -7
- package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs +0 -249
- package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs.map +0 -7
- package/dist/lib/browser/chunk-3U6DTUH3.mjs +0 -283
- package/dist/lib/browser/chunk-3U6DTUH3.mjs.map +0 -7
- package/dist/lib/browser/chunk-5TVBECWH.mjs +0 -15
- package/dist/lib/browser/chunk-5TVBECWH.mjs.map +0 -7
- package/dist/lib/browser/chunk-FIM2MVNJ.mjs +0 -555
- package/dist/lib/browser/chunk-FIM2MVNJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-FMDXKOP7.mjs +0 -233
- package/dist/lib/browser/chunk-FMDXKOP7.mjs.map +0 -7
- package/dist/lib/browser/chunk-IS4OG2UW.mjs +0 -39
- package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +0 -7
- package/dist/lib/browser/chunk-P4HQKUCP.mjs +0 -153
- package/dist/lib/browser/chunk-P4HQKUCP.mjs.map +0 -7
- package/dist/lib/browser/chunk-QYAREHGH.mjs.map +0 -7
- package/dist/lib/browser/chunk-R4R7VOFY.mjs +0 -88
- package/dist/lib/browser/chunk-R4R7VOFY.mjs.map +0 -7
- package/dist/lib/browser/compiler-CXCUA4UQ.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-7B77IG3N.mjs +0 -91
- package/dist/lib/browser/intent-resolver-7B77IG3N.mjs.map +0 -7
- package/dist/lib/browser/react-surface-FYYXZA7C.mjs +0 -104
- package/dist/lib/browser/react-surface-FYYXZA7C.mjs.map +0 -7
- package/dist/lib/browser/settings-KCTBK5TY.mjs +0 -24
- package/dist/lib/browser/settings-KCTBK5TY.mjs.map +0 -7
- package/dist/lib/node-esm/DeploymentDialog-3KPRWFE7.mjs +0 -13
- package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs +0 -263
- package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-7EYIHWH4.mjs +0 -65
- package/dist/lib/node-esm/app-graph-builder-7EYIHWH4.mjs.map +0 -7
- package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs +0 -250
- package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-35M3CHYE.mjs +0 -16
- package/dist/lib/node-esm/chunk-35M3CHYE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7NMI4CEU.mjs +0 -556
- package/dist/lib/node-esm/chunk-7NMI4CEU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AHXJ6NQU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs +0 -90
- package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JIPFLBYA.mjs +0 -40
- package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QKK3NDHW.mjs +0 -154
- package/dist/lib/node-esm/chunk-QKK3NDHW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RT43MACC.mjs +0 -284
- package/dist/lib/node-esm/chunk-RT43MACC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XJPK3IYI.mjs +0 -234
- package/dist/lib/node-esm/chunk-XJPK3IYI.mjs.map +0 -7
- package/dist/lib/node-esm/compiler-EPFKQXPE.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-FRZGS4TB.mjs +0 -92
- package/dist/lib/node-esm/intent-resolver-FRZGS4TB.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-V32NWHKN.mjs +0 -105
- package/dist/lib/node-esm/react-surface-V32NWHKN.mjs.map +0 -7
- package/dist/lib/node-esm/settings-DXZ334A3.mjs +0 -25
- package/dist/lib/node-esm/settings-DXZ334A3.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/capabilities.d.ts +0 -5
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/compiler.d.ts +0 -4
- package/dist/types/src/capabilities/compiler.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface.d.ts +0 -4
- package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings.d.ts +0 -4
- package/dist/types/src/capabilities/settings.d.ts.map +0 -1
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +0 -11
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +0 -18
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +0 -1
- 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 +0 -12
- 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/ScriptContainer.d.ts +0 -12
- 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 -6
- 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 +0 -8
- package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
- package/dist/types/src/events.d.ts +0 -4
- package/dist/types/src/events.d.ts.map +0 -1
- package/dist/types/src/templates/chess.d.ts +0 -3
- package/dist/types/src/templates/chess.d.ts.map +0 -1
- package/dist/types/src/templates/echo.d.ts +0 -6
- package/dist/types/src/templates/echo.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -38
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder.ts +0 -64
- package/src/capabilities/capabilities.ts +0 -12
- package/src/capabilities/compiler.ts +0 -33
- package/src/capabilities/intent-resolver.ts +0 -80
- package/src/capabilities/react-surface.tsx +0 -89
- package/src/capabilities/settings.ts +0 -21
- package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +0 -39
- package/src/components/DeploymentDialog/DeploymentDialog.tsx +0 -112
- 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/ScriptContainer.tsx +0 -68
- package/src/components/Settings/ScriptObjectSettings.tsx +0 -206
- package/src/components/Settings/ScriptPluginSettings.tsx +0 -71
- package/src/components/Settings/index.ts +0 -6
- package/src/components/TestPanel/TestContainer.tsx +0 -26
- package/src/events.ts +0 -11
- package/src/templates/chess.ts +0 -47
- package/src/templates/echo.ts +0 -8
- package/src/types/schema.ts +0 -37
- /package/dist/lib/browser/{DeploymentDialog-M4QIHTDR.mjs.map → blueprints/index.mjs.map} +0 -0
- /package/dist/lib/{node-esm/DeploymentDialog-3KPRWFE7.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/NotebookContainer/NotebookContainer.tsx", "../../../src/notebook/compute-graph.ts", "../../../src/notebook/eval.ts", "../../../src/notebook/vfs-parser.ts", "../../../src/containers/NotebookContainer/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport type * as Types from 'effect/Types';\nimport React, { useCallback, useContext, useMemo, useState } from 'react';\n\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { AgentFunctions } from '@dxos/assistant-toolkit';\nimport { Blueprint, Prompt } from '@dxos/blueprints';\nimport { Filter, Obj, Query, Ref } from '@dxos/echo';\nimport { QueryBuilder } from '@dxos/echo-query';\nimport { type FunctionDefinition, FunctionInvocationService, TracingService } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { useComputeRuntimeCallback } from '@dxos/plugin-automation';\nimport { Graph } from '@dxos/plugin-explorer/types';\nimport { DropdownMenu, IconButton, Panel, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { Text, ViewModel } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { NotebookMenu, NotebookStack, type NotebookStackProps, type TypescriptEditorProps } from '../../components';\nimport { meta } from '../../meta';\nimport { ComputeGraph } from '../../notebook';\nimport { type Notebook } from '../../types';\n\nconst INCLUDE_BLUEPRINTS = [\n 'org.dxos.blueprint.assistant',\n 'org.dxos.blueprint.database',\n 'org.dxos.blueprint.markdown',\n];\n\n// TODO(burdon): Support calling named deployed functions (as with sheet).\n\nexport type NotebookContainerProps = SurfaceComponentProps<Notebook.Notebook, Pick<TypescriptEditorProps, 'env'>>;\n\nexport const NotebookContainer = ({ role, subject: notebook, attendableId, env }: NotebookContainerProps) => {\n const { t } = useTranslation(meta.id);\n const registry = useContext(RegistryContext);\n const db = Obj.getDatabase(notebook);\n const { hasAttention } = useAttention(attendableId);\n\n // TODO(burdon): Consolidate execution and state (with graph).\n // Generalize ComputeGraph evaluation function (using effects).\n const graph = useMemo(() => notebook && new ComputeGraph(notebook, registry), [notebook, registry]);\n\n const [queryValues, setQueryValues] = useState<Record<string, any>>({});\n const handleExecQueries = useCallback(async () => {\n invariant(db);\n\n const builder = new QueryBuilder();\n for (const cell of notebook?.cells ?? []) {\n if (cell.type === 'query') {\n if (cell.source?.target) {\n const source = cell.source.target.content;\n const { name, filter } = builder.build(source);\n if (filter) {\n const ast = Query.select(filter).ast;\n const graph = cell.graph?.target;\n if (!graph) {\n const { view } = await ViewModel.makeFromDatabase({ db });\n const newGraph = Graph.make({ query: { ast }, view });\n Obj.change(notebook!, (n) => {\n const c = n.cells.find((c) => c.id === cell.id);\n if (c) {\n c.graph = Ref.make(newGraph);\n c.name = name;\n }\n });\n } else {\n Obj.change(graph, (g) => {\n g.query.ast = ast as Obj.Mutable<typeof ast>;\n });\n }\n }\n }\n\n if (cell.name && cell.graph?.target) {\n const graph = Obj.getSnapshot(cell.graph?.target);\n const query = Query.fromAst(graph.query.ast);\n const objects = await db.query(query).run();\n const objectIds = objects?.map((obj) => obj.id);\n setQueryValues((prev) => ({ ...prev, [cell.name!]: objectIds }));\n }\n }\n }\n }, [db, notebook, graph]);\n\n const [promptResults, setPromptResults] = useState<Record<string, string>>({});\n const handleExecPrompts = useComputeRuntimeCallback(\n db?.spaceId,\n Effect.fnUntraced(function* () {\n invariant(graph);\n\n const prompts =\n notebook?.cells\n .filter((cell) => cell.type === 'prompt')\n .map((cell) => cell.prompt)\n .filter(isNonNullable) ?? [];\n\n for (const prompt of prompts) {\n yield* runPrompt({\n prompt,\n input: { ...queryValues, ...graph.getValuesByName() },\n onResult: (result) =>\n setPromptResults((prev) => ({\n ...prev,\n [prompt.dxn.toString()]: result,\n })),\n });\n }\n }),\n [notebook, graph, queryValues],\n );\n\n // TODO(burdon): Cache values in context (preserve when switched).\n const handleCompute = useCallback(async () => {\n // TODO(burdon): Generalize executors (dependencies).\n await graph?.evaluate();\n await handleExecQueries();\n await handleExecPrompts();\n }, [graph, handleExecQueries, handleExecPrompts]);\n\n const handleRearrange = useCallback<NonNullable<NotebookStackProps['onRearrange']>>(\n (source, target) => {\n invariant(notebook);\n const from = notebook.cells.findIndex((cell) => cell.id === source.id);\n const to = notebook.cells.findIndex((cell) => cell.id === target.id);\n if (from != null && to != null) {\n Obj.change(notebook, (n) => {\n const cell = n.cells.splice(from, 1)[0];\n if (cell) {\n n.cells.splice(to, 0, cell);\n }\n });\n }\n },\n [notebook],\n );\n\n const handleCellInsert = useCallback<NonNullable<NotebookStackProps['onCellInsert']>>(\n async (type, after) => {\n invariant(notebook);\n const cell: Types.Mutable<Notebook.Cell> = { id: crypto.randomUUID(), type };\n switch (type) {\n case 'markdown':\n case 'script':\n case 'query': {\n cell.source = Ref.make(Text.make());\n break;\n }\n\n case 'prompt': {\n if (db) {\n const objects = await db.query(Query.select(Filter.type(Blueprint.Blueprint))).run();\n const blueprints = objects\n .filter((blueprint) => INCLUDE_BLUEPRINTS.includes(blueprint.key))\n .map((blueprint) => Ref.make(blueprint));\n cell.prompt = Ref.make(Prompt.make({ instructions: '', blueprints }));\n }\n break;\n }\n }\n\n const idx = after ? notebook.cells.findIndex((cell) => cell.id === after) : notebook.cells.length;\n Obj.change(notebook, (n) => {\n n.cells.splice(idx, 0, cell);\n });\n },\n [db, notebook],\n );\n\n const handleCellDelete = useCallback<NonNullable<NotebookStackProps['onCellDelete']>>(\n (id) => {\n invariant(notebook);\n const idx = notebook.cells.findIndex((cell) => cell.id === id);\n if (idx !== -1) {\n Obj.change(notebook, (n) => {\n n.cells.splice(idx, 1);\n });\n }\n },\n [notebook],\n );\n\n return (\n <Panel.Root role={role} className='dx-document'>\n <Panel.Toolbar asChild>\n <Toolbar.Root disabled={!hasAttention}>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton icon='ph--plus--regular' iconOnly label={t('notebook cell insert label')} />\n </DropdownMenu.Trigger>\n <NotebookMenu onCellInsert={handleCellInsert} />\n </DropdownMenu.Root>\n <Toolbar.IconButton\n icon='ph--play--fill'\n iconOnly\n label={t('compute label')}\n classNames='text-success-text'\n onClick={handleCompute}\n />\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <NotebookStack\n db={db}\n notebook={notebook}\n graph={graph}\n env={env}\n promptResults={promptResults}\n onRearrange={handleRearrange}\n onCellInsert={handleCellInsert}\n onCellDelete={handleCellDelete}\n />\n </Panel.Content>\n </Panel.Root>\n );\n};\n\n// TODO(wittjosiah): Factor out. Copied from PromptArticle in plugin-assistant.\nconst runPrompt = Effect.fn(function* ({\n prompt,\n input,\n onResult,\n}: {\n prompt: Ref.Ref<Prompt.Prompt>;\n input: Record<string, any>;\n onResult: (result: string) => void;\n}) {\n const inputData: FunctionDefinition.Input<typeof AgentFunctions.Prompt> = { prompt, input };\n const tracer = yield* TracingService;\n const trace = yield* tracer.traceInvocationStart({\n target: undefined,\n payload: {\n data: {},\n },\n });\n\n // Invoke the function.\n const result = yield* FunctionInvocationService.invokeFunction(AgentFunctions.Prompt, inputData).pipe(\n Effect.provide(trace.invocationTraceQueue ? TracingService.layerInvocation(trace) : TracingService.layerNoop),\n Effect.exit,\n );\n\n Exit.match(result, {\n onFailure: (cause) => {\n const error = Cause.prettyErrors(cause)[0];\n log.error(error.message, error.cause ?? error.stack);\n onResult(error.message);\n },\n onSuccess: (result: any) => {\n onResult(result.note);\n },\n });\n\n yield* tracer.traceInvocationEnd({\n trace,\n // TODO(dmaretskyi): Might miss errors.\n exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : undefined,\n });\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, type Registry } from '@effect-atom/atom-react';\n\nimport { log } from '@dxos/log';\n\nimport { type Notebook } from '../types';\n\nimport { evalScript } from './eval';\nimport { type ParsedExpression, VirtualTypeScriptParser } from './vfs-parser';\n\n/**\n * Compute graph that evaluates the notebook cells.\n */\n// TODO(burdon): Reconcile with @dxos/conductor.\nexport class ComputeGraph {\n private readonly _parser = new VirtualTypeScriptParser();\n\n private _expressionsAtom = Atom.make<Record<string, ParsedExpression>>({});\n private _valuesByCellIdAtom = Atom.make<Record<string, any>>({});\n private _valuesByNameAtom = Atom.make<Record<string, any>>({});\n\n constructor(\n private readonly _notebook: Notebook.Notebook,\n private readonly _registry: Registry.Registry,\n ) {}\n\n /**\n * Atom for parsed expressions by cell ID.\n */\n get expressions(): Atom.Atom<Record<string, ParsedExpression>> {\n return this._expressionsAtom;\n }\n\n /**\n * Get current expressions by cell ID.\n */\n getExpressions(): Record<string, ParsedExpression> {\n return this._registry.get(this._expressionsAtom);\n }\n\n /**\n * Atom for computed values by cell ID.\n */\n get values(): Atom.Atom<Record<string, any>> {\n return this._valuesByCellIdAtom;\n }\n\n /**\n * Get computed values by cell ID.\n */\n getValues(): Record<string, any> {\n return this._registry.get(this._valuesByCellIdAtom);\n }\n\n /**\n * Atom for computed values by name.\n */\n get valuesByName(): Atom.Atom<Record<string, any>> {\n return this._valuesByNameAtom;\n }\n\n /**\n * Get current values by name.\n */\n getValuesByName(): Record<string, any> {\n return this._registry.get(this._valuesByNameAtom);\n }\n\n /**\n * Get computed value by cell ID.\n */\n getValue(cellId: string): any {\n return this._registry.get(this._valuesByCellIdAtom)[cellId];\n }\n\n /**\n * Compute values.\n */\n async evaluate() {\n // Parse expressions.\n const { expressions, dependencyGraph } = this.parse();\n this._registry.set(this._valuesByCellIdAtom, {});\n this._registry.set(this._valuesByNameAtom, {});\n\n // Create a map of cell IDs to expressions for easy lookup.\n const cellExpressions = new Map<string, ParsedExpression>();\n Object.entries(expressions).forEach(([id, expr]) => {\n cellExpressions.set(id, expr);\n });\n\n // Topological sort to determine evaluation order.\n const evaluationOrder = this.topologicalSort(Object.keys(expressions), dependencyGraph);\n\n // Values by reference name.\n const valuesByName: Record<string, any> = {};\n const valuesByCellId: Record<string, any> = {};\n\n // Evaluate cells in dependency order.\n for (const cellId of evaluationOrder) {\n const expr = cellExpressions.get(cellId);\n if (!expr) {\n log.error('no expression for cell', { cellId });\n continue;\n }\n\n const cellSource = this._notebook.cells.find((cell) => cell.id === cellId)?.source?.target?.content;\n if (!cellSource) {\n log.error('no source for cell', { cellId });\n continue;\n }\n\n try {\n // For assignments or declarations, evaluate and store the value.\n if (expr.name && expr.value !== undefined) {\n // If the parser extracted a literal value, use it directly.\n valuesByName[expr.name] = expr.value;\n valuesByCellId[cellId] = expr.value;\n } else if (expr.name) {\n // For non-literal assignments, we need to evaluate the expression.\n // The parser identifies it's an assignment, so we can extract the RHS.\n const equalIndex = cellSource.indexOf('=');\n if (equalIndex !== -1) {\n // Find the actual assignment operator (not in strings or other contexts).\n let rhs = cellSource.substring(equalIndex + 1).trim();\n\n // Handle semicolon at the end.\n if (rhs.endsWith(';')) {\n rhs = rhs.slice(0, -1).trim();\n }\n\n const result = await this.eval(rhs, valuesByName);\n valuesByName[expr.name] = result;\n if (typeof result !== 'function') {\n valuesByCellId[cellId] = result;\n }\n }\n } else {\n // For expressions without assignment, just evaluate.\n const result = await this.eval(cellSource, valuesByName);\n valuesByCellId[cellId] = result;\n }\n } catch (error) {\n // TODO(burdon): Set error state.\n log.error('error evaluating cell', { cellId, error });\n }\n }\n\n this._registry.set(this._valuesByCellIdAtom, valuesByCellId);\n this._registry.set(this._valuesByNameAtom, valuesByName);\n return valuesByCellId;\n }\n\n private async eval(source: string, values: Record<string, any>) {\n return evalScript(source, values);\n }\n\n /**\n * Parse expressions.\n */\n parse() {\n const expressions = this._notebook.cells\n .filter((cell) => cell.type === 'script')\n .reduce<Record<string, ParsedExpression>>((acc, cell) => {\n const text = cell.source?.target?.content.trim();\n if (text) {\n const parsed = this._parser.parseExpression(text);\n acc[cell.id] = parsed;\n }\n\n return acc;\n }, {});\n\n // Build dependency graph.\n const dependencyGraph = this.buildDependencyGraph(expressions);\n this._registry.set(this._expressionsAtom, expressions);\n return { expressions, dependencyGraph };\n }\n\n private topologicalSort(nodes: string[], dependencies: Record<string, string[]>): string[] {\n const visited = new Set<string>();\n const result: string[] = [];\n\n const visit = (node: string) => {\n if (visited.has(node)) {\n return;\n }\n\n visited.add(node);\n\n // Visit dependencies first.\n const deps = dependencies[node] || [];\n deps.forEach((dep) => visit(dep));\n result.push(node);\n };\n\n // Visit all nodes.\n nodes.forEach((node) => visit(node));\n return result;\n }\n\n private buildDependencyGraph(expressions: Record<string, ParsedExpression>): Record<string, string[]> {\n // Create a map of variable names to their cell IDs.\n const nameToCellId = new Map<string, string>();\n Object.entries(expressions).forEach(([id, expr]) => {\n if (expr.name) {\n nameToCellId.set(expr.name, id);\n }\n });\n\n // Build the dependency graph using cell IDs.\n const graph: Record<string, string[]> = {};\n Object.entries(expressions).forEach(([id, expr]) => {\n if (expr.references && expr.references.length > 0) {\n // Map variable references to cell IDs.\n const dependencyCellIds = expr.references\n .map((ref) => nameToCellId.get(ref))\n .filter((cellId): cellId is string => cellId !== undefined && cellId !== id);\n\n if (dependencyCellIds.length > 0) {\n graph[id] = dependencyCellIds;\n }\n }\n });\n\n return graph;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { trim } from '@dxos/util';\n\n/**\n * Evaluate the script (with dependencies as arguments).\n */\nexport const evalScript = async (code: string, deps: Record<string, any> = {}) => {\n // Create a sandboxed environment that blocks access to window and document.\n const sandbox = {\n ...deps,\n\n // Block access to global objects.\n console: undefined,\n document: undefined,\n global: undefined,\n globalThis: undefined,\n self: undefined,\n window: undefined,\n\n // Allow some safe globals.\n Array,\n Boolean,\n Date,\n Error,\n JSON,\n Map,\n Math,\n Number,\n Object,\n Promise,\n RegExp,\n Set,\n String,\n\n // Functions.\n isFinite,\n isNaN,\n parseFloat,\n parseInt,\n\n // Note: undefined and null are not included as they are keywords, not variables.\n };\n\n // Create function with all sandbox keys as parameters.\n const sandboxKeys = Object.keys(sandbox);\n const sandboxValues = Object.values(sandbox);\n\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n const fn = new Function(\n ...sandboxKeys,\n trim`\n 'use strict';\n return ${code};\n `,\n );\n\n return fn(...sandboxValues);\n};\n\n/**\n * Globals.\n */\nexport const builtIns = new Set([\n // Types.\n 'Array',\n 'Date',\n 'Error',\n 'JSON',\n 'Map',\n 'Math',\n 'Number',\n 'Object',\n 'Promise',\n 'RegExp',\n 'Set',\n 'String',\n\n // Functions.\n 'isFinite',\n 'isNaN',\n 'parseFloat',\n 'parseInt',\n]);\n\n/**\n * Default system definitions.\n */\nexport const systemDefinitions = trim`\n interface Array<T> { length: number; [n: number]: T; }\n interface Boolean {}\n interface Function {}\n interface IArguments {}\n interface Number {}\n interface Object {}\n interface RegExp {}\n interface String { length: number; }\n\n interface CallableFunction extends Function {}\n interface NewableFunction extends Function {}\n\n declare var console: { log(...args: any[]): void };\n`;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createSystem, createVirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport ts from 'typescript';\n\nimport { invariant } from '@dxos/invariant';\n\nimport { builtIns, systemDefinitions } from './eval';\n\n/**\n * Default system definitions.\n */\nconst systemFiles: VirtualFile[] = [\n {\n filename: '/lib.d.ts',\n content: systemDefinitions,\n },\n];\n\nexport type ParsedExpression = {\n name?: string;\n type?: 'function' | 'variable' | 'class' | 'interface';\n value?: any;\n valueType?: string;\n parameters?: Array<{ name: string; type: string }>;\n returnType?: string;\n references?: string[];\n};\n\nexport type VirtualFile = {\n filename: string;\n content: string;\n};\n\n/**\n * TypeScript parser using Virtual File System for browser compatibility.\n * This provides full TypeScript analysis including type information.\n */\nexport class VirtualTypeScriptParser {\n protected compilerOptions: ts.CompilerOptions = {\n target: ts.ScriptTarget.ES2020,\n module: ts.ModuleKind.ESNext,\n strict: true,\n esModuleInterop: true,\n skipLibCheck: true,\n forceConsistentCasingInfilenames: true,\n jsx: ts.JsxEmit.React,\n noLib: true, // Don't automatically include default lib files.\n };\n\n /**\n * Parse a single expression or statement.\n */\n parseExpression(input: string): ParsedExpression {\n invariant(input.trim() !== '', 'input must not be empty');\n const files: VirtualFile[] = [{ filename: '/temp.ts', content: input }];\n const analysis = this.analyzeFiles(files);\n\n // If no declarations found, check for standalone expression references.\n if (analysis.length === 0) {\n const sourcefilename = '/temp.ts';\n const env = this.createEnvironment([{ filename: sourcefilename, content: input }]);\n const sourceFile = env.getSourceFile(sourcefilename);\n const typeChecker = env.languageService.getProgram()?.getTypeChecker();\n\n if (sourceFile && typeChecker) {\n // Check for assignment expressions.\n const assignmentInfo = this.findAssignmentExpression(sourceFile, typeChecker);\n if (assignmentInfo) {\n return assignmentInfo;\n }\n\n const references = this.findAllReferences(sourceFile, typeChecker);\n return { references };\n }\n }\n\n return analysis[0];\n }\n\n /**\n * Analyze multiple files with full type information.\n */\n analyzeFiles(files: VirtualFile[]): ParsedExpression[] {\n const env = this.createEnvironment(files);\n const results: ParsedExpression[] = [];\n const typeChecker = env.languageService.getProgram()?.getTypeChecker();\n\n // Analyze each file.\n files.forEach((file) => {\n const sourceFile = env.getSourceFile(file.filename);\n if (!sourceFile || !typeChecker) return;\n\n const fileResults = this.analyzeSourceFile(sourceFile, typeChecker);\n results.push(...fileResults);\n });\n\n return results;\n }\n\n /**\n * Analyze a source file with type information.\n */\n protected analyzeSourceFile(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker): ParsedExpression[] {\n const results: ParsedExpression[] = [];\n\n const visit = (node: ts.Node) => {\n // Function declarations.\n if (ts.isFunctionDeclaration(node) && node.name) {\n const symbol = typeChecker.getSymbolAtLocation(node.name);\n const type = symbol && typeChecker.getTypeOfSymbolAtLocation(symbol, node);\n const signature = type && typeChecker.getSignaturesOfType(type, ts.SignatureKind.Call)[0];\n\n results.push({\n name: node.name.text,\n type: 'function',\n parameters: this.extractParameters(signature, typeChecker),\n returnType: signature ? typeChecker.typeToString(signature.getReturnType()) : 'any',\n references: this.findReferences(node, sourceFile, typeChecker),\n });\n }\n\n // Variable declarations.\n else if (ts.isVariableStatement(node)) {\n node.declarationList.declarations.forEach((declaration) => {\n if (ts.isIdentifier(declaration.name)) {\n const symbol = typeChecker.getSymbolAtLocation(declaration.name);\n const type = symbol && typeChecker.getTypeOfSymbolAtLocation(symbol, declaration);\n\n let kind: 'function' | 'variable' = 'variable';\n let parameters: Array<{ name: string; type: string }> | undefined;\n let returnType: string | undefined;\n let value: any;\n\n // Get the type string.\n const typeString = type ? typeChecker.typeToString(type) : 'any';\n\n // Check if it's a function.\n if (declaration.initializer) {\n if (ts.isArrowFunction(declaration.initializer) || ts.isFunctionExpression(declaration.initializer)) {\n kind = 'function';\n const funcType = typeChecker.getTypeAtLocation(declaration.initializer);\n const signature = typeChecker.getSignaturesOfType(funcType, ts.SignatureKind.Call)[0];\n if (signature) {\n parameters = this.extractParameters(signature, typeChecker);\n returnType = typeChecker.typeToString(signature.getReturnType());\n }\n } else {\n // Extract literal values\n if (ts.isNumericLiteral(declaration.initializer)) {\n value = Number(declaration.initializer.text);\n } else if (ts.isStringLiteral(declaration.initializer)) {\n value = declaration.initializer.text;\n }\n }\n }\n\n // Find references in the initializer only.\n const refs = declaration.initializer\n ? this.findReferences(declaration.initializer, sourceFile, typeChecker)\n : [];\n\n results.push({\n name: declaration.name.text,\n type: kind,\n valueType: typeString,\n value,\n parameters,\n returnType,\n references: refs,\n });\n }\n });\n }\n\n // Class declarations.\n else if (ts.isClassDeclaration(node) && node.name) {\n results.push({\n name: node.name.text,\n type: 'class',\n references: this.findReferences(node, sourceFile, typeChecker),\n });\n }\n\n // Interface declarations.\n else if (ts.isInterfaceDeclaration(node)) {\n results.push({\n name: node.name.text,\n type: 'interface',\n references: this.findReferences(node, sourceFile, typeChecker),\n });\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n return results;\n }\n\n /**\n * Extract parameter information from a signature.\n */\n private extractParameters(\n signature: ts.Signature | undefined,\n typeChecker: ts.TypeChecker,\n ): Array<{ name: string; type: string }> {\n if (!signature) return [];\n\n return signature.parameters.map((param) => ({\n name: param.getName(),\n type: typeChecker.typeToString(typeChecker.getTypeOfSymbolAtLocation(param, param.valueDeclaration!)),\n }));\n }\n\n /**\n * Find all references to variables used in a node.\n */\n private findReferences(node: ts.Node, _sourceFile: ts.SourceFile, _typeChecker: ts.TypeChecker): string[] {\n const references = new Set<string>();\n const localSymbols = new Set<string>();\n\n // First, collect local symbols (parameters, local variables).\n const collectLocalSymbols = (node: ts.Node) => {\n if (ts.isFunctionDeclaration(node) || ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {\n node.parameters.forEach((param) => {\n if (ts.isIdentifier(param.name)) {\n localSymbols.add(param.name.text);\n }\n });\n }\n\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {\n localSymbols.add(node.name.text);\n }\n\n ts.forEachChild(node, collectLocalSymbols);\n };\n\n collectLocalSymbols(node);\n\n // Then find all identifier references.\n const findRefs = (node: ts.Node) => {\n if (ts.isIdentifier(node)) {\n // Skip if it's a local symbol.\n if (!localSymbols.has(node.text)) {\n // Check if it's a reference (not a declaration).\n const parent = node.parent;\n const isDeclaration =\n (ts.isVariableDeclaration(parent) && parent.name === node) ||\n (ts.isFunctionDeclaration(parent) && parent.name === node) ||\n (ts.isParameter(parent) && parent.name === node);\n\n if (!isDeclaration && !this.isBuiltIn(node.text)) {\n references.add(node.text);\n }\n }\n }\n ts.forEachChild(node, findRefs);\n };\n\n findRefs(node);\n return Array.from(references);\n }\n\n /**\n * Check if a name is a built-in global.\n */\n protected isBuiltIn(name: string): boolean {\n return builtIns.has(name);\n }\n\n /**\n * Find assignment expressions in a source file.\n */\n private findAssignmentExpression(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker): ParsedExpression | null {\n let result: ParsedExpression | null = null;\n\n const visit = (node: ts.Node) => {\n if (ts.isExpressionStatement(node) && ts.isBinaryExpression(node.expression)) {\n const expr = node.expression;\n if (expr.operatorToken.kind === ts.SyntaxKind.EqualsToken && ts.isIdentifier(expr.left)) {\n const type = typeChecker.getTypeAtLocation(expr.right);\n const typeString = typeChecker.typeToString(type);\n\n // Get the literal value if it's a literal.\n let value: any;\n if (ts.isNumericLiteral(expr.right)) {\n value = Number(expr.right.text);\n } else if (ts.isStringLiteral(expr.right)) {\n value = expr.right.text;\n }\n\n // Find references in the right-hand side.\n const references = this.findReferences(expr.right, sourceFile, typeChecker);\n\n result = {\n name: expr.left.text,\n type: 'variable',\n valueType: typeString,\n value,\n references,\n };\n }\n }\n if (!result) {\n ts.forEachChild(node, visit);\n }\n };\n\n visit(sourceFile);\n return result;\n }\n\n /**\n * Find all identifier references in a source file.\n */\n protected findAllReferences(sourceFile: ts.SourceFile, _typeChecker: ts.TypeChecker): string[] {\n const references = new Set<string>();\n\n const visit = (node: ts.Node) => {\n if (ts.isIdentifier(node)) {\n // Skip if it's a declaration.\n const parent = node.parent;\n const isDeclaration =\n (ts.isVariableDeclaration(parent) && parent.name === node) ||\n (ts.isFunctionDeclaration(parent) && parent.name === node) ||\n (ts.isParameter(parent) && parent.name === node);\n\n // Skip if it's the left-hand side of an assignment.\n const isAssignmentTarget =\n ts.isBinaryExpression(parent) &&\n parent.operatorToken.kind === ts.SyntaxKind.EqualsToken &&\n parent.left === node;\n\n if (!isDeclaration && !isAssignmentTarget && !this.isBuiltIn(node.text)) {\n references.add(node.text);\n }\n }\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n return Array.from(references);\n }\n\n protected createEnvironment(files: VirtualFile[]) {\n const allFiles = [...systemFiles, ...files];\n\n const fileMap = new Map<string, string>();\n allFiles.forEach(({ filename, content }) => {\n fileMap.set(filename, content);\n });\n\n const system = createSystem(fileMap);\n return createVirtualTypeScriptEnvironment(\n system,\n allFiles.map(({ filename }) => filename),\n ts,\n this.compilerOptions,\n );\n }\n}\n\n/**\n * Notebook-specific parser with dependency analysis.\n */\nexport class NotebookVirtualParser extends VirtualTypeScriptParser {\n /**\n * Analyze notebook cells with full type checking.\n */\n analyzeNotebook(cells: Array<{ id: string; code: string }>) {\n // Create cumulative environment where each cell can see previous cells.\n const cumulativeCode: string[] = [];\n const cellAnalysis: Map<\n string,\n {\n exports: ParsedExpression[];\n imports: string[];\n errors: ts.Diagnostic[];\n }\n > = new Map();\n\n cells.forEach((cell) => {\n // Create files for all cells up to current.\n const files: VirtualFile[] = [];\n\n // Add previous cells as context.\n if (cumulativeCode.length > 0) {\n files.push({\n filename: '/context.ts',\n content: cumulativeCode.join('\\n'),\n });\n }\n\n // Add current cell.\n const filename = `/cell/${cell.id}.ts`;\n files.push({\n filename,\n content: cell.code,\n });\n\n // Create environment.\n const env = this.createEnvironment(files);\n\n // Get diagnostics (errors).\n const diagnostics = env.languageService.getSemanticDiagnostics(filename);\n\n // Analyze current cell.\n const sourceFile = env.getSourceFile(filename);\n const typeChecker = env.languageService.getProgram()?.getTypeChecker();\n\n if (sourceFile && typeChecker) {\n const exports = this.analyzeSourceFile(sourceFile, typeChecker);\n\n // Find all references in the current cell.\n const allRefs = new Set<string>();\n exports.forEach((exp) => {\n exp.references?.forEach((ref) => allRefs.add(ref));\n });\n\n // Also check for references not in exports (e.g., console.log(y)).\n const additionalRefs = this.findAllReferences(sourceFile, typeChecker);\n additionalRefs.forEach((ref) => allRefs.add(ref));\n\n // Determine which references are imports from previous cells.\n const previousExports = new Set<string>();\n for (const [_prevCellId, prevAnalysis] of cellAnalysis) {\n prevAnalysis.exports.forEach((exp) => {\n if (exp.name) previousExports.add(exp.name);\n });\n }\n\n const imports = Array.from(allRefs).filter((ref) => previousExports.has(ref));\n\n cellAnalysis.set(cell.id, {\n exports,\n imports,\n errors: diagnostics,\n });\n }\n\n // Add current cell code to cumulative.\n cumulativeCode.push(cell.code);\n });\n\n return cellAnalysis;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { NotebookContainer } from './NotebookContainer';\n\nexport default NotebookContainer;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["RegistryContext", "Cause", "Effect", "Exit", "React", "useCallback", "useContext", "useMemo", "useState", "AgentFunctions", "Blueprint", "Prompt", "Filter", "Obj", "Query", "Ref", "QueryBuilder", "FunctionInvocationService", "TracingService", "invariant", "log", "useComputeRuntimeCallback", "Graph", "DropdownMenu", "IconButton", "Panel", "Toolbar", "useTranslation", "useAttention", "Text", "ViewModel", "isNonNullable", "Atom", "log", "trim", "evalScript", "code", "deps", "sandbox", "console", "undefined", "document", "global", "globalThis", "self", "window", "Array", "Boolean", "Date", "Error", "JSON", "Map", "Math", "Number", "Object", "Promise", "RegExp", "Set", "String", "isFinite", "isNaN", "parseFloat", "parseInt", "sandboxKeys", "keys", "sandboxValues", "values", "fn", "Function", "trim", "builtIns", "systemDefinitions", "createSystem", "createVirtualTypeScriptEnvironment", "ts", "invariant", "systemFiles", "filename", "content", "systemDefinitions", "VirtualTypeScriptParser", "compilerOptions", "target", "ts", "ScriptTarget", "ES2020", "module", "ModuleKind", "ESNext", "strict", "esModuleInterop", "skipLibCheck", "forceConsistentCasingInfilenames", "jsx", "JsxEmit", "React", "noLib", "parseExpression", "input", "invariant", "trim", "files", "analysis", "analyzeFiles", "length", "sourcefilename", "env", "createEnvironment", "sourceFile", "getSourceFile", "typeChecker", "languageService", "getProgram", "getTypeChecker", "assignmentInfo", "findAssignmentExpression", "references", "findAllReferences", "results", "forEach", "file", "fileResults", "analyzeSourceFile", "push", "visit", "node", "isFunctionDeclaration", "name", "symbol", "getSymbolAtLocation", "type", "getTypeOfSymbolAtLocation", "signature", "getSignaturesOfType", "SignatureKind", "Call", "text", "parameters", "extractParameters", "returnType", "typeToString", "getReturnType", "findReferences", "isVariableStatement", "declarationList", "declarations", "declaration", "isIdentifier", "kind", "value", "typeString", "initializer", "isArrowFunction", "isFunctionExpression", "funcType", "getTypeAtLocation", "isNumericLiteral", "Number", "isStringLiteral", "refs", "valueType", "isClassDeclaration", "isInterfaceDeclaration", "forEachChild", "map", "param", "getName", "valueDeclaration", "_sourceFile", "_typeChecker", "Set", "localSymbols", "collectLocalSymbols", "add", "isVariableDeclaration", "findRefs", "has", "parent", "isDeclaration", "isParameter", "isBuiltIn", "Array", "from", "builtIns", "result", "isExpressionStatement", "isBinaryExpression", "expression", "expr", "operatorToken", "SyntaxKind", "EqualsToken", "left", "right", "isAssignmentTarget", "allFiles", "fileMap", "Map", "set", "system", "createSystem", "createVirtualTypeScriptEnvironment", "ComputeGraph", "_parser", "VirtualTypeScriptParser", "_expressionsAtom", "Atom", "make", "_valuesByCellIdAtom", "_valuesByNameAtom", "_notebook", "_registry", "expressions", "getExpressions", "get", "values", "getValues", "valuesByName", "getValuesByName", "getValue", "cellId", "evaluate", "dependencyGraph", "parse", "set", "cellExpressions", "Map", "Object", "entries", "forEach", "id", "expr", "evaluationOrder", "topologicalSort", "keys", "valuesByCellId", "log", "error", "cellSource", "cells", "find", "cell", "source", "target", "content", "name", "value", "undefined", "equalIndex", "indexOf", "rhs", "substring", "trim", "endsWith", "slice", "result", "eval", "evalScript", "filter", "type", "reduce", "acc", "text", "parsed", "parseExpression", "buildDependencyGraph", "nodes", "dependencies", "visited", "Set", "visit", "node", "has", "add", "deps", "dep", "push", "nameToCellId", "graph", "references", "length", "dependencyCellIds", "map", "ref", "INCLUDE_BLUEPRINTS", "NotebookContainer", "role", "subject", "notebook", "attendableId", "env", "t", "useTranslation", "meta", "id", "registry", "useContext", "RegistryContext", "db", "Obj", "getDatabase", "hasAttention", "useAttention", "graph", "useMemo", "ComputeGraph", "queryValues", "setQueryValues", "useState", "handleExecQueries", "useCallback", "invariant", "builder", "QueryBuilder", "cell", "cells", "type", "source", "target", "content", "name", "filter", "build", "ast", "Query", "select", "view", "ViewModel", "makeFromDatabase", "newGraph", "Graph", "make", "query", "change", "n", "c", "find", "Ref", "g", "getSnapshot", "fromAst", "objects", "run", "objectIds", "map", "obj", "prev", "promptResults", "setPromptResults", "handleExecPrompts", "useComputeRuntimeCallback", "spaceId", "fnUntraced", "prompts", "prompt", "isNonNullable", "runPrompt", "input", "getValuesByName", "onResult", "result", "dxn", "toString", "handleCompute", "evaluate", "handleRearrange", "from", "findIndex", "to", "splice", "handleCellInsert", "after", "crypto", "randomUUID", "Text", "Filter", "Blueprint", "blueprints", "blueprint", "includes", "key", "Prompt", "instructions", "idx", "length", "handleCellDelete", "Panel", "Root", "className", "Toolbar", "asChild", "disabled", "DropdownMenu", "Trigger", "IconButton", "icon", "iconOnly", "label", "NotebookMenu", "onCellInsert", "classNames", "onClick", "Content", "NotebookStack", "onRearrange", "onCellDelete", "fn", "inputData", "tracer", "TracingService", "trace", "traceInvocationStart", "undefined", "payload", "data", "FunctionInvocationService", "invokeFunction", "AgentFunctions", "pipe", "provide", "invocationTraceQueue", "layerInvocation", "layerNoop", "exit", "Exit", "match", "onFailure", "cause", "error", "prettyErrors", "log", "message", "stack", "onSuccess", "note", "traceInvocationEnd", "exception", "isFailure", "NotebookContainer"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
ScriptToolbar,
|
|
4
|
+
TypescriptEditor
|
|
5
|
+
} from "./chunk-BOPXK25O.mjs";
|
|
6
|
+
import "./chunk-JGN7TDJH.mjs";
|
|
7
|
+
import {
|
|
8
|
+
useDeployState,
|
|
9
|
+
useToolbarState
|
|
10
|
+
} from "./chunk-KL6LGVVM.mjs";
|
|
11
|
+
import "./chunk-5BG7OJGQ.mjs";
|
|
12
|
+
import "./chunk-EV57E4Q4.mjs";
|
|
13
|
+
import "./chunk-3EV4C6GW.mjs";
|
|
14
|
+
import "./chunk-L3JLWXB5.mjs";
|
|
15
|
+
import "./chunk-HSLMI22Q.mjs";
|
|
16
|
+
|
|
17
|
+
// src/containers/ScriptContainer/ScriptContainer.tsx
|
|
18
|
+
import React, { useMemo } from "react";
|
|
19
|
+
import { Obj } from "@dxos/echo";
|
|
20
|
+
import { createDocAccessor } from "@dxos/echo-db";
|
|
21
|
+
import { getSpace } from "@dxos/react-client/echo";
|
|
22
|
+
import { useIdentity } from "@dxos/react-client/halo";
|
|
23
|
+
import { Panel } from "@dxos/react-ui";
|
|
24
|
+
import { createDataExtensions, listener, stackItemContentEditorClassNames } from "@dxos/ui-editor";
|
|
25
|
+
var ScriptContainer = ({ role, subject: script, settings = {
|
|
26
|
+
editorInputMode: "vscode"
|
|
27
|
+
}, env }) => {
|
|
28
|
+
const identity = useIdentity();
|
|
29
|
+
const space = getSpace(script);
|
|
30
|
+
const state = useToolbarState();
|
|
31
|
+
useDeployState({
|
|
32
|
+
script,
|
|
33
|
+
state
|
|
34
|
+
});
|
|
35
|
+
const extensions = useMemo(() => {
|
|
36
|
+
if (!script.source.target) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
return [
|
|
40
|
+
createDataExtensions({
|
|
41
|
+
id: script.id,
|
|
42
|
+
text: createDocAccessor(script.source.target, [
|
|
43
|
+
"content"
|
|
44
|
+
]),
|
|
45
|
+
messenger: space,
|
|
46
|
+
identity
|
|
47
|
+
}),
|
|
48
|
+
listener({
|
|
49
|
+
onChange: ({ text }) => {
|
|
50
|
+
if (script.source.target?.content !== text) {
|
|
51
|
+
Obj.change(script, (s) => {
|
|
52
|
+
s.changed = true;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
];
|
|
58
|
+
}, [
|
|
59
|
+
identity,
|
|
60
|
+
space,
|
|
61
|
+
script,
|
|
62
|
+
script.source.target
|
|
63
|
+
]);
|
|
64
|
+
if (!extensions.length) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
return /* @__PURE__ */ React.createElement(Panel.Root, {
|
|
68
|
+
role,
|
|
69
|
+
className: "dx-document"
|
|
70
|
+
}, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
|
|
71
|
+
asChild: true
|
|
72
|
+
}, /* @__PURE__ */ React.createElement(ScriptToolbar, {
|
|
73
|
+
state,
|
|
74
|
+
role,
|
|
75
|
+
script
|
|
76
|
+
})), /* @__PURE__ */ React.createElement(Panel.Content, {
|
|
77
|
+
asChild: true
|
|
78
|
+
}, /* @__PURE__ */ React.createElement(TypescriptEditor, {
|
|
79
|
+
id: script.id,
|
|
80
|
+
env,
|
|
81
|
+
initialValue: script.source?.target?.content,
|
|
82
|
+
extensions,
|
|
83
|
+
classNames: stackItemContentEditorClassNames(role),
|
|
84
|
+
inputMode: settings.editorInputMode,
|
|
85
|
+
toolbar: true
|
|
86
|
+
})));
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// src/containers/ScriptContainer/index.ts
|
|
90
|
+
var ScriptContainer_default = ScriptContainer;
|
|
91
|
+
export {
|
|
92
|
+
ScriptContainer_default as default
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=ScriptContainer-4E4EK6ZF.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/ScriptContainer/ScriptContainer.tsx", "../../../src/containers/ScriptContainer/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { type Script } from '@dxos/functions';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Panel } from '@dxos/react-ui';\nimport { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/ui-editor';\n\nimport { ScriptToolbar, TypescriptEditor, type TypescriptEditorProps } from '../../components';\nimport { useDeployState, useToolbarState } from '../../hooks';\nimport { type ScriptSettings } from '../../types';\n\nexport type ScriptEditorProps = SurfaceComponentProps<\n Script.Script,\n {\n settings?: ScriptSettings;\n } & Pick<TypescriptEditorProps, 'env'>\n>;\n\nexport const ScriptContainer = ({\n role,\n subject: script,\n settings = { editorInputMode: 'vscode' },\n env,\n}: ScriptEditorProps) => {\n const identity = useIdentity();\n const space = getSpace(script);\n const state = useToolbarState();\n useDeployState({ script, state });\n\n const extensions = useMemo(() => {\n if (!script.source.target) {\n return [];\n }\n\n return [\n createDataExtensions({\n id: script.id,\n text: createDocAccessor(script.source.target, ['content']),\n messenger: space,\n identity,\n }),\n listener({\n onChange: ({ text }) => {\n if (script.source.target?.content !== text) {\n Obj.change(script, (s) => {\n s.changed = true;\n });\n }\n },\n }),\n ];\n }, [identity, space, script, script.source.target]);\n\n if (!extensions.length) {\n return null;\n }\n\n return (\n <Panel.Root role={role} className='dx-document'>\n <Panel.Toolbar asChild>\n <ScriptToolbar state={state} role={role} script={script} />\n </Panel.Toolbar>\n <Panel.Content asChild>\n <TypescriptEditor\n id={script.id}\n env={env}\n initialValue={script.source?.target?.content}\n extensions={extensions}\n classNames={stackItemContentEditorClassNames(role)}\n inputMode={settings.editorInputMode}\n toolbar\n />\n </Panel.Content>\n </Panel.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ScriptContainer } from './ScriptContainer';\n\nexport default ScriptContainer;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAIA,OAAOA,SAASC,eAAe;AAG/B,SAASC,WAAW;AACpB,SAASC,yBAAyB;AAElC,SAASC,gBAAgB;AACzB,SAASC,mBAAmB;AAC5B,SAASC,aAAa;AACtB,SAASC,sBAAsBC,UAAUC,wCAAwC;AAa1E,IAAMC,kBAAkB,CAAC,EAC9BC,MACAC,SAASC,QACTC,WAAW;EAAEC,iBAAiB;AAAS,GACvCC,IAAG,MACe;AAClB,QAAMC,WAAWC,YAAAA;AACjB,QAAMC,QAAQC,SAASP,MAAAA;AACvB,QAAMQ,QAAQC,gBAAAA;AACdC,iBAAe;IAAEV;IAAQQ;EAAM,CAAA;AAE/B,QAAMG,aAAaC,QAAQ,MAAA;AACzB,QAAI,CAACZ,OAAOa,OAAOC,QAAQ;AACzB,aAAO,CAAA;IACT;AAEA,WAAO;MACLC,qBAAqB;QACnBC,IAAIhB,OAAOgB;QACXC,MAAMC,kBAAkBlB,OAAOa,OAAOC,QAAQ;UAAC;SAAU;QACzDK,WAAWb;QACXF;MACF,CAAA;MACAgB,SAAS;QACPC,UAAU,CAAC,EAAEJ,KAAI,MAAE;AACjB,cAAIjB,OAAOa,OAAOC,QAAQQ,YAAYL,MAAM;AAC1CM,gBAAIC,OAAOxB,QAAQ,CAACyB,MAAAA;AAClBA,gBAAEC,UAAU;YACd,CAAA;UACF;QACF;MACF,CAAA;;EAEJ,GAAG;IAACtB;IAAUE;IAAON;IAAQA,OAAOa,OAAOC;GAAO;AAElD,MAAI,CAACH,WAAWgB,QAAQ;AACtB,WAAO;EACT;AAEA,SACE,sBAAA,cAACC,MAAMC,MAAI;IAAC/B;IAAYgC,WAAU;KAChC,sBAAA,cAACF,MAAMG,SAAO;IAACC,SAAAA;KACb,sBAAA,cAACC,eAAAA;IAAczB;IAAcV;IAAYE;OAE3C,sBAAA,cAAC4B,MAAMM,SAAO;IAACF,SAAAA;KACb,sBAAA,cAACG,kBAAAA;IACCnB,IAAIhB,OAAOgB;IACXb;IACAiC,cAAcpC,OAAOa,QAAQC,QAAQQ;IACrCX;IACA0B,YAAYC,iCAAiCxC,IAAAA;IAC7CyC,WAAWtC,SAASC;IACpBsC,SAAAA;;AAKV;;;AC7EA,IAAA,0BAAeC;",
|
|
6
|
+
"names": ["React", "useMemo", "Obj", "createDocAccessor", "getSpace", "useIdentity", "Panel", "createDataExtensions", "listener", "stackItemContentEditorClassNames", "ScriptContainer", "role", "subject", "script", "settings", "editorInputMode", "env", "identity", "useIdentity", "space", "getSpace", "state", "useToolbarState", "useDeployState", "extensions", "useMemo", "source", "target", "createDataExtensions", "id", "text", "createDocAccessor", "messenger", "listener", "onChange", "content", "Obj", "change", "s", "changed", "length", "Panel", "Root", "className", "Toolbar", "asChild", "ScriptToolbar", "Content", "TypescriptEditor", "initialValue", "classNames", "stackItemContentEditorClassNames", "inputMode", "toolbar", "ScriptContainer"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
meta
|
|
4
|
+
} from "./chunk-L3JLWXB5.mjs";
|
|
5
|
+
import "./chunk-HSLMI22Q.mjs";
|
|
6
|
+
|
|
7
|
+
// src/containers/ScriptObjectSettings/ScriptObjectSettings.tsx
|
|
8
|
+
import { Octokit } from "@octokit/core";
|
|
9
|
+
import React, { useCallback, useState } from "react";
|
|
10
|
+
import { ToolId } from "@dxos/ai";
|
|
11
|
+
import { useOperationInvoker } from "@dxos/app-framework/ui";
|
|
12
|
+
import { SettingsOperation } from "@dxos/app-toolkit";
|
|
13
|
+
import { Blueprint, Template } from "@dxos/blueprints";
|
|
14
|
+
import { Filter, Obj, Ref } from "@dxos/echo";
|
|
15
|
+
import { Function, getUserFunctionIdInMetadata } from "@dxos/functions";
|
|
16
|
+
import { getInvocationUrl } from "@dxos/functions-runtime";
|
|
17
|
+
import { log } from "@dxos/log";
|
|
18
|
+
import { useClient } from "@dxos/react-client";
|
|
19
|
+
import { useQuery } from "@dxos/react-client/echo";
|
|
20
|
+
import { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from "@dxos/react-ui";
|
|
21
|
+
import { AccessToken } from "@dxos/types";
|
|
22
|
+
import { kebabize } from "@dxos/util";
|
|
23
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/containers/ScriptObjectSettings/ScriptObjectSettings.tsx";
|
|
24
|
+
var ScriptObjectSettings = ({ object }) => {
|
|
25
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Binding, {
|
|
26
|
+
object
|
|
27
|
+
}), /* @__PURE__ */ React.createElement(BlueprintEditor, {
|
|
28
|
+
object
|
|
29
|
+
}), /* @__PURE__ */ React.createElement(Publishing, {
|
|
30
|
+
object
|
|
31
|
+
}));
|
|
32
|
+
};
|
|
33
|
+
var BlueprintEditor = ({ object }) => {
|
|
34
|
+
const { t } = useTranslation(meta.id);
|
|
35
|
+
const db = Obj.getDatabase(object);
|
|
36
|
+
const [fn] = useQuery(db, Filter.type(Function.Function, {
|
|
37
|
+
source: Ref.make(object)
|
|
38
|
+
}));
|
|
39
|
+
const blueprints = useQuery(db, Filter.type(Blueprint.Blueprint));
|
|
40
|
+
const [creating, setCreating] = useState(false);
|
|
41
|
+
const [instructions, setInstructions] = useState(`You can run the script "${object.name ?? "script"}".`);
|
|
42
|
+
const blueprintKey = `org.dxos.blueprint.${kebabize(object.name ?? "script")}`;
|
|
43
|
+
const existingBlueprint = blueprints.find((bp) => bp.key === blueprintKey);
|
|
44
|
+
useAsyncEffect(async () => {
|
|
45
|
+
if (!existingBlueprint) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const source = await existingBlueprint.instructions.source.load();
|
|
49
|
+
setInstructions(source.content ?? "");
|
|
50
|
+
}, [
|
|
51
|
+
existingBlueprint
|
|
52
|
+
]);
|
|
53
|
+
const handleSave = useCallback(async () => {
|
|
54
|
+
if (!db) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
setCreating(true);
|
|
58
|
+
try {
|
|
59
|
+
if (existingBlueprint) {
|
|
60
|
+
const text = await existingBlueprint.instructions.source.load();
|
|
61
|
+
Obj.change(text, (t2) => {
|
|
62
|
+
t2.content = instructions;
|
|
63
|
+
});
|
|
64
|
+
if (fn?.key) {
|
|
65
|
+
const toolId = ToolId.make(fn.key);
|
|
66
|
+
if (!existingBlueprint.tools?.includes(toolId)) {
|
|
67
|
+
Obj.change(existingBlueprint, (b) => {
|
|
68
|
+
b.tools = [
|
|
69
|
+
...b.tools ?? [],
|
|
70
|
+
toolId
|
|
71
|
+
];
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
} else if (fn?.key) {
|
|
76
|
+
db.add(Blueprint.make({
|
|
77
|
+
key: blueprintKey,
|
|
78
|
+
name: object.name ?? "Script",
|
|
79
|
+
instructions: Template.make({
|
|
80
|
+
source: instructions
|
|
81
|
+
}),
|
|
82
|
+
tools: [
|
|
83
|
+
ToolId.make(fn.key)
|
|
84
|
+
]
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
await db.flush();
|
|
88
|
+
} finally {
|
|
89
|
+
setCreating(false);
|
|
90
|
+
}
|
|
91
|
+
}, [
|
|
92
|
+
db,
|
|
93
|
+
existingBlueprint,
|
|
94
|
+
fn,
|
|
95
|
+
blueprintKey,
|
|
96
|
+
object.name,
|
|
97
|
+
instructions
|
|
98
|
+
]);
|
|
99
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
100
|
+
className: "flex flex-col gap-4 my-form-padding"
|
|
101
|
+
}, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("h2", null, t("blueprint editor label", {
|
|
102
|
+
default: "Blueprint"
|
|
103
|
+
})), /* @__PURE__ */ React.createElement("p", {
|
|
104
|
+
className: "text-description text-sm"
|
|
105
|
+
}, t("blueprint editor description", {
|
|
106
|
+
default: "Create a blueprint that exposes this script as a tool."
|
|
107
|
+
}))), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement("div", {
|
|
108
|
+
role: "none",
|
|
109
|
+
className: "flex flex-col gap-1"
|
|
110
|
+
}, /* @__PURE__ */ React.createElement(Input.Label, null, t("blueprint instructions label", {
|
|
111
|
+
default: "Instructions"
|
|
112
|
+
})), /* @__PURE__ */ React.createElement(Input.TextArea, {
|
|
113
|
+
placeholder: t("blueprint instructions placeholder", {
|
|
114
|
+
default: "Describe how this tool should be used."
|
|
115
|
+
}),
|
|
116
|
+
rows: 6,
|
|
117
|
+
value: instructions,
|
|
118
|
+
onChange: (event) => setInstructions(event.target.value),
|
|
119
|
+
classNames: "resize-y"
|
|
120
|
+
}))), /* @__PURE__ */ React.createElement("div", {
|
|
121
|
+
className: "flex justify-end gap-2"
|
|
122
|
+
}, /* @__PURE__ */ React.createElement(Button, {
|
|
123
|
+
disabled: !existingBlueprint && !fn?.key || creating,
|
|
124
|
+
onClick: handleSave
|
|
125
|
+
}, t(creating ? "creating label" : "create blueprint label", {
|
|
126
|
+
default: creating ? "Creating\u2026" : "Create blueprint"
|
|
127
|
+
}))));
|
|
128
|
+
};
|
|
129
|
+
var Binding = ({ object }) => {
|
|
130
|
+
const { t } = useTranslation(meta.id);
|
|
131
|
+
const client = useClient();
|
|
132
|
+
const db = Obj.getDatabase(object);
|
|
133
|
+
const [fn] = useQuery(db, Filter.type(Function.Function, {
|
|
134
|
+
source: Ref.make(object)
|
|
135
|
+
}));
|
|
136
|
+
const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
|
|
137
|
+
const functionUrl = functionId && getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? "", {
|
|
138
|
+
spaceId: db?.spaceId
|
|
139
|
+
});
|
|
140
|
+
const [binding, setBinding] = useControlledState(fn?.binding ?? "");
|
|
141
|
+
const handleBindingChange = useCallback((event) => {
|
|
142
|
+
setBinding(event.target.value);
|
|
143
|
+
}, [
|
|
144
|
+
setBinding
|
|
145
|
+
]);
|
|
146
|
+
const handleBindingBlur = useCallback(() => {
|
|
147
|
+
Obj.change(fn, (f) => {
|
|
148
|
+
f.binding = binding;
|
|
149
|
+
});
|
|
150
|
+
}, [
|
|
151
|
+
fn,
|
|
152
|
+
binding
|
|
153
|
+
]);
|
|
154
|
+
if (!fn || !functionUrl) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
158
|
+
role: "form",
|
|
159
|
+
className: "flex flex-col gap-2 my-form-padding"
|
|
160
|
+
}, /* @__PURE__ */ React.createElement("h2", null, t("remote function settings heading")), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement("div", {
|
|
161
|
+
role: "none",
|
|
162
|
+
className: "flex flex-col gap-1"
|
|
163
|
+
}, /* @__PURE__ */ React.createElement(Input.Label, null, t("function url label")), /* @__PURE__ */ React.createElement("div", {
|
|
164
|
+
role: "none",
|
|
165
|
+
className: "flex gap-1"
|
|
166
|
+
}, /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
167
|
+
disabled: true,
|
|
168
|
+
value: functionUrl,
|
|
169
|
+
onChange: (event) => {
|
|
170
|
+
Obj.change(fn, (f) => {
|
|
171
|
+
f.name = event.target.value;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}), /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
|
|
175
|
+
value: functionUrl
|
|
176
|
+
})))), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement("div", {
|
|
177
|
+
role: "none",
|
|
178
|
+
className: "flex flex-col gap-1"
|
|
179
|
+
}, /* @__PURE__ */ React.createElement(Input.Label, null, t("function binding label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
180
|
+
placeholder: t("function binding placeholder"),
|
|
181
|
+
value: binding,
|
|
182
|
+
onChange: handleBindingChange,
|
|
183
|
+
onBlur: handleBindingBlur
|
|
184
|
+
}))));
|
|
185
|
+
};
|
|
186
|
+
var Publishing = ({ object }) => {
|
|
187
|
+
const { t } = useTranslation(meta.id);
|
|
188
|
+
const { invokePromise } = useOperationInvoker();
|
|
189
|
+
const db = Obj.getDatabase(object);
|
|
190
|
+
const [githubToken] = useQuery(db, Filter.type(AccessToken.AccessToken, {
|
|
191
|
+
source: "github.com"
|
|
192
|
+
}));
|
|
193
|
+
const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === "github.com");
|
|
194
|
+
const [gistUrl, setGistUrl] = useState();
|
|
195
|
+
useAsyncEffect(async () => {
|
|
196
|
+
const token = githubToken?.token;
|
|
197
|
+
const gistId = gistKey?.id;
|
|
198
|
+
if (!token || !gistId) {
|
|
199
|
+
setGistUrl(void 0);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
try {
|
|
203
|
+
const octokit = new Octokit({
|
|
204
|
+
auth: githubToken.token
|
|
205
|
+
});
|
|
206
|
+
const response = await octokit.request("GET /gists/{gist_id}", {
|
|
207
|
+
gist_id: gistId
|
|
208
|
+
});
|
|
209
|
+
setGistUrl(response.data.html_url);
|
|
210
|
+
} catch (err) {
|
|
211
|
+
log.catch(err, void 0, {
|
|
212
|
+
F: __dxlog_file,
|
|
213
|
+
L: 221,
|
|
214
|
+
S: void 0,
|
|
215
|
+
C: (f, a) => f(...a)
|
|
216
|
+
});
|
|
217
|
+
setGistUrl(void 0);
|
|
218
|
+
}
|
|
219
|
+
}, [
|
|
220
|
+
githubToken,
|
|
221
|
+
gistKey
|
|
222
|
+
]);
|
|
223
|
+
const handleOpenTokenManager = useCallback(() => invokePromise(SettingsOperation.Open, {
|
|
224
|
+
plugin: "org.dxos.plugin.token-manager"
|
|
225
|
+
}), [
|
|
226
|
+
invokePromise
|
|
227
|
+
]);
|
|
228
|
+
const [publishing, setPublishing] = useState(false);
|
|
229
|
+
const handlePublish = useCallback(async () => {
|
|
230
|
+
setPublishing(true);
|
|
231
|
+
const octokit = new Octokit({
|
|
232
|
+
auth: githubToken.token
|
|
233
|
+
});
|
|
234
|
+
const source = await object.source.load();
|
|
235
|
+
const filename = object.name ? kebabize(object.name) : "composer-script";
|
|
236
|
+
const files = {
|
|
237
|
+
[`${filename}.ts`]: {
|
|
238
|
+
content: source.content
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
try {
|
|
242
|
+
const meta2 = Obj.getMeta(object);
|
|
243
|
+
const githubKey = meta2.keys.find(({ source: source2 }) => source2 === "github.com");
|
|
244
|
+
const gistId = githubKey?.id;
|
|
245
|
+
if (gistId) {
|
|
246
|
+
await octokit.request("PATCH /gists/{gist_id}", {
|
|
247
|
+
gist_id: gistId,
|
|
248
|
+
files
|
|
249
|
+
});
|
|
250
|
+
} else {
|
|
251
|
+
const response = await octokit.request("POST /gists", {
|
|
252
|
+
public: true,
|
|
253
|
+
files
|
|
254
|
+
});
|
|
255
|
+
const gistId2 = response.data.id;
|
|
256
|
+
if (gistId2) {
|
|
257
|
+
Obj.change(object, (obj) => {
|
|
258
|
+
Obj.getMeta(obj).keys.push({
|
|
259
|
+
source: "github.com",
|
|
260
|
+
id: gistId2
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
} finally {
|
|
266
|
+
setPublishing(false);
|
|
267
|
+
}
|
|
268
|
+
}, [
|
|
269
|
+
object,
|
|
270
|
+
githubToken
|
|
271
|
+
]);
|
|
272
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
273
|
+
className: "flex flex-col gap-4 my-form-padding"
|
|
274
|
+
}, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("h2", null, t("script publish settings label")), /* @__PURE__ */ React.createElement("p", {
|
|
275
|
+
className: "text-description text-sm"
|
|
276
|
+
}, t("script publish settings description"))), !githubToken && /* @__PURE__ */ React.createElement("div", {
|
|
277
|
+
className: "flex flex-col gap-2"
|
|
278
|
+
}, /* @__PURE__ */ React.createElement("span", null, t("no github token label")), /* @__PURE__ */ React.createElement(Button, {
|
|
279
|
+
onClick: handleOpenTokenManager
|
|
280
|
+
}, t("open token manager label"))), githubToken && /* @__PURE__ */ React.createElement("div", {
|
|
281
|
+
className: "flex justify-end gap-2"
|
|
282
|
+
}, gistUrl && /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
|
|
283
|
+
value: gistUrl
|
|
284
|
+
}), /* @__PURE__ */ React.createElement(Button, {
|
|
285
|
+
disabled: publishing,
|
|
286
|
+
onClick: handlePublish
|
|
287
|
+
}, t(publishing ? "publishing label" : "publish label"))));
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
// src/containers/ScriptObjectSettings/index.ts
|
|
291
|
+
var ScriptObjectSettings_default = ScriptObjectSettings;
|
|
292
|
+
export {
|
|
293
|
+
ScriptObjectSettings_default as default
|
|
294
|
+
};
|
|
295
|
+
//# sourceMappingURL=ScriptObjectSettings-RPY2ZLDJ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/ScriptObjectSettings/ScriptObjectSettings.tsx", "../../../src/containers/ScriptObjectSettings/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Octokit } from '@octokit/core';\nimport React, { type ChangeEvent, useCallback, useState } from 'react';\n\nimport { ToolId } from '@dxos/ai';\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { SettingsOperation } from '@dxos/app-toolkit';\nimport { Blueprint, Template } from '@dxos/blueprints';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { getInvocationUrl } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from '@dxos/react-ui';\nimport { AccessToken } from '@dxos/types';\nimport { kebabize } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nexport type ScriptObjectSettingsProps = {\n object: Script.Script;\n};\n\nexport const ScriptObjectSettings = ({ object }: ScriptObjectSettingsProps) => {\n return (\n <>\n <Binding object={object} />\n <BlueprintEditor object={object} />\n <Publishing object={object} />\n </>\n );\n};\n\nconst BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(meta.id);\n const db = Obj.getDatabase(object);\n const [fn] = useQuery(db, Filter.type(Function.Function, { source: Ref.make(object) }));\n const blueprints = useQuery(db, Filter.type(Blueprint.Blueprint));\n\n const [creating, setCreating] = useState(false);\n const [instructions, setInstructions] = useState<string>(`You can run the script \"${object.name ?? 'script'}\".`);\n const blueprintKey = `org.dxos.blueprint.${kebabize(object.name ?? 'script')}`;\n const existingBlueprint = blueprints.find((bp) => bp.key === blueprintKey);\n\n useAsyncEffect(async () => {\n if (!existingBlueprint) {\n return;\n }\n const source = await existingBlueprint.instructions.source.load();\n setInstructions(source.content ?? '');\n }, [existingBlueprint]);\n\n const handleSave = useCallback(async () => {\n if (!db) {\n return;\n }\n\n setCreating(true);\n try {\n if (existingBlueprint) {\n const text = await existingBlueprint.instructions.source.load();\n Obj.change(text, (t) => {\n t.content = instructions;\n });\n if (fn?.key) {\n const toolId = ToolId.make(fn.key);\n if (!existingBlueprint.tools?.includes(toolId)) {\n Obj.change(existingBlueprint, (b) => {\n b.tools = [...(b.tools ?? []), toolId];\n });\n }\n }\n } else if (fn?.key) {\n db.add(\n Blueprint.make({\n key: blueprintKey,\n name: object.name ?? 'Script',\n instructions: Template.make({\n source: instructions,\n }),\n tools: [ToolId.make(fn.key)],\n }),\n );\n }\n await db.flush();\n } finally {\n setCreating(false);\n }\n }, [db, existingBlueprint, fn, blueprintKey, object.name, instructions]);\n\n return (\n <div className='flex flex-col gap-4 my-form-padding'>\n <div>\n <h2>{t('blueprint editor label', { default: 'Blueprint' })}</h2>\n <p className='text-description text-sm'>\n {t('blueprint editor description', {\n default: 'Create a blueprint that exposes this script as a tool.',\n })}\n </p>\n </div>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('blueprint instructions label', { default: 'Instructions' })}</Input.Label>\n <Input.TextArea\n placeholder={t('blueprint instructions placeholder', {\n default: 'Describe how this tool should be used.',\n })}\n rows={6}\n value={instructions}\n onChange={(event) => setInstructions(event.target.value)}\n classNames='resize-y'\n />\n </div>\n </Input.Root>\n <div className='flex justify-end gap-2'>\n <Button disabled={(!existingBlueprint && !fn?.key) || creating} onClick={handleSave}>\n {t(creating ? 'creating label' : 'create blueprint label', {\n default: creating ? 'Creating…' : 'Create blueprint',\n })}\n </Button>\n </div>\n </div>\n );\n};\n\nconst Binding = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n const db = Obj.getDatabase(object);\n const [fn] = useQuery(db, Filter.type(Function.Function, { source: Ref.make(object) }));\n\n const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));\n const functionUrl =\n functionId &&\n getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: db?.spaceId,\n });\n\n const [binding, setBinding] = useControlledState(fn?.binding ?? '');\n const handleBindingChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setBinding(event.target.value);\n },\n [setBinding],\n );\n\n const handleBindingBlur = useCallback(() => {\n Obj.change(fn, (f) => {\n f.binding = binding;\n });\n }, [fn, binding]);\n\n if (!fn || !functionUrl) {\n return null;\n }\n\n // TODO(burdon): Use form.\n return (\n <div role='form' className='flex flex-col gap-2 my-form-padding'>\n <h2>{t('remote function settings heading')}</h2>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('function url label')}</Input.Label>\n <div role='none' className='flex gap-1'>\n <Input.TextInput\n disabled\n value={functionUrl}\n onChange={(event) => {\n Obj.change(fn, (f) => {\n f.name = event.target.value;\n });\n }}\n />\n <Clipboard.IconButton value={functionUrl} />\n </div>\n </div>\n </Input.Root>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('function binding label')}</Input.Label>\n <Input.TextInput\n placeholder={t('function binding placeholder')}\n value={binding}\n onChange={handleBindingChange}\n onBlur={handleBindingBlur}\n />\n </div>\n </Input.Root>\n </div>\n );\n};\n\n// TODO(burdon): Move to separate tab?\nconst Publishing = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n const db = Obj.getDatabase(object);\n const [githubToken] = useQuery(db, Filter.type(AccessToken.AccessToken, { source: 'github.com' }));\n const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === 'github.com');\n const [gistUrl, setGistUrl] = useState<string | undefined>();\n\n useAsyncEffect(async () => {\n const token = githubToken?.token;\n const gistId = gistKey?.id;\n if (!token || !gistId) {\n setGistUrl(undefined);\n return;\n }\n\n try {\n const octokit = new Octokit({ auth: githubToken.token });\n const response = await octokit.request('GET /gists/{gist_id}', {\n gist_id: gistId,\n });\n setGistUrl(response.data.html_url);\n } catch (err) {\n log.catch(err);\n setGistUrl(undefined);\n }\n }, [githubToken, gistKey]);\n\n const handleOpenTokenManager = useCallback(\n () =>\n invokePromise(SettingsOperation.Open, {\n plugin: 'org.dxos.plugin.token-manager',\n }),\n [invokePromise],\n );\n\n const [publishing, setPublishing] = useState(false);\n const handlePublish = useCallback(async () => {\n setPublishing(true);\n const octokit = new Octokit({ auth: githubToken.token });\n const source = await object.source.load();\n const filename = object.name ? kebabize(object.name) : 'composer-script';\n const files = { [`${filename}.ts`]: { content: source.content } };\n\n try {\n // TODO(wittjosiah): Factor out to intent.\n const meta = Obj.getMeta(object);\n const githubKey = meta.keys.find(({ source }) => source === 'github.com');\n const gistId = githubKey?.id;\n if (gistId) {\n await octokit.request('PATCH /gists/{gist_id}', {\n gist_id: gistId,\n files,\n });\n } else {\n const response = await octokit.request('POST /gists', {\n public: true,\n files,\n });\n const gistId = response.data.id;\n if (gistId) {\n Obj.change(object, (obj) => {\n Obj.getMeta(obj).keys.push({ source: 'github.com', id: gistId });\n });\n }\n }\n } finally {\n setPublishing(false);\n }\n }, [object, githubToken]);\n\n return (\n <div className='flex flex-col gap-4 my-form-padding'>\n <div>\n <h2>{t('script publish settings label')}</h2>\n <p className='text-description text-sm'>{t('script publish settings description')}</p>\n </div>\n {!githubToken && (\n <div className='flex flex-col gap-2'>\n <span>{t('no github token label')}</span>\n <Button onClick={handleOpenTokenManager}>{t('open token manager label')}</Button>\n </div>\n )}\n {githubToken && (\n <div className='flex justify-end gap-2'>\n {gistUrl && <Clipboard.IconButton value={gistUrl} />}\n <Button disabled={publishing} onClick={handlePublish}>\n {t(publishing ? 'publishing label' : 'publish label')}\n </Button>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { ScriptObjectSettings } from './ScriptObjectSettings';\n\nexport default ScriptObjectSettings;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Octokit", "React", "useCallback", "useState", "ToolId", "useOperationInvoker", "SettingsOperation", "Blueprint", "Template", "Filter", "Obj", "Ref", "Function", "getUserFunctionIdInMetadata", "getInvocationUrl", "log", "useClient", "useQuery", "Button", "Clipboard", "Input", "useAsyncEffect", "useControlledState", "useTranslation", "AccessToken", "kebabize", "ScriptObjectSettings", "object", "Binding", "BlueprintEditor", "Publishing", "t", "useTranslation", "meta", "id", "db", "Obj", "getDatabase", "fn", "useQuery", "Filter", "type", "Function", "source", "Ref", "make", "blueprints", "Blueprint", "creating", "setCreating", "useState", "instructions", "setInstructions", "name", "blueprintKey", "kebabize", "existingBlueprint", "find", "bp", "key", "useAsyncEffect", "load", "content", "handleSave", "useCallback", "text", "change", "toolId", "ToolId", "tools", "includes", "b", "add", "Template", "flush", "div", "className", "h2", "default", "p", "Input", "Root", "role", "Label", "TextArea", "placeholder", "rows", "value", "onChange", "event", "target", "classNames", "Button", "disabled", "onClick", "client", "useClient", "functionId", "getUserFunctionIdInMetadata", "getMeta", "functionUrl", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "spaceId", "binding", "setBinding", "useControlledState", "handleBindingChange", "handleBindingBlur", "f", "TextInput", "Clipboard", "IconButton", "onBlur", "invokePromise", "useOperationInvoker", "githubToken", "AccessToken", "gistKey", "keys", "gistUrl", "setGistUrl", "token", "gistId", "undefined", "octokit", "Octokit", "auth", "response", "request", "gist_id", "data", "html_url", "err", "log", "catch", "handleOpenTokenManager", "SettingsOperation", "Open", "plugin", "publishing", "setPublishing", "handlePublish", "filename", "files", "githubKey", "public", "obj", "push", "span", "ScriptObjectSettings"]
|
|
7
|
+
}
|