@dxos/plugin-assistant 0.8.4-main.5ea62a8 → 0.8.4-main.72ec0f3

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 (471) hide show
  1. package/dist/lib/browser/BlueprintArticle-IMCR3642.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-IMCR3642.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-JYD2RIBJ.mjs +158 -0
  4. package/dist/lib/browser/ChatCompanion-JYD2RIBJ.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-YBJBIVUZ.mjs → ChatContainer-XCPBWYIR.mjs} +22 -20
  6. package/dist/lib/browser/ChatContainer-XCPBWYIR.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-MTPJLEHM.mjs → ChatDialog-DT7KFCRL.mjs} +12 -11
  8. package/dist/lib/browser/ChatDialog-DT7KFCRL.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-45QX25Y5.mjs +59 -0
  10. package/dist/lib/browser/PromptArticle-45QX25Y5.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +19 -0
  12. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +7 -0
  13. package/dist/lib/browser/{app-graph-builder-7AAWTWGA.mjs → app-graph-builder-VZEXMDTY.mjs} +67 -21
  14. package/dist/lib/browser/app-graph-builder-VZEXMDTY.mjs.map +7 -0
  15. package/dist/lib/browser/{blueprint-definition-CRZPIA5A.mjs → blueprint-definition-5FT5JGPY.mjs} +4 -4
  16. package/dist/lib/browser/chunk-2BOE3OTW.mjs +262 -0
  17. package/dist/lib/browser/chunk-2BOE3OTW.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-SMIVXXAI.mjs → chunk-BNTPFZ7O.mjs} +51 -24
  19. package/dist/lib/browser/chunk-BNTPFZ7O.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs +335 -0
  21. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-OYFQS7JM.mjs → chunk-IXIIS4QA.mjs} +59 -40
  23. package/dist/lib/browser/chunk-IXIIS4QA.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-IJAJRAR7.mjs → chunk-LRE4VEZV.mjs} +2 -4
  25. package/dist/lib/browser/chunk-LRE4VEZV.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-U62BTGDF.mjs +1929 -0
  27. package/dist/lib/browser/chunk-U62BTGDF.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-WBG5PTSX.mjs +23 -0
  29. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +7 -0
  30. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
  31. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
  32. package/dist/lib/browser/index.mjs +122 -75
  33. package/dist/lib/browser/index.mjs.map +4 -4
  34. package/dist/lib/browser/{intent-resolver-BQO5SVGI.mjs → intent-resolver-AK5O4GUW.mjs} +55 -24
  35. package/dist/lib/browser/intent-resolver-AK5O4GUW.mjs.map +7 -0
  36. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs +17 -0
  37. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs.map +7 -0
  38. package/dist/lib/browser/meta.json +1 -1
  39. package/dist/lib/browser/{react-surface-VNCD2H7C.mjs → react-surface-YCSR2MSR.mjs} +24 -35
  40. package/dist/lib/browser/react-surface-YCSR2MSR.mjs.map +7 -0
  41. package/dist/lib/browser/{settings-36V3VUMW.mjs → settings-NYJGNQ5I.mjs} +5 -5
  42. package/dist/lib/browser/{settings-36V3VUMW.mjs.map → settings-NYJGNQ5I.mjs.map} +1 -1
  43. package/dist/lib/browser/{state-D5IVKNYG.mjs → state-GG7Z3NB7.mjs} +9 -5
  44. package/dist/lib/browser/{state-D5IVKNYG.mjs.map → state-GG7Z3NB7.mjs.map} +3 -3
  45. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  46. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  47. package/dist/lib/browser/types/index.mjs +2 -2
  48. package/dist/lib/node-esm/BlueprintArticle-OL2HUY6Q.mjs +37 -0
  49. package/dist/lib/node-esm/BlueprintArticle-OL2HUY6Q.mjs.map +7 -0
  50. package/dist/lib/node-esm/ChatCompanion-AHKJS25S.mjs +159 -0
  51. package/dist/lib/node-esm/ChatCompanion-AHKJS25S.mjs.map +7 -0
  52. package/dist/lib/node-esm/{ChatContainer-TUCITJJW.mjs → ChatContainer-K7OGPE3G.mjs} +22 -20
  53. package/dist/lib/node-esm/ChatContainer-K7OGPE3G.mjs.map +7 -0
  54. package/dist/lib/node-esm/{ChatDialog-JLM7RDZQ.mjs → ChatDialog-QT6ZBX45.mjs} +12 -11
  55. package/dist/lib/node-esm/ChatDialog-QT6ZBX45.mjs.map +7 -0
  56. package/dist/lib/node-esm/PromptArticle-OUKFSJQV.mjs +60 -0
  57. package/dist/lib/node-esm/PromptArticle-OUKFSJQV.mjs.map +7 -0
  58. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
  59. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
  60. package/dist/lib/node-esm/{app-graph-builder-PNAFQUYT.mjs → app-graph-builder-VRN6ESRR.mjs} +67 -21
  61. package/dist/lib/node-esm/app-graph-builder-VRN6ESRR.mjs.map +7 -0
  62. package/dist/lib/node-esm/{blueprint-definition-275J3XL2.mjs → blueprint-definition-XW6QQVLV.mjs} +4 -4
  63. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs +264 -0
  64. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-7YOGZI66.mjs → chunk-AB74FOA2.mjs} +51 -24
  66. package/dist/lib/node-esm/chunk-AB74FOA2.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-BHS747K7.mjs +1930 -0
  68. package/dist/lib/node-esm/chunk-BHS747K7.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs +336 -0
  70. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-CAQKGW3B.mjs → chunk-UXTUHH24.mjs} +59 -40
  72. package/dist/lib/node-esm/chunk-UXTUHH24.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-WE6KTH72.mjs +25 -0
  74. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-YPXEA46Q.mjs → chunk-YWFWT57N.mjs} +2 -4
  76. package/dist/lib/node-esm/chunk-YWFWT57N.mjs.map +7 -0
  77. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
  78. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
  79. package/dist/lib/node-esm/index.mjs +122 -75
  80. package/dist/lib/node-esm/index.mjs.map +4 -4
  81. package/dist/lib/node-esm/{intent-resolver-FIS3T5KP.mjs → intent-resolver-L2F3N45L.mjs} +55 -24
  82. package/dist/lib/node-esm/intent-resolver-L2F3N45L.mjs.map +7 -0
  83. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs +18 -0
  84. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs.map +7 -0
  85. package/dist/lib/node-esm/meta.json +1 -1
  86. package/dist/lib/node-esm/{react-surface-4NLRKNBU.mjs → react-surface-CTW44GEM.mjs} +24 -35
  87. package/dist/lib/node-esm/react-surface-CTW44GEM.mjs.map +7 -0
  88. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs → settings-RRHYI5KO.mjs} +5 -5
  89. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs.map → settings-RRHYI5KO.mjs.map} +1 -1
  90. package/dist/lib/node-esm/{state-4VLKPLW3.mjs → state-FSUHFMDM.mjs} +9 -5
  91. package/dist/lib/node-esm/{state-4VLKPLW3.mjs.map → state-FSUHFMDM.mjs.map} +3 -3
  92. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  93. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs.map +7 -0
  94. package/dist/lib/node-esm/types/index.mjs +2 -2
  95. package/dist/types/src/AssistantPlugin.d.ts +1 -1
  96. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/ai-service.d.ts +2 -3
  98. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -1
  101. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +2 -11
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/toolkit.d.ts +1 -1
  110. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  111. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  112. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  113. package/dist/types/src/components/Chat/Chat.d.ts +22 -11
  114. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  115. package/dist/types/src/components/Chat/events.d.ts +4 -0
  116. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  117. package/dist/types/src/components/ChatCompanion.d.ts +2 -2
  118. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
  119. package/dist/types/src/components/ChatContainer.d.ts +7 -4
  120. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  121. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  122. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  123. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  124. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  125. package/dist/types/src/components/ChatThread/ChatThread.d.ts +10 -8
  126. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  127. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +135 -77
  128. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  130. package/dist/types/src/components/ChatThread/reducers.d.ts +5 -5
  131. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -1
  132. package/dist/types/src/components/ChatThread/registry.d.ts +11 -0
  133. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  134. package/dist/types/src/components/ChatThread/sync.d.ts +42 -0
  135. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  136. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  137. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  138. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  139. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  140. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  141. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  142. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +116 -62
  143. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -1
  145. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  146. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +116 -62
  147. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  149. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  150. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  151. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  152. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  153. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +21 -0
  154. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  155. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  156. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  157. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  158. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  159. package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -2
  160. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  161. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +116 -62
  162. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  163. package/dist/types/src/components/index.d.ts +4 -9
  164. package/dist/types/src/components/index.d.ts.map +1 -1
  165. package/dist/types/src/functions/analysis.d.ts +1 -1
  166. package/dist/types/src/functions/analysis.d.ts.map +1 -1
  167. package/dist/types/src/functions/index.d.ts +2 -2
  168. package/dist/types/src/functions/index.d.ts.map +1 -1
  169. package/dist/types/src/functions/{list.d.ts → object-list.d.ts} +2 -2
  170. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  171. package/dist/types/src/functions/{load.d.ts → object-load.d.ts} +2 -2
  172. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  173. package/dist/types/src/hooks/index.d.ts +1 -3
  174. package/dist/types/src/hooks/index.d.ts.map +1 -1
  175. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +2 -1
  176. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  177. package/dist/types/src/hooks/useChatProcessor.d.ts +5 -3
  178. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  179. package/dist/types/src/hooks/useChatServices.d.ts +2 -2
  180. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  181. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  182. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  183. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  184. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  185. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  186. package/dist/types/src/index.d.ts +2 -0
  187. package/dist/types/src/index.d.ts.map +1 -1
  188. package/dist/types/src/meta.d.ts +1 -2
  189. package/dist/types/src/meta.d.ts.map +1 -1
  190. package/dist/types/src/processor/index.d.ts +1 -0
  191. package/dist/types/src/processor/index.d.ts.map +1 -1
  192. package/dist/types/src/processor/presets.d.ts +1 -1
  193. package/dist/types/src/processor/presets.d.ts.map +1 -1
  194. package/dist/types/src/processor/processor.d.ts +17 -23
  195. package/dist/types/src/processor/processor.d.ts.map +1 -1
  196. package/dist/types/src/processor/update-name.d.ts +10 -0
  197. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  198. package/dist/types/src/queue-logger.d.ts.map +1 -1
  199. package/dist/types/src/testing/index.d.ts +1 -2
  200. package/dist/types/src/testing/index.d.ts.map +1 -1
  201. package/dist/types/src/testing/test-generator.d.ts +7 -0
  202. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  203. package/dist/types/src/testing/test-services.d.ts +2 -2
  204. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  205. package/dist/types/src/translations.d.ts +241 -27
  206. package/dist/types/src/translations.d.ts.map +1 -1
  207. package/dist/types/src/types/Assistant.d.ts +15 -9
  208. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  209. package/dist/types/src/types/AssistantAction.d.ts +33 -8
  210. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  211. package/dist/types/src/types/service.d.ts +18 -12
  212. package/dist/types/src/types/service.d.ts.map +1 -1
  213. package/dist/types/tsconfig.tsbuildinfo +1 -1
  214. package/package.json +96 -111
  215. package/src/AssistantPlugin.tsx +154 -129
  216. package/src/capabilities/ai-service.ts +6 -7
  217. package/src/capabilities/app-graph-builder.ts +69 -21
  218. package/src/capabilities/blueprint-definition.ts +39 -15
  219. package/src/capabilities/capabilities.ts +2 -16
  220. package/src/capabilities/edge-model-resolver.ts +5 -7
  221. package/src/capabilities/intent-resolver.ts +69 -16
  222. package/src/capabilities/local-model-resolver.ts +7 -9
  223. package/src/capabilities/react-surface.tsx +16 -20
  224. package/src/capabilities/state.ts +2 -0
  225. package/src/capabilities/toolkit.ts +9 -155
  226. package/src/components/BlueprintArticle.tsx +29 -0
  227. package/src/components/Chat/Chat.tsx +177 -140
  228. package/src/components/Chat/events.ts +6 -0
  229. package/src/components/ChatCompanion.tsx +93 -49
  230. package/src/components/ChatContainer.tsx +27 -17
  231. package/src/components/ChatDialog.tsx +17 -10
  232. package/src/components/ChatProgress/ChatProgress.tsx +3 -4
  233. package/src/components/ChatPrompt/ChatActions.tsx +2 -4
  234. package/src/components/ChatPrompt/ChatOptions.tsx +40 -45
  235. package/src/components/ChatPrompt/ChatReferences.tsx +2 -2
  236. package/src/components/ChatThread/ChatThread.stories.tsx +90 -225
  237. package/src/components/ChatThread/ChatThread.tsx +59 -51
  238. package/src/components/ChatThread/Link.tsx +11 -8
  239. package/src/components/ChatThread/reducers.ts +6 -6
  240. package/src/components/ChatThread/registry.tsx +174 -0
  241. package/src/components/ChatThread/sync.test.ts +89 -0
  242. package/src/components/ChatThread/sync.ts +148 -0
  243. package/src/components/ChatThread/testing/thread.md +37 -0
  244. package/src/components/PromptArticle.tsx +51 -0
  245. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +15 -7
  246. package/src/components/TemplateEditor/TemplateEditor.tsx +20 -11
  247. package/src/components/TemplateEditor/TemplateForm.stories.tsx +4 -6
  248. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  249. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  250. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  251. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  252. package/src/components/{ChatThread → ToolBlock}/ToolBlock.tsx +46 -50
  253. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  254. package/src/components/ToolBlock/index.ts +6 -0
  255. package/src/components/Toolbox/Toolbox.stories.tsx +5 -8
  256. package/src/components/Toolbox/Toolbox.tsx +5 -5
  257. package/src/components/index.ts +2 -5
  258. package/src/functions/analysis.ts +5 -3
  259. package/src/functions/index.ts +2 -2
  260. package/src/functions/{list.ts → object-list.ts} +6 -4
  261. package/src/functions/{load.ts → object-load.ts} +9 -7
  262. package/src/hooks/index.ts +1 -3
  263. package/src/hooks/useBlueprintRegistry.ts +19 -4
  264. package/src/hooks/useChatProcessor.ts +23 -15
  265. package/src/hooks/useChatServices.ts +29 -42
  266. package/src/hooks/useChatToolbarActions.ts +122 -0
  267. package/src/hooks/useContextBinder.ts +19 -7
  268. package/src/hooks/useItemTypes.ts +1 -1
  269. package/src/hooks/useReferencesProvider.ts +2 -1
  270. package/src/index.ts +2 -0
  271. package/src/meta.ts +9 -6
  272. package/src/processor/index.ts +1 -0
  273. package/src/processor/presets.ts +2 -2
  274. package/src/processor/processor.test.ts +21 -27
  275. package/src/processor/processor.ts +47 -74
  276. package/src/processor/update-name.ts +56 -0
  277. package/src/queue-logger.ts +9 -13
  278. package/src/testing/index.ts +1 -2
  279. package/src/testing/test-generator.ts +261 -0
  280. package/src/testing/test-services.ts +2 -8
  281. package/src/translations.ts +26 -18
  282. package/src/types/Assistant.ts +10 -8
  283. package/src/types/AssistantAction.ts +23 -6
  284. package/src/types/service.ts +17 -9
  285. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs +0 -29
  286. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs.map +0 -7
  287. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs +0 -126
  288. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs.map +0 -7
  289. package/dist/lib/browser/ChatContainer-YBJBIVUZ.mjs.map +0 -7
  290. package/dist/lib/browser/ChatDialog-MTPJLEHM.mjs.map +0 -7
  291. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs +0 -150
  292. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +0 -7
  293. package/dist/lib/browser/ai-service-NRZPTUHO.mjs +0 -22
  294. package/dist/lib/browser/ai-service-NRZPTUHO.mjs.map +0 -7
  295. package/dist/lib/browser/app-graph-builder-7AAWTWGA.mjs.map +0 -7
  296. package/dist/lib/browser/chunk-6QMISAU6.mjs +0 -167
  297. package/dist/lib/browser/chunk-6QMISAU6.mjs.map +0 -7
  298. package/dist/lib/browser/chunk-CFXXQM25.mjs +0 -182
  299. package/dist/lib/browser/chunk-CFXXQM25.mjs.map +0 -7
  300. package/dist/lib/browser/chunk-IJAJRAR7.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-O4LUJEDV.mjs +0 -20
  302. package/dist/lib/browser/chunk-O4LUJEDV.mjs.map +0 -7
  303. package/dist/lib/browser/chunk-OYFQS7JM.mjs.map +0 -7
  304. package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +0 -7
  305. package/dist/lib/browser/chunk-V5H5CCZA.mjs +0 -218
  306. package/dist/lib/browser/chunk-V5H5CCZA.mjs.map +0 -7
  307. package/dist/lib/browser/chunk-XL557TXF.mjs +0 -2332
  308. package/dist/lib/browser/chunk-XL557TXF.mjs.map +0 -7
  309. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs +0 -22
  310. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs.map +0 -7
  311. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs.map +0 -7
  312. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs +0 -21
  313. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs.map +0 -7
  314. package/dist/lib/browser/react-surface-VNCD2H7C.mjs.map +0 -7
  315. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs +0 -191
  316. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs.map +0 -7
  317. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs +0 -30
  318. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs.map +0 -7
  319. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs +0 -127
  320. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs.map +0 -7
  321. package/dist/lib/node-esm/ChatContainer-TUCITJJW.mjs.map +0 -7
  322. package/dist/lib/node-esm/ChatDialog-JLM7RDZQ.mjs.map +0 -7
  323. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs +0 -151
  324. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +0 -7
  325. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs +0 -23
  326. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs.map +0 -7
  327. package/dist/lib/node-esm/app-graph-builder-PNAFQUYT.mjs.map +0 -7
  328. package/dist/lib/node-esm/chunk-2X6VEO32.mjs +0 -2333
  329. package/dist/lib/node-esm/chunk-2X6VEO32.mjs.map +0 -7
  330. package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +0 -7
  331. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs.map +0 -7
  332. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs +0 -183
  333. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs +0 -168
  335. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs +0 -219
  337. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs.map +0 -7
  338. package/dist/lib/node-esm/chunk-VFY2JG62.mjs +0 -22
  339. package/dist/lib/node-esm/chunk-VFY2JG62.mjs.map +0 -7
  340. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs.map +0 -7
  341. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs +0 -23
  342. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs.map +0 -7
  343. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs.map +0 -7
  344. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs +0 -22
  345. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs.map +0 -7
  346. package/dist/lib/node-esm/react-surface-4NLRKNBU.mjs.map +0 -7
  347. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs +0 -192
  348. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs.map +0 -7
  349. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  350. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  351. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -33
  352. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  353. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  354. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  355. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  356. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  357. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  358. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  359. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  360. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  361. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -263
  362. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  363. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  364. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  365. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  366. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -4
  367. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  368. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  369. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  370. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  371. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  372. package/dist/types/src/execution-graph/execution-graph.d.ts +0 -21
  373. package/dist/types/src/execution-graph/execution-graph.d.ts.map +0 -1
  374. package/dist/types/src/execution-graph/index.d.ts +0 -2
  375. package/dist/types/src/execution-graph/index.d.ts.map +0 -1
  376. package/dist/types/src/functions/list.d.ts.map +0 -1
  377. package/dist/types/src/functions/load.d.ts.map +0 -1
  378. package/dist/types/src/hooks/useExecutionGraph.d.ts +0 -7
  379. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +0 -1
  380. package/dist/types/src/hooks/useMatcherExtension.d.ts +0 -3
  381. package/dist/types/src/hooks/useMatcherExtension.d.ts.map +0 -1
  382. package/dist/types/src/hooks/useResolveRef.d.ts +0 -4
  383. package/dist/types/src/hooks/useResolveRef.d.ts.map +0 -1
  384. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  385. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  386. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  387. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  388. package/dist/types/src/parser/index.d.ts +0 -4
  389. package/dist/types/src/parser/index.d.ts.map +0 -1
  390. package/dist/types/src/parser/query-parser.d.ts +0 -15
  391. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  392. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  393. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  394. package/dist/types/src/parser/types.d.ts +0 -24
  395. package/dist/types/src/parser/types.d.ts.map +0 -1
  396. package/dist/types/src/stories/Chat.stories.d.ts +0 -26
  397. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  398. package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -4
  399. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
  400. package/dist/types/src/stories/components/ChatContainer.d.ts +0 -4
  401. package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
  402. package/dist/types/src/stories/components/CommentsContainer.d.ts +0 -4
  403. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +0 -1
  404. package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
  405. package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
  406. package/dist/types/src/stories/components/LoggingContainer.d.ts +0 -4
  407. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +0 -1
  408. package/dist/types/src/stories/components/MessageContainer.d.ts +0 -4
  409. package/dist/types/src/stories/components/MessageContainer.d.ts.map +0 -1
  410. package/dist/types/src/stories/components/SurfaceContainer.d.ts +0 -8
  411. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +0 -1
  412. package/dist/types/src/stories/components/TasksContainer.d.ts +0 -4
  413. package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
  414. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +0 -3
  415. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +0 -1
  416. package/dist/types/src/stories/components/index.d.ts +0 -11
  417. package/dist/types/src/stories/components/index.d.ts.map +0 -1
  418. package/dist/types/src/stories/components/types.d.ts +0 -7
  419. package/dist/types/src/stories/components/types.d.ts.map +0 -1
  420. package/dist/types/src/stories/testing/data.d.ts +0 -5
  421. package/dist/types/src/stories/testing/data.d.ts.map +0 -1
  422. package/dist/types/src/stories/testing/index.d.ts +0 -3
  423. package/dist/types/src/stories/testing/index.d.ts.map +0 -1
  424. package/dist/types/src/stories/testing/testing.d.ts +0 -44
  425. package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
  426. package/dist/types/src/testing/test-data.d.ts +0 -4
  427. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  428. package/dist/types/src/testing/test-functions.d.ts +0 -6
  429. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  430. package/src/components/BlueprintContainer.tsx +0 -24
  431. package/src/components/ChatThread/ChatMessage.tsx +0 -334
  432. package/src/components/PromptSettings.tsx +0 -90
  433. package/src/components/SequenceContainer.tsx +0 -131
  434. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -33
  435. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  436. package/src/components/SequenceEditor/index.ts +0 -5
  437. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  438. package/src/components/Toolbar/Toolbar.tsx +0 -20
  439. package/src/components/Toolbar/index.ts +0 -5
  440. package/src/components/Toolbar/useChatToolbarActions.ts +0 -125
  441. package/src/execution-graph/execution-graph.ts +0 -211
  442. package/src/execution-graph/index.ts +0 -5
  443. package/src/hooks/useExecutionGraph.ts +0 -20
  444. package/src/hooks/useMatcherExtension.ts +0 -45
  445. package/src/hooks/useResolveRef.ts +0 -33
  446. package/src/parser/filter-generator.test.ts +0 -32
  447. package/src/parser/filter-generator.ts +0 -76
  448. package/src/parser/index.ts +0 -7
  449. package/src/parser/query-parser.test.ts +0 -139
  450. package/src/parser/query-parser.ts +0 -199
  451. package/src/parser/types.ts +0 -36
  452. package/src/stories/Chat.stories.tsx +0 -469
  453. package/src/stories/components/BlueprintContainer.tsx +0 -32
  454. package/src/stories/components/ChatContainer.tsx +0 -57
  455. package/src/stories/components/CommentsContainer.tsx +0 -25
  456. package/src/stories/components/GraphContainer.tsx +0 -118
  457. package/src/stories/components/LoggingContainer.tsx +0 -21
  458. package/src/stories/components/MessageContainer.tsx +0 -27
  459. package/src/stories/components/SurfaceContainer.tsx +0 -52
  460. package/src/stories/components/TasksContainer.tsx +0 -49
  461. package/src/stories/components/TokenManagerContainer.tsx +0 -14
  462. package/src/stories/components/index.ts +0 -15
  463. package/src/stories/components/types.ts +0 -11
  464. package/src/stories/testing/data.ts +0 -142
  465. package/src/stories/testing/index.ts +0 -6
  466. package/src/stories/testing/testing.tsx +0 -254
  467. package/src/testing/test-data.ts +0 -109
  468. package/src/testing/test-functions.ts +0 -16
  469. /package/dist/lib/browser/{blueprint-definition-CRZPIA5A.mjs.map → blueprint-definition-5FT5JGPY.mjs.map} +0 -0
  470. /package/dist/lib/node-esm/{blueprint-definition-275J3XL2.mjs.map → blueprint-definition-XW6QQVLV.mjs.map} +0 -0
  471. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -2,96 +2,144 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Array, Effect, Option, pipe } from 'effect';
6
- import React, { useMemo } from 'react';
5
+ import * as Array from 'effect/Array';
6
+ import * as Function from 'effect/Function';
7
+ import * as Option from 'effect/Option';
8
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
7
9
 
8
- import { Capabilities, createIntent, useCapabilities, useIntentDispatcher } from '@dxos/app-framework';
10
+ import { Capabilities, createIntent } from '@dxos/app-framework';
11
+ import { useCapabilities, useIntentDispatcher } from '@dxos/app-framework/react';
9
12
  import { Blueprint } from '@dxos/blueprints';
10
13
  import { getSpace } from '@dxos/client/echo';
11
- import { Filter, Obj, Query, Ref } from '@dxos/echo';
12
- import { DatabaseService } from '@dxos/functions';
14
+ import { Filter, Obj, Ref } from '@dxos/echo';
13
15
  import { SpaceAction } from '@dxos/plugin-space/types';
14
16
  import { useQuery } from '@dxos/react-client/echo';
15
17
  import { useAsyncEffect } from '@dxos/react-ui';
16
18
 
17
- import { ChatContainer } from '../components';
18
- import { useContextBinder } from '../hooks';
19
+ import { ChatContainer, type ChatEvent } from '../components';
20
+ import { useBlueprintRegistry, useContextBinder } from '../hooks';
19
21
  import { Assistant, AssistantAction } from '../types';
20
22
 
21
23
  export type ChatCompanionProps = {
22
24
  role?: string;
23
- data: { companionTo: Obj.Any; subject: Assistant.Chat | 'assistant-chat' };
25
+ data: { subject: Assistant.Chat | 'assistant-chat'; companionTo: Obj.Any };
24
26
  };
25
27
 
26
28
  export const ChatCompanion = ({ role, data }: ChatCompanionProps) => {
29
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
30
+ const blueprintRegistry = useBlueprintRegistry();
27
31
  const companionTo = data.companionTo;
32
+
28
33
  const space = getSpace(companionTo);
29
- const chat = data.subject === 'assistant-chat' ? undefined : data.subject;
30
- const binder = useContextBinder(chat);
31
- const { dispatch } = useIntentDispatcher();
34
+ const [chat, setChat] = useState(data.subject === 'assistant-chat' ? undefined : data.subject);
35
+ useEffect(() => {
36
+ setChat(data.subject === 'assistant-chat' ? undefined : data.subject);
37
+ }, [data.subject]);
38
+
39
+ const chatQueue = space && chat ? space.queues.get(chat.queue.dxn) : undefined;
40
+ const binder = useContextBinder(chatQueue);
32
41
 
33
- // Initialize companion chat if it doesn't exist.
42
+ // Initialize companion chat if it doesn't exist, but don't add it to the space immediately.
34
43
  useAsyncEffect(async () => {
35
- if (chat || !space) {
44
+ if (!space || chat) {
36
45
  return;
37
46
  }
38
47
 
39
- // TODO(burdon): Garbage collection of queues?
40
- // TODO(wittjosiah): Figure out how to prevent companion chats from showing up in the navtree.
41
- await Effect.gen(function* () {
42
- const { objects } = yield* DatabaseService.runQuery(
43
- Query.select(Filter.ids(companionTo.id)).targetOf(Assistant.CompanionTo).source(),
44
- );
45
-
46
- // TODO(wittjosiah): This should be the default sort order.
47
- let nextChat = objects.toSorted((a, b) => a.id.localeCompare(b.id)).at(-1);
48
- if (!nextChat) {
49
- const { object } = yield* dispatch(createIntent(AssistantAction.CreateChat, { space }));
50
- nextChat = object;
51
- yield* dispatch(createIntent(SpaceAction.AddObject, { object: nextChat, target: space, hidden: true }));
52
- yield* dispatch(
48
+ const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { space }));
49
+ setChat(data?.object);
50
+ }, [chat, space]);
51
+
52
+ // Add chat to space when user submits the first message.
53
+ const handleEvent = useCallback(
54
+ async (event: ChatEvent) => {
55
+ const chatInSpace = !!getSpace(chat);
56
+ if (chatInSpace || !chat || !space) {
57
+ return;
58
+ }
59
+
60
+ if (event.type === 'submit') {
61
+ await dispatch(
62
+ createIntent(SpaceAction.AddObject, {
63
+ object: chat,
64
+ target: space,
65
+ hidden: true,
66
+ }),
67
+ );
68
+ await dispatch(
53
69
  createIntent(SpaceAction.AddRelation, {
54
70
  space,
55
71
  schema: Assistant.CompanionTo,
56
- source: nextChat,
57
- target: data.companionTo,
72
+ source: chat,
73
+ target: companionTo,
74
+ }),
75
+ );
76
+ await dispatch(
77
+ createIntent(AssistantAction.SetCurrentChat, {
78
+ companionTo,
79
+ chat,
58
80
  }),
59
81
  );
60
82
  }
61
-
62
- yield* dispatch(createIntent(AssistantAction.SetCurrentChat, { companionTo, chat: nextChat }));
63
- }).pipe(Effect.provide(DatabaseService.layer(space.db)), Effect.runPromise);
64
- }, [space, chat, companionTo]);
83
+ },
84
+ [chat, space, companionTo, dispatch],
85
+ );
65
86
 
66
87
  const metadata = useCapabilities(Capabilities.Metadata);
67
88
  const blueprintKeys = useMemo(
68
89
  () =>
69
- pipe(
90
+ Function.pipe(
70
91
  metadata,
71
92
  Array.findFirst(
72
- (capability): capability is { id: string; metadata: { blueprints?: string[] } } =>
73
- capability.id === Obj.getTypename(companionTo),
93
+ (
94
+ capability,
95
+ ): capability is {
96
+ id: string;
97
+ metadata: { blueprints?: string[] };
98
+ } => capability.id === Obj.getTypename(companionTo),
74
99
  ),
75
100
  Option.flatMap((c) => Option.fromNullable(c.metadata.blueprints)),
76
101
  Option.getOrElse(() => [] as string[]),
77
102
  ),
78
103
  [metadata, companionTo],
79
104
  );
80
- const allBlueprints = useQuery(space, Filter.type(Blueprint.Blueprint));
105
+ const existingBlueprints = useQuery(space, Filter.type(Blueprint.Blueprint));
81
106
  const pluginBlueprints = useMemo(
82
- () => allBlueprints.filter((blueprint) => blueprintKeys.includes(blueprint.key)),
83
- [allBlueprints, blueprintKeys],
107
+ () => existingBlueprints.filter((blueprint) => blueprintKeys.includes(blueprint.key)),
108
+ [existingBlueprints, blueprintKeys],
84
109
  );
85
110
 
86
- // TODO(wittjosiah): Occasionally this fails to bind but seems to be an upstream issue.
87
- // It seems like the queue object signal emits as an empty array after previously emitting a non-empty array.
111
+ // Initialize related blueprints that are not already in the space.
88
112
  useAsyncEffect(async () => {
89
- if (!binder) {
113
+ if (!space) {
114
+ return;
115
+ }
116
+
117
+ // NOTE: This must be run instead of using the useQuery result to avoid duplicates.
118
+ const { objects: existingBlueprints } = await space.db.query(Filter.type(Blueprint.Blueprint)).run();
119
+ for (const key of blueprintKeys) {
120
+ const existingBlueprint = existingBlueprints.find((blueprint) => blueprint.key === key);
121
+ if (existingBlueprint) {
122
+ continue;
123
+ }
124
+
125
+ const blueprint = blueprintRegistry.getByKey(key);
126
+ if (!blueprint) {
127
+ continue;
128
+ }
129
+
130
+ space.db.add(Obj.clone(blueprint));
131
+ }
132
+ }, [space, blueprintRegistry, blueprintKeys]);
133
+
134
+ useAsyncEffect(async () => {
135
+ if (!binder?.isOpen) {
90
136
  return;
91
137
  }
92
138
 
93
139
  if (pluginBlueprints.length > 0) {
94
- await binder.bind({ blueprints: pluginBlueprints.map((blueprint) => Ref.make(blueprint)) });
140
+ await binder.bind({
141
+ blueprints: pluginBlueprints.map((blueprint) => Ref.make(blueprint)),
142
+ });
95
143
  }
96
144
 
97
145
  if (Obj.instanceOf(Blueprint.Blueprint, companionTo)) {
@@ -99,13 +147,9 @@ export const ChatCompanion = ({ role, data }: ChatCompanionProps) => {
99
147
  } else {
100
148
  await binder.bind({ objects: [Ref.make(companionTo)] });
101
149
  }
102
- }, [binder, companionTo, pluginBlueprints]);
103
-
104
- if (!chat) {
105
- return null;
106
- }
150
+ }, [binder, companionTo, blueprintKeys]);
107
151
 
108
- return <ChatContainer role={role} chat={chat} companionTo={companionTo} />;
152
+ return <ChatContainer role={role} space={space} chat={chat} companionTo={companionTo} onEvent={handleEvent} />;
109
153
  };
110
154
 
111
155
  export default ChatCompanion;
@@ -4,8 +4,9 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { Capabilities, useCapability } from '@dxos/app-framework';
8
- import { getSpace } from '@dxos/client/echo';
7
+ import { Capabilities } from '@dxos/app-framework';
8
+ import { useCapability } from '@dxos/app-framework/react';
9
+ import { type Space, getSpace } from '@dxos/client/echo';
9
10
  import { type Obj } from '@dxos/echo';
10
11
  import { StackItem } from '@dxos/react-ui-stack';
11
12
 
@@ -13,36 +14,45 @@ import { useBlueprintRegistry, useChatProcessor, useChatServices, useOnline, use
13
14
  import { meta } from '../meta';
14
15
  import { type Assistant } from '../types';
15
16
 
16
- import { Chat } from './Chat';
17
- import { Toolbar } from './Toolbar';
17
+ import { Chat, type ChatRootProps } from './Chat';
18
18
 
19
19
  export type ChatContainerProps = {
20
- chat: Assistant.Chat;
21
- companionTo?: Obj.Any;
22
20
  role?: string;
23
- };
21
+ space?: Space;
22
+ chat?: Assistant.Chat;
23
+ companionTo?: Obj.Any;
24
+ } & Pick<ChatRootProps, 'onEvent'>;
24
25
 
25
- export const ChatContainer = ({ chat, companionTo }: ChatContainerProps) => {
26
- const space = getSpace(chat);
26
+ export const ChatContainer = ({ space: spaceProp, chat, companionTo, onEvent }: ChatContainerProps) => {
27
+ const space = spaceProp ?? getSpace(chat);
27
28
  const settings = useCapability(Capabilities.SettingsStore).getStore<Assistant.Settings>(meta.id)?.value;
28
29
  const services = useChatServices({ space, chat });
29
30
  const [online, setOnline] = useOnline();
30
31
  const { preset, ...chatProps } = usePresets(online);
31
32
  const blueprintRegistry = useBlueprintRegistry();
32
- const processor = useChatProcessor({ chat, preset, services, blueprintRegistry, settings });
33
+ const processor = useChatProcessor({
34
+ space,
35
+ chat,
36
+ preset,
37
+ services,
38
+ blueprintRegistry,
39
+ settings,
40
+ });
33
41
 
34
42
  if (!processor) {
35
43
  return null;
36
44
  }
37
45
 
38
46
  return (
39
- <StackItem.Content toolbar={!!companionTo} classNames='container-max-width'>
40
- {!!companionTo && <Toolbar chat={chat} companionTo={companionTo} />}
41
- <Chat.Root chat={chat} processor={processor}>
42
- <Chat.Thread />
43
- <div className='p-2'>
44
- <Chat.Prompt {...chatProps} outline preset={preset?.id} online={online} onOnlineChange={setOnline} />
45
- </div>
47
+ <StackItem.Content toolbar>
48
+ <Chat.Root space={space} chat={chat} processor={processor} onEvent={onEvent}>
49
+ <Chat.Toolbar companionTo={companionTo} />
50
+ <Chat.Viewport classNames='container-max-width'>
51
+ <Chat.Thread />
52
+ <div role='none' className='p-4'>
53
+ <Chat.Prompt {...chatProps} outline preset={preset?.id} online={online} onOnlineChange={setOnline} />
54
+ </div>
55
+ </Chat.Viewport>
46
56
  </Chat.Root>
47
57
  </StackItem.Content>
48
58
  );
@@ -4,10 +4,11 @@
4
4
 
5
5
  import React, { useCallback, useState } from 'react';
6
6
 
7
- import { Capabilities, useCapability } from '@dxos/app-framework';
7
+ import { Capabilities } from '@dxos/app-framework';
8
+ import { useCapability } from '@dxos/app-framework/react';
8
9
  import { getSpace } from '@dxos/client/echo';
9
10
  import { useTranslation } from '@dxos/react-ui';
10
- import { ChatDialog as NativeChatDialog } from '@dxos/react-ui-chat';
11
+ import { ChatDialog as NaturalChatDialog } from '@dxos/react-ui-chat';
11
12
 
12
13
  import { useBlueprintRegistry, useChatProcessor, useChatServices, useOnline, usePresets } from '../hooks';
13
14
  import { meta } from '../meta';
@@ -28,7 +29,13 @@ export const ChatDialog = ({ chat }: ChatDialogProps) => {
28
29
  const [online, setOnline] = useOnline();
29
30
  const { preset, ...chatProps } = usePresets(online);
30
31
  const blueprintRegistry = useBlueprintRegistry();
31
- const processor = useChatProcessor({ chat, preset, services, blueprintRegistry, settings });
32
+ const processor = useChatProcessor({
33
+ chat,
34
+ preset,
35
+ services,
36
+ blueprintRegistry,
37
+ settings,
38
+ });
32
39
 
33
40
  // TODO(burdon): Refocus when open.
34
41
  const [open, setOpen] = useState(true);
@@ -52,15 +59,15 @@ export const ChatDialog = ({ chat }: ChatDialogProps) => {
52
59
 
53
60
  return (
54
61
  <Chat.Root chat={chat} processor={processor} onEvent={handleEvent}>
55
- <NativeChatDialog.Root open={open} expanded={expanded} onOpenChange={setOpen}>
56
- <NativeChatDialog.Header title={t('assistant dialog title')} />
57
- <NativeChatDialog.Content>
62
+ <NaturalChatDialog.Root open={open} expanded={expanded} onOpenChange={setOpen}>
63
+ <NaturalChatDialog.Header title={t('assistant dialog title')} />
64
+ <NaturalChatDialog.Content>
58
65
  <Chat.Thread />
59
- </NativeChatDialog.Content>
60
- <NativeChatDialog.Footer classNames='p-1.5'>
66
+ </NaturalChatDialog.Content>
67
+ <NaturalChatDialog.Footer classNames='p-1.5'>
61
68
  <Chat.Prompt {...chatProps} preset={preset?.id} online={online} onOnlineChange={setOnline} expandable />
62
- </NativeChatDialog.Footer>
63
- </NativeChatDialog.Root>
69
+ </NaturalChatDialog.Footer>
70
+ </NaturalChatDialog.Root>
64
71
  </Chat.Root>
65
72
  );
66
73
  };
@@ -5,9 +5,8 @@
5
5
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
6
6
 
7
7
  import { addEventListener } from '@dxos/async';
8
- import { Flex, ProgressBar, type ProgressBarProps, TextCrawl } from '@dxos/react-ui-components';
8
+ import { Flex, ProgressBar, type ProgressBarProps, TextCrawl, useExecutionGraph } from '@dxos/react-ui-components';
9
9
 
10
- import { useExecutionGraph } from '../../hooks';
11
10
  import { type Assistant } from '../../types';
12
11
 
13
12
  // TODO(burdon): Reset after each session.
@@ -28,7 +27,7 @@ export type ChatProgressProps = {
28
27
  };
29
28
 
30
29
  export const ChatProgress = ({ chat }: ChatProgressProps) => {
31
- const { commits } = useExecutionGraph(chat.traceQueue, true);
30
+ const { commits } = useExecutionGraph(chat.traceQueue?.target, true);
32
31
  const nodes = useMemo(() => commits.map((commit) => ({ id: commit.id, message: commit.message })), [commits]);
33
32
  const lines = useMemo(() => commits.map((commit) => commit.message), [commits]);
34
33
 
@@ -62,7 +61,7 @@ export const ChatProgress = ({ chat }: ChatProgressProps) => {
62
61
  return (
63
62
  <Flex column tabIndex={0} ref={ref} classNames='outline-none'>
64
63
  <ProgressBar nodes={nodes} index={index} onSelect={handleSelect} />
65
- <TextCrawl lines={lines} index={index} autoAdvance classNames='pis-4 text-sm text-subdued' />
64
+ <TextCrawl classNames='pis-4 text-sm text-description' lines={lines} autoAdvance />
66
65
  </Flex>
67
66
  );
68
67
  };
@@ -29,10 +29,9 @@ export const ChatActions = ({ classNames, children, microphone, recording, proce
29
29
  <IconButton
30
30
  disabled={!processing}
31
31
  variant='ghost'
32
- size={5}
33
32
  icon='ph--x--regular'
34
33
  iconOnly
35
- label={t('button cancel processing')}
34
+ label={t('cancel processing button')}
36
35
  onClick={() => onEvent?.({ type: 'cancel' })}
37
36
  />
38
37
 
@@ -41,11 +40,10 @@ export const ChatActions = ({ classNames, children, microphone, recording, proce
41
40
  disabled={!processing}
42
41
  classNames={mx(recording && 'bg-primary-500')}
43
42
  variant='ghost'
44
- size={5}
45
43
  icon='ph--microphone--regular'
46
44
  iconOnly
47
45
  noTooltip
48
- label={t('button microphone')}
46
+ label={t('microphone button')}
49
47
  onMouseDown={() => onEvent?.({ type: 'record-start' })}
50
48
  onMouseUp={() => onEvent?.({ type: 'record-stop' })}
51
49
  onTouchStart={() => onEvent?.({ type: 'record-start' })}
@@ -9,13 +9,13 @@ import { type Blueprint } from '@dxos/blueprints';
9
9
  import { Filter, Obj, Type } from '@dxos/echo';
10
10
  import { type Space, useQuery } from '@dxos/react-client/echo';
11
11
  import { Icon, IconButton, Popover, Select, useTranslation } from '@dxos/react-ui';
12
- import { SearchList } from '@dxos/react-ui-searchlist';
12
+ import { Listbox, SearchList } from '@dxos/react-ui-searchlist';
13
13
  import { Tabs } from '@dxos/react-ui-tabs';
14
14
 
15
15
  import { useActiveBlueprints, useBlueprintHandlers, useBlueprints, useContextObjects, useItemTypes } from '../../hooks';
16
16
  import { meta } from '../../meta';
17
17
 
18
- const panelClassNames = 'is-[calc(100dvw-.5rem)] sm:is-max md:is-[25rem] max-is-[--text-content]';
18
+ const panelClassNames = 'is-[calc(100dvw-.5rem)] sm:is-max md:is-72 max-is-[--text-content]';
19
19
 
20
20
  export type ChatOptionsProps = {
21
21
  space: Space;
@@ -40,14 +40,16 @@ export const ChatOptions = ({
40
40
  const { t } = useTranslation(meta.id);
41
41
 
42
42
  return (
43
- <div role='none' className='flex gap-0.5'>
43
+ <div role='none' className='flex p-2'>
44
44
  <Popover.Root>
45
45
  <Popover.Trigger asChild>
46
- <IconButton variant='ghost' icon='ph--plus--regular' iconOnly size={5} label={t('button context objects')} />
46
+ <IconButton variant='ghost' icon='ph--plus--regular' iconOnly label={t('context objects button')} />
47
47
  </Popover.Trigger>
48
48
  <Popover.Portal>
49
49
  <Popover.Content side='top' classNames={panelClassNames}>
50
- <ObjectsPanel space={space} context={context} />
50
+ <Popover.Viewport>
51
+ <ObjectsPanel space={space} context={context} />
52
+ </Popover.Viewport>
51
53
  <Popover.Arrow />
52
54
  </Popover.Content>
53
55
  </Popover.Portal>
@@ -59,30 +61,31 @@ export const ChatOptions = ({
59
61
  variant='ghost'
60
62
  icon='ph--sliders-horizontal--regular'
61
63
  iconOnly
62
- size={5}
63
- label={t('button context settings')}
64
+ label={t('context settings button')}
64
65
  />
65
66
  </Popover.Trigger>
66
67
  <Popover.Portal>
67
68
  <Popover.Content side='top' classNames={panelClassNames}>
68
- <Tabs.Root orientation='horizontal' defaultValue='blueprints' defaultActivePart='list'>
69
- <Tabs.Viewport classNames='max-bs-[--radix-popover-content-available-height] grid grid-rows-[1fr_min-content] [&_[cmdk-root]]:contents [&_[role="tabpanel"]]:grid [&_[role="tabpanel"]]:grid-rows-[1fr_min-content] [&_[role="listbox"]]:min-bs-0 [&_[role="listbox"]]:overflow-y-auto [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:pli-cardSpacingChrome [&_[role="tabpanel"][data-state="active"]]:order-first [&_[role="tabpanel"][data-state="inactive"]]:hidden'>
70
- <Tabs.Tabpanel value='blueprints'>
71
- <BlueprintsPanel blueprintRegistry={blueprintRegistry} space={space} context={context} />
72
- </Tabs.Tabpanel>
73
- <Tabs.Tabpanel value='model'>
74
- <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />
75
- </Tabs.Tabpanel>
76
- <Tabs.Tablist classNames='sm:overflow-x-hidden justify-center p-[--dx-cardSpacingChrome] border-bs border-subduedSeparator order-last'>
77
- <Tabs.IconTab
78
- value='blueprints'
79
- icon='ph--blueprint--regular'
80
- label={t('blueprints in context title')}
81
- />
82
- <Tabs.IconTab value='model' label={t('chat model title')} icon='ph--cpu--regular' />
83
- </Tabs.Tablist>
84
- </Tabs.Viewport>
85
- </Tabs.Root>
69
+ <Popover.Viewport>
70
+ <Tabs.Root orientation='horizontal' defaultValue='blueprints' defaultActivePart='list' tabIndex={-1}>
71
+ <Tabs.Viewport classNames='max-bs-[--radix-popover-content-available-height] grid grid-rows-[1fr_min-content] [&_[cmdk-root]]:contents [&_[role="tabpanel"]]:grid [&_[role="tabpanel"]]:grid-rows-[1fr_min-content] [&_[role="listbox"]]:min-bs-0 [&_[role="listbox"]]:overflow-y-auto [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:pli-cardSpacingChrome [&_[role="tabpanel"][data-state="active"]]:order-first [&_[role="tabpanel"][data-state="inactive"]]:hidden'>
72
+ <Tabs.Tabpanel value='blueprints' tabIndex={-1} classNames='dx-focus-ring-inset'>
73
+ <BlueprintsPanel blueprintRegistry={blueprintRegistry} space={space} context={context} />
74
+ </Tabs.Tabpanel>
75
+ <Tabs.Tabpanel value='model' tabIndex={-1} classNames='dx-focus-ring-inset !pli-0'>
76
+ <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />
77
+ </Tabs.Tabpanel>
78
+ <Tabs.Tablist classNames='sm:overflow-x-hidden justify-center p-[--dx-cardSpacingChrome] border-bs border-subduedSeparator order-last'>
79
+ <Tabs.IconTab
80
+ value='blueprints'
81
+ icon='ph--blueprint--regular'
82
+ label={t('blueprints in context title')}
83
+ />
84
+ <Tabs.IconTab value='model' label={t('chat model title')} icon='ph--cpu--regular' />
85
+ </Tabs.Tablist>
86
+ </Tabs.Viewport>
87
+ </Tabs.Root>
88
+ </Popover.Viewport>
86
89
  <Popover.Arrow />
87
90
  </Popover.Content>
88
91
  </Popover.Portal>
@@ -98,7 +101,7 @@ const BlueprintsPanel = ({
98
101
  }: Pick<ChatOptionsProps, 'blueprintRegistry' | 'space' | 'context'>) => {
99
102
  const { t } = useTranslation(meta.id);
100
103
 
101
- const blueprints = useBlueprints({ blueprintRegistry });
104
+ const blueprints = useBlueprints({ blueprintRegistry, space });
102
105
  const activeBlueprints = useActiveBlueprints({ context });
103
106
  const { onUpdateBlueprint } = useBlueprintHandlers({ space, context, blueprintRegistry });
104
107
 
@@ -120,7 +123,7 @@ const BlueprintsPanel = ({
120
123
  );
121
124
  })}
122
125
  </SearchList.Content>
123
- <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-cardSpacingChrome' />
126
+ <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-cardSpacingChrome' autoFocus />
124
127
  </SearchList.Root>
125
128
  );
126
129
  };
@@ -131,24 +134,16 @@ const ModelsPanel = ({
131
134
  onPresetChange,
132
135
  }: Pick<ChatOptionsProps, 'presets' | 'preset' | 'onPresetChange'>) => {
133
136
  return (
134
- <ul role='listbox' className='plb-cardSpacingChrome'>
137
+ <Listbox.Root value={preset} onValueChange={onPresetChange} autoFocus>
135
138
  {presets?.map(({ id, label }) => {
136
- const isActive = preset === id;
137
139
  return (
138
- <li
139
- role='option'
140
- key={id}
141
- aria-selected={isActive}
142
- tabIndex={0}
143
- className='overflow-hidden dx-focus-ring flex gap-2 p-1 pis-2 pie-2 items-center rounded-sm select-none cursor-pointer hover:bg-hoverOverlay'
144
- onClick={() => onPresetChange?.(id)}
145
- >
146
- <div className='grow truncate'>{label}</div>
147
- <Icon icon='ph--check--regular' classNames={[!isActive && 'invisible']} />
148
- </li>
140
+ <Listbox.Option key={id} value={id}>
141
+ <Listbox.OptionLabel>{label}</Listbox.OptionLabel>
142
+ <Listbox.OptionIndicator />
143
+ </Listbox.Option>
149
144
  );
150
145
  })}
151
- </ul>
146
+ </Listbox.Root>
152
147
  );
153
148
  };
154
149
 
@@ -184,8 +179,8 @@ const ObjectsPanel = ({ space, context }: Pick<ChatOptionsProps, 'space' | 'cont
184
179
  const { objects: contextObjects, onUpdateObject } = useContextObjects({ space, context });
185
180
 
186
181
  return (
187
- <SearchList.Root classNames='pis-2 pie-2'>
188
- <SearchList.Content classNames='plb-cardSpacingChrome [&:has([cmdk-list-sizer]:empty)]:plb-0'>
182
+ <SearchList.Root>
183
+ <SearchList.Content classNames='p-cardSpacingChrome [&:has([cmdk-list-sizer]:empty)]:plb-0'>
189
184
  {objects.length ? (
190
185
  objects.map((object) => {
191
186
  const label = Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id;
@@ -207,7 +202,7 @@ const ObjectsPanel = ({ space, context }: Pick<ChatOptionsProps, 'space' | 'cont
207
202
  )}
208
203
  </SearchList.Content>
209
204
 
210
- <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 mbe-cardSpacingChrome'>
205
+ <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 pli-cardSpacingChrome mbe-cardSpacingChrome'>
211
206
  <Select.Root value={typename === ANY ? undefined : typename} onValueChange={setTypename}>
212
207
  <Select.TriggerButton density='fine' placeholder={t('type filter placeholder')} />
213
208
  <Select.Portal>
@@ -226,7 +221,7 @@ const ObjectsPanel = ({ space, context }: Pick<ChatOptionsProps, 'space' | 'cont
226
221
  </Select.Content>
227
222
  </Select.Portal>
228
223
  </Select.Root>
229
- <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-0' />
224
+ <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-0' autoFocus />
230
225
  </div>
231
226
  </SearchList.Root>
232
227
  );
@@ -23,7 +23,7 @@ export const ChatReferences = ({ classNames, context, space }: ChatReferencesPro
23
23
  const { objects, onUpdateObject } = useContextObjects({ space, context });
24
24
 
25
25
  return (
26
- <ul className={mx('flex flex-wrap', classNames)}>
26
+ <ul className={mx('flex', classNames)}>
27
27
  {objects.map((obj) => {
28
28
  const dxn = Obj.getDXN(obj);
29
29
  const typename = Obj.getTypename(obj);
@@ -32,12 +32,12 @@ export const ChatReferences = ({ classNames, context, space }: ChatReferencesPro
32
32
  <li key={dxn.toString()} className='dx-tag plb-0 pis-2 flex items-center' data-hue='neutral'>
33
33
  {toLocalizedString(label, t)}
34
34
  <IconButton
35
+ icon='ph--x--bold'
35
36
  iconOnly
36
37
  variant='ghost'
37
38
  label={t('remove object in context label')}
38
39
  classNames='p-0 hover:bg-transparent'
39
40
  size={3}
40
- icon='ph--x--bold'
41
41
  onClick={() => onUpdateObject?.(dxn, false)}
42
42
  />
43
43
  </li>