@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
@@ -6,10 +6,12 @@ import {
6
6
  ServiceType,
7
7
  TemplateInputSchema,
8
8
  TemplateInputType,
9
+ TemplateKindSchema,
10
+ TemplateKinds,
9
11
  TemplateType,
10
12
  categoryIcons
11
- } from "../chunk-FPXC3LKK.mjs";
12
- import "../chunk-NV7SVHMV.mjs";
13
+ } from "../chunk-IAMR2FAE.mjs";
14
+ import "../chunk-3HCI5FIL.mjs";
13
15
  export {
14
16
  AIChatType,
15
17
  ApiAuthorization,
@@ -18,6 +20,8 @@ export {
18
20
  ServiceType,
19
21
  TemplateInputSchema,
20
22
  TemplateInputType,
23
+ TemplateKindSchema,
24
+ TemplateKinds,
21
25
  TemplateType,
22
26
  categoryIcons
23
27
  };
@@ -26,16 +26,16 @@ 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 AssistantDialog_5PVOCPE2_exports = {};
30
- __export(AssistantDialog_5PVOCPE2_exports, {
29
+ var AssistantDialog_YI2BSGSX_exports = {};
30
+ __export(AssistantDialog_YI2BSGSX_exports, {
31
31
  AssistantDialog: () => AssistantDialog,
32
32
  default: () => AssistantDialog_default
33
33
  });
34
- module.exports = __toCommonJS(AssistantDialog_5PVOCPE2_exports);
35
- var import_chunk_JWUHUQ56 = require("./chunk-JWUHUQ56.cjs");
36
- var import_chunk_3WXG6WA6 = require("./chunk-3WXG6WA6.cjs");
37
- var import_chunk_34WE2FD2 = require("./chunk-34WE2FD2.cjs");
38
- var import_chunk_GNPXCHFT = require("./chunk-GNPXCHFT.cjs");
34
+ module.exports = __toCommonJS(AssistantDialog_YI2BSGSX_exports);
35
+ var import_chunk_RPBKMP2E = require("./chunk-RPBKMP2E.cjs");
36
+ var import_chunk_GBUNQ257 = require("./chunk-GBUNQ257.cjs");
37
+ var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
38
+ var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
39
39
  var import_react = __toESM(require("react"));
40
40
  var import_app_framework = require("@dxos/app-framework");
41
41
  var import_plugin_transcription = require("@dxos/plugin-transcription");
@@ -46,14 +46,14 @@ var import_react_ui_dnd = require("@dxos/react-ui-dnd");
46
46
  var import_react_ui_theme = require("@dxos/react-ui-theme");
47
47
  var preventDefault = (event) => event.preventDefault();
48
48
  var minSize = 5;
49
- var AmbientDialog = ({ children, open: _open, title, onOpenChange }) => {
49
+ var AmbientDialog = ({ children, open: controlledOpen, title, onOpenChange }) => {
50
50
  const [resizeKey, setReizeKey] = (0, import_react2.useState)(0);
51
51
  const [size, setSize] = (0, import_react2.useState)("min-content");
52
- const [open, setOpen] = (0, import_react2.useState)(_open);
52
+ const [open, setOpen] = (0, import_react2.useState)(controlledOpen);
53
53
  (0, import_react2.useEffect)(() => {
54
- setOpen(_open);
54
+ setOpen(controlledOpen);
55
55
  }, [
56
- _open
56
+ controlledOpen
57
57
  ]);
58
58
  (0, import_react2.useEffect)(() => {
59
59
  setSize(open ? "min-content" : minSize);
@@ -77,7 +77,7 @@ var AmbientDialog = ({ children, open: _open, title, onOpenChange }) => {
77
77
  ...import_react_ui_dnd.resizeAttributes,
78
78
  style: {
79
79
  ...(0, import_react_ui_dnd.sizeStyle)(size, "vertical", true),
80
- maxBlockSize: "calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 8rem)"
80
+ maxBlockSize: "calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 9rem)"
81
81
  },
82
82
  onInteractOutside: preventDefault
83
83
  }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_dnd.ResizeHandle, {
@@ -117,18 +117,19 @@ var DialogHeader = ({ open, title, onToggle }) => {
117
117
  })));
118
118
  };
119
119
  var AssistantDialog = ({ chat }) => {
120
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_GNPXCHFT.ASSISTANT_PLUGIN);
121
- const transcription = (0, import_app_framework.useCapabilities)(import_plugin_transcription.TranscriptionCapabilities.Transcription).length > 0;
122
- const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_GNPXCHFT.ASSISTANT_PLUGIN)?.value;
120
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN);
121
+ const transcription = (0, import_app_framework.useCapabilities)(import_plugin_transcription.TranscriptionCapabilities.Transcriber).length > 0;
122
+ const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN)?.value;
123
123
  const [open, setOpen] = (0, import_react.useState)(false);
124
124
  return /* @__PURE__ */ import_react.default.createElement(AmbientDialog, {
125
125
  open,
126
126
  onOpenChange: setOpen,
127
127
  title: t("assistant dialog title")
128
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_JWUHUQ56.ThreadContainer, {
128
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_RPBKMP2E.ThreadContainer, {
129
129
  chat,
130
130
  onOpenChange: setOpen,
131
131
  settings,
132
+ part: "dialog",
132
133
  transcription
133
134
  }));
134
135
  };
@@ -137,4 +138,4 @@ var AssistantDialog_default = AssistantDialog;
137
138
  0 && (module.exports = {
138
139
  AssistantDialog
139
140
  });
140
- //# sourceMappingURL=AssistantDialog-5PVOCPE2.cjs.map
141
+ //# sourceMappingURL=AssistantDialog-YI2BSGSX.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AssistantDialog.tsx", "../../../src/components/AmbientDialog/AmbientDialog.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, useState } from 'react';\n\nimport { useCapability, Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { useTranslation } from '@dxos/react-ui';\n\nimport { AmbientDialog } from './AmbientDialog';\nimport { ThreadContainer } from './Thread';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, type AIChatType } from '../types';\n\nexport const AssistantDialog: FC<{ chat?: AIChatType }> = ({ chat }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n const transcription = useCapabilities(TranscriptionCapabilities.Transcriber).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n // TODO(burdon): Refocus when open.\n const [open, setOpen] = useState(false);\n\n return (\n <AmbientDialog open={open} onOpenChange={setOpen} title={t('assistant dialog title')}>\n <ThreadContainer\n chat={chat}\n onOpenChange={setOpen}\n settings={settings}\n part={'dialog'}\n transcription={transcription}\n />\n </AmbientDialog>\n );\n};\n\nexport default AssistantDialog;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useCallback, useEffect, useState } from 'react';\n\nimport { Dialog, Icon, IconButton } from '@dxos/react-ui';\nimport { resizeAttributes, ResizeHandle, type Size, sizeStyle } from '@dxos/react-ui-dnd';\nimport { mx } from '@dxos/react-ui-theme';\n\nconst preventDefault = (event: Event) => event.preventDefault();\n\nconst minSize = 5;\n\nexport type AmbientDialogProps = PropsWithChildren<{\n open?: boolean;\n title?: string;\n onOpenChange?: (open: boolean) => void;\n}>;\n\nexport const AmbientDialog = ({ children, open: controlledOpen, title, onOpenChange }: AmbientDialogProps) => {\n const [resizeKey, setReizeKey] = useState(0);\n const [size, setSize] = useState<Size>('min-content');\n const [open, setOpen] = useState(controlledOpen);\n\n // Update controlled value.\n useEffect(() => {\n setOpen(controlledOpen);\n }, [controlledOpen]);\n\n // Update size and key.\n useEffect(() => {\n setSize(open ? 'min-content' : minSize);\n setReizeKey((key) => key + 1);\n }, [open]);\n\n // TODO(burdon): Animate open/close.\n // NOTE: We set the min size to 5rem (80px), and the header and prompt bar to 40px (i.e., the rail-size) each.\n // The dialog has no vertical padding and has box-content so that when closed it collapses to the size of the header and prompt bar.\n const handleToggle = useCallback(() => {\n setOpen((open) => {\n onOpenChange?.(!open);\n return !open;\n });\n }, []);\n\n return (\n <div role='none' className='dx-dialog__overlay bg-transparent pointer-events-none' data-block-align='end'>\n <Dialog.Content\n classNames='relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-hidden pointer-events-auto transition-[block-size] ease-in-out duration-0 [&:not([data-dx-resizing=\"true\"])]:duration-200'\n inOverlayLayout\n {...resizeAttributes}\n style={{\n ...sizeStyle(size, 'vertical', true),\n maxBlockSize: 'calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 9rem)',\n }}\n onInteractOutside={preventDefault}\n >\n <ResizeHandle\n key={resizeKey}\n side='block-start'\n defaultSize='min-content'\n minSize={minSize}\n fallbackSize={minSize}\n iconPosition='center'\n onSizeChange={setSize}\n />\n\n <DialogHeader open={open} title={title} onToggle={handleToggle} />\n\n {children}\n </Dialog.Content>\n </div>\n );\n};\n\n/**\n * Matches same layout grid as PromptBar.\n */\nconst DialogHeader = ({ open, title, onToggle }: { open?: boolean; title?: string; onToggle: () => void }) => {\n return (\n <div className='flex shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] items-center overflow-hidden'>\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n <Dialog.Close>\n <Icon icon='ph--x--regular' />\n </Dialog.Close>\n </div>\n <div className='grow'>\n <Dialog.Title classNames='flex justify-center text-xs text-subdued'>{title}</Dialog.Title>\n </div>\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n <IconButton\n variant='ghost'\n icon={'ph--caret-up--regular'}\n classNames={mx('[&>svg]:transition [&>svg]:duration-200', open && '[&>svg]:rotate-180')}\n iconOnly\n label='Shrink'\n onClick={onToggle}\n />\n </div>\n </div>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_react_ui", "preventDefault", "event", "minSize", "AmbientDialog", "children", "open", "controlledOpen", "title", "onOpenChange", "resizeKey", "setReizeKey", "useState", "size", "setSize", "setOpen", "useEffect", "key", "handleToggle", "useCallback", "React", "div", "role", "className", "data-block-align", "Dialog", "Content", "classNames", "inOverlayLayout", "resizeAttributes", "style", "sizeStyle", "maxBlockSize", "onInteractOutside", "ResizeHandle", "side", "defaultSize", "fallbackSize", "iconPosition", "onSizeChange", "DialogHeader", "onToggle", "Close", "Icon", "icon", "Title", "IconButton", "variant", "mx", "iconOnly", "label", "onClick", "AssistantDialog", "chat", "t", "useTranslation", "ASSISTANT_PLUGIN", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcriber", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "value", "ThreadContainer", "part"]
7
+ }
@@ -26,31 +26,31 @@ 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 ChatContainer_I45I3ICI_exports = {};
30
- __export(ChatContainer_I45I3ICI_exports, {
29
+ var ChatContainer_ZJ5JXF6A_exports = {};
30
+ __export(ChatContainer_ZJ5JXF6A_exports, {
31
31
  ChatContainer: () => ChatContainer,
32
32
  default: () => ChatContainer_default
33
33
  });
34
- module.exports = __toCommonJS(ChatContainer_I45I3ICI_exports);
35
- var import_chunk_JWUHUQ56 = require("./chunk-JWUHUQ56.cjs");
36
- var import_chunk_3WXG6WA6 = require("./chunk-3WXG6WA6.cjs");
37
- var import_chunk_34WE2FD2 = require("./chunk-34WE2FD2.cjs");
38
- var import_chunk_GNPXCHFT = require("./chunk-GNPXCHFT.cjs");
34
+ module.exports = __toCommonJS(ChatContainer_ZJ5JXF6A_exports);
35
+ var import_chunk_RPBKMP2E = require("./chunk-RPBKMP2E.cjs");
36
+ var import_chunk_GBUNQ257 = require("./chunk-GBUNQ257.cjs");
37
+ var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
38
+ var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
39
39
  var import_react = __toESM(require("react"));
40
40
  var import_app_framework = require("@dxos/app-framework");
41
41
  var import_plugin_transcription = require("@dxos/plugin-transcription");
42
42
  var import_react_ui_stack = require("@dxos/react-ui-stack");
43
- var ChatContainer = ({ chat, role }) => {
44
- const transcription = (0, import_app_framework.useCapabilities)(import_plugin_transcription.TranscriptionCapabilities.Transcription).length > 0;
45
- const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_GNPXCHFT.ASSISTANT_PLUGIN)?.value;
43
+ var ChatContainer = ({ role, chat, associatedArtifact }) => {
44
+ const transcription = (0, import_app_framework.useCapabilities)(import_plugin_transcription.TranscriptionCapabilities.Transcriber).length > 0;
45
+ const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN)?.value;
46
46
  return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
47
- toolbar: false,
48
47
  role,
49
- classNames: "mli-auto w-full max-w-[50rem]"
50
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_JWUHUQ56.ThreadContainer, {
48
+ classNames: "container-max-width"
49
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_RPBKMP2E.ThreadContainer, {
51
50
  chat,
52
51
  settings,
53
- transcription
52
+ transcription,
53
+ associatedArtifact
54
54
  }));
55
55
  };
56
56
  var ChatContainer_default = ChatContainer;
@@ -58,4 +58,4 @@ var ChatContainer_default = ChatContainer;
58
58
  0 && (module.exports = {
59
59
  ChatContainer
60
60
  });
61
- //# sourceMappingURL=ChatContainer-I45I3ICI.cjs.map
61
+ //# sourceMappingURL=ChatContainer-ZJ5JXF6A.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ChatContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, useCapabilities, useCapability } from '@dxos/app-framework';\nimport { type AssociatedArtifact } from '@dxos/artifact';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { ThreadContainer } from './Thread';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, type AIChatType } from '../types';\n\n// TODO(burdon): Attention.\nexport const ChatContainer = ({\n role,\n chat,\n associatedArtifact,\n}: {\n role: string;\n chat: AIChatType;\n associatedArtifact?: AssociatedArtifact;\n}) => {\n const transcription = useCapabilities(TranscriptionCapabilities.Transcriber).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n return (\n <StackItem.Content role={role} classNames='container-max-width'>\n <ThreadContainer\n chat={chat}\n settings={settings}\n transcription={transcription}\n associatedArtifact={associatedArtifact}\n />\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAA6D;AAE7D,kCAA0C;AAC1C,4BAA0B;AAOnB,IAAMA,gBAAgB,CAAC,EAC5BC,MACAC,MACAC,mBAAkB,MAKnB;AACC,QAAMC,oBAAgBC,sCAAgBC,sDAA0BC,WAAW,EAAEC,SAAS;AACtF,QAAMC,eAAWC,oCAAcC,kCAAaC,aAAa,EAAEC,SAAiCC,sCAAAA,GAAmBC;AAE/G,SACE,6BAAAC,QAAA,cAACC,gCAAUC,SAAO;IAACjB;IAAYkB,YAAW;KACxC,6BAAAH,QAAA,cAACI,uCAAAA;IACClB;IACAO;IACAL;IACAD;;AAIR;AAEA,IAAA,wBAAeH;",
6
+ "names": ["ChatContainer", "role", "chat", "associatedArtifact", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcriber", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "React", "StackItem", "Content", "classNames", "ThreadContainer"]
7
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var TemplateContainer_XWFYJB4T_exports = {};
30
+ __export(TemplateContainer_XWFYJB4T_exports, {
31
+ TemplateContainer: () => TemplateContainer,
32
+ default: () => TemplateContainer_default
33
+ });
34
+ module.exports = __toCommonJS(TemplateContainer_XWFYJB4T_exports);
35
+ var import_chunk_XI2ARIEO = require("./chunk-XI2ARIEO.cjs");
36
+ var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
37
+ var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
38
+ var import_effect = require("effect");
39
+ var import_react = __toESM(require("react"));
40
+ var import_async = require("@dxos/async");
41
+ var import_react_ui = require("@dxos/react-ui");
42
+ var import_react_ui_stack = require("@dxos/react-ui-stack");
43
+ var TemplateContainer = ({ template, role }) => {
44
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN);
45
+ const handleKindChange = (0, import_react.useCallback)((value) => {
46
+ const kind = import_effect.Match.type().pipe(import_effect.Match.withReturnType(), import_effect.Match.when("always", () => ({
47
+ include: "always"
48
+ })), import_effect.Match.when("schema-matching", () => ({
49
+ include: "schema-matching",
50
+ typename: ""
51
+ })), import_effect.Match.when("automatically", () => ({
52
+ include: "automatically",
53
+ description: ""
54
+ })), import_effect.Match.orElse(() => ({
55
+ include: "manual"
56
+ })))(value);
57
+ template.kind = kind;
58
+ }, [
59
+ template
60
+ ]);
61
+ const handleTypenameChange = (0, import_react.useCallback)((0, import_async.debounce)((event) => {
62
+ if (template.kind.include === "schema-matching") {
63
+ template.kind.typename = event.target.value;
64
+ }
65
+ }, 300), [
66
+ template.kind.include
67
+ ]);
68
+ const handleDescriptionChange = (0, import_react.useCallback)((0, import_async.debounce)((event) => {
69
+ if (template.kind.include === "automatically") {
70
+ template.kind.description = event.target.value;
71
+ }
72
+ }, 300), [
73
+ template.kind.include
74
+ ]);
75
+ return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
76
+ role,
77
+ toolbar: true,
78
+ classNames: "container-max-width"
79
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Toolbar.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Root, {
80
+ value: template.kind.include,
81
+ onValueChange: handleKindChange
82
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Toolbar.Button, {
83
+ asChild: true
84
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.TriggerButton, null)), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Viewport, null, import_chunk_APRU3QWK.TemplateKinds.map((kind) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
85
+ key: kind,
86
+ value: kind
87
+ }, kind)))))), template.kind.include === "schema-matching" && /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
88
+ placeholder: t("typename placeholder"),
89
+ defaultValue: template.kind.typename,
90
+ onChange: handleTypenameChange
91
+ })), template.kind.include === "automatically" && /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
92
+ placeholder: t("description placeholder"),
93
+ defaultValue: template.kind.description,
94
+ onChange: handleDescriptionChange
95
+ }))), /* @__PURE__ */ import_react.default.createElement(import_chunk_XI2ARIEO.TemplateEditor, {
96
+ template
97
+ }));
98
+ };
99
+ var TemplateContainer_default = TemplateContainer;
100
+ // Annotate the CommonJS export names for ESM import in node:
101
+ 0 && (module.exports = {
102
+ TemplateContainer
103
+ });
104
+ //# sourceMappingURL=TemplateContainer-XWFYJB4T.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/TemplateContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Match, type Schema as S } from 'effect';\nimport React, { type ChangeEvent, useCallback } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { Input, Select, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { TemplateEditor } from './TemplateEditor';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { TemplateKinds, type TemplateKindSchema, type TemplateType } from '../types';\n\nexport const TemplateContainer = ({ template, role }: { template: TemplateType; role: string }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n const handleKindChange = useCallback(\n (value: string) => {\n const kind = Match.type<string>().pipe(\n Match.withReturnType<S.Schema.Type<typeof TemplateKindSchema>>(),\n Match.when('always', () => ({ include: 'always' })),\n Match.when('schema-matching', () => ({ include: 'schema-matching', typename: '' })),\n Match.when('automatically', () => ({ include: 'automatically', description: '' })),\n Match.orElse(() => ({ include: 'manual' })),\n )(value);\n\n template.kind = kind;\n },\n [template],\n );\n\n const handleTypenameChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'schema-matching') {\n template.kind.typename = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n const handleDescriptionChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'automatically') {\n template.kind.description = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n return (\n <StackItem.Content role={role} toolbar classNames='container-max-width'>\n {/* TODO(wittjosiah): Move this toolbar into c11y sidebar. */}\n <Toolbar.Root>\n <Select.Root value={template.kind.include} onValueChange={handleKindChange}>\n <Toolbar.Button asChild>\n <Select.TriggerButton />\n </Toolbar.Button>\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {TemplateKinds.map((kind) => (\n <Select.Option key={kind} value={kind}>\n {kind}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n {template.kind.include === 'schema-matching' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('typename placeholder')}\n defaultValue={template.kind.typename}\n onChange={handleTypenameChange}\n />\n </Input.Root>\n )}\n {template.kind.include === 'automatically' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('description placeholder')}\n defaultValue={template.kind.description}\n onChange={handleDescriptionChange}\n />\n </Input.Root>\n )}\n </Toolbar.Root>\n <TemplateEditor template={template} />\n </StackItem.Content>\n );\n};\n\nexport default TemplateContainer;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oBAAwC;AACxC,mBAAqD;AAErD,mBAAyB;AACzB,sBAAuD;AACvD,4BAA0B;AAMnB,IAAMA,oBAAoB,CAAC,EAAEC,UAAUC,KAAI,MAA4C;AAC5F,QAAM,EAAEC,EAAC,QAAKC,gCAAeC,sCAAAA;AAE7B,QAAMC,uBAAmBC,0BACvB,CAACC,UAAAA;AACC,UAAMC,OAAOC,oBAAMC,KAAI,EAAWC,KAChCF,oBAAMG,eAAc,GACpBH,oBAAMI,KAAK,UAAU,OAAO;MAAEC,SAAS;IAAS,EAAA,GAChDL,oBAAMI,KAAK,mBAAmB,OAAO;MAAEC,SAAS;MAAmBC,UAAU;IAAG,EAAA,GAChFN,oBAAMI,KAAK,iBAAiB,OAAO;MAAEC,SAAS;MAAiBE,aAAa;IAAG,EAAA,GAC/EP,oBAAMQ,OAAO,OAAO;MAAEH,SAAS;IAAS,EAAA,CAAA,EACxCP,KAAAA;AAEFP,aAASQ,OAAOA;EAClB,GACA;IAACR;GAAS;AAGZ,QAAMkB,2BAAuBZ,8BAC3Ba,uBAAS,CAACC,UAAAA;AACR,QAAIpB,SAASQ,KAAKM,YAAY,mBAAmB;AAC/Cd,eAASQ,KAAKO,WAAWK,MAAMC,OAAOd;IACxC;EACF,GAAG,GAAA,GACH;IAACP,SAASQ,KAAKM;GAAQ;AAGzB,QAAMQ,8BAA0BhB,8BAC9Ba,uBAAS,CAACC,UAAAA;AACR,QAAIpB,SAASQ,KAAKM,YAAY,iBAAiB;AAC7Cd,eAASQ,KAAKQ,cAAcI,MAAMC,OAAOd;IAC3C;EACF,GAAG,GAAA,GACH;IAACP,SAASQ,KAAKM;GAAQ;AAGzB,SACE,6BAAAS,QAAA,cAACC,gCAAUC,SAAO;IAACxB;IAAYyB,SAAAA;IAAQC,YAAW;KAEhD,6BAAAJ,QAAA,cAACK,wBAAQC,MAAI,MACX,6BAAAN,QAAA,cAACO,uBAAOD,MAAI;IAACtB,OAAOP,SAASQ,KAAKM;IAASiB,eAAe1B;KACxD,6BAAAkB,QAAA,cAACK,wBAAQI,QAAM;IAACC,SAAAA;KACd,6BAAAV,QAAA,cAACO,uBAAOI,eAAa,IAAA,CAAA,GAEvB,6BAAAX,QAAA,cAACO,uBAAOK,QAAM,MACZ,6BAAAZ,QAAA,cAACO,uBAAOL,SAAO,MACb,6BAAAF,QAAA,cAACO,uBAAOM,UAAQ,MACbC,oCAAcC,IAAI,CAAC9B,SAClB,6BAAAe,QAAA,cAACO,uBAAOS,QAAM;IAACC,KAAKhC;IAAMD,OAAOC;KAC9BA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAOZR,SAASQ,KAAKM,YAAY,qBACzB,6BAAAS,QAAA,cAACkB,sBAAMZ,MAAI,MACT,6BAAAN,QAAA,cAACkB,sBAAMC,WAAS;IACdC,aAAazC,EAAE,sBAAA;IACf0C,cAAc5C,SAASQ,KAAKO;IAC5B8B,UAAU3B;OAIflB,SAASQ,KAAKM,YAAY,mBACzB,6BAAAS,QAAA,cAACkB,sBAAMZ,MAAI,MACT,6BAAAN,QAAA,cAACkB,sBAAMC,WAAS;IACdC,aAAazC,EAAE,yBAAA;IACf0C,cAAc5C,SAASQ,KAAKQ;IAC5B6B,UAAUvB;QAKlB,6BAAAC,QAAA,cAACuB,sCAAAA;IAAe9C;;AAGtB;AAEA,IAAA,4BAAeD;",
6
+ "names": ["TemplateContainer", "template", "role", "t", "useTranslation", "ASSISTANT_PLUGIN", "handleKindChange", "useCallback", "value", "kind", "Match", "type", "pipe", "withReturnType", "when", "include", "typename", "description", "orElse", "handleTypenameChange", "debounce", "event", "target", "handleDescriptionChange", "React", "StackItem", "Content", "toolbar", "classNames", "Toolbar", "Root", "Select", "onValueChange", "Button", "asChild", "TriggerButton", "Portal", "Viewport", "TemplateKinds", "map", "Option", "key", "Input", "TextInput", "placeholder", "defaultValue", "onChange", "TemplateEditor"]
7
+ }
@@ -16,13 +16,14 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ai_client_6CY35ZIR_exports = {};
20
- __export(ai_client_6CY35ZIR_exports, {
19
+ var ai_client_URCCYU6B_exports = {};
20
+ __export(ai_client_URCCYU6B_exports, {
21
21
  default: () => ai_client_default
22
22
  });
23
- module.exports = __toCommonJS(ai_client_6CY35ZIR_exports);
24
- var import_chunk_3WXG6WA6 = require("./chunk-3WXG6WA6.cjs");
25
- var import_chunk_GNPXCHFT = require("./chunk-GNPXCHFT.cjs");
23
+ module.exports = __toCommonJS(ai_client_URCCYU6B_exports);
24
+ var import_chunk_GBUNQ257 = require("./chunk-GBUNQ257.cjs");
25
+ var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
26
+ var import_signals_core = require("@preact/signals-core");
26
27
  var import_app_framework = require("@dxos/app-framework");
27
28
  var import_assistant = require("@dxos/assistant");
28
29
  var import_plugin_client = require("@dxos/plugin-client");
@@ -30,9 +31,19 @@ var DEFAULT_AI_SERVICE_URL = "http://localhost:8788";
30
31
  var ai_client_default = (context) => {
31
32
  const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
32
33
  const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;
33
- const ai = new import_assistant.AIServiceEdgeClient({
34
+ const ai = (0, import_signals_core.signal)(new import_assistant.AIServiceEdgeClient({
34
35
  endpoint
36
+ }));
37
+ const unsubscribe = (0, import_signals_core.effect)(() => {
38
+ const settings = context.requestCapability(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN)?.value;
39
+ if (settings?.llmProvider === "ollama") {
40
+ ai.value = new import_assistant.OllamaClient();
41
+ } else {
42
+ ai.value = new import_assistant.AIServiceEdgeClient({
43
+ endpoint
44
+ });
45
+ }
35
46
  });
36
- return (0, import_app_framework.contributes)(import_chunk_3WXG6WA6.AssistantCapabilities.AiClient, ai);
47
+ return (0, import_app_framework.contributes)(import_chunk_GBUNQ257.AssistantCapabilities.AiClient, ai, () => unsubscribe());
37
48
  };
38
- //# sourceMappingURL=ai-client-6CY35ZIR.cjs.map
49
+ //# sourceMappingURL=ai-client-URCCYU6B.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/ai-client.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect, signal } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { type AIServiceClient, AIServiceEdgeClient, OllamaClient } from '@dxos/assistant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { AssistantCapabilities } from './capabilities';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps } from '../types';\n\n// TODO(wittjosiah): Factor out.\nconst DEFAULT_AI_SERVICE_URL = 'http://localhost:8788';\n\nexport default (context: PluginsContext) => {\n const client = context.requestCapability(ClientCapabilities.Client);\n const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;\n\n const ai = signal<AIServiceClient>(new AIServiceEdgeClient({ endpoint }));\n\n const unsubscribe = effect(() => {\n // TODO(burdon): Could be undefined.\n const settings = context\n .requestCapability(Capabilities.SettingsStore)\n .getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n if (settings?.llmProvider === 'ollama') {\n ai.value = new OllamaClient();\n } else {\n ai.value = new AIServiceEdgeClient({ endpoint });\n }\n });\n\n return contributes(AssistantCapabilities.AiClient, ai, () => unsubscribe());\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,0BAA+B;AAE/B,2BAA+D;AAC/D,uBAAwE;AACxE,2BAAmC;AAOnC,IAAMA,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,wCAAmBC,MAAM;AAClE,QAAMC,WAAWJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,IAAIC,UAAUZ;AAEvE,QAAMW,SAAKE,4BAAwB,IAAIC,qCAAoB;IAAER;EAAS,CAAA,CAAA;AAEtE,QAAMS,kBAAcC,4BAAO,MAAA;AAEzB,UAAMC,WAAWhB,QACdE,kBAAkBe,kCAAaC,aAAa,EAC5CC,SAAiCC,sCAAAA,GAAmBC;AAEvD,QAAIL,UAAUM,gBAAgB,UAAU;AACtCZ,SAAGW,QAAQ,IAAIE,8BAAAA;IACjB,OAAO;AACLb,SAAGW,QAAQ,IAAIR,qCAAoB;QAAER;MAAS,CAAA;IAChD;EACF,CAAA;AAEA,aAAOmB,kCAAYC,4CAAsBC,UAAUhB,IAAI,MAAMI,YAAAA,CAAAA;AAC/D;",
6
+ "names": ["DEFAULT_AI_SERVICE_URL", "context", "client", "requestCapability", "ClientCapabilities", "Client", "endpoint", "config", "values", "runtime", "services", "ai", "server", "signal", "AIServiceEdgeClient", "unsubscribe", "effect", "settings", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "llmProvider", "OllamaClient", "contributes", "AssistantCapabilities", "AiClient"]
7
+ }
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var app_graph_builder_N5ZUUI2Z_exports = {};
20
+ __export(app_graph_builder_N5ZUUI2Z_exports, {
21
+ default: () => app_graph_builder_default
22
+ });
23
+ module.exports = __toCommonJS(app_graph_builder_N5ZUUI2Z_exports);
24
+ var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
25
+ var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
26
+ var import_app_framework = require("@dxos/app-framework");
27
+ var import_invariant = require("@dxos/invariant");
28
+ var import_plugin_client = require("@dxos/plugin-client");
29
+ var import_types = require("@dxos/plugin-deck/types");
30
+ var import_plugin_graph = require("@dxos/plugin-graph");
31
+ var import_plugin_space = require("@dxos/plugin-space");
32
+ var import_types2 = require("@dxos/plugin-space/types");
33
+ var import_echo = require("@dxos/react-client/echo");
34
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
35
+ var app_graph_builder_default = (context) => (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraphBuilder, [
36
+ (0, import_plugin_graph.createExtension)({
37
+ id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/assistant`,
38
+ filter: (node) => node.id === import_plugin_graph.ROOT_ID,
39
+ actions: () => [
40
+ {
41
+ id: `${import_app_framework.LayoutAction.UpdateDialog._tag}/assistant/open`,
42
+ data: async () => {
43
+ const { dispatchPromise: dispatch } = context.requestCapability(import_app_framework.Capabilities.IntentDispatcher);
44
+ const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
45
+ const layout = context.requestCapability(import_app_framework.Capabilities.Layout);
46
+ const { graph } = context.requestCapability(import_app_framework.Capabilities.AppGraph);
47
+ let chat;
48
+ if (layout.active.length > 0) {
49
+ const node = graph.findNode(layout.active[0]);
50
+ if (node) {
51
+ const space = (0, import_echo.getSpace)(node.data);
52
+ if (space) {
53
+ chat = await getOrCreateChat(dispatch, space);
54
+ }
55
+ }
56
+ } else {
57
+ const space = client.spaces.default;
58
+ chat = await getOrCreateChat(dispatch, space);
59
+ }
60
+ if (!chat) {
61
+ return;
62
+ }
63
+ await dispatch((0, import_app_framework.createIntent)(import_app_framework.LayoutAction.UpdateDialog, {
64
+ part: "dialog",
65
+ subject: import_chunk_Q5XWEMHB.ASSISTANT_DIALOG,
66
+ options: {
67
+ state: true,
68
+ blockAlign: "end",
69
+ props: {
70
+ chat
71
+ }
72
+ }
73
+ }));
74
+ },
75
+ properties: {
76
+ label: [
77
+ "open assistant label",
78
+ {
79
+ ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
80
+ }
81
+ ],
82
+ icon: "ph--star-four--regular",
83
+ disposition: "pin-end",
84
+ position: "hoist",
85
+ keyBinding: {
86
+ macos: "shift+meta+k",
87
+ windows: "shift+ctrl+k"
88
+ }
89
+ }
90
+ }
91
+ ]
92
+ }),
93
+ (0, import_plugin_graph.createExtension)({
94
+ id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/service-registry`,
95
+ filter: (node) => node.id === "root",
96
+ connector: ({ node }) => {
97
+ const layout = context.requestCapability(import_app_framework.Capabilities.Layout);
98
+ const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
99
+ const { spaceId } = (0, import_echo.parseId)(layout.workspace);
100
+ const space = spaceId ? client.spaces.get(spaceId) : null;
101
+ return [
102
+ {
103
+ id: [
104
+ node.id,
105
+ "service-registry"
106
+ ].join(import_types.ATTENDABLE_PATH_SEPARATOR),
107
+ type: import_types.DECK_COMPANION_TYPE,
108
+ data: space,
109
+ properties: {
110
+ label: [
111
+ "service registry label",
112
+ {
113
+ ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
114
+ }
115
+ ],
116
+ icon: "ph--plugs--regular",
117
+ disposition: "hidden"
118
+ }
119
+ }
120
+ ];
121
+ }
122
+ }),
123
+ (0, import_plugin_graph.createExtension)({
124
+ id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/object-chat-companion`,
125
+ filter: (node) => (0, import_echo.isReactiveObject)(node.data) && node.data.assistantChatQueue && node.data.type !== import_chunk_APRU3QWK.AIChatType.typename,
126
+ connector: ({ node }) => [
127
+ {
128
+ id: [
129
+ node.id,
130
+ "assistant-chat"
131
+ ].join(import_types.ATTENDABLE_PATH_SEPARATOR),
132
+ type: import_types.PLANK_COMPANION_TYPE,
133
+ data: "assistant-chat",
134
+ properties: {
135
+ label: [
136
+ "assistant chat label",
137
+ {
138
+ ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
139
+ }
140
+ ],
141
+ icon: "ph--star-four--regular",
142
+ position: "hoist"
143
+ }
144
+ }
145
+ ]
146
+ }),
147
+ (0, import_plugin_graph.createExtension)({
148
+ id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/root`,
149
+ filter: (node) => (0, import_echo.isSpace)(node.data),
150
+ connector: ({ node }) => {
151
+ const templates = (0, import_plugin_space.memoizeQuery)(node.data, import_echo.Filter.schema(import_chunk_APRU3QWK.TemplateType));
152
+ return templates.length > 0 ? [
153
+ {
154
+ id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
155
+ type: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
156
+ data: null,
157
+ properties: {
158
+ label: [
159
+ "templates label",
160
+ {
161
+ ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
162
+ }
163
+ ],
164
+ icon: "ph--file-code--regular",
165
+ space: node.data
166
+ }
167
+ }
168
+ ] : [];
169
+ }
170
+ }),
171
+ (0, import_plugin_graph.createExtension)({
172
+ id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
173
+ filter: (node) => node.id === `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
174
+ connector: ({ node }) => {
175
+ const templates = (0, import_plugin_space.memoizeQuery)(node.properties.space, import_echo.Filter.schema(import_chunk_APRU3QWK.TemplateType));
176
+ return templates.toSorted((a, b) => {
177
+ const nameA = a.name ?? "";
178
+ const nameB = b.name ?? "";
179
+ return nameA.localeCompare(nameB);
180
+ }).map((template) => ({
181
+ id: (0, import_echo.fullyQualifiedId)(template),
182
+ type: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/template`,
183
+ data: template,
184
+ properties: {
185
+ label: template.name ?? [
186
+ "template title placeholder",
187
+ {
188
+ ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
189
+ }
190
+ ],
191
+ icon: "ph--file-code--regular"
192
+ }
193
+ }));
194
+ }
195
+ })
196
+ ]);
197
+ var getOrCreateChat = async (dispatch, space) => {
198
+ const { objects } = await space.db.query(import_echo.Filter.schema(import_chunk_APRU3QWK.AIChatType)).run();
199
+ if (objects.length > 0) {
200
+ return objects[objects.length - 1];
201
+ }
202
+ const { data } = await dispatch((0, import_app_framework.createIntent)(import_chunk_APRU3QWK.AssistantAction.CreateChat, {
203
+ spaceId: space.id
204
+ }));
205
+ (0, import_invariant.invariant)(data?.object instanceof import_chunk_APRU3QWK.AIChatType, void 0, {
206
+ F: __dxlog_file,
207
+ L: 192,
208
+ S: void 0,
209
+ A: [
210
+ "data?.object instanceof AIChatType",
211
+ ""
212
+ ]
213
+ });
214
+ await dispatch((0, import_app_framework.createIntent)(import_types2.SpaceAction.AddObject, {
215
+ target: space,
216
+ object: data.object
217
+ }));
218
+ return data.object;
219
+ };
220
+ //# sourceMappingURL=app-graph-builder-N5ZUUI2Z.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginsContext,\n} from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension, type Node, ROOT_ID } from '@dxos/plugin-graph';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport {\n type Space,\n Filter,\n fullyQualifiedId,\n getSpace,\n isSpace,\n isReactiveObject,\n parseId,\n} from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, TemplateType } from '../types';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${ASSISTANT_PLUGIN}/assistant`,\n filter: (node): node is Node<null> => node.id === ROOT_ID,\n actions: () => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const layout = context.requestCapability(Capabilities.Layout);\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n\n // TODO(burdon): Get space from workspace.\n // TODO(burdon): If need to create chat, then add to dispatch stack below.\n let chat: AIChatType | undefined;\n if (layout.active.length > 0) {\n const node = graph.findNode(layout.active[0]);\n if (node) {\n const space = getSpace(node.data);\n if (space) {\n chat = await getOrCreateChat(dispatch, space);\n }\n }\n } else {\n const space = client.spaces.default;\n chat = await getOrCreateChat(dispatch, space);\n }\n\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--star-four--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ],\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/service-registry`,\n filter: (node): node is Node<null> => node.id === 'root',\n connector: ({ node }) => {\n const layout = context.requestCapability(Capabilities.Layout);\n const client = context.requestCapability(ClientCapabilities.Client);\n const { spaceId } = parseId(layout.workspace);\n const space = spaceId ? client.spaces.get(spaceId) : null;\n\n return [\n {\n id: [node.id, 'service-registry'].join(ATTENDABLE_PATH_SEPARATOR),\n type: DECK_COMPANION_TYPE,\n data: space,\n properties: {\n label: ['service registry label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--plugs--regular',\n disposition: 'hidden',\n },\n },\n ];\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/object-chat-companion`,\n filter: (node): node is Node<AIChatType> =>\n isReactiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename,\n connector: ({ node }) => [\n {\n id: [node.id, 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--star-four--regular',\n position: 'hoist',\n },\n },\n ],\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/root`,\n filter: (node): node is Node<Space> => isSpace(node.data),\n connector: ({ node }) => {\n const templates = memoizeQuery(node.data, Filter.schema(TemplateType));\n return templates.length > 0\n ? [\n {\n id: `${ASSISTANT_PLUGIN}/templates`,\n type: `${ASSISTANT_PLUGIN}/templates`,\n data: null,\n properties: {\n label: ['templates label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n space: node.data,\n },\n },\n ]\n : [];\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/templates`,\n filter: (node): node is Node<null, { space: Space }> => node.id === `${ASSISTANT_PLUGIN}/templates`,\n connector: ({ node }) => {\n const templates = memoizeQuery(node.properties.space, Filter.schema(TemplateType));\n return templates\n .toSorted((a, b) => {\n const nameA = a.name ?? '';\n const nameB = b.name ?? '';\n return nameA.localeCompare(nameB);\n })\n .map((template) => ({\n id: fullyQualifiedId(template),\n type: `${ASSISTANT_PLUGIN}/template`,\n data: template,\n properties: {\n label: template.name ?? ['template title placeholder', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n },\n }));\n },\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (dispatch: PromiseIntentDispatcher, space: Space): Promise<AIChatType | undefined> => {\n const { objects } = await space.db.query(Filter.schema(AIChatType)).run();\n // console.log('objects', JSON.stringify(objects, null, 2));\n if (objects.length > 0) {\n // TODO(burdon): Is this the most recent?\n return objects[objects.length - 1];\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { spaceId: space.id }));\n invariant(data?.object instanceof AIChatType);\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_types", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "ASSISTANT_PLUGIN", "filter", "node", "ROOT_ID", "actions", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "layout", "Layout", "graph", "AppGraph", "chat", "active", "length", "findNode", "space", "getSpace", "getOrCreateChat", "spaces", "default", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "connector", "spaceId", "parseId", "workspace", "get", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "DECK_COMPANION_TYPE", "isReactiveObject", "assistantChatQueue", "AIChatType", "typename", "PLANK_COMPANION_TYPE", "isSpace", "templates", "memoizeQuery", "Filter", "schema", "TemplateType", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "map", "template", "fullyQualifiedId", "objects", "db", "query", "run", "AssistantAction", "CreateChat", "invariant", "object", "SpaceAction", "AddObject", "target"]
7
+ }