@dxos/plugin-automation 0.7.5-labs.5f04cf6 → 0.7.5-labs.8a82073
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/AutomationPanel-CL2TWZT5.mjs +8 -0
- package/dist/lib/browser/AutomationPanel-CL2TWZT5.mjs.map +7 -0
- package/dist/lib/browser/ChatContainer-EJ3IWL7Y.mjs +12 -0
- package/dist/lib/browser/ChatContainer-EJ3IWL7Y.mjs.map +7 -0
- package/dist/lib/browser/{ai-client-6CRYUC6D.mjs → ai-client-UJLNYP7B.mjs} +4 -4
- package/dist/lib/browser/{ai-client-6CRYUC6D.mjs.map → ai-client-UJLNYP7B.mjs.map} +3 -3
- package/dist/lib/browser/{app-graph-builder-IJTTULDP.mjs → app-graph-builder-3H5TCRG4.mjs} +33 -2
- package/dist/lib/browser/{app-graph-builder-IJTTULDP.mjs.map → app-graph-builder-3H5TCRG4.mjs.map} +3 -3
- package/dist/lib/browser/chunk-43WRHV2L.mjs +150 -0
- package/dist/lib/browser/chunk-43WRHV2L.mjs.map +7 -0
- package/dist/lib/browser/{chunk-EKJVAFT2.mjs → chunk-4M74P6YW.mjs} +66 -8
- package/dist/lib/browser/{chunk-EKJVAFT2.mjs.map → chunk-4M74P6YW.mjs.map} +4 -4
- package/dist/lib/browser/chunk-6KJRL5KV.mjs +243 -0
- package/dist/lib/browser/chunk-6KJRL5KV.mjs.map +7 -0
- package/dist/lib/browser/{chunk-HZ4TA7HY.mjs → chunk-BQHXJZ4K.mjs} +2 -2
- package/dist/lib/browser/{chunk-HKX3D3ZP.mjs → chunk-DQ7ZSYJJ.mjs} +2 -2
- package/dist/lib/browser/{chunk-HKX3D3ZP.mjs.map → chunk-DQ7ZSYJJ.mjs.map} +2 -2
- package/dist/lib/browser/chunk-N4SSCQ7P.mjs +1602 -0
- package/dist/lib/browser/chunk-N4SSCQ7P.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +52 -45
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-5YVZJFS3.mjs +29 -0
- package/dist/lib/browser/intent-resolver-5YVZJFS3.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-IGMBLSV7.mjs → react-surface-RRTZFTKR.mjs} +24 -23
- package/dist/lib/browser/react-surface-RRTZFTKR.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +10 -4
- package/dist/lib/node/AutomationPanel-BCEY3YXO.cjs +26 -0
- package/dist/lib/node/AutomationPanel-BCEY3YXO.cjs.map +7 -0
- package/dist/lib/node/ChatContainer-QUWFEBTI.cjs +33 -0
- package/dist/lib/node/ChatContainer-QUWFEBTI.cjs.map +7 -0
- package/dist/lib/node/{ai-client-A3RRU55B.cjs → ai-client-AOB6TLNW.cjs} +8 -8
- package/dist/lib/node/{ai-client-A3RRU55B.cjs.map → ai-client-AOB6TLNW.cjs.map} +3 -3
- package/dist/lib/node/{app-graph-builder-MF5M4QRS.cjs → app-graph-builder-CDEQJEHY.cjs} +43 -12
- package/dist/lib/node/{app-graph-builder-MF5M4QRS.cjs.map → app-graph-builder-CDEQJEHY.cjs.map} +3 -3
- package/dist/lib/node/{chunk-ZS5RZ7RM.cjs → chunk-AWZVJZ2I.cjs} +6 -6
- package/dist/lib/node/chunk-DKGNORZK.cjs +1586 -0
- package/dist/lib/node/chunk-DKGNORZK.cjs.map +7 -0
- package/dist/lib/node/{chunk-BUQOZA4N.cjs → chunk-H3RSMGJG.cjs} +87 -11
- package/dist/lib/node/chunk-H3RSMGJG.cjs.map +7 -0
- package/dist/lib/node/{AutomationPanel-RXJDVLCF.cjs → chunk-IPCNJYQL.cjs} +123 -9
- package/dist/lib/node/chunk-IPCNJYQL.cjs.map +7 -0
- package/dist/lib/node/{chunk-VEGLN4YN.cjs → chunk-LC6KNDPQ.cjs} +78 -26
- package/dist/lib/node/chunk-LC6KNDPQ.cjs.map +7 -0
- package/dist/lib/node/{chunk-5VF5JKUN.cjs → chunk-TQEDPRY5.cjs} +5 -5
- package/dist/lib/node/{chunk-5VF5JKUN.cjs.map → chunk-TQEDPRY5.cjs.map} +2 -2
- package/dist/lib/node/index.cjs +96 -88
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-TBHYXBDI.cjs → intent-resolver-MJFZT5IU.cjs} +20 -15
- package/dist/lib/node/intent-resolver-MJFZT5IU.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-BVUZMKYS.cjs → react-surface-BVZ63QP4.cjs} +25 -24
- package/dist/lib/node/react-surface-BVZ63QP4.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +15 -9
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/AutomationPanel-YTIZ74RI.mjs +9 -0
- package/dist/lib/node-esm/AutomationPanel-YTIZ74RI.mjs.map +7 -0
- package/dist/lib/node-esm/ChatContainer-QSMDZRDU.mjs +13 -0
- package/dist/lib/node-esm/ChatContainer-QSMDZRDU.mjs.map +7 -0
- package/dist/lib/node-esm/{ai-client-2GBZRHBA.mjs → ai-client-RUCCJ7JZ.mjs} +4 -4
- package/dist/lib/node-esm/{ai-client-2GBZRHBA.mjs.map → ai-client-RUCCJ7JZ.mjs.map} +3 -3
- package/dist/lib/node-esm/{app-graph-builder-5N7OK23B.mjs → app-graph-builder-GR3URVNX.mjs} +33 -2
- package/dist/lib/node-esm/{app-graph-builder-5N7OK23B.mjs.map → app-graph-builder-GR3URVNX.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-7JO77AAS.mjs +151 -0
- package/dist/lib/node-esm/chunk-7JO77AAS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-5QUXIXNB.mjs → chunk-CQPQXIJP.mjs} +66 -8
- package/dist/lib/node-esm/{chunk-5QUXIXNB.mjs.map → chunk-CQPQXIJP.mjs.map} +4 -4
- package/dist/lib/node-esm/chunk-CZXU4CFK.mjs +244 -0
- package/dist/lib/node-esm/chunk-CZXU4CFK.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-D7RARVTS.mjs +1603 -0
- package/dist/lib/node-esm/chunk-D7RARVTS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs → chunk-JFHI22MF.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs.map → chunk-JFHI22MF.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-ISYLEDVU.mjs → chunk-LSSWQIQD.mjs} +2 -2
- package/dist/lib/node-esm/index.mjs +52 -45
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-FCKNRTKQ.mjs +30 -0
- package/dist/lib/node-esm/intent-resolver-FCKNRTKQ.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-77S6XJOM.mjs → react-surface-Y5LQHUQN.mjs} +24 -23
- package/dist/lib/node-esm/react-surface-Y5LQHUQN.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +10 -4
- package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
- package/dist/types/src/artifacts.stories.d.ts +10 -24
- package/dist/types/src/artifacts.stories.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +22 -22
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +27 -27
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/Box/StatusLine.d.ts +11 -0
- package/dist/types/src/components/Box/StatusLine.d.ts.map +1 -0
- package/dist/types/src/components/Box/StatusLine.stories.d.ts +9 -0
- package/dist/types/src/components/Box/StatusLine.stories.d.ts.map +1 -0
- package/dist/types/src/components/Box/Tabbed.d.ts +15 -0
- package/dist/types/src/components/Box/Tabbed.d.ts.map +1 -0
- package/dist/types/src/components/Box/Tabbed.stories.d.ts +8 -0
- package/dist/types/src/components/Box/Tabbed.stories.d.ts.map +1 -0
- package/dist/types/src/components/Box/ToggleContainer.d.ts +13 -0
- package/dist/types/src/components/Box/ToggleContainer.d.ts.map +1 -0
- package/dist/types/src/components/Box/ToggleContainer.stories.d.ts +9 -0
- package/dist/types/src/components/Box/ToggleContainer.stories.d.ts.map +1 -0
- package/dist/types/src/components/Box/index.d.ts +4 -0
- package/dist/types/src/components/Box/index.d.ts.map +1 -0
- package/dist/types/src/components/ChatContainer/ChatContainer.d.ts +7 -0
- package/dist/types/src/components/ChatContainer/ChatContainer.d.ts.map +1 -0
- package/dist/types/src/components/ChatContainer/index.d.ts +4 -0
- package/dist/types/src/components/ChatContainer/index.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts +14 -0
- package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts +8 -0
- package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownViewer/index.d.ts +2 -0
- package/dist/types/src/components/MarkdownViewer/index.d.ts.map +1 -0
- package/dist/types/src/components/Prompt/Prompt.d.ts +7 -0
- package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -0
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts +8 -0
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -0
- package/dist/types/src/components/Prompt/index.d.ts +2 -0
- package/dist/types/src/components/Prompt/index.d.ts.map +1 -0
- package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts +20 -0
- package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts.map +1 -0
- package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +6 -0
- package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +1 -0
- package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +8 -0
- package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +1 -0
- package/dist/types/src/components/ServiceRegistry/index.d.ts +2 -0
- package/dist/types/src/components/ServiceRegistry/index.d.ts.map +1 -0
- package/dist/types/src/components/Thread/Thread.d.ts +6 -9
- package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
- package/dist/types/src/components/Thread/Thread.stories.d.ts +3 -4
- package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
- package/dist/types/src/components/Thread/ThreadMessage.d.ts +12 -0
- package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -0
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +5 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +3 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/processor.d.ts +39 -15
- package/dist/types/src/hooks/processor.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatProcessor.d.ts +7 -0
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -0
- package/dist/types/src/hooks/useMessageQueue.d.ts +41 -0
- package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -0
- package/dist/types/src/hooks/useServices.d.ts +7 -0
- package/dist/types/src/hooks/useServices.d.ts.map +1 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +2 -1
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/{testing.d.ts → test-functions.d.ts} +1 -1
- package/dist/types/src/testing/test-functions.d.ts.map +1 -0
- package/dist/types/src/testing/test-services.d.ts +5 -0
- package/dist/types/src/testing/test-services.d.ts.map +1 -0
- package/dist/types/src/tools/function.d.ts +5 -0
- package/dist/types/src/tools/function.d.ts.map +1 -0
- package/dist/types/src/tools/index.d.ts +3 -0
- package/dist/types/src/tools/index.d.ts.map +1 -0
- package/dist/types/src/tools/openapi.d.ts +10 -0
- package/dist/types/src/tools/openapi.d.ts.map +1 -0
- package/dist/types/src/tools/openapi.test.d.ts +2 -0
- package/dist/types/src/tools/openapi.test.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +12 -6
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/registry.d.ts +10 -0
- package/dist/types/src/types/registry.d.ts.map +1 -0
- package/dist/types/src/types/schema.d.ts +156 -7
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +2 -2
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +56 -49
- package/src/AutomationPlugin.tsx +18 -26
- package/src/artifacts.stories.tsx +126 -65
- package/src/capabilities/ai-client.ts +1 -1
- package/src/capabilities/app-graph-builder.ts +31 -2
- package/src/capabilities/intent-resolver.ts +14 -9
- package/src/capabilities/react-surface.tsx +14 -12
- package/src/components/Box/StatusLine.stories.tsx +52 -0
- package/src/components/Box/StatusLine.tsx +76 -0
- package/src/components/Box/Tabbed.stories.tsx +51 -0
- package/src/components/Box/Tabbed.tsx +89 -0
- package/src/components/Box/ToggleContainer.stories.tsx +110 -0
- package/src/components/Box/ToggleContainer.tsx +108 -0
- package/src/components/Box/index.ts +7 -0
- package/src/components/ChatContainer/ChatContainer.tsx +52 -0
- package/src/components/ChatContainer/index.ts +8 -0
- package/src/components/MarkdownViewer/MarkdownViewer.stories.tsx +56 -0
- package/src/components/MarkdownViewer/MarkdownViewer.tsx +79 -0
- package/src/components/MarkdownViewer/index.ts +5 -0
- package/src/components/Prompt/Prompt.stories.tsx +50 -0
- package/src/components/Prompt/Prompt.tsx +36 -0
- package/src/components/Prompt/index.ts +5 -0
- package/src/components/Prompt/prompt-autocomplete.ts +200 -0
- package/src/components/PromptEditor/PromptEditor.stories.tsx +3 -3
- package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +49 -0
- package/src/components/ServiceRegistry/ServiceRegistry.tsx +75 -0
- package/src/components/ServiceRegistry/index.ts +5 -0
- package/src/components/Thread/Thread.stories.tsx +152 -97
- package/src/components/Thread/Thread.tsx +115 -108
- package/src/components/Thread/ThreadMessage.tsx +225 -0
- package/src/components/TriggerEditor/TriggerEditor.tsx +8 -5
- package/src/components/index.ts +4 -1
- package/src/hooks/index.ts +4 -0
- package/src/hooks/processor.ts +114 -65
- package/src/hooks/useChatProcessor.tsx +86 -0
- package/src/hooks/useMessageQueue.ts +23 -0
- package/src/hooks/useServices.ts +28 -0
- package/src/meta.ts +2 -1
- package/src/testing/index.ts +2 -1
- package/src/testing/test-services.ts +131 -0
- package/src/tools/function.ts +47 -0
- package/src/tools/index.ts +6 -0
- package/src/tools/openapi.test.ts +227 -0
- package/src/tools/openapi.ts +331 -0
- package/src/translations.ts +9 -6
- package/src/types/index.ts +1 -0
- package/src/types/registry.ts +26 -0
- package/src/types/schema.ts +90 -3
- package/src/types/types.ts +2 -2
- package/dist/lib/browser/AssistantPanel-KO6DZBTU.mjs +0 -340
- package/dist/lib/browser/AssistantPanel-KO6DZBTU.mjs.map +0 -7
- package/dist/lib/browser/AutomationPanel-BMLM533Z.mjs +0 -131
- package/dist/lib/browser/AutomationPanel-BMLM533Z.mjs.map +0 -7
- package/dist/lib/browser/ChatContainer-SIAJFRFF.mjs +0 -300
- package/dist/lib/browser/ChatContainer-SIAJFRFF.mjs.map +0 -7
- package/dist/lib/browser/chunk-C3VRGDR6.mjs +0 -75
- package/dist/lib/browser/chunk-C3VRGDR6.mjs.map +0 -7
- package/dist/lib/browser/chunk-JSNPW6JF.mjs +0 -14
- package/dist/lib/browser/chunk-JSNPW6JF.mjs.map +0 -7
- package/dist/lib/browser/chunk-KPSDH6XZ.mjs +0 -118
- package/dist/lib/browser/chunk-KPSDH6XZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-YZF3SDZL.mjs +0 -139
- package/dist/lib/browser/chunk-YZF3SDZL.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-AHDQ3KQP.mjs +0 -24
- package/dist/lib/browser/intent-resolver-AHDQ3KQP.mjs.map +0 -7
- package/dist/lib/browser/react-surface-IGMBLSV7.mjs.map +0 -7
- package/dist/lib/node/AssistantPanel-PPFS2HKK.cjs +0 -360
- package/dist/lib/node/AssistantPanel-PPFS2HKK.cjs.map +0 -7
- package/dist/lib/node/AutomationPanel-RXJDVLCF.cjs.map +0 -7
- package/dist/lib/node/ChatContainer-GS2SC5OG.cjs +0 -318
- package/dist/lib/node/ChatContainer-GS2SC5OG.cjs.map +0 -7
- package/dist/lib/node/chunk-BUQOZA4N.cjs.map +0 -7
- package/dist/lib/node/chunk-DNLBVFR7.cjs +0 -147
- package/dist/lib/node/chunk-DNLBVFR7.cjs.map +0 -7
- package/dist/lib/node/chunk-TWDGP26W.cjs +0 -172
- package/dist/lib/node/chunk-TWDGP26W.cjs.map +0 -7
- package/dist/lib/node/chunk-VEGLN4YN.cjs.map +0 -7
- package/dist/lib/node/chunk-Z2YFE5SJ.cjs +0 -49
- package/dist/lib/node/chunk-Z2YFE5SJ.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-TBHYXBDI.cjs.map +0 -7
- package/dist/lib/node/react-surface-BVUZMKYS.cjs.map +0 -7
- package/dist/lib/node-esm/AssistantPanel-XSSKKCJY.mjs +0 -341
- package/dist/lib/node-esm/AssistantPanel-XSSKKCJY.mjs.map +0 -7
- package/dist/lib/node-esm/AutomationPanel-GQZZ4UBI.mjs +0 -132
- package/dist/lib/node-esm/AutomationPanel-GQZZ4UBI.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-57ILGC3R.mjs +0 -301
- package/dist/lib/node-esm/ChatContainer-57ILGC3R.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ICHNUP5M.mjs +0 -119
- package/dist/lib/node-esm/chunk-ICHNUP5M.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JCYVS5GG.mjs +0 -76
- package/dist/lib/node-esm/chunk-JCYVS5GG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-L2B6VGMG.mjs +0 -16
- package/dist/lib/node-esm/chunk-L2B6VGMG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-U7HXYMPZ.mjs +0 -141
- package/dist/lib/node-esm/chunk-U7HXYMPZ.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-DPJJHFGK.mjs +0 -25
- package/dist/lib/node-esm/intent-resolver-DPJJHFGK.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-77S6XJOM.mjs.map +0 -7
- package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts +0 -8
- package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts.map +0 -1
- package/dist/types/src/components/AssistantPanel/index.d.ts +0 -3
- package/dist/types/src/components/AssistantPanel/index.d.ts.map +0 -1
- package/dist/types/src/components/AssistantPanel/system-instructions.d.ts +0 -6
- package/dist/types/src/components/AssistantPanel/system-instructions.d.ts.map +0 -1
- package/dist/types/src/components/ChatContainer.d.ts +0 -8
- package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
- package/dist/types/src/testing/testing.d.ts.map +0 -1
- package/src/components/AssistantPanel/AssistantPanel.tsx +0 -232
- package/src/components/AssistantPanel/index.ts +0 -7
- package/src/components/AssistantPanel/system-instructions.ts +0 -166
- package/src/components/ChatContainer.tsx +0 -80
- /package/dist/lib/browser/{chunk-HZ4TA7HY.mjs.map → chunk-BQHXJZ4K.mjs.map} +0 -0
- /package/dist/lib/node/{chunk-ZS5RZ7RM.cjs.map → chunk-AWZVJZ2I.cjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-ISYLEDVU.mjs.map → chunk-LSSWQIQD.mjs.map} +0 -0
- /package/src/testing/{testing.ts → test-functions.ts} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/AutomationPanel/AutomationPanel.tsx", "../../../src/components/AutomationPanel/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { S } from '@dxos/echo-schema';\nimport {\n FunctionType,\n FunctionTrigger,\n FunctionTriggerSchema,\n TriggerKind,\n type FunctionTriggerType,\n ScriptType,\n} from '@dxos/functions';\nimport { type Client, useClient } from '@dxos/react-client';\nimport { create, Filter, useQuery, type Space, type ReactiveObject, getSpace } from '@dxos/react-client/echo';\nimport { IconButton, Input, useTranslation, Button } from '@dxos/react-ui';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { TriggerEditor, type TriggerEditorProps } from '../TriggerEditor';\n\nconst grid = 'grid grid-cols-[40px_1fr_32px] min-bs-[2.5rem]';\n\nexport type AutomationPanelProps = {\n space: Space;\n object?: ReactiveObject<any>;\n};\n\n// TODO(burdon): Factor out common layout with ViewEditor.\nexport const AutomationPanel = ({ space, object }: AutomationPanelProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const client = useClient();\n const triggers = useQuery(space, Filter.schema(FunctionTrigger));\n const functions = useQuery(space, Filter.schema(FunctionType));\n const scripts = useQuery(space, Filter.schema(ScriptType));\n\n const [trigger, setTrigger] = useState<FunctionTriggerType>();\n const [selected, setSelected] = useState<FunctionTrigger>();\n\n const handleSelect = (trigger: FunctionTrigger) => {\n const { id: _, ...values } = trigger;\n setTrigger(values);\n setSelected(trigger);\n };\n\n const handleAdd = () => {\n setTrigger(create(FunctionTriggerSchema, { meta: {} }));\n setSelected(undefined);\n };\n\n const handleDelete = (trigger: FunctionTrigger) => {\n space.db.remove(trigger);\n setTrigger(undefined);\n setSelected(undefined);\n };\n\n const handleSave: TriggerEditorProps['onSave'] = (trigger) => {\n if (selected) {\n Object.assign(selected, trigger);\n } else {\n space.db.add(create(FunctionTrigger, trigger));\n }\n\n setTrigger(undefined);\n setSelected(undefined);\n };\n\n const handleCancel: TriggerEditorProps['onCancel'] = () => {\n setTrigger(undefined);\n };\n\n return (\n <div className='flex flex-col w-full divide-y divide-separator overflow-y-auto'>\n <List.Root<FunctionTrigger> items={triggers} isItem={S.is(FunctionTrigger)} getId={(field) => field.id}>\n {({ items: triggers }) => (\n <div role='list' className='flex flex-col w-full'>\n {triggers?.map((trigger) => {\n const copyAction = getCopyAction(client, trigger);\n return (\n <List.Item<FunctionTrigger>\n key={trigger.id}\n item={trigger}\n classNames={mx(grid, ghostHover, 'items-center', 'px-2')}\n >\n <Input.Root>\n <Input.Switch\n checked={trigger.enabled}\n onCheckedChange={(checked) => (trigger.enabled = checked)}\n />\n </Input.Root>\n\n <div className={'flex'}>\n <List.ItemTitle\n classNames='px-1 cursor-pointer w-0 shrink truncate'\n onClick={() => handleSelect(trigger)}\n >\n {getFunctionName(scripts, functions, trigger) ?? '∅'}\n </List.ItemTitle>\n\n {/* TODO: a better way to expose copy action */}\n {copyAction && (\n <Button onClick={() => navigator.clipboard.writeText(copyAction.contentProvider())}>\n {t(copyAction.translationKey)}\n </Button>\n )}\n </div>\n\n <List.ItemDeleteButton onClick={() => handleDelete(trigger)} />\n </List.Item>\n );\n })}\n </div>\n )}\n </List.Root>\n\n {trigger && <TriggerEditor space={space} trigger={trigger} onSave={handleSave} onCancel={handleCancel} />}\n\n {!trigger && (\n <div className='flex p-2 justify-center'>\n <IconButton icon='ph--plus--regular' label={t('new trigger')} onClick={handleAdd} />\n </div>\n )}\n </div>\n );\n};\n\nconst getCopyAction = (client: Client, trigger: FunctionTrigger | undefined) => {\n if (trigger?.spec?.type === TriggerKind.Email) {\n return { translationKey: 'trigger copy email', contentProvider: () => `${getSpace(trigger)!.id}@dxos.network` };\n }\n\n if (trigger?.spec?.type === TriggerKind.Webhook) {\n return { translationKey: 'trigger copy url', contentProvider: () => getWebhookUrl(client, trigger) };\n }\n\n return undefined;\n};\n\nconst getWebhookUrl = (client: Client, trigger: FunctionTrigger) => {\n const spaceId = getSpace(trigger)!.id;\n const edgeUrl = new URL(client.config.values.runtime!.services!.edge!.url!);\n const isSecure = edgeUrl.protocol.startsWith('https') || edgeUrl.protocol.startsWith('wss');\n edgeUrl.protocol = isSecure ? 'https' : 'http';\n return new URL(`/webhook/${spaceId}:${trigger.id}`, edgeUrl).toString();\n};\n\nconst getFunctionName = (scripts: ScriptType[], functions: FunctionType[], trigger: FunctionTriggerType) => {\n const shortId = trigger.function && `${trigger.function?.slice(0, 16)}…`;\n const functionObject = functions.find((fn) => fn.name === trigger.function);\n if (!functionObject) {\n return shortId;\n }\n return scripts.find((s) => functionObject.source?.target?.id === s.id)?.name ?? shortId;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { AutomationPanel } from './AutomationPanel';\n\nexport default AutomationPanel;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useState", "S", "FunctionType", "FunctionTrigger", "FunctionTriggerSchema", "TriggerKind", "ScriptType", "useClient", "create", "Filter", "useQuery", "getSpace", "IconButton", "Input", "useTranslation", "Button", "List", "ghostHover", "mx", "grid", "AutomationPanel", "space", "object", "t", "useTranslation", "AUTOMATION_PLUGIN", "client", "useClient", "triggers", "useQuery", "Filter", "schema", "FunctionTrigger", "functions", "FunctionType", "scripts", "ScriptType", "trigger", "setTrigger", "useState", "selected", "setSelected", "handleSelect", "id", "_", "values", "handleAdd", "create", "FunctionTriggerSchema", "meta", "undefined", "handleDelete", "db", "remove", "handleSave", "Object", "assign", "add", "handleCancel", "div", "className", "List", "Root", "items", "isItem", "S", "is", "getId", "field", "role", "map", "copyAction", "getCopyAction", "Item", "key", "item", "classNames", "mx", "ghostHover", "Input", "Switch", "checked", "enabled", "onCheckedChange", "ItemTitle", "onClick", "getFunctionName", "Button", "navigator", "clipboard", "writeText", "contentProvider", "translationKey", "ItemDeleteButton", "TriggerEditor", "onSave", "onCancel", "IconButton", "icon", "label", "spec", "type", "TriggerKind", "Email", "getSpace", "Webhook", "getWebhookUrl", "spaceId", "edgeUrl", "URL", "config", "runtime", "services", "edge", "url", "isSecure", "protocol", "startsWith", "toString", "shortId", "function", "slice", "functionObject", "find", "fn", "name", "s", "source", "target", "AutomationPanel"]
|
|
7
|
-
}
|
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
import "./chunk-JSNPW6JF.mjs";
|
|
2
|
-
import {
|
|
3
|
-
Thread
|
|
4
|
-
} from "./chunk-YZF3SDZL.mjs";
|
|
5
|
-
import {
|
|
6
|
-
AutomationCapabilities
|
|
7
|
-
} from "./chunk-HZ4TA7HY.mjs";
|
|
8
|
-
import "./chunk-HKX3D3ZP.mjs";
|
|
9
|
-
|
|
10
|
-
// packages/plugins/experimental/plugin-automation/src/components/ChatContainer.tsx
|
|
11
|
-
import React, { useCallback, useMemo } from "react";
|
|
12
|
-
import { Capabilities, useCapabilities, useCapability, useIntentDispatcher } from "@dxos/app-framework";
|
|
13
|
-
import { createSystemPrompt } from "@dxos/artifact";
|
|
14
|
-
import { DXN as DXN2, QueueSubspaceTags } from "@dxos/keys";
|
|
15
|
-
import { getSpace } from "@dxos/react-client/echo";
|
|
16
|
-
import { useEdgeClient, useQueue } from "@dxos/react-edge-client";
|
|
17
|
-
import { StackItem } from "@dxos/react-ui-stack";
|
|
18
|
-
|
|
19
|
-
// packages/plugins/experimental/plugin-automation/src/hooks/processor.ts
|
|
20
|
-
import { computed, signal } from "@preact/signals-core";
|
|
21
|
-
import { Message } from "@dxos/artifact";
|
|
22
|
-
import { isToolUse, runTools } from "@dxos/assistant";
|
|
23
|
-
import { createStatic } from "@dxos/echo-schema";
|
|
24
|
-
import { invariant } from "@dxos/invariant";
|
|
25
|
-
import { log } from "@dxos/log";
|
|
26
|
-
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-automation/src/hooks/processor.ts";
|
|
27
|
-
var defaultOptions = {
|
|
28
|
-
model: "@anthropic/claude-3-5-sonnet-20241022",
|
|
29
|
-
systemPrompt: ""
|
|
30
|
-
};
|
|
31
|
-
var ChatProcessor = class {
|
|
32
|
-
constructor(_client, _tools, _extensions, _options = defaultOptions) {
|
|
33
|
-
this._client = _client;
|
|
34
|
-
this._tools = _tools;
|
|
35
|
-
this._extensions = _extensions;
|
|
36
|
-
this._options = _options;
|
|
37
|
-
this._history = [];
|
|
38
|
-
this._pending = signal([]);
|
|
39
|
-
this._streaming = signal([]);
|
|
40
|
-
}
|
|
41
|
-
get isStreaming() {
|
|
42
|
-
return computed(() => this._pending.value.length > 0);
|
|
43
|
-
}
|
|
44
|
-
get messages() {
|
|
45
|
-
return computed(() => [
|
|
46
|
-
...this._pending.value,
|
|
47
|
-
...this._streaming.value
|
|
48
|
-
]);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Make GPT request.
|
|
52
|
-
*/
|
|
53
|
-
async request(message, history = []) {
|
|
54
|
-
log.info("requesting...", {
|
|
55
|
-
message,
|
|
56
|
-
history: history.length
|
|
57
|
-
}, {
|
|
58
|
-
F: __dxlog_file,
|
|
59
|
-
L: 73,
|
|
60
|
-
S: this,
|
|
61
|
-
C: (f, a) => f(...a)
|
|
62
|
-
});
|
|
63
|
-
this._history = history;
|
|
64
|
-
this._pending.value = [
|
|
65
|
-
createStatic(Message, {
|
|
66
|
-
role: "user",
|
|
67
|
-
content: [
|
|
68
|
-
{
|
|
69
|
-
type: "text",
|
|
70
|
-
text: message
|
|
71
|
-
}
|
|
72
|
-
]
|
|
73
|
-
})
|
|
74
|
-
];
|
|
75
|
-
this._streaming.value = [];
|
|
76
|
-
await this.generate();
|
|
77
|
-
return this._reset();
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Cancel pending requests.
|
|
81
|
-
* @returns Pending requests (incl. the request message).
|
|
82
|
-
*/
|
|
83
|
-
async cancel() {
|
|
84
|
-
log.info("cancelling...", void 0, {
|
|
85
|
-
F: __dxlog_file,
|
|
86
|
-
L: 92,
|
|
87
|
-
S: this,
|
|
88
|
-
C: (f, a) => f(...a)
|
|
89
|
-
});
|
|
90
|
-
this._response?.abort();
|
|
91
|
-
return this._reset();
|
|
92
|
-
}
|
|
93
|
-
async _reset() {
|
|
94
|
-
const pending = this._pending.value;
|
|
95
|
-
this._history = [];
|
|
96
|
-
this._pending.value = [];
|
|
97
|
-
this._streaming.value = [];
|
|
98
|
-
return pending;
|
|
99
|
-
}
|
|
100
|
-
async generate() {
|
|
101
|
-
try {
|
|
102
|
-
let more = false;
|
|
103
|
-
do {
|
|
104
|
-
log.info("requesting...", {
|
|
105
|
-
history: this._history.length,
|
|
106
|
-
pending: this._pending.value.length
|
|
107
|
-
}, {
|
|
108
|
-
F: __dxlog_file,
|
|
109
|
-
L: 109,
|
|
110
|
-
S: this,
|
|
111
|
-
C: (f, a) => f(...a)
|
|
112
|
-
});
|
|
113
|
-
this._response = await this._client.generate({
|
|
114
|
-
...this._options,
|
|
115
|
-
// TODO(burdon): Rename messages or separate history/message.
|
|
116
|
-
history: [
|
|
117
|
-
...this._history,
|
|
118
|
-
...this._pending.value
|
|
119
|
-
],
|
|
120
|
-
tools: this._tools
|
|
121
|
-
});
|
|
122
|
-
queueMicrotask(async () => {
|
|
123
|
-
invariant(this._response, void 0, {
|
|
124
|
-
F: __dxlog_file,
|
|
125
|
-
L: 119,
|
|
126
|
-
S: this,
|
|
127
|
-
A: [
|
|
128
|
-
"this._response",
|
|
129
|
-
""
|
|
130
|
-
]
|
|
131
|
-
});
|
|
132
|
-
for await (const event of this._response) {
|
|
133
|
-
log.info("event", {
|
|
134
|
-
event: event.type
|
|
135
|
-
}, {
|
|
136
|
-
F: __dxlog_file,
|
|
137
|
-
L: 121,
|
|
138
|
-
S: this,
|
|
139
|
-
C: (f, a) => f(...a)
|
|
140
|
-
});
|
|
141
|
-
this._streaming.value = this._response.accumulatedMessages.map((message) => createStatic(Message, message));
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
const messages = await this._response.complete();
|
|
145
|
-
log.info("response", {
|
|
146
|
-
messages: messages.length
|
|
147
|
-
}, {
|
|
148
|
-
F: __dxlog_file,
|
|
149
|
-
L: 128,
|
|
150
|
-
S: this,
|
|
151
|
-
C: (f, a) => f(...a)
|
|
152
|
-
});
|
|
153
|
-
this._pending.value.push(...messages.map((message) => createStatic(Message, message)));
|
|
154
|
-
this._streaming.value = [];
|
|
155
|
-
more = false;
|
|
156
|
-
if (messages.length > 0 && isToolUse(messages.at(-1))) {
|
|
157
|
-
log.info("tool request...", void 0, {
|
|
158
|
-
F: __dxlog_file,
|
|
159
|
-
L: 135,
|
|
160
|
-
S: this,
|
|
161
|
-
C: (f, a) => f(...a)
|
|
162
|
-
});
|
|
163
|
-
const response = await runTools({
|
|
164
|
-
message: messages.at(-1),
|
|
165
|
-
tools: this._tools ?? [],
|
|
166
|
-
extensions: this._extensions
|
|
167
|
-
});
|
|
168
|
-
log.info("tool response", {
|
|
169
|
-
response
|
|
170
|
-
}, {
|
|
171
|
-
F: __dxlog_file,
|
|
172
|
-
L: 142,
|
|
173
|
-
S: this,
|
|
174
|
-
C: (f, a) => f(...a)
|
|
175
|
-
});
|
|
176
|
-
switch (response.type) {
|
|
177
|
-
case "continue": {
|
|
178
|
-
this._pending.value.push(response.message);
|
|
179
|
-
more = true;
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
} while (more);
|
|
185
|
-
} catch (err) {
|
|
186
|
-
log.catch("request failed", {
|
|
187
|
-
err
|
|
188
|
-
}, {
|
|
189
|
-
F: __dxlog_file,
|
|
190
|
-
L: 154,
|
|
191
|
-
S: this,
|
|
192
|
-
C: (f, a) => f(...a)
|
|
193
|
-
});
|
|
194
|
-
} finally {
|
|
195
|
-
log.info("done", void 0, {
|
|
196
|
-
F: __dxlog_file,
|
|
197
|
-
L: 156,
|
|
198
|
-
S: this,
|
|
199
|
-
C: (f, a) => f(...a)
|
|
200
|
-
});
|
|
201
|
-
this._response = void 0;
|
|
202
|
-
this._streaming.value = [];
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
// packages/plugins/experimental/plugin-automation/src/hooks/useLocalTriggerManager.ts
|
|
208
|
-
import { useEffect, useState } from "react";
|
|
209
|
-
import { Mutex } from "@dxos/async";
|
|
210
|
-
import { Context } from "@dxos/context";
|
|
211
|
-
import { createSubscriptionTrigger } from "@dxos/functions";
|
|
212
|
-
import { FunctionTrigger } from "@dxos/functions";
|
|
213
|
-
import { invariant as invariant3 } from "@dxos/invariant";
|
|
214
|
-
import { log as log3 } from "@dxos/log";
|
|
215
|
-
import { useClient } from "@dxos/react-client";
|
|
216
|
-
import { Filter, useQuery } from "@dxos/react-client/echo";
|
|
217
|
-
|
|
218
|
-
// packages/plugins/experimental/plugin-automation/src/hooks/invocation-handler.ts
|
|
219
|
-
import { sleep } from "@dxos/async";
|
|
220
|
-
import { getObjectCore, ResultFormat } from "@dxos/echo-db";
|
|
221
|
-
import { FunctionType } from "@dxos/functions";
|
|
222
|
-
import { invariant as invariant2 } from "@dxos/invariant";
|
|
223
|
-
import { DXN, LOCAL_SPACE_TAG } from "@dxos/keys";
|
|
224
|
-
import { log as log2 } from "@dxos/log";
|
|
225
|
-
|
|
226
|
-
// packages/plugins/experimental/plugin-automation/src/hooks/useLocalTriggerManager.ts
|
|
227
|
-
var registerTriggersMutex = new Mutex();
|
|
228
|
-
|
|
229
|
-
// packages/plugins/experimental/plugin-automation/src/components/ChatContainer.tsx
|
|
230
|
-
var ChatContainer = ({ chat, role }) => {
|
|
231
|
-
const edgeClient = useEdgeClient();
|
|
232
|
-
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
233
|
-
const space = getSpace(chat);
|
|
234
|
-
const aiClient = useCapability(AutomationCapabilities.AiClient);
|
|
235
|
-
const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);
|
|
236
|
-
const globalTools = useCapabilities(Capabilities.Tools);
|
|
237
|
-
const tools = useMemo(() => [
|
|
238
|
-
...globalTools.flat(),
|
|
239
|
-
...artifactDefinitions.flatMap((definition) => definition.tools)
|
|
240
|
-
], [
|
|
241
|
-
globalTools,
|
|
242
|
-
artifactDefinitions
|
|
243
|
-
]);
|
|
244
|
-
const systemPrompt = useMemo(() => createSystemPrompt({
|
|
245
|
-
artifacts: artifactDefinitions.map((definition) => definition.instructions)
|
|
246
|
-
}), [
|
|
247
|
-
artifactDefinitions
|
|
248
|
-
]);
|
|
249
|
-
const processor = useMemo(() => new ChatProcessor(aiClient, tools, {
|
|
250
|
-
space,
|
|
251
|
-
dispatch
|
|
252
|
-
}, {
|
|
253
|
-
model: "@anthropic/claude-3-5-sonnet-20241022",
|
|
254
|
-
systemPrompt
|
|
255
|
-
}), [
|
|
256
|
-
aiClient,
|
|
257
|
-
tools,
|
|
258
|
-
space,
|
|
259
|
-
systemPrompt
|
|
260
|
-
]);
|
|
261
|
-
const queueDxn = useMemo(() => new DXN2(DXN2.kind.QUEUE, [
|
|
262
|
-
QueueSubspaceTags.DATA,
|
|
263
|
-
space.id,
|
|
264
|
-
chat.queue.dxn.parts.at(-1)
|
|
265
|
-
]), [
|
|
266
|
-
chat.queue.dxn
|
|
267
|
-
]);
|
|
268
|
-
const queue = useQueue(edgeClient, queueDxn);
|
|
269
|
-
const messages = useMemo(() => [
|
|
270
|
-
...queue.items,
|
|
271
|
-
...processor.messages.value
|
|
272
|
-
], [
|
|
273
|
-
queue.items,
|
|
274
|
-
processor.messages.value
|
|
275
|
-
]);
|
|
276
|
-
const handleSubmit = useCallback(async (message) => {
|
|
277
|
-
if (processor.isStreaming) {
|
|
278
|
-
await processor.cancel();
|
|
279
|
-
}
|
|
280
|
-
const messages2 = await processor.request(message, queue.items);
|
|
281
|
-
await queue.append(messages2);
|
|
282
|
-
}, [
|
|
283
|
-
processor,
|
|
284
|
-
queue
|
|
285
|
-
]);
|
|
286
|
-
return /* @__PURE__ */ React.createElement(StackItem.Content, {
|
|
287
|
-
toolbar: false,
|
|
288
|
-
role
|
|
289
|
-
}, /* @__PURE__ */ React.createElement(Thread, {
|
|
290
|
-
messages,
|
|
291
|
-
streaming: processor.isStreaming.value,
|
|
292
|
-
onSubmit: handleSubmit
|
|
293
|
-
}));
|
|
294
|
-
};
|
|
295
|
-
var ChatContainer_default = ChatContainer;
|
|
296
|
-
export {
|
|
297
|
-
ChatContainer,
|
|
298
|
-
ChatContainer_default as default
|
|
299
|
-
};
|
|
300
|
-
//# sourceMappingURL=ChatContainer-SIAJFRFF.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/ChatContainer.tsx", "../../../src/hooks/processor.ts", "../../../src/hooks/useLocalTriggerManager.ts", "../../../src/hooks/invocation-handler.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Capabilities, useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework';\nimport { createSystemPrompt, type Message } from '@dxos/artifact';\nimport { DXN, QueueSubspaceTags } from '@dxos/keys';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useEdgeClient, useQueue } from '@dxos/react-edge-client';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { Thread } from './Thread';\nimport { AutomationCapabilities } from '../capabilities';\nimport { ChatProcessor } from '../hooks';\nimport { type GptChatType } from '../types';\n\nexport const ChatContainer = ({ chat, role }: { chat: GptChatType; role: string }) => {\n const edgeClient = useEdgeClient();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const space = getSpace(chat);\n const aiClient = useCapability(AutomationCapabilities.AiClient);\n const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);\n const globalTools = useCapabilities(Capabilities.Tools);\n const tools = useMemo(\n () => [...globalTools.flat(), ...artifactDefinitions.flatMap((definition) => definition.tools)],\n [globalTools, artifactDefinitions],\n );\n const systemPrompt = useMemo(\n () => createSystemPrompt({ artifacts: artifactDefinitions.map((definition) => definition.instructions) }),\n [artifactDefinitions],\n );\n\n // TODO(burdon): Create hook.\n // TODO(wittjosiah): Should these be created in the component?\n // TODO(zan): Combine with ai service client?\n const processor = useMemo(\n () =>\n new ChatProcessor(\n aiClient,\n tools,\n { space, dispatch },\n { model: '@anthropic/claude-3-5-sonnet-20241022', systemPrompt },\n ),\n [aiClient, tools, space, systemPrompt],\n );\n // TODO(wittjosiah): Remove transformation.\n const queueDxn = useMemo(\n () => new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, space!.id, chat.queue.dxn.parts.at(-1)!]),\n [chat.queue.dxn],\n );\n const queue = useQueue<Message>(edgeClient, queueDxn);\n const messages = useMemo(\n () => [...queue.items, ...processor.messages.value],\n [queue.items, processor.messages.value],\n );\n\n const handleSubmit = useCallback(\n async (message: string) => {\n // TODO(burdon): Button to cancel. Otherwise queue request.\n if (processor.isStreaming) {\n await processor.cancel();\n }\n\n const messages = await processor.request(message, queue.items);\n // TODO(burdon): Append on success only? If approved by user? Clinet/server.\n await queue.append(messages);\n },\n [processor, queue],\n );\n\n return (\n <StackItem.Content toolbar={false} role={role}>\n <Thread messages={messages} streaming={processor.isStreaming.value} onSubmit={handleSubmit} />\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ReadonlySignal, type Signal, computed, signal } from '@preact/signals-core';\n\nimport { type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { type Tool, Message } from '@dxos/artifact';\nimport {\n type AIServiceClientImpl,\n type GenerateRequest,\n type GenerationStream,\n isToolUse,\n runTools,\n} from '@dxos/assistant';\nimport { createStatic } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\n\nconst defaultOptions: Pick<GenerateRequest, 'model' | 'systemPrompt'> = {\n model: '@anthropic/claude-3-5-sonnet-20241022',\n systemPrompt: '',\n};\n\n// TODO(burdon): Factor out.\ndeclare global {\n interface ToolContextExtensions {\n space?: Space;\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\n/**\n * Handles interactions with an AI service.\n * Manages message history, and executes tools based on AI responses.\n * Maintains a queue of messages and handles streaming responses from the AI service.\n * Supports cancellation of in-progress requests.\n */\n// TODO(burdon): Tests.\nexport class ChatProcessor {\n /** Prior history from queue. */\n private _history: Message[] = [];\n\n /** Pending messages (incl. the initial user message). */\n private _pending: Signal<Message[]> = signal([]);\n\n /** Streaming messages (from the AI service). */\n private _streaming: Signal<Message[]> = signal([]);\n\n /** Current streaming response. */\n private _response: GenerationStream | undefined;\n\n constructor(\n private readonly _client: AIServiceClientImpl,\n private readonly _tools?: Tool[],\n private readonly _extensions?: ToolContextExtensions,\n private readonly _options: Pick<GenerateRequest, 'model' | 'systemPrompt'> = defaultOptions,\n ) {}\n\n get isStreaming(): ReadonlySignal<boolean> {\n return computed(() => this._pending.value.length > 0);\n }\n\n get messages(): ReadonlySignal<Message[]> {\n return computed(() => [...this._pending.value, ...this._streaming.value]);\n }\n\n /**\n * Make GPT request.\n */\n async request(message: string, history: Message[] = []): Promise<Message[]> {\n log.info('requesting...', { message, history: history.length });\n this._history = history;\n this._pending.value = [\n createStatic(Message, {\n role: 'user',\n content: [{ type: 'text', text: message }],\n }),\n ];\n this._streaming.value = [];\n\n await this.generate();\n return this._reset();\n }\n\n /**\n * Cancel pending requests.\n * @returns Pending requests (incl. the request message).\n */\n async cancel(): Promise<Message[]> {\n log.info('cancelling...');\n this._response?.abort();\n return this._reset();\n }\n\n private async _reset(): Promise<Message[]> {\n const pending = this._pending.value;\n this._history = [];\n this._pending.value = [];\n this._streaming.value = [];\n return pending;\n }\n\n private async generate() {\n try {\n let more = false;\n do {\n log.info('requesting...', { history: this._history.length, pending: this._pending.value.length });\n this._response = await this._client.generate({\n ...this._options,\n // TODO(burdon): Rename messages or separate history/message.\n history: [...this._history, ...this._pending.value],\n tools: this._tools,\n });\n\n // Process the stream.\n queueMicrotask(async () => {\n invariant(this._response);\n for await (const event of this._response) {\n log.info('event', { event: event.type });\n this._streaming.value = this._response.accumulatedMessages.map((message) => createStatic(Message, message));\n }\n });\n\n // Update pending messages.\n const messages = await this._response.complete();\n log.info('response', { messages: messages.length });\n this._pending.value.push(...messages.map((message) => createStatic(Message, message)));\n this._streaming.value = [];\n\n // Resolve tool use locally.\n more = false;\n if (messages.length > 0 && isToolUse(messages.at(-1)!)) {\n log.info('tool request...');\n const response = await runTools({\n message: messages.at(-1)!,\n tools: this._tools ?? [],\n extensions: this._extensions,\n });\n\n log.info('tool response', { response });\n switch (response.type) {\n case 'continue': {\n this._pending.value.push(response.message);\n more = true;\n break;\n }\n }\n }\n } while (more);\n } catch (err) {\n // TODO(burdon): Handle error.\n log.catch('request failed', { err });\n } finally {\n log.info('done');\n this._response = undefined;\n this._streaming.value = [];\n }\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { Mutex } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { createSubscriptionTrigger, type TriggerFactory } from '@dxos/functions';\nimport { FunctionTrigger } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\n\nimport { invokeFunction } from './invocation-handler';\n\nconst registerTriggersMutex = new Mutex();\n\nexport const useLocalTriggerManager = (space: Space) => {\n const client = useClient();\n\n // TODO(burdon): Factor out, creating context for plugin (runs outside of component).\n const [registry] = useState(new Map<string, Context>());\n const triggers = useQuery(space, Filter.schema(FunctionTrigger));\n useEffect(() => {\n setTimeout(async () => {\n // Mark-and-sweep removing disabled triggers.\n await registerTriggersMutex.executeSynchronized(async () => {\n const deprecated = new Set(Array.from(registry.keys()));\n log('triggers', {\n deprecated,\n all: triggers.map((t) => t.id),\n enabled: triggers.filter((t) => t.enabled).map((t) => t.id),\n });\n\n for (const trigger of triggers) {\n if (trigger.enabled) {\n if (registry.has(trigger.id)) {\n deprecated.delete(trigger.id);\n continue;\n }\n log.info('activating trigger', trigger.id);\n\n const ctx = new Context();\n registry.set(trigger.id, ctx);\n const triggerSpec = trigger.spec;\n invariant(triggerSpec);\n\n let triggerFactory: TriggerFactory<any>;\n if (triggerSpec.type === 'subscription') {\n triggerFactory = createSubscriptionTrigger;\n } else {\n log.info('unsupported trigger', { type: triggerSpec.type });\n continue;\n }\n\n await triggerFactory(ctx, space, trigger.spec, (data: any) => {\n return invokeFunction(client, space, trigger, data);\n });\n }\n }\n\n for (const id of deprecated) {\n const ctx = registry.get(id);\n if (ctx) {\n await ctx.dispose();\n registry.delete(id);\n }\n }\n });\n });\n }, [JSON.stringify(triggers)]);\n\n useEffect(() => {\n return () => {\n for (const ctx of registry.values()) {\n void ctx.dispose();\n }\n };\n }, []);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { sleep } from '@dxos/async';\nimport { getObjectCore, ResultFormat } from '@dxos/echo-db';\nimport { type AnyObjectData } from '@dxos/echo-schema';\nimport { FunctionType } from '@dxos/functions';\nimport { type FunctionTrigger } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, LOCAL_SPACE_TAG } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Client, type Config } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\n\nconst MAX_RETRIES = 3;\nconst RETRY_DELAY = 1_000;\n\nconst callFunction = async (funcUrl: string, trigger: any, data: any) => {\n const body = { event: 'trigger', trigger, data };\n\n let retryCount = 0;\n while (retryCount < MAX_RETRIES) {\n log.info('exec', { funcUrl, body, retryCount });\n const response = await fetch(funcUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n const data = await response.text();\n log.info('response', { status: response.status, body: data });\n if (response.status === 409) {\n retryCount++;\n await sleep(RETRY_DELAY * Math.min(retryCount, 2));\n continue;\n }\n\n return { status: response.status, data };\n }\n return { status: 500 };\n};\n\nexport const invokeFunction = async (client: Client, space: Space, trigger: FunctionTrigger, data: any) => {\n try {\n invariant(trigger.spec);\n invariant(trigger.function);\n\n const script = await space.db.query({ id: trigger.function }, { format: ResultFormat.Plain }).first();\n const { objects: functions } = await space.db\n .query({ __typename: FunctionType.typename }, { format: ResultFormat.Plain })\n .run();\n const func = functions.find((fn) => referenceEquals(fn.source, trigger.function!)) as AnyObjectData | undefined;\n const funcSlug = func?.__meta.keys.find((key) => key.source === USERFUNCTIONS_META_KEY)?.id;\n if (!funcSlug) {\n log.warn('function not deployed', { scriptId: script.id, name: script.name });\n return 404;\n }\n\n const funcUrl = getFunctionUrl(client.config, funcSlug, space.id);\n const triggerData: AnyObjectData = {\n ...getObjectCore(trigger).toPlainObject(),\n // TODO: Remove when functions can query by DXN.\n promptId: trigger.meta?.prompt?.id,\n };\n // TODO: Remove when functions can add objects and easily modify collections (push, splice).\n return (await callFunction(funcUrl, triggerData, data)).status;\n } catch (err) {\n return 400;\n }\n};\n\nconst USERFUNCTIONS_META_KEY = 'dxos.org/service/function';\n\nconst getFunctionUrl = (config: Config, slug: string, spaceId?: string) => {\n const baseUrl = new URL('functions/', config.values.runtime?.services?.edge?.url);\n\n // Leading slashes cause the URL to be treated as an absolute path.\n const relativeUrl = slug.replace(/^\\//, '');\n const url = new URL(`./${relativeUrl}`, baseUrl.toString());\n spaceId && url.searchParams.set('spaceId', spaceId);\n url.protocol = 'https';\n return url.toString();\n};\n\n// TODO(dmaretskyi): Factor out.\n\ntype ReferenceLike = { '/': string } | string;\n\nconst referenceEquals = (a: ReferenceLike, b: ReferenceLike): boolean => {\n const aDXN = toDXN(a);\n const bDXN = toDXN(b);\n return aDXN.toString() === bDXN.toString();\n};\n\nconst toDXN = (ref: ReferenceLike): DXN => {\n if (typeof ref === 'string') {\n if (ref.startsWith('dxn:')) {\n return DXN.parse(ref);\n } else {\n return new DXN(DXN.kind.ECHO, [LOCAL_SPACE_TAG, ref]);\n }\n }\n\n invariant(typeof ref['/'] === 'string');\n return DXN.parse(ref['/']);\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useCallback", "useMemo", "Capabilities", "useCapabilities", "useCapability", "useIntentDispatcher", "createSystemPrompt", "DXN", "QueueSubspaceTags", "getSpace", "useEdgeClient", "useQueue", "StackItem", "computed", "signal", "Message", "isToolUse", "runTools", "createStatic", "invariant", "log", "defaultOptions", "model", "systemPrompt", "ChatProcessor", "constructor", "_client", "_tools", "_extensions", "_options", "_history", "_pending", "_streaming", "isStreaming", "value", "length", "messages", "request", "message", "history", "info", "role", "content", "type", "text", "generate", "_reset", "cancel", "_response", "abort", "pending", "more", "tools", "queueMicrotask", "event", "accumulatedMessages", "map", "complete", "push", "at", "response", "extensions", "err", "catch", "undefined", "useEffect", "useState", "Mutex", "Context", "createSubscriptionTrigger", "FunctionTrigger", "invariant", "log", "useClient", "Filter", "useQuery", "sleep", "getObjectCore", "ResultFormat", "FunctionType", "invariant", "DXN", "LOCAL_SPACE_TAG", "log", "registerTriggersMutex", "Mutex", "ChatContainer", "chat", "role", "edgeClient", "useEdgeClient", "dispatchPromise", "dispatch", "useIntentDispatcher", "space", "getSpace", "aiClient", "useCapability", "AutomationCapabilities", "AiClient", "artifactDefinitions", "useCapabilities", "Capabilities", "ArtifactDefinition", "globalTools", "Tools", "tools", "useMemo", "flat", "flatMap", "definition", "systemPrompt", "createSystemPrompt", "artifacts", "map", "instructions", "processor", "ChatProcessor", "model", "queueDxn", "DXN", "kind", "QUEUE", "QueueSubspaceTags", "DATA", "id", "queue", "dxn", "parts", "at", "useQueue", "messages", "items", "value", "handleSubmit", "useCallback", "message", "isStreaming", "cancel", "request", "append", "StackItem", "Content", "toolbar", "Thread", "streaming", "onSubmit"]
|
|
7
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AUTOMATION_PLUGIN
|
|
3
|
-
} from "./chunk-HKX3D3ZP.mjs";
|
|
4
|
-
|
|
5
|
-
// packages/plugins/experimental/plugin-automation/src/types/schema.ts
|
|
6
|
-
import { Expando, Ref, S, TypedObject } from "@dxos/echo-schema";
|
|
7
|
-
var ChainInputType;
|
|
8
|
-
(function(ChainInputType2) {
|
|
9
|
-
ChainInputType2[ChainInputType2["VALUE"] = 0] = "VALUE";
|
|
10
|
-
ChainInputType2[ChainInputType2["PASS_THROUGH"] = 1] = "PASS_THROUGH";
|
|
11
|
-
ChainInputType2[ChainInputType2["RETRIEVER"] = 2] = "RETRIEVER";
|
|
12
|
-
ChainInputType2[ChainInputType2["FUNCTION"] = 3] = "FUNCTION";
|
|
13
|
-
ChainInputType2[ChainInputType2["QUERY"] = 4] = "QUERY";
|
|
14
|
-
ChainInputType2[ChainInputType2["RESOLVER"] = 5] = "RESOLVER";
|
|
15
|
-
ChainInputType2[ChainInputType2["CONTEXT"] = 6] = "CONTEXT";
|
|
16
|
-
ChainInputType2[ChainInputType2["SCHEMA"] = 7] = "SCHEMA";
|
|
17
|
-
})(ChainInputType || (ChainInputType = {}));
|
|
18
|
-
var ChainInputSchema = S.mutable(S.Struct({
|
|
19
|
-
name: S.String,
|
|
20
|
-
type: S.optional(S.Enums(ChainInputType)),
|
|
21
|
-
value: S.optional(S.String)
|
|
22
|
-
}));
|
|
23
|
-
var ChainPromptType = class extends TypedObject({
|
|
24
|
-
typename: "dxos.org/type/ChainPrompt",
|
|
25
|
-
version: "0.1.0"
|
|
26
|
-
})({
|
|
27
|
-
command: S.optional(S.String),
|
|
28
|
-
template: S.String,
|
|
29
|
-
inputs: S.optional(S.mutable(S.Array(ChainInputSchema)))
|
|
30
|
-
}) {
|
|
31
|
-
};
|
|
32
|
-
var ChainType = class extends TypedObject({
|
|
33
|
-
typename: "dxos.org/type/Chain",
|
|
34
|
-
version: "0.1.0"
|
|
35
|
-
})({
|
|
36
|
-
name: S.optional(S.String),
|
|
37
|
-
prompts: S.optional(S.mutable(S.Array(Ref(ChainPromptType))))
|
|
38
|
-
}) {
|
|
39
|
-
};
|
|
40
|
-
var GptChatType = class extends TypedObject({
|
|
41
|
-
typename: "dxos.org/type/GptChat",
|
|
42
|
-
version: "0.1.0"
|
|
43
|
-
})({
|
|
44
|
-
name: S.optional(S.String),
|
|
45
|
-
// TODO(wittjosiah): Should be a ref to a Queue.
|
|
46
|
-
queue: Ref(Expando)
|
|
47
|
-
}) {
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
// packages/plugins/experimental/plugin-automation/src/types/types.ts
|
|
51
|
-
import { S as S2 } from "@dxos/echo-schema";
|
|
52
|
-
var AutomationAction;
|
|
53
|
-
(function(AutomationAction2) {
|
|
54
|
-
const AUTOMATION_ACTION = `${AUTOMATION_PLUGIN}/action`;
|
|
55
|
-
class Create extends S2.TaggedClass()(`${AUTOMATION_ACTION}/create`, {
|
|
56
|
-
input: S2.Struct({
|
|
57
|
-
name: S2.optional(S2.String)
|
|
58
|
-
}),
|
|
59
|
-
output: S2.Struct({
|
|
60
|
-
object: GptChatType
|
|
61
|
-
})
|
|
62
|
-
}) {
|
|
63
|
-
}
|
|
64
|
-
AutomationAction2.Create = Create;
|
|
65
|
-
})(AutomationAction || (AutomationAction = {}));
|
|
66
|
-
|
|
67
|
-
export {
|
|
68
|
-
ChainInputType,
|
|
69
|
-
ChainInputSchema,
|
|
70
|
-
ChainPromptType,
|
|
71
|
-
ChainType,
|
|
72
|
-
GptChatType,
|
|
73
|
-
AutomationAction
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=chunk-C3VRGDR6.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Expando, Ref, S, TypedObject } from '@dxos/echo-schema';\n\n// TODO(burdon): Change to S.Literal (and discriminated union).\nexport enum ChainInputType {\n VALUE = 0,\n PASS_THROUGH = 1,\n RETRIEVER = 2,\n FUNCTION = 3,\n QUERY = 4,\n RESOLVER = 5,\n CONTEXT = 6,\n SCHEMA = 7,\n}\n\nexport const ChainInputSchema = S.mutable(\n S.Struct({\n name: S.String,\n type: S.optional(S.Enums(ChainInputType)),\n value: S.optional(S.String),\n }),\n);\n\nexport type ChainInput = S.Schema.Type<typeof ChainInputSchema>;\n\nexport class ChainPromptType extends TypedObject({ typename: 'dxos.org/type/ChainPrompt', version: '0.1.0' })({\n command: S.optional(S.String),\n template: S.String,\n inputs: S.optional(S.mutable(S.Array(ChainInputSchema))),\n}) {}\n\nexport class ChainType extends TypedObject({ typename: 'dxos.org/type/Chain', version: '0.1.0' })({\n name: S.optional(S.String),\n prompts: S.optional(S.mutable(S.Array(Ref(ChainPromptType)))),\n}) {}\n\n// TODO(wittjosiah): Better name.\nexport class GptChatType extends TypedObject({ typename: 'dxos.org/type/GptChat', version: '0.1.0' })({\n name: S.optional(S.String),\n // TODO(wittjosiah): Should be a ref to a Queue.\n queue: Ref(Expando),\n}) {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { S } from '@dxos/echo-schema';\n\nimport { GptChatType } from './schema';\nimport { AUTOMATION_PLUGIN } from '../meta';\n\nexport namespace AutomationAction {\n const AUTOMATION_ACTION = `${AUTOMATION_PLUGIN}/action`;\n\n export class Create extends S.TaggedClass<Create>()(`${AUTOMATION_ACTION}/create`, {\n input: S.Struct({\n name: S.optional(S.String),\n }),\n output: S.Struct({\n object: GptChatType,\n }),\n }) {}\n}\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,SAASA,SAASC,KAAKC,GAAGC,mBAAmB;;UAGjCC,iBAAAA;;;;;;;;;GAAAA,mBAAAA,iBAAAA,CAAAA,EAAAA;AAWL,IAAMC,mBAAmBC,EAAEC,QAChCD,EAAEE,OAAO;EACPC,MAAMH,EAAEI;EACRC,MAAML,EAAEM,SAASN,EAAEO,MAAMT,cAAAA,CAAAA;EACzBU,OAAOR,EAAEM,SAASN,EAAEI,MAAM;AAC5B,CAAA,CAAA;AAKK,IAAMK,kBAAN,cAA8BC,YAAY;EAAEC,UAAU;EAA6BC,SAAS;AAAQ,CAAA,EAAG;EAC5GC,SAASb,EAAEM,SAASN,EAAEI,MAAM;EAC5BU,UAAUd,EAAEI;EACZW,QAAQf,EAAEM,SAASN,EAAEC,QAAQD,EAAEgB,MAAMjB,gBAAAA,CAAAA,CAAAA;AACvC,CAAA,EAAA;AAAI;AAEG,IAAMkB,YAAN,cAAwBP,YAAY;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,EAAG;EAChGT,MAAMH,EAAEM,SAASN,EAAEI,MAAM;EACzBc,SAASlB,EAAEM,SAASN,EAAEC,QAAQD,EAAEgB,MAAMG,IAAIV,eAAAA,CAAAA,CAAAA,CAAAA;AAC5C,CAAA,EAAA;AAAI;AAGG,IAAMW,cAAN,cAA0BV,YAAY;EAAEC,UAAU;EAAyBC,SAAS;AAAQ,CAAA,EAAG;EACpGT,MAAMH,EAAEM,SAASN,EAAEI,MAAM;;EAEzBiB,OAAOF,IAAIG,OAAAA;AACb,CAAA,EAAA;AAAI;;;ACxCJ,SAASC,KAAAA,UAAS;;UAKDC,mBAAAA;AACf,QAAMC,oBAAoB,GAAGC,iBAAAA;EAEtB,MAAMC,eAAeC,GAAEC,YAAW,EAAW,GAAGJ,iBAAAA,WAA4B;IACjFK,OAAOF,GAAEG,OAAO;MACdC,MAAMJ,GAAEK,SAASL,GAAEM,MAAM;IAC3B,CAAA;IACAC,QAAQP,GAAEG,OAAO;MACfK,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;oBAPSV,SAAAA;AAQf,GAXiBH,qBAAAA,mBAAAA,CAAAA,EAAAA;",
|
|
6
|
-
"names": ["Expando", "Ref", "S", "TypedObject", "ChainInputType", "ChainInputSchema", "S", "mutable", "Struct", "name", "String", "type", "optional", "Enums", "value", "ChainPromptType", "TypedObject", "typename", "version", "command", "template", "inputs", "Array", "ChainType", "prompts", "Ref", "GptChatType", "queue", "Expando", "S", "AutomationAction", "AUTOMATION_ACTION", "AUTOMATION_PLUGIN", "Create", "S", "TaggedClass", "input", "Struct", "name", "optional", "String", "output", "object", "GptChatType"]
|
|
7
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// packages/plugins/experimental/plugin-automation/src/capabilities/index.ts
|
|
2
|
-
import { lazy } from "@dxos/app-framework";
|
|
3
|
-
var AiClient = lazy(() => import("./ai-client-6CRYUC6D.mjs"));
|
|
4
|
-
var AppGraphBuilder = lazy(() => import("./app-graph-builder-IJTTULDP.mjs"));
|
|
5
|
-
var IntentResolver = lazy(() => import("./intent-resolver-AHDQ3KQP.mjs"));
|
|
6
|
-
var ReactSurface = lazy(() => import("./react-surface-IGMBLSV7.mjs"));
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
AiClient,
|
|
10
|
-
AppGraphBuilder,
|
|
11
|
-
IntentResolver,
|
|
12
|
-
ReactSurface
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=chunk-JSNPW6JF.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AiClient = lazy(() => import('./ai-client'));\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n\nexport * from './capabilities';\n"],
|
|
5
|
-
"mappings": ";AAIA,SAASA,YAAY;AAEd,IAAMC,WAAWC,KAAK,MAAM,OAAO,0BAAA,CAAA;AACnC,IAAMC,kBAAkBD,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAME,iBAAiBF,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMG,eAAeH,KAAK,MAAM,OAAO,8BAAA,CAAA;",
|
|
6
|
-
"names": ["lazy", "AiClient", "lazy", "AppGraphBuilder", "IntentResolver", "ReactSurface"]
|
|
7
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AUTOMATION_PLUGIN
|
|
3
|
-
} from "./chunk-HKX3D3ZP.mjs";
|
|
4
|
-
|
|
5
|
-
// packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/TriggerEditor.tsx
|
|
6
|
-
import React, { useState } from "react";
|
|
7
|
-
import { ComputeGraph } from "@dxos/conductor";
|
|
8
|
-
import { FunctionType, FunctionTriggerSchema, ScriptType, TriggerKind } from "@dxos/functions";
|
|
9
|
-
import { Filter, useQuery } from "@dxos/react-client/echo";
|
|
10
|
-
import { IconButton, Input, useTranslation } from "@dxos/react-ui";
|
|
11
|
-
import { Form, SelectInput, TextInput } from "@dxos/react-ui-form";
|
|
12
|
-
var TriggerEditor = ({ space, trigger, onSave, onCancel }) => {
|
|
13
|
-
const { t } = useTranslation(AUTOMATION_PLUGIN);
|
|
14
|
-
const functions = useQuery(space, Filter.schema(FunctionType));
|
|
15
|
-
const workflows = useQuery(space, Filter.schema(ComputeGraph));
|
|
16
|
-
const scripts = useQuery(space, Filter.schema(ScriptType));
|
|
17
|
-
const handleSave = (values) => {
|
|
18
|
-
onSave?.(values);
|
|
19
|
-
};
|
|
20
|
-
return /* @__PURE__ */ React.createElement(Form, {
|
|
21
|
-
schema: FunctionTriggerSchema,
|
|
22
|
-
values: trigger,
|
|
23
|
-
onSave: handleSave,
|
|
24
|
-
onCancel,
|
|
25
|
-
Custom: {
|
|
26
|
-
["function"]: (props) => /* @__PURE__ */ React.createElement(SelectInput, {
|
|
27
|
-
...props,
|
|
28
|
-
options: getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))
|
|
29
|
-
}),
|
|
30
|
-
["spec.type"]: (props) => /* @__PURE__ */ React.createElement(SelectInput, {
|
|
31
|
-
...props,
|
|
32
|
-
options: Object.values(TriggerKind).map((kind) => ({
|
|
33
|
-
value: kind,
|
|
34
|
-
label: t(`trigger type ${kind}`)
|
|
35
|
-
}))
|
|
36
|
-
}),
|
|
37
|
-
["meta"]: (props) => {
|
|
38
|
-
const meta = props.getValue();
|
|
39
|
-
const [newMetaFieldName, setNewMetaFieldName] = useState("");
|
|
40
|
-
React.useEffect(() => props.onValueChange("object", {
|
|
41
|
-
...meta
|
|
42
|
-
}), []);
|
|
43
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", null, props.label), [
|
|
44
|
-
...Object.keys(meta)
|
|
45
|
-
].map((key) => {
|
|
46
|
-
const compositeKey = `meta.${key}`;
|
|
47
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
48
|
-
key: compositeKey,
|
|
49
|
-
role: "none",
|
|
50
|
-
className: "flex items-center mt-2 gap-1"
|
|
51
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
52
|
-
role: "none",
|
|
53
|
-
className: "flex-1"
|
|
54
|
-
}, /* @__PURE__ */ React.createElement(TextInput, {
|
|
55
|
-
...props,
|
|
56
|
-
type: "string",
|
|
57
|
-
label: key
|
|
58
|
-
})), /* @__PURE__ */ React.createElement(IconButton, {
|
|
59
|
-
icon: "ph--trash--regular",
|
|
60
|
-
iconOnly: true,
|
|
61
|
-
classNames: "mt-6",
|
|
62
|
-
label: t("trigger meta remove"),
|
|
63
|
-
onClick: () => {
|
|
64
|
-
const newValues = {
|
|
65
|
-
...props.getValue()
|
|
66
|
-
};
|
|
67
|
-
delete newValues[key];
|
|
68
|
-
props.onValueChange("object", newValues);
|
|
69
|
-
}
|
|
70
|
-
}));
|
|
71
|
-
}), /* @__PURE__ */ React.createElement("div", {
|
|
72
|
-
role: "none",
|
|
73
|
-
className: "flex items-center mt-2 gap-1 plb-1"
|
|
74
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
75
|
-
role: "none",
|
|
76
|
-
className: "flex-1"
|
|
77
|
-
}, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
78
|
-
placeholder: t("trigger meta prop name placeholder"),
|
|
79
|
-
value: newMetaFieldName,
|
|
80
|
-
onChange: (event) => setNewMetaFieldName(event.target.value)
|
|
81
|
-
}))), /* @__PURE__ */ React.createElement(IconButton, {
|
|
82
|
-
icon: "ph--plus--regular",
|
|
83
|
-
iconOnly: true,
|
|
84
|
-
label: t("trigger meta add"),
|
|
85
|
-
onClick: () => {
|
|
86
|
-
if (newMetaFieldName.length) {
|
|
87
|
-
const meta2 = props.getValue() ?? {};
|
|
88
|
-
const metaWithNewProp = {
|
|
89
|
-
...meta2,
|
|
90
|
-
[newMetaFieldName]: ""
|
|
91
|
-
};
|
|
92
|
-
setNewMetaFieldName("");
|
|
93
|
-
props.onValueChange("object", metaWithNewProp);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
})));
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
var getWorkflowOptions = (graphs) => {
|
|
102
|
-
return graphs.map((graph) => ({
|
|
103
|
-
label: `compute-${graph.id}`,
|
|
104
|
-
value: `dxn:echo:@:${graph.id}`
|
|
105
|
-
}));
|
|
106
|
-
};
|
|
107
|
-
var getFunctionOptions = (scripts, functions) => {
|
|
108
|
-
const getLabel = (fn) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
|
|
109
|
-
return functions.map((fn) => ({
|
|
110
|
-
label: getLabel(fn),
|
|
111
|
-
value: `dxn:worker:${fn.name}`
|
|
112
|
-
}));
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
export {
|
|
116
|
-
TriggerEditor
|
|
117
|
-
};
|
|
118
|
-
//# sourceMappingURL=chunk-KPSDH6XZ.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/TriggerEditor/TriggerEditor.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport {\n FunctionType,\n FunctionTriggerSchema,\n type FunctionTriggerType,\n type FunctionTrigger,\n ScriptType,\n TriggerKind,\n} from '@dxos/functions';\nimport { Filter, useQuery, type Space } from '@dxos/react-client/echo';\nimport { IconButton, Input, useTranslation } from '@dxos/react-ui';\nimport { Form, SelectInput, TextInput } from '@dxos/react-ui-form';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type TriggerEditorProps = {\n space: Space;\n trigger: FunctionTriggerType;\n onSave?: (trigger: Omit<FunctionTrigger, 'id'>) => void;\n onCancel?: () => void;\n};\n\nexport const TriggerEditor = ({ space, trigger, onSave, onCancel }: TriggerEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n const functions = useQuery(space, Filter.schema(FunctionType));\n const workflows = useQuery(space, Filter.schema(ComputeGraph));\n const scripts = useQuery(space, Filter.schema(ScriptType));\n\n const handleSave = (values: FunctionTriggerType) => {\n onSave?.(values);\n };\n\n return (\n <Form<FunctionTriggerType>\n schema={FunctionTriggerSchema}\n values={trigger}\n onSave={handleSave}\n onCancel={onCancel}\n Custom={{\n ['function' satisfies keyof FunctionTriggerType]: (props) => (\n <SelectInput\n {...props}\n options={getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))}\n />\n ),\n ['spec.type' as const]: (props) => (\n <SelectInput\n {...props}\n options={Object.values(TriggerKind).map((kind) => ({\n value: kind,\n label: t(`trigger type ${kind}`),\n }))}\n />\n ),\n ['meta' as const]: (props) => {\n const meta = props.getValue()!;\n\n const [newMetaFieldName, setNewMetaFieldName] = useState('');\n\n React.useEffect(() => props.onValueChange('object', { ...meta }), []);\n\n return (\n <>\n <div>{props.label}</div>\n {[...Object.keys(meta)].map((key) => {\n const compositeKey: any = `meta.${key}`;\n return (\n <div key={compositeKey} role='none' className='flex items-center mt-2 gap-1'>\n <div role='none' className='flex-1'>\n <TextInput {...props} type={'string'} label={key} />\n </div>\n <IconButton\n icon='ph--trash--regular'\n iconOnly\n classNames={'mt-6'}\n label={t('trigger meta remove')}\n onClick={() => {\n const newValues: any = { ...props.getValue() };\n delete newValues[key];\n props.onValueChange('object', newValues);\n }}\n />\n </div>\n );\n })}\n <div role='none' className='flex items-center mt-2 gap-1 plb-1'>\n <div role='none' className='flex-1'>\n <Input.Root>\n <Input.TextInput\n placeholder={t('trigger meta prop name placeholder')}\n value={newMetaFieldName}\n onChange={(event) => setNewMetaFieldName(event.target.value)}\n />\n </Input.Root>\n </div>\n <IconButton\n icon='ph--plus--regular'\n iconOnly\n label={t('trigger meta add')}\n onClick={() => {\n if (newMetaFieldName.length) {\n const meta = props.getValue() ?? {};\n const metaWithNewProp = { ...meta, [newMetaFieldName]: '' };\n setNewMetaFieldName('');\n props.onValueChange('object', metaWithNewProp);\n }\n }}\n />\n </div>\n </>\n );\n },\n }}\n />\n );\n};\n\nconst getWorkflowOptions = (graphs: ComputeGraph[]) => {\n return graphs.map((graph) => ({ label: `compute-${graph.id}`, value: `dxn:echo:@:${graph.id}` }));\n};\n\nconst getFunctionOptions = (scripts: ScriptType[], functions: FunctionType[]) => {\n const getLabel = (fn: FunctionType) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;\n return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:worker:${fn.name}` }));\n};\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,OAAOA,SAASC,gBAAgB;AAEhC,SAASC,oBAAoB;AAC7B,SACEC,cACAC,uBAGAC,YACAC,mBACK;AACP,SAASC,QAAQC,gBAA4B;AAC7C,SAASC,YAAYC,OAAOC,sBAAsB;AAClD,SAASC,MAAMC,aAAaC,iBAAiB;AAWtC,IAAMC,gBAAgB,CAAC,EAAEC,OAAOC,SAASC,QAAQC,SAAQ,MAAsB;AACpF,QAAM,EAAEC,EAAC,IAAKC,eAAeC,iBAAAA;AAE7B,QAAMC,YAAYC,SAASR,OAAOS,OAAOC,OAAOC,YAAAA,CAAAA;AAChD,QAAMC,YAAYJ,SAASR,OAAOS,OAAOC,OAAOG,YAAAA,CAAAA;AAChD,QAAMC,UAAUN,SAASR,OAAOS,OAAOC,OAAOK,UAAAA,CAAAA;AAE9C,QAAMC,aAAa,CAACC,WAAAA;AAClBf,aAASe,MAAAA;EACX;AAEA,SACE,sBAAA,cAACC,MAAAA;IACCR,QAAQS;IACRF,QAAQhB;IACRC,QAAQc;IACRb;IACAiB,QAAQ;MACN,CAAC,UAAA,GAAiD,CAACC,UACjD,sBAAA,cAACC,aAAAA;QACE,GAAGD;QACJE,SAASC,mBAAmBZ,SAAAA,EAAWa,OAAOC,mBAAmBZ,SAASP,SAAAA,CAAAA;;MAG9E,CAAC,WAAA,GAAuB,CAACc,UACvB,sBAAA,cAACC,aAAAA;QACE,GAAGD;QACJE,SAASI,OAAOV,OAAOW,WAAAA,EAAaC,IAAI,CAACC,UAAU;UACjDC,OAAOD;UACPE,OAAO5B,EAAE,gBAAgB0B,IAAAA,EAAM;QACjC,EAAA;;MAGJ,CAAC,MAAA,GAAkB,CAACT,UAAAA;AAClB,cAAMY,OAAOZ,MAAMa,SAAQ;AAE3B,cAAM,CAACC,kBAAkBC,mBAAAA,IAAuBC,SAAS,EAAA;AAEzDC,cAAMC,UAAU,MAAMlB,MAAMmB,cAAc,UAAU;UAAE,GAAGP;QAAK,CAAA,GAAI,CAAA,CAAE;AAEpE,eACE,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAACQ,OAAAA,MAAKpB,MAAMW,KAAK,GAChB;aAAIL,OAAOe,KAAKT,IAAAA;UAAOJ,IAAI,CAACc,QAAAA;AAC3B,gBAAMC,eAAoB,QAAQD,GAAAA;AAClC,iBACE,sBAAA,cAACF,OAAAA;YAAIE,KAAKC;YAAcC,MAAK;YAAOC,WAAU;aAC5C,sBAAA,cAACL,OAAAA;YAAII,MAAK;YAAOC,WAAU;aACzB,sBAAA,cAACC,WAAAA;YAAW,GAAG1B;YAAO2B,MAAM;YAAUhB,OAAOW;eAE/C,sBAAA,cAACM,YAAAA;YACCC,MAAK;YACLC,UAAAA;YACAC,YAAY;YACZpB,OAAO5B,EAAE,qBAAA;YACTiD,SAAS,MAAA;AACP,oBAAMC,YAAiB;gBAAE,GAAGjC,MAAMa,SAAQ;cAAG;AAC7C,qBAAOoB,UAAUX,GAAAA;AACjBtB,oBAAMmB,cAAc,UAAUc,SAAAA;YAChC;;QAIR,CAAA,GACA,sBAAA,cAACb,OAAAA;UAAII,MAAK;UAAOC,WAAU;WACzB,sBAAA,cAACL,OAAAA;UAAII,MAAK;UAAOC,WAAU;WACzB,sBAAA,cAACS,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAMR,WAAS;UACdU,aAAarD,EAAE,oCAAA;UACf2B,OAAOI;UACPuB,UAAU,CAACC,UAAUvB,oBAAoBuB,MAAMC,OAAO7B,KAAK;cAIjE,sBAAA,cAACkB,YAAAA;UACCC,MAAK;UACLC,UAAAA;UACAnB,OAAO5B,EAAE,kBAAA;UACTiD,SAAS,MAAA;AACP,gBAAIlB,iBAAiB0B,QAAQ;AAC3B,oBAAM5B,QAAOZ,MAAMa,SAAQ,KAAM,CAAC;AAClC,oBAAM4B,kBAAkB;gBAAE,GAAG7B;gBAAM,CAACE,gBAAAA,GAAmB;cAAG;AAC1DC,kCAAoB,EAAA;AACpBf,oBAAMmB,cAAc,UAAUsB,eAAAA;YAChC;UACF;;MAKV;IACF;;AAGN;AAEA,IAAMtC,qBAAqB,CAACuC,WAAAA;AAC1B,SAAOA,OAAOlC,IAAI,CAACmC,WAAW;IAAEhC,OAAO,WAAWgC,MAAMC,EAAE;IAAIlC,OAAO,cAAciC,MAAMC,EAAE;EAAG,EAAA;AAChG;AAEA,IAAMvC,qBAAqB,CAACZ,SAAuBP,cAAAA;AACjD,QAAM2D,WAAW,CAACC,OAAqBrD,QAAQsD,KAAK,CAACC,MAAMF,GAAGG,QAAQV,QAAQK,OAAOI,EAAEJ,EAAE,GAAGM,QAAQJ,GAAGI;AACvG,SAAOhE,UAAUsB,IAAI,CAACsC,QAAQ;IAAEnC,OAAOkC,SAASC,EAAAA;IAAKpC,OAAO,cAAcoC,GAAGI,IAAI;EAAG,EAAA;AACtF;",
|
|
6
|
-
"names": ["React", "useState", "ComputeGraph", "FunctionType", "FunctionTriggerSchema", "ScriptType", "TriggerKind", "Filter", "useQuery", "IconButton", "Input", "useTranslation", "Form", "SelectInput", "TextInput", "TriggerEditor", "space", "trigger", "onSave", "onCancel", "t", "useTranslation", "AUTOMATION_PLUGIN", "functions", "useQuery", "Filter", "schema", "FunctionType", "workflows", "ComputeGraph", "scripts", "ScriptType", "handleSave", "values", "Form", "FunctionTriggerSchema", "Custom", "props", "SelectInput", "options", "getWorkflowOptions", "concat", "getFunctionOptions", "Object", "TriggerKind", "map", "kind", "value", "label", "meta", "getValue", "newMetaFieldName", "setNewMetaFieldName", "useState", "React", "useEffect", "onValueChange", "div", "keys", "key", "compositeKey", "role", "className", "TextInput", "type", "IconButton", "icon", "iconOnly", "classNames", "onClick", "newValues", "Input", "Root", "placeholder", "onChange", "event", "target", "length", "metaWithNewProp", "graphs", "graph", "id", "getLabel", "fn", "find", "s", "source", "name"]
|
|
7
|
-
}
|