@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,19 +1,19 @@
1
1
  import {
2
2
  AssistantCapabilities
3
- } from "./chunk-VZ4W6SHE.mjs";
3
+ } from "./chunk-SVUCJXGN.mjs";
4
4
  import {
5
5
  ServiceType,
6
6
  categoryIcons
7
- } from "./chunk-FRIKXDDQ.mjs";
7
+ } from "./chunk-X6ALDUA5.mjs";
8
8
  import {
9
9
  ASSISTANT_PLUGIN
10
- } from "./chunk-NV7SVHMV.mjs";
10
+ } from "./chunk-AF7VQAKS.mjs";
11
11
 
12
12
  // packages/plugins/experimental/plugin-assistant/src/components/Toolbox/Toolbox.tsx
13
13
  import React, { useState, useEffect, Fragment } from "react";
14
14
  import { Capabilities, useCapabilities } from "@dxos/app-framework";
15
15
  import { parseToolName } from "@dxos/artifact";
16
- import { FunctionType } from "@dxos/functions";
16
+ import { FunctionType } from "@dxos/functions/types";
17
17
  import { log as log3 } from "@dxos/log";
18
18
  import { Filter, useQuery } from "@dxos/react-client/echo";
19
19
  import { mx } from "@dxos/react-ui-theme";
@@ -21,7 +21,7 @@ import { mx } from "@dxos/react-ui-theme";
21
21
  // packages/plugins/experimental/plugin-assistant/src/tools/function.ts
22
22
  import { defineTool, ToolResult } from "@dxos/artifact";
23
23
  import { toEffectSchema } from "@dxos/echo-schema";
24
- import { getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions";
24
+ import { getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions/types";
25
25
  import { log } from "@dxos/log";
26
26
  import { getMeta } from "@dxos/react-client/echo";
27
27
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/tools/function.ts";
@@ -550,7 +550,7 @@ import { keyToFallback } from "@dxos/util";
550
550
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadMessage.tsx
551
551
  import React3 from "react";
552
552
  import { invariant as invariant2 } from "@dxos/invariant";
553
- import { Button, ButtonGroup, Icon, IconButton } from "@dxos/react-ui";
553
+ import { Button, Icon, IconButton } from "@dxos/react-ui";
554
554
  import { MarkdownViewer, ToggleContainer as NativeToggleContainer } from "@dxos/react-ui-components";
555
555
  import { Json as Json2 } from "@dxos/react-ui-syntax-highlighter";
556
556
  import { mx as mx2 } from "@dxos/react-ui-theme";
@@ -681,7 +681,7 @@ var ToolContainer = ({ classNames, items }) => {
681
681
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadMessage.tsx
682
682
  var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadMessage.tsx";
683
683
  var panelClassNames = "flex flex-col w-full px-2 bg-groupSurface rounded-md";
684
- var userClassNames = "bg-[--user-fill]";
684
+ var userClassNames = "bg-[--user-fill] text-inverse";
685
685
  var ToggleContainer2 = (props) => {
686
686
  return /* @__PURE__ */ React3.createElement(NativeToggleContainer, {
687
687
  ...props,
@@ -706,7 +706,7 @@ var ThreadMessage = ({ classNames, space, message, tools, onPrompt }) => {
706
706
  const { role, content = [] } = message;
707
707
  if (isToolMessage(message)) {
708
708
  return /* @__PURE__ */ React3.createElement(MessageContainer, {
709
- classNames
709
+ classNames: mx2(classNames, "animate-[fadeIn_0.5s]")
710
710
  }, /* @__PURE__ */ React3.createElement(ToolBlock, {
711
711
  space,
712
712
  classNames: panelClassNames,
@@ -721,7 +721,7 @@ var ThreadMessage = ({ classNames, space, message, tools, onPrompt }) => {
721
721
  const Component = components[block.type] ?? components.default;
722
722
  return /* @__PURE__ */ React3.createElement(MessageContainer, {
723
723
  key: idx,
724
- classNames,
724
+ classNames: mx2(classNames, "animate-[fadeIn_0.5s]"),
725
725
  user: block.type === "text" && role === "user"
726
726
  }, /* @__PURE__ */ React3.createElement(Component, {
727
727
  space,
@@ -737,7 +737,7 @@ var components = {
737
737
  ["text"]: ({ block }) => {
738
738
  invariant2(block.type === "text", void 0, {
739
739
  F: __dxlog_file5,
740
- L: 86,
740
+ L: 90,
741
741
  S: void 0,
742
742
  A: [
743
743
  "block.type === 'text'",
@@ -747,6 +747,7 @@ var components = {
747
747
  const title = block.disposition ? titles[block.disposition] : void 0;
748
748
  if (!title) {
749
749
  return /* @__PURE__ */ React3.createElement(MarkdownViewer, {
750
+ classNames: "[&>p]:animate-[fadeIn_0.5s]",
750
751
  content: block.text
751
752
  });
752
753
  }
@@ -773,7 +774,7 @@ var components = {
773
774
  ["json"]: ({ space, block, onPrompt }) => {
774
775
  invariant2(block.type === "json", void 0, {
775
776
  F: __dxlog_file5,
776
- L: 124,
777
+ L: 128,
777
778
  S: void 0,
778
779
  A: [
779
780
  "block.type === 'json'",
@@ -800,7 +801,10 @@ var components = {
800
801
  }
801
802
  case "select": {
802
803
  const { options = [] } = safeParseJson(block.json ?? "{}") ?? {};
803
- return /* @__PURE__ */ React3.createElement(ButtonGroup, null, options.map((option) => /* @__PURE__ */ React3.createElement(Button, {
804
+ return /* @__PURE__ */ React3.createElement("div", {
805
+ className: "flex flex-wrap gap-1"
806
+ }, options.map((option, idx) => /* @__PURE__ */ React3.createElement(Button, {
807
+ classNames: "animate-[fadeIn_0.5s] rounded-2xl text-sm",
804
808
  key: option,
805
809
  onClick: () => onPrompt?.(option)
806
810
  }, option)));
@@ -891,7 +895,7 @@ var messageReducer = ({ current, messages }, message) => {
891
895
  // packages/plugins/experimental/plugin-assistant/src/components/Prompt/Prompt.tsx
892
896
  import React4, { forwardRef, useImperativeHandle } from "react";
893
897
  import { useThemeContext } from "@dxos/react-ui";
894
- import { createBasicExtensions, createThemeExtensions, keymap as keymap2, useTextEditor } from "@dxos/react-ui-editor";
898
+ import { createBasicExtensions, createThemeExtensions, keymap as keymap3, useTextEditor } from "@dxos/react-ui-editor";
895
899
  import { mx as mx3 } from "@dxos/react-ui-theme";
896
900
 
897
901
  // packages/plugins/experimental/plugin-assistant/src/components/Prompt/autocomplete.ts
@@ -1048,10 +1052,127 @@ var InlineSuggestionWidget = class extends WidgetType {
1048
1052
  }
1049
1053
  };
1050
1054
 
1055
+ // packages/plugins/experimental/plugin-assistant/src/components/Prompt/references.ts
1056
+ import { autocompletion, completionKeymap } from "@codemirror/autocomplete";
1057
+ import { RangeSet } from "@codemirror/state";
1058
+ import { Decoration as Decoration2, EditorView as EditorView2, keymap as keymap2, ViewPlugin as ViewPlugin2, WidgetType as WidgetType2 } from "@codemirror/view";
1059
+ import { Mutex } from "@dxos/async";
1060
+ var promptReferences = ({ provider, debug = false, triggerCharacter = "@" }) => {
1061
+ if (triggerCharacter.length !== 1) {
1062
+ throw new Error("triggerCharacter must be a single character");
1063
+ }
1064
+ const decorationField = ViewPlugin2.fromClass(class ReferenceView {
1065
+ constructor(view) {
1066
+ this._mutex = new Mutex();
1067
+ this.decorations = Decoration2.set([]);
1068
+ queueMicrotask(async () => {
1069
+ const guard = await this._mutex.acquire();
1070
+ try {
1071
+ this.decorations = await this._computeDecorations(view);
1072
+ } finally {
1073
+ guard.release();
1074
+ }
1075
+ });
1076
+ }
1077
+ update(update) {
1078
+ if (update.docChanged) {
1079
+ queueMicrotask(async () => {
1080
+ const guard = await this._mutex.acquire();
1081
+ try {
1082
+ this.decorations = await this._computeDecorations(update.view);
1083
+ } finally {
1084
+ guard.release();
1085
+ }
1086
+ });
1087
+ }
1088
+ }
1089
+ async _computeDecorations(view) {
1090
+ const text = view.state.doc.toString();
1091
+ const references = text.matchAll(new RegExp(`${triggerCharacter}[a-zA-Z0-9@:]+\\s`, "g"));
1092
+ const decorations = [];
1093
+ for (const match of references) {
1094
+ const reference = match[0];
1095
+ const uri = reference.slice(1, -1);
1096
+ const data = await provider.resolveReference({
1097
+ uri
1098
+ });
1099
+ if (data) {
1100
+ decorations.push(Decoration2.replace({
1101
+ widget: new ReferenceWidget(data)
1102
+ }).range(match.index, match.index + reference.length));
1103
+ }
1104
+ }
1105
+ return Decoration2.set(decorations);
1106
+ }
1107
+ }, {
1108
+ decorations: (v) => v.decorations,
1109
+ provide: (plugin) => [
1110
+ EditorView2.atomicRanges.of((view) => view.plugin(decorationField)?.decorations ?? RangeSet.empty)
1111
+ ]
1112
+ });
1113
+ return [
1114
+ decorationField,
1115
+ EditorView2.theme({
1116
+ ".cm-reference-pill": {
1117
+ borderRadius: "0.25rem",
1118
+ borderWidth: "1px",
1119
+ marginRight: "0.25rem",
1120
+ marginLeft: "0.25rem"
1121
+ }
1122
+ }),
1123
+ autocompletion({
1124
+ activateOnTyping: true,
1125
+ override: [
1126
+ async (context) => {
1127
+ const match = context.matchBefore(new RegExp(`${triggerCharacter}[a-zA-Z0-9]+`));
1128
+ if (!match || match?.to === match?.from) {
1129
+ return null;
1130
+ }
1131
+ const query = match.text.slice(1);
1132
+ const references = await provider.getReferences({
1133
+ query
1134
+ });
1135
+ return {
1136
+ from: match.from,
1137
+ filter: false,
1138
+ options: references.map((reference) => ({
1139
+ label: reference.label,
1140
+ apply: `${triggerCharacter}${reference.uri} `
1141
+ }))
1142
+ };
1143
+ }
1144
+ ],
1145
+ closeOnBlur: !debug,
1146
+ tooltipClass: () => "shadow rounded",
1147
+ aboveCursor: true
1148
+ }),
1149
+ keymap2.of(completionKeymap)
1150
+ ];
1151
+ };
1152
+ var ReferenceWidget = class extends WidgetType2 {
1153
+ constructor(data) {
1154
+ super();
1155
+ this.data = data;
1156
+ }
1157
+ toDOM() {
1158
+ const span = document.createElement("span");
1159
+ span.textContent = `@ ${this.data.label}`;
1160
+ span.className = "cm-reference-pill";
1161
+ return span;
1162
+ }
1163
+ eq(other) {
1164
+ return other.data.uri === this.data.uri;
1165
+ }
1166
+ ignoreEvent() {
1167
+ return true;
1168
+ }
1169
+ };
1170
+
1051
1171
  // packages/plugins/experimental/plugin-assistant/src/components/Prompt/Prompt.tsx
1052
- var Prompt = /* @__PURE__ */ forwardRef(({ classNames, autoFocus, lineWrapping = false, placeholder, onSubmit, onSuggest, onOpenChange }, forwardRef2) => {
1172
+ var Prompt = /* @__PURE__ */ forwardRef(({ classNames, autoFocus, lineWrapping = false, placeholder, onSubmit, onSuggest, onOpenChange, references }, forwardRef2) => {
1053
1173
  const { themeMode } = useThemeContext();
1054
1174
  const { parentRef, view } = useTextEditor({
1175
+ debug: true,
1055
1176
  autoFocus,
1056
1177
  extensions: [
1057
1178
  createBasicExtensions({
@@ -1062,11 +1183,14 @@ var Prompt = /* @__PURE__ */ forwardRef(({ classNames, autoFocus, lineWrapping =
1062
1183
  createThemeExtensions({
1063
1184
  themeMode
1064
1185
  }),
1186
+ references ? promptReferences({
1187
+ provider: references
1188
+ }) : [],
1065
1189
  createAutocompleteExtension({
1066
1190
  onSubmit,
1067
1191
  onSuggest
1068
1192
  }),
1069
- keymap2.of([
1193
+ keymap3.of([
1070
1194
  {
1071
1195
  key: "Alt-ArrowUp",
1072
1196
  preventDefault: true,
@@ -1115,17 +1239,17 @@ var Prompt = /* @__PURE__ */ forwardRef(({ classNames, autoFocus, lineWrapping =
1115
1239
  ]);
1116
1240
  return /* @__PURE__ */ React4.createElement("div", {
1117
1241
  ref: parentRef,
1118
- className: mx3("w-full overflow-hidden", classNames)
1242
+ className: mx3("w-full", classNames)
1119
1243
  });
1120
1244
  });
1121
1245
 
1122
1246
  // packages/plugins/experimental/plugin-assistant/src/components/Prompt/PromptBar.tsx
1123
1247
  import React5, { useRef as useRef2, useState as useState3 } from "react";
1124
1248
  import { useVoiceInput } from "@dxos/plugin-transcription";
1125
- import { Icon as Icon2, IconButton as IconButton2, useTranslation } from "@dxos/react-ui";
1249
+ import { Icon as Icon2, IconButton as IconButton2, Tooltip, useTranslation } from "@dxos/react-ui";
1126
1250
  import { Spinner } from "@dxos/react-ui-sfx";
1127
1251
  import { errorText, mx as mx4 } from "@dxos/react-ui-theme";
1128
- var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCancel, ...props }) => {
1252
+ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCancel, references, ...props }) => {
1129
1253
  const { t } = useTranslation(ASSISTANT_PLUGIN);
1130
1254
  const promptRef = useRef2(null);
1131
1255
  const [active, setActive] = useState3(false);
@@ -1137,14 +1261,18 @@ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCan
1137
1261
  }
1138
1262
  });
1139
1263
  return /* @__PURE__ */ React5.createElement("div", {
1140
- className: mx4("flex shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] overflow-hidden", classNames)
1264
+ className: mx4("shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] overflow-hidden", classNames)
1141
1265
  }, /* @__PURE__ */ React5.createElement("div", {
1142
1266
  className: "flex w-[--rail-action] h-[--rail-action] items-center justify-center"
1143
- }, error && /* @__PURE__ */ React5.createElement(Icon2, {
1267
+ }, error && /* @__PURE__ */ React5.createElement(Tooltip.Root, {
1268
+ delayDuration: 0
1269
+ }, /* @__PURE__ */ React5.createElement(Tooltip.Trigger, null, /* @__PURE__ */ React5.createElement(Icon2, {
1144
1270
  icon: "ph--warning-circle--regular",
1145
1271
  classNames: errorText,
1146
1272
  size: 5
1147
- }) || /* @__PURE__ */ React5.createElement(Spinner, {
1273
+ })), /* @__PURE__ */ React5.createElement(Tooltip.Portal, null, /* @__PURE__ */ React5.createElement(Tooltip.Content, null, /* @__PURE__ */ React5.createElement("div", {
1274
+ className: "text-sm text-error-500"
1275
+ }, error.message), /* @__PURE__ */ React5.createElement(Tooltip.Arrow, null)))) || /* @__PURE__ */ React5.createElement(Spinner, {
1148
1276
  active: processing
1149
1277
  })), /* @__PURE__ */ React5.createElement(Prompt, {
1150
1278
  ref: promptRef,
@@ -1152,6 +1280,7 @@ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCan
1152
1280
  classNames: "pbs-2",
1153
1281
  lineWrapping: true,
1154
1282
  placeholder: placeholder ?? t("prompt placeholder"),
1283
+ references,
1155
1284
  ...props
1156
1285
  }), (onCancel || microphone) && /* @__PURE__ */ React5.createElement("div", {
1157
1286
  className: "flex w-[--rail-action] h-[--rail-action] items-center justify-center"
@@ -1179,7 +1308,7 @@ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCan
1179
1308
  };
1180
1309
 
1181
1310
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/Thread.tsx
1182
- var Thread = ({ classNames, space, messages, collapse = true, transcription, processing, error, onSubmit, onCancel, onOpenChange, ...props }) => {
1311
+ var Thread = ({ classNames, space, messages, collapse = true, transcription, processing, error, onSubmit, onCancel, onOpenChange, contextProvider, ...props }) => {
1183
1312
  const scroller = useRef3(null);
1184
1313
  const identity = useIdentity();
1185
1314
  const fallbackValue = keyToFallback(identity.identityKey);
@@ -1205,6 +1334,21 @@ var Thread = ({ classNames, space, messages, collapse = true, transcription, pro
1205
1334
  messages,
1206
1335
  collapse
1207
1336
  ]);
1337
+ const references = useMemo2(() => {
1338
+ if (!contextProvider) {
1339
+ return void 0;
1340
+ }
1341
+ return {
1342
+ getReferences: async ({ query }) => contextProvider.query({
1343
+ query
1344
+ }),
1345
+ resolveReference: async ({ uri }) => contextProvider.resolveMetadata({
1346
+ uri
1347
+ })
1348
+ };
1349
+ }, [
1350
+ contextProvider
1351
+ ]);
1208
1352
  return /* @__PURE__ */ React6.createElement("div", {
1209
1353
  role: "none",
1210
1354
  className: mx5("flex flex-col grow overflow-hidden", classNames)
@@ -1229,31 +1373,32 @@ var Thread = ({ classNames, space, messages, collapse = true, transcription, pro
1229
1373
  error,
1230
1374
  onSubmit: handleSubmit,
1231
1375
  onCancel,
1232
- onOpenChange
1376
+ onOpenChange,
1377
+ references
1233
1378
  }));
1234
1379
  };
1235
1380
 
1236
1381
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx
1237
1382
  import React7, { useCallback as useCallback3 } from "react";
1238
1383
  import { invariant as invariant6 } from "@dxos/invariant";
1239
- import { log as log9 } from "@dxos/log";
1384
+ import { log as log10 } from "@dxos/log";
1240
1385
  import { getSpace as getSpace2 } from "@dxos/react-client/echo";
1241
1386
 
1242
1387
  // packages/plugins/experimental/plugin-assistant/src/hooks/processor.ts
1243
1388
  import { batch, computed, signal } from "@preact/signals-core";
1244
1389
  import { Message } from "@dxos/artifact";
1245
- import { isToolUse, runTools, MixedStreamParser, DEFAULT_LLM_MODEL } from "@dxos/assistant";
1390
+ import { isToolUse, runTools, MixedStreamParser, DEFAULT_EDGE_MODEL } from "@dxos/assistant";
1246
1391
  import { createStatic } from "@dxos/echo-schema";
1247
1392
  import { invariant as invariant3 } from "@dxos/invariant";
1248
1393
  import { log as log5 } from "@dxos/log";
1249
1394
  var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/hooks/processor.ts";
1250
1395
  var defaultOptions = {
1251
- model: DEFAULT_LLM_MODEL,
1396
+ model: DEFAULT_EDGE_MODEL,
1252
1397
  systemPrompt: "you are a helpful assistant"
1253
1398
  };
1254
1399
  var ChatProcessor = class {
1255
- constructor(_service, _tools, _extensions, _options = defaultOptions) {
1256
- this._service = _service;
1400
+ constructor(_ai, _tools, _extensions, _options = defaultOptions) {
1401
+ this._ai = _ai;
1257
1402
  this._tools = _tools;
1258
1403
  this._extensions = _extensions;
1259
1404
  this._options = _options;
@@ -1378,7 +1523,7 @@ var ChatProcessor = class {
1378
1523
  S: this,
1379
1524
  C: (f, a) => f(...a)
1380
1525
  });
1381
- this._stream = await this._service.exec({
1526
+ this._stream = await this._ai.exec({
1382
1527
  ...this._options,
1383
1528
  // TODO(burdon): Rename messages or separate history/message.
1384
1529
  history: [
@@ -1448,37 +1593,49 @@ var ChatProcessor = class {
1448
1593
  S: this,
1449
1594
  C: (f, a) => f(...a)
1450
1595
  });
1451
- this.error.value = new Error("AI service error", {
1452
- cause: err
1453
- });
1596
+ if (err instanceof Error && err.message.includes("Overloaded")) {
1597
+ this.error.value = new AIServiecOverloadedError("AI service overloaded", {
1598
+ cause: err
1599
+ });
1600
+ } else {
1601
+ this.error.value = new Error("AI service error", {
1602
+ cause: err
1603
+ });
1604
+ }
1454
1605
  } finally {
1455
1606
  this._stream = void 0;
1456
1607
  }
1457
1608
  }
1458
1609
  };
1610
+ var AIServiecOverloadedError = class extends Error {
1611
+ constructor() {
1612
+ super(...arguments);
1613
+ this.code = "AI_SERVICE_OVERLOADED";
1614
+ }
1615
+ };
1459
1616
 
1460
1617
  // packages/plugins/experimental/plugin-assistant/src/hooks/useChatProcessor.tsx
1461
1618
  import { useEffect as useEffect3, useMemo as useMemo3, useState as useState4 } from "react";
1462
1619
  import { Capabilities as Capabilities2, useCapabilities as useCapabilities2, useCapability, useIntentDispatcher } from "@dxos/app-framework";
1463
1620
  import { createSystemPrompt } from "@dxos/artifact";
1464
- import { DEFAULT_LLM_MODEL as DEFAULT_LLM_MODEL2 } from "@dxos/assistant";
1465
- import { FunctionType as FunctionType2 } from "@dxos/functions";
1621
+ import { DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL2, DEFAULT_OLLAMA_MODEL } from "@dxos/assistant";
1622
+ import { FunctionType as FunctionType2 } from "@dxos/functions/types";
1466
1623
  import { log as log6 } from "@dxos/log";
1467
1624
  import { useConfig } from "@dxos/react-client";
1468
- import { Filter as Filter2, useQuery as useQuery2 } from "@dxos/react-client/echo";
1625
+ import { Filter as Filter2, fullyQualifiedId, useQuery as useQuery2 } from "@dxos/react-client/echo";
1469
1626
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
1470
1627
 
1471
1628
  // packages/plugins/experimental/plugin-assistant/src/capabilities/index.ts
1472
1629
  import { lazy } from "@dxos/app-framework";
1473
- var AiClient = lazy(() => import("./ai-client-RTCGRKZE.mjs"));
1474
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-AXAIFOGV.mjs"));
1475
- var IntentResolver = lazy(() => import("./intent-resolver-QRVRZL6K.mjs"));
1476
- var ReactSurface = lazy(() => import("./react-surface-JLXNWOI6.mjs"));
1477
- var AssistantSettings = lazy(() => import("./settings-JTT62IHD.mjs"));
1630
+ var AiClient = lazy(() => import("./ai-client-BAPVMSNX.mjs"));
1631
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-DTCUWBKB.mjs"));
1632
+ var IntentResolver = lazy(() => import("./intent-resolver-U57FXP3I.mjs"));
1633
+ var ReactSurface = lazy(() => import("./react-surface-KFLHNDNR.mjs"));
1634
+ var AssistantSettings = lazy(() => import("./settings-VAW6UWFL.mjs"));
1478
1635
 
1479
1636
  // packages/plugins/experimental/plugin-assistant/src/hooks/useChatProcessor.tsx
1480
1637
  var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/hooks/useChatProcessor.tsx";
1481
- var useChatProcessor = (space, settings) => {
1638
+ var useChatProcessor = ({ chat, space, settings, part = "deck" }) => {
1482
1639
  const aiClient = useCapability(AssistantCapabilities.AiClient);
1483
1640
  const globalTools = useCapabilities2(Capabilities2.Tools);
1484
1641
  const artifactDefinitions = useCapabilities2(Capabilities2.ArtifactDefinition);
@@ -1488,7 +1645,7 @@ var useChatProcessor = (space, settings) => {
1488
1645
  useEffect3(() => {
1489
1646
  log6("creating service tools...", void 0, {
1490
1647
  F: __dxlog_file7,
1491
- L: 34,
1648
+ L: 41,
1492
1649
  S: void 0,
1493
1650
  C: (f, a) => f(...a)
1494
1651
  });
@@ -1501,10 +1658,13 @@ var useChatProcessor = (space, settings) => {
1501
1658
  ]);
1502
1659
  const config = useConfig();
1503
1660
  const functions = useQuery2(space, Filter2.schema(FunctionType2));
1661
+ const chatId = useMemo3(() => chat ? fullyQualifiedId(chat) : void 0, [
1662
+ chat
1663
+ ]);
1504
1664
  const [tools, extensions] = useMemo3(() => {
1505
1665
  log6("creating tools...", void 0, {
1506
1666
  F: __dxlog_file7,
1507
- L: 45,
1667
+ L: 53,
1508
1668
  S: void 0,
1509
1669
  C: (f, a) => f(...a)
1510
1670
  });
@@ -1516,7 +1676,9 @@ var useChatProcessor = (space, settings) => {
1516
1676
  ];
1517
1677
  const extensions2 = {
1518
1678
  space,
1519
- dispatch
1679
+ dispatch,
1680
+ pivotId: chatId,
1681
+ part
1520
1682
  };
1521
1683
  return [
1522
1684
  tools2,
@@ -1527,6 +1689,7 @@ var useChatProcessor = (space, settings) => {
1527
1689
  globalTools,
1528
1690
  artifactDefinitions,
1529
1691
  space,
1692
+ chatId,
1530
1693
  serviceTools,
1531
1694
  functions
1532
1695
  ]);
@@ -1535,37 +1698,36 @@ var useChatProcessor = (space, settings) => {
1535
1698
  }), [
1536
1699
  artifactDefinitions
1537
1700
  ]);
1701
+ const model = settings?.llmProvider === "ollama" ? settings?.ollamaModel ?? DEFAULT_OLLAMA_MODEL : settings?.edgeModel ?? DEFAULT_EDGE_MODEL2;
1538
1702
  const processor = useMemo3(() => {
1539
1703
  log6("creating processor...", {
1540
1704
  settings
1541
1705
  }, {
1542
1706
  F: __dxlog_file7,
1543
- L: 70,
1707
+ L: 84,
1544
1708
  S: void 0,
1545
1709
  C: (f, a) => f(...a)
1546
1710
  });
1547
- return new ChatProcessor(aiClient, tools, extensions, {
1548
- // TODO(burdon): Remove defualt (let backend decide if not specified).
1549
- model: settings?.llmModel ?? DEFAULT_LLM_MODEL2,
1550
- // TOOD(burdon): Query.
1711
+ return new ChatProcessor(aiClient.value, tools, extensions, {
1712
+ model,
1551
1713
  systemPrompt
1552
1714
  });
1553
1715
  }, [
1554
- aiClient,
1716
+ aiClient.value,
1555
1717
  tools,
1556
1718
  extensions,
1557
- systemPrompt,
1558
- settings?.llmModel
1719
+ model,
1720
+ systemPrompt
1559
1721
  ]);
1560
1722
  return processor;
1561
1723
  };
1562
1724
 
1563
1725
  // packages/plugins/experimental/plugin-assistant/src/hooks/useLocalTriggerManager.ts
1564
1726
  import { useEffect as useEffect4, useState as useState5 } from "react";
1565
- import { Mutex } from "@dxos/async";
1727
+ import { Mutex as Mutex2 } from "@dxos/async";
1566
1728
  import { Context } from "@dxos/context";
1567
1729
  import { createSubscriptionTrigger } from "@dxos/functions";
1568
- import { FunctionTrigger } from "@dxos/functions";
1730
+ import { FunctionTrigger } from "@dxos/functions/types";
1569
1731
  import { invariant as invariant5 } from "@dxos/invariant";
1570
1732
  import { log as log8 } from "@dxos/log";
1571
1733
  import { useClient } from "@dxos/react-client";
@@ -1574,19 +1736,18 @@ import { Filter as Filter3, useQuery as useQuery3 } from "@dxos/react-client/ech
1574
1736
  // packages/plugins/experimental/plugin-assistant/src/hooks/invocation-handler.ts
1575
1737
  import { sleep } from "@dxos/async";
1576
1738
  import { getObjectCore, ResultFormat } from "@dxos/echo-db";
1577
- import { FunctionType as FunctionType3 } from "@dxos/functions";
1739
+ import { FunctionType as FunctionType3, getUserFunctionUrlInMetadata as getUserFunctionUrlInMetadata2 } from "@dxos/functions/types";
1578
1740
  import { invariant as invariant4 } from "@dxos/invariant";
1579
1741
  import { DXN, LOCAL_SPACE_TAG } from "@dxos/keys";
1580
1742
  import { log as log7 } from "@dxos/log";
1581
1743
 
1582
1744
  // packages/plugins/experimental/plugin-assistant/src/hooks/useLocalTriggerManager.ts
1583
- var registerTriggersMutex = new Mutex();
1745
+ var registerTriggersMutex = new Mutex2();
1584
1746
 
1585
1747
  // packages/plugins/experimental/plugin-assistant/src/hooks/useMessageQueue.ts
1586
1748
  import { useMemo as useMemo4 } from "react";
1587
1749
  import { DXN as DXN2, QueueSubspaceTags } from "@dxos/keys";
1588
- import { getSpace } from "@dxos/react-client/echo";
1589
- import { useEdgeClient, useQueue } from "@dxos/react-edge-client";
1750
+ import { getSpace, useQueue } from "@dxos/react-client/echo";
1590
1751
  var useMessageQueue = (chat) => {
1591
1752
  const space = getSpace(chat);
1592
1753
  const queueDxn = useMemo4(() => {
@@ -1600,8 +1761,7 @@ var useMessageQueue = (chat) => {
1600
1761
  space,
1601
1762
  chat?.queue.dxn
1602
1763
  ]);
1603
- const edgeClient = useEdgeClient();
1604
- return useQueue(edgeClient, queueDxn);
1764
+ return useQueue(queueDxn);
1605
1765
  };
1606
1766
 
1607
1767
  // packages/plugins/experimental/plugin-assistant/src/hooks/useServices.ts
@@ -1609,7 +1769,7 @@ import { useEffect as useEffect5, useMemo as useMemo5, useState as useState6 } f
1609
1769
 
1610
1770
  // packages/plugins/experimental/plugin-assistant/src/testing/test-functions.ts
1611
1771
  import { createSystemPrompt as createSystemPrompt2 } from "@dxos/artifact";
1612
- import { DEFAULT_LLM_MODEL as DEFAULT_LLM_MODEL3 } from "@dxos/assistant";
1772
+ import { DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL3 } from "@dxos/assistant";
1613
1773
 
1614
1774
  // packages/plugins/experimental/plugin-assistant/src/testing/test-services.ts
1615
1775
  import { createStatic as createStatic2 } from "@dxos/echo-schema";
@@ -1725,11 +1885,67 @@ var useServices = (space, query) => {
1725
1885
  // packages/plugins/experimental/plugin-assistant/src/hooks/useTextInputEvents.ts
1726
1886
  import { useState as useState7, useCallback as useCallback2 } from "react";
1727
1887
 
1888
+ // packages/plugins/experimental/plugin-assistant/src/hooks/useContextProvider.ts
1889
+ import { useMemo as useMemo6 } from "react";
1890
+ import { Capabilities as Capabilities3, useCapabilities as useCapabilities3 } from "@dxos/app-framework";
1891
+ import { getDXN, getLabel, getSchema } from "@dxos/echo-schema";
1892
+ import { log as log9 } from "@dxos/log";
1893
+ import { Filter as Filter4 } from "@dxos/react-client/echo";
1894
+ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/hooks/useContextProvider.ts";
1895
+ var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
1896
+ var useContextProvider = (space) => {
1897
+ const artifactDefinitions = useCapabilities3(Capabilities3.ArtifactDefinition);
1898
+ return useMemo6(() => {
1899
+ if (!space) {
1900
+ return void 0;
1901
+ }
1902
+ return {
1903
+ query: async ({ query }) => {
1904
+ const artifactSchemas = artifactDefinitions.map((artifact) => artifact.schema);
1905
+ const { objects } = await space.db.query(Filter4.or(...artifactSchemas.map((schema) => Filter4.schema(schema)))).run();
1906
+ return objects.map((object) => {
1907
+ log9.info("object", {
1908
+ object,
1909
+ label: getLabel(getSchema(object), object)
1910
+ }, {
1911
+ F: __dxlog_file8,
1912
+ L: 36,
1913
+ S: void 0,
1914
+ C: (f, a) => f(...a)
1915
+ });
1916
+ return object;
1917
+ }).filter((object) => stringMatch(query, getLabel(getSchema(object), object) ?? "")).filter((object) => !!getDXN(object)).map((object) => ({
1918
+ uri: getDXN(object).toString(),
1919
+ label: getLabel(getSchema(object), object) ?? ""
1920
+ }));
1921
+ },
1922
+ resolveMetadata: async ({ uri }) => {
1923
+ const object = await space.db.query({
1924
+ id: uri
1925
+ }).first();
1926
+ return {
1927
+ uri,
1928
+ label: getLabel(getSchema(object), object) ?? ""
1929
+ };
1930
+ }
1931
+ };
1932
+ }, [
1933
+ space,
1934
+ artifactDefinitions
1935
+ ]);
1936
+ };
1937
+
1728
1938
  // packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx
1729
- var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx";
1730
- var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) => {
1939
+ var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx";
1940
+ var ThreadContainer = ({ classNames, chat, settings, part, onOpenChange, ...props }) => {
1731
1941
  const space = getSpace2(chat);
1732
- const processor = useChatProcessor(space, settings);
1942
+ const contextProvider = useContextProvider(space);
1943
+ const processor = useChatProcessor({
1944
+ chat,
1945
+ space,
1946
+ settings,
1947
+ part
1948
+ });
1733
1949
  const messageQueue = useMessageQueue(chat);
1734
1950
  const messages = [
1735
1951
  ...messageQueue?.items ?? [],
@@ -1737,9 +1953,9 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1737
1953
  ];
1738
1954
  const handleSubmit = useCallback3((text) => {
1739
1955
  if (processor.streaming.value) {
1740
- log9.warn("ignoring submit; still processing.", void 0, {
1741
- F: __dxlog_file8,
1742
- L: 39,
1956
+ log10.warn("ignoring submit; still processing.", void 0, {
1957
+ F: __dxlog_file9,
1958
+ L: 41,
1743
1959
  S: void 0,
1744
1960
  C: (f, a) => f(...a)
1745
1961
  });
@@ -1747,8 +1963,8 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1747
1963
  }
1748
1964
  onOpenChange?.(true);
1749
1965
  invariant6(messageQueue, void 0, {
1750
- F: __dxlog_file8,
1751
- L: 45,
1966
+ F: __dxlog_file9,
1967
+ L: 47,
1752
1968
  S: void 0,
1753
1969
  A: [
1754
1970
  "messageQueue",
@@ -1785,6 +2001,7 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1785
2001
  onCancel: handleCancel,
1786
2002
  onPrompt: handleSubmit,
1787
2003
  onOpenChange,
2004
+ contextProvider,
1788
2005
  ...props
1789
2006
  });
1790
2007
  };
@@ -1801,4 +2018,4 @@ export {
1801
2018
  Thread,
1802
2019
  ThreadContainer
1803
2020
  };
1804
- //# sourceMappingURL=chunk-NFVIZS3B.mjs.map
2021
+ //# sourceMappingURL=chunk-XFUCWOMV.mjs.map