@dxos/plugin-assistant 0.8.2-staging.7ac8446 → 0.8.3-main.672df60

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 (365) hide show
  1. package/dist/lib/browser/AssistantDialog-UAZSN6GT.mjs +46 -0
  2. package/dist/lib/browser/AssistantDialog-UAZSN6GT.mjs.map +7 -0
  3. package/dist/lib/browser/BlueprintEditor-DGV4KJDM.mjs +45 -0
  4. package/dist/lib/browser/BlueprintEditor-DGV4KJDM.mjs.map +7 -0
  5. package/dist/lib/browser/ChatContainer-UTN3AO5U.mjs +39 -0
  6. package/dist/lib/browser/ChatContainer-UTN3AO5U.mjs.map +7 -0
  7. package/dist/lib/browser/TemplateContainer-AKUYL4AV.mjs +28 -0
  8. package/dist/lib/browser/TemplateContainer-AKUYL4AV.mjs.map +7 -0
  9. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs → ai-client-COXVUC6V.mjs} +6 -6
  10. package/dist/lib/browser/ai-client-COXVUC6V.mjs.map +7 -0
  11. package/dist/lib/browser/app-graph-builder-56OZ5RW4.mjs +206 -0
  12. package/dist/lib/browser/app-graph-builder-56OZ5RW4.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-TXJWGWJ7.mjs → chunk-3F44MBHU.mjs} +3 -3
  14. package/dist/lib/browser/chunk-3F44MBHU.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-6SD7S7W5.mjs +157 -0
  16. package/dist/lib/browser/chunk-6SD7S7W5.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-JQFUME3B.mjs +87 -0
  18. package/dist/lib/{node-esm/chunk-PBZA7XJR.mjs.map → browser/chunk-JQFUME3B.mjs.map} +1 -1
  19. package/dist/lib/browser/chunk-NBSPGIHL.mjs +206 -0
  20. package/dist/lib/browser/chunk-NBSPGIHL.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-Q6UZ4F3H.mjs +96 -0
  22. package/dist/lib/browser/chunk-Q6UZ4F3H.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-FMB7RGMP.mjs → chunk-Q6XE3O3E.mjs} +1714 -1536
  24. package/dist/lib/browser/chunk-Q6XE3O3E.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-3HCI5FIL.mjs → chunk-XOZ7YMO3.mjs} +3 -3
  26. package/dist/lib/browser/{chunk-3HCI5FIL.mjs.map → chunk-XOZ7YMO3.mjs.map} +1 -1
  27. package/dist/lib/browser/index.mjs +47 -23
  28. package/dist/lib/browser/index.mjs.map +3 -3
  29. package/dist/lib/browser/intent-resolver-GWELYIX2.mjs +39 -0
  30. package/dist/lib/browser/intent-resolver-GWELYIX2.mjs.map +7 -0
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/react-surface-DGS34EON.mjs +144 -0
  33. package/dist/lib/browser/react-surface-DGS34EON.mjs.map +7 -0
  34. package/dist/lib/browser/{settings-U6UFQX32.mjs → settings-BTFB7IQ6.mjs} +5 -5
  35. package/dist/lib/browser/settings-BTFB7IQ6.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +6 -2
  37. package/dist/lib/node/AssistantDialog-RTB5Q7FP.cjs +72 -0
  38. package/dist/lib/node/AssistantDialog-RTB5Q7FP.cjs.map +7 -0
  39. package/dist/lib/node/BlueprintEditor-43VM3XPO.cjs +72 -0
  40. package/dist/lib/node/BlueprintEditor-43VM3XPO.cjs.map +7 -0
  41. package/dist/lib/node/{ChatContainer-ZJ5JXF6A.cjs → ChatContainer-P3JL4VZ7.cjs} +25 -19
  42. package/dist/lib/node/ChatContainer-P3JL4VZ7.cjs.map +7 -0
  43. package/dist/lib/node/TemplateContainer-CTG2MB4W.cjs +58 -0
  44. package/dist/lib/node/TemplateContainer-CTG2MB4W.cjs.map +7 -0
  45. package/dist/lib/node/{ai-client-URCCYU6B.cjs → ai-client-R2CGEYZW.cjs} +13 -13
  46. package/dist/lib/node/ai-client-R2CGEYZW.cjs.map +7 -0
  47. package/dist/lib/node/app-graph-builder-QLF353LH.cjs +216 -0
  48. package/dist/lib/node/app-graph-builder-QLF353LH.cjs.map +7 -0
  49. package/dist/lib/node/{chunk-XI2ARIEO.cjs → chunk-4EEWTDQK.cjs} +45 -39
  50. package/dist/lib/node/{chunk-XI2ARIEO.cjs.map → chunk-4EEWTDQK.cjs.map} +1 -1
  51. package/dist/lib/node/chunk-BWL5A3O5.cjs +184 -0
  52. package/dist/lib/node/chunk-BWL5A3O5.cjs.map +7 -0
  53. package/dist/lib/node/chunk-HRNIUYVQ.cjs +128 -0
  54. package/dist/lib/node/chunk-HRNIUYVQ.cjs.map +7 -0
  55. package/dist/lib/node/{chunk-Q5XWEMHB.cjs → chunk-P74TWGMG.cjs} +6 -6
  56. package/dist/lib/node/{chunk-Q5XWEMHB.cjs.map → chunk-P74TWGMG.cjs.map} +1 -1
  57. package/dist/lib/node/{chunk-RPBKMP2E.cjs → chunk-PG7YNQ4R.cjs} +1523 -1338
  58. package/dist/lib/node/chunk-PG7YNQ4R.cjs.map +7 -0
  59. package/dist/lib/node/{chunk-GBUNQ257.cjs → chunk-TS3H5OSX.cjs} +7 -7
  60. package/dist/lib/node/chunk-TS3H5OSX.cjs.map +7 -0
  61. package/dist/lib/node/chunk-UNVDZOLA.cjs +231 -0
  62. package/dist/lib/node/chunk-UNVDZOLA.cjs.map +7 -0
  63. package/dist/lib/node/index.cjs +88 -65
  64. package/dist/lib/node/index.cjs.map +3 -3
  65. package/dist/lib/node/{intent-resolver-R3OSTIMH.cjs → intent-resolver-U7663JU7.cjs} +15 -21
  66. package/dist/lib/node/intent-resolver-U7663JU7.cjs.map +7 -0
  67. package/dist/lib/node/meta.json +1 -1
  68. package/dist/lib/node/react-surface-QXZTILW6.cjs +157 -0
  69. package/dist/lib/node/react-surface-QXZTILW6.cjs.map +7 -0
  70. package/dist/lib/node/{settings-TXGRCYAL.cjs → settings-LBJMT6YB.cjs} +9 -9
  71. package/dist/lib/node/settings-LBJMT6YB.cjs.map +7 -0
  72. package/dist/lib/node/types/index.cjs +17 -13
  73. package/dist/lib/node/types/index.cjs.map +2 -2
  74. package/dist/lib/node-esm/AssistantDialog-DONAO6SA.mjs +47 -0
  75. package/dist/lib/node-esm/AssistantDialog-DONAO6SA.mjs.map +7 -0
  76. package/dist/lib/node-esm/BlueprintEditor-CTARB2FO.mjs +47 -0
  77. package/dist/lib/node-esm/BlueprintEditor-CTARB2FO.mjs.map +7 -0
  78. package/dist/lib/node-esm/ChatContainer-FVIGCDIG.mjs +40 -0
  79. package/dist/lib/node-esm/ChatContainer-FVIGCDIG.mjs.map +7 -0
  80. package/dist/lib/node-esm/TemplateContainer-IVDQ4XQG.mjs +29 -0
  81. package/dist/lib/node-esm/TemplateContainer-IVDQ4XQG.mjs.map +7 -0
  82. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs → ai-client-I5LXHMOZ.mjs} +6 -6
  83. package/dist/lib/node-esm/ai-client-I5LXHMOZ.mjs.map +7 -0
  84. package/dist/lib/node-esm/app-graph-builder-5YX5TKKT.mjs +207 -0
  85. package/dist/lib/node-esm/app-graph-builder-5YX5TKKT.mjs.map +7 -0
  86. package/dist/lib/node-esm/{chunk-ECRK6TUQ.mjs → chunk-BB2TAT4P.mjs} +3 -3
  87. package/dist/lib/node-esm/{chunk-ECRK6TUQ.mjs.map → chunk-BB2TAT4P.mjs.map} +1 -1
  88. package/dist/lib/node-esm/chunk-CDAILLCU.mjs +98 -0
  89. package/dist/lib/node-esm/chunk-CDAILLCU.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-GJE4WCUJ.mjs +158 -0
  91. package/dist/lib/node-esm/chunk-GJE4WCUJ.mjs.map +7 -0
  92. package/dist/lib/node-esm/{chunk-6JK5HEUQ.mjs → chunk-HLPGKJ7N.mjs} +3 -3
  93. package/dist/lib/node-esm/chunk-HLPGKJ7N.mjs.map +7 -0
  94. package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs → chunk-MNH6E6EB.mjs} +1714 -1536
  95. package/dist/lib/node-esm/chunk-MNH6E6EB.mjs.map +7 -0
  96. package/dist/lib/node-esm/{chunk-PBZA7XJR.mjs → chunk-OYN6HLXZ.mjs} +42 -36
  97. package/dist/lib/{browser/chunk-NFUHCW2J.mjs.map → node-esm/chunk-OYN6HLXZ.mjs.map} +1 -1
  98. package/dist/lib/node-esm/chunk-TQYSF2GS.mjs +207 -0
  99. package/dist/lib/node-esm/chunk-TQYSF2GS.mjs.map +7 -0
  100. package/dist/lib/node-esm/index.mjs +47 -23
  101. package/dist/lib/node-esm/index.mjs.map +3 -3
  102. package/dist/lib/node-esm/intent-resolver-N5TM3RTL.mjs +40 -0
  103. package/dist/lib/node-esm/intent-resolver-N5TM3RTL.mjs.map +7 -0
  104. package/dist/lib/node-esm/meta.json +1 -1
  105. package/dist/lib/node-esm/react-surface-FTKGQQD2.mjs +145 -0
  106. package/dist/lib/node-esm/react-surface-FTKGQQD2.mjs.map +7 -0
  107. package/dist/lib/node-esm/{settings-DZU5PNXM.mjs → settings-TGCCAH5D.mjs} +5 -5
  108. package/dist/lib/node-esm/settings-TGCCAH5D.mjs.map +7 -0
  109. package/dist/lib/node-esm/types/index.mjs +6 -2
  110. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/ai-client.d.ts +3 -3
  112. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  114. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  116. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/index.d.ts +3 -179
  118. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  121. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +3 -1
  122. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  123. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  124. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts +8 -0
  125. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts.map +1 -0
  126. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts +8 -0
  127. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts.map +1 -0
  128. package/dist/types/src/components/BlueprintEditor/index.d.ts +3 -0
  129. package/dist/types/src/components/BlueprintEditor/index.d.ts.map +1 -0
  130. package/dist/types/src/components/ChatContainer.d.ts +4 -3
  131. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  132. package/dist/types/src/components/Prompt/Prompt.d.ts +5 -2
  133. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
  134. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +6 -3
  135. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/Prompt/PromptBar.d.ts +9 -4
  137. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  138. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts +9 -0
  139. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts.map +1 -0
  140. package/dist/types/src/components/Prompt/autocomplete.d.ts +5 -1
  141. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -1
  142. package/dist/types/src/components/Prompt/references.d.ts.map +1 -1
  143. package/dist/types/src/components/PromptSettings.d.ts +6 -0
  144. package/dist/types/src/components/PromptSettings.d.ts.map +1 -0
  145. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  146. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  147. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -2
  149. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  150. package/dist/types/src/components/Thread/Thread.d.ts +2 -2
  151. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  152. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/Thread/ThreadContainer.d.ts +1 -1
  154. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  155. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  156. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  157. package/dist/types/src/components/Thread/ThreadMessage.d.ts +4 -2
  158. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  159. package/dist/types/src/components/Thread/ToolInvocations.d.ts +1 -1
  160. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -1
  161. package/dist/types/src/components/Thread/reducer.d.ts +1 -1
  162. package/dist/types/src/components/Thread/reducer.d.ts.map +1 -1
  163. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -2
  164. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  165. package/dist/types/src/components/index.d.ts +5 -6
  166. package/dist/types/src/components/index.d.ts.map +1 -1
  167. package/dist/types/src/experimental/transcription/index.d.ts +1 -0
  168. package/dist/types/src/experimental/transcription/index.d.ts.map +1 -0
  169. package/dist/types/src/hooks/index.d.ts +0 -1
  170. package/dist/types/src/hooks/index.d.ts.map +1 -1
  171. package/dist/types/src/hooks/processor.d.ts +6 -5
  172. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  173. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  174. package/dist/types/src/hooks/useContextProvider.d.ts +1 -1
  175. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  176. package/dist/types/src/hooks/useMessageQueue.d.ts +11 -10
  177. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  178. package/dist/types/src/hooks/useServices.d.ts.map +1 -1
  179. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -1
  180. package/dist/types/src/parser/filter-generator.d.ts +4 -0
  181. package/dist/types/src/parser/filter-generator.d.ts.map +1 -0
  182. package/dist/types/src/parser/filter-generator.test.d.ts +2 -0
  183. package/dist/types/src/parser/filter-generator.test.d.ts.map +1 -0
  184. package/dist/types/src/parser/index.d.ts +4 -0
  185. package/dist/types/src/parser/index.d.ts.map +1 -0
  186. package/dist/types/src/parser/query-parser.d.ts +15 -0
  187. package/dist/types/src/parser/query-parser.d.ts.map +1 -0
  188. package/dist/types/src/parser/query-parser.test.d.ts +2 -0
  189. package/dist/types/src/parser/query-parser.test.d.ts.map +1 -0
  190. package/dist/types/src/parser/types.d.ts +24 -0
  191. package/dist/types/src/parser/types.d.ts.map +1 -0
  192. package/dist/types/src/stories/Prompt.stories.d.ts +8 -0
  193. package/dist/types/src/stories/Prompt.stories.d.ts.map +1 -0
  194. package/dist/types/src/stories/Query.stories.d.ts +19 -0
  195. package/dist/types/src/stories/Query.stories.d.ts.map +1 -0
  196. package/dist/types/src/stories/Research.stories.d.ts +15 -0
  197. package/dist/types/src/stories/Research.stories.d.ts.map +1 -0
  198. package/dist/types/src/stories/test-data.d.ts +3 -0
  199. package/dist/types/src/stories/test-data.d.ts.map +1 -0
  200. package/dist/types/src/stories/testing.d.ts +12 -0
  201. package/dist/types/src/stories/testing.d.ts.map +1 -0
  202. package/dist/types/src/testing/index.d.ts +1 -0
  203. package/dist/types/src/testing/index.d.ts.map +1 -1
  204. package/dist/types/src/testing/test-blueprint.d.ts +14 -0
  205. package/dist/types/src/testing/test-blueprint.d.ts.map +1 -0
  206. package/dist/types/src/testing/test-functions.d.ts +1 -1
  207. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  208. package/dist/types/src/tools/function.d.ts +4 -4
  209. package/dist/types/src/tools/function.d.ts.map +1 -1
  210. package/dist/types/src/tools/openapi.d.ts +3 -3
  211. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  212. package/dist/types/src/translations.d.ts +6 -0
  213. package/dist/types/src/translations.d.ts.map +1 -1
  214. package/dist/types/src/types/chat.d.ts +18 -8
  215. package/dist/types/src/types/chat.d.ts.map +1 -1
  216. package/dist/types/src/types/service.d.ts +96 -95
  217. package/dist/types/src/types/service.d.ts.map +1 -1
  218. package/dist/types/src/types/template.d.ts +52 -52
  219. package/dist/types/src/types/template.d.ts.map +1 -1
  220. package/dist/types/src/types/types.d.ts +34 -23
  221. package/dist/types/src/types/types.d.ts.map +1 -1
  222. package/dist/types/tsconfig.tsbuildinfo +1 -1
  223. package/package.json +79 -61
  224. package/src/AssistantPlugin.tsx +12 -11
  225. package/src/capabilities/ai-client.ts +5 -6
  226. package/src/capabilities/app-graph-builder.ts +173 -135
  227. package/src/capabilities/capabilities.ts +1 -1
  228. package/src/capabilities/index.ts +1 -1
  229. package/src/capabilities/intent-resolver.ts +10 -11
  230. package/src/capabilities/react-surface.tsx +88 -22
  231. package/src/capabilities/settings.ts +2 -2
  232. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +2 -2
  233. package/src/components/AmbientDialog/AmbientDialog.tsx +27 -13
  234. package/src/components/AssistantDialog.tsx +1 -1
  235. package/src/components/AssistantSettings/AssistantSettings.tsx +29 -7
  236. package/src/components/BlueprintEditor/BlueprintEditor.stories.tsx +32 -0
  237. package/src/components/BlueprintEditor/BlueprintEditor.tsx +40 -0
  238. package/src/components/BlueprintEditor/index.ts +7 -0
  239. package/src/components/ChatContainer.tsx +6 -8
  240. package/src/components/Prompt/Prompt.stories.tsx +60 -52
  241. package/src/components/Prompt/Prompt.tsx +24 -10
  242. package/src/components/Prompt/PromptBar.stories.tsx +69 -0
  243. package/src/components/Prompt/PromptBar.tsx +82 -88
  244. package/src/components/Prompt/autocomplete.ts +14 -8
  245. package/src/components/Prompt/references.ts +3 -3
  246. package/src/components/PromptSettings.tsx +91 -0
  247. package/src/components/TemplateContainer.tsx +3 -79
  248. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +4 -4
  249. package/src/components/TemplateEditor/TemplateForm.stories.tsx +3 -3
  250. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  251. package/src/components/Thread/Thread.stories.tsx +14 -17
  252. package/src/components/Thread/Thread.tsx +2 -2
  253. package/src/components/Thread/ThreadContainer.stories.tsx +83 -62
  254. package/src/components/Thread/ThreadContainer.tsx +26 -5
  255. package/src/components/Thread/ThreadMessage.tsx +49 -11
  256. package/src/components/Thread/ToolInvocations.tsx +9 -7
  257. package/src/components/Thread/reducer.ts +1 -1
  258. package/src/components/Toolbox/Toolbox.stories.tsx +4 -4
  259. package/src/components/Toolbox/Toolbox.tsx +5 -4
  260. package/src/components/index.ts +4 -1
  261. package/src/experimental/transcription/index.ts +3 -0
  262. package/src/hooks/index.ts +0 -1
  263. package/src/hooks/processor.ts +68 -8
  264. package/src/hooks/useChatProcessor.tsx +12 -11
  265. package/src/hooks/useContextProvider.ts +20 -17
  266. package/src/hooks/useMessageQueue.ts +5 -5
  267. package/src/meta.ts +2 -2
  268. package/src/parser/filter-generator.test.ts +32 -0
  269. package/src/parser/filter-generator.ts +81 -0
  270. package/src/parser/index.ts +7 -0
  271. package/src/parser/query-parser.test.ts +139 -0
  272. package/src/parser/query-parser.ts +199 -0
  273. package/src/parser/types.ts +34 -0
  274. package/src/shims.d.ts +8 -0
  275. package/src/stories/Prompt.stories.tsx +60 -0
  276. package/src/stories/Query.stories.tsx +515 -0
  277. package/src/stories/Research.stories.tsx +496 -0
  278. package/src/stories/test-data.ts +128 -0
  279. package/src/stories/testing.ts +60 -0
  280. package/src/testing/index.ts +1 -0
  281. package/src/testing/test-blueprint.ts +50 -0
  282. package/src/testing/test-functions.ts +1 -1
  283. package/src/testing/test-services.ts +6 -6
  284. package/src/tools/function.ts +11 -12
  285. package/src/tools/openapi.test.ts +18 -19
  286. package/src/tools/openapi.ts +24 -17
  287. package/src/translations.ts +14 -6
  288. package/src/types/chat.ts +27 -4
  289. package/src/types/service.ts +39 -37
  290. package/src/types/template.ts +27 -25
  291. package/src/types/types.ts +24 -19
  292. package/dist/lib/browser/AssistantDialog-YSHMAHW5.mjs +0 -117
  293. package/dist/lib/browser/AssistantDialog-YSHMAHW5.mjs.map +0 -7
  294. package/dist/lib/browser/ChatContainer-V5GP7DYF.mjs +0 -33
  295. package/dist/lib/browser/ChatContainer-V5GP7DYF.mjs.map +0 -7
  296. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs +0 -78
  297. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs.map +0 -7
  298. package/dist/lib/browser/ai-client-CDZLSNXE.mjs.map +0 -7
  299. package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs +0 -209
  300. package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-FMB7RGMP.mjs.map +0 -7
  302. package/dist/lib/browser/chunk-IAMR2FAE.mjs +0 -183
  303. package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +0 -7
  304. package/dist/lib/browser/chunk-KYMKVE6M.mjs +0 -128
  305. package/dist/lib/browser/chunk-KYMKVE6M.mjs.map +0 -7
  306. package/dist/lib/browser/chunk-NFUHCW2J.mjs +0 -81
  307. package/dist/lib/browser/chunk-TXJWGWJ7.mjs.map +0 -7
  308. package/dist/lib/browser/intent-resolver-WJGLKKVO.mjs +0 -46
  309. package/dist/lib/browser/intent-resolver-WJGLKKVO.mjs.map +0 -7
  310. package/dist/lib/browser/react-surface-57VRDOQT.mjs +0 -90
  311. package/dist/lib/browser/react-surface-57VRDOQT.mjs.map +0 -7
  312. package/dist/lib/browser/settings-U6UFQX32.mjs.map +0 -7
  313. package/dist/lib/node/AssistantDialog-YI2BSGSX.cjs +0 -141
  314. package/dist/lib/node/AssistantDialog-YI2BSGSX.cjs.map +0 -7
  315. package/dist/lib/node/ChatContainer-ZJ5JXF6A.cjs.map +0 -7
  316. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs +0 -104
  317. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs.map +0 -7
  318. package/dist/lib/node/ai-client-URCCYU6B.cjs.map +0 -7
  319. package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs +0 -220
  320. package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs.map +0 -7
  321. package/dist/lib/node/chunk-APRU3QWK.cjs +0 -206
  322. package/dist/lib/node/chunk-APRU3QWK.cjs.map +0 -7
  323. package/dist/lib/node/chunk-GBUNQ257.cjs.map +0 -7
  324. package/dist/lib/node/chunk-RPBKMP2E.cjs.map +0 -7
  325. package/dist/lib/node/chunk-ZKOC4ZFY.cjs +0 -152
  326. package/dist/lib/node/chunk-ZKOC4ZFY.cjs.map +0 -7
  327. package/dist/lib/node/intent-resolver-R3OSTIMH.cjs.map +0 -7
  328. package/dist/lib/node/react-surface-NUQTM6MS.cjs +0 -106
  329. package/dist/lib/node/react-surface-NUQTM6MS.cjs.map +0 -7
  330. package/dist/lib/node/settings-TXGRCYAL.cjs.map +0 -7
  331. package/dist/lib/node-esm/AssistantDialog-U2FQX5TD.mjs +0 -118
  332. package/dist/lib/node-esm/AssistantDialog-U2FQX5TD.mjs.map +0 -7
  333. package/dist/lib/node-esm/ChatContainer-QW3OOXTT.mjs +0 -34
  334. package/dist/lib/node-esm/ChatContainer-QW3OOXTT.mjs.map +0 -7
  335. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs +0 -79
  336. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs.map +0 -7
  337. package/dist/lib/node-esm/ai-client-WMHS5EGV.mjs.map +0 -7
  338. package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs +0 -210
  339. package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs.map +0 -7
  340. package/dist/lib/node-esm/chunk-6JK5HEUQ.mjs.map +0 -7
  341. package/dist/lib/node-esm/chunk-GBBXIW5F.mjs +0 -129
  342. package/dist/lib/node-esm/chunk-GBBXIW5F.mjs.map +0 -7
  343. package/dist/lib/node-esm/chunk-MVDAY3CZ.mjs.map +0 -7
  344. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +0 -184
  345. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs.map +0 -7
  346. package/dist/lib/node-esm/intent-resolver-H32TL4X6.mjs +0 -47
  347. package/dist/lib/node-esm/intent-resolver-H32TL4X6.mjs.map +0 -7
  348. package/dist/lib/node-esm/react-surface-JBVZF6CP.mjs +0 -91
  349. package/dist/lib/node-esm/react-surface-JBVZF6CP.mjs.map +0 -7
  350. package/dist/lib/node-esm/settings-DZU5PNXM.mjs.map +0 -7
  351. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
  352. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
  353. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
  354. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
  355. package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
  356. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
  357. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  358. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  359. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  360. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  361. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
  362. package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
  363. package/src/components/ServiceRegistry/index.ts +0 -5
  364. package/src/hooks/invocation-handler.ts +0 -107
  365. package/src/hooks/useLocalTriggerManager.ts +0 -82
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React, { type FC, useEffect, useMemo, useRef, useState } from 'react';
6
6
 
7
- import { type Message, type ToolType } from '@dxos/artifact';
7
+ import { type AgentStatus, type Message, type Tool } from '@dxos/ai';
8
8
  import { log } from '@dxos/log';
9
9
  import { type ThemedClassName } from '@dxos/react-ui';
10
10
  import { NumericTabs, StatusRoll, ToggleContainer } from '@dxos/react-ui-components';
@@ -17,22 +17,22 @@ export const isToolMessage = (message: Message) => {
17
17
  return message.content.some((block) => block.type === 'tool_use' || block.type === 'tool_result');
18
18
  };
19
19
 
20
- const getToolName = (tool: ToolType) => {
20
+ const getToolName = (tool: Tool) => {
21
21
  return tool.namespace && tool.function ? `${tool.namespace}:${tool.function}` : tool.name.split('_').pop();
22
22
  };
23
23
 
24
- const getToolCaption = (tool: ToolType | undefined) => {
24
+ const getToolCaption = (tool: Tool | undefined, status: AgentStatus | undefined) => {
25
25
  if (!tool) {
26
26
  return 'Calling tool...';
27
27
  }
28
28
 
29
- return tool.caption ?? `Calling ${getToolName(tool)}...`;
29
+ return status?.message ?? tool.caption ?? `Calling ${getToolName(tool)}...`;
30
30
  };
31
31
 
32
32
  export const ToolBlock: FC<ThemedClassName<ThreadMessageProps>> = ({ classNames, message, tools }) => {
33
33
  const { content = [] } = message;
34
34
 
35
- let request: { tool: ToolType | undefined; block: any } | undefined;
35
+ let request: { tool: Tool | undefined; block: any } | undefined;
36
36
  const blocks = content.filter((block) => block.type === 'tool_use' || block.type === 'tool_result');
37
37
  const items = blocks
38
38
  .map((block) => {
@@ -43,8 +43,10 @@ export const ToolBlock: FC<ThemedClassName<ThreadMessageProps>> = ({ classNames,
43
43
  return null;
44
44
  }
45
45
 
46
+ log.info('tool_use', { tool: request?.tool, status: block.currentStatus });
47
+
46
48
  request = { tool: tools?.find((tool) => tool.name === block.name), block };
47
- return { title: getToolCaption(request.tool), block };
49
+ return { title: getToolCaption(request.tool, block.currentStatus), block };
48
50
  }
49
51
 
50
52
  case 'tool_result': {
@@ -53,7 +55,7 @@ export const ToolBlock: FC<ThemedClassName<ThreadMessageProps>> = ({ classNames,
53
55
  return { title: 'Error', block };
54
56
  }
55
57
 
56
- return { title: `${getToolCaption(request.tool)} (Success)`, block };
58
+ return { title: `${getToolCaption(request.tool, undefined)} (Success)`, block };
57
59
  }
58
60
 
59
61
  default: {
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Message } from '@dxos/artifact';
5
+ import { type Message } from '@dxos/ai';
6
6
 
7
7
  // TODO(burdon): Move to util?
8
8
  type Reducer<R, I> = (acc: R, value: I) => R;
@@ -32,7 +32,7 @@ const DefaultStory = (props: ToolboxProps) => {
32
32
  };
33
33
 
34
34
  const meta: Meta<typeof Toolbox> = {
35
- title: 'plugins/plugin-automation/Toolbox',
35
+ title: 'plugins/plugin-assistant/Toolbox',
36
36
  component: Toolbox,
37
37
  render: DefaultStory,
38
38
  decorators: [
@@ -44,7 +44,7 @@ const meta: Meta<typeof Toolbox> = {
44
44
  await client.halo.createIdentity();
45
45
  },
46
46
  }),
47
- SpacePlugin({ observability: false }),
47
+ SpacePlugin(),
48
48
  SettingsPlugin(),
49
49
  IntentPlugin(),
50
50
  ChessPlugin(),
@@ -54,11 +54,11 @@ const meta: Meta<typeof Toolbox> = {
54
54
  capabilities,
55
55
  }),
56
56
  withTheme,
57
- withLayout({ tooltips: true }),
57
+ withLayout(),
58
58
  ],
59
59
  parameters: {
60
- translations,
61
60
  layout: 'centered',
61
+ translations,
62
62
  },
63
63
  };
64
64
 
@@ -4,9 +4,10 @@
4
4
 
5
5
  import React, { useState, useEffect, Fragment, type FC } from 'react';
6
6
 
7
+ import { parseToolName, type Tool } from '@dxos/ai';
7
8
  import { Capabilities, useCapabilities } from '@dxos/app-framework';
8
- import { parseToolName, type ArtifactDefinition, type Tool } from '@dxos/artifact';
9
- import { FunctionType } from '@dxos/functions/types';
9
+ import { type ArtifactDefinition } from '@dxos/artifact';
10
+ import { FunctionType } from '@dxos/functions';
10
11
  import { log } from '@dxos/log';
11
12
  import { Filter, type Space, useQuery } from '@dxos/react-client/echo';
12
13
  import { type ThemedClassName } from '@dxos/react-ui';
@@ -93,7 +94,7 @@ export const ToolboxContainer = ({ classNames, space }: ThemedClassName<{ space?
93
94
  const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);
94
95
 
95
96
  // Registered services.
96
- const services = useQuery(space, Filter.schema(ServiceType));
97
+ const services = useQuery(space, Filter.type(ServiceType));
97
98
  const [serviceTools, setServiceTools] = useState<{ service: ServiceType; tools: Tool[] }[]>([]);
98
99
  useEffect(() => {
99
100
  log('creating service tools...', { services: services.length });
@@ -107,7 +108,7 @@ export const ToolboxContainer = ({ classNames, space }: ThemedClassName<{ space?
107
108
  }, [services]);
108
109
 
109
110
  // Deployed functions.
110
- const functions = useQuery(space, Filter.schema(FunctionType));
111
+ const functions = useQuery(space, Filter.type(FunctionType));
111
112
 
112
113
  return (
113
114
  <Toolbox classNames={classNames} artifacts={artifactDefinitions} services={serviceTools} functions={functions} />
@@ -4,8 +4,10 @@
4
4
 
5
5
  import { lazy } from 'react';
6
6
 
7
+ export * from './AmbientDialog';
7
8
  export * from './AssistantSettings';
8
- export * from './ServiceRegistry';
9
+ export * from './Prompt';
10
+ export * from './PromptSettings';
9
11
  export * from './TemplateEditor';
10
12
  export * from './Thread';
11
13
  export * from './Toolbox';
@@ -14,5 +16,6 @@ export * from './Toolbox';
14
16
  // Repro: open assistant dialog then close.
15
17
  // https://github.com/microsoft/fluentui/issues/34020
16
18
  export const AssistantDialog = lazy(() => import('./AssistantDialog'));
19
+ export const BlueprintEditor = lazy(() => import('./BlueprintEditor'));
17
20
  export const ChatContainer = lazy(() => import('./ChatContainer'));
18
21
  export const TemplateContainer = lazy(() => import('./TemplateContainer'));
@@ -0,0 +1,3 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
@@ -5,7 +5,6 @@
5
5
  export * from './processor';
6
6
 
7
7
  export * from './useChatProcessor';
8
- export * from './useLocalTriggerManager';
9
8
  export * from './useMessageQueue';
10
9
  export * from './useServices';
11
10
  export * from './useTextInputEvents';
@@ -4,12 +4,21 @@
4
4
 
5
5
  import { type Signal, batch, computed, signal } from '@preact/signals-core';
6
6
 
7
+ import {
8
+ DEFAULT_EDGE_MODEL,
9
+ type ExecutableTool,
10
+ type AIServiceClient,
11
+ type GenerateRequest,
12
+ type Message,
13
+ type MessageContentBlock,
14
+ type ToolUseContentBlock,
15
+ } from '@dxos/ai';
7
16
  import { type PromiseIntentDispatcher } from '@dxos/app-framework';
8
- import { type ArtifactDefinition, type Message, type MessageContentBlock, type Tool } from '@dxos/artifact';
9
- import { type AIServiceClient, AISession, DEFAULT_EDGE_MODEL, type GenerateRequest } from '@dxos/assistant';
17
+ import { type ArtifactDefinition } from '@dxos/artifact';
18
+ import { AISession, type ArtifactDiffResolver } from '@dxos/assistant';
10
19
  import { invariant } from '@dxos/invariant';
11
20
  import { log } from '@dxos/log';
12
- import { type Space } from '@dxos/react-client/echo';
21
+ import { Filter, getVersion, type Space } from '@dxos/react-client/echo';
13
22
 
14
23
  // TODO(burdon): Factor out.
15
24
  declare global {
@@ -78,7 +87,7 @@ export class ChatProcessor {
78
87
 
79
88
  constructor(
80
89
  private readonly _ai: AIServiceClient,
81
- private _tools?: Tool[],
90
+ private _tools?: ExecutableTool[],
82
91
  private _artifacts?: ArtifactDefinition[],
83
92
  private readonly _extensions?: ToolContextExtensions,
84
93
  private readonly _options: ChatProcessorOptions = defaultOptions,
@@ -91,7 +100,7 @@ export class ChatProcessor {
91
100
  /**
92
101
  * Update tools.
93
102
  */
94
- setTools(tools: Tool[]) {
103
+ setTools(tools: ExecutableTool[]): void {
95
104
  this._tools = tools;
96
105
  }
97
106
 
@@ -99,7 +108,7 @@ export class ChatProcessor {
99
108
  * Make GPT request.
100
109
  */
101
110
  async request(message: string, options: RequestOptions = {}): Promise<Message[]> {
102
- this._session = new AISession({ operationModel: 'immediate' });
111
+ this._session = new AISession({ operationModel: 'configured' });
103
112
 
104
113
  // Message complete.
105
114
  this._session.message.on((message) => {
@@ -120,22 +129,50 @@ export class ChatProcessor {
120
129
  this._pending.value = [...this._pending.value, message];
121
130
  });
122
131
 
132
+ this._session.toolStatusReport.on(({ message, status }) => {
133
+ const msg = this._pending.peek().find((m) => m.id === message.id);
134
+ const toolUse = msg?.content.find((block) => block.type === 'tool_use');
135
+ if (!toolUse) {
136
+ return;
137
+ }
138
+
139
+ const block = msg?.content.find(
140
+ (block): block is ToolUseContentBlock => block.type === 'tool_use' && block.id === toolUse.id,
141
+ );
142
+ if (block) {
143
+ this._pending.value = this._pending.value.map((m) => {
144
+ if (m.id === message.id) {
145
+ return {
146
+ ...m,
147
+ content: m.content.map((b) =>
148
+ b.type === 'tool_use' && b.id === toolUse.id ? { ...b, currentStatus: status } : b,
149
+ ),
150
+ };
151
+ }
152
+ return m;
153
+ });
154
+ } else {
155
+ log.warn('no block for status report');
156
+ }
157
+ });
158
+
123
159
  try {
124
160
  const messages = await this._session.run({
125
161
  client: this._ai,
126
162
  history: options.history ?? [],
127
163
  artifacts: this._artifacts ?? [],
164
+ requiredArtifactIds: this._artifacts?.map((artifact) => artifact.id) ?? [],
128
165
  tools: this._tools ?? [],
129
166
  prompt: message,
130
167
  systemPrompt: this._options.systemPrompt,
131
168
  extensions: this._extensions,
169
+ artifactDiffResolver: this._artifactDiffResolver,
132
170
  generationOptions: {
133
171
  model: this._options.model,
134
172
  },
135
173
  });
136
174
 
137
- log.info('completed', { messages });
138
-
175
+ log('completed', { messages });
139
176
  options.onComplete?.(this._pending.value);
140
177
  } catch (err) {
141
178
  log.catch(err);
@@ -170,6 +207,29 @@ export class ChatProcessor {
170
207
 
171
208
  return messages;
172
209
  }
210
+
211
+ private _artifactDiffResolver: ArtifactDiffResolver = async (artifacts) => {
212
+ const space = this._extensions?.space;
213
+ if (!space) {
214
+ return new Map();
215
+ }
216
+ const versions = new Map();
217
+ await Promise.all(
218
+ artifacts.map(async (artifact) => {
219
+ const {
220
+ objects: [object],
221
+ } = await space.db.query(Filter.ids(artifact.id)).run();
222
+ if (!object) {
223
+ return;
224
+ }
225
+ versions.set(artifact.id, {
226
+ version: getVersion(object),
227
+ diff: `Current state: ${JSON.stringify(object)}`,
228
+ });
229
+ }),
230
+ );
231
+ return versions;
232
+ };
173
233
  }
174
234
 
175
235
  // TODO(wittjosiah): Move to ai-service-client.
@@ -4,10 +4,10 @@
4
4
 
5
5
  import { useEffect, useMemo, useState } from 'react';
6
6
 
7
+ import { DEFAULT_EDGE_MODEL, DEFAULT_OLLAMA_MODEL, type ExecutableTool } from '@dxos/ai';
7
8
  import { Capabilities, useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework';
8
- import { type AssociatedArtifact, createSystemPrompt, type Tool } from '@dxos/artifact';
9
- import { DEFAULT_EDGE_MODEL, DEFAULT_OLLAMA_MODEL } from '@dxos/assistant';
10
- import { FunctionType } from '@dxos/functions/types';
9
+ import { type AssociatedArtifact, createSystemPrompt } from '@dxos/artifact';
10
+ import { FunctionType } from '@dxos/functions';
11
11
  import { log } from '@dxos/log';
12
12
  import { useConfig } from '@dxos/react-client';
13
13
  import { Filter, fullyQualifiedId, type Space, useQuery } from '@dxos/react-client/echo';
@@ -15,7 +15,7 @@ import { isNonNullable } from '@dxos/util';
15
15
 
16
16
  import { AssistantCapabilities } from '../capabilities';
17
17
  import { ChatProcessor, type ChatProcessorOptions } from '../hooks';
18
- import { covertFunctionToTool, createToolsFromService } from '../tools';
18
+ import { convertFunctionToTool, createToolsFromService } from '../tools';
19
19
  import { type AIChatType, type AssistantSettingsProps, ServiceType } from '../types';
20
20
 
21
21
  type UseChatProcessorProps = {
@@ -33,7 +33,8 @@ export const useChatProcessor = ({
33
33
  chat,
34
34
  space,
35
35
  settings,
36
- part = 'deck',
36
+ // part = 'deck',
37
+ part,
37
38
  associatedArtifact,
38
39
  }: UseChatProcessorProps): ChatProcessor => {
39
40
  const aiClient = useCapability(AssistantCapabilities.AiClient);
@@ -42,8 +43,8 @@ export const useChatProcessor = ({
42
43
  const { dispatchPromise: dispatch } = useIntentDispatcher();
43
44
 
44
45
  // Services.
45
- const services = useQuery(space, Filter.schema(ServiceType));
46
- const [serviceTools, setServiceTools] = useState<Tool[]>([]);
46
+ const services = useQuery(space, Filter.type(ServiceType));
47
+ const [serviceTools, setServiceTools] = useState<ExecutableTool[]>([]);
47
48
  useEffect(() => {
48
49
  log('creating service tools...');
49
50
  queueMicrotask(async () => {
@@ -54,15 +55,15 @@ export const useChatProcessor = ({
54
55
 
55
56
  // Tools and context.
56
57
  const config = useConfig();
57
- const functions = useQuery(space, Filter.schema(FunctionType));
58
+ const functions = useQuery(space, Filter.type(FunctionType));
58
59
  const chatId = useMemo(() => (chat ? fullyQualifiedId(chat) : undefined), [chat]);
59
60
  const [tools, extensions] = useMemo(() => {
60
61
  log('creating tools...');
61
- const tools = [
62
+ const tools: ExecutableTool[] = [
62
63
  ...globalTools.flat(),
63
64
  ...serviceTools,
64
65
  ...functions
65
- .map((fn) => covertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? '', space?.id))
66
+ .map((fn) => convertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? '', space?.id))
66
67
  .filter(isNonNullable),
67
68
  ];
68
69
  const extensions = { space, dispatch, pivotId: chatId, part };
@@ -90,7 +91,7 @@ export const useChatProcessor = ({
90
91
  const processor = useMemo(() => {
91
92
  log('creating processor...', { settings });
92
93
  return new ChatProcessor(aiClient.value, tools, artifactDefinitions, extensions, { model, systemPrompt });
93
- }, [aiClient.value, tools, extensions, model, systemPrompt]);
94
+ }, [aiClient.value, tools, artifactDefinitions, extensions, model, systemPrompt]);
94
95
 
95
96
  return processor;
96
97
  };
@@ -5,10 +5,10 @@
5
5
  import { useMemo } from 'react';
6
6
 
7
7
  import { Capabilities, useCapabilities } from '@dxos/app-framework';
8
- import type { Space } from '@dxos/client/echo';
9
- import { getDXN, getLabel, getSchema } from '@dxos/echo-schema';
8
+ import { Filter, type Space } from '@dxos/client/echo';
9
+ import { Obj, type Type } from '@dxos/echo';
10
+ import { getObjectDXN, getLabel } from '@dxos/echo-schema';
10
11
  import { log } from '@dxos/log';
11
- import { Filter } from '@dxos/react-client/echo';
12
12
 
13
13
  export type ContextProvider = {
14
14
  query: (params: { query: string }) => Promise<Array<{ uri: string; label: string }>>;
@@ -29,25 +29,28 @@ export const useContextProvider = (space?: Space): ContextProvider | undefined =
29
29
  query: async ({ query }) => {
30
30
  const artifactSchemas = artifactDefinitions.map((artifact) => artifact.schema);
31
31
  const { objects } = await space.db
32
- .query(Filter.or(...artifactSchemas.map((schema) => Filter.schema(schema))))
32
+ .query(Filter.or(...artifactSchemas.map((schema) => Filter.type(schema as Type.Schema))))
33
33
  .run();
34
- return objects
35
- .map((object) => {
36
- log.info('object', { object, label: getLabel(getSchema(object)!, object) });
37
- return object;
38
- })
39
- .filter((object) => stringMatch(query, getLabel(getSchema(object)!, object) ?? ''))
40
- .filter((object) => !!getDXN(object))
41
- .map((object) => ({
42
- uri: getDXN(object)!.toString(),
43
- label: getLabel(getSchema(object)!, object) ?? '',
44
- }));
34
+ return (
35
+ objects
36
+ .map((object) => {
37
+ log.info('object', { object, label: getLabel(Obj.getSchema(object)!, object) });
38
+ return object;
39
+ })
40
+ .filter((object) => stringMatch(query, getLabel(Obj.getSchema(object)!, object) ?? ''))
41
+ // TODO(dmaretskyi): `Type.getDXN` (at the point of writing) didn't work here as it was schema-only.
42
+ .filter((object) => !!getObjectDXN(object))
43
+ .map((object) => ({
44
+ uri: getObjectDXN(object as any)!.toString(),
45
+ label: getLabel(Obj.getSchema(object)!, object) ?? '',
46
+ }))
47
+ );
45
48
  },
46
49
  resolveMetadata: async ({ uri }) => {
47
- const object = await space.db.query({ id: uri }).first();
50
+ const object = await space.db.query(Filter.ids(uri)).first();
48
51
  return {
49
52
  uri,
50
- label: getLabel(getSchema(object)!, object) ?? '',
53
+ label: getLabel(Obj.getSchema(object)!, object) ?? '',
51
54
  };
52
55
  },
53
56
  };
@@ -4,8 +4,8 @@
4
4
 
5
5
  import { useMemo } from 'react';
6
6
 
7
- import { type Message } from '@dxos/artifact';
8
- import { DXN, QueueSubspaceTags } from '@dxos/keys';
7
+ import { type Message } from '@dxos/ai';
8
+ import { createQueueDxn } from '@dxos/echo-schema';
9
9
  import { getSpace, useQueue } from '@dxos/react-client/echo';
10
10
 
11
11
  import { type AIChatType } from '../types';
@@ -13,9 +13,9 @@ import { type AIChatType } from '../types';
13
13
  export const useMessageQueue = (chat?: AIChatType) => {
14
14
  const space = getSpace(chat);
15
15
  const queueDxn = useMemo(() => {
16
- const dxn = space && chat?.assistantChatQueue.dxn;
17
- return dxn ? new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, space.id, dxn.parts.at(-1)!]) : undefined;
18
- }, [space, chat?.assistantChatQueue.dxn]);
16
+ const dxn = space && chat?.queue.dxn;
17
+ return dxn ? createQueueDxn(space.id, dxn.parts.at(-1)) : undefined;
18
+ }, [space, chat?.queue.dxn]);
19
19
 
20
20
  return useQueue<Message>(queueDxn);
21
21
  };
package/src/meta.ts CHANGED
@@ -13,6 +13,6 @@ export const meta: PluginMeta = {
13
13
  name: 'Assistant',
14
14
  description: 'The Assistant tab allows you to chat with your spaces inside of Composer.',
15
15
  icon: 'ph--atom--regular',
16
- source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-assistant',
17
- tags: ['experimental'],
16
+ source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',
17
+ tags: ['labs'],
18
18
  };
@@ -0,0 +1,32 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { describe, test } from 'vitest';
6
+
7
+ import { Filter } from '@dxos/echo-schema';
8
+
9
+ import { createFilter } from './filter-generator';
10
+ import { QueryParser } from './query-parser';
11
+
12
+ describe('FilterGenerator', () => {
13
+ test('simple queries', ({ expect }) => {
14
+ const parser = new QueryParser('type:example.com/type/Person');
15
+ const ast = parser.parse();
16
+ expect(ast).toEqual({
17
+ type: 'binary',
18
+ operator: 'EQ',
19
+ left: {
20
+ type: 'identifier',
21
+ name: 'type',
22
+ },
23
+ right: {
24
+ type: 'literal',
25
+ value: 'example.com/type/Person',
26
+ },
27
+ });
28
+
29
+ const filter = createFilter(ast);
30
+ expect(filter).toEqual(Filter.typename('example.com/type/Person'));
31
+ });
32
+ });
@@ -0,0 +1,81 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Filter } from '@dxos/echo-schema';
6
+
7
+ import {
8
+ type BinaryExpression,
9
+ type Expression,
10
+ type Identifier,
11
+ type Literal,
12
+ type RelationalOperator,
13
+ type UnaryExpression,
14
+ } from './types';
15
+
16
+ const relationalOperators: Record<RelationalOperator, (value: any) => Filter<any>> = {
17
+ EQ: Filter.eq,
18
+ LT: Filter.lt,
19
+ GT: Filter.gt,
20
+ };
21
+
22
+ const specialPredicates: Record<string, (value: string) => Filter<any>> = {
23
+ ['type' as const]: Filter.typename,
24
+ };
25
+
26
+ export const createFilter = (ast: Expression): Filter<any> => {
27
+ switch (ast.type) {
28
+ case 'binary': {
29
+ const { operator, left, right } = ast as BinaryExpression;
30
+
31
+ // Handle logical operators.
32
+ if (operator === 'AND') {
33
+ return Filter.and(createFilter(left), createFilter(right));
34
+ }
35
+ if (operator === 'OR') {
36
+ return Filter.or(createFilter(left), createFilter(right));
37
+ }
38
+
39
+ // Handle special predicates (e.g., "type:Person")
40
+ const predicateName = (left as Identifier).name;
41
+ const specialFilter = specialPredicates[predicateName];
42
+ if (specialFilter) {
43
+ return specialFilter((right as Literal).value);
44
+ }
45
+
46
+ // Handle relational operators
47
+ const filterFn = relationalOperators[operator as RelationalOperator];
48
+ if (filterFn) {
49
+ return filterFn((right as Literal).value);
50
+ }
51
+
52
+ throw new Error(`Unsupported operator: ${operator}`);
53
+ }
54
+
55
+ case 'unary': {
56
+ const { operator, argument } = ast as UnaryExpression;
57
+ if (operator === 'NOT') {
58
+ return Filter.not(createFilter(argument));
59
+ }
60
+ throw new Error(`Unsupported unary operator: ${operator}`);
61
+ }
62
+
63
+ case 'identifier': {
64
+ const { name } = ast as Identifier;
65
+ return Filter._props({ [name]: true });
66
+ }
67
+
68
+ case 'literal': {
69
+ const { value } = ast as Literal;
70
+ // Handle special '*' value for empty input.
71
+ if (value === '*') {
72
+ return Filter.everything();
73
+ }
74
+
75
+ return Filter.eq(value);
76
+ }
77
+
78
+ default:
79
+ throw new Error(`Unsupported expression type: ${(ast as any).type}`);
80
+ }
81
+ };
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './filter-generator';
6
+ export * from './query-parser';
7
+ export * from './types';