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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs +158 -0
  4. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-YBJBIVUZ.mjs → ChatContainer-2W6FNSJD.mjs} +22 -20
  6. package/dist/lib/browser/ChatContainer-2W6FNSJD.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-MTPJLEHM.mjs → ChatDialog-XQ3KDYWE.mjs} +12 -11
  8. package/dist/lib/browser/ChatDialog-XQ3KDYWE.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-Q7JYGFQV.mjs +59 -0
  10. package/dist/lib/browser/PromptArticle-Q7JYGFQV.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +19 -0
  12. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +7 -0
  13. package/dist/lib/browser/{app-graph-builder-7AAWTWGA.mjs → app-graph-builder-LM6GVHQO.mjs} +67 -21
  14. package/dist/lib/browser/app-graph-builder-LM6GVHQO.mjs.map +7 -0
  15. package/dist/lib/browser/{blueprint-definition-CRZPIA5A.mjs → blueprint-definition-VBEOXNBS.mjs} +4 -4
  16. package/dist/lib/browser/chunk-2BOE3OTW.mjs +262 -0
  17. package/dist/lib/browser/chunk-2BOE3OTW.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-SMIVXXAI.mjs → chunk-5JZRYQZL.mjs} +52 -25
  19. package/dist/lib/browser/chunk-5JZRYQZL.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs +335 -0
  21. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-IJAJRAR7.mjs → chunk-LRE4VEZV.mjs} +2 -4
  23. package/dist/lib/browser/chunk-LRE4VEZV.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-OYFQS7JM.mjs → chunk-NC2QNMBF.mjs} +60 -41
  25. package/dist/lib/browser/chunk-NC2QNMBF.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-PWSTPQUY.mjs +1929 -0
  27. package/dist/lib/browser/chunk-PWSTPQUY.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-WBG5PTSX.mjs +23 -0
  29. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +7 -0
  30. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
  31. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
  32. package/dist/lib/browser/index.mjs +142 -103
  33. package/dist/lib/browser/index.mjs.map +4 -4
  34. package/dist/lib/browser/{intent-resolver-BQO5SVGI.mjs → intent-resolver-EEYS2GJF.mjs} +62 -31
  35. package/dist/lib/browser/intent-resolver-EEYS2GJF.mjs.map +7 -0
  36. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs +17 -0
  37. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs.map +7 -0
  38. package/dist/lib/browser/meta.json +1 -1
  39. package/dist/lib/browser/{react-surface-VNCD2H7C.mjs → react-surface-ECKZNDSU.mjs} +24 -35
  40. package/dist/lib/browser/react-surface-ECKZNDSU.mjs.map +7 -0
  41. package/dist/lib/browser/repair-3MZXLUHO.mjs +44 -0
  42. package/dist/lib/browser/repair-3MZXLUHO.mjs.map +7 -0
  43. package/dist/lib/browser/{settings-36V3VUMW.mjs → settings-HD5WA24I.mjs} +5 -5
  44. package/dist/lib/browser/{settings-36V3VUMW.mjs.map → settings-HD5WA24I.mjs.map} +1 -1
  45. package/dist/lib/browser/{state-D5IVKNYG.mjs → state-GG7Z3NB7.mjs} +9 -5
  46. package/dist/lib/browser/{state-D5IVKNYG.mjs.map → state-GG7Z3NB7.mjs.map} +3 -3
  47. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  48. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  49. package/dist/lib/browser/types/index.mjs +2 -2
  50. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs +37 -0
  51. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs.map +7 -0
  52. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs +159 -0
  53. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs.map +7 -0
  54. package/dist/lib/node-esm/{ChatContainer-TUCITJJW.mjs → ChatContainer-CTUNUEU3.mjs} +22 -20
  55. package/dist/lib/node-esm/ChatContainer-CTUNUEU3.mjs.map +7 -0
  56. package/dist/lib/node-esm/{ChatDialog-JLM7RDZQ.mjs → ChatDialog-X42ASXQD.mjs} +12 -11
  57. package/dist/lib/node-esm/ChatDialog-X42ASXQD.mjs.map +7 -0
  58. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.mjs +60 -0
  59. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.mjs.map +7 -0
  60. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
  61. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
  62. package/dist/lib/node-esm/{app-graph-builder-PNAFQUYT.mjs → app-graph-builder-6XUAGTRS.mjs} +67 -21
  63. package/dist/lib/node-esm/app-graph-builder-6XUAGTRS.mjs.map +7 -0
  64. package/dist/lib/node-esm/{blueprint-definition-275J3XL2.mjs → blueprint-definition-RDCLLIQH.mjs} +4 -4
  65. package/dist/lib/node-esm/{chunk-CAQKGW3B.mjs → chunk-25GMMNY5.mjs} +60 -41
  66. package/dist/lib/node-esm/chunk-25GMMNY5.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs +264 -0
  68. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs +336 -0
  70. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-7YOGZI66.mjs → chunk-E4JSYCWZ.mjs} +52 -25
  72. package/dist/lib/node-esm/chunk-E4JSYCWZ.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-WE6KTH72.mjs +25 -0
  74. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-YPXEA46Q.mjs → chunk-YWFWT57N.mjs} +2 -4
  76. package/dist/lib/node-esm/chunk-YWFWT57N.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-Z37USO4K.mjs +1930 -0
  78. package/dist/lib/node-esm/chunk-Z37USO4K.mjs.map +7 -0
  79. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
  80. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
  81. package/dist/lib/node-esm/index.mjs +142 -103
  82. package/dist/lib/node-esm/index.mjs.map +4 -4
  83. package/dist/lib/node-esm/{intent-resolver-FIS3T5KP.mjs → intent-resolver-4SRYLDK5.mjs} +62 -31
  84. package/dist/lib/node-esm/intent-resolver-4SRYLDK5.mjs.map +7 -0
  85. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs +18 -0
  86. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs.map +7 -0
  87. package/dist/lib/node-esm/meta.json +1 -1
  88. package/dist/lib/node-esm/{react-surface-4NLRKNBU.mjs → react-surface-NLIG5VAI.mjs} +24 -35
  89. package/dist/lib/node-esm/react-surface-NLIG5VAI.mjs.map +7 -0
  90. package/dist/lib/node-esm/repair-RER5H7Y6.mjs +45 -0
  91. package/dist/lib/node-esm/repair-RER5H7Y6.mjs.map +7 -0
  92. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs → settings-YJQVKHH5.mjs} +5 -5
  93. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs.map → settings-YJQVKHH5.mjs.map} +1 -1
  94. package/dist/lib/node-esm/{state-4VLKPLW3.mjs → state-FSUHFMDM.mjs} +9 -5
  95. package/dist/lib/node-esm/{state-4VLKPLW3.mjs.map → state-FSUHFMDM.mjs.map} +3 -3
  96. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  97. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs.map +7 -0
  98. package/dist/lib/node-esm/types/index.mjs +2 -2
  99. package/dist/types/src/AssistantPlugin.d.ts +1 -1
  100. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/ai-service.d.ts +2 -3
  102. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -1
  105. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/capabilities.d.ts +2 -11
  107. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/index.d.ts +1 -0
  110. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/repair.d.ts +4 -0
  115. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/toolkit.d.ts +1 -1
  118. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  119. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  120. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  121. package/dist/types/src/components/Chat/Chat.d.ts +22 -11
  122. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  123. package/dist/types/src/components/Chat/events.d.ts +4 -0
  124. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  125. package/dist/types/src/components/ChatCompanion.d.ts +2 -2
  126. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
  127. package/dist/types/src/components/ChatContainer.d.ts +7 -4
  128. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  130. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  131. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  132. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  133. package/dist/types/src/components/ChatThread/ChatThread.d.ts +10 -8
  134. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  135. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +140 -77
  136. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  137. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  138. package/dist/types/src/components/ChatThread/reducers.d.ts +5 -5
  139. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -1
  140. package/dist/types/src/components/ChatThread/registry.d.ts +11 -0
  141. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  142. package/dist/types/src/components/ChatThread/sync.d.ts +42 -0
  143. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  144. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  145. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  146. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  147. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  148. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  149. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  150. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +121 -62
  151. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  152. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -1
  153. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  154. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +121 -62
  155. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  157. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  158. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  159. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  160. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  161. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +21 -0
  162. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  163. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  164. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  165. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  166. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  167. package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -2
  168. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  169. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +121 -62
  170. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/index.d.ts +4 -9
  172. package/dist/types/src/components/index.d.ts.map +1 -1
  173. package/dist/types/src/functions/analysis.d.ts +1 -1
  174. package/dist/types/src/functions/analysis.d.ts.map +1 -1
  175. package/dist/types/src/functions/index.d.ts +2 -2
  176. package/dist/types/src/functions/index.d.ts.map +1 -1
  177. package/dist/types/src/functions/{list.d.ts → object-list.d.ts} +2 -2
  178. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  179. package/dist/types/src/functions/{load.d.ts → object-load.d.ts} +2 -2
  180. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  181. package/dist/types/src/hooks/index.d.ts +2 -4
  182. package/dist/types/src/hooks/index.d.ts.map +1 -1
  183. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +2 -1
  184. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  185. package/dist/types/src/hooks/useChatProcessor.d.ts +5 -3
  186. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  187. package/dist/types/src/hooks/useChatServices.d.ts +2 -2
  188. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  190. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  191. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  192. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  193. package/dist/types/src/hooks/useFilteredTypes.d.ts +4 -0
  194. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  195. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  196. package/dist/types/src/index.d.ts +2 -0
  197. package/dist/types/src/index.d.ts.map +1 -1
  198. package/dist/types/src/meta.d.ts +1 -2
  199. package/dist/types/src/meta.d.ts.map +1 -1
  200. package/dist/types/src/processor/index.d.ts +1 -0
  201. package/dist/types/src/processor/index.d.ts.map +1 -1
  202. package/dist/types/src/processor/presets.d.ts +1 -1
  203. package/dist/types/src/processor/presets.d.ts.map +1 -1
  204. package/dist/types/src/processor/processor.d.ts +17 -23
  205. package/dist/types/src/processor/processor.d.ts.map +1 -1
  206. package/dist/types/src/processor/update-name.d.ts +10 -0
  207. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  208. package/dist/types/src/queue-logger.d.ts.map +1 -1
  209. package/dist/types/src/testing/index.d.ts +1 -2
  210. package/dist/types/src/testing/index.d.ts.map +1 -1
  211. package/dist/types/src/testing/test-generator.d.ts +7 -0
  212. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  213. package/dist/types/src/testing/test-services.d.ts +2 -2
  214. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  215. package/dist/types/src/translations.d.ts +246 -27
  216. package/dist/types/src/translations.d.ts.map +1 -1
  217. package/dist/types/src/types/Assistant.d.ts +16 -13
  218. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  219. package/dist/types/src/types/AssistantAction.d.ts +38 -16
  220. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  221. package/dist/types/src/types/service.d.ts +129 -82
  222. package/dist/types/src/types/service.d.ts.map +1 -1
  223. package/dist/types/tsconfig.tsbuildinfo +1 -1
  224. package/package.json +96 -111
  225. package/src/AssistantPlugin.tsx +138 -134
  226. package/src/capabilities/ai-service.ts +6 -7
  227. package/src/capabilities/app-graph-builder.ts +69 -21
  228. package/src/capabilities/blueprint-definition.ts +39 -15
  229. package/src/capabilities/capabilities.ts +2 -16
  230. package/src/capabilities/edge-model-resolver.ts +5 -7
  231. package/src/capabilities/index.ts +1 -0
  232. package/src/capabilities/intent-resolver.ts +61 -20
  233. package/src/capabilities/local-model-resolver.ts +7 -9
  234. package/src/capabilities/react-surface.tsx +16 -20
  235. package/src/capabilities/repair.ts +49 -0
  236. package/src/capabilities/state.ts +2 -0
  237. package/src/capabilities/toolkit.ts +9 -155
  238. package/src/components/BlueprintArticle.tsx +29 -0
  239. package/src/components/Chat/Chat.tsx +177 -140
  240. package/src/components/Chat/events.ts +6 -0
  241. package/src/components/ChatCompanion.tsx +93 -49
  242. package/src/components/ChatContainer.tsx +27 -17
  243. package/src/components/ChatDialog.tsx +17 -10
  244. package/src/components/ChatProgress/ChatProgress.tsx +3 -4
  245. package/src/components/ChatPrompt/ChatActions.tsx +2 -4
  246. package/src/components/ChatPrompt/ChatOptions.tsx +48 -47
  247. package/src/components/ChatPrompt/ChatReferences.tsx +2 -2
  248. package/src/components/ChatThread/ChatThread.stories.tsx +90 -225
  249. package/src/components/ChatThread/ChatThread.tsx +59 -51
  250. package/src/components/ChatThread/Link.tsx +11 -8
  251. package/src/components/ChatThread/reducers.ts +6 -6
  252. package/src/components/ChatThread/registry.tsx +174 -0
  253. package/src/components/ChatThread/sync.test.ts +89 -0
  254. package/src/components/ChatThread/sync.ts +148 -0
  255. package/src/components/ChatThread/testing/thread.md +37 -0
  256. package/src/components/PromptArticle.tsx +51 -0
  257. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +15 -7
  258. package/src/components/TemplateEditor/TemplateEditor.tsx +21 -12
  259. package/src/components/TemplateEditor/TemplateForm.stories.tsx +4 -6
  260. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  261. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  262. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  263. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  264. package/src/components/{ChatThread → ToolBlock}/ToolBlock.tsx +46 -50
  265. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  266. package/src/components/ToolBlock/index.ts +6 -0
  267. package/src/components/Toolbox/Toolbox.stories.tsx +5 -8
  268. package/src/components/Toolbox/Toolbox.tsx +5 -5
  269. package/src/components/index.ts +2 -5
  270. package/src/functions/analysis.ts +5 -3
  271. package/src/functions/index.ts +2 -2
  272. package/src/functions/{list.ts → object-list.ts} +6 -4
  273. package/src/functions/{load.ts → object-load.ts} +10 -8
  274. package/src/hooks/index.ts +2 -4
  275. package/src/hooks/useBlueprintRegistry.ts +19 -4
  276. package/src/hooks/useChatProcessor.ts +23 -15
  277. package/src/hooks/useChatServices.ts +29 -42
  278. package/src/hooks/useChatToolbarActions.ts +122 -0
  279. package/src/hooks/useContextBinder.ts +19 -7
  280. package/src/hooks/useContextObjects.ts +1 -1
  281. package/src/hooks/{useItemTypes.ts → useFilteredTypes.ts} +8 -7
  282. package/src/hooks/useReferencesProvider.ts +2 -1
  283. package/src/index.ts +2 -0
  284. package/src/meta.ts +9 -6
  285. package/src/processor/index.ts +1 -0
  286. package/src/processor/presets.ts +2 -2
  287. package/src/processor/processor.test.ts +21 -27
  288. package/src/processor/processor.ts +47 -74
  289. package/src/processor/update-name.ts +56 -0
  290. package/src/queue-logger.ts +9 -13
  291. package/src/testing/index.ts +1 -2
  292. package/src/testing/test-generator.ts +261 -0
  293. package/src/testing/test-services.ts +2 -8
  294. package/src/translations.ts +30 -18
  295. package/src/types/Assistant.ts +11 -9
  296. package/src/types/AssistantAction.ts +23 -6
  297. package/src/types/service.ts +17 -9
  298. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs +0 -29
  299. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs.map +0 -7
  300. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs +0 -126
  301. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs.map +0 -7
  302. package/dist/lib/browser/ChatContainer-YBJBIVUZ.mjs.map +0 -7
  303. package/dist/lib/browser/ChatDialog-MTPJLEHM.mjs.map +0 -7
  304. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs +0 -150
  305. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +0 -7
  306. package/dist/lib/browser/ai-service-NRZPTUHO.mjs +0 -22
  307. package/dist/lib/browser/ai-service-NRZPTUHO.mjs.map +0 -7
  308. package/dist/lib/browser/app-graph-builder-7AAWTWGA.mjs.map +0 -7
  309. package/dist/lib/browser/chunk-6QMISAU6.mjs +0 -167
  310. package/dist/lib/browser/chunk-6QMISAU6.mjs.map +0 -7
  311. package/dist/lib/browser/chunk-CFXXQM25.mjs +0 -182
  312. package/dist/lib/browser/chunk-CFXXQM25.mjs.map +0 -7
  313. package/dist/lib/browser/chunk-IJAJRAR7.mjs.map +0 -7
  314. package/dist/lib/browser/chunk-O4LUJEDV.mjs +0 -20
  315. package/dist/lib/browser/chunk-O4LUJEDV.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-OYFQS7JM.mjs.map +0 -7
  317. package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-V5H5CCZA.mjs +0 -218
  319. package/dist/lib/browser/chunk-V5H5CCZA.mjs.map +0 -7
  320. package/dist/lib/browser/chunk-XL557TXF.mjs +0 -2332
  321. package/dist/lib/browser/chunk-XL557TXF.mjs.map +0 -7
  322. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs +0 -22
  323. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs.map +0 -7
  324. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs.map +0 -7
  325. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs +0 -21
  326. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs.map +0 -7
  327. package/dist/lib/browser/react-surface-VNCD2H7C.mjs.map +0 -7
  328. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs +0 -191
  329. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs.map +0 -7
  330. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs +0 -30
  331. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs.map +0 -7
  332. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs +0 -127
  333. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs.map +0 -7
  334. package/dist/lib/node-esm/ChatContainer-TUCITJJW.mjs.map +0 -7
  335. package/dist/lib/node-esm/ChatDialog-JLM7RDZQ.mjs.map +0 -7
  336. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs +0 -151
  337. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +0 -7
  338. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs +0 -23
  339. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs.map +0 -7
  340. package/dist/lib/node-esm/app-graph-builder-PNAFQUYT.mjs.map +0 -7
  341. package/dist/lib/node-esm/chunk-2X6VEO32.mjs +0 -2333
  342. package/dist/lib/node-esm/chunk-2X6VEO32.mjs.map +0 -7
  343. package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +0 -7
  344. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs.map +0 -7
  345. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs +0 -183
  346. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs.map +0 -7
  347. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs +0 -168
  348. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs.map +0 -7
  349. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs +0 -219
  350. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs.map +0 -7
  351. package/dist/lib/node-esm/chunk-VFY2JG62.mjs +0 -22
  352. package/dist/lib/node-esm/chunk-VFY2JG62.mjs.map +0 -7
  353. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs.map +0 -7
  354. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs +0 -23
  355. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs.map +0 -7
  356. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs.map +0 -7
  357. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs +0 -22
  358. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs.map +0 -7
  359. package/dist/lib/node-esm/react-surface-4NLRKNBU.mjs.map +0 -7
  360. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs +0 -192
  361. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs.map +0 -7
  362. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  363. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  364. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -33
  365. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  366. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  367. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  368. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  369. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  370. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  371. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  372. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  373. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  374. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -263
  375. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  376. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  377. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  378. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  379. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -4
  380. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  381. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  382. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  383. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  384. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  385. package/dist/types/src/execution-graph/execution-graph.d.ts +0 -21
  386. package/dist/types/src/execution-graph/execution-graph.d.ts.map +0 -1
  387. package/dist/types/src/execution-graph/index.d.ts +0 -2
  388. package/dist/types/src/execution-graph/index.d.ts.map +0 -1
  389. package/dist/types/src/functions/list.d.ts.map +0 -1
  390. package/dist/types/src/functions/load.d.ts.map +0 -1
  391. package/dist/types/src/hooks/useExecutionGraph.d.ts +0 -7
  392. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +0 -1
  393. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  394. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  395. package/dist/types/src/hooks/useMatcherExtension.d.ts +0 -3
  396. package/dist/types/src/hooks/useMatcherExtension.d.ts.map +0 -1
  397. package/dist/types/src/hooks/useResolveRef.d.ts +0 -4
  398. package/dist/types/src/hooks/useResolveRef.d.ts.map +0 -1
  399. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  400. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  401. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  402. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  403. package/dist/types/src/parser/index.d.ts +0 -4
  404. package/dist/types/src/parser/index.d.ts.map +0 -1
  405. package/dist/types/src/parser/query-parser.d.ts +0 -15
  406. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  407. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  408. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  409. package/dist/types/src/parser/types.d.ts +0 -24
  410. package/dist/types/src/parser/types.d.ts.map +0 -1
  411. package/dist/types/src/stories/Chat.stories.d.ts +0 -26
  412. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  413. package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -4
  414. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
  415. package/dist/types/src/stories/components/ChatContainer.d.ts +0 -4
  416. package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
  417. package/dist/types/src/stories/components/CommentsContainer.d.ts +0 -4
  418. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +0 -1
  419. package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
  420. package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
  421. package/dist/types/src/stories/components/LoggingContainer.d.ts +0 -4
  422. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +0 -1
  423. package/dist/types/src/stories/components/MessageContainer.d.ts +0 -4
  424. package/dist/types/src/stories/components/MessageContainer.d.ts.map +0 -1
  425. package/dist/types/src/stories/components/SurfaceContainer.d.ts +0 -8
  426. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +0 -1
  427. package/dist/types/src/stories/components/TasksContainer.d.ts +0 -4
  428. package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
  429. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +0 -3
  430. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +0 -1
  431. package/dist/types/src/stories/components/index.d.ts +0 -11
  432. package/dist/types/src/stories/components/index.d.ts.map +0 -1
  433. package/dist/types/src/stories/components/types.d.ts +0 -7
  434. package/dist/types/src/stories/components/types.d.ts.map +0 -1
  435. package/dist/types/src/stories/testing/data.d.ts +0 -5
  436. package/dist/types/src/stories/testing/data.d.ts.map +0 -1
  437. package/dist/types/src/stories/testing/index.d.ts +0 -3
  438. package/dist/types/src/stories/testing/index.d.ts.map +0 -1
  439. package/dist/types/src/stories/testing/testing.d.ts +0 -44
  440. package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
  441. package/dist/types/src/testing/test-data.d.ts +0 -4
  442. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  443. package/dist/types/src/testing/test-functions.d.ts +0 -6
  444. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  445. package/src/components/BlueprintContainer.tsx +0 -24
  446. package/src/components/ChatThread/ChatMessage.tsx +0 -334
  447. package/src/components/PromptSettings.tsx +0 -90
  448. package/src/components/SequenceContainer.tsx +0 -131
  449. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -33
  450. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  451. package/src/components/SequenceEditor/index.ts +0 -5
  452. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  453. package/src/components/Toolbar/Toolbar.tsx +0 -20
  454. package/src/components/Toolbar/index.ts +0 -5
  455. package/src/components/Toolbar/useChatToolbarActions.ts +0 -125
  456. package/src/execution-graph/execution-graph.ts +0 -211
  457. package/src/execution-graph/index.ts +0 -5
  458. package/src/hooks/useExecutionGraph.ts +0 -20
  459. package/src/hooks/useMatcherExtension.ts +0 -45
  460. package/src/hooks/useResolveRef.ts +0 -33
  461. package/src/parser/filter-generator.test.ts +0 -32
  462. package/src/parser/filter-generator.ts +0 -76
  463. package/src/parser/index.ts +0 -7
  464. package/src/parser/query-parser.test.ts +0 -139
  465. package/src/parser/query-parser.ts +0 -199
  466. package/src/parser/types.ts +0 -36
  467. package/src/stories/Chat.stories.tsx +0 -469
  468. package/src/stories/components/BlueprintContainer.tsx +0 -32
  469. package/src/stories/components/ChatContainer.tsx +0 -57
  470. package/src/stories/components/CommentsContainer.tsx +0 -25
  471. package/src/stories/components/GraphContainer.tsx +0 -118
  472. package/src/stories/components/LoggingContainer.tsx +0 -21
  473. package/src/stories/components/MessageContainer.tsx +0 -27
  474. package/src/stories/components/SurfaceContainer.tsx +0 -52
  475. package/src/stories/components/TasksContainer.tsx +0 -49
  476. package/src/stories/components/TokenManagerContainer.tsx +0 -14
  477. package/src/stories/components/index.ts +0 -15
  478. package/src/stories/components/types.ts +0 -11
  479. package/src/stories/testing/data.ts +0 -142
  480. package/src/stories/testing/index.ts +0 -6
  481. package/src/stories/testing/testing.tsx +0 -254
  482. package/src/testing/test-data.ts +0 -109
  483. package/src/testing/test-functions.ts +0 -16
  484. /package/dist/lib/browser/{blueprint-definition-CRZPIA5A.mjs.map → blueprint-definition-VBEOXNBS.mjs.map} +0 -0
  485. /package/dist/lib/node-esm/{blueprint-definition-275J3XL2.mjs.map → blueprint-definition-RDCLLIQH.mjs.map} +0 -0
  486. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -2,37 +2,33 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { AiTool, AiToolkit } from '@effect/ai';
5
+ import * as Tool from '@effect/ai/Tool';
6
+ import * as Toolkit from '@effect/ai/Toolkit';
6
7
  import { describe, it } from '@effect/vitest';
7
- import { Effect, Layer, Schema } from 'effect';
8
+ import * as Effect from 'effect/Effect';
9
+ import * as Layer from 'effect/Layer';
10
+ import * as Schema from 'effect/Schema';
8
11
 
9
12
  import { AiService } from '@dxos/ai';
10
13
  import { AiServiceTestingPreset } from '@dxos/ai/testing';
11
14
  import { AiConversation, makeToolExecutionServiceFromFunctions, makeToolResolverFromFunctions } from '@dxos/assistant';
12
- import { TestHelpers } from '@dxos/effect';
13
- import {
14
- ComputeEventLogger,
15
- CredentialsService,
16
- LocalFunctionExecutionService,
17
- QueueService,
18
- RemoteFunctionExecutionService,
19
- TracingService,
20
- } from '@dxos/functions';
21
- import { TestDatabaseLayer } from '@dxos/functions/testing';
22
- import { type DataType } from '@dxos/schema';
15
+ import { TestHelpers, acquireReleaseResource } from '@dxos/effect';
16
+ import { CredentialsService, QueueService, TracingService } from '@dxos/functions';
17
+ import { FunctionInvocationServiceLayerTestMocked, TestDatabaseLayer } from '@dxos/functions-runtime/testing';
18
+ import { type Message } from '@dxos/types';
23
19
 
24
20
  import { AiChatProcessor, type AiChatServices } from './processor';
25
21
 
26
- class TestToolkit extends AiToolkit.make(
27
- AiTool.make('random', {
22
+ const TestToolkit = Toolkit.make(
23
+ Tool.make('random', {
28
24
  description: 'Random number generator',
29
25
  parameters: {},
30
26
  success: Schema.Number,
31
27
  }),
32
- ) {}
28
+ );
33
29
 
34
30
  // TODO(burdon): Create minimal toolkit.
35
- const toolkit = AiToolkit.merge(TestToolkit) as AiToolkit.Any as AiToolkit.AiToolkit<AiTool.Any>;
31
+ const toolkit = Toolkit.merge(TestToolkit) as Toolkit.Toolkit<any>;
36
32
 
37
33
  // TODO(burdon): Explain structure.
38
34
  const TestServicesLayer = Layer.mergeAll(
@@ -43,31 +39,29 @@ const TestServicesLayer = Layer.mergeAll(
43
39
  // types: [],
44
40
  }),
45
41
  // CredentialsService.configuredLayer([{ service: 'exa.ai', apiKey: EXA_API_KEY }]),
46
- LocalFunctionExecutionService.layer,
47
- RemoteFunctionExecutionService.mockLayer,
42
+ FunctionInvocationServiceLayerTestMocked({ functions: [] }).pipe(Layer.provideMerge(TracingService.layerNoop)),
48
43
  );
49
44
 
50
45
  const TestLayer: Layer.Layer<AiChatServices, never, never> = Layer.mergeAll(
51
46
  AiService.model('@anthropic/claude-opus-4-0'),
52
47
  makeToolResolverFromFunctions([], toolkit),
53
- makeToolExecutionServiceFromFunctions([], toolkit, toolkit.toLayer({}) as any),
48
+ makeToolExecutionServiceFromFunctions(toolkit, toolkit.toLayer({}) as any),
54
49
  CredentialsService.layerFromDatabase(),
55
- ComputeEventLogger.layerFromTracing,
56
50
  ).pipe(Layer.provideMerge(TestServicesLayer), Layer.orDie);
57
51
 
58
52
  // TODO(burdon): Create actual test with mock LLM.
59
53
  describe('Chat processor', () => {
60
- it.effect(
54
+ it.scoped(
61
55
  'basic',
62
56
  Effect.fn(
63
57
  function* ({ expect }) {
64
- const services = TestLayer;
65
- const queue = yield* QueueService.createQueue<DataType.Message>();
66
- const conversation = new AiConversation({ queue });
67
- const processor = new AiChatProcessor(conversation, services);
58
+ const services = yield* Effect.runtime<AiChatServices>();
59
+ const queue = yield* QueueService.createQueue<Message.Message>();
60
+ const conversation = yield* acquireReleaseResource(() => new AiConversation(queue));
61
+ const processor = new AiChatProcessor(conversation, async () => services);
68
62
  const result = yield* Effect.promise(() => processor.request({ message: 'Hello' }));
69
63
  void processor.cancel();
70
- expect(processor.isRunning).to.be.false;
64
+ expect(processor.active).to.be.false;
71
65
  expect(result).to.exist;
72
66
  },
73
67
  Effect.provide(TestLayer),
@@ -2,8 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Registry, Rx } from '@effect-rx/rx-react';
6
- import { Cause, Effect, Exit, Fiber, Layer, Option } from 'effect';
5
+ import { Atom, Registry } from '@effect-atom/atom-react';
6
+ import * as Cause from 'effect/Cause';
7
+ import * as Effect from 'effect/Effect';
8
+ import * as Exit from 'effect/Exit';
9
+ import * as Fiber from 'effect/Fiber';
10
+ import * as Option from 'effect/Option';
11
+ import * as Runtime from 'effect/Runtime';
7
12
 
8
13
  import {
9
14
  AiService,
@@ -16,7 +21,6 @@ import {
16
21
  import {
17
22
  type AiConversation,
18
23
  type AiConversationRunParams,
19
- AiSession,
20
24
  ArtifactDiffResolver,
21
25
  GenerationObserver,
22
26
  createSystemPrompt,
@@ -27,21 +31,22 @@ import { throwCause } from '@dxos/effect';
27
31
  import {
28
32
  type CredentialsService,
29
33
  type DatabaseService,
34
+ type FunctionInvocationService,
30
35
  type QueueService,
31
- type RemoteFunctionExecutionService,
32
36
  type TracingService,
33
37
  } from '@dxos/functions';
34
38
  import { log } from '@dxos/log';
35
- import { type ContentBlock, DataType } from '@dxos/schema';
36
- import { trim } from '@dxos/util';
39
+ import { type ContentBlock, Message } from '@dxos/types';
37
40
 
38
41
  import { type Assistant } from '../types';
39
42
 
43
+ import { updateName } from './update-name';
44
+
40
45
  export type AiChatServices =
41
46
  | CredentialsService
42
47
  | DatabaseService
43
48
  | QueueService
44
- | RemoteFunctionExecutionService
49
+ | FunctionInvocationService
45
50
  | AiService.AiService
46
51
  | ToolExecutionService
47
52
  | ToolResolverService
@@ -72,7 +77,7 @@ export type AiRequest = {
72
77
  * Handles streaming responses from the conversation.
73
78
  */
74
79
  export class AiChatProcessor {
75
- private readonly _rx: Registry.Registry;
80
+ private readonly _registry: Registry.Registry;
76
81
 
77
82
  /** External observer. */
78
83
  private readonly _observer: GenerationObserver;
@@ -83,25 +88,20 @@ export class AiChatProcessor {
83
88
  /** Last request (for retries). */
84
89
  private _lastRequest: AiRequest | undefined;
85
90
 
86
- /**
87
- * Pending messages (incl. the current user request).
88
- */
89
- private readonly _pending = Rx.make<DataType.Message[]>([]);
91
+ /** Pending messages (incl. the current user request). */
92
+ private readonly _pending = Atom.make<Message.Message[]>([]);
90
93
 
91
- /**
92
- * Currently streaming message (from the AI service).
93
- */
94
- private readonly _streaming = Rx.make<Option.Option<DataType.Message>>(Option.none());
94
+ /** Currently streaming message (from the AI service). */
95
+ private readonly _streaming = Atom.make<Option.Option<Message.Message>>(Option.none());
95
96
 
96
- /**
97
- * Streaming state.
98
- */
99
- public readonly streaming = Rx.make<boolean>((get) => Option.isSome(get(this._streaming)));
97
+ /** Streaming state. */
98
+ public readonly streaming = Atom.make<boolean>((get) => Option.isSome(get(this._streaming)));
100
99
 
101
- /**
102
- * Array of Messages (incl. the current message being streamed).
103
- */
104
- public readonly messages = Rx.make<DataType.Message[]>((get) =>
100
+ /** Active state. */
101
+ public readonly active = Atom.make(false);
102
+
103
+ /** Array of Messages (incl. the current message being streamed). */
104
+ public readonly messages = Atom.make<Message.Message[]>((get) =>
105
105
  Option.match(get(this._streaming), {
106
106
  onNone: () => get(this._pending),
107
107
  onSome: (streaming) => [...get(this._pending), streaming],
@@ -109,16 +109,16 @@ export class AiChatProcessor {
109
109
  );
110
110
 
111
111
  /** Last error. */
112
- public readonly error = Rx.make<Option.Option<Error>>(Option.none());
112
+ public readonly error = Atom.make<Option.Option<Error>>(Option.none());
113
113
 
114
114
  constructor(
115
115
  private readonly _conversation: AiConversation,
116
116
  // TODO(dmaretskyi): Replace this with effect's ManagedRuntime wrapping this layer.
117
- private readonly _services: Layer.Layer<AiChatServices>,
117
+ private readonly _services: () => Promise<Runtime.Runtime<AiChatServices>>,
118
118
  private readonly _options: AiChatProcessorOptions = defaultOptions,
119
119
  ) {
120
120
  // Initialize registries and defaults before using in other logic.
121
- this._rx = this._options.observableRegistry ?? Registry.make();
121
+ this._registry = this._options.observableRegistry ?? Registry.make();
122
122
  this._observer = GenerationObserver.make({
123
123
  onBlock: this._onBlock,
124
124
  onMessage: this._onMessage,
@@ -129,10 +129,6 @@ export class AiChatProcessor {
129
129
  }
130
130
  }
131
131
 
132
- get isRunning() {
133
- return !!this._fiber;
134
- }
135
-
136
132
  get context() {
137
133
  return this._conversation.context;
138
134
  }
@@ -155,7 +151,8 @@ export class AiChatProcessor {
155
151
 
156
152
  try {
157
153
  this._lastRequest = requestParam;
158
- this._rx.set(this.error, Option.none());
154
+ this._registry.set(this.error, Option.none());
155
+ this._registry.set(this.active, true);
159
156
 
160
157
  // Create request.
161
158
  const request = this._conversation.createRequest({
@@ -164,19 +161,17 @@ export class AiChatProcessor {
164
161
  observer: this._observer,
165
162
  });
166
163
 
164
+ const runtime = await this._services();
165
+
167
166
  // Create fiber.
168
167
  this._fiber = request.pipe(
169
- Effect.provide(Layer.provideMerge(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL), this._services)),
168
+ Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),
170
169
 
171
170
  // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.
172
171
  Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),
173
172
 
174
173
  Effect.asVoid,
175
- Effect.tapErrorCause((cause) => {
176
- log.error('request failed', { cause });
177
- return Effect.void;
178
- }),
179
- Effect.runFork, // Runs in the background.
174
+ Runtime.runFork(runtime), // Runs in the background.
180
175
  );
181
176
 
182
177
  // Execute request.
@@ -185,14 +180,15 @@ export class AiChatProcessor {
185
180
  throwCause(response.cause);
186
181
  }
187
182
 
188
- this._rx.set(this.error, Option.none());
183
+ this._registry.set(this.error, Option.none());
189
184
  this._lastRequest = undefined;
190
185
  this._fiber = undefined;
191
- } catch (err) {
192
- log.error('request failed', { err });
193
- this._rx.set(this.error, Option.some(new Error('AI service error', { cause: err })));
186
+ } catch (error) {
187
+ log.error('request failed', { error });
188
+ this._registry.set(this.error, Option.some(new Error('AI service error', { cause: error })));
194
189
  } finally {
195
190
  this._fiber = undefined;
191
+ this._registry.set(this.active, false);
196
192
  }
197
193
  }
198
194
 
@@ -209,6 +205,7 @@ export class AiChatProcessor {
209
205
  );
210
206
 
211
207
  this._fiber = undefined;
208
+ this._registry.set(this.active, false);
212
209
  }
213
210
 
214
211
  /**
@@ -224,32 +221,8 @@ export class AiChatProcessor {
224
221
  * Update the current chat's name.
225
222
  */
226
223
  async updateName(chat: Assistant.Chat): Promise<void> {
227
- const system = trim`
228
- It is extremely important that you respond only with the title and nothing else.
229
- If you cannot do this effectively respond with "New Chat".
230
- `;
231
-
232
- const history = await this._conversation.getHistory();
233
- const fiber = Effect.gen(this, function* () {
234
- const session = new AiSession();
235
- return yield* session.run({ system, prompt: 'Suggest a name for this chat', history });
236
- }).pipe(
237
- // TODO(burdon): Use simpler model.
238
- Effect.provide(Layer.provideMerge(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL), this._services)),
239
- Effect.tap((messages) => {
240
- const message = messages.find((message) => message.sender.role === 'assistant');
241
- const title = message?.blocks.find((b) => b._tag === 'text')?.text;
242
- if (title) {
243
- chat.name = title;
244
- }
245
- }),
246
- Effect.runFork, // Run in the background.
247
- );
248
-
249
- const response = await fiber.pipe(Fiber.join, Effect.runPromiseExit);
250
- if (!Exit.isSuccess(response)) {
251
- throwCause(response.cause);
252
- }
224
+ const runtime = await this._services();
225
+ await updateName(runtime, this._conversation, chat, this._options.model);
253
226
  }
254
227
 
255
228
  // TODO(burdon): Fix/factor out.
@@ -277,22 +250,22 @@ export class AiChatProcessor {
277
250
  };
278
251
 
279
252
  private _onMessage = Effect.fn(
280
- function* (this: AiChatProcessor, message: DataType.Message) {
281
- this._rx.set(this._streaming, Option.none());
282
- this._rx.update(this._pending, (pending) => [...pending, message]);
253
+ function* (this: AiChatProcessor, message: Message.Message) {
254
+ this._registry.set(this._streaming, Option.none());
255
+ this._registry.update(this._pending, (pending) => [...pending, message]);
283
256
  }.bind(this),
284
257
  );
285
258
 
286
259
  private _onBlock = Effect.fn(
287
260
  function* (this: AiChatProcessor, block: ContentBlock.Any) {
288
- this._rx.update(this._streaming, (streaming) => {
261
+ this._registry.update(this._streaming, (streaming) => {
289
262
  const blocks = streaming.pipe(
290
- Option.map((streaming) => streaming.blocks.filter((b) => !b.pending)),
263
+ Option.map((streaming) => streaming.blocks.filter((b: ContentBlock.Any) => !b.pending)),
291
264
  Option.getOrElse(() => []),
292
265
  );
293
266
 
294
267
  return Option.some(
295
- Obj.make(DataType.Message, {
268
+ Obj.make(Message.Message, {
296
269
  created: new Date().toISOString(),
297
270
  sender: { role: 'assistant' },
298
271
  blocks: [...blocks, block],
@@ -0,0 +1,56 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+ import * as Exit from 'effect/Exit';
7
+ import * as Fiber from 'effect/Fiber';
8
+ import * as Runtime from 'effect/Runtime';
9
+
10
+ import { AiService, DEFAULT_EDGE_MODEL, type ModelName } from '@dxos/ai';
11
+ import { type AiConversation, AiSession } from '@dxos/assistant';
12
+ import { throwCause } from '@dxos/effect';
13
+ import { trim } from '@dxos/util';
14
+
15
+ import { type Assistant } from '../types';
16
+
17
+ import { type AiChatServices } from './processor';
18
+
19
+ /**
20
+ * Update the current chat's name.
21
+ */
22
+ // TODO(burdon): Convert this into a plugin tool.
23
+ export const updateName = async (
24
+ runtime: Runtime.Runtime<AiChatServices>,
25
+ conversation: AiConversation,
26
+ chat: Assistant.Chat,
27
+ model: ModelName = DEFAULT_EDGE_MODEL,
28
+ ): Promise<void> => {
29
+ const history = await conversation.getHistory();
30
+ const system = trim`
31
+ It is extremely important that you respond only with the title and nothing else.
32
+ If you cannot do this effectively respond with "New Chat".
33
+ `;
34
+ const prompt = 'Suggest a name for this chat';
35
+
36
+ const fiber = Effect.gen(this, function* () {
37
+ const session = new AiSession();
38
+ return yield* session.run({ system, prompt, history });
39
+ }).pipe(
40
+ Effect.provide(AiService.model(model)),
41
+ Effect.tap((messages) => {
42
+ // TODO(burdon): Parse response (should update via tool).
43
+ const message = messages.find((message) => message.sender.role === 'assistant');
44
+ const title = message?.blocks.find((block) => block._tag === 'text')?.text;
45
+ if (title) {
46
+ chat.name = title;
47
+ }
48
+ }),
49
+ Runtime.runFork(runtime), // Run in the background.
50
+ );
51
+
52
+ const response = await fiber.pipe(Fiber.join, Effect.runPromiseExit);
53
+ if (!Exit.isSuccess(response)) {
54
+ throwCause(response.cause);
55
+ }
56
+ };
@@ -5,14 +5,10 @@
5
5
  import { type Queue, Ref, type Space, getSpace } from '@dxos/client/echo';
6
6
  import { type Sequence, type SequenceEvent, type SequenceLogger } from '@dxos/conductor';
7
7
  import { DXN, Key, Obj } from '@dxos/echo';
8
- import {
9
- InvocationOutcome,
10
- InvocationTraceEndEvent,
11
- type InvocationTraceEvent,
12
- InvocationTraceEventType,
13
- InvocationTraceStartEvent,
14
- TraceEvent,
15
- } from '@dxos/functions';
8
+ import { InvocationTraceEndEvent, InvocationTraceEventType, InvocationTraceStartEvent } from '@dxos/functions-runtime';
9
+ import { TraceEvent } from '@dxos/functions-runtime';
10
+ import { InvocationOutcome } from '@dxos/functions-runtime';
11
+ import { type InvocationTraceEvent } from '@dxos/functions-runtime';
16
12
  import { invariant } from '@dxos/invariant';
17
13
  import { QueueSubspaceTags } from '@dxos/keys';
18
14
 
@@ -39,7 +35,7 @@ export class QueueLogger implements SequenceLogger {
39
35
  Obj.make(InvocationTraceStartEvent, {
40
36
  type: InvocationTraceEventType.START,
41
37
  invocationId: event.invocationId,
42
- timestampMs: Date.now(),
38
+ timestamp: Date.now(),
43
39
  input: {},
44
40
  invocationTraceQueue: Ref.fromDXN(this._getTraceQueueDxn(event.invocationId)),
45
41
  invocationTarget: Ref.make(this.sequence),
@@ -51,7 +47,7 @@ export class QueueLogger implements SequenceLogger {
51
47
  Obj.make(InvocationTraceEndEvent, {
52
48
  type: InvocationTraceEventType.END,
53
49
  invocationId: event.invocationId,
54
- timestampMs: Date.now(),
50
+ timestamp: Date.now(),
55
51
  outcome: InvocationOutcome.SUCCESS,
56
52
  }),
57
53
  ]);
@@ -65,7 +61,7 @@ export class QueueLogger implements SequenceLogger {
65
61
  ingestionTimestamp: Date.now(),
66
62
  logs: [
67
63
  {
68
- timestampMs: Date.now(),
64
+ timestamp: Date.now(),
69
65
  level: 'info',
70
66
  message: event.type,
71
67
  context: { step: event.step },
@@ -83,7 +79,7 @@ export class QueueLogger implements SequenceLogger {
83
79
  ingestionTimestamp: Date.now(),
84
80
  logs: [
85
81
  {
86
- timestampMs: Date.now(),
82
+ timestamp: Date.now(),
87
83
  level: 'info',
88
84
  message: event.type,
89
85
  context: { message: event.message },
@@ -101,7 +97,7 @@ export class QueueLogger implements SequenceLogger {
101
97
  ingestionTimestamp: Date.now(),
102
98
  logs: [
103
99
  {
104
- timestampMs: Date.now(),
100
+ timestamp: Date.now(),
105
101
  level: 'info',
106
102
  message: event.type,
107
103
  context: { block: event.block },
@@ -2,7 +2,6 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- export * from './test-data';
6
- export * from './test-functions';
5
+ export * from './test-generator';
7
6
  export * from './test-sequence';
8
7
  export * from './test-services';