@dxos/plugin-assistant 0.8.4-main.5ea62a8 → 0.8.4-main.66e292d

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 (486) hide show
  1. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs +158 -0
  4. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-YBJBIVUZ.mjs → ChatContainer-2W6FNSJD.mjs} +22 -20
  6. package/dist/lib/browser/ChatContainer-2W6FNSJD.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-MTPJLEHM.mjs → ChatDialog-XQ3KDYWE.mjs} +12 -11
  8. package/dist/lib/browser/ChatDialog-XQ3KDYWE.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-Q7JYGFQV.mjs +59 -0
  10. package/dist/lib/browser/PromptArticle-Q7JYGFQV.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-LM6GVHQO.mjs} +67 -21
  14. package/dist/lib/browser/app-graph-builder-LM6GVHQO.mjs.map +7 -0
  15. package/dist/lib/browser/{blueprint-definition-CRZPIA5A.mjs → blueprint-definition-VBEOXNBS.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-5JZRYQZL.mjs} +52 -25
  19. package/dist/lib/browser/chunk-5JZRYQZL.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs +335 -0
  21. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-IJAJRAR7.mjs → chunk-LRE4VEZV.mjs} +2 -4
  23. package/dist/lib/browser/chunk-LRE4VEZV.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-OYFQS7JM.mjs → chunk-NC2QNMBF.mjs} +60 -41
  25. package/dist/lib/browser/chunk-NC2QNMBF.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-PWSTPQUY.mjs +1929 -0
  27. package/dist/lib/browser/chunk-PWSTPQUY.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 +142 -103
  33. package/dist/lib/browser/index.mjs.map +4 -4
  34. package/dist/lib/browser/{intent-resolver-BQO5SVGI.mjs → intent-resolver-EEYS2GJF.mjs} +62 -31
  35. package/dist/lib/browser/intent-resolver-EEYS2GJF.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-ECKZNDSU.mjs} +24 -35
  40. package/dist/lib/browser/react-surface-ECKZNDSU.mjs.map +7 -0
  41. package/dist/lib/browser/repair-3MZXLUHO.mjs +44 -0
  42. package/dist/lib/browser/repair-3MZXLUHO.mjs.map +7 -0
  43. package/dist/lib/browser/{settings-36V3VUMW.mjs → settings-HD5WA24I.mjs} +5 -5
  44. package/dist/lib/browser/{settings-36V3VUMW.mjs.map → settings-HD5WA24I.mjs.map} +1 -1
  45. package/dist/lib/browser/{state-D5IVKNYG.mjs → state-GG7Z3NB7.mjs} +9 -5
  46. package/dist/lib/browser/{state-D5IVKNYG.mjs.map → state-GG7Z3NB7.mjs.map} +3 -3
  47. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  48. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  49. package/dist/lib/browser/types/index.mjs +2 -2
  50. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs +37 -0
  51. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs.map +7 -0
  52. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs +159 -0
  53. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs.map +7 -0
  54. package/dist/lib/node-esm/{ChatContainer-TUCITJJW.mjs → ChatContainer-CTUNUEU3.mjs} +22 -20
  55. package/dist/lib/node-esm/ChatContainer-CTUNUEU3.mjs.map +7 -0
  56. package/dist/lib/node-esm/{ChatDialog-JLM7RDZQ.mjs → ChatDialog-X42ASXQD.mjs} +12 -11
  57. package/dist/lib/node-esm/ChatDialog-X42ASXQD.mjs.map +7 -0
  58. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.mjs +60 -0
  59. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.mjs.map +7 -0
  60. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
  61. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
  62. package/dist/lib/node-esm/{app-graph-builder-PNAFQUYT.mjs → app-graph-builder-6XUAGTRS.mjs} +67 -21
  63. package/dist/lib/node-esm/app-graph-builder-6XUAGTRS.mjs.map +7 -0
  64. package/dist/lib/node-esm/{blueprint-definition-275J3XL2.mjs → blueprint-definition-RDCLLIQH.mjs} +4 -4
  65. package/dist/lib/node-esm/{chunk-CAQKGW3B.mjs → chunk-25GMMNY5.mjs} +60 -41
  66. package/dist/lib/node-esm/chunk-25GMMNY5.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs +264 -0
  68. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs +336 -0
  70. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-7YOGZI66.mjs → chunk-E4JSYCWZ.mjs} +52 -25
  72. package/dist/lib/node-esm/chunk-E4JSYCWZ.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/chunk-Z37USO4K.mjs +1930 -0
  78. package/dist/lib/node-esm/chunk-Z37USO4K.mjs.map +7 -0
  79. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
  80. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
  81. package/dist/lib/node-esm/index.mjs +142 -103
  82. package/dist/lib/node-esm/index.mjs.map +4 -4
  83. package/dist/lib/node-esm/{intent-resolver-FIS3T5KP.mjs → intent-resolver-4SRYLDK5.mjs} +62 -31
  84. package/dist/lib/node-esm/intent-resolver-4SRYLDK5.mjs.map +7 -0
  85. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs +18 -0
  86. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs.map +7 -0
  87. package/dist/lib/node-esm/meta.json +1 -1
  88. package/dist/lib/node-esm/{react-surface-4NLRKNBU.mjs → react-surface-NLIG5VAI.mjs} +24 -35
  89. package/dist/lib/node-esm/react-surface-NLIG5VAI.mjs.map +7 -0
  90. package/dist/lib/node-esm/repair-RER5H7Y6.mjs +45 -0
  91. package/dist/lib/node-esm/repair-RER5H7Y6.mjs.map +7 -0
  92. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs → settings-YJQVKHH5.mjs} +5 -5
  93. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs.map → settings-YJQVKHH5.mjs.map} +1 -1
  94. package/dist/lib/node-esm/{state-4VLKPLW3.mjs → state-FSUHFMDM.mjs} +9 -5
  95. package/dist/lib/node-esm/{state-4VLKPLW3.mjs.map → state-FSUHFMDM.mjs.map} +3 -3
  96. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  97. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs.map +7 -0
  98. package/dist/lib/node-esm/types/index.mjs +2 -2
  99. package/dist/types/src/AssistantPlugin.d.ts +1 -1
  100. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/ai-service.d.ts +2 -3
  102. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -1
  105. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/capabilities.d.ts +2 -11
  107. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/index.d.ts +1 -0
  110. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/repair.d.ts +4 -0
  115. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/toolkit.d.ts +1 -1
  118. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  119. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  120. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  121. package/dist/types/src/components/Chat/Chat.d.ts +22 -11
  122. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  123. package/dist/types/src/components/Chat/events.d.ts +4 -0
  124. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  125. package/dist/types/src/components/ChatCompanion.d.ts +2 -2
  126. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
  127. package/dist/types/src/components/ChatContainer.d.ts +7 -4
  128. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  130. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  131. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  132. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  133. package/dist/types/src/components/ChatThread/ChatThread.d.ts +10 -8
  134. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  135. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +140 -77
  136. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  137. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  138. package/dist/types/src/components/ChatThread/reducers.d.ts +5 -5
  139. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -1
  140. package/dist/types/src/components/ChatThread/registry.d.ts +11 -0
  141. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  142. package/dist/types/src/components/ChatThread/sync.d.ts +42 -0
  143. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  144. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  145. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  146. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  147. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  148. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  149. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  150. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +121 -62
  151. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  152. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -1
  153. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  154. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +121 -62
  155. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  157. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  158. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  159. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  160. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  161. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +21 -0
  162. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  163. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  164. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  165. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  166. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  167. package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -2
  168. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  169. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +121 -62
  170. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/index.d.ts +4 -9
  172. package/dist/types/src/components/index.d.ts.map +1 -1
  173. package/dist/types/src/functions/analysis.d.ts +1 -1
  174. package/dist/types/src/functions/analysis.d.ts.map +1 -1
  175. package/dist/types/src/functions/index.d.ts +2 -2
  176. package/dist/types/src/functions/index.d.ts.map +1 -1
  177. package/dist/types/src/functions/{list.d.ts → object-list.d.ts} +2 -2
  178. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  179. package/dist/types/src/functions/{load.d.ts → object-load.d.ts} +2 -2
  180. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  181. package/dist/types/src/hooks/index.d.ts +2 -4
  182. package/dist/types/src/hooks/index.d.ts.map +1 -1
  183. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +2 -1
  184. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  185. package/dist/types/src/hooks/useChatProcessor.d.ts +5 -3
  186. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  187. package/dist/types/src/hooks/useChatServices.d.ts +2 -2
  188. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  190. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  191. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  192. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  193. package/dist/types/src/hooks/useFilteredTypes.d.ts +4 -0
  194. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  195. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  196. package/dist/types/src/index.d.ts +2 -0
  197. package/dist/types/src/index.d.ts.map +1 -1
  198. package/dist/types/src/meta.d.ts +1 -2
  199. package/dist/types/src/meta.d.ts.map +1 -1
  200. package/dist/types/src/processor/index.d.ts +1 -0
  201. package/dist/types/src/processor/index.d.ts.map +1 -1
  202. package/dist/types/src/processor/presets.d.ts +1 -1
  203. package/dist/types/src/processor/presets.d.ts.map +1 -1
  204. package/dist/types/src/processor/processor.d.ts +17 -23
  205. package/dist/types/src/processor/processor.d.ts.map +1 -1
  206. package/dist/types/src/processor/update-name.d.ts +10 -0
  207. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  208. package/dist/types/src/queue-logger.d.ts.map +1 -1
  209. package/dist/types/src/testing/index.d.ts +1 -2
  210. package/dist/types/src/testing/index.d.ts.map +1 -1
  211. package/dist/types/src/testing/test-generator.d.ts +7 -0
  212. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  213. package/dist/types/src/testing/test-services.d.ts +2 -2
  214. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  215. package/dist/types/src/translations.d.ts +246 -27
  216. package/dist/types/src/translations.d.ts.map +1 -1
  217. package/dist/types/src/types/Assistant.d.ts +16 -13
  218. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  219. package/dist/types/src/types/AssistantAction.d.ts +38 -16
  220. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  221. package/dist/types/src/types/service.d.ts +129 -82
  222. package/dist/types/src/types/service.d.ts.map +1 -1
  223. package/dist/types/tsconfig.tsbuildinfo +1 -1
  224. package/package.json +96 -111
  225. package/src/AssistantPlugin.tsx +138 -134
  226. package/src/capabilities/ai-service.ts +6 -7
  227. package/src/capabilities/app-graph-builder.ts +69 -21
  228. package/src/capabilities/blueprint-definition.ts +39 -15
  229. package/src/capabilities/capabilities.ts +2 -16
  230. package/src/capabilities/edge-model-resolver.ts +5 -7
  231. package/src/capabilities/index.ts +1 -0
  232. package/src/capabilities/intent-resolver.ts +61 -20
  233. package/src/capabilities/local-model-resolver.ts +7 -9
  234. package/src/capabilities/react-surface.tsx +16 -20
  235. package/src/capabilities/repair.ts +49 -0
  236. package/src/capabilities/state.ts +2 -0
  237. package/src/capabilities/toolkit.ts +9 -155
  238. package/src/components/BlueprintArticle.tsx +29 -0
  239. package/src/components/Chat/Chat.tsx +177 -140
  240. package/src/components/Chat/events.ts +6 -0
  241. package/src/components/ChatCompanion.tsx +93 -49
  242. package/src/components/ChatContainer.tsx +27 -17
  243. package/src/components/ChatDialog.tsx +17 -10
  244. package/src/components/ChatProgress/ChatProgress.tsx +3 -4
  245. package/src/components/ChatPrompt/ChatActions.tsx +2 -4
  246. package/src/components/ChatPrompt/ChatOptions.tsx +48 -47
  247. package/src/components/ChatPrompt/ChatReferences.tsx +2 -2
  248. package/src/components/ChatThread/ChatThread.stories.tsx +90 -225
  249. package/src/components/ChatThread/ChatThread.tsx +59 -51
  250. package/src/components/ChatThread/Link.tsx +11 -8
  251. package/src/components/ChatThread/reducers.ts +6 -6
  252. package/src/components/ChatThread/registry.tsx +174 -0
  253. package/src/components/ChatThread/sync.test.ts +89 -0
  254. package/src/components/ChatThread/sync.ts +148 -0
  255. package/src/components/ChatThread/testing/thread.md +37 -0
  256. package/src/components/PromptArticle.tsx +51 -0
  257. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +15 -7
  258. package/src/components/TemplateEditor/TemplateEditor.tsx +21 -12
  259. package/src/components/TemplateEditor/TemplateForm.stories.tsx +4 -6
  260. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  261. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  262. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  263. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  264. package/src/components/{ChatThread → ToolBlock}/ToolBlock.tsx +46 -50
  265. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  266. package/src/components/ToolBlock/index.ts +6 -0
  267. package/src/components/Toolbox/Toolbox.stories.tsx +5 -8
  268. package/src/components/Toolbox/Toolbox.tsx +5 -5
  269. package/src/components/index.ts +2 -5
  270. package/src/functions/analysis.ts +5 -3
  271. package/src/functions/index.ts +2 -2
  272. package/src/functions/{list.ts → object-list.ts} +6 -4
  273. package/src/functions/{load.ts → object-load.ts} +10 -8
  274. package/src/hooks/index.ts +2 -4
  275. package/src/hooks/useBlueprintRegistry.ts +19 -4
  276. package/src/hooks/useChatProcessor.ts +23 -15
  277. package/src/hooks/useChatServices.ts +29 -42
  278. package/src/hooks/useChatToolbarActions.ts +122 -0
  279. package/src/hooks/useContextBinder.ts +19 -7
  280. package/src/hooks/useContextObjects.ts +1 -1
  281. package/src/hooks/{useItemTypes.ts → useFilteredTypes.ts} +8 -7
  282. package/src/hooks/useReferencesProvider.ts +2 -1
  283. package/src/index.ts +2 -0
  284. package/src/meta.ts +9 -6
  285. package/src/processor/index.ts +1 -0
  286. package/src/processor/presets.ts +2 -2
  287. package/src/processor/processor.test.ts +21 -27
  288. package/src/processor/processor.ts +47 -74
  289. package/src/processor/update-name.ts +56 -0
  290. package/src/queue-logger.ts +9 -13
  291. package/src/testing/index.ts +1 -2
  292. package/src/testing/test-generator.ts +261 -0
  293. package/src/testing/test-services.ts +2 -8
  294. package/src/translations.ts +30 -18
  295. package/src/types/Assistant.ts +11 -9
  296. package/src/types/AssistantAction.ts +23 -6
  297. package/src/types/service.ts +17 -9
  298. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs +0 -29
  299. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs.map +0 -7
  300. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs +0 -126
  301. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs.map +0 -7
  302. package/dist/lib/browser/ChatContainer-YBJBIVUZ.mjs.map +0 -7
  303. package/dist/lib/browser/ChatDialog-MTPJLEHM.mjs.map +0 -7
  304. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs +0 -150
  305. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +0 -7
  306. package/dist/lib/browser/ai-service-NRZPTUHO.mjs +0 -22
  307. package/dist/lib/browser/ai-service-NRZPTUHO.mjs.map +0 -7
  308. package/dist/lib/browser/app-graph-builder-7AAWTWGA.mjs.map +0 -7
  309. package/dist/lib/browser/chunk-6QMISAU6.mjs +0 -167
  310. package/dist/lib/browser/chunk-6QMISAU6.mjs.map +0 -7
  311. package/dist/lib/browser/chunk-CFXXQM25.mjs +0 -182
  312. package/dist/lib/browser/chunk-CFXXQM25.mjs.map +0 -7
  313. package/dist/lib/browser/chunk-IJAJRAR7.mjs.map +0 -7
  314. package/dist/lib/browser/chunk-O4LUJEDV.mjs +0 -20
  315. package/dist/lib/browser/chunk-O4LUJEDV.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-OYFQS7JM.mjs.map +0 -7
  317. package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-V5H5CCZA.mjs +0 -218
  319. package/dist/lib/browser/chunk-V5H5CCZA.mjs.map +0 -7
  320. package/dist/lib/browser/chunk-XL557TXF.mjs +0 -2332
  321. package/dist/lib/browser/chunk-XL557TXF.mjs.map +0 -7
  322. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs +0 -22
  323. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs.map +0 -7
  324. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs.map +0 -7
  325. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs +0 -21
  326. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs.map +0 -7
  327. package/dist/lib/browser/react-surface-VNCD2H7C.mjs.map +0 -7
  328. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs +0 -191
  329. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs.map +0 -7
  330. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs +0 -30
  331. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs.map +0 -7
  332. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs +0 -127
  333. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs.map +0 -7
  334. package/dist/lib/node-esm/ChatContainer-TUCITJJW.mjs.map +0 -7
  335. package/dist/lib/node-esm/ChatDialog-JLM7RDZQ.mjs.map +0 -7
  336. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs +0 -151
  337. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +0 -7
  338. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs +0 -23
  339. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs.map +0 -7
  340. package/dist/lib/node-esm/app-graph-builder-PNAFQUYT.mjs.map +0 -7
  341. package/dist/lib/node-esm/chunk-2X6VEO32.mjs +0 -2333
  342. package/dist/lib/node-esm/chunk-2X6VEO32.mjs.map +0 -7
  343. package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +0 -7
  344. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs.map +0 -7
  345. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs +0 -183
  346. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs.map +0 -7
  347. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs +0 -168
  348. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs.map +0 -7
  349. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs +0 -219
  350. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs.map +0 -7
  351. package/dist/lib/node-esm/chunk-VFY2JG62.mjs +0 -22
  352. package/dist/lib/node-esm/chunk-VFY2JG62.mjs.map +0 -7
  353. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs.map +0 -7
  354. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs +0 -23
  355. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs.map +0 -7
  356. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs.map +0 -7
  357. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs +0 -22
  358. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs.map +0 -7
  359. package/dist/lib/node-esm/react-surface-4NLRKNBU.mjs.map +0 -7
  360. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs +0 -192
  361. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs.map +0 -7
  362. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  363. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  364. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -33
  365. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  366. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  367. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  368. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  369. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  370. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  371. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  372. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  373. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  374. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -263
  375. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  376. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  377. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  378. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  379. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -4
  380. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  381. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  382. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  383. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  384. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  385. package/dist/types/src/execution-graph/execution-graph.d.ts +0 -21
  386. package/dist/types/src/execution-graph/execution-graph.d.ts.map +0 -1
  387. package/dist/types/src/execution-graph/index.d.ts +0 -2
  388. package/dist/types/src/execution-graph/index.d.ts.map +0 -1
  389. package/dist/types/src/functions/list.d.ts.map +0 -1
  390. package/dist/types/src/functions/load.d.ts.map +0 -1
  391. package/dist/types/src/hooks/useExecutionGraph.d.ts +0 -7
  392. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +0 -1
  393. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  394. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  395. package/dist/types/src/hooks/useMatcherExtension.d.ts +0 -3
  396. package/dist/types/src/hooks/useMatcherExtension.d.ts.map +0 -1
  397. package/dist/types/src/hooks/useResolveRef.d.ts +0 -4
  398. package/dist/types/src/hooks/useResolveRef.d.ts.map +0 -1
  399. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  400. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  401. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  402. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  403. package/dist/types/src/parser/index.d.ts +0 -4
  404. package/dist/types/src/parser/index.d.ts.map +0 -1
  405. package/dist/types/src/parser/query-parser.d.ts +0 -15
  406. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  407. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  408. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  409. package/dist/types/src/parser/types.d.ts +0 -24
  410. package/dist/types/src/parser/types.d.ts.map +0 -1
  411. package/dist/types/src/stories/Chat.stories.d.ts +0 -26
  412. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  413. package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -4
  414. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
  415. package/dist/types/src/stories/components/ChatContainer.d.ts +0 -4
  416. package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
  417. package/dist/types/src/stories/components/CommentsContainer.d.ts +0 -4
  418. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +0 -1
  419. package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
  420. package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
  421. package/dist/types/src/stories/components/LoggingContainer.d.ts +0 -4
  422. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +0 -1
  423. package/dist/types/src/stories/components/MessageContainer.d.ts +0 -4
  424. package/dist/types/src/stories/components/MessageContainer.d.ts.map +0 -1
  425. package/dist/types/src/stories/components/SurfaceContainer.d.ts +0 -8
  426. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +0 -1
  427. package/dist/types/src/stories/components/TasksContainer.d.ts +0 -4
  428. package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
  429. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +0 -3
  430. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +0 -1
  431. package/dist/types/src/stories/components/index.d.ts +0 -11
  432. package/dist/types/src/stories/components/index.d.ts.map +0 -1
  433. package/dist/types/src/stories/components/types.d.ts +0 -7
  434. package/dist/types/src/stories/components/types.d.ts.map +0 -1
  435. package/dist/types/src/stories/testing/data.d.ts +0 -5
  436. package/dist/types/src/stories/testing/data.d.ts.map +0 -1
  437. package/dist/types/src/stories/testing/index.d.ts +0 -3
  438. package/dist/types/src/stories/testing/index.d.ts.map +0 -1
  439. package/dist/types/src/stories/testing/testing.d.ts +0 -44
  440. package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
  441. package/dist/types/src/testing/test-data.d.ts +0 -4
  442. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  443. package/dist/types/src/testing/test-functions.d.ts +0 -6
  444. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  445. package/src/components/BlueprintContainer.tsx +0 -24
  446. package/src/components/ChatThread/ChatMessage.tsx +0 -334
  447. package/src/components/PromptSettings.tsx +0 -90
  448. package/src/components/SequenceContainer.tsx +0 -131
  449. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -33
  450. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  451. package/src/components/SequenceEditor/index.ts +0 -5
  452. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  453. package/src/components/Toolbar/Toolbar.tsx +0 -20
  454. package/src/components/Toolbar/index.ts +0 -5
  455. package/src/components/Toolbar/useChatToolbarActions.ts +0 -125
  456. package/src/execution-graph/execution-graph.ts +0 -211
  457. package/src/execution-graph/index.ts +0 -5
  458. package/src/hooks/useExecutionGraph.ts +0 -20
  459. package/src/hooks/useMatcherExtension.ts +0 -45
  460. package/src/hooks/useResolveRef.ts +0 -33
  461. package/src/parser/filter-generator.test.ts +0 -32
  462. package/src/parser/filter-generator.ts +0 -76
  463. package/src/parser/index.ts +0 -7
  464. package/src/parser/query-parser.test.ts +0 -139
  465. package/src/parser/query-parser.ts +0 -199
  466. package/src/parser/types.ts +0 -36
  467. package/src/stories/Chat.stories.tsx +0 -469
  468. package/src/stories/components/BlueprintContainer.tsx +0 -32
  469. package/src/stories/components/ChatContainer.tsx +0 -57
  470. package/src/stories/components/CommentsContainer.tsx +0 -25
  471. package/src/stories/components/GraphContainer.tsx +0 -118
  472. package/src/stories/components/LoggingContainer.tsx +0 -21
  473. package/src/stories/components/MessageContainer.tsx +0 -27
  474. package/src/stories/components/SurfaceContainer.tsx +0 -52
  475. package/src/stories/components/TasksContainer.tsx +0 -49
  476. package/src/stories/components/TokenManagerContainer.tsx +0 -14
  477. package/src/stories/components/index.ts +0 -15
  478. package/src/stories/components/types.ts +0 -11
  479. package/src/stories/testing/data.ts +0 -142
  480. package/src/stories/testing/index.ts +0 -6
  481. package/src/stories/testing/testing.tsx +0 -254
  482. package/src/testing/test-data.ts +0 -109
  483. package/src/testing/test-functions.ts +0 -16
  484. /package/dist/lib/browser/{blueprint-definition-CRZPIA5A.mjs.map → blueprint-definition-VBEOXNBS.mjs.map} +0 -0
  485. /package/dist/lib/node-esm/{blueprint-definition-275J3XL2.mjs.map → blueprint-definition-RDCLLIQH.mjs.map} +0 -0
  486. /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,19 @@ 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
- import { useActiveBlueprints, useBlueprintHandlers, useBlueprints, useContextObjects, useItemTypes } from '../../hooks';
15
+ import {
16
+ useActiveBlueprints,
17
+ useBlueprintHandlers,
18
+ useBlueprints,
19
+ useContextObjects,
20
+ useFilteredTypes,
21
+ } from '../../hooks';
16
22
  import { meta } from '../../meta';
17
23
 
18
- const panelClassNames = 'is-[calc(100dvw-.5rem)] sm:is-max md:is-[25rem] max-is-[--text-content]';
24
+ const panelClassNames = 'is-[calc(100dvw-.5rem)] sm:is-max md:is-72 max-is-[--text-content]';
19
25
 
20
26
  export type ChatOptionsProps = {
21
27
  space: Space;
@@ -40,14 +46,16 @@ export const ChatOptions = ({
40
46
  const { t } = useTranslation(meta.id);
41
47
 
42
48
  return (
43
- <div role='none' className='flex gap-0.5'>
49
+ <div role='none' className='flex p-2'>
44
50
  <Popover.Root>
45
51
  <Popover.Trigger asChild>
46
- <IconButton variant='ghost' icon='ph--plus--regular' iconOnly size={5} label={t('button context objects')} />
52
+ <IconButton variant='ghost' icon='ph--plus--regular' iconOnly label={t('context objects button')} />
47
53
  </Popover.Trigger>
48
54
  <Popover.Portal>
49
55
  <Popover.Content side='top' classNames={panelClassNames}>
50
- <ObjectsPanel space={space} context={context} />
56
+ <Popover.Viewport>
57
+ <ObjectsPanel space={space} context={context} />
58
+ </Popover.Viewport>
51
59
  <Popover.Arrow />
52
60
  </Popover.Content>
53
61
  </Popover.Portal>
@@ -59,30 +67,31 @@ export const ChatOptions = ({
59
67
  variant='ghost'
60
68
  icon='ph--sliders-horizontal--regular'
61
69
  iconOnly
62
- size={5}
63
- label={t('button context settings')}
70
+ label={t('context settings button')}
64
71
  />
65
72
  </Popover.Trigger>
66
73
  <Popover.Portal>
67
74
  <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>
75
+ <Popover.Viewport>
76
+ <Tabs.Root orientation='horizontal' defaultValue='blueprints' defaultActivePart='list' tabIndex={-1}>
77
+ <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'>
78
+ <Tabs.Tabpanel value='blueprints' tabIndex={-1} classNames='dx-focus-ring-inset'>
79
+ <BlueprintsPanel blueprintRegistry={blueprintRegistry} space={space} context={context} />
80
+ </Tabs.Tabpanel>
81
+ <Tabs.Tabpanel value='model' tabIndex={-1} classNames='dx-focus-ring-inset !pli-0'>
82
+ <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />
83
+ </Tabs.Tabpanel>
84
+ <Tabs.Tablist classNames='sm:overflow-x-hidden justify-center p-[--dx-cardSpacingChrome] border-bs border-subduedSeparator order-last'>
85
+ <Tabs.IconTab
86
+ value='blueprints'
87
+ icon='ph--blueprint--regular'
88
+ label={t('blueprints in context title')}
89
+ />
90
+ <Tabs.IconTab value='model' label={t('chat model title')} icon='ph--cpu--regular' />
91
+ </Tabs.Tablist>
92
+ </Tabs.Viewport>
93
+ </Tabs.Root>
94
+ </Popover.Viewport>
86
95
  <Popover.Arrow />
87
96
  </Popover.Content>
88
97
  </Popover.Portal>
@@ -98,7 +107,7 @@ const BlueprintsPanel = ({
98
107
  }: Pick<ChatOptionsProps, 'blueprintRegistry' | 'space' | 'context'>) => {
99
108
  const { t } = useTranslation(meta.id);
100
109
 
101
- const blueprints = useBlueprints({ blueprintRegistry });
110
+ const blueprints = useBlueprints({ blueprintRegistry, space });
102
111
  const activeBlueprints = useActiveBlueprints({ context });
103
112
  const { onUpdateBlueprint } = useBlueprintHandlers({ space, context, blueprintRegistry });
104
113
 
@@ -120,7 +129,7 @@ const BlueprintsPanel = ({
120
129
  );
121
130
  })}
122
131
  </SearchList.Content>
123
- <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-cardSpacingChrome' />
132
+ <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-cardSpacingChrome' autoFocus />
124
133
  </SearchList.Root>
125
134
  );
126
135
  };
@@ -131,24 +140,16 @@ const ModelsPanel = ({
131
140
  onPresetChange,
132
141
  }: Pick<ChatOptionsProps, 'presets' | 'preset' | 'onPresetChange'>) => {
133
142
  return (
134
- <ul role='listbox' className='plb-cardSpacingChrome'>
143
+ <Listbox.Root value={preset} onValueChange={onPresetChange} autoFocus>
135
144
  {presets?.map(({ id, label }) => {
136
- const isActive = preset === id;
137
145
  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>
146
+ <Listbox.Option key={id} value={id}>
147
+ <Listbox.OptionLabel>{label}</Listbox.OptionLabel>
148
+ <Listbox.OptionIndicator />
149
+ </Listbox.Option>
149
150
  );
150
151
  })}
151
- </ul>
152
+ </Listbox.Root>
152
153
  );
153
154
  };
154
155
 
@@ -158,7 +159,7 @@ const ObjectsPanel = ({ space, context }: Pick<ChatOptionsProps, 'space' | 'cont
158
159
  const { t } = useTranslation(meta.id);
159
160
 
160
161
  // Item types sorted by label.
161
- const types = useItemTypes(space);
162
+ const types = useFilteredTypes(space);
162
163
  const typenames = useMemo(() => {
163
164
  const typenames = types.map((type) => {
164
165
  const typename = Type.getTypename(type);
@@ -184,8 +185,8 @@ const ObjectsPanel = ({ space, context }: Pick<ChatOptionsProps, 'space' | 'cont
184
185
  const { objects: contextObjects, onUpdateObject } = useContextObjects({ space, context });
185
186
 
186
187
  return (
187
- <SearchList.Root classNames='pis-2 pie-2'>
188
- <SearchList.Content classNames='plb-cardSpacingChrome [&:has([cmdk-list-sizer]:empty)]:plb-0'>
188
+ <SearchList.Root>
189
+ <SearchList.Content classNames='p-cardSpacingChrome [&:has([cmdk-list-sizer]:empty)]:plb-0'>
189
190
  {objects.length ? (
190
191
  objects.map((object) => {
191
192
  const label = Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id;
@@ -207,7 +208,7 @@ const ObjectsPanel = ({ space, context }: Pick<ChatOptionsProps, 'space' | 'cont
207
208
  )}
208
209
  </SearchList.Content>
209
210
 
210
- <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 mbe-cardSpacingChrome'>
211
+ <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 pli-cardSpacingChrome mbe-cardSpacingChrome'>
211
212
  <Select.Root value={typename === ANY ? undefined : typename} onValueChange={setTypename}>
212
213
  <Select.TriggerButton density='fine' placeholder={t('type filter placeholder')} />
213
214
  <Select.Portal>
@@ -226,7 +227,7 @@ const ObjectsPanel = ({ space, context }: Pick<ChatOptionsProps, 'space' | 'cont
226
227
  </Select.Content>
227
228
  </Select.Portal>
228
229
  </Select.Root>
229
- <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-0' />
230
+ <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-0' autoFocus />
230
231
  </div>
231
232
  </SearchList.Root>
232
233
  );
@@ -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>