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

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 (515) hide show
  1. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs +31 -0
  2. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-ECQYUQ2B.mjs +153 -0
  4. package/dist/lib/browser/ChatCompanion-ECQYUQ2B.mjs.map +7 -0
  5. package/dist/lib/browser/ChatContainer-QCCOFBUX.mjs +73 -0
  6. package/dist/lib/browser/ChatContainer-QCCOFBUX.mjs.map +7 -0
  7. package/dist/lib/browser/ChatDialog-SMK4RSZU.mjs +85 -0
  8. package/dist/lib/browser/ChatDialog-SMK4RSZU.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs +53 -0
  10. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-5GUDOEWF.mjs +21 -0
  12. package/dist/lib/browser/ai-service-5GUDOEWF.mjs.map +7 -0
  13. package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs +212 -0
  14. package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs.map +7 -0
  15. package/dist/lib/browser/blueprint-definition-DGHH7MUU.mjs +14 -0
  16. package/dist/lib/browser/blueprints/index.mjs +12 -0
  17. package/dist/lib/browser/chunk-3JYPE2MM.mjs +1832 -0
  18. package/dist/lib/browser/chunk-3JYPE2MM.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-DKQMSMBN.mjs +326 -0
  20. package/dist/lib/browser/chunk-DKQMSMBN.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-WBG5PTSX.mjs → chunk-EXVT7D4B.mjs} +1 -1
  22. package/dist/lib/browser/chunk-EXVT7D4B.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-L5OA5OGS.mjs → chunk-ML3QCFKA.mjs} +40 -37
  24. package/dist/lib/browser/chunk-ML3QCFKA.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-MRJVYGLU.mjs +208 -0
  26. package/dist/lib/browser/chunk-MRJVYGLU.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-V772AMZM.mjs +250 -0
  28. package/dist/lib/browser/chunk-V772AMZM.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-WGQTU6UJ.mjs +41 -0
  30. package/dist/lib/browser/chunk-WGQTU6UJ.mjs.map +7 -0
  31. package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs +20 -0
  32. package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs.map +7 -0
  33. package/dist/lib/browser/index.mjs +201 -214
  34. package/dist/lib/browser/index.mjs.map +4 -4
  35. package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs +19 -0
  36. package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs.map +7 -0
  37. package/dist/lib/browser/meta.json +1 -1
  38. package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs +132 -0
  39. package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs.map +7 -0
  40. package/dist/lib/browser/react-surface-NCITRSJJ.mjs +109 -0
  41. package/dist/lib/browser/react-surface-NCITRSJJ.mjs.map +7 -0
  42. package/dist/lib/browser/repair-6QGAKOVM.mjs +54 -0
  43. package/dist/lib/browser/repair-6QGAKOVM.mjs.map +7 -0
  44. package/dist/lib/browser/settings-4ZDLUMYE.mjs +32 -0
  45. package/dist/lib/browser/settings-4ZDLUMYE.mjs.map +7 -0
  46. package/dist/lib/browser/state-AN6336ZX.mjs +26 -0
  47. package/dist/lib/browser/state-AN6336ZX.mjs.map +7 -0
  48. package/dist/lib/browser/toolkit-7AVTEPMA.mjs +18 -0
  49. package/dist/lib/browser/toolkit-7AVTEPMA.mjs.map +7 -0
  50. package/dist/lib/browser/types/index.mjs +8 -4
  51. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs +32 -0
  52. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs.map +7 -0
  53. package/dist/lib/node-esm/ChatCompanion-Q4FUZ2MW.mjs +154 -0
  54. package/dist/lib/node-esm/ChatCompanion-Q4FUZ2MW.mjs.map +7 -0
  55. package/dist/lib/node-esm/ChatContainer-AKI33HIB.mjs +74 -0
  56. package/dist/lib/node-esm/ChatContainer-AKI33HIB.mjs.map +7 -0
  57. package/dist/lib/node-esm/ChatDialog-AP45PVZR.mjs +86 -0
  58. package/dist/lib/node-esm/ChatDialog-AP45PVZR.mjs.map +7 -0
  59. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs +54 -0
  60. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs.map +7 -0
  61. package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs +22 -0
  62. package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs.map +7 -0
  63. package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs +213 -0
  64. package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs.map +7 -0
  65. package/dist/lib/node-esm/{blueprint-definition-CFCUD2VC.mjs → blueprint-definition-SEMDEIYG.mjs} +6 -5
  66. package/dist/lib/node-esm/blueprint-definition-SEMDEIYG.mjs.map +7 -0
  67. package/dist/lib/node-esm/blueprints/index.mjs +13 -0
  68. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-355W5B27.mjs +251 -0
  70. package/dist/lib/node-esm/chunk-355W5B27.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-75PHXBN3.mjs +327 -0
  72. package/dist/lib/node-esm/chunk-75PHXBN3.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs +209 -0
  74. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs +42 -0
  76. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs.map +7 -0
  77. package/dist/lib/node-esm/{chunk-WE6KTH72.mjs → chunk-POWB2BPC.mjs} +1 -1
  78. package/dist/lib/node-esm/chunk-POWB2BPC.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-XI5T3MJC.mjs +1833 -0
  80. package/dist/lib/node-esm/chunk-XI5T3MJC.mjs.map +7 -0
  81. package/dist/lib/node-esm/{chunk-7ZYOYW7F.mjs → chunk-ZRIPP7YF.mjs} +40 -37
  82. package/dist/lib/node-esm/chunk-ZRIPP7YF.mjs.map +7 -0
  83. package/dist/lib/node-esm/{edge-model-resolver-2ARXDOYS.mjs → edge-model-resolver-G5KMODPO.mjs} +9 -7
  84. package/dist/lib/node-esm/edge-model-resolver-G5KMODPO.mjs.map +7 -0
  85. package/dist/lib/node-esm/index.mjs +201 -214
  86. package/dist/lib/node-esm/index.mjs.map +4 -4
  87. package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs +20 -0
  88. package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs.map +7 -0
  89. package/dist/lib/node-esm/meta.json +1 -1
  90. package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs +133 -0
  91. package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs.map +7 -0
  92. package/dist/lib/node-esm/react-surface-ST6V7LPE.mjs +110 -0
  93. package/dist/lib/node-esm/react-surface-ST6V7LPE.mjs.map +7 -0
  94. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs +55 -0
  95. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs.map +7 -0
  96. package/dist/lib/node-esm/settings-CQEOHR3R.mjs +33 -0
  97. package/dist/lib/node-esm/settings-CQEOHR3R.mjs.map +7 -0
  98. package/dist/lib/node-esm/state-HDON4REW.mjs +27 -0
  99. package/dist/lib/node-esm/state-HDON4REW.mjs.map +7 -0
  100. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs +19 -0
  101. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs.map +7 -0
  102. package/dist/lib/node-esm/types/index.mjs +8 -4
  103. package/dist/types/src/AssistantPlugin.d.ts +2 -1
  104. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  105. package/dist/types/src/blueprints/assistant-blueprint.d.ts +209 -0
  106. package/dist/types/src/blueprints/assistant-blueprint.d.ts.map +1 -0
  107. package/dist/types/src/blueprints/index.d.ts +7 -0
  108. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/ai-service/ai-service.d.ts +5 -0
  110. package/dist/types/src/capabilities/ai-service/ai-service.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/ai-service/index.d.ts +3 -0
  112. package/dist/types/src/capabilities/ai-service/index.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  114. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  116. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +21 -0
  118. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +4 -0
  120. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts +6 -0
  122. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts +3 -0
  124. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/index.d.ts +10 -11
  126. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  127. package/dist/types/src/capabilities/local-model-resolver/index.d.ts +3 -0
  128. package/dist/types/src/capabilities/local-model-resolver/index.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +12 -0
  130. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  132. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  133. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  134. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  135. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  136. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  137. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  138. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  139. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  140. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  141. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  142. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  143. package/dist/types/src/capabilities/settings/index.d.ts +15 -0
  144. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  145. package/dist/types/src/capabilities/settings/settings.d.ts +17 -0
  146. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  147. package/dist/types/src/capabilities/state/index.d.ts +11 -0
  148. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  149. package/dist/types/src/capabilities/state/state.d.ts +13 -0
  150. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  151. package/dist/types/src/capabilities/toolkit/index.d.ts +3 -0
  152. package/dist/types/src/capabilities/toolkit/index.d.ts.map +1 -0
  153. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +5 -0
  154. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +1 -0
  155. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +4 -2
  156. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  157. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  158. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  159. package/dist/types/src/components/Chat/Chat.d.ts +21 -12
  160. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  161. package/dist/types/src/components/Chat/events.d.ts +5 -1
  162. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  163. package/dist/types/src/components/ChatCompanion.d.ts +2 -2
  164. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
  165. package/dist/types/src/components/ChatContainer.d.ts +13 -5
  166. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  167. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  168. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  169. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  170. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +3 -3
  171. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  172. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +3 -3
  173. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  174. package/dist/types/src/components/ChatThread/ChatThread.d.ts +7 -10
  175. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  176. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +128 -73
  177. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  178. package/dist/types/src/components/ChatThread/registry.d.ts +1 -1
  179. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  180. package/dist/types/src/components/ChatThread/sync.d.ts +12 -6
  181. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  182. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  183. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  184. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  185. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +112 -60
  186. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +11 -1
  188. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  189. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +113 -61
  190. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  191. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  192. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  193. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  194. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  195. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  196. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +10 -8
  197. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  198. package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -5
  199. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  200. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +112 -60
  201. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  202. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +12 -0
  203. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +1 -0
  204. package/dist/types/src/components/Typewriter/Typewriter.d.ts +11 -0
  205. package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +1 -0
  206. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts +7 -0
  207. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +1 -0
  208. package/dist/types/src/components/Typewriter/assistant-extension.d.ts +5 -0
  209. package/dist/types/src/components/Typewriter/assistant-extension.d.ts.map +1 -0
  210. package/dist/types/src/components/Typewriter/index.d.ts +2 -0
  211. package/dist/types/src/components/Typewriter/index.d.ts.map +1 -0
  212. package/dist/types/src/components/index.d.ts +10 -5
  213. package/dist/types/src/components/index.d.ts.map +1 -1
  214. package/dist/types/src/functions/index.d.ts +1 -1
  215. package/dist/types/src/functions/index.d.ts.map +1 -1
  216. package/dist/types/src/functions/object-list.d.ts +2 -2
  217. package/dist/types/src/functions/object-list.d.ts.map +1 -1
  218. package/dist/types/src/functions/object-load.d.ts +1 -1
  219. package/dist/types/src/functions/object-load.d.ts.map +1 -1
  220. package/dist/types/src/functions/object-search.d.ts +10 -0
  221. package/dist/types/src/functions/object-search.d.ts.map +1 -0
  222. package/dist/types/src/hooks/index.d.ts +2 -1
  223. package/dist/types/src/hooks/index.d.ts.map +1 -1
  224. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +5 -5
  225. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  226. package/dist/types/src/hooks/useChatProcessor.d.ts +3 -1
  227. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  228. package/dist/types/src/hooks/useChatServices.d.ts +3 -3
  229. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  230. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  231. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  232. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  233. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  234. package/dist/types/src/hooks/useContextObjects.d.ts +7 -7
  235. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  236. package/dist/types/src/hooks/useFilteredTypes.d.ts +3 -0
  237. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  238. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  239. package/dist/types/src/index.d.ts +0 -1
  240. package/dist/types/src/index.d.ts.map +1 -1
  241. package/dist/types/src/meta.d.ts +2 -2
  242. package/dist/types/src/meta.d.ts.map +1 -1
  243. package/dist/types/src/processor/processor.d.ts +17 -16
  244. package/dist/types/src/processor/processor.d.ts.map +1 -1
  245. package/dist/types/src/processor/update-name.d.ts.map +1 -1
  246. package/dist/types/src/queue-logger.d.ts.map +1 -1
  247. package/dist/types/src/testing/test-generator.d.ts +5 -4
  248. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  249. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  250. package/dist/types/src/translations.d.ts +243 -26
  251. package/dist/types/src/translations.d.ts.map +1 -1
  252. package/dist/types/src/types/Assistant.d.ts +16 -22
  253. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  254. package/dist/types/src/types/AssistantAction.d.ts +88 -112
  255. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  256. package/dist/types/src/types/capabilities.d.ts +33 -0
  257. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  258. package/dist/types/src/types/events.d.ts +5 -0
  259. package/dist/types/src/types/events.d.ts.map +1 -0
  260. package/dist/types/src/types/index.d.ts +3 -1
  261. package/dist/types/src/types/index.d.ts.map +1 -1
  262. package/dist/types/src/types/service.d.ts +10 -212
  263. package/dist/types/src/types/service.d.ts.map +1 -1
  264. package/dist/types/tsconfig.tsbuildinfo +1 -1
  265. package/package.json +113 -90
  266. package/src/AssistantPlugin.tsx +70 -105
  267. package/src/blueprints/assistant-blueprint.ts +62 -0
  268. package/src/blueprints/index.ts +12 -0
  269. package/src/capabilities/ai-service/ai-service.ts +29 -0
  270. package/src/capabilities/ai-service/index.ts +7 -0
  271. package/src/capabilities/app-graph-builder/app-graph-builder.ts +180 -0
  272. package/src/capabilities/app-graph-builder/index.ts +7 -0
  273. package/src/capabilities/blueprint-definition/blueprint-definition.ts +60 -0
  274. package/src/capabilities/blueprint-definition/index.ts +8 -0
  275. package/src/capabilities/edge-model-resolver/edge-model-resolver.ts +32 -0
  276. package/src/capabilities/edge-model-resolver/index.ts +7 -0
  277. package/src/capabilities/index.ts +10 -14
  278. package/src/capabilities/local-model-resolver/index.ts +7 -0
  279. package/src/capabilities/local-model-resolver/local-model-resolver.ts +37 -0
  280. package/src/capabilities/operation-resolver/index.ts +7 -0
  281. package/src/capabilities/operation-resolver/operation-resolver.ts +110 -0
  282. package/src/capabilities/react-surface/index.ts +7 -0
  283. package/src/capabilities/react-surface/react-surface.tsx +95 -0
  284. package/src/capabilities/repair/index.ts +7 -0
  285. package/src/capabilities/repair/repair.ts +63 -0
  286. package/src/capabilities/settings/index.ts +7 -0
  287. package/src/capabilities/settings/settings.ts +30 -0
  288. package/src/capabilities/state/index.ts +7 -0
  289. package/src/capabilities/state/state.ts +27 -0
  290. package/src/capabilities/toolkit/index.ts +7 -0
  291. package/src/capabilities/toolkit/toolkit.ts +26 -0
  292. package/src/components/AssistantSettings/AssistantSettings.tsx +13 -5
  293. package/src/components/BlueprintArticle.tsx +29 -0
  294. package/src/components/Chat/Chat.tsx +160 -125
  295. package/src/components/Chat/events.ts +7 -1
  296. package/src/components/ChatCompanion.tsx +132 -105
  297. package/src/components/ChatContainer.tsx +40 -30
  298. package/src/components/ChatDialog.tsx +13 -7
  299. package/src/components/ChatProgress/ChatProgress.tsx +4 -17
  300. package/src/components/ChatPrompt/ChatActions.tsx +3 -5
  301. package/src/components/ChatPrompt/ChatOptions.tsx +93 -80
  302. package/src/components/ChatPrompt/ChatReferences.tsx +7 -8
  303. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
  304. package/src/components/ChatThread/ChatThread.stories.tsx +57 -36
  305. package/src/components/ChatThread/ChatThread.tsx +26 -36
  306. package/src/components/ChatThread/Link.tsx +3 -3
  307. package/src/components/ChatThread/registry.tsx +25 -35
  308. package/src/components/ChatThread/sync.test.ts +33 -17
  309. package/src/components/ChatThread/sync.ts +53 -12
  310. package/src/components/ChatThread/testing/thread.md +37 -0
  311. package/src/components/PromptArticle.tsx +50 -0
  312. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +12 -4
  313. package/src/components/TemplateEditor/TemplateEditor.tsx +14 -10
  314. package/src/components/TemplateEditor/TemplateForm.stories.tsx +15 -7
  315. package/src/components/TemplateEditor/TemplateForm.tsx +76 -29
  316. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +274 -0
  317. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  318. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  319. package/src/components/ToolBlock/ToolBlock.tsx +36 -45
  320. package/src/components/Toolbox/Toolbox.stories.tsx +9 -10
  321. package/src/components/Toolbox/Toolbox.tsx +16 -17
  322. package/src/components/Typewriter/AssistantToolbar.tsx +161 -0
  323. package/src/components/Typewriter/Typewriter.stories.tsx +83 -0
  324. package/src/components/Typewriter/Typewriter.tsx +54 -0
  325. package/src/components/Typewriter/assistant-extension.tsx +144 -0
  326. package/src/components/Typewriter/index.ts +5 -0
  327. package/src/components/index.ts +2 -3
  328. package/src/functions/index.ts +1 -1
  329. package/src/functions/object-list.ts +4 -3
  330. package/src/functions/object-load.ts +7 -5
  331. package/src/functions/object-search.ts +46 -0
  332. package/src/hooks/index.ts +2 -1
  333. package/src/hooks/useBlueprintRegistry.ts +31 -20
  334. package/src/hooks/useChatProcessor.ts +15 -12
  335. package/src/hooks/useChatServices.ts +13 -14
  336. package/src/hooks/useChatToolbarActions.ts +121 -0
  337. package/src/hooks/useContextBinder.ts +9 -7
  338. package/src/hooks/useContextObjects.ts +13 -25
  339. package/src/hooks/useFilteredTypes.ts +37 -0
  340. package/src/hooks/useReferencesProvider.ts +7 -6
  341. package/src/index.ts +0 -1
  342. package/src/meta.ts +2 -2
  343. package/src/processor/presets.ts +1 -1
  344. package/src/processor/processor.test.ts +8 -17
  345. package/src/processor/processor.ts +41 -43
  346. package/src/processor/update-name.ts +4 -2
  347. package/src/queue-logger.ts +8 -9
  348. package/src/testing/test-generator.ts +14 -13
  349. package/src/testing/test-services.ts +8 -6
  350. package/src/translations.ts +27 -16
  351. package/src/types/Assistant.ts +9 -10
  352. package/src/types/AssistantAction.ts +59 -54
  353. package/src/types/capabilities.ts +27 -0
  354. package/src/types/events.ts +11 -0
  355. package/src/types/index.ts +3 -1
  356. package/src/types/service.ts +10 -7
  357. package/dist/lib/browser/BlueprintContainer-GMSYKGSO.mjs +0 -36
  358. package/dist/lib/browser/BlueprintContainer-GMSYKGSO.mjs.map +0 -7
  359. package/dist/lib/browser/ChatCompanion-M3FDKTQM.mjs +0 -151
  360. package/dist/lib/browser/ChatCompanion-M3FDKTQM.mjs.map +0 -7
  361. package/dist/lib/browser/ChatContainer-KAH7XITI.mjs +0 -74
  362. package/dist/lib/browser/ChatContainer-KAH7XITI.mjs.map +0 -7
  363. package/dist/lib/browser/ChatDialog-ZWRGABW6.mjs +0 -87
  364. package/dist/lib/browser/ChatDialog-ZWRGABW6.mjs.map +0 -7
  365. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +0 -19
  366. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +0 -7
  367. package/dist/lib/browser/app-graph-builder-R5T7BJPC.mjs +0 -183
  368. package/dist/lib/browser/app-graph-builder-R5T7BJPC.mjs.map +0 -7
  369. package/dist/lib/browser/blueprint-definition-AGTDXTXO.mjs +0 -13
  370. package/dist/lib/browser/chunk-357IHWQL.mjs +0 -1519
  371. package/dist/lib/browser/chunk-357IHWQL.mjs.map +0 -7
  372. package/dist/lib/browser/chunk-A2NVNXPL.mjs +0 -170
  373. package/dist/lib/browser/chunk-A2NVNXPL.mjs.map +0 -7
  374. package/dist/lib/browser/chunk-CQW6UPJM.mjs +0 -199
  375. package/dist/lib/browser/chunk-CQW6UPJM.mjs.map +0 -7
  376. package/dist/lib/browser/chunk-GNI6HL6G.mjs +0 -219
  377. package/dist/lib/browser/chunk-GNI6HL6G.mjs.map +0 -7
  378. package/dist/lib/browser/chunk-GXHZTOWJ.mjs +0 -378
  379. package/dist/lib/browser/chunk-GXHZTOWJ.mjs.map +0 -7
  380. package/dist/lib/browser/chunk-L5OA5OGS.mjs.map +0 -7
  381. package/dist/lib/browser/chunk-MEN5WTLA.mjs +0 -182
  382. package/dist/lib/browser/chunk-MEN5WTLA.mjs.map +0 -7
  383. package/dist/lib/browser/chunk-PUG24BEC.mjs +0 -277
  384. package/dist/lib/browser/chunk-PUG24BEC.mjs.map +0 -7
  385. package/dist/lib/browser/chunk-SJJV3HEX.mjs +0 -16
  386. package/dist/lib/browser/chunk-SJJV3HEX.mjs.map +0 -7
  387. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +0 -7
  388. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +0 -18
  389. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +0 -7
  390. package/dist/lib/browser/intent-resolver-3C5TABOX.mjs +0 -136
  391. package/dist/lib/browser/intent-resolver-3C5TABOX.mjs.map +0 -7
  392. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +0 -17
  393. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +0 -7
  394. package/dist/lib/browser/react-surface-EYKA5IFU.mjs +0 -90
  395. package/dist/lib/browser/react-surface-EYKA5IFU.mjs.map +0 -7
  396. package/dist/lib/browser/settings-VMVBYZLN.mjs +0 -23
  397. package/dist/lib/browser/settings-VMVBYZLN.mjs.map +0 -7
  398. package/dist/lib/browser/state-CFREPBB6.mjs +0 -21
  399. package/dist/lib/browser/state-CFREPBB6.mjs.map +0 -7
  400. package/dist/lib/browser/toolkit-F3NQ7TSI.mjs +0 -21
  401. package/dist/lib/browser/toolkit-F3NQ7TSI.mjs.map +0 -7
  402. package/dist/lib/node-esm/BlueprintContainer-6GBLMK4Z.mjs +0 -37
  403. package/dist/lib/node-esm/BlueprintContainer-6GBLMK4Z.mjs.map +0 -7
  404. package/dist/lib/node-esm/ChatCompanion-OV426GCP.mjs +0 -152
  405. package/dist/lib/node-esm/ChatCompanion-OV426GCP.mjs.map +0 -7
  406. package/dist/lib/node-esm/ChatContainer-UKY7NHFY.mjs +0 -75
  407. package/dist/lib/node-esm/ChatContainer-UKY7NHFY.mjs.map +0 -7
  408. package/dist/lib/node-esm/ChatDialog-2BDQIEXH.mjs +0 -88
  409. package/dist/lib/node-esm/ChatDialog-2BDQIEXH.mjs.map +0 -7
  410. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +0 -20
  411. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +0 -7
  412. package/dist/lib/node-esm/app-graph-builder-I52RYVWH.mjs +0 -184
  413. package/dist/lib/node-esm/app-graph-builder-I52RYVWH.mjs.map +0 -7
  414. package/dist/lib/node-esm/chunk-2CAETDW2.mjs +0 -183
  415. package/dist/lib/node-esm/chunk-2CAETDW2.mjs.map +0 -7
  416. package/dist/lib/node-esm/chunk-4J5FYNNM.mjs +0 -171
  417. package/dist/lib/node-esm/chunk-4J5FYNNM.mjs.map +0 -7
  418. package/dist/lib/node-esm/chunk-5ARE4R2I.mjs +0 -220
  419. package/dist/lib/node-esm/chunk-5ARE4R2I.mjs.map +0 -7
  420. package/dist/lib/node-esm/chunk-7ZYOYW7F.mjs.map +0 -7
  421. package/dist/lib/node-esm/chunk-HJPIYMWD.mjs +0 -1520
  422. package/dist/lib/node-esm/chunk-HJPIYMWD.mjs.map +0 -7
  423. package/dist/lib/node-esm/chunk-O36P4LN5.mjs +0 -200
  424. package/dist/lib/node-esm/chunk-O36P4LN5.mjs.map +0 -7
  425. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +0 -7
  426. package/dist/lib/node-esm/chunk-XM4BVQQR.mjs +0 -278
  427. package/dist/lib/node-esm/chunk-XM4BVQQR.mjs.map +0 -7
  428. package/dist/lib/node-esm/chunk-XQBL2SBL.mjs +0 -17
  429. package/dist/lib/node-esm/chunk-XQBL2SBL.mjs.map +0 -7
  430. package/dist/lib/node-esm/chunk-YIO5MEPR.mjs +0 -380
  431. package/dist/lib/node-esm/chunk-YIO5MEPR.mjs.map +0 -7
  432. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +0 -7
  433. package/dist/lib/node-esm/intent-resolver-HQ27YALS.mjs +0 -137
  434. package/dist/lib/node-esm/intent-resolver-HQ27YALS.mjs.map +0 -7
  435. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +0 -18
  436. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +0 -7
  437. package/dist/lib/node-esm/react-surface-UOC3CBPH.mjs +0 -91
  438. package/dist/lib/node-esm/react-surface-UOC3CBPH.mjs.map +0 -7
  439. package/dist/lib/node-esm/settings-7AUVNDM2.mjs +0 -24
  440. package/dist/lib/node-esm/settings-7AUVNDM2.mjs.map +0 -7
  441. package/dist/lib/node-esm/state-XXND44OW.mjs +0 -22
  442. package/dist/lib/node-esm/state-XXND44OW.mjs.map +0 -7
  443. package/dist/lib/node-esm/toolkit-7CH5UNSQ.mjs +0 -22
  444. package/dist/lib/node-esm/toolkit-7CH5UNSQ.mjs.map +0 -7
  445. package/dist/types/src/capabilities/ai-service.d.ts +0 -4
  446. package/dist/types/src/capabilities/ai-service.d.ts.map +0 -1
  447. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  448. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  449. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -7
  450. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  451. package/dist/types/src/capabilities/capabilities.d.ts +0 -11
  452. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  453. package/dist/types/src/capabilities/edge-model-resolver.d.ts +0 -4
  454. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +0 -1
  455. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  456. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  457. package/dist/types/src/capabilities/local-model-resolver.d.ts +0 -10
  458. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +0 -1
  459. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  460. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  461. package/dist/types/src/capabilities/settings.d.ts +0 -4
  462. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  463. package/dist/types/src/capabilities/state.d.ts +0 -4
  464. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  465. package/dist/types/src/capabilities/toolkit.d.ts +0 -4
  466. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  467. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  468. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  469. package/dist/types/src/components/ChatThread/reducers.d.ts +0 -40
  470. package/dist/types/src/components/ChatThread/reducers.d.ts.map +0 -1
  471. package/dist/types/src/components/ChatToolbar/ChatToolbar.d.ts +0 -6
  472. package/dist/types/src/components/ChatToolbar/ChatToolbar.d.ts.map +0 -1
  473. package/dist/types/src/components/ChatToolbar/index.d.ts +0 -2
  474. package/dist/types/src/components/ChatToolbar/index.d.ts.map +0 -1
  475. package/dist/types/src/components/ChatToolbar/useChatToolbarActions.d.ts +0 -9
  476. package/dist/types/src/components/ChatToolbar/useChatToolbarActions.d.ts.map +0 -1
  477. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  478. package/dist/types/src/events.d.ts +0 -4
  479. package/dist/types/src/events.d.ts.map +0 -1
  480. package/dist/types/src/functions/analysis.d.ts +0 -5
  481. package/dist/types/src/functions/analysis.d.ts.map +0 -1
  482. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  483. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  484. package/dist/types/src/toolkits/AssistantToolkit.d.ts +0 -21
  485. package/dist/types/src/toolkits/AssistantToolkit.d.ts.map +0 -1
  486. package/dist/types/src/toolkits/SystemToolkit.d.ts +0 -69
  487. package/dist/types/src/toolkits/SystemToolkit.d.ts.map +0 -1
  488. package/dist/types/src/toolkits/index.d.ts +0 -3
  489. package/dist/types/src/toolkits/index.d.ts.map +0 -1
  490. package/src/capabilities/ai-service.ts +0 -27
  491. package/src/capabilities/app-graph-builder.ts +0 -194
  492. package/src/capabilities/blueprint-definition.ts +0 -66
  493. package/src/capabilities/capabilities.ts +0 -18
  494. package/src/capabilities/edge-model-resolver.ts +0 -25
  495. package/src/capabilities/intent-resolver.ts +0 -121
  496. package/src/capabilities/local-model-resolver.ts +0 -30
  497. package/src/capabilities/react-surface.tsx +0 -71
  498. package/src/capabilities/settings.ts +0 -19
  499. package/src/capabilities/state.ts +0 -20
  500. package/src/capabilities/toolkit.ts +0 -19
  501. package/src/components/BlueprintContainer.tsx +0 -30
  502. package/src/components/ChatThread/reducers.ts +0 -151
  503. package/src/components/ChatToolbar/ChatToolbar.tsx +0 -23
  504. package/src/components/ChatToolbar/index.ts +0 -5
  505. package/src/components/ChatToolbar/useChatToolbarActions.ts +0 -126
  506. package/src/components/TemplateEditor/handlebars-extension.ts +0 -166
  507. package/src/events.ts +0 -11
  508. package/src/functions/analysis.ts +0 -22
  509. package/src/hooks/useItemTypes.ts +0 -37
  510. package/src/toolkits/AssistantToolkit.ts +0 -55
  511. package/src/toolkits/SystemToolkit.ts +0 -292
  512. package/src/toolkits/index.ts +0 -6
  513. /package/dist/lib/browser/{blueprint-definition-AGTDXTXO.mjs.map → blueprint-definition-DGHH7MUU.mjs.map} +0 -0
  514. /package/dist/lib/{node-esm/blueprint-definition-CFCUD2VC.mjs.map → browser/blueprints/index.mjs.map} +0 -0
  515. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export const Settings = Capability.lazy('Settings', () => import('./settings'));
@@ -0,0 +1,30 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capability, Common } from '@dxos/app-framework';
8
+ import { createKvsStore } from '@dxos/effect';
9
+
10
+ import { meta } from '../../meta';
11
+ import { Assistant, AssistantCapabilities } from '../../types';
12
+
13
+ export default Capability.makeModule(() =>
14
+ Effect.sync(() => {
15
+ const settingsAtom = createKvsStore({
16
+ key: meta.id,
17
+ schema: Assistant.Settings,
18
+ defaultValue: () => ({}),
19
+ });
20
+
21
+ return [
22
+ Capability.contributes(AssistantCapabilities.Settings, settingsAtom),
23
+ Capability.contributes(Common.Capability.Settings, {
24
+ prefix: meta.id,
25
+ schema: Assistant.Settings,
26
+ atom: settingsAtom,
27
+ }),
28
+ ];
29
+ }),
30
+ );
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export const AssistantState = Capability.lazy('AssistantState', () => import('./state'));
@@ -0,0 +1,27 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capability } from '@dxos/app-framework';
8
+ import { createKvsStore } from '@dxos/effect';
9
+
10
+ import { meta } from '../../meta';
11
+ import { AssistantCapabilities } from '../../types';
12
+
13
+ export default Capability.makeModule(() =>
14
+ Effect.sync(() => {
15
+ // NOTE: This needs to be a chat object rather than a string id to avoid a query race.
16
+ // TODO(wittjosiah): Handle serialization and hydration for this so it can be cached.
17
+ const stateAtom = createKvsStore({
18
+ key: meta.id,
19
+ schema: AssistantCapabilities.StateSchema,
20
+ defaultValue: () => ({
21
+ currentChat: {},
22
+ }),
23
+ });
24
+
25
+ return Capability.contributes(AssistantCapabilities.State, stateAtom);
26
+ }),
27
+ );
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export const Toolkit = Capability.lazy('Toolkit', () => import('./toolkit'));
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+ import * as Layer from 'effect/Layer';
7
+
8
+ import { Capability, Common } from '@dxos/app-framework';
9
+ import { GenericToolkit } from '@dxos/assistant';
10
+ import { AssistantToolkit, SystemToolkit, WebSearchToolkit } from '@dxos/assistant-toolkit';
11
+
12
+ export default Capability.makeModule(() =>
13
+ Effect.succeed([
14
+ Capability.contributes(
15
+ Common.Capability.Toolkit,
16
+ GenericToolkit.make(AssistantToolkit.AssistantToolkit, AssistantToolkit.layer()),
17
+ ),
18
+
19
+ // TODO(burdon): How to manage dependencies across blueprints.
20
+ Capability.contributes(
21
+ Common.Capability.Toolkit,
22
+ GenericToolkit.make(SystemToolkit.SystemToolkit, SystemToolkit.layer()),
23
+ ),
24
+ Capability.contributes(Common.Capability.Toolkit, GenericToolkit.make(WebSearchToolkit, Layer.empty)),
25
+ ]),
26
+ );
@@ -20,7 +20,12 @@ const LLM_PROVIDER_LABELS = {
20
20
  lmstudio: 'LM Studio',
21
21
  } as const;
22
22
 
23
- export const AssistantSettings = ({ settings }: { settings: Assistant.Settings }) => {
23
+ export type AssistantSettingsComponentProps = {
24
+ settings: Assistant.Settings;
25
+ onSettingsChange: (fn: (current: Assistant.Settings) => Assistant.Settings) => void;
26
+ };
27
+
28
+ export const AssistantSettings = ({ settings, onSettingsChange }: AssistantSettingsComponentProps) => {
24
29
  const { t } = useTranslation(meta.id);
25
30
 
26
31
  return (
@@ -30,7 +35,7 @@ export const AssistantSettings = ({ settings }: { settings: Assistant.Settings }
30
35
  <ControlItemInput title={t('settings custom prompts label')}>
31
36
  <Input.Switch
32
37
  checked={!!settings.customPrompts}
33
- onCheckedChange={(checked) => (settings.customPrompts = checked)}
38
+ onCheckedChange={(checked) => onSettingsChange((s) => ({ ...s, customPrompts: checked }))}
34
39
  />
35
40
  </ControlItemInput>
36
41
 
@@ -38,7 +43,10 @@ export const AssistantSettings = ({ settings }: { settings: Assistant.Settings }
38
43
  <Select.Root
39
44
  value={settings.llmProvider ?? 'edge'}
40
45
  onValueChange={(value) => {
41
- settings.llmProvider = value === DEFAULT_VALUE ? undefined : (value as any);
46
+ onSettingsChange((s) => ({
47
+ ...s,
48
+ llmProvider: value === DEFAULT_VALUE ? undefined : (value as any),
49
+ }));
42
50
  }}
43
51
  >
44
52
  <Select.TriggerButton placeholder={t('settings llm provider label')} />
@@ -62,7 +70,7 @@ export const AssistantSettings = ({ settings }: { settings: Assistant.Settings }
62
70
  <Select.Root
63
71
  value={settings.edgeModel ?? DEFAULT_VALUE}
64
72
  onValueChange={(value) => {
65
- settings.edgeModel = value === DEFAULT_VALUE ? undefined : value;
73
+ onSettingsChange((s) => ({ ...s, edgeModel: value === DEFAULT_VALUE ? undefined : value }));
66
74
  }}
67
75
  >
68
76
  <Select.TriggerButton placeholder={t('settings default llm model label')} />
@@ -86,7 +94,7 @@ export const AssistantSettings = ({ settings }: { settings: Assistant.Settings }
86
94
  <Select.Root
87
95
  value={settings.ollamaModel ?? DEFAULT_VALUE}
88
96
  onValueChange={(value) => {
89
- settings.ollamaModel = value === DEFAULT_VALUE ? undefined : value;
97
+ onSettingsChange((s) => ({ ...s, ollamaModel: value === DEFAULT_VALUE ? undefined : value }));
90
98
  }}
91
99
  >
92
100
  <Select.TriggerButton placeholder={t('settings default llm model label')} />
@@ -0,0 +1,29 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { type SurfaceComponentProps } from '@dxos/app-framework/react';
8
+ import { type Blueprint } from '@dxos/blueprints';
9
+ import { Obj } from '@dxos/echo';
10
+ import { Toolbar } from '@dxos/react-ui';
11
+ import { useAttention } from '@dxos/react-ui-attention';
12
+ import { Layout } from '@dxos/react-ui-mosaic';
13
+
14
+ import { TemplateEditor } from './TemplateEditor';
15
+
16
+ export type BlueprintArticleProps = SurfaceComponentProps<Blueprint.Blueprint>;
17
+
18
+ export const BlueprintArticle = ({ role, subject }: BlueprintArticleProps) => {
19
+ const { hasAttention } = useAttention(Obj.getDXN(subject).toString());
20
+
21
+ return (
22
+ <Layout.Main role={role} toolbar>
23
+ <Toolbar.Root disabled={!hasAttention} />
24
+ <TemplateEditor id={subject.id} template={subject.instructions} classNames='container-max-width' />
25
+ </Layout.Main>
26
+ );
27
+ };
28
+
29
+ export default BlueprintArticle;
@@ -4,24 +4,26 @@
4
4
 
5
5
  import { type Extension, Prec } from '@codemirror/state';
6
6
  import { keymap } from '@codemirror/view';
7
- import { useRxValue } from '@effect-rx/rx-react';
7
+ import { useAtomValue } from '@effect-atom/atom-react';
8
8
  import { createContext } from '@radix-ui/react-context';
9
9
  import * as Array from 'effect/Array';
10
10
  import * as Option from 'effect/Option';
11
11
  import React, { type PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';
12
12
 
13
13
  import { Event } from '@dxos/async';
14
- import { Obj } from '@dxos/echo';
14
+ import { type Database, Obj } from '@dxos/echo';
15
15
  import { useVoiceInput } from '@dxos/plugin-transcription';
16
- import { type Space, getSpace, useQueue } from '@dxos/react-client/echo';
16
+ import { useQueue } from '@dxos/react-client/echo';
17
17
  import { useIdentity } from '@dxos/react-client/halo';
18
18
  import { Input, type ThemedClassName, useDynamicRef, useTranslation } from '@dxos/react-ui';
19
- import { ChatEditor, type ChatEditorController, type ChatEditorProps, references } from '@dxos/react-ui-chat';
20
- import { mx } from '@dxos/react-ui-theme';
21
- import { DataType } from '@dxos/schema';
19
+ import { ChatEditor, type ChatEditorController, type ChatEditorProps } from '@dxos/react-ui-chat';
20
+ import { type MarkdownStreamController } from '@dxos/react-ui-components';
21
+ import { MenuProvider, ToolbarMenu } from '@dxos/react-ui-menu';
22
+ import { Message } from '@dxos/types';
23
+ import { mx } from '@dxos/ui-theme';
22
24
  import { isTruthy } from '@dxos/util';
23
25
 
24
- import { useReferencesProvider } from '../../hooks';
26
+ import { useChatToolbarActions } from '../../hooks';
25
27
  import { meta } from '../../meta';
26
28
  import { type AiChatProcessor } from '../../processor';
27
29
  import { type Assistant } from '../../types';
@@ -33,11 +35,7 @@ import {
33
35
  ChatReferences,
34
36
  ChatStatusIndicator,
35
37
  } from '../ChatPrompt';
36
- import {
37
- type ChatThreadController,
38
- ChatThread as NaturalChatThread,
39
- type ChatThreadProps as NaturalChatThreadProps,
40
- } from '../ChatThread';
38
+ import { ChatThread as NaturalChatThread, type ChatThreadProps as NaturalChatThreadProps } from '../ChatThread';
41
39
 
42
40
  import { type ChatEvent } from './events';
43
41
 
@@ -50,9 +48,9 @@ import { type ChatEvent } from './events';
50
48
  type ChatContextValue = {
51
49
  debug?: boolean;
52
50
  event: Event<ChatEvent>;
53
- space: Space;
54
- chat: Assistant.Chat;
55
- messages: DataType.Message[];
51
+ db?: Database.Database;
52
+ chat?: Assistant.Chat;
53
+ messages: Message.Message[];
56
54
  processor: AiChatProcessor;
57
55
  };
58
56
 
@@ -62,27 +60,23 @@ export const [ChatContextProvider, useChatContext] = createContext<ChatContextVa
62
60
  // Root
63
61
  //
64
62
 
65
- type ChatRootProps = ThemedClassName<
66
- PropsWithChildren<
67
- Pick<ChatContextValue, 'chat' | 'processor'> & {
68
- onEvent?: (event: ChatEvent) => void;
69
- }
70
- >
63
+ type ChatRootProps = PropsWithChildren<
64
+ Pick<ChatContextValue, 'db' | 'chat' | 'processor'> & {
65
+ onEvent?: (event: ChatEvent) => void;
66
+ }
71
67
  >;
72
68
 
73
- const ChatRoot = ({ classNames, children, chat, processor, onEvent, ...props }: ChatRootProps) => {
69
+ const ChatRoot = ({ children, chat, processor, onEvent, ...props }: ChatRootProps) => {
74
70
  const [debug, setDebug] = useState(false);
75
- const space = getSpace(chat);
76
-
77
- // Messages.
78
- const queue = useQueue<DataType.Message>(chat?.queue.dxn);
79
- const pending = useRxValue(processor.messages);
80
- const streaming = useRxValue(processor.streaming);
71
+ const pending = useAtomValue(processor.messages);
72
+ const streaming = useAtomValue(processor.streaming);
81
73
  const lastPrompt = useRef<string | undefined>(undefined);
82
74
 
75
+ // Messages.
76
+ const queue = useQueue<Message.Message>(chat?.queue.dxn);
83
77
  const messages = useMemo(() => {
84
- const queueMessages = queue?.objects?.filter(Obj.instanceOf(DataType.Message)) ?? [];
85
- return Array.dedupeWith([...queueMessages, ...pending], (a, b) => a.id === b.id);
78
+ const queueMessages = queue?.objects?.filter(Obj.instanceOf(Message.Message)) ?? [];
79
+ return Array.dedupeWith([...queueMessages, ...pending], ({ id: a }, { id: b }) => a === b);
86
80
  }, [queue?.objects, pending]);
87
81
 
88
82
  // Events.
@@ -120,37 +114,100 @@ const ChatRoot = ({ classNames, children, chat, processor, onEvent, ...props }:
120
114
  }
121
115
  break;
122
116
  }
123
-
124
- default: {
125
- onEvent?.(ev);
126
- }
127
117
  }
118
+
119
+ onEvent?.(ev);
128
120
  });
129
121
  }, [event, processor, streaming, onEvent]);
130
122
 
131
- if (!space) {
132
- return null;
133
- }
123
+ const db = props.db ?? (chat && Obj.getDatabase(chat));
134
124
 
135
125
  return (
136
126
  <ChatContextProvider
137
127
  debug={debug}
138
128
  event={event}
129
+ db={db}
139
130
  chat={chat}
140
- space={space}
141
131
  messages={messages}
142
132
  processor={processor}
143
133
  {...props}
144
134
  >
145
- <div role='none' className={mx('flex flex-col bs-full is-full', classNames)}>
146
- {children}
147
- </div>
135
+ {children}
148
136
  </ChatContextProvider>
149
137
  );
150
138
  };
151
139
 
152
140
  ChatRoot.displayName = 'Chat.Root';
153
141
 
142
+ //
143
+ // Viewport
144
+ //
145
+
146
+ type ChatViewportProps = ThemedClassName<PropsWithChildren>;
147
+
148
+ const ChatViewport = ({ classNames, children }: ChatViewportProps) => {
149
+ return (
150
+ <div role='none' className={mx('flex flex-col bs-full is-full', classNames)}>
151
+ {children}
152
+ </div>
153
+ );
154
+ };
155
+
156
+ //
157
+ // Thread
158
+ //
159
+
160
+ type ChatThreadProps = Omit<NaturalChatThreadProps, 'identity' | 'messages' | 'tools'>;
161
+
162
+ const ChatThread = (props: ChatThreadProps) => {
163
+ const { debug, event, messages, processor } = useChatContext(ChatThread.displayName);
164
+ const identity = useIdentity();
165
+ const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);
166
+
167
+ const controllerRef = useRef<MarkdownStreamController | null>(null);
168
+ useEffect(() => {
169
+ return event.on((event) => {
170
+ switch (event.type) {
171
+ case 'submit':
172
+ case 'scroll-to-bottom':
173
+ controllerRef.current?.scrollToBottom();
174
+ break;
175
+ case 'nav-previous':
176
+ controllerRef.current?.navigatePrevious();
177
+ break;
178
+ case 'nav-next':
179
+ controllerRef.current?.navigateNext();
180
+ break;
181
+ }
182
+ });
183
+ }, [event]);
184
+
185
+ const handleEvent = useCallback<NonNullable<NaturalChatThreadProps['onEvent']>>(
186
+ (ev) => {
187
+ event.emit(ev);
188
+ },
189
+ [event],
190
+ );
191
+
192
+ if (!identity) {
193
+ return null;
194
+ }
195
+
196
+ return (
197
+ <NaturalChatThread
198
+ {...props}
199
+ identity={identity}
200
+ messages={messages}
201
+ error={error}
202
+ debug={debug}
203
+ onEvent={handleEvent}
204
+ ref={controllerRef}
205
+ />
206
+ );
207
+ };
208
+
209
+ ChatThread.displayName = 'Chat.Thread';
210
+
154
211
  //
155
212
  // Prompt
156
213
  //
@@ -181,11 +238,11 @@ const ChatPrompt = ({
181
238
  onOnlineChange,
182
239
  }: ChatPromptProps) => {
183
240
  const { t } = useTranslation(meta.id);
184
- const { space, event, processor } = useChatContext(ChatPrompt.displayName);
241
+ const { db, processor, event } = useChatContext(ChatPrompt.displayName);
185
242
 
186
- const error = useRxValue(processor.error).pipe(Option.getOrUndefined);
187
- const streaming = useRxValue(processor.streaming);
188
- const active = useRxValue(processor.active);
243
+ const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);
244
+ const streaming = useAtomValue(processor.streaming);
245
+ const active = useAtomValue(processor.active);
189
246
  const activeRef = useDynamicRef(active);
190
247
 
191
248
  const editorRef = useRef<ChatEditorController>(null);
@@ -218,43 +275,46 @@ const ChatPrompt = ({
218
275
  },
219
276
  });
220
277
 
221
- // TODO(burdon): Reconcile with object tags.
222
- const referencesProvider = useReferencesProvider(space);
223
278
  const extensions = useMemo<Extension[]>(() => {
224
279
  return [
225
- referencesProvider && references({ provider: referencesProvider }),
226
280
  Prec.highest(
227
- keymap.of(
228
- [
229
- {
230
- key: 'cmd-d',
231
- preventDefault: true,
232
- run: () => {
233
- event.emit({ type: 'toggle-debug' });
234
- return true;
235
- },
281
+ keymap.of([
282
+ {
283
+ key: 'Mod-d',
284
+ preventDefault: true,
285
+ run: () => {
286
+ event.emit({ type: 'toggle-debug' });
287
+ return true;
236
288
  },
237
- expandable && {
238
- key: 'cmd-ArrowUp',
239
- preventDefault: true,
240
- run: () => {
241
- event.emit({ type: 'thread-open' });
242
- return true;
243
- },
289
+ },
290
+ {
291
+ key: 'Mod-ArrowUp',
292
+ preventDefault: true,
293
+ run: () => {
294
+ event.emit({ type: 'nav-previous' });
295
+ return true;
244
296
  },
245
- expandable && {
246
- key: 'cmd-ArrowDown',
247
- preventDefault: true,
248
- run: () => {
249
- event.emit({ type: 'thread-close' });
250
- return true;
251
- },
297
+ shift: () => {
298
+ event.emit({ type: 'thread-open' });
299
+ return true;
252
300
  },
253
- ].filter(isTruthy),
254
- ),
301
+ },
302
+ {
303
+ key: 'Mod-ArrowDown',
304
+ preventDefault: true,
305
+ run: () => {
306
+ event.emit({ type: 'nav-next' });
307
+ return true;
308
+ },
309
+ shift: () => {
310
+ event.emit({ type: 'thread-close' });
311
+ return true;
312
+ },
313
+ },
314
+ ]),
255
315
  ),
256
316
  ].filter(isTruthy);
257
- }, [event, expandable, referencesProvider]);
317
+ }, [event, expandable]);
258
318
 
259
319
  const handleSubmit = useCallback<NonNullable<ChatEditorProps['onSubmit']>>(
260
320
  (text) => {
@@ -278,15 +338,13 @@ const ChatPrompt = ({
278
338
  role='group'
279
339
  className={mx(
280
340
  'flex flex-col is-full density-fine',
281
- outline && [
282
- 'p-2 bg-groupSurface border border-subduedSeparator transition transition-border [&:has(.cm-content:focus)]:border-separator rounded',
283
- ],
341
+ outline &&
342
+ 'bg-groupSurface border border-subduedSeparator transition transition-border [&:has(.cm-content:focus)]:border-separator rounded',
284
343
  classNames,
285
344
  )}
286
345
  >
287
- <div role='none' className='flex gap-2'>
346
+ <div role='none' className='flex p-2 gap-2'>
288
347
  <ChatStatusIndicator classNames='p-1' preset={preset} error={error} processing={streaming} />
289
-
290
348
  <ChatEditor
291
349
  ref={editorRef}
292
350
  autoFocus
@@ -298,10 +356,10 @@ const ChatPrompt = ({
298
356
  />
299
357
  </div>
300
358
 
301
- {settings && (
302
- <div role='none' className='flex pbs-2 items-center'>
359
+ {db && settings && (
360
+ <div role='none' className='flex items-center overflow-hidden'>
303
361
  <ChatOptions
304
- space={space}
362
+ db={db}
305
363
  blueprintRegistry={processor.blueprintRegistry}
306
364
  context={processor.context}
307
365
  preset={preset}
@@ -309,8 +367,8 @@ const ChatPrompt = ({
309
367
  onPresetChange={onPresetChange}
310
368
  />
311
369
 
312
- <div role='none' className='pli-cardSpacingChrome grow'>
313
- <ChatReferences space={space} context={processor.context} />
370
+ <div role='none' className='flex grow overflow-x-auto scrollbar-none'>
371
+ <ChatReferences db={db} context={processor.context} />
314
372
  </div>
315
373
 
316
374
  <ChatActions
@@ -320,10 +378,11 @@ const ChatPrompt = ({
320
378
  processing={streaming}
321
379
  onEvent={handleEvent}
322
380
  >
381
+ {/* TODO(burdon): Move offline switch into dialog. */}
323
382
  {online !== undefined && (
324
383
  <Input.Root>
325
384
  <Input.Label srOnly>{t('online switch label')}</Input.Label>
326
- <Input.Switch classNames='mis-2 mie-2' checked={online} onCheckedChange={onOnlineChange} />
385
+ <Input.Switch classNames='mli-2' checked={online} onCheckedChange={onOnlineChange} />
327
386
  </Input.Root>
328
387
  )}
329
388
  </ChatActions>
@@ -336,52 +395,26 @@ const ChatPrompt = ({
336
395
  ChatPrompt.displayName = 'Chat.Prompt';
337
396
 
338
397
  //
339
- // Thread
398
+ // Toolbar
340
399
  //
341
400
 
342
- type ChatThreadProps = Omit<NaturalChatThreadProps, 'identity' | 'messages' | 'tools'>;
401
+ type ChatToolbarProps = ThemedClassName<{ companionTo?: Obj.Unknown }>;
343
402
 
344
- const ChatThread = (props: ChatThreadProps) => {
345
- const { event, messages, processor } = useChatContext(ChatThread.displayName);
346
- const identity = useIdentity();
347
- const error = useRxValue(processor.error).pipe(Option.getOrUndefined);
348
-
349
- const scrollerRef = useRef<ChatThreadController | null>(null);
350
- useEffect(() => {
351
- return event.on((event) => {
352
- switch (event.type) {
353
- case 'submit':
354
- case 'scroll-to-bottom':
355
- scrollerRef.current?.scrollToBottom();
356
- break;
357
- }
358
- });
359
- }, [event]);
360
-
361
- const handleEvent = useCallback<NonNullable<NaturalChatThreadProps['onEvent']>>(
362
- (ev) => {
363
- event.emit(ev);
364
- },
365
- [event],
366
- );
367
-
368
- if (!identity) {
369
- return null;
370
- }
403
+ const ChatToolbar = ({ classNames, companionTo }: ChatToolbarProps) => {
404
+ const { chat } = useChatContext(ChatToolbar.displayName);
405
+ const menu = useChatToolbarActions({ chat, companionTo });
371
406
 
372
407
  return (
373
- <NaturalChatThread
374
- {...props}
375
- ref={scrollerRef}
376
- identity={identity}
377
- messages={messages}
378
- error={error}
379
- onEvent={handleEvent}
380
- />
408
+ <MenuProvider
409
+ {...menu}
410
+ attendableId={companionTo ? Obj.getDXN(companionTo).toString() : chat ? Obj.getDXN(chat).toString() : ''}
411
+ >
412
+ <ToolbarMenu classNames={classNames} textBlockWidth />
413
+ </MenuProvider>
381
414
  );
382
415
  };
383
416
 
384
- ChatThread.displayName = 'Chat.Thread';
417
+ ChatToolbar.displayName = 'Chat.Toolbar';
385
418
 
386
419
  //
387
420
  // Chat
@@ -389,8 +422,10 @@ ChatThread.displayName = 'Chat.Thread';
389
422
 
390
423
  export const Chat = {
391
424
  Root: ChatRoot,
392
- Prompt: ChatPrompt,
425
+ Viewport: ChatViewport,
393
426
  Thread: ChatThread,
427
+ Prompt: ChatPrompt,
428
+ Toolbar: ChatToolbar,
394
429
  };
395
430
 
396
- export type { ChatRootProps, ChatThreadProps, ChatPromptProps, ChatEvent };
431
+ export type { ChatRootProps, ChatViewportProps, ChatThreadProps, ChatPromptProps, ChatToolbarProps, ChatEvent };
@@ -31,7 +31,7 @@ export type ChatEvent =
31
31
  }
32
32
  | {
33
33
  type: 'add';
34
- object: Obj.Any;
34
+ object: Obj.Unknown;
35
35
  }
36
36
  //
37
37
  // UX
@@ -43,6 +43,12 @@ export type ChatEvent =
43
43
  | {
44
44
  type: 'scroll-to-bottom';
45
45
  }
46
+ | {
47
+ type: 'nav-previous';
48
+ }
49
+ | {
50
+ type: 'nav-next';
51
+ }
46
52
  | {
47
53
  type: 'thread-open';
48
54
  }