@dxos/plugin-assistant 0.8.4-main.2e9d522 → 0.8.4-main.5ea62a8

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 (472) hide show
  1. package/dist/lib/browser/{TemplateContainer-RPJ2LBOB.mjs → BlueprintContainer-OWUSKPRK.mjs} +11 -9
  2. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs +126 -0
  4. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-M3IHQLRS.mjs → ChatContainer-YBJBIVUZ.mjs} +34 -13
  6. package/dist/lib/browser/ChatContainer-YBJBIVUZ.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-X6VN6QZI.mjs → ChatDialog-MTPJLEHM.mjs} +26 -9
  8. package/dist/lib/browser/ChatDialog-MTPJLEHM.mjs.map +7 -0
  9. package/dist/lib/browser/{SequenceContainer-3UDVKWPA.mjs → SequenceContainer-TF5QNXYM.mjs} +5 -17
  10. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-NRZPTUHO.mjs +22 -0
  12. package/dist/lib/browser/ai-service-NRZPTUHO.mjs.map +7 -0
  13. package/dist/lib/browser/{app-graph-builder-JTXBKE7O.mjs → app-graph-builder-7AAWTWGA.mjs} +26 -96
  14. package/dist/lib/browser/app-graph-builder-7AAWTWGA.mjs.map +7 -0
  15. package/dist/lib/browser/blueprint-definition-CRZPIA5A.mjs +12 -0
  16. package/dist/lib/browser/blueprint-definition-CRZPIA5A.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-6QMISAU6.mjs +167 -0
  18. package/dist/lib/browser/chunk-6QMISAU6.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-CFXXQM25.mjs +182 -0
  20. package/dist/lib/browser/chunk-CFXXQM25.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-IJAJRAR7.mjs +18 -0
  22. package/dist/lib/browser/chunk-IJAJRAR7.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  24. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-O4LUJEDV.mjs +20 -0
  26. package/dist/lib/browser/{chunk-FDCJSQYF.mjs.map → chunk-O4LUJEDV.mjs.map} +2 -2
  27. package/dist/lib/browser/chunk-OYFQS7JM.mjs +157 -0
  28. package/dist/lib/browser/chunk-OYFQS7JM.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-SMIVXXAI.mjs +202 -0
  30. package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-V5H5CCZA.mjs +218 -0
  32. package/dist/lib/browser/chunk-V5H5CCZA.mjs.map +7 -0
  33. package/dist/lib/browser/chunk-XL557TXF.mjs +2332 -0
  34. package/dist/lib/browser/chunk-XL557TXF.mjs.map +7 -0
  35. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs +22 -0
  36. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs.map +7 -0
  37. package/dist/lib/browser/index.mjs +154 -67
  38. package/dist/lib/browser/index.mjs.map +4 -4
  39. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs +112 -0
  40. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs.map +7 -0
  41. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs +21 -0
  42. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs.map +7 -0
  43. package/dist/lib/browser/meta.json +1 -1
  44. package/dist/lib/browser/react-surface-VNCD2H7C.mjs +109 -0
  45. package/dist/lib/browser/react-surface-VNCD2H7C.mjs.map +7 -0
  46. package/dist/lib/browser/{settings-2DGP3UTS.mjs → settings-36V3VUMW.mjs} +6 -5
  47. package/dist/lib/{node-esm/settings-47RYZOU4.mjs.map → browser/settings-36V3VUMW.mjs.map} +1 -1
  48. package/dist/lib/browser/state-D5IVKNYG.mjs +21 -0
  49. package/dist/lib/browser/state-D5IVKNYG.mjs.map +7 -0
  50. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs +191 -0
  51. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs.map +7 -0
  52. package/dist/lib/browser/types/index.mjs +7 -4
  53. package/dist/lib/node-esm/{TemplateContainer-A3NAQCZE.mjs → BlueprintContainer-UFVWCRN6.mjs} +11 -9
  54. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs.map +7 -0
  55. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs +127 -0
  56. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs.map +7 -0
  57. package/dist/lib/node-esm/{ChatContainer-VZT74PO2.mjs → ChatContainer-TUCITJJW.mjs} +34 -13
  58. package/dist/lib/node-esm/ChatContainer-TUCITJJW.mjs.map +7 -0
  59. package/dist/lib/node-esm/{ChatDialog-RJ6FDX4Q.mjs → ChatDialog-JLM7RDZQ.mjs} +26 -9
  60. package/dist/lib/node-esm/ChatDialog-JLM7RDZQ.mjs.map +7 -0
  61. package/dist/lib/node-esm/{SequenceContainer-RQQH5XOC.mjs → SequenceContainer-UXOVZPZO.mjs} +5 -17
  62. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +7 -0
  63. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs +23 -0
  64. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs.map +7 -0
  65. package/dist/lib/node-esm/{app-graph-builder-OWSOXFTD.mjs → app-graph-builder-PNAFQUYT.mjs} +26 -96
  66. package/dist/lib/node-esm/app-graph-builder-PNAFQUYT.mjs.map +7 -0
  67. package/dist/lib/node-esm/blueprint-definition-275J3XL2.mjs +13 -0
  68. package/dist/lib/node-esm/blueprint-definition-275J3XL2.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-2X6VEO32.mjs +2333 -0
  70. package/dist/lib/node-esm/chunk-2X6VEO32.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-7YOGZI66.mjs +203 -0
  72. package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs +159 -0
  74. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs +183 -0
  76. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  78. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs +168 -0
  80. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs +219 -0
  82. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-VFY2JG62.mjs +22 -0
  84. package/dist/lib/node-esm/{chunk-QN2H2EHV.mjs.map → chunk-VFY2JG62.mjs.map} +2 -2
  85. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs +19 -0
  86. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs.map +7 -0
  87. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs +23 -0
  88. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs.map +7 -0
  89. package/dist/lib/node-esm/index.mjs +154 -67
  90. package/dist/lib/node-esm/index.mjs.map +4 -4
  91. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs +113 -0
  92. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs.map +7 -0
  93. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs +22 -0
  94. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs.map +7 -0
  95. package/dist/lib/node-esm/meta.json +1 -1
  96. package/dist/lib/node-esm/react-surface-4NLRKNBU.mjs +110 -0
  97. package/dist/lib/node-esm/react-surface-4NLRKNBU.mjs.map +7 -0
  98. package/dist/lib/node-esm/{settings-47RYZOU4.mjs → settings-7ZCZ6AS5.mjs} +6 -5
  99. package/dist/lib/{browser/settings-2DGP3UTS.mjs.map → node-esm/settings-7ZCZ6AS5.mjs.map} +1 -1
  100. package/dist/lib/node-esm/state-4VLKPLW3.mjs +22 -0
  101. package/dist/lib/node-esm/state-4VLKPLW3.mjs.map +7 -0
  102. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs +192 -0
  103. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs.map +7 -0
  104. package/dist/lib/node-esm/types/index.mjs +7 -4
  105. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/ai-service.d.ts +5 -0
  107. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  108. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  109. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/blueprint-definition.d.ts +7 -0
  111. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/capabilities.d.ts +19 -0
  113. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/edge-model-resolver.d.ts +4 -0
  115. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/index.d.ts +11 -3
  117. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  119. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/local-model-resolver.d.ts +10 -0
  121. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  123. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/settings.d.ts +1 -1
  125. package/dist/types/src/capabilities/state.d.ts +4 -0
  126. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/toolkit.d.ts +4 -0
  128. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  129. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  130. package/dist/types/src/components/BlueprintContainer.d.ts +8 -0
  131. package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -0
  132. package/dist/types/src/components/Chat/Chat.d.ts +19 -16
  133. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  134. package/dist/types/src/components/Chat/events.d.ts +5 -0
  135. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  136. package/dist/types/src/components/ChatCompanion.d.ts +13 -0
  137. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -0
  138. package/dist/types/src/components/ChatContainer.d.ts +4 -4
  139. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  140. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  141. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +7 -0
  142. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -0
  143. package/dist/types/src/components/ChatProgress/index.d.ts +2 -0
  144. package/dist/types/src/components/ChatProgress/index.d.ts.map +1 -0
  145. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  146. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +20 -0
  147. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
  148. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  149. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +4 -5
  150. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  151. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
  152. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  153. package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
  154. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  155. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +21 -5
  156. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +1 -1
  157. package/dist/types/src/components/ChatThread/ChatThread.d.ts +4 -4
  158. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  159. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +108 -72
  160. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
  162. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
  163. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +12 -12
  164. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +1 -1
  165. package/dist/types/src/components/ChatThread/reducers.d.ts +40 -0
  166. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -0
  167. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  168. package/dist/types/src/components/SequenceContainer.d.ts.map +1 -1
  169. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -1
  170. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +257 -2
  171. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -1
  172. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
  173. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  174. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +257 -6
  175. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  176. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -1
  177. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  178. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +254 -1
  179. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  180. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts +12 -0
  181. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +1 -0
  182. package/dist/types/src/components/Toolbar/Toolbar.d.ts +4 -0
  183. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
  184. package/dist/types/src/components/Toolbar/index.d.ts +2 -0
  185. package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
  186. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +11 -0
  187. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +1 -0
  188. package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -9
  189. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  190. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +258 -4
  191. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  192. package/dist/types/src/components/index.d.ts +5 -2
  193. package/dist/types/src/components/index.d.ts.map +1 -1
  194. package/dist/types/src/events.d.ts +1 -1
  195. package/dist/types/src/events.d.ts.map +1 -1
  196. package/dist/types/src/execution-graph/execution-graph.d.ts +21 -0
  197. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -0
  198. package/dist/types/src/execution-graph/index.d.ts +2 -0
  199. package/dist/types/src/execution-graph/index.d.ts.map +1 -0
  200. package/dist/types/src/functions/analysis.d.ts +5 -0
  201. package/dist/types/src/functions/analysis.d.ts.map +1 -0
  202. package/dist/types/src/functions/index.d.ts +4 -0
  203. package/dist/types/src/functions/index.d.ts.map +1 -0
  204. package/dist/types/src/functions/list.d.ts +10 -0
  205. package/dist/types/src/functions/list.d.ts.map +1 -0
  206. package/dist/types/src/functions/load.d.ts +8 -0
  207. package/dist/types/src/functions/load.d.ts.map +1 -0
  208. package/dist/types/src/hooks/index.d.ts +10 -3
  209. package/dist/types/src/hooks/index.d.ts.map +1 -1
  210. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +24 -0
  211. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
  212. package/dist/types/src/hooks/useChatProcessor.d.ts +7 -20
  213. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  214. package/dist/types/src/hooks/useChatServices.d.ts +4 -5
  215. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  216. package/dist/types/src/hooks/useContextBinder.d.ts +4 -0
  217. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
  218. package/dist/types/src/hooks/useContextObjects.d.ts +15 -0
  219. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
  220. package/dist/types/src/hooks/useExecutionGraph.d.ts +7 -0
  221. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +1 -0
  222. package/dist/types/src/hooks/useFlush.d.ts +6 -0
  223. package/dist/types/src/hooks/useFlush.d.ts.map +1 -0
  224. package/dist/types/src/hooks/useItemTypes.d.ts +4 -0
  225. package/dist/types/src/hooks/useItemTypes.d.ts.map +1 -0
  226. package/dist/types/src/hooks/useMatcherExtension.d.ts +3 -0
  227. package/dist/types/src/hooks/useMatcherExtension.d.ts.map +1 -0
  228. package/dist/types/src/hooks/useOnline.d.ts +3 -0
  229. package/dist/types/src/hooks/useOnline.d.ts.map +1 -0
  230. package/dist/types/src/hooks/usePresets.d.ts +7 -0
  231. package/dist/types/src/hooks/usePresets.d.ts.map +1 -0
  232. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  233. package/dist/types/src/hooks/useResolveRef.d.ts +4 -0
  234. package/dist/types/src/hooks/useResolveRef.d.ts.map +1 -0
  235. package/dist/types/src/parser/filter-generator.d.ts.map +1 -1
  236. package/dist/types/src/parser/query-parser.d.ts.map +1 -1
  237. package/dist/types/src/parser/types.d.ts.map +1 -1
  238. package/dist/types/src/processor/index.d.ts +3 -0
  239. package/dist/types/src/processor/index.d.ts.map +1 -0
  240. package/dist/types/src/{hooks → processor}/presets.d.ts +2 -2
  241. package/dist/types/src/processor/presets.d.ts.map +1 -0
  242. package/dist/types/src/processor/processor.d.ts +80 -0
  243. package/dist/types/src/processor/processor.d.ts.map +1 -0
  244. package/dist/types/src/processor/processor.test.d.ts +2 -0
  245. package/dist/types/src/processor/processor.test.d.ts.map +1 -0
  246. package/dist/types/src/stories/Chat.stories.d.ts +23 -246
  247. package/dist/types/src/stories/Chat.stories.d.ts.map +1 -1
  248. package/dist/types/src/stories/components/BlueprintContainer.d.ts +4 -0
  249. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +1 -0
  250. package/dist/types/src/stories/components/ChatContainer.d.ts +4 -0
  251. package/dist/types/src/stories/components/ChatContainer.d.ts.map +1 -0
  252. package/dist/types/src/stories/components/CommentsContainer.d.ts +4 -0
  253. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +1 -0
  254. package/dist/types/src/stories/components/GraphContainer.d.ts +6 -0
  255. package/dist/types/src/stories/components/GraphContainer.d.ts.map +1 -0
  256. package/dist/types/src/stories/components/LoggingContainer.d.ts +4 -0
  257. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +1 -0
  258. package/dist/types/src/stories/components/MessageContainer.d.ts +4 -0
  259. package/dist/types/src/stories/components/MessageContainer.d.ts.map +1 -0
  260. package/dist/types/src/stories/components/SurfaceContainer.d.ts +8 -0
  261. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +1 -0
  262. package/dist/types/src/stories/components/TasksContainer.d.ts +4 -0
  263. package/dist/types/src/stories/components/TasksContainer.d.ts.map +1 -0
  264. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +3 -0
  265. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +1 -0
  266. package/dist/types/src/stories/components/index.d.ts +11 -0
  267. package/dist/types/src/stories/components/index.d.ts.map +1 -0
  268. package/dist/types/src/stories/components/types.d.ts +7 -0
  269. package/dist/types/src/stories/components/types.d.ts.map +1 -0
  270. package/dist/types/src/stories/testing/data.d.ts +5 -0
  271. package/dist/types/src/stories/testing/data.d.ts.map +1 -0
  272. package/dist/types/src/stories/testing/index.d.ts +3 -0
  273. package/dist/types/src/stories/testing/index.d.ts.map +1 -0
  274. package/dist/types/src/stories/testing/testing.d.ts +44 -0
  275. package/dist/types/src/stories/testing/testing.d.ts.map +1 -0
  276. package/dist/types/src/testing/index.d.ts +2 -1
  277. package/dist/types/src/testing/index.d.ts.map +1 -1
  278. package/dist/types/src/testing/test-data.d.ts +4 -0
  279. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  280. package/dist/types/src/testing/test-functions.d.ts +5 -2
  281. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  282. package/dist/types/src/testing/test-sequence.d.ts +0 -4
  283. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  284. package/dist/types/src/translations.d.ts +27 -21
  285. package/dist/types/src/translations.d.ts.map +1 -1
  286. package/dist/types/src/types/Assistant.d.ts +42 -0
  287. package/dist/types/src/types/Assistant.d.ts.map +1 -0
  288. package/dist/types/src/types/AssistantAction.d.ts +107 -0
  289. package/dist/types/src/types/AssistantAction.d.ts.map +1 -0
  290. package/dist/types/src/types/defs.d.ts +2 -0
  291. package/dist/types/src/types/defs.d.ts.map +1 -0
  292. package/dist/types/src/types/index.d.ts +3 -1
  293. package/dist/types/src/types/index.d.ts.map +1 -1
  294. package/dist/types/src/types/service.d.ts +9 -6
  295. package/dist/types/src/types/service.d.ts.map +1 -1
  296. package/dist/types/tsconfig.tsbuildinfo +1 -1
  297. package/package.json +97 -77
  298. package/src/AssistantPlugin.tsx +74 -12
  299. package/src/capabilities/ai-service.ts +28 -0
  300. package/src/capabilities/app-graph-builder.ts +43 -134
  301. package/src/capabilities/blueprint-definition.ts +42 -0
  302. package/src/capabilities/capabilities.ts +31 -0
  303. package/src/capabilities/edge-model-resolver.ts +27 -0
  304. package/src/capabilities/index.ts +9 -0
  305. package/src/capabilities/intent-resolver.ts +50 -14
  306. package/src/capabilities/local-model-resolver.ts +32 -0
  307. package/src/capabilities/react-surface.tsx +17 -64
  308. package/src/capabilities/state.ts +20 -0
  309. package/src/capabilities/toolkit.ts +163 -0
  310. package/src/components/AssistantSettings/AssistantSettings.tsx +83 -76
  311. package/src/components/BlueprintContainer.tsx +24 -0
  312. package/src/components/Chat/Chat.tsx +171 -165
  313. package/src/components/Chat/events.ts +7 -0
  314. package/src/components/ChatCompanion.tsx +111 -0
  315. package/src/components/ChatContainer.tsx +19 -13
  316. package/src/components/ChatDialog.tsx +11 -7
  317. package/src/components/ChatProgress/ChatProgress.tsx +68 -0
  318. package/src/components/ChatProgress/index.ts +5 -0
  319. package/src/components/ChatPrompt/ChatActions.tsx +10 -24
  320. package/src/components/ChatPrompt/ChatOptions.tsx +233 -0
  321. package/src/components/ChatPrompt/ChatPresets.tsx +1 -0
  322. package/src/components/ChatPrompt/ChatReferences.tsx +31 -36
  323. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
  324. package/src/components/ChatPrompt/index.ts +1 -1
  325. package/src/components/ChatThread/ChatMessage.tsx +214 -148
  326. package/src/components/ChatThread/ChatThread.stories.tsx +244 -104
  327. package/src/components/ChatThread/ChatThread.tsx +44 -22
  328. package/src/components/ChatThread/Link.tsx +23 -0
  329. package/src/components/ChatThread/ToolBlock.tsx +103 -77
  330. package/src/components/ChatThread/reducers.ts +151 -0
  331. package/src/components/PromptSettings.tsx +1 -0
  332. package/src/components/SequenceContainer.tsx +27 -28
  333. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +5 -4
  334. package/src/components/SequenceEditor/SequenceEditor.tsx +1 -1
  335. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +27 -14
  336. package/src/components/TemplateEditor/TemplateEditor.tsx +20 -51
  337. package/src/components/TemplateEditor/TemplateForm.stories.tsx +15 -8
  338. package/src/components/TemplateEditor/TemplateForm.tsx +6 -3
  339. package/src/components/TemplateEditor/handlebars-extension.ts +165 -0
  340. package/src/components/Toolbar/Toolbar.tsx +20 -0
  341. package/src/components/Toolbar/index.ts +5 -0
  342. package/src/components/Toolbar/useChatToolbarActions.ts +125 -0
  343. package/src/components/Toolbox/Toolbox.stories.tsx +10 -16
  344. package/src/components/Toolbox/Toolbox.tsx +21 -51
  345. package/src/components/index.ts +4 -5
  346. package/src/events.ts +2 -2
  347. package/src/execution-graph/execution-graph.ts +211 -0
  348. package/src/execution-graph/index.ts +5 -0
  349. package/src/functions/analysis.ts +20 -0
  350. package/src/functions/index.ts +7 -0
  351. package/src/functions/list.ts +46 -0
  352. package/src/functions/load.ts +43 -0
  353. package/src/hooks/index.ts +10 -4
  354. package/src/hooks/useBlueprintRegistry.ts +80 -0
  355. package/src/hooks/useChatProcessor.ts +20 -97
  356. package/src/hooks/useChatServices.ts +34 -61
  357. package/src/hooks/useContextBinder.ts +18 -0
  358. package/src/hooks/useContextObjects.ts +58 -0
  359. package/src/hooks/useExecutionGraph.ts +20 -0
  360. package/src/hooks/useFlush.ts +35 -0
  361. package/src/hooks/useItemTypes.ts +37 -0
  362. package/src/hooks/useMatcherExtension.ts +45 -0
  363. package/src/hooks/useOnline.ts +10 -0
  364. package/src/hooks/usePresets.ts +44 -0
  365. package/src/hooks/useReferencesProvider.ts +11 -9
  366. package/src/hooks/useResolveRef.ts +33 -0
  367. package/src/meta.ts +1 -1
  368. package/src/parser/filter-generator.ts +8 -13
  369. package/src/parser/query-parser.ts +1 -1
  370. package/src/parser/types.ts +2 -0
  371. package/src/processor/index.ts +6 -0
  372. package/src/{hooks → processor}/presets.ts +14 -6
  373. package/src/processor/processor.test.ts +77 -0
  374. package/src/processor/processor.ts +304 -0
  375. package/src/queue-logger.ts +5 -5
  376. package/src/stories/Chat.stories.tsx +389 -298
  377. package/src/stories/components/BlueprintContainer.tsx +32 -0
  378. package/src/stories/components/ChatContainer.tsx +57 -0
  379. package/src/stories/components/CommentsContainer.tsx +25 -0
  380. package/src/stories/components/GraphContainer.tsx +118 -0
  381. package/src/stories/components/LoggingContainer.tsx +21 -0
  382. package/src/stories/components/MessageContainer.tsx +27 -0
  383. package/src/stories/components/SurfaceContainer.tsx +52 -0
  384. package/src/stories/components/TasksContainer.tsx +49 -0
  385. package/src/stories/components/TokenManagerContainer.tsx +14 -0
  386. package/src/stories/components/index.ts +15 -0
  387. package/src/stories/components/types.ts +11 -0
  388. package/src/stories/testing/data.ts +142 -0
  389. package/src/stories/testing/index.ts +6 -0
  390. package/src/stories/testing/testing.tsx +254 -0
  391. package/src/testing/index.ts +2 -1
  392. package/src/testing/test-data.ts +109 -0
  393. package/src/testing/test-functions.ts +8 -3
  394. package/src/testing/test-sequence.ts +2 -27
  395. package/src/translations.ts +31 -21
  396. package/src/types/Assistant.ts +61 -0
  397. package/src/types/AssistantAction.ts +62 -0
  398. package/src/types/defs.ts +5 -0
  399. package/src/types/index.ts +4 -1
  400. package/src/vite-env.d.ts +30 -0
  401. package/dist/lib/browser/ChatContainer-M3IHQLRS.mjs.map +0 -7
  402. package/dist/lib/browser/ChatDialog-X6VN6QZI.mjs.map +0 -7
  403. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
  404. package/dist/lib/browser/TemplateContainer-RPJ2LBOB.mjs.map +0 -7
  405. package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs.map +0 -7
  406. package/dist/lib/browser/chunk-AEAEKWOC.mjs +0 -98
  407. package/dist/lib/browser/chunk-AEAEKWOC.mjs.map +0 -7
  408. package/dist/lib/browser/chunk-EQDW6BYQ.mjs +0 -108
  409. package/dist/lib/browser/chunk-EQDW6BYQ.mjs.map +0 -7
  410. package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
  411. package/dist/lib/browser/chunk-JQBVLTM5.mjs +0 -158
  412. package/dist/lib/browser/chunk-JQBVLTM5.mjs.map +0 -7
  413. package/dist/lib/browser/chunk-OWY4CUQY.mjs +0 -2245
  414. package/dist/lib/browser/chunk-OWY4CUQY.mjs.map +0 -7
  415. package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs +0 -60
  416. package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs.map +0 -7
  417. package/dist/lib/browser/react-surface-66VY37YQ.mjs +0 -150
  418. package/dist/lib/browser/react-surface-66VY37YQ.mjs.map +0 -7
  419. package/dist/lib/node-esm/ChatContainer-VZT74PO2.mjs.map +0 -7
  420. package/dist/lib/node-esm/ChatDialog-RJ6FDX4Q.mjs.map +0 -7
  421. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
  422. package/dist/lib/node-esm/TemplateContainer-A3NAQCZE.mjs.map +0 -7
  423. package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs.map +0 -7
  424. package/dist/lib/node-esm/chunk-2XL6MNPE.mjs +0 -99
  425. package/dist/lib/node-esm/chunk-2XL6MNPE.mjs.map +0 -7
  426. package/dist/lib/node-esm/chunk-BISJDTBK.mjs +0 -159
  427. package/dist/lib/node-esm/chunk-BISJDTBK.mjs.map +0 -7
  428. package/dist/lib/node-esm/chunk-E33DNNDW.mjs +0 -109
  429. package/dist/lib/node-esm/chunk-E33DNNDW.mjs.map +0 -7
  430. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
  431. package/dist/lib/node-esm/chunk-SENTQAEO.mjs +0 -2246
  432. package/dist/lib/node-esm/chunk-SENTQAEO.mjs.map +0 -7
  433. package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs +0 -61
  434. package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs.map +0 -7
  435. package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs +0 -151
  436. package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs.map +0 -7
  437. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
  438. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
  439. package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
  440. package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
  441. package/dist/types/src/components/TemplateContainer.d.ts +0 -8
  442. package/dist/types/src/components/TemplateContainer.d.ts.map +0 -1
  443. package/dist/types/src/hooks/chat-processor.d.ts +0 -86
  444. package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
  445. package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
  446. package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
  447. package/dist/types/src/hooks/presets.d.ts.map +0 -1
  448. package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
  449. package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
  450. package/dist/types/src/tools/function.d.ts +0 -5
  451. package/dist/types/src/tools/function.d.ts.map +0 -1
  452. package/dist/types/src/tools/index.d.ts +0 -3
  453. package/dist/types/src/tools/index.d.ts.map +0 -1
  454. package/dist/types/src/tools/openapi.d.ts +0 -10
  455. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  456. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  457. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  458. package/dist/types/src/types/schema.d.ts +0 -88
  459. package/dist/types/src/types/schema.d.ts.map +0 -1
  460. package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
  461. package/src/components/ChatThread/reducer.ts +0 -52
  462. package/src/components/TemplateContainer.tsx +0 -24
  463. package/src/hooks/chat-processor.test.ts +0 -16
  464. package/src/hooks/chat-processor.ts +0 -314
  465. package/src/hooks/useBlueprints.ts +0 -57
  466. package/src/shims.d.ts +0 -8
  467. package/src/tools/function.ts +0 -46
  468. package/src/tools/index.ts +0 -6
  469. package/src/tools/openapi.test.ts +0 -217
  470. package/src/tools/openapi.ts +0 -338
  471. package/src/types/schema.ts +0 -95
  472. package/src/typings.d.ts +0 -9
@@ -2,142 +2,65 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { RegistryContext } from '@effect-rx/rx-react';
5
6
  import { type Layer } from 'effect';
6
- import { useEffect, useMemo, useState } from 'react';
7
+ import { useContext, useMemo } 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';
17
13
 
18
- import { type AiServicePreset, ChatProcessor, type ChatServices } from '../hooks';
19
- import { convertFunctionToTool, createToolsFromService } from '../tools';
20
- import { type Assistant, ServiceType } from '../types';
14
+ import { AiChatProcessor, type AiChatServices, type AiServicePreset } from '../processor';
15
+ import { type Assistant } from '../types';
21
16
 
22
- type UseChatProcessorProps = {
23
- preset?: AiServicePreset;
24
- space?: Space;
17
+ export type UseChatProcessorProps = {
25
18
  chat?: Assistant.Chat;
26
-
27
- // TODO(burdon): Move into layer?
28
- services?: Layer.Layer<ChatServices>;
19
+ preset?: AiServicePreset;
20
+ services?: Layer.Layer<AiChatServices>;
29
21
  blueprintRegistry?: Blueprint.Registry;
30
- // TODO(burdon): Not currently used.
31
22
  settings?: Assistant.Settings;
32
-
33
- /** @deprecated */
34
- instructions?: string;
35
- /** @deprecated */
36
- artifact?: AssociatedArtifact;
37
- /** @deprecated */
38
- noPluginArtifacts?: boolean;
39
23
  };
40
24
 
41
25
  /**
42
- * Configure and create ChatProcessor.
26
+ * Configure and create AiChatProcessor.
43
27
  */
44
28
  export const useChatProcessor = ({
45
- preset,
46
- space,
47
29
  chat,
30
+ preset,
48
31
  services,
49
32
  blueprintRegistry,
50
33
  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
- }
63
-
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
- );
34
+ }: UseChatProcessorProps): AiChatProcessor | undefined => {
35
+ const observableRegistry = useContext(RegistryContext);
102
36
 
37
+ // Create conversation from chat queue.
103
38
  const conversation = useMemo(() => {
104
39
  if (!chat?.queue.target) {
105
40
  return;
106
41
  }
107
42
 
108
- return new Conversation({ queue: chat.queue.target as Queue<any> });
43
+ return new AiConversation({ queue: chat.queue.target as Queue<any> });
109
44
  }, [chat?.queue.target]);
110
45
 
111
46
  // Create processor.
112
- // TODO(burdon): Updated on each query update above; should just update current processor?
113
47
  const processor = useMemo(() => {
114
48
  if (!services || !conversation) {
115
49
  return undefined;
116
50
  }
117
51
 
118
- log.info('creating processor', {
52
+ log('creating processor', {
119
53
  preset,
120
- artifacts: artifacts.length,
121
- systemPrompt: systemPrompt.length,
122
54
  model: preset?.model,
123
55
  settings,
124
56
  });
125
57
 
126
- return new ChatProcessor(services, conversation, {
127
- tools,
128
- extensions,
58
+ return new AiChatProcessor(conversation, services, {
59
+ observableRegistry,
129
60
  blueprintRegistry,
130
- artifacts,
131
- systemPrompt,
132
61
  model: preset?.model,
133
62
  });
134
- }, [services, conversation, tools, blueprintRegistry, artifacts, extensions, systemPrompt, preset]);
63
+ }, [services, conversation, blueprintRegistry, preset]);
135
64
 
136
65
  return processor;
137
66
  };
138
-
139
- // TODO(dmaretskyi): Extract.
140
- export const Stable = Object.freeze({
141
- array: [] as readonly never[],
142
- object: {} as {},
143
- });
@@ -2,90 +2,63 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { type AiTool, AiToolkit } from '@effect/ai';
5
6
  import { Layer } from 'effect';
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
9
  import { Capabilities, useCapabilities } from '@dxos/app-framework';
12
10
  import { makeToolExecutionServiceFromFunctions, makeToolResolverFromFunctions } from '@dxos/assistant';
13
11
  import { type Space } from '@dxos/client/echo';
14
12
  import {
15
- ConfiguredCredentialsService,
13
+ ComputeEventLogger,
16
14
  CredentialsService,
17
15
  DatabaseService,
18
- EventLogger,
19
- FunctionCallService,
16
+ LocalFunctionExecutionService,
20
17
  QueueService,
18
+ RemoteFunctionExecutionService,
21
19
  TracingService,
22
20
  } from '@dxos/functions';
23
21
 
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;
22
+ import { AssistantCapabilities } from '../capabilities';
23
+ import { type AiChatServices } from '../processor';
24
+ import { type Assistant } from '../types';
37
25
 
38
26
  export type UseChatServicesProps = {
39
27
  space?: Space;
28
+ chat?: Assistant.Chat;
40
29
  };
41
30
 
42
31
  /**
43
32
  * Construct service layer.
44
33
  */
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();
34
+ export const useChatServices = ({ space, chat }: UseChatServicesProps): Layer.Layer<AiChatServices> | undefined => {
35
+ const serviceLayer = useCapabilities(AssistantCapabilities.AiServiceLayer).at(0) ?? Layer.die('AiService not found');
36
+ const functions = useCapabilities(Capabilities.Functions);
37
+ const toolkits = useCapabilities(Capabilities.Toolkit);
38
+ const handlers = useCapabilities(Capabilities.ToolkitHandler);
50
39
 
51
40
  return useMemo(() => {
41
+ const allFunctions = functions.flat();
42
+ // TODO(wittjosiah): Don't cast.
43
+ const toolkit = AiToolkit.merge(...toolkits) as AiToolkit.Any as AiToolkit.AiToolkit<AiTool.Any>;
44
+ const handlersLayer = Layer.mergeAll(Layer.empty, ...handlers);
45
+
52
46
  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,
47
+ serviceLayer,
48
+ makeToolResolverFromFunctions(allFunctions, toolkit),
49
+ makeToolExecutionServiceFromFunctions(allFunctions, toolkit, handlersLayer),
50
+ CredentialsService.layerFromDatabase(),
51
+ ComputeEventLogger.layerFromTracing,
52
+ ).pipe(
53
+ Layer.provideMerge(
54
+ Layer.mergeAll(
55
+ space ? DatabaseService.layer(space.db) : DatabaseService.notAvailable,
56
+ space ? QueueService.layer(space.queues) : QueueService.notAvailable,
57
+ chat?.traceQueue?.target ? TracingService.layerQueue(chat.traceQueue?.target) : TracingService.layerNoop,
58
+ LocalFunctionExecutionService.layer,
59
+ RemoteFunctionExecutionService.mockLayer,
60
+ ),
61
+ ),
62
62
  );
63
- }, [space, toolRegistry, toolResolver]);
64
- };
65
-
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
- };
78
-
79
- // TODO(burdon): Factor out.
80
- const useToolRegistry = (): ToolRegistry => {
81
- const tools = useCapabilities(Capabilities.Tools).flat();
82
- 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)]);
63
+ }, [space, functions, toolkits, handlers, chat?.traceQueue?.target]);
91
64
  };
@@ -0,0 +1,18 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useMemo } from 'react';
6
+
7
+ import { AiContextBinder } from '@dxos/assistant';
8
+
9
+ import { type Assistant } from '../types';
10
+
11
+ export const useContextBinder = (chat: Assistant.Chat | undefined): AiContextBinder | undefined => {
12
+ const binder = useMemo(() => {
13
+ const queue = chat?.queue.target;
14
+ return queue && new AiContextBinder(queue);
15
+ }, [chat]);
16
+
17
+ return binder;
18
+ };
@@ -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,20 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useMemo } from 'react';
6
+
7
+ import { type Queue } from '@dxos/client/echo';
8
+ import { Obj, type Ref } from '@dxos/echo';
9
+ import { useQueue } from '@dxos/react-client/echo';
10
+
11
+ import { ExecutionGraph } from '../execution-graph';
12
+
13
+ export const useExecutionGraph = (queueRef?: Ref.Ref<Queue>, lastRequest = false) => {
14
+ const queue = useQueue(queueRef?.dxn);
15
+ return useMemo(() => {
16
+ const graph = new ExecutionGraph();
17
+ graph.addEvents(queue?.objects.filter(Obj.isObject) ?? []);
18
+ return graph.getGraph(lastRequest);
19
+ }, [queue?.objects, lastRequest]);
20
+ };
@@ -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 { Option } from 'effect';
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,45 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useMemo } from 'react';
6
+
7
+ import { type Space } from '@dxos/client/echo';
8
+ import { Type } from '@dxos/echo';
9
+ import { type TypeaheadContext, matchCompletion, staticCompletion, typeahead } from '@dxos/react-ui-editor';
10
+
11
+ // TODO(burdon): Move def to @dxos/echo.
12
+ export const useMatcherExtension = (space: Space) => {
13
+ return useMemo(() => {
14
+ const handleComplete = ({ line }: TypeaheadContext) => {
15
+ const words = line.split(/\s+/).filter(Boolean);
16
+ if (words.length > 0) {
17
+ const word = words.at(-1)!;
18
+
19
+ // Match type.
20
+ const match = word.match(/^type:(.+)/);
21
+ if (match) {
22
+ const part = match[1];
23
+ for (const schema of space?.db.graph.schemaRegistry.schemas ?? []) {
24
+ const typename = Type.getTypename(schema);
25
+ if (typename) {
26
+ const completion = matchCompletion(typename, part);
27
+ if (completion) {
28
+ return completion;
29
+ }
30
+ }
31
+ }
32
+ }
33
+
34
+ // Match static.
35
+ return staticCompletion(['type:', 'AND', 'OR', 'NOT'])({ line });
36
+ }
37
+ };
38
+
39
+ return [
40
+ typeahead({
41
+ onComplete: handleComplete,
42
+ }),
43
+ ];
44
+ }, [space]);
45
+ };
@@ -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());
@@ -0,0 +1,33 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useMemo, useSyncExternalStore } from 'react';
6
+
7
+ import { type Space } from '@dxos/client/echo';
8
+ import { type Ref } from '@dxos/echo';
9
+
10
+ // TODO(burdon): Factor out.
11
+ export const useResolvedRef = <T>(space: Space, ref: Ref.Ref<T>): T | undefined => {
12
+ const { subscribe, getSnapshot } = useMemo(() => {
13
+ const resolver = space.db.graph.createRefResolver({});
14
+ let currentCallback: (() => void) | undefined = undefined;
15
+
16
+ return {
17
+ subscribe: (cb: () => void) => {
18
+ currentCallback = cb;
19
+ return () => {
20
+ if (currentCallback === cb) {
21
+ currentCallback = undefined;
22
+ }
23
+ };
24
+ },
25
+ getSnapshot: () =>
26
+ resolver?.resolveSync(ref.dxn, true, () => {
27
+ currentCallback?.();
28
+ }) as T | undefined,
29
+ };
30
+ }, [space, ref.dxn.toString()]);
31
+
32
+ return useSyncExternalStore<T | undefined>(subscribe, getSnapshot);
33
+ };
package/src/meta.ts CHANGED
@@ -11,7 +11,7 @@ export const ASSISTANT_DIALOG = `${ASSISTANT_PLUGIN}/assistant/dialog`;
11
11
  export const meta: PluginMeta = {
12
12
  id: ASSISTANT_PLUGIN,
13
13
  name: 'Assistant',
14
- description: 'The Assistant tab allows you to chat with your spaces inside of Composer.',
14
+ description: 'The Assistant plugin allows you to chat with your spaces inside of Composer.',
15
15
  icon: 'ph--atom--regular',
16
16
  source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',
17
17
  tags: ['labs'],