@dxos/plugin-assistant 0.8.0 → 0.8.1-main.81238a8

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 (234) hide show
  1. package/dist/lib/browser/{AssistantDialog-TX6YYBUG.mjs → AssistantDialog-L5RHNMU4.mjs} +6 -5
  2. package/dist/lib/browser/{AssistantDialog-TX6YYBUG.mjs.map → AssistantDialog-L5RHNMU4.mjs.map} +3 -3
  3. package/dist/lib/browser/{ChatContainer-AT3OAUT3.mjs → ChatContainer-EEEVE62F.mjs} +5 -5
  4. package/dist/lib/browser/TemplateContainer-7IQ6V5AD.mjs +78 -0
  5. package/dist/lib/browser/TemplateContainer-7IQ6V5AD.mjs.map +7 -0
  6. package/dist/lib/browser/ai-client-BAPVMSNX.mjs +35 -0
  7. package/dist/lib/browser/ai-client-BAPVMSNX.mjs.map +7 -0
  8. package/dist/lib/browser/{app-graph-builder-AXAIFOGV.mjs → app-graph-builder-DTCUWBKB.mjs} +57 -13
  9. package/dist/lib/browser/app-graph-builder-DTCUWBKB.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-G7B54APW.mjs → chunk-5RMJYOT7.mjs} +34 -12
  11. package/dist/lib/browser/chunk-5RMJYOT7.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-EUMPBC4T.mjs → chunk-6FTPLBSC.mjs} +2 -2
  13. package/dist/lib/browser/{chunk-NV7SVHMV.mjs → chunk-AF7VQAKS.mjs} +1 -1
  14. package/dist/lib/browser/{chunk-NV7SVHMV.mjs.map → chunk-AF7VQAKS.mjs.map} +2 -2
  15. package/dist/lib/browser/{chunk-VZ4W6SHE.mjs → chunk-SVUCJXGN.mjs} +2 -2
  16. package/dist/lib/browser/chunk-SVUCJXGN.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-FRIKXDDQ.mjs → chunk-X6ALDUA5.mjs} +26 -4
  18. package/dist/lib/browser/chunk-X6ALDUA5.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-NFVIZS3B.mjs → chunk-XFUCWOMV.mjs} +287 -70
  20. package/dist/lib/browser/chunk-XFUCWOMV.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +21 -11
  22. package/dist/lib/browser/index.mjs.map +3 -3
  23. package/dist/lib/browser/{intent-resolver-QRVRZL6K.mjs → intent-resolver-U57FXP3I.mjs} +6 -3
  24. package/dist/lib/browser/{intent-resolver-QRVRZL6K.mjs.map → intent-resolver-U57FXP3I.mjs.map} +3 -3
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/{react-surface-JLXNWOI6.mjs → react-surface-KFLHNDNR.mjs} +10 -9
  27. package/dist/lib/browser/react-surface-KFLHNDNR.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-JTT62IHD.mjs → settings-VAW6UWFL.mjs} +3 -3
  29. package/dist/lib/browser/types/index.mjs +6 -2
  30. package/dist/lib/node/{AssistantDialog-U4GBPZD6.cjs → AssistantDialog-VIB7GPQN.cjs} +12 -11
  31. package/dist/lib/node/{AssistantDialog-U4GBPZD6.cjs.map → AssistantDialog-VIB7GPQN.cjs.map} +3 -3
  32. package/dist/lib/node/{ChatContainer-CVHXNHGA.cjs → ChatContainer-BPI3GEZS.cjs} +10 -10
  33. package/dist/lib/node/TemplateContainer-VPAZRFQA.cjs +104 -0
  34. package/dist/lib/node/TemplateContainer-VPAZRFQA.cjs.map +7 -0
  35. package/dist/lib/node/{ai-client-YANJEPO3.cjs → ai-client-5ESLYXAV.cjs} +19 -8
  36. package/dist/lib/node/ai-client-5ESLYXAV.cjs.map +7 -0
  37. package/dist/lib/node/{app-graph-builder-D7SHQTZS.cjs → app-graph-builder-3P6WSON2.cjs} +63 -20
  38. package/dist/lib/node/app-graph-builder-3P6WSON2.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-37GI4NYH.cjs → chunk-KLSNCP34.cjs} +33 -9
  40. package/dist/lib/node/chunk-KLSNCP34.cjs.map +7 -0
  41. package/dist/lib/node/{chunk-NV4TQQSU.cjs → chunk-N3SW6DJ6.cjs} +6 -6
  42. package/dist/lib/node/{chunk-XUTDR7HI.cjs → chunk-OJJ4F6KP.cjs} +291 -78
  43. package/dist/lib/node/chunk-OJJ4F6KP.cjs.map +7 -0
  44. package/dist/lib/node/{chunk-GNPXCHFT.cjs → chunk-U6J2GO7I.cjs} +4 -4
  45. package/dist/lib/node/{chunk-GNPXCHFT.cjs.map → chunk-U6J2GO7I.cjs.map} +2 -2
  46. package/dist/lib/node/{chunk-ZGH6F5YA.cjs → chunk-VRXFIS4X.cjs} +6 -6
  47. package/dist/lib/node/chunk-VRXFIS4X.cjs.map +7 -0
  48. package/dist/lib/node/{chunk-IXJCGW7U.cjs → chunk-WFVOWPKV.cjs} +40 -18
  49. package/dist/lib/node/chunk-WFVOWPKV.cjs.map +7 -0
  50. package/dist/lib/node/index.cjs +73 -63
  51. package/dist/lib/node/index.cjs.map +3 -3
  52. package/dist/lib/node/{intent-resolver-YMMAFVOB.cjs → intent-resolver-YIFAMM3B.cjs} +13 -10
  53. package/dist/lib/node/{intent-resolver-YMMAFVOB.cjs.map → intent-resolver-YIFAMM3B.cjs.map} +3 -3
  54. package/dist/lib/node/meta.json +1 -1
  55. package/dist/lib/node/{react-surface-BSUZQ3HZ.cjs → react-surface-REI6G6B3.cjs} +25 -24
  56. package/dist/lib/node/react-surface-REI6G6B3.cjs.map +7 -0
  57. package/dist/lib/node/{settings-4YEO7KXF.cjs → settings-2FEYGLYU.cjs} +8 -8
  58. package/dist/lib/node/types/index.cjs +15 -11
  59. package/dist/lib/node/types/index.cjs.map +2 -2
  60. package/dist/lib/node-esm/{AssistantDialog-5AT5JAZL.mjs → AssistantDialog-R3EPF2KL.mjs} +6 -5
  61. package/dist/lib/node-esm/{AssistantDialog-5AT5JAZL.mjs.map → AssistantDialog-R3EPF2KL.mjs.map} +3 -3
  62. package/dist/lib/node-esm/{ChatContainer-VR766C4M.mjs → ChatContainer-UJ7MV7GU.mjs} +5 -5
  63. package/dist/lib/node-esm/TemplateContainer-YLA6BJY6.mjs +79 -0
  64. package/dist/lib/node-esm/TemplateContainer-YLA6BJY6.mjs.map +7 -0
  65. package/dist/lib/node-esm/ai-client-XYZ5N7CR.mjs +36 -0
  66. package/dist/lib/node-esm/ai-client-XYZ5N7CR.mjs.map +7 -0
  67. package/dist/lib/node-esm/{app-graph-builder-H2GC2AZA.mjs → app-graph-builder-PMAQLTTN.mjs} +57 -13
  68. package/dist/lib/node-esm/app-graph-builder-PMAQLTTN.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-77ARTFBA.mjs → chunk-2CIYX3SD.mjs} +2 -2
  70. package/dist/lib/node-esm/chunk-2CIYX3SD.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-AMQMVQJO.mjs → chunk-6GBMQIW7.mjs} +34 -12
  72. package/dist/lib/node-esm/chunk-6GBMQIW7.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-7JENJTLB.mjs → chunk-AMTHOYNB.mjs} +287 -70
  74. package/dist/lib/node-esm/chunk-AMTHOYNB.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs → chunk-J63VQFQO.mjs} +2 -2
  76. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs → chunk-N6BVC2C2.mjs} +1 -1
  77. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs.map → chunk-N6BVC2C2.mjs.map} +2 -2
  78. package/dist/lib/node-esm/{chunk-CJ4Y3QW5.mjs → chunk-NMMRHHAR.mjs} +26 -4
  79. package/dist/lib/node-esm/chunk-NMMRHHAR.mjs.map +7 -0
  80. package/dist/lib/node-esm/index.mjs +21 -11
  81. package/dist/lib/node-esm/index.mjs.map +3 -3
  82. package/dist/lib/node-esm/{intent-resolver-MR7BOKEW.mjs → intent-resolver-SQ4HLL5L.mjs} +6 -3
  83. package/dist/lib/node-esm/{intent-resolver-MR7BOKEW.mjs.map → intent-resolver-SQ4HLL5L.mjs.map} +3 -3
  84. package/dist/lib/node-esm/meta.json +1 -1
  85. package/dist/lib/node-esm/{react-surface-IGVYAOGL.mjs → react-surface-LE57AGPI.mjs} +10 -9
  86. package/dist/lib/node-esm/react-surface-LE57AGPI.mjs.map +7 -0
  87. package/dist/lib/node-esm/{settings-S7P5RWQI.mjs → settings-VHR5KT4J.mjs} +3 -3
  88. package/dist/lib/node-esm/types/index.mjs +6 -2
  89. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/ai-client.d.ts +2 -2
  91. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/capabilities.d.ts +3 -2
  94. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/index.d.ts +1 -1
  96. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  98. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +2 -2
  99. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  100. package/dist/types/src/components/AssistantDialog.d.ts.map +1 -1
  101. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +2 -1
  102. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  103. package/dist/types/src/components/ChatContainer.d.ts +2 -1
  104. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  105. package/dist/types/src/components/Prompt/Prompt.d.ts +3 -0
  106. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
  107. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +1 -0
  108. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/Prompt/PromptBar.d.ts +3 -2
  110. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  111. package/dist/types/src/components/Prompt/references.d.ts +30 -0
  112. package/dist/types/src/components/Prompt/references.d.ts.map +1 -0
  113. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +2 -1
  114. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +1 -1
  115. package/dist/types/src/components/TemplateContainer.d.ts +2 -1
  116. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  117. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  118. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  119. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +2 -1
  120. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +3 -2
  122. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  123. package/dist/types/src/components/Thread/Thread.d.ts +12 -1
  124. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  125. package/dist/types/src/components/Thread/ThreadContainer.d.ts +1 -0
  126. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  127. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -1
  128. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  130. package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -3
  131. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  132. package/dist/types/src/components/index.d.ts +2 -2
  133. package/dist/types/src/components/index.d.ts.map +1 -1
  134. package/dist/types/src/hooks/index.d.ts +1 -0
  135. package/dist/types/src/hooks/index.d.ts.map +1 -1
  136. package/dist/types/src/hooks/invocation-handler.d.ts +1 -1
  137. package/dist/types/src/hooks/invocation-handler.d.ts.map +1 -1
  138. package/dist/types/src/hooks/processor.d.ts +8 -5
  139. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  140. package/dist/types/src/hooks/useChatProcessor.d.ts +9 -2
  141. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  142. package/dist/types/src/hooks/useContextProvider.d.ts +17 -0
  143. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -0
  144. package/dist/types/src/hooks/useMessageQueue.d.ts +4 -4
  145. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  146. package/dist/types/src/meta.d.ts +2 -8
  147. package/dist/types/src/meta.d.ts.map +1 -1
  148. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  149. package/dist/types/src/tools/function.d.ts +1 -1
  150. package/dist/types/src/tools/function.d.ts.map +1 -1
  151. package/dist/types/src/translations.d.ts +21 -6
  152. package/dist/types/src/translations.d.ts.map +1 -1
  153. package/dist/types/src/types/service.d.ts +1 -1
  154. package/dist/types/src/types/service.d.ts.map +1 -1
  155. package/dist/types/src/types/template.d.ts +36 -0
  156. package/dist/types/src/types/template.d.ts.map +1 -1
  157. package/dist/types/src/types/types.d.ts +3 -1
  158. package/dist/types/src/types/types.d.ts.map +1 -1
  159. package/package.json +56 -56
  160. package/src/AssistantPlugin.tsx +11 -2
  161. package/src/capabilities/ai-client.ts +23 -4
  162. package/src/capabilities/app-graph-builder.ts +48 -4
  163. package/src/capabilities/capabilities.ts +4 -2
  164. package/src/capabilities/intent-resolver.ts +1 -1
  165. package/src/capabilities/react-surface.tsx +3 -2
  166. package/src/components/AssistantDialog.tsx +7 -1
  167. package/src/components/AssistantSettings/AssistantSettings.tsx +39 -5
  168. package/src/components/Prompt/Prompt.stories.tsx +34 -0
  169. package/src/components/Prompt/Prompt.tsx +9 -2
  170. package/src/components/Prompt/PromptBar.tsx +18 -7
  171. package/src/components/Prompt/references.ts +180 -0
  172. package/src/components/TemplateContainer.tsx +79 -4
  173. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +1 -1
  174. package/src/components/TemplateEditor/TemplateForm.stories.tsx +1 -1
  175. package/src/components/TemplateEditor/TemplateForm.tsx +1 -1
  176. package/src/components/Thread/Thread.tsx +21 -0
  177. package/src/components/Thread/ThreadContainer.stories.tsx +5 -8
  178. package/src/components/Thread/ThreadContainer.tsx +7 -4
  179. package/src/components/Thread/ThreadMessage.tsx +17 -9
  180. package/src/components/Toolbox/Toolbox.tsx +1 -1
  181. package/src/components/index.ts +3 -0
  182. package/src/hooks/index.ts +1 -0
  183. package/src/hooks/invocation-handler.ts +3 -5
  184. package/src/hooks/processor.ts +18 -9
  185. package/src/hooks/useChatProcessor.tsx +24 -15
  186. package/src/hooks/useContextProvider.ts +55 -0
  187. package/src/hooks/useLocalTriggerManager.ts +1 -1
  188. package/src/hooks/useMessageQueue.ts +2 -4
  189. package/src/meta.ts +2 -2
  190. package/src/testing/test-functions.ts +2 -2
  191. package/src/tools/function.ts +2 -2
  192. package/src/tools/openapi.test.ts +4 -4
  193. package/src/translations.ts +8 -3
  194. package/src/types/service.ts +1 -1
  195. package/src/types/template.ts +22 -0
  196. package/src/types/types.ts +3 -1
  197. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs +0 -23
  198. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs.map +0 -7
  199. package/dist/lib/browser/ai-client-RTCGRKZE.mjs +0 -22
  200. package/dist/lib/browser/ai-client-RTCGRKZE.mjs.map +0 -7
  201. package/dist/lib/browser/app-graph-builder-AXAIFOGV.mjs.map +0 -7
  202. package/dist/lib/browser/chunk-FRIKXDDQ.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-G7B54APW.mjs.map +0 -7
  204. package/dist/lib/browser/chunk-NFVIZS3B.mjs.map +0 -7
  205. package/dist/lib/browser/chunk-VZ4W6SHE.mjs.map +0 -7
  206. package/dist/lib/browser/react-surface-JLXNWOI6.mjs.map +0 -7
  207. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs +0 -53
  208. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs.map +0 -7
  209. package/dist/lib/node/ai-client-YANJEPO3.cjs.map +0 -7
  210. package/dist/lib/node/app-graph-builder-D7SHQTZS.cjs.map +0 -7
  211. package/dist/lib/node/chunk-37GI4NYH.cjs.map +0 -7
  212. package/dist/lib/node/chunk-IXJCGW7U.cjs.map +0 -7
  213. package/dist/lib/node/chunk-XUTDR7HI.cjs.map +0 -7
  214. package/dist/lib/node/chunk-ZGH6F5YA.cjs.map +0 -7
  215. package/dist/lib/node/react-surface-BSUZQ3HZ.cjs.map +0 -7
  216. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs +0 -24
  217. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs.map +0 -7
  218. package/dist/lib/node-esm/ai-client-66IBZVCX.mjs +0 -23
  219. package/dist/lib/node-esm/ai-client-66IBZVCX.mjs.map +0 -7
  220. package/dist/lib/node-esm/app-graph-builder-H2GC2AZA.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-77ARTFBA.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-7JENJTLB.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-AMQMVQJO.mjs.map +0 -7
  224. package/dist/lib/node-esm/chunk-CJ4Y3QW5.mjs.map +0 -7
  225. package/dist/lib/node-esm/react-surface-IGVYAOGL.mjs.map +0 -7
  226. /package/dist/lib/browser/{ChatContainer-AT3OAUT3.mjs.map → ChatContainer-EEEVE62F.mjs.map} +0 -0
  227. /package/dist/lib/browser/{chunk-EUMPBC4T.mjs.map → chunk-6FTPLBSC.mjs.map} +0 -0
  228. /package/dist/lib/browser/{settings-JTT62IHD.mjs.map → settings-VAW6UWFL.mjs.map} +0 -0
  229. /package/dist/lib/node/{ChatContainer-CVHXNHGA.cjs.map → ChatContainer-BPI3GEZS.cjs.map} +0 -0
  230. /package/dist/lib/node/{chunk-NV4TQQSU.cjs.map → chunk-N3SW6DJ6.cjs.map} +0 -0
  231. /package/dist/lib/node/{settings-4YEO7KXF.cjs.map → settings-2FEYGLYU.cjs.map} +0 -0
  232. /package/dist/lib/node-esm/{ChatContainer-VR766C4M.mjs.map → ChatContainer-UJ7MV7GU.mjs.map} +0 -0
  233. /package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs.map → chunk-J63VQFQO.mjs.map} +0 -0
  234. /package/dist/lib/node-esm/{settings-S7P5RWQI.mjs.map → settings-VHR5KT4J.mjs.map} +0 -0
@@ -1,20 +1,20 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  AssistantCapabilities
4
- } from "./chunk-77ARTFBA.mjs";
4
+ } from "./chunk-2CIYX3SD.mjs";
5
5
  import {
6
6
  ServiceType,
7
7
  categoryIcons
8
- } from "./chunk-CJ4Y3QW5.mjs";
8
+ } from "./chunk-NMMRHHAR.mjs";
9
9
  import {
10
10
  ASSISTANT_PLUGIN
11
- } from "./chunk-7SV6X6XU.mjs";
11
+ } from "./chunk-N6BVC2C2.mjs";
12
12
 
13
13
  // packages/plugins/experimental/plugin-assistant/src/components/Toolbox/Toolbox.tsx
14
14
  import React, { useState, useEffect, Fragment } from "react";
15
15
  import { Capabilities, useCapabilities } from "@dxos/app-framework";
16
16
  import { parseToolName } from "@dxos/artifact";
17
- import { FunctionType } from "@dxos/functions";
17
+ import { FunctionType } from "@dxos/functions/types";
18
18
  import { log as log3 } from "@dxos/log";
19
19
  import { Filter, useQuery } from "@dxos/react-client/echo";
20
20
  import { mx } from "@dxos/react-ui-theme";
@@ -22,7 +22,7 @@ import { mx } from "@dxos/react-ui-theme";
22
22
  // packages/plugins/experimental/plugin-assistant/src/tools/function.ts
23
23
  import { defineTool, ToolResult } from "@dxos/artifact";
24
24
  import { toEffectSchema } from "@dxos/echo-schema";
25
- import { getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions";
25
+ import { getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions/types";
26
26
  import { log } from "@dxos/log";
27
27
  import { getMeta } from "@dxos/react-client/echo";
28
28
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/tools/function.ts";
@@ -551,7 +551,7 @@ import { keyToFallback } from "@dxos/util";
551
551
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadMessage.tsx
552
552
  import React3 from "react";
553
553
  import { invariant as invariant2 } from "@dxos/invariant";
554
- import { Button, ButtonGroup, Icon, IconButton } from "@dxos/react-ui";
554
+ import { Button, Icon, IconButton } from "@dxos/react-ui";
555
555
  import { MarkdownViewer, ToggleContainer as NativeToggleContainer } from "@dxos/react-ui-components";
556
556
  import { Json as Json2 } from "@dxos/react-ui-syntax-highlighter";
557
557
  import { mx as mx2 } from "@dxos/react-ui-theme";
@@ -682,7 +682,7 @@ var ToolContainer = ({ classNames, items }) => {
682
682
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadMessage.tsx
683
683
  var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadMessage.tsx";
684
684
  var panelClassNames = "flex flex-col w-full px-2 bg-groupSurface rounded-md";
685
- var userClassNames = "bg-[--user-fill]";
685
+ var userClassNames = "bg-[--user-fill] text-inverse";
686
686
  var ToggleContainer2 = (props) => {
687
687
  return /* @__PURE__ */ React3.createElement(NativeToggleContainer, {
688
688
  ...props,
@@ -707,7 +707,7 @@ var ThreadMessage = ({ classNames, space, message, tools, onPrompt }) => {
707
707
  const { role, content = [] } = message;
708
708
  if (isToolMessage(message)) {
709
709
  return /* @__PURE__ */ React3.createElement(MessageContainer, {
710
- classNames
710
+ classNames: mx2(classNames, "animate-[fadeIn_0.5s]")
711
711
  }, /* @__PURE__ */ React3.createElement(ToolBlock, {
712
712
  space,
713
713
  classNames: panelClassNames,
@@ -722,7 +722,7 @@ var ThreadMessage = ({ classNames, space, message, tools, onPrompt }) => {
722
722
  const Component = components[block.type] ?? components.default;
723
723
  return /* @__PURE__ */ React3.createElement(MessageContainer, {
724
724
  key: idx,
725
- classNames,
725
+ classNames: mx2(classNames, "animate-[fadeIn_0.5s]"),
726
726
  user: block.type === "text" && role === "user"
727
727
  }, /* @__PURE__ */ React3.createElement(Component, {
728
728
  space,
@@ -738,7 +738,7 @@ var components = {
738
738
  ["text"]: ({ block }) => {
739
739
  invariant2(block.type === "text", void 0, {
740
740
  F: __dxlog_file5,
741
- L: 86,
741
+ L: 90,
742
742
  S: void 0,
743
743
  A: [
744
744
  "block.type === 'text'",
@@ -748,6 +748,7 @@ var components = {
748
748
  const title = block.disposition ? titles[block.disposition] : void 0;
749
749
  if (!title) {
750
750
  return /* @__PURE__ */ React3.createElement(MarkdownViewer, {
751
+ classNames: "[&>p]:animate-[fadeIn_0.5s]",
751
752
  content: block.text
752
753
  });
753
754
  }
@@ -774,7 +775,7 @@ var components = {
774
775
  ["json"]: ({ space, block, onPrompt }) => {
775
776
  invariant2(block.type === "json", void 0, {
776
777
  F: __dxlog_file5,
777
- L: 124,
778
+ L: 128,
778
779
  S: void 0,
779
780
  A: [
780
781
  "block.type === 'json'",
@@ -801,7 +802,10 @@ var components = {
801
802
  }
802
803
  case "select": {
803
804
  const { options = [] } = safeParseJson(block.json ?? "{}") ?? {};
804
- return /* @__PURE__ */ React3.createElement(ButtonGroup, null, options.map((option) => /* @__PURE__ */ React3.createElement(Button, {
805
+ return /* @__PURE__ */ React3.createElement("div", {
806
+ className: "flex flex-wrap gap-1"
807
+ }, options.map((option, idx) => /* @__PURE__ */ React3.createElement(Button, {
808
+ classNames: "animate-[fadeIn_0.5s] rounded-2xl text-sm",
805
809
  key: option,
806
810
  onClick: () => onPrompt?.(option)
807
811
  }, option)));
@@ -892,7 +896,7 @@ var messageReducer = ({ current, messages }, message) => {
892
896
  // packages/plugins/experimental/plugin-assistant/src/components/Prompt/Prompt.tsx
893
897
  import React4, { forwardRef, useImperativeHandle } from "react";
894
898
  import { useThemeContext } from "@dxos/react-ui";
895
- import { createBasicExtensions, createThemeExtensions, keymap as keymap2, useTextEditor } from "@dxos/react-ui-editor";
899
+ import { createBasicExtensions, createThemeExtensions, keymap as keymap3, useTextEditor } from "@dxos/react-ui-editor";
896
900
  import { mx as mx3 } from "@dxos/react-ui-theme";
897
901
 
898
902
  // packages/plugins/experimental/plugin-assistant/src/components/Prompt/autocomplete.ts
@@ -1049,10 +1053,127 @@ var InlineSuggestionWidget = class extends WidgetType {
1049
1053
  }
1050
1054
  };
1051
1055
 
1056
+ // packages/plugins/experimental/plugin-assistant/src/components/Prompt/references.ts
1057
+ import { autocompletion, completionKeymap } from "@codemirror/autocomplete";
1058
+ import { RangeSet } from "@codemirror/state";
1059
+ import { Decoration as Decoration2, EditorView as EditorView2, keymap as keymap2, ViewPlugin as ViewPlugin2, WidgetType as WidgetType2 } from "@codemirror/view";
1060
+ import { Mutex } from "@dxos/async";
1061
+ var promptReferences = ({ provider, debug = false, triggerCharacter = "@" }) => {
1062
+ if (triggerCharacter.length !== 1) {
1063
+ throw new Error("triggerCharacter must be a single character");
1064
+ }
1065
+ const decorationField = ViewPlugin2.fromClass(class ReferenceView {
1066
+ constructor(view) {
1067
+ this._mutex = new Mutex();
1068
+ this.decorations = Decoration2.set([]);
1069
+ queueMicrotask(async () => {
1070
+ const guard = await this._mutex.acquire();
1071
+ try {
1072
+ this.decorations = await this._computeDecorations(view);
1073
+ } finally {
1074
+ guard.release();
1075
+ }
1076
+ });
1077
+ }
1078
+ update(update) {
1079
+ if (update.docChanged) {
1080
+ queueMicrotask(async () => {
1081
+ const guard = await this._mutex.acquire();
1082
+ try {
1083
+ this.decorations = await this._computeDecorations(update.view);
1084
+ } finally {
1085
+ guard.release();
1086
+ }
1087
+ });
1088
+ }
1089
+ }
1090
+ async _computeDecorations(view) {
1091
+ const text = view.state.doc.toString();
1092
+ const references = text.matchAll(new RegExp(`${triggerCharacter}[a-zA-Z0-9@:]+\\s`, "g"));
1093
+ const decorations = [];
1094
+ for (const match of references) {
1095
+ const reference = match[0];
1096
+ const uri = reference.slice(1, -1);
1097
+ const data = await provider.resolveReference({
1098
+ uri
1099
+ });
1100
+ if (data) {
1101
+ decorations.push(Decoration2.replace({
1102
+ widget: new ReferenceWidget(data)
1103
+ }).range(match.index, match.index + reference.length));
1104
+ }
1105
+ }
1106
+ return Decoration2.set(decorations);
1107
+ }
1108
+ }, {
1109
+ decorations: (v) => v.decorations,
1110
+ provide: (plugin) => [
1111
+ EditorView2.atomicRanges.of((view) => view.plugin(decorationField)?.decorations ?? RangeSet.empty)
1112
+ ]
1113
+ });
1114
+ return [
1115
+ decorationField,
1116
+ EditorView2.theme({
1117
+ ".cm-reference-pill": {
1118
+ borderRadius: "0.25rem",
1119
+ borderWidth: "1px",
1120
+ marginRight: "0.25rem",
1121
+ marginLeft: "0.25rem"
1122
+ }
1123
+ }),
1124
+ autocompletion({
1125
+ activateOnTyping: true,
1126
+ override: [
1127
+ async (context) => {
1128
+ const match = context.matchBefore(new RegExp(`${triggerCharacter}[a-zA-Z0-9]+`));
1129
+ if (!match || match?.to === match?.from) {
1130
+ return null;
1131
+ }
1132
+ const query = match.text.slice(1);
1133
+ const references = await provider.getReferences({
1134
+ query
1135
+ });
1136
+ return {
1137
+ from: match.from,
1138
+ filter: false,
1139
+ options: references.map((reference) => ({
1140
+ label: reference.label,
1141
+ apply: `${triggerCharacter}${reference.uri} `
1142
+ }))
1143
+ };
1144
+ }
1145
+ ],
1146
+ closeOnBlur: !debug,
1147
+ tooltipClass: () => "shadow rounded",
1148
+ aboveCursor: true
1149
+ }),
1150
+ keymap2.of(completionKeymap)
1151
+ ];
1152
+ };
1153
+ var ReferenceWidget = class extends WidgetType2 {
1154
+ constructor(data) {
1155
+ super();
1156
+ this.data = data;
1157
+ }
1158
+ toDOM() {
1159
+ const span = document.createElement("span");
1160
+ span.textContent = `@ ${this.data.label}`;
1161
+ span.className = "cm-reference-pill";
1162
+ return span;
1163
+ }
1164
+ eq(other) {
1165
+ return other.data.uri === this.data.uri;
1166
+ }
1167
+ ignoreEvent() {
1168
+ return true;
1169
+ }
1170
+ };
1171
+
1052
1172
  // packages/plugins/experimental/plugin-assistant/src/components/Prompt/Prompt.tsx
1053
- var Prompt = /* @__PURE__ */ forwardRef(({ classNames, autoFocus, lineWrapping = false, placeholder, onSubmit, onSuggest, onOpenChange }, forwardRef2) => {
1173
+ var Prompt = /* @__PURE__ */ forwardRef(({ classNames, autoFocus, lineWrapping = false, placeholder, onSubmit, onSuggest, onOpenChange, references }, forwardRef2) => {
1054
1174
  const { themeMode } = useThemeContext();
1055
1175
  const { parentRef, view } = useTextEditor({
1176
+ debug: true,
1056
1177
  autoFocus,
1057
1178
  extensions: [
1058
1179
  createBasicExtensions({
@@ -1063,11 +1184,14 @@ var Prompt = /* @__PURE__ */ forwardRef(({ classNames, autoFocus, lineWrapping =
1063
1184
  createThemeExtensions({
1064
1185
  themeMode
1065
1186
  }),
1187
+ references ? promptReferences({
1188
+ provider: references
1189
+ }) : [],
1066
1190
  createAutocompleteExtension({
1067
1191
  onSubmit,
1068
1192
  onSuggest
1069
1193
  }),
1070
- keymap2.of([
1194
+ keymap3.of([
1071
1195
  {
1072
1196
  key: "Alt-ArrowUp",
1073
1197
  preventDefault: true,
@@ -1116,17 +1240,17 @@ var Prompt = /* @__PURE__ */ forwardRef(({ classNames, autoFocus, lineWrapping =
1116
1240
  ]);
1117
1241
  return /* @__PURE__ */ React4.createElement("div", {
1118
1242
  ref: parentRef,
1119
- className: mx3("w-full overflow-hidden", classNames)
1243
+ className: mx3("w-full", classNames)
1120
1244
  });
1121
1245
  });
1122
1246
 
1123
1247
  // packages/plugins/experimental/plugin-assistant/src/components/Prompt/PromptBar.tsx
1124
1248
  import React5, { useRef as useRef2, useState as useState3 } from "react";
1125
1249
  import { useVoiceInput } from "@dxos/plugin-transcription";
1126
- import { Icon as Icon2, IconButton as IconButton2, useTranslation } from "@dxos/react-ui";
1250
+ import { Icon as Icon2, IconButton as IconButton2, Tooltip, useTranslation } from "@dxos/react-ui";
1127
1251
  import { Spinner } from "@dxos/react-ui-sfx";
1128
1252
  import { errorText, mx as mx4 } from "@dxos/react-ui-theme";
1129
- var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCancel, ...props }) => {
1253
+ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCancel, references, ...props }) => {
1130
1254
  const { t } = useTranslation(ASSISTANT_PLUGIN);
1131
1255
  const promptRef = useRef2(null);
1132
1256
  const [active, setActive] = useState3(false);
@@ -1138,14 +1262,18 @@ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCan
1138
1262
  }
1139
1263
  });
1140
1264
  return /* @__PURE__ */ React5.createElement("div", {
1141
- className: mx4("flex shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] overflow-hidden", classNames)
1265
+ className: mx4("shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] overflow-hidden", classNames)
1142
1266
  }, /* @__PURE__ */ React5.createElement("div", {
1143
1267
  className: "flex w-[--rail-action] h-[--rail-action] items-center justify-center"
1144
- }, error && /* @__PURE__ */ React5.createElement(Icon2, {
1268
+ }, error && /* @__PURE__ */ React5.createElement(Tooltip.Root, {
1269
+ delayDuration: 0
1270
+ }, /* @__PURE__ */ React5.createElement(Tooltip.Trigger, null, /* @__PURE__ */ React5.createElement(Icon2, {
1145
1271
  icon: "ph--warning-circle--regular",
1146
1272
  classNames: errorText,
1147
1273
  size: 5
1148
- }) || /* @__PURE__ */ React5.createElement(Spinner, {
1274
+ })), /* @__PURE__ */ React5.createElement(Tooltip.Portal, null, /* @__PURE__ */ React5.createElement(Tooltip.Content, null, /* @__PURE__ */ React5.createElement("div", {
1275
+ className: "text-sm text-error-500"
1276
+ }, error.message), /* @__PURE__ */ React5.createElement(Tooltip.Arrow, null)))) || /* @__PURE__ */ React5.createElement(Spinner, {
1149
1277
  active: processing
1150
1278
  })), /* @__PURE__ */ React5.createElement(Prompt, {
1151
1279
  ref: promptRef,
@@ -1153,6 +1281,7 @@ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCan
1153
1281
  classNames: "pbs-2",
1154
1282
  lineWrapping: true,
1155
1283
  placeholder: placeholder ?? t("prompt placeholder"),
1284
+ references,
1156
1285
  ...props
1157
1286
  }), (onCancel || microphone) && /* @__PURE__ */ React5.createElement("div", {
1158
1287
  className: "flex w-[--rail-action] h-[--rail-action] items-center justify-center"
@@ -1180,7 +1309,7 @@ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCan
1180
1309
  };
1181
1310
 
1182
1311
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/Thread.tsx
1183
- var Thread = ({ classNames, space, messages, collapse = true, transcription, processing, error, onSubmit, onCancel, onOpenChange, ...props }) => {
1312
+ var Thread = ({ classNames, space, messages, collapse = true, transcription, processing, error, onSubmit, onCancel, onOpenChange, contextProvider, ...props }) => {
1184
1313
  const scroller = useRef3(null);
1185
1314
  const identity = useIdentity();
1186
1315
  const fallbackValue = keyToFallback(identity.identityKey);
@@ -1206,6 +1335,21 @@ var Thread = ({ classNames, space, messages, collapse = true, transcription, pro
1206
1335
  messages,
1207
1336
  collapse
1208
1337
  ]);
1338
+ const references = useMemo2(() => {
1339
+ if (!contextProvider) {
1340
+ return void 0;
1341
+ }
1342
+ return {
1343
+ getReferences: async ({ query }) => contextProvider.query({
1344
+ query
1345
+ }),
1346
+ resolveReference: async ({ uri }) => contextProvider.resolveMetadata({
1347
+ uri
1348
+ })
1349
+ };
1350
+ }, [
1351
+ contextProvider
1352
+ ]);
1209
1353
  return /* @__PURE__ */ React6.createElement("div", {
1210
1354
  role: "none",
1211
1355
  className: mx5("flex flex-col grow overflow-hidden", classNames)
@@ -1230,31 +1374,32 @@ var Thread = ({ classNames, space, messages, collapse = true, transcription, pro
1230
1374
  error,
1231
1375
  onSubmit: handleSubmit,
1232
1376
  onCancel,
1233
- onOpenChange
1377
+ onOpenChange,
1378
+ references
1234
1379
  }));
1235
1380
  };
1236
1381
 
1237
1382
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx
1238
1383
  import React7, { useCallback as useCallback3 } from "react";
1239
1384
  import { invariant as invariant6 } from "@dxos/invariant";
1240
- import { log as log9 } from "@dxos/log";
1385
+ import { log as log10 } from "@dxos/log";
1241
1386
  import { getSpace as getSpace2 } from "@dxos/react-client/echo";
1242
1387
 
1243
1388
  // packages/plugins/experimental/plugin-assistant/src/hooks/processor.ts
1244
1389
  import { batch, computed, signal } from "@preact/signals-core";
1245
1390
  import { Message } from "@dxos/artifact";
1246
- import { isToolUse, runTools, MixedStreamParser, DEFAULT_LLM_MODEL } from "@dxos/assistant";
1391
+ import { isToolUse, runTools, MixedStreamParser, DEFAULT_EDGE_MODEL } from "@dxos/assistant";
1247
1392
  import { createStatic } from "@dxos/echo-schema";
1248
1393
  import { invariant as invariant3 } from "@dxos/invariant";
1249
1394
  import { log as log5 } from "@dxos/log";
1250
1395
  var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/hooks/processor.ts";
1251
1396
  var defaultOptions = {
1252
- model: DEFAULT_LLM_MODEL,
1397
+ model: DEFAULT_EDGE_MODEL,
1253
1398
  systemPrompt: "you are a helpful assistant"
1254
1399
  };
1255
1400
  var ChatProcessor = class {
1256
- constructor(_service, _tools, _extensions, _options = defaultOptions) {
1257
- this._service = _service;
1401
+ constructor(_ai, _tools, _extensions, _options = defaultOptions) {
1402
+ this._ai = _ai;
1258
1403
  this._tools = _tools;
1259
1404
  this._extensions = _extensions;
1260
1405
  this._options = _options;
@@ -1379,7 +1524,7 @@ var ChatProcessor = class {
1379
1524
  S: this,
1380
1525
  C: (f, a) => f(...a)
1381
1526
  });
1382
- this._stream = await this._service.exec({
1527
+ this._stream = await this._ai.exec({
1383
1528
  ...this._options,
1384
1529
  // TODO(burdon): Rename messages or separate history/message.
1385
1530
  history: [
@@ -1449,37 +1594,49 @@ var ChatProcessor = class {
1449
1594
  S: this,
1450
1595
  C: (f, a) => f(...a)
1451
1596
  });
1452
- this.error.value = new Error("AI service error", {
1453
- cause: err
1454
- });
1597
+ if (err instanceof Error && err.message.includes("Overloaded")) {
1598
+ this.error.value = new AIServiecOverloadedError("AI service overloaded", {
1599
+ cause: err
1600
+ });
1601
+ } else {
1602
+ this.error.value = new Error("AI service error", {
1603
+ cause: err
1604
+ });
1605
+ }
1455
1606
  } finally {
1456
1607
  this._stream = void 0;
1457
1608
  }
1458
1609
  }
1459
1610
  };
1611
+ var AIServiecOverloadedError = class extends Error {
1612
+ constructor() {
1613
+ super(...arguments);
1614
+ this.code = "AI_SERVICE_OVERLOADED";
1615
+ }
1616
+ };
1460
1617
 
1461
1618
  // packages/plugins/experimental/plugin-assistant/src/hooks/useChatProcessor.tsx
1462
1619
  import { useEffect as useEffect3, useMemo as useMemo3, useState as useState4 } from "react";
1463
1620
  import { Capabilities as Capabilities2, useCapabilities as useCapabilities2, useCapability, useIntentDispatcher } from "@dxos/app-framework";
1464
1621
  import { createSystemPrompt } from "@dxos/artifact";
1465
- import { DEFAULT_LLM_MODEL as DEFAULT_LLM_MODEL2 } from "@dxos/assistant";
1466
- import { FunctionType as FunctionType2 } from "@dxos/functions";
1622
+ import { DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL2, DEFAULT_OLLAMA_MODEL } from "@dxos/assistant";
1623
+ import { FunctionType as FunctionType2 } from "@dxos/functions/types";
1467
1624
  import { log as log6 } from "@dxos/log";
1468
1625
  import { useConfig } from "@dxos/react-client";
1469
- import { Filter as Filter2, useQuery as useQuery2 } from "@dxos/react-client/echo";
1626
+ import { Filter as Filter2, fullyQualifiedId, useQuery as useQuery2 } from "@dxos/react-client/echo";
1470
1627
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
1471
1628
 
1472
1629
  // packages/plugins/experimental/plugin-assistant/src/capabilities/index.ts
1473
1630
  import { lazy } from "@dxos/app-framework";
1474
- var AiClient = lazy(() => import("./ai-client-66IBZVCX.mjs"));
1475
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-H2GC2AZA.mjs"));
1476
- var IntentResolver = lazy(() => import("./intent-resolver-MR7BOKEW.mjs"));
1477
- var ReactSurface = lazy(() => import("./react-surface-IGVYAOGL.mjs"));
1478
- var AssistantSettings = lazy(() => import("./settings-S7P5RWQI.mjs"));
1631
+ var AiClient = lazy(() => import("./ai-client-XYZ5N7CR.mjs"));
1632
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-PMAQLTTN.mjs"));
1633
+ var IntentResolver = lazy(() => import("./intent-resolver-SQ4HLL5L.mjs"));
1634
+ var ReactSurface = lazy(() => import("./react-surface-LE57AGPI.mjs"));
1635
+ var AssistantSettings = lazy(() => import("./settings-VHR5KT4J.mjs"));
1479
1636
 
1480
1637
  // packages/plugins/experimental/plugin-assistant/src/hooks/useChatProcessor.tsx
1481
1638
  var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/hooks/useChatProcessor.tsx";
1482
- var useChatProcessor = (space, settings) => {
1639
+ var useChatProcessor = ({ chat, space, settings, part = "deck" }) => {
1483
1640
  const aiClient = useCapability(AssistantCapabilities.AiClient);
1484
1641
  const globalTools = useCapabilities2(Capabilities2.Tools);
1485
1642
  const artifactDefinitions = useCapabilities2(Capabilities2.ArtifactDefinition);
@@ -1489,7 +1646,7 @@ var useChatProcessor = (space, settings) => {
1489
1646
  useEffect3(() => {
1490
1647
  log6("creating service tools...", void 0, {
1491
1648
  F: __dxlog_file7,
1492
- L: 34,
1649
+ L: 41,
1493
1650
  S: void 0,
1494
1651
  C: (f, a) => f(...a)
1495
1652
  });
@@ -1502,10 +1659,13 @@ var useChatProcessor = (space, settings) => {
1502
1659
  ]);
1503
1660
  const config = useConfig();
1504
1661
  const functions = useQuery2(space, Filter2.schema(FunctionType2));
1662
+ const chatId = useMemo3(() => chat ? fullyQualifiedId(chat) : void 0, [
1663
+ chat
1664
+ ]);
1505
1665
  const [tools, extensions] = useMemo3(() => {
1506
1666
  log6("creating tools...", void 0, {
1507
1667
  F: __dxlog_file7,
1508
- L: 45,
1668
+ L: 53,
1509
1669
  S: void 0,
1510
1670
  C: (f, a) => f(...a)
1511
1671
  });
@@ -1517,7 +1677,9 @@ var useChatProcessor = (space, settings) => {
1517
1677
  ];
1518
1678
  const extensions2 = {
1519
1679
  space,
1520
- dispatch
1680
+ dispatch,
1681
+ pivotId: chatId,
1682
+ part
1521
1683
  };
1522
1684
  return [
1523
1685
  tools2,
@@ -1528,6 +1690,7 @@ var useChatProcessor = (space, settings) => {
1528
1690
  globalTools,
1529
1691
  artifactDefinitions,
1530
1692
  space,
1693
+ chatId,
1531
1694
  serviceTools,
1532
1695
  functions
1533
1696
  ]);
@@ -1536,37 +1699,36 @@ var useChatProcessor = (space, settings) => {
1536
1699
  }), [
1537
1700
  artifactDefinitions
1538
1701
  ]);
1702
+ const model = settings?.llmProvider === "ollama" ? settings?.ollamaModel ?? DEFAULT_OLLAMA_MODEL : settings?.edgeModel ?? DEFAULT_EDGE_MODEL2;
1539
1703
  const processor = useMemo3(() => {
1540
1704
  log6("creating processor...", {
1541
1705
  settings
1542
1706
  }, {
1543
1707
  F: __dxlog_file7,
1544
- L: 70,
1708
+ L: 84,
1545
1709
  S: void 0,
1546
1710
  C: (f, a) => f(...a)
1547
1711
  });
1548
- return new ChatProcessor(aiClient, tools, extensions, {
1549
- // TODO(burdon): Remove defualt (let backend decide if not specified).
1550
- model: settings?.llmModel ?? DEFAULT_LLM_MODEL2,
1551
- // TOOD(burdon): Query.
1712
+ return new ChatProcessor(aiClient.value, tools, extensions, {
1713
+ model,
1552
1714
  systemPrompt
1553
1715
  });
1554
1716
  }, [
1555
- aiClient,
1717
+ aiClient.value,
1556
1718
  tools,
1557
1719
  extensions,
1558
- systemPrompt,
1559
- settings?.llmModel
1720
+ model,
1721
+ systemPrompt
1560
1722
  ]);
1561
1723
  return processor;
1562
1724
  };
1563
1725
 
1564
1726
  // packages/plugins/experimental/plugin-assistant/src/hooks/useLocalTriggerManager.ts
1565
1727
  import { useEffect as useEffect4, useState as useState5 } from "react";
1566
- import { Mutex } from "@dxos/async";
1728
+ import { Mutex as Mutex2 } from "@dxos/async";
1567
1729
  import { Context } from "@dxos/context";
1568
1730
  import { createSubscriptionTrigger } from "@dxos/functions";
1569
- import { FunctionTrigger } from "@dxos/functions";
1731
+ import { FunctionTrigger } from "@dxos/functions/types";
1570
1732
  import { invariant as invariant5 } from "@dxos/invariant";
1571
1733
  import { log as log8 } from "@dxos/log";
1572
1734
  import { useClient } from "@dxos/react-client";
@@ -1575,19 +1737,18 @@ import { Filter as Filter3, useQuery as useQuery3 } from "@dxos/react-client/ech
1575
1737
  // packages/plugins/experimental/plugin-assistant/src/hooks/invocation-handler.ts
1576
1738
  import { sleep } from "@dxos/async";
1577
1739
  import { getObjectCore, ResultFormat } from "@dxos/echo-db";
1578
- import { FunctionType as FunctionType3 } from "@dxos/functions";
1740
+ import { FunctionType as FunctionType3, getUserFunctionUrlInMetadata as getUserFunctionUrlInMetadata2 } from "@dxos/functions/types";
1579
1741
  import { invariant as invariant4 } from "@dxos/invariant";
1580
1742
  import { DXN, LOCAL_SPACE_TAG } from "@dxos/keys";
1581
1743
  import { log as log7 } from "@dxos/log";
1582
1744
 
1583
1745
  // packages/plugins/experimental/plugin-assistant/src/hooks/useLocalTriggerManager.ts
1584
- var registerTriggersMutex = new Mutex();
1746
+ var registerTriggersMutex = new Mutex2();
1585
1747
 
1586
1748
  // packages/plugins/experimental/plugin-assistant/src/hooks/useMessageQueue.ts
1587
1749
  import { useMemo as useMemo4 } from "react";
1588
1750
  import { DXN as DXN2, QueueSubspaceTags } from "@dxos/keys";
1589
- import { getSpace } from "@dxos/react-client/echo";
1590
- import { useEdgeClient, useQueue } from "@dxos/react-edge-client";
1751
+ import { getSpace, useQueue } from "@dxos/react-client/echo";
1591
1752
  var useMessageQueue = (chat) => {
1592
1753
  const space = getSpace(chat);
1593
1754
  const queueDxn = useMemo4(() => {
@@ -1601,8 +1762,7 @@ var useMessageQueue = (chat) => {
1601
1762
  space,
1602
1763
  chat?.queue.dxn
1603
1764
  ]);
1604
- const edgeClient = useEdgeClient();
1605
- return useQueue(edgeClient, queueDxn);
1765
+ return useQueue(queueDxn);
1606
1766
  };
1607
1767
 
1608
1768
  // packages/plugins/experimental/plugin-assistant/src/hooks/useServices.ts
@@ -1610,7 +1770,7 @@ import { useEffect as useEffect5, useMemo as useMemo5, useState as useState6 } f
1610
1770
 
1611
1771
  // packages/plugins/experimental/plugin-assistant/src/testing/test-functions.ts
1612
1772
  import { createSystemPrompt as createSystemPrompt2 } from "@dxos/artifact";
1613
- import { DEFAULT_LLM_MODEL as DEFAULT_LLM_MODEL3 } from "@dxos/assistant";
1773
+ import { DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL3 } from "@dxos/assistant";
1614
1774
 
1615
1775
  // packages/plugins/experimental/plugin-assistant/src/testing/test-services.ts
1616
1776
  import { createStatic as createStatic2 } from "@dxos/echo-schema";
@@ -1726,11 +1886,67 @@ var useServices = (space, query) => {
1726
1886
  // packages/plugins/experimental/plugin-assistant/src/hooks/useTextInputEvents.ts
1727
1887
  import { useState as useState7, useCallback as useCallback2 } from "react";
1728
1888
 
1889
+ // packages/plugins/experimental/plugin-assistant/src/hooks/useContextProvider.ts
1890
+ import { useMemo as useMemo6 } from "react";
1891
+ import { Capabilities as Capabilities3, useCapabilities as useCapabilities3 } from "@dxos/app-framework";
1892
+ import { getDXN, getLabel, getSchema } from "@dxos/echo-schema";
1893
+ import { log as log9 } from "@dxos/log";
1894
+ import { Filter as Filter4 } from "@dxos/react-client/echo";
1895
+ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/hooks/useContextProvider.ts";
1896
+ var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
1897
+ var useContextProvider = (space) => {
1898
+ const artifactDefinitions = useCapabilities3(Capabilities3.ArtifactDefinition);
1899
+ return useMemo6(() => {
1900
+ if (!space) {
1901
+ return void 0;
1902
+ }
1903
+ return {
1904
+ query: async ({ query }) => {
1905
+ const artifactSchemas = artifactDefinitions.map((artifact) => artifact.schema);
1906
+ const { objects } = await space.db.query(Filter4.or(...artifactSchemas.map((schema) => Filter4.schema(schema)))).run();
1907
+ return objects.map((object) => {
1908
+ log9.info("object", {
1909
+ object,
1910
+ label: getLabel(getSchema(object), object)
1911
+ }, {
1912
+ F: __dxlog_file8,
1913
+ L: 36,
1914
+ S: void 0,
1915
+ C: (f, a) => f(...a)
1916
+ });
1917
+ return object;
1918
+ }).filter((object) => stringMatch(query, getLabel(getSchema(object), object) ?? "")).filter((object) => !!getDXN(object)).map((object) => ({
1919
+ uri: getDXN(object).toString(),
1920
+ label: getLabel(getSchema(object), object) ?? ""
1921
+ }));
1922
+ },
1923
+ resolveMetadata: async ({ uri }) => {
1924
+ const object = await space.db.query({
1925
+ id: uri
1926
+ }).first();
1927
+ return {
1928
+ uri,
1929
+ label: getLabel(getSchema(object), object) ?? ""
1930
+ };
1931
+ }
1932
+ };
1933
+ }, [
1934
+ space,
1935
+ artifactDefinitions
1936
+ ]);
1937
+ };
1938
+
1729
1939
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx
1730
- var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx";
1731
- var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) => {
1940
+ var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx";
1941
+ var ThreadContainer = ({ classNames, chat, settings, part, onOpenChange, ...props }) => {
1732
1942
  const space = getSpace2(chat);
1733
- const processor = useChatProcessor(space, settings);
1943
+ const contextProvider = useContextProvider(space);
1944
+ const processor = useChatProcessor({
1945
+ chat,
1946
+ space,
1947
+ settings,
1948
+ part
1949
+ });
1734
1950
  const messageQueue = useMessageQueue(chat);
1735
1951
  const messages = [
1736
1952
  ...messageQueue?.items ?? [],
@@ -1738,9 +1954,9 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1738
1954
  ];
1739
1955
  const handleSubmit = useCallback3((text) => {
1740
1956
  if (processor.streaming.value) {
1741
- log9.warn("ignoring submit; still processing.", void 0, {
1742
- F: __dxlog_file8,
1743
- L: 39,
1957
+ log10.warn("ignoring submit; still processing.", void 0, {
1958
+ F: __dxlog_file9,
1959
+ L: 41,
1744
1960
  S: void 0,
1745
1961
  C: (f, a) => f(...a)
1746
1962
  });
@@ -1748,8 +1964,8 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1748
1964
  }
1749
1965
  onOpenChange?.(true);
1750
1966
  invariant6(messageQueue, void 0, {
1751
- F: __dxlog_file8,
1752
- L: 45,
1967
+ F: __dxlog_file9,
1968
+ L: 47,
1753
1969
  S: void 0,
1754
1970
  A: [
1755
1971
  "messageQueue",
@@ -1786,6 +2002,7 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1786
2002
  onCancel: handleCancel,
1787
2003
  onPrompt: handleSubmit,
1788
2004
  onOpenChange,
2005
+ contextProvider,
1789
2006
  ...props
1790
2007
  });
1791
2008
  };
@@ -1802,4 +2019,4 @@ export {
1802
2019
  Thread,
1803
2020
  ThreadContainer
1804
2021
  };
1805
- //# sourceMappingURL=chunk-7JENJTLB.mjs.map
2022
+ //# sourceMappingURL=chunk-AMTHOYNB.mjs.map