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

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 (554) hide show
  1. package/dist/lib/browser/AssistantSettings-PTNCDWC6.mjs +100 -0
  2. package/dist/lib/browser/AssistantSettings-PTNCDWC6.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +8 -0
  4. package/dist/lib/browser/chunk-EZRS3J25.mjs +30 -0
  5. package/dist/lib/browser/chunk-EZRS3J25.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-OWBVGFDF.mjs +345 -0
  7. package/dist/lib/browser/chunk-OWBVGFDF.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-RUV2WOQH.mjs +154 -0
  9. package/dist/lib/browser/chunk-RUV2WOQH.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-YD4JTOO5.mjs +173 -0
  11. package/dist/lib/browser/chunk-YD4JTOO5.mjs.map +7 -0
  12. package/dist/lib/browser/create-chat-6G6WROW2.mjs +89 -0
  13. package/dist/lib/browser/create-chat-6G6WROW2.mjs.map +7 -0
  14. package/dist/lib/browser/ensure-companion-chat-F46BGW2T.mjs +65 -0
  15. package/dist/lib/browser/ensure-companion-chat-F46BGW2T.mjs.map +7 -0
  16. package/dist/lib/browser/index.mjs +2511 -311
  17. package/dist/lib/browser/index.mjs.map +4 -4
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/on-create-space-F5HHB3GI.mjs +22 -0
  20. package/dist/lib/browser/on-create-space-F5HHB3GI.mjs.map +7 -0
  21. package/dist/lib/browser/operations/index.mjs +13 -0
  22. package/dist/lib/browser/operations/index.mjs.map +7 -0
  23. package/dist/lib/browser/resolve-navigation-targets-5Y7FT4CQ.mjs +22 -0
  24. package/dist/lib/browser/resolve-navigation-targets-5Y7FT4CQ.mjs.map +7 -0
  25. package/dist/lib/browser/run-prompt-in-new-chat-XSPRWOSR.mjs +144 -0
  26. package/dist/lib/browser/run-prompt-in-new-chat-XSPRWOSR.mjs.map +7 -0
  27. package/dist/lib/browser/set-current-chat-JPWBMS7N.mjs +35 -0
  28. package/dist/lib/browser/set-current-chat-JPWBMS7N.mjs.map +7 -0
  29. package/dist/lib/browser/types/index.mjs +5 -4
  30. package/dist/lib/browser/update-chat-name-AEMFSIJX.mjs +60 -0
  31. package/dist/lib/browser/update-chat-name-AEMFSIJX.mjs.map +7 -0
  32. package/dist/lib/node-esm/AssistantSettings-Z5ZZWWSN.mjs +101 -0
  33. package/dist/lib/node-esm/AssistantSettings-Z5ZZWWSN.mjs.map +7 -0
  34. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  35. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs +32 -0
  36. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-POJO5MTX.mjs +347 -0
  38. package/dist/lib/node-esm/chunk-POJO5MTX.mjs.map +7 -0
  39. package/dist/lib/node-esm/chunk-PY4X6FJT.mjs +155 -0
  40. package/dist/lib/node-esm/chunk-PY4X6FJT.mjs.map +7 -0
  41. package/dist/lib/node-esm/chunk-QHPGS4A4.mjs +174 -0
  42. package/dist/lib/node-esm/chunk-QHPGS4A4.mjs.map +7 -0
  43. package/dist/lib/node-esm/create-chat-EEMDTQRE.mjs +90 -0
  44. package/dist/lib/node-esm/create-chat-EEMDTQRE.mjs.map +7 -0
  45. package/dist/lib/node-esm/ensure-companion-chat-YAKJY7TB.mjs +66 -0
  46. package/dist/lib/node-esm/ensure-companion-chat-YAKJY7TB.mjs.map +7 -0
  47. package/dist/lib/node-esm/index.mjs +2511 -311
  48. package/dist/lib/node-esm/index.mjs.map +4 -4
  49. package/dist/lib/node-esm/meta.json +1 -1
  50. package/dist/lib/node-esm/on-create-space-YE5NQ3D2.mjs +23 -0
  51. package/dist/lib/node-esm/on-create-space-YE5NQ3D2.mjs.map +7 -0
  52. package/dist/lib/node-esm/operations/index.mjs +14 -0
  53. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  54. package/dist/lib/node-esm/resolve-navigation-targets-W3GTFXDD.mjs +23 -0
  55. package/dist/lib/node-esm/resolve-navigation-targets-W3GTFXDD.mjs.map +7 -0
  56. package/dist/lib/node-esm/run-prompt-in-new-chat-Q2CLUUM4.mjs +145 -0
  57. package/dist/lib/node-esm/run-prompt-in-new-chat-Q2CLUUM4.mjs.map +7 -0
  58. package/dist/lib/node-esm/set-current-chat-ZBEFWS6P.mjs +36 -0
  59. package/dist/lib/node-esm/set-current-chat-ZBEFWS6P.mjs.map +7 -0
  60. package/dist/lib/node-esm/types/index.mjs +5 -4
  61. package/dist/lib/node-esm/update-chat-name-6F7COUGR.mjs +61 -0
  62. package/dist/lib/node-esm/update-chat-name-6F7COUGR.mjs.map +7 -0
  63. package/dist/types/src/AssistantPlugin.d.ts +2 -1
  64. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  65. package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
  66. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
  67. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +2 -0
  68. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +1 -0
  69. package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
  70. package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
  71. package/dist/types/src/blueprints/index.d.ts +2 -0
  72. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  73. package/dist/types/src/capabilities/ai-service.d.ts +4 -2
  74. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  76. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  77. package/dist/types/src/capabilities/blueprint-definition.d.ts +4 -6
  78. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +9 -0
  80. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -0
  81. package/dist/types/src/capabilities/edge-model-resolver.d.ts +6 -3
  82. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/index.d.ts +41 -12
  84. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/local-model-resolver.d.ts +6 -3
  86. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/markdown.d.ts +5 -0
  88. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/migrations.d.ts +5 -0
  90. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  92. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  94. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/settings.d.ts +16 -2
  96. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/state.d.ts +19 -2
  98. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/toolkit.d.ts +4 -2
  100. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  101. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +4 -4
  102. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  103. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +511 -0
  104. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -0
  105. package/dist/types/src/components/AssistantSettings/index.d.ts +2 -1
  106. package/dist/types/src/components/AssistantSettings/index.d.ts.map +1 -1
  107. package/dist/types/src/components/Chat/Chat.d.ts +36 -15
  108. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  109. package/dist/types/src/components/Chat/events.d.ts +5 -1
  110. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  111. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +6 -3
  112. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  113. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  114. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +3 -3
  115. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  116. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +3 -3
  117. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  118. package/dist/types/src/components/ChatThread/ChatThread.d.ts +7 -10
  119. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  120. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +504 -257
  121. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  122. package/dist/types/src/components/ChatThread/registry.d.ts +1 -1
  123. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  124. package/dist/types/src/components/ChatThread/sync.d.ts +12 -6
  125. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  126. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +14 -0
  127. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -0
  128. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +8 -0
  129. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -0
  130. package/dist/types/src/components/ProcessTree/index.d.ts +2 -0
  131. package/dist/types/src/components/ProcessTree/index.d.ts.map +1 -0
  132. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +9 -4
  133. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  134. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +488 -244
  135. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +11 -1
  137. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  138. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +489 -245
  139. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  141. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  142. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  143. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  144. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  145. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +10 -8
  146. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  147. package/dist/types/src/components/Toolbox/Toolbox.d.ts +17 -12
  148. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  149. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +488 -244
  150. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  151. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +12 -0
  152. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +1 -0
  153. package/dist/types/src/components/Typewriter/Typewriter.d.ts +11 -0
  154. package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +1 -0
  155. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts +7 -0
  156. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +1 -0
  157. package/dist/types/src/components/Typewriter/assistant-extension.d.ts +5 -0
  158. package/dist/types/src/components/Typewriter/assistant-extension.d.ts.map +1 -0
  159. package/dist/types/src/components/Typewriter/index.d.ts +2 -0
  160. package/dist/types/src/components/Typewriter/index.d.ts.map +1 -0
  161. package/dist/types/src/components/index.d.ts +3 -7
  162. package/dist/types/src/components/index.d.ts.map +1 -1
  163. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +6 -0
  164. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
  165. package/dist/types/src/containers/BlueprintArticle/index.d.ts +3 -0
  166. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
  167. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +14 -0
  168. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
  169. package/dist/types/src/containers/ChatCompanion/index.d.ts +3 -0
  170. package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
  171. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +20 -0
  172. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
  173. package/dist/types/src/containers/ChatContainer/index.d.ts +3 -0
  174. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
  175. package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +2 -3
  176. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
  177. package/dist/types/src/containers/ChatDialog/index.d.ts +3 -0
  178. package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
  179. package/dist/types/src/containers/ProjectArticle/ProjectArticle.d.ts +6 -0
  180. package/dist/types/src/containers/ProjectArticle/ProjectArticle.d.ts.map +1 -0
  181. package/dist/types/src/containers/ProjectArticle/index.d.ts +3 -0
  182. package/dist/types/src/containers/ProjectArticle/index.d.ts.map +1 -0
  183. package/dist/types/src/containers/ProjectSettings/ProjectSettings.d.ts +6 -0
  184. package/dist/types/src/containers/ProjectSettings/ProjectSettings.d.ts.map +1 -0
  185. package/dist/types/src/containers/ProjectSettings/index.d.ts +3 -0
  186. package/dist/types/src/containers/ProjectSettings/index.d.ts.map +1 -0
  187. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +6 -0
  188. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +1 -0
  189. package/dist/types/src/containers/PromptArticle/index.d.ts +3 -0
  190. package/dist/types/src/containers/PromptArticle/index.d.ts.map +1 -0
  191. package/dist/types/src/containers/PromptList/PromptList.d.ts +6 -0
  192. package/dist/types/src/containers/PromptList/PromptList.d.ts.map +1 -0
  193. package/dist/types/src/containers/PromptList/PromptList.stories.d.ts +517 -0
  194. package/dist/types/src/containers/PromptList/PromptList.stories.d.ts.map +1 -0
  195. package/dist/types/src/containers/PromptList/index.d.ts +3 -0
  196. package/dist/types/src/containers/PromptList/index.d.ts.map +1 -0
  197. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +6 -0
  198. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -0
  199. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +19 -0
  200. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -0
  201. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts +2 -0
  202. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts.map +1 -0
  203. package/dist/types/src/containers/TracePanel/index.d.ts +4 -0
  204. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -0
  205. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +4 -0
  206. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -0
  207. package/dist/types/src/containers/TriggerStatus/index.d.ts +3 -0
  208. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
  209. package/dist/types/src/containers/index.d.ts +12 -0
  210. package/dist/types/src/containers/index.d.ts.map +1 -0
  211. package/dist/types/src/extensions/index.d.ts +2 -0
  212. package/dist/types/src/extensions/index.d.ts.map +1 -0
  213. package/dist/types/src/extensions/prompt-extension.d.ts +10 -0
  214. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -0
  215. package/dist/types/src/hooks/index.d.ts +2 -1
  216. package/dist/types/src/hooks/index.d.ts.map +1 -1
  217. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +5 -5
  218. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  219. package/dist/types/src/hooks/useChatProcessor.d.ts +9 -6
  220. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  221. package/dist/types/src/hooks/useChatServices.d.ts +5 -8
  222. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  223. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  224. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  225. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  226. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  227. package/dist/types/src/hooks/useContextObjects.d.ts +7 -7
  228. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  229. package/dist/types/src/hooks/useFilteredTypes.d.ts +3 -0
  230. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  231. package/dist/types/src/hooks/usePresets.d.ts +1 -1
  232. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  233. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  234. package/dist/types/src/index.d.ts +1 -2
  235. package/dist/types/src/index.d.ts.map +1 -1
  236. package/dist/types/src/meta.d.ts +4 -2
  237. package/dist/types/src/meta.d.ts.map +1 -1
  238. package/dist/types/src/operations/create-chat.d.ts +5 -0
  239. package/dist/types/src/operations/create-chat.d.ts.map +1 -0
  240. package/dist/types/src/operations/definitions.d.ts +134 -0
  241. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  242. package/dist/types/src/operations/ensure-companion-chat.d.ts +5 -0
  243. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -0
  244. package/dist/types/src/operations/index.d.ts +4 -0
  245. package/dist/types/src/operations/index.d.ts.map +1 -0
  246. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  247. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  248. package/dist/types/src/operations/resolve-navigation-targets.d.ts +15 -0
  249. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -0
  250. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +5 -0
  251. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -0
  252. package/dist/types/src/operations/set-current-chat.d.ts +5 -0
  253. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -0
  254. package/dist/types/src/operations/update-chat-name.d.ts +5 -0
  255. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -0
  256. package/dist/types/src/processor/processor.d.ts +34 -34
  257. package/dist/types/src/processor/processor.d.ts.map +1 -1
  258. package/dist/types/src/processor/update-name.d.ts +2 -2
  259. package/dist/types/src/processor/update-name.d.ts.map +1 -1
  260. package/dist/types/src/queue-logger.d.ts.map +1 -1
  261. package/dist/types/src/testing/test-generator.d.ts +5 -4
  262. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  263. package/dist/types/src/testing/test-services.d.ts +1 -1
  264. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  265. package/dist/types/src/translations.d.ts +492 -83
  266. package/dist/types/src/translations.d.ts.map +1 -1
  267. package/dist/types/src/types/Assistant.d.ts +18 -46
  268. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  269. package/dist/types/src/types/Settings.d.ts +10 -0
  270. package/dist/types/src/types/Settings.d.ts.map +1 -0
  271. package/dist/types/src/types/capabilities.d.ts +44 -0
  272. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  273. package/dist/types/src/types/events.d.ts +5 -0
  274. package/dist/types/src/types/events.d.ts.map +1 -0
  275. package/dist/types/src/types/index.d.ts +3 -1
  276. package/dist/types/src/types/index.d.ts.map +1 -1
  277. package/dist/types/src/types/service.d.ts +10 -212
  278. package/dist/types/src/types/service.d.ts.map +1 -1
  279. package/dist/types/tsconfig.tsbuildinfo +1 -1
  280. package/package.json +139 -91
  281. package/src/AssistantPlugin.tsx +186 -123
  282. package/src/blueprints/assistant/blueprint.conversations.json +1 -0
  283. package/src/blueprints/assistant/blueprint.test.ts +46 -0
  284. package/src/blueprints/assistant/blueprint.ts +31 -0
  285. package/src/blueprints/assistant/index.ts +5 -0
  286. package/src/{components/ChatToolbar → blueprints}/index.ts +1 -1
  287. package/src/capabilities/ai-service.ts +20 -17
  288. package/src/capabilities/app-graph-builder.ts +184 -170
  289. package/src/capabilities/blueprint-definition.ts +47 -55
  290. package/src/capabilities/companion-chat-provisioner.ts +165 -0
  291. package/src/capabilities/edge-model-resolver.ts +22 -14
  292. package/src/capabilities/index.ts +21 -14
  293. package/src/capabilities/local-model-resolver.ts +21 -13
  294. package/src/capabilities/markdown.ts +39 -0
  295. package/src/capabilities/migrations.ts +34 -0
  296. package/src/capabilities/operation-handler.ts +16 -0
  297. package/src/capabilities/react-surface.tsx +141 -59
  298. package/src/capabilities/settings.ts +24 -12
  299. package/src/capabilities/state.ts +27 -12
  300. package/src/capabilities/toolkit.ts +7 -13
  301. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +35 -0
  302. package/src/components/AssistantSettings/AssistantSettings.tsx +105 -85
  303. package/src/components/AssistantSettings/index.ts +4 -2
  304. package/src/components/Chat/Chat.tsx +201 -136
  305. package/src/components/Chat/events.ts +7 -1
  306. package/src/components/ChatProgress/ChatProgress.tsx +11 -22
  307. package/src/components/ChatPrompt/ChatActions.tsx +13 -7
  308. package/src/components/ChatPrompt/ChatOptions.tsx +117 -90
  309. package/src/components/ChatPrompt/ChatReferences.tsx +23 -14
  310. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
  311. package/src/components/ChatThread/ChatThread.stories.tsx +59 -38
  312. package/src/components/ChatThread/ChatThread.tsx +41 -38
  313. package/src/components/ChatThread/Link.tsx +4 -4
  314. package/src/components/ChatThread/registry.tsx +74 -51
  315. package/src/components/ChatThread/sync.test.ts +36 -18
  316. package/src/components/ChatThread/sync.ts +61 -14
  317. package/src/components/ChatThread/testing/thread.md +37 -0
  318. package/src/components/ProcessTree/ProcessTree.stories.tsx +109 -0
  319. package/src/components/ProcessTree/ProcessTree.tsx +85 -0
  320. package/src/components/ProcessTree/index.ts +5 -0
  321. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +15 -11
  322. package/src/components/TemplateEditor/TemplateEditor.tsx +54 -42
  323. package/src/components/TemplateEditor/TemplateForm.stories.tsx +19 -9
  324. package/src/components/TemplateEditor/TemplateForm.tsx +83 -37
  325. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +274 -0
  326. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  327. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  328. package/src/components/ToolBlock/ToolBlock.tsx +44 -53
  329. package/src/components/Toolbox/Toolbox.stories.tsx +11 -13
  330. package/src/components/Toolbox/Toolbox.tsx +69 -65
  331. package/src/components/Typewriter/AssistantToolbar.tsx +161 -0
  332. package/src/components/Typewriter/Typewriter.stories.tsx +86 -0
  333. package/src/components/Typewriter/Typewriter.tsx +50 -0
  334. package/src/components/Typewriter/assistant-extension.tsx +141 -0
  335. package/src/components/Typewriter/index.ts +5 -0
  336. package/src/components/index.ts +3 -8
  337. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +29 -0
  338. package/src/containers/BlueprintArticle/index.ts +7 -0
  339. package/src/containers/ChatCompanion/ChatCompanion.tsx +143 -0
  340. package/src/containers/ChatCompanion/index.ts +7 -0
  341. package/src/containers/ChatContainer/ChatContainer.tsx +95 -0
  342. package/src/containers/ChatContainer/index.ts +7 -0
  343. package/src/{components → containers/ChatDialog}/ChatDialog.tsx +19 -15
  344. package/src/containers/ChatDialog/index.ts +7 -0
  345. package/src/containers/ProjectArticle/ProjectArticle.tsx +127 -0
  346. package/src/containers/ProjectArticle/index.ts +7 -0
  347. package/src/containers/ProjectSettings/ProjectSettings.tsx +139 -0
  348. package/src/containers/ProjectSettings/index.ts +7 -0
  349. package/src/containers/PromptArticle/PromptArticle.tsx +59 -0
  350. package/src/containers/PromptArticle/index.ts +7 -0
  351. package/src/containers/PromptList/PromptList.stories.tsx +130 -0
  352. package/src/containers/PromptList/PromptList.tsx +49 -0
  353. package/src/containers/PromptList/index.ts +7 -0
  354. package/src/containers/TracePanel/TracePanel.tsx +258 -0
  355. package/src/containers/TracePanel/dxn-extractor.test.ts +153 -0
  356. package/src/containers/TracePanel/dxn-extractor.ts +178 -0
  357. package/src/containers/TracePanel/index.ts +9 -0
  358. package/src/containers/TriggerStatus/TriggerStatus.tsx +144 -0
  359. package/src/containers/TriggerStatus/index.ts +7 -0
  360. package/src/containers/index.ts +16 -0
  361. package/src/extensions/index.ts +5 -0
  362. package/src/extensions/prompt-extension.ts +111 -0
  363. package/src/hooks/index.ts +2 -1
  364. package/src/hooks/useBlueprintRegistry.ts +36 -21
  365. package/src/hooks/useChatProcessor.ts +32 -23
  366. package/src/hooks/useChatServices.ts +9 -31
  367. package/src/hooks/useChatToolbarActions.ts +122 -0
  368. package/src/hooks/useContextBinder.ts +9 -7
  369. package/src/hooks/useContextObjects.ts +16 -24
  370. package/src/hooks/useFilteredTypes.ts +37 -0
  371. package/src/hooks/usePresets.ts +1 -1
  372. package/src/hooks/useReferencesProvider.ts +5 -8
  373. package/src/index.ts +1 -2
  374. package/src/meta.ts +7 -4
  375. package/src/operations/create-chat.ts +79 -0
  376. package/src/operations/definitions.ts +126 -0
  377. package/src/operations/ensure-companion-chat.ts +59 -0
  378. package/src/operations/index.ts +17 -0
  379. package/src/operations/on-create-space.ts +24 -0
  380. package/src/operations/resolve-navigation-targets.ts +26 -0
  381. package/src/operations/run-prompt-in-new-chat.ts +114 -0
  382. package/src/operations/set-current-chat.ts +35 -0
  383. package/src/operations/update-chat-name.ts +55 -0
  384. package/src/processor/presets.ts +1 -1
  385. package/src/processor/processor.test.ts +21 -63
  386. package/src/processor/processor.ts +168 -139
  387. package/src/processor/update-name.ts +6 -5
  388. package/src/queue-logger.ts +8 -9
  389. package/src/testing/test-generator.ts +14 -13
  390. package/src/testing/test-sequence.ts +3 -3
  391. package/src/testing/test-services.ts +9 -7
  392. package/src/translations.ts +129 -76
  393. package/src/types/Assistant.ts +8 -57
  394. package/src/types/Settings.ts +21 -0
  395. package/src/types/capabilities.ts +35 -0
  396. package/src/types/events.ts +11 -0
  397. package/src/types/index.ts +5 -1
  398. package/src/types/service.ts +14 -11
  399. package/dist/lib/browser/BlueprintContainer-GMSYKGSO.mjs +0 -36
  400. package/dist/lib/browser/BlueprintContainer-GMSYKGSO.mjs.map +0 -7
  401. package/dist/lib/browser/ChatCompanion-M3FDKTQM.mjs +0 -151
  402. package/dist/lib/browser/ChatCompanion-M3FDKTQM.mjs.map +0 -7
  403. package/dist/lib/browser/ChatContainer-KAH7XITI.mjs +0 -74
  404. package/dist/lib/browser/ChatContainer-KAH7XITI.mjs.map +0 -7
  405. package/dist/lib/browser/ChatDialog-ZWRGABW6.mjs +0 -87
  406. package/dist/lib/browser/ChatDialog-ZWRGABW6.mjs.map +0 -7
  407. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +0 -19
  408. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +0 -7
  409. package/dist/lib/browser/app-graph-builder-R5T7BJPC.mjs +0 -183
  410. package/dist/lib/browser/app-graph-builder-R5T7BJPC.mjs.map +0 -7
  411. package/dist/lib/browser/blueprint-definition-AGTDXTXO.mjs +0 -13
  412. package/dist/lib/browser/chunk-357IHWQL.mjs +0 -1519
  413. package/dist/lib/browser/chunk-357IHWQL.mjs.map +0 -7
  414. package/dist/lib/browser/chunk-A2NVNXPL.mjs +0 -170
  415. package/dist/lib/browser/chunk-A2NVNXPL.mjs.map +0 -7
  416. package/dist/lib/browser/chunk-CQW6UPJM.mjs +0 -199
  417. package/dist/lib/browser/chunk-CQW6UPJM.mjs.map +0 -7
  418. package/dist/lib/browser/chunk-GNI6HL6G.mjs +0 -219
  419. package/dist/lib/browser/chunk-GNI6HL6G.mjs.map +0 -7
  420. package/dist/lib/browser/chunk-GXHZTOWJ.mjs +0 -378
  421. package/dist/lib/browser/chunk-GXHZTOWJ.mjs.map +0 -7
  422. package/dist/lib/browser/chunk-L5OA5OGS.mjs +0 -262
  423. package/dist/lib/browser/chunk-L5OA5OGS.mjs.map +0 -7
  424. package/dist/lib/browser/chunk-MEN5WTLA.mjs +0 -182
  425. package/dist/lib/browser/chunk-MEN5WTLA.mjs.map +0 -7
  426. package/dist/lib/browser/chunk-PUG24BEC.mjs +0 -277
  427. package/dist/lib/browser/chunk-PUG24BEC.mjs.map +0 -7
  428. package/dist/lib/browser/chunk-SJJV3HEX.mjs +0 -16
  429. package/dist/lib/browser/chunk-SJJV3HEX.mjs.map +0 -7
  430. package/dist/lib/browser/chunk-WBG5PTSX.mjs +0 -23
  431. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +0 -7
  432. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +0 -18
  433. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +0 -7
  434. package/dist/lib/browser/intent-resolver-3C5TABOX.mjs +0 -136
  435. package/dist/lib/browser/intent-resolver-3C5TABOX.mjs.map +0 -7
  436. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +0 -17
  437. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +0 -7
  438. package/dist/lib/browser/react-surface-EYKA5IFU.mjs +0 -90
  439. package/dist/lib/browser/react-surface-EYKA5IFU.mjs.map +0 -7
  440. package/dist/lib/browser/settings-VMVBYZLN.mjs +0 -23
  441. package/dist/lib/browser/settings-VMVBYZLN.mjs.map +0 -7
  442. package/dist/lib/browser/state-CFREPBB6.mjs +0 -21
  443. package/dist/lib/browser/state-CFREPBB6.mjs.map +0 -7
  444. package/dist/lib/browser/toolkit-F3NQ7TSI.mjs +0 -21
  445. package/dist/lib/browser/toolkit-F3NQ7TSI.mjs.map +0 -7
  446. package/dist/lib/node-esm/BlueprintContainer-6GBLMK4Z.mjs +0 -37
  447. package/dist/lib/node-esm/BlueprintContainer-6GBLMK4Z.mjs.map +0 -7
  448. package/dist/lib/node-esm/ChatCompanion-OV426GCP.mjs +0 -152
  449. package/dist/lib/node-esm/ChatCompanion-OV426GCP.mjs.map +0 -7
  450. package/dist/lib/node-esm/ChatContainer-UKY7NHFY.mjs +0 -75
  451. package/dist/lib/node-esm/ChatContainer-UKY7NHFY.mjs.map +0 -7
  452. package/dist/lib/node-esm/ChatDialog-2BDQIEXH.mjs +0 -88
  453. package/dist/lib/node-esm/ChatDialog-2BDQIEXH.mjs.map +0 -7
  454. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +0 -20
  455. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +0 -7
  456. package/dist/lib/node-esm/app-graph-builder-I52RYVWH.mjs +0 -184
  457. package/dist/lib/node-esm/app-graph-builder-I52RYVWH.mjs.map +0 -7
  458. package/dist/lib/node-esm/blueprint-definition-CFCUD2VC.mjs +0 -14
  459. package/dist/lib/node-esm/chunk-2CAETDW2.mjs +0 -183
  460. package/dist/lib/node-esm/chunk-2CAETDW2.mjs.map +0 -7
  461. package/dist/lib/node-esm/chunk-4J5FYNNM.mjs +0 -171
  462. package/dist/lib/node-esm/chunk-4J5FYNNM.mjs.map +0 -7
  463. package/dist/lib/node-esm/chunk-5ARE4R2I.mjs +0 -220
  464. package/dist/lib/node-esm/chunk-5ARE4R2I.mjs.map +0 -7
  465. package/dist/lib/node-esm/chunk-7ZYOYW7F.mjs +0 -264
  466. package/dist/lib/node-esm/chunk-7ZYOYW7F.mjs.map +0 -7
  467. package/dist/lib/node-esm/chunk-HJPIYMWD.mjs +0 -1520
  468. package/dist/lib/node-esm/chunk-HJPIYMWD.mjs.map +0 -7
  469. package/dist/lib/node-esm/chunk-O36P4LN5.mjs +0 -200
  470. package/dist/lib/node-esm/chunk-O36P4LN5.mjs.map +0 -7
  471. package/dist/lib/node-esm/chunk-WE6KTH72.mjs +0 -25
  472. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +0 -7
  473. package/dist/lib/node-esm/chunk-XM4BVQQR.mjs +0 -278
  474. package/dist/lib/node-esm/chunk-XM4BVQQR.mjs.map +0 -7
  475. package/dist/lib/node-esm/chunk-XQBL2SBL.mjs +0 -17
  476. package/dist/lib/node-esm/chunk-XQBL2SBL.mjs.map +0 -7
  477. package/dist/lib/node-esm/chunk-YIO5MEPR.mjs +0 -380
  478. package/dist/lib/node-esm/chunk-YIO5MEPR.mjs.map +0 -7
  479. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +0 -19
  480. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +0 -7
  481. package/dist/lib/node-esm/intent-resolver-HQ27YALS.mjs +0 -137
  482. package/dist/lib/node-esm/intent-resolver-HQ27YALS.mjs.map +0 -7
  483. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +0 -18
  484. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +0 -7
  485. package/dist/lib/node-esm/react-surface-UOC3CBPH.mjs +0 -91
  486. package/dist/lib/node-esm/react-surface-UOC3CBPH.mjs.map +0 -7
  487. package/dist/lib/node-esm/settings-7AUVNDM2.mjs +0 -24
  488. package/dist/lib/node-esm/settings-7AUVNDM2.mjs.map +0 -7
  489. package/dist/lib/node-esm/state-XXND44OW.mjs +0 -22
  490. package/dist/lib/node-esm/state-XXND44OW.mjs.map +0 -7
  491. package/dist/lib/node-esm/toolkit-7CH5UNSQ.mjs +0 -22
  492. package/dist/lib/node-esm/toolkit-7CH5UNSQ.mjs.map +0 -7
  493. package/dist/types/src/capabilities/capabilities.d.ts +0 -11
  494. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  495. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  496. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  497. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  498. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  499. package/dist/types/src/components/ChatCompanion.d.ts +0 -13
  500. package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
  501. package/dist/types/src/components/ChatContainer.d.ts +0 -11
  502. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  503. package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
  504. package/dist/types/src/components/ChatThread/reducers.d.ts +0 -40
  505. package/dist/types/src/components/ChatThread/reducers.d.ts.map +0 -1
  506. package/dist/types/src/components/ChatToolbar/ChatToolbar.d.ts +0 -6
  507. package/dist/types/src/components/ChatToolbar/ChatToolbar.d.ts.map +0 -1
  508. package/dist/types/src/components/ChatToolbar/index.d.ts +0 -2
  509. package/dist/types/src/components/ChatToolbar/index.d.ts.map +0 -1
  510. package/dist/types/src/components/ChatToolbar/useChatToolbarActions.d.ts +0 -9
  511. package/dist/types/src/components/ChatToolbar/useChatToolbarActions.d.ts.map +0 -1
  512. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  513. package/dist/types/src/events.d.ts +0 -4
  514. package/dist/types/src/events.d.ts.map +0 -1
  515. package/dist/types/src/functions/analysis.d.ts +0 -5
  516. package/dist/types/src/functions/analysis.d.ts.map +0 -1
  517. package/dist/types/src/functions/index.d.ts +0 -4
  518. package/dist/types/src/functions/index.d.ts.map +0 -1
  519. package/dist/types/src/functions/object-list.d.ts +0 -10
  520. package/dist/types/src/functions/object-list.d.ts.map +0 -1
  521. package/dist/types/src/functions/object-load.d.ts +0 -8
  522. package/dist/types/src/functions/object-load.d.ts.map +0 -1
  523. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  524. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  525. package/dist/types/src/toolkits/AssistantToolkit.d.ts +0 -21
  526. package/dist/types/src/toolkits/AssistantToolkit.d.ts.map +0 -1
  527. package/dist/types/src/toolkits/SystemToolkit.d.ts +0 -69
  528. package/dist/types/src/toolkits/SystemToolkit.d.ts.map +0 -1
  529. package/dist/types/src/toolkits/index.d.ts +0 -3
  530. package/dist/types/src/toolkits/index.d.ts.map +0 -1
  531. package/dist/types/src/types/AssistantAction.d.ts +0 -119
  532. package/dist/types/src/types/AssistantAction.d.ts.map +0 -1
  533. package/src/capabilities/capabilities.ts +0 -18
  534. package/src/capabilities/intent-resolver.ts +0 -121
  535. package/src/components/BlueprintContainer.tsx +0 -30
  536. package/src/components/ChatCompanion.tsx +0 -136
  537. package/src/components/ChatContainer.tsx +0 -51
  538. package/src/components/ChatThread/reducers.ts +0 -151
  539. package/src/components/ChatToolbar/ChatToolbar.tsx +0 -23
  540. package/src/components/ChatToolbar/useChatToolbarActions.ts +0 -126
  541. package/src/components/TemplateEditor/handlebars-extension.ts +0 -166
  542. package/src/events.ts +0 -11
  543. package/src/functions/analysis.ts +0 -22
  544. package/src/functions/index.ts +0 -7
  545. package/src/functions/object-list.ts +0 -48
  546. package/src/functions/object-load.ts +0 -45
  547. package/src/hooks/useItemTypes.ts +0 -37
  548. package/src/toolkits/AssistantToolkit.ts +0 -55
  549. package/src/toolkits/SystemToolkit.ts +0 -292
  550. package/src/toolkits/index.ts +0 -6
  551. package/src/types/AssistantAction.ts +0 -70
  552. /package/dist/lib/browser/{blueprint-definition-AGTDXTXO.mjs.map → blueprints/index.mjs.map} +0 -0
  553. /package/dist/lib/node-esm/{blueprint-definition-CFCUD2VC.mjs.map → blueprints/index.mjs.map} +0 -0
  554. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -2,16 +2,14 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Registry, Rx } from '@effect-rx/rx-react';
6
- import * as Cause from 'effect/Cause';
5
+ import { Atom, Registry } from '@effect-atom/atom-react';
7
6
  import * as Effect from 'effect/Effect';
8
- import * as Exit from 'effect/Exit';
9
7
  import * as Fiber from 'effect/Fiber';
10
8
  import * as Option from 'effect/Option';
11
- import * as Runtime from 'effect/Runtime';
9
+ import * as Stream from 'effect/Stream';
12
10
 
13
11
  import {
14
- AiService,
12
+ type AiService,
15
13
  DEFAULT_EDGE_MODEL,
16
14
  type ModelName,
17
15
  type ModelRegistry,
@@ -19,52 +17,61 @@ import {
19
17
  type ToolResolverService,
20
18
  } from '@dxos/ai';
21
19
  import {
20
+ AiContextService,
22
21
  type AiConversation,
23
- type AiConversationRunParams,
24
- ArtifactDiffResolver,
25
- GenerationObserver,
26
22
  createSystemPrompt,
23
+ formatSystemPrompt,
24
+ AgentService,
25
+ PartialBlock,
27
26
  } from '@dxos/assistant';
27
+ import { type Chat } from '@dxos/assistant-toolkit';
28
28
  import { type Blueprint } from '@dxos/blueprints';
29
- import { Obj } from '@dxos/echo';
30
- import { throwCause } from '@dxos/effect';
29
+ import { type Database, Feed, Obj, Ref } from '@dxos/echo';
31
30
  import {
31
+ Trace,
32
32
  type CredentialsService,
33
- type DatabaseService,
34
33
  type FunctionInvocationService,
35
34
  type QueueService,
36
35
  type TracingService,
37
36
  } from '@dxos/functions';
37
+ import { runAndForwardErrors } from '@dxos/effect';
38
38
  import { log } from '@dxos/log';
39
- import { type ContentBlock, DataType } from '@dxos/schema';
40
-
41
- import { type Assistant } from '../types';
39
+ import { Message } from '@dxos/types';
42
40
 
43
41
  import { updateName } from './update-name';
42
+ import type { AutomationCapabilities } from '@dxos/plugin-automation/types';
44
43
 
44
+ /**
45
+ * @deprecated Services type for the old direct-conversation processor path.
46
+ * Retained for backward compatibility with CLI and update-name.
47
+ */
45
48
  export type AiChatServices =
46
49
  | CredentialsService
47
- | DatabaseService
50
+ | Database.Service
48
51
  | QueueService
49
52
  | FunctionInvocationService
50
53
  | AiService.AiService
51
54
  | ToolExecutionService
52
55
  | ToolResolverService
53
- | TracingService;
56
+ | TracingService
57
+ | Trace.TraceService;
54
58
 
55
59
  export type AiChatProcessorOptions = {
56
60
  model?: ModelName;
57
61
  modelRegistry?: ModelRegistry;
58
62
  blueprintRegistry?: Blueprint.Registry;
59
63
  observableRegistry?: Registry.Registry;
60
- extensions?: ToolContextExtensions;
61
- } & Pick<AiConversationRunParams, 'system'>;
64
+ /**
65
+ * For tracing.
66
+ */
67
+ chat?: Ref.Ref<Chat.Chat>;
68
+ system?: string;
69
+ };
62
70
 
63
71
  const defaultOptions: Partial<AiChatProcessorOptions> = {
64
72
  model: DEFAULT_EDGE_MODEL,
65
73
  };
66
74
 
67
- // TODO(burdon): Retry, timeout?
68
75
  export type AiRequestOptions = {};
69
76
 
70
77
  export type AiRequest = {
@@ -74,55 +81,45 @@ export type AiRequest = {
74
81
 
75
82
  /**
76
83
  * Handles interactions with the AI service.
77
- * Handles streaming responses from the conversation.
84
+ * Uses AgentService to spawn a process-backed agent and subscribes to ephemeral trace events for streaming.
78
85
  */
79
86
  export class AiChatProcessor {
80
- private readonly _rx: Registry.Registry;
87
+ readonly #registry: Registry.Registry;
81
88
 
82
- /** External observer. */
83
- private readonly _observer: GenerationObserver;
89
+ /** Pending messages (finalized, non-streaming). */
90
+ readonly #pending = Atom.make<Message.Message[]>([]);
84
91
 
85
- /** Currently active request fiber. */
86
- private _fiber: Fiber.Fiber<void, any> | undefined;
92
+ /** Currently streaming messages (from ephemeral trace events). */
93
+ readonly #streaming = Atom.make<Message.Message[]>([]);
87
94
 
88
- /** Last request (for retries). */
89
- private _lastRequest: AiRequest | undefined;
95
+ /** Set of message IDs that have been finalized (non-pending delivered via ephemeral). */
96
+ readonly #finalizedIds = new Set<string>();
90
97
 
91
- /** Pending messages (incl. the current user request). */
92
- private readonly _pending = Rx.make<DataType.Message[]>([]);
98
+ /** Currently active request fiber. */
99
+ #requestFiber: Fiber.RuntimeFiber<void, unknown> | undefined;
93
100
 
94
- /** Currently streaming message (from the AI service). */
95
- private readonly _streaming = Rx.make<Option.Option<DataType.Message>>(Option.none());
101
+ /** Last request (for retries). */
102
+ #lastRequest: AiRequest | undefined;
96
103
 
97
104
  /** Streaming state. */
98
- public readonly streaming = Rx.make<boolean>((get) => Option.isSome(get(this._streaming)));
105
+ public readonly streaming = Atom.make<boolean>((get) => get(this.#streaming).length > 0);
99
106
 
100
107
  /** Active state. */
101
- public readonly active = Rx.make(false);
108
+ public readonly active = Atom.make(false);
102
109
 
103
110
  /** Array of Messages (incl. the current message being streamed). */
104
- public readonly messages = Rx.make<DataType.Message[]>((get) =>
105
- Option.match(get(this._streaming), {
106
- onNone: () => get(this._pending),
107
- onSome: (streaming) => [...get(this._pending), streaming],
108
- }),
109
- );
111
+ public readonly messages = Atom.make<Message.Message[]>((get) => [...get(this.#pending), ...get(this.#streaming)]);
110
112
 
111
113
  /** Last error. */
112
- public readonly error = Rx.make<Option.Option<Error>>(Option.none());
114
+ public readonly error = Atom.make<Option.Option<Error>>(Option.none());
113
115
 
114
116
  constructor(
115
117
  private readonly _conversation: AiConversation,
116
- // TODO(dmaretskyi): Replace this with effect's ManagedRuntime wrapping this layer.
117
- private readonly _services: () => Promise<Runtime.Runtime<AiChatServices>>,
118
+ private readonly _runtime: AutomationCapabilities.ComputeRuntime,
119
+ private readonly _feed: Feed.Feed,
118
120
  private readonly _options: AiChatProcessorOptions = defaultOptions,
119
121
  ) {
120
- // Initialize registries and defaults before using in other logic.
121
- this._rx = this._options.observableRegistry ?? Registry.make();
122
- this._observer = GenerationObserver.make({
123
- onBlock: this._onBlock,
124
- onMessage: this._onMessage,
125
- });
122
+ this.#registry = this._options.observableRegistry ?? Registry.make();
126
123
  if (this._options.model && !this._options.system) {
127
124
  const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};
128
125
  this._options.system = createSystemPrompt(capabilities);
@@ -141,54 +138,84 @@ export class AiChatProcessor {
141
138
  return this._options.blueprintRegistry;
142
139
  }
143
140
 
141
+ get system(): string {
142
+ return this._options.system ?? '';
143
+ }
144
+
145
+ async getTools(): Promise<Record<string, any>> {
146
+ return this._runtime.runPromise(this._conversation.getTools());
147
+ }
148
+
149
+ async getSystemPrompt(): Promise<string> {
150
+ return this._runtime.runPromise(
151
+ Effect.gen(this, function* () {
152
+ const blueprints = this.context.getBlueprints();
153
+ const objects = this.context.getObjects();
154
+ return yield* formatSystemPrompt({ system: this._options.system, blueprints, objects });
155
+ }).pipe(Effect.provideService(AiContextService, { binder: this.context }), Effect.orDie),
156
+ );
157
+ }
158
+
144
159
  /**
145
- * Initiates a new request.
160
+ * Initiates a new request via AgentService.
146
161
  */
147
- async request(requestParam: AiRequest): Promise<void> {
148
- if (this._fiber) {
162
+ async request(requestProp: AiRequest): Promise<void> {
163
+ if (this.#requestFiber) {
149
164
  await this.cancel();
150
165
  }
151
166
 
152
167
  try {
153
- this._lastRequest = requestParam;
154
- this._rx.set(this.error, Option.none());
155
- this._rx.set(this.active, true);
156
-
157
- // Create request.
158
- const request = this._conversation.createRequest({
159
- system: this._options.system,
160
- prompt: requestParam.message,
161
- observer: this._observer,
162
- });
163
-
164
- const runtime = await this._services();
168
+ this.#lastRequest = requestProp;
169
+ this.#registry.set(this.error, Option.none());
170
+ this.#registry.set(this.active, true);
171
+
172
+ const effect = Effect.gen(this, function* () {
173
+ const session = yield* AgentService.getSession(this._feed);
174
+
175
+ const ephemeralStream = session.subscribeEphemeral();
176
+ yield* ephemeralStream.pipe(
177
+ Stream.runForEach((message) =>
178
+ Effect.sync(() => {
179
+ for (const event of message.events) {
180
+ if (Trace.isOfType(PartialBlock, event)) {
181
+ this.#handleEphemeralMessage(event.data);
182
+ }
183
+ }
184
+ }),
185
+ ),
186
+ Effect.fork,
187
+ );
165
188
 
166
- // Create fiber.
167
- this._fiber = request.pipe(
168
- Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),
189
+ log('chat processor submitting prompt', { length: requestProp.message.length });
190
+ yield* session.submitPrompt(requestProp.message);
191
+ log('chat processor submitPrompt returned, waiting for agent', {});
192
+ yield* session.waitForCompletion();
193
+ log.info('session complete');
169
194
 
170
- // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.
171
- Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),
195
+ this.#flushStreaming();
196
+ });
172
197
 
173
- Effect.asVoid,
174
- Runtime.runFork(runtime), // Runs in the background.
175
- );
198
+ this.#requestFiber = this._runtime.runFork(effect);
176
199
 
177
- // Execute request.
178
- const response = await this._fiber.pipe(Fiber.join, Effect.runPromiseExit);
179
- if (!Exit.isSuccess(response) && !Cause.isInterruptedOnly(response.cause)) {
180
- throwCause(response.cause);
200
+ try {
201
+ await this._runtime.runPromise(Fiber.join(this.#requestFiber));
202
+ } catch (err: any) {
203
+ if (err._tag === 'InterruptedException' || err.message?.includes('interrupted')) {
204
+ return;
205
+ }
206
+ throw err;
181
207
  }
182
208
 
183
- this._rx.set(this.error, Option.none());
184
- this._lastRequest = undefined;
185
- this._fiber = undefined;
186
- } catch (error) {
187
- log.error('request failed', { error });
188
- this._rx.set(this.error, Option.some(new Error('AI service error', { cause: error })));
209
+ this.#registry.set(this.error, Option.none());
210
+ this.#lastRequest = undefined;
211
+ this.#requestFiber = undefined;
212
+ } catch (err) {
213
+ log.error('request failed', { error: err });
214
+ this.#registry.set(this.error, Option.some(new Error('AI service error', { cause: err })));
189
215
  } finally {
190
- this._fiber = undefined;
191
- this._rx.set(this.active, false);
216
+ log.info('setting active to false');
217
+ this.#registry.set(this.active, false);
218
+ this.#requestFiber = undefined;
192
219
  }
193
220
  }
194
221
 
@@ -196,82 +223,84 @@ export class AiChatProcessor {
196
223
  * Cancels the current request.
197
224
  */
198
225
  async cancel(): Promise<void> {
199
- await Effect.runPromise(
226
+ await runAndForwardErrors(
200
227
  Effect.gen(this, function* () {
201
- if (this._fiber) {
202
- yield* this._fiber.pipe(Fiber.interrupt);
228
+ if (this.#requestFiber) {
229
+ yield* Fiber.interrupt(this.#requestFiber);
203
230
  }
204
231
  }),
205
232
  );
206
233
 
207
- this._fiber = undefined;
208
- this._rx.set(this.active, false);
234
+ this.#requestFiber = undefined;
235
+ this.#registry.set(this.active, false);
209
236
  }
210
237
 
211
238
  /**
212
239
  * Retry last failed request.
213
240
  */
214
241
  async retry(): Promise<void> {
215
- if (this._lastRequest) {
216
- return this.request(this._lastRequest);
242
+ if (this.#lastRequest) {
243
+ return this.request(this.#lastRequest);
217
244
  }
218
245
  }
219
246
 
220
247
  /**
221
248
  * Update the current chat's name.
222
249
  */
223
- async updateName(chat: Assistant.Chat): Promise<void> {
224
- const runtime = await this._services();
250
+ async updateName(chat: Chat.Chat): Promise<void> {
251
+ const runtime = await this._runtime.runPromise(Effect.runtime<any>());
225
252
  await updateName(runtime, this._conversation, chat, this._options.model);
226
253
  }
227
254
 
228
- // TODO(burdon): Fix/factor out.
229
- private _artifactDiffResolver: ArtifactDiffResolver.Service = {
230
- resolve: async (_artifacts) => {
231
- const versions = new Map();
232
- // await Promise.all(
233
- // artifacts.map(async (artifact) => {
234
- // const {
235
- // objects: [object],
236
- // } = await space.db.query(Filter.ids(artifact.id)).run();
237
- // if (!object) {
238
- // return;
239
- // }
240
-
241
- // versions.set(artifact.id, {
242
- // version: getVersion(object),
243
- // diff: `Current state: ${JSON.stringify(object)}`,
244
- // });
245
- // }),
246
- // );
247
-
248
- return versions;
249
- },
250
- };
251
-
252
- private _onMessage = Effect.fn(
253
- function* (this: AiChatProcessor, message: DataType.Message) {
254
- this._rx.set(this._streaming, Option.none());
255
- this._rx.update(this._pending, (pending) => [...pending, message]);
256
- }.bind(this),
257
- );
258
-
259
- private _onBlock = Effect.fn(
260
- function* (this: AiChatProcessor, block: ContentBlock.Any) {
261
- this._rx.update(this._streaming, (streaming) => {
262
- const blocks = streaming.pipe(
263
- Option.map((streaming) => streaming.blocks.filter((b) => !b.pending)),
264
- Option.getOrElse(() => []),
265
- );
255
+ /**
256
+ * Handles an ephemeral message from the agent process.
257
+ * Both pending and completed blocks arrive here. Completed blocks are deduped
258
+ * against messages already written to the feed queue to handle the race between
259
+ * ephemeral delivery and feed replication.
260
+ */
261
+ #handleEphemeralMessage(event: Trace.PayloadType<typeof PartialBlock>) {
262
+ const isPending = event.block.pending;
263
+ const message = Obj.make(Message.Message, {
264
+ id: event.messageId,
265
+ created: new Date().toISOString(),
266
+ sender: { role: event.role },
267
+ blocks: [event.block],
268
+ });
266
269
 
267
- return Option.some(
268
- Obj.make(DataType.Message, {
269
- created: new Date().toISOString(),
270
- sender: { role: 'assistant' },
271
- blocks: [...blocks, block],
272
- }),
273
- );
270
+ if (isPending) {
271
+ if (this.#finalizedIds.has(event.messageId)) {
272
+ return;
273
+ }
274
+ this.#registry.update(this.#streaming, (streaming) => {
275
+ const idx = streaming.findIndex((existing) => existing.id === event.messageId);
276
+ if (idx >= 0) {
277
+ const updated = [...streaming];
278
+ updated[idx] = message;
279
+ return updated;
280
+ }
281
+ return [...streaming, message];
282
+ });
283
+ } else {
284
+ this.#finalizedIds.add(event.messageId);
285
+ this.#registry.update(this.#streaming, (streaming) => streaming.filter((existing) => existing.id !== message.id));
286
+ this.#registry.update(this.#pending, (pending) => {
287
+ if (pending.some((existing) => existing.id === message.id)) {
288
+ return pending;
289
+ }
290
+ return [...pending, message];
274
291
  });
275
- }.bind(this),
276
- );
292
+ }
293
+ }
294
+
295
+ /**
296
+ * Move remaining streaming messages to pending (called when agent completes).
297
+ */
298
+ #flushStreaming() {
299
+ const remaining = this.#registry.get(this.#streaming);
300
+ if (remaining.length > 0) {
301
+ this.#registry.update(this.#pending, (pending) => [...pending, ...remaining]);
302
+ this.#registry.set(this.#streaming, []);
303
+ }
304
+ this.#finalizedIds.clear();
305
+ }
277
306
  }
@@ -9,11 +9,11 @@ import * as Runtime from 'effect/Runtime';
9
9
 
10
10
  import { AiService, DEFAULT_EDGE_MODEL, type ModelName } from '@dxos/ai';
11
11
  import { type AiConversation, AiSession } from '@dxos/assistant';
12
+ import { type Chat } from '@dxos/assistant-toolkit';
13
+ import { Obj } from '@dxos/echo';
12
14
  import { throwCause } from '@dxos/effect';
13
15
  import { trim } from '@dxos/util';
14
16
 
15
- import { type Assistant } from '../types';
16
-
17
17
  import { type AiChatServices } from './processor';
18
18
 
19
19
  /**
@@ -23,8 +23,7 @@ import { type AiChatServices } from './processor';
23
23
  export const updateName = async (
24
24
  runtime: Runtime.Runtime<AiChatServices>,
25
25
  conversation: AiConversation,
26
- chat: Assistant.Chat,
27
- // TODO(burdon): Use simpler model.
26
+ chat: Chat.Chat,
28
27
  model: ModelName = DEFAULT_EDGE_MODEL,
29
28
  ): Promise<void> => {
30
29
  const history = await conversation.getHistory();
@@ -44,7 +43,9 @@ export const updateName = async (
44
43
  const message = messages.find((message) => message.sender.role === 'assistant');
45
44
  const title = message?.blocks.find((block) => block._tag === 'text')?.text;
46
45
  if (title) {
47
- chat.name = title;
46
+ Obj.change(chat, (obj) => {
47
+ obj.name = title;
48
+ });
48
49
  }
49
50
  }),
50
51
  Runtime.runFork(runtime), // Run in the background.
@@ -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
 
@@ -27,7 +23,10 @@ export class QueueLogger implements SequenceLogger {
27
23
  let dxn = this._space.properties.invocationTraceQueue?.dxn;
28
24
  if (!dxn) {
29
25
  dxn = DXN.fromQueue(QueueSubspaceTags.TRACE, this._space.id, Key.ObjectId.random());
30
- this._space.properties.invocationTraceQueue = Ref.fromDXN(dxn);
26
+ const newDxn = dxn;
27
+ Obj.change(this._space.properties, (obj) => {
28
+ obj.invocationTraceQueue = Ref.fromDXN(newDxn);
29
+ });
31
30
  }
32
31
  this._invocationTraceQueue = this._space.queues.get(dxn);
33
32
  }
@@ -5,21 +5,22 @@
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
7
  import { Obj } from '@dxos/echo';
8
- import { ContextQueueService, DatabaseService } from '@dxos/functions';
8
+ import { Database } from '@dxos/echo';
9
+ import { ContextQueueService } from '@dxos/functions';
9
10
  import { faker } from '@dxos/random';
10
11
  import { renderObjectLink } from '@dxos/react-ui-components';
11
- import { type ContentBlock, DataType } from '@dxos/schema';
12
+ import { type Actor, type ContentBlock, Message, Organization } from '@dxos/types';
12
13
  import { trim } from '@dxos/util';
13
14
 
14
- export const createMessage = (role: DataType.ActorRole, blocks: ContentBlock.Any[]): DataType.Message => {
15
- return Obj.make(DataType.Message, {
15
+ export const createMessage = (role: Actor.Role, blocks: ContentBlock.Any[]): Message.Message => {
16
+ return Obj.make(Message.Message, {
16
17
  created: new Date().toISOString(),
17
18
  sender: { role },
18
19
  blocks,
19
20
  });
20
21
  };
21
22
 
22
- export type MessageGenerator = Effect.Effect<void, never, DatabaseService | ContextQueueService>;
23
+ export type MessageGenerator = Effect.Effect<void, never, Database.Service | ContextQueueService>;
23
24
 
24
25
  export const createMessageGenerator = (): MessageGenerator[] => [
25
26
  Effect.gen(function* () {
@@ -70,9 +71,9 @@ export const createMessageGenerator = (): MessageGenerator[] => [
70
71
  [
71
72
  faker.lorem.paragraph(),
72
73
  '',
73
- ...Array.from({ length: faker.number.int({ min: 3, max: 5 }) }).map(
74
- (_, idx) => `${idx + 1}. ${faker.lorem.paragraph()}`,
75
- ),
74
+ ...Array.from({
75
+ length: faker.number.int({ min: 3, max: 5 }),
76
+ }).map((_, idx) => `${idx + 1}. ${faker.lorem.paragraph()}`),
76
77
  ].join('\n') + '\n',
77
78
  },
78
79
  ]),
@@ -145,11 +146,11 @@ export const createMessageGenerator = (): MessageGenerator[] => [
145
146
 
146
147
  Effect.gen(function* () {
147
148
  const { queue } = yield* ContextQueueService;
148
- const { db } = yield* DatabaseService;
149
- const obj1 = db.add(Obj.make(DataType.Organization, { name: 'DXOS' }));
150
- // const obj2 = db.add(Obj.make(DataType.Person, { fullName: 'Alice' }));
151
- // const obj3 = db.add(Obj.make(DataType.Person, { fullName: 'Bob' }));
152
- // const obj4 = db.add(Obj.make(DataType.Person, { fullName: 'Charlie' }));
149
+ const { db } = yield* Database.Service;
150
+ const obj1 = db.add(Obj.make(Organization.Organization, { name: 'DXOS' }));
151
+ // const obj2 = db.add(Obj.make(Person.Person, { fullName: 'Alice' }));
152
+ // const obj3 = db.add(Obj.make(Person.Person, { fullName: 'Bob' }));
153
+ // const obj4 = db.add(Obj.make(Person.Person, { fullName: 'Charlie' }));
153
154
  yield* Effect.promise(() =>
154
155
  queue.append([
155
156
  createMessage('assistant', [
@@ -9,16 +9,16 @@ export const RESEARCH_SEQUENCE_DEFINITION: SequenceDefinition = {
9
9
  steps: [
10
10
  {
11
11
  instructions: 'Research information and entities related to the selected objects.',
12
- tools: [ToolId.make('search/web_search')],
12
+ tools: [ToolId.make('search/web-search')],
13
13
  },
14
14
  {
15
15
  instructions:
16
16
  'Based on your research find matching entires that are already in the graph. Do exaustive research.',
17
- tools: [ToolId.make('search/local_search')],
17
+ tools: [ToolId.make('search/local-search')],
18
18
  },
19
19
  {
20
20
  instructions: 'Add researched data to the graph. Make connections to existing objects.',
21
- tools: [ToolId.make('search/local_search'), ToolId.make('graph/writer')],
21
+ tools: [ToolId.make('search/local-search'), ToolId.make('graph/writer')],
22
22
  },
23
23
  ],
24
24
  };
@@ -2,9 +2,11 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Obj } from '@dxos/echo';
5
+ import { Obj, type Type } from '@dxos/echo';
6
6
 
7
- import { type ApiAuthorization, type BaseServiceRegistry, ServiceType, categoryIcons } from '../types';
7
+ import { type ApiAuthorization, type BaseServiceRegistry, ServiceType, categoryIcons } from '#types';
8
+
9
+ const ServiceTypeSchema = ServiceType as unknown as Type.AnyObj;
8
10
 
9
11
  export class MockServiceRegistry implements BaseServiceRegistry {
10
12
  async queryServices(): Promise<ServiceType[]> {
@@ -48,7 +50,7 @@ const VISUAL_CROSSING_CREDENTIALS: ApiAuthorization = {
48
50
  // - e.g., https://github.com/konfig-sdks/openapi-examples/blob/main/xkcd/openapi.yaml
49
51
 
50
52
  const TEST_SERVICES: ServiceType[] = [
51
- Obj.make(ServiceType, {
53
+ Obj.make(ServiceTypeSchema, {
52
54
  serviceId: 'amadeus.com/service/FlightSearch',
53
55
  name: 'Amadeus Flight Search',
54
56
  description: 'Search for local and international flights.',
@@ -62,7 +64,7 @@ const TEST_SERVICES: ServiceType[] = [
62
64
  ],
63
65
  }),
64
66
 
65
- Obj.make(ServiceType, {
67
+ Obj.make(ServiceTypeSchema, {
66
68
  serviceId: 'amadeus.com/service/HotelSearch',
67
69
  name: 'Amadeus Hotel Search',
68
70
  description: 'Search for local and international hotels.',
@@ -76,7 +78,7 @@ const TEST_SERVICES: ServiceType[] = [
76
78
  ],
77
79
  }),
78
80
 
79
- Obj.make(ServiceType, {
81
+ Obj.make(ServiceTypeSchema, {
80
82
  serviceId: 'visualcrossing.com/service/Weather',
81
83
  name: 'Visual Crossing Weather',
82
84
  description: 'Search for global weather forecasts.',
@@ -91,7 +93,7 @@ const TEST_SERVICES: ServiceType[] = [
91
93
  }),
92
94
 
93
95
  // TODO(burdon): Needs auth.
94
- Obj.make(ServiceType, {
96
+ Obj.make(ServiceTypeSchema, {
95
97
  serviceId: 'abstractapi.com/service/GeoLocation',
96
98
  name: 'Abstract GeoLocation',
97
99
  description: 'Get the location of any IP address.',
@@ -109,7 +111,7 @@ const TEST_SERVICES: ServiceType[] = [
109
111
  //
110
112
 
111
113
  ...Array.from({ length: 20 }, (_, i) =>
112
- Obj.make(ServiceType, {
114
+ Obj.make(ServiceTypeSchema, {
113
115
  serviceId: `example.com/service/test-${i}`,
114
116
  name: `Test ${i}`,
115
117
  description: `Test ${i}`,