@dxos/plugin-assistant 0.8.2-main.12df754 → 0.8.2-main.30e4dbb

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.
Files changed (185) hide show
  1. package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs → AssistantDialog-BUHPFIHN.mjs} +3 -3
  2. package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs → ChatContainer-X7JBCLFK.mjs} +3 -3
  3. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs → ai-client-OK5SMYJC.mjs} +1 -1
  4. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs.map → ai-client-OK5SMYJC.mjs.map} +2 -2
  5. package/dist/lib/browser/{app-graph-builder-GU6ZWSP4.mjs → app-graph-builder-JJCBQZGC.mjs} +7 -37
  6. package/dist/lib/browser/app-graph-builder-JJCBQZGC.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-5P7U35RJ.mjs +192 -0
  8. package/dist/lib/browser/chunk-5P7U35RJ.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-SBFJKCVU.mjs → chunk-PFIXSSN2.mjs} +24 -69
  10. package/dist/lib/browser/chunk-PFIXSSN2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-FQ4L5NYW.mjs → chunk-QGZETTI3.mjs} +111 -121
  12. package/dist/lib/browser/chunk-QGZETTI3.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +8 -8
  14. package/dist/lib/browser/index.mjs.map +2 -2
  15. package/dist/lib/browser/{intent-resolver-YAQELTFQ.mjs → intent-resolver-54SA6LXM.mjs} +4 -4
  16. package/dist/lib/browser/intent-resolver-54SA6LXM.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{react-surface-JOATHBJ4.mjs → react-surface-JSHNKGXY.mjs} +9 -18
  19. package/dist/lib/browser/react-surface-JSHNKGXY.mjs.map +7 -0
  20. package/dist/lib/browser/{settings-PAJLJEVW.mjs → settings-OZX7J65A.mjs} +2 -2
  21. package/dist/lib/browser/types/index.mjs +3 -1
  22. package/dist/lib/node/{AssistantDialog-7V7RRSIL.cjs → AssistantDialog-XIAFCAGB.cjs} +7 -7
  23. package/dist/lib/node/{ChatContainer-UWYNOALW.cjs → ChatContainer-MAGI5QD6.cjs} +7 -7
  24. package/dist/lib/node/{ai-client-URCCYU6B.cjs → ai-client-3EVTLXTT.cjs} +4 -4
  25. package/dist/lib/node/{ai-client-URCCYU6B.cjs.map → ai-client-3EVTLXTT.cjs.map} +2 -2
  26. package/dist/lib/node/{app-graph-builder-CEMLCKAF.cjs → app-graph-builder-7EJJHBRH.cjs} +14 -44
  27. package/dist/lib/node/app-graph-builder-7EJJHBRH.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-ENBPNIJZ.cjs → chunk-EWY6HDMS.cjs} +118 -121
  29. package/dist/lib/node/chunk-EWY6HDMS.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-KWBQ5P7D.cjs → chunk-V4WPZXN2.cjs} +28 -69
  31. package/dist/lib/node/chunk-V4WPZXN2.cjs.map +7 -0
  32. package/dist/lib/node/chunk-VG2UQY4S.cjs +216 -0
  33. package/dist/lib/node/chunk-VG2UQY4S.cjs.map +7 -0
  34. package/dist/lib/node/index.cjs +41 -41
  35. package/dist/lib/node/index.cjs.map +3 -3
  36. package/dist/lib/node/{intent-resolver-RNMYSJ3E.cjs → intent-resolver-UP5FPVWP.cjs} +11 -11
  37. package/dist/lib/node/intent-resolver-UP5FPVWP.cjs.map +7 -0
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-7RIXMLMN.cjs → react-surface-M3OXAXKR.cjs} +22 -30
  40. package/dist/lib/node/react-surface-M3OXAXKR.cjs.map +7 -0
  41. package/dist/lib/node/{settings-JBEYMZ4S.cjs → settings-WLTC7XO5.cjs} +6 -6
  42. package/dist/lib/node/types/index.cjs +14 -12
  43. package/dist/lib/node/types/index.cjs.map +2 -2
  44. package/dist/lib/node-esm/{AssistantDialog-N24M73FW.mjs → AssistantDialog-SDGQK5TF.mjs} +3 -3
  45. package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs → ChatContainer-AM4BDTXU.mjs} +3 -3
  46. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs → ai-client-LYCBXZI7.mjs} +1 -1
  47. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs.map → ai-client-LYCBXZI7.mjs.map} +2 -2
  48. package/dist/lib/node-esm/{app-graph-builder-Y45WYAWL.mjs → app-graph-builder-ZDI7EVEN.mjs} +7 -37
  49. package/dist/lib/node-esm/app-graph-builder-ZDI7EVEN.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-JE47GNTB.mjs → chunk-RDU7QEFL.mjs} +111 -121
  51. package/dist/lib/node-esm/chunk-RDU7QEFL.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-PFWTW22U.mjs → chunk-RN3I3BVC.mjs} +24 -69
  53. package/dist/lib/node-esm/chunk-RN3I3BVC.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs +193 -0
  55. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs.map +7 -0
  56. package/dist/lib/node-esm/index.mjs +8 -8
  57. package/dist/lib/node-esm/index.mjs.map +2 -2
  58. package/dist/lib/node-esm/{intent-resolver-V2ZFI5C4.mjs → intent-resolver-JKWFZYLN.mjs} +4 -4
  59. package/dist/lib/node-esm/intent-resolver-JKWFZYLN.mjs.map +7 -0
  60. package/dist/lib/node-esm/meta.json +1 -1
  61. package/dist/lib/node-esm/{react-surface-UUHNOYST.mjs → react-surface-RZBDBP42.mjs} +9 -18
  62. package/dist/lib/node-esm/react-surface-RZBDBP42.mjs.map +7 -0
  63. package/dist/lib/node-esm/{settings-KAMA6RIY.mjs → settings-CLE57WEP.mjs} +2 -2
  64. package/dist/lib/node-esm/types/index.mjs +3 -1
  65. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  66. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/index.d.ts +1 -1
  68. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  70. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  71. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  72. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  73. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -1
  74. package/dist/types/src/components/Prompt/references.d.ts.map +1 -1
  75. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  76. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  77. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  78. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  79. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -2
  80. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  81. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  82. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  83. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  84. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -1
  86. package/dist/types/src/components/Toolbox/Toolbox.d.ts +1 -1
  87. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  88. package/dist/types/src/components/index.d.ts +0 -1
  89. package/dist/types/src/components/index.d.ts.map +1 -1
  90. package/dist/types/src/hooks/index.d.ts +0 -1
  91. package/dist/types/src/hooks/index.d.ts.map +1 -1
  92. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  93. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  94. package/dist/types/src/hooks/useContextProvider.d.ts +1 -1
  95. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  96. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  97. package/dist/types/src/hooks/useServices.d.ts.map +1 -1
  98. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -1
  99. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  100. package/dist/types/src/tools/function.d.ts +2 -2
  101. package/dist/types/src/tools/function.d.ts.map +1 -1
  102. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  103. package/dist/types/src/translations.d.ts +6 -60
  104. package/dist/types/src/translations.d.ts.map +1 -1
  105. package/dist/types/src/types/service.d.ts +96 -95
  106. package/dist/types/src/types/service.d.ts.map +1 -1
  107. package/dist/types/src/types/template.d.ts +52 -52
  108. package/dist/types/src/types/template.d.ts.map +1 -1
  109. package/dist/types/src/types/types.d.ts +20 -18
  110. package/dist/types/src/types/types.d.ts.map +1 -1
  111. package/dist/types/tsconfig.tsbuildinfo +1 -1
  112. package/package.json +61 -58
  113. package/src/AssistantPlugin.tsx +2 -2
  114. package/src/capabilities/ai-client.ts +0 -1
  115. package/src/capabilities/app-graph-builder.ts +4 -28
  116. package/src/capabilities/index.ts +1 -1
  117. package/src/capabilities/intent-resolver.ts +2 -2
  118. package/src/capabilities/react-surface.tsx +6 -19
  119. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +1 -1
  120. package/src/components/AssistantSettings/AssistantSettings.tsx +28 -6
  121. package/src/components/Prompt/Prompt.stories.tsx +1 -1
  122. package/src/components/Prompt/PromptBar.tsx +4 -12
  123. package/src/components/PromptSettings.tsx +2 -2
  124. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  125. package/src/components/Thread/Thread.stories.tsx +12 -15
  126. package/src/components/Thread/ThreadContainer.stories.tsx +9 -9
  127. package/src/components/Thread/ThreadMessage.tsx +6 -3
  128. package/src/components/Toolbox/Toolbox.stories.tsx +1 -1
  129. package/src/components/Toolbox/Toolbox.tsx +1 -1
  130. package/src/components/index.ts +0 -1
  131. package/src/hooks/index.ts +0 -1
  132. package/src/hooks/processor.ts +25 -2
  133. package/src/hooks/useChatProcessor.tsx +5 -4
  134. package/src/hooks/useContextProvider.ts +9 -9
  135. package/src/tools/function.ts +4 -6
  136. package/src/tools/openapi.ts +4 -3
  137. package/src/translations.ts +1 -1
  138. package/src/types/service.ts +39 -37
  139. package/src/types/template.ts +27 -25
  140. package/src/types/types.ts +20 -17
  141. package/dist/lib/browser/app-graph-builder-GU6ZWSP4.mjs.map +0 -7
  142. package/dist/lib/browser/chunk-FQ4L5NYW.mjs.map +0 -7
  143. package/dist/lib/browser/chunk-IAMR2FAE.mjs +0 -183
  144. package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-SBFJKCVU.mjs.map +0 -7
  146. package/dist/lib/browser/intent-resolver-YAQELTFQ.mjs.map +0 -7
  147. package/dist/lib/browser/react-surface-JOATHBJ4.mjs.map +0 -7
  148. package/dist/lib/node/app-graph-builder-CEMLCKAF.cjs.map +0 -7
  149. package/dist/lib/node/chunk-APRU3QWK.cjs +0 -206
  150. package/dist/lib/node/chunk-APRU3QWK.cjs.map +0 -7
  151. package/dist/lib/node/chunk-ENBPNIJZ.cjs.map +0 -7
  152. package/dist/lib/node/chunk-KWBQ5P7D.cjs.map +0 -7
  153. package/dist/lib/node/intent-resolver-RNMYSJ3E.cjs.map +0 -7
  154. package/dist/lib/node/react-surface-7RIXMLMN.cjs.map +0 -7
  155. package/dist/lib/node-esm/app-graph-builder-Y45WYAWL.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-JE47GNTB.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +0 -184
  158. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs.map +0 -7
  159. package/dist/lib/node-esm/chunk-PFWTW22U.mjs.map +0 -7
  160. package/dist/lib/node-esm/intent-resolver-V2ZFI5C4.mjs.map +0 -7
  161. package/dist/lib/node-esm/react-surface-UUHNOYST.mjs.map +0 -7
  162. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
  163. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
  164. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
  165. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
  166. package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
  167. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
  168. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  169. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  170. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  171. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  172. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
  173. package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
  174. package/src/components/ServiceRegistry/index.ts +0 -5
  175. package/src/hooks/invocation-handler.ts +0 -107
  176. package/src/hooks/useLocalTriggerManager.ts +0 -82
  177. /package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs.map → AssistantDialog-BUHPFIHN.mjs.map} +0 -0
  178. /package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs.map → ChatContainer-X7JBCLFK.mjs.map} +0 -0
  179. /package/dist/lib/browser/{settings-PAJLJEVW.mjs.map → settings-OZX7J65A.mjs.map} +0 -0
  180. /package/dist/lib/node/{AssistantDialog-7V7RRSIL.cjs.map → AssistantDialog-XIAFCAGB.cjs.map} +0 -0
  181. /package/dist/lib/node/{ChatContainer-UWYNOALW.cjs.map → ChatContainer-MAGI5QD6.cjs.map} +0 -0
  182. /package/dist/lib/node/{settings-JBEYMZ4S.cjs.map → settings-WLTC7XO5.cjs.map} +0 -0
  183. /package/dist/lib/node-esm/{AssistantDialog-N24M73FW.mjs.map → AssistantDialog-SDGQK5TF.mjs.map} +0 -0
  184. /package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs.map → ChatContainer-AM4BDTXU.mjs.map} +0 -0
  185. /package/dist/lib/node-esm/{settings-KAMA6RIY.mjs.map → settings-CLE57WEP.mjs.map} +0 -0
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Match, type Schema as S } from 'effect';
5
+ import { Match, type Schema } from 'effect';
6
6
  import React, { type ChangeEvent, useCallback } from 'react';
7
7
 
8
8
  import { debounce } from '@dxos/async';
@@ -17,7 +17,7 @@ export const PromptSettings = ({ template }: { template: TemplateType }) => {
17
17
  const handleKindChange = useCallback(
18
18
  (value: string) => {
19
19
  const kind = Match.type<string>().pipe(
20
- Match.withReturnType<S.Schema.Type<typeof TemplateKindSchema>>(),
20
+ Match.withReturnType<Schema.Schema.Type<typeof TemplateKindSchema>>(),
21
21
  Match.when('always', () => ({ include: 'always' })),
22
22
  Match.when('schema-matching', () => ({ include: 'schema-matching', typename: '' })),
23
23
  Match.when('automatically', () => ({ include: 'automatically', description: '' })),
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type Schema as S } from 'effect';
5
+ import { type Schema } from 'effect';
6
6
  import React, { Fragment, useEffect } from 'react';
7
7
 
8
8
  import { Input, Select, useTranslation } from '@dxos/react-ui';
@@ -15,7 +15,7 @@ import { type TemplateInput, TemplateInputType, type TemplateType } from '../../
15
15
 
16
16
  export type TemplateFormProps = {
17
17
  template: TemplateType;
18
- schema?: S.Schema<any, any, any>;
18
+ schema?: Schema.Schema<any, any, any>;
19
19
  commandEditable?: boolean;
20
20
  };
21
21
 
@@ -10,7 +10,7 @@ import React, { useCallback, useEffect, useState } from 'react';
10
10
  import { IntentPlugin } from '@dxos/app-framework';
11
11
  import { withPluginManager } from '@dxos/app-framework/testing';
12
12
  import { type Message } from '@dxos/artifact';
13
- import { ObjectId } from '@dxos/echo-schema';
13
+ import { Type } from '@dxos/echo';
14
14
  import { faker } from '@dxos/random';
15
15
  import { withClientProvider } from '@dxos/react-client/testing';
16
16
  import { withLayout, withSignals, withTheme } from '@dxos/storybook-utils';
@@ -29,9 +29,9 @@ const DefaultStory = ({ messages: _messages, ...props }: ThreadProps) => {
29
29
 
30
30
  const handleSubmit = useCallback(
31
31
  (text: string) => {
32
- const request: Message = { id: ObjectId.random(), role: 'user', content: [{ type: 'text', text }] };
32
+ const request: Message = { id: Type.ObjectId.random(), role: 'user', content: [{ type: 'text', text }] };
33
33
  const response: Message = {
34
- id: ObjectId.random(),
34
+ id: Type.ObjectId.random(),
35
35
  role: 'assistant',
36
36
  content: [{ type: 'text', disposition: 'cot', pending: true, text: faker.lorem.paragraphs(1) }],
37
37
  };
@@ -44,7 +44,7 @@ const DefaultStory = ({ messages: _messages, ...props }: ThreadProps) => {
44
44
  request,
45
45
  response,
46
46
  {
47
- id: ObjectId.random(),
47
+ id: Type.ObjectId.random(),
48
48
  role: 'assistant',
49
49
  content: [{ type: 'text', text: faker.lorem.paragraphs(1) }],
50
50
  },
@@ -74,13 +74,10 @@ const meta: Meta<ThreadProps> = {
74
74
  component: Thread,
75
75
  decorators: [
76
76
  withSignals,
77
- withClientProvider({
78
- createIdentity: true,
79
- createSpace: true,
80
- }),
77
+ withClientProvider({ createIdentity: true, createSpace: true }),
81
78
  withPluginManager({ plugins: [IntentPlugin()] }),
82
79
  withTheme,
83
- withLayout({ fullscreen: true, tooltips: true, classNames: 'flex justify-center' }),
80
+ withLayout({ fullscreen: true, classNames: 'flex justify-center' }),
84
81
  ],
85
82
  parameters: {
86
83
  translations,
@@ -93,7 +90,7 @@ type Story = StoryObj<ThreadProps>;
93
90
 
94
91
  const TEST_MESSAGES: Message[] = [
95
92
  {
96
- id: ObjectId.random(),
93
+ id: Type.ObjectId.random(),
97
94
  role: 'user',
98
95
  content: [
99
96
  {
@@ -103,7 +100,7 @@ const TEST_MESSAGES: Message[] = [
103
100
  ],
104
101
  },
105
102
  {
106
- id: ObjectId.random(),
103
+ id: Type.ObjectId.random(),
107
104
  role: 'assistant',
108
105
  content: [
109
106
  {
@@ -128,7 +125,7 @@ const TEST_MESSAGES: Message[] = [
128
125
  ],
129
126
  },
130
127
  {
131
- id: ObjectId.random(),
128
+ id: Type.ObjectId.random(),
132
129
  role: 'user',
133
130
  content: [
134
131
  {
@@ -139,7 +136,7 @@ const TEST_MESSAGES: Message[] = [
139
136
  ],
140
137
  },
141
138
  {
142
- id: ObjectId.random(),
139
+ id: Type.ObjectId.random(),
143
140
  role: 'assistant',
144
141
  content: [
145
142
  {
@@ -151,7 +148,7 @@ const TEST_MESSAGES: Message[] = [
151
148
  ],
152
149
  },
153
150
  {
154
- id: ObjectId.random(),
151
+ id: Type.ObjectId.random(),
155
152
  role: 'user',
156
153
  content: [
157
154
  {
@@ -162,7 +159,7 @@ const TEST_MESSAGES: Message[] = [
162
159
  ],
163
160
  },
164
161
  {
165
- id: ObjectId.random(),
162
+ id: Type.ObjectId.random(),
166
163
  role: 'assistant',
167
164
  content: [
168
165
  {
@@ -18,11 +18,11 @@ import {
18
18
  } from '@dxos/app-framework';
19
19
  import { withPluginManager } from '@dxos/app-framework/testing';
20
20
  import { Message, type Tool } from '@dxos/artifact';
21
- import { genericTools, localServiceEndpoints, type IsObject } from '@dxos/artifact-testing';
21
+ import { genericTools, localServiceEndpoints } from '@dxos/artifact-testing';
22
22
  import { AIServiceEdgeClient } from '@dxos/assistant';
23
- import { create, ObjectId } from '@dxos/echo-schema';
23
+ import { DXN, Type } from '@dxos/echo';
24
+ import { create } from '@dxos/echo-schema';
24
25
  import { invariant } from '@dxos/invariant';
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,7 +30,7 @@ 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 { randomQueueDxn, useQueue, useSpace } from '@dxos/react-client/echo';
33
+ import { createQueueDxn, useQueue, useSpace } from '@dxos/react-client/echo';
34
34
  import { IconButton, Input, Toolbar } from '@dxos/react-ui';
35
35
  import { mx } from '@dxos/react-ui-theme';
36
36
  import { withLayout, withTheme } from '@dxos/storybook-utils';
@@ -43,7 +43,7 @@ import translations from '../../translations';
43
43
  const endpoints = localServiceEndpoints;
44
44
 
45
45
  type RenderProps = {
46
- items?: IsObject[];
46
+ items?: Type.AnyObject[];
47
47
  prompts?: string[];
48
48
  } & Pick<ThreadProps, 'debug'>;
49
49
 
@@ -76,7 +76,7 @@ const DefaultStory = ({ items: _items, prompts = [], ...props }: RenderProps) =>
76
76
  }, [aiClient, tools, space, dispatch, artifactDefinitions]);
77
77
 
78
78
  // Queue.
79
- const [queueDxn, setQueueDxn] = useState<string>(() => randomQueueDxn().toString());
79
+ const [queueDxn, setQueueDxn] = useState<string>(() => createQueueDxn().toString());
80
80
  const queue = useQueue<Message>(DXN.tryParse(queueDxn));
81
81
 
82
82
  useEffect(() => {
@@ -131,7 +131,7 @@ const DefaultStory = ({ items: _items, prompts = [], ...props }: RenderProps) =>
131
131
 
132
132
  const handleDelete = useCallback(
133
133
  (id: string) => {
134
- invariant(ObjectId.isValid(id), 'Invalid message id');
134
+ invariant(Type.ObjectId.isValid(id), 'Invalid message id');
135
135
  void queue?.delete([id]);
136
136
  },
137
137
  [queue],
@@ -159,7 +159,7 @@ const DefaultStory = ({ items: _items, prompts = [], ...props }: RenderProps) =>
159
159
  iconOnly
160
160
  label='Clear history'
161
161
  icon='ph--trash--regular'
162
- onClick={() => setQueueDxn(randomQueueDxn().toString())}
162
+ onClick={() => setQueueDxn(createQueueDxn().toString())}
163
163
  />
164
164
  <IconButton iconOnly label='Stop' icon='ph--stop--regular' onClick={() => processor?.cancel()} />
165
165
  </Input.Root>
@@ -224,7 +224,7 @@ const meta: Meta<typeof DefaultStory> = {
224
224
  fireEvents: [Events.SetupArtifactDefinition],
225
225
  }),
226
226
  withTheme,
227
- withLayout({ fullscreen: true, tooltips: true }),
227
+ withLayout({ fullscreen: true }),
228
228
  ],
229
229
  parameters: {
230
230
  translations,
@@ -21,7 +21,7 @@ import { ToolBlock, isToolMessage } from './ToolInvocations';
21
21
  import { ToolboxContainer } from '../Toolbox';
22
22
 
23
23
  const panelClassNames = 'flex flex-col w-full px-2 bg-groupSurface rounded-md';
24
- const userClassNames = 'bg-[--user-fill] text-inverse';
24
+ const userClassNames = 'bg-[--user-fill] text-accentSurfaceText';
25
25
 
26
26
  const ToggleContainer = (props: ToggleContainerProps) => {
27
27
  return <NativeToggleContainer {...props} classNames={mx(panelClassNames, props.classNames)} />;
@@ -105,7 +105,7 @@ const components: Record<string, BlockComponent> = {
105
105
  return (
106
106
  <ToggleContainer
107
107
  // open={open}
108
- defaultOpen={block.disposition === 'cot' && block.pending}
108
+ defaultOpen={systemDispositions.includes(block.disposition ?? '') && block.pending}
109
109
  title={title}
110
110
  icon={
111
111
  block.pending ? (
@@ -115,7 +115,7 @@ const components: Record<string, BlockComponent> = {
115
115
  >
116
116
  <MarkdownViewer
117
117
  content={block.text}
118
- classNames={['pbe-2', block.disposition === 'cot' && 'text-sm text-subdued']}
118
+ classNames={['pbe-2', systemDispositions.includes(block.disposition ?? '') && 'text-sm text-subdued']}
119
119
  />
120
120
  </ToggleContainer>
121
121
  );
@@ -193,4 +193,7 @@ const titles: Record<string, string> = {
193
193
  ['tool_use' as const]: 'Tool request',
194
194
  ['tool_result' as const]: 'Tool result',
195
195
  ['tool_list' as const]: 'Tools',
196
+ ['artifact-update' as const]: 'Artifact(s) changed',
196
197
  };
198
+
199
+ const systemDispositions: string[] = ['cot', 'artifact-update'];
@@ -54,7 +54,7 @@ const meta: Meta<typeof Toolbox> = {
54
54
  capabilities,
55
55
  }),
56
56
  withTheme,
57
- withLayout({ tooltips: true }),
57
+ withLayout(),
58
58
  ],
59
59
  parameters: {
60
60
  translations,
@@ -6,7 +6,7 @@ import React, { useState, useEffect, Fragment, type FC } from 'react';
6
6
 
7
7
  import { Capabilities, useCapabilities } from '@dxos/app-framework';
8
8
  import { parseToolName, type ArtifactDefinition, type Tool } from '@dxos/artifact';
9
- import { FunctionType } from '@dxos/functions/types';
9
+ import { FunctionType } from '@dxos/functions';
10
10
  import { log } from '@dxos/log';
11
11
  import { Filter, type Space, useQuery } from '@dxos/react-client/echo';
12
12
  import { type ThemedClassName } from '@dxos/react-ui';
@@ -6,7 +6,6 @@ import { lazy } from 'react';
6
6
 
7
7
  export * from './AssistantSettings';
8
8
  export * from './PromptSettings';
9
- export * from './ServiceRegistry';
10
9
  export * from './TemplateEditor';
11
10
  export * from './Thread';
12
11
  export * from './Toolbox';
@@ -5,7 +5,6 @@
5
5
  export * from './processor';
6
6
 
7
7
  export * from './useChatProcessor';
8
- export * from './useLocalTriggerManager';
9
8
  export * from './useMessageQueue';
10
9
  export * from './useServices';
11
10
  export * from './useTextInputEvents';
@@ -9,7 +9,7 @@ import { type ArtifactDefinition, type Message, type MessageContentBlock, type T
9
9
  import { type AIServiceClient, AISession, DEFAULT_EDGE_MODEL, type GenerateRequest } from '@dxos/assistant';
10
10
  import { invariant } from '@dxos/invariant';
11
11
  import { log } from '@dxos/log';
12
- import { type Space } from '@dxos/react-client/echo';
12
+ import { getVersion, type Space } from '@dxos/react-client/echo';
13
13
 
14
14
  // TODO(burdon): Factor out.
15
15
  declare global {
@@ -99,7 +99,7 @@ export class ChatProcessor {
99
99
  * Make GPT request.
100
100
  */
101
101
  async request(message: string, options: RequestOptions = {}): Promise<Message[]> {
102
- this._session = new AISession({ operationModel: 'immediate' });
102
+ this._session = new AISession({ operationModel: 'configured' });
103
103
 
104
104
  // Message complete.
105
105
  this._session.message.on((message) => {
@@ -125,10 +125,33 @@ export class ChatProcessor {
125
125
  client: this._ai,
126
126
  history: options.history ?? [],
127
127
  artifacts: this._artifacts ?? [],
128
+ requiredArtifactIds: this._artifacts?.map((artifact) => artifact.id) ?? [],
128
129
  tools: this._tools ?? [],
129
130
  prompt: message,
130
131
  systemPrompt: this._options.systemPrompt,
131
132
  extensions: this._extensions,
133
+ artifactDiffResolver: async (artifacts) => {
134
+ const space = this._extensions?.space;
135
+ if (!space) {
136
+ return new Map();
137
+ }
138
+ const versions = new Map();
139
+ await Promise.all(
140
+ artifacts.map(async (artifact) => {
141
+ const {
142
+ objects: [object],
143
+ } = await space.db.query({ id: artifact.id }).run();
144
+ if (!object) {
145
+ return;
146
+ }
147
+ versions.set(artifact.id, {
148
+ version: getVersion(object),
149
+ diff: `Current state: ${JSON.stringify(object)}`,
150
+ });
151
+ }),
152
+ );
153
+ return versions;
154
+ },
132
155
  generationOptions: {
133
156
  model: this._options.model,
134
157
  },
@@ -7,7 +7,7 @@ import { useEffect, useMemo, useState } from 'react';
7
7
  import { Capabilities, useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework';
8
8
  import { type AssociatedArtifact, createSystemPrompt, type Tool } from '@dxos/artifact';
9
9
  import { DEFAULT_EDGE_MODEL, DEFAULT_OLLAMA_MODEL } from '@dxos/assistant';
10
- import { FunctionType } from '@dxos/functions/types';
10
+ import { FunctionType } from '@dxos/functions';
11
11
  import { log } from '@dxos/log';
12
12
  import { useConfig } from '@dxos/react-client';
13
13
  import { Filter, fullyQualifiedId, type Space, useQuery } from '@dxos/react-client/echo';
@@ -15,7 +15,7 @@ import { isNonNullable } from '@dxos/util';
15
15
 
16
16
  import { AssistantCapabilities } from '../capabilities';
17
17
  import { ChatProcessor, type ChatProcessorOptions } from '../hooks';
18
- import { covertFunctionToTool, createToolsFromService } from '../tools';
18
+ import { convertFunctionToTool, createToolsFromService } from '../tools';
19
19
  import { type AIChatType, type AssistantSettingsProps, ServiceType } from '../types';
20
20
 
21
21
  type UseChatProcessorProps = {
@@ -33,7 +33,8 @@ export const useChatProcessor = ({
33
33
  chat,
34
34
  space,
35
35
  settings,
36
- part = 'deck',
36
+ // part = 'deck',
37
+ part,
37
38
  associatedArtifact,
38
39
  }: UseChatProcessorProps): ChatProcessor => {
39
40
  const aiClient = useCapability(AssistantCapabilities.AiClient);
@@ -62,7 +63,7 @@ export const useChatProcessor = ({
62
63
  ...globalTools.flat(),
63
64
  ...serviceTools,
64
65
  ...functions
65
- .map((fn) => covertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? '', space?.id))
66
+ .map((fn) => convertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? '', space?.id))
66
67
  .filter(isNonNullable),
67
68
  ];
68
69
  const extensions = { space, dispatch, pivotId: chatId, part };
@@ -5,10 +5,10 @@
5
5
  import { useMemo } from 'react';
6
6
 
7
7
  import { Capabilities, useCapabilities } from '@dxos/app-framework';
8
- import type { Space } from '@dxos/client/echo';
9
- import { getDXN, getLabel, getSchema } from '@dxos/echo-schema';
8
+ import { Filter, type Space } from '@dxos/client/echo';
9
+ import { Type } from '@dxos/echo';
10
+ import { getLabel } from '@dxos/echo-schema';
10
11
  import { log } from '@dxos/log';
11
- import { Filter } from '@dxos/react-client/echo';
12
12
 
13
13
  export type ContextProvider = {
14
14
  query: (params: { query: string }) => Promise<Array<{ uri: string; label: string }>>;
@@ -33,21 +33,21 @@ export const useContextProvider = (space?: Space): ContextProvider | undefined =
33
33
  .run();
34
34
  return objects
35
35
  .map((object) => {
36
- log.info('object', { object, label: getLabel(getSchema(object)!, object) });
36
+ log.info('object', { object, label: getLabel(Type.getSchema(object)!, object) });
37
37
  return object;
38
38
  })
39
- .filter((object) => stringMatch(query, getLabel(getSchema(object)!, object) ?? ''))
40
- .filter((object) => !!getDXN(object))
39
+ .filter((object) => stringMatch(query, getLabel(Type.getSchema(object)!, object) ?? ''))
40
+ .filter((object) => !!Type.getDXN(object))
41
41
  .map((object) => ({
42
- uri: getDXN(object)!.toString(),
43
- label: getLabel(getSchema(object)!, object) ?? '',
42
+ uri: Type.getDXN(object)!.toString(),
43
+ label: getLabel(Type.getSchema(object)!, object) ?? '',
44
44
  }));
45
45
  },
46
46
  resolveMetadata: async ({ uri }) => {
47
47
  const object = await space.db.query({ id: uri }).first();
48
48
  return {
49
49
  uri,
50
- label: getLabel(getSchema(object)!, object) ?? '',
50
+ label: getLabel(Type.getSchema(object)!, object) ?? '',
51
51
  };
52
52
  },
53
53
  };
@@ -5,13 +5,13 @@
5
5
  import { defineTool, ToolResult } from '@dxos/artifact';
6
6
  import type { Tool } from '@dxos/artifact';
7
7
  import { toEffectSchema } from '@dxos/echo-schema';
8
- import { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions/types';
9
- import type { FunctionType } from '@dxos/functions/types';
8
+ import { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';
9
+ import type { FunctionType } from '@dxos/functions';
10
10
  import { log } from '@dxos/log';
11
11
  import type { SpaceId } from '@dxos/react-client/echo';
12
12
  import { getMeta } from '@dxos/react-client/echo';
13
13
 
14
- export const covertFunctionToTool = (
14
+ export const convertFunctionToTool = (
15
15
  fn: FunctionType,
16
16
  edgeUrl: string,
17
17
  spaceId?: SpaceId | undefined,
@@ -24,9 +24,7 @@ export const covertFunctionToTool = (
24
24
  if (!existingFunctionUrl) {
25
25
  return undefined;
26
26
  }
27
- const url = getInvocationUrl(existingFunctionUrl, edgeUrl, {
28
- spaceId,
29
- });
27
+ const url = getInvocationUrl(existingFunctionUrl, edgeUrl, { spaceId });
30
28
 
31
29
  return defineTool('user-function', {
32
30
  name: fn.name,
@@ -2,11 +2,12 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
5
6
  import jsonpointer from 'jsonpointer';
6
7
  import { type OpenAPIV2, type OpenAPIV3_1 } from 'openapi-types';
7
8
 
8
9
  import { ToolResult, type Tool } from '@dxos/artifact';
9
- import { JsonSchemaType, normalizeSchema, S, toEffectSchema } from '@dxos/echo-schema';
10
+ import { JsonSchemaType, normalizeSchema, toEffectSchema } from '@dxos/echo-schema';
10
11
  import { invariant } from '@dxos/invariant';
11
12
  import { log } from '@dxos/log';
12
13
  import { deepMapValues } from '@dxos/util';
@@ -82,7 +83,7 @@ export const createToolsFromApi = async (url: string, options?: CreateToolsFromA
82
83
  }
83
84
 
84
85
  log('inputSchema', { inputSchema });
85
- S.validateSync(JsonSchemaType)(inputSchema);
86
+ Schema.validateSync(JsonSchemaType)(inputSchema);
86
87
 
87
88
  const description = methodItem.description ?? methodItem.summary;
88
89
  if (!description) {
@@ -200,7 +201,7 @@ const callApiEndpoint = async (endpoint: EndpointDescriptor, input: any) => {
200
201
 
201
202
  // Client-side validation
202
203
  const effectSchema = toEffectSchema(parameter.schema);
203
- S.validateSync(effectSchema)(value);
204
+ Schema.validateSync(effectSchema)(value);
204
205
 
205
206
  if (body) {
206
207
  throw new Error(`Duplicate body parameter: ${parameter.name}`);
@@ -47,7 +47,7 @@ export default [
47
47
 
48
48
  'settings default label': 'Default',
49
49
  'settings custom prompts label': 'Use custom prompts',
50
- 'settings llm provider label': 'Enable Ollama integration',
50
+ 'settings llm provider label': 'LLM provider',
51
51
  'settings edge llm model label': 'Remote language model',
52
52
  'settings ollama llm model label': 'Ollama language model',
53
53
  },
@@ -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, S, TypedObject, type Ref$ } from '@dxos/echo-schema';
7
- import { FunctionType } from '@dxos/functions/types';
8
-
9
- const ApiAuthorizationKey = S.Struct({
10
- type: S.Literal('api-key'),
11
- key: S.String,
12
- placement: S.Union(
13
- S.Struct({
14
- type: S.Literal('authorization-header'),
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
- S.Struct({
17
- type: S.Literal('query'),
18
- name: S.String,
18
+ Schema.Struct({
19
+ type: Schema.Literal('query'),
20
+ name: Schema.String,
19
21
  }),
20
22
  ),
21
23
  });
22
24
 
23
- const ApiAuthorizationOauth = S.Struct({
24
- type: S.Literal('oauth'),
25
- clientId: S.String,
26
- clientSecret: S.String,
27
- tokenUrl: S.String,
28
- grantType: S.String,
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 = S.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
32
- export type ApiAuthorization = S.Schema.Type<typeof ApiAuthorization>;
33
+ export const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
34
+ export type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;
33
35
 
34
- const ServiceInterfaceFunction = S.Struct({
35
- kind: S.Literal('function'),
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 = S.Struct({
40
- kind: S.Literal('workflow'),
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 = S.Struct({
45
- kind: S.Literal('api'),
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: S.optional(S.String),
52
+ schemaUrl: Schema.optional(Schema.String),
51
53
 
52
54
  /**
53
55
  * Inlined openapi schema.
54
56
  */
55
- schema: S.optional(S.Any),
57
+ schema: Schema.optional(Schema.Any),
56
58
 
57
59
  /**
58
60
  * Authorization configuration if required.
59
61
  */
60
- authorization: S.optional(ApiAuthorization),
62
+ authorization: Schema.optional(ApiAuthorization),
61
63
  });
62
64
 
63
- const ServiceInterface = S.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
64
- export type ServiceInterface = S.Schema.Type<typeof 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: S.String,
68
- name: S.optional(S.String),
69
- description: S.optional(S.String),
70
- category: S.optional(S.String),
71
- enabled: S.optional(S.Boolean),
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: S.optional(S.Array(ServiceInterface)),
78
+ interfaces: Schema.optional(Schema.Array(ServiceInterface)),
77
79
  }) {}
78
80
 
79
81
  //