@dxos/plugin-assistant 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8

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 (451) hide show
  1. package/dist/lib/browser/AssistantSettings-RBJHZPUJ.mjs +93 -0
  2. package/dist/lib/browser/AssistantSettings-RBJHZPUJ.mjs.map +7 -0
  3. package/dist/lib/browser/BlueprintArticle-FTGO6Y2F.mjs +35 -0
  4. package/dist/lib/browser/BlueprintArticle-FTGO6Y2F.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatCompanion-ECQYUQ2B.mjs → ChatCompanion-J7UAC5TX.mjs} +76 -26
  6. package/dist/lib/browser/ChatCompanion-J7UAC5TX.mjs.map +7 -0
  7. package/dist/lib/browser/ChatContainer-QPPZHQRQ.mjs +12 -0
  8. package/dist/lib/browser/{ChatDialog-SMK4RSZU.mjs → ChatDialog-NYU67AQS.mjs} +9 -9
  9. package/dist/lib/browser/ChatDialog-NYU67AQS.mjs.map +7 -0
  10. package/dist/lib/browser/ProjectArticle-ZB27ZROW.mjs +92 -0
  11. package/dist/lib/browser/ProjectArticle-ZB27ZROW.mjs.map +7 -0
  12. package/dist/lib/browser/ProjectSettings-DDYTUL25.mjs +117 -0
  13. package/dist/lib/browser/ProjectSettings-DDYTUL25.mjs.map +7 -0
  14. package/dist/lib/browser/PromptArticle-RHTAHF23.mjs +71 -0
  15. package/dist/lib/browser/PromptArticle-RHTAHF23.mjs.map +7 -0
  16. package/dist/lib/browser/TracePanel-UPRPODLO.mjs +228 -0
  17. package/dist/lib/browser/TracePanel-UPRPODLO.mjs.map +7 -0
  18. package/dist/lib/browser/TriggerStatus-X35WDCK5.mjs +112 -0
  19. package/dist/lib/browser/TriggerStatus-X35WDCK5.mjs.map +7 -0
  20. package/dist/lib/browser/{ai-service-5GUDOEWF.mjs → ai-service-CY2BYPH6.mjs} +5 -4
  21. package/dist/lib/browser/ai-service-CY2BYPH6.mjs.map +7 -0
  22. package/dist/lib/browser/{app-graph-builder-DSNH2OMY.mjs → app-graph-builder-RXT6BPSZ.mjs} +74 -42
  23. package/dist/lib/browser/app-graph-builder-RXT6BPSZ.mjs.map +7 -0
  24. package/dist/lib/browser/blueprint-definition-O4XHPNJB.mjs +37 -0
  25. package/dist/lib/browser/blueprint-definition-O4XHPNJB.mjs.map +7 -0
  26. package/dist/lib/browser/blueprints/index.mjs +3 -7
  27. package/dist/lib/browser/{chunk-EXVT7D4B.mjs → chunk-2VIEX4RA.mjs} +3 -3
  28. package/dist/lib/browser/{chunk-EXVT7D4B.mjs.map → chunk-2VIEX4RA.mjs.map} +1 -1
  29. package/dist/lib/browser/chunk-IWAEH25L.mjs +101 -0
  30. package/dist/lib/browser/chunk-IWAEH25L.mjs.map +7 -0
  31. package/dist/lib/browser/{chunk-ML3QCFKA.mjs → chunk-JYY5AD65.mjs} +50 -29
  32. package/dist/lib/browser/chunk-JYY5AD65.mjs.map +7 -0
  33. package/dist/lib/browser/{chunk-3JYPE2MM.mjs → chunk-KR3KDUVF.mjs} +637 -346
  34. package/dist/lib/browser/chunk-KR3KDUVF.mjs.map +7 -0
  35. package/dist/lib/browser/{chunk-V772AMZM.mjs → chunk-MZWRGUND.mjs} +51 -48
  36. package/dist/lib/browser/chunk-MZWRGUND.mjs.map +7 -0
  37. package/dist/lib/browser/chunk-ZZRRSIQQ.mjs +26 -0
  38. package/dist/lib/browser/chunk-ZZRRSIQQ.mjs.map +7 -0
  39. package/dist/lib/browser/{edge-model-resolver-26BOY6HY.mjs → edge-model-resolver-YTMFQEN5.mjs} +4 -3
  40. package/dist/lib/browser/edge-model-resolver-YTMFQEN5.mjs.map +7 -0
  41. package/dist/lib/browser/index.mjs +128 -91
  42. package/dist/lib/browser/index.mjs.map +4 -4
  43. package/dist/lib/browser/{local-model-resolver-ZFIM6GGV.mjs → local-model-resolver-CGRQH37T.mjs} +4 -3
  44. package/dist/lib/browser/local-model-resolver-CGRQH37T.mjs.map +7 -0
  45. package/dist/lib/browser/markdown-QGCIPTMQ.mjs +155 -0
  46. package/dist/lib/browser/markdown-QGCIPTMQ.mjs.map +7 -0
  47. package/dist/lib/browser/meta.json +1 -1
  48. package/dist/lib/browser/{operation-resolver-7XJLBRQY.mjs → operation-resolver-BNMDF2JV.mjs} +64 -43
  49. package/dist/lib/browser/operation-resolver-BNMDF2JV.mjs.map +7 -0
  50. package/dist/lib/browser/react-surface-XPQLYF6H.mjs +150 -0
  51. package/dist/lib/browser/react-surface-XPQLYF6H.mjs.map +7 -0
  52. package/dist/lib/browser/{settings-4ZDLUMYE.mjs → settings-BVW4UWJL.mjs} +6 -5
  53. package/dist/lib/browser/settings-BVW4UWJL.mjs.map +7 -0
  54. package/dist/lib/browser/{state-AN6336ZX.mjs → state-TKE6OVOG.mjs} +5 -4
  55. package/dist/lib/browser/{state-AN6336ZX.mjs.map → state-TKE6OVOG.mjs.map} +3 -3
  56. package/dist/lib/browser/toolkit-XRSBBB3L.mjs +16 -0
  57. package/dist/lib/browser/toolkit-XRSBBB3L.mjs.map +7 -0
  58. package/dist/lib/browser/types/index.mjs +2 -2
  59. package/dist/lib/node-esm/AssistantSettings-KYN2CIJJ.mjs +94 -0
  60. package/dist/lib/node-esm/AssistantSettings-KYN2CIJJ.mjs.map +7 -0
  61. package/dist/lib/node-esm/BlueprintArticle-DFTPXAYU.mjs +36 -0
  62. package/dist/lib/node-esm/BlueprintArticle-DFTPXAYU.mjs.map +7 -0
  63. package/dist/lib/node-esm/{ChatCompanion-Q4FUZ2MW.mjs → ChatCompanion-OJJVO44R.mjs} +76 -26
  64. package/dist/lib/node-esm/ChatCompanion-OJJVO44R.mjs.map +7 -0
  65. package/dist/lib/node-esm/ChatContainer-RIVOAWFM.mjs +13 -0
  66. package/dist/lib/node-esm/{ChatDialog-AP45PVZR.mjs → ChatDialog-IEZLH7T5.mjs} +9 -9
  67. package/dist/lib/node-esm/ChatDialog-IEZLH7T5.mjs.map +7 -0
  68. package/dist/lib/node-esm/ProjectArticle-WVJI6IYZ.mjs +93 -0
  69. package/dist/lib/node-esm/ProjectArticle-WVJI6IYZ.mjs.map +7 -0
  70. package/dist/lib/node-esm/ProjectSettings-JQLRY6AS.mjs +118 -0
  71. package/dist/lib/node-esm/ProjectSettings-JQLRY6AS.mjs.map +7 -0
  72. package/dist/lib/node-esm/PromptArticle-HPCQDVFD.mjs +72 -0
  73. package/dist/lib/node-esm/PromptArticle-HPCQDVFD.mjs.map +7 -0
  74. package/dist/lib/node-esm/TracePanel-KAUU6OVE.mjs +229 -0
  75. package/dist/lib/node-esm/TracePanel-KAUU6OVE.mjs.map +7 -0
  76. package/dist/lib/node-esm/TriggerStatus-V3QMIE7T.mjs +113 -0
  77. package/dist/lib/node-esm/TriggerStatus-V3QMIE7T.mjs.map +7 -0
  78. package/dist/lib/node-esm/{ai-service-PXKKCFIF.mjs → ai-service-ZI3A6RVG.mjs} +5 -4
  79. package/dist/lib/node-esm/ai-service-ZI3A6RVG.mjs.map +7 -0
  80. package/dist/lib/node-esm/{app-graph-builder-TJCUEXW5.mjs → app-graph-builder-H24ZSWEY.mjs} +74 -42
  81. package/dist/lib/node-esm/app-graph-builder-H24ZSWEY.mjs.map +7 -0
  82. package/dist/lib/node-esm/blueprint-definition-LWPM3FBG.mjs +38 -0
  83. package/dist/lib/node-esm/blueprint-definition-LWPM3FBG.mjs.map +7 -0
  84. package/dist/lib/node-esm/blueprints/index.mjs +3 -7
  85. package/dist/lib/node-esm/chunk-5BLOZBHM.mjs +102 -0
  86. package/dist/lib/node-esm/chunk-5BLOZBHM.mjs.map +7 -0
  87. package/dist/lib/node-esm/chunk-AK3JJ76X.mjs +28 -0
  88. package/dist/lib/node-esm/chunk-AK3JJ76X.mjs.map +7 -0
  89. package/dist/lib/node-esm/{chunk-ZRIPP7YF.mjs → chunk-JMBYVUD6.mjs} +50 -29
  90. package/dist/lib/node-esm/chunk-JMBYVUD6.mjs.map +7 -0
  91. package/dist/lib/node-esm/{chunk-XI5T3MJC.mjs → chunk-QYHBAOBD.mjs} +637 -346
  92. package/dist/lib/node-esm/chunk-QYHBAOBD.mjs.map +7 -0
  93. package/dist/lib/node-esm/{chunk-POWB2BPC.mjs → chunk-TEYTGR67.mjs} +3 -3
  94. package/dist/lib/node-esm/{chunk-POWB2BPC.mjs.map → chunk-TEYTGR67.mjs.map} +1 -1
  95. package/dist/lib/node-esm/{chunk-355W5B27.mjs → chunk-VSA3KDAW.mjs} +51 -48
  96. package/dist/lib/node-esm/chunk-VSA3KDAW.mjs.map +7 -0
  97. package/dist/lib/node-esm/{edge-model-resolver-G5KMODPO.mjs → edge-model-resolver-CMJ3KNLQ.mjs} +4 -3
  98. package/dist/lib/node-esm/edge-model-resolver-CMJ3KNLQ.mjs.map +7 -0
  99. package/dist/lib/node-esm/index.mjs +128 -91
  100. package/dist/lib/node-esm/index.mjs.map +4 -4
  101. package/dist/lib/node-esm/{local-model-resolver-KDZLYI7Y.mjs → local-model-resolver-FFDAKOXN.mjs} +4 -3
  102. package/dist/lib/node-esm/local-model-resolver-FFDAKOXN.mjs.map +7 -0
  103. package/dist/lib/node-esm/markdown-5FJCWKIE.mjs +156 -0
  104. package/dist/lib/node-esm/markdown-5FJCWKIE.mjs.map +7 -0
  105. package/dist/lib/node-esm/meta.json +1 -1
  106. package/dist/lib/node-esm/{operation-resolver-SX4WMNA7.mjs → operation-resolver-TWGZ3ODO.mjs} +64 -43
  107. package/dist/lib/node-esm/operation-resolver-TWGZ3ODO.mjs.map +7 -0
  108. package/dist/lib/node-esm/react-surface-6I6JOQBD.mjs +151 -0
  109. package/dist/lib/node-esm/react-surface-6I6JOQBD.mjs.map +7 -0
  110. package/dist/lib/node-esm/{settings-CQEOHR3R.mjs → settings-5CL6CQFK.mjs} +6 -5
  111. package/dist/lib/node-esm/settings-5CL6CQFK.mjs.map +7 -0
  112. package/dist/lib/node-esm/{state-HDON4REW.mjs → state-XBRFX5FL.mjs} +5 -4
  113. package/dist/lib/node-esm/{state-HDON4REW.mjs.map → state-XBRFX5FL.mjs.map} +3 -3
  114. package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs +17 -0
  115. package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs.map +7 -0
  116. package/dist/lib/node-esm/types/index.mjs +2 -2
  117. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  118. package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
  119. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
  120. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +2 -0
  121. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +1 -0
  122. package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
  123. package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
  124. package/dist/types/src/blueprints/index.d.ts +1 -6
  125. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  126. package/dist/types/src/capabilities/ai-service/ai-service.d.ts +3 -2
  127. package/dist/types/src/capabilities/ai-service/ai-service.d.ts.map +1 -1
  128. package/dist/types/src/capabilities/ai-service/index.d.ts +1 -1
  129. package/dist/types/src/capabilities/ai-service/index.d.ts.map +1 -1
  130. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  131. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  132. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +4 -19
  133. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -1
  134. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +1 -2
  135. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -1
  136. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts +4 -3
  137. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +1 -1
  138. package/dist/types/src/capabilities/index.d.ts +1 -1
  139. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  140. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +4 -3
  141. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +1 -1
  142. package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
  143. package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
  144. package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
  145. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
  146. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  147. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  148. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  149. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  150. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  151. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  152. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  153. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  154. package/dist/types/src/capabilities/settings/index.d.ts +1 -1
  155. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
  156. package/dist/types/src/capabilities/settings/settings.d.ts +4 -3
  157. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
  158. package/dist/types/src/capabilities/state/index.d.ts +6 -0
  159. package/dist/types/src/capabilities/state/index.d.ts.map +1 -1
  160. package/dist/types/src/capabilities/state/state.d.ts +7 -1
  161. package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
  162. package/dist/types/src/capabilities/toolkit/index.d.ts +1 -1
  163. package/dist/types/src/capabilities/toolkit/index.d.ts.map +1 -1
  164. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +3 -2
  165. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +1 -1
  166. package/dist/types/src/components/Chat/Chat.d.ts +12 -8
  167. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  168. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +2 -2
  169. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  170. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  171. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  172. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  173. package/dist/types/src/components/ChatThread/ChatThread.d.ts +1 -1
  174. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  175. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +133 -7
  176. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  177. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  178. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  179. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +131 -5
  180. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  181. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  182. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +131 -5
  183. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +4 -4
  185. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  186. package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -2
  187. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  188. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +131 -5
  189. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  190. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +2 -2
  191. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +1 -1
  192. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +1 -1
  193. package/dist/types/src/components/index.d.ts +0 -12
  194. package/dist/types/src/components/index.d.ts.map +1 -1
  195. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  196. package/dist/types/src/containers/AssistantSettings/index.d.ts +3 -0
  197. package/dist/types/src/containers/AssistantSettings/index.d.ts.map +1 -0
  198. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +6 -0
  199. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
  200. package/dist/types/src/containers/BlueprintArticle/index.d.ts +3 -0
  201. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
  202. package/dist/types/src/{components → containers/ChatCompanion}/ChatCompanion.d.ts +3 -3
  203. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
  204. package/dist/types/src/containers/ChatCompanion/index.d.ts +3 -0
  205. package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
  206. package/dist/types/src/{components → containers/ChatContainer}/ChatContainer.d.ts +6 -6
  207. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
  208. package/dist/types/src/containers/ChatContainer/index.d.ts +3 -0
  209. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
  210. package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +2 -3
  211. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
  212. package/dist/types/src/containers/ChatDialog/index.d.ts +3 -0
  213. package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
  214. package/dist/types/src/containers/Project/ProjectArticle.d.ts +7 -0
  215. package/dist/types/src/containers/Project/ProjectArticle.d.ts.map +1 -0
  216. package/dist/types/src/containers/Project/ProjectSettings.d.ts +6 -0
  217. package/dist/types/src/containers/Project/ProjectSettings.d.ts.map +1 -0
  218. package/dist/types/src/containers/Project/index.d.ts +7 -0
  219. package/dist/types/src/containers/Project/index.d.ts.map +1 -0
  220. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +6 -0
  221. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +1 -0
  222. package/dist/types/src/containers/PromptArticle/index.d.ts +3 -0
  223. package/dist/types/src/containers/PromptArticle/index.d.ts.map +1 -0
  224. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +3 -0
  225. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -0
  226. package/dist/types/src/containers/TracePanel/index.d.ts +3 -0
  227. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -0
  228. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +4 -0
  229. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -0
  230. package/dist/types/src/containers/TriggerStatus/index.d.ts +3 -0
  231. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
  232. package/dist/types/src/containers/index.d.ts +11 -0
  233. package/dist/types/src/containers/index.d.ts.map +1 -0
  234. package/dist/types/src/extensions/index.d.ts +2 -0
  235. package/dist/types/src/extensions/index.d.ts.map +1 -0
  236. package/dist/types/src/extensions/prompt-extension.d.ts +10 -0
  237. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -0
  238. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  239. package/dist/types/src/hooks/useChatProcessor.d.ts +2 -1
  240. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  241. package/dist/types/src/hooks/useChatServices.d.ts +2 -2
  242. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  243. package/dist/types/src/hooks/useChatToolbarActions.d.ts +2 -2
  244. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
  245. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  246. package/dist/types/src/hooks/useFilteredTypes.d.ts +1 -1
  247. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
  248. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  249. package/dist/types/src/index.d.ts +1 -0
  250. package/dist/types/src/index.d.ts.map +1 -1
  251. package/dist/types/src/processor/processor.d.ts +7 -3
  252. package/dist/types/src/processor/processor.d.ts.map +1 -1
  253. package/dist/types/src/processor/update-name.d.ts +2 -2
  254. package/dist/types/src/processor/update-name.d.ts.map +1 -1
  255. package/dist/types/src/translations.d.ts +131 -5
  256. package/dist/types/src/translations.d.ts.map +1 -1
  257. package/dist/types/src/types/Assistant.d.ts +5 -27
  258. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  259. package/dist/types/src/types/AssistantAction.d.ts +35 -15
  260. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  261. package/dist/types/src/types/capabilities.d.ts +8 -0
  262. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  263. package/dist/types/src/types/index.d.ts +1 -0
  264. package/dist/types/src/types/index.d.ts.map +1 -1
  265. package/dist/types/src/types/service.d.ts.map +1 -1
  266. package/dist/types/tsconfig.tsbuildinfo +1 -1
  267. package/package.json +95 -92
  268. package/src/AssistantPlugin.tsx +82 -45
  269. package/src/blueprints/assistant/blueprint.conversations.json +1 -0
  270. package/src/blueprints/assistant/blueprint.test.ts +48 -0
  271. package/src/blueprints/assistant/blueprint.ts +27 -0
  272. package/src/blueprints/assistant/index.ts +5 -0
  273. package/src/blueprints/index.ts +1 -8
  274. package/src/capabilities/ai-service/ai-service.ts +4 -3
  275. package/src/capabilities/app-graph-builder/app-graph-builder.ts +67 -31
  276. package/src/capabilities/blueprint-definition/blueprint-definition.ts +36 -42
  277. package/src/capabilities/blueprint-definition/index.ts +0 -1
  278. package/src/capabilities/edge-model-resolver/edge-model-resolver.ts +4 -3
  279. package/src/capabilities/index.ts +1 -1
  280. package/src/capabilities/local-model-resolver/local-model-resolver.ts +4 -3
  281. package/src/capabilities/markdown/index.ts +7 -0
  282. package/src/capabilities/markdown/markdown.ts +39 -0
  283. package/src/capabilities/operation-resolver/operation-resolver.ts +53 -26
  284. package/src/capabilities/react-surface/react-surface.tsx +68 -30
  285. package/src/capabilities/settings/settings.ts +3 -2
  286. package/src/capabilities/state/state.ts +1 -0
  287. package/src/capabilities/toolkit/toolkit.ts +5 -16
  288. package/src/components/Chat/Chat.tsx +66 -33
  289. package/src/components/ChatProgress/ChatProgress.tsx +4 -5
  290. package/src/components/ChatPrompt/ChatActions.tsx +9 -1
  291. package/src/components/ChatPrompt/ChatOptions.tsx +29 -9
  292. package/src/components/ChatPrompt/ChatReferences.tsx +14 -4
  293. package/src/components/ChatThread/ChatThread.stories.tsx +11 -11
  294. package/src/components/ChatThread/ChatThread.tsx +15 -6
  295. package/src/components/ChatThread/Link.tsx +1 -1
  296. package/src/components/ChatThread/registry.tsx +51 -18
  297. package/src/components/ChatThread/sync.test.ts +2 -0
  298. package/src/components/ChatThread/sync.ts +14 -8
  299. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +3 -7
  300. package/src/components/TemplateEditor/TemplateEditor.tsx +2 -2
  301. package/src/components/TemplateEditor/TemplateForm.stories.tsx +3 -3
  302. package/src/components/TemplateEditor/TemplateForm.tsx +6 -7
  303. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +4 -4
  304. package/src/components/ToolBlock/ToolBlock.tsx +15 -15
  305. package/src/components/Toolbox/Toolbox.stories.tsx +3 -3
  306. package/src/components/Toolbox/Toolbox.tsx +49 -48
  307. package/src/components/Typewriter/AssistantToolbar.tsx +3 -3
  308. package/src/components/Typewriter/Typewriter.stories.tsx +18 -15
  309. package/src/components/Typewriter/Typewriter.tsx +1 -1
  310. package/src/components/Typewriter/assistant-extension.tsx +3 -5
  311. package/src/components/index.ts +0 -9
  312. package/src/{components → containers}/AssistantSettings/AssistantSettings.tsx +15 -15
  313. package/src/containers/AssistantSettings/index.ts +7 -0
  314. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +29 -0
  315. package/src/containers/BlueprintArticle/index.ts +7 -0
  316. package/src/{components → containers/ChatCompanion}/ChatCompanion.tsx +86 -22
  317. package/src/containers/ChatCompanion/index.ts +7 -0
  318. package/src/containers/ChatContainer/ChatContainer.tsx +92 -0
  319. package/src/containers/ChatContainer/index.ts +7 -0
  320. package/src/{components → containers/ChatDialog}/ChatDialog.tsx +7 -9
  321. package/src/containers/ChatDialog/index.ts +7 -0
  322. package/src/containers/Project/ProjectArticle.tsx +124 -0
  323. package/src/containers/Project/ProjectSettings.tsx +135 -0
  324. package/src/containers/Project/index.ts +16 -0
  325. package/src/containers/PromptArticle/PromptArticle.tsx +59 -0
  326. package/src/containers/PromptArticle/index.ts +7 -0
  327. package/src/containers/TracePanel/TracePanel.tsx +260 -0
  328. package/src/containers/TracePanel/index.ts +7 -0
  329. package/src/containers/TriggerStatus/TriggerStatus.tsx +140 -0
  330. package/src/containers/TriggerStatus/index.ts +7 -0
  331. package/src/containers/index.ts +16 -0
  332. package/src/extensions/index.ts +5 -0
  333. package/src/extensions/prompt-extension.ts +142 -0
  334. package/src/hooks/useBlueprintRegistry.ts +8 -4
  335. package/src/hooks/useChatProcessor.ts +2 -1
  336. package/src/hooks/useChatServices.ts +3 -3
  337. package/src/hooks/useChatToolbarActions.ts +6 -5
  338. package/src/hooks/useContextObjects.ts +7 -3
  339. package/src/hooks/useFilteredTypes.ts +3 -3
  340. package/src/hooks/useReferencesProvider.ts +1 -5
  341. package/src/index.ts +1 -0
  342. package/src/meta.ts +2 -2
  343. package/src/processor/processor.test.ts +8 -7
  344. package/src/processor/processor.ts +47 -26
  345. package/src/processor/update-name.ts +2 -3
  346. package/src/testing/test-sequence.ts +3 -3
  347. package/src/testing/test-services.ts +1 -1
  348. package/src/translations.ts +30 -3
  349. package/src/types/Assistant.ts +4 -38
  350. package/src/types/AssistantAction.ts +28 -13
  351. package/src/types/capabilities.ts +4 -2
  352. package/src/types/events.ts +1 -1
  353. package/src/types/index.ts +3 -0
  354. package/src/types/service.ts +4 -4
  355. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs +0 -31
  356. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs.map +0 -7
  357. package/dist/lib/browser/ChatCompanion-ECQYUQ2B.mjs.map +0 -7
  358. package/dist/lib/browser/ChatContainer-QCCOFBUX.mjs +0 -73
  359. package/dist/lib/browser/ChatContainer-QCCOFBUX.mjs.map +0 -7
  360. package/dist/lib/browser/ChatDialog-SMK4RSZU.mjs.map +0 -7
  361. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs +0 -53
  362. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs.map +0 -7
  363. package/dist/lib/browser/ai-service-5GUDOEWF.mjs.map +0 -7
  364. package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs.map +0 -7
  365. package/dist/lib/browser/blueprint-definition-DGHH7MUU.mjs +0 -14
  366. package/dist/lib/browser/chunk-3JYPE2MM.mjs.map +0 -7
  367. package/dist/lib/browser/chunk-DKQMSMBN.mjs +0 -326
  368. package/dist/lib/browser/chunk-DKQMSMBN.mjs.map +0 -7
  369. package/dist/lib/browser/chunk-ML3QCFKA.mjs.map +0 -7
  370. package/dist/lib/browser/chunk-MRJVYGLU.mjs +0 -208
  371. package/dist/lib/browser/chunk-MRJVYGLU.mjs.map +0 -7
  372. package/dist/lib/browser/chunk-V772AMZM.mjs.map +0 -7
  373. package/dist/lib/browser/chunk-WGQTU6UJ.mjs +0 -41
  374. package/dist/lib/browser/chunk-WGQTU6UJ.mjs.map +0 -7
  375. package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs.map +0 -7
  376. package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs.map +0 -7
  377. package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs.map +0 -7
  378. package/dist/lib/browser/react-surface-NCITRSJJ.mjs +0 -109
  379. package/dist/lib/browser/react-surface-NCITRSJJ.mjs.map +0 -7
  380. package/dist/lib/browser/repair-6QGAKOVM.mjs +0 -54
  381. package/dist/lib/browser/repair-6QGAKOVM.mjs.map +0 -7
  382. package/dist/lib/browser/settings-4ZDLUMYE.mjs.map +0 -7
  383. package/dist/lib/browser/toolkit-7AVTEPMA.mjs +0 -18
  384. package/dist/lib/browser/toolkit-7AVTEPMA.mjs.map +0 -7
  385. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs +0 -32
  386. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs.map +0 -7
  387. package/dist/lib/node-esm/ChatCompanion-Q4FUZ2MW.mjs.map +0 -7
  388. package/dist/lib/node-esm/ChatContainer-AKI33HIB.mjs +0 -74
  389. package/dist/lib/node-esm/ChatContainer-AKI33HIB.mjs.map +0 -7
  390. package/dist/lib/node-esm/ChatDialog-AP45PVZR.mjs.map +0 -7
  391. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs +0 -54
  392. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs.map +0 -7
  393. package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs.map +0 -7
  394. package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs.map +0 -7
  395. package/dist/lib/node-esm/blueprint-definition-SEMDEIYG.mjs +0 -15
  396. package/dist/lib/node-esm/chunk-355W5B27.mjs.map +0 -7
  397. package/dist/lib/node-esm/chunk-75PHXBN3.mjs +0 -327
  398. package/dist/lib/node-esm/chunk-75PHXBN3.mjs.map +0 -7
  399. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs +0 -209
  400. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs.map +0 -7
  401. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs +0 -42
  402. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs.map +0 -7
  403. package/dist/lib/node-esm/chunk-XI5T3MJC.mjs.map +0 -7
  404. package/dist/lib/node-esm/chunk-ZRIPP7YF.mjs.map +0 -7
  405. package/dist/lib/node-esm/edge-model-resolver-G5KMODPO.mjs.map +0 -7
  406. package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs.map +0 -7
  407. package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs.map +0 -7
  408. package/dist/lib/node-esm/react-surface-ST6V7LPE.mjs +0 -110
  409. package/dist/lib/node-esm/react-surface-ST6V7LPE.mjs.map +0 -7
  410. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs +0 -55
  411. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs.map +0 -7
  412. package/dist/lib/node-esm/settings-CQEOHR3R.mjs.map +0 -7
  413. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs +0 -19
  414. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs.map +0 -7
  415. package/dist/types/src/blueprints/assistant-blueprint.d.ts +0 -209
  416. package/dist/types/src/blueprints/assistant-blueprint.d.ts.map +0 -1
  417. package/dist/types/src/capabilities/repair/index.d.ts +0 -3
  418. package/dist/types/src/capabilities/repair/index.d.ts.map +0 -1
  419. package/dist/types/src/capabilities/repair/repair.d.ts +0 -6
  420. package/dist/types/src/capabilities/repair/repair.d.ts.map +0 -1
  421. package/dist/types/src/components/AssistantSettings/index.d.ts +0 -2
  422. package/dist/types/src/components/AssistantSettings/index.d.ts.map +0 -1
  423. package/dist/types/src/components/BlueprintArticle.d.ts +0 -7
  424. package/dist/types/src/components/BlueprintArticle.d.ts.map +0 -1
  425. package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
  426. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  427. package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
  428. package/dist/types/src/components/PromptArticle.d.ts +0 -7
  429. package/dist/types/src/components/PromptArticle.d.ts.map +0 -1
  430. package/dist/types/src/functions/index.d.ts +0 -4
  431. package/dist/types/src/functions/index.d.ts.map +0 -1
  432. package/dist/types/src/functions/object-list.d.ts +0 -10
  433. package/dist/types/src/functions/object-list.d.ts.map +0 -1
  434. package/dist/types/src/functions/object-load.d.ts +0 -8
  435. package/dist/types/src/functions/object-load.d.ts.map +0 -1
  436. package/dist/types/src/functions/object-search.d.ts +0 -10
  437. package/dist/types/src/functions/object-search.d.ts.map +0 -1
  438. package/src/blueprints/assistant-blueprint.ts +0 -62
  439. package/src/capabilities/repair/index.ts +0 -7
  440. package/src/capabilities/repair/repair.ts +0 -63
  441. package/src/components/AssistantSettings/index.ts +0 -5
  442. package/src/components/BlueprintArticle.tsx +0 -29
  443. package/src/components/ChatContainer.tsx +0 -61
  444. package/src/components/PromptArticle.tsx +0 -50
  445. package/src/functions/index.ts +0 -7
  446. package/src/functions/object-list.ts +0 -49
  447. package/src/functions/object-load.ts +0 -47
  448. package/src/functions/object-search.ts +0 -46
  449. /package/dist/lib/browser/{blueprint-definition-DGHH7MUU.mjs.map → ChatContainer-QPPZHQRQ.mjs.map} +0 -0
  450. /package/dist/lib/node-esm/{blueprint-definition-SEMDEIYG.mjs.map → ChatContainer-RIVOAWFM.mjs.map} +0 -0
  451. /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +0 -0
@@ -2,15 +2,18 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import * as Option from 'effect/Option';
5
6
  import React, { type JSX, useMemo, useState } from 'react';
6
7
 
7
8
  import { type AiContextBinder } from '@dxos/assistant';
8
9
  import { type Blueprint } from '@dxos/blueprints';
9
10
  import { type Database, Filter, Obj, Type } from '@dxos/echo';
11
+ import { Annotation } from '@dxos/echo';
10
12
  import { useQuery } from '@dxos/react-client/echo';
11
13
  import { IconButton, Popover, Select, useTranslation } from '@dxos/react-ui';
12
14
  import { Listbox, SearchList, useSearchListResults } from '@dxos/react-ui-searchlist';
13
15
  import { Tabs } from '@dxos/react-ui-tabs';
16
+ import { getStyles, mx } from '@dxos/ui-theme';
14
17
 
15
18
  import {
16
19
  useActiveBlueprints,
@@ -21,7 +24,7 @@ import {
21
24
  } from '../../hooks';
22
25
  import { meta } from '../../meta';
23
26
 
24
- const panelClassNames = 'is-[calc(100dvw-.5rem)] sm:is-max md:is-72 max-is-[--text-content]';
27
+ const panelClassNames = 'w-[calc(100dvw-.5rem)] sm:w-max md:w-72 max-w-text-content';
25
28
 
26
29
  export type ChatOptionsProps = {
27
30
  db: Database.Database;
@@ -67,14 +70,21 @@ export const ChatOptions = ({ db, context, blueprintRegistry, presets, preset, o
67
70
  <Popover.Content side='top' classNames={panelClassNames}>
68
71
  <Popover.Viewport>
69
72
  <Tabs.Root orientation='horizontal' defaultValue='blueprints' defaultActivePart='list' tabIndex={-1}>
70
- <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'>
73
+ <Tabs.Viewport
74
+ classNames={mx(
75
+ 'max-h-(--radix-popover-content-available-height) grid grid-rows-[1fr_min-content]',
76
+ '[&_[cmdk-root]]:contents [&_[role="tabpanel"]]:grid [&_[role="tabpanel"]]:grid-rows-[1fr_min-content]',
77
+ '[&_[role="listbox"]]:min-h-0 [&_[role="listbox"]]:overflow-y-auto',
78
+ '[&_[role="tabpanel"]]:min-h-0 [&_[role="tabpanel"]]:px-form-chrome [&_[role="tabpanel"][data-state="active"]]:order-first [&_[role="tabpanel"][data-state="inactive"]]:hidden',
79
+ )}
80
+ >
71
81
  <Tabs.Tabpanel value='blueprints' tabIndex={-1} classNames='dx-focus-ring-inset'>
72
82
  <BlueprintsPanel blueprintRegistry={blueprintRegistry} db={db} context={context} />
73
83
  </Tabs.Tabpanel>
74
- <Tabs.Tabpanel value='model' tabIndex={-1} classNames='dx-focus-ring-inset !pli-0'>
84
+ <Tabs.Tabpanel value='model' tabIndex={-1} classNames='dx-focus-ring-inset px-0!'>
75
85
  <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />
76
86
  </Tabs.Tabpanel>
77
- <Tabs.Tablist classNames='sm:overflow-x-hidden justify-center p-[--dx-cardSpacingChrome] border-bs border-subduedSeparator order-last'>
87
+ <Tabs.Tablist classNames='sm:overflow-x-hidden justify-center p-form-chrome border-y border-subdued-separator order-last'>
78
88
  <Tabs.IconTab
79
89
  value='blueprints'
80
90
  icon='ph--blueprint--regular'
@@ -111,7 +121,7 @@ const BlueprintsPanel = ({
111
121
 
112
122
  return (
113
123
  <SearchList.Root onSearch={handleSearch}>
114
- <SearchList.Content classNames='plb-cardSpacingChrome'>
124
+ <SearchList.Content classNames='py-form-chrome'>
115
125
  <SearchList.Viewport>
116
126
  {results.map((blueprint) => {
117
127
  const isActive = activeBlueprints.has(blueprint.key);
@@ -128,7 +138,7 @@ const BlueprintsPanel = ({
128
138
  })}
129
139
  </SearchList.Viewport>
130
140
  </SearchList.Content>
131
- <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-cardSpacingChrome' autoFocus />
141
+ <SearchList.Input placeholder={t('search placeholder')} classNames='mb-form-chrome' autoFocus />
132
142
  </SearchList.Root>
133
143
  );
134
144
  };
@@ -190,16 +200,23 @@ const ObjectsPanel = ({ db, context }: Pick<ChatOptionsProps, 'db' | 'context'>)
190
200
 
191
201
  return (
192
202
  <SearchList.Root onSearch={handleSearch}>
193
- <SearchList.Content classNames='p-cardSpacingChrome [&:has([cmdk-list-sizer]:empty)]:plb-0'>
203
+ <SearchList.Content classNames='p-form-chrome [&:has([cmdk-list-sizer]:empty)]:py-0'>
194
204
  <SearchList.Viewport>
195
205
  {results.length ? (
196
206
  results.map((object) => {
197
207
  const isActive = contextObjects.findIndex((obj) => obj.id === object.id) !== -1;
208
+ const { icon, hue } = Option.fromNullable(Obj.getSchema(object)).pipe(
209
+ Option.flatMap(Annotation.IconAnnotation.get),
210
+ Option.getOrElse(() => ({ icon: DEFAULT_OBJECT_ICON, hue: undefined as string | undefined })),
211
+ );
212
+ const styles = hue ? getStyles(hue) : undefined;
198
213
  return (
199
214
  <SearchList.Item
200
215
  classNames='flex items-center overflow-hidden'
201
216
  key={object.id}
202
217
  value={object.id}
218
+ icon={icon}
219
+ iconClassNames={styles?.surfaceText}
203
220
  label={Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id}
204
221
  checked={isActive}
205
222
  onSelect={() => onUpdateObject?.(Obj.getDXN(object), !isActive)}
@@ -212,7 +229,7 @@ const ObjectsPanel = ({ db, context }: Pick<ChatOptionsProps, 'db' | 'context'>)
212
229
  </SearchList.Viewport>
213
230
  </SearchList.Content>
214
231
 
215
- <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 pli-cardSpacingChrome mbe-cardSpacingChrome'>
232
+ <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 px-form-chrome mb-form-chrome'>
216
233
  <Select.Root value={typename === ANY ? undefined : typename} onValueChange={setTypename}>
217
234
  <Select.TriggerButton density='fine' placeholder={t('type filter placeholder')} />
218
235
  <Select.Portal>
@@ -231,8 +248,11 @@ const ObjectsPanel = ({ db, context }: Pick<ChatOptionsProps, 'db' | 'context'>)
231
248
  </Select.Content>
232
249
  </Select.Portal>
233
250
  </Select.Root>
234
- <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-0' autoFocus />
251
+ <SearchList.Input placeholder={t('search placeholder')} classNames='mb-0' autoFocus />
235
252
  </div>
236
253
  </SearchList.Root>
237
254
  );
238
255
  };
256
+
257
+ // TODO(dmaretskyi): Extract those somewhere else.
258
+ const DEFAULT_OBJECT_ICON = 'ph--cube--regular';
@@ -2,12 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import * as Option from 'effect/Option';
5
6
  import React from 'react';
6
7
 
7
8
  import { type AiContextBinder } from '@dxos/assistant';
8
- import { type Database, Obj } from '@dxos/echo';
9
- import { IconButton, type Label, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';
10
- import { mx } from '@dxos/ui-theme';
9
+ import { Annotation, type Database, Obj } from '@dxos/echo';
10
+ import { Icon, IconButton, type Label, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';
11
+ import { getStyles, mx } from '@dxos/ui-theme';
11
12
 
12
13
  import { useContextObjects } from '../../hooks';
13
14
  import { meta } from '../../meta';
@@ -27,8 +28,14 @@ export const ChatReferences = ({ classNames, context, db }: ChatReferencesProps)
27
28
  const dxn = Obj.getDXN(obj);
28
29
  const typename = Obj.getTypename(obj);
29
30
  const label: Label = Obj.getLabel(obj) ?? (typename ? ['object name placeholder', { ns: typename }] : obj.id);
31
+ const { icon, hue } = Option.fromNullable(Obj.getSchema(obj)).pipe(
32
+ Option.flatMap(Annotation.IconAnnotation.get),
33
+ Option.getOrElse(() => ({ icon: DEFAULT_OBJECT_ICON, hue: undefined as string | undefined })),
34
+ );
35
+ const styles = hue ? getStyles(hue) : undefined;
30
36
  return (
31
- <li key={dxn.toString()} className='dx-tag plb-0 pis-2 flex items-center' data-hue='neutral'>
37
+ <li key={dxn.toString()} className='dx-tag py-0 ps-2 flex items-center gap-1' data-hue='neutral'>
38
+ <Icon icon={icon} size={4} classNames={styles?.surfaceText} />
32
39
  {toLocalizedString(label, t)}
33
40
  <IconButton
34
41
  icon='ph--x--bold'
@@ -45,3 +52,6 @@ export const ChatReferences = ({ classNames, context, db }: ChatReferencesProps)
45
52
  </ul>
46
53
  );
47
54
  };
55
+
56
+ // TODO(dmaretskyi): Extract those somewhere else.
57
+ const DEFAULT_OBJECT_ICON = 'ph--cube--regular';
@@ -15,11 +15,11 @@ import { faker } from '@dxos/random';
15
15
  import { useQueue, useSpace } from '@dxos/react-client/echo';
16
16
  import { withClientProvider } from '@dxos/react-client/testing';
17
17
  import { Popover } from '@dxos/react-ui';
18
- import { withLayout, withTheme } from '@dxos/react-ui/testing';
18
+ import { Card } from '@dxos/react-ui';
19
+ import { Loading, withLayout, withTheme } from '@dxos/react-ui/testing';
19
20
  import { MarkdownStream } from '@dxos/react-ui-components';
20
21
  import { EditorPreviewProvider, useEditorPreview } from '@dxos/react-ui-editor';
21
- import { Card } from '@dxos/react-ui-mosaic';
22
- import { render } from '@dxos/storybook-utils';
22
+
23
23
  import { type Message, Organization, Person } from '@dxos/types';
24
24
 
25
25
  import { createMessageGenerator } from '../../testing';
@@ -56,7 +56,7 @@ const DefaultStory = ({ generator = [], delay = 0, wait, ...props }: StoryProps)
56
56
  }
57
57
  }
58
58
  setDone(true);
59
- }).pipe(Effect.provide(Layer.mergeAll(Database.Service.layer(space.db), ContextQueueService.layer(queue)))),
59
+ }).pipe(Effect.provide(Layer.mergeAll(Database.layer(space.db), ContextQueueService.layer(queue)))),
60
60
  );
61
61
 
62
62
  return () => {
@@ -65,11 +65,11 @@ const DefaultStory = ({ generator = [], delay = 0, wait, ...props }: StoryProps)
65
65
  }, [space, queue, generator]);
66
66
 
67
67
  if (wait && !done) {
68
- return null;
68
+ return <Loading data={{ wait, done }} />;
69
69
  }
70
70
 
71
71
  return (
72
- <EditorPreviewProvider onLookup={async ({ label, ref }) => ({ label, text: ref })}>
72
+ <EditorPreviewProvider onLookup={async ({ dxn, label }) => ({ label, text: dxn })}>
73
73
  <ChatThread {...props} messages={queue?.objects} />
74
74
  <PreviewCard />
75
75
  </EditorPreviewProvider>
@@ -95,11 +95,11 @@ const PreviewCard = () => {
95
95
  };
96
96
 
97
97
  const meta = {
98
- title: 'plugins/plugin-assistant/ChatThread',
98
+ title: 'plugins/plugin-assistant/components/ChatThread',
99
99
  component: ChatThread,
100
- render: render(DefaultStory),
100
+ render: DefaultStory,
101
101
  decorators: [
102
- withTheme,
102
+ withTheme(),
103
103
  withLayout({ layout: 'column' }),
104
104
  withClientProvider({
105
105
  createIdentity: true,
@@ -135,7 +135,7 @@ export const Delayed: Story = {
135
135
 
136
136
  export const Raw: Story = {
137
137
  render: () => (
138
- <div className='contents' style={{ '--user-fill': 'var(--dx-amberFill)' } as CSSProperties}>
138
+ <div className='contents' style={{ '--user-fill': 'var(--color-amber-fill)' } as CSSProperties}>
139
139
  <MarkdownStream content={TEXT} />
140
140
  </div>
141
141
  ),
@@ -143,7 +143,7 @@ export const Raw: Story = {
143
143
 
144
144
  export const Static: Story = {
145
145
  render: () => (
146
- <div className='contents' style={{ '--user-fill': 'var(--dx-amberFill)' } as CSSProperties}>
146
+ <div className='contents' style={{ '--user-fill': 'var(--color-amber-fill)' } as CSSProperties}>
147
147
  <MarkdownStream content={TEXT} registry={componentRegistry} />
148
148
  </div>
149
149
  ),
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import React, { type CSSProperties, forwardRef, useCallback, useEffect, useMemo } from 'react';
5
+ import React, { type CSSProperties, forwardRef, useCallback, useEffect, useMemo, useState } from 'react';
6
6
 
7
7
  import { PublicKey } from '@dxos/keys';
8
8
  import { type Identity } from '@dxos/react-client/halo';
@@ -27,13 +27,22 @@ export type ChatThreadProps = ThemedClassName<
27
27
  >;
28
28
 
29
29
  // TODO(burdon): Memo thread position.
30
- export const ChatThread = forwardRef<MarkdownStreamController, ChatThreadProps>(
30
+ export const ChatThread = forwardRef<MarkdownStreamController | null, ChatThreadProps>(
31
31
  (
32
32
  { classNames, identity, messages = [], error, cursor = false, fadeIn = true, debug = false, onEvent },
33
33
  forwardedRef,
34
34
  ) => {
35
35
  const controllerRef = useForwardedRef(forwardedRef);
36
- const controller = controllerRef.current;
36
+ const [controller, setController] = useState<MarkdownStreamController | null>(null);
37
+
38
+ // Callback ref to capture when MarkdownStream is mounted and trigger re-render.
39
+ const refCallback = useCallback(
40
+ (node: MarkdownStreamController | null) => {
41
+ controllerRef.current = node;
42
+ setController(node);
43
+ },
44
+ [controllerRef],
45
+ );
37
46
 
38
47
  const userHue = useMemo(
39
48
  () => identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue,
@@ -70,11 +79,11 @@ export const ChatThread = forwardRef<MarkdownStreamController, ChatThreadProps>(
70
79
  return (
71
80
  <div
72
81
  role='none'
73
- className={mx('flex bs-full is-full justify-center overflow-hidden', classNames)}
74
- style={{ '--user-fill': `var(--dx-${userHue}Fill)` } as CSSProperties}
82
+ className={mx('flex h-full w-full justify-center overflow-hidden', classNames)}
83
+ style={{ '--user-fill': `var(--color-${userHue}-fill)` } as CSSProperties}
75
84
  >
76
85
  <MarkdownStream
77
- ref={controllerRef}
86
+ ref={refCallback}
78
87
  registry={componentRegistry}
79
88
  cursor={cursor}
80
89
  fadeIn={fadeIn}
@@ -19,7 +19,7 @@ export const ObjectLink = ({ space, dxn }: ObjectLinkProps) => {
19
19
 
20
20
  const title = (ref.target && Entity.getLabel(ref.target)) ?? ref.target?.id ?? ref.dxn.toString();
21
21
  return (
22
- <DxAnchor rootclassname='dx-tag--anchor' refid={dxn.toString()}>
22
+ <DxAnchor rootclassname='dx-tag--anchor' dxn={dxn.toString()}>
23
23
  {title}
24
24
  </DxAnchor>
25
25
  );
@@ -5,9 +5,10 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { log } from '@dxos/log';
8
- import { ToggleContainer } from '@dxos/react-ui-components';
8
+ import { TogglePanel } from '@dxos/react-ui-components';
9
9
  import {
10
10
  PromptWidget,
11
+ ReasoningWidget,
11
12
  ReferenceWidget,
12
13
  SelectWidget,
13
14
  SuggestionWidget,
@@ -23,12 +24,21 @@ import { type BlockRenderer, type MessageThreadContext } from './sync';
23
24
 
24
25
  const Fallback = ({ _tag, ...props }: XmlWidgetProps<MessageThreadContext>) => {
25
26
  return (
26
- <ToggleContainer.Root classNames='rounded-sm'>
27
- <ToggleContainer.Header classNames='bg-groupSurface'>{_tag}</ToggleContainer.Header>
28
- <ToggleContainer.Content classNames='bg-modalSurface'>
29
- <Json classNames='!p-2 text-sm' data={props} />
30
- </ToggleContainer.Content>
31
- </ToggleContainer.Root>
27
+ <TogglePanel.Root classNames='rounded-xs'>
28
+ <TogglePanel.Header classNames='bg-group-surface'>{_tag}</TogglePanel.Header>
29
+ <TogglePanel.Content classNames='bg-modal-surface'>
30
+ <Json classNames='p-2! text-sm' data={props} />
31
+ </TogglePanel.Content>
32
+ </TogglePanel.Root>
33
+ );
34
+ };
35
+
36
+ const Summary = ({ text }: { text: string }) => {
37
+ return (
38
+ <TogglePanel.Root classNames='rounded-sm'>
39
+ <TogglePanel.Header classNames='bg-group-surface'>Conversation summarized</TogglePanel.Header>
40
+ <TogglePanel.Content classNames='bg-modal-surface'>{text}</TogglePanel.Content>
41
+ </TogglePanel.Root>
32
42
  );
33
43
  };
34
44
 
@@ -40,21 +50,28 @@ export const componentRegistry: XmlWidgetRegistry = {
40
50
  // Widgets
41
51
  //
42
52
 
43
- ['prompt' as const]: {
53
+ prompt: {
44
54
  block: true,
45
55
  factory: ({ children }) => {
46
56
  const text = getXmlTextChild(children);
47
57
  return text ? new PromptWidget(text) : null;
48
58
  },
49
59
  },
50
- ['reference' as const]: {
60
+ reasoning: {
61
+ block: true,
62
+ factory: ({ children }) => {
63
+ const text = getXmlTextChild(children);
64
+ return text ? new ReasoningWidget(text) : null;
65
+ },
66
+ },
67
+ reference: {
51
68
  block: false,
52
69
  factory: ({ children, ref }) => {
53
70
  const text = getXmlTextChild(children);
54
71
  return text && ref ? new ReferenceWidget(text, ref) : null;
55
72
  },
56
73
  },
57
- ['select' as const]: {
74
+ select: {
58
75
  block: true,
59
76
  factory: ({ children }) => {
60
77
  const options = children
@@ -63,14 +80,14 @@ export const componentRegistry: XmlWidgetRegistry = {
63
80
  return options?.length ? new SelectWidget(options) : null;
64
81
  },
65
82
  },
66
- ['suggestion' as const]: {
83
+ suggestion: {
67
84
  block: true,
68
85
  factory: ({ children }) => {
69
86
  const text = getXmlTextChild(children);
70
87
  return text ? new SuggestionWidget(text) : null;
71
88
  },
72
89
  },
73
- ['summary' as const]: {
90
+ stats: {
74
91
  block: true,
75
92
  factory: ({ children }) => {
76
93
  const text = getXmlTextChild(children);
@@ -82,24 +99,28 @@ export const componentRegistry: XmlWidgetRegistry = {
82
99
  // React
83
100
  //
84
101
 
85
- ['toolCall' as const]: {
102
+ toolCall: {
86
103
  block: true,
87
104
  Component: ToolBlock,
88
105
  },
89
- ['toolResult' as const]: {
106
+ toolResult: {
90
107
  block: true,
91
108
  Component: Fallback,
92
109
  },
93
- ['toolkit' as const]: {
110
+ toolkit: {
94
111
  block: true,
95
112
  Component: Fallback,
96
113
  },
114
+ summary: {
115
+ block: true,
116
+ Component: Summary,
117
+ },
97
118
 
98
119
  //
99
120
  // Fallback
100
121
  //
101
122
 
102
- ['json' as const]: {
123
+ json: {
103
124
  block: true,
104
125
  Component: Fallback,
105
126
  },
@@ -158,13 +179,25 @@ const blockToMarkdownImpl = (context: MessageThreadContext, message: Message.Mes
158
179
  return `<toolCall id="${block.toolCallId}" />`;
159
180
  }
160
181
  case 'toolResult': {
161
- context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, ({ blocks = [] }) => ({
182
+ // TODO(dmaretskyi): the parameter could be undefined, perhaps tool blocks are not arriving in order.
183
+ context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, ({ blocks = [] } = { blocks: [] }) => ({
162
184
  blocks: [...blocks, block],
163
185
  }));
164
186
  break;
165
187
  }
188
+ case 'stats': {
189
+ return `<stats>${ContentBlock.createStatsMessage(block)}</stats>`;
190
+ }
191
+ case 'reasoning': {
192
+ const text = block.reasoningText ?? block.redactedText;
193
+ if (!text) {
194
+ return;
195
+ }
196
+ // TODO(dmaretskyi): The mixed Markdown/XML parser does not support parsing multi-line XML tags.
197
+ return `<reasoning>${text.replace(/\n/g, ' ').trim()}</reasoning>`;
198
+ }
166
199
  case 'summary': {
167
- return `<summary>${ContentBlock.createSummaryMessage(block)}</summary>`;
200
+ return `<summary>${block.content}</summary>`;
168
201
  }
169
202
  default: {
170
203
  // TODO(burdon): Needs stable ID.
@@ -1,3 +1,5 @@
1
+ // @vitest-environment jsdom
2
+
1
3
  //
2
4
  // Copyright 2025 DXOS.org
3
5
  //
@@ -73,6 +73,12 @@ export class MessageSyncer {
73
73
  * Syncs messages with the editor.
74
74
  */
75
75
  append(messages: Message.Message[], flush = false): boolean {
76
+ // TODO(dmaretskyi): MarkdownStream currently does not support streaming XML tags, so we need to remove pending non-text blocks.
77
+ messages = messages.map((message) => ({
78
+ ...message,
79
+ blocks: message.blocks.filter((block) => !block.pending || block._tag === 'text'),
80
+ }));
81
+
76
82
  // Check if new set of messages.
77
83
  if (this._initialMessageId !== messages[0]?.id) {
78
84
  this.reset();
@@ -108,13 +114,13 @@ export class MessageSyncer {
108
114
  }
109
115
 
110
116
  private process(messages: Message.Message[], append: (content: string) => void) {
111
- log('sync', {
112
- doc: this._model.view?.state.doc.length,
113
- messages: messages.map((message) => message.blocks.length),
114
- currentMessageIndex: this._currentMessageIndex,
115
- currentBlockIndex: this._currentBlockIndex,
116
- currentBlockContent: this._currentBlockContent,
117
- });
117
+ // console.log('sync', {
118
+ // doc: this._model.view?.state.doc.length,
119
+ // messages: messages.map((message) => message.blocks.length),
120
+ // currentMessageIndex: this._currentMessageIndex,
121
+ // currentBlockIndex: this._currentBlockIndex,
122
+ // currentBlockContent: this._currentBlockContent,
123
+ // });
118
124
 
119
125
  let i = this._currentMessageIndex;
120
126
  for (const message of messages.slice(this._currentMessageIndex)) {
@@ -135,7 +141,7 @@ export class MessageSyncer {
135
141
  content = currentBlockContent;
136
142
  }
137
143
 
138
- log('append', { message: i, block: j, content });
144
+ // console.log('append', { message: i, block: j, content });
139
145
  this._currentBlockContent = currentBlockContent;
140
146
  append(content);
141
147
  }
@@ -56,20 +56,16 @@ const DefaultStory = ({ source }: TemplateEditorProps & { source: string }) => {
56
56
  });
57
57
 
58
58
  return (
59
- <TemplateEditor
60
- classNames='bg-baseSurface is-full max-is-proseMaxWidth'
61
- id={blueprint.id}
62
- template={blueprint.instructions}
63
- />
59
+ <TemplateEditor classNames='dx-document bg-base-surface' id={blueprint.id} template={blueprint.instructions} />
64
60
  );
65
61
  };
66
62
 
67
63
  const meta = {
68
- title: 'plugins/plugin-assistant/TemplateEditor',
64
+ title: 'plugins/plugin-assistant/components/TemplateEditor',
69
65
  component: TemplateEditor as any,
70
66
  render: DefaultStory,
71
67
  decorators: [
72
- withTheme,
68
+ withTheme(),
73
69
  withLayout({ layout: 'column' }),
74
70
  withClientProvider({
75
71
  types: [Blueprint.Blueprint],
@@ -53,7 +53,7 @@ export const TemplateEditor = ({ id, classNames, template, lineNumbers = true }:
53
53
  }),
54
54
  createThemeExtensions({
55
55
  themeMode,
56
- slots: { content: { className: '!pie-4' } },
56
+ slots: { content: { className: '!pe-4' } },
57
57
  }),
58
58
  createMarkdownExtensions(),
59
59
  decorateMarkdown(),
@@ -66,5 +66,5 @@ export const TemplateEditor = ({ id, classNames, template, lineNumbers = true }:
66
66
  };
67
67
  }, [themeMode, template.source?.target, lineNumbers]);
68
68
 
69
- return <div ref={parentRef} className={mx('bs-full overflow-hidden', classNames)} />;
69
+ return <div ref={parentRef} className={mx('h-full overflow-hidden', classNames)} />;
70
70
  };
@@ -47,18 +47,18 @@ const DefaultStory = () => {
47
47
  );
48
48
 
49
49
  return (
50
- <div role='none' className='flex is-[40rem] border border-separator overflow-hidden'>
50
+ <div role='none' className='flex w-[40rem] border border-separator overflow-hidden'>
51
51
  <TemplateForm id={blueprint.id} template={blueprint.instructions} onChange={handleChange} />
52
52
  </div>
53
53
  );
54
54
  };
55
55
 
56
56
  const meta = {
57
- title: 'plugins/plugin-assistant/TemplateForm',
57
+ title: 'plugins/plugin-assistant/components/TemplateForm',
58
58
  component: TemplateForm,
59
59
  render: DefaultStory,
60
60
  decorators: [
61
- withTheme,
61
+ withTheme(),
62
62
  withLayout({ layout: 'column' }),
63
63
  withClientProvider({
64
64
  types: [Blueprint.Blueprint],
@@ -8,7 +8,6 @@ import React, { Fragment, useCallback, useEffect } from 'react';
8
8
  import { type Template } from '@dxos/blueprints';
9
9
  import { type Obj } from '@dxos/echo';
10
10
  import { Input, Select, useTranslation } from '@dxos/react-ui';
11
- import { attentionSurface, groupBorder, mx } from '@dxos/ui-theme';
12
11
  import { isNonNullable } from '@dxos/util';
13
12
 
14
13
  import { meta } from '../../meta';
@@ -61,14 +60,14 @@ export const TemplateForm = ({ id, template, commandEditable = true, onChange }:
61
60
  );
62
61
 
63
62
  return (
64
- <div className={mx('flex flex-col is-full overflow-hidden gap-4', groupBorder)}>
63
+ <div className='flex flex-col w-full overflow-hidden gap-4'>
65
64
  {/* {commandEditable && (
66
65
  <div className='flex items-center pl-4'>
67
66
  <span className='text-neutral-500'>/</span>
68
67
  <Input.Root>
69
68
  <Input.TextInput
70
69
  placeholder={t('command placeholder')}
71
- classNames='is-full bg-transparent m-2'
70
+ classNames='w-full bg-transparent m-2'
72
71
  value={template.command ?? ''}
73
72
  onChange={(event) => {
74
73
  onChange?.((t) => {
@@ -80,20 +79,20 @@ export const TemplateForm = ({ id, template, commandEditable = true, onChange }:
80
79
  </div>
81
80
  )} */}
82
81
 
83
- <TemplateEditor id={id} template={template} classNames={[attentionSurface, 'min-h-[120px]']} />
82
+ <TemplateEditor id={id} template={template} classNames='bg-base-surface min-h-[120px]' />
84
83
 
85
84
  {(template.inputs?.length ?? 0) > 0 && (
86
85
  <div className='grid grid-cols-[10rem_10rem_1fr] gap-1 items-center'>
87
86
  {template.inputs?.filter(isNonNullable).map((input) => (
88
87
  <Fragment key={input.name}>
89
- <div className='pis-3 text-blueText'>{input.name}</div>
88
+ <div className='ps-3 text-blue-text'>{input.name}</div>
90
89
 
91
90
  <Input.Root>
92
91
  <Select.Root
93
92
  value={input.kind}
94
93
  onValueChange={(kind) => handleInputKindChange(input.name, kind as Template.InputKind)}
95
94
  >
96
- <Select.TriggerButton placeholder='Type' classNames='is-full' />
95
+ <Select.TriggerButton placeholder='Type' classNames='w-full' />
97
96
  <Select.Portal>
98
97
  <Select.Content>
99
98
  <Select.Viewport>
@@ -115,7 +114,7 @@ export const TemplateForm = ({ id, template, commandEditable = true, onChange }:
115
114
  <Input.Root>
116
115
  <Input.TextInput
117
116
  placeholder={t('command placeholder')}
118
- classNames='is-full bg-transparent'
117
+ classNames='w-full bg-transparent'
119
118
  value={input.default ?? ''}
120
119
  onChange={(event) => handleInputDefaultChange(input.name, event.target.value)}
121
120
  />
@@ -64,7 +64,7 @@ const regex = {
64
64
  url: /[\w.-]+\.[\w.-]+\/[\w/]+/g,
65
65
  };
66
66
 
67
- const tagPadding = 'mli-0.5 pli-1 rounded-sm';
67
+ const tagPadding = 'mx-0.5 px-1 rounded-xs';
68
68
 
69
69
  /**
70
70
  * ViewPlugin that decorates Handlebars syntax.
@@ -158,14 +158,14 @@ const handlebarsHighlightPlugin = ViewPlugin.fromClass(
158
158
  decorations.push({
159
159
  from: idx,
160
160
  to: end,
161
- decoration: Decoration.mark({ class: 'text-greenText' }),
161
+ decoration: Decoration.mark({ class: 'text-green-text' }),
162
162
  });
163
163
  end = idx;
164
164
  }
165
165
  decorations.push({
166
166
  from: start,
167
167
  to: end,
168
- decoration: Decoration.mark({ class: 'text-blueText' }),
168
+ decoration: Decoration.mark({ class: 'text-blue-text' }),
169
169
  });
170
170
  }
171
171
  }
@@ -179,7 +179,7 @@ const handlebarsHighlightPlugin = ViewPlugin.fromClass(
179
179
  decorations.push({
180
180
  from: start,
181
181
  to: end,
182
- decoration: Decoration.mark({ class: 'text-greenText' }),
182
+ decoration: Decoration.mark({ class: 'text-green-text' }),
183
183
  });
184
184
  }
185
185
  }