@dxos/plugin-assistant 0.8.1 → 0.8.2-main.f081794
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/{AssistantDialog-YSHMAHW5.mjs → AssistantDialog-77B4BSXR.mjs} +2 -2
- package/dist/lib/browser/{ChatContainer-V5GP7DYF.mjs → ChatContainer-4AMJKO3T.mjs} +2 -2
- package/dist/lib/browser/ChatContainer-4AMJKO3T.mjs.map +7 -0
- package/dist/lib/browser/TemplateContainer-WKU5XFSO.mjs +22 -0
- package/dist/lib/browser/TemplateContainer-WKU5XFSO.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-MF5EVDWW.mjs → app-graph-builder-GU6ZWSP4.mjs} +7 -7
- package/dist/lib/browser/app-graph-builder-GU6ZWSP4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FMB7RGMP.mjs → chunk-FQ4L5NYW.mjs} +43 -18
- package/dist/lib/browser/{chunk-FMB7RGMP.mjs.map → chunk-FQ4L5NYW.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-KYMKVE6M.mjs → chunk-SBFJKCVU.mjs} +78 -18
- package/dist/lib/browser/chunk-SBFJKCVU.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +8 -5
- package/dist/lib/browser/index.mjs.map +2 -2
- package/dist/lib/browser/{intent-resolver-WJGLKKVO.mjs → intent-resolver-YAQELTFQ.mjs} +4 -4
- package/dist/lib/browser/intent-resolver-YAQELTFQ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-57VRDOQT.mjs → react-surface-JOATHBJ4.mjs} +17 -8
- package/dist/lib/browser/react-surface-JOATHBJ4.mjs.map +7 -0
- package/dist/lib/browser/{settings-U6UFQX32.mjs → settings-PAJLJEVW.mjs} +3 -3
- package/dist/lib/browser/settings-PAJLJEVW.mjs.map +7 -0
- package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs → AssistantDialog-7V7RRSIL.cjs} +6 -6
- package/dist/lib/node/{ChatContainer-ZJ5JXF6A.cjs → ChatContainer-UWYNOALW.cjs} +6 -6
- package/dist/lib/node/ChatContainer-UWYNOALW.cjs.map +7 -0
- package/dist/lib/node/TemplateContainer-EQXKHWTF.cjs +52 -0
- package/dist/lib/node/TemplateContainer-EQXKHWTF.cjs.map +7 -0
- package/dist/lib/node/{app-graph-builder-N5ZUUI2Z.cjs → app-graph-builder-CEMLCKAF.cjs} +8 -8
- package/dist/lib/node/app-graph-builder-CEMLCKAF.cjs.map +7 -0
- package/dist/lib/node/{chunk-RPBKMP2E.cjs → chunk-ENBPNIJZ.cjs} +57 -32
- package/dist/lib/node/chunk-ENBPNIJZ.cjs.map +7 -0
- package/dist/lib/node/{chunk-ZKOC4ZFY.cjs → chunk-KWBQ5P7D.cjs} +81 -23
- package/dist/lib/node/chunk-KWBQ5P7D.cjs.map +7 -0
- package/dist/lib/node/index.cjs +22 -19
- package/dist/lib/node/index.cjs.map +2 -2
- package/dist/lib/node/{intent-resolver-R3OSTIMH.cjs → intent-resolver-RNMYSJ3E.cjs} +6 -6
- package/dist/lib/node/intent-resolver-RNMYSJ3E.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-NUQTM6MS.cjs → react-surface-7RIXMLMN.cjs} +23 -15
- package/dist/lib/node/react-surface-7RIXMLMN.cjs.map +7 -0
- package/dist/lib/node/{settings-TXGRCYAL.cjs → settings-JBEYMZ4S.cjs} +5 -5
- package/dist/lib/node/settings-JBEYMZ4S.cjs.map +7 -0
- package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs → AssistantDialog-N24M73FW.mjs} +2 -2
- package/dist/lib/node-esm/{ChatContainer-QW3OOXTT.mjs → ChatContainer-KPWY5UK4.mjs} +2 -2
- package/dist/lib/node-esm/ChatContainer-KPWY5UK4.mjs.map +7 -0
- package/dist/lib/node-esm/TemplateContainer-3LEBT5ZC.mjs +23 -0
- package/dist/lib/node-esm/TemplateContainer-3LEBT5ZC.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-DWBNIMHM.mjs → app-graph-builder-Y45WYAWL.mjs} +7 -7
- package/dist/lib/node-esm/app-graph-builder-Y45WYAWL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs → chunk-JE47GNTB.mjs} +43 -18
- package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs.map → chunk-JE47GNTB.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-GBBXIW5F.mjs → chunk-PFWTW22U.mjs} +78 -18
- package/dist/lib/node-esm/chunk-PFWTW22U.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +8 -5
- package/dist/lib/node-esm/index.mjs.map +2 -2
- package/dist/lib/node-esm/{intent-resolver-H32TL4X6.mjs → intent-resolver-V2ZFI5C4.mjs} +4 -4
- package/dist/lib/node-esm/intent-resolver-V2ZFI5C4.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-JBVZF6CP.mjs → react-surface-UUHNOYST.mjs} +17 -8
- package/dist/lib/node-esm/react-surface-UUHNOYST.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-DZU5PNXM.mjs → settings-KAMA6RIY.mjs} +3 -3
- package/dist/lib/node-esm/settings-KAMA6RIY.mjs.map +7 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +4 -3
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/PromptSettings.d.ts +6 -0
- package/dist/types/src/components/PromptSettings.d.ts.map +1 -0
- package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
- package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
- package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -5
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/processor.d.ts.map +1 -1
- package/dist/types/src/hooks/useMessageQueue.d.ts +0 -3
- package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +3 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/package.json +57 -57
- package/src/capabilities/app-graph-builder.ts +5 -13
- package/src/capabilities/intent-resolver.ts +3 -3
- package/src/capabilities/react-surface.tsx +20 -5
- package/src/capabilities/settings.ts +2 -2
- package/src/components/ChatContainer.tsx +6 -8
- package/src/components/PromptSettings.tsx +91 -0
- package/src/components/TemplateContainer.tsx +3 -79
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +2 -2
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
- package/src/components/Thread/ThreadContainer.stories.tsx +9 -18
- package/src/components/Thread/ThreadContainer.tsx +24 -2
- package/src/components/Toolbox/Toolbox.stories.tsx +1 -1
- package/src/components/index.ts +1 -0
- package/src/hooks/processor.ts +1 -2
- package/src/hooks/useChatProcessor.tsx +1 -1
- package/src/testing/test-services.ts +6 -6
- package/src/translations.ts +4 -3
- package/dist/lib/browser/ChatContainer-V5GP7DYF.mjs.map +0 -7
- package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs +0 -78
- package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs.map +0 -7
- package/dist/lib/browser/chunk-KYMKVE6M.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-WJGLKKVO.mjs.map +0 -7
- package/dist/lib/browser/react-surface-57VRDOQT.mjs.map +0 -7
- package/dist/lib/browser/settings-U6UFQX32.mjs.map +0 -7
- package/dist/lib/node/ChatContainer-ZJ5JXF6A.cjs.map +0 -7
- package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs +0 -104
- package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs.map +0 -7
- package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs.map +0 -7
- package/dist/lib/node/chunk-RPBKMP2E.cjs.map +0 -7
- package/dist/lib/node/chunk-ZKOC4ZFY.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-R3OSTIMH.cjs.map +0 -7
- package/dist/lib/node/react-surface-NUQTM6MS.cjs.map +0 -7
- package/dist/lib/node/settings-TXGRCYAL.cjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-QW3OOXTT.mjs.map +0 -7
- package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs +0 -79
- package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GBBXIW5F.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-H32TL4X6.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-JBVZF6CP.mjs.map +0 -7
- package/dist/lib/node-esm/settings-DZU5PNXM.mjs.map +0 -7
- /package/dist/lib/browser/{AssistantDialog-YSHMAHW5.mjs.map → AssistantDialog-77B4BSXR.mjs.map} +0 -0
- /package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs.map → AssistantDialog-7V7RRSIL.cjs.map} +0 -0
- /package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs.map → AssistantDialog-N24M73FW.mjs.map} +0 -0
|
@@ -8,7 +8,7 @@ import { type Meta } from '@storybook/react';
|
|
|
8
8
|
import React, { useState } from 'react';
|
|
9
9
|
|
|
10
10
|
import { createSystemPrompt } from '@dxos/artifact';
|
|
11
|
-
import {
|
|
11
|
+
import { live } from '@dxos/live-object';
|
|
12
12
|
import { useClient } from '@dxos/react-client';
|
|
13
13
|
import { withClientProvider } from '@dxos/react-client/testing';
|
|
14
14
|
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
@@ -38,7 +38,7 @@ const DefaultStory = ({ text }: TemplateEditorProps & { text: string }) => {
|
|
|
38
38
|
const client = useClient();
|
|
39
39
|
const [template] = useState(() => {
|
|
40
40
|
const space = client.spaces.default;
|
|
41
|
-
return space.db.add(
|
|
41
|
+
return space.db.add(live(TemplateType, { source: text, kind: { include: 'manual' } }));
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
return (
|
|
@@ -7,7 +7,7 @@ import '@dxos-theme';
|
|
|
7
7
|
import { type Meta } from '@storybook/react';
|
|
8
8
|
import React, { useState } from 'react';
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { live } from '@dxos/live-object';
|
|
11
11
|
import { useClient } from '@dxos/react-client';
|
|
12
12
|
import { withClientProvider } from '@dxos/react-client/testing';
|
|
13
13
|
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
@@ -30,7 +30,7 @@ const DefaultStory = () => {
|
|
|
30
30
|
const client = useClient();
|
|
31
31
|
const [template] = useState(() => {
|
|
32
32
|
const space = client.spaces.default;
|
|
33
|
-
return space.db.add(
|
|
33
|
+
return space.db.add(live(TemplateType, { source: TEMPLATE, kind: { include: 'manual' } }));
|
|
34
34
|
});
|
|
35
35
|
|
|
36
36
|
return (
|
|
@@ -20,9 +20,9 @@ import { withPluginManager } from '@dxos/app-framework/testing';
|
|
|
20
20
|
import { Message, type Tool } from '@dxos/artifact';
|
|
21
21
|
import { genericTools, localServiceEndpoints, type IsObject } from '@dxos/artifact-testing';
|
|
22
22
|
import { AIServiceEdgeClient } from '@dxos/assistant';
|
|
23
|
-
import {
|
|
23
|
+
import { create, ObjectId } from '@dxos/echo-schema';
|
|
24
24
|
import { invariant } from '@dxos/invariant';
|
|
25
|
-
import { DXN
|
|
25
|
+
import { DXN } from '@dxos/keys';
|
|
26
26
|
import { ChessPlugin } from '@dxos/plugin-chess';
|
|
27
27
|
import { ChessType } from '@dxos/plugin-chess/types';
|
|
28
28
|
import { ClientPlugin } from '@dxos/plugin-client';
|
|
@@ -30,11 +30,10 @@ import { InboxPlugin } from '@dxos/plugin-inbox';
|
|
|
30
30
|
import { MapPlugin } from '@dxos/plugin-map';
|
|
31
31
|
import { SpacePlugin } from '@dxos/plugin-space';
|
|
32
32
|
import { TablePlugin } from '@dxos/plugin-table';
|
|
33
|
-
import { useQueue, useSpace } from '@dxos/react-client/echo';
|
|
34
|
-
import { withClientProvider } from '@dxos/react-client/testing';
|
|
33
|
+
import { randomQueueDxn, useQueue, useSpace } from '@dxos/react-client/echo';
|
|
35
34
|
import { IconButton, Input, Toolbar } from '@dxos/react-ui';
|
|
36
35
|
import { mx } from '@dxos/react-ui-theme';
|
|
37
|
-
import { withLayout,
|
|
36
|
+
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
38
37
|
|
|
39
38
|
import { Thread, type ThreadProps } from './Thread';
|
|
40
39
|
import { ChatProcessor } from '../../hooks';
|
|
@@ -77,13 +76,13 @@ const DefaultStory = ({ items: _items, prompts = [], ...props }: RenderProps) =>
|
|
|
77
76
|
}, [aiClient, tools, space, dispatch, artifactDefinitions]);
|
|
78
77
|
|
|
79
78
|
// Queue.
|
|
80
|
-
const [queueDxn, setQueueDxn] = useState<string>(() => randomQueueDxn());
|
|
79
|
+
const [queueDxn, setQueueDxn] = useState<string>(() => randomQueueDxn().toString());
|
|
81
80
|
const queue = useQueue<Message>(DXN.tryParse(queueDxn));
|
|
82
81
|
|
|
83
82
|
useEffect(() => {
|
|
84
83
|
if (queue?.items.length === 0 && !queue.isLoading && prompts.length > 0) {
|
|
85
84
|
queue.append([
|
|
86
|
-
|
|
85
|
+
create(Message, {
|
|
87
86
|
role: 'assistant',
|
|
88
87
|
content: prompts.map(
|
|
89
88
|
(prompt) =>
|
|
@@ -160,7 +159,7 @@ const DefaultStory = ({ items: _items, prompts = [], ...props }: RenderProps) =>
|
|
|
160
159
|
iconOnly
|
|
161
160
|
label='Clear history'
|
|
162
161
|
icon='ph--trash--regular'
|
|
163
|
-
onClick={() => setQueueDxn(randomQueueDxn())}
|
|
162
|
+
onClick={() => setQueueDxn(randomQueueDxn().toString())}
|
|
164
163
|
/>
|
|
165
164
|
<IconButton iconOnly label='Stop' icon='ph--stop--regular' onClick={() => processor?.cancel()} />
|
|
166
165
|
</Input.Root>
|
|
@@ -201,18 +200,10 @@ const DefaultStory = ({ items: _items, prompts = [], ...props }: RenderProps) =>
|
|
|
201
200
|
);
|
|
202
201
|
};
|
|
203
202
|
|
|
204
|
-
const randomQueueDxn = () =>
|
|
205
|
-
new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, SpaceId.random(), ObjectId.random()]).toString();
|
|
206
|
-
|
|
207
203
|
const meta: Meta<typeof DefaultStory> = {
|
|
208
204
|
title: 'plugins/plugin-automation/ThreadContainer',
|
|
209
205
|
render: DefaultStory,
|
|
210
206
|
decorators: [
|
|
211
|
-
withSignals,
|
|
212
|
-
withClientProvider({
|
|
213
|
-
createIdentity: true,
|
|
214
|
-
createSpace: true,
|
|
215
|
-
}),
|
|
216
207
|
withPluginManager({
|
|
217
208
|
plugins: [
|
|
218
209
|
ClientPlugin({
|
|
@@ -220,7 +211,7 @@ const meta: Meta<typeof DefaultStory> = {
|
|
|
220
211
|
await client.halo.createIdentity();
|
|
221
212
|
},
|
|
222
213
|
}),
|
|
223
|
-
SpacePlugin(
|
|
214
|
+
SpacePlugin(),
|
|
224
215
|
SettingsPlugin(),
|
|
225
216
|
IntentPlugin(),
|
|
226
217
|
|
|
@@ -255,7 +246,7 @@ export const WithInitialItems: Story = {
|
|
|
255
246
|
args: {
|
|
256
247
|
debug: true,
|
|
257
248
|
items: [
|
|
258
|
-
|
|
249
|
+
create(ChessType, {
|
|
259
250
|
fen: 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1',
|
|
260
251
|
}),
|
|
261
252
|
],
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import React, { useCallback, type FC } from 'react';
|
|
5
|
+
import React, { useCallback, type FC, useEffect } from 'react';
|
|
6
6
|
|
|
7
|
+
import { CollaborationActions, createIntent, useIntentDispatcher } from '@dxos/app-framework';
|
|
7
8
|
import { type AssociatedArtifact } from '@dxos/artifact';
|
|
8
9
|
import { invariant } from '@dxos/invariant';
|
|
10
|
+
import { DXN } from '@dxos/keys';
|
|
11
|
+
import { makeRef, refFromDXN } from '@dxos/live-object';
|
|
9
12
|
import { log } from '@dxos/log';
|
|
10
13
|
import { getSpace } from '@dxos/react-client/echo';
|
|
11
14
|
import { type ThemedClassName } from '@dxos/react-ui';
|
|
@@ -35,8 +38,27 @@ export const ThreadContainer: FC<ThemedClassName<ThreadContainerProps>> = ({
|
|
|
35
38
|
const contextProvider = useContextProvider(space);
|
|
36
39
|
const processor = useChatProcessor({ chat, space, settings, part, associatedArtifact });
|
|
37
40
|
const messageQueue = useMessageQueue(chat);
|
|
41
|
+
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
42
|
+
// TODO(thure): This will be referentially new on every render, is it causing overreactivity?
|
|
38
43
|
const messages = [...(messageQueue?.items ?? []), ...processor.messages.value];
|
|
39
44
|
|
|
45
|
+
// Post last message to document.
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (!processor.streaming.value && messageQueue?.items) {
|
|
48
|
+
const message = messageQueue.items[messageQueue.items.length - 1];
|
|
49
|
+
if (space && chat && message && dispatch && associatedArtifact) {
|
|
50
|
+
void dispatch(
|
|
51
|
+
createIntent(CollaborationActions.InsertContent, {
|
|
52
|
+
spaceId: space.id,
|
|
53
|
+
target: makeRef(associatedArtifact),
|
|
54
|
+
object: refFromDXN(new DXN(DXN.kind.QUEUE, [...chat.assistantChatQueue.dxn.parts, message.id])),
|
|
55
|
+
label: 'View proposal',
|
|
56
|
+
}),
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}, [messageQueue, associatedArtifact, processor.streaming.value]);
|
|
61
|
+
|
|
40
62
|
const handleSubmit = useCallback(
|
|
41
63
|
(text: string) => {
|
|
42
64
|
// Don't accept input if still processing.
|
|
@@ -74,11 +96,11 @@ export const ThreadContainer: FC<ThemedClassName<ThreadContainerProps>> = ({
|
|
|
74
96
|
processing={processor.streaming.value}
|
|
75
97
|
error={processor.error.value}
|
|
76
98
|
tools={processor.tools}
|
|
99
|
+
contextProvider={contextProvider}
|
|
77
100
|
onSubmit={handleSubmit}
|
|
78
101
|
onCancel={handleCancel}
|
|
79
102
|
onPrompt={handleSubmit}
|
|
80
103
|
onOpenChange={onOpenChange}
|
|
81
|
-
contextProvider={contextProvider}
|
|
82
104
|
{...props}
|
|
83
105
|
/>
|
|
84
106
|
);
|
package/src/components/index.ts
CHANGED
package/src/hooks/processor.ts
CHANGED
|
@@ -90,7 +90,7 @@ export const useChatProcessor = ({
|
|
|
90
90
|
const processor = useMemo(() => {
|
|
91
91
|
log('creating processor...', { settings });
|
|
92
92
|
return new ChatProcessor(aiClient.value, tools, artifactDefinitions, extensions, { model, systemPrompt });
|
|
93
|
-
}, [aiClient.value, tools, extensions, model, systemPrompt]);
|
|
93
|
+
}, [aiClient.value, tools, artifactDefinitions, extensions, model, systemPrompt]);
|
|
94
94
|
|
|
95
95
|
return processor;
|
|
96
96
|
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { create } from '@dxos/echo-schema';
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
type ApiAuthorization,
|
|
@@ -54,7 +54,7 @@ const VISUAL_CROSSING_CREDENTIALS: ApiAuthorization = {
|
|
|
54
54
|
// - e.g., https://github.com/konfig-sdks/openapi-examples/blob/main/xkcd/openapi.yaml
|
|
55
55
|
|
|
56
56
|
const TEST_SERVICES: ServiceType[] = [
|
|
57
|
-
|
|
57
|
+
create(ServiceType, {
|
|
58
58
|
serviceId: 'amadeus.com/service/FlightSearch',
|
|
59
59
|
name: 'Amadeus Flight Search',
|
|
60
60
|
description: 'Search for local and international flights.',
|
|
@@ -68,7 +68,7 @@ const TEST_SERVICES: ServiceType[] = [
|
|
|
68
68
|
],
|
|
69
69
|
}),
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
create(ServiceType, {
|
|
72
72
|
serviceId: 'amadeus.com/service/HotelSearch',
|
|
73
73
|
name: 'Amadeus Hotel Search',
|
|
74
74
|
description: 'Search for local and international hotels.',
|
|
@@ -82,7 +82,7 @@ const TEST_SERVICES: ServiceType[] = [
|
|
|
82
82
|
],
|
|
83
83
|
}),
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
create(ServiceType, {
|
|
86
86
|
serviceId: 'visualcrossing.com/service/Weather',
|
|
87
87
|
name: 'Visual Crossing Weather',
|
|
88
88
|
description: 'Search for global weather forecasts.',
|
|
@@ -97,7 +97,7 @@ const TEST_SERVICES: ServiceType[] = [
|
|
|
97
97
|
}),
|
|
98
98
|
|
|
99
99
|
// TODO(burdon): Needs auth.
|
|
100
|
-
|
|
100
|
+
create(ServiceType, {
|
|
101
101
|
serviceId: 'abstractapi.com/service/GeoLocation',
|
|
102
102
|
name: 'Abstract GeoLocation',
|
|
103
103
|
description: 'Get the location of any IP address.',
|
|
@@ -115,7 +115,7 @@ const TEST_SERVICES: ServiceType[] = [
|
|
|
115
115
|
//
|
|
116
116
|
|
|
117
117
|
...Array.from({ length: 20 }, (_, i) =>
|
|
118
|
-
|
|
118
|
+
create(ServiceType, {
|
|
119
119
|
serviceId: `example.com/service/test-${i}`,
|
|
120
120
|
name: `Test ${i}`,
|
|
121
121
|
description: `Test ${i}`,
|
package/src/translations.ts
CHANGED
|
@@ -9,7 +9,7 @@ export default [
|
|
|
9
9
|
{
|
|
10
10
|
'en-US': {
|
|
11
11
|
[AIChatType.typename]: {
|
|
12
|
-
'typename label': '
|
|
12
|
+
'typename label': 'Assistant',
|
|
13
13
|
'object name placeholder': 'AI Chat',
|
|
14
14
|
},
|
|
15
15
|
[TemplateType.typename]: {
|
|
@@ -19,8 +19,8 @@ export default [
|
|
|
19
19
|
[ASSISTANT_PLUGIN]: {
|
|
20
20
|
'templates label': 'Templates',
|
|
21
21
|
|
|
22
|
-
'open ambient chat label': 'Open
|
|
23
|
-
'assistant chat label': '
|
|
22
|
+
'open ambient chat label': 'Open Assistant',
|
|
23
|
+
'assistant chat label': 'Assistant',
|
|
24
24
|
'plugin name': 'Assistant',
|
|
25
25
|
'object placeholder': 'New prompt',
|
|
26
26
|
'create object label': 'Create prompt',
|
|
@@ -29,6 +29,7 @@ export default [
|
|
|
29
29
|
'command placeholder': 'Enter slash command...',
|
|
30
30
|
'template placeholder': 'Enter template...',
|
|
31
31
|
'value placeholder': 'Enter value...',
|
|
32
|
+
'prompt rules label': 'Prompt Rules',
|
|
32
33
|
'typename placeholder': 'Enter typename of objects which this template is for',
|
|
33
34
|
'description placeholder': 'Enter description of when this template should be used',
|
|
34
35
|
'select preset template placeholder': 'Select preset',
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/ChatContainer.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, useCapabilities, useCapability } from '@dxos/app-framework';\nimport { type AssociatedArtifact } from '@dxos/artifact';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { ThreadContainer } from './Thread';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, type AIChatType } from '../types';\n\n// TODO(burdon): Attention.\nexport const ChatContainer = ({\n role,\n chat,\n associatedArtifact,\n}: {\n role: string;\n chat: AIChatType;\n associatedArtifact?: AssociatedArtifact;\n}) => {\n const transcription = useCapabilities(TranscriptionCapabilities.Transcriber).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n return (\n <StackItem.Content role={role} classNames='container-max-width'>\n <ThreadContainer\n chat={chat}\n settings={settings}\n transcription={transcription}\n associatedArtifact={associatedArtifact}\n />\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,iBAAiBC,qBAAqB;AAE7D,SAASC,iCAAiC;AAC1C,SAASC,iBAAiB;AAOnB,IAAMC,gBAAgB,CAAC,EAC5BC,MACAC,MACAC,mBAAkB,MAKnB;AACC,QAAMC,gBAAgBC,gBAAgBC,0BAA0BC,WAAW,EAAEC,SAAS;AACtF,QAAMC,WAAWC,cAAcC,aAAaC,aAAa,EAAEC,SAAiCC,gBAAAA,GAAmBC;AAE/G,SACE,sBAAA,cAACC,UAAUC,SAAO;IAAChB;IAAYiB,YAAW;KACxC,sBAAA,cAACC,iBAAAA;IACCjB;IACAO;IACAL;IACAD;;AAIR;AAEA,IAAA,wBAAeH;",
|
|
6
|
-
"names": ["React", "Capabilities", "useCapabilities", "useCapability", "TranscriptionCapabilities", "StackItem", "ChatContainer", "role", "chat", "associatedArtifact", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcriber", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "StackItem", "Content", "classNames", "ThreadContainer"]
|
|
7
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
TemplateEditor
|
|
3
|
-
} from "./chunk-NFUHCW2J.mjs";
|
|
4
|
-
import {
|
|
5
|
-
TemplateKinds
|
|
6
|
-
} from "./chunk-IAMR2FAE.mjs";
|
|
7
|
-
import {
|
|
8
|
-
ASSISTANT_PLUGIN
|
|
9
|
-
} from "./chunk-3HCI5FIL.mjs";
|
|
10
|
-
|
|
11
|
-
// packages/plugins/plugin-assistant/src/components/TemplateContainer.tsx
|
|
12
|
-
import { Match } from "effect";
|
|
13
|
-
import React, { useCallback } from "react";
|
|
14
|
-
import { debounce } from "@dxos/async";
|
|
15
|
-
import { Input, Select, Toolbar, useTranslation } from "@dxos/react-ui";
|
|
16
|
-
import { StackItem } from "@dxos/react-ui-stack";
|
|
17
|
-
var TemplateContainer = ({ template, role }) => {
|
|
18
|
-
const { t } = useTranslation(ASSISTANT_PLUGIN);
|
|
19
|
-
const handleKindChange = useCallback((value) => {
|
|
20
|
-
const kind = Match.type().pipe(Match.withReturnType(), Match.when("always", () => ({
|
|
21
|
-
include: "always"
|
|
22
|
-
})), Match.when("schema-matching", () => ({
|
|
23
|
-
include: "schema-matching",
|
|
24
|
-
typename: ""
|
|
25
|
-
})), Match.when("automatically", () => ({
|
|
26
|
-
include: "automatically",
|
|
27
|
-
description: ""
|
|
28
|
-
})), Match.orElse(() => ({
|
|
29
|
-
include: "manual"
|
|
30
|
-
})))(value);
|
|
31
|
-
template.kind = kind;
|
|
32
|
-
}, [
|
|
33
|
-
template
|
|
34
|
-
]);
|
|
35
|
-
const handleTypenameChange = useCallback(debounce((event) => {
|
|
36
|
-
if (template.kind.include === "schema-matching") {
|
|
37
|
-
template.kind.typename = event.target.value;
|
|
38
|
-
}
|
|
39
|
-
}, 300), [
|
|
40
|
-
template.kind.include
|
|
41
|
-
]);
|
|
42
|
-
const handleDescriptionChange = useCallback(debounce((event) => {
|
|
43
|
-
if (template.kind.include === "automatically") {
|
|
44
|
-
template.kind.description = event.target.value;
|
|
45
|
-
}
|
|
46
|
-
}, 300), [
|
|
47
|
-
template.kind.include
|
|
48
|
-
]);
|
|
49
|
-
return /* @__PURE__ */ React.createElement(StackItem.Content, {
|
|
50
|
-
role,
|
|
51
|
-
toolbar: true,
|
|
52
|
-
classNames: "container-max-width"
|
|
53
|
-
}, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(Select.Root, {
|
|
54
|
-
value: template.kind.include,
|
|
55
|
-
onValueChange: handleKindChange
|
|
56
|
-
}, /* @__PURE__ */ React.createElement(Toolbar.Button, {
|
|
57
|
-
asChild: true
|
|
58
|
-
}, /* @__PURE__ */ React.createElement(Select.TriggerButton, null)), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, TemplateKinds.map((kind) => /* @__PURE__ */ React.createElement(Select.Option, {
|
|
59
|
-
key: kind,
|
|
60
|
-
value: kind
|
|
61
|
-
}, kind)))))), template.kind.include === "schema-matching" && /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
62
|
-
placeholder: t("typename placeholder"),
|
|
63
|
-
defaultValue: template.kind.typename,
|
|
64
|
-
onChange: handleTypenameChange
|
|
65
|
-
})), template.kind.include === "automatically" && /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
66
|
-
placeholder: t("description placeholder"),
|
|
67
|
-
defaultValue: template.kind.description,
|
|
68
|
-
onChange: handleDescriptionChange
|
|
69
|
-
}))), /* @__PURE__ */ React.createElement(TemplateEditor, {
|
|
70
|
-
template
|
|
71
|
-
}));
|
|
72
|
-
};
|
|
73
|
-
var TemplateContainer_default = TemplateContainer;
|
|
74
|
-
export {
|
|
75
|
-
TemplateContainer,
|
|
76
|
-
TemplateContainer_default as default
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=TemplateContainer-K4EJNGIL.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/TemplateContainer.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Match, type Schema as S } from 'effect';\nimport React, { type ChangeEvent, useCallback } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { Input, Select, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { TemplateEditor } from './TemplateEditor';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { TemplateKinds, type TemplateKindSchema, type TemplateType } from '../types';\n\nexport const TemplateContainer = ({ template, role }: { template: TemplateType; role: string }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n const handleKindChange = useCallback(\n (value: string) => {\n const kind = Match.type<string>().pipe(\n Match.withReturnType<S.Schema.Type<typeof TemplateKindSchema>>(),\n Match.when('always', () => ({ include: 'always' })),\n Match.when('schema-matching', () => ({ include: 'schema-matching', typename: '' })),\n Match.when('automatically', () => ({ include: 'automatically', description: '' })),\n Match.orElse(() => ({ include: 'manual' })),\n )(value);\n\n template.kind = kind;\n },\n [template],\n );\n\n const handleTypenameChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'schema-matching') {\n template.kind.typename = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n const handleDescriptionChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'automatically') {\n template.kind.description = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n return (\n <StackItem.Content role={role} toolbar classNames='container-max-width'>\n {/* TODO(wittjosiah): Move this toolbar into c11y sidebar. */}\n <Toolbar.Root>\n <Select.Root value={template.kind.include} onValueChange={handleKindChange}>\n <Toolbar.Button asChild>\n <Select.TriggerButton />\n </Toolbar.Button>\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {TemplateKinds.map((kind) => (\n <Select.Option key={kind} value={kind}>\n {kind}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n {template.kind.include === 'schema-matching' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('typename placeholder')}\n defaultValue={template.kind.typename}\n onChange={handleTypenameChange}\n />\n </Input.Root>\n )}\n {template.kind.include === 'automatically' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('description placeholder')}\n defaultValue={template.kind.description}\n onChange={handleDescriptionChange}\n />\n </Input.Root>\n )}\n </Toolbar.Root>\n <TemplateEditor template={template} />\n </StackItem.Content>\n );\n};\n\nexport default TemplateContainer;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAIA,SAASA,aAA+B;AACxC,OAAOC,SAA2BC,mBAAmB;AAErD,SAASC,gBAAgB;AACzB,SAASC,OAAOC,QAAQC,SAASC,sBAAsB;AACvD,SAASC,iBAAiB;AAMnB,IAAMC,oBAAoB,CAAC,EAAEC,UAAUC,KAAI,MAA4C;AAC5F,QAAM,EAAEC,EAAC,IAAKC,eAAeC,gBAAAA;AAE7B,QAAMC,mBAAmBC,YACvB,CAACC,UAAAA;AACC,UAAMC,OAAOC,MAAMC,KAAI,EAAWC,KAChCF,MAAMG,eAAc,GACpBH,MAAMI,KAAK,UAAU,OAAO;MAAEC,SAAS;IAAS,EAAA,GAChDL,MAAMI,KAAK,mBAAmB,OAAO;MAAEC,SAAS;MAAmBC,UAAU;IAAG,EAAA,GAChFN,MAAMI,KAAK,iBAAiB,OAAO;MAAEC,SAAS;MAAiBE,aAAa;IAAG,EAAA,GAC/EP,MAAMQ,OAAO,OAAO;MAAEH,SAAS;IAAS,EAAA,CAAA,EACxCP,KAAAA;AAEFP,aAASQ,OAAOA;EAClB,GACA;IAACR;GAAS;AAGZ,QAAMkB,uBAAuBZ,YAC3Ba,SAAS,CAACC,UAAAA;AACR,QAAIpB,SAASQ,KAAKM,YAAY,mBAAmB;AAC/Cd,eAASQ,KAAKO,WAAWK,MAAMC,OAAOd;IACxC;EACF,GAAG,GAAA,GACH;IAACP,SAASQ,KAAKM;GAAQ;AAGzB,QAAMQ,0BAA0BhB,YAC9Ba,SAAS,CAACC,UAAAA;AACR,QAAIpB,SAASQ,KAAKM,YAAY,iBAAiB;AAC7Cd,eAASQ,KAAKQ,cAAcI,MAAMC,OAAOd;IAC3C;EACF,GAAG,GAAA,GACH;IAACP,SAASQ,KAAKM;GAAQ;AAGzB,SACE,sBAAA,cAACS,UAAUC,SAAO;IAACvB;IAAYwB,SAAAA;IAAQC,YAAW;KAEhD,sBAAA,cAACC,QAAQC,MAAI,MACX,sBAAA,cAACC,OAAOD,MAAI;IAACrB,OAAOP,SAASQ,KAAKM;IAASgB,eAAezB;KACxD,sBAAA,cAACsB,QAAQI,QAAM;IAACC,SAAAA;KACd,sBAAA,cAACH,OAAOI,eAAa,IAAA,CAAA,GAEvB,sBAAA,cAACJ,OAAOK,QAAM,MACZ,sBAAA,cAACL,OAAOL,SAAO,MACb,sBAAA,cAACK,OAAOM,UAAQ,MACbC,cAAcC,IAAI,CAAC7B,SAClB,sBAAA,cAACqB,OAAOS,QAAM;IAACC,KAAK/B;IAAMD,OAAOC;KAC9BA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAOZR,SAASQ,KAAKM,YAAY,qBACzB,sBAAA,cAAC0B,MAAMZ,MAAI,MACT,sBAAA,cAACY,MAAMC,WAAS;IACdC,aAAaxC,EAAE,sBAAA;IACfyC,cAAc3C,SAASQ,KAAKO;IAC5B6B,UAAU1B;OAIflB,SAASQ,KAAKM,YAAY,mBACzB,sBAAA,cAAC0B,MAAMZ,MAAI,MACT,sBAAA,cAACY,MAAMC,WAAS;IACdC,aAAaxC,EAAE,yBAAA;IACfyC,cAAc3C,SAASQ,KAAKQ;IAC5B4B,UAAUtB;QAKlB,sBAAA,cAACuB,gBAAAA;IAAe7C;;AAGtB;AAEA,IAAA,4BAAeD;",
|
|
6
|
-
"names": ["Match", "React", "useCallback", "debounce", "Input", "Select", "Toolbar", "useTranslation", "StackItem", "TemplateContainer", "template", "role", "t", "useTranslation", "ASSISTANT_PLUGIN", "handleKindChange", "useCallback", "value", "kind", "Match", "type", "pipe", "withReturnType", "when", "include", "typename", "description", "orElse", "handleTypenameChange", "debounce", "event", "target", "handleDescriptionChange", "StackItem", "Content", "toolbar", "classNames", "Toolbar", "Root", "Select", "onValueChange", "Button", "asChild", "TriggerButton", "Portal", "Viewport", "TemplateKinds", "map", "Option", "key", "Input", "TextInput", "placeholder", "defaultValue", "onChange", "TemplateEditor"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginsContext,\n} from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension, type Node, ROOT_ID } from '@dxos/plugin-graph';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport {\n type Space,\n Filter,\n fullyQualifiedId,\n getSpace,\n isSpace,\n isReactiveObject,\n parseId,\n} from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, TemplateType } from '../types';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${ASSISTANT_PLUGIN}/assistant`,\n filter: (node): node is Node<null> => node.id === ROOT_ID,\n actions: () => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const layout = context.requestCapability(Capabilities.Layout);\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n\n // TODO(burdon): Get space from workspace.\n // TODO(burdon): If need to create chat, then add to dispatch stack below.\n let chat: AIChatType | undefined;\n if (layout.active.length > 0) {\n const node = graph.findNode(layout.active[0]);\n if (node) {\n const space = getSpace(node.data);\n if (space) {\n chat = await getOrCreateChat(dispatch, space);\n }\n }\n } else {\n const space = client.spaces.default;\n chat = await getOrCreateChat(dispatch, space);\n }\n\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--star-four--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ],\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/service-registry`,\n filter: (node): node is Node<null> => node.id === 'root',\n connector: ({ node }) => {\n const layout = context.requestCapability(Capabilities.Layout);\n const client = context.requestCapability(ClientCapabilities.Client);\n const { spaceId } = parseId(layout.workspace);\n const space = spaceId ? client.spaces.get(spaceId) : null;\n\n return [\n {\n id: [node.id, 'service-registry'].join(ATTENDABLE_PATH_SEPARATOR),\n type: DECK_COMPANION_TYPE,\n data: space,\n properties: {\n label: ['service registry label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--plugs--regular',\n disposition: 'hidden',\n },\n },\n ];\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/object-chat-companion`,\n filter: (node): node is Node<AIChatType> =>\n isReactiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename,\n connector: ({ node }) => [\n {\n id: [node.id, 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--star-four--regular',\n position: 'hoist',\n },\n },\n ],\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/root`,\n filter: (node): node is Node<Space> => isSpace(node.data),\n connector: ({ node }) => {\n const templates = memoizeQuery(node.data, Filter.schema(TemplateType));\n return templates.length > 0\n ? [\n {\n id: `${ASSISTANT_PLUGIN}/templates`,\n type: `${ASSISTANT_PLUGIN}/templates`,\n data: null,\n properties: {\n label: ['templates label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n space: node.data,\n },\n },\n ]\n : [];\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/templates`,\n filter: (node): node is Node<null, { space: Space }> => node.id === `${ASSISTANT_PLUGIN}/templates`,\n connector: ({ node }) => {\n const templates = memoizeQuery(node.properties.space, Filter.schema(TemplateType));\n return templates\n .toSorted((a, b) => {\n const nameA = a.name ?? '';\n const nameB = b.name ?? '';\n return nameA.localeCompare(nameB);\n })\n .map((template) => ({\n id: fullyQualifiedId(template),\n type: `${ASSISTANT_PLUGIN}/template`,\n data: template,\n properties: {\n label: template.name ?? ['template title placeholder', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n },\n }));\n },\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (dispatch: PromiseIntentDispatcher, space: Space): Promise<AIChatType | undefined> => {\n const { objects } = await space.db.query(Filter.schema(AIChatType)).run();\n // console.log('objects', JSON.stringify(objects, null, 2));\n if (objects.length > 0) {\n // TODO(burdon): Is this the most recent?\n return objects[objects.length - 1];\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { spaceId: space.id }));\n invariant(data?.object instanceof AIChatType);\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAIA,SACEA,cACAC,aACAC,cACAC,oBAGK;AACP,SAASC,iBAAiB;AAC1B,SAASC,0BAA0B;AACnC,SAASC,sBAAsBC,2BAA2BC,2BAA2B;AACrF,SAASC,iBAA4BC,eAAe;AACpD,SAASC,oBAAoB;AAC7B,SAASC,mBAAmB;AAC5B,SAEEC,QACAC,kBACAC,UACAC,SACAC,kBACAC,eACK;;AAKP,IAAA,4BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,gBAAAA;IACPC,QAAQ,CAACC,SAA6BA,KAAKH,OAAOI;IAClDC,SAAS,MAAM;MACb;QACEL,IAAI,GAAGM,aAAaC,aAAaC,IAAI;QACrCC,MAAM,YAAA;AACJ,gBAAM,EAAEC,iBAAiBC,SAAQ,IAAKhB,QAAQiB,kBAAkBf,aAAagB,gBAAgB;AAC7F,gBAAMC,SAASnB,QAAQiB,kBAAkBG,mBAAmBC,MAAM;AAClE,gBAAMC,SAAStB,QAAQiB,kBAAkBf,aAAaqB,MAAM;AAC5D,gBAAM,EAAEC,MAAK,IAAKxB,QAAQiB,kBAAkBf,aAAauB,QAAQ;AAIjE,cAAIC;AACJ,cAAIJ,OAAOK,OAAOC,SAAS,GAAG;AAC5B,kBAAMpB,OAAOgB,MAAMK,SAASP,OAAOK,OAAO,CAAA,CAAE;AAC5C,gBAAInB,MAAM;AACR,oBAAMsB,QAAQC,SAASvB,KAAKM,IAAI;AAChC,kBAAIgB,OAAO;AACTJ,uBAAO,MAAMM,gBAAgBhB,UAAUc,KAAAA;cACzC;YACF;UACF,OAAO;AACL,kBAAMA,QAAQX,OAAOc,OAAOC;AAC5BR,mBAAO,MAAMM,gBAAgBhB,UAAUc,KAAAA;UACzC;AAEA,cAAI,CAACJ,MAAM;AACT;UACF;AAEA,gBAAMV,SACJmB,aAAaxB,aAAaC,cAAc;YACtCwB,MAAM;YACNC,SAASC;YACTC,SAAS;cACPC,OAAO;cACPC,YAAY;cACZC,OAAO;gBACLhB;cACF;YACF;UACF,CAAA,CAAA;QAEJ;QACAiB,YAAY;UACVC,OAAO;YAAC;YAAwB;cAAEC,IAAIvC;YAAiB;;UACvDwC,MAAM;UACNC,aAAa;UACbC,UAAU;UACVC,YAAY;YACVC,OAAO;YACPC,SAAS;UACX;QACF;MACF;;EAEJ,CAAA;EAEA/C,gBAAgB;IACdC,IAAI,GAAGC,gBAAAA;IACPC,QAAQ,CAACC,SAA6BA,KAAKH,OAAO;IAClD+C,WAAW,CAAC,EAAE5C,KAAI,MAAE;AAClB,YAAMc,SAAStB,QAAQiB,kBAAkBf,aAAaqB,MAAM;AAC5D,YAAMJ,SAASnB,QAAQiB,kBAAkBG,mBAAmBC,MAAM;AAClE,YAAM,EAAEgC,QAAO,IAAKC,QAAQhC,OAAOiC,SAAS;AAC5C,YAAMzB,QAAQuB,UAAUlC,OAAOc,OAAOuB,IAAIH,OAAAA,IAAW;AAErD,aAAO;QACL;UACEhD,IAAI;YAACG,KAAKH;YAAI;YAAoBoD,KAAKC,yBAAAA;UACvCC,MAAMC;UACN9C,MAAMgB;UACNa,YAAY;YACVC,OAAO;cAAC;cAA0B;gBAAEC,IAAIvC;cAAiB;;YACzDwC,MAAM;YACNC,aAAa;UACf;QACF;;IAEJ;EACF,CAAA;EAEA3C,gBAAgB;IACdC,IAAI,GAAGC,gBAAAA;IACPC,QAAQ,CAACC,SACPqD,iBAAiBrD,KAAKM,IAAI,KAAKN,KAAKM,KAAKgD,sBAAsBtD,KAAKM,KAAK6C,SAASI,WAAWC;IAC/FZ,WAAW,CAAC,EAAE5C,KAAI,MAAO;MACvB;QACEH,IAAI;UAACG,KAAKH;UAAI;UAAkBoD,KAAKC,yBAAAA;QACrCC,MAAMM;QACNnD,MAAM;QACN6B,YAAY;UACVC,OAAO;YAAC;YAAwB;cAAEC,IAAIvC;YAAiB;;UACvDwC,MAAM;UACNE,UAAU;QACZ;MACF;;EAEJ,CAAA;EAEA5C,gBAAgB;IACdC,IAAI,GAAGC,gBAAAA;IACPC,QAAQ,CAACC,SAA8B0D,QAAQ1D,KAAKM,IAAI;IACxDsC,WAAW,CAAC,EAAE5C,KAAI,MAAE;AAClB,YAAM2D,YAAYC,aAAa5D,KAAKM,MAAMuD,OAAOC,OAAOC,YAAAA,CAAAA;AACxD,aAAOJ,UAAUvC,SAAS,IACtB;QACE;UACEvB,IAAI,GAAGC,gBAAAA;UACPqD,MAAM,GAAGrD,gBAAAA;UACTQ,MAAM;UACN6B,YAAY;YACVC,OAAO;cAAC;cAAmB;gBAAEC,IAAIvC;cAAiB;;YAClDwC,MAAM;YACNhB,OAAOtB,KAAKM;UACd;QACF;UAEF,CAAA;IACN;EACF,CAAA;EAEAV,gBAAgB;IACdC,IAAI,GAAGC,gBAAAA;IACPC,QAAQ,CAACC,SAA+CA,KAAKH,OAAO,GAAGC,gBAAAA;IACvE8C,WAAW,CAAC,EAAE5C,KAAI,MAAE;AAClB,YAAM2D,YAAYC,aAAa5D,KAAKmC,WAAWb,OAAOuC,OAAOC,OAAOC,YAAAA,CAAAA;AACpE,aAAOJ,UACJK,SAAS,CAACC,GAAGC,MAAAA;AACZ,cAAMC,QAAQF,EAAEG,QAAQ;AACxB,cAAMC,QAAQH,EAAEE,QAAQ;AACxB,eAAOD,MAAMG,cAAcD,KAAAA;MAC7B,CAAA,EACCE,IAAI,CAACC,cAAc;QAClB3E,IAAI4E,iBAAiBD,QAAAA;QACrBrB,MAAM,GAAGrD,gBAAAA;QACTQ,MAAMkE;QACNrC,YAAY;UACVC,OAAOoC,SAASJ,QAAQ;YAAC;YAA8B;cAAE/B,IAAIvC;YAAiB;;UAC9EwC,MAAM;QACR;MACF,EAAA;IACJ;EACF,CAAA;CACD;AAGH,IAAMd,kBAAkB,OAAOhB,UAAmCc,UAAAA;AAChE,QAAM,EAAEoD,QAAO,IAAK,MAAMpD,MAAMqD,GAAGC,MAAMf,OAAOC,OAAOP,UAAAA,CAAAA,EAAasB,IAAG;AAEvE,MAAIH,QAAQtD,SAAS,GAAG;AAEtB,WAAOsD,QAAQA,QAAQtD,SAAS,CAAA;EAClC;AAEA,QAAM,EAAEd,KAAI,IAAK,MAAME,SAASmB,aAAamD,gBAAgBC,YAAY;IAAElC,SAASvB,MAAMzB;EAAG,CAAA,CAAA;AAC7FmF,YAAU1E,MAAM2E,kBAAkB1B,YAAAA,QAAAA;;;;;;;;;AAClC,QAAM/C,SAASmB,aAAauD,YAAYC,WAAW;IAAEC,QAAQ9D;IAAO2D,QAAQ3E,KAAK2E;EAAO,CAAA,CAAA;AACxF,SAAO3E,KAAK2E;AACd;",
|
|
6
|
-
"names": ["Capabilities", "contributes", "createIntent", "LayoutAction", "invariant", "ClientCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "createExtension", "ROOT_ID", "memoizeQuery", "SpaceAction", "Filter", "fullyQualifiedId", "getSpace", "isSpace", "isReactiveObject", "parseId", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "ASSISTANT_PLUGIN", "filter", "node", "ROOT_ID", "actions", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "layout", "Layout", "graph", "AppGraph", "chat", "active", "length", "findNode", "space", "getSpace", "getOrCreateChat", "spaces", "default", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "connector", "spaceId", "parseId", "workspace", "get", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "DECK_COMPANION_TYPE", "isReactiveObject", "assistantChatQueue", "AIChatType", "typename", "PLANK_COMPANION_TYPE", "isSpace", "templates", "memoizeQuery", "Filter", "schema", "TemplateType", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "map", "template", "fullyQualifiedId", "objects", "db", "query", "run", "AssistantAction", "CreateChat", "invariant", "object", "SpaceAction", "AddObject", "target"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/AssistantSettings/AssistantSettings.tsx", "../../../src/components/ServiceRegistry/ServiceRegistry.tsx", "../../../src/components/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from '@dxos/assistant';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { ASSISTANT_PLUGIN } from '../../meta';\nimport { type AssistantSettingsProps } from '../../types';\n\n// TODO(burdon): Factor out.\nconst DEFAULT_VALUE = '__default';\n\nexport const AssistantSettings = ({ settings }: { settings: AssistantSettingsProps }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('settings custom prompts label')}>\n <Input.Switch\n checked={!!settings.customPrompts}\n onCheckedChange={(checked) => (settings.customPrompts = checked)}\n />\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings llm provider label')}>\n <Input.Switch\n checked={settings.llmProvider === 'ollama'}\n onCheckedChange={(checked) => (settings.llmProvider = checked ? 'ollama' : 'edge')}\n />\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings edge llm model label')}>\n <Select.Root\n value={settings.edgeModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.edgeModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_EDGE_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings ollama llm model label')}>\n <Select.Root\n value={settings.ollamaModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.ollamaModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_OLLAMA_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Icon, Input, List, ListItem } from '@dxos/react-ui';\n\nimport { useServices } from '../../hooks';\nimport { categoryIcons, ServiceType } from '../../types';\n\n// TODO(burdon): Option to show all/enabled/filter.\nexport const ServiceRegistry = ({ space }: { space: Space }) => {\n const matchingServices = useServices(space);\n const enabledServices = useQuery(space, Filter.schema(ServiceType));\n\n // Join matching services with enabled services.\n const services = useMemo(() => {\n return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);\n }, [matchingServices, enabledServices]);\n\n // TODO(burdon): Reaplce with SpacePlugin intent.\n const handleSetEnabled = (service: ServiceType, enabled: boolean) => {\n if (enabled) {\n space.db.add(service);\n } else {\n // TODO(burdon): Remove or disable?\n space.db.remove(service);\n }\n };\n\n return (\n <List classNames='h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin'>\n {services.map((service) => (\n <ServiceItem\n key={service.serviceId}\n service={service}\n enabled={service.enabled}\n setEnabled={(enabled) => handleSetEnabled(service, enabled)}\n />\n ))}\n </List>\n );\n};\n\nconst ServiceItem = ({\n service,\n enabled,\n setEnabled,\n}: {\n service: ServiceType;\n enabled?: boolean;\n setEnabled?: (enabled: boolean) => void;\n}) => {\n return (\n <ListItem.Root classNames='flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator'>\n <div className='grid grid-cols-[40px_1fr_40px]'>\n <div className='flex gow justify-center items-center'>\n <Icon icon={categoryIcons[service.category ?? 'default'] ?? 'ph--placeholder--regular'} size={6} />\n </div>\n <div className='grow items-center truncate mie-2'>{service.name}</div>\n <div className='flex gow justify-center items-center'>\n <Input.Root>\n <Input.Switch checked={enabled} onClick={() => setEnabled?.(!enabled)} />\n </Input.Root>\n </div>\n </div>\n <div className='grid grid-cols-[40px_1fr]'>\n <div />\n <div className='text-sm text-subdued line-clamp-2 mie-1'>{service.description}</div>\n </div>\n </ListItem.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AssistantSettings';\nexport * from './ServiceRegistry';\nexport * from './TemplateEditor';\nexport * from './Thread';\nexport * from './Toolbox';\n\n// TODO(burdon): Lazy loading causes issues with Tabster.\n// Repro: open assistant dialog then close.\n// https://github.com/microsoft/fluentui/issues/34020\nexport const AssistantDialog = lazy(() => import('./AssistantDialog'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\nexport const TemplateContainer = lazy(() => import('./TemplateContainer'));\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "DEFAULT_EDGE_MODELS", "DEFAULT_OLLAMA_MODELS", "Input", "Select", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "DEFAULT_VALUE", "AssistantSettings", "settings", "t", "useTranslation", "ASSISTANT_PLUGIN", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "customPrompts", "onCheckedChange", "llmProvider", "Select", "Root", "value", "edgeModel", "onValueChange", "undefined", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "Option", "DEFAULT_EDGE_MODELS", "map", "model", "key", "ollamaModel", "DEFAULT_OLLAMA_MODELS", "React", "useMemo", "Filter", "useQuery", "Icon", "Input", "List", "ListItem", "ServiceRegistry", "space", "matchingServices", "useServices", "enabledServices", "useQuery", "Filter", "schema", "ServiceType", "services", "useMemo", "map", "service", "find", "s", "serviceId", "handleSetEnabled", "enabled", "db", "add", "remove", "React", "List", "classNames", "ServiceItem", "key", "setEnabled", "ListItem", "Root", "div", "className", "Icon", "icon", "categoryIcons", "category", "size", "name", "Input", "Switch", "checked", "onClick", "description", "lazy", "AssistantDialog", "lazy", "ChatContainer", "TemplateContainer"]
|
|
7
|
-
}
|
|
@@ -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 { DXN, QueueSubspaceTags } from '@dxos/keys';\nimport { create, refFromDXN } from '@dxos/live-object';\n\nimport { AssistantAction, AIChatType, TemplateType } from '../types';\n\nexport default () => [\n contributes(\n Capabilities.IntentResolver,\n createResolver({\n intent: AssistantAction.CreateChat,\n resolve: ({ spaceId, name }) => ({\n data: {\n object: create(AIChatType, {\n assistantChatQueue: refFromDXN(\n new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, spaceId, ObjectId.random()]),\n ),\n }),\n },\n }),\n }),\n ),\n contributes(\n Capabilities.IntentResolver,\n createResolver({\n intent: AssistantAction.CreateTemplate,\n resolve: ({ name }) => ({\n data: {\n object: create(TemplateType, { name, kind: { include: 'manual' }, source: '{{! Template }}' }),\n },\n }),\n }),\n ),\n];\n"],
|
|
5
|
-
"mappings": ";;;;;;;;AAIA,SAASA,cAAcC,aAAaC,sBAAsB;AAC1D,SAASC,gBAAgB;AACzB,SAASC,KAAKC,yBAAyB;AACvC,SAASC,QAAQC,kBAAkB;AAInC,IAAA,0BAAe,MAAM;EACnBC,YACEC,aAAaC,gBACbC,eAAe;IACbC,QAAQC,gBAAgBC;IACxBC,SAAS,CAAC,EAAEC,SAASC,KAAI,OAAQ;MAC/BC,MAAM;QACJC,QAAQC,OAAOC,YAAY;UACzBC,oBAAoBC,WAClB,IAAIC,IAAIA,IAAIC,KAAKC,OAAO;YAACC,kBAAkBC;YAAMZ;YAASa,SAASC,OAAM;WAAG,CAAA;QAEhF,CAAA;MACF;IACF;EACF,CAAA,CAAA;EAEFtB,YACEC,aAAaC,gBACbC,eAAe;IACbC,QAAQC,gBAAgBkB;IACxBhB,SAAS,CAAC,EAAEE,KAAI,OAAQ;MACtBC,MAAM;QACJC,QAAQC,OAAOY,cAAc;UAAEf;UAAMQ,MAAM;YAAEQ,SAAS;UAAS;UAAGC,QAAQ;QAAkB,CAAA;MAC9F;IACF;EACF,CAAA,CAAA;;",
|
|
6
|
-
"names": ["Capabilities", "contributes", "createResolver", "ObjectId", "DXN", "QueueSubspaceTags", "create", "refFromDXN", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "AssistantAction", "CreateChat", "resolve", "spaceId", "name", "data", "object", "create", "AIChatType", "assistantChatQueue", "refFromDXN", "DXN", "kind", "QUEUE", "QueueSubspaceTags", "DATA", "ObjectId", "random", "CreateTemplate", "TemplateType", "include", "source"]
|
|
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, { useMemo } from 'react';\n\nimport { Capabilities, contributes, createSurface } from '@dxos/app-framework';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { getTypename } from '@dxos/live-object';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { fullyQualifiedId, isReactiveObject, isSpace, type Space } from '@dxos/react-client/echo';\n\nimport { AssistantDialog, AssistantSettings, ChatContainer, ServiceRegistry, TemplateContainer } from '../components';\nimport { ASSISTANT_PLUGIN, ASSISTANT_DIALOG } from '../meta';\nimport { AIChatType, type AssistantSettingsProps, TemplateType } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${ASSISTANT_PLUGIN}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<AssistantSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === ASSISTANT_PLUGIN,\n component: ({ data: { subject } }) => <AssistantSettings settings={subject.value} />,\n }),\n createSurface({\n id: ASSISTANT_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: { chat: AIChatType } } => data.component === ASSISTANT_DIALOG,\n component: ({ data }) => <AssistantDialog {...data.props} />,\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/chat`,\n role: 'article',\n filter: (data): data is { subject: AIChatType; variant: undefined } =>\n isInstanceOf(AIChatType, data.subject) && data.variant !== 'assistant-chat',\n component: ({ data, role }) => <ChatContainer role={role} chat={data.subject} />,\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/object-chat`,\n role: 'article',\n filter: (data): data is { companionTo: AIChatType; subject: 'assistant-chat' } =>\n isReactiveObject(data.companionTo) && data.companionTo.assistantChatQueue && data.subject === 'assistant-chat',\n component: ({ data, role }) => {\n const associatedArtifact = useMemo(\n () => ({\n id: fullyQualifiedId(data.companionTo),\n typename: getTypename(data.companionTo) ?? 'unknown',\n }),\n [data.companionTo],\n );\n return <ChatContainer role={role} chat={data.companionTo} associatedArtifact={associatedArtifact} />;\n },\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/template`,\n role: 'article',\n filter: (data): data is { subject: TemplateType } => isInstanceOf(TemplateType, data.subject),\n component: ({ data, role }) => <TemplateContainer role={role} template={data.subject} />,\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/service-registry`,\n role: 'deck-companion--service-registry',\n filter: (data): data is { subject: Space } => isSpace(data.subject),\n component: ({ data }) => <ServiceRegistry space={data.subject} />,\n }),\n ]);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAIA,OAAOA,SAASC,eAAe;AAE/B,SAASC,cAAcC,aAAaC,qBAAqB;AACzD,SAASC,oBAAoB;AAC7B,SAASC,mBAAmB;AAC5B,SAASC,qBAAqB;AAC9B,SAASC,kBAAkBC,kBAAkBC,eAA2B;AAMxE,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKC,mBAAmBC,iBAAiBF,KAAKC,QAAQE,WAAWN;IACnEO,WAAW,CAAC,EAAEJ,MAAM,EAAEC,QAAO,EAAE,MAAO,sBAAA,cAACI,mBAAAA;MAAkBC,UAAUL,QAAQM;;EAC7E,CAAA;EACAZ,cAAc;IACZC,IAAIY;IACJV,MAAM;IACNC,QAAQ,CAACC,SAAkDA,KAAKI,cAAcI;IAC9EJ,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAACS,iBAAoBT,KAAKU,KAAK;EAC1D,CAAA;EACAf,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPW,aAAaC,YAAYZ,KAAKC,OAAO,KAAKD,KAAKa,YAAY;IAC7DT,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAO,sBAAA,cAACgB,eAAAA;MAAchB;MAAYiB,MAAMf,KAAKC;;EACvE,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPgB,iBAAiBhB,KAAKiB,WAAW,KAAKjB,KAAKiB,YAAYC,sBAAsBlB,KAAKC,YAAY;IAChGG,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAE;AACxB,YAAMqB,qBAAqBC,QACzB,OAAO;QACLxB,IAAIyB,iBAAiBrB,KAAKiB,WAAW;QACrCK,UAAUC,YAAYvB,KAAKiB,WAAW,KAAK;MAC7C,IACA;QAACjB,KAAKiB;OAAY;AAEpB,aAAO,sBAAA,cAACH,eAAAA;QAAchB;QAAYiB,MAAMf,KAAKiB;QAAaE;;IAC5D;EACF,CAAA;EACAxB,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA4CW,aAAaa,cAAcxB,KAAKC,OAAO;IAC5FG,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAO,sBAAA,cAAC2B,mBAAAA;MAAkB3B;MAAY4B,UAAU1B,KAAKC;;EAC/E,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAqC2B,QAAQ3B,KAAKC,OAAO;IAClEG,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAAC4B,iBAAAA;MAAgBC,OAAO7B,KAAKC;;EACxD,CAAA;CACD;",
|
|
6
|
-
"names": ["React", "useMemo", "Capabilities", "contributes", "createSurface", "isInstanceOf", "getTypename", "SettingsStore", "fullyQualifiedId", "isReactiveObject", "isSpace", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "ASSISTANT_PLUGIN", "role", "filter", "data", "subject", "SettingsStore", "prefix", "component", "AssistantSettings", "settings", "value", "ASSISTANT_DIALOG", "AssistantDialog", "props", "isInstanceOf", "AIChatType", "variant", "ChatContainer", "chat", "isReactiveObject", "companionTo", "assistantChatQueue", "associatedArtifact", "useMemo", "fullyQualifiedId", "typename", "getTypename", "TemplateType", "TemplateContainer", "template", "isSpace", "ServiceRegistry", "space"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/settings.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { create } from '@dxos/live-object';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, AssistantSettingsSchema } from '../types';\n\nexport default () => {\n const settings = create<AssistantSettingsProps>({});\n\n return contributes(Capabilities.Settings, {\n schema: AssistantSettingsSchema,\n prefix: ASSISTANT_PLUGIN,\n value: settings,\n });\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,cAAc;AAKvB,IAAA,mBAAe,MAAA;AACb,QAAMC,WAAWC,OAA+B,CAAC,CAAA;AAEjD,SAAOC,YAAYC,aAAaC,UAAU;IACxCC,QAAQC;IACRC,QAAQC;IACRC,OAAOT;EACT,CAAA;AACF;",
|
|
6
|
-
"names": ["Capabilities", "contributes", "create", "settings", "create", "contributes", "Capabilities", "Settings", "schema", "AssistantSettingsSchema", "prefix", "ASSISTANT_PLUGIN", "value"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/ChatContainer.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, useCapabilities, useCapability } from '@dxos/app-framework';\nimport { type AssociatedArtifact } from '@dxos/artifact';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { ThreadContainer } from './Thread';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, type AIChatType } from '../types';\n\n// TODO(burdon): Attention.\nexport const ChatContainer = ({\n role,\n chat,\n associatedArtifact,\n}: {\n role: string;\n chat: AIChatType;\n associatedArtifact?: AssociatedArtifact;\n}) => {\n const transcription = useCapabilities(TranscriptionCapabilities.Transcriber).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n return (\n <StackItem.Content role={role} classNames='container-max-width'>\n <ThreadContainer\n chat={chat}\n settings={settings}\n transcription={transcription}\n associatedArtifact={associatedArtifact}\n />\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAA6D;AAE7D,kCAA0C;AAC1C,4BAA0B;AAOnB,IAAMA,gBAAgB,CAAC,EAC5BC,MACAC,MACAC,mBAAkB,MAKnB;AACC,QAAMC,oBAAgBC,sCAAgBC,sDAA0BC,WAAW,EAAEC,SAAS;AACtF,QAAMC,eAAWC,oCAAcC,kCAAaC,aAAa,EAAEC,SAAiCC,sCAAAA,GAAmBC;AAE/G,SACE,6BAAAC,QAAA,cAACC,gCAAUC,SAAO;IAACjB;IAAYkB,YAAW;KACxC,6BAAAH,QAAA,cAACI,uCAAAA;IACClB;IACAO;IACAL;IACAD;;AAIR;AAEA,IAAA,wBAAeH;",
|
|
6
|
-
"names": ["ChatContainer", "role", "chat", "associatedArtifact", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcriber", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "React", "StackItem", "Content", "classNames", "ThreadContainer"]
|
|
7
|
-
}
|