@dxos/plugin-automation 0.7.5-labs.c0e040f → 0.7.5-labs.d199c0f
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-ITYXSN5Z.mjs +132 -0
- package/dist/lib/browser/AutomationPanel-ITYXSN5Z.mjs.map +7 -0
- package/dist/lib/browser/{chunk-R4JH4TLE.mjs → chunk-OFDNNRLE.mjs} +3 -8
- package/dist/lib/browser/chunk-OFDNNRLE.mjs.map +7 -0
- package/dist/lib/browser/chunk-U7QLNY2S.mjs +8 -0
- package/dist/lib/browser/chunk-U7QLNY2S.mjs.map +7 -0
- package/dist/lib/browser/chunk-WY2C7JY4.mjs +119 -0
- package/dist/lib/browser/chunk-WY2C7JY4.mjs.map +7 -0
- package/dist/lib/browser/complementary-panel-4CPOJL4Y.mjs +56 -0
- package/dist/lib/browser/complementary-panel-4CPOJL4Y.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +21 -377
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-surface-SAPMN4PF.mjs +27 -0
- package/dist/lib/browser/react-surface-SAPMN4PF.mjs.map +7 -0
- package/dist/lib/node/{chunk-QXIHYOMF.cjs → AutomationPanel-X33HHDMQ.cjs} +19 -132
- package/dist/lib/node/AutomationPanel-X33HHDMQ.cjs.map +7 -0
- package/dist/lib/node/chunk-7Q5SNGCL.cjs +148 -0
- package/dist/lib/node/chunk-7Q5SNGCL.cjs.map +7 -0
- package/dist/lib/node/chunk-CB5OB6JH.cjs +40 -0
- package/dist/lib/node/chunk-CB5OB6JH.cjs.map +7 -0
- package/dist/lib/node/{chunk-EQYHOTGG.cjs → chunk-ORMEYEBE.cjs} +6 -12
- package/dist/lib/node/chunk-ORMEYEBE.cjs.map +7 -0
- package/dist/lib/node/complementary-panel-ZYJJ42ZU.cjs +72 -0
- package/dist/lib/node/complementary-panel-ZYJJ42ZU.cjs.map +7 -0
- package/dist/lib/node/index.cjs +36 -378
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-JT6SVCPK.cjs → react-surface-2WRVAPGR.cjs} +9 -34
- package/dist/lib/node/react-surface-2WRVAPGR.cjs.map +7 -0
- package/dist/lib/node-esm/AutomationPanel-HY3GB4BT.mjs +133 -0
- package/dist/lib/node-esm/AutomationPanel-HY3GB4BT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-EMVA6QUT.mjs → chunk-6MUUH67V.mjs} +3 -8
- package/dist/lib/node-esm/chunk-6MUUH67V.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-R3P2WPBQ.mjs +10 -0
- package/dist/lib/node-esm/chunk-R3P2WPBQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-UDD2VA6G.mjs +120 -0
- package/dist/lib/node-esm/chunk-UDD2VA6G.mjs.map +7 -0
- package/dist/lib/node-esm/complementary-panel-S42RIIAY.mjs +57 -0
- package/dist/lib/node-esm/complementary-panel-S42RIIAY.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +21 -377
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-surface-QWLPOYXO.mjs +28 -0
- package/dist/lib/node-esm/react-surface-QWLPOYXO.mjs.map +7 -0
- package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/{ai-client.d.ts → complementary-panel.d.ts} +2 -3
- package/dist/types/src/capabilities/complementary-panel.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +1 -180
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +1 -2
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
- package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +1 -2
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -12
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +0 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +0 -1
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-functions.d.ts +0 -2
- package/dist/types/src/testing/test-functions.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1 -94
- package/dist/types/src/translations.d.ts.map +1 -1
- package/package.json +23 -74
- package/src/AutomationPlugin.tsx +9 -64
- package/src/capabilities/complementary-panel.ts +56 -0
- package/src/capabilities/index.ts +1 -5
- package/src/capabilities/react-surface.tsx +3 -23
- package/src/components/AutomationPanel/AutomationPanel.stories.tsx +1 -2
- package/src/components/AutomationPanel/AutomationPanel.tsx +56 -49
- package/src/components/TriggerEditor/TriggerEditor.stories.tsx +1 -2
- package/src/components/index.ts +0 -8
- package/src/index.ts +2 -3
- package/src/meta.ts +1 -4
- package/src/testing/index.ts +0 -1
- package/src/testing/test-functions.ts +0 -7
- package/src/translations.ts +1 -29
- package/dist/lib/browser/AutomationPanel-VW2XIUPU.mjs +0 -8
- package/dist/lib/browser/AutomationPanel-VW2XIUPU.mjs.map +0 -7
- package/dist/lib/browser/ChatContainer-OLRZNGWK.mjs +0 -12
- package/dist/lib/browser/ChatContainer-OLRZNGWK.mjs.map +0 -7
- package/dist/lib/browser/ai-client-5CNY6JBF.mjs +0 -22
- package/dist/lib/browser/ai-client-5CNY6JBF.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-6H7MDCXE.mjs +0 -197
- package/dist/lib/browser/app-graph-builder-6H7MDCXE.mjs.map +0 -7
- package/dist/lib/browser/chunk-2H2EUYXL.mjs +0 -15
- package/dist/lib/browser/chunk-2H2EUYXL.mjs.map +0 -7
- package/dist/lib/browser/chunk-ITG6CBKL.mjs +0 -1602
- package/dist/lib/browser/chunk-ITG6CBKL.mjs.map +0 -7
- package/dist/lib/browser/chunk-MRBC5J4T.mjs +0 -518
- package/dist/lib/browser/chunk-MRBC5J4T.mjs.map +0 -7
- package/dist/lib/browser/chunk-NQFZ6XRX.mjs +0 -243
- package/dist/lib/browser/chunk-NQFZ6XRX.mjs.map +0 -7
- package/dist/lib/browser/chunk-Q4IMHYGH.mjs +0 -150
- package/dist/lib/browser/chunk-Q4IMHYGH.mjs.map +0 -7
- package/dist/lib/browser/chunk-R4JH4TLE.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-BWAXKT27.mjs +0 -29
- package/dist/lib/browser/intent-resolver-BWAXKT27.mjs.map +0 -7
- package/dist/lib/browser/react-surface-O6SHIBCA.mjs +0 -58
- package/dist/lib/browser/react-surface-O6SHIBCA.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -24
- package/dist/lib/browser/types/index.mjs.map +0 -7
- package/dist/lib/node/AutomationPanel-G6EDDYWW.cjs +0 -26
- package/dist/lib/node/AutomationPanel-G6EDDYWW.cjs.map +0 -7
- package/dist/lib/node/ChatContainer-GRZDJIG5.cjs +0 -33
- package/dist/lib/node/ChatContainer-GRZDJIG5.cjs.map +0 -7
- package/dist/lib/node/ai-client-FKLPDELV.cjs +0 -38
- package/dist/lib/node/ai-client-FKLPDELV.cjs.map +0 -7
- package/dist/lib/node/app-graph-builder-7JMJLZIE.cjs +0 -212
- package/dist/lib/node/app-graph-builder-7JMJLZIE.cjs.map +0 -7
- package/dist/lib/node/chunk-CFBERLTN.cjs +0 -1586
- package/dist/lib/node/chunk-CFBERLTN.cjs.map +0 -7
- package/dist/lib/node/chunk-EQYHOTGG.cjs.map +0 -7
- package/dist/lib/node/chunk-FQUY77HT.cjs +0 -527
- package/dist/lib/node/chunk-FQUY77HT.cjs.map +0 -7
- package/dist/lib/node/chunk-GB7245FH.cjs +0 -173
- package/dist/lib/node/chunk-GB7245FH.cjs.map +0 -7
- package/dist/lib/node/chunk-QXIHYOMF.cjs.map +0 -7
- package/dist/lib/node/chunk-U5Z7LFWB.cjs +0 -34
- package/dist/lib/node/chunk-U5Z7LFWB.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-C6OKFVEW.cjs +0 -44
- package/dist/lib/node/intent-resolver-C6OKFVEW.cjs.map +0 -7
- package/dist/lib/node/react-surface-JT6SVCPK.cjs.map +0 -7
- package/dist/lib/node/types/index.cjs +0 -46
- package/dist/lib/node/types/index.cjs.map +0 -7
- package/dist/lib/node-esm/AutomationPanel-V3IWQAMO.mjs +0 -9
- package/dist/lib/node-esm/AutomationPanel-V3IWQAMO.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-ORVWQPJO.mjs +0 -13
- package/dist/lib/node-esm/ChatContainer-ORVWQPJO.mjs.map +0 -7
- package/dist/lib/node-esm/ai-client-XGNA6SJ5.mjs +0 -23
- package/dist/lib/node-esm/ai-client-XGNA6SJ5.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-C6NUQGCU.mjs +0 -198
- package/dist/lib/node-esm/app-graph-builder-C6NUQGCU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2OKJZ4ZW.mjs +0 -519
- package/dist/lib/node-esm/chunk-2OKJZ4ZW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-6HLBYDUI.mjs +0 -244
- package/dist/lib/node-esm/chunk-6HLBYDUI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7VPT3OO3.mjs +0 -1603
- package/dist/lib/node-esm/chunk-7VPT3OO3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-DNCXRGAF.mjs +0 -151
- package/dist/lib/node-esm/chunk-DNCXRGAF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-EMVA6QUT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IJRTDSKN.mjs +0 -16
- package/dist/lib/node-esm/chunk-IJRTDSKN.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-DCP4ZDBA.mjs +0 -30
- package/dist/lib/node-esm/intent-resolver-DCP4ZDBA.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-DSVM33SA.mjs +0 -59
- package/dist/lib/node-esm/react-surface-DSVM33SA.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -25
- package/dist/lib/node-esm/types/index.mjs.map +0 -7
- package/dist/types/src/artifacts.stories.d.ts +0 -16
- package/dist/types/src/artifacts.stories.d.ts.map +0 -1
- package/dist/types/src/capabilities/ai-client.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -181
- package/dist/types/src/capabilities/app-graph-builder.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/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.d.ts +0 -3
- package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.d.ts.map +0 -1
- package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.stories.d.ts +0 -8
- package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.stories.d.ts.map +0 -1
- package/dist/types/src/components/AmbientChatDialog/index.d.ts +0 -2
- package/dist/types/src/components/AmbientChatDialog/index.d.ts.map +0 -1
- package/dist/types/src/components/Box/StatusLine.d.ts +0 -11
- package/dist/types/src/components/Box/StatusLine.d.ts.map +0 -1
- package/dist/types/src/components/Box/StatusLine.stories.d.ts +0 -9
- package/dist/types/src/components/Box/StatusLine.stories.d.ts.map +0 -1
- package/dist/types/src/components/Box/Tabbed.d.ts +0 -15
- package/dist/types/src/components/Box/Tabbed.d.ts.map +0 -1
- package/dist/types/src/components/Box/Tabbed.stories.d.ts +0 -8
- package/dist/types/src/components/Box/Tabbed.stories.d.ts.map +0 -1
- package/dist/types/src/components/Box/ToggleContainer.d.ts +0 -13
- package/dist/types/src/components/Box/ToggleContainer.d.ts.map +0 -1
- package/dist/types/src/components/Box/ToggleContainer.stories.d.ts +0 -9
- package/dist/types/src/components/Box/ToggleContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/Box/index.d.ts +0 -4
- package/dist/types/src/components/Box/index.d.ts.map +0 -1
- package/dist/types/src/components/ChatContainer/ChatContainer.d.ts +0 -7
- package/dist/types/src/components/ChatContainer/ChatContainer.d.ts.map +0 -1
- package/dist/types/src/components/ChatContainer/index.d.ts +0 -4
- package/dist/types/src/components/ChatContainer/index.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts +0 -14
- package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts +0 -8
- package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownViewer/index.d.ts +0 -2
- package/dist/types/src/components/MarkdownViewer/index.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/Prompt.d.ts +0 -7
- package/dist/types/src/components/Prompt/Prompt.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts +0 -8
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/index.d.ts +0 -2
- package/dist/types/src/components/Prompt/index.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts +0 -20
- package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/PromptEditor.d.ts +0 -10
- package/dist/types/src/components/PromptEditor/PromptEditor.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts +0 -6
- package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/index.d.ts +0 -2
- package/dist/types/src/components/PromptEditor/index.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/prompt-extension.d.ts +0 -4
- package/dist/types/src/components/PromptEditor/prompt-extension.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/types.d.ts +0 -18
- package/dist/types/src/components/PromptEditor/types.d.ts.map +0 -1
- package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
- package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
- package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
- package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
- package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
- package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
- package/dist/types/src/components/Thread/Thread.d.ts +0 -11
- package/dist/types/src/components/Thread/Thread.d.ts.map +0 -1
- package/dist/types/src/components/Thread/Thread.stories.d.ts +0 -11
- package/dist/types/src/components/Thread/Thread.stories.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ThreadMessage.d.ts +0 -12
- package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +0 -1
- package/dist/types/src/components/Thread/index.d.ts +0 -2
- package/dist/types/src/components/Thread/index.d.ts.map +0 -1
- package/dist/types/src/hooks/email.d.ts +0 -4
- package/dist/types/src/hooks/email.d.ts.map +0 -1
- package/dist/types/src/hooks/index.d.ts +0 -6
- package/dist/types/src/hooks/index.d.ts.map +0 -1
- package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
- package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
- package/dist/types/src/hooks/processor.d.ts +0 -70
- package/dist/types/src/hooks/processor.d.ts.map +0 -1
- package/dist/types/src/hooks/processor.test.d.ts +0 -2
- package/dist/types/src/hooks/processor.test.d.ts.map +0 -1
- package/dist/types/src/hooks/useChatProcessor.d.ts +0 -7
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +0 -1
- package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
- package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
- package/dist/types/src/hooks/useMessageQueue.d.ts +0 -41
- package/dist/types/src/hooks/useMessageQueue.d.ts.map +0 -1
- package/dist/types/src/hooks/useServices.d.ts +0 -7
- package/dist/types/src/hooks/useServices.d.ts.map +0 -1
- package/dist/types/src/presets.d.ts +0 -9
- package/dist/types/src/presets.d.ts.map +0 -1
- package/dist/types/src/testing/test-services.d.ts +0 -5
- package/dist/types/src/testing/test-services.d.ts.map +0 -1
- package/dist/types/src/tools/function.d.ts +0 -5
- package/dist/types/src/tools/function.d.ts.map +0 -1
- package/dist/types/src/tools/index.d.ts +0 -3
- package/dist/types/src/tools/index.d.ts.map +0 -1
- package/dist/types/src/tools/openapi.d.ts +0 -10
- package/dist/types/src/tools/openapi.d.ts.map +0 -1
- package/dist/types/src/tools/openapi.test.d.ts +0 -2
- package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
- package/dist/types/src/types/index.d.ts +0 -4
- package/dist/types/src/types/index.d.ts.map +0 -1
- package/dist/types/src/types/registry.d.ts +0 -10
- package/dist/types/src/types/registry.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -221
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/dist/types/src/types/types.d.ts +0 -18
- package/dist/types/src/types/types.d.ts.map +0 -1
- package/src/artifacts.stories.tsx +0 -241
- package/src/capabilities/ai-client.ts +0 -19
- package/src/capabilities/app-graph-builder.ts +0 -187
- package/src/capabilities/capabilities.ts +0 -12
- package/src/capabilities/intent-resolver.ts +0 -27
- package/src/components/AmbientChatDialog/AmbientChatDialog.stories.tsx +0 -44
- package/src/components/AmbientChatDialog/AmbientChatDialog.tsx +0 -63
- package/src/components/AmbientChatDialog/index.ts +0 -5
- package/src/components/Box/StatusLine.stories.tsx +0 -52
- package/src/components/Box/StatusLine.tsx +0 -76
- package/src/components/Box/Tabbed.stories.tsx +0 -51
- package/src/components/Box/Tabbed.tsx +0 -89
- package/src/components/Box/ToggleContainer.stories.tsx +0 -110
- package/src/components/Box/ToggleContainer.tsx +0 -108
- package/src/components/Box/index.ts +0 -7
- package/src/components/ChatContainer/ChatContainer.tsx +0 -52
- package/src/components/ChatContainer/index.ts +0 -8
- package/src/components/MarkdownViewer/MarkdownViewer.stories.tsx +0 -56
- package/src/components/MarkdownViewer/MarkdownViewer.tsx +0 -79
- package/src/components/MarkdownViewer/index.ts +0 -5
- package/src/components/Prompt/Prompt.stories.tsx +0 -50
- package/src/components/Prompt/Prompt.tsx +0 -39
- package/src/components/Prompt/index.ts +0 -5
- package/src/components/Prompt/prompt-autocomplete.ts +0 -200
- package/src/components/PromptEditor/PromptEditor.stories.tsx +0 -64
- package/src/components/PromptEditor/PromptEditor.tsx +0 -222
- package/src/components/PromptEditor/index.ts +0 -5
- package/src/components/PromptEditor/prompt-extension.ts +0 -43
- package/src/components/PromptEditor/types.tsx +0 -28
- package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
- package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
- package/src/components/ServiceRegistry/index.ts +0 -5
- package/src/components/Thread/Thread.stories.tsx +0 -197
- package/src/components/Thread/Thread.tsx +0 -156
- package/src/components/Thread/ThreadMessage.tsx +0 -225
- package/src/components/Thread/index.ts +0 -5
- package/src/hooks/email.ts +0 -49
- package/src/hooks/index.ts +0 -10
- package/src/hooks/invocation-handler.ts +0 -109
- package/src/hooks/processor.test.ts +0 -15
- package/src/hooks/processor.ts +0 -210
- package/src/hooks/useChatProcessor.tsx +0 -86
- package/src/hooks/useLocalTriggerManager.ts +0 -82
- package/src/hooks/useMessageQueue.ts +0 -23
- package/src/hooks/useServices.ts +0 -28
- package/src/presets.ts +0 -248
- package/src/testing/test-services.ts +0 -131
- package/src/tools/function.ts +0 -47
- package/src/tools/index.ts +0 -6
- package/src/tools/openapi.test.ts +0 -224
- package/src/tools/openapi.ts +0 -331
- package/src/types/index.ts +0 -7
- package/src/types/registry.ts +0 -26
- package/src/types/schema.ts +0 -132
- package/src/types/types.ts +0 -21
package/src/presets.ts
DELETED
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2024 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { create } from '@dxos/live-object';
|
|
6
|
-
|
|
7
|
-
import { ChainInputType, ChainPromptType } from './types';
|
|
8
|
-
|
|
9
|
-
export const str = (...text: (string | undefined | boolean)[]): string =>
|
|
10
|
-
text
|
|
11
|
-
.filter((value) => value !== undefined && value !== false)
|
|
12
|
-
.flat()
|
|
13
|
-
.join('\n');
|
|
14
|
-
|
|
15
|
-
export type Preset = {
|
|
16
|
-
id: string;
|
|
17
|
-
title: string;
|
|
18
|
-
createPrompt: () => ChainPromptType;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export const chainPresets: Preset[] = [
|
|
22
|
-
{
|
|
23
|
-
id: 'dxos.org/prompt/translate',
|
|
24
|
-
title: 'Translate',
|
|
25
|
-
createPrompt: () =>
|
|
26
|
-
create(ChainPromptType, {
|
|
27
|
-
command: 'say',
|
|
28
|
-
template: str(
|
|
29
|
-
// prettier-ignore
|
|
30
|
-
'Translate the following into {language}:',
|
|
31
|
-
'',
|
|
32
|
-
'---',
|
|
33
|
-
'',
|
|
34
|
-
'{input}',
|
|
35
|
-
),
|
|
36
|
-
inputs: [
|
|
37
|
-
{
|
|
38
|
-
type: ChainInputType.VALUE,
|
|
39
|
-
name: 'language',
|
|
40
|
-
value: 'japanese',
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
type: ChainInputType.PASS_THROUGH,
|
|
44
|
-
name: 'input',
|
|
45
|
-
},
|
|
46
|
-
// TODO(burdon): Message.
|
|
47
|
-
// {
|
|
48
|
-
// type: ChainInputType.CONTEXT,
|
|
49
|
-
// name: 'input',
|
|
50
|
-
// value: 'object.text',
|
|
51
|
-
// },
|
|
52
|
-
],
|
|
53
|
-
}),
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
id: 'dxos.org/prompt/chess',
|
|
57
|
-
title: 'Chess',
|
|
58
|
-
createPrompt: () =>
|
|
59
|
-
create(ChainPromptType, {
|
|
60
|
-
command: 'hint',
|
|
61
|
-
template: str(
|
|
62
|
-
// prettier-ignore
|
|
63
|
-
'You are a machine that is an expert chess player.',
|
|
64
|
-
'',
|
|
65
|
-
'The move history of the current game is: {history}',
|
|
66
|
-
'',
|
|
67
|
-
'Suggest the next move and very briefly explain your strategy in a couple of sentences.',
|
|
68
|
-
),
|
|
69
|
-
inputs: [
|
|
70
|
-
{
|
|
71
|
-
type: ChainInputType.CONTEXT,
|
|
72
|
-
name: 'history',
|
|
73
|
-
value: 'object.pgn',
|
|
74
|
-
},
|
|
75
|
-
],
|
|
76
|
-
}),
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
id: 'dxos.org/prompt/mermaid',
|
|
80
|
-
title: 'Mermaid',
|
|
81
|
-
createPrompt: () =>
|
|
82
|
-
create(ChainPromptType, {
|
|
83
|
-
command: 'draw',
|
|
84
|
-
template: str(
|
|
85
|
-
// prettier-ignore
|
|
86
|
-
'Create a simplified mermaid graph representing the text below.',
|
|
87
|
-
'Do not explain anything.',
|
|
88
|
-
'',
|
|
89
|
-
'---',
|
|
90
|
-
'',
|
|
91
|
-
'{input}',
|
|
92
|
-
),
|
|
93
|
-
inputs: [
|
|
94
|
-
{
|
|
95
|
-
type: ChainInputType.PASS_THROUGH,
|
|
96
|
-
name: 'input',
|
|
97
|
-
},
|
|
98
|
-
],
|
|
99
|
-
}),
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
id: 'dxos.org/prompt/list',
|
|
103
|
-
title: 'List',
|
|
104
|
-
createPrompt: () =>
|
|
105
|
-
create(ChainPromptType, {
|
|
106
|
-
command: 'list',
|
|
107
|
-
template: str(
|
|
108
|
-
// prettier-ignore
|
|
109
|
-
'You are a machine that only replies with valid, iterable RFC8259 compliant JSON in your responses.',
|
|
110
|
-
'Your entire response should be a single array of JSON objects.',
|
|
111
|
-
'',
|
|
112
|
-
'Your entire response should be a map where the key is the type and the value is a single array of JSON objects conforming to the following types:',
|
|
113
|
-
'',
|
|
114
|
-
'{schema}',
|
|
115
|
-
'',
|
|
116
|
-
'---',
|
|
117
|
-
'',
|
|
118
|
-
'{question}',
|
|
119
|
-
),
|
|
120
|
-
inputs: [
|
|
121
|
-
{
|
|
122
|
-
type: ChainInputType.SCHEMA,
|
|
123
|
-
name: 'schema',
|
|
124
|
-
value: 'example.com/type/project',
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
type: ChainInputType.PASS_THROUGH,
|
|
128
|
-
name: 'question',
|
|
129
|
-
},
|
|
130
|
-
],
|
|
131
|
-
}),
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
id: 'dxos.org/prompt/base',
|
|
135
|
-
title: 'RAG',
|
|
136
|
-
createPrompt: () =>
|
|
137
|
-
create(ChainPromptType, {
|
|
138
|
-
command: 'rag',
|
|
139
|
-
template: str(
|
|
140
|
-
// prettier-ignore
|
|
141
|
-
"Very briefly answer the question based only on the following context and say if you don't know the answer.",
|
|
142
|
-
// 'answer the question using the following context as well as your training data:',
|
|
143
|
-
'',
|
|
144
|
-
'{context}',
|
|
145
|
-
'',
|
|
146
|
-
'---',
|
|
147
|
-
'',
|
|
148
|
-
'question: {question}',
|
|
149
|
-
),
|
|
150
|
-
inputs: [
|
|
151
|
-
{
|
|
152
|
-
type: ChainInputType.RETRIEVER,
|
|
153
|
-
name: 'context',
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
type: ChainInputType.CONTEXT,
|
|
157
|
-
name: 'question',
|
|
158
|
-
value: 'object.text',
|
|
159
|
-
},
|
|
160
|
-
],
|
|
161
|
-
}),
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
id: 'dxos.org/prompt/lookup',
|
|
165
|
-
title: 'Lookup',
|
|
166
|
-
createPrompt: () =>
|
|
167
|
-
create(ChainPromptType, {
|
|
168
|
-
command: 'lookup',
|
|
169
|
-
template: str(
|
|
170
|
-
// prettier-ignore
|
|
171
|
-
'Lookup and very briefly summarize the following topic in one or two sentences:',
|
|
172
|
-
'',
|
|
173
|
-
'---',
|
|
174
|
-
'',
|
|
175
|
-
'{input}',
|
|
176
|
-
),
|
|
177
|
-
inputs: [
|
|
178
|
-
{
|
|
179
|
-
type: ChainInputType.CONTEXT,
|
|
180
|
-
name: 'input',
|
|
181
|
-
value: 'text',
|
|
182
|
-
},
|
|
183
|
-
],
|
|
184
|
-
}),
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
id: 'dxos.org/prompt/extract',
|
|
188
|
-
title: 'Extract',
|
|
189
|
-
createPrompt: () =>
|
|
190
|
-
create(ChainPromptType, {
|
|
191
|
-
command: 'extract',
|
|
192
|
-
template: str(
|
|
193
|
-
// prettier-ignore
|
|
194
|
-
'List all people and companies mentioned in the text below.',
|
|
195
|
-
'',
|
|
196
|
-
'You are a machine that only replies with valid, iterable RFC8259 compliant JSON in your responses.',
|
|
197
|
-
'Your entire response should be a map where the key is the type and the value is a single array of JSON objects conforming to the following types:',
|
|
198
|
-
'',
|
|
199
|
-
'{contact}',
|
|
200
|
-
'{company}',
|
|
201
|
-
'',
|
|
202
|
-
'---',
|
|
203
|
-
'',
|
|
204
|
-
'{input}',
|
|
205
|
-
),
|
|
206
|
-
inputs: [
|
|
207
|
-
{
|
|
208
|
-
type: ChainInputType.SCHEMA,
|
|
209
|
-
name: 'contact',
|
|
210
|
-
value: 'example.com/type/contact',
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
type: ChainInputType.SCHEMA,
|
|
214
|
-
name: 'company',
|
|
215
|
-
value: 'example.com/type/organization',
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
type: ChainInputType.CONTEXT,
|
|
219
|
-
name: 'input',
|
|
220
|
-
value: 'text',
|
|
221
|
-
},
|
|
222
|
-
],
|
|
223
|
-
}),
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
id: 'dxos.org/prompt/discord',
|
|
227
|
-
title: 'Summarize',
|
|
228
|
-
createPrompt: () =>
|
|
229
|
-
create(ChainPromptType, {
|
|
230
|
-
command: 'summarize',
|
|
231
|
-
template: str(
|
|
232
|
-
// prettier-ignore
|
|
233
|
-
'Summarize what the team is working on and format it as a markdown table without any explanation.',
|
|
234
|
-
'',
|
|
235
|
-
'---',
|
|
236
|
-
'',
|
|
237
|
-
'{context}',
|
|
238
|
-
),
|
|
239
|
-
inputs: [
|
|
240
|
-
{
|
|
241
|
-
type: ChainInputType.RESOLVER,
|
|
242
|
-
name: 'context',
|
|
243
|
-
value: 'discord.messages.recent',
|
|
244
|
-
},
|
|
245
|
-
],
|
|
246
|
-
}),
|
|
247
|
-
},
|
|
248
|
-
];
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { createStatic } from '@dxos/echo-schema';
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
type ApiAuthorization,
|
|
9
|
-
type BaseServiceRegistry,
|
|
10
|
-
type ServiceQuery,
|
|
11
|
-
ServiceType,
|
|
12
|
-
categoryIcons,
|
|
13
|
-
} from '../types';
|
|
14
|
-
|
|
15
|
-
export class MockServiceRegistry implements BaseServiceRegistry {
|
|
16
|
-
async queryServices(query?: ServiceQuery): Promise<ServiceType[]> {
|
|
17
|
-
return TEST_SERVICES;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// TODO(burdon): Can we generalize credentials?
|
|
22
|
-
|
|
23
|
-
const AMADEUS_AUTH: ApiAuthorization = {
|
|
24
|
-
type: 'oauth',
|
|
25
|
-
clientId: 'BOEnpLd1sMyKjAPGKYeAPFFy60u53QEG',
|
|
26
|
-
clientSecret: 'n4qldSN7usvD57gm',
|
|
27
|
-
tokenUrl: 'https://test.api.amadeus.com/v1/security/oauth2/token',
|
|
28
|
-
grantType: 'client_credentials',
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const VISUAL_CROSSING_CREDENTIALS: ApiAuthorization = {
|
|
32
|
-
type: 'api-key',
|
|
33
|
-
key: 'FDPRVS953KB4GQQLD25GRT975',
|
|
34
|
-
placement: {
|
|
35
|
-
type: 'query',
|
|
36
|
-
name: 'key',
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
// Registries:
|
|
41
|
-
// - https://apis.guru
|
|
42
|
-
// - https://rapidapi.com
|
|
43
|
-
// - https://github.com/konfig-sdks/openapi-examples
|
|
44
|
-
// - https://publicapis.io/?utm_source=chatgpt.com
|
|
45
|
-
|
|
46
|
-
// Examples:
|
|
47
|
-
// - https://petstore.swagger.io/v2/swagger.json (testing)
|
|
48
|
-
// - https://lichess.org/api
|
|
49
|
-
// - https://github.com/konfig-sdks/openapi-examples/tree/main/xkcd
|
|
50
|
-
// - https://api.coindesk.com/v1/bpi/currentprice.json
|
|
51
|
-
// - https://www.coingecko.com/en/api/documentation
|
|
52
|
-
|
|
53
|
-
// TODO(burdon): Support yaml endpoints.
|
|
54
|
-
// - e.g., https://github.com/konfig-sdks/openapi-examples/blob/main/xkcd/openapi.yaml
|
|
55
|
-
|
|
56
|
-
const TEST_SERVICES: ServiceType[] = [
|
|
57
|
-
createStatic(ServiceType, {
|
|
58
|
-
serviceId: 'amadeus.com/service/FlightSearch',
|
|
59
|
-
name: 'Amadeus Flight Search',
|
|
60
|
-
description: 'Search for local and international flights.',
|
|
61
|
-
category: 'travel',
|
|
62
|
-
interfaces: [
|
|
63
|
-
{
|
|
64
|
-
kind: 'api',
|
|
65
|
-
schemaUrl: 'https://api.apis.guru/v2/specs/amadeus.com/amadeus-flight-availabilities-search/1.0.2/swagger.json',
|
|
66
|
-
authorization: AMADEUS_AUTH,
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
}),
|
|
70
|
-
|
|
71
|
-
createStatic(ServiceType, {
|
|
72
|
-
serviceId: 'amadeus.com/service/HotelSearch',
|
|
73
|
-
name: 'Amadeus Hotel Search',
|
|
74
|
-
description: 'Search for local and international hotels.',
|
|
75
|
-
category: 'travel',
|
|
76
|
-
interfaces: [
|
|
77
|
-
{
|
|
78
|
-
kind: 'api',
|
|
79
|
-
schemaUrl: 'https://api.apis.guru/v2/specs/amadeus.com/amadeus-hotel-search/3.0.8/swagger.json',
|
|
80
|
-
authorization: AMADEUS_AUTH,
|
|
81
|
-
},
|
|
82
|
-
],
|
|
83
|
-
}),
|
|
84
|
-
|
|
85
|
-
createStatic(ServiceType, {
|
|
86
|
-
serviceId: 'visualcrossing.com/service/Weather',
|
|
87
|
-
name: 'Visual Crossing Weather',
|
|
88
|
-
description: 'Search for global weather forecasts.',
|
|
89
|
-
category: 'weather',
|
|
90
|
-
interfaces: [
|
|
91
|
-
{
|
|
92
|
-
kind: 'api',
|
|
93
|
-
schemaUrl: 'https://api.apis.guru/v2/specs/visualcrossing.com/weather/4.6/openapi.json',
|
|
94
|
-
authorization: VISUAL_CROSSING_CREDENTIALS,
|
|
95
|
-
},
|
|
96
|
-
],
|
|
97
|
-
}),
|
|
98
|
-
|
|
99
|
-
// TODO(burdon): Needs auth.
|
|
100
|
-
createStatic(ServiceType, {
|
|
101
|
-
serviceId: 'abstractapi.com/service/GeoLocation',
|
|
102
|
-
name: 'Abstract GeoLocation',
|
|
103
|
-
description: 'Get the location of any IP address.',
|
|
104
|
-
category: 'geolocation',
|
|
105
|
-
interfaces: [
|
|
106
|
-
{
|
|
107
|
-
kind: 'api',
|
|
108
|
-
schemaUrl: 'https://api.apis.guru/v2/specs/abstractapi.com/geolocation/1.0.0/openapi.json',
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
}),
|
|
112
|
-
|
|
113
|
-
//
|
|
114
|
-
// Testing
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
...Array.from({ length: 20 }, (_, i) =>
|
|
118
|
-
createStatic(ServiceType, {
|
|
119
|
-
serviceId: `example.com/service/test-${i}`,
|
|
120
|
-
name: `Test ${i}`,
|
|
121
|
-
description: `Test ${i}`,
|
|
122
|
-
category: Object.keys(categoryIcons)[Math.floor(Math.random() * Object.keys(categoryIcons).length)],
|
|
123
|
-
interfaces: [
|
|
124
|
-
{
|
|
125
|
-
kind: 'api',
|
|
126
|
-
schemaUrl: 'https://petstore.swagger.io/v2/swagger.json',
|
|
127
|
-
},
|
|
128
|
-
],
|
|
129
|
-
}),
|
|
130
|
-
),
|
|
131
|
-
] as const;
|
package/src/tools/function.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { defineTool, ToolResult } from '@dxos/artifact';
|
|
6
|
-
import type { Tool } from '@dxos/artifact';
|
|
7
|
-
import { toEffectSchema } from '@dxos/echo-schema';
|
|
8
|
-
import { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';
|
|
9
|
-
import type { FunctionType } from '@dxos/functions';
|
|
10
|
-
import { log } from '@dxos/log';
|
|
11
|
-
import type { SpaceId } from '@dxos/react-client/echo';
|
|
12
|
-
import { getMeta } from '@dxos/react-client/echo';
|
|
13
|
-
|
|
14
|
-
export const covertFunctionToTool = (
|
|
15
|
-
fn: FunctionType,
|
|
16
|
-
edgeUrl: string,
|
|
17
|
-
spaceId?: SpaceId | undefined,
|
|
18
|
-
): Tool | undefined => {
|
|
19
|
-
if (!fn.description || !fn.inputSchema) {
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const existingFunctionUrl = getUserFunctionUrlInMetadata(getMeta(fn));
|
|
24
|
-
if (!existingFunctionUrl) {
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
const url = getInvocationUrl(existingFunctionUrl, edgeUrl, {
|
|
28
|
-
spaceId,
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
return defineTool({
|
|
32
|
-
name: fn.name,
|
|
33
|
-
description: fn.description,
|
|
34
|
-
schema: toEffectSchema(fn.inputSchema),
|
|
35
|
-
execute: async (input) => {
|
|
36
|
-
log.info('execute function tool', { name: fn.name, url, input });
|
|
37
|
-
const response = await fetch(url, {
|
|
38
|
-
method: 'POST',
|
|
39
|
-
headers: {
|
|
40
|
-
'Content-Type': 'application/json',
|
|
41
|
-
},
|
|
42
|
-
body: JSON.stringify(input),
|
|
43
|
-
});
|
|
44
|
-
return ToolResult.Success(await response.text());
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
};
|
package/src/tools/index.ts
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { describe, expect, test } from 'vitest';
|
|
6
|
-
|
|
7
|
-
import { AIServiceClientImpl } from '@dxos/assistant';
|
|
8
|
-
import { AI_SERVICE_ENDPOINT } from '@dxos/assistant/testing';
|
|
9
|
-
import { log } from '@dxos/log';
|
|
10
|
-
|
|
11
|
-
import { createToolsFromApi, resolveAuthorization } from './openapi';
|
|
12
|
-
import { ChatProcessor } from '../hooks';
|
|
13
|
-
import type { ApiAuthorization } from '../types';
|
|
14
|
-
|
|
15
|
-
describe.skip('openapi', () => {
|
|
16
|
-
describe.skip('mapping', () => {
|
|
17
|
-
test('amadeus flight availabilities', async () => {
|
|
18
|
-
const tools = await createToolsFromApi(FLIGHT_SEARCH_API);
|
|
19
|
-
|
|
20
|
-
log.info('tools', { tools });
|
|
21
|
-
// for (const tool of tools) {
|
|
22
|
-
// const schema = tool.parameters;
|
|
23
|
-
// // log.info('schema', { schema });
|
|
24
|
-
// }
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test('amadeus hotel search', async () => {
|
|
28
|
-
const tools = await createToolsFromApi(HOTEL_SEARCH_API);
|
|
29
|
-
log.info('tools', { tools });
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
test('amadeus hotel name autocomplete', async () => {
|
|
33
|
-
const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API);
|
|
34
|
-
log.info('tools', { tools });
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
test('weather', async () => {
|
|
38
|
-
const tools = await createToolsFromApi(WEATHER_API, { authorization: VISUAL_CROSSING_CREDENTIALS });
|
|
39
|
-
log.info('tools', { tools });
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
describe.skip('invoke tools', () => {
|
|
44
|
-
test('amadeus hotel name autocomplete', async () => {
|
|
45
|
-
const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API, { authorization: AMADEUS_AUTH });
|
|
46
|
-
|
|
47
|
-
const result = await tools[0].execute!({
|
|
48
|
-
keyword: 'William Vale Brooklyn',
|
|
49
|
-
subType: ['HOTEL_LEISURE', 'HOTEL_GDS'],
|
|
50
|
-
countryCode: 'US',
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
log.info('result', { result });
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
test('weather API', async () => {
|
|
57
|
-
const tools = await createToolsFromApi(WEATHER_API, { authorization: VISUAL_CROSSING_CREDENTIALS });
|
|
58
|
-
const forecastTool = tools.find((t) => t.name.includes('forecast'));
|
|
59
|
-
|
|
60
|
-
const result = await forecastTool?.execute!({
|
|
61
|
-
locations: 'Brooklyn, NY',
|
|
62
|
-
aggregateHours: '24',
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
log.info('result', { result });
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe.skip('AI uses tools', () => {
|
|
70
|
-
test('amadeus flight availabilities', { timeout: 60_000 }, async () => {
|
|
71
|
-
const tools = await createToolsFromApi(FLIGHT_SEARCH_API, {
|
|
72
|
-
authorization: AMADEUS_AUTH,
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
const client = new AIServiceClientImpl({
|
|
76
|
-
endpoint: AI_SERVICE_ENDPOINT.LOCAL,
|
|
77
|
-
});
|
|
78
|
-
const processor = new ChatProcessor(client, tools);
|
|
79
|
-
const reply = await processor.request(
|
|
80
|
-
`What is the cheapest flight from New York to Paris? going on ${new Date().toISOString()} and returning after a week. 1 adult traveler`,
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
log.info('reply', { reply });
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
// TODO(dmaretskyi): Doesn't work.
|
|
87
|
-
test('amadeus hotel name autocomplete', { timeout: 60_000 }, async () => {
|
|
88
|
-
const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API, { authorization: AMADEUS_AUTH });
|
|
89
|
-
|
|
90
|
-
const client = new AIServiceClientImpl({
|
|
91
|
-
endpoint: AI_SERVICE_ENDPOINT.LOCAL,
|
|
92
|
-
});
|
|
93
|
-
const processor = new ChatProcessor(client, tools);
|
|
94
|
-
const reply = await processor.request('Find me the William Wale in Brooklyn New York');
|
|
95
|
-
|
|
96
|
-
log.info('reply', { reply });
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
test.only('weather forecast', { timeout: 60_000 }, async () => {
|
|
100
|
-
const tools = await createToolsFromApi(WEATHER_API, {
|
|
101
|
-
authorization: VISUAL_CROSSING_CREDENTIALS,
|
|
102
|
-
instructions: WEATHER_INSTRUCTIONS,
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
const client = new AIServiceClientImpl({
|
|
106
|
-
endpoint: AI_SERVICE_ENDPOINT.LOCAL,
|
|
107
|
-
});
|
|
108
|
-
const processor = new ChatProcessor(client, tools);
|
|
109
|
-
const reply = await processor.request(
|
|
110
|
-
`Today's date is ${new Date().toISOString().split('T')[0]}. Give me weather forecast for Warsaw for next 5 days.`,
|
|
111
|
-
);
|
|
112
|
-
|
|
113
|
-
log.info('reply', { reply });
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
describe.skip('invoke api directly', { timeout: 10_000 }, () => {
|
|
118
|
-
test('amadeus flight availabilities', async () => {
|
|
119
|
-
const response = await fetch('https://test.api.amadeus.com/v1/shopping/availability/flight-availabilities', {
|
|
120
|
-
method: 'POST',
|
|
121
|
-
headers: {
|
|
122
|
-
accept: 'application/vnd.amadeus+json',
|
|
123
|
-
'X-HTTP-Method-Override': 'GET',
|
|
124
|
-
'Content-Type': 'application/vnd.amadeus+json',
|
|
125
|
-
Authorization: await resolveAuthorization(AMADEUS_AUTH),
|
|
126
|
-
},
|
|
127
|
-
body: JSON.stringify({
|
|
128
|
-
originDestinations: [
|
|
129
|
-
{
|
|
130
|
-
departureDateTime: {
|
|
131
|
-
date: new Date().toISOString().split('T')[0],
|
|
132
|
-
time: new Date().toTimeString().split(' ')[0],
|
|
133
|
-
},
|
|
134
|
-
destinationLocationCode: 'MAD',
|
|
135
|
-
id: '1',
|
|
136
|
-
originLocationCode: 'BOS',
|
|
137
|
-
},
|
|
138
|
-
],
|
|
139
|
-
sources: ['GDS'],
|
|
140
|
-
travelers: [
|
|
141
|
-
{
|
|
142
|
-
id: '1',
|
|
143
|
-
travelerType: 'ADULT',
|
|
144
|
-
},
|
|
145
|
-
],
|
|
146
|
-
}),
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
log.info('response', { status: response.status, body: await response.json() });
|
|
150
|
-
expect(response.status).toBe(200);
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
test.only('amadeus hotel name autocomplete', async () => {
|
|
154
|
-
const response = await fetch(
|
|
155
|
-
'https://test.api.amadeus.com/v1/reference-data/locations/hotel?keyword=PARI&subtype=HOTEL_LEISURE,HOTEL_GDS',
|
|
156
|
-
{
|
|
157
|
-
method: 'GET',
|
|
158
|
-
headers: {
|
|
159
|
-
// accept: 'application/vnd.amadeus+json',
|
|
160
|
-
// 'X-HTTP-Method-Override': 'GET',
|
|
161
|
-
Authorization: await resolveAuthorization(AMADEUS_AUTH),
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
);
|
|
165
|
-
|
|
166
|
-
log.info('response', { status: response.status, body: await response.json() });
|
|
167
|
-
expect(response.status).toBe(200);
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
describe.skip('rapidapi', () => {
|
|
172
|
-
test('amadeus flight availabilities', async () => {
|
|
173
|
-
const departureDate = new Date().toISOString().split('T')[0];
|
|
174
|
-
const arrivalDate = new Date(new Date().getTime() + 7 * 24 * 60 * 60 * 1000).toISOString().split('T')[0];
|
|
175
|
-
|
|
176
|
-
const url = `https://amadeus-api2.p.rapidapi.com/serpapi-flight-search?departure_id=PEK&arrival_id=AUS&outbound_date=${departureDate}&return_date=${arrivalDate}¤cy=USD&hl=en`;
|
|
177
|
-
const options = {
|
|
178
|
-
method: 'GET',
|
|
179
|
-
headers: {
|
|
180
|
-
'x-rapidapi-key': RAPID_API_CREDENTIALS.key,
|
|
181
|
-
'x-rapidapi-host': 'amadeus-api2.p.rapidapi.com',
|
|
182
|
-
},
|
|
183
|
-
};
|
|
184
|
-
|
|
185
|
-
const response = await fetch(url, options);
|
|
186
|
-
log.info('response', { status: response.status, body: await response.json() });
|
|
187
|
-
expect(response.status).toBe(200);
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
const FLIGHT_SEARCH_API =
|
|
193
|
-
'https://api.apis.guru/v2/specs/amadeus.com/amadeus-flight-availabilities-search/1.0.2/swagger.json';
|
|
194
|
-
const HOTEL_SEARCH_API = 'https://api.apis.guru/v2/specs/amadeus.com/amadeus-hotel-search/3.0.8/swagger.json';
|
|
195
|
-
const HOTEL_NAME_AUTOCOMPLETE_API =
|
|
196
|
-
'https://api.apis.guru/v2/specs/amadeus.com/amadeus-hotel-name-autocomplete/1.0.3/swagger.json';
|
|
197
|
-
const WEATHER_API = 'https://api.apis.guru/v2/specs/visualcrossing.com/weather/4.6/openapi.json';
|
|
198
|
-
|
|
199
|
-
const WEATHER_INSTRUCTIONS = `
|
|
200
|
-
If the user doesn't provide a date, use today's date.
|
|
201
|
-
Make sure to provide the start and end dates when possible to reduce the amount of data returned.
|
|
202
|
-
Use the tool that accepts the date parameters.
|
|
203
|
-
`;
|
|
204
|
-
|
|
205
|
-
const AMADEUS_AUTH: ApiAuthorization = {
|
|
206
|
-
type: 'oauth',
|
|
207
|
-
clientId: 'BOEnpLd1sMyKjAPGKYeAPFFy60u53QEG',
|
|
208
|
-
clientSecret: 'n4qldSN7usvD57gm',
|
|
209
|
-
tokenUrl: 'https://test.api.amadeus.com/v1/security/oauth2/token',
|
|
210
|
-
grantType: 'client_credentials',
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
const VISUAL_CROSSING_CREDENTIALS: ApiAuthorization = {
|
|
214
|
-
type: 'api-key',
|
|
215
|
-
key: 'FDPRVS953KB4GQQLD25GRT975',
|
|
216
|
-
placement: {
|
|
217
|
-
type: 'query',
|
|
218
|
-
name: 'key',
|
|
219
|
-
},
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
const RAPID_API_CREDENTIALS = {
|
|
223
|
-
key: '92271b6740msh32fd821d70f050dp16665bjsna69195c9e838',
|
|
224
|
-
};
|