@dxos/plugin-assistant 0.8.1 → 0.8.2-main.2f9c567
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-WX6EKSXI.mjs} +3 -3
- package/dist/lib/browser/{ChatContainer-V5GP7DYF.mjs → ChatContainer-HMNWYDQ5.mjs} +3 -3
- package/dist/lib/browser/ChatContainer-HMNWYDQ5.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/{ai-client-CDZLSNXE.mjs → ai-client-OK5SMYJC.mjs} +1 -1
- package/dist/lib/browser/{ai-client-CDZLSNXE.mjs.map → ai-client-OK5SMYJC.mjs.map} +2 -2
- package/dist/lib/browser/{app-graph-builder-MF5EVDWW.mjs → app-graph-builder-J5ISIFTE.mjs} +9 -39
- package/dist/lib/browser/app-graph-builder-J5ISIFTE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FMB7RGMP.mjs → chunk-4EXBK6UE.mjs} +127 -112
- package/dist/lib/browser/chunk-4EXBK6UE.mjs.map +7 -0
- package/dist/lib/browser/chunk-5P7U35RJ.mjs +192 -0
- package/dist/lib/browser/chunk-5P7U35RJ.mjs.map +7 -0
- package/dist/lib/browser/chunk-J3V74ZRF.mjs +143 -0
- package/dist/lib/browser/chunk-J3V74ZRF.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +14 -11
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-WJGLKKVO.mjs → intent-resolver-MGHOSZY3.mjs} +5 -5
- package/dist/lib/browser/intent-resolver-MGHOSZY3.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-57VRDOQT.mjs → react-surface-VP4ABBMH.mjs} +15 -15
- package/dist/lib/browser/react-surface-VP4ABBMH.mjs.map +7 -0
- package/dist/lib/browser/{settings-U6UFQX32.mjs → settings-OZX7J65A.mjs} +4 -4
- package/dist/lib/browser/settings-OZX7J65A.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +3 -1
- package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs → AssistantDialog-2OTAZADX.cjs} +7 -7
- package/dist/lib/node/{ChatContainer-ZJ5JXF6A.cjs → ChatContainer-3CTBKBS2.cjs} +7 -7
- package/dist/lib/node/ChatContainer-3CTBKBS2.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/{ai-client-URCCYU6B.cjs → ai-client-3EVTLXTT.cjs} +4 -4
- package/dist/lib/node/{ai-client-URCCYU6B.cjs.map → ai-client-3EVTLXTT.cjs.map} +2 -2
- package/dist/lib/node/{app-graph-builder-N5ZUUI2Z.cjs → app-graph-builder-BBNLIGYJ.cjs} +14 -44
- package/dist/lib/node/app-graph-builder-BBNLIGYJ.cjs.map +7 -0
- package/dist/lib/node/chunk-VG2UQY4S.cjs +216 -0
- package/dist/lib/node/chunk-VG2UQY4S.cjs.map +7 -0
- package/dist/lib/node/{chunk-ZKOC4ZFY.cjs → chunk-WFSXNO4H.cjs} +78 -61
- package/dist/lib/node/chunk-WFSXNO4H.cjs.map +7 -0
- package/dist/lib/node/{chunk-RPBKMP2E.cjs → chunk-XC7A3KUG.cjs} +138 -116
- package/dist/lib/node/chunk-XC7A3KUG.cjs.map +7 -0
- package/dist/lib/node/index.cjs +46 -43
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-R3OSTIMH.cjs → intent-resolver-Z2NTL2FV.cjs} +9 -9
- package/dist/lib/node/intent-resolver-Z2NTL2FV.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-NUQTM6MS.cjs → react-surface-HNXDAZ7C.cjs} +22 -22
- package/dist/lib/node/react-surface-HNXDAZ7C.cjs.map +7 -0
- package/dist/lib/node/{settings-TXGRCYAL.cjs → settings-WLTC7XO5.cjs} +7 -7
- package/dist/lib/node/settings-WLTC7XO5.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +14 -12
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs → AssistantDialog-GNLPYXY4.mjs} +3 -3
- package/dist/lib/node-esm/{ChatContainer-QW3OOXTT.mjs → ChatContainer-FGHDDORQ.mjs} +3 -3
- package/dist/lib/node-esm/ChatContainer-FGHDDORQ.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/{ai-client-WMHS5EGV.mjs → ai-client-LYCBXZI7.mjs} +1 -1
- package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs.map → ai-client-LYCBXZI7.mjs.map} +2 -2
- package/dist/lib/node-esm/{app-graph-builder-DWBNIMHM.mjs → app-graph-builder-245AWCPJ.mjs} +9 -39
- package/dist/lib/node-esm/app-graph-builder-245AWCPJ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-G5LUEW72.mjs +144 -0
- package/dist/lib/node-esm/chunk-G5LUEW72.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs → chunk-JX73NOSL.mjs} +127 -112
- package/dist/lib/node-esm/chunk-JX73NOSL.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-UZWYXNR5.mjs +193 -0
- package/dist/lib/node-esm/chunk-UZWYXNR5.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +14 -11
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-H32TL4X6.mjs → intent-resolver-DMQXPV2H.mjs} +5 -5
- package/dist/lib/node-esm/intent-resolver-DMQXPV2H.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-JBVZF6CP.mjs → react-surface-NYXMBFPY.mjs} +15 -15
- package/dist/lib/node-esm/react-surface-NYXMBFPY.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-DZU5PNXM.mjs → settings-CLE57WEP.mjs} +4 -4
- package/dist/lib/node-esm/settings-CLE57WEP.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +3 -1
- package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -1
- 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/AssistantSettings/AssistantSettings.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/TemplateEditor/TemplateForm.d.ts +2 -2
- package/dist/types/src/components/TemplateEditor/TemplateForm.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 +2 -2
- package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.d.ts +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -6
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +0 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/processor.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatProcessor.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/tools/function.d.ts +1 -1
- package/dist/types/src/tools/function.d.ts.map +1 -1
- package/dist/types/src/tools/openapi.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/dist/types/src/types/service.d.ts +96 -95
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/src/types/template.d.ts +52 -52
- package/dist/types/src/types/template.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +20 -18
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/package.json +61 -58
- package/src/AssistantPlugin.tsx +2 -2
- package/src/capabilities/ai-client.ts +0 -1
- package/src/capabilities/app-graph-builder.ts +6 -38
- package/src/capabilities/index.ts +1 -1
- package/src/capabilities/intent-resolver.ts +3 -3
- package/src/capabilities/react-surface.tsx +11 -9
- package/src/capabilities/settings.ts +2 -2
- package/src/components/AssistantSettings/AssistantSettings.tsx +28 -6
- 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/TemplateEditor/TemplateForm.tsx +2 -2
- package/src/components/Thread/ThreadContainer.stories.tsx +12 -20
- package/src/components/Thread/ThreadContainer.tsx +24 -2
- package/src/components/Thread/ThreadMessage.tsx +5 -2
- package/src/components/Toolbox/Toolbox.stories.tsx +1 -1
- package/src/components/Toolbox/Toolbox.tsx +1 -1
- package/src/components/index.ts +1 -1
- package/src/hooks/index.ts +0 -1
- package/src/hooks/processor.ts +26 -4
- package/src/hooks/useChatProcessor.tsx +4 -3
- package/src/testing/test-services.ts +6 -6
- package/src/tools/function.ts +2 -2
- package/src/tools/openapi.ts +4 -3
- package/src/translations.ts +5 -4
- package/src/types/service.ts +39 -37
- package/src/types/template.ts +27 -25
- package/src/types/types.ts +20 -17
- 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-FMB7RGMP.mjs.map +0 -7
- package/dist/lib/browser/chunk-IAMR2FAE.mjs +0 -183
- package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +0 -7
- package/dist/lib/browser/chunk-KYMKVE6M.mjs +0 -128
- 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-APRU3QWK.cjs +0 -206
- package/dist/lib/node/chunk-APRU3QWK.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 +0 -129
- package/dist/lib/node-esm/chunk-GBBXIW5F.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MVDAY3CZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +0 -184
- package/dist/lib/node-esm/chunk-MXK2EANZ.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/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/hooks/invocation-handler.d.ts +0 -5
- package/dist/types/src/hooks/invocation-handler.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/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
- package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
- package/src/components/ServiceRegistry/index.ts +0 -5
- package/src/hooks/invocation-handler.ts +0 -107
- package/src/hooks/useLocalTriggerManager.ts +0 -82
- /package/dist/lib/browser/{AssistantDialog-YSHMAHW5.mjs.map → AssistantDialog-WX6EKSXI.mjs.map} +0 -0
- /package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs.map → AssistantDialog-2OTAZADX.cjs.map} +0 -0
- /package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs.map → AssistantDialog-GNLPYXY4.mjs.map} +0 -0
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',
|
|
@@ -46,7 +47,7 @@ export default [
|
|
|
46
47
|
|
|
47
48
|
'settings default label': 'Default',
|
|
48
49
|
'settings custom prompts label': 'Use custom prompts',
|
|
49
|
-
'settings llm provider label': '
|
|
50
|
+
'settings llm provider label': 'LLM provider',
|
|
50
51
|
'settings edge llm model label': 'Remote language model',
|
|
51
52
|
'settings ollama llm model label': 'Ollama language model',
|
|
52
53
|
},
|
package/src/types/service.ts
CHANGED
|
@@ -2,78 +2,80 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { Schema } from 'effect';
|
|
6
|
+
|
|
5
7
|
import { ComputeGraph } from '@dxos/conductor';
|
|
6
|
-
import { Ref,
|
|
7
|
-
import { FunctionType } from '@dxos/functions
|
|
8
|
-
|
|
9
|
-
const ApiAuthorizationKey =
|
|
10
|
-
type:
|
|
11
|
-
key:
|
|
12
|
-
placement:
|
|
13
|
-
|
|
14
|
-
type:
|
|
8
|
+
import { Ref, TypedObject, type Ref$ } from '@dxos/echo-schema';
|
|
9
|
+
import { FunctionType } from '@dxos/functions';
|
|
10
|
+
|
|
11
|
+
const ApiAuthorizationKey = Schema.Struct({
|
|
12
|
+
type: Schema.Literal('api-key'),
|
|
13
|
+
key: Schema.String,
|
|
14
|
+
placement: Schema.Union(
|
|
15
|
+
Schema.Struct({
|
|
16
|
+
type: Schema.Literal('authorization-header'),
|
|
15
17
|
}),
|
|
16
|
-
|
|
17
|
-
type:
|
|
18
|
-
name:
|
|
18
|
+
Schema.Struct({
|
|
19
|
+
type: Schema.Literal('query'),
|
|
20
|
+
name: Schema.String,
|
|
19
21
|
}),
|
|
20
22
|
),
|
|
21
23
|
});
|
|
22
24
|
|
|
23
|
-
const ApiAuthorizationOauth =
|
|
24
|
-
type:
|
|
25
|
-
clientId:
|
|
26
|
-
clientSecret:
|
|
27
|
-
tokenUrl:
|
|
28
|
-
grantType:
|
|
25
|
+
const ApiAuthorizationOauth = Schema.Struct({
|
|
26
|
+
type: Schema.Literal('oauth'),
|
|
27
|
+
clientId: Schema.String,
|
|
28
|
+
clientSecret: Schema.String,
|
|
29
|
+
tokenUrl: Schema.String,
|
|
30
|
+
grantType: Schema.String,
|
|
29
31
|
});
|
|
30
32
|
|
|
31
|
-
export const ApiAuthorization =
|
|
32
|
-
export type ApiAuthorization =
|
|
33
|
+
export const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
|
|
34
|
+
export type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;
|
|
33
35
|
|
|
34
|
-
const ServiceInterfaceFunction =
|
|
35
|
-
kind:
|
|
36
|
+
const ServiceInterfaceFunction = Schema.Struct({
|
|
37
|
+
kind: Schema.Literal('function'),
|
|
36
38
|
fn: Ref(FunctionType) as Ref$<FunctionType>,
|
|
37
39
|
});
|
|
38
40
|
|
|
39
|
-
const ServiceInterfaceWorkflow =
|
|
40
|
-
kind:
|
|
41
|
+
const ServiceInterfaceWorkflow = Schema.Struct({
|
|
42
|
+
kind: Schema.Literal('workflow'),
|
|
41
43
|
workflow: Ref(ComputeGraph) as Ref$<ComputeGraph>,
|
|
42
44
|
});
|
|
43
45
|
|
|
44
|
-
const ServiceInterfaceApi =
|
|
45
|
-
kind:
|
|
46
|
+
const ServiceInterfaceApi = Schema.Struct({
|
|
47
|
+
kind: Schema.Literal('api'),
|
|
46
48
|
|
|
47
49
|
/**
|
|
48
50
|
* URL to fetch the openapi schema.
|
|
49
51
|
*/
|
|
50
|
-
schemaUrl:
|
|
52
|
+
schemaUrl: Schema.optional(Schema.String),
|
|
51
53
|
|
|
52
54
|
/**
|
|
53
55
|
* Inlined openapi schema.
|
|
54
56
|
*/
|
|
55
|
-
schema:
|
|
57
|
+
schema: Schema.optional(Schema.Any),
|
|
56
58
|
|
|
57
59
|
/**
|
|
58
60
|
* Authorization configuration if required.
|
|
59
61
|
*/
|
|
60
|
-
authorization:
|
|
62
|
+
authorization: Schema.optional(ApiAuthorization),
|
|
61
63
|
});
|
|
62
64
|
|
|
63
|
-
const ServiceInterface =
|
|
64
|
-
export type ServiceInterface =
|
|
65
|
+
const ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
|
|
66
|
+
export type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;
|
|
65
67
|
|
|
66
68
|
export class ServiceType extends TypedObject({ typename: 'dxos.org/type/ServiceType', version: '0.1.0' })({
|
|
67
|
-
serviceId:
|
|
68
|
-
name:
|
|
69
|
-
description:
|
|
70
|
-
category:
|
|
71
|
-
enabled:
|
|
69
|
+
serviceId: Schema.String,
|
|
70
|
+
name: Schema.optional(Schema.String),
|
|
71
|
+
description: Schema.optional(Schema.String),
|
|
72
|
+
category: Schema.optional(Schema.String),
|
|
73
|
+
enabled: Schema.optional(Schema.Boolean),
|
|
72
74
|
|
|
73
75
|
/**
|
|
74
76
|
* Entries exposed: functions, workflows, and APIs.
|
|
75
77
|
*/
|
|
76
|
-
interfaces:
|
|
78
|
+
interfaces: Schema.optional(Schema.Array(ServiceInterface)),
|
|
77
79
|
}) {}
|
|
78
80
|
|
|
79
81
|
//
|
package/src/types/template.ts
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { Schema } from 'effect';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import { TypedObject } from '@dxos/echo-schema';
|
|
8
|
+
|
|
9
|
+
// TODO(burdon): Change to Schema.Literal (and discriminated union).
|
|
8
10
|
export enum TemplateInputType {
|
|
9
11
|
VALUE = 0,
|
|
10
12
|
PASS_THROUGH = 1,
|
|
@@ -16,41 +18,41 @@ export enum TemplateInputType {
|
|
|
16
18
|
SCHEMA = 7,
|
|
17
19
|
}
|
|
18
20
|
|
|
19
|
-
export const TemplateInputSchema =
|
|
20
|
-
|
|
21
|
-
name:
|
|
22
|
-
type:
|
|
23
|
-
value:
|
|
21
|
+
export const TemplateInputSchema = Schema.mutable(
|
|
22
|
+
Schema.Struct({
|
|
23
|
+
name: Schema.String,
|
|
24
|
+
type: Schema.optional(Schema.Enums(TemplateInputType)),
|
|
25
|
+
value: Schema.optional(Schema.String),
|
|
24
26
|
}),
|
|
25
27
|
);
|
|
26
28
|
|
|
27
|
-
export type TemplateInput =
|
|
29
|
+
export type TemplateInput = Schema.Schema.Type<typeof TemplateInputSchema>;
|
|
28
30
|
|
|
29
31
|
export const TemplateKinds = ['always', 'schema-matching', 'automatically', 'manual'] as const;
|
|
30
32
|
export type TemplateKind = (typeof TemplateKinds)[number];
|
|
31
33
|
|
|
32
|
-
export const TemplateKindSchema =
|
|
33
|
-
|
|
34
|
-
include:
|
|
34
|
+
export const TemplateKindSchema = Schema.Union(
|
|
35
|
+
Schema.Struct({
|
|
36
|
+
include: Schema.Literal('always'),
|
|
35
37
|
}),
|
|
36
|
-
|
|
37
|
-
include:
|
|
38
|
-
typename:
|
|
38
|
+
Schema.Struct({
|
|
39
|
+
include: Schema.Literal('schema-matching'),
|
|
40
|
+
typename: Schema.String,
|
|
39
41
|
}),
|
|
40
|
-
|
|
41
|
-
include:
|
|
42
|
-
description:
|
|
42
|
+
Schema.Struct({
|
|
43
|
+
include: Schema.Literal('automatically'),
|
|
44
|
+
description: Schema.String,
|
|
43
45
|
}),
|
|
44
|
-
|
|
45
|
-
include:
|
|
46
|
+
Schema.Struct({
|
|
47
|
+
include: Schema.Literal('manual'),
|
|
46
48
|
}),
|
|
47
49
|
);
|
|
48
50
|
|
|
49
|
-
export type TemplateKindType =
|
|
51
|
+
export type TemplateKindType = Schema.Schema.Type<typeof TemplateKindSchema>;
|
|
50
52
|
export class TemplateType extends TypedObject({ typename: 'dxos.org/type/Template', version: '0.1.0' })({
|
|
51
|
-
name:
|
|
52
|
-
kind:
|
|
53
|
-
source:
|
|
54
|
-
inputs:
|
|
55
|
-
command:
|
|
53
|
+
name: Schema.optional(Schema.String),
|
|
54
|
+
kind: Schema.mutable(TemplateKindSchema),
|
|
55
|
+
source: Schema.String,
|
|
56
|
+
inputs: Schema.optional(Schema.mutable(Schema.Array(TemplateInputSchema))),
|
|
57
|
+
command: Schema.optional(Schema.String),
|
|
56
58
|
}) {}
|
package/src/types/types.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { Schema } from 'effect';
|
|
6
6
|
|
|
7
7
|
import { AIChatType } from './chat';
|
|
8
8
|
import { TemplateType } from './template';
|
|
@@ -11,33 +11,36 @@ import { ASSISTANT_PLUGIN } from '../meta';
|
|
|
11
11
|
export namespace AssistantAction {
|
|
12
12
|
const ASSISTANT_ACTION = `${ASSISTANT_PLUGIN}/action`;
|
|
13
13
|
|
|
14
|
-
export class CreateChat extends
|
|
15
|
-
input:
|
|
16
|
-
spaceId:
|
|
17
|
-
name:
|
|
14
|
+
export class CreateChat extends Schema.TaggedClass<CreateChat>()(`${ASSISTANT_ACTION}/create-chat`, {
|
|
15
|
+
input: Schema.Struct({
|
|
16
|
+
spaceId: Schema.optional(Schema.String),
|
|
17
|
+
name: Schema.optional(Schema.String),
|
|
18
18
|
}),
|
|
19
|
-
output:
|
|
19
|
+
output: Schema.Struct({
|
|
20
20
|
object: AIChatType,
|
|
21
21
|
}),
|
|
22
22
|
}) {}
|
|
23
23
|
|
|
24
|
-
export class CreateTemplate extends
|
|
25
|
-
input:
|
|
26
|
-
name:
|
|
24
|
+
export class CreateTemplate extends Schema.TaggedClass<CreateTemplate>()(`${ASSISTANT_ACTION}/create-template`, {
|
|
25
|
+
input: Schema.Struct({
|
|
26
|
+
name: Schema.optional(Schema.String),
|
|
27
27
|
}),
|
|
28
|
-
output:
|
|
28
|
+
output: Schema.Struct({
|
|
29
29
|
object: TemplateType,
|
|
30
30
|
}),
|
|
31
31
|
}) {}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
export const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
export const LLM_PROVIDERS = ['edge', 'ollama', 'lmstudio'] as const;
|
|
35
|
+
|
|
36
|
+
export const AssistantSettingsSchema = Schema.mutable(
|
|
37
|
+
Schema.Struct({
|
|
38
|
+
llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),
|
|
39
|
+
edgeModel: Schema.optional(Schema.String),
|
|
40
|
+
ollamaModel: Schema.optional(Schema.String),
|
|
41
|
+
lmstudioModel: Schema.optional(Schema.String),
|
|
42
|
+
customPrompts: Schema.optional(Schema.Boolean),
|
|
40
43
|
}),
|
|
41
44
|
);
|
|
42
45
|
|
|
43
|
-
export type AssistantSettingsProps =
|
|
46
|
+
export type AssistantSettingsProps = Schema.Schema.Type<typeof AssistantSettingsSchema>;
|
|
@@ -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": "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",
|
|
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
|
-
}
|