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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/dist/lib/browser/{AssistantDialog-TX6YYBUG.mjs → AssistantDialog-L5RHNMU4.mjs} +6 -5
  2. package/dist/lib/browser/{AssistantDialog-TX6YYBUG.mjs.map → AssistantDialog-L5RHNMU4.mjs.map} +3 -3
  3. package/dist/lib/browser/{ChatContainer-AT3OAUT3.mjs → ChatContainer-EEEVE62F.mjs} +5 -5
  4. package/dist/lib/browser/TemplateContainer-7IQ6V5AD.mjs +78 -0
  5. package/dist/lib/browser/TemplateContainer-7IQ6V5AD.mjs.map +7 -0
  6. package/dist/lib/browser/ai-client-BAPVMSNX.mjs +35 -0
  7. package/dist/lib/browser/ai-client-BAPVMSNX.mjs.map +7 -0
  8. package/dist/lib/browser/{app-graph-builder-AXAIFOGV.mjs → app-graph-builder-DTCUWBKB.mjs} +57 -13
  9. package/dist/lib/browser/app-graph-builder-DTCUWBKB.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-G7B54APW.mjs → chunk-5RMJYOT7.mjs} +34 -12
  11. package/dist/lib/browser/chunk-5RMJYOT7.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-EUMPBC4T.mjs → chunk-6FTPLBSC.mjs} +2 -2
  13. package/dist/lib/browser/{chunk-NV7SVHMV.mjs → chunk-AF7VQAKS.mjs} +1 -1
  14. package/dist/lib/browser/{chunk-NV7SVHMV.mjs.map → chunk-AF7VQAKS.mjs.map} +2 -2
  15. package/dist/lib/browser/{chunk-VZ4W6SHE.mjs → chunk-SVUCJXGN.mjs} +2 -2
  16. package/dist/lib/browser/chunk-SVUCJXGN.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-FRIKXDDQ.mjs → chunk-X6ALDUA5.mjs} +26 -4
  18. package/dist/lib/browser/chunk-X6ALDUA5.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-NFVIZS3B.mjs → chunk-XFUCWOMV.mjs} +287 -70
  20. package/dist/lib/browser/chunk-XFUCWOMV.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +21 -11
  22. package/dist/lib/browser/index.mjs.map +3 -3
  23. package/dist/lib/browser/{intent-resolver-QRVRZL6K.mjs → intent-resolver-U57FXP3I.mjs} +6 -3
  24. package/dist/lib/browser/{intent-resolver-QRVRZL6K.mjs.map → intent-resolver-U57FXP3I.mjs.map} +3 -3
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/{react-surface-JLXNWOI6.mjs → react-surface-KFLHNDNR.mjs} +10 -9
  27. package/dist/lib/browser/react-surface-KFLHNDNR.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-JTT62IHD.mjs → settings-VAW6UWFL.mjs} +3 -3
  29. package/dist/lib/browser/types/index.mjs +6 -2
  30. package/dist/lib/node/{AssistantDialog-U4GBPZD6.cjs → AssistantDialog-VIB7GPQN.cjs} +12 -11
  31. package/dist/lib/node/{AssistantDialog-U4GBPZD6.cjs.map → AssistantDialog-VIB7GPQN.cjs.map} +3 -3
  32. package/dist/lib/node/{ChatContainer-CVHXNHGA.cjs → ChatContainer-BPI3GEZS.cjs} +10 -10
  33. package/dist/lib/node/TemplateContainer-VPAZRFQA.cjs +104 -0
  34. package/dist/lib/node/TemplateContainer-VPAZRFQA.cjs.map +7 -0
  35. package/dist/lib/node/{ai-client-YANJEPO3.cjs → ai-client-5ESLYXAV.cjs} +19 -8
  36. package/dist/lib/node/ai-client-5ESLYXAV.cjs.map +7 -0
  37. package/dist/lib/node/{app-graph-builder-D7SHQTZS.cjs → app-graph-builder-3P6WSON2.cjs} +63 -20
  38. package/dist/lib/node/app-graph-builder-3P6WSON2.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-37GI4NYH.cjs → chunk-KLSNCP34.cjs} +33 -9
  40. package/dist/lib/node/chunk-KLSNCP34.cjs.map +7 -0
  41. package/dist/lib/node/{chunk-NV4TQQSU.cjs → chunk-N3SW6DJ6.cjs} +6 -6
  42. package/dist/lib/node/{chunk-XUTDR7HI.cjs → chunk-OJJ4F6KP.cjs} +291 -78
  43. package/dist/lib/node/chunk-OJJ4F6KP.cjs.map +7 -0
  44. package/dist/lib/node/{chunk-GNPXCHFT.cjs → chunk-U6J2GO7I.cjs} +4 -4
  45. package/dist/lib/node/{chunk-GNPXCHFT.cjs.map → chunk-U6J2GO7I.cjs.map} +2 -2
  46. package/dist/lib/node/{chunk-ZGH6F5YA.cjs → chunk-VRXFIS4X.cjs} +6 -6
  47. package/dist/lib/node/chunk-VRXFIS4X.cjs.map +7 -0
  48. package/dist/lib/node/{chunk-IXJCGW7U.cjs → chunk-WFVOWPKV.cjs} +40 -18
  49. package/dist/lib/node/chunk-WFVOWPKV.cjs.map +7 -0
  50. package/dist/lib/node/index.cjs +73 -63
  51. package/dist/lib/node/index.cjs.map +3 -3
  52. package/dist/lib/node/{intent-resolver-YMMAFVOB.cjs → intent-resolver-YIFAMM3B.cjs} +13 -10
  53. package/dist/lib/node/{intent-resolver-YMMAFVOB.cjs.map → intent-resolver-YIFAMM3B.cjs.map} +3 -3
  54. package/dist/lib/node/meta.json +1 -1
  55. package/dist/lib/node/{react-surface-BSUZQ3HZ.cjs → react-surface-REI6G6B3.cjs} +25 -24
  56. package/dist/lib/node/react-surface-REI6G6B3.cjs.map +7 -0
  57. package/dist/lib/node/{settings-4YEO7KXF.cjs → settings-2FEYGLYU.cjs} +8 -8
  58. package/dist/lib/node/types/index.cjs +15 -11
  59. package/dist/lib/node/types/index.cjs.map +2 -2
  60. package/dist/lib/node-esm/{AssistantDialog-5AT5JAZL.mjs → AssistantDialog-R3EPF2KL.mjs} +6 -5
  61. package/dist/lib/node-esm/{AssistantDialog-5AT5JAZL.mjs.map → AssistantDialog-R3EPF2KL.mjs.map} +3 -3
  62. package/dist/lib/node-esm/{ChatContainer-VR766C4M.mjs → ChatContainer-UJ7MV7GU.mjs} +5 -5
  63. package/dist/lib/node-esm/TemplateContainer-YLA6BJY6.mjs +79 -0
  64. package/dist/lib/node-esm/TemplateContainer-YLA6BJY6.mjs.map +7 -0
  65. package/dist/lib/node-esm/ai-client-XYZ5N7CR.mjs +36 -0
  66. package/dist/lib/node-esm/ai-client-XYZ5N7CR.mjs.map +7 -0
  67. package/dist/lib/node-esm/{app-graph-builder-H2GC2AZA.mjs → app-graph-builder-PMAQLTTN.mjs} +57 -13
  68. package/dist/lib/node-esm/app-graph-builder-PMAQLTTN.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-77ARTFBA.mjs → chunk-2CIYX3SD.mjs} +2 -2
  70. package/dist/lib/node-esm/chunk-2CIYX3SD.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-AMQMVQJO.mjs → chunk-6GBMQIW7.mjs} +34 -12
  72. package/dist/lib/node-esm/chunk-6GBMQIW7.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-7JENJTLB.mjs → chunk-AMTHOYNB.mjs} +287 -70
  74. package/dist/lib/node-esm/chunk-AMTHOYNB.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs → chunk-J63VQFQO.mjs} +2 -2
  76. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs → chunk-N6BVC2C2.mjs} +1 -1
  77. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs.map → chunk-N6BVC2C2.mjs.map} +2 -2
  78. package/dist/lib/node-esm/{chunk-CJ4Y3QW5.mjs → chunk-NMMRHHAR.mjs} +26 -4
  79. package/dist/lib/node-esm/chunk-NMMRHHAR.mjs.map +7 -0
  80. package/dist/lib/node-esm/index.mjs +21 -11
  81. package/dist/lib/node-esm/index.mjs.map +3 -3
  82. package/dist/lib/node-esm/{intent-resolver-MR7BOKEW.mjs → intent-resolver-SQ4HLL5L.mjs} +6 -3
  83. package/dist/lib/node-esm/{intent-resolver-MR7BOKEW.mjs.map → intent-resolver-SQ4HLL5L.mjs.map} +3 -3
  84. package/dist/lib/node-esm/meta.json +1 -1
  85. package/dist/lib/node-esm/{react-surface-IGVYAOGL.mjs → react-surface-LE57AGPI.mjs} +10 -9
  86. package/dist/lib/node-esm/react-surface-LE57AGPI.mjs.map +7 -0
  87. package/dist/lib/node-esm/{settings-S7P5RWQI.mjs → settings-VHR5KT4J.mjs} +3 -3
  88. package/dist/lib/node-esm/types/index.mjs +6 -2
  89. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/ai-client.d.ts +2 -2
  91. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/capabilities.d.ts +3 -2
  94. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/index.d.ts +1 -1
  96. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  98. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +2 -2
  99. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  100. package/dist/types/src/components/AssistantDialog.d.ts.map +1 -1
  101. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +2 -1
  102. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  103. package/dist/types/src/components/ChatContainer.d.ts +2 -1
  104. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  105. package/dist/types/src/components/Prompt/Prompt.d.ts +3 -0
  106. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
  107. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +1 -0
  108. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/Prompt/PromptBar.d.ts +3 -2
  110. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  111. package/dist/types/src/components/Prompt/references.d.ts +30 -0
  112. package/dist/types/src/components/Prompt/references.d.ts.map +1 -0
  113. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +2 -1
  114. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +1 -1
  115. package/dist/types/src/components/TemplateContainer.d.ts +2 -1
  116. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  117. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  118. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  119. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +2 -1
  120. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +3 -2
  122. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  123. package/dist/types/src/components/Thread/Thread.d.ts +12 -1
  124. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  125. package/dist/types/src/components/Thread/ThreadContainer.d.ts +1 -0
  126. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  127. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -1
  128. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  130. package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -3
  131. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  132. package/dist/types/src/components/index.d.ts +2 -2
  133. package/dist/types/src/components/index.d.ts.map +1 -1
  134. package/dist/types/src/hooks/index.d.ts +1 -0
  135. package/dist/types/src/hooks/index.d.ts.map +1 -1
  136. package/dist/types/src/hooks/invocation-handler.d.ts +1 -1
  137. package/dist/types/src/hooks/invocation-handler.d.ts.map +1 -1
  138. package/dist/types/src/hooks/processor.d.ts +8 -5
  139. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  140. package/dist/types/src/hooks/useChatProcessor.d.ts +9 -2
  141. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  142. package/dist/types/src/hooks/useContextProvider.d.ts +17 -0
  143. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -0
  144. package/dist/types/src/hooks/useMessageQueue.d.ts +4 -4
  145. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  146. package/dist/types/src/meta.d.ts +2 -8
  147. package/dist/types/src/meta.d.ts.map +1 -1
  148. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  149. package/dist/types/src/tools/function.d.ts +1 -1
  150. package/dist/types/src/tools/function.d.ts.map +1 -1
  151. package/dist/types/src/translations.d.ts +21 -6
  152. package/dist/types/src/translations.d.ts.map +1 -1
  153. package/dist/types/src/types/service.d.ts +1 -1
  154. package/dist/types/src/types/service.d.ts.map +1 -1
  155. package/dist/types/src/types/template.d.ts +36 -0
  156. package/dist/types/src/types/template.d.ts.map +1 -1
  157. package/dist/types/src/types/types.d.ts +3 -1
  158. package/dist/types/src/types/types.d.ts.map +1 -1
  159. package/package.json +56 -56
  160. package/src/AssistantPlugin.tsx +11 -2
  161. package/src/capabilities/ai-client.ts +23 -4
  162. package/src/capabilities/app-graph-builder.ts +48 -4
  163. package/src/capabilities/capabilities.ts +4 -2
  164. package/src/capabilities/intent-resolver.ts +1 -1
  165. package/src/capabilities/react-surface.tsx +3 -2
  166. package/src/components/AssistantDialog.tsx +7 -1
  167. package/src/components/AssistantSettings/AssistantSettings.tsx +39 -5
  168. package/src/components/Prompt/Prompt.stories.tsx +34 -0
  169. package/src/components/Prompt/Prompt.tsx +9 -2
  170. package/src/components/Prompt/PromptBar.tsx +18 -7
  171. package/src/components/Prompt/references.ts +180 -0
  172. package/src/components/TemplateContainer.tsx +79 -4
  173. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +1 -1
  174. package/src/components/TemplateEditor/TemplateForm.stories.tsx +1 -1
  175. package/src/components/TemplateEditor/TemplateForm.tsx +1 -1
  176. package/src/components/Thread/Thread.tsx +21 -0
  177. package/src/components/Thread/ThreadContainer.stories.tsx +5 -8
  178. package/src/components/Thread/ThreadContainer.tsx +7 -4
  179. package/src/components/Thread/ThreadMessage.tsx +17 -9
  180. package/src/components/Toolbox/Toolbox.tsx +1 -1
  181. package/src/components/index.ts +3 -0
  182. package/src/hooks/index.ts +1 -0
  183. package/src/hooks/invocation-handler.ts +3 -5
  184. package/src/hooks/processor.ts +18 -9
  185. package/src/hooks/useChatProcessor.tsx +24 -15
  186. package/src/hooks/useContextProvider.ts +55 -0
  187. package/src/hooks/useLocalTriggerManager.ts +1 -1
  188. package/src/hooks/useMessageQueue.ts +2 -4
  189. package/src/meta.ts +2 -2
  190. package/src/testing/test-functions.ts +2 -2
  191. package/src/tools/function.ts +2 -2
  192. package/src/tools/openapi.test.ts +4 -4
  193. package/src/translations.ts +8 -3
  194. package/src/types/service.ts +1 -1
  195. package/src/types/template.ts +22 -0
  196. package/src/types/types.ts +3 -1
  197. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs +0 -23
  198. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs.map +0 -7
  199. package/dist/lib/browser/ai-client-RTCGRKZE.mjs +0 -22
  200. package/dist/lib/browser/ai-client-RTCGRKZE.mjs.map +0 -7
  201. package/dist/lib/browser/app-graph-builder-AXAIFOGV.mjs.map +0 -7
  202. package/dist/lib/browser/chunk-FRIKXDDQ.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-G7B54APW.mjs.map +0 -7
  204. package/dist/lib/browser/chunk-NFVIZS3B.mjs.map +0 -7
  205. package/dist/lib/browser/chunk-VZ4W6SHE.mjs.map +0 -7
  206. package/dist/lib/browser/react-surface-JLXNWOI6.mjs.map +0 -7
  207. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs +0 -53
  208. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs.map +0 -7
  209. package/dist/lib/node/ai-client-YANJEPO3.cjs.map +0 -7
  210. package/dist/lib/node/app-graph-builder-D7SHQTZS.cjs.map +0 -7
  211. package/dist/lib/node/chunk-37GI4NYH.cjs.map +0 -7
  212. package/dist/lib/node/chunk-IXJCGW7U.cjs.map +0 -7
  213. package/dist/lib/node/chunk-XUTDR7HI.cjs.map +0 -7
  214. package/dist/lib/node/chunk-ZGH6F5YA.cjs.map +0 -7
  215. package/dist/lib/node/react-surface-BSUZQ3HZ.cjs.map +0 -7
  216. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs +0 -24
  217. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs.map +0 -7
  218. package/dist/lib/node-esm/ai-client-66IBZVCX.mjs +0 -23
  219. package/dist/lib/node-esm/ai-client-66IBZVCX.mjs.map +0 -7
  220. package/dist/lib/node-esm/app-graph-builder-H2GC2AZA.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-77ARTFBA.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-7JENJTLB.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-AMQMVQJO.mjs.map +0 -7
  224. package/dist/lib/node-esm/chunk-CJ4Y3QW5.mjs.map +0 -7
  225. package/dist/lib/node-esm/react-surface-IGVYAOGL.mjs.map +0 -7
  226. /package/dist/lib/browser/{ChatContainer-AT3OAUT3.mjs.map → ChatContainer-EEEVE62F.mjs.map} +0 -0
  227. /package/dist/lib/browser/{chunk-EUMPBC4T.mjs.map → chunk-6FTPLBSC.mjs.map} +0 -0
  228. /package/dist/lib/browser/{settings-JTT62IHD.mjs.map → settings-VAW6UWFL.mjs.map} +0 -0
  229. /package/dist/lib/node/{ChatContainer-CVHXNHGA.cjs.map → ChatContainer-BPI3GEZS.cjs.map} +0 -0
  230. /package/dist/lib/node/{chunk-NV4TQQSU.cjs.map → chunk-N3SW6DJ6.cjs.map} +0 -0
  231. /package/dist/lib/node/{settings-4YEO7KXF.cjs.map → settings-2FEYGLYU.cjs.map} +0 -0
  232. /package/dist/lib/node-esm/{ChatContainer-VR766C4M.mjs.map → ChatContainer-UJ7MV7GU.mjs.map} +0 -0
  233. /package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs.map → chunk-J63VQFQO.mjs.map} +0 -0
  234. /package/dist/lib/node-esm/{settings-S7P5RWQI.mjs.map → settings-VHR5KT4J.mjs.map} +0 -0
@@ -18,19 +18,21 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var types_exports = {};
20
20
  __export(types_exports, {
21
- AIChatType: () => import_chunk_37GI4NYH.AIChatType,
22
- ApiAuthorization: () => import_chunk_37GI4NYH.ApiAuthorization,
23
- AssistantAction: () => import_chunk_37GI4NYH.AssistantAction,
24
- AssistantSettingsSchema: () => import_chunk_37GI4NYH.AssistantSettingsSchema,
25
- ServiceType: () => import_chunk_37GI4NYH.ServiceType,
26
- TemplateInputSchema: () => import_chunk_37GI4NYH.TemplateInputSchema,
27
- TemplateInputType: () => import_chunk_37GI4NYH.TemplateInputType,
28
- TemplateType: () => import_chunk_37GI4NYH.TemplateType,
29
- categoryIcons: () => import_chunk_37GI4NYH.categoryIcons
21
+ AIChatType: () => import_chunk_KLSNCP34.AIChatType,
22
+ ApiAuthorization: () => import_chunk_KLSNCP34.ApiAuthorization,
23
+ AssistantAction: () => import_chunk_KLSNCP34.AssistantAction,
24
+ AssistantSettingsSchema: () => import_chunk_KLSNCP34.AssistantSettingsSchema,
25
+ ServiceType: () => import_chunk_KLSNCP34.ServiceType,
26
+ TemplateInputSchema: () => import_chunk_KLSNCP34.TemplateInputSchema,
27
+ TemplateInputType: () => import_chunk_KLSNCP34.TemplateInputType,
28
+ TemplateKindSchema: () => import_chunk_KLSNCP34.TemplateKindSchema,
29
+ TemplateKinds: () => import_chunk_KLSNCP34.TemplateKinds,
30
+ TemplateType: () => import_chunk_KLSNCP34.TemplateType,
31
+ categoryIcons: () => import_chunk_KLSNCP34.categoryIcons
30
32
  });
31
33
  module.exports = __toCommonJS(types_exports);
32
- var import_chunk_37GI4NYH = require("../chunk-37GI4NYH.cjs");
33
- var import_chunk_GNPXCHFT = require("../chunk-GNPXCHFT.cjs");
34
+ var import_chunk_KLSNCP34 = require("../chunk-KLSNCP34.cjs");
35
+ var import_chunk_U6J2GO7I = require("../chunk-U6J2GO7I.cjs");
34
36
  // Annotate the CommonJS export names for ESM import in node:
35
37
  0 && (module.exports = {
36
38
  AIChatType,
@@ -40,6 +42,8 @@ var import_chunk_GNPXCHFT = require("../chunk-GNPXCHFT.cjs");
40
42
  ServiceType,
41
43
  TemplateInputSchema,
42
44
  TemplateInputType,
45
+ TemplateKindSchema,
46
+ TemplateKinds,
43
47
  TemplateType,
44
48
  categoryIcons
45
49
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["index.cjs"],
4
- "sourcesContent": ["import {\n AIChatType,\n ApiAuthorization,\n AssistantAction,\n AssistantSettingsSchema,\n ServiceType,\n TemplateInputSchema,\n TemplateInputType,\n TemplateType,\n categoryIcons\n} from \"../chunk-37GI4NYH.cjs\";\nimport \"../chunk-GNPXCHFT.cjs\";\nexport {\n AIChatType,\n ApiAuthorization,\n AssistantAction,\n AssistantSettingsSchema,\n ServiceType,\n TemplateInputSchema,\n TemplateInputType,\n TemplateType,\n categoryIcons\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAUO;AACP,4BAAO;",
4
+ "sourcesContent": ["import {\n AIChatType,\n ApiAuthorization,\n AssistantAction,\n AssistantSettingsSchema,\n ServiceType,\n TemplateInputSchema,\n TemplateInputType,\n TemplateKindSchema,\n TemplateKinds,\n TemplateType,\n categoryIcons\n} from \"../chunk-KLSNCP34.cjs\";\nimport \"../chunk-U6J2GO7I.cjs\";\nexport {\n AIChatType,\n ApiAuthorization,\n AssistantAction,\n AssistantSettingsSchema,\n ServiceType,\n TemplateInputSchema,\n TemplateInputType,\n TemplateKindSchema,\n TemplateKinds,\n TemplateType,\n categoryIcons\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAYO;AACP,4BAAO;",
6
6
  "names": []
7
7
  }
@@ -1,12 +1,12 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ThreadContainer
4
- } from "./chunk-7JENJTLB.mjs";
5
- import "./chunk-77ARTFBA.mjs";
6
- import "./chunk-CJ4Y3QW5.mjs";
4
+ } from "./chunk-AMTHOYNB.mjs";
5
+ import "./chunk-2CIYX3SD.mjs";
6
+ import "./chunk-NMMRHHAR.mjs";
7
7
  import {
8
8
  ASSISTANT_PLUGIN
9
- } from "./chunk-7SV6X6XU.mjs";
9
+ } from "./chunk-N6BVC2C2.mjs";
10
10
 
11
11
  // packages/plugins/experimental/plugin-assistant/src/components/AssistantDialog.tsx
12
12
  import React2, { useState as useState2 } from "react";
@@ -106,6 +106,7 @@ var AssistantDialog = ({ chat }) => {
106
106
  chat,
107
107
  onOpenChange: setOpen,
108
108
  settings,
109
+ part: "dialog",
109
110
  transcription
110
111
  }));
111
112
  };
@@ -114,4 +115,4 @@ export {
114
115
  AssistantDialog,
115
116
  AssistantDialog_default as default
116
117
  };
117
- //# sourceMappingURL=AssistantDialog-5AT5JAZL.mjs.map
118
+ //# sourceMappingURL=AssistantDialog-R3EPF2KL.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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.Transcription).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 chat={chat} onOpenChange={setOpen} settings={settings} transcription={transcription} />\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\n// TODO(burdon): Factor out.\nexport const AmbientDialog = ({\n children,\n open: _open,\n title,\n onOpenChange,\n}: PropsWithChildren<{ open?: boolean; onOpenChange?: (open: boolean) => void; title?: string }>) => {\n const [resizeKey, setReizeKey] = useState(0);\n const [size, setSize] = useState<Size>('min-content');\n const [open, setOpen] = useState(_open);\n\n // Update controlled value.\n useEffect(() => {\n setOpen(_open);\n }, [_open]);\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) - 8rem)',\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": ["React", "useState", "useCapability", "Capabilities", "useCapabilities", "TranscriptionCapabilities", "useTranslation", "React", "useCallback", "useEffect", "useState", "Dialog", "Icon", "IconButton", "resizeAttributes", "ResizeHandle", "sizeStyle", "mx", "preventDefault", "event", "minSize", "AmbientDialog", "children", "open", "_open", "title", "onOpenChange", "resizeKey", "setReizeKey", "useState", "size", "setSize", "setOpen", "useEffect", "key", "handleToggle", "useCallback", "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", "Transcription", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "value", "open", "setOpen", "useState", "React", "AmbientDialog", "onOpenChange", "title", "ThreadContainer"]
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.Transcription).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\n// TODO(burdon): Factor out.\nexport const AmbientDialog = ({\n children,\n open: _open,\n title,\n onOpenChange,\n}: PropsWithChildren<{ open?: boolean; onOpenChange?: (open: boolean) => void; title?: string }>) => {\n const [resizeKey, setReizeKey] = useState(0);\n const [size, setSize] = useState<Size>('min-content');\n const [open, setOpen] = useState(_open);\n\n // Update controlled value.\n useEffect(() => {\n setOpen(_open);\n }, [_open]);\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) - 8rem)',\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": ["React", "useState", "useCapability", "Capabilities", "useCapabilities", "TranscriptionCapabilities", "useTranslation", "React", "useCallback", "useEffect", "useState", "Dialog", "Icon", "IconButton", "resizeAttributes", "ResizeHandle", "sizeStyle", "mx", "preventDefault", "event", "minSize", "AmbientDialog", "children", "open", "_open", "title", "onOpenChange", "resizeKey", "setReizeKey", "useState", "size", "setSize", "setOpen", "useEffect", "key", "handleToggle", "useCallback", "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", "Transcription", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "value", "open", "setOpen", "useState", "React", "AmbientDialog", "onOpenChange", "title", "ThreadContainer", "part"]
7
7
  }
@@ -1,12 +1,12 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ThreadContainer
4
- } from "./chunk-7JENJTLB.mjs";
5
- import "./chunk-77ARTFBA.mjs";
6
- import "./chunk-CJ4Y3QW5.mjs";
4
+ } from "./chunk-AMTHOYNB.mjs";
5
+ import "./chunk-2CIYX3SD.mjs";
6
+ import "./chunk-NMMRHHAR.mjs";
7
7
  import {
8
8
  ASSISTANT_PLUGIN
9
- } from "./chunk-7SV6X6XU.mjs";
9
+ } from "./chunk-N6BVC2C2.mjs";
10
10
 
11
11
  // packages/plugins/experimental/plugin-assistant/src/components/ChatContainer.tsx
12
12
  import React from "react";
@@ -31,4 +31,4 @@ export {
31
31
  ChatContainer,
32
32
  ChatContainer_default as default
33
33
  };
34
- //# sourceMappingURL=ChatContainer-VR766C4M.mjs.map
34
+ //# sourceMappingURL=ChatContainer-UJ7MV7GU.mjs.map
@@ -0,0 +1,79 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ TemplateEditor
4
+ } from "./chunk-J63VQFQO.mjs";
5
+ import {
6
+ TemplateKinds
7
+ } from "./chunk-NMMRHHAR.mjs";
8
+ import {
9
+ ASSISTANT_PLUGIN
10
+ } from "./chunk-N6BVC2C2.mjs";
11
+
12
+ // packages/plugins/experimental/plugin-assistant/src/components/TemplateContainer.tsx
13
+ import { Match } from "effect";
14
+ import React, { useCallback } from "react";
15
+ import { debounce } from "@dxos/async";
16
+ import { Input, Select, Toolbar, useTranslation } from "@dxos/react-ui";
17
+ import { StackItem } from "@dxos/react-ui-stack";
18
+ var TemplateContainer = ({ template, role }) => {
19
+ const { t } = useTranslation(ASSISTANT_PLUGIN);
20
+ const handleKindChange = useCallback((value) => {
21
+ const kind = Match.type().pipe(Match.withReturnType(), Match.when("always", () => ({
22
+ include: "always"
23
+ })), Match.when("schema-matching", () => ({
24
+ include: "schema-matching",
25
+ typename: ""
26
+ })), Match.when("automatically", () => ({
27
+ include: "automatically",
28
+ description: ""
29
+ })), Match.orElse(() => ({
30
+ include: "manual"
31
+ })))(value);
32
+ template.kind = kind;
33
+ }, [
34
+ template
35
+ ]);
36
+ const handleTypenameChange = useCallback(debounce((event) => {
37
+ if (template.kind.include === "schema-matching") {
38
+ template.kind.typename = event.target.value;
39
+ }
40
+ }, 300), [
41
+ template.kind.include
42
+ ]);
43
+ const handleDescriptionChange = useCallback(debounce((event) => {
44
+ if (template.kind.include === "automatically") {
45
+ template.kind.description = event.target.value;
46
+ }
47
+ }, 300), [
48
+ template.kind.include
49
+ ]);
50
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
51
+ toolbar: true,
52
+ role,
53
+ classNames: "mli-auto w-full max-w-[50rem]"
54
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(Select.Root, {
55
+ value: template.kind.include,
56
+ onValueChange: handleKindChange
57
+ }, /* @__PURE__ */ React.createElement(Toolbar.Button, {
58
+ asChild: true
59
+ }, /* @__PURE__ */ React.createElement(Select.TriggerButton, null)), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, TemplateKinds.map((kind) => /* @__PURE__ */ React.createElement(Select.Option, {
60
+ key: kind,
61
+ value: kind
62
+ }, kind)))))), template.kind.include === "schema-matching" && /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
63
+ placeholder: t("typename placeholder"),
64
+ defaultValue: template.kind.typename,
65
+ onChange: handleTypenameChange
66
+ })), template.kind.include === "automatically" && /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
67
+ placeholder: t("description placeholder"),
68
+ defaultValue: template.kind.description,
69
+ onChange: handleDescriptionChange
70
+ }))), /* @__PURE__ */ React.createElement(TemplateEditor, {
71
+ template
72
+ }));
73
+ };
74
+ var TemplateContainer_default = TemplateContainer;
75
+ export {
76
+ TemplateContainer,
77
+ TemplateContainer_default as default
78
+ };
79
+ //# sourceMappingURL=TemplateContainer-YLA6BJY6.mjs.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 toolbar role={role} classNames='mli-auto w-full max-w-[50rem]'>\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,SAASA,aAA+B;AACxC,OAAOC,SAA2BC,mBAAmB;AAErD,SAASC,gBAAgB;AACzB,SAASC,OAAOC,QAAQC,SAASC,sBAAsB;AACvD,SAASC,iBAAiB;AAMnB,IAAMC,oBAAoB,CAAC,EAAEC,UAAUC,KAAI,MAA4C;AAC5F,QAAM,EAAEC,EAAC,IAAKC,eAAeC,gBAAAA;AAE7B,QAAMC,mBAAmBC,YACvB,CAACC,UAAAA;AACC,UAAMC,OAAOC,MAAMC,KAAI,EAAWC,KAChCF,MAAMG,eAAc,GACpBH,MAAMI,KAAK,UAAU,OAAO;MAAEC,SAAS;IAAS,EAAA,GAChDL,MAAMI,KAAK,mBAAmB,OAAO;MAAEC,SAAS;MAAmBC,UAAU;IAAG,EAAA,GAChFN,MAAMI,KAAK,iBAAiB,OAAO;MAAEC,SAAS;MAAiBE,aAAa;IAAG,EAAA,GAC/EP,MAAMQ,OAAO,OAAO;MAAEH,SAAS;IAAS,EAAA,CAAA,EACxCP,KAAAA;AAEFP,aAASQ,OAAOA;EAClB,GACA;IAACR;GAAS;AAGZ,QAAMkB,uBAAuBZ,YAC3Ba,SAAS,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,0BAA0BhB,YAC9Ba,SAAS,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,sBAAA,cAACS,UAAUC,SAAO;IAACC,SAAAA;IAAQxB;IAAYyB,YAAW;KAEhD,sBAAA,cAACC,QAAQC,MAAI,MACX,sBAAA,cAACC,OAAOD,MAAI;IAACrB,OAAOP,SAASQ,KAAKM;IAASgB,eAAezB;KACxD,sBAAA,cAACsB,QAAQI,QAAM;IAACC,SAAAA;KACd,sBAAA,cAACH,OAAOI,eAAa,IAAA,CAAA,GAEvB,sBAAA,cAACJ,OAAOK,QAAM,MACZ,sBAAA,cAACL,OAAOL,SAAO,MACb,sBAAA,cAACK,OAAOM,UAAQ,MACbC,cAAcC,IAAI,CAAC7B,SAClB,sBAAA,cAACqB,OAAOS,QAAM;IAACC,KAAK/B;IAAMD,OAAOC;KAC9BA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAOZR,SAASQ,KAAKM,YAAY,qBACzB,sBAAA,cAAC0B,MAAMZ,MAAI,MACT,sBAAA,cAACY,MAAMC,WAAS;IACdC,aAAaxC,EAAE,sBAAA;IACfyC,cAAc3C,SAASQ,KAAKO;IAC5B6B,UAAU1B;OAIflB,SAASQ,KAAKM,YAAY,mBACzB,sBAAA,cAAC0B,MAAMZ,MAAI,MACT,sBAAA,cAACY,MAAMC,WAAS;IACdC,aAAaxC,EAAE,yBAAA;IACfyC,cAAc3C,SAASQ,KAAKQ;IAC5B4B,UAAUtB;QAKlB,sBAAA,cAACuB,gBAAAA;IAAe7C;;AAGtB;AAEA,IAAA,4BAAeD;",
6
+ "names": ["Match", "React", "useCallback", "debounce", "Input", "Select", "Toolbar", "useTranslation", "StackItem", "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", "StackItem", "Content", "toolbar", "classNames", "Toolbar", "Root", "Select", "onValueChange", "Button", "asChild", "TriggerButton", "Portal", "Viewport", "TemplateKinds", "map", "Option", "key", "Input", "TextInput", "placeholder", "defaultValue", "onChange", "TemplateEditor"]
7
+ }
@@ -0,0 +1,36 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ AssistantCapabilities
4
+ } from "./chunk-2CIYX3SD.mjs";
5
+ import {
6
+ ASSISTANT_PLUGIN
7
+ } from "./chunk-N6BVC2C2.mjs";
8
+
9
+ // packages/plugins/experimental/plugin-assistant/src/capabilities/ai-client.ts
10
+ import { effect, signal } from "@preact/signals-core";
11
+ import { Capabilities, contributes } from "@dxos/app-framework";
12
+ import { AIServiceEdgeClient, OllamaClient } from "@dxos/assistant";
13
+ import { ClientCapabilities } from "@dxos/plugin-client";
14
+ var DEFAULT_AI_SERVICE_URL = "http://localhost:8788";
15
+ var ai_client_default = (context) => {
16
+ const client = context.requestCapability(ClientCapabilities.Client);
17
+ const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;
18
+ const ai = signal(new AIServiceEdgeClient({
19
+ endpoint
20
+ }));
21
+ const unsubscribe = effect(() => {
22
+ const settings = context.requestCapability(Capabilities.SettingsStore).getStore(ASSISTANT_PLUGIN)?.value;
23
+ if (settings?.llmProvider === "ollama") {
24
+ ai.value = new OllamaClient();
25
+ } else {
26
+ ai.value = new AIServiceEdgeClient({
27
+ endpoint
28
+ });
29
+ }
30
+ });
31
+ return contributes(AssistantCapabilities.AiClient, ai, () => unsubscribe());
32
+ };
33
+ export {
34
+ ai_client_default as default
35
+ };
36
+ //# sourceMappingURL=ai-client-XYZ5N7CR.mjs.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,SAASA,QAAQC,cAAc;AAE/B,SAASC,cAAcC,mBAAwC;AAC/D,SAA+BC,qBAAqBC,oBAAoB;AACxE,SAASC,0BAA0B;AAOnC,IAAMC,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,mBAAmBC,MAAM;AAClE,QAAMC,WAAWJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,IAAIC,UAAUZ;AAEvE,QAAMW,KAAKE,OAAwB,IAAIC,oBAAoB;IAAER;EAAS,CAAA,CAAA;AAEtE,QAAMS,cAAcC,OAAO,MAAA;AAEzB,UAAMC,WAAWhB,QACdE,kBAAkBe,aAAaC,aAAa,EAC5CC,SAAiCC,gBAAAA,GAAmBC;AAEvD,QAAIL,UAAUM,gBAAgB,UAAU;AACtCZ,SAAGW,QAAQ,IAAIE,aAAAA;IACjB,OAAO;AACLb,SAAGW,QAAQ,IAAIR,oBAAoB;QAAER;MAAS,CAAA;IAChD;EACF,CAAA;AAEA,SAAOmB,YAAYC,sBAAsBC,UAAUhB,IAAI,MAAMI,YAAAA,CAAAA;AAC/D;",
6
+ "names": ["effect", "signal", "Capabilities", "contributes", "AIServiceEdgeClient", "OllamaClient", "ClientCapabilities", "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
+ }
@@ -1,21 +1,22 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  AIChatType,
4
- AssistantAction
5
- } from "./chunk-CJ4Y3QW5.mjs";
4
+ AssistantAction,
5
+ TemplateType
6
+ } from "./chunk-NMMRHHAR.mjs";
6
7
  import {
7
8
  ASSISTANT_DIALOG,
8
9
  ASSISTANT_PLUGIN
9
- } from "./chunk-7SV6X6XU.mjs";
10
+ } from "./chunk-N6BVC2C2.mjs";
10
11
 
11
12
  // packages/plugins/experimental/plugin-assistant/src/capabilities/app-graph-builder.ts
12
13
  import { Capabilities, contributes, createIntent, LayoutAction } from "@dxos/app-framework";
13
14
  import { invariant } from "@dxos/invariant";
14
- import { log } from "@dxos/log";
15
15
  import { ClientCapabilities } from "@dxos/plugin-client";
16
16
  import { createExtension, ROOT_ID } from "@dxos/plugin-graph";
17
+ import { memoizeQuery } from "@dxos/plugin-space";
17
18
  import { SpaceAction } from "@dxos/plugin-space/types";
18
- import { Filter, getSpace } from "@dxos/react-client/echo";
19
+ import { Filter, fullyQualifiedId, getSpace, isSpace } from "@dxos/react-client/echo";
19
20
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/capabilities/app-graph-builder.ts";
20
21
  var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
21
22
  createExtension({
@@ -43,12 +44,6 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
43
44
  chat = await getOrCreateChat(dispatch, space);
44
45
  }
45
46
  if (!chat) {
46
- log.warn("no chat found", void 0, {
47
- F: __dxlog_file,
48
- L: 54,
49
- S: void 0,
50
- C: (f, a) => f(...a)
51
- });
52
47
  return;
53
48
  }
54
49
  await dispatch(createIntent(LayoutAction.UpdateDialog, {
@@ -80,6 +75,55 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
80
75
  }
81
76
  }
82
77
  ]
78
+ }),
79
+ createExtension({
80
+ id: `${ASSISTANT_PLUGIN}/root`,
81
+ filter: (node) => isSpace(node.data),
82
+ connector: ({ node }) => {
83
+ const templates = memoizeQuery(node.data, Filter.schema(TemplateType));
84
+ return templates.length > 0 ? [
85
+ {
86
+ id: `${ASSISTANT_PLUGIN}/templates`,
87
+ type: `${ASSISTANT_PLUGIN}/templates`,
88
+ data: null,
89
+ properties: {
90
+ label: [
91
+ "templates label",
92
+ {
93
+ ns: ASSISTANT_PLUGIN
94
+ }
95
+ ],
96
+ icon: "ph--file-code--regular",
97
+ space: node.data
98
+ }
99
+ }
100
+ ] : [];
101
+ }
102
+ }),
103
+ createExtension({
104
+ id: `${ASSISTANT_PLUGIN}/templates`,
105
+ filter: (node) => node.id === `${ASSISTANT_PLUGIN}/templates`,
106
+ connector: ({ node }) => {
107
+ const templates = memoizeQuery(node.properties.space, Filter.schema(TemplateType));
108
+ return templates.toSorted((a, b) => {
109
+ const nameA = a.name ?? "";
110
+ const nameB = b.name ?? "";
111
+ return nameA.localeCompare(nameB);
112
+ }).map((template) => ({
113
+ id: fullyQualifiedId(template),
114
+ type: `${ASSISTANT_PLUGIN}/template`,
115
+ data: template,
116
+ properties: {
117
+ label: template.name ?? [
118
+ "template title placeholder",
119
+ {
120
+ ns: ASSISTANT_PLUGIN
121
+ }
122
+ ],
123
+ icon: "ph--file-code--regular"
124
+ }
125
+ }));
126
+ }
83
127
  })
84
128
  ]);
85
129
  var getOrCreateChat = async (dispatch, space) => {
@@ -92,7 +136,7 @@ var getOrCreateChat = async (dispatch, space) => {
92
136
  }));
93
137
  invariant(data?.object instanceof AIChatType, void 0, {
94
138
  F: __dxlog_file,
95
- L: 97,
139
+ L: 141,
96
140
  S: void 0,
97
141
  A: [
98
142
  "data?.object instanceof AIChatType",
@@ -108,4 +152,4 @@ var getOrCreateChat = async (dispatch, space) => {
108
152
  export {
109
153
  app_graph_builder_default as default
110
154
  };
111
- //# sourceMappingURL=app-graph-builder-H2GC2AZA.mjs.map
155
+ //# sourceMappingURL=app-graph-builder-PMAQLTTN.mjs.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 { createExtension, type Node, ROOT_ID } from '@dxos/plugin-graph';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { type Space, Filter, fullyQualifiedId, getSpace, isSpace } 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--chat-centered-text--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}/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": ["Capabilities", "contributes", "createIntent", "LayoutAction", "invariant", "ClientCapabilities", "createExtension", "ROOT_ID", "memoizeQuery", "SpaceAction", "Filter", "fullyQualifiedId", "getSpace", "isSpace", "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", "isSpace", "connector", "templates", "memoizeQuery", "Filter", "schema", "TemplateType", "type", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "map", "template", "fullyQualifiedId", "objects", "db", "query", "AIChatType", "run", "AssistantAction", "CreateChat", "spaceId", "invariant", "object", "SpaceAction", "AddObject", "target"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ASSISTANT_PLUGIN
4
- } from "./chunk-7SV6X6XU.mjs";
4
+ } from "./chunk-N6BVC2C2.mjs";
5
5
 
6
6
  // packages/plugins/experimental/plugin-assistant/src/capabilities/capabilities.ts
7
7
  import { defineCapability } from "@dxos/app-framework";
@@ -13,4 +13,4 @@ var AssistantCapabilities;
13
13
  export {
14
14
  AssistantCapabilities
15
15
  };
16
- //# sourceMappingURL=chunk-77ARTFBA.mjs.map
16
+ //# sourceMappingURL=chunk-2CIYX3SD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/capabilities.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ReadonlySignal } from '@preact/signals-core';\n\nimport { defineCapability } from '@dxos/app-framework';\nimport { type AIServiceClient } from '@dxos/assistant';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\n\nexport namespace AssistantCapabilities {\n export const AiClient = defineCapability<ReadonlySignal<AIServiceClient>>(`${ASSISTANT_PLUGIN}/capability/ai-client`);\n}\n"],
5
+ "mappings": ";;;;;;AAMA,SAASA,wBAAwB;;UAKhBC,wBAAAA;yBACFC,WAAWC,iBAAkD,GAAGC,gBAAAA,uBAAuC;AACtH,GAFiBH,0BAAAA,wBAAAA,CAAAA,EAAAA;",
6
+ "names": ["defineCapability", "AssistantCapabilities", "AiClient", "defineCapability", "ASSISTANT_PLUGIN"]
7
+ }
@@ -1,20 +1,21 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  useServices
4
- } from "./chunk-7JENJTLB.mjs";
4
+ } from "./chunk-AMTHOYNB.mjs";
5
5
  import {
6
6
  ServiceType,
7
7
  categoryIcons
8
- } from "./chunk-CJ4Y3QW5.mjs";
8
+ } from "./chunk-NMMRHHAR.mjs";
9
9
  import {
10
10
  ASSISTANT_PLUGIN
11
- } from "./chunk-7SV6X6XU.mjs";
11
+ } from "./chunk-N6BVC2C2.mjs";
12
12
 
13
13
  // packages/plugins/experimental/plugin-assistant/src/components/AssistantSettings/AssistantSettings.tsx
14
14
  import React from "react";
15
- import { DEFAULT_LLM_MODELS } from "@dxos/assistant";
15
+ import { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from "@dxos/assistant";
16
16
  import { Input, Select, useTranslation } from "@dxos/react-ui";
17
17
  import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
18
+ var DEFAULT_VALUE = "__default";
18
19
  var AssistantSettings = ({ settings }) => {
19
20
  const { t } = useTranslation(ASSISTANT_PLUGIN);
20
21
  return /* @__PURE__ */ React.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React.createElement(DeprecatedFormInput, {
@@ -23,15 +24,36 @@ var AssistantSettings = ({ settings }) => {
23
24
  checked: !!settings.customPrompts,
24
25
  onCheckedChange: (checked) => settings.customPrompts = checked
25
26
  })), /* @__PURE__ */ React.createElement(DeprecatedFormInput, {
26
- label: t("settings llm model label")
27
+ label: t("settings llm provider label")
28
+ }, /* @__PURE__ */ React.createElement(Input.Switch, {
29
+ checked: !!settings.llmProvider,
30
+ onCheckedChange: (checked) => settings.llmProvider = checked ? "ollama" : "edge"
31
+ })), /* @__PURE__ */ React.createElement(DeprecatedFormInput, {
32
+ label: t("settings edge llm model label")
33
+ }, /* @__PURE__ */ React.createElement(Select.Root, {
34
+ value: settings.edgeModel ?? DEFAULT_VALUE,
35
+ onValueChange: (value) => {
36
+ settings.edgeModel = value === DEFAULT_VALUE ? void 0 : value;
37
+ }
38
+ }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
39
+ placeholder: t("settings default llm model label")
40
+ }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, /* @__PURE__ */ React.createElement(Select.Option, {
41
+ value: DEFAULT_VALUE
42
+ }, t("settings default label")), DEFAULT_EDGE_MODELS.map((model) => /* @__PURE__ */ React.createElement(Select.Option, {
43
+ key: model,
44
+ value: model
45
+ }, model))))))), /* @__PURE__ */ React.createElement(DeprecatedFormInput, {
46
+ label: t("settings ollama llm model label")
27
47
  }, /* @__PURE__ */ React.createElement(Select.Root, {
28
- value: settings.llmModel ?? "default",
48
+ value: settings.ollamaModel ?? DEFAULT_VALUE,
29
49
  onValueChange: (value) => {
30
- settings.llmModel = value;
50
+ settings.ollamaModel = value === DEFAULT_VALUE ? void 0 : value;
31
51
  }
32
52
  }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
33
53
  placeholder: t("settings default llm model label")
34
- }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, DEFAULT_LLM_MODELS.map((model) => /* @__PURE__ */ React.createElement(Select.Option, {
54
+ }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, /* @__PURE__ */ React.createElement(Select.Option, {
55
+ value: DEFAULT_VALUE
56
+ }, t("settings default label")), DEFAULT_OLLAMA_MODELS.map((model) => /* @__PURE__ */ React.createElement(Select.Option, {
35
57
  key: model,
36
58
  value: model
37
59
  }, model))))))));
@@ -93,9 +115,9 @@ var ServiceItem = ({ service, enabled, setEnabled }) => {
93
115
 
94
116
  // packages/plugins/experimental/plugin-assistant/src/components/index.ts
95
117
  import { lazy } from "react";
96
- var AssistantDialog = lazy(() => import("./AssistantDialog-5AT5JAZL.mjs"));
97
- var ChatContainer = lazy(() => import("./ChatContainer-VR766C4M.mjs"));
98
- var TemplateContainer = lazy(() => import("./TemplateContainer-WSHTZBB5.mjs"));
118
+ var AssistantDialog = lazy(() => import("./AssistantDialog-R3EPF2KL.mjs"));
119
+ var ChatContainer = lazy(() => import("./ChatContainer-UJ7MV7GU.mjs"));
120
+ var TemplateContainer = lazy(() => import("./TemplateContainer-YLA6BJY6.mjs"));
99
121
 
100
122
  export {
101
123
  AssistantSettings,
@@ -104,4 +126,4 @@ export {
104
126
  ChatContainer,
105
127
  TemplateContainer
106
128
  };
107
- //# sourceMappingURL=chunk-AMQMVQJO.mjs.map
129
+ //# sourceMappingURL=chunk-6GBMQIW7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AssistantSettings/AssistantSettings.tsx", "../../../src/components/ServiceRegistry/ServiceRegistry.tsx", "../../../src/components/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from '@dxos/assistant';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { ASSISTANT_PLUGIN } from '../../meta';\nimport { type AssistantSettingsProps } from '../../types';\n\n// TODO(burdon): Factor out.\nconst DEFAULT_VALUE = '__default';\n\nexport const AssistantSettings = ({ settings }: { settings: AssistantSettingsProps }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('settings custom prompts label')}>\n <Input.Switch\n checked={!!settings.customPrompts}\n onCheckedChange={(checked) => (settings.customPrompts = checked)}\n />\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings llm provider label')}>\n <Input.Switch\n checked={!!settings.llmProvider}\n onCheckedChange={(checked) => (settings.llmProvider = checked ? 'ollama' : 'edge')}\n />\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings edge llm model label')}>\n <Select.Root\n value={settings.edgeModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.edgeModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_EDGE_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings ollama llm model label')}>\n <Select.Root\n value={settings.ollamaModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.ollamaModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_OLLAMA_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Icon, Input, List, ListItem } from '@dxos/react-ui';\n\nimport { useServices } from '../../hooks';\nimport { categoryIcons, ServiceType } from '../../types';\n\n// TODO(burdon): Option to show all/enabled/filter.\nexport const ServiceRegistry = ({ space }: { space: Space }) => {\n const matchingServices = useServices(space);\n const enabledServices = useQuery(space, Filter.schema(ServiceType));\n\n // Join matching services with enabled services.\n const services = useMemo(() => {\n return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);\n }, [matchingServices, enabledServices]);\n\n // TODO(burdon): Reaplce with SpacePlugin intent.\n const handleSetEnabled = (service: ServiceType, enabled: boolean) => {\n if (enabled) {\n space.db.add(service);\n } else {\n // TODO(burdon): Remove or disable?\n space.db.remove(service);\n }\n };\n\n return (\n <List classNames='h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin'>\n {services.map((service) => (\n <ServiceItem\n key={service.serviceId}\n service={service}\n enabled={service.enabled}\n setEnabled={(enabled) => handleSetEnabled(service, enabled)}\n />\n ))}\n </List>\n );\n};\n\nconst ServiceItem = ({\n service,\n enabled,\n setEnabled,\n}: {\n service: ServiceType;\n enabled?: boolean;\n setEnabled?: (enabled: boolean) => void;\n}) => {\n return (\n <ListItem.Root classNames='flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator'>\n <div className='grid grid-cols-[40px_1fr_40px]'>\n <div className='flex gow justify-center items-center'>\n <Icon icon={categoryIcons[service.category ?? 'default'] ?? 'ph--placeholder--regular'} size={6} />\n </div>\n <div className='grow items-center truncate mie-2'>{service.name}</div>\n <div className='flex gow justify-center items-center'>\n <Input.Root>\n <Input.Switch checked={enabled} onClick={() => setEnabled?.(!enabled)} />\n </Input.Root>\n </div>\n </div>\n <div className='grid grid-cols-[40px_1fr]'>\n <div />\n <div className='text-sm text-subdued line-clamp-2 mie-1'>{service.description}</div>\n </div>\n </ListItem.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AssistantSettings';\nexport * from './ServiceRegistry';\nexport * from './TemplateEditor';\nexport * from './Thread';\nexport * from './Toolbox';\n\n// TODO(burdon): Lazy loading causes issues with Tabster.\n// Repro: open assistant dialog then close.\n// https://github.com/microsoft/fluentui/issues/34020\nexport const AssistantDialog = lazy(() => import('./AssistantDialog'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\nexport const TemplateContainer = lazy(() => import('./TemplateContainer'));\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "DEFAULT_EDGE_MODELS", "DEFAULT_OLLAMA_MODELS", "Input", "Select", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "DEFAULT_VALUE", "AssistantSettings", "settings", "t", "useTranslation", "ASSISTANT_PLUGIN", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "customPrompts", "onCheckedChange", "llmProvider", "Select", "Root", "value", "edgeModel", "onValueChange", "undefined", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "Option", "DEFAULT_EDGE_MODELS", "map", "model", "key", "ollamaModel", "DEFAULT_OLLAMA_MODELS", "React", "useMemo", "Filter", "useQuery", "Icon", "Input", "List", "ListItem", "ServiceRegistry", "space", "matchingServices", "useServices", "enabledServices", "useQuery", "Filter", "schema", "ServiceType", "services", "useMemo", "map", "service", "find", "s", "serviceId", "handleSetEnabled", "enabled", "db", "add", "remove", "React", "List", "classNames", "ServiceItem", "key", "setEnabled", "ListItem", "Root", "div", "className", "Icon", "icon", "categoryIcons", "category", "size", "name", "Input", "Switch", "checked", "onClick", "description", "lazy", "AssistantDialog", "lazy", "ChatContainer", "TemplateContainer"]
7
+ }