@dxos/plugin-assistant 0.8.4-main.2e9d522 → 0.8.4-main.406dc2a

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 (461) hide show
  1. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs +28 -0
  2. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-BDZ55ZRF.mjs +150 -0
  4. package/dist/lib/browser/ChatCompanion-BDZ55ZRF.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-M3IHQLRS.mjs → ChatContainer-RYGNN73X.mjs} +33 -14
  6. package/dist/lib/browser/ChatContainer-RYGNN73X.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-X6VN6QZI.mjs → ChatDialog-MVHH2U66.mjs} +26 -12
  8. package/dist/lib/browser/ChatDialog-MVHH2U66.mjs.map +7 -0
  9. package/dist/lib/browser/{SequenceContainer-3UDVKWPA.mjs → SequenceContainer-2FEWMQGW.mjs} +7 -19
  10. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +19 -0
  12. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +7 -0
  13. package/dist/lib/browser/app-graph-builder-2U7SLCRX.mjs +154 -0
  14. package/dist/lib/browser/app-graph-builder-2U7SLCRX.mjs.map +7 -0
  15. package/dist/lib/browser/blueprint-definition-NSJARW5U.mjs +12 -0
  16. package/dist/lib/browser/blueprint-definition-NSJARW5U.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-2CE2KPKZ.mjs +175 -0
  18. package/dist/lib/browser/chunk-2CE2KPKZ.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-43I2LR6O.mjs +216 -0
  20. package/dist/lib/browser/chunk-43I2LR6O.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-5EGXHCAZ.mjs +16 -0
  22. package/dist/lib/browser/chunk-5EGXHCAZ.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-5RICKAMN.mjs +18 -0
  24. package/dist/lib/browser/chunk-5RICKAMN.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-CQ7UHYTT.mjs +296 -0
  26. package/dist/lib/browser/chunk-CQ7UHYTT.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-FP56WB24.mjs +212 -0
  28. package/dist/lib/browser/chunk-FP56WB24.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  30. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-JZRZVB2A.mjs +170 -0
  32. package/dist/lib/browser/chunk-JZRZVB2A.mjs.map +7 -0
  33. package/dist/lib/browser/chunk-WRJGOT5P.mjs +1794 -0
  34. package/dist/lib/browser/chunk-WRJGOT5P.mjs.map +7 -0
  35. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
  36. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
  37. package/dist/lib/browser/index.mjs +193 -75
  38. package/dist/lib/browser/index.mjs.map +4 -4
  39. package/dist/lib/browser/intent-resolver-3GOJMBXJ.mjs +114 -0
  40. package/dist/lib/browser/intent-resolver-3GOJMBXJ.mjs.map +7 -0
  41. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +17 -0
  42. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +7 -0
  43. package/dist/lib/browser/meta.json +1 -1
  44. package/dist/lib/browser/react-surface-FTKCE6GG.mjs +107 -0
  45. package/dist/lib/browser/react-surface-FTKCE6GG.mjs.map +7 -0
  46. package/dist/lib/browser/{settings-2DGP3UTS.mjs → settings-HBF32KV6.mjs} +8 -7
  47. package/dist/lib/{node-esm/settings-47RYZOU4.mjs.map → browser/settings-HBF32KV6.mjs.map} +1 -1
  48. package/dist/lib/browser/state-LXTS54DI.mjs +21 -0
  49. package/dist/lib/browser/state-LXTS54DI.mjs.map +7 -0
  50. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs +199 -0
  51. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs.map +7 -0
  52. package/dist/lib/browser/types/index.mjs +7 -4
  53. package/dist/lib/node-esm/{TemplateContainer-A3NAQCZE.mjs → BlueprintContainer-4MKN6ZRB.mjs} +12 -11
  54. package/dist/lib/node-esm/BlueprintContainer-4MKN6ZRB.mjs.map +7 -0
  55. package/dist/lib/node-esm/ChatCompanion-XFNXVZIP.mjs +151 -0
  56. package/dist/lib/node-esm/ChatCompanion-XFNXVZIP.mjs.map +7 -0
  57. package/dist/lib/node-esm/{ChatContainer-VZT74PO2.mjs → ChatContainer-UTJGCQXF.mjs} +33 -14
  58. package/dist/lib/node-esm/ChatContainer-UTJGCQXF.mjs.map +7 -0
  59. package/dist/lib/node-esm/{ChatDialog-RJ6FDX4Q.mjs → ChatDialog-QEYZ4IOV.mjs} +26 -12
  60. package/dist/lib/node-esm/ChatDialog-QEYZ4IOV.mjs.map +7 -0
  61. package/dist/lib/node-esm/{SequenceContainer-RQQH5XOC.mjs → SequenceContainer-PGGJUQ46.mjs} +7 -19
  62. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs.map +7 -0
  63. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
  64. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
  65. package/dist/lib/node-esm/app-graph-builder-OKNLR7H2.mjs +155 -0
  66. package/dist/lib/node-esm/app-graph-builder-OKNLR7H2.mjs.map +7 -0
  67. package/dist/lib/node-esm/blueprint-definition-WD2IVMAI.mjs +13 -0
  68. package/dist/lib/node-esm/blueprint-definition-WD2IVMAI.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-73ABYRYX.mjs +20 -0
  70. package/dist/lib/node-esm/chunk-73ABYRYX.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-DSE2IILK.mjs +217 -0
  72. package/dist/lib/node-esm/chunk-DSE2IILK.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-E2WXZND7.mjs +297 -0
  74. package/dist/lib/node-esm/chunk-E2WXZND7.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  76. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs +171 -0
  78. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-TNR46C3L.mjs +213 -0
  80. package/dist/lib/node-esm/chunk-TNR46C3L.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs +177 -0
  82. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-UFKLCEAE.mjs +1795 -0
  84. package/dist/lib/node-esm/chunk-UFKLCEAE.mjs.map +7 -0
  85. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs +17 -0
  86. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs.map +7 -0
  87. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
  88. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
  89. package/dist/lib/node-esm/index.mjs +193 -75
  90. package/dist/lib/node-esm/index.mjs.map +4 -4
  91. package/dist/lib/node-esm/intent-resolver-6XLVTRDJ.mjs +115 -0
  92. package/dist/lib/node-esm/intent-resolver-6XLVTRDJ.mjs.map +7 -0
  93. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +18 -0
  94. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +7 -0
  95. package/dist/lib/node-esm/meta.json +1 -1
  96. package/dist/lib/node-esm/react-surface-K7ZXQLAP.mjs +108 -0
  97. package/dist/lib/node-esm/react-surface-K7ZXQLAP.mjs.map +7 -0
  98. package/dist/lib/node-esm/{settings-47RYZOU4.mjs → settings-CWP6MTWP.mjs} +8 -7
  99. package/dist/lib/{browser/settings-2DGP3UTS.mjs.map → node-esm/settings-CWP6MTWP.mjs.map} +1 -1
  100. package/dist/lib/node-esm/state-BO6GUFLB.mjs +22 -0
  101. package/dist/lib/node-esm/state-BO6GUFLB.mjs.map +7 -0
  102. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs +200 -0
  103. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs.map +7 -0
  104. package/dist/lib/node-esm/types/index.mjs +7 -4
  105. package/dist/types/src/AssistantPlugin.d.ts +1 -1
  106. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/ai-service.d.ts +4 -0
  108. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  110. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/blueprint-definition.d.ts +7 -0
  112. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/capabilities.d.ts +11 -0
  114. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/edge-model-resolver.d.ts +4 -0
  116. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/index.d.ts +11 -3
  118. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  120. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  121. package/dist/types/src/capabilities/local-model-resolver.d.ts +10 -0
  122. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  124. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  125. package/dist/types/src/capabilities/settings.d.ts +1 -1
  126. package/dist/types/src/capabilities/state.d.ts +4 -0
  127. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  128. package/dist/types/src/capabilities/toolkit.d.ts +4 -0
  129. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  130. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  131. package/dist/types/src/components/BlueprintContainer.d.ts +8 -0
  132. package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -0
  133. package/dist/types/src/components/Chat/Chat.d.ts +21 -17
  134. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  135. package/dist/types/src/components/Chat/events.d.ts +5 -0
  136. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  137. package/dist/types/src/components/ChatCompanion.d.ts +13 -0
  138. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -0
  139. package/dist/types/src/components/ChatContainer.d.ts +4 -4
  140. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  141. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  142. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +7 -0
  143. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -0
  144. package/dist/types/src/components/ChatProgress/index.d.ts +2 -0
  145. package/dist/types/src/components/ChatProgress/index.d.ts.map +1 -0
  146. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  147. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +20 -0
  148. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
  149. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  150. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +4 -5
  151. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  152. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
  153. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  154. package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
  155. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  156. package/dist/types/src/components/ChatThread/ChatThread.d.ts +12 -7
  157. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  158. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +116 -75
  159. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  160. package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
  161. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
  162. package/dist/types/src/components/ChatThread/reducers.d.ts +40 -0
  163. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -0
  164. package/dist/types/src/components/ChatThread/registry.d.ts +11 -0
  165. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  166. package/dist/types/src/components/ChatThread/sync.d.ts +36 -0
  167. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  168. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  169. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  170. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  171. package/dist/types/src/components/SequenceContainer.d.ts.map +1 -1
  172. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +1 -1
  173. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -1
  174. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +264 -3
  175. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -1
  176. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
  177. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  178. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +262 -7
  179. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  180. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +3 -2
  181. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  182. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +259 -2
  183. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts +12 -0
  185. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +1 -0
  186. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +19 -0
  187. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  188. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  189. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  190. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  191. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  192. package/dist/types/src/components/Toolbar/Toolbar.d.ts +5 -0
  193. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
  194. package/dist/types/src/components/Toolbar/index.d.ts +2 -0
  195. package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
  196. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +11 -0
  197. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +1 -0
  198. package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -9
  199. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  200. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +262 -5
  201. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  202. package/dist/types/src/components/index.d.ts +5 -2
  203. package/dist/types/src/components/index.d.ts.map +1 -1
  204. package/dist/types/src/events.d.ts +1 -1
  205. package/dist/types/src/events.d.ts.map +1 -1
  206. package/dist/types/src/functions/analysis.d.ts +5 -0
  207. package/dist/types/src/functions/analysis.d.ts.map +1 -0
  208. package/dist/types/src/functions/index.d.ts +4 -0
  209. package/dist/types/src/functions/index.d.ts.map +1 -0
  210. package/dist/types/src/functions/list.d.ts +10 -0
  211. package/dist/types/src/functions/list.d.ts.map +1 -0
  212. package/dist/types/src/functions/load.d.ts +8 -0
  213. package/dist/types/src/functions/load.d.ts.map +1 -0
  214. package/dist/types/src/hooks/index.d.ts +7 -3
  215. package/dist/types/src/hooks/index.d.ts.map +1 -1
  216. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +25 -0
  217. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
  218. package/dist/types/src/hooks/useChatProcessor.d.ts +8 -21
  219. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  220. package/dist/types/src/hooks/useChatServices.d.ts +5 -6
  221. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  222. package/dist/types/src/hooks/useContextBinder.d.ts +4 -0
  223. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
  224. package/dist/types/src/hooks/useContextObjects.d.ts +15 -0
  225. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
  226. package/dist/types/src/hooks/useFlush.d.ts +6 -0
  227. package/dist/types/src/hooks/useFlush.d.ts.map +1 -0
  228. package/dist/types/src/hooks/useItemTypes.d.ts +4 -0
  229. package/dist/types/src/hooks/useItemTypes.d.ts.map +1 -0
  230. package/dist/types/src/hooks/useOnline.d.ts +3 -0
  231. package/dist/types/src/hooks/useOnline.d.ts.map +1 -0
  232. package/dist/types/src/hooks/usePresets.d.ts +7 -0
  233. package/dist/types/src/hooks/usePresets.d.ts.map +1 -0
  234. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  235. package/dist/types/src/index.d.ts +2 -0
  236. package/dist/types/src/index.d.ts.map +1 -1
  237. package/dist/types/src/meta.d.ts +1 -2
  238. package/dist/types/src/meta.d.ts.map +1 -1
  239. package/dist/types/src/processor/index.d.ts +3 -0
  240. package/dist/types/src/processor/index.d.ts.map +1 -0
  241. package/dist/types/src/{hooks → processor}/presets.d.ts +3 -3
  242. package/dist/types/src/processor/presets.d.ts.map +1 -0
  243. package/dist/types/src/processor/processor.d.ts +74 -0
  244. package/dist/types/src/processor/processor.d.ts.map +1 -0
  245. package/dist/types/src/processor/processor.test.d.ts +2 -0
  246. package/dist/types/src/processor/processor.test.d.ts.map +1 -0
  247. package/dist/types/src/testing/index.d.ts +1 -1
  248. package/dist/types/src/testing/index.d.ts.map +1 -1
  249. package/dist/types/src/testing/test-generator.d.ts +7 -0
  250. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  251. package/dist/types/src/testing/test-sequence.d.ts +0 -4
  252. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  253. package/dist/types/src/testing/test-services.d.ts +2 -2
  254. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  255. package/dist/types/src/translations.d.ts +29 -22
  256. package/dist/types/src/translations.d.ts.map +1 -1
  257. package/dist/types/src/types/Assistant.d.ts +51 -0
  258. package/dist/types/src/types/Assistant.d.ts.map +1 -0
  259. package/dist/types/src/types/AssistantAction.d.ts +107 -0
  260. package/dist/types/src/types/AssistantAction.d.ts.map +1 -0
  261. package/dist/types/src/types/defs.d.ts +2 -0
  262. package/dist/types/src/types/defs.d.ts.map +1 -0
  263. package/dist/types/src/types/index.d.ts +3 -1
  264. package/dist/types/src/types/index.d.ts.map +1 -1
  265. package/dist/types/src/types/service.d.ts +18 -15
  266. package/dist/types/src/types/service.d.ts.map +1 -1
  267. package/dist/types/tsconfig.tsbuildinfo +1 -1
  268. package/package.json +92 -92
  269. package/src/AssistantPlugin.tsx +151 -82
  270. package/src/capabilities/ai-service.ts +27 -0
  271. package/src/capabilities/app-graph-builder.ts +47 -137
  272. package/src/capabilities/blueprint-definition.ts +64 -0
  273. package/src/capabilities/capabilities.ts +18 -0
  274. package/src/capabilities/edge-model-resolver.ts +25 -0
  275. package/src/capabilities/index.ts +9 -0
  276. package/src/capabilities/intent-resolver.ts +53 -15
  277. package/src/capabilities/local-model-resolver.ts +30 -0
  278. package/src/capabilities/react-surface.tsx +17 -64
  279. package/src/capabilities/state.ts +20 -0
  280. package/src/capabilities/toolkit.ts +168 -0
  281. package/src/components/AssistantSettings/AssistantSettings.tsx +83 -76
  282. package/src/components/BlueprintContainer.tsx +24 -0
  283. package/src/components/Chat/Chat.tsx +189 -181
  284. package/src/components/Chat/events.ts +7 -0
  285. package/src/components/ChatCompanion.tsx +136 -0
  286. package/src/components/ChatContainer.tsx +19 -13
  287. package/src/components/ChatDialog.tsx +18 -14
  288. package/src/components/ChatProgress/ChatProgress.tsx +67 -0
  289. package/src/components/ChatProgress/index.ts +5 -0
  290. package/src/components/ChatPrompt/ChatActions.tsx +10 -24
  291. package/src/components/ChatPrompt/ChatOptions.tsx +225 -0
  292. package/src/components/ChatPrompt/ChatPresets.tsx +1 -0
  293. package/src/components/ChatPrompt/ChatReferences.tsx +31 -36
  294. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
  295. package/src/components/ChatPrompt/index.ts +1 -1
  296. package/src/components/ChatThread/ChatThread.stories.tsx +98 -112
  297. package/src/components/ChatThread/ChatThread.tsx +69 -29
  298. package/src/components/ChatThread/Link.tsx +26 -0
  299. package/src/components/ChatThread/reducers.ts +151 -0
  300. package/src/components/ChatThread/registry.tsx +184 -0
  301. package/src/components/ChatThread/sync.test.ts +81 -0
  302. package/src/components/ChatThread/sync.ts +113 -0
  303. package/src/components/PromptSettings.tsx +1 -0
  304. package/src/components/SequenceContainer.tsx +29 -30
  305. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +11 -8
  306. package/src/components/SequenceEditor/SequenceEditor.tsx +3 -3
  307. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +28 -17
  308. package/src/components/TemplateEditor/TemplateEditor.tsx +21 -52
  309. package/src/components/TemplateEditor/TemplateForm.stories.tsx +18 -13
  310. package/src/components/TemplateEditor/TemplateForm.tsx +7 -4
  311. package/src/components/TemplateEditor/handlebars-extension.ts +165 -0
  312. package/src/components/ToolBlock/ToolBlock.tsx +152 -0
  313. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  314. package/src/components/ToolBlock/index.ts +6 -0
  315. package/src/components/Toolbar/Toolbar.tsx +21 -0
  316. package/src/components/Toolbar/index.ts +5 -0
  317. package/src/components/Toolbar/useChatToolbarActions.ts +126 -0
  318. package/src/components/Toolbox/Toolbox.stories.tsx +13 -22
  319. package/src/components/Toolbox/Toolbox.tsx +21 -51
  320. package/src/components/index.ts +4 -5
  321. package/src/events.ts +2 -2
  322. package/src/functions/analysis.ts +22 -0
  323. package/src/functions/index.ts +7 -0
  324. package/src/functions/list.ts +48 -0
  325. package/src/functions/load.ts +46 -0
  326. package/src/hooks/index.ts +7 -4
  327. package/src/hooks/useBlueprintRegistry.ts +94 -0
  328. package/src/hooks/useChatProcessor.ts +30 -99
  329. package/src/hooks/useChatServices.ts +29 -71
  330. package/src/hooks/useContextBinder.ts +30 -0
  331. package/src/hooks/useContextObjects.ts +58 -0
  332. package/src/hooks/useFlush.ts +35 -0
  333. package/src/hooks/useItemTypes.ts +37 -0
  334. package/src/hooks/useOnline.ts +10 -0
  335. package/src/hooks/usePresets.ts +44 -0
  336. package/src/hooks/useReferencesProvider.ts +11 -9
  337. package/src/index.ts +2 -0
  338. package/src/meta.ts +4 -6
  339. package/src/processor/index.ts +6 -0
  340. package/src/{hooks → processor}/presets.ts +15 -7
  341. package/src/processor/processor.test.ts +81 -0
  342. package/src/processor/processor.ts +302 -0
  343. package/src/queue-logger.ts +10 -10
  344. package/src/testing/index.ts +1 -1
  345. package/src/testing/test-generator.ts +261 -0
  346. package/src/testing/test-sequence.ts +2 -27
  347. package/src/testing/test-services.ts +2 -8
  348. package/src/translations.ts +32 -22
  349. package/src/types/Assistant.ts +64 -0
  350. package/src/types/AssistantAction.ts +62 -0
  351. package/src/types/defs.ts +5 -0
  352. package/src/types/index.ts +4 -1
  353. package/src/types/service.ts +15 -7
  354. package/src/vite-env.d.ts +30 -0
  355. package/dist/lib/browser/ChatContainer-M3IHQLRS.mjs.map +0 -7
  356. package/dist/lib/browser/ChatDialog-X6VN6QZI.mjs.map +0 -7
  357. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
  358. package/dist/lib/browser/TemplateContainer-RPJ2LBOB.mjs +0 -27
  359. package/dist/lib/browser/TemplateContainer-RPJ2LBOB.mjs.map +0 -7
  360. package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs +0 -223
  361. package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs.map +0 -7
  362. package/dist/lib/browser/chunk-AEAEKWOC.mjs +0 -98
  363. package/dist/lib/browser/chunk-AEAEKWOC.mjs.map +0 -7
  364. package/dist/lib/browser/chunk-EQDW6BYQ.mjs +0 -108
  365. package/dist/lib/browser/chunk-EQDW6BYQ.mjs.map +0 -7
  366. package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
  367. package/dist/lib/browser/chunk-FDCJSQYF.mjs.map +0 -7
  368. package/dist/lib/browser/chunk-JQBVLTM5.mjs +0 -158
  369. package/dist/lib/browser/chunk-JQBVLTM5.mjs.map +0 -7
  370. package/dist/lib/browser/chunk-OWY4CUQY.mjs +0 -2245
  371. package/dist/lib/browser/chunk-OWY4CUQY.mjs.map +0 -7
  372. package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs +0 -60
  373. package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs.map +0 -7
  374. package/dist/lib/browser/react-surface-66VY37YQ.mjs +0 -150
  375. package/dist/lib/browser/react-surface-66VY37YQ.mjs.map +0 -7
  376. package/dist/lib/node-esm/ChatContainer-VZT74PO2.mjs.map +0 -7
  377. package/dist/lib/node-esm/ChatDialog-RJ6FDX4Q.mjs.map +0 -7
  378. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
  379. package/dist/lib/node-esm/TemplateContainer-A3NAQCZE.mjs.map +0 -7
  380. package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs +0 -224
  381. package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs.map +0 -7
  382. package/dist/lib/node-esm/chunk-2XL6MNPE.mjs +0 -99
  383. package/dist/lib/node-esm/chunk-2XL6MNPE.mjs.map +0 -7
  384. package/dist/lib/node-esm/chunk-BISJDTBK.mjs +0 -159
  385. package/dist/lib/node-esm/chunk-BISJDTBK.mjs.map +0 -7
  386. package/dist/lib/node-esm/chunk-E33DNNDW.mjs +0 -109
  387. package/dist/lib/node-esm/chunk-E33DNNDW.mjs.map +0 -7
  388. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
  389. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs.map +0 -7
  390. package/dist/lib/node-esm/chunk-SENTQAEO.mjs +0 -2246
  391. package/dist/lib/node-esm/chunk-SENTQAEO.mjs.map +0 -7
  392. package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs +0 -61
  393. package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs.map +0 -7
  394. package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs +0 -151
  395. package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs.map +0 -7
  396. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
  397. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
  398. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -17
  399. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  400. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  401. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  402. package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
  403. package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
  404. package/dist/types/src/components/TemplateContainer.d.ts +0 -8
  405. package/dist/types/src/components/TemplateContainer.d.ts.map +0 -1
  406. package/dist/types/src/hooks/chat-processor.d.ts +0 -86
  407. package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
  408. package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
  409. package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
  410. package/dist/types/src/hooks/presets.d.ts.map +0 -1
  411. package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
  412. package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
  413. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  414. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  415. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  416. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  417. package/dist/types/src/parser/index.d.ts +0 -4
  418. package/dist/types/src/parser/index.d.ts.map +0 -1
  419. package/dist/types/src/parser/query-parser.d.ts +0 -15
  420. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  421. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  422. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  423. package/dist/types/src/parser/types.d.ts +0 -24
  424. package/dist/types/src/parser/types.d.ts.map +0 -1
  425. package/dist/types/src/stories/Chat.stories.d.ts +0 -249
  426. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  427. package/dist/types/src/testing/test-functions.d.ts +0 -3
  428. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  429. package/dist/types/src/tools/function.d.ts +0 -5
  430. package/dist/types/src/tools/function.d.ts.map +0 -1
  431. package/dist/types/src/tools/index.d.ts +0 -3
  432. package/dist/types/src/tools/index.d.ts.map +0 -1
  433. package/dist/types/src/tools/openapi.d.ts +0 -10
  434. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  435. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  436. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  437. package/dist/types/src/types/schema.d.ts +0 -88
  438. package/dist/types/src/types/schema.d.ts.map +0 -1
  439. package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
  440. package/src/components/ChatThread/ChatMessage.tsx +0 -268
  441. package/src/components/ChatThread/ToolBlock.tsx +0 -121
  442. package/src/components/ChatThread/reducer.ts +0 -52
  443. package/src/components/TemplateContainer.tsx +0 -24
  444. package/src/hooks/chat-processor.test.ts +0 -16
  445. package/src/hooks/chat-processor.ts +0 -314
  446. package/src/hooks/useBlueprints.ts +0 -57
  447. package/src/parser/filter-generator.test.ts +0 -32
  448. package/src/parser/filter-generator.ts +0 -81
  449. package/src/parser/index.ts +0 -7
  450. package/src/parser/query-parser.test.ts +0 -139
  451. package/src/parser/query-parser.ts +0 -199
  452. package/src/parser/types.ts +0 -34
  453. package/src/shims.d.ts +0 -8
  454. package/src/stories/Chat.stories.tsx +0 -378
  455. package/src/testing/test-functions.ts +0 -11
  456. package/src/tools/function.ts +0 -46
  457. package/src/tools/index.ts +0 -6
  458. package/src/tools/openapi.test.ts +0 -217
  459. package/src/tools/openapi.ts +0 -338
  460. package/src/types/schema.ts +0 -95
  461. package/src/typings.d.ts +0 -9
@@ -2,142 +2,73 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Layer } from 'effect';
6
- import { useEffect, useMemo, useState } from 'react';
5
+ import { RegistryContext } from '@effect-rx/rx-react';
6
+ import type * as Runtime from 'effect/Runtime';
7
+ import { useContext, useMemo, useState } from 'react';
7
8
 
8
- import { type ExecutableTool } from '@dxos/ai';
9
- import { Capabilities, useCapabilities, useIntentDispatcher } from '@dxos/app-framework';
10
- import { Conversation, createSystemPrompt } from '@dxos/assistant';
11
- import { type ArtifactDefinition, type AssociatedArtifact, type Blueprint } from '@dxos/blueprints';
12
- import { FunctionType } from '@dxos/functions';
9
+ import { AiConversation } from '@dxos/assistant';
10
+ import { type Blueprint } from '@dxos/blueprints';
13
11
  import { log } from '@dxos/log';
14
- import { useConfig } from '@dxos/react-client';
15
- import { Filter, fullyQualifiedId, type Queue, type Space, useQuery } from '@dxos/react-client/echo';
16
- import { isNonNullable } from '@dxos/util';
12
+ import { type Queue } from '@dxos/react-client/echo';
13
+ import { useAsyncEffect } from '@dxos/react-ui';
17
14
 
18
- import { type AiServicePreset, ChatProcessor, type ChatServices } from '../hooks';
19
- import { convertFunctionToTool, createToolsFromService } from '../tools';
20
- import { type Assistant, ServiceType } from '../types';
15
+ import { AiChatProcessor, type AiChatServices, type AiServicePreset } from '../processor';
16
+ import { type Assistant } from '../types';
21
17
 
22
- type UseChatProcessorProps = {
23
- preset?: AiServicePreset;
24
- space?: Space;
18
+ export type UseChatProcessorProps = {
25
19
  chat?: Assistant.Chat;
26
-
27
- // TODO(burdon): Move into layer?
28
- services?: Layer.Layer<ChatServices>;
20
+ preset?: AiServicePreset;
21
+ services?: () => Promise<Runtime.Runtime<AiChatServices>>;
29
22
  blueprintRegistry?: Blueprint.Registry;
30
- // TODO(burdon): Not currently used.
31
23
  settings?: Assistant.Settings;
32
-
33
- /** @deprecated */
34
- instructions?: string;
35
- /** @deprecated */
36
- artifact?: AssociatedArtifact;
37
- /** @deprecated */
38
- noPluginArtifacts?: boolean;
39
24
  };
40
25
 
41
26
  /**
42
- * Configure and create ChatProcessor.
27
+ * Configure and create AiChatProcessor.
43
28
  */
44
29
  export const useChatProcessor = ({
45
- preset,
46
- space,
47
30
  chat,
31
+ preset,
48
32
  services,
49
33
  blueprintRegistry,
50
34
  settings,
51
- instructions,
52
- artifact,
53
- noPluginArtifacts,
54
- }: UseChatProcessorProps): ChatProcessor | undefined => {
55
- const { dispatchPromise: dispatch } = useIntentDispatcher();
56
- const globalTools = useCapabilities(Capabilities.Tools);
57
-
58
- // TODO(burdon): Spec artifacts.
59
- let artifacts: readonly ArtifactDefinition[] = useCapabilities(Capabilities.ArtifactDefinition);
60
- if (noPluginArtifacts) {
61
- artifacts = Stable.array;
62
- }
35
+ }: UseChatProcessorProps): AiChatProcessor | undefined => {
36
+ const observableRegistry = useContext(RegistryContext);
63
37
 
64
- // Services.
65
- const remoteServices = useQuery(space, Filter.type(ServiceType));
66
- const [serviceTools, setServiceTools] = useState<ExecutableTool[]>([]);
67
- useEffect(() => {
68
- log('creating service tools...');
69
- queueMicrotask(async () => {
70
- const tools = await Promise.all(remoteServices.map((service) => createToolsFromService(service)));
71
- setServiceTools(tools.flat());
72
- });
73
- }, [remoteServices]);
74
-
75
- // Tools and context.
76
- const config = useConfig();
77
- const functions = useQuery(space, Filter.type(FunctionType));
78
- const chatId = useMemo(() => (chat ? fullyQualifiedId(chat) : undefined), [chat]);
79
- const [tools, extensions] = useMemo(() => {
80
- log('creating tools...');
81
- const tools: ExecutableTool[] = [
82
- ...globalTools.flat(),
83
- ...serviceTools,
84
- ...functions
85
- .map((fn) => convertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? '', space?.id))
86
- .filter(isNonNullable),
87
- ];
88
- const extensions = { space, dispatch, pivotId: chatId };
89
- return [tools, extensions];
90
- }, [dispatch, globalTools, space, chatId, serviceTools, functions]);
91
-
92
- // TODO(burdon): Create from template.
93
- const systemPrompt = useMemo(
94
- () =>
95
- createSystemPrompt({
96
- artifacts: artifacts.map((definition) => `${definition.name}\n${definition.instructions}`),
97
- artifact,
98
- instructions,
99
- }),
100
- [artifacts, artifact, instructions],
101
- );
102
-
103
- const conversation = useMemo(() => {
38
+ // Create conversation from chat queue.
39
+ const [conversation, setConversation] = useState<AiConversation>();
40
+ useAsyncEffect(async () => {
104
41
  if (!chat?.queue.target) {
105
42
  return;
106
43
  }
107
44
 
108
- return new Conversation({ queue: chat.queue.target as Queue<any> });
45
+ const conversation = new AiConversation({ queue: chat.queue.target as Queue<any> });
46
+ await conversation.open();
47
+ setConversation(conversation);
48
+
49
+ return () => {
50
+ void conversation.close();
51
+ };
109
52
  }, [chat?.queue.target]);
110
53
 
111
54
  // Create processor.
112
- // TODO(burdon): Updated on each query update above; should just update current processor?
113
55
  const processor = useMemo(() => {
114
56
  if (!services || !conversation) {
115
57
  return undefined;
116
58
  }
117
59
 
118
- log.info('creating processor', {
60
+ log('creating processor', {
119
61
  preset,
120
- artifacts: artifacts.length,
121
- systemPrompt: systemPrompt.length,
122
62
  model: preset?.model,
123
63
  settings,
124
64
  });
125
65
 
126
- return new ChatProcessor(services, conversation, {
127
- tools,
128
- extensions,
66
+ return new AiChatProcessor(conversation, services, {
67
+ observableRegistry,
129
68
  blueprintRegistry,
130
- artifacts,
131
- systemPrompt,
132
69
  model: preset?.model,
133
70
  });
134
- }, [services, conversation, tools, blueprintRegistry, artifacts, extensions, systemPrompt, preset]);
71
+ }, [services, conversation, blueprintRegistry, preset]);
135
72
 
136
73
  return processor;
137
74
  };
138
-
139
- // TODO(dmaretskyi): Extract.
140
- export const Stable = Object.freeze({
141
- array: [] as readonly never[],
142
- object: {} as {},
143
- });
@@ -2,90 +2,48 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Layer } from 'effect';
5
+ import * as Effect from 'effect/Effect';
6
+ import type * as Runtime from 'effect/Runtime';
6
7
  import { useMemo } from 'react';
7
- import { useDeepCompareMemoize } from 'use-deep-compare-effect';
8
8
 
9
- import { type AiService, type ToolExecutionService, ToolRegistry, type ToolResolverService } from '@dxos/ai';
10
- import { AiServiceTestingPreset } from '@dxos/ai/testing';
11
- import { Capabilities, useCapabilities } from '@dxos/app-framework';
12
- import { makeToolExecutionServiceFromFunctions, makeToolResolverFromFunctions } from '@dxos/assistant';
9
+ import { useCapability } from '@dxos/app-framework';
13
10
  import { type Space } from '@dxos/client/echo';
14
- import {
15
- ConfiguredCredentialsService,
16
- CredentialsService,
17
- DatabaseService,
18
- EventLogger,
19
- FunctionCallService,
20
- QueueService,
21
- TracingService,
22
- } from '@dxos/functions';
11
+ import { TracingService } from '@dxos/functions';
12
+ import { AutomationCapabilities } from '@dxos/plugin-automation';
13
+ import { useClient } from '@dxos/react-client';
23
14
 
24
- export * from '@dxos/assistant';
25
-
26
- // TODO(burdon): Deconstruct into separate layers?
27
- export type ChatServices =
28
- | AiService
29
- | CredentialsService
30
- | DatabaseService
31
- | QueueService
32
- | FunctionCallService
33
- | ToolResolverService
34
- | ToolExecutionService
35
- | TracingService
36
- | EventLogger;
15
+ import { type AiChatServices } from '../processor';
16
+ import { type Assistant } from '../types';
37
17
 
38
18
  export type UseChatServicesProps = {
39
19
  space?: Space;
20
+ chat?: Assistant.Chat;
40
21
  };
41
22
 
42
23
  /**
43
24
  * Construct service layer.
44
25
  */
45
- export const useChatServices = ({ space }: UseChatServicesProps): Layer.Layer<ChatServices> | undefined => {
46
- const toolRegistry = useToolRegistry();
47
- // TODO(dmaretskyi): We can provide the plugin registry as a layer and then build the entire layer stack from there. We need to think how plugin reactivity affect our layer structure.
48
- const toolResolver = useToolResolver();
49
- const toolExecutionService = useToolExecutionService();
50
-
51
- return useMemo(() => {
52
- return Layer.mergeAll(
53
- AiServiceTestingPreset('edge-remote').pipe(Layer.orDie), // TODO(burdon): Error management?
54
- Layer.succeed(CredentialsService, new ConfiguredCredentialsService()),
55
- space ? Layer.succeed(DatabaseService, DatabaseService.make(space.db)) : DatabaseService.notAvailable,
56
- space ? Layer.succeed(QueueService, QueueService.make(space.queues)) : QueueService.notAvailable,
57
- Layer.succeed(FunctionCallService, FunctionCallService.mock()),
58
- Layer.succeed(TracingService, TracingService.noop),
59
- Layer.succeed(EventLogger, EventLogger.noop),
60
- toolResolver,
61
- toolExecutionService,
62
- );
63
- }, [space, toolRegistry, toolResolver]);
64
- };
26
+ // TODO(dmaretskyi): Better return type.
27
+ export const useChatServices = ({
28
+ space,
29
+ chat,
30
+ }: UseChatServicesProps): (() => Promise<Runtime.Runtime<AiChatServices>>) | undefined => {
31
+ const client = useClient();
32
+ space ??= client.spaces.default;
65
33
 
66
- const useToolResolver = (): Layer.Layer<ToolResolverService> => {
67
- const functions = useCapabilities(Capabilities.Functions).flat();
68
- return useMemo(() => makeToolResolverFromFunctions(functions), [useDeepCompareMemoize(functions.map((f) => f.name))]);
69
- };
70
-
71
- const useToolExecutionService = (): Layer.Layer<ToolExecutionService> => {
72
- const functions = useCapabilities(Capabilities.Functions).flat();
73
- return useMemo(
74
- () => makeToolExecutionServiceFromFunctions(functions),
75
- [useDeepCompareMemoize(functions.map((f) => f.name))],
76
- );
77
- };
34
+ const computeRuntimeResolver = useCapability(AutomationCapabilities.ComputeRuntime);
78
35
 
79
- // TODO(burdon): Factor out.
80
- const useToolRegistry = (): ToolRegistry => {
81
- const tools = useCapabilities(Capabilities.Tools).flat();
82
36
  return useMemo(() => {
83
- const toolRegistry = new ToolRegistry([]);
84
- for (const tool of tools) {
85
- if (!toolRegistry.has(tool)) {
86
- toolRegistry.register(tool);
87
- }
88
- }
89
- return toolRegistry;
90
- }, [useDeepCompareMemoize(tools)]);
37
+ const runtime = computeRuntimeResolver.getRuntime(space.id);
38
+ return () =>
39
+ runtime.runPromise(
40
+ Effect.gen(function* () {
41
+ return yield* Effect.runtime<AiChatServices>().pipe(
42
+ Effect.provide(
43
+ chat?.traceQueue?.target ? TracingService.layerQueue(chat.traceQueue?.target) : TracingService.layerNoop,
44
+ ),
45
+ );
46
+ }),
47
+ );
48
+ }, [space, chat?.traceQueue?.target]);
91
49
  };
@@ -0,0 +1,30 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useState } from 'react';
6
+
7
+ import { AiContextBinder } from '@dxos/assistant';
8
+ import { useAsyncEffect } from '@dxos/react-ui';
9
+
10
+ import { type Assistant } from '../types';
11
+
12
+ export const useContextBinder = (chat: Assistant.Chat | undefined): AiContextBinder | undefined => {
13
+ const [binder, setBinder] = useState<AiContextBinder>();
14
+
15
+ useAsyncEffect(async () => {
16
+ if (!chat?.queue.target) {
17
+ return;
18
+ }
19
+
20
+ const binder = new AiContextBinder(chat.queue.target);
21
+ await binder.open();
22
+ setBinder(binder);
23
+
24
+ return () => {
25
+ void binder.close();
26
+ };
27
+ }, [chat?.queue.target]);
28
+
29
+ return binder;
30
+ };
@@ -0,0 +1,58 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useCallback } from 'react';
6
+
7
+ import { type AiContextBinder } from '@dxos/assistant';
8
+ import { type DXN, type Obj, Ref } from '@dxos/echo';
9
+ import { log } from '@dxos/log';
10
+ import { type Space } from '@dxos/react-client/echo';
11
+ import { isNonNullable } from '@dxos/util';
12
+
13
+ export type UseContextObjects = {
14
+ objects: Obj.Any[];
15
+ onUpdateObject: (dxn: DXN, checked: boolean) => Promise<void>;
16
+ };
17
+
18
+ /**
19
+ * Create reactive map of active object references (by DXN string).
20
+ */
21
+ export const useContextObjects = ({
22
+ space,
23
+ context,
24
+ }: {
25
+ space?: Space;
26
+ context?: AiContextBinder;
27
+ }): UseContextObjects => {
28
+ const objects = context?.objects.value.map((ref) => ref.target).filter(isNonNullable) ?? [];
29
+
30
+ const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(
31
+ async (dxn: DXN, checked: boolean) => {
32
+ if (!space || !context) {
33
+ return;
34
+ }
35
+
36
+ // Load the object by DXN/id from the current space.
37
+ const id = dxn.asEchoDXN();
38
+ const object = id && (await space.db.getObjectById(id.echoId));
39
+ if (!object) {
40
+ log.warn('Object not found', { dxn, id });
41
+ return;
42
+ }
43
+
44
+ const ref = Ref.fromDXN(dxn);
45
+ if (checked) {
46
+ await context.bind({ objects: [ref] });
47
+ } else {
48
+ await context.unbind({ objects: [ref] });
49
+ }
50
+ },
51
+ [space, context],
52
+ );
53
+
54
+ return {
55
+ objects,
56
+ onUpdateObject: handleUpdateObject,
57
+ };
58
+ };
@@ -0,0 +1,35 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useCallback, useRef, useState } from 'react';
6
+
7
+ import { type Space } from '@dxos/client/echo';
8
+
9
+ export const useFlush = (space?: Space) => {
10
+ const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');
11
+ const resetTimer = useRef<NodeJS.Timeout | null>(null);
12
+
13
+ const handleFlush = useCallback(() => {
14
+ if (!space) {
15
+ return;
16
+ }
17
+
18
+ queueMicrotask(async () => {
19
+ if (resetTimer.current) {
20
+ clearTimeout(resetTimer.current);
21
+ }
22
+
23
+ setState('flushing');
24
+ await space.db.flush();
25
+ setState('flushed');
26
+
27
+ resetTimer.current = setTimeout(() => {
28
+ setState('idle');
29
+ resetTimer.current = null;
30
+ }, 1_000);
31
+ });
32
+ }, [space]);
33
+
34
+ return { state, handleFlush };
35
+ };
@@ -0,0 +1,37 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Option from 'effect/Option';
6
+ import { useEffect, useState } from 'react';
7
+
8
+ import { type Type } from '@dxos/echo';
9
+ import { type Space } from '@dxos/react-client/echo';
10
+ import { ItemAnnotation } from '@dxos/schema';
11
+
12
+ // TODO(burdon): Pass in filter.
13
+ export const useItemTypes = (space?: Space): Type.Obj.Any[] => {
14
+ const [types, setTypes] = useState<Type.Obj.Any[]>([]);
15
+ useEffect(() => {
16
+ if (!space) {
17
+ return;
18
+ }
19
+
20
+ return space.db.schemaRegistry.query().subscribe(
21
+ (query) => {
22
+ const types = Array.from(
23
+ new Set(
24
+ [...space.db.graph.schemaRegistry.schemas, ...query.results].filter((type) =>
25
+ Option.isSome(ItemAnnotation.get(type)),
26
+ ),
27
+ ),
28
+ );
29
+
30
+ setTypes(types);
31
+ },
32
+ { fire: true },
33
+ );
34
+ }, [space]);
35
+
36
+ return types;
37
+ };
@@ -0,0 +1,10 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Dispatch, type SetStateAction, useState } from 'react';
6
+
7
+ export const useOnline = (): [boolean, Dispatch<SetStateAction<boolean>>] => {
8
+ const [online, setOnline] = useState(true);
9
+ return [online, setOnline];
10
+ };
@@ -0,0 +1,44 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useCallback, useEffect, useMemo, useState } from 'react';
6
+
7
+ import { type ChatPromptProps } from '../components';
8
+ import { type AiServicePreset, AiServicePresets } from '../processor';
9
+
10
+ export type UsePresets = {
11
+ preset: AiServicePreset | undefined;
12
+ } & Pick<ChatPromptProps, 'presets' | 'onPresetChange'>;
13
+
14
+ export const usePresets = (online: boolean): UsePresets => {
15
+ // TODO(burdon): Memo preset for provider.
16
+ const [preset, setPreset] = useState<AiServicePreset>();
17
+ const presets = useMemo(
18
+ () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),
19
+ [online],
20
+ );
21
+ const presetOptions = useMemo(
22
+ () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),
23
+ [presets],
24
+ );
25
+ useEffect(() => {
26
+ setPreset(presets[0]);
27
+ }, [presets]);
28
+
29
+ const handlePresetChange = useCallback<NonNullable<ChatPromptProps['onPresetChange']>>(
30
+ (id) => {
31
+ const preset = presets.find((preset) => preset.id === id);
32
+ if (preset) {
33
+ setPreset(preset);
34
+ }
35
+ },
36
+ [presets],
37
+ );
38
+
39
+ return {
40
+ preset: preset,
41
+ presets: presetOptions,
42
+ onPresetChange: handlePresetChange,
43
+ };
44
+ };
@@ -6,15 +6,14 @@ import { useMemo } from 'react';
6
6
 
7
7
  import { Capabilities, useCapabilities } from '@dxos/app-framework';
8
8
  import { type Space } from '@dxos/client/echo';
9
- import { Filter, Obj, type Type } from '@dxos/echo';
9
+ import { Filter, Obj } from '@dxos/echo';
10
10
  import { type ReferencesProvider } from '@dxos/react-ui-chat';
11
11
 
12
12
  /**
13
13
  * Resolve references to objects in the space.
14
14
  */
15
15
  export const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {
16
- // TODO(burdon): Pass in.
17
- const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);
16
+ const blueprints = useCapabilities(Capabilities.BlueprintDefinition);
18
17
 
19
18
  return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {
20
19
  if (!space) {
@@ -23,10 +22,13 @@ export const useReferencesProvider = (space?: Space): ReferencesProvider | undef
23
22
 
24
23
  return {
25
24
  getReferences: async ({ query }) => {
26
- const schemas = artifactDefinitions.map((artifact) => artifact.schema);
27
- const { objects } = await space.db
28
- .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))
29
- .run();
25
+ // TODO(burdon): Previously we filtered by types declared by the artifact definitions.
26
+ // const schemas = blueprints.map((blueprint) => blueprint.schema).flat();
27
+ // const { objects } = await space.db
28
+ // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))
29
+ // .run();
30
+
31
+ const { objects } = await space.db.query(Filter.everything()).run();
30
32
 
31
33
  return (
32
34
  objects
@@ -39,7 +41,7 @@ export const useReferencesProvider = (space?: Space): ReferencesProvider | undef
39
41
  // TODO(dmaretskyi): `Type.getDXN` (at the point of writing) didn't work here as it was schema-only.
40
42
  .filter((object) => !!Obj.getDXN(object as Obj.Any))
41
43
  .map((object) => ({
42
- uri: Obj.getDXN(object as any)!.toString(),
44
+ uri: Obj.getDXN(object as any).toString(),
43
45
  label: Obj.getLabel(object as any) ?? '',
44
46
  }))
45
47
  );
@@ -49,7 +51,7 @@ export const useReferencesProvider = (space?: Space): ReferencesProvider | undef
49
51
  return { uri, label: Obj.getLabel(object) ?? '' };
50
52
  },
51
53
  } satisfies ReferencesProvider;
52
- }, [space, artifactDefinitions]);
54
+ }, [space, blueprints]);
53
55
  };
54
56
 
55
57
  const stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());
package/src/index.ts CHANGED
@@ -5,7 +5,9 @@
5
5
  export * from './capabilities';
6
6
  export * from './components';
7
7
  export * from './events';
8
+ export * from './hooks';
8
9
  export * from './meta';
10
+ export * from './translations';
9
11
  export * from './types';
10
12
 
11
13
  export * from './AssistantPlugin';
package/src/meta.ts CHANGED
@@ -4,15 +4,13 @@
4
4
 
5
5
  import { type PluginMeta } from '@dxos/app-framework';
6
6
 
7
- export const ASSISTANT_PLUGIN = 'dxos.org/plugin/assistant';
8
-
9
- export const ASSISTANT_DIALOG = `${ASSISTANT_PLUGIN}/assistant/dialog`;
10
-
11
7
  export const meta: PluginMeta = {
12
- id: ASSISTANT_PLUGIN,
8
+ id: 'dxos.org/plugin/assistant',
13
9
  name: 'Assistant',
14
- description: 'The Assistant tab allows you to chat with your spaces inside of Composer.',
10
+ description: 'The Assistant plugin allows you to chat with your spaces inside of Composer.',
15
11
  icon: 'ph--atom--regular',
16
12
  source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',
17
13
  tags: ['labs'],
18
14
  };
15
+
16
+ export const ASSISTANT_DIALOG = `${meta.id}/assistant/dialog`;
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './presets';
6
+ export * from './processor';
@@ -2,9 +2,9 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
- import { type LLMModel } from '@dxos/ai';
7
+ import { type ModelName } from '@dxos/ai';
8
8
 
9
9
  const ModelProviders = ['dxos-local', 'dxos-remote', 'lm-studio'] as const;
10
10
 
@@ -14,11 +14,11 @@ type ModelProvider = Schema.Schema.Type<typeof ModelProvider>;
14
14
  export type AiServicePreset = {
15
15
  id: string;
16
16
  provider: ModelProvider;
17
- model: LLMModel;
17
+ model: ModelName;
18
18
  label?: string;
19
19
  };
20
20
 
21
- const createModelLabel = (model: LLMModel) => {
21
+ const createModelLabel = (model: ModelName) => {
22
22
  const parts = model.split('/');
23
23
  return parts[parts.length - 1];
24
24
  };
@@ -27,20 +27,28 @@ const createModelLabel = (model: LLMModel) => {
27
27
  export const AiServicePresets: AiServicePreset[] = [
28
28
  {
29
29
  provider: 'dxos-remote' as const,
30
- model: '@anthropic/claude-3-5-haiku-20241022' as const,
30
+ model: '@anthropic/claude-opus-4-0' as const,
31
31
  },
32
32
  {
33
33
  provider: 'dxos-remote' as const,
34
- model: '@anthropic/claude-opus-4-0' as const,
34
+ model: '@anthropic/claude-sonnet-4-0' as const,
35
+ },
36
+ {
37
+ provider: 'dxos-remote' as const,
38
+ model: '@anthropic/claude-3-5-haiku-20241022' as const,
35
39
  },
36
40
  {
37
41
  provider: 'lm-studio' as const,
38
- model: '@google/gemma-3-12b' as const,
42
+ model: '@google/gemma-3-27b' as const,
39
43
  },
40
44
  {
41
45
  provider: 'lm-studio' as const,
42
46
  model: '@mlx-community/llama-3.2-3b-instruct' as const,
43
47
  },
48
+ {
49
+ model: 'deepseek-r1:latest' as const,
50
+ provider: 'dxos-local' as const,
51
+ },
44
52
  ].map(
45
53
  ({ model, provider }, i) =>
46
54
  ({