@dxos/plugin-assistant 0.8.2 → 0.8.3-main.7f5a14c

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 (213) hide show
  1. package/dist/lib/browser/{AssistantDialog-K6POM23O.mjs → AssistantDialog-YCPMFK7Y.mjs} +5 -4
  2. package/dist/lib/browser/BlueprintContainer-4MEK52NT.mjs +204 -0
  3. package/dist/lib/browser/BlueprintContainer-4MEK52NT.mjs.map +7 -0
  4. package/dist/lib/browser/{ChatContainer-QTO4LE2C.mjs → ChatContainer-RYFYYEWI.mjs} +5 -4
  5. package/dist/lib/browser/{TemplateContainer-AKUYL4AV.mjs → TemplateContainer-QQHVOTSI.mjs} +2 -2
  6. package/dist/lib/browser/TemplateContainer-QQHVOTSI.mjs.map +7 -0
  7. package/dist/lib/browser/{ai-client-COXVUC6V.mjs → ai-client-MTCTMJ5N.mjs} +11 -7
  8. package/dist/lib/browser/ai-client-MTCTMJ5N.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-YH4EGNBC.mjs → app-graph-builder-DBCVARVI.mjs} +20 -14
  10. package/dist/lib/browser/app-graph-builder-DBCVARVI.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-3F44MBHU.mjs → chunk-3TIEETB2.mjs} +1 -1
  12. package/dist/lib/browser/{chunk-3F44MBHU.mjs.map → chunk-3TIEETB2.mjs.map} +2 -2
  13. package/dist/lib/browser/chunk-AKYSTUBJ.mjs +16 -0
  14. package/dist/lib/browser/chunk-AKYSTUBJ.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-QTW7KVDO.mjs → chunk-DLWFPGZE.mjs} +65 -70
  16. package/dist/lib/browser/chunk-DLWFPGZE.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-USJBRB3H.mjs → chunk-WFZ4EPPI.mjs} +7 -5
  18. package/dist/lib/browser/{chunk-USJBRB3H.mjs.map → chunk-WFZ4EPPI.mjs.map} +3 -3
  19. package/dist/lib/browser/{chunk-IHEBFO5O.mjs → chunk-ZVHA24BL.mjs} +12 -11
  20. package/dist/lib/browser/chunk-ZVHA24BL.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +37 -19
  22. package/dist/lib/browser/index.mjs.map +3 -3
  23. package/dist/lib/browser/{intent-resolver-63EAHENI.mjs → intent-resolver-ID5NOIIJ.mjs} +15 -14
  24. package/dist/lib/browser/intent-resolver-ID5NOIIJ.mjs.map +7 -0
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/{react-surface-XCV6NR75.mjs → react-surface-OD23FVUD.mjs} +26 -15
  27. package/dist/lib/browser/react-surface-OD23FVUD.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-SHNQ4XXP.mjs → settings-FUYUBGSQ.mjs} +4 -4
  29. package/dist/lib/browser/settings-FUYUBGSQ.mjs.map +7 -0
  30. package/dist/lib/browser/types/index.mjs +1 -1
  31. package/dist/lib/node/{AssistantDialog-FDATKYE5.cjs → AssistantDialog-B5YKJOAF.cjs} +9 -8
  32. package/dist/lib/node/{AssistantDialog-FDATKYE5.cjs.map → AssistantDialog-B5YKJOAF.cjs.map} +1 -1
  33. package/dist/lib/node/BlueprintContainer-VD6EIWH7.cjs +229 -0
  34. package/dist/lib/node/BlueprintContainer-VD6EIWH7.cjs.map +7 -0
  35. package/dist/lib/node/{ChatContainer-5CLHJOIQ.cjs → ChatContainer-WFLTSAFA.cjs} +9 -8
  36. package/dist/lib/node/{ChatContainer-5CLHJOIQ.cjs.map → ChatContainer-WFLTSAFA.cjs.map} +1 -1
  37. package/dist/lib/node/{TemplateContainer-CTG2MB4W.cjs → TemplateContainer-JZF2DCCG.cjs} +5 -5
  38. package/dist/lib/node/TemplateContainer-JZF2DCCG.cjs.map +7 -0
  39. package/dist/lib/node/{ai-client-R2CGEYZW.cjs → ai-client-3XNIFMJX.cjs} +14 -10
  40. package/dist/lib/node/ai-client-3XNIFMJX.cjs.map +7 -0
  41. package/dist/lib/node/{app-graph-builder-PSHIOW3Q.cjs → app-graph-builder-VEPLBTML.cjs} +34 -28
  42. package/dist/lib/node/app-graph-builder-VEPLBTML.cjs.map +7 -0
  43. package/dist/lib/node/{chunk-RXPA2C2A.cjs → chunk-7TQAIKE2.cjs} +25 -24
  44. package/dist/lib/node/chunk-7TQAIKE2.cjs.map +7 -0
  45. package/dist/lib/node/chunk-BGRQNE3L.cjs +52 -0
  46. package/dist/lib/node/chunk-BGRQNE3L.cjs.map +7 -0
  47. package/dist/lib/node/{chunk-FLJWJ35M.cjs → chunk-DXBAFX6M.cjs} +13 -10
  48. package/dist/lib/node/{chunk-FLJWJ35M.cjs.map → chunk-DXBAFX6M.cjs.map} +3 -3
  49. package/dist/lib/node/{chunk-H4A42LNR.cjs → chunk-WR5L3TVB.cjs} +86 -92
  50. package/dist/lib/node/chunk-WR5L3TVB.cjs.map +7 -0
  51. package/dist/lib/node/{chunk-TS3H5OSX.cjs → chunk-ZP732NHS.cjs} +4 -4
  52. package/dist/lib/node/{chunk-TS3H5OSX.cjs.map → chunk-ZP732NHS.cjs.map} +2 -2
  53. package/dist/lib/node/index.cjs +69 -48
  54. package/dist/lib/node/index.cjs.map +3 -3
  55. package/dist/lib/node/{intent-resolver-66F7WLW6.cjs → intent-resolver-SDO4YKJK.cjs} +18 -16
  56. package/dist/lib/node/intent-resolver-SDO4YKJK.cjs.map +7 -0
  57. package/dist/lib/node/meta.json +1 -1
  58. package/dist/lib/node/{react-surface-TASAPRPQ.cjs → react-surface-FANQXIRI.cjs} +37 -27
  59. package/dist/lib/node/react-surface-FANQXIRI.cjs.map +7 -0
  60. package/dist/lib/node/{settings-ERKLO6IO.cjs → settings-PXPIPYJN.cjs} +7 -7
  61. package/dist/lib/node/settings-PXPIPYJN.cjs.map +7 -0
  62. package/dist/lib/node/types/index.cjs +14 -14
  63. package/dist/lib/node/types/index.cjs.map +1 -1
  64. package/dist/lib/node-esm/{AssistantDialog-PIMYK774.mjs → AssistantDialog-KPZZD7XC.mjs} +5 -4
  65. package/dist/lib/{browser/AssistantDialog-K6POM23O.mjs.map → node-esm/AssistantDialog-KPZZD7XC.mjs.map} +1 -1
  66. package/dist/lib/node-esm/BlueprintContainer-SVOKCRCP.mjs +205 -0
  67. package/dist/lib/node-esm/BlueprintContainer-SVOKCRCP.mjs.map +7 -0
  68. package/dist/lib/node-esm/{ChatContainer-QTC5NYE2.mjs → ChatContainer-WSMKUGS6.mjs} +5 -4
  69. package/dist/lib/{browser/ChatContainer-QTO4LE2C.mjs.map → node-esm/ChatContainer-WSMKUGS6.mjs.map} +1 -1
  70. package/dist/lib/node-esm/{TemplateContainer-IVDQ4XQG.mjs → TemplateContainer-SOEWY2ZN.mjs} +2 -2
  71. package/dist/lib/node-esm/TemplateContainer-SOEWY2ZN.mjs.map +7 -0
  72. package/dist/lib/node-esm/{ai-client-I5LXHMOZ.mjs → ai-client-YIP44I4D.mjs} +11 -7
  73. package/dist/lib/node-esm/ai-client-YIP44I4D.mjs.map +7 -0
  74. package/dist/lib/node-esm/{app-graph-builder-Z3GMMJMD.mjs → app-graph-builder-WJXDXLBQ.mjs} +20 -14
  75. package/dist/lib/node-esm/app-graph-builder-WJXDXLBQ.mjs.map +7 -0
  76. package/dist/lib/node-esm/{chunk-ZKBACPIW.mjs → chunk-24LIHQST.mjs} +12 -11
  77. package/dist/lib/node-esm/chunk-24LIHQST.mjs.map +7 -0
  78. package/dist/lib/node-esm/{chunk-QU626JMR.mjs → chunk-QFX6SFFZ.mjs} +7 -5
  79. package/dist/lib/node-esm/{chunk-QU626JMR.mjs.map → chunk-QFX6SFFZ.mjs.map} +3 -3
  80. package/dist/lib/node-esm/{chunk-SI5LOQEO.mjs → chunk-TTSMEWR6.mjs} +65 -70
  81. package/dist/lib/node-esm/chunk-TTSMEWR6.mjs.map +7 -0
  82. package/dist/lib/node-esm/{chunk-HLPGKJ7N.mjs → chunk-VXGO6Q2L.mjs} +1 -1
  83. package/dist/lib/node-esm/{chunk-HLPGKJ7N.mjs.map → chunk-VXGO6Q2L.mjs.map} +2 -2
  84. package/dist/lib/node-esm/chunk-ZKTIHNT7.mjs +18 -0
  85. package/dist/lib/node-esm/chunk-ZKTIHNT7.mjs.map +7 -0
  86. package/dist/lib/node-esm/index.mjs +37 -19
  87. package/dist/lib/node-esm/index.mjs.map +3 -3
  88. package/dist/lib/node-esm/{intent-resolver-X3PWH7KM.mjs → intent-resolver-75REJDDQ.mjs} +15 -14
  89. package/dist/lib/node-esm/intent-resolver-75REJDDQ.mjs.map +7 -0
  90. package/dist/lib/node-esm/meta.json +1 -1
  91. package/dist/lib/node-esm/{react-surface-QMIQCXUM.mjs → react-surface-NAN4SDCE.mjs} +26 -15
  92. package/dist/lib/node-esm/react-surface-NAN4SDCE.mjs.map +7 -0
  93. package/dist/lib/node-esm/{settings-IVQRZUCU.mjs → settings-JHMKX3UV.mjs} +4 -4
  94. package/dist/lib/node-esm/settings-JHMKX3UV.mjs.map +7 -0
  95. package/dist/lib/node-esm/types/index.mjs +1 -1
  96. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  102. package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/BlueprintContainer.d.ts +9 -0
  104. package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -0
  105. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts +8 -3
  106. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts.map +1 -1
  107. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  108. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/TemplateContainer.d.ts +2 -2
  110. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  111. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  112. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +1 -1
  113. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  114. package/dist/types/src/components/Thread/ThreadMessage.d.ts +2 -2
  115. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  116. package/dist/types/src/components/index.d.ts +4 -2
  117. package/dist/types/src/components/index.d.ts.map +1 -1
  118. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  119. package/dist/types/src/hooks/useMessageQueue.d.ts +6 -6
  120. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  121. package/dist/types/src/index.d.ts +1 -0
  122. package/dist/types/src/index.d.ts.map +1 -1
  123. package/dist/types/src/parser/filter-generator.d.ts +1 -1
  124. package/dist/types/src/parser/filter-generator.d.ts.map +1 -1
  125. package/dist/types/src/stories/Prompt.stories.d.ts.map +1 -1
  126. package/dist/types/src/stories/Query.stories.d.ts.map +1 -1
  127. package/dist/types/src/stories/Research.stories.d.ts +1 -1
  128. package/dist/types/src/stories/Research.stories.d.ts.map +1 -1
  129. package/dist/types/src/stories/testing.d.ts.map +1 -1
  130. package/dist/types/src/testing/index.d.ts +1 -1
  131. package/dist/types/src/testing/index.d.ts.map +1 -1
  132. package/dist/types/src/testing/test-blueprint.d.ts +8 -0
  133. package/dist/types/src/testing/test-blueprint.d.ts.map +1 -0
  134. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  135. package/dist/types/src/translations.d.ts +13 -62
  136. package/dist/types/src/translations.d.ts.map +1 -1
  137. package/dist/types/src/types/chat.d.ts +3 -3
  138. package/dist/types/src/types/chat.d.ts.map +1 -1
  139. package/dist/types/src/types/service.d.ts +139 -9
  140. package/dist/types/src/types/service.d.ts.map +1 -1
  141. package/dist/types/src/types/template.d.ts.map +1 -1
  142. package/dist/types/src/types/types.d.ts +12 -6
  143. package/dist/types/src/types/types.d.ts.map +1 -1
  144. package/package.json +70 -68
  145. package/src/AssistantPlugin.tsx +9 -9
  146. package/src/capabilities/ai-client.ts +10 -5
  147. package/src/capabilities/app-graph-builder.ts +38 -35
  148. package/src/capabilities/capabilities.ts +1 -0
  149. package/src/capabilities/intent-resolver.ts +15 -7
  150. package/src/capabilities/react-surface.tsx +27 -20
  151. package/src/capabilities/settings.ts +2 -2
  152. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +1 -0
  153. package/src/components/BlueprintContainer.tsx +160 -0
  154. package/src/components/BlueprintEditor/BlueprintEditor.stories.tsx +2 -2
  155. package/src/components/BlueprintEditor/BlueprintEditor.tsx +31 -22
  156. package/src/components/Prompt/Prompt.stories.tsx +1 -0
  157. package/src/components/Prompt/PromptBar.stories.tsx +1 -0
  158. package/src/components/TemplateContainer.tsx +5 -2
  159. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +2 -2
  160. package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
  161. package/src/components/Thread/ThreadContainer.stories.tsx +7 -8
  162. package/src/components/Thread/ThreadContainer.tsx +2 -3
  163. package/src/components/Thread/ThreadMessage.tsx +3 -3
  164. package/src/components/index.ts +1 -0
  165. package/src/hooks/useContextProvider.ts +14 -18
  166. package/src/hooks/useMessageQueue.ts +3 -2
  167. package/src/index.ts +1 -0
  168. package/src/parser/filter-generator.test.ts +1 -1
  169. package/src/parser/filter-generator.ts +1 -1
  170. package/src/stories/Prompt.stories.tsx +1 -0
  171. package/src/stories/Query.stories.tsx +116 -50
  172. package/src/stories/Research.stories.tsx +26 -39
  173. package/src/stories/test-data.ts +9 -9
  174. package/src/stories/testing.ts +1 -5
  175. package/src/testing/index.ts +1 -1
  176. package/src/testing/{blueprint.ts → test-blueprint.ts} +28 -17
  177. package/src/testing/test-services.ts +6 -6
  178. package/src/tools/function.ts +2 -2
  179. package/src/tools/openapi.test.ts +6 -12
  180. package/src/tools/openapi.ts +5 -5
  181. package/src/translations.ts +9 -2
  182. package/src/types/chat.ts +3 -4
  183. package/src/types/service.ts +8 -4
  184. package/src/types/template.ts +4 -1
  185. package/src/types/types.ts +3 -3
  186. package/dist/lib/browser/TemplateContainer-AKUYL4AV.mjs.map +0 -7
  187. package/dist/lib/browser/ai-client-COXVUC6V.mjs.map +0 -7
  188. package/dist/lib/browser/app-graph-builder-YH4EGNBC.mjs.map +0 -7
  189. package/dist/lib/browser/chunk-IHEBFO5O.mjs.map +0 -7
  190. package/dist/lib/browser/chunk-QTW7KVDO.mjs.map +0 -7
  191. package/dist/lib/browser/intent-resolver-63EAHENI.mjs.map +0 -7
  192. package/dist/lib/browser/react-surface-XCV6NR75.mjs.map +0 -7
  193. package/dist/lib/browser/settings-SHNQ4XXP.mjs.map +0 -7
  194. package/dist/lib/node/TemplateContainer-CTG2MB4W.cjs.map +0 -7
  195. package/dist/lib/node/ai-client-R2CGEYZW.cjs.map +0 -7
  196. package/dist/lib/node/app-graph-builder-PSHIOW3Q.cjs.map +0 -7
  197. package/dist/lib/node/chunk-H4A42LNR.cjs.map +0 -7
  198. package/dist/lib/node/chunk-RXPA2C2A.cjs.map +0 -7
  199. package/dist/lib/node/intent-resolver-66F7WLW6.cjs.map +0 -7
  200. package/dist/lib/node/react-surface-TASAPRPQ.cjs.map +0 -7
  201. package/dist/lib/node/settings-ERKLO6IO.cjs.map +0 -7
  202. package/dist/lib/node-esm/TemplateContainer-IVDQ4XQG.mjs.map +0 -7
  203. package/dist/lib/node-esm/ai-client-I5LXHMOZ.mjs.map +0 -7
  204. package/dist/lib/node-esm/app-graph-builder-Z3GMMJMD.mjs.map +0 -7
  205. package/dist/lib/node-esm/chunk-SI5LOQEO.mjs.map +0 -7
  206. package/dist/lib/node-esm/chunk-ZKBACPIW.mjs.map +0 -7
  207. package/dist/lib/node-esm/intent-resolver-X3PWH7KM.mjs.map +0 -7
  208. package/dist/lib/node-esm/react-surface-QMIQCXUM.mjs.map +0 -7
  209. package/dist/lib/node-esm/settings-IVQRZUCU.mjs.map +0 -7
  210. package/dist/types/src/testing/blueprint.d.ts +0 -7
  211. package/dist/types/src/testing/blueprint.d.ts.map +0 -1
  212. /package/dist/lib/{node-esm/AssistantDialog-PIMYK774.mjs.map → browser/AssistantDialog-YCPMFK7Y.mjs.map} +0 -0
  213. /package/dist/lib/{node-esm/ChatContainer-QTC5NYE2.mjs.map → browser/ChatContainer-RYFYYEWI.mjs.map} +0 -0
@@ -2,9 +2,15 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type ExecutableTool } from '@dxos/ai';
5
+ import { ToolRegistry } from '@dxos/ai';
6
6
  import { EXA_API_KEY } from '@dxos/ai/testing';
7
- import { type BlueprintParser, createExaTool, createGraphWriterTool, createLocalSearchTool } from '@dxos/assistant';
7
+ import {
8
+ type BlueprintDefinition,
9
+ BlueprintParser,
10
+ createExaTool,
11
+ createGraphWriterTool,
12
+ createLocalSearchTool,
13
+ } from '@dxos/assistant';
8
14
  import { type Space } from '@dxos/client/echo';
9
15
  import { type DXN } from '@dxos/keys';
10
16
  import { DataTypes } from '@dxos/schema';
@@ -12,23 +18,26 @@ import { isNonNullable } from '@dxos/util';
12
18
 
13
19
  // TODO(dmaretskyi): make db available through services (same as function executor).
14
20
  // TODO(burdon): Can tools implement "aspects" so that variants can be used rather than an explicit reference?
15
- export const createTools = (space: Space, queueDxn?: DXN): ExecutableTool[] => {
16
- return [
17
- createExaTool({ apiKey: EXA_API_KEY }),
18
- createLocalSearchTool(space.db),
19
- queueDxn &&
20
- createGraphWriterTool({
21
- db: space.db,
22
- schemaTypes: DataTypes,
23
- onDone: async (objects) => {
24
- const queue = space.queues.get(queueDxn);
25
- queue.append(objects);
26
- },
27
- }),
28
- ].filter(isNonNullable);
21
+ export const createToolRegistry = (space: Space, queueDxn?: DXN): ToolRegistry => {
22
+ return new ToolRegistry(
23
+ [
24
+ createExaTool({ apiKey: EXA_API_KEY }),
25
+ createLocalSearchTool(space.db, queueDxn && space.queues.get(queueDxn)),
26
+ queueDxn &&
27
+ createGraphWriterTool({
28
+ db: space.db,
29
+ queue: space.queues.get(queueDxn),
30
+ schema: DataTypes,
31
+ onDone: async (objects) => {
32
+ const queue = space.queues.get(queueDxn);
33
+ queue.append(objects);
34
+ },
35
+ }),
36
+ ].filter(isNonNullable),
37
+ );
29
38
  };
30
39
 
31
- export const RESEARCH_BLUEPRINT: BlueprintParser.DSL = {
40
+ export const RESEARCH_BLUEPRINT_DEFINITION: BlueprintDefinition = {
32
41
  steps: [
33
42
  {
34
43
  instructions: 'Research information and entities related to the selected objects.',
@@ -45,3 +54,5 @@ export const RESEARCH_BLUEPRINT: BlueprintParser.DSL = {
45
54
  },
46
55
  ],
47
56
  };
57
+
58
+ export const RESEARCH_BLUEPRINT = BlueprintParser.create().parse(RESEARCH_BLUEPRINT_DEFINITION);
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { create } from '@dxos/echo-schema';
5
+ import { Obj } from '@dxos/echo';
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
- create(ServiceType, {
57
+ Obj.make(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
- create(ServiceType, {
71
+ Obj.make(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
- create(ServiceType, {
85
+ Obj.make(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
- create(ServiceType, {
100
+ Obj.make(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
- create(ServiceType, {
118
+ Obj.make(ServiceType, {
119
119
  serviceId: `example.com/service/test-${i}`,
120
120
  name: `Test ${i}`,
121
121
  description: `Test ${i}`,
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { createTool, type ExecutableTool, ToolResult } from '@dxos/ai';
6
- import { toEffectSchema } from '@dxos/echo-schema';
6
+ import { Type } from '@dxos/echo';
7
7
  import { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';
8
8
  import { type FunctionType } from '@dxos/functions';
9
9
  import { log } from '@dxos/log';
@@ -29,7 +29,7 @@ export const convertFunctionToTool = (
29
29
  return createTool('user-function', {
30
30
  name: fn.name,
31
31
  description: fn.description,
32
- schema: toEffectSchema(fn.inputSchema),
32
+ schema: Type.toEffectSchema(fn.inputSchema),
33
33
  execute: async (input) => {
34
34
  log.info('execute function tool', { name: fn.name, url, input });
35
35
  const response = await fetch(url, {
@@ -73,10 +73,8 @@ describe.skip('openapi', () => {
73
73
  describe.skip('AI uses tools', () => {
74
74
  test('amadeus flight availabilities', { timeout: 60_000 }, async () => {
75
75
  const tools = await createToolsFromApi(FLIGHT_SEARCH_API, { authorization: AMADEUS_AUTH });
76
- const client = new AIServiceEdgeClient({
77
- endpoint: AI_SERVICE_ENDPOINT.LOCAL,
78
- });
79
- const processor = new ChatProcessor(client, tools);
76
+ const aiClient = new AIServiceEdgeClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
77
+ const processor = new ChatProcessor(aiClient, tools);
80
78
  const reply = await processor.request(
81
79
  `What is the cheapest flight from New York to Paris? going on ${new Date().toISOString()} and returning after a week. 1 adult traveler`,
82
80
  );
@@ -87,10 +85,8 @@ describe.skip('openapi', () => {
87
85
  // TODO(dmaretskyi): Doesn't work.
88
86
  test('amadeus hotel name autocomplete', { timeout: 60_000 }, async () => {
89
87
  const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API, { authorization: AMADEUS_AUTH });
90
- const client = new AIServiceEdgeClient({
91
- endpoint: AI_SERVICE_ENDPOINT.LOCAL,
92
- });
93
- const processor = new ChatProcessor(client, tools);
88
+ const aiClient = new AIServiceEdgeClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
89
+ const processor = new ChatProcessor(aiClient, tools);
94
90
  const reply = await processor.request('Find me the William Wale in Brooklyn New York');
95
91
 
96
92
  log.info('reply', { reply });
@@ -101,10 +97,8 @@ describe.skip('openapi', () => {
101
97
  authorization: VISUAL_CROSSING_CREDENTIALS,
102
98
  instructions: WEATHER_INSTRUCTIONS,
103
99
  });
104
- const client = new AIServiceEdgeClient({
105
- endpoint: AI_SERVICE_ENDPOINT.LOCAL,
106
- });
107
- const processor = new ChatProcessor(client, tools);
100
+ const aiClient = new AIServiceEdgeClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
101
+ const processor = new ChatProcessor(aiClient, tools);
108
102
  const reply = await processor.request(
109
103
  `Today's date is ${new Date().toISOString().split('T')[0]}. Give me weather forecast for Warsaw for next 5 days.`,
110
104
  );
@@ -7,7 +7,8 @@ import jsonpointer from 'jsonpointer';
7
7
  import { type OpenAPIV2, type OpenAPIV3_1 } from 'openapi-types';
8
8
 
9
9
  import { type ExecutableTool, ToolResult, createRawTool } from '@dxos/ai';
10
- import { JsonSchemaType, normalizeSchema, toEffectSchema } from '@dxos/echo-schema';
10
+ import { Type } from '@dxos/echo';
11
+ import { normalizeSchema } from '@dxos/echo-schema';
11
12
  import { invariant } from '@dxos/invariant';
12
13
  import { log } from '@dxos/log';
13
14
  import { deepMapValues } from '@dxos/util';
@@ -52,8 +53,7 @@ export const createToolsFromApi = async (
52
53
  return resolved;
53
54
  }) ?? [];
54
55
 
55
- // TODO(burdon): Reconcile with toFunctionParameterSchema.
56
- const inputSchema: JsonSchemaType = {
56
+ const inputSchema: Type.JsonSchema = {
57
57
  type: 'object',
58
58
  properties: {},
59
59
  };
@@ -86,7 +86,7 @@ export const createToolsFromApi = async (
86
86
  }
87
87
 
88
88
  log('inputSchema', { inputSchema });
89
- Schema.validateSync(JsonSchemaType)(inputSchema);
89
+ Schema.validateSync(Type.JsonSchema)(inputSchema);
90
90
 
91
91
  const description = methodItem.description ?? methodItem.summary;
92
92
  if (!description) {
@@ -206,7 +206,7 @@ const callApiEndpoint = async (endpoint: EndpointDescriptor, input: any) => {
206
206
  const value = input[parameter.name];
207
207
 
208
208
  // Client-side validation
209
- const effectSchema = toEffectSchema(parameter.schema);
209
+ const effectSchema = Type.toEffectSchema(parameter.schema);
210
210
  Schema.validateSync(effectSchema)(value);
211
211
 
212
212
  if (body) {
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { getSchemaTypename } from '@dxos/echo-schema';
5
+ import { Blueprint } from '@dxos/assistant';
6
6
 
7
7
  import { ASSISTANT_PLUGIN } from './meta';
8
8
  import { AIChatType, TemplateType } from './types';
@@ -10,10 +10,14 @@ import { AIChatType, TemplateType } from './types';
10
10
  export default [
11
11
  {
12
12
  'en-US': {
13
- [getSchemaTypename(AIChatType)!]: {
13
+ [AIChatType.typename]: {
14
14
  'typename label': 'Assistant',
15
15
  'object name placeholder': 'AI Chat',
16
16
  },
17
+ [Blueprint.typename]: {
18
+ 'typename label': 'Blueprint',
19
+ 'object name placeholder': 'New blueprint',
20
+ },
17
21
  [TemplateType.typename]: {
18
22
  'typename label': 'Template',
19
23
  'object name placeholder': 'New template',
@@ -43,6 +47,9 @@ export default [
43
47
  'chat input placeholder': 'Ask a question...',
44
48
  'chat stop': 'Cancel request.',
45
49
 
50
+ 'button save': 'Save',
51
+ 'button run': 'Run',
52
+
46
53
  'prompt placeholder': 'Ask a question...',
47
54
  'microphone button': 'Click to speak',
48
55
  'cancel processing button': 'Stop processing',
package/src/types/chat.ts CHANGED
@@ -4,14 +4,13 @@
4
4
 
5
5
  import { Schema } from 'effect';
6
6
 
7
+ import { Queue } from '@dxos/client/echo';
7
8
  import { Type } from '@dxos/echo';
8
- import { Expando, Ref } from '@dxos/echo-schema';
9
9
 
10
10
  export const AIChatType = Schema.Struct({
11
11
  id: Type.ObjectId,
12
12
  name: Schema.optional(Schema.String),
13
- // TODO(wittjosiah): Should be a ref to a Queue.
14
- queue: Ref(Expando),
13
+ queue: Type.Ref(Queue),
15
14
  }).pipe(
16
15
  Type.Obj({
17
16
  typename: 'dxos.org/type/AIChat',
@@ -27,7 +26,7 @@ export const CompanionTo = Schema.Struct({
27
26
  typename: 'dxos.org/relation/CompanionTo',
28
27
  version: '0.1.0',
29
28
  source: AIChatType,
30
- target: Expando,
29
+ target: Type.Expando,
31
30
  }),
32
31
  );
33
32
  export interface CompanionTo extends Schema.Schema.Type<typeof CompanionTo> {}
@@ -5,7 +5,8 @@
5
5
  import { Schema } from 'effect';
6
6
 
7
7
  import { ComputeGraph } from '@dxos/conductor';
8
- import { Ref, TypedObject, type Ref$ } from '@dxos/echo-schema';
8
+ import { Type } from '@dxos/echo';
9
+ import { TypedObject } from '@dxos/echo-schema';
9
10
  import { FunctionType } from '@dxos/functions';
10
11
 
11
12
  const ApiAuthorizationKey = Schema.Struct({
@@ -35,12 +36,12 @@ export type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;
35
36
 
36
37
  const ServiceInterfaceFunction = Schema.Struct({
37
38
  kind: Schema.Literal('function'),
38
- fn: Ref(FunctionType) as Ref$<FunctionType>,
39
+ fn: Type.Ref(FunctionType),
39
40
  });
40
41
 
41
42
  const ServiceInterfaceWorkflow = Schema.Struct({
42
43
  kind: Schema.Literal('workflow'),
43
- workflow: Ref(ComputeGraph) as Ref$<ComputeGraph>,
44
+ workflow: Type.Ref(ComputeGraph),
44
45
  });
45
46
 
46
47
  const ServiceInterfaceApi = Schema.Struct({
@@ -65,7 +66,10 @@ const ServiceInterfaceApi = Schema.Struct({
65
66
  const ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
66
67
  export type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;
67
68
 
68
- export class ServiceType extends TypedObject({ typename: 'dxos.org/type/ServiceType', version: '0.1.0' })({
69
+ export class ServiceType extends TypedObject({
70
+ typename: 'dxos.org/type/ServiceType',
71
+ version: '0.1.0',
72
+ })({
69
73
  serviceId: Schema.String,
70
74
  name: Schema.optional(Schema.String),
71
75
  description: Schema.optional(Schema.String),
@@ -49,7 +49,10 @@ export const TemplateKindSchema = Schema.Union(
49
49
  );
50
50
 
51
51
  export type TemplateKindType = Schema.Schema.Type<typeof TemplateKindSchema>;
52
- export class TemplateType extends TypedObject({ typename: 'dxos.org/type/Template', version: '0.1.0' })({
52
+ export class TemplateType extends TypedObject({
53
+ typename: 'dxos.org/type/Template',
54
+ version: '0.1.0',
55
+ })({
53
56
  name: Schema.optional(Schema.String),
54
57
  kind: Schema.mutable(TemplateKindSchema),
55
58
  source: Schema.String,
@@ -4,10 +4,10 @@
4
4
 
5
5
  import { Schema } from 'effect';
6
6
 
7
+ import { Blueprint } from '@dxos/assistant';
7
8
  import { SpaceSchema } from '@dxos/react-client/echo';
8
9
 
9
10
  import { AIChatType } from './chat';
10
- import { TemplateType } from './template';
11
11
  import { ASSISTANT_PLUGIN } from '../meta';
12
12
 
13
13
  export namespace AssistantAction {
@@ -23,12 +23,12 @@ export namespace AssistantAction {
23
23
  }),
24
24
  }) {}
25
25
 
26
- export class CreateTemplate extends Schema.TaggedClass<CreateTemplate>()(`${ASSISTANT_ACTION}/create-template`, {
26
+ export class CreateBlueprint extends Schema.TaggedClass<CreateBlueprint>()(`${ASSISTANT_ACTION}/create-blueprint`, {
27
27
  input: Schema.Struct({
28
28
  name: Schema.optional(Schema.String),
29
29
  }),
30
30
  output: Schema.Struct({
31
- object: TemplateType,
31
+ object: Blueprint,
32
32
  }),
33
33
  }) {}
34
34
  }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/TemplateContainer.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { TemplateEditor } from './TemplateEditor';\nimport { type TemplateType } from '../types';\n\nexport const TemplateContainer = ({ template, role }: { template: TemplateType; role: string }) => {\n return (\n <StackItem.Content role={role} classNames='container-max-width'>\n <TemplateEditor template={template} />\n </StackItem.Content>\n );\n};\n\nexport default TemplateContainer;\n"],
5
- "mappings": ";;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,iBAAiB;AAKnB,IAAMC,oBAAoB,CAAC,EAAEC,UAAUC,KAAI,MAA4C;;;AAC5F,WACE,sBAAA,cAACC,UAAUC,SAAO;MAACF;MAAYG,YAAW;OACxC,sBAAA,cAACC,gBAAAA;MAAeL;;;;;AAGtB;AAEA,IAAA,4BAAeD;",
6
- "names": ["React", "StackItem", "TemplateContainer", "template", "role", "StackItem", "Content", "classNames", "TemplateEditor"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/ai-client.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect, signal } from '@preact/signals-core';\n\nimport { type AIServiceClient, AIServiceEdgeClient, OllamaClient } from '@dxos/ai';\nimport { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { AssistantCapabilities } from './capabilities';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps } from '../types';\n\n// TODO(wittjosiah): Factor out.\nconst DEFAULT_AI_SERVICE_URL = 'http://localhost:8788';\n\nexport default (context: PluginContext) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;\n\n const ai = signal<AIServiceClient>(new AIServiceEdgeClient({ endpoint }));\n\n const unsubscribe = effect(() => {\n const settings = context\n .getCapability(Capabilities.SettingsStore)\n .getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n if (settings?.llmProvider === 'ollama') {\n ai.value = new OllamaClient();\n } else {\n ai.value = new AIServiceEdgeClient({ endpoint });\n }\n });\n\n return contributes(AssistantCapabilities.AiClient, ai, () => unsubscribe());\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,SAASA,QAAQC,cAAc;AAE/B,SAA+BC,qBAAqBC,oBAAoB;AACxE,SAASC,cAAcC,mBAAuC;AAC9D,SAASC,0BAA0B;AAOnC,IAAMC,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,cAAcC,mBAAmBC,MAAM;AAC9D,QAAMC,WAAWJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,IAAIC,UAAUZ;AAEvE,QAAMW,KAAKE,OAAwB,IAAIC,oBAAoB;IAAER;EAAS,CAAA,CAAA;AAEtE,QAAMS,cAAcC,OAAO,MAAA;AACzB,UAAMC,WAAWhB,QACdE,cAAce,aAAaC,aAAa,EACxCC,SAAiCC,gBAAAA,GAAmBC;AAEvD,QAAIL,UAAUM,gBAAgB,UAAU;AACtCZ,SAAGW,QAAQ,IAAIE,aAAAA;IACjB,OAAO;AACLb,SAAGW,QAAQ,IAAIR,oBAAoB;QAAER;MAAS,CAAA;IAChD;EACF,CAAA;AAEA,SAAOmB,YAAYC,sBAAsBC,UAAUhB,IAAI,MAAMI,YAAAA,CAAAA;AAC/D;",
6
- "names": ["effect", "signal", "AIServiceEdgeClient", "OllamaClient", "Capabilities", "contributes", "ClientCapabilities", "DEFAULT_AI_SERVICE_URL", "context", "client", "getCapability", "ClientCapabilities", "Client", "endpoint", "config", "values", "runtime", "services", "ai", "server", "signal", "AIServiceEdgeClient", "unsubscribe", "effect", "settings", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "llmProvider", "OllamaClient", "contributes", "AssistantCapabilities", "AiClient"]
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 { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginContext,\n} from '@dxos/app-framework';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { createExtension, ROOT_ID } from '@dxos/plugin-graph';\nimport { rxFromQuery } from '@dxos/plugin-space';\nimport { SPACE_TYPE, SpaceAction } from '@dxos/plugin-space/types';\nimport {\n type Space,\n Filter,\n fullyQualifiedId,\n getSpace,\n isSpace,\n Query,\n type QueryResult,\n isEchoObject,\n} from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, CompanionTo, TemplateType } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${ASSISTANT_PLUGIN}/assistant`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const layout = context.getCapability(Capabilities.Layout);\n const { graph } = context.getCapability(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.getNode(layout.active[0]).pipe(Option.getOrNull);\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--sparkle--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 Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/object-chat-companion`,\n connector: (node) => {\n let query: QueryResult<AIChatType> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (isEchoObject(node.data) ? Option.some(node.data) : Option.none())),\n Option.flatMap((object) => {\n const space = getSpace(object);\n return space ? Option.some({ space, object }) : Option.none();\n }),\n Option.map(({ space, object }) => {\n if (!query) {\n query = space.db.query(Query.select(Filter.ids(object.id)).targetOf(CompanionTo).source());\n }\n\n const chat = get(rxFromQuery(query))[0];\n return [\n {\n id: [fullyQualifiedId(object), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: chat ?? 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/root`,\n connector: (node) => {\n let query: QueryResult<TemplateType> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((space) => {\n if (!query) {\n query = space.db.query(Query.type(TemplateType));\n }\n\n const templates = get(rxFromQuery(query));\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,\n },\n },\n ]\n : [];\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/templates`,\n connector: (node) => {\n let query: QueryResult<TemplateType> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.id === `${ASSISTANT_PLUGIN}/templates` && isSpace(node.properties.space)\n ? Option.some(node.properties.space)\n : Option.none(),\n ),\n Option.map((space) => {\n if (!query) {\n query = space.db.query(Query.type(TemplateType));\n }\n return get(rxFromQuery(query))\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 ?? ['object placeholder', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n },\n }));\n }),\n Option.getOrElse(() => []),\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.type(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, { space }));\n invariant(isInstanceOf(AIChatType, data?.object));\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;AAIA,SAASA,UAAU;AACnB,SAASC,QAAQC,YAAY;AAE7B,SACEC,cACAC,aACAC,cACAC,oBAGK;AACP,SAASC,oBAAoB;AAC7B,SAASC,iBAAiB;AAC1B,SAASC,0BAA0B;AACnC,SAASC,sBAAsBC,iCAAiC;AAChE,SAASC,iBAAiBC,eAAe;AACzC,SAASC,mBAAmB;AAC5B,SAASC,YAAYC,mBAAmB;AACxC,SAEEC,QACAC,kBACAC,UACAC,SACAC,OAEAC,oBACK;;AAKP,IAAA,4BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,gBAAAA;IACPC,SAAS,CAACC,SACRC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUA,MAAKH,OAAOU,UAAUF,OAAOG,KAAKR,KAAAA,IAAQK,OAAOI,KAAI,CAAA,GAC/EJ,OAAOK,IAAI,MAAM;MACf;QACEb,IAAI,GAAGc,aAAaC,aAAaC,IAAI;QACrCC,MAAM,YAAA;AACJ,gBAAM,EAAEC,iBAAiBC,SAAQ,IAAKxB,QAAQyB,cAAcvB,aAAawB,gBAAgB;AACzF,gBAAMC,SAAS3B,QAAQyB,cAAcG,mBAAmBC,MAAM;AAC9D,gBAAMC,SAAS9B,QAAQyB,cAAcvB,aAAa6B,MAAM;AACxD,gBAAM,EAAEC,MAAK,IAAKhC,QAAQyB,cAAcvB,aAAa+B,QAAQ;AAI7D,cAAIC;AACJ,cAAIJ,OAAOK,OAAOC,SAAS,GAAG;AAC5B,kBAAM5B,QAAOwB,MAAMK,QAAQP,OAAOK,OAAO,CAAA,CAAE,EAAEvB,KAAKC,OAAOyB,SAAS;AAClE,gBAAI9B,OAAM;AACR,oBAAM+B,QAAQC,SAAShC,MAAKc,IAAI;AAChC,kBAAIiB,OAAO;AACTL,uBAAO,MAAMO,gBAAgBjB,UAAUe,KAAAA;cACzC;YACF;UACF,OAAO;AACL,kBAAMA,QAAQZ,OAAOe,OAAOC;AAC5BT,mBAAO,MAAMO,gBAAgBjB,UAAUe,KAAAA;UACzC;AAEA,cAAI,CAACL,MAAM;AACT;UACF;AAEA,gBAAMV,SACJoB,aAAazB,aAAaC,cAAc;YACtCyB,MAAM;YACNC,SAASC;YACTC,SAAS;cACPC,OAAO;cACPC,YAAY;cACZC,OAAO;gBACLjB;cACF;YACF;UACF,CAAA,CAAA;QAEJ;QACAkB,YAAY;UACVC,OAAO;YAAC;YAAwB;cAAEC,IAAIhD;YAAiB;;UACvDiD,MAAM;UACNC,aAAa;UACbC,UAAU;UACVC,YAAY;YACVC,OAAO;YACPC,SAAS;UACX;QACF;MACF;KACD,GACD/C,OAAOgD,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EAEAzD,gBAAgB;IACdC,IAAI,GAAGC,gBAAAA;IACPwD,WAAW,CAACtD,SAAAA;AACV,UAAIuD;AACJ,aAAOtD,GAAGC,KAAK,CAACC,QACdC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUwD,aAAaxD,MAAKc,IAAI,IAAIT,OAAOG,KAAKR,MAAKc,IAAI,IAAIT,OAAOI,KAAI,CAAA,GACxFJ,OAAOC,QAAQ,CAACmD,WAAAA;AACd,cAAM1B,QAAQC,SAASyB,MAAAA;AACvB,eAAO1B,QAAQ1B,OAAOG,KAAK;UAAEuB;UAAO0B;QAAO,CAAA,IAAKpD,OAAOI,KAAI;MAC7D,CAAA,GACAJ,OAAOK,IAAI,CAAC,EAAEqB,OAAO0B,OAAM,MAAE;AAC3B,YAAI,CAACF,OAAO;AACVA,kBAAQxB,MAAM2B,GAAGH,MAAMI,MAAMC,OAAOC,OAAOC,IAAIL,OAAO5D,EAAE,CAAA,EAAGkE,SAASC,WAAAA,EAAaC,OAAM,CAAA;QACzF;AAEA,cAAMvC,OAAOvB,IAAI+D,YAAYX,KAAAA,CAAAA,EAAQ,CAAA;AACrC,eAAO;UACL;YACE1D,IAAI;cAACsE,iBAAiBV,MAAAA;cAAS;cAAkBW,KAAKC,yBAAAA;YACtDC,MAAMC;YACNzD,MAAMY,QAAQ;YACdkB,YAAY;cACVC,OAAO;gBAAC;gBAAwB;kBAAEC,IAAIhD;gBAAiB;;cACvDiD,MAAM;cACNE,UAAU;cACVD,aAAa;YACf;UACF;;MAEJ,CAAA,GACA3C,OAAOgD,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;IAG/B;EACF,CAAA;EAEAzD,gBAAgB;IACdC,IAAI,GAAGC,gBAAAA;IACPwD,WAAW,CAACtD,SAAAA;AACV,UAAIuD;AACJ,aAAOtD,GAAGC,KAAK,CAACC,QACdC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UACdA,MAAKsE,SAASE,cAAcC,QAAQzE,MAAKc,IAAI,IAAIT,OAAOG,KAAKR,MAAKc,IAAI,IAAIT,OAAOI,KAAI,CAAA,GAEvFJ,OAAOK,IAAI,CAACqB,UAAAA;AACV,YAAI,CAACwB,OAAO;AACVA,kBAAQxB,MAAM2B,GAAGH,MAAMI,MAAMW,KAAKI,YAAAA,CAAAA;QACpC;AAEA,cAAMC,YAAYxE,IAAI+D,YAAYX,KAAAA,CAAAA;AAClC,eAAOoB,UAAU/C,SAAS,IACtB;UACE;YACE/B,IAAI,GAAGC,gBAAAA;YACPwE,MAAM,GAAGxE,gBAAAA;YACTgB,MAAM;YACN8B,YAAY;cACVC,OAAO;gBAAC;gBAAmB;kBAAEC,IAAIhD;gBAAiB;;cAClDiD,MAAM;cACNhB;YACF;UACF;YAEF,CAAA;MACN,CAAA,GACA1B,OAAOgD,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;IAG/B;EACF,CAAA;EAEAzD,gBAAgB;IACdC,IAAI,GAAGC,gBAAAA;IACPwD,WAAW,CAACtD,SAAAA;AACV,UAAIuD;AACJ,aAAOtD,GAAGC,KAAK,CAACC,QACdC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UACdA,MAAKH,OAAO,GAAGC,gBAAAA,gBAAgC2E,QAAQzE,MAAK4C,WAAWb,KAAK,IACxE1B,OAAOG,KAAKR,MAAK4C,WAAWb,KAAK,IACjC1B,OAAOI,KAAI,CAAA,GAEjBJ,OAAOK,IAAI,CAACqB,UAAAA;AACV,YAAI,CAACwB,OAAO;AACVA,kBAAQxB,MAAM2B,GAAGH,MAAMI,MAAMW,KAAKI,YAAAA,CAAAA;QACpC;AACA,eAAOvE,IAAI+D,YAAYX,KAAAA,CAAAA,EACpBqB,SAAS,CAACC,GAAGC,MAAAA;AACZ,gBAAMC,QAAQF,EAAEG,QAAQ;AACxB,gBAAMC,QAAQH,EAAEE,QAAQ;AACxB,iBAAOD,MAAMG,cAAcD,KAAAA;QAC7B,CAAA,EACCvE,IAAI,CAACyE,cAAc;UAClBtF,IAAIsE,iBAAiBgB,QAAAA;UACrBb,MAAM,GAAGxE,gBAAAA;UACTgB,MAAMqE;UACNvC,YAAY;YACVC,OAAOsC,SAASH,QAAQ;cAAC;cAAsB;gBAAElC,IAAIhD;cAAiB;;YACtEiD,MAAM;UACR;QACF,EAAA;MACJ,CAAA,GACA1C,OAAOgD,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;IAG/B;EACF,CAAA;CACD;AAGH,IAAMpB,kBAAkB,OAAOjB,UAAmCe,UAAAA;AAChE,QAAM,EAAEqD,QAAO,IAAK,MAAMrD,MAAM2B,GAAGH,MAAMM,OAAOS,KAAKe,UAAAA,CAAAA,EAAaC,IAAG;AAErE,MAAIF,QAAQxD,SAAS,GAAG;AAEtB,WAAOwD,QAAQA,QAAQxD,SAAS,CAAA;EAClC;AAEA,QAAM,EAAEd,KAAI,IAAK,MAAME,SAASoB,aAAamD,gBAAgBC,YAAY;IAAEzD;EAAM,CAAA,CAAA;AACjF0D,YAAUC,aAAaL,YAAYvE,MAAM2C,MAAAA,GAAAA,QAAAA;;;;;;;;;AACzC,QAAMzC,SAASoB,aAAauD,YAAYC,WAAW;IAAEC,QAAQ9D;IAAO0B,QAAQ3C,KAAK2C;EAAO,CAAA,CAAA;AACxF,SAAO3C,KAAK2C;AACd;",
6
- "names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "createIntent", "LayoutAction", "isInstanceOf", "invariant", "ClientCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "createExtension", "ROOT_ID", "rxFromQuery", "SPACE_TYPE", "SpaceAction", "Filter", "fullyQualifiedId", "getSpace", "isSpace", "Query", "isEchoObject", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "ASSISTANT_PLUGIN", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "layout", "Layout", "graph", "AppGraph", "chat", "active", "length", "getNode", "getOrNull", "space", "getSpace", "getOrCreateChat", "spaces", "default", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "getOrElse", "connector", "query", "isEchoObject", "object", "db", "Query", "select", "Filter", "ids", "targetOf", "CompanionTo", "source", "rxFromQuery", "fullyQualifiedId", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "SPACE_TYPE", "isSpace", "TemplateType", "templates", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "template", "objects", "AIChatType", "run", "AssistantAction", "CreateChat", "invariant", "isInstanceOf", "SpaceAction", "AddObject", "target"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/chat.ts", "../../../src/types/service.ts", "../../../src/types/template.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\nimport { Expando, Ref } from '@dxos/echo-schema';\n\nexport const AIChatType = Schema.Struct({\n id: Type.ObjectId,\n name: Schema.optional(Schema.String),\n // TODO(wittjosiah): Should be a ref to a Queue.\n queue: Ref(Expando),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/AIChat',\n version: '0.2.0',\n }),\n);\nexport interface AIChatType extends Schema.Schema.Type<typeof AIChatType> {}\n\nexport const CompanionTo = Schema.Struct({\n id: Type.ObjectId,\n}).pipe(\n Type.Relation({\n typename: 'dxos.org/relation/CompanionTo',\n version: '0.1.0',\n source: AIChatType,\n target: Expando,\n }),\n);\nexport interface CompanionTo extends Schema.Schema.Type<typeof CompanionTo> {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Ref, TypedObject, type Ref$ } from '@dxos/echo-schema';\nimport { FunctionType } from '@dxos/functions';\n\nconst ApiAuthorizationKey = Schema.Struct({\n type: Schema.Literal('api-key'),\n key: Schema.String,\n placement: Schema.Union(\n Schema.Struct({\n type: Schema.Literal('authorization-header'),\n }),\n Schema.Struct({\n type: Schema.Literal('query'),\n name: Schema.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = Schema.Struct({\n type: Schema.Literal('oauth'),\n clientId: Schema.String,\n clientSecret: Schema.String,\n tokenUrl: Schema.String,\n grantType: Schema.String,\n});\n\nexport const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = Schema.Struct({\n kind: Schema.Literal('function'),\n fn: Ref(FunctionType) as Ref$<FunctionType>,\n});\n\nconst ServiceInterfaceWorkflow = Schema.Struct({\n kind: Schema.Literal('workflow'),\n workflow: Ref(ComputeGraph) as Ref$<ComputeGraph>,\n});\n\nconst ServiceInterfaceApi = Schema.Struct({\n kind: Schema.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: Schema.optional(Schema.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: Schema.optional(Schema.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: Schema.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);\nexport type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;\n\nexport class ServiceType extends TypedObject({ typename: 'dxos.org/type/ServiceType', version: '0.1.0' })({\n serviceId: Schema.String,\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n category: Schema.optional(Schema.String),\n enabled: Schema.optional(Schema.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: Schema.optional(Schema.Array(ServiceInterface)),\n}) {}\n\n//\n// Service Registry\n//\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { TypedObject } from '@dxos/echo-schema';\n\n// TODO(burdon): Change to Schema.Literal (and discriminated union).\nexport enum TemplateInputType {\n VALUE = 0,\n PASS_THROUGH = 1,\n RETRIEVER = 2,\n FUNCTION = 3,\n QUERY = 4,\n RESOLVER = 5,\n CONTEXT = 6,\n SCHEMA = 7,\n}\n\nexport const TemplateInputSchema = Schema.mutable(\n Schema.Struct({\n name: Schema.String,\n type: Schema.optional(Schema.Enums(TemplateInputType)),\n value: Schema.optional(Schema.String),\n }),\n);\n\nexport type TemplateInput = Schema.Schema.Type<typeof TemplateInputSchema>;\n\nexport const TemplateKinds = ['always', 'schema-matching', 'automatically', 'manual'] as const;\nexport type TemplateKind = (typeof TemplateKinds)[number];\n\nexport const TemplateKindSchema = Schema.Union(\n Schema.Struct({\n include: Schema.Literal('always'),\n }),\n Schema.Struct({\n include: Schema.Literal('schema-matching'),\n typename: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('automatically'),\n description: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('manual'),\n }),\n);\n\nexport type TemplateKindType = Schema.Schema.Type<typeof TemplateKindSchema>;\nexport class TemplateType extends TypedObject({ typename: 'dxos.org/type/Template', version: '0.1.0' })({\n name: Schema.optional(Schema.String),\n kind: Schema.mutable(TemplateKindSchema),\n source: Schema.String,\n inputs: Schema.optional(Schema.mutable(Schema.Array(TemplateInputSchema))),\n command: Schema.optional(Schema.String),\n}) {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { SpaceSchema } from '@dxos/react-client/echo';\n\nimport { AIChatType } from './chat';\nimport { TemplateType } from './template';\nimport { ASSISTANT_PLUGIN } from '../meta';\n\nexport namespace AssistantAction {\n const ASSISTANT_ACTION = `${ASSISTANT_PLUGIN}/action`;\n\n export class CreateChat extends Schema.TaggedClass<CreateChat>()(`${ASSISTANT_ACTION}/create-chat`, {\n input: Schema.Struct({\n space: SpaceSchema,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: AIChatType,\n }),\n }) {}\n\n export class CreateTemplate extends Schema.TaggedClass<CreateTemplate>()(`${ASSISTANT_ACTION}/create-template`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: TemplateType,\n }),\n }) {}\n}\n\nexport const LLM_PROVIDERS = ['edge', 'ollama', 'lmstudio'] as const;\n\nexport const AssistantSettingsSchema = Schema.mutable(\n Schema.Struct({\n llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),\n edgeModel: Schema.optional(Schema.String),\n ollamaModel: Schema.optional(Schema.String),\n lmstudioModel: Schema.optional(Schema.String),\n customPrompts: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport type AssistantSettingsProps = Schema.Schema.Type<typeof AssistantSettingsSchema>;\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "Type", "Expando", "Ref", "AIChatType", "Schema", "Struct", "id", "Type", "ObjectId", "name", "optional", "String", "queue", "Ref", "Expando", "pipe", "Obj", "typename", "version", "CompanionTo", "Relation", "source", "target", "Schema", "ComputeGraph", "Ref", "TypedObject", "FunctionType", "ApiAuthorizationKey", "Schema", "Struct", "type", "Literal", "key", "String", "placement", "Union", "name", "ApiAuthorizationOauth", "clientId", "clientSecret", "tokenUrl", "grantType", "ApiAuthorization", "ServiceInterfaceFunction", "kind", "fn", "Ref", "FunctionType", "ServiceInterfaceWorkflow", "workflow", "ComputeGraph", "ServiceInterfaceApi", "schemaUrl", "optional", "schema", "Any", "authorization", "ServiceInterface", "ServiceType", "TypedObject", "typename", "version", "serviceId", "description", "category", "enabled", "Boolean", "interfaces", "Array", "categoryIcons", "finance", "health", "geolocation", "education", "entertainment", "shopping", "travel", "utilities", "weather", "Schema", "TypedObject", "TemplateInputType", "TemplateInputSchema", "Schema", "mutable", "Struct", "name", "String", "type", "optional", "Enums", "value", "TemplateKinds", "TemplateKindSchema", "Union", "include", "Literal", "typename", "description", "TemplateType", "TypedObject", "version", "kind", "source", "inputs", "Array", "command", "Schema", "SpaceSchema", "AssistantAction", "ASSISTANT_ACTION", "ASSISTANT_PLUGIN", "CreateChat", "Schema", "TaggedClass", "input", "Struct", "space", "SpaceSchema", "name", "optional", "String", "output", "object", "AIChatType", "CreateTemplate", "TemplateType", "LLM_PROVIDERS", "AssistantSettingsSchema", "mutable", "llmProvider", "Literal", "edgeModel", "ollamaModel", "lmstudioModel", "customPrompts", "Boolean"]
7
- }