@dxos/plugin-assistant 0.8.1-staging.391c573 → 0.8.1-staging.5be625a

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 (207) hide show
  1. package/dist/lib/browser/{AssistantDialog-CM33SOCT.mjs → AssistantDialog-EIUUSXDS.mjs} +11 -10
  2. package/dist/lib/browser/AssistantDialog-EIUUSXDS.mjs.map +7 -0
  3. package/dist/lib/browser/{ChatContainer-VW73VNUY.mjs → ChatContainer-NHHA6CSP.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-4DIOTGOG.mjs → app-graph-builder-DTCUWBKB.mjs} +57 -6
  9. package/dist/lib/browser/app-graph-builder-DTCUWBKB.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-M2SADJVS.mjs → chunk-25APJ3ZK.mjs} +34 -12
  11. package/dist/lib/browser/chunk-25APJ3ZK.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-WVME6K4X.mjs → chunk-KGIACFAX.mjs} +333 -205
  16. package/dist/lib/browser/chunk-KGIACFAX.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-NTLTGYYS.mjs → chunk-SVUCJXGN.mjs} +2 -2
  18. package/dist/lib/browser/chunk-SVUCJXGN.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-FPXC3LKK.mjs → chunk-X6ALDUA5.mjs} +25 -3
  20. package/dist/lib/browser/{chunk-FPXC3LKK.mjs.map → chunk-X6ALDUA5.mjs.map} +3 -3
  21. package/dist/lib/browser/index.mjs +25 -27
  22. package/dist/lib/browser/index.mjs.map +3 -3
  23. package/dist/lib/browser/{intent-resolver-FQRN6747.mjs → intent-resolver-U57FXP3I.mjs} +6 -3
  24. package/dist/lib/browser/{intent-resolver-FQRN6747.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-ZT6EQ7FJ.mjs → react-surface-YNN5NYJW.mjs} +10 -9
  27. package/dist/lib/browser/react-surface-YNN5NYJW.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-VVQUGG56.mjs → settings-VAW6UWFL.mjs} +3 -3
  29. package/dist/lib/browser/types/index.mjs +6 -2
  30. package/dist/lib/node/{AssistantDialog-5PVOCPE2.cjs → AssistantDialog-GT7R7MKH.cjs} +17 -16
  31. package/dist/lib/node/AssistantDialog-GT7R7MKH.cjs.map +7 -0
  32. package/dist/lib/node/{ChatContainer-I45I3ICI.cjs → ChatContainer-JUZOEZZ7.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-6CY35ZIR.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-7O4U4RXH.cjs → app-graph-builder-3P6WSON2.cjs} +63 -13
  38. package/dist/lib/node/app-graph-builder-3P6WSON2.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-HFOUAFOW.cjs → chunk-G2HY3UJ4.cjs} +40 -18
  40. package/dist/lib/node/chunk-G2HY3UJ4.cjs.map +7 -0
  41. package/dist/lib/node/{chunk-JWUHUQ56.cjs → chunk-JAB6KLPP.cjs} +334 -210
  42. package/dist/lib/node/chunk-JAB6KLPP.cjs.map +7 -0
  43. package/dist/lib/node/{chunk-34WE2FD2.cjs → chunk-KLSNCP34.cjs} +31 -7
  44. package/dist/lib/node/chunk-KLSNCP34.cjs.map +7 -0
  45. package/dist/lib/node/{chunk-NV4TQQSU.cjs → chunk-N3SW6DJ6.cjs} +6 -6
  46. package/dist/lib/node/{chunk-GNPXCHFT.cjs → chunk-U6J2GO7I.cjs} +4 -4
  47. package/dist/lib/node/{chunk-GNPXCHFT.cjs.map → chunk-U6J2GO7I.cjs.map} +2 -2
  48. package/dist/lib/node/{chunk-3WXG6WA6.cjs → chunk-VRXFIS4X.cjs} +6 -6
  49. package/dist/lib/node/chunk-VRXFIS4X.cjs.map +7 -0
  50. package/dist/lib/node/index.cjs +75 -77
  51. package/dist/lib/node/index.cjs.map +3 -3
  52. package/dist/lib/node/{intent-resolver-Z37RNNMC.cjs → intent-resolver-YIFAMM3B.cjs} +13 -10
  53. package/dist/lib/node/{intent-resolver-Z37RNNMC.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-KFXP3GGK.cjs → react-surface-IDGIN55C.cjs} +25 -24
  56. package/dist/lib/node/react-surface-IDGIN55C.cjs.map +7 -0
  57. package/dist/lib/node/{settings-TJHHVI6B.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-Q2ZBOHOV.mjs → AssistantDialog-JMBFM6QH.mjs} +11 -10
  61. package/dist/lib/node-esm/AssistantDialog-JMBFM6QH.mjs.map +7 -0
  62. package/dist/lib/node-esm/{ChatContainer-5ULBF3GW.mjs → ChatContainer-ZNN5CMVL.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-SX3SREXF.mjs → app-graph-builder-PMAQLTTN.mjs} +57 -6
  68. package/dist/lib/node-esm/app-graph-builder-PMAQLTTN.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-ICQN3TDS.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-LBQGJE5T.mjs → chunk-J63VQFQO.mjs} +2 -2
  72. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs → chunk-N6BVC2C2.mjs} +1 -1
  73. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs.map → chunk-N6BVC2C2.mjs.map} +2 -2
  74. package/dist/lib/node-esm/{chunk-LELXJPGJ.mjs → chunk-NMMRHHAR.mjs} +25 -3
  75. package/dist/lib/node-esm/{chunk-LELXJPGJ.mjs.map → chunk-NMMRHHAR.mjs.map} +3 -3
  76. package/dist/lib/node-esm/{chunk-ASMI7PQ2.mjs → chunk-PK5JCOYB.mjs} +333 -205
  77. package/dist/lib/node-esm/chunk-PK5JCOYB.mjs.map +7 -0
  78. package/dist/lib/node-esm/{chunk-2OUUYMBT.mjs → chunk-SMUINDXQ.mjs} +34 -12
  79. package/dist/lib/node-esm/chunk-SMUINDXQ.mjs.map +7 -0
  80. package/dist/lib/node-esm/index.mjs +25 -27
  81. package/dist/lib/node-esm/index.mjs.map +3 -3
  82. package/dist/lib/node-esm/{intent-resolver-LOTXWV4J.mjs → intent-resolver-SQ4HLL5L.mjs} +6 -3
  83. package/dist/lib/node-esm/{intent-resolver-LOTXWV4J.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-NZNNP2QI.mjs → react-surface-424JZTZ4.mjs} +10 -9
  86. package/dist/lib/node-esm/react-surface-424JZTZ4.mjs.map +7 -0
  87. package/dist/lib/node-esm/{settings-BVWR244C.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 -1
  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 +2 -1
  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 +4 -3
  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.map +1 -1
  102. package/dist/types/src/components/Prompt/Prompt.d.ts +3 -0
  103. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
  104. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +1 -0
  105. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/Prompt/PromptBar.d.ts +2 -2
  107. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  108. package/dist/types/src/components/Prompt/references.d.ts +30 -0
  109. package/dist/types/src/components/Prompt/references.d.ts.map +1 -0
  110. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  111. package/dist/types/src/components/Thread/Thread.d.ts +11 -1
  112. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  113. package/dist/types/src/components/Thread/ThreadContainer.d.ts +1 -0
  114. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  115. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  117. package/dist/types/src/hooks/email.d.ts.map +1 -1
  118. package/dist/types/src/hooks/index.d.ts +1 -0
  119. package/dist/types/src/hooks/index.d.ts.map +1 -1
  120. package/dist/types/src/hooks/processor.d.ts +7 -15
  121. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  122. package/dist/types/src/hooks/useChatProcessor.d.ts +9 -2
  123. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  124. package/dist/types/src/hooks/useContextProvider.d.ts +17 -0
  125. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -0
  126. package/dist/types/src/hooks/useMessageQueue.d.ts +4 -4
  127. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  128. package/dist/types/src/meta.d.ts +2 -8
  129. package/dist/types/src/meta.d.ts.map +1 -1
  130. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  131. package/dist/types/src/translations.d.ts +23 -12
  132. package/dist/types/src/translations.d.ts.map +1 -1
  133. package/dist/types/src/types/template.d.ts +36 -0
  134. package/dist/types/src/types/template.d.ts.map +1 -1
  135. package/dist/types/src/types/types.d.ts +3 -1
  136. package/dist/types/src/types/types.d.ts.map +1 -1
  137. package/package.json +56 -55
  138. package/src/AssistantPlugin.tsx +11 -4
  139. package/src/capabilities/ai-client.ts +23 -5
  140. package/src/capabilities/app-graph-builder.ts +48 -2
  141. package/src/capabilities/capabilities.ts +3 -1
  142. package/src/capabilities/intent-resolver.ts +1 -1
  143. package/src/capabilities/react-surface.tsx +3 -2
  144. package/src/components/AmbientDialog/AmbientDialog.tsx +11 -11
  145. package/src/components/AssistantDialog.tsx +7 -1
  146. package/src/components/AssistantSettings/AssistantSettings.tsx +39 -5
  147. package/src/components/Prompt/Prompt.stories.tsx +34 -0
  148. package/src/components/Prompt/Prompt.tsx +28 -18
  149. package/src/components/Prompt/PromptBar.tsx +3 -1
  150. package/src/components/Prompt/references.ts +180 -0
  151. package/src/components/TemplateContainer.tsx +79 -4
  152. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +1 -1
  153. package/src/components/TemplateEditor/TemplateForm.stories.tsx +1 -1
  154. package/src/components/Thread/Thread.tsx +21 -0
  155. package/src/components/Thread/ThreadContainer.stories.tsx +5 -10
  156. package/src/components/Thread/ThreadContainer.tsx +7 -4
  157. package/src/components/Thread/ThreadMessage.tsx +17 -9
  158. package/src/hooks/email.ts +3 -3
  159. package/src/hooks/index.ts +1 -0
  160. package/src/hooks/processor.ts +57 -116
  161. package/src/hooks/useChatProcessor.tsx +24 -16
  162. package/src/hooks/useContextProvider.ts +55 -0
  163. package/src/hooks/useMessageQueue.ts +2 -4
  164. package/src/meta.ts +2 -2
  165. package/src/testing/test-functions.ts +2 -2
  166. package/src/translations.ts +10 -5
  167. package/src/types/template.ts +22 -0
  168. package/src/types/types.ts +3 -1
  169. package/dist/lib/browser/AssistantDialog-CM33SOCT.mjs.map +0 -7
  170. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs +0 -23
  171. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs.map +0 -7
  172. package/dist/lib/browser/ai-client-HZPB7E6M.mjs +0 -22
  173. package/dist/lib/browser/ai-client-HZPB7E6M.mjs.map +0 -7
  174. package/dist/lib/browser/app-graph-builder-4DIOTGOG.mjs.map +0 -7
  175. package/dist/lib/browser/chunk-M2SADJVS.mjs.map +0 -7
  176. package/dist/lib/browser/chunk-NTLTGYYS.mjs.map +0 -7
  177. package/dist/lib/browser/chunk-WVME6K4X.mjs.map +0 -7
  178. package/dist/lib/browser/react-surface-ZT6EQ7FJ.mjs.map +0 -7
  179. package/dist/lib/node/AssistantDialog-5PVOCPE2.cjs.map +0 -7
  180. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs +0 -53
  181. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs.map +0 -7
  182. package/dist/lib/node/ai-client-6CY35ZIR.cjs.map +0 -7
  183. package/dist/lib/node/app-graph-builder-7O4U4RXH.cjs.map +0 -7
  184. package/dist/lib/node/chunk-34WE2FD2.cjs.map +0 -7
  185. package/dist/lib/node/chunk-3WXG6WA6.cjs.map +0 -7
  186. package/dist/lib/node/chunk-HFOUAFOW.cjs.map +0 -7
  187. package/dist/lib/node/chunk-JWUHUQ56.cjs.map +0 -7
  188. package/dist/lib/node/react-surface-KFXP3GGK.cjs.map +0 -7
  189. package/dist/lib/node-esm/AssistantDialog-Q2ZBOHOV.mjs.map +0 -7
  190. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs +0 -24
  191. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs.map +0 -7
  192. package/dist/lib/node-esm/ai-client-GSA67EIB.mjs +0 -23
  193. package/dist/lib/node-esm/ai-client-GSA67EIB.mjs.map +0 -7
  194. package/dist/lib/node-esm/app-graph-builder-SX3SREXF.mjs.map +0 -7
  195. package/dist/lib/node-esm/chunk-2OUUYMBT.mjs.map +0 -7
  196. package/dist/lib/node-esm/chunk-ASMI7PQ2.mjs.map +0 -7
  197. package/dist/lib/node-esm/chunk-ICQN3TDS.mjs.map +0 -7
  198. package/dist/lib/node-esm/react-surface-NZNNP2QI.mjs.map +0 -7
  199. /package/dist/lib/browser/{ChatContainer-VW73VNUY.mjs.map → ChatContainer-NHHA6CSP.mjs.map} +0 -0
  200. /package/dist/lib/browser/{chunk-EUMPBC4T.mjs.map → chunk-6FTPLBSC.mjs.map} +0 -0
  201. /package/dist/lib/browser/{settings-VVQUGG56.mjs.map → settings-VAW6UWFL.mjs.map} +0 -0
  202. /package/dist/lib/node/{ChatContainer-I45I3ICI.cjs.map → ChatContainer-JUZOEZZ7.cjs.map} +0 -0
  203. /package/dist/lib/node/{chunk-NV4TQQSU.cjs.map → chunk-N3SW6DJ6.cjs.map} +0 -0
  204. /package/dist/lib/node/{settings-TJHHVI6B.cjs.map → settings-2FEYGLYU.cjs.map} +0 -0
  205. /package/dist/lib/node-esm/{ChatContainer-5ULBF3GW.mjs.map → ChatContainer-ZNN5CMVL.mjs.map} +0 -0
  206. /package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs.map → chunk-J63VQFQO.mjs.map} +0 -0
  207. /package/dist/lib/node-esm/{settings-BVWR244C.mjs.map → settings-VHR5KT4J.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_JAB6KLPP_exports = {};
30
+ __export(chunk_JAB6KLPP_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_JAB6KLPP_exports);
43
+ var import_chunk_VRXFIS4X = require("./chunk-VRXFIS4X.cjs");
44
+ var import_chunk_KLSNCP34 = require("./chunk-KLSNCP34.cjs");
45
+ var import_chunk_U6J2GO7I = require("./chunk-U6J2GO7I.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,12 +130,16 @@ 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");
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");
136
143
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/tools/function.ts";
137
144
  var covertFunctionToTool = (fn, edgeUrl, spaceId) => {
138
145
  if (!fn.description || !fn.inputSchema) {
@@ -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_KLSNCP34.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...", {
@@ -755,7 +762,7 @@ var ToolContainer = ({ classNames, items }) => {
755
762
  };
756
763
  var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/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_U6J2GO7I.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)({
@@ -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
1432
  var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/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
+ extensions: this._extensions,
1520
+ generationOptions: {
1521
+ model: this._options.model,
1522
+ systemPrompt: this._options.systemPrompt
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"));
1584
+ var AiClient = (0, import_app_framework3.lazy)(() => import("./ai-client-5ESLYXAV.cjs"));
1585
+ var AppGraphBuilder = (0, import_app_framework3.lazy)(() => import("./app-graph-builder-3P6WSON2.cjs"));
1586
+ var IntentResolver = (0, import_app_framework3.lazy)(() => import("./intent-resolver-YIFAMM3B.cjs"));
1587
+ var ReactSurface = (0, import_app_framework3.lazy)(() => import("./react-surface-IDGIN55C.cjs"));
1588
+ var AssistantSettings = (0, import_app_framework3.lazy)(() => import("./settings-2FEYGLYU.cjs"));
1517
1589
  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);
1590
+ var useChatProcessor = ({ chat, space, settings, part = "deck" }) => {
1591
+ const aiClient = (0, import_app_framework2.useCapability)(import_chunk_VRXFIS4X.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_KLSNCP34.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: 41,
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: 53,
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,41 +1638,40 @@ 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)({
1646
+ const systemPrompt = (0, import_react8.useMemo)(() => (0, import_artifact4.createSystemPrompt)({
1571
1647
  artifacts: artifactDefinitions.map((definition) => definition.instructions)
1572
1648
  }), [
1573
1649
  artifactDefinitions
1574
1650
  ]);
1651
+ const model = settings?.llmProvider === "ollama" ? settings?.ollamaModel ?? import_assistant2.DEFAULT_OLLAMA_MODEL : settings?.edgeModel ?? import_assistant2.DEFAULT_EDGE_MODEL;
1575
1652
  const processor = (0, import_react8.useMemo)(() => {
1576
1653
  (0, import_log7.log)("creating processor...", {
1577
1654
  settings
1578
1655
  }, {
1579
1656
  F: __dxlog_file7,
1580
- L: 70,
1657
+ L: 83,
1581
1658
  S: void 0,
1582
1659
  C: (f, a) => f(...a)
1583
1660
  });
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.
1661
+ return new ChatProcessor(aiClient.value, tools, artifactDefinitions, extensions, {
1662
+ model,
1588
1663
  systemPrompt
1589
1664
  });
1590
1665
  }, [
1591
- aiClient,
1666
+ aiClient.value,
1592
1667
  tools,
1593
1668
  extensions,
1594
- systemPrompt,
1595
- settings?.llmModel
1669
+ model,
1670
+ systemPrompt
1596
1671
  ]);
1597
1672
  return processor;
1598
1673
  };
1599
- var registerTriggersMutex = new import_async.Mutex();
1674
+ var registerTriggersMutex = new import_async2.Mutex();
1600
1675
  var useMessageQueue = (chat) => {
1601
1676
  const space = (0, import_echo6.getSpace)(chat);
1602
1677
  const queueDxn = (0, import_react10.useMemo)(() => {
@@ -1610,8 +1685,7 @@ var useMessageQueue = (chat) => {
1610
1685
  space,
1611
1686
  chat?.queue.dxn
1612
1687
  ]);
1613
- const edgeClient = (0, import_react_edge_client.useEdgeClient)();
1614
- return (0, import_react_edge_client.useQueue)(edgeClient, queueDxn);
1688
+ return (0, import_echo6.useQueue)(queueDxn);
1615
1689
  };
1616
1690
  var MockServiceRegistry = class {
1617
1691
  async queryServices(query) {
@@ -1634,7 +1708,7 @@ var VISUAL_CROSSING_CREDENTIALS = {
1634
1708
  }
1635
1709
  };
1636
1710
  var TEST_SERVICES = [
1637
- (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1711
+ (0, import_echo_schema3.createStatic)(import_chunk_KLSNCP34.ServiceType, {
1638
1712
  serviceId: "amadeus.com/service/FlightSearch",
1639
1713
  name: "Amadeus Flight Search",
1640
1714
  description: "Search for local and international flights.",
@@ -1647,7 +1721,7 @@ var TEST_SERVICES = [
1647
1721
  }
1648
1722
  ]
1649
1723
  }),
1650
- (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1724
+ (0, import_echo_schema3.createStatic)(import_chunk_KLSNCP34.ServiceType, {
1651
1725
  serviceId: "amadeus.com/service/HotelSearch",
1652
1726
  name: "Amadeus Hotel Search",
1653
1727
  description: "Search for local and international hotels.",
@@ -1660,7 +1734,7 @@ var TEST_SERVICES = [
1660
1734
  }
1661
1735
  ]
1662
1736
  }),
1663
- (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1737
+ (0, import_echo_schema3.createStatic)(import_chunk_KLSNCP34.ServiceType, {
1664
1738
  serviceId: "visualcrossing.com/service/Weather",
1665
1739
  name: "Visual Crossing Weather",
1666
1740
  description: "Search for global weather forecasts.",
@@ -1674,7 +1748,7 @@ var TEST_SERVICES = [
1674
1748
  ]
1675
1749
  }),
1676
1750
  // TODO(burdon): Needs auth.
1677
- (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1751
+ (0, import_echo_schema3.createStatic)(import_chunk_KLSNCP34.ServiceType, {
1678
1752
  serviceId: "abstractapi.com/service/GeoLocation",
1679
1753
  name: "Abstract GeoLocation",
1680
1754
  description: "Get the location of any IP address.",
@@ -1691,11 +1765,11 @@ var TEST_SERVICES = [
1691
1765
  //
1692
1766
  ...Array.from({
1693
1767
  length: 20
1694
- }, (_, i) => (0, import_echo_schema4.createStatic)(import_chunk_34WE2FD2.ServiceType, {
1768
+ }, (_, i) => (0, import_echo_schema3.createStatic)(import_chunk_KLSNCP34.ServiceType, {
1695
1769
  serviceId: `example.com/service/test-${i}`,
1696
1770
  name: `Test ${i}`,
1697
1771
  description: `Test ${i}`,
1698
- category: Object.keys(import_chunk_34WE2FD2.categoryIcons)[Math.floor(Math.random() * Object.keys(import_chunk_34WE2FD2.categoryIcons).length)],
1772
+ category: Object.keys(import_chunk_KLSNCP34.categoryIcons)[Math.floor(Math.random() * Object.keys(import_chunk_KLSNCP34.categoryIcons).length)],
1699
1773
  interfaces: [
1700
1774
  {
1701
1775
  kind: "api",
@@ -1719,10 +1793,59 @@ var useServices = (space, query) => {
1719
1793
  ]);
1720
1794
  return services;
1721
1795
  };
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 }) => {
1796
+ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/hooks/useContextProvider.ts";
1797
+ var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
1798
+ var useContextProvider = (space) => {
1799
+ const artifactDefinitions = (0, import_app_framework4.useCapabilities)(import_app_framework4.Capabilities.ArtifactDefinition);
1800
+ return (0, import_react13.useMemo)(() => {
1801
+ if (!space) {
1802
+ return void 0;
1803
+ }
1804
+ return {
1805
+ query: async ({ query }) => {
1806
+ const artifactSchemas = artifactDefinitions.map((artifact) => artifact.schema);
1807
+ const { objects } = await space.db.query(import_echo7.Filter.or(...artifactSchemas.map((schema) => import_echo7.Filter.schema(schema)))).run();
1808
+ return objects.map((object) => {
1809
+ import_log10.log.info("object", {
1810
+ object,
1811
+ label: (0, import_echo_schema4.getLabel)((0, import_echo_schema4.getSchema)(object), object)
1812
+ }, {
1813
+ F: __dxlog_file8,
1814
+ L: 36,
1815
+ S: void 0,
1816
+ C: (f, a) => f(...a)
1817
+ });
1818
+ return object;
1819
+ }).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) => ({
1820
+ uri: (0, import_echo_schema4.getDXN)(object).toString(),
1821
+ label: (0, import_echo_schema4.getLabel)((0, import_echo_schema4.getSchema)(object), object) ?? ""
1822
+ }));
1823
+ },
1824
+ resolveMetadata: async ({ uri }) => {
1825
+ const object = await space.db.query({
1826
+ id: uri
1827
+ }).first();
1828
+ return {
1829
+ uri,
1830
+ label: (0, import_echo_schema4.getLabel)((0, import_echo_schema4.getSchema)(object), object) ?? ""
1831
+ };
1832
+ }
1833
+ };
1834
+ }, [
1835
+ space,
1836
+ artifactDefinitions
1837
+ ]);
1838
+ };
1839
+ var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/components/Thread/ThreadContainer.tsx";
1840
+ var ThreadContainer = ({ classNames, chat, settings, part, onOpenChange, ...props }) => {
1724
1841
  const space = (0, import_echo3.getSpace)(chat);
1725
- const processor = useChatProcessor(space, settings);
1842
+ const contextProvider = useContextProvider(space);
1843
+ const processor = useChatProcessor({
1844
+ chat,
1845
+ space,
1846
+ settings,
1847
+ part
1848
+ });
1726
1849
  const messageQueue = useMessageQueue(chat);
1727
1850
  const messages = [
1728
1851
  ...messageQueue?.items ?? [],
@@ -1731,8 +1854,8 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1731
1854
  const handleSubmit = (0, import_react7.useCallback)((text) => {
1732
1855
  if (processor.streaming.value) {
1733
1856
  import_log5.log.warn("ignoring submit; still processing.", void 0, {
1734
- F: __dxlog_file8,
1735
- L: 39,
1857
+ F: __dxlog_file9,
1858
+ L: 41,
1736
1859
  S: void 0,
1737
1860
  C: (f, a) => f(...a)
1738
1861
  });
@@ -1740,8 +1863,8 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1740
1863
  }
1741
1864
  onOpenChange?.(true);
1742
1865
  (0, import_invariant3.invariant)(messageQueue, void 0, {
1743
- F: __dxlog_file8,
1744
- L: 45,
1866
+ F: __dxlog_file9,
1867
+ L: 47,
1745
1868
  S: void 0,
1746
1869
  A: [
1747
1870
  "messageQueue",
@@ -1778,6 +1901,7 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1778
1901
  onCancel: handleCancel,
1779
1902
  onPrompt: handleSubmit,
1780
1903
  onOpenChange,
1904
+ contextProvider,
1781
1905
  ...props
1782
1906
  });
1783
1907
  };
@@ -1794,4 +1918,4 @@ var ThreadContainer = ({ classNames, chat, settings, onOpenChange, ...props }) =
1794
1918
  ToolboxContainer,
1795
1919
  useServices
1796
1920
  });
1797
- //# sourceMappingURL=chunk-JWUHUQ56.cjs.map
1921
+ //# sourceMappingURL=chunk-JAB6KLPP.cjs.map