@dxos/plugin-automation 0.7.5-labs.e27f9b9 → 0.7.5-labs.f400bbc
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-HKX3D3ZP.mjs → chunk-OFDNNRLE.mjs} +4 -7
- package/dist/lib/browser/{chunk-HKX3D3ZP.mjs.map → chunk-OFDNNRLE.mjs.map} +3 -3
- 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 +22 -372
- 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-WWU5FVAO.cjs → AutomationPanel-X33HHDMQ.cjs} +19 -131
- 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-5VF5JKUN.cjs → chunk-ORMEYEBE.cjs} +7 -10
- package/dist/lib/node/{chunk-5VF5JKUN.cjs.map → chunk-ORMEYEBE.cjs.map} +3 -3
- 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 +37 -373
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-5HYLBDC3.cjs → react-surface-2WRVAPGR.cjs} +9 -28
- 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-X3LPRWIL.mjs → chunk-6MUUH67V.mjs} +4 -7
- package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs.map → chunk-6MUUH67V.mjs.map} +3 -3
- 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 +22 -372
- 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-SS5WCRJ2.mjs → react-surface-QWLPOYXO.mjs} +5 -28
- 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 -11
- 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 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +1 -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 -3
- package/dist/types/src/testing/test-functions.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +2 -92
- package/dist/types/src/translations.d.ts.map +1 -1
- package/package.json +23 -71
- 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 +1 -13
- 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/TriggerEditor/TriggerEditor.tsx +8 -5
- package/src/components/index.ts +0 -7
- package/src/index.ts +2 -3
- package/src/meta.ts +3 -3
- package/src/testing/index.ts +1 -1
- package/src/testing/{testing.ts → test-functions.ts} +0 -7
- package/src/translations.ts +2 -29
- package/dist/lib/browser/AutomationPanel-WFJZAW4F.mjs +0 -8
- package/dist/lib/browser/AutomationPanel-WFJZAW4F.mjs.map +0 -7
- package/dist/lib/browser/ChatContainer-OFCOZ5T2.mjs +0 -12
- package/dist/lib/browser/ChatContainer-OFCOZ5T2.mjs.map +0 -7
- package/dist/lib/browser/ai-client-AARXEMMJ.mjs +0 -22
- package/dist/lib/browser/ai-client-AARXEMMJ.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-B4U34VSR.mjs +0 -162
- package/dist/lib/browser/app-graph-builder-B4U34VSR.mjs.map +0 -7
- package/dist/lib/browser/chunk-5SLV6AUA.mjs +0 -1367
- package/dist/lib/browser/chunk-5SLV6AUA.mjs.map +0 -7
- package/dist/lib/browser/chunk-7XADMUOW.mjs +0 -205
- package/dist/lib/browser/chunk-7XADMUOW.mjs.map +0 -7
- package/dist/lib/browser/chunk-HZ4TA7HY.mjs +0 -15
- package/dist/lib/browser/chunk-HZ4TA7HY.mjs.map +0 -7
- package/dist/lib/browser/chunk-IYSMXX6Q.mjs +0 -283
- package/dist/lib/browser/chunk-IYSMXX6Q.mjs.map +0 -7
- package/dist/lib/browser/chunk-RAVNWHNE.mjs +0 -242
- package/dist/lib/browser/chunk-RAVNWHNE.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-754MPV7H.mjs +0 -29
- package/dist/lib/browser/intent-resolver-754MPV7H.mjs.map +0 -7
- package/dist/lib/browser/react-surface-4QZ6AKBF.mjs +0 -50
- package/dist/lib/browser/react-surface-4QZ6AKBF.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-LRDEDGXI.cjs +0 -26
- package/dist/lib/node/AutomationPanel-LRDEDGXI.cjs.map +0 -7
- package/dist/lib/node/ChatContainer-6LZX4K2Z.cjs +0 -33
- package/dist/lib/node/ChatContainer-6LZX4K2Z.cjs.map +0 -7
- package/dist/lib/node/ai-client-SA35GN5Q.cjs +0 -38
- package/dist/lib/node/ai-client-SA35GN5Q.cjs.map +0 -7
- package/dist/lib/node/app-graph-builder-ENVDOPS4.cjs +0 -178
- package/dist/lib/node/app-graph-builder-ENVDOPS4.cjs.map +0 -7
- package/dist/lib/node/chunk-6VMSH4P6.cjs +0 -1364
- package/dist/lib/node/chunk-6VMSH4P6.cjs.map +0 -7
- package/dist/lib/node/chunk-HEYQONXC.cjs +0 -302
- package/dist/lib/node/chunk-HEYQONXC.cjs.map +0 -7
- package/dist/lib/node/chunk-LU4HQWJD.cjs +0 -226
- package/dist/lib/node/chunk-LU4HQWJD.cjs.map +0 -7
- package/dist/lib/node/chunk-WWU5FVAO.cjs.map +0 -7
- package/dist/lib/node/chunk-ZS5RZ7RM.cjs +0 -34
- package/dist/lib/node/chunk-ZS5RZ7RM.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-CNVBSG4E.cjs +0 -44
- package/dist/lib/node/intent-resolver-CNVBSG4E.cjs.map +0 -7
- package/dist/lib/node/react-surface-5HYLBDC3.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-ZV7VEEPP.mjs +0 -9
- package/dist/lib/node-esm/AutomationPanel-ZV7VEEPP.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-PPVMC2FC.mjs +0 -13
- package/dist/lib/node-esm/ChatContainer-PPVMC2FC.mjs.map +0 -7
- package/dist/lib/node-esm/ai-client-2ZA4TYFZ.mjs +0 -23
- package/dist/lib/node-esm/ai-client-2ZA4TYFZ.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-IYOUCQZT.mjs +0 -163
- package/dist/lib/node-esm/app-graph-builder-IYOUCQZT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3KB5HRXA.mjs +0 -284
- package/dist/lib/node-esm/chunk-3KB5HRXA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-EVTLHDM2.mjs +0 -206
- package/dist/lib/node-esm/chunk-EVTLHDM2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ISYLEDVU.mjs +0 -16
- package/dist/lib/node-esm/chunk-ISYLEDVU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MS7OIGVR.mjs +0 -243
- package/dist/lib/node-esm/chunk-MS7OIGVR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WISKXX7U.mjs +0 -1368
- package/dist/lib/node-esm/chunk-WISKXX7U.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-RQBXW442.mjs +0 -30
- package/dist/lib/node-esm/intent-resolver-RQBXW442.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-SS5WCRJ2.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 -180
- 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/ChatContainer/ChatContainer.d.ts +0 -8
- 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/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/ScrollContainer.d.ts +0 -15
- package/dist/types/src/components/Thread/ScrollContainer.d.ts.map +0 -1
- package/dist/types/src/components/Thread/StatusLine.d.ts +0 -11
- package/dist/types/src/components/Thread/StatusLine.d.ts.map +0 -1
- package/dist/types/src/components/Thread/StatusLine.stories.d.ts +0 -9
- package/dist/types/src/components/Thread/StatusLine.stories.d.ts.map +0 -1
- package/dist/types/src/components/Thread/Tabbed.d.ts +0 -9
- package/dist/types/src/components/Thread/Tabbed.d.ts.map +0 -1
- package/dist/types/src/components/Thread/Tabbed.stories.d.ts +0 -8
- package/dist/types/src/components/Thread/Tabbed.stories.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 -10
- 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/ToggleContainer.d.ts +0 -13
- package/dist/types/src/components/Thread/ToggleContainer.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ToggleContainer.stories.d.ts +0 -9
- package/dist/types/src/components/Thread/ToggleContainer.stories.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 -4
- 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 -65
- 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/useLocalTriggerManager.d.ts +0 -3
- package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
- package/dist/types/src/hooks/useServiceRegistry.d.ts +0 -3
- package/dist/types/src/hooks/useServiceRegistry.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/testing.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 -9
- package/dist/types/src/types/registry.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -196
- 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 -156
- package/src/capabilities/capabilities.ts +0 -12
- package/src/capabilities/intent-resolver.ts +0 -27
- package/src/components/ChatContainer/ChatContainer.tsx +0 -117
- 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/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 -48
- package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -75
- package/src/components/ServiceRegistry/index.ts +0 -5
- package/src/components/Thread/ScrollContainer.tsx +0 -92
- package/src/components/Thread/StatusLine.stories.tsx +0 -52
- package/src/components/Thread/StatusLine.tsx +0 -76
- package/src/components/Thread/Tabbed.stories.tsx +0 -52
- package/src/components/Thread/Tabbed.tsx +0 -72
- package/src/components/Thread/Thread.stories.tsx +0 -190
- package/src/components/Thread/Thread.tsx +0 -156
- package/src/components/Thread/ThreadMessage.tsx +0 -195
- package/src/components/Thread/ToggleContainer.stories.tsx +0 -111
- package/src/components/Thread/ToggleContainer.tsx +0 -103
- package/src/components/Thread/index.ts +0 -5
- package/src/hooks/email.ts +0 -49
- package/src/hooks/index.ts +0 -8
- package/src/hooks/invocation-handler.ts +0 -109
- package/src/hooks/processor.test.ts +0 -15
- package/src/hooks/processor.ts +0 -201
- package/src/hooks/useLocalTriggerManager.ts +0 -82
- package/src/hooks/useServiceRegistry.ts +0 -22
- package/src/presets.ts +0 -248
- package/src/tools/function.ts +0 -47
- package/src/tools/index.ts +0 -6
- package/src/tools/openapi.test.ts +0 -227
- package/src/tools/openapi.ts +0 -331
- package/src/types/index.ts +0 -7
- package/src/types/registry.ts +0 -89
- package/src/types/schema.ts +0 -120
- package/src/types/types.ts +0 -21
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/ChatContainer/ChatContainer.tsx", "../../../src/capabilities/index.ts", "../../../src/hooks/processor.ts", "../../../src/hooks/useServiceRegistry.ts", "../../../src/hooks/useLocalTriggerManager.ts", "../../../src/hooks/invocation-handler.ts", "../../../src/tools/function.ts", "../../../src/tools/openapi.ts", "../../../src/components/Thread/Thread.tsx", "../../../src/components/Thread/ScrollContainer.tsx", "../../../src/components/Thread/ThreadMessage.tsx", "../../../src/components/Thread/StatusLine.tsx", "../../../src/components/Thread/ToggleContainer.tsx", "../../../src/components/MarkdownViewer/MarkdownViewer.tsx", "../../../src/components/ChatContainer/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Capabilities, useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework';\nimport { createSystemPrompt, type Message, type Tool } from '@dxos/artifact';\nimport { FunctionType } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, QueueSubspaceTags } from '@dxos/keys';\nimport { useConfig } from '@dxos/react-client';\nimport { Filter, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useEdgeClient, useQueue } from '@dxos/react-edge-client';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { isNotNullOrUndefined } from '@dxos/util';\n\nimport { AutomationCapabilities } from '../../capabilities';\nimport { ChatProcessor } from '../../hooks';\nimport { covertFunctionToTool, createToolsFromService } from '../../tools';\nimport { MockServiceRegistry, type AIChatType } from '../../types';\nimport { Thread } from '../Thread';\n\nexport const ChatContainer = ({ chat, role }: { chat: AIChatType; role: string }) => {\n const config = useConfig();\n const space = getSpace(chat);\n const aiClient = useCapability(AutomationCapabilities.AiClient);\n\n const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);\n const globalTools = useCapabilities(Capabilities.Tools);\n const functions = useQuery(space, Filter.schema(FunctionType));\n const serviceRegistry = useMemo(() => new MockServiceRegistry(), []);\n\n const [serviceTools, setServiceTools] = useState<Tool[]>([]);\n useEffect(() => {\n queueMicrotask(async () => {\n const services = await serviceRegistry.queryServices({});\n const tools = await Promise.all(services.map((service) => createToolsFromService(service)));\n setServiceTools(tools.flat());\n });\n }, []);\n\n const tools = useMemo(\n () => [\n ...globalTools.flat(),\n ...artifactDefinitions.flatMap((definition) => definition.tools),\n ...functions\n .map((fn) => covertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? '', space?.id))\n .filter(isNotNullOrUndefined),\n ...serviceTools,\n ],\n [globalTools, artifactDefinitions, functions, serviceTools, space?.id],\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 { dispatchPromise: dispatch } = useIntentDispatcher();\n const processor = useMemo(\n () =>\n new ChatProcessor(\n aiClient,\n tools,\n {\n space,\n dispatch,\n },\n {\n model: '@anthropic/claude-3-5-sonnet-20241022',\n systemPrompt,\n },\n ),\n [aiClient, tools, space, dispatch, systemPrompt],\n );\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 edgeClient = useEdgeClient();\n const messageQueue = useQueue<Message>(edgeClient, queueDxn);\n const messages = [...(messageQueue?.items ?? []), ...processor.messages.value];\n\n const handleSubmit = useCallback(\n async (message: string) => {\n if (processor.streaming.value) {\n await processor.cancel();\n }\n\n invariant(messageQueue);\n await processor.request(message, {\n history: messageQueue.items,\n onComplete: (messages) => messageQueue.append(messages),\n });\n },\n [processor, messageQueue],\n );\n\n const handleStop = useCallback(() => {\n if (processor.streaming.value) {\n void processor.cancel();\n }\n }, [processor]);\n\n return (\n <StackItem.Content toolbar={false} role={role}>\n <Thread messages={messages} streaming={processor.streaming.value} onSubmit={handleSubmit} onStop={handleStop} />\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n", "//\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", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Signal, batch, computed, signal } from '@preact/signals-core';\n\nimport { type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { type Tool, Message, type MessageContentBlock } from '@dxos/artifact';\nimport {\n isToolUse,\n runTools,\n type AIServiceClientImpl,\n type GenerateRequest,\n type GenerationStream,\n MixedStreamParser,\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\ntype RequestOptions = {\n history?: Message[];\n onComplete?: (messages: Message[]) => void;\n};\n\n/**\n * Handles interactions with the AI service.\n * Maintains a queue of messages and handles streaming responses from the AI service.\n * Executes tools based on AI responses.\n * Supports cancellation of in-progress requests.\n */\nexport class ChatProcessor {\n /** SSE stream parser. */\n private readonly _parser = new MixedStreamParser();\n\n /** Current streaming response (iterator). */\n private _stream: GenerationStream | undefined;\n\n /** Pending messages (incl. the user request). */\n private readonly _pending: Signal<Message[]> = signal([]);\n\n /** Current streaming block (from the AI service). */\n private readonly _block: Signal<MessageContentBlock | undefined> = signal(undefined);\n\n /** Prior history from queue. */\n private _history: Message[] = [];\n\n /**\n * Streaming state.\n * @reactive\n */\n public readonly streaming: Signal<boolean> = computed(() => this._block.value !== undefined);\n\n /**\n * Array of Messages (incl. the current message being streamed).\n * @reactive\n */\n public readonly messages: Signal<Message[]> = computed(() => {\n const messages = [...this._pending.value];\n if (this._block.value) {\n const current = messages.pop();\n invariant(current);\n const { content, ...rest } = current;\n const message = { ...rest, content: [...content, this._block.value] };\n messages.push(message);\n }\n\n return messages;\n });\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 // Message complete.\n this._parser.message.on((message) => {\n batch(() => {\n this._pending.value = [...this._pending.value, message];\n this._block.value = undefined;\n });\n });\n\n // Streaming update (happens before message complete).\n this._parser.update.on((block) => {\n batch(() => {\n this._block.value = block;\n });\n });\n }\n\n /**\n * Make GPT request.\n */\n async request(message: string, options: RequestOptions = {}): Promise<Message[]> {\n batch(() => {\n this._history = options.history ?? [];\n this._pending.value = [\n createStatic(Message, {\n role: 'user',\n content: [{ type: 'text', text: message }],\n }),\n ];\n this._block.value = undefined;\n });\n\n await this._generate();\n options.onComplete?.(this._pending.value);\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._stream?.abort();\n return this._reset();\n }\n\n private async _reset(): Promise<Message[]> {\n const messages = this._pending.value;\n batch(() => {\n this._history = [];\n this._pending.value = [];\n this._block.value = undefined;\n });\n\n return messages;\n }\n\n /**\n * Generate a response from the AI service.\n * Iterates over tool requests.\n */\n private async _generate() {\n try {\n let more = false;\n do {\n log.info('requesting...', { history: this._history.length, messages: this._pending.value.length });\n this._stream = 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 // Wait until complete.\n await this._parser.parse(this._stream);\n await this._stream.complete();\n\n // Add messages.\n log.info('response', { messages: this._pending.value });\n\n // Resolve tool use locally.\n more = false;\n const message = this._pending.value.at(-1);\n invariant(message);\n if (isToolUse(message)) {\n log.info('tool request...');\n const response = await runTools({\n message: this._pending.value.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 = [...this._pending.value, 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._stream = undefined;\n }\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { type ServiceType, MockServiceRegistry, type ServiceQuery } from '../types';\n\nexport const useServiceRegistry = (query: ServiceQuery): ServiceType[] => {\n const registry = useMemo(() => new MockServiceRegistry(), []);\n const [services, setServices] = useState<ServiceType[]>([]);\n useEffect(() => {\n const t = setTimeout(async () => {\n const services = await registry.queryServices(query);\n setServices(services);\n });\n\n return () => clearTimeout(t);\n }, [query, registry]);\n\n return services;\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", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineTool, ToolResult } from '@dxos/artifact';\nimport type { Tool } from '@dxos/artifact';\nimport { toEffectSchema } from '@dxos/echo-schema';\nimport { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';\nimport type { FunctionType } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport type { SpaceId } from '@dxos/react-client/echo';\nimport { getMeta } from '@dxos/react-client/echo';\n\nexport const covertFunctionToTool = (\n fn: FunctionType,\n edgeUrl: string,\n spaceId?: SpaceId | undefined,\n): Tool | undefined => {\n if (!fn.description || !fn.inputSchema) {\n return undefined;\n }\n\n const existingFunctionUrl = getUserFunctionUrlInMetadata(getMeta(fn));\n if (!existingFunctionUrl) {\n return undefined;\n }\n const url = getInvocationUrl(existingFunctionUrl, edgeUrl, {\n spaceId,\n });\n\n return defineTool({\n name: fn.name,\n description: fn.description,\n schema: toEffectSchema(fn.inputSchema),\n execute: async (input) => {\n log.info('execute function tool', { name: fn.name, url, input });\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(input),\n });\n return ToolResult.Success(await response.text());\n },\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport jsonpointer from 'jsonpointer';\nimport { type OpenAPIV2, type OpenAPIV3_1 } from 'openapi-types';\n\nimport { ToolResult, type Tool } from '@dxos/artifact';\nimport { JsonSchemaType, normalizeSchema, S, toEffectSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { deepMapValues } from '@dxos/util';\n\nimport type { ApiAuthorization, ServiceType } from '../types';\n\nexport type CreateToolsFromApiOptions = {\n authorization?: ApiAuthorization;\n instructions?: string;\n};\n\nexport const createToolsFromService = async (service: ServiceType): Promise<Tool[]> => {\n invariant(service.interfaces?.length === 1 && service.interfaces[0].kind === 'api');\n const iface = service.interfaces[0];\n invariant(iface.schemaUrl);\n invariant(iface.schemaUrl);\n return createToolsFromApi(iface.schemaUrl, { authorization: iface.authorization });\n};\n\nexport const createToolsFromApi = async (url: string, options?: CreateToolsFromApiOptions): Promise<Tool[]> => {\n const res = await fetch(url);\n const spec = (await res.json()) as OpenAPIV2.Document;\n log('spec', { spec });\n\n const tools: Tool[] = [];\n for (const [path, pathItem] of Object.entries(spec.paths)) {\n if (typeof pathItem !== 'object') {\n continue;\n }\n\n // TODO(burdon): ???\n const { ...methods } = pathItem;\n for (const [method, m] of Object.entries(methods)) {\n const methodItem: OpenAPIV2.OperationObject = m as OpenAPIV2.OperationObject;\n log('methodItem', { path, method, methodItem });\n\n const parametersResolved: OpenAPIV2.ParameterObject[] =\n methodItem.parameters?.map((parameter: any) => {\n const resolved = resolveJsonSchema(parameter, spec);\n return resolved;\n }) ?? [];\n\n const inputSchema: JsonSchemaType = {\n type: 'object',\n properties: {},\n };\n\n const endpointParameters: OpenAPIV2.ParameterObject[] = [];\n for (const parameter of parametersResolved) {\n log('parameter', { parameter });\n\n if (\n options?.authorization?.type === 'api-key' &&\n options.authorization.placement.type === 'query' &&\n parameter.in === 'query' &&\n parameter.name === options.authorization.placement.name\n ) {\n continue;\n }\n\n endpointParameters.push(parameter);\n\n if (parameter.schema) {\n inputSchema.properties![parameter.name] = normalizeSchema(parameter.schema);\n } else if (typeof parameter.type === 'string') {\n const { name, in: _in, required, ...schema } = parameter;\n inputSchema.properties![name] = normalizeSchema(schema);\n if (required) {\n inputSchema.required ??= [];\n inputSchema.required!.push(name);\n }\n }\n }\n\n log('inputSchema', { inputSchema });\n S.validateSync(JsonSchemaType)(inputSchema);\n\n const description = methodItem.description ?? methodItem.summary;\n if (!description) {\n log.warn('no description', { path, method });\n continue;\n }\n\n const endpoint: EndpointDescriptor = {\n document: spec,\n path,\n method,\n parameters: endpointParameters,\n authorization: options?.authorization,\n };\n\n tools.push({\n name: getToolName(path, method, methodItem),\n description: options?.instructions ? `${options.instructions}\\n\\n${description}` : description,\n parameters: inputSchema,\n execute: async (input) => {\n const response = await callApiEndpoint(endpoint, input);\n return ToolResult.Success(response);\n },\n });\n }\n }\n\n return tools;\n};\n\nconst getToolName = (path: string, method: string, methodItem: OpenAPIV2.OperationObject) => {\n if (methodItem.operationId) {\n return methodItem.operationId;\n }\n\n // Generate a name from the path and method.\n let name = `${method.toLowerCase()}_${path.replaceAll(/[{}/]/g, '_')}`;\n while (name.length > MAX_TOOL_NAME_LENGTH) {\n const lengthBefore = name.length;\n\n for (const word of GENERIC_WORDS) {\n if (name.includes(word)) {\n name = name.replace(word, '');\n break;\n }\n }\n name = name.replaceAll('__', '_').replace(/_$/, '');\n\n const lengthAfter = name.length;\n if (lengthBefore === lengthAfter) {\n break;\n }\n }\n name = name.replaceAll('__', '_').replace(/_$/, '').replace(/^_/, '');\n\n return name.slice(0, MAX_TOOL_NAME_LENGTH);\n};\n\nconst MAX_TOOL_NAME_LENGTH = 64;\nconst GENERIC_WORDS = [\n 'services',\n 'service',\n 'api',\n 'rest',\n 'endpoint',\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'head',\n 'options',\n 'trace',\n 'service',\n 'api',\n 'endpoint',\n];\n\ntype EndpointDescriptor = {\n document: OpenAPIV3_1.Document | OpenAPIV2.Document;\n path: string;\n method: string;\n parameters: OpenAPIV2.ParameterObject[];\n authorization?: ApiAuthorization;\n};\n\nconst callApiEndpoint = async (endpoint: EndpointDescriptor, input: any) => {\n log.info('endpoint', { method: endpoint.method, name: endpoint.path, input });\n\n let url = getEndpointUrl(endpoint);\n const request: RequestInit = {\n method: endpoint.method,\n headers: {},\n };\n const query = new URLSearchParams();\n let body: any;\n for (const parameter of endpoint.parameters) {\n if (input[parameter.name] === undefined) {\n continue;\n }\n\n switch (parameter.in) {\n case 'header': {\n if (parameter.example) {\n (request.headers as any)[parameter.name] = parameter.default;\n }\n break;\n }\n case 'path': {\n url = url.replace(`{${parameter.name}}`, encodeURIComponent(input[parameter.name]));\n break;\n }\n case 'body': {\n const value = input[parameter.name];\n\n // Client-side validation\n const effectSchema = toEffectSchema(parameter.schema);\n S.validateSync(effectSchema)(value);\n\n if (body) {\n throw new Error(`Duplicate body parameter: ${parameter.name}`);\n }\n body = value;\n break;\n }\n case 'query': {\n query.set(parameter.name, input[parameter.name]);\n break;\n }\n }\n }\n\n if (\n (endpoint.authorization?.type === 'api-key' && endpoint.authorization.placement.type === 'authorization-header') ||\n endpoint.authorization?.type === 'oauth'\n ) {\n (request.headers as any).Authorization = await resolveAuthorization(endpoint.authorization);\n } else if (endpoint.authorization?.type === 'api-key' && endpoint.authorization.placement.type === 'query') {\n query.set(endpoint.authorization.placement.name, endpoint.authorization.key);\n }\n\n if (query.size > 0) {\n url += `?${query.toString()}`;\n }\n\n if (body) {\n request.body = JSON.stringify(body);\n (request.headers as any)['Content-Type'] = 'application/json';\n }\n\n log.info('request', { url, request });\n const response = await fetch(url, request);\n\n log.info('response', { ok: response.ok, status: response.status, statusText: response.statusText });\n\n if (response.ok) {\n const contentType = response.headers.get('Content-Type');\n if (contentType?.includes('application/json')) {\n return await response.json();\n } else {\n return await response.text();\n }\n } else {\n if (response.headers.get('Content-Type')?.includes('application/json')) {\n const responseBody = await response.text();\n let error: any;\n try {\n error = JSON.parse(responseBody);\n } catch {\n error = responseBody;\n }\n log.error('error', { error });\n throw new Error(error.message);\n } else {\n const error = await response.text();\n log.error('error', { error });\n throw new Error(error);\n }\n }\n};\n\nconst getEndpointUrl = (endpoint: EndpointDescriptor) => {\n let url = '';\n if (isV3_1(endpoint.document) && endpoint.document.servers && endpoint.document.servers.length > 0) {\n url = endpoint.document.servers[0].url;\n } else {\n invariant(!isV3_1(endpoint.document));\n url = `${endpoint.document.schemes?.[0] ?? 'https'}://${endpoint.document.host}`;\n }\n\n if (!isV3_1(endpoint.document) && endpoint.document.basePath) {\n url += endpoint.document.basePath;\n }\n\n url += endpoint.path;\n\n return url;\n};\n\nexport const resolveAuthorization = async (authorization: ApiAuthorization): Promise<string> => {\n switch (authorization.type) {\n case 'api-key': {\n invariant(authorization.placement.type === 'authorization-header');\n return `Bearer ${authorization.key}`;\n }\n case 'oauth': {\n const response = await fetch(authorization.tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: `grant_type=${authorization.grantType}&client_id=${authorization.clientId}&client_secret=${authorization.clientSecret}`,\n });\n const data = await response.json();\n return `Bearer ${data.access_token}`;\n }\n default: {\n throw new Error(`Unknown authorization type: ${(authorization as any).type}`);\n }\n }\n};\n\n/**\n * Resolves all $ref properties in a JSON schema.\n * Doesn't assume the structure of the schema.\n * The function looks from $ref properties in the schema and resolves them to their values in the base object.\n */\nconst resolveJsonSchema = (schema: any, base: any) => {\n return deepMapValues(schema, (value, recurse) => {\n if (typeof value === 'object' && value !== null && '$ref' in value && typeof value.$ref === 'string') {\n if (value.$ref.startsWith('#')) {\n const resolved = jsonpointer.get(base, value.$ref.slice(1));\n if (resolved) {\n return recurse(resolved);\n } else {\n log.warn('unresolved', { ref: value.$ref, base });\n }\n }\n }\n return recurse(value);\n });\n};\n\nconst isV3_1 = (document: OpenAPIV3_1.Document | OpenAPIV2.Document): document is OpenAPIV3_1.Document => {\n return (document as any).openapi === '3.0.1';\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type KeyboardEventHandler, useCallback, useMemo, useRef, useState } from 'react';\n\nimport { type Message } from '@dxos/artifact';\nimport { IconButton, Input, useTranslation } from '@dxos/react-ui';\nimport { Spinner } from '@dxos/react-ui-sfx';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { ScrollContainer, type ScrollController } from './ScrollContainer';\nimport { ThreadMessage, type ThreadMessageProps } from './ThreadMessage';\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type ThreadProps = {\n messages?: Message[];\n streaming?: boolean;\n onSubmit?: (message: string) => void;\n onStop?: () => void;\n} & Pick<ThreadMessageProps, 'collapse' | 'debug' | 'onSuggest' | 'onDelete'>;\n\n// TODO(burdon): Factor out scroll logic.\nexport const Thread = ({\n messages,\n streaming,\n collapse,\n debug,\n onSubmit,\n onStop,\n onSuggest,\n onDelete,\n}: ThreadProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const scroller = useRef<ScrollController>(null);\n\n const [text, setText] = useState('');\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(\n (ev) => {\n switch (ev.key) {\n case 'Escape': {\n setText('');\n break;\n }\n\n case 'Enter': {\n const value = text.trim();\n if (value.length > 0) {\n scroller.current?.scrollToBottom();\n onSubmit?.(value);\n setText('');\n }\n break;\n }\n }\n },\n [text],\n );\n\n /**\n * Reduce message blocks into collections of messages that contain related contiguous blocks.\n * For example, collapse all tool request/response pairs into a single message.\n */\n // TODO(dmaretskyi): This needs to be a separate type: `id` is not a valid ObjectId, this needs to accommodate messageId for deletion.\n const { messages: lines = [] } = useMemo(() => {\n if (!collapse) {\n return { messages: messages ?? [] };\n }\n\n return (messages ?? []).reduce<{ messages: Message[]; current?: Message }>(\n ({ current, messages }, message) => {\n let i = 0;\n for (const block of message.content) {\n switch (block.type) {\n case 'tool_use':\n case 'tool_result': {\n if (current) {\n current.content.push(block);\n } else {\n current = {\n id: [message.id, i].join('_'),\n role: message.role,\n content: [block],\n };\n messages.push(current);\n }\n break;\n }\n\n case 'text':\n default: {\n current = undefined;\n messages.push({\n id: [message.id, i].join('_'),\n role: message.role,\n content: [block],\n });\n break;\n }\n }\n\n i++;\n }\n\n return { current, messages };\n },\n { messages: [] as Message[] },\n );\n }, [messages, collapse]);\n\n return (\n <div className='flex flex-col grow overflow-hidden'>\n <ScrollContainer ref={scroller} classNames='py-2 gap-2 overflow-x-hidden'>\n {lines.map((message) => (\n <ThreadMessage\n key={message.id}\n classNames='px-4'\n message={message}\n collapse={collapse}\n debug={debug}\n onSuggest={onSuggest}\n onDelete={onDelete}\n />\n ))}\n </ScrollContainer>\n\n {onSubmit && (\n <div className='flex p-4 gap-3 items-center'>\n <Spinner active={streaming} />\n <Input.Root>\n <Input.TextInput\n autoFocus\n classNames='px-2 bg-base rounded'\n placeholder={t('chat input placeholder')}\n value={text}\n onChange={(ev) => setText(ev.target.value)}\n onKeyDown={handleKeyDown}\n />\n </Input.Root>\n {onStop && (\n <IconButton\n disabled={!streaming}\n classNames={mx('!p-1 !opacity-20 transition', streaming && '!opacity-80')}\n variant='ghost'\n size={5}\n onClick={onStop}\n icon='ph--x--regular'\n label={t('chat stop')}\n iconOnly\n />\n )}\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, {\n forwardRef,\n type PropsWithChildren,\n type UIEventHandler,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\n\nimport { invariant } from '@dxos/invariant';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport interface ScrollController {\n scrollToBottom: () => void;\n}\n\nexport type ScrollContainerProps = ThemedClassName<PropsWithChildren>;\n\n/**\n * Scroll container that automatically scrolls to the bottom when new content is added.\n */\n// TODO(burdon): Move to react-ui.\n// TODO(burdon): Custom scrollbar.\nexport const ScrollContainer = forwardRef<ScrollController, ScrollContainerProps>(\n ({ children, classNames }, forwardedRef) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const autoScrollRef = useRef(false);\n\n // Controller.\n useImperativeHandle(\n forwardedRef,\n () => ({\n scrollToBottom: () => {\n invariant(containerRef.current);\n containerRef.current.scrollTo({ top: containerRef.current.scrollHeight, behavior: 'smooth' });\n autoScrollRef.current = false;\n },\n }),\n [],\n );\n\n // Auto scroll.\n const [sticky, setSticky] = useState(true);\n useEffect(() => {\n if (!sticky || !containerRef.current) {\n return;\n }\n\n autoScrollRef.current = true;\n containerRef.current.scrollTo({ top: containerRef.current.scrollHeight, behavior: 'smooth' });\n }, [children]);\n\n // Detect scroll end.\n useEffect(() => {\n invariant(containerRef.current);\n const handleScrollEnd = () => {\n autoScrollRef.current = false;\n };\n\n containerRef.current.addEventListener('scrollend', handleScrollEnd);\n return () => containerRef.current?.removeEventListener('scrollend', handleScrollEnd);\n }, []);\n\n // Scrolling.\n const handleScroll = useCallback<UIEventHandler<HTMLDivElement>>((ev) => {\n if (autoScrollRef.current) {\n return;\n }\n\n const { scrollTop, clientHeight, scrollHeight } = ev.currentTarget;\n const sticky = scrollTop + clientHeight >= scrollHeight;\n setSticky(sticky);\n }, []);\n\n return (\n <div\n ref={containerRef}\n onScroll={handleScroll}\n className={mx('flex flex-col grow overflow-y-scroll scrollbar-none', classNames)}\n >\n {children}\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { type MessageContentBlock, type Message } from '@dxos/artifact';\nimport { invariant } from '@dxos/invariant';\nimport { Button, ButtonGroup, Icon, type ThemedClassName } from '@dxos/react-ui';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/react-ui-theme';\nimport { safeParseJson } from '@dxos/util';\n\nimport { StatusLine } from './StatusLine';\nimport { ToggleContainer } from './ToggleContainer';\nimport { MarkdownViewer } from '../MarkdownViewer';\n\nexport type ThreadMessageProps = ThemedClassName<{\n message: Message;\n collapse?: boolean;\n debug?: boolean;\n onSuggest?: (text: string) => void;\n onDelete?: (id: string) => void;\n}>;\n\nexport const ThreadMessage: FC<ThreadMessageProps> = ({\n classNames,\n message,\n collapse,\n debug,\n onSuggest,\n onDelete,\n}) => {\n if (typeof message !== 'object') {\n return <div className={mx(classNames)}>{message}</div>;\n }\n\n const { role, content = [] } = message;\n\n // TODO(burdon): Factor out tool blocks.\n const tools = content.filter((block) => block.type === 'tool_use' || block.type === 'tool_result');\n if (collapse && tools.length > 0) {\n let request: MessageContentBlock & { type: 'tool_use' };\n const lines = tools.map((tool) => {\n switch (tool.type) {\n case 'tool_use': {\n request = tool;\n // TODO(burdon): Get plugin name.\n return `Calling ${tool.name}...`;\n }\n case 'tool_result': {\n if (!request) {\n return 'Error';\n }\n\n return `Processed ${request.name}`;\n }\n default:\n return 'Error';\n }\n });\n\n return (\n <div className={mx('flex', classNames)}>\n <div className='w-full p-1 px-2 overflow-hidden rounded-md bg-base'>\n <ToggleContainer title={<StatusLine lines={lines} autoAdvance />} toggle>\n <Json data={content[content.length - 1]} classNames='!p-1 text-xs' />\n </ToggleContainer>\n </div>\n </div>\n );\n }\n\n return (\n <div className={mx('flex flex-col shrink-0 gap-2')}>\n {debug && (\n <div className='text-xs text-subdued'>\n {message.id}{' '}\n {onDelete && (\n <span className='cursor-pointer underline' onClick={() => onDelete(message.id)}>\n delete\n </span>\n )}\n </div>\n )}\n {content.map((block, idx) => (\n <div key={idx} className={mx('flex', classNames, block.type === 'text' && role === 'user' && 'justify-end')}>\n <Block role={role} block={block} onSuggest={onSuggest ?? (() => {})} />\n </div>\n ))}\n </div>\n );\n};\n\nconst Block = ({\n block,\n role,\n onSuggest,\n}: Pick<Message, 'role'> & { block: MessageContentBlock; onSuggest: (text: string) => void }) => {\n const Component = componentMap[block.type] ?? componentMap.default;\n return (\n <div\n className={mx(\n 'p-1 px-2 overflow-hidden rounded-md',\n (block.type !== 'text' || block.disposition) && 'w-full bg-base',\n block.type === 'text' && role === 'user' && 'bg-blue-200 dark:bg-blue-800',\n )}\n >\n <Component block={block} onSuggest={onSuggest} />\n </div>\n );\n};\n\nconst titles: Record<string, string> = {\n ['cot' as const]: 'Chain of thought',\n\n // TODO(burdon): Only show if debugging.\n ['tool_use' as const]: 'Tool request',\n ['tool_result' as const]: 'Tool result',\n\n ['artifact' as const]: 'Artifact',\n};\n\ntype BlockComponent = FC<{ block: MessageContentBlock; onSuggest: (text: string) => void }>;\n\nconst componentMap: Record<string, BlockComponent> = {\n text: ({ block }) => {\n invariant(block.type === 'text');\n const title = block.disposition ? titles[block.disposition] : undefined;\n if (!title) {\n return (\n <MarkdownViewer content={block.text} classNames={[block.disposition === 'cot' && 'text-sm text-subdued']} />\n );\n }\n\n return (\n <ToggleContainer\n title={title}\n icon={\n block.pending ? (\n <Icon icon={'ph--circle-notch--regular'} classNames='text-subdued ml-2 animate-spin' size={4} />\n ) : undefined\n }\n defaultOpen={block.disposition === 'cot'}\n toggle\n >\n <MarkdownViewer content={block.text} classNames={[block.disposition === 'cot' && 'text-sm text-subdued']} />\n </ToggleContainer>\n );\n },\n\n json: ({ block, onSuggest }) => {\n invariant(block.type === 'json');\n\n switch (block.disposition) {\n case 'suggest': {\n const { text = '' }: { text: string } = safeParseJson(block.json ?? '{}') ?? ({} as any);\n return <Button onClick={() => onSuggest(text)}>{text}</Button>;\n }\n case 'select': {\n const { options = [] }: { options: string[] } = safeParseJson(block.json ?? '{}') ?? ({} as any);\n return (\n <ButtonGroup>\n {options.map((option) => (\n <Button key={option} onClick={() => onSuggest(option)}>\n {option}\n </Button>\n ))}\n </ButtonGroup>\n );\n }\n default: {\n const title = block.disposition ? titles[block.disposition] : undefined;\n return (\n <ToggleContainer title={title ?? 'JSON'} toggle>\n <Json data={safeParseJson(block.json ?? block)} classNames='!p-1 text-xs' />\n </ToggleContainer>\n );\n }\n }\n },\n\n default: ({ block }) => {\n let title = titles[block.type];\n if (block.type === 'tool_use') {\n title = `Tool [${block.name}]`; // TODO(burdon): Get label from tool.\n }\n\n return (\n <ToggleContainer title={title ?? 'JSON'} toggle>\n <Json data={block} classNames='!p-1 text-xs' />\n </ToggleContainer>\n );\n },\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nconst emptyLines: string[] = [];\n\nexport type StatusLineProps = ThemedClassName<{\n line?: number;\n lines?: string[];\n transition?: number;\n advance?: number;\n autoAdvance?: boolean;\n}>;\n\nexport const StatusLine = ({\n classNames,\n line = -1,\n lines = emptyLines,\n transition = 300,\n advance = 1_000,\n autoAdvance,\n}: StatusLineProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [currentLine, setCurrentLine] = useState(line);\n useEffect(() => {\n setCurrentLine(line);\n }, [line]);\n\n useEffect(() => {\n if (!autoAdvance) {\n return;\n }\n\n const next = () => {\n setCurrentLine((prev) => {\n if (prev === lines.length - 1) {\n clearInterval(interval);\n return prev;\n }\n\n return prev + 1;\n });\n };\n\n next();\n const interval = setInterval(next, advance);\n\n return () => clearInterval(interval);\n }, [lines.length, autoAdvance, advance]);\n\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.style.transition = `transform ${transition}ms ease-in-out`;\n containerRef.current.style.transform = `translateY(-${currentLine * 24}px)`;\n }\n }, [currentLine]);\n\n return (\n <div className={mx('relative h-[24px] overflow-hidden', classNames)}>\n <div ref={containerRef} className='h-[24px]'>\n <div className='flex flex-col'>\n {lines.map((line, i) => (\n <div key={i} className={mx('flex h-[24px] items-center')}>\n <span className='truncate'>{line}</span>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type JSX, type PropsWithChildren, useEffect, useState } from 'react';\n\nimport { Icon, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type ToggleContainerProps = ThemedClassName<\n PropsWithChildren<{\n title?: string | JSX.Element;\n icon?: JSX.Element;\n toggle?: boolean;\n defaultOpen?: boolean;\n duration?: number;\n /** Should shrink the width when closed. */\n shrinkX?: boolean;\n }>\n>;\n\n// TODO(burdon): Externalize toggle state.\nexport const ToggleContainer = ({\n title,\n icon,\n toggle,\n defaultOpen,\n duration = 400,\n shrinkX = false,\n children,\n classNames,\n}: ToggleContainerProps) => {\n const [expand, setExpand] = useState(defaultOpen || !toggle);\n const [expandX, setExpandX] = useState(shrinkX ? expand : true);\n const [expandY, setExpandY] = useState(expand);\n\n useEffect(() => {\n let t: NodeJS.Timeout;\n if (expand) {\n if (shrinkX) {\n setExpandX(true);\n }\n t = setTimeout(\n () => {\n setExpandY(true);\n },\n shrinkX ? duration : 0,\n );\n } else {\n setExpandY(false);\n if (shrinkX) {\n t = setTimeout(() => {\n setExpandX(false);\n }, duration);\n }\n }\n\n return () => clearTimeout(t);\n }, [expand]);\n\n return (\n <div className={mx('overflow-hidden', classNames)}>\n {title && (\n <div\n className='flex gap-1 py-1 items-center text-sm text-subdued cursor-pointer select-none'\n onClick={toggle ? () => setExpand((open) => !open) : undefined}\n >\n {toggle && (\n <div className='flex w-[24px] h-[24px] items-center justify-center'>\n <Icon\n size={4}\n icon={'ph--caret-right--regular'}\n style={{ transitionDuration: `${shrinkX ? duration * 2 : duration}ms` }}\n classNames={['transition transition-transform ease-in-out', expand ? 'rotate-90' : 'transform-none']}\n />\n </div>\n )}\n <div className='flex-1 pis-1 pie-1 truncate'>{title}</div>\n {icon}\n </div>\n )}\n <div\n style={{ transitionDuration: `${duration}ms` }}\n className={mx(\n 'grid transition-[grid-template-columns] ease-in-out',\n expandX ? 'grid-cols-[1fr]' : 'grid-cols-[0fr]',\n )}\n >\n <div className='overflow-hidden'>\n <div\n style={{ transitionDuration: `${duration}ms` }}\n className={mx(\n 'grid transition-[grid-template-rows] ease-in-out',\n expandY ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]',\n )}\n >\n <div className={mx('flex overflow-hidden transition-opacity')}>{children}</div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC } from 'react';\nimport ReactMarkdown from 'react-markdown';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/react-ui-theme';\nimport { omit } from '@dxos/util';\n\ntype MarkdownViewerProps = ThemedClassName<{\n content?: string;\n}>;\n\n/**\n * Transform text into react elements.\n *\n * https://github.com/remarkjs/react-markdown\n * markdown -> remark -> [mdast -> remark plugins] -> [hast -> rehype plugins] -> components -> react elements.\n */\n// TODO(burdon): Styles.\n// TODO(burdon): Factor out (react-ui-syntax-highlighter).\nexport const MarkdownViewer: FC<MarkdownViewerProps> = ({ classNames, content = '' }) => {\n return (\n <div className={mx('space-y-2', classNames)}>\n <ReactMarkdown\n components={{\n a: ({ node, children, href, ...props }) => (\n <a\n href={href}\n className='text-primary-500 hover:text-primary-500'\n target='_blank'\n rel='noopener noreferrer'\n {...props}\n >\n {children}\n </a>\n ),\n ol: ({ node, children, ...props }) => (\n <ol className='leading-tight list-decimal pl-6' {...omit(props, ['ordered'])}>\n {children}\n </ol>\n ),\n ul: ({ node, children, ...props }) => (\n <ul className='leading-tight list-disc pl-6' {...omit(props, ['ordered'])}>\n {children}\n </ul>\n ),\n li: ({ node, children, ...props }) => (\n <li className='' {...omit(props, ['ordered'])}>\n {children}\n </li>\n ),\n blockquote: ({ node, children, ...props }) => (\n <blockquote className='border-l-4 border-primary-500 pl-4 my-4 text-primary-500' {...props}>\n {children}\n </blockquote>\n ),\n code: ({ children, className }) => {\n const [_, language] = /language-(\\w+)/.exec(className || '') || [];\n return (\n <SyntaxHighlighter PreTag='div' language={language} className='p-0'>\n {children}\n </SyntaxHighlighter>\n );\n },\n }}\n >\n {content}\n </ReactMarkdown>\n </div>\n );\n};\n\n// const Cursor = () => {\n// return <span className='animate-[pulse_1s_steps(1)_infinite] text-primary-500'>▊</span>;\n// };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ChatContainer } from './ChatContainer';\n\nexport * from './ChatContainer';\nexport default ChatContainer;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useCallback", "useEffect", "useMemo", "useState", "Capabilities", "useCapabilities", "useCapability", "useIntentDispatcher", "createSystemPrompt", "FunctionType", "invariant", "DXN", "QueueSubspaceTags", "useConfig", "Filter", "getSpace", "useQuery", "useEdgeClient", "useQueue", "StackItem", "isNotNullOrUndefined", "lazy", "AiClient", "lazy", "AppGraphBuilder", "IntentResolver", "ReactSurface", "batch", "computed", "signal", "Message", "isToolUse", "runTools", "MixedStreamParser", "createStatic", "invariant", "log", "defaultOptions", "model", "systemPrompt", "ChatProcessor", "constructor", "_client", "_tools", "_extensions", "_options", "_parser", "_pending", "_block", "undefined", "_history", "streaming", "value", "messages", "current", "pop", "content", "rest", "message", "push", "on", "update", "block", "request", "options", "history", "role", "type", "text", "_generate", "onComplete", "_reset", "cancel", "info", "_stream", "abort", "more", "length", "generate", "tools", "parse", "complete", "at", "response", "extensions", "err", "catch", "useEffect", "useMemo", "useState", "useServiceRegistry", "query", "registry", "useMemo", "MockServiceRegistry", "services", "setServices", "useState", "useEffect", "t", "setTimeout", "queryServices", "clearTimeout", "useEffect", "useState", "Mutex", "Context", "createSubscriptionTrigger", "FunctionTrigger", "invariant", "log", "useClient", "Filter", "useQuery", "sleep", "getObjectCore", "ResultFormat", "FunctionType", "invariant", "DXN", "LOCAL_SPACE_TAG", "log", "registerTriggersMutex", "Mutex", "defineTool", "ToolResult", "toEffectSchema", "getInvocationUrl", "getUserFunctionUrlInMetadata", "log", "getMeta", "covertFunctionToTool", "fn", "edgeUrl", "spaceId", "description", "inputSchema", "undefined", "existingFunctionUrl", "url", "name", "schema", "execute", "input", "info", "response", "fetch", "method", "headers", "body", "JSON", "stringify", "Success", "text", "jsonpointer", "ToolResult", "JsonSchemaType", "normalizeSchema", "S", "toEffectSchema", "invariant", "log", "deepMapValues", "createToolsFromService", "service", "interfaces", "length", "kind", "iface", "schemaUrl", "createToolsFromApi", "authorization", "url", "options", "res", "fetch", "spec", "json", "tools", "path", "pathItem", "Object", "entries", "paths", "methods", "method", "m", "methodItem", "parametersResolved", "parameters", "map", "parameter", "resolved", "resolveJsonSchema", "inputSchema", "type", "properties", "endpointParameters", "placement", "in", "name", "push", "schema", "_in", "required", "validateSync", "description", "summary", "warn", "endpoint", "document", "getToolName", "instructions", "execute", "input", "response", "callApiEndpoint", "Success", "operationId", "toLowerCase", "replaceAll", "MAX_TOOL_NAME_LENGTH", "lengthBefore", "word", "GENERIC_WORDS", "includes", "replace", "lengthAfter", "slice", "info", "getEndpointUrl", "request", "headers", "query", "URLSearchParams", "body", "undefined", "example", "default", "encodeURIComponent", "value", "effectSchema", "Error", "set", "Authorization", "resolveAuthorization", "key", "size", "toString", "JSON", "stringify", "ok", "status", "statusText", "contentType", "get", "text", "responseBody", "error", "parse", "message", "isV3_1", "servers", "schemes", "host", "basePath", "tokenUrl", "grantType", "clientId", "clientSecret", "data", "access_token", "base", "recurse", "$ref", "startsWith", "ref", "openapi", "React", "useCallback", "useMemo", "useRef", "useState", "IconButton", "Input", "useTranslation", "Spinner", "mx", "React", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useRef", "useState", "invariant", "mx", "ScrollContainer", "children", "classNames", "forwardedRef", "containerRef", "autoScrollRef", "scrollToBottom", "current", "scrollTo", "top", "scrollHeight", "behavior", "sticky", "setSticky", "handleScrollEnd", "addEventListener", "removeEventListener", "handleScroll", "ev", "scrollTop", "clientHeight", "currentTarget", "div", "ref", "onScroll", "className", "React", "invariant", "Button", "ButtonGroup", "Icon", "Json", "mx", "safeParseJson", "React", "useEffect", "useRef", "useState", "mx", "emptyLines", "StatusLine", "classNames", "line", "lines", "transition", "advance", "autoAdvance", "containerRef", "useRef", "currentLine", "setCurrentLine", "useState", "useEffect", "next", "prev", "length", "clearInterval", "interval", "setInterval", "current", "style", "transform", "React", "div", "className", "mx", "ref", "map", "i", "key", "span", "React", "useEffect", "useState", "Icon", "mx", "ToggleContainer", "title", "icon", "toggle", "defaultOpen", "duration", "shrinkX", "children", "classNames", "expand", "setExpand", "useState", "expandX", "setExpandX", "expandY", "setExpandY", "useEffect", "t", "setTimeout", "clearTimeout", "React", "div", "className", "mx", "onClick", "open", "undefined", "Icon", "size", "style", "transitionDuration", "React", "ReactMarkdown", "SyntaxHighlighter", "mx", "omit", "MarkdownViewer", "classNames", "content", "React", "div", "className", "mx", "ReactMarkdown", "components", "a", "node", "children", "href", "props", "target", "rel", "ol", "omit", "ul", "li", "blockquote", "code", "_", "language", "exec", "SyntaxHighlighter", "PreTag", "ThreadMessage", "classNames", "message", "collapse", "debug", "onSuggest", "onDelete", "React", "div", "className", "mx", "role", "content", "tools", "filter", "block", "type", "length", "request", "lines", "map", "tool", "name", "ToggleContainer", "title", "StatusLine", "autoAdvance", "toggle", "Json", "data", "id", "span", "onClick", "idx", "key", "Block", "Component", "componentMap", "default", "disposition", "titles", "text", "invariant", "undefined", "MarkdownViewer", "icon", "pending", "Icon", "size", "defaultOpen", "json", "safeParseJson", "Button", "options", "ButtonGroup", "option", "Thread", "messages", "streaming", "collapse", "debug", "onSubmit", "onStop", "onSuggest", "onDelete", "t", "useTranslation", "AUTOMATION_PLUGIN", "scroller", "useRef", "text", "setText", "useState", "handleKeyDown", "useCallback", "ev", "key", "value", "trim", "length", "current", "scrollToBottom", "lines", "useMemo", "reduce", "message", "i", "block", "content", "type", "push", "id", "join", "role", "undefined", "React", "div", "className", "ScrollContainer", "ref", "classNames", "map", "ThreadMessage", "Spinner", "active", "Input", "Root", "TextInput", "autoFocus", "placeholder", "onChange", "target", "onKeyDown", "IconButton", "disabled", "mx", "variant", "size", "onClick", "icon", "label", "iconOnly", "ChatContainer", "chat", "role", "config", "useConfig", "space", "getSpace", "aiClient", "useCapability", "AutomationCapabilities", "AiClient", "artifactDefinitions", "useCapabilities", "Capabilities", "ArtifactDefinition", "globalTools", "Tools", "functions", "useQuery", "Filter", "schema", "FunctionType", "serviceRegistry", "useMemo", "MockServiceRegistry", "serviceTools", "setServiceTools", "useState", "useEffect", "queueMicrotask", "services", "queryServices", "tools", "Promise", "all", "map", "service", "createToolsFromService", "flat", "flatMap", "definition", "fn", "covertFunctionToTool", "values", "runtime", "edge", "url", "id", "filter", "isNotNullOrUndefined", "systemPrompt", "createSystemPrompt", "artifacts", "instructions", "dispatchPromise", "dispatch", "useIntentDispatcher", "processor", "ChatProcessor", "model", "queueDxn", "DXN", "kind", "QUEUE", "QueueSubspaceTags", "DATA", "queue", "dxn", "parts", "at", "edgeClient", "useEdgeClient", "messageQueue", "useQueue", "messages", "items", "value", "handleSubmit", "useCallback", "message", "streaming", "cancel", "invariant", "request", "history", "onComplete", "append", "handleStop", "React", "StackItem", "Content", "toolbar", "Thread", "onSubmit", "onStop", "ChatContainer"]
|
|
7
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
AIChatType,
|
|
4
|
-
AutomationAction
|
|
5
|
-
} from "./chunk-EVTLHDM2.mjs";
|
|
6
|
-
import "./chunk-X3LPRWIL.mjs";
|
|
7
|
-
|
|
8
|
-
// packages/plugins/experimental/plugin-automation/src/capabilities/intent-resolver.ts
|
|
9
|
-
import { Capabilities, contributes, createResolver } from "@dxos/app-framework";
|
|
10
|
-
import { ObjectId } from "@dxos/echo-schema";
|
|
11
|
-
import { create, makeRef } from "@dxos/live-object";
|
|
12
|
-
var intent_resolver_default = () => contributes(Capabilities.IntentResolver, createResolver({
|
|
13
|
-
intent: AutomationAction.Create,
|
|
14
|
-
resolve: ({ name }) => ({
|
|
15
|
-
data: {
|
|
16
|
-
object: create(AIChatType, {
|
|
17
|
-
name,
|
|
18
|
-
// TODO(burdon): ???
|
|
19
|
-
// new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, SpaceId.random(), ObjectId.random()]).toString(),
|
|
20
|
-
queue: makeRef({
|
|
21
|
-
id: ObjectId.random()
|
|
22
|
-
})
|
|
23
|
-
})
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
}));
|
|
27
|
-
export {
|
|
28
|
-
intent_resolver_default as default
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=intent-resolver-RQBXW442.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/intent-resolver.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createResolver } from '@dxos/app-framework';\nimport { ObjectId } from '@dxos/echo-schema';\nimport { create, makeRef } from '@dxos/live-object';\n\nimport { AutomationAction, AIChatType } from '../types';\n\nexport default () =>\n contributes(\n Capabilities.IntentResolver,\n createResolver({\n intent: AutomationAction.Create,\n resolve: ({ name }) => ({\n data: {\n object: create(AIChatType, {\n name,\n // TODO(burdon): ???\n // new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, SpaceId.random(), ObjectId.random()]).toString(),\n queue: makeRef({ id: ObjectId.random() }),\n }),\n },\n }),\n }),\n );\n"],
|
|
5
|
-
"mappings": ";;;;;;;;AAIA,SAASA,cAAcC,aAAaC,sBAAsB;AAC1D,SAASC,gBAAgB;AACzB,SAASC,QAAQC,eAAe;AAIhC,IAAA,0BAAe,MACbC,YACEC,aAAaC,gBACbC,eAAe;EACbC,QAAQC,iBAAiBC;EACzBC,SAAS,CAAC,EAAEC,KAAI,OAAQ;IACtBC,MAAM;MACJC,QAAQC,OAAOC,YAAY;QACzBJ;;;QAGAK,OAAOC,QAAQ;UAAEC,IAAIC,SAASC,OAAM;QAAG,CAAA;MACzC,CAAA;IACF;EACF;AACF,CAAA,CAAA;",
|
|
6
|
-
"names": ["Capabilities", "contributes", "createResolver", "ObjectId", "create", "makeRef", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "AutomationAction", "Create", "resolve", "name", "data", "object", "create", "AIChatType", "queue", "makeRef", "id", "ObjectId", "random"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-surface.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface } from '@dxos/app-framework';\nimport { getSpace, isEchoObject, type ReactiveEchoObject } from '@dxos/react-client/echo';\n\nimport { AutomationPanel, ChatContainer, ServiceRegistry } from '../components';\nimport { AUTOMATION_PLUGIN } from '../meta';\nimport { AIChatType } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${AUTOMATION_PLUGIN}/ai-chat`,\n role: 'article',\n filter: (data): data is { subject: AIChatType } => data.subject instanceof AIChatType,\n component: ({ data, role }) => <ChatContainer role={role} chat={data.subject} />,\n }),\n createSurface({\n id: `${AUTOMATION_PLUGIN}/service-registry`,\n role: 'complementary--service-registry',\n component: ({ data }) => <ServiceRegistry space={getSpace(data.subject)!} />,\n }),\n createSurface({\n id: `${AUTOMATION_PLUGIN}/automation`,\n role: 'complementary--automation',\n filter: (data): data is { subject: ReactiveEchoObject<any> } =>\n isEchoObject(data.subject) && !!getSpace(data.subject),\n component: ({ data }) => <AutomationPanel space={getSpace(data.subject)!} object={data.subject} />,\n }),\n ]);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,qBAAqB;AACzD,SAASC,UAAUC,oBAA6C;AAMhE,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,iBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA0CA,KAAKC,mBAAmBC;IAC3EC,WAAW,CAAC,EAAEH,MAAMF,KAAI,MAAO,sBAAA,cAACM,eAAAA;MAAcN;MAAYO,MAAML,KAAKC;;EACvE,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,iBAAAA;IACPC,MAAM;IACNK,WAAW,CAAC,EAAEH,KAAI,MAAO,sBAAA,cAACM,iBAAAA;MAAgBC,OAAOC,SAASR,KAAKC,OAAO;;EACxE,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,iBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPS,aAAaT,KAAKC,OAAO,KAAK,CAAC,CAACO,SAASR,KAAKC,OAAO;IACvDE,WAAW,CAAC,EAAEH,KAAI,MAAO,sBAAA,cAACU,iBAAAA;MAAgBH,OAAOC,SAASR,KAAKC,OAAO;MAAIU,QAAQX,KAAKC;;EACzF,CAAA;CACD;",
|
|
6
|
-
"names": ["React", "Capabilities", "contributes", "createSurface", "getSpace", "isEchoObject", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "AUTOMATION_PLUGIN", "role", "filter", "data", "subject", "AIChatType", "component", "ChatContainer", "chat", "ServiceRegistry", "space", "getSpace", "isEchoObject", "AutomationPanel", "object"]
|
|
7
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
AIChatType,
|
|
4
|
-
ApiAuthorization,
|
|
5
|
-
AutomationAction,
|
|
6
|
-
ChainInputSchema,
|
|
7
|
-
ChainInputType,
|
|
8
|
-
ChainPromptType,
|
|
9
|
-
ChainType,
|
|
10
|
-
MockServiceRegistry,
|
|
11
|
-
ServiceType
|
|
12
|
-
} from "../chunk-EVTLHDM2.mjs";
|
|
13
|
-
import "../chunk-X3LPRWIL.mjs";
|
|
14
|
-
export {
|
|
15
|
-
AIChatType,
|
|
16
|
-
ApiAuthorization,
|
|
17
|
-
AutomationAction,
|
|
18
|
-
ChainInputSchema,
|
|
19
|
-
ChainInputType,
|
|
20
|
-
ChainPromptType,
|
|
21
|
-
ChainType,
|
|
22
|
-
MockServiceRegistry,
|
|
23
|
-
ServiceType
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import '@dxos-theme';
|
|
2
|
-
import { type StoryObj, type Meta } from '@storybook/react';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import { type IsObject } from '@dxos/artifact-testing';
|
|
5
|
-
import { type ThreadProps } from './components';
|
|
6
|
-
type RenderProps = {
|
|
7
|
-
items?: IsObject[];
|
|
8
|
-
prompts?: string[];
|
|
9
|
-
} & Pick<ThreadProps, 'debug'>;
|
|
10
|
-
declare const Render: ({ items: _items, prompts, ...props }: RenderProps) => React.JSX.Element;
|
|
11
|
-
declare const meta: Meta<typeof Render>;
|
|
12
|
-
export default meta;
|
|
13
|
-
type Story = StoryObj<typeof Render>;
|
|
14
|
-
export declare const Default: Story;
|
|
15
|
-
export declare const WithInitialItems: Story;
|
|
16
|
-
//# sourceMappingURL=artifacts.stories.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.stories.d.ts","sourceRoot":"","sources":["../../../src/artifacts.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAoD,MAAM,OAAO,CAAC;AAKzE,OAAO,EAAqD,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAkB1G,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAOxD,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAG/B,QAAA,MAAM,MAAM,yCAA+C,WAAW,sBAgJrE,CAAC;AAKF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CA0B7B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,CAAC;AAErC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAS9B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ai-client.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/ai-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;kCAQ7B,cAAc;AAAvC,wBAKE"}
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import { type PluginsContext } from '@dxos/app-framework';
|
|
2
|
-
declare const _default: (context: PluginsContext) => import("@dxos/app-framework").Capability<Readonly<{
|
|
3
|
-
id: string;
|
|
4
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
5
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
6
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
7
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
8
|
-
type?: string;
|
|
9
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
10
|
-
}> | Readonly<{
|
|
11
|
-
id: string;
|
|
12
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
13
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
14
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
15
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
16
|
-
type?: string;
|
|
17
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
18
|
-
}>[] | (Readonly<{
|
|
19
|
-
id: string;
|
|
20
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
21
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
22
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
23
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
24
|
-
type?: string;
|
|
25
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
26
|
-
}> | Readonly<{
|
|
27
|
-
id: string;
|
|
28
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
29
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
30
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
31
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
32
|
-
type?: string;
|
|
33
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
34
|
-
}>[] | (Readonly<{
|
|
35
|
-
id: string;
|
|
36
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
37
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
38
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
39
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
40
|
-
type?: string;
|
|
41
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
42
|
-
}> | Readonly<{
|
|
43
|
-
id: string;
|
|
44
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
45
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
46
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
47
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
48
|
-
type?: string;
|
|
49
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
50
|
-
}>[] | (Readonly<{
|
|
51
|
-
id: string;
|
|
52
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
53
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
54
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
55
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
56
|
-
type?: string;
|
|
57
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
58
|
-
}> | Readonly<{
|
|
59
|
-
id: string;
|
|
60
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
61
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
62
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
63
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
64
|
-
type?: string;
|
|
65
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
66
|
-
}>[] | (Readonly<{
|
|
67
|
-
id: string;
|
|
68
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
69
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
70
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
71
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
72
|
-
type?: string;
|
|
73
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
74
|
-
}> | Readonly<{
|
|
75
|
-
id: string;
|
|
76
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
77
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
78
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
79
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
80
|
-
type?: string;
|
|
81
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
82
|
-
}>[] | (Readonly<{
|
|
83
|
-
id: string;
|
|
84
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
85
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
86
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
87
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
88
|
-
type?: string;
|
|
89
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
90
|
-
}> | Readonly<{
|
|
91
|
-
id: string;
|
|
92
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
93
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
94
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
95
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
96
|
-
type?: string;
|
|
97
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
98
|
-
}>[] | (Readonly<{
|
|
99
|
-
id: string;
|
|
100
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
101
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
102
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
103
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
104
|
-
type?: string;
|
|
105
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
106
|
-
}> | Readonly<{
|
|
107
|
-
id: string;
|
|
108
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
109
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
110
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
111
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
112
|
-
type?: string;
|
|
113
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
114
|
-
}>[] | (Readonly<{
|
|
115
|
-
id: string;
|
|
116
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
117
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
118
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
119
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
120
|
-
type?: string;
|
|
121
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
122
|
-
}> | Readonly<{
|
|
123
|
-
id: string;
|
|
124
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
125
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
126
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
127
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
128
|
-
type?: string;
|
|
129
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
130
|
-
}>[] | (Readonly<{
|
|
131
|
-
id: string;
|
|
132
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
133
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
134
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
135
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
136
|
-
type?: string;
|
|
137
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
138
|
-
}> | Readonly<{
|
|
139
|
-
id: string;
|
|
140
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
141
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
142
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
143
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
144
|
-
type?: string;
|
|
145
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
146
|
-
}>[] | (Readonly<{
|
|
147
|
-
id: string;
|
|
148
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
149
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
150
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
151
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
152
|
-
type?: string;
|
|
153
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
154
|
-
}> | Readonly<{
|
|
155
|
-
id: string;
|
|
156
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
157
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
158
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
159
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
160
|
-
type?: string;
|
|
161
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
162
|
-
}>[] | (any[] | Readonly<{
|
|
163
|
-
id: string;
|
|
164
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
165
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
166
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
167
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
168
|
-
type?: string;
|
|
169
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
170
|
-
}> | Readonly<{
|
|
171
|
-
id: string;
|
|
172
|
-
position: import("packages/common/util/dist/types/src").Position;
|
|
173
|
-
resolver?: import("@dxos/plugin-graph").ResolverExtension;
|
|
174
|
-
connector?: import("@dxos/plugin-graph").ConnectorExtension;
|
|
175
|
-
relation?: import("@dxos/plugin-graph").Relation;
|
|
176
|
-
type?: string;
|
|
177
|
-
filter?: (node: import("@dxos/plugin-graph").Node) => boolean;
|
|
178
|
-
}>[])[])[])[])[])[])[])[])[])[])[]>;
|
|
179
|
-
export default _default;
|
|
180
|
-
//# sourceMappingURL=app-graph-builder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;kCAQ5D,cAAc;;qBAiFL,qCACpB;sBACJ,oBAAa;uBACwB,oBAAgB;sBAGrD,oBACN;;2BAGQ,oBACL;;;qBAMK,qCACe;sBAClB,oBAAiB;uBAEhB,oBACT;sBAEqC,oBAAiB;;2BAE/C,oBAAU;;;qBAEH,qCAAqC;sBACzC,oBAAiB;uBAEA,oBAAiB;sBAAgD,oBAAiB;;2BAE5E,oBAAiB;;;qBACY,qCACpD;sBAEG,oBAAiB;uBAEnB,oBAAS;sBAEP,oBAAK;;2BACL,oBAAa;;;qBAMA,qCAC3B;sBAEU,oBAAc;uBAEd,oBAAQ;sBAEN,oBAAQ;;2BACP,oBACH;;;qBAMmC,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAwF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;;qBAAqF,qCAAqC;sBAAsC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,oBAAiB;;AAhJt9M,wBA+IE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/capabilities.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,yBAAiB,sBAAsB,CAAC;IAC/B,MAAM,QAAQ,iEAAqF,CAAC;CAC5G"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intent-resolver.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/intent-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAA+B,MAAM,qBAAqB,CAAC;;AAMhF,wBAgBI"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { type AIChatType } from '../../types';
|
|
3
|
-
export declare const ChatContainer: ({ chat, role }: {
|
|
4
|
-
chat: AIChatType;
|
|
5
|
-
role: string;
|
|
6
|
-
}) => React.JSX.Element;
|
|
7
|
-
export default ChatContainer;
|
|
8
|
-
//# sourceMappingURL=ChatContainer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatContainer.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChatContainer/ChatContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAgBzE,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAGnE,eAAO,MAAM,aAAa,mBAAoB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,sBA2F/E,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChatContainer/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,cAAc,iBAAiB,CAAC;AAChC,eAAe,aAAa,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type FC } from 'react';
|
|
2
|
-
import { type ThemedClassName } from '@dxos/react-ui';
|
|
3
|
-
type MarkdownViewerProps = ThemedClassName<{
|
|
4
|
-
content?: string;
|
|
5
|
-
}>;
|
|
6
|
-
/**
|
|
7
|
-
* Transform text into react elements.
|
|
8
|
-
*
|
|
9
|
-
* https://github.com/remarkjs/react-markdown
|
|
10
|
-
* markdown -> remark -> [mdast -> remark plugins] -> [hast -> rehype plugins] -> components -> react elements.
|
|
11
|
-
*/
|
|
12
|
-
export declare const MarkdownViewer: FC<MarkdownViewerProps>;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=MarkdownViewer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownViewer.d.ts","sourceRoot":"","sources":["../../../../../src/components/MarkdownViewer/MarkdownViewer.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD,KAAK,mBAAmB,GAAG,eAAe,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH;;;;;GAKG;AAGH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAkDlD,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import '@dxos-theme';
|
|
2
|
-
import { type StoryObj, type Meta } from '@storybook/react';
|
|
3
|
-
import { MarkdownViewer } from './MarkdownViewer';
|
|
4
|
-
declare const meta: Meta<typeof MarkdownViewer>;
|
|
5
|
-
export default meta;
|
|
6
|
-
type Story = StoryObj<typeof MarkdownViewer>;
|
|
7
|
-
export declare const Default: Story;
|
|
8
|
-
//# sourceMappingURL=MarkdownViewer.stories.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownViewer.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/MarkdownViewer/MarkdownViewer.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAK5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAIrC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AA2B7C,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC"}
|