@dxos/plugin-assistant 0.8.1-staging.391c573 → 0.8.1-staging.97aedb1

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 (235) hide show
  1. package/dist/lib/browser/{AssistantDialog-CM33SOCT.mjs → AssistantDialog-YSHMAHW5.mjs} +15 -14
  2. package/dist/lib/browser/AssistantDialog-YSHMAHW5.mjs.map +7 -0
  3. package/dist/lib/browser/{ChatContainer-VW73VNUY.mjs → ChatContainer-V5GP7DYF.mjs} +11 -11
  4. package/dist/lib/browser/ChatContainer-V5GP7DYF.mjs.map +7 -0
  5. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs +78 -0
  6. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs.map +7 -0
  7. package/dist/lib/browser/ai-client-CDZLSNXE.mjs +35 -0
  8. package/dist/lib/browser/ai-client-CDZLSNXE.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs +209 -0
  10. package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-NV7SVHMV.mjs → chunk-3HCI5FIL.mjs} +2 -2
  12. package/dist/lib/browser/{chunk-NV7SVHMV.mjs.map → chunk-3HCI5FIL.mjs.map} +2 -2
  13. package/dist/lib/browser/{chunk-WVME6K4X.mjs → chunk-FMB7RGMP.mjs} +379 -247
  14. package/dist/lib/browser/chunk-FMB7RGMP.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-IAMR2FAE.mjs +183 -0
  16. package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-M2SADJVS.mjs → chunk-KYMKVE6M.mjs} +37 -15
  18. package/dist/lib/browser/chunk-KYMKVE6M.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-EUMPBC4T.mjs → chunk-NFUHCW2J.mjs} +3 -3
  20. package/dist/lib/browser/{chunk-NTLTGYYS.mjs → chunk-TXJWGWJ7.mjs} +3 -3
  21. package/dist/lib/browser/chunk-TXJWGWJ7.mjs.map +7 -0
  22. package/dist/lib/browser/index.mjs +37 -53
  23. package/dist/lib/browser/index.mjs.map +3 -3
  24. package/dist/lib/browser/{intent-resolver-FQRN6747.mjs → intent-resolver-WJGLKKVO.mjs} +8 -6
  25. package/dist/lib/browser/{intent-resolver-FQRN6747.mjs.map → intent-resolver-WJGLKKVO.mjs.map} +3 -3
  26. package/dist/lib/browser/meta.json +1 -1
  27. package/dist/lib/browser/{react-surface-ZT6EQ7FJ.mjs → react-surface-57VRDOQT.mjs} +36 -15
  28. package/dist/lib/browser/react-surface-57VRDOQT.mjs.map +7 -0
  29. package/dist/lib/browser/{settings-VVQUGG56.mjs → settings-U6UFQX32.mjs} +4 -4
  30. package/dist/lib/browser/types/index.mjs +6 -2
  31. package/dist/lib/node/{AssistantDialog-5PVOCPE2.cjs → AssistantDialog-YI2BSGSX.cjs} +18 -17
  32. package/dist/lib/node/AssistantDialog-YI2BSGSX.cjs.map +7 -0
  33. package/dist/lib/node/{ChatContainer-I45I3ICI.cjs → ChatContainer-ZJ5JXF6A.cjs} +15 -15
  34. package/dist/lib/node/ChatContainer-ZJ5JXF6A.cjs.map +7 -0
  35. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs +104 -0
  36. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs.map +7 -0
  37. package/dist/lib/node/{ai-client-6CY35ZIR.cjs → ai-client-URCCYU6B.cjs} +19 -8
  38. package/dist/lib/node/ai-client-URCCYU6B.cjs.map +7 -0
  39. package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs +220 -0
  40. package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs.map +7 -0
  41. package/dist/lib/node/{chunk-34WE2FD2.cjs → chunk-APRU3QWK.cjs} +32 -9
  42. package/dist/lib/node/chunk-APRU3QWK.cjs.map +7 -0
  43. package/dist/lib/node/{chunk-3WXG6WA6.cjs → chunk-GBUNQ257.cjs} +6 -6
  44. package/dist/lib/node/chunk-GBUNQ257.cjs.map +7 -0
  45. package/dist/lib/node/{chunk-GNPXCHFT.cjs → chunk-Q5XWEMHB.cjs} +4 -4
  46. package/dist/lib/node/{chunk-GNPXCHFT.cjs.map → chunk-Q5XWEMHB.cjs.map} +2 -2
  47. package/dist/lib/node/{chunk-JWUHUQ56.cjs → chunk-RPBKMP2E.cjs} +350 -222
  48. package/dist/lib/node/chunk-RPBKMP2E.cjs.map +7 -0
  49. package/dist/lib/node/{chunk-NV4TQQSU.cjs → chunk-XI2ARIEO.cjs} +6 -6
  50. package/dist/lib/node/{chunk-HFOUAFOW.cjs → chunk-ZKOC4ZFY.cjs} +40 -18
  51. package/dist/lib/node/chunk-ZKOC4ZFY.cjs.map +7 -0
  52. package/dist/lib/node/index.cjs +78 -94
  53. package/dist/lib/node/index.cjs.map +3 -3
  54. package/dist/lib/node/{intent-resolver-Z37RNNMC.cjs → intent-resolver-R3OSTIMH.cjs} +14 -12
  55. package/dist/lib/node/intent-resolver-R3OSTIMH.cjs.map +7 -0
  56. package/dist/lib/node/meta.json +1 -1
  57. package/dist/lib/node/{react-surface-KFXP3GGK.cjs → react-surface-NUQTM6MS.cjs} +47 -26
  58. package/dist/lib/node/react-surface-NUQTM6MS.cjs.map +7 -0
  59. package/dist/lib/node/{settings-TJHHVI6B.cjs → settings-TXGRCYAL.cjs} +8 -8
  60. package/dist/lib/node/types/index.cjs +15 -11
  61. package/dist/lib/node/types/index.cjs.map +2 -2
  62. package/dist/lib/node-esm/{AssistantDialog-Q2ZBOHOV.mjs → AssistantDialog-U2FQX5TD.mjs} +15 -14
  63. package/dist/lib/node-esm/AssistantDialog-U2FQX5TD.mjs.map +7 -0
  64. package/dist/lib/node-esm/{ChatContainer-5ULBF3GW.mjs → ChatContainer-QW3OOXTT.mjs} +11 -11
  65. package/dist/lib/node-esm/ChatContainer-QW3OOXTT.mjs.map +7 -0
  66. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs +79 -0
  67. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs.map +7 -0
  68. package/dist/lib/node-esm/ai-client-WMHS5EGV.mjs +36 -0
  69. package/dist/lib/node-esm/ai-client-WMHS5EGV.mjs.map +7 -0
  70. package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs +210 -0
  71. package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs.map +7 -0
  72. package/dist/lib/node-esm/{chunk-ICQN3TDS.mjs → chunk-6JK5HEUQ.mjs} +3 -3
  73. package/dist/lib/node-esm/chunk-6JK5HEUQ.mjs.map +7 -0
  74. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs → chunk-ECRK6TUQ.mjs} +2 -2
  75. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs.map → chunk-ECRK6TUQ.mjs.map} +2 -2
  76. package/dist/lib/node-esm/{chunk-2OUUYMBT.mjs → chunk-GBBXIW5F.mjs} +37 -15
  77. package/dist/lib/node-esm/chunk-GBBXIW5F.mjs.map +7 -0
  78. package/dist/lib/node-esm/{chunk-ASMI7PQ2.mjs → chunk-MVDAY3CZ.mjs} +379 -247
  79. package/dist/lib/node-esm/chunk-MVDAY3CZ.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +184 -0
  81. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs.map +7 -0
  82. package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs → chunk-PBZA7XJR.mjs} +3 -3
  83. package/dist/lib/node-esm/index.mjs +37 -53
  84. package/dist/lib/node-esm/index.mjs.map +3 -3
  85. package/dist/lib/node-esm/{intent-resolver-LOTXWV4J.mjs → intent-resolver-H32TL4X6.mjs} +8 -6
  86. package/dist/lib/node-esm/{intent-resolver-LOTXWV4J.mjs.map → intent-resolver-H32TL4X6.mjs.map} +3 -3
  87. package/dist/lib/node-esm/meta.json +1 -1
  88. package/dist/lib/node-esm/{react-surface-NZNNP2QI.mjs → react-surface-JBVZF6CP.mjs} +36 -15
  89. package/dist/lib/node-esm/react-surface-JBVZF6CP.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-BVWR244C.mjs → settings-DZU5PNXM.mjs} +4 -4
  91. package/dist/lib/node-esm/types/index.mjs +6 -2
  92. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/ai-client.d.ts +2 -1
  94. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/capabilities.d.ts +2 -1
  97. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/index.d.ts +1 -1
  99. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  102. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +4 -3
  103. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  104. package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts.map +1 -1
  105. package/dist/types/src/components/AssistantDialog.d.ts.map +1 -1
  106. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  107. package/dist/types/src/components/ChatContainer.d.ts +4 -2
  108. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  109. package/dist/types/src/components/Prompt/Prompt.d.ts +3 -0
  110. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
  111. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +1 -0
  112. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/Prompt/PromptBar.d.ts +2 -2
  114. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  115. package/dist/types/src/components/Prompt/references.d.ts +30 -0
  116. package/dist/types/src/components/Prompt/references.d.ts.map +1 -0
  117. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  118. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +3 -3
  119. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  120. package/dist/types/src/components/Thread/Thread.d.ts +11 -1
  121. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  122. package/dist/types/src/components/Thread/ThreadContainer.d.ts +3 -0
  123. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  124. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +3 -3
  125. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  126. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  127. package/dist/types/src/components/index.d.ts +3 -2
  128. package/dist/types/src/components/index.d.ts.map +1 -1
  129. package/dist/types/src/hooks/index.d.ts +1 -0
  130. package/dist/types/src/hooks/index.d.ts.map +1 -1
  131. package/dist/types/src/hooks/processor.d.ts +7 -15
  132. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  133. package/dist/types/src/hooks/useChatProcessor.d.ts +11 -2
  134. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  135. package/dist/types/src/hooks/useContextProvider.d.ts +17 -0
  136. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -0
  137. package/dist/types/src/hooks/useMessageQueue.d.ts +3 -3
  138. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  139. package/dist/types/src/meta.d.ts +2 -8
  140. package/dist/types/src/meta.d.ts.map +1 -1
  141. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  142. package/dist/types/src/translations.d.ts +26 -12
  143. package/dist/types/src/translations.d.ts.map +1 -1
  144. package/dist/types/src/types/chat.d.ts +4 -6
  145. package/dist/types/src/types/chat.d.ts.map +1 -1
  146. package/dist/types/src/types/template.d.ts +36 -0
  147. package/dist/types/src/types/template.d.ts.map +1 -1
  148. package/dist/types/src/types/types.d.ts +3 -1
  149. package/dist/types/src/types/types.d.ts.map +1 -1
  150. package/package.json +58 -55
  151. package/src/AssistantPlugin.tsx +19 -23
  152. package/src/capabilities/ai-client.ts +23 -5
  153. package/src/capabilities/app-graph-builder.ts +100 -3
  154. package/src/capabilities/capabilities.ts +3 -1
  155. package/src/capabilities/intent-resolver.ts +4 -3
  156. package/src/capabilities/react-surface.tsx +27 -9
  157. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +3 -1
  158. package/src/components/AmbientDialog/AmbientDialog.tsx +11 -11
  159. package/src/components/AssistantDialog.tsx +8 -2
  160. package/src/components/AssistantSettings/AssistantSettings.tsx +39 -5
  161. package/src/components/ChatContainer.tsx +18 -4
  162. package/src/components/Prompt/Prompt.stories.tsx +34 -0
  163. package/src/components/Prompt/Prompt.tsx +28 -18
  164. package/src/components/Prompt/PromptBar.tsx +5 -3
  165. package/src/components/Prompt/references.ts +180 -0
  166. package/src/components/TemplateContainer.tsx +79 -4
  167. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +5 -5
  168. package/src/components/TemplateEditor/TemplateForm.stories.tsx +3 -3
  169. package/src/components/Thread/Thread.stories.tsx +3 -3
  170. package/src/components/Thread/Thread.tsx +21 -0
  171. package/src/components/Thread/ThreadContainer.stories.tsx +9 -14
  172. package/src/components/Thread/ThreadContainer.tsx +10 -4
  173. package/src/components/Thread/ThreadMessage.tsx +17 -9
  174. package/src/components/Toolbox/Toolbox.stories.tsx +2 -2
  175. package/src/hooks/index.ts +1 -0
  176. package/src/hooks/processor.ts +57 -116
  177. package/src/hooks/useChatProcessor.tsx +35 -19
  178. package/src/hooks/useContextProvider.ts +55 -0
  179. package/src/hooks/useMessageQueue.ts +4 -6
  180. package/src/meta.ts +2 -2
  181. package/src/testing/test-functions.ts +2 -2
  182. package/src/translations.ts +11 -5
  183. package/src/types/chat.ts +2 -3
  184. package/src/types/template.ts +22 -0
  185. package/src/types/types.ts +3 -1
  186. package/dist/lib/browser/AssistantDialog-CM33SOCT.mjs.map +0 -7
  187. package/dist/lib/browser/ChatContainer-VW73VNUY.mjs.map +0 -7
  188. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs +0 -23
  189. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs.map +0 -7
  190. package/dist/lib/browser/ai-client-HZPB7E6M.mjs +0 -22
  191. package/dist/lib/browser/ai-client-HZPB7E6M.mjs.map +0 -7
  192. package/dist/lib/browser/app-graph-builder-4DIOTGOG.mjs +0 -103
  193. package/dist/lib/browser/app-graph-builder-4DIOTGOG.mjs.map +0 -7
  194. package/dist/lib/browser/chunk-FPXC3LKK.mjs +0 -162
  195. package/dist/lib/browser/chunk-FPXC3LKK.mjs.map +0 -7
  196. package/dist/lib/browser/chunk-M2SADJVS.mjs.map +0 -7
  197. package/dist/lib/browser/chunk-NTLTGYYS.mjs.map +0 -7
  198. package/dist/lib/browser/chunk-WVME6K4X.mjs.map +0 -7
  199. package/dist/lib/browser/react-surface-ZT6EQ7FJ.mjs.map +0 -7
  200. package/dist/lib/node/AssistantDialog-5PVOCPE2.cjs.map +0 -7
  201. package/dist/lib/node/ChatContainer-I45I3ICI.cjs.map +0 -7
  202. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs +0 -53
  203. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs.map +0 -7
  204. package/dist/lib/node/ai-client-6CY35ZIR.cjs.map +0 -7
  205. package/dist/lib/node/app-graph-builder-7O4U4RXH.cjs +0 -115
  206. package/dist/lib/node/app-graph-builder-7O4U4RXH.cjs.map +0 -7
  207. package/dist/lib/node/chunk-34WE2FD2.cjs.map +0 -7
  208. package/dist/lib/node/chunk-3WXG6WA6.cjs.map +0 -7
  209. package/dist/lib/node/chunk-HFOUAFOW.cjs.map +0 -7
  210. package/dist/lib/node/chunk-JWUHUQ56.cjs.map +0 -7
  211. package/dist/lib/node/intent-resolver-Z37RNNMC.cjs.map +0 -7
  212. package/dist/lib/node/react-surface-KFXP3GGK.cjs.map +0 -7
  213. package/dist/lib/node-esm/AssistantDialog-Q2ZBOHOV.mjs.map +0 -7
  214. package/dist/lib/node-esm/ChatContainer-5ULBF3GW.mjs.map +0 -7
  215. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs +0 -24
  216. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs.map +0 -7
  217. package/dist/lib/node-esm/ai-client-GSA67EIB.mjs +0 -23
  218. package/dist/lib/node-esm/ai-client-GSA67EIB.mjs.map +0 -7
  219. package/dist/lib/node-esm/app-graph-builder-SX3SREXF.mjs +0 -104
  220. package/dist/lib/node-esm/app-graph-builder-SX3SREXF.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-2OUUYMBT.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-ASMI7PQ2.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-ICQN3TDS.mjs.map +0 -7
  224. package/dist/lib/node-esm/chunk-LELXJPGJ.mjs +0 -163
  225. package/dist/lib/node-esm/chunk-LELXJPGJ.mjs.map +0 -7
  226. package/dist/lib/node-esm/react-surface-NZNNP2QI.mjs.map +0 -7
  227. package/dist/types/src/hooks/email.d.ts +0 -4
  228. package/dist/types/src/hooks/email.d.ts.map +0 -1
  229. package/src/hooks/email.ts +0 -49
  230. /package/dist/lib/browser/{chunk-EUMPBC4T.mjs.map → chunk-NFUHCW2J.mjs.map} +0 -0
  231. /package/dist/lib/browser/{settings-VVQUGG56.mjs.map → settings-U6UFQX32.mjs.map} +0 -0
  232. /package/dist/lib/node/{chunk-NV4TQQSU.cjs.map → chunk-XI2ARIEO.cjs.map} +0 -0
  233. /package/dist/lib/node/{settings-TJHHVI6B.cjs.map → settings-TXGRCYAL.cjs.map} +0 -0
  234. /package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs.map → chunk-PBZA7XJR.mjs.map} +0 -0
  235. /package/dist/lib/node-esm/{settings-BVWR244C.mjs.map → settings-DZU5PNXM.mjs.map} +0 -0
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_JWUHUQ56_exports = {};
30
- __export(chunk_JWUHUQ56_exports, {
29
+ var chunk_RPBKMP2E_exports = {};
30
+ __export(chunk_RPBKMP2E_exports, {
31
31
  AiClient: () => AiClient,
32
32
  AppGraphBuilder: () => AppGraphBuilder,
33
33
  AssistantSettings: () => AssistantSettings,
@@ -39,10 +39,10 @@ __export(chunk_JWUHUQ56_exports, {
39
39
  ToolboxContainer: () => ToolboxContainer,
40
40
  useServices: () => useServices
41
41
  });
42
- module.exports = __toCommonJS(chunk_JWUHUQ56_exports);
43
- var import_chunk_3WXG6WA6 = require("./chunk-3WXG6WA6.cjs");
44
- var import_chunk_34WE2FD2 = require("./chunk-34WE2FD2.cjs");
45
- var import_chunk_GNPXCHFT = require("./chunk-GNPXCHFT.cjs");
42
+ module.exports = __toCommonJS(chunk_RPBKMP2E_exports);
43
+ var import_chunk_GBUNQ257 = require("./chunk-GBUNQ257.cjs");
44
+ var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
45
+ var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
46
46
  var import_react = __toESM(require("react"));
47
47
  var import_app_framework = require("@dxos/app-framework");
48
48
  var import_artifact = require("@dxos/artifact");
@@ -78,12 +78,17 @@ var import_log4 = require("@dxos/log");
78
78
  var import_react_ui_components3 = require("@dxos/react-ui-components");
79
79
  var import_react_ui_syntax_highlighter2 = require("@dxos/react-ui-syntax-highlighter");
80
80
  var import_util4 = require("@dxos/util");
81
+ var import_state = require("@codemirror/state");
81
82
  var import_react5 = __toESM(require("react"));
82
83
  var import_react_ui2 = require("@dxos/react-ui");
83
84
  var import_react_ui_editor = require("@dxos/react-ui-editor");
84
85
  var import_react_ui_theme4 = require("@dxos/react-ui-theme");
85
- var import_state = require("@codemirror/state");
86
+ var import_state2 = require("@codemirror/state");
86
87
  var import_view = require("@codemirror/view");
88
+ var import_autocomplete = require("@codemirror/autocomplete");
89
+ var import_state3 = require("@codemirror/state");
90
+ var import_view2 = require("@codemirror/view");
91
+ var import_async = require("@dxos/async");
87
92
  var import_react6 = __toESM(require("react"));
88
93
  var import_plugin_transcription = require("@dxos/plugin-transcription");
89
94
  var import_react_ui3 = require("@dxos/react-ui");
@@ -94,14 +99,12 @@ var import_invariant3 = require("@dxos/invariant");
94
99
  var import_log5 = require("@dxos/log");
95
100
  var import_echo3 = require("@dxos/react-client/echo");
96
101
  var import_signals_core = require("@preact/signals-core");
97
- var import_artifact4 = require("@dxos/artifact");
98
102
  var import_assistant = require("@dxos/assistant");
99
- var import_echo_schema3 = require("@dxos/echo-schema");
100
103
  var import_invariant4 = require("@dxos/invariant");
101
104
  var import_log6 = require("@dxos/log");
102
105
  var import_react8 = require("react");
103
106
  var import_app_framework2 = require("@dxos/app-framework");
104
- var import_artifact5 = require("@dxos/artifact");
107
+ var import_artifact4 = require("@dxos/artifact");
105
108
  var import_assistant2 = require("@dxos/assistant");
106
109
  var import_types3 = require("@dxos/functions/types");
107
110
  var import_log7 = require("@dxos/log");
@@ -110,7 +113,7 @@ var import_echo4 = require("@dxos/react-client/echo");
110
113
  var import_util5 = require("@dxos/util");
111
114
  var import_app_framework3 = require("@dxos/app-framework");
112
115
  var import_react9 = require("react");
113
- var import_async = require("@dxos/async");
116
+ var import_async2 = require("@dxos/async");
114
117
  var import_context = require("@dxos/context");
115
118
  var import_functions = require("@dxos/functions");
116
119
  var import_types4 = require("@dxos/functions/types");
@@ -118,7 +121,7 @@ var import_invariant5 = require("@dxos/invariant");
118
121
  var import_log8 = require("@dxos/log");
119
122
  var import_react_client2 = require("@dxos/react-client");
120
123
  var import_echo5 = require("@dxos/react-client/echo");
121
- var import_async2 = require("@dxos/async");
124
+ var import_async3 = require("@dxos/async");
122
125
  var import_echo_db = require("@dxos/echo-db");
123
126
  var import_types5 = require("@dxos/functions/types");
124
127
  var import_invariant6 = require("@dxos/invariant");
@@ -127,13 +130,17 @@ var import_log9 = require("@dxos/log");
127
130
  var import_react10 = require("react");
128
131
  var import_keys2 = require("@dxos/keys");
129
132
  var import_echo6 = require("@dxos/react-client/echo");
130
- var import_react_edge_client = require("@dxos/react-edge-client");
131
133
  var import_react11 = require("react");
132
- var import_artifact6 = require("@dxos/artifact");
134
+ var import_artifact5 = require("@dxos/artifact");
133
135
  var import_assistant3 = require("@dxos/assistant");
134
- var import_echo_schema4 = require("@dxos/echo-schema");
136
+ var import_echo_schema3 = require("@dxos/echo-schema");
135
137
  var import_react12 = require("react");
136
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/tools/function.ts";
138
+ var import_react13 = require("react");
139
+ var import_app_framework4 = require("@dxos/app-framework");
140
+ var import_echo_schema4 = require("@dxos/echo-schema");
141
+ var import_log10 = require("@dxos/log");
142
+ var import_echo7 = require("@dxos/react-client/echo");
143
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/tools/function.ts";
137
144
  var covertFunctionToTool = (fn, edgeUrl, spaceId) => {
138
145
  if (!fn.description || !fn.inputSchema) {
139
146
  return void 0;
@@ -171,7 +178,7 @@ var covertFunctionToTool = (fn, edgeUrl, spaceId) => {
171
178
  }
172
179
  });
173
180
  };
174
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/tools/openapi.ts";
181
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/tools/openapi.ts";
175
182
  var createToolsFromService = async (service) => {
176
183
  (0, import_invariant.invariant)(service.interfaces?.length === 1 && service.interfaces[0].kind === "api", void 0, {
177
184
  F: __dxlog_file2,
@@ -550,7 +557,7 @@ var resolveJsonSchema = (schema, base) => {
550
557
  var isV3_1 = (document2) => {
551
558
  return document2.openapi === "3.0.1";
552
559
  };
553
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Toolbox/Toolbox.tsx";
560
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/components/Toolbox/Toolbox.tsx";
554
561
  var Toolbox = ({ classNames, artifacts, functions, services, striped }) => {
555
562
  return /* @__PURE__ */ import_react.default.createElement("div", {
556
563
  className: (0, import_react_ui_theme.mx)("flex flex-col overflow-y-auto box-content", classNames)
@@ -609,7 +616,7 @@ var Section = ({ title, items, striped }) => {
609
616
  };
610
617
  var ToolboxContainer = ({ classNames, space }) => {
611
618
  const artifactDefinitions = (0, import_app_framework.useCapabilities)(import_app_framework.Capabilities.ArtifactDefinition);
612
- const services = (0, import_echo.useQuery)(space, import_echo.Filter.schema(import_chunk_34WE2FD2.ServiceType));
619
+ const services = (0, import_echo.useQuery)(space, import_echo.Filter.schema(import_chunk_APRU3QWK.ServiceType));
613
620
  const [serviceTools, setServiceTools] = (0, import_react.useState)([]);
614
621
  (0, import_react.useEffect)(() => {
615
622
  (0, import_log.log)("creating service tools...", {
@@ -638,7 +645,7 @@ var ToolboxContainer = ({ classNames, space }) => {
638
645
  functions
639
646
  });
640
647
  };
641
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ToolInvocations.tsx";
648
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/components/Thread/ToolInvocations.tsx";
642
649
  var isToolMessage = (message) => {
643
650
  return message.content.some((block) => block.type === "tool_use" || block.type === "tool_result");
644
651
  };
@@ -753,9 +760,9 @@ var ToolContainer = ({ classNames, items }) => {
753
760
  classNames: "!p-1 text-xs"
754
761
  })));
755
762
  };
756
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadMessage.tsx";
763
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/components/Thread/ThreadMessage.tsx";
757
764
  var panelClassNames = "flex flex-col w-full px-2 bg-groupSurface rounded-md";
758
- var userClassNames = "bg-[--user-fill]";
765
+ var userClassNames = "bg-[--user-fill] text-inverse";
759
766
  var ToggleContainer2 = (props) => {
760
767
  return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_components2.ToggleContainer, {
761
768
  ...props,
@@ -780,7 +787,7 @@ var ThreadMessage = ({ classNames, space, message, tools, onPrompt }) => {
780
787
  const { role, content = [] } = message;
781
788
  if (isToolMessage(message)) {
782
789
  return /* @__PURE__ */ import_react3.default.createElement(MessageContainer, {
783
- classNames
790
+ classNames: (0, import_react_ui_theme3.mx)(classNames, "animate-[fadeIn_0.5s]")
784
791
  }, /* @__PURE__ */ import_react3.default.createElement(ToolBlock, {
785
792
  space,
786
793
  classNames: panelClassNames,
@@ -795,7 +802,7 @@ var ThreadMessage = ({ classNames, space, message, tools, onPrompt }) => {
795
802
  const Component = components[block.type] ?? components.default;
796
803
  return /* @__PURE__ */ import_react3.default.createElement(MessageContainer, {
797
804
  key: idx,
798
- classNames,
805
+ classNames: (0, import_react_ui_theme3.mx)(classNames, "animate-[fadeIn_0.5s]"),
799
806
  user: block.type === "text" && role === "user"
800
807
  }, /* @__PURE__ */ import_react3.default.createElement(Component, {
801
808
  space,
@@ -811,7 +818,7 @@ var components = {
811
818
  ["text"]: ({ block }) => {
812
819
  (0, import_invariant2.invariant)(block.type === "text", void 0, {
813
820
  F: __dxlog_file5,
814
- L: 86,
821
+ L: 90,
815
822
  S: void 0,
816
823
  A: [
817
824
  "block.type === 'text'",
@@ -821,6 +828,7 @@ var components = {
821
828
  const title = block.disposition ? titles[block.disposition] : void 0;
822
829
  if (!title) {
823
830
  return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_components2.MarkdownViewer, {
831
+ classNames: "[&>p]:animate-[fadeIn_0.5s]",
824
832
  content: block.text
825
833
  });
826
834
  }
@@ -847,7 +855,7 @@ var components = {
847
855
  ["json"]: ({ space, block, onPrompt }) => {
848
856
  (0, import_invariant2.invariant)(block.type === "json", void 0, {
849
857
  F: __dxlog_file5,
850
- L: 124,
858
+ L: 128,
851
859
  S: void 0,
852
860
  A: [
853
861
  "block.type === 'json'",
@@ -874,7 +882,10 @@ var components = {
874
882
  }
875
883
  case "select": {
876
884
  const { options = [] } = (0, import_util3.safeParseJson)(block.json ?? "{}") ?? {};
877
- return /* @__PURE__ */ import_react3.default.createElement(import_react_ui.ButtonGroup, null, options.map((option) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Button, {
885
+ return /* @__PURE__ */ import_react3.default.createElement("div", {
886
+ className: "flex flex-wrap gap-1"
887
+ }, options.map((option, idx) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Button, {
888
+ classNames: "animate-[fadeIn_0.5s] rounded-2xl text-sm",
878
889
  key: option,
879
890
  onClick: () => onPrompt?.(option)
880
891
  }, option)));
@@ -1020,7 +1031,7 @@ var createAutocompleteExtension = ({ onSubmit, onSuggest }) => {
1020
1031
  }
1021
1032
  }),
1022
1033
  // Accept the current suggestion.
1023
- import_state.Prec.highest(import_view.keymap.of([
1034
+ import_state2.Prec.highest(import_view.keymap.of([
1024
1035
  {
1025
1036
  key: "Tab",
1026
1037
  preventDefault: true,
@@ -1109,9 +1120,120 @@ var InlineSuggestionWidget = class extends import_view.WidgetType {
1109
1120
  return other.suffix === this.suffix;
1110
1121
  }
1111
1122
  };
1112
- var Prompt = /* @__PURE__ */ (0, import_react5.forwardRef)(({ classNames, autoFocus, lineWrapping = false, placeholder, onSubmit, onSuggest, onOpenChange }, forwardRef2) => {
1123
+ var promptReferences = ({ provider, debug = false, triggerCharacter = "@" }) => {
1124
+ if (triggerCharacter.length !== 1) {
1125
+ throw new Error("triggerCharacter must be a single character");
1126
+ }
1127
+ const decorationField = import_view2.ViewPlugin.fromClass(class ReferenceView {
1128
+ constructor(view) {
1129
+ this._mutex = new import_async.Mutex();
1130
+ this.decorations = import_view2.Decoration.set([]);
1131
+ queueMicrotask(async () => {
1132
+ const guard = await this._mutex.acquire();
1133
+ try {
1134
+ this.decorations = await this._computeDecorations(view);
1135
+ } finally {
1136
+ guard.release();
1137
+ }
1138
+ });
1139
+ }
1140
+ update(update) {
1141
+ if (update.docChanged) {
1142
+ queueMicrotask(async () => {
1143
+ const guard = await this._mutex.acquire();
1144
+ try {
1145
+ this.decorations = await this._computeDecorations(update.view);
1146
+ } finally {
1147
+ guard.release();
1148
+ }
1149
+ });
1150
+ }
1151
+ }
1152
+ async _computeDecorations(view) {
1153
+ const text = view.state.doc.toString();
1154
+ const references = text.matchAll(new RegExp(`${triggerCharacter}[a-zA-Z0-9@:]+\\s`, "g"));
1155
+ const decorations = [];
1156
+ for (const match of references) {
1157
+ const reference = match[0];
1158
+ const uri = reference.slice(1, -1);
1159
+ const data = await provider.resolveReference({
1160
+ uri
1161
+ });
1162
+ if (data) {
1163
+ decorations.push(import_view2.Decoration.replace({
1164
+ widget: new ReferenceWidget(data)
1165
+ }).range(match.index, match.index + reference.length));
1166
+ }
1167
+ }
1168
+ return import_view2.Decoration.set(decorations);
1169
+ }
1170
+ }, {
1171
+ decorations: (v) => v.decorations,
1172
+ provide: (plugin) => [
1173
+ import_view2.EditorView.atomicRanges.of((view) => view.plugin(decorationField)?.decorations ?? import_state3.RangeSet.empty)
1174
+ ]
1175
+ });
1176
+ return [
1177
+ decorationField,
1178
+ import_view2.EditorView.theme({
1179
+ ".cm-reference-pill": {
1180
+ borderRadius: "0.25rem",
1181
+ borderWidth: "1px",
1182
+ marginRight: "0.25rem",
1183
+ marginLeft: "0.25rem"
1184
+ }
1185
+ }),
1186
+ (0, import_autocomplete.autocompletion)({
1187
+ activateOnTyping: true,
1188
+ override: [
1189
+ async (context) => {
1190
+ const match = context.matchBefore(new RegExp(`${triggerCharacter}[a-zA-Z0-9]+`));
1191
+ if (!match || match?.to === match?.from) {
1192
+ return null;
1193
+ }
1194
+ const query = match.text.slice(1);
1195
+ const references = await provider.getReferences({
1196
+ query
1197
+ });
1198
+ return {
1199
+ from: match.from,
1200
+ filter: false,
1201
+ options: references.map((reference) => ({
1202
+ label: reference.label,
1203
+ apply: `${triggerCharacter}${reference.uri} `
1204
+ }))
1205
+ };
1206
+ }
1207
+ ],
1208
+ closeOnBlur: !debug,
1209
+ tooltipClass: () => "shadow rounded",
1210
+ aboveCursor: true
1211
+ }),
1212
+ import_view2.keymap.of(import_autocomplete.completionKeymap)
1213
+ ];
1214
+ };
1215
+ var ReferenceWidget = class extends import_view2.WidgetType {
1216
+ constructor(data) {
1217
+ super();
1218
+ this.data = data;
1219
+ }
1220
+ toDOM() {
1221
+ const span = document.createElement("span");
1222
+ span.textContent = `@ ${this.data.label}`;
1223
+ span.className = "cm-reference-pill";
1224
+ return span;
1225
+ }
1226
+ eq(other) {
1227
+ return other.data.uri === this.data.uri;
1228
+ }
1229
+ ignoreEvent() {
1230
+ return true;
1231
+ }
1232
+ };
1233
+ var Prompt = /* @__PURE__ */ (0, import_react5.forwardRef)(({ classNames, autoFocus, lineWrapping = false, placeholder, onSubmit, onSuggest, onOpenChange, references }, forwardRef2) => {
1113
1234
  const { themeMode } = (0, import_react_ui2.useThemeContext)();
1114
1235
  const { parentRef, view } = (0, import_react_ui_editor.useTextEditor)({
1236
+ debug: true,
1115
1237
  autoFocus,
1116
1238
  extensions: [
1117
1239
  (0, import_react_ui_editor.createBasicExtensions)({
@@ -1122,13 +1244,16 @@ var Prompt = /* @__PURE__ */ (0, import_react5.forwardRef)(({ classNames, autoFo
1122
1244
  (0, import_react_ui_editor.createThemeExtensions)({
1123
1245
  themeMode
1124
1246
  }),
1247
+ references ? promptReferences({
1248
+ provider: references
1249
+ }) : [],
1125
1250
  createAutocompleteExtension({
1126
1251
  onSubmit,
1127
1252
  onSuggest
1128
1253
  }),
1129
- import_react_ui_editor.keymap.of([
1254
+ import_state.Prec.highest(import_react_ui_editor.keymap.of([
1130
1255
  {
1131
- key: "Alt-ArrowUp",
1256
+ key: "cmd-ArrowUp",
1132
1257
  preventDefault: true,
1133
1258
  run: (view2) => {
1134
1259
  onOpenChange?.(true);
@@ -1136,14 +1261,14 @@ var Prompt = /* @__PURE__ */ (0, import_react5.forwardRef)(({ classNames, autoFo
1136
1261
  }
1137
1262
  },
1138
1263
  {
1139
- key: "Alt-ArrowDown",
1264
+ key: "cmd-ArrowDown",
1140
1265
  preventDefault: true,
1141
1266
  run: (view2) => {
1142
1267
  onOpenChange?.(false);
1143
1268
  return true;
1144
1269
  }
1145
1270
  }
1146
- ])
1271
+ ]))
1147
1272
  ]
1148
1273
  }, [
1149
1274
  themeMode,
@@ -1175,11 +1300,11 @@ var Prompt = /* @__PURE__ */ (0, import_react5.forwardRef)(({ classNames, autoFo
1175
1300
  ]);
1176
1301
  return /* @__PURE__ */ import_react5.default.createElement("div", {
1177
1302
  ref: parentRef,
1178
- className: (0, import_react_ui_theme4.mx)("w-full overflow-hidden", classNames)
1303
+ className: (0, import_react_ui_theme4.mx)("w-full", classNames)
1179
1304
  });
1180
1305
  });
1181
- var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCancel, ...props }) => {
1182
- const { t } = (0, import_react_ui3.useTranslation)(import_chunk_GNPXCHFT.ASSISTANT_PLUGIN);
1306
+ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCancel, references, ...props }) => {
1307
+ const { t } = (0, import_react_ui3.useTranslation)(import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN);
1183
1308
  const promptRef = (0, import_react6.useRef)(null);
1184
1309
  const [active, setActive] = (0, import_react6.useState)(false);
1185
1310
  const { recording } = (0, import_plugin_transcription.useVoiceInput)({
@@ -1200,7 +1325,7 @@ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCan
1200
1325
  classNames: import_react_ui_theme5.errorText,
1201
1326
  size: 5
1202
1327
  })), /* @__PURE__ */ import_react6.default.createElement(import_react_ui3.Tooltip.Portal, null, /* @__PURE__ */ import_react6.default.createElement(import_react_ui3.Tooltip.Content, null, /* @__PURE__ */ import_react6.default.createElement("div", {
1203
- className: "text-sm text-error-500"
1328
+ className: (0, import_react_ui_theme5.mx)("text-sm", import_react_ui_theme5.errorMessageColors)
1204
1329
  }, error.message), /* @__PURE__ */ import_react6.default.createElement(import_react_ui3.Tooltip.Arrow, null)))) || /* @__PURE__ */ import_react6.default.createElement(import_react_ui_sfx.Spinner, {
1205
1330
  active: processing
1206
1331
  })), /* @__PURE__ */ import_react6.default.createElement(Prompt, {
@@ -1209,6 +1334,7 @@ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCan
1209
1334
  classNames: "pbs-2",
1210
1335
  lineWrapping: true,
1211
1336
  placeholder: placeholder ?? t("prompt placeholder"),
1337
+ references,
1212
1338
  ...props
1213
1339
  }), (onCancel || microphone) && /* @__PURE__ */ import_react6.default.createElement("div", {
1214
1340
  className: "flex w-[--rail-action] h-[--rail-action] items-center justify-center"
@@ -1234,7 +1360,7 @@ var PromptBar = ({ classNames, placeholder, processing, error, microphone, onCan
1234
1360
  onTouchEnd: () => setActive(false)
1235
1361
  })));
1236
1362
  };
1237
- var Thread = ({ classNames, space, messages, collapse = true, transcription, processing, error, onSubmit, onCancel, onOpenChange, ...props }) => {
1363
+ var Thread = ({ classNames, space, messages, collapse = true, transcription, processing, error, onSubmit, onCancel, onOpenChange, contextProvider, ...props }) => {
1238
1364
  const scroller = (0, import_react2.useRef)(null);
1239
1365
  const identity = (0, import_halo.useIdentity)();
1240
1366
  const fallbackValue = (0, import_util2.keyToFallback)(identity.identityKey);
@@ -1260,6 +1386,21 @@ var Thread = ({ classNames, space, messages, collapse = true, transcription, pro
1260
1386
  messages,
1261
1387
  collapse
1262
1388
  ]);
1389
+ const references = (0, import_react2.useMemo)(() => {
1390
+ if (!contextProvider) {
1391
+ return void 0;
1392
+ }
1393
+ return {
1394
+ getReferences: async ({ query }) => contextProvider.query({
1395
+ query
1396
+ }),
1397
+ resolveReference: async ({ uri }) => contextProvider.resolveMetadata({
1398
+ uri
1399
+ })
1400
+ };
1401
+ }, [
1402
+ contextProvider
1403
+ ]);
1263
1404
  return /* @__PURE__ */ import_react2.default.createElement("div", {
1264
1405
  role: "none",
1265
1406
  className: (0, import_react_ui_theme2.mx)("flex flex-col grow overflow-hidden", classNames)
@@ -1284,24 +1425,24 @@ var Thread = ({ classNames, space, messages, collapse = true, transcription, pro
1284
1425
  error,
1285
1426
  onSubmit: handleSubmit,
1286
1427
  onCancel,
1287
- onOpenChange
1428
+ onOpenChange,
1429
+ references
1288
1430
  }));
1289
1431
  };
1290
- var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/hooks/processor.ts";
1432
+ var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/processor.ts";
1291
1433
  var defaultOptions = {
1292
- model: import_assistant.DEFAULT_LLM_MODEL,
1434
+ model: import_assistant.DEFAULT_EDGE_MODEL,
1293
1435
  systemPrompt: "you are a helpful assistant"
1294
1436
  };
1295
1437
  var ChatProcessor = class {
1296
- constructor(_ai, _tools, _extensions, _options = defaultOptions) {
1438
+ constructor(_ai, _tools, _artifacts, _extensions, _options = defaultOptions) {
1297
1439
  this._ai = _ai;
1298
1440
  this._tools = _tools;
1441
+ this._artifacts = _artifacts;
1299
1442
  this._extensions = _extensions;
1300
1443
  this._options = _options;
1301
- this._parser = new import_assistant.MixedStreamParser();
1302
1444
  this._pending = (0, import_signals_core.signal)([]);
1303
1445
  this._block = (0, import_signals_core.signal)(void 0);
1304
- this._history = [];
1305
1446
  this.streaming = (0, import_signals_core.computed)(() => this._block.value !== void 0);
1306
1447
  this.error = (0, import_signals_core.signal)(void 0);
1307
1448
  this.messages = (0, import_signals_core.computed)(() => {
@@ -1312,7 +1453,7 @@ var ChatProcessor = class {
1312
1453
  const current = messages.pop();
1313
1454
  (0, import_invariant4.invariant)(current, void 0, {
1314
1455
  F: __dxlog_file6,
1315
- L: 85,
1456
+ L: 70,
1316
1457
  S: this,
1317
1458
  A: [
1318
1459
  "current",
@@ -1331,20 +1472,6 @@ var ChatProcessor = class {
1331
1472
  }
1332
1473
  return messages;
1333
1474
  });
1334
- this._parser.message.on((message) => {
1335
- (0, import_signals_core.batch)(() => {
1336
- this._pending.value = [
1337
- ...this._pending.value,
1338
- message
1339
- ];
1340
- this._block.value = void 0;
1341
- });
1342
- });
1343
- this._parser.update.on((block) => {
1344
- (0, import_signals_core.batch)(() => {
1345
- this._block.value = block;
1346
- });
1347
- });
1348
1475
  }
1349
1476
  get tools() {
1350
1477
  return this._tools;
@@ -1359,23 +1486,70 @@ var ChatProcessor = class {
1359
1486
  * Make GPT request.
1360
1487
  */
1361
1488
  async request(message, options = {}) {
1362
- (0, import_signals_core.batch)(() => {
1363
- this._history = options.history ?? [];
1489
+ this._session = new import_assistant.AISession({
1490
+ operationModel: "immediate"
1491
+ });
1492
+ this._session.message.on((message2) => {
1493
+ (0, import_signals_core.batch)(() => {
1494
+ this._pending.value = [
1495
+ ...this._pending.value,
1496
+ message2
1497
+ ];
1498
+ this._block.value = void 0;
1499
+ });
1500
+ });
1501
+ this._session.update.on((block) => {
1502
+ (0, import_signals_core.batch)(() => {
1503
+ this._block.value = block;
1504
+ });
1505
+ });
1506
+ this._session.userMessage.on((message2) => {
1364
1507
  this._pending.value = [
1365
- (0, import_echo_schema3.createStatic)(import_artifact4.Message, {
1366
- role: "user",
1367
- content: [
1368
- {
1369
- type: "text",
1370
- text: message
1371
- }
1372
- ]
1373
- })
1508
+ ...this._pending.value,
1509
+ message2
1374
1510
  ];
1375
- this._block.value = void 0;
1376
1511
  });
1377
- await this._request();
1378
- options.onComplete?.(this._pending.value);
1512
+ try {
1513
+ const messages = await this._session.run({
1514
+ client: this._ai,
1515
+ history: options.history ?? [],
1516
+ artifacts: this._artifacts ?? [],
1517
+ tools: this._tools ?? [],
1518
+ prompt: message,
1519
+ systemPrompt: this._options.systemPrompt,
1520
+ extensions: this._extensions,
1521
+ generationOptions: {
1522
+ model: this._options.model
1523
+ }
1524
+ });
1525
+ import_log6.log.info("completed", {
1526
+ messages
1527
+ }, {
1528
+ F: __dxlog_file6,
1529
+ L: 137,
1530
+ S: this,
1531
+ C: (f, a) => f(...a)
1532
+ });
1533
+ options.onComplete?.(this._pending.value);
1534
+ } catch (err) {
1535
+ import_log6.log.catch(err, void 0, {
1536
+ F: __dxlog_file6,
1537
+ L: 141,
1538
+ S: this,
1539
+ C: (f, a) => f(...a)
1540
+ });
1541
+ if (err instanceof Error && err.message.includes("Overloaded")) {
1542
+ this.error.value = new AIServiceOverloadedError("AI service overloaded", {
1543
+ cause: err
1544
+ });
1545
+ } else {
1546
+ this.error.value = new Error("AI service error", {
1547
+ cause: err
1548
+ });
1549
+ }
1550
+ } finally {
1551
+ this._session = void 0;
1552
+ }
1379
1553
  return this._reset();
1380
1554
  }
1381
1555
  /**
@@ -1385,147 +1559,45 @@ var ChatProcessor = class {
1385
1559
  async cancel() {
1386
1560
  import_log6.log.info("cancelling...", void 0, {
1387
1561
  F: __dxlog_file6,
1388
- L: 152,
1562
+ L: 159,
1389
1563
  S: this,
1390
1564
  C: (f, a) => f(...a)
1391
1565
  });
1392
- this._stream?.abort();
1566
+ this._session?.abort();
1393
1567
  return this._reset();
1394
1568
  }
1395
1569
  async _reset() {
1396
1570
  const messages = this._pending.value;
1397
1571
  (0, import_signals_core.batch)(() => {
1398
- this._history = [];
1399
1572
  this._pending.value = [];
1400
1573
  this._block.value = void 0;
1401
1574
  });
1402
1575
  return messages;
1403
1576
  }
1404
- /**
1405
- * Generate a response from the AI service.
1406
- * Iterates over tool requests.
1407
- */
1408
- async _request() {
1409
- try {
1410
- let more = false;
1411
- do {
1412
- (0, import_log6.log)("request", {
1413
- pending: this._pending.value.length,
1414
- history: this._history.length,
1415
- tools: this._tools?.map((tool) => tool.name)
1416
- }, {
1417
- F: __dxlog_file6,
1418
- L: 176,
1419
- S: this,
1420
- C: (f, a) => f(...a)
1421
- });
1422
- this._stream = await this._ai.exec({
1423
- ...this._options,
1424
- // TODO(burdon): Rename messages or separate history/message.
1425
- history: [
1426
- ...this._history,
1427
- ...this._pending.value
1428
- ],
1429
- tools: this._tools
1430
- });
1431
- await this._parser.parse(this._stream);
1432
- await this._stream.complete();
1433
- (0, import_log6.log)("response", {
1434
- pending: this._pending.value
1435
- }, {
1436
- F: __dxlog_file6,
1437
- L: 195,
1438
- S: this,
1439
- C: (f, a) => f(...a)
1440
- });
1441
- more = false;
1442
- const message = this._pending.value.at(-1);
1443
- (0, import_invariant4.invariant)(message, void 0, {
1444
- F: __dxlog_file6,
1445
- L: 200,
1446
- S: this,
1447
- A: [
1448
- "message",
1449
- ""
1450
- ]
1451
- });
1452
- if ((0, import_assistant.isToolUse)(message)) {
1453
- (0, import_log6.log)("tool request...", void 0, {
1454
- F: __dxlog_file6,
1455
- L: 202,
1456
- S: this,
1457
- C: (f, a) => f(...a)
1458
- });
1459
- const response = await (0, import_assistant.runTools)({
1460
- message: this._pending.value.at(-1),
1461
- tools: this._tools ?? [],
1462
- extensions: this._extensions
1463
- });
1464
- (0, import_log6.log)("tool response", {
1465
- response
1466
- }, {
1467
- F: __dxlog_file6,
1468
- L: 209,
1469
- S: this,
1470
- C: (f, a) => f(...a)
1471
- });
1472
- switch (response.type) {
1473
- case "continue": {
1474
- this._pending.value = [
1475
- ...this._pending.value,
1476
- response.message
1477
- ];
1478
- more = true;
1479
- break;
1480
- }
1481
- }
1482
- }
1483
- } while (more);
1484
- this.error.value = void 0;
1485
- } catch (err) {
1486
- import_log6.log.catch(err, void 0, {
1487
- F: __dxlog_file6,
1488
- L: 222,
1489
- S: this,
1490
- C: (f, a) => f(...a)
1491
- });
1492
- if (err instanceof Error && err.message.includes("Overloaded")) {
1493
- this.error.value = new AIServiecOverloadedError("AI service overloaded", {
1494
- cause: err
1495
- });
1496
- } else {
1497
- this.error.value = new Error("AI service error", {
1498
- cause: err
1499
- });
1500
- }
1501
- } finally {
1502
- this._stream = void 0;
1503
- }
1504
- }
1505
1577
  };
1506
- var AIServiecOverloadedError = class extends Error {
1578
+ var AIServiceOverloadedError = class extends Error {
1507
1579
  constructor() {
1508
1580
  super(...arguments);
1509
1581
  this.code = "AI_SERVICE_OVERLOADED";
1510
1582
  }
1511
1583
  };
1512
- var AiClient = (0, import_app_framework3.lazy)(() => import("./ai-client-6CY35ZIR.cjs"));
1513
- var AppGraphBuilder = (0, import_app_framework3.lazy)(() => import("./app-graph-builder-7O4U4RXH.cjs"));
1514
- var IntentResolver = (0, import_app_framework3.lazy)(() => import("./intent-resolver-Z37RNNMC.cjs"));
1515
- var ReactSurface = (0, import_app_framework3.lazy)(() => import("./react-surface-KFXP3GGK.cjs"));
1516
- var AssistantSettings = (0, import_app_framework3.lazy)(() => import("./settings-TJHHVI6B.cjs"));
1517
- var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/hooks/useChatProcessor.tsx";
1518
- var useChatProcessor = (space, settings) => {
1519
- const aiClient = (0, import_app_framework2.useCapability)(import_chunk_3WXG6WA6.AssistantCapabilities.AiClient);
1584
+ var AiClient = (0, import_app_framework3.lazy)(() => import("./ai-client-URCCYU6B.cjs"));
1585
+ var AppGraphBuilder = (0, import_app_framework3.lazy)(() => import("./app-graph-builder-N5ZUUI2Z.cjs"));
1586
+ var IntentResolver = (0, import_app_framework3.lazy)(() => import("./intent-resolver-R3OSTIMH.cjs"));
1587
+ var ReactSurface = (0, import_app_framework3.lazy)(() => import("./react-surface-NUQTM6MS.cjs"));
1588
+ var AssistantSettings = (0, import_app_framework3.lazy)(() => import("./settings-TXGRCYAL.cjs"));
1589
+ var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.tsx";
1590
+ var useChatProcessor = ({ chat, space, settings, part = "deck", associatedArtifact }) => {
1591
+ const aiClient = (0, import_app_framework2.useCapability)(import_chunk_GBUNQ257.AssistantCapabilities.AiClient);
1520
1592
  const globalTools = (0, import_app_framework2.useCapabilities)(import_app_framework2.Capabilities.Tools);
1521
1593
  const artifactDefinitions = (0, import_app_framework2.useCapabilities)(import_app_framework2.Capabilities.ArtifactDefinition);
1522
1594
  const { dispatchPromise: dispatch } = (0, import_app_framework2.useIntentDispatcher)();
1523
- const services = (0, import_echo4.useQuery)(space, import_echo4.Filter.schema(import_chunk_34WE2FD2.ServiceType));
1595
+ const services = (0, import_echo4.useQuery)(space, import_echo4.Filter.schema(import_chunk_APRU3QWK.ServiceType));
1524
1596
  const [serviceTools, setServiceTools] = (0, import_react8.useState)([]);
1525
1597
  (0, import_react8.useEffect)(() => {
1526
1598
  (0, import_log7.log)("creating service tools...", void 0, {
1527
1599
  F: __dxlog_file7,
1528
- L: 34,
1600
+ L: 48,
1529
1601
  S: void 0,
1530
1602
  C: (f, a) => f(...a)
1531
1603
  });
@@ -1538,22 +1610,26 @@ var useChatProcessor = (space, settings) => {
1538
1610
  ]);
1539
1611
  const config = (0, import_react_client.useConfig)();
1540
1612
  const functions = (0, import_echo4.useQuery)(space, import_echo4.Filter.schema(import_types3.FunctionType));
1613
+ const chatId = (0, import_react8.useMemo)(() => chat ? (0, import_echo4.fullyQualifiedId)(chat) : void 0, [
1614
+ chat
1615
+ ]);
1541
1616
  const [tools, extensions] = (0, import_react8.useMemo)(() => {
1542
1617
  (0, import_log7.log)("creating tools...", void 0, {
1543
1618
  F: __dxlog_file7,
1544
- L: 45,
1619
+ L: 60,
1545
1620
  S: void 0,
1546
1621
  C: (f, a) => f(...a)
1547
1622
  });
1548
1623
  const tools2 = [
1549
1624
  ...globalTools.flat(),
1550
- ...artifactDefinitions.flatMap((definition) => definition.tools),
1551
1625
  ...serviceTools,
1552
1626
  ...functions.map((fn) => covertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? "", space?.id)).filter(import_util5.isNonNullable)
1553
1627
  ];
1554
1628
  const extensions2 = {
1555
1629
  space,
1556
- dispatch
1630
+ dispatch,
1631
+ pivotId: chatId,
1632
+ part
1557
1633
  };
1558
1634
  return [
1559
1635
  tools2,
@@ -1562,45 +1638,47 @@ var useChatProcessor = (space, settings) => {
1562
1638
  }, [
1563
1639
  dispatch,
1564
1640
  globalTools,
1565
- artifactDefinitions,
1566
1641
  space,
1642
+ chatId,
1567
1643
  serviceTools,
1568
1644
  functions
1569
1645
  ]);
1570
- const systemPrompt = (0, import_react8.useMemo)(() => (0, import_artifact5.createSystemPrompt)({
1571
- artifacts: artifactDefinitions.map((definition) => definition.instructions)
1646
+ const systemPrompt = (0, import_react8.useMemo)(() => (0, import_artifact4.createSystemPrompt)({
1647
+ artifacts: artifactDefinitions.map((definition) => `${definition.name}
1648
+ ${definition.instructions}`),
1649
+ associatedArtifact
1572
1650
  }), [
1573
- artifactDefinitions
1651
+ artifactDefinitions,
1652
+ associatedArtifact
1574
1653
  ]);
1654
+ const model = settings?.llmProvider === "ollama" ? settings?.ollamaModel ?? import_assistant2.DEFAULT_OLLAMA_MODEL : settings?.edgeModel ?? import_assistant2.DEFAULT_EDGE_MODEL;
1575
1655
  const processor = (0, import_react8.useMemo)(() => {
1576
1656
  (0, import_log7.log)("creating processor...", {
1577
1657
  settings
1578
1658
  }, {
1579
1659
  F: __dxlog_file7,
1580
- L: 70,
1660
+ L: 91,
1581
1661
  S: void 0,
1582
1662
  C: (f, a) => f(...a)
1583
1663
  });
1584
- return new ChatProcessor(aiClient, tools, extensions, {
1585
- // TODO(burdon): Remove defualt (let backend decide if not specified).
1586
- model: settings?.llmModel ?? import_assistant2.DEFAULT_LLM_MODEL,
1587
- // TOOD(burdon): Query.
1664
+ return new ChatProcessor(aiClient.value, tools, artifactDefinitions, extensions, {
1665
+ model,
1588
1666
  systemPrompt
1589
1667
  });
1590
1668
  }, [
1591
- aiClient,
1669
+ aiClient.value,
1592
1670
  tools,
1593
1671
  extensions,
1594
- systemPrompt,
1595
- settings?.llmModel
1672
+ model,
1673
+ systemPrompt
1596
1674
  ]);
1597
1675
  return processor;
1598
1676
  };
1599
- var registerTriggersMutex = new import_async.Mutex();
1677
+ var registerTriggersMutex = new import_async2.Mutex();
1600
1678
  var useMessageQueue = (chat) => {
1601
1679
  const space = (0, import_echo6.getSpace)(chat);
1602
1680
  const queueDxn = (0, import_react10.useMemo)(() => {
1603
- const dxn = space && chat?.queue.dxn;
1681
+ const dxn = space && chat?.assistantChatQueue.dxn;
1604
1682
  return dxn ? new import_keys2.DXN(import_keys2.DXN.kind.QUEUE, [
1605
1683
  import_keys2.QueueSubspaceTags.DATA,
1606
1684
  space.id,
@@ -1608,10 +1686,9 @@ var useMessageQueue = (chat) => {
1608
1686
  ]) : void 0;
1609
1687
  }, [
1610
1688
  space,
1611
- chat?.queue.dxn
1689
+ chat?.assistantChatQueue.dxn
1612
1690
  ]);
1613
- const edgeClient = (0, import_react_edge_client.useEdgeClient)();
1614
- return (0, import_react_edge_client.useQueue)(edgeClient, queueDxn);
1691
+ return (0, import_echo6.useQueue)(queueDxn);
1615
1692
  };
1616
1693
  var MockServiceRegistry = class {
1617
1694
  async queryServices(query) {
@@ -1634,7 +1711,7 @@ var VISUAL_CROSSING_CREDENTIALS = {
1634
1711
  }
1635
1712
  };
1636
1713
  var TEST_SERVICES = [
1637
- (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1714
+ (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1638
1715
  serviceId: "amadeus.com/service/FlightSearch",
1639
1716
  name: "Amadeus Flight Search",
1640
1717
  description: "Search for local and international flights.",
@@ -1647,7 +1724,7 @@ var TEST_SERVICES = [
1647
1724
  }
1648
1725
  ]
1649
1726
  }),
1650
- (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1727
+ (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1651
1728
  serviceId: "amadeus.com/service/HotelSearch",
1652
1729
  name: "Amadeus Hotel Search",
1653
1730
  description: "Search for local and international hotels.",
@@ -1660,7 +1737,7 @@ var TEST_SERVICES = [
1660
1737
  }
1661
1738
  ]
1662
1739
  }),
1663
- (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1740
+ (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1664
1741
  serviceId: "visualcrossing.com/service/Weather",
1665
1742
  name: "Visual Crossing Weather",
1666
1743
  description: "Search for global weather forecasts.",
@@ -1674,7 +1751,7 @@ var TEST_SERVICES = [
1674
1751
  ]
1675
1752
  }),
1676
1753
  // TODO(burdon): Needs auth.
1677
- (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1754
+ (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1678
1755
  serviceId: "abstractapi.com/service/GeoLocation",
1679
1756
  name: "Abstract GeoLocation",
1680
1757
  description: "Get the location of any IP address.",
@@ -1691,11 +1768,11 @@ var TEST_SERVICES = [
1691
1768
  //
1692
1769
  ...Array.from({
1693
1770
  length: 20
1694
- }, (_, i) => (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1771
+ }, (_, i) => (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1695
1772
  serviceId: `example.com/service/test-${i}`,
1696
1773
  name: `Test ${i}`,
1697
1774
  description: `Test ${i}`,
1698
- category: Object.keys(import_chunk_34WE2FD2.categoryIcons)[Math.floor(Math.random() * Object.keys(import_chunk_34WE2FD2.categoryIcons).length)],
1775
+ category: Object.keys(import_chunk_APRU3QWK.categoryIcons)[Math.floor(Math.random() * Object.keys(import_chunk_APRU3QWK.categoryIcons).length)],
1699
1776
  interfaces: [
1700
1777
  {
1701
1778
  kind: "api",
@@ -1719,10 +1796,60 @@ var useServices = (space, query) => {
1719
1796
  ]);
1720
1797
  return services;
1721
1798
  };
1722
- var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx";
1723
- var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) => {
1799
+ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useContextProvider.ts";
1800
+ var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
1801
+ var useContextProvider = (space) => {
1802
+ const artifactDefinitions = (0, import_app_framework4.useCapabilities)(import_app_framework4.Capabilities.ArtifactDefinition);
1803
+ return (0, import_react13.useMemo)(() => {
1804
+ if (!space) {
1805
+ return void 0;
1806
+ }
1807
+ return {
1808
+ query: async ({ query }) => {
1809
+ const artifactSchemas = artifactDefinitions.map((artifact) => artifact.schema);
1810
+ const { objects } = await space.db.query(import_echo7.Filter.or(...artifactSchemas.map((schema) => import_echo7.Filter.schema(schema)))).run();
1811
+ return objects.map((object) => {
1812
+ import_log10.log.info("object", {
1813
+ object,
1814
+ label: (0, import_echo_schema4.getLabel)((0, import_echo_schema4.getSchema)(object), object)
1815
+ }, {
1816
+ F: __dxlog_file8,
1817
+ L: 36,
1818
+ S: void 0,
1819
+ C: (f, a) => f(...a)
1820
+ });
1821
+ return object;
1822
+ }).filter((object) => stringMatch(query, (0, import_echo_schema4.getLabel)((0, import_echo_schema4.getSchema)(object), object) ?? "")).filter((object) => !!(0, import_echo_schema4.getDXN)(object)).map((object) => ({
1823
+ uri: (0, import_echo_schema4.getDXN)(object).toString(),
1824
+ label: (0, import_echo_schema4.getLabel)((0, import_echo_schema4.getSchema)(object), object) ?? ""
1825
+ }));
1826
+ },
1827
+ resolveMetadata: async ({ uri }) => {
1828
+ const object = await space.db.query({
1829
+ id: uri
1830
+ }).first();
1831
+ return {
1832
+ uri,
1833
+ label: (0, import_echo_schema4.getLabel)((0, import_echo_schema4.getSchema)(object), object) ?? ""
1834
+ };
1835
+ }
1836
+ };
1837
+ }, [
1838
+ space,
1839
+ artifactDefinitions
1840
+ ]);
1841
+ };
1842
+ var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/components/Thread/ThreadContainer.tsx";
1843
+ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, onOpenChange, ...props }) => {
1724
1844
  const space = (0, import_echo3.getSpace)(chat);
1725
- const processor = useChatProcessor(space, settings);
1845
+ const contextProvider = useContextProvider(space);
1846
+ const processor = useChatProcessor({
1847
+ chat,
1848
+ space,
1849
+ settings,
1850
+ part,
1851
+ associatedArtifact
1852
+ });
1726
1853
  const messageQueue = useMessageQueue(chat);
1727
1854
  const messages = [
1728
1855
  ...messageQueue?.items ?? [],
@@ -1731,8 +1858,8 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1731
1858
  const handleSubmit = (0, import_react7.useCallback)((text) => {
1732
1859
  if (processor.streaming.value) {
1733
1860
  import_log5.log.warn("ignoring submit; still processing.", void 0, {
1734
- F: __dxlog_file8,
1735
- L: 39,
1861
+ F: __dxlog_file9,
1862
+ L: 44,
1736
1863
  S: void 0,
1737
1864
  C: (f, a) => f(...a)
1738
1865
  });
@@ -1740,8 +1867,8 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1740
1867
  }
1741
1868
  onOpenChange?.(true);
1742
1869
  (0, import_invariant3.invariant)(messageQueue, void 0, {
1743
- F: __dxlog_file8,
1744
- L: 45,
1870
+ F: __dxlog_file9,
1871
+ L: 50,
1745
1872
  S: void 0,
1746
1873
  A: [
1747
1874
  "messageQueue",
@@ -1778,6 +1905,7 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1778
1905
  onCancel: handleCancel,
1779
1906
  onPrompt: handleSubmit,
1780
1907
  onOpenChange,
1908
+ contextProvider,
1781
1909
  ...props
1782
1910
  });
1783
1911
  };
@@ -1794,4 +1922,4 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1794
1922
  ToolboxContainer,
1795
1923
  useServices
1796
1924
  });
1797
- //# sourceMappingURL=chunk-JWUHUQ56.cjs.map
1925
+ //# sourceMappingURL=chunk-RPBKMP2E.cjs.map