@dxos/plugin-assistant 0.8.4-main.c85a9c8dae → 0.8.4-main.dfabb4ec29

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 (754) hide show
  1. package/dist/lib/neutral/AgentArticle-LDV6UTSH.mjs +168 -0
  2. package/dist/lib/neutral/AgentArticle-LDV6UTSH.mjs.map +7 -0
  3. package/dist/lib/neutral/AgentProperties-H535EM5S.mjs +100 -0
  4. package/dist/lib/neutral/AgentProperties-H535EM5S.mjs.map +7 -0
  5. package/dist/lib/neutral/AssistantPlugin.mjs +99 -0
  6. package/dist/lib/neutral/AssistantPlugin.mjs.map +7 -0
  7. package/dist/lib/neutral/AssistantPlugin.node.mjs +46 -0
  8. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +7 -0
  9. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +40 -0
  10. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs.map +7 -0
  11. package/dist/lib/{browser/BlueprintArticle-CCS25MNW.mjs → neutral/BlueprintArticle-U7LUBFOS.mjs} +6 -15
  12. package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs.map +7 -0
  13. package/dist/lib/neutral/ChatCompanion-6LC7YCV6.mjs +130 -0
  14. package/dist/lib/neutral/ChatCompanion-6LC7YCV6.mjs.map +7 -0
  15. package/dist/lib/neutral/ChatContainer-X3R4ALHT.mjs +8 -0
  16. package/dist/lib/{browser/ChatDialog-AET7GVIB.mjs → neutral/ChatDialog-QKZLG7SQ.mjs} +13 -26
  17. package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs.map +7 -0
  18. package/dist/lib/{browser/PromptArticle-USQO4WX6.mjs → neutral/RoutineArticle-6LC3P7OB.mjs} +15 -31
  19. package/dist/lib/neutral/RoutineArticle-6LC3P7OB.mjs.map +7 -0
  20. package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs +48 -0
  21. package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs.map +7 -0
  22. package/dist/lib/neutral/TracePanel-HYVPDIAA.mjs +565 -0
  23. package/dist/lib/neutral/TracePanel-HYVPDIAA.mjs.map +7 -0
  24. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs +92 -0
  25. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs.map +7 -0
  26. package/dist/lib/{browser/ai-service-CY2BYPH6.mjs → neutral/ai-service-GJXMI5OI.mjs} +2 -2
  27. package/dist/lib/{browser/ai-service-CY2BYPH6.mjs.map → neutral/ai-service-GJXMI5OI.mjs.map} +3 -3
  28. package/dist/lib/neutral/app-graph-builder-XZJDJ3LJ.mjs +189 -0
  29. package/dist/lib/neutral/app-graph-builder-XZJDJ3LJ.mjs.map +7 -0
  30. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs +32 -0
  31. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs.map +7 -0
  32. package/dist/lib/{browser → neutral}/blueprints/index.mjs +1 -1
  33. package/dist/lib/neutral/capabilities/index.mjs +35 -0
  34. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  35. package/dist/lib/{browser/chunk-EXVT7D4B.mjs → neutral/chunk-4CQZCMRP.mjs} +7 -5
  36. package/dist/lib/neutral/chunk-4CQZCMRP.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-5H6UJHLF.mjs +30 -0
  38. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-CM3XQU2M.mjs +8 -0
  40. package/dist/lib/neutral/chunk-CM3XQU2M.mjs.map +7 -0
  41. package/dist/lib/neutral/chunk-F7VUML5H.mjs +104 -0
  42. package/dist/lib/neutral/chunk-F7VUML5H.mjs.map +7 -0
  43. package/dist/lib/neutral/chunk-VHPTYKYD.mjs +361 -0
  44. package/dist/lib/neutral/chunk-VHPTYKYD.mjs.map +7 -0
  45. package/dist/lib/neutral/companion-chat-provisioner-5N4HWNVJ.mjs +116 -0
  46. package/dist/lib/neutral/companion-chat-provisioner-5N4HWNVJ.mjs.map +7 -0
  47. package/dist/lib/neutral/components/index.mjs +2240 -0
  48. package/dist/lib/neutral/components/index.mjs.map +7 -0
  49. package/dist/lib/neutral/containers/index.mjs +27 -0
  50. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  51. package/dist/lib/neutral/create-chat-AEFFQYHT.mjs +71 -0
  52. package/dist/lib/neutral/create-chat-AEFFQYHT.mjs.map +7 -0
  53. package/dist/lib/neutral/create-object-VV5AO6D2.mjs +93 -0
  54. package/dist/lib/neutral/create-object-VV5AO6D2.mjs.map +7 -0
  55. package/dist/lib/{browser/edge-model-resolver-YTMFQEN5.mjs → neutral/edge-model-resolver-XDNBZ3US.mjs} +2 -2
  56. package/dist/lib/{browser/edge-model-resolver-YTMFQEN5.mjs.map → neutral/edge-model-resolver-XDNBZ3US.mjs.map} +3 -3
  57. package/dist/lib/neutral/ensure-companion-chat-EWF5GEZI.mjs +58 -0
  58. package/dist/lib/neutral/ensure-companion-chat-EWF5GEZI.mjs.map +7 -0
  59. package/dist/lib/neutral/hooks/index.mjs +930 -0
  60. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  61. package/dist/lib/neutral/index.mjs +32 -0
  62. package/dist/lib/{browser/local-model-resolver-CGRQH37T.mjs → neutral/local-model-resolver-I2BENFFS.mjs} +8 -4
  63. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +7 -0
  64. package/dist/lib/neutral/markdown-KTBFOMFM.mjs +110 -0
  65. package/dist/lib/neutral/markdown-KTBFOMFM.mjs.map +7 -0
  66. package/dist/lib/neutral/meta.json +1 -0
  67. package/dist/lib/neutral/meta.mjs +12 -0
  68. package/dist/lib/neutral/migrations-LOYUJDNX.mjs +28 -0
  69. package/dist/lib/neutral/migrations-LOYUJDNX.mjs.map +7 -0
  70. package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs +19 -0
  71. package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs.map +7 -0
  72. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs +13 -0
  73. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs.map +7 -0
  74. package/dist/lib/neutral/operations/index.mjs +8 -0
  75. package/dist/lib/neutral/plugin.mjs +16 -0
  76. package/dist/lib/neutral/plugin.mjs.map +7 -0
  77. package/dist/lib/neutral/react-surface-JWFECJJ5.mjs +165 -0
  78. package/dist/lib/neutral/react-surface-JWFECJJ5.mjs.map +7 -0
  79. package/dist/lib/neutral/resolve-navigation-targets-VXBSWV5L.mjs +20 -0
  80. package/dist/lib/neutral/resolve-navigation-targets-VXBSWV5L.mjs.map +7 -0
  81. package/dist/lib/neutral/run-prompt-in-new-chat-ZMWSWGXL.mjs +100 -0
  82. package/dist/lib/neutral/run-prompt-in-new-chat-ZMWSWGXL.mjs.map +7 -0
  83. package/dist/lib/neutral/set-current-chat-ZFDCYK5I.mjs +48 -0
  84. package/dist/lib/neutral/set-current-chat-ZFDCYK5I.mjs.map +7 -0
  85. package/dist/lib/{browser/settings-YREVQAZ5.mjs → neutral/settings-W4BLWQ53.mjs} +6 -11
  86. package/dist/lib/neutral/settings-W4BLWQ53.mjs.map +7 -0
  87. package/dist/lib/neutral/state-H3G7QCU6.mjs +28 -0
  88. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +7 -0
  89. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs +14 -0
  90. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs.map +7 -0
  91. package/dist/lib/neutral/translations.mjs +173 -0
  92. package/dist/lib/neutral/translations.mjs.map +7 -0
  93. package/dist/lib/neutral/types/index.mjs +20 -0
  94. package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs +54 -0
  95. package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs.map +7 -0
  96. package/dist/types/src/AssistantPlugin.d.ts +1 -0
  97. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  98. package/dist/types/src/AssistantPlugin.node.d.ts +4 -0
  99. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -0
  100. package/dist/types/src/AssistantPlugin.test.d.ts +2 -0
  101. package/dist/types/src/AssistantPlugin.test.d.ts.map +1 -0
  102. package/dist/types/src/blueprints/assistant/blueprint.d.ts +2 -2
  103. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  106. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  107. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  108. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +9 -0
  109. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -0
  110. package/dist/types/src/capabilities/create-object.d.ts +31 -0
  111. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/index.d.ts +55 -11
  114. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/local-model-resolver.d.ts +16 -0
  116. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/{repair/repair.d.ts → markdown.d.ts} +2 -3
  118. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/migrations.d.ts +5 -0
  120. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  122. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  124. package/dist/types/src/capabilities/settings.d.ts +6 -0
  125. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  126. package/dist/types/src/capabilities/state.d.ts +21 -0
  127. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  128. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  129. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +6 -0
  130. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -0
  131. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +15 -0
  132. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -0
  133. package/dist/types/src/components/AssistantSettings/index.d.ts +2 -0
  134. package/dist/types/src/components/AssistantSettings/index.d.ts.map +1 -0
  135. package/dist/types/src/components/Chat/Chat.d.ts +37 -47
  136. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  137. package/dist/types/src/components/Chat/context.d.ts +29 -0
  138. package/dist/types/src/components/Chat/context.d.ts.map +1 -0
  139. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -1
  140. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  141. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts +12 -0
  142. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts.map +1 -0
  143. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +6 -2
  144. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  145. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +19 -0
  146. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -0
  147. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  148. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +28 -0
  149. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -0
  150. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  151. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts +20 -0
  152. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts.map +1 -0
  153. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  154. package/dist/types/src/components/ChatPrompt/index.d.ts +3 -0
  155. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  156. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts +14 -0
  157. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -0
  158. package/dist/types/src/components/ChatThread/ChatThread.d.ts +6 -3
  159. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  160. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +8 -427
  161. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  162. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  163. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +42 -0
  164. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -0
  165. package/dist/types/src/components/ChatThread/registry.d.ts +18 -0
  166. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  167. package/dist/types/src/components/ChatThread/sync.d.ts +44 -17
  168. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  169. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts +18 -0
  170. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -0
  171. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts +2 -0
  172. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts.map +1 -0
  173. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +8 -0
  174. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -0
  175. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts +25 -0
  176. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -0
  177. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +18 -0
  178. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -0
  179. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts +9 -0
  180. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -0
  181. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts +14 -0
  182. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -0
  183. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts +12 -0
  184. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -0
  185. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +12 -0
  186. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -0
  187. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts +11 -0
  188. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -0
  189. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts +5 -0
  190. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -0
  191. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts +9 -0
  192. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -0
  193. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts +15 -0
  194. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -0
  195. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +5 -0
  196. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -0
  197. package/dist/types/src/components/ChatThread/widgets/index.d.ts +10 -0
  198. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -0
  199. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +11 -0
  200. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -0
  201. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +7 -0
  202. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -0
  203. package/dist/types/src/components/ProcessTree/index.d.ts +2 -0
  204. package/dist/types/src/components/ProcessTree/index.d.ts.map +1 -0
  205. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +6 -5
  206. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  207. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +1 -419
  208. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  209. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +4 -5
  210. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  211. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +2 -420
  212. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  213. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -1
  214. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -1
  215. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +4 -13
  216. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  217. package/dist/types/src/components/Toolbox/Toolbox.d.ts +11 -9
  218. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  219. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -419
  220. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  221. package/dist/types/src/components/index.d.ts +3 -0
  222. package/dist/types/src/components/index.d.ts.map +1 -1
  223. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +6 -0
  224. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -0
  225. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +21 -0
  226. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -0
  227. package/dist/types/src/containers/AgentArticle/index.d.ts +2 -0
  228. package/dist/types/src/containers/AgentArticle/index.d.ts.map +1 -0
  229. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +6 -0
  230. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -0
  231. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts +16 -0
  232. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts.map +1 -0
  233. package/dist/types/src/containers/AgentProperties/index.d.ts +2 -0
  234. package/dist/types/src/containers/AgentProperties/index.d.ts.map +1 -0
  235. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +4 -4
  236. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -1
  237. package/dist/types/src/containers/BlueprintArticle/index.d.ts +1 -2
  238. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -1
  239. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +14 -8
  240. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  241. package/dist/types/src/containers/ChatCompanion/index.d.ts +1 -2
  242. package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -1
  243. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +6 -12
  244. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -1
  245. package/dist/types/src/containers/ChatContainer/index.d.ts +1 -2
  246. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -1
  247. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  248. package/dist/types/src/containers/ChatDialog/index.d.ts +1 -2
  249. package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -1
  250. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +6 -0
  251. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
  252. package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
  253. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +1 -0
  254. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +6 -0
  255. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +1 -0
  256. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +21 -0
  257. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +1 -0
  258. package/dist/types/src/containers/RoutineList/index.d.ts +2 -0
  259. package/dist/types/src/containers/RoutineList/index.d.ts.map +1 -0
  260. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +8 -0
  261. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -0
  262. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts +13 -0
  263. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -0
  264. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +19 -0
  265. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -0
  266. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts +2 -0
  267. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts.map +1 -0
  268. package/dist/types/src/containers/TracePanel/execution-graph.d.ts +97 -0
  269. package/dist/types/src/containers/TracePanel/execution-graph.d.ts.map +1 -0
  270. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts +2 -0
  271. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts.map +1 -0
  272. package/dist/types/src/containers/TracePanel/index.d.ts +4 -0
  273. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -0
  274. package/dist/types/src/containers/TracePanel/testing/index.d.ts +3 -0
  275. package/dist/types/src/containers/TracePanel/testing/index.d.ts.map +1 -0
  276. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +14 -0
  277. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -0
  278. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts +12 -0
  279. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts.map +1 -0
  280. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +3 -2
  281. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  282. package/dist/types/src/containers/TriggerStatus/index.d.ts +1 -2
  283. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -1
  284. package/dist/types/src/containers/index.d.ts +5 -3
  285. package/dist/types/src/containers/index.d.ts.map +1 -1
  286. package/dist/types/src/extensions/index.d.ts +2 -0
  287. package/dist/types/src/extensions/index.d.ts.map +1 -0
  288. package/dist/types/src/extensions/prompt-extension.d.ts +10 -0
  289. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -0
  290. package/dist/types/src/hooks/index.d.ts +2 -0
  291. package/dist/types/src/hooks/index.d.ts.map +1 -1
  292. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +1 -1
  293. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  294. package/dist/types/src/hooks/useChatKeymap.d.ts +12 -0
  295. package/dist/types/src/hooks/useChatKeymap.d.ts.map +1 -0
  296. package/dist/types/src/hooks/useChatProcessor.d.ts +6 -6
  297. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  298. package/dist/types/src/hooks/useChatServices.d.ts +3 -6
  299. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  300. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
  301. package/dist/types/src/hooks/useContextBinder.d.ts +3 -2
  302. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  303. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  304. package/dist/types/src/hooks/useDebug.d.ts +10 -0
  305. package/dist/types/src/hooks/useDebug.d.ts.map +1 -0
  306. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
  307. package/dist/types/src/hooks/useFlush.d.ts +1 -1
  308. package/dist/types/src/hooks/useFlush.d.ts.map +1 -1
  309. package/dist/types/src/hooks/usePresets.d.ts +1 -1
  310. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  311. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  312. package/dist/types/src/index.d.ts +0 -5
  313. package/dist/types/src/index.d.ts.map +1 -1
  314. package/dist/types/src/meta.d.ts +2 -0
  315. package/dist/types/src/meta.d.ts.map +1 -1
  316. package/dist/types/src/operations/create-chat.d.ts +5 -0
  317. package/dist/types/src/operations/create-chat.d.ts.map +1 -0
  318. package/dist/types/src/operations/ensure-companion-chat.d.ts +5 -0
  319. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -0
  320. package/dist/types/src/operations/index.d.ts +3 -0
  321. package/dist/types/src/operations/index.d.ts.map +1 -0
  322. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  323. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  324. package/dist/types/src/operations/prompt.test.d.ts +2 -0
  325. package/dist/types/src/operations/prompt.test.d.ts.map +1 -0
  326. package/dist/types/src/operations/resolve-navigation-targets.d.ts +15 -0
  327. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -0
  328. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +5 -0
  329. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -0
  330. package/dist/types/src/operations/set-current-chat.d.ts +5 -0
  331. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -0
  332. package/dist/types/src/operations/update-chat-name.d.ts +5 -0
  333. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -0
  334. package/dist/types/src/plugin.d.ts +4 -0
  335. package/dist/types/src/plugin.d.ts.map +1 -0
  336. package/dist/types/src/processor/index.d.ts +0 -1
  337. package/dist/types/src/processor/index.d.ts.map +1 -1
  338. package/dist/types/src/processor/presets.d.ts +1 -1
  339. package/dist/types/src/processor/presets.d.ts.map +1 -1
  340. package/dist/types/src/processor/processor.d.ts +49 -30
  341. package/dist/types/src/processor/processor.d.ts.map +1 -1
  342. package/dist/types/src/queue-logger.d.ts.map +1 -1
  343. package/dist/types/src/testing/index.d.ts +1 -0
  344. package/dist/types/src/testing/index.d.ts.map +1 -1
  345. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  346. package/dist/types/src/testing/test-generator.test.d.ts +2 -0
  347. package/dist/types/src/testing/test-generator.test.d.ts.map +1 -0
  348. package/dist/types/src/testing/test-services.d.ts +1 -1
  349. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  350. package/dist/types/src/testing/test-trace.d.ts +5 -0
  351. package/dist/types/src/testing/test-trace.d.ts.map +1 -0
  352. package/dist/types/src/testing/trace-timeline.test.d.ts +2 -0
  353. package/dist/types/src/testing/trace-timeline.test.d.ts.map +1 -0
  354. package/dist/types/src/translations.d.ts +2 -419
  355. package/dist/types/src/translations.d.ts.map +1 -1
  356. package/dist/types/src/types/Assistant.d.ts +30 -14
  357. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  358. package/dist/types/src/types/AssistantCapabilities.d.ts +30 -0
  359. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -0
  360. package/dist/types/src/types/AssistantEvents.d.ts +3 -0
  361. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -0
  362. package/dist/types/src/types/AssistantOperation.d.ts +142 -0
  363. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -0
  364. package/dist/types/src/types/Settings.d.ts +26 -0
  365. package/dist/types/src/types/Settings.d.ts.map +1 -0
  366. package/dist/types/src/types/index.d.ts +3 -4
  367. package/dist/types/src/types/index.d.ts.map +1 -1
  368. package/dist/types/src/types/service.d.ts +1 -1
  369. package/dist/types/src/types/service.d.ts.map +1 -1
  370. package/dist/types/tsconfig.tsbuildinfo +1 -1
  371. package/package.json +165 -109
  372. package/src/AssistantPlugin.node.ts +44 -0
  373. package/src/AssistantPlugin.test.ts +35 -0
  374. package/src/AssistantPlugin.ts +126 -0
  375. package/src/blueprints/assistant/blueprint.test.ts +15 -17
  376. package/src/blueprints/assistant/blueprint.ts +11 -7
  377. package/src/capabilities/app-graph-builder.ts +192 -0
  378. package/src/capabilities/blueprint-definition.ts +56 -0
  379. package/src/capabilities/companion-chat-provisioner.ts +163 -0
  380. package/src/capabilities/create-object.ts +107 -0
  381. package/src/capabilities/index.ts +24 -11
  382. package/src/capabilities/{local-model-resolver/local-model-resolver.ts → local-model-resolver.ts} +14 -4
  383. package/src/capabilities/markdown.ts +40 -0
  384. package/src/capabilities/migrations.ts +28 -0
  385. package/src/capabilities/operation-handler.ts +16 -0
  386. package/src/capabilities/react-surface.tsx +167 -0
  387. package/src/capabilities/{settings/settings.ts → settings.ts} +2 -2
  388. package/src/capabilities/{state/state.ts → state.ts} +11 -3
  389. package/src/capabilities/{toolkit/toolkit.ts → toolkit.ts} +2 -4
  390. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +35 -0
  391. package/src/components/AssistantSettings/AssistantSettings.tsx +43 -0
  392. package/src/components/AssistantSettings/index.ts +5 -0
  393. package/src/components/Chat/Chat.tsx +96 -294
  394. package/src/components/Chat/context.ts +39 -0
  395. package/src/components/ChatPrompt/ChatActions.tsx +28 -16
  396. package/src/components/ChatPrompt/ChatMcpErrors.tsx +50 -0
  397. package/src/components/ChatPrompt/ChatOptions.stories.tsx +136 -0
  398. package/src/components/ChatPrompt/ChatOptions.tsx +239 -53
  399. package/src/components/ChatPrompt/ChatPrompt.tsx +182 -0
  400. package/src/components/ChatPrompt/ChatReferences.tsx +4 -4
  401. package/src/components/ChatPrompt/ChatStatus.tsx +123 -0
  402. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
  403. package/src/components/ChatPrompt/index.ts +3 -0
  404. package/src/components/ChatThread/Anchor.stories.tsx +95 -0
  405. package/src/components/ChatThread/ChatThread.stories.tsx +60 -67
  406. package/src/components/ChatThread/ChatThread.tsx +46 -29
  407. package/src/components/ChatThread/DEBUG.md +41 -0
  408. package/src/components/ChatThread/MarkdownStream.stories.tsx +281 -0
  409. package/src/components/ChatThread/registry.tsx +148 -65
  410. package/src/components/ChatThread/sync.test.ts +186 -28
  411. package/src/components/ChatThread/sync.ts +93 -103
  412. package/src/components/ChatThread/testing/reasoning.md +25 -0
  413. package/src/components/ChatThread/testing/thinking.md +21 -0
  414. package/src/components/ChatThread/testing/thread-1.md +30 -0
  415. package/src/components/ChatThread/testing/{thread.md → thread-2.md} +19 -0
  416. package/src/components/ChatThread/testing/thread-widgets.md +79 -0
  417. package/src/components/ChatThread/tool-widget-state.test.ts +34 -0
  418. package/src/components/ChatThread/tool-widget-state.ts +48 -0
  419. package/src/components/ChatThread/widgets/FallbackWidget.tsx +26 -0
  420. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +68 -0
  421. package/src/components/ChatThread/widgets/ReasoningWidget.ts +133 -0
  422. package/src/components/ChatThread/widgets/ReferenceWidget.ts +33 -0
  423. package/src/components/ChatThread/widgets/SelectWidget.ts +39 -0
  424. package/src/components/ChatThread/widgets/StatsWidget.ts +31 -0
  425. package/src/components/ChatThread/widgets/StatusWidget.ts +53 -0
  426. package/src/components/ChatThread/widgets/SuggestionWidget.ts +41 -0
  427. package/src/components/ChatThread/widgets/SummaryWidget.tsx +27 -0
  428. package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +55 -0
  429. package/src/components/ChatThread/widgets/ToolWidget.tsx +156 -0
  430. package/src/components/ChatThread/widgets/defaults.ts +8 -0
  431. package/src/components/ChatThread/widgets/index.ts +13 -0
  432. package/src/components/ProcessTree/ProcessTree.stories.tsx +83 -0
  433. package/src/components/ProcessTree/ProcessTree.tsx +119 -0
  434. package/src/components/ProcessTree/index.ts +5 -0
  435. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +5 -9
  436. package/src/components/TemplateEditor/TemplateEditor.tsx +51 -43
  437. package/src/components/TemplateEditor/TemplateForm.stories.tsx +8 -10
  438. package/src/components/TemplateEditor/TemplateForm.tsx +52 -73
  439. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +1 -1
  440. package/src/components/ToolBlock/ToolBlock.tsx +20 -19
  441. package/src/components/Toolbox/Toolbox.stories.tsx +7 -8
  442. package/src/components/Toolbox/Toolbox.tsx +64 -57
  443. package/src/components/index.ts +5 -0
  444. package/src/containers/AgentArticle/AgentArticle.stories.tsx +120 -0
  445. package/src/containers/AgentArticle/AgentArticle.tsx +200 -0
  446. package/src/containers/AgentArticle/index.ts +5 -0
  447. package/src/containers/AgentProperties/AgentProperties.stories.tsx +101 -0
  448. package/src/containers/AgentProperties/AgentProperties.tsx +127 -0
  449. package/src/containers/AgentProperties/index.ts +5 -0
  450. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +7 -8
  451. package/src/containers/BlueprintArticle/index.ts +1 -3
  452. package/src/containers/ChatCompanion/ChatCompanion.tsx +26 -122
  453. package/src/containers/ChatCompanion/index.ts +1 -3
  454. package/src/containers/ChatContainer/ChatContainer.tsx +61 -25
  455. package/src/containers/ChatContainer/index.ts +1 -3
  456. package/src/containers/ChatDialog/ChatDialog.tsx +8 -14
  457. package/src/containers/ChatDialog/index.ts +1 -3
  458. package/src/containers/{PromptArticle/PromptArticle.tsx → RoutineArticle/RoutineArticle.tsx} +14 -14
  459. package/src/containers/RoutineArticle/index.ts +5 -0
  460. package/src/containers/RoutineList/RoutineList.stories.tsx +130 -0
  461. package/src/containers/RoutineList/RoutineList.tsx +50 -0
  462. package/src/containers/RoutineList/index.ts +5 -0
  463. package/src/containers/TracePanel/TracePanel.stories.tsx +285 -0
  464. package/src/containers/TracePanel/TracePanel.tsx +167 -0
  465. package/src/containers/TracePanel/dxn-extractor.test.ts +153 -0
  466. package/src/containers/TracePanel/dxn-extractor.ts +178 -0
  467. package/src/containers/TracePanel/execution-graph.test.ts +382 -0
  468. package/src/containers/TracePanel/execution-graph.ts +621 -0
  469. package/src/containers/TracePanel/index.ts +9 -0
  470. package/src/containers/TracePanel/testing/index.ts +6 -0
  471. package/src/containers/TracePanel/testing/simulated-agent.ts +114 -0
  472. package/src/containers/TracePanel/testing/snapshot-playback.ts +45 -0
  473. package/src/containers/TriggerStatus/TriggerStatus.tsx +41 -62
  474. package/src/containers/TriggerStatus/index.ts +1 -3
  475. package/src/containers/index.ts +5 -4
  476. package/src/extensions/index.ts +5 -0
  477. package/src/extensions/prompt-extension.ts +111 -0
  478. package/src/hooks/index.ts +2 -0
  479. package/src/hooks/useBlueprintRegistry.ts +2 -1
  480. package/src/hooks/useChatKeymap.ts +52 -0
  481. package/src/hooks/useChatProcessor.ts +36 -24
  482. package/src/hooks/useChatServices.ts +5 -26
  483. package/src/hooks/useChatToolbarActions.ts +9 -9
  484. package/src/hooks/useContextBinder.ts +17 -6
  485. package/src/hooks/useContextObjects.ts +8 -4
  486. package/src/hooks/useDebug.ts +38 -0
  487. package/src/hooks/useFilteredTypes.ts +1 -1
  488. package/src/hooks/usePresets.ts +2 -1
  489. package/src/index.ts +0 -6
  490. package/src/meta.ts +6 -3
  491. package/src/operations/create-chat.ts +78 -0
  492. package/src/operations/ensure-companion-chat.ts +63 -0
  493. package/src/operations/index.ts +15 -0
  494. package/src/operations/on-create-space.ts +24 -0
  495. package/src/operations/prompt.test.ts +77 -0
  496. package/src/operations/resolve-navigation-targets.ts +26 -0
  497. package/src/operations/run-prompt-in-new-chat.ts +112 -0
  498. package/src/operations/set-current-chat.ts +49 -0
  499. package/src/operations/update-chat-name.ts +61 -0
  500. package/src/plugin.ts +11 -0
  501. package/src/processor/index.ts +0 -1
  502. package/src/processor/presets.ts +11 -3
  503. package/src/processor/processor.test.ts +18 -51
  504. package/src/processor/processor.ts +214 -158
  505. package/src/queue-logger.ts +19 -8
  506. package/src/testing/data/trace-timeline.dx.json +4657 -0
  507. package/src/testing/index.ts +1 -0
  508. package/src/testing/test-generator.test.ts +81 -0
  509. package/src/testing/test-generator.ts +79 -42
  510. package/src/testing/test-services.ts +1 -1
  511. package/src/testing/test-trace.ts +20 -0
  512. package/src/testing/trace-timeline.conversations.json +1 -0
  513. package/src/testing/trace-timeline.test.ts +250 -0
  514. package/src/translations.ts +152 -106
  515. package/src/types/Assistant.ts +16 -18
  516. package/src/types/AssistantCapabilities.ts +35 -0
  517. package/src/types/AssistantEvents.ts +11 -0
  518. package/src/types/AssistantOperation.ts +128 -0
  519. package/src/types/Settings.ts +76 -0
  520. package/src/types/index.ts +5 -4
  521. package/src/types/service.ts +3 -3
  522. package/dist/lib/browser/AssistantSettings-2LFAG5OQ.mjs +0 -93
  523. package/dist/lib/browser/AssistantSettings-2LFAG5OQ.mjs.map +0 -7
  524. package/dist/lib/browser/BlueprintArticle-CCS25MNW.mjs.map +0 -7
  525. package/dist/lib/browser/ChatCompanion-UGD4V34A.mjs +0 -202
  526. package/dist/lib/browser/ChatCompanion-UGD4V34A.mjs.map +0 -7
  527. package/dist/lib/browser/ChatContainer-ZGRSZ5EU.mjs +0 -12
  528. package/dist/lib/browser/ChatDialog-AET7GVIB.mjs.map +0 -7
  529. package/dist/lib/browser/ProjectArticle-QDBTIFNE.mjs +0 -91
  530. package/dist/lib/browser/ProjectArticle-QDBTIFNE.mjs.map +0 -7
  531. package/dist/lib/browser/ProjectSettings-R6RRARLO.mjs +0 -194
  532. package/dist/lib/browser/ProjectSettings-R6RRARLO.mjs.map +0 -7
  533. package/dist/lib/browser/PromptArticle-USQO4WX6.mjs.map +0 -7
  534. package/dist/lib/browser/TriggerStatus-65X3EUSN.mjs +0 -122
  535. package/dist/lib/browser/TriggerStatus-65X3EUSN.mjs.map +0 -7
  536. package/dist/lib/browser/app-graph-builder-SFYYUKTT.mjs +0 -234
  537. package/dist/lib/browser/app-graph-builder-SFYYUKTT.mjs.map +0 -7
  538. package/dist/lib/browser/blueprint-definition-RB5RHZZM.mjs +0 -34
  539. package/dist/lib/browser/blueprint-definition-RB5RHZZM.mjs.map +0 -7
  540. package/dist/lib/browser/chunk-7DXYAXLZ.mjs +0 -230
  541. package/dist/lib/browser/chunk-7DXYAXLZ.mjs.map +0 -7
  542. package/dist/lib/browser/chunk-EXVT7D4B.mjs.map +0 -7
  543. package/dist/lib/browser/chunk-JYY5AD65.mjs +0 -286
  544. package/dist/lib/browser/chunk-JYY5AD65.mjs.map +0 -7
  545. package/dist/lib/browser/chunk-LEXIQDXZ.mjs +0 -26
  546. package/dist/lib/browser/chunk-LEXIQDXZ.mjs.map +0 -7
  547. package/dist/lib/browser/chunk-RU4G5NY4.mjs +0 -69
  548. package/dist/lib/browser/chunk-RU4G5NY4.mjs.map +0 -7
  549. package/dist/lib/browser/chunk-UUA6GNGG.mjs +0 -2125
  550. package/dist/lib/browser/chunk-UUA6GNGG.mjs.map +0 -7
  551. package/dist/lib/browser/index.mjs +0 -386
  552. package/dist/lib/browser/index.mjs.map +0 -7
  553. package/dist/lib/browser/local-model-resolver-CGRQH37T.mjs.map +0 -7
  554. package/dist/lib/browser/meta.json +0 -1
  555. package/dist/lib/browser/operation-resolver-ELXDQZEG.mjs +0 -136
  556. package/dist/lib/browser/operation-resolver-ELXDQZEG.mjs.map +0 -7
  557. package/dist/lib/browser/react-surface-KYQSZO2I.mjs +0 -144
  558. package/dist/lib/browser/react-surface-KYQSZO2I.mjs.map +0 -7
  559. package/dist/lib/browser/repair-ZFZWZALX.mjs +0 -52
  560. package/dist/lib/browser/repair-ZFZWZALX.mjs.map +0 -7
  561. package/dist/lib/browser/settings-YREVQAZ5.mjs.map +0 -7
  562. package/dist/lib/browser/state-MPG42ZO4.mjs +0 -26
  563. package/dist/lib/browser/state-MPG42ZO4.mjs.map +0 -7
  564. package/dist/lib/browser/toolkit-XRSBBB3L.mjs +0 -16
  565. package/dist/lib/browser/toolkit-XRSBBB3L.mjs.map +0 -7
  566. package/dist/lib/browser/types/index.mjs +0 -23
  567. package/dist/lib/node-esm/AssistantSettings-QWFEMJG7.mjs +0 -94
  568. package/dist/lib/node-esm/AssistantSettings-QWFEMJG7.mjs.map +0 -7
  569. package/dist/lib/node-esm/BlueprintArticle-SNEN6LOY.mjs +0 -37
  570. package/dist/lib/node-esm/BlueprintArticle-SNEN6LOY.mjs.map +0 -7
  571. package/dist/lib/node-esm/ChatCompanion-NP4R5BFE.mjs +0 -203
  572. package/dist/lib/node-esm/ChatCompanion-NP4R5BFE.mjs.map +0 -7
  573. package/dist/lib/node-esm/ChatContainer-IFHDIFJH.mjs +0 -13
  574. package/dist/lib/node-esm/ChatDialog-UZNQBTKZ.mjs +0 -86
  575. package/dist/lib/node-esm/ChatDialog-UZNQBTKZ.mjs.map +0 -7
  576. package/dist/lib/node-esm/ProjectArticle-BCIBESJN.mjs +0 -92
  577. package/dist/lib/node-esm/ProjectArticle-BCIBESJN.mjs.map +0 -7
  578. package/dist/lib/node-esm/ProjectSettings-Q5QY6BYS.mjs +0 -195
  579. package/dist/lib/node-esm/ProjectSettings-Q5QY6BYS.mjs.map +0 -7
  580. package/dist/lib/node-esm/PromptArticle-PGMJMQK7.mjs +0 -72
  581. package/dist/lib/node-esm/PromptArticle-PGMJMQK7.mjs.map +0 -7
  582. package/dist/lib/node-esm/TriggerStatus-UR5S7PXJ.mjs +0 -123
  583. package/dist/lib/node-esm/TriggerStatus-UR5S7PXJ.mjs.map +0 -7
  584. package/dist/lib/node-esm/ai-service-ZI3A6RVG.mjs +0 -23
  585. package/dist/lib/node-esm/ai-service-ZI3A6RVG.mjs.map +0 -7
  586. package/dist/lib/node-esm/app-graph-builder-E25JXI34.mjs +0 -235
  587. package/dist/lib/node-esm/app-graph-builder-E25JXI34.mjs.map +0 -7
  588. package/dist/lib/node-esm/blueprint-definition-L7XKRYIW.mjs +0 -35
  589. package/dist/lib/node-esm/blueprint-definition-L7XKRYIW.mjs.map +0 -7
  590. package/dist/lib/node-esm/blueprints/index.mjs +0 -9
  591. package/dist/lib/node-esm/chunk-3QBVFAYO.mjs +0 -28
  592. package/dist/lib/node-esm/chunk-3QBVFAYO.mjs.map +0 -7
  593. package/dist/lib/node-esm/chunk-6NCLKQCL.mjs +0 -70
  594. package/dist/lib/node-esm/chunk-6NCLKQCL.mjs.map +0 -7
  595. package/dist/lib/node-esm/chunk-GZ4ERNT2.mjs +0 -2126
  596. package/dist/lib/node-esm/chunk-GZ4ERNT2.mjs.map +0 -7
  597. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  598. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  599. package/dist/lib/node-esm/chunk-JMBYVUD6.mjs +0 -288
  600. package/dist/lib/node-esm/chunk-JMBYVUD6.mjs.map +0 -7
  601. package/dist/lib/node-esm/chunk-MWYYLALM.mjs +0 -231
  602. package/dist/lib/node-esm/chunk-MWYYLALM.mjs.map +0 -7
  603. package/dist/lib/node-esm/chunk-POWB2BPC.mjs +0 -25
  604. package/dist/lib/node-esm/chunk-POWB2BPC.mjs.map +0 -7
  605. package/dist/lib/node-esm/edge-model-resolver-CMJ3KNLQ.mjs +0 -22
  606. package/dist/lib/node-esm/edge-model-resolver-CMJ3KNLQ.mjs.map +0 -7
  607. package/dist/lib/node-esm/index.mjs +0 -387
  608. package/dist/lib/node-esm/index.mjs.map +0 -7
  609. package/dist/lib/node-esm/local-model-resolver-FFDAKOXN.mjs +0 -21
  610. package/dist/lib/node-esm/local-model-resolver-FFDAKOXN.mjs.map +0 -7
  611. package/dist/lib/node-esm/meta.json +0 -1
  612. package/dist/lib/node-esm/operation-resolver-Q5GNP2GH.mjs +0 -137
  613. package/dist/lib/node-esm/operation-resolver-Q5GNP2GH.mjs.map +0 -7
  614. package/dist/lib/node-esm/react-surface-JJRGVGKD.mjs +0 -145
  615. package/dist/lib/node-esm/react-surface-JJRGVGKD.mjs.map +0 -7
  616. package/dist/lib/node-esm/repair-LXFVOK4B.mjs +0 -53
  617. package/dist/lib/node-esm/repair-LXFVOK4B.mjs.map +0 -7
  618. package/dist/lib/node-esm/settings-N452OW6Y.mjs +0 -34
  619. package/dist/lib/node-esm/settings-N452OW6Y.mjs.map +0 -7
  620. package/dist/lib/node-esm/state-WHZFKIEL.mjs +0 -27
  621. package/dist/lib/node-esm/state-WHZFKIEL.mjs.map +0 -7
  622. package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs +0 -17
  623. package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs.map +0 -7
  624. package/dist/lib/node-esm/types/index.mjs +0 -24
  625. package/dist/types/src/capabilities/ai-service/ai-service.d.ts.map +0 -1
  626. package/dist/types/src/capabilities/ai-service/index.d.ts +0 -3
  627. package/dist/types/src/capabilities/ai-service/index.d.ts.map +0 -1
  628. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  629. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  630. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  631. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -6
  632. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
  633. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
  634. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
  635. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +0 -1
  636. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts +0 -3
  637. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts.map +0 -1
  638. package/dist/types/src/capabilities/local-model-resolver/index.d.ts +0 -3
  639. package/dist/types/src/capabilities/local-model-resolver/index.d.ts.map +0 -1
  640. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +0 -13
  641. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +0 -1
  642. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  643. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  644. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  645. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  646. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  647. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  648. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  649. package/dist/types/src/capabilities/repair/index.d.ts +0 -3
  650. package/dist/types/src/capabilities/repair/index.d.ts.map +0 -1
  651. package/dist/types/src/capabilities/repair/repair.d.ts.map +0 -1
  652. package/dist/types/src/capabilities/settings/index.d.ts +0 -15
  653. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  654. package/dist/types/src/capabilities/settings/settings.d.ts +0 -18
  655. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  656. package/dist/types/src/capabilities/state/index.d.ts +0 -11
  657. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  658. package/dist/types/src/capabilities/state/state.d.ts +0 -13
  659. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  660. package/dist/types/src/capabilities/toolkit/index.d.ts +0 -3
  661. package/dist/types/src/capabilities/toolkit/index.d.ts.map +0 -1
  662. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +0 -1
  663. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +0 -7
  664. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +0 -1
  665. package/dist/types/src/components/ChatProgress/index.d.ts +0 -2
  666. package/dist/types/src/components/ChatProgress/index.d.ts.map +0 -1
  667. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +0 -12
  668. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +0 -1
  669. package/dist/types/src/components/Typewriter/Typewriter.d.ts +0 -11
  670. package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +0 -1
  671. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts +0 -7
  672. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +0 -1
  673. package/dist/types/src/components/Typewriter/assistant-extension.d.ts +0 -5
  674. package/dist/types/src/components/Typewriter/assistant-extension.d.ts.map +0 -1
  675. package/dist/types/src/components/Typewriter/index.d.ts +0 -2
  676. package/dist/types/src/components/Typewriter/index.d.ts.map +0 -1
  677. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts +0 -8
  678. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +0 -1
  679. package/dist/types/src/containers/AssistantSettings/index.d.ts +0 -3
  680. package/dist/types/src/containers/AssistantSettings/index.d.ts.map +0 -1
  681. package/dist/types/src/containers/Project/ProjectArticle.d.ts +0 -7
  682. package/dist/types/src/containers/Project/ProjectArticle.d.ts.map +0 -1
  683. package/dist/types/src/containers/Project/ProjectSettings.d.ts +0 -6
  684. package/dist/types/src/containers/Project/ProjectSettings.d.ts.map +0 -1
  685. package/dist/types/src/containers/Project/index.d.ts +0 -7
  686. package/dist/types/src/containers/Project/index.d.ts.map +0 -1
  687. package/dist/types/src/containers/Project/triggers.d.ts +0 -6
  688. package/dist/types/src/containers/Project/triggers.d.ts.map +0 -1
  689. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +0 -6
  690. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +0 -1
  691. package/dist/types/src/containers/PromptArticle/index.d.ts +0 -3
  692. package/dist/types/src/containers/PromptArticle/index.d.ts.map +0 -1
  693. package/dist/types/src/processor/update-name.d.ts +0 -10
  694. package/dist/types/src/processor/update-name.d.ts.map +0 -1
  695. package/dist/types/src/types/AssistantAction.d.ts +0 -93
  696. package/dist/types/src/types/AssistantAction.d.ts.map +0 -1
  697. package/dist/types/src/types/capabilities.d.ts +0 -33
  698. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  699. package/dist/types/src/types/defs.d.ts +0 -2
  700. package/dist/types/src/types/defs.d.ts.map +0 -1
  701. package/dist/types/src/types/events.d.ts +0 -5
  702. package/dist/types/src/types/events.d.ts.map +0 -1
  703. package/src/AssistantPlugin.tsx +0 -172
  704. package/src/blueprints/assistant/blueprint.conversations.json +0 -1
  705. package/src/capabilities/ai-service/index.ts +0 -7
  706. package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -198
  707. package/src/capabilities/app-graph-builder/index.ts +0 -7
  708. package/src/capabilities/blueprint-definition/blueprint-definition.ts +0 -48
  709. package/src/capabilities/blueprint-definition/index.ts +0 -7
  710. package/src/capabilities/edge-model-resolver/index.ts +0 -7
  711. package/src/capabilities/local-model-resolver/index.ts +0 -7
  712. package/src/capabilities/operation-resolver/index.ts +0 -7
  713. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -121
  714. package/src/capabilities/react-surface/index.ts +0 -7
  715. package/src/capabilities/react-surface/react-surface.tsx +0 -121
  716. package/src/capabilities/repair/index.ts +0 -7
  717. package/src/capabilities/repair/repair.ts +0 -69
  718. package/src/capabilities/settings/index.ts +0 -7
  719. package/src/capabilities/state/index.ts +0 -7
  720. package/src/capabilities/toolkit/index.ts +0 -7
  721. package/src/components/ChatProgress/ChatProgress.tsx +0 -53
  722. package/src/components/ChatProgress/index.ts +0 -5
  723. package/src/components/Typewriter/AssistantToolbar.tsx +0 -161
  724. package/src/components/Typewriter/Typewriter.stories.tsx +0 -86
  725. package/src/components/Typewriter/Typewriter.tsx +0 -54
  726. package/src/components/Typewriter/assistant-extension.tsx +0 -142
  727. package/src/components/Typewriter/index.ts +0 -5
  728. package/src/containers/AssistantSettings/AssistantSettings.tsx +0 -120
  729. package/src/containers/AssistantSettings/index.ts +0 -7
  730. package/src/containers/Project/ProjectArticle.tsx +0 -117
  731. package/src/containers/Project/ProjectSettings.tsx +0 -118
  732. package/src/containers/Project/index.ts +0 -16
  733. package/src/containers/Project/triggers.ts +0 -131
  734. package/src/containers/PromptArticle/index.ts +0 -7
  735. package/src/processor/update-name.ts +0 -58
  736. package/src/types/AssistantAction.ts +0 -76
  737. package/src/types/capabilities.ts +0 -27
  738. package/src/types/defs.ts +0 -5
  739. package/src/types/events.ts +0 -11
  740. /package/dist/lib/{browser/ChatContainer-ZGRSZ5EU.mjs.map → neutral/ChatContainer-X3R4ALHT.mjs.map} +0 -0
  741. /package/dist/lib/{browser → neutral}/blueprints/index.mjs.map +0 -0
  742. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  743. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
  744. /package/dist/lib/{browser/types → neutral}/index.mjs.map +0 -0
  745. /package/dist/lib/{node-esm/ChatContainer-IFHDIFJH.mjs.map → neutral/meta.mjs.map} +0 -0
  746. /package/dist/lib/{node-esm/blueprints → neutral/operations}/index.mjs.map +0 -0
  747. /package/dist/lib/{node-esm → neutral}/types/index.mjs.map +0 -0
  748. /package/dist/types/src/capabilities/{ai-service/ai-service.d.ts → ai-service.d.ts} +0 -0
  749. /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
  750. /package/dist/types/src/capabilities/{edge-model-resolver/edge-model-resolver.d.ts → edge-model-resolver.d.ts} +0 -0
  751. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
  752. /package/dist/types/src/capabilities/{toolkit/toolkit.d.ts → toolkit.d.ts} +0 -0
  753. /package/src/capabilities/{ai-service/ai-service.ts → ai-service.ts} +0 -0
  754. /package/src/capabilities/{edge-model-resolver/edge-model-resolver.ts → edge-model-resolver.ts} +0 -0
@@ -5,63 +5,64 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { log } from '@dxos/log';
8
- import { ToggleContainer } from '@dxos/react-ui-components';
8
+ import { ContentBlock, type Message } from '@dxos/types';
9
+ import { type XmlWidgetRegistry, getXmlTextChild } from '@dxos/ui-editor';
10
+
11
+ import { type Assistant } from '../../types';
12
+ import { type BlockRenderer, type MessageThreadContext } from './sync';
13
+ import { applyToolBlockToWidgetState } from './tool-widget-state';
9
14
  import {
10
- PromptWidget,
15
+ FallbackWidget,
11
16
  ReasoningWidget,
12
17
  ReferenceWidget,
13
18
  SelectWidget,
14
19
  SuggestionWidget,
20
+ StatsWidget,
15
21
  SummaryWidget,
16
- } from '@dxos/react-ui-components';
17
- import { Json } from '@dxos/react-ui-syntax-highlighter';
18
- import { ContentBlock, type Message } from '@dxos/types';
19
- import { type XmlWidgetProps, type XmlWidgetRegistry, getXmlTextChild } from '@dxos/ui-editor';
20
-
21
- import { ToolBlock } from '../ToolBlock';
22
-
23
- import { type BlockRenderer, type MessageThreadContext } from './sync';
24
-
25
- const Fallback = ({ _tag, ...props }: XmlWidgetProps<MessageThreadContext>) => {
26
- return (
27
- <ToggleContainer.Root classNames='rounded-xs'>
28
- <ToggleContainer.Header classNames='bg-group-surface'>{_tag}</ToggleContainer.Header>
29
- <ToggleContainer.Content classNames='bg-modal-surface'>
30
- <Json classNames='p-2! text-sm' data={props} />
31
- </ToggleContainer.Content>
32
- </ToggleContainer.Root>
33
- );
34
- };
35
-
36
- const Summary = ({ text }: { text: string }) => {
37
- return (
38
- <ToggleContainer.Root classNames='rounded-sm'>
39
- <ToggleContainer.Header classNames='bg-group-surface'>Conversation summarized</ToggleContainer.Header>
40
- <ToggleContainer.Content classNames='bg-modal-surface'>{text}</ToggleContainer.Content>
41
- </ToggleContainer.Root>
42
- );
43
- };
22
+ ToolWidget,
23
+ StatusWidget,
24
+ } from './widgets';
44
25
 
45
26
  /**
46
27
  * Custom XML tags registry.
28
+ *
29
+ * NOTE: `<prompt>` has no widget — it is rendered via mark + line decorations
30
+ * (`xmlBlockDecoration`) in MarkdownStream so the prompt text remains part of the document
31
+ * and can be highlighted by `xmlFormatting`. It is still listed here so the markdown block
32
+ * parser (`xmlBlockParsers`) knows to keep `<prompt>...</prompt>` as a single HTMLBlock
33
+ * — otherwise an unregistered prompt opens a Paragraph that lazy-continues into the
34
+ * following lines and breaks parsing of subsequent multi-line tags (e.g. a `<reasoning>`
35
+ * block whose content contains an ordered list).
47
36
  */
48
37
  export const componentRegistry: XmlWidgetRegistry = {
49
38
  //
50
- // Widgets
39
+ // Block-only (no widget — see note above).
51
40
  //
52
41
 
53
42
  prompt: {
54
43
  block: true,
55
- factory: ({ children }) => {
44
+ },
45
+
46
+ //
47
+ // DOM Widgets
48
+ //
49
+
50
+ synthetic: {
51
+ block: true,
52
+ factory: ({ children, range }) => {
56
53
  const text = getXmlTextChild(children);
57
- return text ? new PromptWidget(text) : null;
54
+ // TODO(dmaretskyi): Synthetic blocks are "user"-turn messages generated by the system, i.e. and event from a trigger, an email-encoded to JSON, etc.
55
+ // They are meant to start agent, to process the event without looking like user-authored prompt.
56
+ // Create a new widget type for them.
57
+ return text ? new ReasoningWidget(text, range.from) : null;
58
58
  },
59
59
  },
60
60
  reasoning: {
61
61
  block: true,
62
- factory: ({ children }) => {
62
+ streaming: true,
63
+ factory: ({ children, range }) => {
63
64
  const text = getXmlTextChild(children);
64
- return text ? new ReasoningWidget(text) : null;
65
+ return text ? new ReasoningWidget(text, range.from) : null;
65
66
  },
66
67
  },
67
68
  reference: {
@@ -91,29 +92,41 @@ export const componentRegistry: XmlWidgetRegistry = {
91
92
  block: true,
92
93
  factory: ({ children }) => {
93
94
  const text = getXmlTextChild(children);
94
- return text ? new SummaryWidget(text) : null;
95
+ return text ? new StatsWidget(text) : null;
96
+ },
97
+ },
98
+ status: {
99
+ block: true,
100
+ streaming: true,
101
+ factory: ({ children }) => {
102
+ const text = getXmlTextChild(children);
103
+ return text ? new StatusWidget(text) : null;
95
104
  },
96
105
  },
97
106
 
98
107
  //
99
- // React
108
+ // React Widgets (portaled outside of the editor)
100
109
  //
101
110
 
111
+ summary: {
112
+ block: true,
113
+ Component: SummaryWidget,
114
+ },
102
115
  toolCall: {
103
116
  block: true,
104
- Component: ToolBlock,
117
+ Component: (props) => (
118
+ <div className='py-2'>
119
+ <ToolWidget {...props} />
120
+ </div>
121
+ ),
105
122
  },
106
123
  toolResult: {
107
124
  block: true,
108
- Component: Fallback,
125
+ Component: FallbackWidget,
109
126
  },
110
127
  toolkit: {
111
128
  block: true,
112
- Component: Fallback,
113
- },
114
- summary: {
115
- block: true,
116
- Component: Summary,
129
+ Component: FallbackWidget,
117
130
  },
118
131
 
119
132
  //
@@ -122,24 +135,58 @@ export const componentRegistry: XmlWidgetRegistry = {
122
135
 
123
136
  json: {
124
137
  block: true,
125
- Component: Fallback,
138
+ Component: FallbackWidget,
126
139
  },
127
140
  };
128
141
 
129
142
  /**
130
143
  * Convert block to markdown.
131
144
  */
132
- export const blockToMarkdown: BlockRenderer = (
133
- context: MessageThreadContext,
145
+ export const blockToMarkdown: BlockRenderer = createBlockRenderer('normal');
146
+
147
+ /**
148
+ * Create a {@link BlockRenderer} that filters blocks based on the chat view type.
149
+ *
150
+ * - `summary`: only user prompts.
151
+ * - `normal`: user prompts + assistant text + tool calls + summary/select/suggestion/reference + status. Hides reasoning.
152
+ * - `thinking`: same as normal plus reasoning.
153
+ * - `debug`: renders every block (raw fallbacks visible).
154
+ */
155
+ export function createBlockRenderer(viewType: Assistant.ChatView | undefined): BlockRenderer {
156
+ return (context, message, block) => {
157
+ if (!isBlockVisible(viewType, message, block)) {
158
+ return;
159
+ }
160
+ let str = blockToMarkdownImpl(context, message, block);
161
+ if (str && !block.pending) {
162
+ // Use a blank line as the block separator so each rendered block parses as its own
163
+ // markdown block. A single newline lets CommonMark absorb a following `<prompt>` (an
164
+ // HTML type-7 tag, which can't interrupt an open paragraph) into the previous
165
+ // paragraph, rendering the prompt bubble inline next to the prior assistant text.
166
+ return (str += '\n');
167
+ }
168
+ return str;
169
+ };
170
+ }
171
+
172
+ const isBlockVisible = (
173
+ viewType: Assistant.ChatView | undefined,
134
174
  message: Message.Message,
135
175
  block: ContentBlock.Any,
136
- ) => {
137
- let str = blockToMarkdownImpl(context, message, block);
138
- if (str && !block.pending) {
139
- return (str += '\n');
176
+ ): boolean => {
177
+ switch (viewType) {
178
+ case 'debug':
179
+ return true;
180
+ case 'normal':
181
+ return block._tag !== 'reasoning';
182
+ case 'summary':
183
+ // Show only conversational text (user prompts + assistant replies); hide reasoning,
184
+ // tool calls, status, stats, and synthetic system messages.
185
+ return block._tag === 'text' && (block as ContentBlock.Text).disposition !== 'synthetic';
186
+ case 'thinking':
187
+ default:
188
+ return true;
140
189
  }
141
-
142
- return str;
143
190
  };
144
191
 
145
192
  const blockToMarkdownImpl = (context: MessageThreadContext, message: Message.Message, block: ContentBlock.Any) => {
@@ -147,7 +194,11 @@ const blockToMarkdownImpl = (context: MessageThreadContext, message: Message.Mes
147
194
  switch (block._tag) {
148
195
  case 'text': {
149
196
  if (message.sender.role === 'user') {
150
- return `<prompt>${block.text}</prompt>`;
197
+ if (block.disposition === 'synthetic') {
198
+ return renderXMLBlock('synthetic', { content: block.text, pending: block.pending });
199
+ } else {
200
+ return `\n<prompt>${block.text}</prompt>`;
201
+ }
151
202
  } else {
152
203
  const text = block.text.trim();
153
204
  if (text.length > 0) {
@@ -156,52 +207,84 @@ const blockToMarkdownImpl = (context: MessageThreadContext, message: Message.Mes
156
207
  }
157
208
  break;
158
209
  }
210
+
159
211
  case 'reference': {
212
+ if (block.pending) {
213
+ return;
214
+ }
160
215
  const dxn = block.reference.dxn;
161
216
  return `<reference ref="${dxn.toString()}">${context.getObjectLabel(dxn)}</reference>`;
162
217
  }
218
+
163
219
  case 'suggestion': {
164
220
  if (block.pending) {
165
221
  return;
166
222
  }
167
223
  return `<suggestion>${block.text}</suggestion>`;
168
224
  }
225
+
169
226
  case 'select': {
170
227
  if (block.pending || block.options.length === 0) {
171
228
  return;
172
229
  }
173
230
  return `<select>${block.options.map((option) => `<option>${option}</option>`).join('')}</select>`;
174
231
  }
232
+
175
233
  case 'toolCall': {
176
- context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, {
177
- blocks: [block],
178
- });
234
+ applyToolBlockToWidgetState(context, block);
179
235
  return `<toolCall id="${block.toolCallId}" />`;
180
236
  }
237
+
181
238
  case 'toolResult': {
182
239
  // TODO(dmaretskyi): the parameter could be undefined, perhaps tool blocks are not arriving in order.
183
- context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, ({ blocks = [] } = { blocks: [] }) => ({
184
- blocks: [...blocks, block],
185
- }));
240
+ applyToolBlockToWidgetState(context, block);
186
241
  break;
187
242
  }
243
+
188
244
  case 'stats': {
189
- return `<stats>${ContentBlock.createStatsMessage(block)}</stats>`;
245
+ return '';
190
246
  }
247
+
191
248
  case 'reasoning': {
192
- const text = block.reasoningText ?? block.redactedText;
249
+ let text = block.reasoningText ?? block.redactedText;
193
250
  if (!text) {
194
251
  return;
195
252
  }
196
- // TODO(dmaretskyi): The mixed Markdown/XML parser does not support parsing multi-line XML tags.
197
- return `<reasoning>${text.replace(/\n/g, ' ').trim()}</reasoning>`;
253
+ return renderXMLBlock('reasoning', { content: text, pending: block.pending });
198
254
  }
255
+
199
256
  case 'summary': {
200
- return `<summary>${block.content}</summary>`;
257
+ return renderXMLBlock('summary', { content: block.content, pending: block.pending });
201
258
  }
259
+
260
+ case 'status': {
261
+ return renderXMLBlock('status', { content: block.statusText, pending: block.pending });
262
+ }
263
+
202
264
  default: {
203
265
  // TODO(burdon): Needs stable ID.
204
266
  return `<json id="${message.id}">\n${JSON.stringify(block)}\n</json>`;
205
267
  }
206
268
  }
207
269
  };
270
+
271
+ /**
272
+ * Escape text embedded in generated XML so the mixed XML parser does not treat `&`, `<`, `>` as markup.
273
+ */
274
+ const escapeXmlTextContent = (raw: string): string =>
275
+ raw.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
276
+
277
+ const renderXMLBlock = (tag: string, opts: { content?: string; pending?: boolean; attributes?: string }) => {
278
+ // Replace paragraph breaks so that the markdown parser does not split the content into multiple paragraphs.
279
+ // NOTE: do not strip leading list-marker prefixes (`-`, `*`, `1. `, ...) per line — the streaming
280
+ // tag's range is replaced atomically by the XML widget so the inner markdown is never user-visible,
281
+ // and stripping can collapse a line to empty mid-stream (e.g. when only `1. ` has arrived), breaking
282
+ // the prefix-extension contract that `MessageSyncer` relies on for incremental appends.
283
+ const content = escapeXmlTextContent((opts.content ?? '').replace(/\n\n/g, ' ').trim());
284
+
285
+ if (opts.pending) {
286
+ return `<${tag}${opts.attributes ? ` ${opts.attributes}` : ''}>${content}`;
287
+ } else {
288
+ return `<${tag}${opts.attributes ? ` ${opts.attributes}` : ''}>${content}</${tag}>`;
289
+ }
290
+ };
@@ -1,34 +1,34 @@
1
- // @vitest-environment jsdom
2
-
3
1
  //
4
2
  // Copyright 2025 DXOS.org
5
3
  //
6
4
 
5
+ // @vitest-environment jsdom
6
+
7
7
  import { EditorView } from '@codemirror/view';
8
8
  import { describe, it } from '@effect/vitest';
9
9
  import * as Effect from 'effect/Effect';
10
10
 
11
11
  import { Obj } from '@dxos/echo';
12
12
  import { type Mutable } from '@dxos/echo/internal';
13
- import { type ContentBlock } from '@dxos/types';
13
+ import { type ContentBlock, type Message } from '@dxos/types';
14
14
 
15
- import { createMessage } from '../../testing';
15
+ import { createMessage } from '#testing';
16
16
 
17
- import { blockToMarkdown } from './registry';
18
- import { MessageSyncer, type TextModel } from './sync';
17
+ import { createBlockRenderer } from './registry';
18
+ import { type BlockRenderer, MessageSyncer, type MessageThreadContext, type TextModel } from './sync';
19
19
 
20
20
  class TestDocument implements TextModel {
21
21
  private readonly _view = new EditorView({ extensions: [] });
22
22
 
23
- get view() {
24
- return this._view;
23
+ get length() {
24
+ return this._view.state.doc.length;
25
25
  }
26
26
 
27
27
  get content() {
28
28
  return this._view.state.doc.toString();
29
29
  }
30
30
 
31
- async reset(text: string) {
31
+ async setContent(text: string) {
32
32
  this._view.dispatch({
33
33
  changes: { from: 0, to: this._view.state.doc.length, insert: text },
34
34
  });
@@ -48,21 +48,21 @@ describe('reducers', () => {
48
48
  'basic sync',
49
49
  Effect.fn(function* ({ expect }) {
50
50
  const doc = new TestDocument();
51
- const syncer = new MessageSyncer(doc, blockToMarkdown);
51
+ const syncer = new MessageSyncer(doc, createBlockRenderer('thinking'));
52
52
 
53
53
  const messages = [
54
54
  createMessage('user', [{ _tag: 'text', text: 'Hello' }]),
55
55
  createMessage('assistant', [{ _tag: 'text', text: 'Hi there!' }]),
56
56
  ];
57
57
 
58
- syncer.append(messages);
59
- expect(doc.content).toEqual(['<prompt>Hello</prompt>', 'Hi there!', ''].join('\n'));
58
+ syncer.update(messages);
59
+ expect(doc.content).toEqual('\n<prompt>Hello</prompt>\nHi there!\n');
60
60
 
61
- Obj.change(messages[1], (m) => {
62
- m.blocks.push({ _tag: 'text', text: 'How can I help?' });
61
+ Obj.update(messages[1], (obj) => {
62
+ obj.blocks.push({ _tag: 'text', text: 'How can I help?' });
63
63
  });
64
- syncer.append(messages);
65
- expect(doc.content).toEqual(['<prompt>Hello</prompt>', 'Hi there!', 'How can I help?', ''].join('\n'));
64
+ syncer.update(messages);
65
+ expect(doc.content).toEqual('\n<prompt>Hello</prompt>\nHi there!\nHow can I help?\n');
66
66
  }),
67
67
  );
68
68
 
@@ -70,30 +70,188 @@ describe('reducers', () => {
70
70
  'sync with partial updates',
71
71
  Effect.fn(function* ({ expect }) {
72
72
  const doc = new TestDocument();
73
- const syncer = new MessageSyncer(doc, blockToMarkdown);
73
+ const syncer = new MessageSyncer(doc, createBlockRenderer('thinking'));
74
74
 
75
75
  const messages = [
76
76
  createMessage('user', [{ _tag: 'text', text: 'Hello' }]),
77
77
  createMessage('assistant', [{ _tag: 'text', text: 'Hi there!', pending: true }]),
78
78
  ];
79
79
 
80
- syncer.append(messages);
81
- expect(doc.content).toEqual(['<prompt>Hello</prompt>', 'Hi there!'].join('\n'));
80
+ syncer.update(messages);
81
+ expect(doc.content).toEqual('\n<prompt>Hello</prompt>\nHi there!');
82
82
 
83
- Obj.change(messages[1], (m) => {
84
- const block = m.blocks[0] as Mutable<ContentBlock.Text>;
83
+ Obj.update(messages[1], (obj) => {
84
+ const block = obj.blocks[0] as Mutable<ContentBlock.Text>;
85
85
  block.text = 'Hi there! How are you?';
86
86
  block.pending = false;
87
87
  });
88
- syncer.append(messages);
88
+ syncer.update(messages);
89
+
90
+ Obj.update(messages[1], (obj) => {
91
+ obj.blocks.push({ _tag: 'text', text: 'How can I help?' });
92
+ });
93
+ syncer.update(messages);
94
+ expect(doc.content).toEqual('\n<prompt>Hello</prompt>\nHi there! How are you?\nHow can I help?\n');
95
+ }),
96
+ );
97
+
98
+ // Regression: streaming reasoning text that passes through a bare list-marker state
99
+ // (e.g. `"…\n1. "`) used to make `stripBulletLikeLinePrefixes` collapse the line to empty,
100
+ // breaking the prefix-diff invariant in `MessageSyncer` and producing a duplicate `<reasoning>`
101
+ // opening tag in the document.
102
+ it.effect(
103
+ 'streaming reasoning with list-marker transitions does not duplicate opening tag',
104
+ Effect.fn(function* ({ expect }) {
105
+ const doc = new TestDocument();
106
+ const syncer = new MessageSyncer(doc, createBlockRenderer('thinking'));
107
+
108
+ const setReasoning = (message: Message.Message, text: string, pending: boolean) => {
109
+ Obj.update(message, (message) => {
110
+ const block = message.blocks[0] as Mutable<ContentBlock.Reasoning>;
111
+ block.reasoningText = text;
112
+ block.pending = pending;
113
+ });
114
+ };
115
+
116
+ const messages = [createMessage('assistant', [{ _tag: 'reasoning', reasoningText: 'abc\n1', pending: true }])];
117
+
118
+ // Tick 1: `"abc\n1"` — `\d+[.)]\s` regex does not match (no dot/space yet).
119
+ syncer.update(messages);
120
+
121
+ // Tick 2: `"abc\n1."` — still no match (no trailing whitespace).
122
+ setReasoning(messages[0], 'abc\n1.', true);
123
+ syncer.update(messages);
124
+
125
+ // Tick 3: `"abc\n1. "` — line `"1. "` matches and is stripped to empty.
126
+ setReasoning(messages[0], 'abc\n1. ', true);
127
+ syncer.update(messages);
128
+
129
+ // Tick 4: `"abc\n1. foo"` — list item with content.
130
+ setReasoning(messages[0], 'abc\n1. foo', true);
131
+ syncer.update(messages);
132
+
133
+ // Tick 5: finalize.
134
+ setReasoning(messages[0], 'abc\n1. foo', false);
135
+ syncer.update(messages);
136
+
137
+ const openTagCount = (doc.content.match(/<reasoning>/g) ?? []).length;
138
+ const closeTagCount = (doc.content.match(/<\/reasoning>/g) ?? []).length;
139
+ expect(openTagCount).toBe(1);
140
+ expect(closeTagCount).toBe(1);
141
+ }),
142
+ );
143
+
144
+ // Regression: prompt "respond with your name inside an xml tag" produces a streamed
145
+ // reasoning block followed by a text block containing a non-registered XML tag
146
+ // (`<name>Claude</name>`). The text block must appear in the document AFTER the
147
+ // closed reasoning block — the bug symptom is the reasoning tag rendering with no
148
+ // follow-up response visible.
149
+ it.effect(
150
+ 'reasoning block followed by text containing a non-registered xml tag',
151
+ Effect.fn(function* ({ expect }) {
152
+ const doc = new TestDocument();
153
+ const syncer = new MessageSyncer(doc, createBlockRenderer('thinking'));
154
+
155
+ const setReasoning = (message: Message.Message, text: string, pending: boolean) => {
156
+ Obj.update(message, (message) => {
157
+ const block = message.blocks[0] as Mutable<ContentBlock.Reasoning>;
158
+ block.reasoningText = text;
159
+ block.pending = pending;
160
+ });
161
+ };
162
+
163
+ const setText = (message: Message.Message, text: string, pending: boolean) => {
164
+ Obj.update(message, (message) => {
165
+ const block = message.blocks[1] as Mutable<ContentBlock.Text>;
166
+ block.text = text;
167
+ block.pending = pending;
168
+ });
169
+ };
170
+
171
+ // Tick 1: reasoning starts streaming.
172
+ const messages = [createMessage('assistant', [{ _tag: 'reasoning', reasoningText: 'Thinking', pending: true }])];
173
+ syncer.update(messages);
174
+
175
+ // Tick 2: reasoning grows.
176
+ setReasoning(messages[0], 'Thinking about the answer', true);
177
+ syncer.update(messages);
178
+
179
+ // Tick 3: reasoning closes.
180
+ setReasoning(messages[0], 'Thinking about the answer', false);
181
+ syncer.update(messages);
182
+
183
+ // Tick 4: text block appears, pending and empty (model has started emitting but text is still '').
184
+ Obj.update(messages[0], (message) => {
185
+ message.blocks.push({ _tag: 'text', text: '', pending: true });
186
+ });
187
+ syncer.update(messages);
188
+
189
+ // Tick 5: partial text — opening tag only.
190
+ setText(messages[0], '<name>', true);
191
+ syncer.update(messages);
192
+
193
+ // Tick 6: full text streamed.
194
+ setText(messages[0], '<name>Claude</name>', true);
195
+ syncer.update(messages);
89
196
 
90
- Obj.change(messages[1], (m) => {
91
- m.blocks.push({ _tag: 'text', text: 'How can I help?' });
197
+ // Tick 7: text finalised.
198
+ setText(messages[0], '<name>Claude</name>', false);
199
+ syncer.update(messages);
200
+
201
+ // Both the closed reasoning tag and the response text must be present.
202
+ expect(doc.content).toContain('<reasoning>Thinking about the answer</reasoning>');
203
+ expect(doc.content).toContain('<name>Claude</name>');
204
+
205
+ const openReasoning = (doc.content.match(/<reasoning>/g) ?? []).length;
206
+ const closeReasoning = (doc.content.match(/<\/reasoning>/g) ?? []).length;
207
+ expect(openReasoning).toBe(1);
208
+ expect(closeReasoning).toBe(1);
209
+ }),
210
+ );
211
+
212
+ // Direct test of `MessageSyncer`'s tolerance for non-monotonic renderer output —
213
+ // any renderer that produces a shorter string for the same streaming block (e.g., due
214
+ // to whitespace normalisation or future transforms) must not produce duplicate output.
215
+ it.effect(
216
+ 'non-monotonic renderer output does not duplicate previously-emitted content',
217
+ Effect.fn(function* ({ expect }) {
218
+ const doc = new TestDocument();
219
+
220
+ const renderer: BlockRenderer = (_ctx: MessageThreadContext, _msg: Message.Message, block: ContentBlock.Any) => {
221
+ if (block._tag !== 'reasoning') {
222
+ return undefined;
223
+ }
224
+ const text = block.reasoningText ?? '';
225
+ // Simulate a non-monotonic transform: collapse a line that is a sole digit+dot+space.
226
+ const normalised = text
227
+ .split(/\r?\n/)
228
+ .map((line) => line.replace(/^\s*\d+[.)]\s$/, ''))
229
+ .join('\n')
230
+ .trim();
231
+ return block.pending ? `<reasoning>${normalised}` : `<reasoning>${normalised}</reasoning>\n`;
232
+ };
233
+
234
+ const syncer = new MessageSyncer(doc, renderer);
235
+
236
+ const messages = [createMessage('assistant', [{ _tag: 'reasoning', reasoningText: 'abc\n1.', pending: true }])];
237
+
238
+ syncer.update(messages);
239
+ Obj.update(messages[0], (obj) => {
240
+ const block = obj.blocks[0] as Mutable<ContentBlock.Reasoning>;
241
+ block.reasoningText = 'abc\n1. ';
92
242
  });
93
- syncer.append(messages);
94
- expect(doc.content).toEqual(
95
- ['<prompt>Hello</prompt>', 'Hi there! How are you?', 'How can I help?', ''].join('\n'),
96
- );
243
+ syncer.update(messages);
244
+ Obj.update(messages[0], (obj) => {
245
+ const block = obj.blocks[0] as Mutable<ContentBlock.Reasoning>;
246
+ block.reasoningText = 'abc\n1. tail';
247
+ block.pending = false;
248
+ });
249
+ syncer.update(messages);
250
+
251
+ const openTagCount = (doc.content.match(/<reasoning>/g) ?? []).length;
252
+ const closeTagCount = (doc.content.match(/<\/reasoning>/g) ?? []).length;
253
+ expect(openTagCount).toBe(1);
254
+ expect(closeTagCount).toBe(1);
97
255
  }),
98
256
  );
99
257
  });