@dxos/plugin-assistant 0.8.4-main.9735255 → 0.8.4-main.abd8ff62ef

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 (732) hide show
  1. package/dist/lib/browser/AssistantSettings-GG52BLKS.mjs +40 -0
  2. package/dist/lib/browser/AssistantSettings-GG52BLKS.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +27 -8
  4. package/dist/lib/browser/blueprints/index.mjs.map +4 -4
  5. package/dist/lib/browser/chunk-DVOOFAWU.mjs +175 -0
  6. package/dist/lib/browser/chunk-DVOOFAWU.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-M55MBYG7.mjs +932 -0
  8. package/dist/lib/browser/chunk-M55MBYG7.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-SEMCG4ZK.mjs +195 -0
  10. package/dist/lib/browser/chunk-SEMCG4ZK.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-VK53MITK.mjs +2300 -0
  12. package/dist/lib/browser/chunk-VK53MITK.mjs.map +7 -0
  13. package/dist/lib/browser/cli/index.mjs +73 -0
  14. package/dist/lib/browser/cli/index.mjs.map +7 -0
  15. package/dist/lib/browser/components/index.mjs +20 -0
  16. package/dist/lib/browser/create-chat-E2ZLVTLP.mjs +73 -0
  17. package/dist/lib/browser/create-chat-E2ZLVTLP.mjs.map +7 -0
  18. package/dist/lib/browser/ensure-companion-chat-7GDMXSQW.mjs +65 -0
  19. package/dist/lib/browser/ensure-companion-chat-7GDMXSQW.mjs.map +7 -0
  20. package/dist/lib/browser/hooks/index.mjs +39 -0
  21. package/dist/lib/browser/index.mjs +37 -309
  22. package/dist/lib/browser/index.mjs.map +4 -4
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/on-create-space-4J3KTNAJ.mjs +22 -0
  25. package/dist/lib/browser/on-create-space-4J3KTNAJ.mjs.map +7 -0
  26. package/dist/lib/browser/operations/index.mjs +13 -0
  27. package/dist/lib/browser/operations/index.mjs.map +7 -0
  28. package/dist/lib/browser/resolve-navigation-targets-3ZPQE6SZ.mjs +22 -0
  29. package/dist/lib/browser/resolve-navigation-targets-3ZPQE6SZ.mjs.map +7 -0
  30. package/dist/lib/browser/run-prompt-in-new-chat-AA3KPBDN.mjs +106 -0
  31. package/dist/lib/browser/run-prompt-in-new-chat-AA3KPBDN.mjs.map +7 -0
  32. package/dist/lib/browser/set-current-chat-P4VHI3YF.mjs +54 -0
  33. package/dist/lib/browser/set-current-chat-P4VHI3YF.mjs.map +7 -0
  34. package/dist/lib/browser/translations.mjs +172 -0
  35. package/dist/lib/browser/translations.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +1 -6
  37. package/dist/lib/browser/update-chat-name-VWKNUON7.mjs +56 -0
  38. package/dist/lib/browser/update-chat-name-VWKNUON7.mjs.map +7 -0
  39. package/dist/lib/node-esm/AssistantSettings-23A5IMHS.mjs +41 -0
  40. package/dist/lib/node-esm/AssistantSettings-23A5IMHS.mjs.map +7 -0
  41. package/dist/lib/node-esm/blueprints/index.mjs +27 -8
  42. package/dist/lib/node-esm/blueprints/index.mjs.map +4 -4
  43. package/dist/lib/node-esm/chunk-FWC3ZGPH.mjs +933 -0
  44. package/dist/lib/node-esm/chunk-FWC3ZGPH.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-JKEB3NFZ.mjs +2302 -0
  46. package/dist/lib/node-esm/chunk-JKEB3NFZ.mjs.map +7 -0
  47. package/dist/lib/node-esm/chunk-MBDVPB4V.mjs +176 -0
  48. package/dist/lib/node-esm/chunk-MBDVPB4V.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-XAFVSEUJ.mjs +196 -0
  50. package/dist/lib/node-esm/chunk-XAFVSEUJ.mjs.map +7 -0
  51. package/dist/lib/node-esm/cli/index.mjs +74 -0
  52. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  53. package/dist/lib/node-esm/components/index.mjs +21 -0
  54. package/dist/lib/node-esm/components/index.mjs.map +7 -0
  55. package/dist/lib/node-esm/create-chat-UQQ3542N.mjs +74 -0
  56. package/dist/lib/node-esm/create-chat-UQQ3542N.mjs.map +7 -0
  57. package/dist/lib/node-esm/ensure-companion-chat-LVCPD4DJ.mjs +66 -0
  58. package/dist/lib/node-esm/ensure-companion-chat-LVCPD4DJ.mjs.map +7 -0
  59. package/dist/lib/node-esm/hooks/index.mjs +40 -0
  60. package/dist/lib/node-esm/hooks/index.mjs.map +7 -0
  61. package/dist/lib/node-esm/index.mjs +37 -309
  62. package/dist/lib/node-esm/index.mjs.map +4 -4
  63. package/dist/lib/node-esm/meta.json +1 -1
  64. package/dist/lib/node-esm/on-create-space-M63UBTTT.mjs +23 -0
  65. package/dist/lib/node-esm/on-create-space-M63UBTTT.mjs.map +7 -0
  66. package/dist/lib/node-esm/operations/index.mjs +14 -0
  67. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  68. package/dist/lib/node-esm/resolve-navigation-targets-HO77CAFT.mjs +23 -0
  69. package/dist/lib/node-esm/resolve-navigation-targets-HO77CAFT.mjs.map +7 -0
  70. package/dist/lib/node-esm/run-prompt-in-new-chat-RIRYYYPK.mjs +107 -0
  71. package/dist/lib/node-esm/run-prompt-in-new-chat-RIRYYYPK.mjs.map +7 -0
  72. package/dist/lib/node-esm/set-current-chat-Z7GJ52VX.mjs +55 -0
  73. package/dist/lib/node-esm/set-current-chat-Z7GJ52VX.mjs.map +7 -0
  74. package/dist/lib/node-esm/translations.mjs +173 -0
  75. package/dist/lib/node-esm/translations.mjs.map +7 -0
  76. package/dist/lib/node-esm/types/index.mjs +1 -6
  77. package/dist/lib/node-esm/update-chat-name-GV4HX32Z.mjs +57 -0
  78. package/dist/lib/node-esm/update-chat-name-GV4HX32Z.mjs.map +7 -0
  79. package/dist/types/src/AssistantPlugin.d.ts +1 -0
  80. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  81. package/dist/types/src/AssistantPlugin.node.d.ts +4 -0
  82. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -0
  83. package/dist/types/src/AssistantPlugin.test.d.ts +2 -0
  84. package/dist/types/src/AssistantPlugin.test.d.ts.map +1 -0
  85. package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
  86. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
  87. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +2 -0
  88. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +1 -0
  89. package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
  90. package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
  91. package/dist/types/src/blueprints/index.d.ts +1 -6
  92. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/ai-service.d.ts +6 -0
  94. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
  96. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  98. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +9 -0
  100. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/edge-model-resolver.d.ts +7 -0
  102. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/index.d.ts +29 -11
  104. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/local-model-resolver.d.ts +16 -0
  106. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/markdown.d.ts +5 -0
  108. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/migrations.d.ts +5 -0
  110. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  112. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  114. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/settings.d.ts +6 -0
  116. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/state.d.ts +21 -0
  118. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/toolkit.d.ts +6 -0
  120. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  121. package/dist/types/src/cli/index.d.ts +2 -0
  122. package/dist/types/src/cli/index.d.ts.map +1 -0
  123. package/dist/types/src/cli/plugin.d.ts +10 -0
  124. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  125. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +4 -6
  126. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  127. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +15 -0
  128. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -0
  129. package/dist/types/src/components/AssistantSettings/index.d.ts +1 -1
  130. package/dist/types/src/components/AssistantSettings/index.d.ts.map +1 -1
  131. package/dist/types/src/components/Chat/Chat.d.ts +36 -42
  132. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  133. package/dist/types/src/components/Chat/context.d.ts +29 -0
  134. package/dist/types/src/components/Chat/context.d.ts.map +1 -0
  135. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -1
  136. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  137. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts +12 -0
  138. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts.map +1 -0
  139. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +6 -2
  140. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  141. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +19 -0
  142. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -0
  143. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  144. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +28 -0
  145. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -0
  146. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  147. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts +20 -0
  148. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts.map +1 -0
  149. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  150. package/dist/types/src/components/ChatPrompt/index.d.ts +3 -0
  151. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  152. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts +14 -0
  153. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -0
  154. package/dist/types/src/components/ChatThread/ChatThread.d.ts +7 -4
  155. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  156. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +8 -313
  157. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  159. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +42 -0
  160. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -0
  161. package/dist/types/src/components/ChatThread/registry.d.ts +18 -0
  162. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  163. package/dist/types/src/components/ChatThread/sync.d.ts +44 -17
  164. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  165. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts +18 -0
  166. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -0
  167. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts +2 -0
  168. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts.map +1 -0
  169. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +8 -0
  170. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -0
  171. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts +25 -0
  172. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -0
  173. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +18 -0
  174. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -0
  175. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts +9 -0
  176. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -0
  177. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts +14 -0
  178. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -0
  179. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts +12 -0
  180. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -0
  181. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +25 -0
  182. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -0
  183. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts +11 -0
  184. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -0
  185. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts +5 -0
  186. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -0
  187. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts +9 -0
  188. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -0
  189. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts +15 -0
  190. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -0
  191. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +5 -0
  192. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -0
  193. package/dist/types/src/components/ChatThread/widgets/index.d.ts +10 -0
  194. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -0
  195. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +11 -0
  196. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -0
  197. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +7 -0
  198. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -0
  199. package/dist/types/src/components/ProcessTree/index.d.ts +2 -0
  200. package/dist/types/src/components/ProcessTree/index.d.ts.map +1 -0
  201. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +6 -5
  202. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  203. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +1 -305
  204. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  205. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +3 -3
  206. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  207. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +1 -305
  208. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  209. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -1
  210. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -1
  211. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +4 -13
  212. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  213. package/dist/types/src/components/Toolbox/Toolbox.d.ts +11 -9
  214. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  215. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -305
  216. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  217. package/dist/types/src/components/index.d.ts +3 -12
  218. package/dist/types/src/components/index.d.ts.map +1 -1
  219. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +6 -0
  220. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -0
  221. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +21 -0
  222. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -0
  223. package/dist/types/src/containers/AgentArticle/index.d.ts +2 -0
  224. package/dist/types/src/containers/AgentArticle/index.d.ts.map +1 -0
  225. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +6 -0
  226. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -0
  227. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts +16 -0
  228. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts.map +1 -0
  229. package/dist/types/src/containers/AgentProperties/index.d.ts +2 -0
  230. package/dist/types/src/containers/AgentProperties/index.d.ts.map +1 -0
  231. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +6 -0
  232. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
  233. package/dist/types/src/containers/BlueprintArticle/index.d.ts +2 -0
  234. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
  235. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +18 -0
  236. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
  237. package/dist/types/src/containers/ChatCompanion/index.d.ts +2 -0
  238. package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
  239. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +12 -0
  240. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
  241. package/dist/types/src/containers/ChatContainer/index.d.ts +2 -0
  242. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
  243. package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +2 -3
  244. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
  245. package/dist/types/src/containers/ChatDialog/index.d.ts +2 -0
  246. package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
  247. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +6 -0
  248. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
  249. package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
  250. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +1 -0
  251. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +6 -0
  252. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +1 -0
  253. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +21 -0
  254. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +1 -0
  255. package/dist/types/src/containers/RoutineList/index.d.ts +2 -0
  256. package/dist/types/src/containers/RoutineList/index.d.ts.map +1 -0
  257. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +8 -0
  258. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -0
  259. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts +13 -0
  260. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -0
  261. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +19 -0
  262. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -0
  263. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts +2 -0
  264. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts.map +1 -0
  265. package/dist/types/src/containers/TracePanel/execution-graph.d.ts +97 -0
  266. package/dist/types/src/containers/TracePanel/execution-graph.d.ts.map +1 -0
  267. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts +2 -0
  268. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts.map +1 -0
  269. package/dist/types/src/containers/TracePanel/index.d.ts +4 -0
  270. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -0
  271. package/dist/types/src/containers/TracePanel/testing/index.d.ts +3 -0
  272. package/dist/types/src/containers/TracePanel/testing/index.d.ts.map +1 -0
  273. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +14 -0
  274. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -0
  275. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts +12 -0
  276. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts.map +1 -0
  277. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +5 -0
  278. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -0
  279. package/dist/types/src/containers/TriggerStatus/index.d.ts +2 -0
  280. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
  281. package/dist/types/src/containers/index.d.ts +12 -0
  282. package/dist/types/src/containers/index.d.ts.map +1 -0
  283. package/dist/types/src/extensions/index.d.ts +2 -0
  284. package/dist/types/src/extensions/index.d.ts.map +1 -0
  285. package/dist/types/src/extensions/prompt-extension.d.ts +10 -0
  286. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -0
  287. package/dist/types/src/hooks/index.d.ts +2 -0
  288. package/dist/types/src/hooks/index.d.ts.map +1 -1
  289. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +1 -1
  290. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  291. package/dist/types/src/hooks/useChatKeymap.d.ts +12 -0
  292. package/dist/types/src/hooks/useChatKeymap.d.ts.map +1 -0
  293. package/dist/types/src/hooks/useChatProcessor.d.ts +8 -7
  294. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  295. package/dist/types/src/hooks/useChatServices.d.ts +3 -6
  296. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  297. package/dist/types/src/hooks/useChatToolbarActions.d.ts +2 -2
  298. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
  299. package/dist/types/src/hooks/useContextBinder.d.ts +3 -2
  300. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  301. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  302. package/dist/types/src/hooks/useDebug.d.ts +10 -0
  303. package/dist/types/src/hooks/useDebug.d.ts.map +1 -0
  304. package/dist/types/src/hooks/useFilteredTypes.d.ts +1 -1
  305. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
  306. package/dist/types/src/hooks/useFlush.d.ts +1 -1
  307. package/dist/types/src/hooks/useFlush.d.ts.map +1 -1
  308. package/dist/types/src/hooks/usePresets.d.ts +1 -1
  309. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  310. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  311. package/dist/types/src/index.d.ts +3 -5
  312. package/dist/types/src/index.d.ts.map +1 -1
  313. package/dist/types/src/meta.d.ts +2 -0
  314. package/dist/types/src/meta.d.ts.map +1 -1
  315. package/dist/types/src/operations/create-chat.d.ts +5 -0
  316. package/dist/types/src/operations/create-chat.d.ts.map +1 -0
  317. package/dist/types/src/operations/definitions.d.ts +140 -0
  318. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  319. package/dist/types/src/operations/ensure-companion-chat.d.ts +5 -0
  320. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -0
  321. package/dist/types/src/operations/index.d.ts +4 -0
  322. package/dist/types/src/operations/index.d.ts.map +1 -0
  323. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  324. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  325. package/dist/types/src/operations/prompt.test.d.ts +2 -0
  326. package/dist/types/src/operations/prompt.test.d.ts.map +1 -0
  327. package/dist/types/src/operations/resolve-navigation-targets.d.ts +15 -0
  328. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -0
  329. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +5 -0
  330. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -0
  331. package/dist/types/src/operations/set-current-chat.d.ts +5 -0
  332. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -0
  333. package/dist/types/src/operations/update-chat-name.d.ts +5 -0
  334. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -0
  335. package/dist/types/src/processor/index.d.ts +0 -1
  336. package/dist/types/src/processor/index.d.ts.map +1 -1
  337. package/dist/types/src/processor/presets.d.ts +1 -1
  338. package/dist/types/src/processor/presets.d.ts.map +1 -1
  339. package/dist/types/src/processor/processor.d.ts +53 -30
  340. package/dist/types/src/processor/processor.d.ts.map +1 -1
  341. package/dist/types/src/queue-logger.d.ts.map +1 -1
  342. package/dist/types/src/testing/index.d.ts +1 -0
  343. package/dist/types/src/testing/index.d.ts.map +1 -1
  344. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  345. package/dist/types/src/testing/test-generator.test.d.ts +2 -0
  346. package/dist/types/src/testing/test-generator.test.d.ts.map +1 -0
  347. package/dist/types/src/testing/test-services.d.ts +1 -1
  348. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  349. package/dist/types/src/testing/test-trace.d.ts +5 -0
  350. package/dist/types/src/testing/test-trace.d.ts.map +1 -0
  351. package/dist/types/src/testing/trace-timeline.test.d.ts +2 -0
  352. package/dist/types/src/testing/trace-timeline.test.d.ts.map +1 -0
  353. package/dist/types/src/translations.d.ts +2 -305
  354. package/dist/types/src/translations.d.ts.map +1 -1
  355. package/dist/types/src/types/Assistant.d.ts +33 -39
  356. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  357. package/dist/types/src/types/Settings.d.ts +26 -0
  358. package/dist/types/src/types/Settings.d.ts.map +1 -0
  359. package/dist/types/src/types/capabilities.d.ts +12 -13
  360. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  361. package/dist/types/src/types/events.d.ts.map +1 -1
  362. package/dist/types/src/types/index.d.ts +1 -2
  363. package/dist/types/src/types/index.d.ts.map +1 -1
  364. package/dist/types/src/types/service.d.ts +1 -1
  365. package/dist/types/src/types/service.d.ts.map +1 -1
  366. package/dist/types/tsconfig.tsbuildinfo +1 -1
  367. package/package.json +144 -102
  368. package/src/AssistantPlugin.node.ts +125 -0
  369. package/src/AssistantPlugin.test.ts +35 -0
  370. package/src/AssistantPlugin.tsx +161 -59
  371. package/src/blueprints/assistant/blueprint.test.ts +46 -0
  372. package/src/blueprints/assistant/blueprint.ts +31 -0
  373. package/src/blueprints/assistant/index.ts +5 -0
  374. package/src/blueprints/index.ts +1 -8
  375. package/src/capabilities/{ai-service/ai-service.ts → ai-service.ts} +4 -3
  376. package/src/capabilities/app-graph-builder.ts +161 -0
  377. package/src/capabilities/blueprint-definition.ts +56 -0
  378. package/src/capabilities/companion-chat-provisioner.ts +164 -0
  379. package/src/capabilities/{edge-model-resolver/edge-model-resolver.ts → edge-model-resolver.ts} +4 -3
  380. package/src/capabilities/index.ts +23 -11
  381. package/src/capabilities/{local-model-resolver/local-model-resolver.ts → local-model-resolver.ts} +17 -6
  382. package/src/capabilities/markdown.ts +40 -0
  383. package/src/capabilities/migrations.ts +28 -0
  384. package/src/capabilities/operation-handler.ts +16 -0
  385. package/src/capabilities/react-surface.tsx +167 -0
  386. package/src/capabilities/{settings/settings.ts → settings.ts} +5 -4
  387. package/src/capabilities/{state/state.ts → state.ts} +11 -3
  388. package/src/capabilities/toolkit.ts +13 -0
  389. package/src/{components/Typewriter → cli}/index.ts +1 -1
  390. package/src/cli/plugin.ts +83 -0
  391. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +35 -0
  392. package/src/components/AssistantSettings/AssistantSettings.tsx +30 -107
  393. package/src/components/AssistantSettings/index.ts +2 -2
  394. package/src/components/Chat/Chat.tsx +103 -264
  395. package/src/components/Chat/context.ts +39 -0
  396. package/src/components/ChatPrompt/ChatActions.tsx +33 -13
  397. package/src/components/ChatPrompt/ChatMcpErrors.tsx +50 -0
  398. package/src/components/ChatPrompt/ChatOptions.stories.tsx +136 -0
  399. package/src/components/ChatPrompt/ChatOptions.tsx +248 -42
  400. package/src/components/ChatPrompt/ChatPrompt.tsx +182 -0
  401. package/src/components/ChatPrompt/ChatReferences.tsx +18 -8
  402. package/src/components/ChatPrompt/ChatStatus.tsx +123 -0
  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 +64 -71
  406. package/src/components/ChatThread/ChatThread.tsx +50 -24
  407. package/src/components/ChatThread/DEBUG.md +41 -0
  408. package/src/components/ChatThread/Link.tsx +1 -1
  409. package/src/components/ChatThread/MarkdownStream.stories.tsx +281 -0
  410. package/src/components/ChatThread/registry.tsx +167 -55
  411. package/src/components/ChatThread/sync.test.ts +182 -20
  412. package/src/components/ChatThread/sync.ts +93 -97
  413. package/src/components/ChatThread/testing/reasoning.md +25 -0
  414. package/src/components/ChatThread/testing/thinking.md +21 -0
  415. package/src/components/ChatThread/testing/thread-1.md +30 -0
  416. package/src/components/ChatThread/testing/{thread.md → thread-2.md} +19 -0
  417. package/src/components/ChatThread/testing/thread-widgets.md +79 -0
  418. package/src/components/ChatThread/tool-widget-state.test.ts +34 -0
  419. package/src/components/ChatThread/tool-widget-state.ts +48 -0
  420. package/src/components/ChatThread/widgets/FallbackWidget.tsx +26 -0
  421. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +68 -0
  422. package/src/components/ChatThread/widgets/ReasoningWidget.ts +133 -0
  423. package/src/components/ChatThread/widgets/ReferenceWidget.ts +33 -0
  424. package/src/components/ChatThread/widgets/SelectWidget.ts +39 -0
  425. package/src/components/ChatThread/widgets/StatsWidget.ts +31 -0
  426. package/src/components/ChatThread/widgets/StatusWidget.ts +133 -0
  427. package/src/components/ChatThread/widgets/SuggestionWidget.ts +41 -0
  428. package/src/components/ChatThread/widgets/SummaryWidget.tsx +29 -0
  429. package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +55 -0
  430. package/src/components/ChatThread/widgets/ToolWidget.tsx +156 -0
  431. package/src/components/ChatThread/widgets/defaults.ts +8 -0
  432. package/src/components/ChatThread/widgets/index.ts +13 -0
  433. package/src/components/ProcessTree/ProcessTree.stories.tsx +83 -0
  434. package/src/components/ProcessTree/ProcessTree.tsx +118 -0
  435. package/src/components/ProcessTree/index.ts +5 -0
  436. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +6 -10
  437. package/src/components/TemplateEditor/TemplateEditor.tsx +51 -43
  438. package/src/components/TemplateEditor/TemplateForm.stories.tsx +9 -7
  439. package/src/components/TemplateEditor/TemplateForm.tsx +12 -13
  440. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +5 -5
  441. package/src/components/ToolBlock/ToolBlock.tsx +22 -21
  442. package/src/components/Toolbox/Toolbox.stories.tsx +5 -6
  443. package/src/components/Toolbox/Toolbox.tsx +67 -61
  444. package/src/components/index.ts +3 -7
  445. package/src/containers/AgentArticle/AgentArticle.stories.tsx +120 -0
  446. package/src/containers/AgentArticle/AgentArticle.tsx +200 -0
  447. package/src/containers/AgentArticle/index.ts +5 -0
  448. package/src/containers/AgentProperties/AgentProperties.stories.tsx +101 -0
  449. package/src/containers/AgentProperties/AgentProperties.tsx +127 -0
  450. package/src/containers/AgentProperties/index.ts +5 -0
  451. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +29 -0
  452. package/src/containers/BlueprintArticle/index.ts +5 -0
  453. package/src/{components → containers/ChatCompanion}/ChatCompanion.tsx +24 -45
  454. package/src/containers/ChatCompanion/index.ts +5 -0
  455. package/src/containers/ChatContainer/ChatContainer.tsx +105 -0
  456. package/src/containers/ChatContainer/index.ts +5 -0
  457. package/src/{components → containers/ChatDialog}/ChatDialog.tsx +11 -19
  458. package/src/containers/ChatDialog/index.ts +5 -0
  459. package/src/containers/RoutineArticle/RoutineArticle.tsx +59 -0
  460. package/src/containers/RoutineArticle/index.ts +5 -0
  461. package/src/containers/RoutineList/RoutineList.stories.tsx +130 -0
  462. package/src/containers/RoutineList/RoutineList.tsx +50 -0
  463. package/src/containers/RoutineList/index.ts +5 -0
  464. package/src/containers/TracePanel/TracePanel.stories.tsx +278 -0
  465. package/src/containers/TracePanel/TracePanel.tsx +138 -0
  466. package/src/containers/TracePanel/dxn-extractor.test.ts +153 -0
  467. package/src/containers/TracePanel/dxn-extractor.ts +178 -0
  468. package/src/containers/TracePanel/execution-graph.test.ts +382 -0
  469. package/src/containers/TracePanel/execution-graph.ts +579 -0
  470. package/src/containers/TracePanel/index.ts +9 -0
  471. package/src/containers/TracePanel/testing/index.ts +6 -0
  472. package/src/containers/TracePanel/testing/simulated-agent.ts +114 -0
  473. package/src/containers/TracePanel/testing/snapshot-playback.ts +45 -0
  474. package/src/containers/TriggerStatus/TriggerStatus.tsx +129 -0
  475. package/src/containers/TriggerStatus/index.ts +5 -0
  476. package/src/containers/index.ts +16 -0
  477. package/src/extensions/index.ts +5 -0
  478. package/src/extensions/prompt-extension.ts +111 -0
  479. package/src/hooks/index.ts +2 -0
  480. package/src/hooks/useBlueprintRegistry.ts +9 -5
  481. package/src/hooks/useChatKeymap.ts +52 -0
  482. package/src/hooks/useChatProcessor.ts +38 -25
  483. package/src/hooks/useChatServices.ts +7 -28
  484. package/src/hooks/useChatToolbarActions.ts +13 -12
  485. package/src/hooks/useContextBinder.ts +17 -6
  486. package/src/hooks/useContextObjects.ts +8 -4
  487. package/src/hooks/useDebug.ts +38 -0
  488. package/src/hooks/useFilteredTypes.ts +3 -3
  489. package/src/hooks/usePresets.ts +2 -1
  490. package/src/hooks/useReferencesProvider.ts +1 -5
  491. package/src/index.ts +8 -6
  492. package/src/meta.ts +6 -3
  493. package/src/operations/create-chat.ts +79 -0
  494. package/src/operations/definitions.ts +126 -0
  495. package/src/operations/ensure-companion-chat.ts +61 -0
  496. package/src/operations/index.ts +17 -0
  497. package/src/operations/on-create-space.ts +24 -0
  498. package/src/operations/prompt.test.ts +77 -0
  499. package/src/operations/resolve-navigation-targets.ts +26 -0
  500. package/src/operations/run-prompt-in-new-chat.ts +112 -0
  501. package/src/operations/set-current-chat.ts +50 -0
  502. package/src/operations/update-chat-name.ts +61 -0
  503. package/src/processor/index.ts +0 -1
  504. package/src/processor/presets.ts +11 -3
  505. package/src/processor/processor.test.ts +18 -50
  506. package/src/processor/processor.ts +226 -149
  507. package/src/queue-logger.ts +19 -8
  508. package/src/testing/data/trace-timeline.dx.json +4657 -0
  509. package/src/testing/index.ts +1 -0
  510. package/src/testing/test-generator.test.ts +81 -0
  511. package/src/testing/test-generator.ts +79 -42
  512. package/src/testing/test-sequence.ts +3 -3
  513. package/src/testing/test-services.ts +2 -2
  514. package/src/testing/test-trace.ts +20 -0
  515. package/src/testing/trace-timeline.conversations.json +1 -0
  516. package/src/testing/trace-timeline.test.ts +249 -0
  517. package/src/translations.ts +155 -89
  518. package/src/types/Assistant.ts +16 -53
  519. package/src/types/Settings.ts +76 -0
  520. package/src/types/capabilities.ts +11 -3
  521. package/src/types/events.ts +2 -2
  522. package/src/types/index.ts +3 -2
  523. package/src/types/service.ts +5 -5
  524. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs +0 -31
  525. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs.map +0 -7
  526. package/dist/lib/browser/ChatCompanion-ECQYUQ2B.mjs +0 -153
  527. package/dist/lib/browser/ChatCompanion-ECQYUQ2B.mjs.map +0 -7
  528. package/dist/lib/browser/ChatContainer-QCCOFBUX.mjs +0 -73
  529. package/dist/lib/browser/ChatContainer-QCCOFBUX.mjs.map +0 -7
  530. package/dist/lib/browser/ChatDialog-SMK4RSZU.mjs +0 -85
  531. package/dist/lib/browser/ChatDialog-SMK4RSZU.mjs.map +0 -7
  532. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs +0 -53
  533. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs.map +0 -7
  534. package/dist/lib/browser/ai-service-5GUDOEWF.mjs +0 -21
  535. package/dist/lib/browser/ai-service-5GUDOEWF.mjs.map +0 -7
  536. package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs +0 -212
  537. package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs.map +0 -7
  538. package/dist/lib/browser/blueprint-definition-DGHH7MUU.mjs +0 -14
  539. package/dist/lib/browser/chunk-3JYPE2MM.mjs +0 -1832
  540. package/dist/lib/browser/chunk-3JYPE2MM.mjs.map +0 -7
  541. package/dist/lib/browser/chunk-DKQMSMBN.mjs +0 -326
  542. package/dist/lib/browser/chunk-DKQMSMBN.mjs.map +0 -7
  543. package/dist/lib/browser/chunk-EXVT7D4B.mjs +0 -23
  544. package/dist/lib/browser/chunk-EXVT7D4B.mjs.map +0 -7
  545. package/dist/lib/browser/chunk-ML3QCFKA.mjs +0 -265
  546. package/dist/lib/browser/chunk-ML3QCFKA.mjs.map +0 -7
  547. package/dist/lib/browser/chunk-MRJVYGLU.mjs +0 -208
  548. package/dist/lib/browser/chunk-MRJVYGLU.mjs.map +0 -7
  549. package/dist/lib/browser/chunk-V772AMZM.mjs +0 -250
  550. package/dist/lib/browser/chunk-V772AMZM.mjs.map +0 -7
  551. package/dist/lib/browser/chunk-WGQTU6UJ.mjs +0 -41
  552. package/dist/lib/browser/chunk-WGQTU6UJ.mjs.map +0 -7
  553. package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs +0 -20
  554. package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs.map +0 -7
  555. package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs +0 -19
  556. package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs.map +0 -7
  557. package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs +0 -132
  558. package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs.map +0 -7
  559. package/dist/lib/browser/react-surface-NCITRSJJ.mjs +0 -109
  560. package/dist/lib/browser/react-surface-NCITRSJJ.mjs.map +0 -7
  561. package/dist/lib/browser/repair-6QGAKOVM.mjs +0 -54
  562. package/dist/lib/browser/repair-6QGAKOVM.mjs.map +0 -7
  563. package/dist/lib/browser/settings-4ZDLUMYE.mjs +0 -32
  564. package/dist/lib/browser/settings-4ZDLUMYE.mjs.map +0 -7
  565. package/dist/lib/browser/state-AN6336ZX.mjs +0 -26
  566. package/dist/lib/browser/state-AN6336ZX.mjs.map +0 -7
  567. package/dist/lib/browser/toolkit-7AVTEPMA.mjs +0 -18
  568. package/dist/lib/browser/toolkit-7AVTEPMA.mjs.map +0 -7
  569. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs +0 -32
  570. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs.map +0 -7
  571. package/dist/lib/node-esm/ChatCompanion-Q4FUZ2MW.mjs +0 -154
  572. package/dist/lib/node-esm/ChatCompanion-Q4FUZ2MW.mjs.map +0 -7
  573. package/dist/lib/node-esm/ChatContainer-AKI33HIB.mjs +0 -74
  574. package/dist/lib/node-esm/ChatContainer-AKI33HIB.mjs.map +0 -7
  575. package/dist/lib/node-esm/ChatDialog-AP45PVZR.mjs +0 -86
  576. package/dist/lib/node-esm/ChatDialog-AP45PVZR.mjs.map +0 -7
  577. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs +0 -54
  578. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs.map +0 -7
  579. package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs +0 -22
  580. package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs.map +0 -7
  581. package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs +0 -213
  582. package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs.map +0 -7
  583. package/dist/lib/node-esm/blueprint-definition-SEMDEIYG.mjs +0 -15
  584. package/dist/lib/node-esm/chunk-355W5B27.mjs +0 -251
  585. package/dist/lib/node-esm/chunk-355W5B27.mjs.map +0 -7
  586. package/dist/lib/node-esm/chunk-75PHXBN3.mjs +0 -327
  587. package/dist/lib/node-esm/chunk-75PHXBN3.mjs.map +0 -7
  588. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs +0 -209
  589. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs.map +0 -7
  590. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs +0 -42
  591. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs.map +0 -7
  592. package/dist/lib/node-esm/chunk-POWB2BPC.mjs +0 -25
  593. package/dist/lib/node-esm/chunk-POWB2BPC.mjs.map +0 -7
  594. package/dist/lib/node-esm/chunk-XI5T3MJC.mjs +0 -1833
  595. package/dist/lib/node-esm/chunk-XI5T3MJC.mjs.map +0 -7
  596. package/dist/lib/node-esm/chunk-ZRIPP7YF.mjs +0 -267
  597. package/dist/lib/node-esm/chunk-ZRIPP7YF.mjs.map +0 -7
  598. package/dist/lib/node-esm/edge-model-resolver-G5KMODPO.mjs +0 -21
  599. package/dist/lib/node-esm/edge-model-resolver-G5KMODPO.mjs.map +0 -7
  600. package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs +0 -20
  601. package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs.map +0 -7
  602. package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs +0 -133
  603. package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs.map +0 -7
  604. package/dist/lib/node-esm/react-surface-ST6V7LPE.mjs +0 -110
  605. package/dist/lib/node-esm/react-surface-ST6V7LPE.mjs.map +0 -7
  606. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs +0 -55
  607. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs.map +0 -7
  608. package/dist/lib/node-esm/settings-CQEOHR3R.mjs +0 -33
  609. package/dist/lib/node-esm/settings-CQEOHR3R.mjs.map +0 -7
  610. package/dist/lib/node-esm/state-HDON4REW.mjs +0 -27
  611. package/dist/lib/node-esm/state-HDON4REW.mjs.map +0 -7
  612. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs +0 -19
  613. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs.map +0 -7
  614. package/dist/types/src/blueprints/assistant-blueprint.d.ts +0 -209
  615. package/dist/types/src/blueprints/assistant-blueprint.d.ts.map +0 -1
  616. package/dist/types/src/capabilities/ai-service/ai-service.d.ts +0 -5
  617. package/dist/types/src/capabilities/ai-service/ai-service.d.ts.map +0 -1
  618. package/dist/types/src/capabilities/ai-service/index.d.ts +0 -3
  619. package/dist/types/src/capabilities/ai-service/index.d.ts.map +0 -1
  620. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +0 -6
  621. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  622. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  623. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  624. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -21
  625. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
  626. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -4
  627. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
  628. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts +0 -6
  629. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +0 -1
  630. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts +0 -3
  631. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts.map +0 -1
  632. package/dist/types/src/capabilities/local-model-resolver/index.d.ts +0 -3
  633. package/dist/types/src/capabilities/local-model-resolver/index.d.ts.map +0 -1
  634. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +0 -12
  635. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +0 -1
  636. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  637. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  638. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  639. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  640. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  641. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  642. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -5
  643. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  644. package/dist/types/src/capabilities/repair/index.d.ts +0 -3
  645. package/dist/types/src/capabilities/repair/index.d.ts.map +0 -1
  646. package/dist/types/src/capabilities/repair/repair.d.ts +0 -6
  647. package/dist/types/src/capabilities/repair/repair.d.ts.map +0 -1
  648. package/dist/types/src/capabilities/settings/index.d.ts +0 -15
  649. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  650. package/dist/types/src/capabilities/settings/settings.d.ts +0 -17
  651. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  652. package/dist/types/src/capabilities/state/index.d.ts +0 -11
  653. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  654. package/dist/types/src/capabilities/state/state.d.ts +0 -13
  655. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  656. package/dist/types/src/capabilities/toolkit/index.d.ts +0 -3
  657. package/dist/types/src/capabilities/toolkit/index.d.ts.map +0 -1
  658. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +0 -5
  659. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +0 -1
  660. package/dist/types/src/components/BlueprintArticle.d.ts +0 -7
  661. package/dist/types/src/components/BlueprintArticle.d.ts.map +0 -1
  662. package/dist/types/src/components/ChatCompanion.d.ts +0 -13
  663. package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
  664. package/dist/types/src/components/ChatContainer.d.ts +0 -19
  665. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  666. package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
  667. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +0 -7
  668. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +0 -1
  669. package/dist/types/src/components/ChatProgress/index.d.ts +0 -2
  670. package/dist/types/src/components/ChatProgress/index.d.ts.map +0 -1
  671. package/dist/types/src/components/PromptArticle.d.ts +0 -7
  672. package/dist/types/src/components/PromptArticle.d.ts.map +0 -1
  673. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +0 -12
  674. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +0 -1
  675. package/dist/types/src/components/Typewriter/Typewriter.d.ts +0 -11
  676. package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +0 -1
  677. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts +0 -7
  678. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +0 -1
  679. package/dist/types/src/components/Typewriter/assistant-extension.d.ts +0 -5
  680. package/dist/types/src/components/Typewriter/assistant-extension.d.ts.map +0 -1
  681. package/dist/types/src/components/Typewriter/index.d.ts +0 -2
  682. package/dist/types/src/components/Typewriter/index.d.ts.map +0 -1
  683. package/dist/types/src/functions/index.d.ts +0 -4
  684. package/dist/types/src/functions/index.d.ts.map +0 -1
  685. package/dist/types/src/functions/object-list.d.ts +0 -10
  686. package/dist/types/src/functions/object-list.d.ts.map +0 -1
  687. package/dist/types/src/functions/object-load.d.ts +0 -8
  688. package/dist/types/src/functions/object-load.d.ts.map +0 -1
  689. package/dist/types/src/functions/object-search.d.ts +0 -10
  690. package/dist/types/src/functions/object-search.d.ts.map +0 -1
  691. package/dist/types/src/processor/update-name.d.ts +0 -10
  692. package/dist/types/src/processor/update-name.d.ts.map +0 -1
  693. package/dist/types/src/types/AssistantAction.d.ts +0 -95
  694. package/dist/types/src/types/AssistantAction.d.ts.map +0 -1
  695. package/dist/types/src/types/defs.d.ts +0 -2
  696. package/dist/types/src/types/defs.d.ts.map +0 -1
  697. package/src/blueprints/assistant-blueprint.ts +0 -62
  698. package/src/capabilities/ai-service/index.ts +0 -7
  699. package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -180
  700. package/src/capabilities/app-graph-builder/index.ts +0 -7
  701. package/src/capabilities/blueprint-definition/blueprint-definition.ts +0 -60
  702. package/src/capabilities/blueprint-definition/index.ts +0 -8
  703. package/src/capabilities/edge-model-resolver/index.ts +0 -7
  704. package/src/capabilities/local-model-resolver/index.ts +0 -7
  705. package/src/capabilities/operation-resolver/index.ts +0 -7
  706. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -110
  707. package/src/capabilities/react-surface/index.ts +0 -7
  708. package/src/capabilities/react-surface/react-surface.tsx +0 -95
  709. package/src/capabilities/repair/index.ts +0 -7
  710. package/src/capabilities/repair/repair.ts +0 -63
  711. package/src/capabilities/settings/index.ts +0 -7
  712. package/src/capabilities/state/index.ts +0 -7
  713. package/src/capabilities/toolkit/index.ts +0 -7
  714. package/src/capabilities/toolkit/toolkit.ts +0 -26
  715. package/src/components/BlueprintArticle.tsx +0 -29
  716. package/src/components/ChatContainer.tsx +0 -61
  717. package/src/components/ChatProgress/ChatProgress.tsx +0 -54
  718. package/src/components/ChatProgress/index.ts +0 -5
  719. package/src/components/PromptArticle.tsx +0 -50
  720. package/src/components/Typewriter/AssistantToolbar.tsx +0 -161
  721. package/src/components/Typewriter/Typewriter.stories.tsx +0 -83
  722. package/src/components/Typewriter/Typewriter.tsx +0 -54
  723. package/src/components/Typewriter/assistant-extension.tsx +0 -144
  724. package/src/functions/index.ts +0 -7
  725. package/src/functions/object-list.ts +0 -49
  726. package/src/functions/object-load.ts +0 -47
  727. package/src/functions/object-search.ts +0 -46
  728. package/src/processor/update-name.ts +0 -59
  729. package/src/types/AssistantAction.ts +0 -75
  730. package/src/types/defs.ts +0 -5
  731. /package/dist/lib/browser/{blueprint-definition-DGHH7MUU.mjs.map → components/index.mjs.map} +0 -0
  732. /package/dist/lib/{node-esm/blueprint-definition-SEMDEIYG.mjs.map → browser/hooks/index.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/index.ts", "../../../src/components/Chat/Chat.tsx", "../../../src/components/ChatPrompt/ChatActions.tsx", "../../../src/components/ChatPrompt/ChatMcpErrors.tsx", "../../../src/components/ChatPrompt/ChatOptions.tsx", "../../../src/components/ChatPrompt/ChatPresets.tsx", "../../../src/components/ChatPrompt/ChatPrompt.tsx", "../../../src/components/ChatPrompt/ChatReferences.tsx", "../../../src/components/ChatPrompt/ChatStatusIndicator.tsx", "../../../src/components/ChatPrompt/ChatStatus.tsx", "../../../src/components/Chat/context.ts", "../../../src/components/ChatThread/ChatThread.tsx", "../../../src/components/ChatThread/registry.tsx", "../../../src/components/ChatThread/tool-widget-state.ts", "../../../src/components/ChatThread/widgets/FallbackWidget.tsx", "../../../src/components/ChatThread/widgets/ReasoningWidget.ts", "../../../src/components/ChatThread/widgets/defaults.ts", "../../../src/components/ChatThread/widgets/ReferenceWidget.ts", "../../../src/components/ChatThread/widgets/SelectWidget.ts", "../../../src/components/ChatThread/widgets/StatsWidget.ts", "../../../src/components/ChatThread/widgets/StatusWidget.ts", "../../../src/components/ChatThread/widgets/SummaryWidget.tsx", "../../../src/components/ChatThread/widgets/SuggestionWidget.ts", "../../../src/components/ChatThread/widgets/ToolWidget.tsx", "../../../src/components/ChatThread/sync.ts", "../../../src/components/ProcessTree/ProcessTree.tsx", "../../../src/components/TemplateEditor/TemplateEditor.tsx", "../../../src/components/TemplateEditor/extensions/handlebars-extension.ts", "../../../src/components/TemplateEditor/extensions/xml-extension.ts", "../../../src/components/Toolbox/Toolbox.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport * from './Chat';\nexport * from './ProcessTree';\nexport * from './TemplateEditor';\nexport * from './Toolbox';\n\nexport const AssistantSettings: ComponentType<any> = lazy(() => import('./AssistantSettings'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Array from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport React, { type PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Event } from '@dxos/async';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type Queue, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { type MarkdownStreamController } from '@dxos/react-ui-markdown';\nimport { Menu, MenuRootProps } from '@dxos/react-ui-menu';\nimport { Message } from '@dxos/types';\nimport { composable, composableProps } from '@dxos/ui-theme';\n\nimport { useChatKeymapExtensions, useChatToolbarActions, useDebug } from '#hooks';\n\nimport {\n ChatStatus,\n ChatPrompt as NaturalChatPrompt,\n type ChatPromptProps as NaturalChatPromptProps,\n} from '../ChatPrompt';\nimport { ChatThread as NaturalChatThread, type ChatThreadProps as NaturalChatThreadProps } from '../ChatThread';\nimport { ChatContextProvider, type ChatContextValue, type ChatRequestTiming, useChatContext } from './context';\nimport { type ChatEvent } from './events';\n\nexport { useChatContext };\n\n//\n// Root\n//\n\ntype ChatRootProps = PropsWithChildren<\n Pick<ChatContextValue, 'db' | 'chat' | 'processor'> & {\n feed?: Queue;\n onEvent?: (event: ChatEvent) => void;\n }\n>;\n\nconst ChatRoot = ({ children, chat, feed, processor, onEvent, ...props }: ChatRootProps) => {\n const [debug, setDebug] = useState(false);\n const streaming = useAtomValue(processor.streaming);\n const active = useAtomValue(processor.active);\n const requestTiming = useRequestTiming({ active });\n const lastPrompt = useRef<string | undefined>(undefined);\n const db = props.db ?? (chat && Obj.getDatabase(chat));\n\n const feedMessages = useQuery(feed, Filter.type(Message.Message));\n const pendingMessages = useAtomValue(processor.messages);\n const messages = useMemo(\n () => Array.dedupeWith([...feedMessages, ...pendingMessages], ({ id: a }, { id: b }) => a === b),\n [feedMessages, pendingMessages],\n );\n\n const dump = useDebug({ processor });\n\n const event = useMemo(() => new Event<ChatEvent>(), []);\n useEffect(() => {\n return event.on((ev) => {\n switch (ev.type) {\n case 'toggle-debug': {\n setDebug((debug) => {\n if (debug) {\n return false;\n } else {\n void dump();\n return true;\n }\n });\n break;\n }\n\n case 'submit': {\n const text = ev.text.trim();\n if (!streaming && text.length) {\n lastPrompt.current = ev.text;\n void processor.request({ message: text });\n }\n break;\n }\n\n case 'retry': {\n if (!streaming) {\n void processor.retry();\n }\n break;\n }\n\n case 'cancel': {\n if (streaming) {\n void processor.cancel();\n if (lastPrompt.current) {\n event.emit({ type: 'update-prompt', text: lastPrompt.current });\n }\n }\n break;\n }\n }\n\n onEvent?.(ev);\n });\n }, [event, dump, processor, streaming, onEvent]);\n\n return (\n <ChatContextProvider\n debug={debug}\n event={event}\n db={db}\n chat={chat}\n messages={messages}\n processor={processor}\n requestTiming={requestTiming}\n {...props}\n >\n {children}\n </ChatContextProvider>\n );\n};\n\nChatRoot.displayName = 'Chat.Root';\n\nconst useRequestTiming = ({ active }: { active: boolean }) => {\n const [requestTiming, setRequestTiming] = useState<ChatRequestTiming | null>(null);\n useEffect(() => {\n if (active) {\n setRequestTiming({ startedAt: Date.now(), endedAt: null });\n } else {\n setRequestTiming((prev) => (prev && prev.endedAt == null ? { ...prev, endedAt: Date.now() } : prev));\n }\n }, [active]);\n\n return requestTiming;\n};\n\n//\n// Toolbar\n//\n\nconst CHAT_TOOLBAR_NAME = 'Chat.Toolbar';\n\ntype ChatToolbarProps = Pick<MenuRootProps, 'attendableId'> & {\n companionTo?: Obj.Unknown;\n};\n\nconst ChatToolbar = composable<HTMLDivElement, ChatToolbarProps>(\n ({ attendableId, companionTo, ...props }, forwardedRef) => {\n const { chat } = useChatContext(CHAT_TOOLBAR_NAME);\n const menuActions = useChatToolbarActions({ chat, companionTo });\n\n return (\n <Menu.Root {...menuActions} attendableId={attendableId}>\n <Menu.Toolbar {...composableProps(props)} ref={forwardedRef} />\n </Menu.Root>\n );\n },\n);\n\nChatToolbar.displayName = CHAT_TOOLBAR_NAME;\n\n//\n// Content\n//\n\nconst CHAT_CONTENT_NAME = 'Chat.Content';\n\ntype ChatContentProps = {};\n\nconst ChatContent = composable<HTMLDivElement, ChatContentProps>(({ children, ...props }, forwardedRef) => {\n return (\n <div {...composableProps(props, { classNames: 'dx-expander flex flex-col' })} ref={forwardedRef}>\n {children}\n </div>\n );\n});\n\nChatContent.displayName = CHAT_CONTENT_NAME;\n\n//\n// Thread\n//\n\nconst CHAT_THREAD_NAME = 'Chat.Thread';\n\ntype ChatThreadProps = Omit<NaturalChatThreadProps, 'identity' | 'messages' | 'tools'>;\n\nconst ChatThread = ({ viewType, debug: debugProp, ...props }: ChatThreadProps) => {\n const { debug, event, messages, processor } = useChatContext(CHAT_THREAD_NAME);\n const debugView = viewType === 'debug';\n const identity = useIdentity();\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n const extensions = useChatKeymapExtensions({ event });\n\n const controllerRef = useRef<MarkdownStreamController | null>(null);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'submit':\n case 'scroll-to-bottom':\n controllerRef.current?.scrollToBottom();\n break;\n case 'nav-previous':\n controllerRef.current?.navigatePrevious();\n break;\n case 'nav-next':\n controllerRef.current?.navigateNext();\n break;\n }\n });\n }, [event]);\n\n const handleEvent = useCallback<NonNullable<NaturalChatThreadProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n if (!identity) {\n return null;\n }\n\n return (\n <NaturalChatThread\n {...props}\n identity={identity}\n messages={messages}\n error={error}\n debug={debugProp ?? (debug || debugView)}\n viewType={viewType}\n extensions={extensions}\n onEvent={handleEvent}\n ref={controllerRef}\n />\n );\n};\n\nChatThread.displayName = CHAT_THREAD_NAME;\n\n//\n// Prompt\n//\n\nconst CHAT_PROMPT_NAME = 'Chat.Prompt';\n\ntype ChatPromptProps = Omit<NaturalChatPromptProps, 'chat' | 'db' | 'processor' | 'event'>;\n\nconst ChatPrompt = (props: ChatPromptProps) => {\n const { chat, db, processor, event } = useChatContext(CHAT_PROMPT_NAME);\n return <NaturalChatPrompt {...props} chat={chat} db={db} processor={processor} event={event} />;\n};\n\nChatPrompt.displayName = CHAT_PROMPT_NAME;\n\n//\n// Chat\n//\n\nexport const Chat = {\n Root: ChatRoot,\n Toolbar: ChatToolbar,\n Content: ChatContent,\n Prompt: ChatPrompt,\n Status: ChatStatus,\n Thread: ChatThread,\n};\n\nexport type { ChatRootProps, ChatToolbarProps, ChatContentProps, ChatPromptProps, ChatThreadProps, ChatEvent };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\nimport { type ChatEvent } from '../Chat';\n\nexport type ChatActionsProps = ThemedClassName<\n PropsWithChildren<{\n microphone?: boolean;\n recording?: boolean;\n processing?: boolean;\n debug?: boolean;\n onEvent?: (event: ChatEvent) => void;\n }>\n>;\n\nexport const ChatActions = ({\n classNames,\n children,\n microphone,\n recording,\n processing,\n debug,\n onEvent,\n}: ChatActionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className={mx('flex items-center', classNames)}>\n {children}\n\n {microphone && (\n <IconButton\n disabled={!processing}\n classNames={mx(recording && 'bg-primary-500')}\n variant='ghost'\n icon='ph--microphone--regular'\n iconOnly\n noTooltip\n label={t('microphone.button')}\n onMouseDown={() => onEvent?.({ type: 'record-start' })}\n onMouseUp={() => onEvent?.({ type: 'record-stop' })}\n onTouchStart={() => onEvent?.({ type: 'record-start' })}\n onTouchEnd={() => onEvent?.({ type: 'record-stop' })}\n />\n )}\n\n {debug && (\n <IconButton\n variant='ghost'\n icon='ph--wrench--regular'\n iconOnly\n label={t('debug.button')}\n onClick={() => onEvent?.({ type: 'toggle-debug' })}\n />\n )}\n\n <IconButton\n disabled={!processing}\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('cancel-processing.button')}\n onClick={() => onEvent?.({ type: 'cancel' })}\n />\n </div>\n );\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport React, { useCallback } from 'react';\n\nimport { Message, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nimport { type AiChatProcessor } from '../../processor';\n\nexport type ChatMcpErrorsProps = ThemedClassName<{\n processor: AiChatProcessor;\n}>;\n\n/**\n * Inline banner that lists MCP servers that failed to connect during the most recent request.\n * The chat itself keeps working without these servers — this just lets the user see what was dropped.\n */\nexport const ChatMcpErrors = ({ classNames, processor }: ChatMcpErrorsProps) => {\n const { t } = useTranslation(meta.id);\n const errors = useAtomValue(processor.mcpErrors);\n\n const handleDismiss = useCallback(() => {\n processor.dismissMcpErrors();\n }, [processor]);\n\n if (errors.length === 0) {\n return null;\n }\n\n return (\n <Message.Root classNames={['m-1', classNames]} valence='warning'>\n <Message.Title onClose={handleDismiss}>{t('mcp-server-error.label')}</Message.Title>\n <Message.Content asChild>\n <ul className='flex flex-col gap-0.5 text-sm'>\n {errors.map((error) => (\n <li key={`${error.url}::${error.kind}`} className='truncate'>\n <span className='font-mono'>{error.url}</span>\n {' — '}\n <span>{error.message}</span>\n </li>\n ))}\n </ul>\n </Message.Content>\n </Message.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { type JSX, useCallback, useMemo, useState } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type Chat as ChatModule, McpServer } from '@dxos/assistant-toolkit';\nimport { type Blueprint } from '@dxos/compute';\nimport { Annotation, type Database, Filter, Obj, Type } from '@dxos/echo';\nimport { useObject, useQuery } from '@dxos/react-client/echo';\nimport { IconButton, Input, Popover, Select, useTranslation } from '@dxos/react-ui';\nimport { Listbox } from '@dxos/react-ui-list';\nimport { SearchList, useSearchListResults } from '@dxos/react-ui-search';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { getStyles, mx } from '@dxos/ui-theme';\n\nimport { useActiveBlueprints, useBlueprintHandlers, useBlueprints, useContextObjects, useFilteredTypes } from '#hooks';\nimport { meta } from '#meta';\nimport { Assistant } from '#types';\n\nconst styles = {\n panel: 'w-[calc(100dvw-.5rem)] sm:w-max max-w-document-width',\n toolbar: 'p-0! gap-0! border-t border-separator',\n};\n\nexport type ChatOptionsProps = {\n chat?: ChatModule.Chat;\n db: Database.Database;\n context: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n presets?: { id: string; label: string }[];\n preset?: string;\n onPresetChange?: (id: string) => void;\n};\n\n/**\n * Manages the runtime context for the chat.\n */\nexport const ChatOptions = ({\n chat,\n db,\n context,\n blueprintRegistry,\n presets,\n preset,\n onPresetChange,\n}: ChatOptionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div role='none' className='flex'>\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton variant='ghost' icon='ph--plus--regular' iconOnly label={t('context-objects.button')} />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={styles.panel}>\n <Popover.Viewport>\n <ObjectsPanel db={db} context={context} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--sliders-horizontal--regular'\n iconOnly\n label={t('context-settings.button')}\n />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={styles.panel}>\n <Popover.Viewport>\n <Tabs.Root\n classNames='flex'\n orientation='horizontal'\n defaultValue='view'\n defaultActivePart='list'\n tabIndex={-1}\n >\n <Tabs.Viewport classNames={mx('grid grid-rows-[1fr_40px] w-full')}>\n <Tabs.Panel tabIndex={-1} classNames='dx-focus-ring-inset overflow-hidden' value='view'>\n <ViewPanel chat={chat} />\n </Tabs.Panel>\n <Tabs.Panel tabIndex={-1} classNames='dx-focus-ring-inset overflow-hidden' value='blueprints'>\n <BlueprintsPanel blueprintRegistry={blueprintRegistry} db={db} context={context} />\n </Tabs.Panel>\n <Tabs.Panel tabIndex={-1} classNames='dx-focus-ring-inset overflow-hidden' value='mcp-servers'>\n <McpServersPanel db={db} />\n </Tabs.Panel>\n <Tabs.Panel tabIndex={-1} classNames='dx-focus-ring-inset overflow-hidden' value='model'>\n <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />\n </Tabs.Panel>\n <Tabs.Tablist classNames={[styles.toolbar]}>\n <Tabs.IconTab value='view' icon='ph--eye--regular' label={t('chat-view.title')} />\n <Tabs.IconTab\n value='blueprints'\n icon='ph--blueprint--regular'\n label={t('options.blueprints.title')}\n />\n <Tabs.IconTab\n value='mcp-servers'\n icon='ph--plugs-connected--regular'\n label={t('options.mcp.title')}\n />\n <Tabs.IconTab value='model' icon='ph--cpu--regular' label={t('options.chat-model.title')} />\n </Tabs.Tablist>\n </Tabs.Viewport>\n </Tabs.Root>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n};\n\nconst BlueprintsPanel = ({\n blueprintRegistry,\n db,\n context,\n}: Pick<ChatOptionsProps, 'blueprintRegistry' | 'db' | 'context'>) => {\n const { t } = useTranslation(meta.id);\n\n const blueprints = useBlueprints({ blueprintRegistry, db });\n const activeBlueprints = useActiveBlueprints({ context });\n const { onUpdateBlueprint } = useBlueprintHandlers({ db, context, blueprintRegistry });\n const { results, handleSearch } = useSearchListResults({\n items: blueprints,\n extract: (blueprint) => blueprint.name,\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Content classNames='flex flex-col'>\n <SearchList.Viewport>\n {results.map((blueprint) => {\n const isActive = activeBlueprints.has(blueprint.key);\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={blueprint.key}\n value={blueprint.key}\n label={blueprint.name}\n checked={isActive}\n onSelect={() => onUpdateBlueprint?.(blueprint.key, !isActive)}\n />\n );\n })}\n </SearchList.Viewport>\n <SearchList.Input placeholder={t('search.placeholder')} classNames='border-t border-separator' autoFocus />\n </SearchList.Content>\n </SearchList.Root>\n );\n};\n\nconst ViewPanel = ({ chat }: Pick<ChatOptionsProps, 'chat'>) => {\n const { t } = useTranslation(meta.id);\n const [view, setView] = useObject(chat, 'view');\n const value = (view as Assistant.ChatView | undefined) ?? 'normal';\n\n return (\n <Listbox.Root value={value} onValueChange={setView} autoFocus>\n {Assistant.ChatViews.map((view) => (\n <Listbox.Option key={view} value={view}>\n <Listbox.OptionLabel>{t(`chat-view.${view}.label`, { defaultValue: view })}</Listbox.OptionLabel>\n <Listbox.OptionIndicator />\n </Listbox.Option>\n ))}\n </Listbox.Root>\n );\n};\n\nconst ModelsPanel = ({\n presets,\n preset,\n onPresetChange,\n}: Pick<ChatOptionsProps, 'presets' | 'preset' | 'onPresetChange'>) => {\n return (\n <Listbox.Root value={preset} onValueChange={onPresetChange} autoFocus>\n {presets?.map(({ id, label }) => {\n return (\n <Listbox.Option key={id} value={id}>\n <Listbox.OptionLabel>{label}</Listbox.OptionLabel>\n <Listbox.OptionIndicator />\n </Listbox.Option>\n );\n })}\n </Listbox.Root>\n );\n};\n\ntype McpServersPanelProps = {\n db: Database.Database;\n};\n\nconst McpServersPanel = ({ db }: McpServersPanelProps) => {\n const { t } = useTranslation(meta.id);\n const servers = useQuery(db, Filter.type(McpServer.McpServer));\n const [adding, setAdding] = useState(false);\n\n const handleAdd = useCallback(\n (name: string, url: string, protocol: 'sse' | 'http', apiKey?: string) => {\n db.add(Obj.make(McpServer.McpServer, { name, url, protocol, apiKey, enabled: true }));\n setAdding(false);\n },\n [db],\n );\n\n const handleRemove = useCallback(\n (server: McpServer.McpServer) => {\n db.remove(server);\n },\n [db],\n );\n\n return (\n <div className='p-form-chrome'>\n {servers.map((server) => (\n <McpServerRow key={server.id} server={server} onRemove={handleRemove} />\n ))}\n {adding ? (\n <McpServerForm onSubmit={handleAdd} onCancel={() => setAdding(false)} />\n ) : (\n <div role='none'>\n <IconButton\n variant='ghost'\n icon='ph--plus--regular'\n label={t('mcp-server-add.label')}\n onClick={() => setAdding(true)}\n />\n </div>\n )}\n </div>\n );\n};\n\ntype McpServerRowProps = {\n server: McpServer.McpServer;\n onRemove: (server: McpServer.McpServer) => void;\n};\n\n/**\n * `useQuery` returns live objects but only re-renders on result-identity changes,\n * so we must subscribe to the per-server `enabled` field via `useObject` to keep the\n * switch in sync with mutations made through the returned setter.\n */\nconst McpServerRow = ({ server, onRemove }: McpServerRowProps) => {\n const { t } = useTranslation(meta.id);\n const [enabled, setEnabled] = useObject(server, 'enabled');\n\n return (\n <div className='flex items-center gap-2 px-form-chrome'>\n <Input.Root>\n <Input.Label srOnly>{server.name}</Input.Label>\n <Input.Switch checked={enabled !== false} onCheckedChange={(checked) => setEnabled(!!checked)} />\n </Input.Root>\n <span className='flex-1 truncate text-sm'>{server.name}</span>\n <span className='truncate text-xs text-description'>{server.url}</span>\n <IconButton\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('mcp-server-remove.label')}\n onClick={() => onRemove(server)}\n />\n </div>\n );\n};\n\ntype McpServerFormProps = {\n onSubmit: (name: string, url: string, protocol: 'sse' | 'http', apiKey?: string) => void;\n onCancel: () => void;\n};\n\nconst McpServerForm = ({ onSubmit, onCancel }: McpServerFormProps) => {\n const { t } = useTranslation(meta.id);\n const [name, setName] = useState('');\n const [url, setUrl] = useState('');\n const [protocol, setProtocol] = useState<'sse' | 'http'>('sse');\n const [apiKey, setApiKey] = useState('');\n\n const canSubmit = name.trim().length > 0 && url.trim().length > 0;\n const handleSubmit = useCallback(() => {\n if (canSubmit) {\n onSubmit(name.trim(), url.trim(), protocol, apiKey.trim() || undefined);\n }\n }, [canSubmit, name, url, protocol, apiKey, onSubmit]);\n\n return (\n <div className='space-y-2 px-form-chrome'>\n <Input.Root>\n <Input.Label srOnly>{t('mcp-server-name.label')}</Input.Label>\n <Input.TextInput\n placeholder={t('mcp-server-name.placeholder')}\n value={name}\n onChange={(event) => setName(event.target.value)}\n autoFocus\n />\n </Input.Root>\n <Input.Root>\n <Input.Label srOnly>{t('mcp-server-url.label')}</Input.Label>\n <Input.TextInput\n placeholder={t('mcp-server-url.placeholder')}\n value={url}\n onChange={(event) => setUrl(event.target.value)}\n />\n </Input.Root>\n <Select.Root value={protocol} onValueChange={(value) => setProtocol(value as 'sse' | 'http')}>\n <Select.TriggerButton placeholder={t('mcp-server-protocol.label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value='sse'>SSE</Select.Option>\n <Select.Option value='http'>HTTP</Select.Option>\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n <Input.Root>\n <Input.Label srOnly>{t('mcp-server-api-key.label')}</Input.Label>\n <Input.TextInput\n type='password'\n placeholder={t('mcp-server-api-key.placeholder')}\n value={apiKey}\n onChange={(event) => setApiKey(event.target.value)}\n />\n </Input.Root>\n <div role='none' className='flex gap-2'>\n <IconButton\n variant='ghost'\n icon='ph--check--regular'\n iconOnly\n label={t('save.button')}\n onClick={handleSubmit}\n disabled={!canSubmit}\n />\n <IconButton variant='ghost' icon='ph--x--regular' iconOnly label={t('cancel.button')} onClick={onCancel} />\n </div>\n </div>\n );\n};\n\nconst ANY = '__any__';\n\n/** @private */\nexport const ObjectsPanel = ({ db, context }: Pick<ChatOptionsProps, 'db' | 'context'>): JSX.Element => {\n const { t } = useTranslation(meta.id);\n\n // Item types sorted by label.\n const types = useFilteredTypes(db);\n const typenames = useMemo(() => {\n const typenames = types.map((type) => {\n const typename = Type.getTypename(type);\n return {\n typename,\n label: t('typename.label', { ns: typename, defaultValue: typename }),\n };\n });\n\n typenames.sort((a, b) => a.label.localeCompare(b.label));\n return typenames;\n }, [types]);\n\n // Current type and filter.\n const [typename, setTypename] = useState<string>(ANY);\n const anyFilter = useMemo(\n () => Filter.or(...typenames.map(({ typename }) => Filter.typename(typename))),\n [typenames],\n );\n\n // Context objects.\n const objects = useQuery(db, typename === ANY ? anyFilter : Filter.typename(typename));\n const { objects: contextObjects, onUpdateObject } = useContextObjects({ db, context });\n const { results, handleSearch } = useSearchListResults({\n items: objects,\n extract: (object) => Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id,\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Content classNames='p-form-chrome [&:has([cmdk-list-sizer]:empty)]:py-0'>\n <SearchList.Viewport>\n {results.length ? (\n results.map((object) => {\n const isActive = contextObjects.findIndex((obj) => obj.id === object.id) !== -1;\n const { icon, hue } = Option.fromNullable(Obj.getSchema(object)).pipe(\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.getOrElse(() => ({\n icon: 'ph--cube--regular',\n hue: undefined as string | undefined,\n })),\n );\n const styles = hue ? getStyles(hue) : undefined;\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={object.id}\n value={object.id}\n icon={icon}\n iconClassNames={styles?.surfaceText}\n label={Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id}\n checked={isActive}\n onSelect={() => onUpdateObject?.(Obj.getDXN(object), !isActive)}\n />\n );\n })\n ) : (\n <SearchList.Item value='__empty__' label={t('no-results.message')} />\n )}\n </SearchList.Viewport>\n </SearchList.Content>\n\n <div role='none' className={mx('flex flex-col', styles.toolbar)}>\n <Select.Root value={typename === ANY ? undefined : typename} onValueChange={setTypename}>\n <Select.TriggerButton placeholder={t('type-filter.placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.ScrollUpButton />\n <Select.Viewport>\n <Select.Option value={ANY}>{t('any-type-filter.label')}</Select.Option>\n {typenames.map(({ typename, label }) => (\n <Select.Option key={typename} value={typename}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.ScrollDownButton />\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n <SearchList.Input placeholder={t('search.placeholder')} autoFocus />\n </div>\n </SearchList.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Select } from '@dxos/react-ui';\n\nexport type ChatPresetsProps = {\n presets?: { id: string; label: string }[];\n preset?: string;\n onChange?: (id: string) => void;\n};\n\nexport const ChatPresets = ({ presets, preset, onChange }: ChatPresetsProps) => {\n return (\n <Select.Root value={preset} onValueChange={onChange}>\n <Select.TriggerButton classNames='text-sm' />\n <Select.Content>\n {presets?.map(({ id, label }) => (\n <Select.Option key={id} value={id} classNames='text-sm'>\n {label}\n </Select.Option>\n ))}\n <Select.Arrow />\n </Select.Content>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { type Event } from '@dxos/async';\nimport { type Database } from '@dxos/echo';\nimport { type Merge } from '@dxos/effect';\nimport { useVoiceInput } from '@dxos/plugin-transcription';\nimport { Input, type ThemedClassName, useDynamicRef, useTranslation } from '@dxos/react-ui';\nimport { ChatEditor, type ChatEditorController, type ChatEditorProps } from '@dxos/react-ui-chat';\nimport { mx } from '@dxos/ui-theme';\n\nimport { useChatKeymapExtensions } from '#hooks';\nimport { meta } from '#meta';\n\nimport { type AiChatProcessor } from '../../processor';\nimport { type ChatEvent } from '../Chat/events';\nimport { ChatActions, type ChatActionsProps } from './ChatActions';\nimport { ChatMcpErrors } from './ChatMcpErrors';\nimport { ChatOptions } from './ChatOptions';\nimport { type ChatPresetsProps } from './ChatPresets';\nimport { ChatReferences } from './ChatReferences';\nimport { ChatStatusIndicator } from './ChatStatusIndicator';\n\nexport type ChatPromptProps = ThemedClassName<\n Merge<\n {\n outline?: boolean;\n settings?: boolean;\n expandable?: boolean;\n chat?: Chat.Chat;\n db?: Database.Database;\n processor: AiChatProcessor;\n event: Event<ChatEvent>;\n online?: boolean;\n placeholder?: ChatEditorProps['placeholder'];\n onOnlineChange?: (online: boolean) => void;\n onPresetChange?: ChatPresetsProps['onChange'];\n },\n Omit<ChatPresetsProps, 'onChange'>\n >\n>;\n\nexport const ChatPrompt = ({\n classNames,\n outline,\n chat,\n db,\n processor,\n event,\n online,\n placeholder,\n onOnlineChange,\n onPresetChange,\n settings = true,\n presets,\n preset,\n}: ChatPromptProps) => {\n const { t } = useTranslation(meta.id);\n\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n const streaming = useAtomValue(processor.streaming);\n const active = useAtomValue(processor.active);\n const activeRef = useDynamicRef(active);\n\n const editorRef = useRef<ChatEditorController>(null);\n const [recordingState, setRecordingState] = useState(false);\n useEffect(() => {\n return event.on((ev) => {\n switch (ev.type) {\n case 'update-prompt':\n if (!editorRef.current?.getText()?.length) {\n editorRef.current?.setText(ev.text);\n editorRef.current?.focus();\n }\n break;\n case 'record-start':\n setRecordingState(true);\n break;\n case 'record-stop':\n setRecordingState(false);\n break;\n }\n });\n }, [event]);\n\n // TODO(burdon): Configure capability in TranscriptionPlugin.\n const { recording } = useVoiceInput({\n active: recordingState,\n onUpdate: (text) => {\n editorRef.current?.setText(text);\n editorRef.current?.focus();\n },\n });\n\n const extensions = useChatKeymapExtensions({ event });\n\n const handleSubmit = useCallback<NonNullable<ChatEditorProps['onSubmit']>>(\n (text) => {\n if (!activeRef.current) {\n event.emit({ type: 'submit', text });\n return true;\n }\n },\n [event],\n );\n\n const handleEvent = useCallback<NonNullable<ChatActionsProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n return (\n <div\n role='group'\n className={mx(\n 'flex flex-col w-full dx-density-fine',\n outline &&\n 'bg-group-surface rounded-sm! border border-subdued-separator transition transition-border [&:has(.cm-content:focus)]:border-separator',\n classNames,\n )}\n >\n <ChatMcpErrors processor={processor} />\n\n <div role='none' className='flex p-2 gap-2'>\n <ChatStatusIndicator classNames='p-1' preset={preset} error={error} processing={streaming} />\n <ChatEditor\n ref={editorRef}\n autoFocus\n lineWrapping\n classNames='col-span-2 pt-0.5'\n placeholder={placeholder ?? t('prompt.placeholder')}\n extensions={extensions}\n onSubmit={handleSubmit}\n />\n </div>\n\n {db && settings && (\n <div role='none' className='flex items-center overflow-hidden p-1.5'>\n <ChatOptions\n chat={chat}\n db={db}\n blueprintRegistry={processor.blueprintRegistry}\n context={processor.context}\n preset={preset}\n presets={presets}\n onPresetChange={onPresetChange}\n />\n\n <div role='none' className='flex h-8 grow overflow-x-auto scrollbar-none'>\n <ChatReferences db={db} context={processor.context} />\n </div>\n\n <ChatActions\n classNames='col-span-2'\n microphone={true}\n recording={recording}\n processing={streaming}\n onEvent={handleEvent}\n >\n {/* TODO(burdon): Move offline switch into dialog. */}\n {online !== undefined && (\n <Input.Root>\n <Input.Label srOnly>{t('online-switch.label')}</Input.Label>\n <Input.Switch classNames='mx-1' checked={online} onCheckedChange={onOnlineChange} />\n </Input.Root>\n )}\n </ChatActions>\n </div>\n )}\n </div>\n );\n};\n\nChatPrompt.displayName = 'Chat.Prompt';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Annotation, type Database, Obj } from '@dxos/echo';\nimport { Icon, IconButton, type Label, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { getStyles, mx } from '@dxos/ui-theme';\n\nimport { useContextObjects } from '#hooks';\nimport { meta } from '#meta';\n\nexport type ChatReferencesProps = ThemedClassName<{\n context: AiContextBinder;\n db: Database.Database;\n}>;\n\nexport const ChatReferences = ({ classNames, context, db }: ChatReferencesProps) => {\n const { t } = useTranslation(meta.id);\n const { objects, onUpdateObject } = useContextObjects({ db, context });\n\n return (\n <ul className={mx('flex', classNames)}>\n {objects.map((obj) => {\n const dxn = Obj.getDXN(obj);\n const typename = Obj.getTypename(obj);\n const label: Label = Obj.getLabel(obj) ?? (typename ? ['object-name.placeholder', { ns: typename }] : obj.id);\n const { icon, hue } = Option.fromNullable(Obj.getSchema(obj)).pipe(\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.getOrElse(() => ({ icon: DEFAULT_OBJECT_ICON, hue: undefined as string | undefined })),\n );\n const styles = hue ? getStyles(hue) : undefined;\n return (\n <li key={dxn.toString()} className='dx-tag py-0 ps-2 flex items-center gap-1' data-hue='neutral'>\n <Icon icon={icon} size={4} classNames={styles?.surfaceText} />\n {toLocalizedString(label, t)}\n <IconButton\n icon='ph--x--bold'\n iconOnly\n variant='ghost'\n label={t('remove-object.label')}\n classNames='p-0 hover:bg-transparent'\n size={3}\n onClick={() => onUpdateObject?.(dxn, false)}\n />\n </li>\n );\n })}\n </ul>\n );\n};\n\n// TODO(dmaretskyi): Extract those somewhere else.\nconst DEFAULT_OBJECT_ICON = 'ph--cube--regular';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { type ThemedClassName, Tooltip, useTimeout } from '@dxos/react-ui';\nimport { Spinner, type SpinnerProps } from '@dxos/react-ui-sfx';\nimport { mx } from '@dxos/ui-theme';\n\nconst period = 3_000;\n\nexport type ChatStatusIndicatorProps = ThemedClassName<\n {\n preset?: string;\n processing?: boolean;\n error?: Error;\n } & Pick<SpinnerProps, 'size' | 'onClick'>\n>;\n\nexport const ChatStatusIndicator = ({ classNames, preset, processing, error, ...props }: ChatStatusIndicatorProps) => {\n const [init, setInit] = useState(false);\n useEffect(() => setInit(false), [preset]);\n useTimeout(\n async () => {\n setInit(true);\n },\n period / 2,\n [preset],\n );\n\n return (\n <div role='none' className={mx('relative flex', classNames)}>\n <Spinner duration={period} state={!init ? 'flash' : error ? 'error' : processing ? 'spin' : 'pulse'} {...props} />\n {error && (\n <Tooltip.Trigger asChild content={error.message}>\n <div className='absolute inset-0' />\n </Tooltip.Trigger>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { ChatStatus as NaturalChatStatus, formatElapsed } from '@dxos/react-ui-chat';\nimport { Matrix } from '@dxos/react-ui-sfx';\nimport { type ContentBlock } from '@dxos/types';\nimport { Unit } from '@dxos/util';\n\nimport { type ChatRequestTiming, useChatContext } from '../Chat/context';\n\nconst CHAT_STREAM_STATUS_NAME = 'Chat.StreamStatus';\nconst TICK_MS = 1_000;\n\nexport type ChatStreamStatusProps = ThemedClassName<{\n icon?: boolean;\n}>;\n\n/**\n * Live status pill rendered at the bottom of the chat thread.\n *\n * The block-widget host re-mounts this component each time wire's drip queue toggles\n * (`wireDrainingEffect`) — so all visible state is derived from chat-context values that\n * survive the unmount: the latest `stats` block on the chat context's `messages` for token counts,\n * and `requestTiming` (start/end wall-clock timestamps) for the elapsed value.\n *\n * Shows:\n * - elapsed seconds since the most recent request started (frozen at end-of-request)\n * - last completed turn's output token count (from the most recent `stats` content block)\n * - cumulative session total tokens across all `stats` content blocks\n */\nexport const ChatStatus = ({ classNames, icon }: ChatStreamStatusProps) => {\n // Read `messages` from the chat context (combines `useQuery(queue)` + the processor's\n // pending atom) rather than `processor.messages` directly — the latter only contains\n // blocks streamed via the ephemeral `PartialBlock` channel, while finalized blocks\n // (including the per-turn `stats` block we read for token counts) are submitted to the\n // feed via `_submitMessage` and only show up through `useQuery`.\n const { messages, requestTiming } = useChatContext(CHAT_STREAM_STATUS_NAME);\n\n const { lastOutputTokens, sessionTotalTokens } = useMemo(() => {\n let last: number | undefined;\n let total = 0;\n for (const message of messages) {\n for (const block of message.blocks) {\n if (isStats(block) && block.usage) {\n last = block.usage.outputTokens;\n total += block.usage.totalTokens ?? 0;\n }\n }\n }\n return { lastOutputTokens: last, sessionTotalTokens: total };\n }, [messages]);\n\n const isRunning = requestTiming != null && requestTiming.endedAt == null;\n const show = requestTiming || lastOutputTokens || sessionTotalTokens > 0;\n if (!show) {\n return null;\n }\n\n return (\n <NaturalChatStatus.Root defaultRunning={false} classNames={['py-2 gap-2 text-sm', classNames]}>\n {icon && (\n <NaturalChatStatus.Icon>\n <Matrix\n classNames='w-5 h-5'\n dotClassNames='bg-primary-500'\n dim={4}\n dotSize={3}\n count={10}\n interval={500}\n active={isRunning}\n />\n </NaturalChatStatus.Icon>\n )}\n {show && (\n <div role='none' className='flex items-center'>\n {requestTiming && (\n <NaturalChatStatus.Text>\n <Elapsed timing={requestTiming} />\n </NaturalChatStatus.Text>\n )}\n {lastOutputTokens != null && (\n <>\n {requestTiming && <NaturalChatStatus.Separator />}\n <NaturalChatStatus.Text>↓ {Unit.Thousand(lastOutputTokens).toString()}</NaturalChatStatus.Text>\n </>\n )}\n {sessionTotalTokens > 0 && (\n <>\n {(requestTiming || lastOutputTokens != null) && <NaturalChatStatus.Separator />}\n <NaturalChatStatus.Text>Σ {Unit.Thousand(sessionTotalTokens).toString()}</NaturalChatStatus.Text>\n </>\n )}\n </div>\n )}\n </NaturalChatStatus.Root>\n );\n};\n\n/**\n * Wall-clock-derived elapsed display. Tick interval forces a re-render every second while\n * the request is active so the displayed value advances; once `endedAt` is set, the value\n * is frozen and the interval is no longer scheduled.\n */\nconst Elapsed = ({ timing }: { timing: ChatRequestTiming }) => {\n const isRunning = timing.endedAt == null;\n const [now, setNow] = useState(Date.now());\n useEffect(() => {\n if (!isRunning) {\n return;\n }\n\n const id = setInterval(() => setNow(Date.now()), TICK_MS);\n return () => clearInterval(id);\n }, [isRunning]);\n\n return <>{formatElapsed((timing.endedAt ?? now) - timing.startedAt)}</>;\n};\n\nconst isStats = (block: ContentBlock.Any): block is ContentBlock.Stats => block._tag === 'stats';\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { type Chat as ChatModule } from '@dxos/assistant-toolkit';\nimport { type Event } from '@dxos/async';\nimport { type Database } from '@dxos/echo';\nimport { type Message } from '@dxos/types';\n\nimport { type AiChatProcessor } from '../../processor';\nimport { type ChatEvent } from './events';\n\n/**\n * Wall-clock timestamps for the most-recent (or in-flight) request, lifted out of\n * `ChatStreamStatus` so the elapsed value survives across re-mounts triggered when wire's\n * drip queue toggles `wireDrainingEffect` (which removes/restores the footer block widget).\n * `endedAt` is `null` while the request is still active.\n */\nexport type ChatRequestTiming = {\n startedAt: number;\n endedAt: number | null;\n};\n\nexport type ChatContextValue = {\n debug?: boolean;\n event: Event<ChatEvent>;\n db?: Database.Database;\n chat?: ChatModule.Chat;\n messages: Message.Message[];\n processor: AiChatProcessor;\n requestTiming: ChatRequestTiming | null;\n};\n\n// Internal: not re-exported from `Chat/index.ts`. Accessed by sibling components in this\n// package (e.g. `ChatStreamStatus`) without dragging in `Chat.tsx`'s heavy transitive\n// imports (transcription, etc.).\nexport const [ChatContextProvider, useChatContext] = createContext<ChatContextValue>('Chat');\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { PublicKey } from '@dxos/keys';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type ThemedClassName, setRef } from '@dxos/react-ui';\nimport { MarkdownStream, type MarkdownStreamController, type MarkdownStreamProps } from '@dxos/react-ui-markdown';\nimport { type Message } from '@dxos/types';\nimport { keyToFallback } from '@dxos/util';\n\nimport { type Assistant } from '../../types';\nimport { type ChatEvent } from '../Chat';\nimport { componentRegistry, createBlockRenderer } from './registry';\nimport { MessageSyncer } from './sync';\n\nconst defaultOptions: MarkdownStreamProps['options'] = {\n autoScroll: true,\n cursor: false,\n fader: false,\n typewriter: true,\n};\n\nexport type ChatThreadProps = ThemedClassName<\n {\n identity?: Identity;\n messages?: Message.Message[];\n error?: Error;\n viewType?: Assistant.ChatView;\n onEvent?: (event: ChatEvent) => void;\n } & Pick<MarkdownStreamProps, 'options' | 'debug' | 'extensions' | 'footer'>\n>;\n\nexport const ChatThread = forwardRef<MarkdownStreamController | null, ChatThreadProps>(\n (\n {\n classNames,\n identity,\n messages = [],\n error,\n options = defaultOptions,\n footer,\n debug = false,\n extensions,\n viewType,\n onEvent,\n },\n forwardedRef,\n ) => {\n const [controller, setController] = useState<MarkdownStreamController | null>(null);\n const handleMarkdownStreamRef = useCallback(\n (instance: MarkdownStreamController | null) => {\n setController(instance);\n setRef(forwardedRef, instance);\n },\n [forwardedRef],\n );\n\n const userHue = useMemo(\n () => identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue,\n [identity],\n );\n\n // Show error.\n useEffect(() => {\n controller?.scrollToBottom();\n }, [controller, error]);\n\n // Update document.\n const renderer = useMemo(() => createBlockRenderer(viewType), [viewType]);\n const syncer = useMemo(() => controller && new MessageSyncer(controller, renderer), [controller, renderer]);\n useEffect(() => {\n if (!syncer) {\n return;\n }\n\n if (syncer.update(messages)) {\n controller?.scrollToBottom('instant');\n }\n }, [controller, syncer, messages]);\n\n // Event adapter.\n const handleEvent = useCallback<NonNullable<MarkdownStreamProps['onEvent']>>(\n ({ type, value }) => {\n switch (type) {\n case 'submit': {\n value && onEvent?.({ type, text: value });\n break;\n }\n }\n },\n [onEvent],\n );\n\n return (\n <div role='none' data-hue={userHue} className='contents'>\n <MarkdownStream\n key={viewType}\n classNames={classNames}\n registry={componentRegistry}\n options={options}\n debug={debug}\n extensions={extensions}\n footer={footer}\n onEvent={handleEvent}\n ref={handleMarkdownStreamRef}\n />\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { log } from '@dxos/log';\nimport { ContentBlock, type Message } from '@dxos/types';\nimport { type XmlWidgetRegistry, getXmlTextChild } from '@dxos/ui-editor';\n\nimport { type Assistant } from '../../types';\nimport { type BlockRenderer, type MessageThreadContext } from './sync';\nimport { applyToolBlockToWidgetState } from './tool-widget-state';\nimport {\n FallbackWidget,\n ReasoningWidget,\n ReferenceWidget,\n SelectWidget,\n SuggestionWidget,\n StatsWidget,\n SummaryWidget,\n ToolWidget,\n StatusWidget,\n} from './widgets';\n\n/**\n * Custom XML tags registry.\n *\n * NOTE: `<prompt>` has no widget — it is rendered via mark + line decorations\n * (`xmlBlockDecoration`) in MarkdownStream so the prompt text remains part of the document\n * and can be highlighted by `xmlFormatting`. It is still listed here so the markdown block\n * parser (`xmlBlockParsers`) knows to keep `<prompt>...</prompt>` as a single HTMLBlock\n * — otherwise an unregistered prompt opens a Paragraph that lazy-continues into the\n * following lines and breaks parsing of subsequent multi-line tags (e.g. a `<reasoning>`\n * block whose content contains an ordered list).\n */\nexport const componentRegistry: XmlWidgetRegistry = {\n //\n // Block-only (no widget — see note above).\n //\n\n prompt: {\n block: true,\n },\n\n //\n // DOM Widgets\n //\n\n synthetic: {\n block: true,\n factory: ({ children, range }) => {\n const text = getXmlTextChild(children);\n // 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.\n // They are meant to start agent, to process the event without looking like user-authored prompt.\n // Create a new widget type for them.\n return text ? new ReasoningWidget(text, range.from) : null;\n },\n },\n reasoning: {\n block: true,\n streaming: true,\n factory: ({ children, range }) => {\n const text = getXmlTextChild(children);\n return text ? new ReasoningWidget(text, range.from) : null;\n },\n },\n reference: {\n block: false,\n factory: ({ children, ref }) => {\n const text = getXmlTextChild(children);\n return text && ref ? new ReferenceWidget(text, ref) : null;\n },\n },\n select: {\n block: true,\n factory: ({ children }) => {\n const options = children\n ?.map((option: any) => option._tag === 'option' && getXmlTextChild(option.children))\n .filter(Boolean);\n return options?.length ? new SelectWidget(options) : null;\n },\n },\n suggestion: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new SuggestionWidget(text) : null;\n },\n },\n stats: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new StatsWidget(text) : null;\n },\n },\n status: {\n block: true,\n streaming: true,\n factory: ({ children, range }) => {\n const text = getXmlTextChild(children);\n return text ? new StatusWidget(text, range.from) : null;\n },\n },\n\n //\n // React Widgets (portaled outside of the editor)\n //\n\n summary: {\n block: true,\n Component: SummaryWidget,\n },\n toolCall: {\n block: true,\n Component: (props) => (\n <div role='none' className='py-2'>\n <ToolWidget {...props} />\n </div>\n ),\n },\n toolResult: {\n block: true,\n Component: FallbackWidget,\n },\n toolkit: {\n block: true,\n Component: FallbackWidget,\n },\n\n //\n // Fallback\n //\n\n json: {\n block: true,\n Component: FallbackWidget,\n },\n};\n\n/**\n * Convert block to markdown.\n */\nexport const blockToMarkdown: BlockRenderer = createBlockRenderer('normal');\n\n/**\n * Create a {@link BlockRenderer} that filters blocks based on the chat view type.\n *\n * - `summary`: only user prompts.\n * - `normal`: user prompts + assistant text + tool calls + summary/select/suggestion/reference + status. Hides reasoning.\n * - `thinking`: same as normal plus reasoning.\n * - `debug`: renders every block (raw fallbacks visible).\n */\nexport function createBlockRenderer(viewType: Assistant.ChatView | undefined): BlockRenderer {\n return (context, message, block) => {\n if (!isBlockVisible(viewType, message, block)) {\n return;\n }\n let str = blockToMarkdownImpl(context, message, block);\n if (str && !block.pending) {\n return (str += '\\n');\n }\n return str;\n };\n}\n\nconst isBlockVisible = (\n viewType: Assistant.ChatView | undefined,\n message: Message.Message,\n block: ContentBlock.Any,\n): boolean => {\n switch (viewType) {\n case 'debug':\n return true;\n case 'normal':\n return block._tag !== 'reasoning';\n case 'summary':\n // Show only conversational text (user prompts + assistant replies); hide reasoning,\n // tool calls, status, stats, and synthetic system messages.\n return block._tag === 'text' && (block as ContentBlock.Text).disposition !== 'synthetic';\n case 'thinking':\n default:\n return true;\n }\n};\n\nconst blockToMarkdownImpl = (context: MessageThreadContext, message: Message.Message, block: ContentBlock.Any) => {\n log('blockToMarkdown', { block: JSON.stringify(block) });\n switch (block._tag) {\n case 'text': {\n if (message.sender.role === 'user') {\n if (block.disposition === 'synthetic') {\n return renderXMLBlock('synthetic', { content: block.text, pending: block.pending });\n } else {\n return `<prompt>${block.text}</prompt>`;\n }\n } else {\n const text = block.text.trim();\n if (text.length > 0) {\n return text;\n }\n }\n break;\n }\n\n case 'reference': {\n if (block.pending) {\n return;\n }\n const dxn = block.reference.dxn;\n return `<reference ref=\"${dxn.toString()}\">${context.getObjectLabel(dxn)}</reference>`;\n }\n\n case 'suggestion': {\n if (block.pending) {\n return;\n }\n return `<suggestion>${block.text}</suggestion>`;\n }\n\n case 'select': {\n if (block.pending || block.options.length === 0) {\n return;\n }\n return `<select>${block.options.map((option) => `<option>${option}</option>`).join('')}</select>`;\n }\n\n case 'toolCall': {\n applyToolBlockToWidgetState(context, block);\n return `<toolCall id=\"${block.toolCallId}\" />`;\n }\n\n case 'toolResult': {\n // TODO(dmaretskyi): the parameter could be undefined, perhaps tool blocks are not arriving in order.\n applyToolBlockToWidgetState(context, block);\n break;\n }\n\n case 'stats': {\n return '';\n }\n\n case 'reasoning': {\n let text = block.reasoningText ?? block.redactedText;\n if (!text) {\n return;\n }\n return renderXMLBlock('reasoning', { content: text, pending: block.pending });\n }\n\n case 'summary': {\n return renderXMLBlock('summary', { content: block.content, pending: block.pending });\n }\n\n case 'status': {\n return renderXMLBlock('status', { content: block.statusText, pending: block.pending });\n }\n\n default: {\n // TODO(burdon): Needs stable ID.\n return `<json id=\"${message.id}\">\\n${JSON.stringify(block)}\\n</json>`;\n }\n }\n};\n\n/**\n * Escape text embedded in generated XML so the mixed XML parser does not treat `&`, `<`, `>` as markup.\n */\nconst escapeXmlTextContent = (raw: string): string =>\n raw.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nconst renderXMLBlock = (tag: string, opts: { content?: string; pending?: boolean; attributes?: string }) => {\n // Replace paragraph breaks so that the markdown parser does not split the content into multiple paragraphs.\n // NOTE: do not strip leading list-marker prefixes (`-`, `*`, `1. `, ...) per line — the streaming\n // tag's range is replaced atomically by the XML widget so the inner markdown is never user-visible,\n // and stripping can collapse a line to empty mid-stream (e.g. when only `1. ` has arrived), breaking\n // the prefix-extension contract that `MessageSyncer` relies on for incremental appends.\n const content = escapeXmlTextContent((opts.content ?? '').replace(/\\n\\n/g, ' ').trim());\n\n if (opts.pending) {\n return `<${tag}${opts.attributes ? ` ${opts.attributes}` : ''}>${content}`;\n } else {\n return `<${tag}${opts.attributes ? ` ${opts.attributes}` : ''}>${content}</${tag}>`;\n }\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type StateDispatch } from '@dxos/ui-editor';\n\n/**\n * Minimal surface used to push tool call / result blocks into {@link MarkdownStreamController} widget state.\n */\nexport type ToolWidgetStateSink = {\n updateWidget<T>(id: string, value: StateDispatch<T>): void;\n};\n\n/**\n * Mirrors tool-related branches of {@link blockToMarkdown} so widget props stay in sync with message blocks.\n */\nexport const applyToolBlockToWidgetState = (context: ToolWidgetStateSink, block: ContentBlock.Any): void => {\n switch (block._tag) {\n case 'toolCall': {\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, {\n blocks: [block],\n });\n break;\n }\n case 'toolResult': {\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, ({ blocks = [] } = { blocks: [] }) => ({\n blocks: [...blocks, block],\n }));\n break;\n }\n default: {\n break;\n }\n }\n};\n\n/**\n * Re-applies tool widget state after a full document replace (e.g. {@link MarkdownStreamController.setContent}),\n * which clears accumulated widget props via `xmlTagResetEffect`.\n */\nexport const rehydrateToolWidgetsFromMessages = (context: ToolWidgetStateSink, messages: Message.Message[]): void => {\n for (const message of messages) {\n for (const block of message.blocks) {\n applyToolBlockToWidgetState(context, block);\n }\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { TogglePanel } from '@dxos/react-ui-components';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { type XmlWidgetProps } from '@dxos/ui-editor';\n\nimport { type MessageThreadContext } from '../sync';\n\nexport const FallbackWidget = ({ _tag, ...props }: XmlWidgetProps<MessageThreadContext>) => {\n return (\n <TogglePanel.Root>\n <TogglePanel.Header classNames='bg-group-surface'>{_tag}</TogglePanel.Header>\n <TogglePanel.Content classNames='bg-modal-surface'>\n <TogglePanel.Viewport>\n <JsonHighlighter classNames='p-2! text-sm' data={props} />\n </TogglePanel.Viewport>\n </TogglePanel.Content>\n </TogglePanel.Root>\n );\n};\n\nFallbackWidget.displayName = 'Fallback';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\n/**\n * Props used to derive a stable key for a reasoning block across CodeMirror widget rebuilds.\n * CodeMirror does not assign persistent IDs to widgets; streaming re-runs the factory each tick.\n */\nexport type ReasoningWidgetBlockIdProps = {\n id?: string;\n range?: { from: number; to: number };\n};\n\n/**\n * AI reasoning widget.\n */\nexport class ReasoningWidget extends WidgetType {\n readonly #pos: string;\n /** The timer id last registered for this instance (may differ from the map if superseded). */\n #ownedTimerId: ReturnType<typeof setTimeout> | null = null;\n\n constructor(\n private readonly text: string,\n pos: string | number | undefined,\n ) {\n super();\n this.#pos = pos === undefined || pos === '' ? 'reasoning' : String(pos);\n }\n\n override eq(other: this) {\n return this.text === other.text && this.#pos === other.#pos;\n }\n\n override toDOM() {\n return Domino.of('div')\n .classNames(styles.padding)\n .append(\n Domino.of('div')\n .classNames('relative overflow-hidden p-px', styles.border)\n .attributes({ 'data-trail-container': '' })\n .append(\n Domino.of('div')\n .classNames('relative z-10 bg-base-surface rounded-sm text-sm text-subdued px-2 py-1')\n .append(\n Domino.of('div')\n .classNames('max-h-[5lh] overflow-y-auto')\n .text(this.text)\n .attributes({ 'data-reasoning-text': '' }),\n ),\n Domino.of('div').attributes({ 'data-id': this.#pos }),\n ),\n ).root;\n }\n\n override updateDOM(dom: HTMLElement) {\n // Update only the text leaf; `dom` may be wrapped in an outer shell, and the trail host is a\n // sibling of the text node inside the bordered container — setting `textContent` on the wrong\n // ancestor would remove `[data-id]`.\n dom.querySelector<HTMLElement>('[data-reasoning-text]')?.replaceChildren(this.text);\n\n // Recreate trail host if it was removed by a prior timeout (streaming paused > TRAIL_REMOVAL_DELAY_MS).\n const container = dom.querySelector<HTMLElement>('[data-trail-container]');\n let trailHost = container?.querySelector<HTMLElement>('[data-id]');\n if (container && !trailHost) {\n trailHost = Domino.of('div').attributes({ 'data-id': this.#pos }).root;\n container.append(trailHost);\n }\n if (trailHost?.childElementCount === 0) {\n trailHost.append(...createTrailLayers());\n }\n\n this.#scheduleTrailRemoval(dom);\n return true;\n }\n\n override destroy(_dom: HTMLElement) {\n this.#clearOwnedTrailTimer();\n }\n\n #scheduleTrailRemoval(dom: HTMLElement) {\n const previous = trailRemovalTimers.get(this.#pos);\n if (previous !== undefined) {\n clearTimeout(previous);\n }\n\n const timerId = setTimeout(() => {\n if (trailRemovalTimers.get(this.#pos) !== timerId) {\n return;\n }\n trailRemovalTimers.delete(this.#pos);\n this.#ownedTimerId = null;\n dom.querySelector<HTMLElement>('[data-id]')?.remove();\n }, TRAIL_REMOVAL_DELAY_MS);\n\n trailRemovalTimers.set(this.#pos, timerId);\n this.#ownedTimerId = timerId;\n }\n\n #clearOwnedTrailTimer() {\n const active = trailRemovalTimers.get(this.#pos);\n if (active !== undefined && active === this.#ownedTimerId) {\n clearTimeout(active);\n trailRemovalTimers.delete(this.#pos);\n }\n this.#ownedTimerId = null;\n }\n}\n\nconst trail = [\n 'absolute z-0 aspect-[2/1] w-16',\n 'bg-[radial-gradient(at_100%_50%,_theme(colors.green.700),_transparent_80%)]',\n '[offset-anchor:100%_50%] [offset-path:border-box]',\n];\n\n/** Delay after the last content update before hiding the trail. */\nconst TRAIL_REMOVAL_DELAY_MS = 1_000;\n\n/**\n * One pending removal timer per logical block. Streaming creates a new widget instance each tick;\n * `destroy` may run after the next instance has already scheduled, so we must not clear a newer timer.\n */\nconst trailRemovalTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst createTrailLayers = (): [HTMLElement, HTMLElement] => [\n Domino.of('div').classNames(...trail, 'animate-trail').root,\n Domino.of('div').classNames(...trail, 'animate-trail-offset').root,\n];\n", "//\n// Copyright 2026 DXOS.org\n//\n\nexport const styles = {\n padding: 'my-4',\n border: 'border border-subdued-separator rounded-sm',\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\nexport class ReferenceWidget extends WidgetType {\n constructor(\n private text: string,\n private dxn: string,\n ) {\n super();\n }\n\n override eq(other: this) {\n return this.dxn === other.dxn;\n }\n\n override toDOM() {\n return Domino.of('div')\n .classNames(styles.padding)\n .append(\n Domino.of('dx-anchor' as any)\n .classNames('dx-tag--anchor')\n .attributes({ dxn: this.dxn })\n .text(this.text),\n ).root;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\n/**\n * Simple prompt widget.\n */\nexport class SelectWidget extends WidgetType {\n constructor(private options: string[]) {\n super();\n }\n\n override eq(other: this) {\n return JSON.stringify(this.options) === JSON.stringify(other.options);\n }\n\n /**\n * NOTE: Container must set var based on user's identity.\n */\n override toDOM() {\n return Domino.of('div')\n .attributes({ role: 'group' })\n .classNames(styles.padding, 'flex flex-wrap gap-1')\n .append(\n ...this.options.map((option) =>\n Domino.of('button')\n .classNames('dx-button inline-block max-w-[100cqi]')\n .attributes({ 'data-action': 'submit', 'data-value': option, 'data-density': 'fine' })\n .text(option),\n ),\n ).root;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\n/**\n * Simple stats widget.\n */\nexport class StatsWidget extends WidgetType {\n constructor(private text: string) {\n super();\n }\n\n override eq(other: this) {\n return this.text === other.text;\n }\n\n override toDOM() {\n return Domino.of('div').classNames(styles.padding, 'text-sm text-placeholder').text(this.text).root;\n }\n\n override updateDOM(dom: HTMLElement) {\n dom.textContent = this.text;\n return true;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\n/**\n * Props used to derive a stable key for a reasoning block across CodeMirror widget rebuilds.\n * CodeMirror does not assign persistent IDs to widgets; streaming re-runs the factory each tick.\n */\nexport type StatusWidgetBlockIdProps = {\n id?: string;\n range?: { from: number; to: number };\n};\n\n/**\n * AI reasoning widget.\n */\nexport class StatusWidget extends WidgetType {\n readonly #pos: string;\n /** The timer id last registered for this instance (may differ from the map if superseded). */\n #ownedTimerId: ReturnType<typeof setTimeout> | null = null;\n\n constructor(\n private readonly text: string,\n pos: string | number | undefined,\n ) {\n super();\n this.#pos = pos === undefined || pos === '' ? 'status' : String(pos);\n }\n\n override eq(other: this) {\n return this.text === other.text && this.#pos === other.#pos;\n }\n\n override toDOM() {\n return Domino.of('div')\n .classNames(styles.padding)\n .append(\n Domino.of('div')\n .classNames('relative overflow-hidden rounded-sm')\n .append(\n Domino.of('div')\n .classNames('grid grid-cols-[24px_1fr] gap-x-0.5 gap-y-0 items-start px-0.5 py-0.5 text-placeholder')\n .append(\n Domino.of('div')\n .classNames('flex h-5 w-full shrink-0 items-center justify-center self-start')\n .append(Domino.of('span').classNames('block size-1.5 shrink-0 rounded-full bg-current opacity-45')),\n Domino.of('div')\n .classNames('relative min-w-0')\n .append(\n Domino.of('div')\n .classNames('relative z-10 rounded-sm text-sm leading-5')\n .attributes({ 'data-status-text': '' })\n .text(this.text),\n Domino.of('div').attributes({ 'data-id': this.#pos }),\n ),\n ),\n ),\n ).root;\n }\n\n override updateDOM(dom: HTMLElement) {\n // Update only the text leaf; `dom` may be wrapped in an outer shell, and the trail host is a\n // sibling of the text node inside the wrapper — setting `textContent` on the wrong\n // ancestor would remove `[data-id]`.\n dom.querySelector<HTMLElement>('[data-status-text]')?.replaceChildren(this.text);\n\n const trailHost = dom.querySelector<HTMLElement>('[data-id]');\n if (trailHost?.childElementCount === 0) {\n trailHost.append(...createTrailLayers());\n }\n\n this.#scheduleTrailRemoval(dom);\n return true;\n }\n\n override destroy(_dom: HTMLElement) {\n this.#clearOwnedTrailTimer();\n }\n\n #scheduleTrailRemoval(dom: HTMLElement) {\n const previous = trailRemovalTimers.get(this.#pos);\n if (previous !== undefined) {\n clearTimeout(previous);\n }\n\n const timerId = setTimeout(() => {\n if (trailRemovalTimers.get(this.#pos) !== timerId) {\n return;\n }\n trailRemovalTimers.delete(this.#pos);\n this.#ownedTimerId = null;\n dom.querySelector<HTMLElement>('[data-id]')?.remove();\n }, TRAIL_REMOVAL_DELAY_MS);\n\n trailRemovalTimers.set(this.#pos, timerId);\n this.#ownedTimerId = timerId;\n }\n\n #clearOwnedTrailTimer() {\n const active = trailRemovalTimers.get(this.#pos);\n if (active !== undefined && active === this.#ownedTimerId) {\n clearTimeout(active);\n trailRemovalTimers.delete(this.#pos);\n }\n this.#ownedTimerId = null;\n }\n}\n\nconst trail = [\n 'absolute z-0 aspect-[2/1] w-16',\n 'bg-[radial-gradient(at_100%_50%,_theme(colors.green.700),_transparent_80%)]',\n '[offset-anchor:100%_50%] [offset-path:border-box]',\n];\n\n/** Delay after the last content update before hiding the trail. */\nconst TRAIL_REMOVAL_DELAY_MS = 1_000;\n\n/**\n * One pending removal timer per logical block. Streaming creates a new widget instance each tick;\n * `destroy` may run after the next instance has already scheduled, so we must not clear a newer timer.\n */\nconst trailRemovalTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst createTrailLayers = (): [HTMLElement, HTMLElement] => [\n Domino.of('div').classNames(...trail, 'animate-trail').root,\n Domino.of('div').classNames(...trail, 'animate-trail-offset').root,\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { TogglePanel } from '@dxos/react-ui-components';\nimport { type XmlWidgetProps } from '@dxos/ui-editor';\n\nimport { meta } from '#meta';\n\nimport { MessageThreadContext } from '../sync';\nimport { styles } from './defaults';\n\nexport const SummaryWidget = ({ children }: XmlWidgetProps<MessageThreadContext>) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <TogglePanel.Root classNames={styles.border}>\n <TogglePanel.Header classNames='text-sm bg-group-surface'>{t('summary.label')}</TogglePanel.Header>\n <TogglePanel.Content>\n <div role='none' className='p-1 text-sm text-subdued'>\n {children}\n </div>\n </TogglePanel.Content>\n </TogglePanel.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino, mx } from '@dxos/ui';\n\n/**\n * Simple prompt widget.\n */\nexport class SuggestionWidget extends WidgetType {\n constructor(private text: string) {\n super();\n }\n\n override eq(other: this) {\n return this.text === other.text;\n }\n\n override toDOM() {\n // NOTE: Container must have `dx-inline-size-container` (or `dx-size-container`) to support cqi.\n return Domino.of('span')\n .classNames(mx('inline-flex max-w-[calc(100cqi-8px)] my-1 pe-2 overflow-hidden'))\n .append(\n Domino.of('button')\n .attributes({\n 'data-action': 'submit',\n 'data-density': 'fine',\n 'data-value': this.text,\n })\n .classNames(mx('dx-button gap-2 w-full overflow-hidden'))\n .append(\n Domino.of('dx-icon' as any).attributes({\n icon: 'ph--lightning--regular',\n }),\n Domino.of('span').classNames('flex-1 truncate min-w-0').text(this.text),\n ),\n ).root;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Tool from '@effect/ai/Tool';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { NumericTabs, TextCrawl, TogglePanel, type TogglePanelRootProps } from '@dxos/react-ui-components';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type XmlWidgetProps } from '@dxos/ui-editor';\nimport { isNonNullable, safeParseJson } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nexport const isToolMessage = (message: Message.Message) => {\n return message.blocks.some((block: ContentBlock.Any) => block._tag === 'toolCall' || block._tag === 'toolResult');\n};\n\nexport type ToolWidgetProps = XmlWidgetProps<{\n blocks: ContentBlock.Any[];\n}>;\n\nexport const ToolWidget = ({ view, blocks = [] }: ToolWidgetProps) => {\n const { t } = useTranslation(meta.id);\n\n const items = useMemo<ToolPanelProps['items']>(() => {\n let lastToolCall: { tool: Tool.Any | undefined; block: ContentBlock.ToolCall } | undefined;\n // TODO(burdon): Get from context?\n const tools: Tool.Any[] = []; //processor.conversation.toolkit?.tools ?? [];\n return blocks\n .filter((block) => block._tag === 'toolCall' || block._tag === 'toolResult' || block._tag === 'stats')\n .map((block) => {\n switch (block._tag) {\n case 'toolCall': {\n if (block.pending && lastToolCall?.block.toolCallId === block.toolCallId) {\n return null;\n }\n\n const tool = tools.find((tool) => tool.name === block.name);\n lastToolCall = { tool, block };\n return {\n title: tool?.description ?? [t('tool-call.label'), block.name].filter(Boolean).join(' '),\n content: {\n ...block,\n input: safeParseJson(block.input),\n },\n };\n }\n\n case 'toolResult': {\n // TODO(burdon): Parse error type.\n if (block.error) {\n return {\n title: t('tool-error.label'),\n content: block,\n };\n }\n\n const title =\n lastToolCall?.tool?.description ??\n [t('tool-result.label'), lastToolCall?.block.name].filter(Boolean).join(' ');\n lastToolCall = undefined;\n return {\n title,\n content: {\n ...block,\n result: safeParseJson(block.result),\n },\n };\n }\n\n case 'stats': {\n if (!lastToolCall) {\n return null;\n }\n\n return {\n title: t('stats.label'),\n content: block,\n };\n }\n }\n })\n .filter(isNonNullable);\n }, [blocks, t]);\n\n const handleChangeOpen = useCallback(() => {\n setTimeout(() => {\n // Measure after animation.\n view?.requestMeasure();\n }, 1_000);\n }, [view]);\n\n // Ignore if empty.\n if (!items.length) {\n return null;\n }\n\n return <ToolPanel items={items} onChangeOpen={handleChangeOpen} />;\n};\n\ntype ToolPanelProps = {\n items: { title: string; content: any }[];\n} & Pick<TogglePanelRootProps, 'onChangeOpen'>;\n\nconst ToolPanel = ({ items, onChangeOpen }: ToolPanelProps) => {\n const tabsRef = useRef<HTMLDivElement>(null);\n const [selected, setSelected] = useState(0);\n const [open, setOpen] = useState(false);\n\n // Clamp selected to avoid out-of-bounds after items shrink.\n useEffect(() => {\n setSelected((prev) => Math.min(prev, Math.max(0, items.length - 1)));\n }, [items.length]);\n\n useEffect(() => {\n onChangeOpen?.(open);\n if (open) {\n tabsRef.current?.focus();\n }\n }, [open, onChangeOpen]);\n\n const handleSelect = useCallback((index: number) => {\n setSelected(index);\n }, []);\n\n return (\n <TogglePanel.Root open={open} onChangeOpen={setOpen}>\n <TogglePanel.Header classNames='text-sm text-placeholder'>\n <TextCrawl key='status-roll' lines={items.map((item) => item.title)} autoAdvance greedy />\n </TogglePanel.Header>\n <TogglePanel.Content>\n <TogglePanel.Viewport classNames='grid grid-cols-[32px_1fr]'>\n <NumericTabs\n ref={tabsRef}\n classNames='p-1'\n length={items.length}\n selected={selected}\n onSelect={handleSelect}\n />\n <JsonHighlighter\n data={items[selected]?.content}\n classNames='p-1 text-xs bg-transparent'\n replacer={{\n maxDepth: 3,\n maxArrayLen: 10,\n maxStringLen: 128,\n }}\n />\n </TogglePanel.Viewport>\n </TogglePanel.Content>\n </TogglePanel.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type DXN } from '@dxos/echo';\nimport { type MarkdownStreamController } from '@dxos/react-ui-markdown';\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type StateDispatch, type XmlWidgetStateManager } from '@dxos/ui-editor';\n\nimport { rehydrateToolWidgetsFromMessages } from './tool-widget-state';\n\n/**\n * Update document.\n */\nexport type TextModel = Pick<MarkdownStreamController, 'length' | 'setContent' | 'append' | 'updateWidget'>;\n\n/**\n * Renders a block to markdown.\n *\n * Contract: for any block whose lifetime spans multiple invocations (i.e. a streaming block\n * with `pending: true` whose content grows over time, transitioning to `pending: false`), the\n * sequence of returned strings must be monotonically extending — each subsequent value must be\n * a string-extension of the previous. The {@link MessageSyncer} relies on this invariant to\n * compute appendable deltas without diffing.\n */\nexport type BlockRenderer = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => string | undefined;\n\n/**\n * Thread context passed to renderer.\n */\nexport class MessageThreadContext implements Pick<MarkdownStreamController, 'updateWidget'> {\n constructor(private readonly _widgetState?: XmlWidgetStateManager) {}\n\n updateWidget<T>(id: string, value: StateDispatch<T>) {\n this._widgetState?.updateWidget(id, value);\n }\n\n // TODO(burdon): Resolve name from hypergraph.\n getObjectLabel(_id: DXN) {\n return 'Object';\n }\n}\n\n/**\n * Syncs messages with the editor.\n *\n * Reflects the AI streaming contract:\n * - Messages and their blocks are appended in order.\n * - Only the last block in `messages` may be `pending`; all earlier blocks are finalized.\n * - The renderer's output for a streaming block grows monotonically (see {@link BlockRenderer}).\n * - The document is read-only outside this syncer.\n *\n * Under those rules the syncer needs only:\n * - `_completed`: the flat-block index past which everything has been fully appended.\n * - `_trailing`: chars of the in-flight block (at index `_completed`) already appended.\n * - `_threadId`: identity sentinel; if `messages[0]?.id` changes, the document is replaced.\n */\nexport class MessageSyncer {\n private _threadId?: string;\n private _completed = 0;\n private _trailing = 0;\n\n private readonly _context: MessageThreadContext;\n\n constructor(\n private readonly _document: TextModel,\n private readonly _renderer: BlockRenderer,\n ) {\n this._context = new MessageThreadContext(this._document);\n }\n\n get context() {\n return this._context;\n }\n\n /**\n * Replace the document with the rendering of `messages`. Use on mount, on thread switch,\n * and from {@link update} when it detects an identity change in `messages[0]`.\n */\n reset(messages: Message.Message[] = []): void {\n this._threadId = messages[0]?.id;\n this._completed = 0;\n this._trailing = 0;\n const buffer = this._walk(messages);\n // Match the pre-rewrite behaviour: rendering from a steady state (initial mount with\n // non-empty messages, or thread switch) lands the entire content via `setContent` — which\n // uses `wireBypass`, so the editor jumps straight to the final text and `update()` returns\n // `true` so the caller can scroll to the bottom. Live streaming partials that arrive\n // *after* this initial render flow through `update()`'s incremental path → `_document.append`\n // → wire's drip filter, preserving the char-by-char typewriter for incoming text.\n void this._document.setContent(buffer).then(() => {\n rehydrateToolWidgetsFromMessages(this._context, messages);\n });\n }\n\n /**\n * Stream the suffix of the rendered messages into the document.\n * Returns `true` if the document was replaced (initial mount or thread switch), `false`\n * if the call was a streaming append (or a no-op).\n */\n update(messages: Message.Message[]): boolean {\n if (messages[0]?.id !== this._threadId) {\n this.reset(messages);\n return true;\n }\n const buffer = this._walk(messages);\n if (buffer.length > 0) {\n void this._document.append(buffer);\n }\n return false;\n }\n\n /**\n * Walk flat blocks starting at `_completed`, advancing the cursors and returning the chars\n * to append. Blocks before `_completed` are skipped — their renderer is never re-invoked,\n * which preserves single-shot side effects (e.g. tool widget state mutation).\n */\n _walk(messages: Message.Message[]): string {\n let buffer = '';\n let index = 0;\n outer: for (const message of messages) {\n for (const block of message.blocks) {\n if (index < this._completed) {\n index++;\n continue;\n }\n const rendered = this._renderer(this._context, message, block) ?? '';\n if (rendered.length > this._trailing) {\n buffer += rendered.slice(this._trailing);\n }\n if (block.pending) {\n // Stay on this block; record how far we've appended so the next call can resume.\n // `Math.max`-style guard against a non-monotonic renderer output without shrinking the doc.\n if (rendered.length > this._trailing) {\n this._trailing = rendered.length;\n }\n break outer;\n }\n this._completed = index + 1;\n this._trailing = 0;\n index++;\n }\n }\n return buffer;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport React from 'react';\n\nimport { Process } from '@dxos/functions-runtime';\nimport { Icon, IconButton, ScrollArea, Tooltip, Treegrid } from '@dxos/react-ui';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\nimport { Unit } from '@dxos/util';\n\nexport type ProcessTreeProps = {\n // TODO(burdon): Atom.\n processes: readonly Process.Info[];\n onProcessSelect?: (process: Process.Info) => void;\n onProcessTerminate?: (process: Process.Info) => void;\n};\n\nexport const ProcessTree = composable<HTMLDivElement, ProcessTreeProps>(\n ({ processes, onProcessSelect, onProcessTerminate, ...props }, forwardedRef) => {\n const sortedProcesses = [\n ...processes.filter((process) => [Process.State.RUNNING, Process.State.HYBERNATING].includes(process.state)),\n ...processes.filter((process) => [Process.State.IDLE].includes(process.state)).slice(0, 3),\n ...processes.filter((process) =>\n [Process.State.SUCCEEDED, Process.State.FAILED, Process.State.TERMINATED].includes(process.state),\n ),\n ].sort((a, b) => {\n const aCompletedAt = Option.getOrElse(a.completedAt, () => Infinity);\n const bCompletedAt = Option.getOrElse(b.completedAt, () => Infinity);\n return bCompletedAt - aCompletedAt;\n });\n\n return (\n <ScrollArea.Root {...composableProps(props, { classNames: 'dx-expander' })} thin ref={forwardedRef}>\n <ScrollArea.Viewport>\n <Treegrid.Root gridTemplateColumns='1fr'>\n {sortedProcesses\n .filter((process) => process.parentPid === null)\n .map((process) => {\n // const activeChildren = filteredProcesses.filter(\n // (candidate) =>\n // candidate.parentPid?.toString() === process.pid.toString() &&\n // candidate.state === Process.State.RUNNING,\n // );\n return (\n <Treegrid.Row\n key={process.pid.toString()}\n id={process.pid.toString()}\n parentOf={process.parentPid?.toString()}\n >\n <Treegrid.Cell\n indent\n classNames={mx(\n 'grid grid-cols-[min-content_1fr_min-content_min-content] items-center gap-1 min-w-0',\n onProcessSelect && 'dx-hover',\n )}\n onClick={() => onProcessSelect?.(process)}\n >\n <Tooltip.Trigger className='p-1' content={process.state.toString()}>\n <Icon\n size={4}\n classNames={mx(\n process.state === Process.State.RUNNING && 'animate-spin',\n process.state === Process.State.FAILED && 'text-error-text',\n process.state === Process.State.SUCCEEDED && 'text-success-text',\n )}\n icon={Match.value(process.state).pipe(\n Match.when(Process.State.RUNNING, () => 'ph--spinner-gap--regular'),\n Match.when(Process.State.SUCCEEDED, () => 'ph--check-circle--regular'),\n Match.when(Process.State.FAILED, () => 'ph--warning--regular'),\n Match.when(Process.State.HYBERNATING, () => 'ph--spinner--regular'),\n Match.when(Process.State.IDLE, () => 'ph--hourglass--regular'),\n Match.when(Process.State.TERMINATING, () => 'ph--x-circle--regular'),\n Match.when(Process.State.TERMINATED, () => 'ph--x-circle--regular'),\n Match.orElse(() => 'ph--spinner-gap--regular'),\n )}\n />\n </Tooltip.Trigger>\n <div role='none' className='flex items-center gap-2 text-xs overflow-hidden'>\n {/* TODO(burdon): Name is too long (and not informative). */}\n <span className='truncate text-description select-none'>\n {process.params.name ?? process.pid.toString()}\n </span>\n {/* {activeChildren.length > 0 && (\n <span className='text-xs text-description ml-1'>{activeChildren[0].params.name}</span>\n )} */}\n </div>\n {([Process.State.FAILED, Process.State.SUCCEEDED].includes(process.state) && (\n <div className='text-xs text-description tabular-nums'>\n {Unit.Millisecond(process.metrics.wallTime).toString()}\n </div>\n )) || <div />}\n {onProcessTerminate && (\n <IconButton\n classNames='min-h-0 p-1'\n icon='ph--x--regular'\n iconOnly\n variant='ghost'\n size={4}\n label='Actions'\n onClick={(event) => {\n event.stopPropagation();\n onProcessTerminate?.(process);\n }}\n />\n )}\n </Treegrid.Cell>\n </Treegrid.Row>\n );\n })}\n </Treegrid.Root>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React from 'react';\n\nimport { type Template } from '@dxos/compute';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { useTextEditor } from '@dxos/react-ui-editor';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n} from '@dxos/ui-editor';\nimport { composable, composableProps } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nimport { handlebars, xmlDecorator } from './extensions';\n\nexport type TemplateEditorProps = {\n id: string;\n template: Template.Template;\n lineNumbers?: boolean;\n};\n\nexport const TemplateEditor = composable<HTMLDivElement, TemplateEditorProps>(\n ({ classNames, id, template, lineNumbers = true, ...props }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor(() => {\n const target = template.source?.target;\n if (!target) {\n return {};\n }\n\n return {\n initialValue: target.content ?? '',\n extensions: [\n createDataExtensions({\n id,\n text: createDocAccessor(target, ['content']),\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineNumbers,\n lineWrapping: true,\n placeholder: t('template.placeholder'),\n }),\n createThemeExtensions({ themeMode }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n handlebars(),\n // xml(),\n // NOTE: Since we're using markdown only HTML nodes are parsed.\n xmlDecorator(),\n syntaxHighlighting(defaultHighlightStyle),\n ].filter(isNonNullable),\n };\n }, [themeMode, template.source?.target, lineNumbers]);\n\n return (\n <div\n {...composableProps(props, {\n role: 'none',\n classNames: ['h-full overflow-hidden', classNames],\n })}\n ref={composeRefs(parentRef, forwardedRef)}\n />\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n type CompletionContext,\n type CompletionResult,\n autocompletion,\n completionKeymap,\n} from '@codemirror/autocomplete';\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n type EditorView,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n keymap,\n} from '@codemirror/view';\n\nimport { Domino, mx } from '@dxos/ui';\n\nexport type HandlebarsOptions = {};\n\n/**\n * Simple Handlebars plugin for CodeMirror.\n * Supports:\n * - Comments: {{! comment }}\n * - Commands: {{#command}} {{/command}}\n * - Variables: {{var}}\n * - Commands with variables: {{#each items}} {{/each}}\n */\nexport const handlebars = (_: HandlebarsOptions = {}): Extension => {\n return [\n handlebarsHighlightPlugin,\n autocompletion({\n activateOnTyping: true,\n aboveCursor: true,\n closeOnBlur: true,\n override: [handlebarsCompletions],\n }),\n keymap.of(completionKeymap),\n ];\n};\n\nconst regex = {\n // {{! comment }}\n comment: /\\{\\{!\\s*[^}]*\\}\\}/g,\n\n // {{var}}\n brackets: /\\{\\{[^}]*\\}\\}/g,\n\n // {{#command}} {{/command}}\n command: /\\{\\{[#/]([^}]+)\\}\\}/g,\n\n // {{var}}\n var: /\\{\\{(?!\\s*!)(\\w[^}]*)\\}\\}/g,\n\n // @dxn:queue:data:xxx\n dxn: /@?dxn:[\\w@:]+/g,\n\n // example.com/path/xxx\n url: /[\\w.-]+\\.[\\w.-]+\\/[\\w/]+/g,\n};\n\nconst tagPadding = 'mx-0.5 px-1 rounded-xs';\n\n/**\n * ViewPlugin that decorates Handlebars syntax.\n */\nconst handlebarsHighlightPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged || update.selectionSet) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n // NOTE: Decorations may clash with other extensions (e.g., markdown).\n buildDecorations(view: EditorView) {\n const selection = view.state.selection.main;\n const decorations: Array<{\n from: number;\n to: number;\n decoration: Decoration;\n }> = [];\n\n for (const { from, to } of view.visibleRanges) {\n const text = view.state.doc.sliceString(from, to);\n\n // Match DXN.\n {\n let match;\n while ((match = regex.dxn.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n // Only show widget if selection doesn't overlap with the match range.\n const overlaps = selection.to > start && selection.from <= end;\n if (!overlaps) {\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.widget({\n widget: new DXNWidget(match[0]),\n }),\n });\n }\n }\n }\n\n // Match URLs.\n {\n let match;\n while ((match = regex.url.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({\n class: mx('dx-tag--blue', tagPadding),\n }),\n });\n }\n }\n\n // Match brackets: {{ and }}.\n {\n let match;\n while ((match = regex.brackets.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-subdued' }),\n });\n }\n }\n\n // Match commands: {{#command}} and {{/command}}.\n {\n let match;\n while ((match = regex.command.exec(text)) !== null) {\n const start = from + match.index + 2;\n let end = start + match[0].length - 4;\n const text = view.state.doc.sliceString(start, end);\n const parts = text.split(/\\s+/);\n if (parts.length > 1) {\n const idx = start + parts[0].length;\n decorations.push({\n from: idx,\n to: end,\n decoration: Decoration.mark({ class: 'text-green-text' }),\n });\n end = idx;\n }\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-blue-text' }),\n });\n }\n }\n\n // Match variables: {{var}}.\n {\n let match;\n while ((match = regex.var.exec(text)) !== null) {\n const start = from + match.index + 2;\n const end = start + match[0].length - 4;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-green-text' }),\n });\n }\n }\n }\n\n // Sort decorations by position to satisfy RangeSetBuilder requirements.\n decorations.sort((a, b) => a.from - b.from || a.to - b.to);\n\n // Add sorted decorations to builder.\n const builder = new RangeSetBuilder<Decoration>();\n for (const { from, to, decoration } of decorations) {\n builder.add(from, to, decoration);\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n\nclass DXNWidget extends WidgetType {\n constructor(private readonly _identifier: string) {\n super();\n }\n\n override ignoreEvent() {\n return false;\n }\n\n override eq(other: this) {\n return this._identifier === other._identifier;\n }\n\n override toDOM() {\n const text = this._identifier\n .split(':')\n .map((part) => {\n const len = 16;\n const plen = 4;\n if (part.length > len) {\n return `[${part.slice(0, plen)}…${part.slice(-plen)}]`;\n }\n return part;\n })\n .join(':');\n return Domino.of('span').classNames(mx('font-mono dx-tag--blue', tagPadding)).text(text).root;\n }\n}\n\n// TODO(burdon): Pass in variables.\nconst variables = ['this'];\nconst commands = ['this', 'each', 'if', 'unless', 'with'];\n\n/**\n * Provides completions for Handlebars variables.\n */\nfunction handlebarsCompletions(context: CompletionContext): CompletionResult | null {\n const match = context.matchBefore(/\\{\\{[^}]*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n let type = 'variable';\n let text = match.text.slice(2);\n let from = match.from + 2;\n let matches = [];\n if (text.startsWith('#') || text.startsWith('/')) {\n const idx = text.lastIndexOf(' ');\n if (idx !== -1) {\n type = 'variable';\n matches = variables;\n text = text.slice(idx + 1);\n from += idx + 1;\n } else {\n type = 'command';\n text = text.slice(1);\n matches = commands;\n from += 1;\n }\n } else {\n type = 'variable';\n matches = variables;\n }\n\n const options = matches.filter((name) => name.startsWith(text)).map((name) => ({ type, label: name }));\n return {\n from,\n options,\n };\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport { Decoration, type DecorationSet, type EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nexport type XmlOptions = {};\n\n/**\n * XML decorator plugin for CodeMirror.\n * Decorates XML tags with monospace font using the XML language grammar.\n */\nexport const xmlDecorator = (_: XmlOptions = {}): Extension => {\n return [xmlDecoratorPlugin];\n};\n\n/**\n * ViewPlugin that decorates XML tags using syntax tree.\n */\nconst xmlDecoratorPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView) {\n const builder = new RangeSetBuilder<Decoration>();\n\n for (const { from, to } of view.visibleRanges) {\n syntaxTree(view.state).iterate({\n from,\n to,\n enter: (node) => {\n // Decorate XML elements (opening tags, closing tags, self-closing tags).\n if (\n node.name === 'HTMLTag' ||\n node.name === 'OpenTag' ||\n node.name === 'CloseTag' ||\n node.name === 'SelfClosingTag' ||\n node.name === 'Element'\n ) {\n builder.add(node.from, node.to, Decoration.mark({ class: 'font-mono text-subdued' }));\n }\n },\n });\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment, useEffect, useState } from 'react';\n\nimport { type Blueprint } from '@dxos/compute';\nimport { Operation } from '@dxos/compute';\nimport { type Database, type Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { Filter, useQuery } from '@dxos/react-client/echo';\nimport { ScrollArea, type ThemedClassName } from '@dxos/react-ui';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\n\nimport { ServiceType } from '#types';\n\nimport { type AiChatProcessor } from '../../processor';\n\nexport type ToolboxProps = {\n services?: { service: ServiceType }[];\n functions?: Operation.PersistentOperation[];\n // TODO(burdon): Combine into single array.\n blueprints?: readonly Blueprint.Blueprint[];\n activeBlueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];\n};\n\nexport const Toolbox = composable<HTMLDivElement, ToolboxProps>(\n ({ functions, services, blueprints, activeBlueprints, ...props }, forwardedRef) => {\n return (\n <ScrollArea.Root {...composableProps(props)} thin orientation='vertical' ref={forwardedRef}>\n <ScrollArea.Viewport>\n {blueprints && blueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={blueprints.map(({ name, description, tools }) => ({\n name,\n description,\n subitems: tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {activeBlueprints && activeBlueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={activeBlueprints.map(({ target }) => ({\n name: target?.name ?? '',\n description: target?.description ?? '',\n subitems: target?.tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {services && services.length > 0 && (\n <Section\n title='Services'\n items={services.map(({ service: { serviceId, name, description } }) => ({\n name: name ?? serviceId,\n description,\n // subitems: tools.map(({ name, description }) => ({ name: `∙ ${name}`, description })),\n }))}\n />\n )}\n\n {functions && functions.length > 0 && (\n <Section title='Functions' items={functions.map(({ name, description }) => ({ name, description }))} />\n )}\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n },\n);\n\nToolbox.displayName = 'Toolbox';\n\ntype SectionProps = {\n title: string;\n items: { name: string; description?: string; subitems?: { name: string; description?: string }[] }[];\n striped?: boolean;\n};\n\nconst Section = ({ title, items, striped }: SectionProps) => {\n const stripeClassNames = 'odd:bg-neutral-50 dark:odd:bg-neutral-800';\n const gridClassNames = 'grid grid-cols-[8rem_1fr]';\n const subGridClassNames = mx('col-span-full grid grid-cols-subgrid text-xs px-2', striped && stripeClassNames);\n\n return (\n <div>\n <h1 className='px-2 text-sm'>{title}</h1>\n <div className={gridClassNames}>\n {items.map(({ name, description, subitems }, i) => (\n <Fragment key={i}>\n {name && (\n <div className={subGridClassNames}>\n <div className='truncate text-primary-500'>{name}</div>\n <div className='line-clamp-2'>{description}</div>\n </div>\n )}\n {subitems?.map(({ name, description }, i) => (\n <div key={i} className={mx(subGridClassNames, striped && stripeClassNames)}>\n <div className='truncate'>{name}</div>\n <div className='line-clamp-3 text-subdued'>{description}</div>\n </div>\n ))}\n </Fragment>\n ))}\n </div>\n </div>\n );\n};\n\nexport type ToolboxPanelProps = ThemedClassName<{\n db?: Database.Database;\n processor?: AiChatProcessor;\n}>;\n\nexport const ToolboxPanel = ({ classNames, db, processor }: ToolboxPanelProps) => {\n // Registered services.\n const services = useQuery(db, Filter.type(ServiceType));\n const [serviceTools, setServiceTools] = useState<{ service: ServiceType }[]>([]);\n useEffect(() => {\n log('creating service tools...', { services: services.length });\n queueMicrotask(async () => {\n // TODO(burdon): Fix.\n // const tools = await Promise.all(\n // services.map(async (service) => ({ service, tools: await createToolsFromService(service) })),\n // );\n // setServiceTools(tools);\n });\n }, [services]);\n\n // Deployed functions.\n const functions = useQuery(db, Filter.type(Operation.PersistentOperation));\n\n return (\n <Toolbox\n classNames={classNames}\n blueprints={processor?.context.getBlueprints()}\n services={serviceTools}\n functions={functions}\n />\n );\n};\n\nconst safeToolId = (name: string) => {\n return name.split('_').pop();\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["lazy", "useAtomValue", "Array", "Option", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Event", "Filter", "Obj", "useQuery", "useIdentity", "Menu", "Message", "composable", "composableProps", "useChatKeymapExtensions", "useChatToolbarActions", "useDebug", "React", "IconButton", "useTranslation", "mx", "meta", "ChatActions", "classNames", "children", "microphone", "recording", "processing", "debug", "onEvent", "t", "id", "div", "className", "disabled", "variant", "icon", "iconOnly", "noTooltip", "label", "onMouseDown", "type", "onMouseUp", "onTouchStart", "onTouchEnd", "onClick", "useAtomValue", "React", "useCallback", "Message", "useTranslation", "meta", "ChatMcpErrors", "classNames", "processor", "t", "id", "errors", "mcpErrors", "handleDismiss", "dismissMcpErrors", "length", "Root", "valence", "Title", "onClose", "Content", "asChild", "ul", "className", "map", "error", "li", "key", "url", "kind", "span", "message", "Option", "React", "useCallback", "useMemo", "useState", "McpServer", "Annotation", "Filter", "Obj", "Type", "useObject", "useQuery", "IconButton", "Input", "Popover", "Select", "useTranslation", "Listbox", "SearchList", "useSearchListResults", "Tabs", "getStyles", "mx", "useActiveBlueprints", "useBlueprintHandlers", "useBlueprints", "useContextObjects", "useFilteredTypes", "meta", "Assistant", "styles", "panel", "toolbar", "ChatOptions", "chat", "db", "context", "blueprintRegistry", "presets", "preset", "onPresetChange", "t", "id", "div", "role", "className", "Root", "Trigger", "asChild", "variant", "icon", "iconOnly", "label", "Portal", "Content", "side", "classNames", "Viewport", "ObjectsPanel", "Arrow", "orientation", "defaultValue", "defaultActivePart", "tabIndex", "Panel", "value", "ViewPanel", "BlueprintsPanel", "McpServersPanel", "ModelsPanel", "Tablist", "IconTab", "blueprints", "activeBlueprints", "onUpdateBlueprint", "results", "handleSearch", "items", "extract", "blueprint", "name", "onSearch", "map", "isActive", "has", "key", "Item", "checked", "onSelect", "placeholder", "autoFocus", "view", "setView", "onValueChange", "ChatViews", "OptionLabel", "OptionIndicator", "servers", "type", "adding", "setAdding", "handleAdd", "url", "protocol", "apiKey", "add", "make", "enabled", "handleRemove", "server", "remove", "McpServerRow", "onRemove", "McpServerForm", "onSubmit", "onCancel", "onClick", "setEnabled", "Label", "srOnly", "Switch", "onCheckedChange", "span", "setName", "setUrl", "setProtocol", "setApiKey", "canSubmit", "trim", "length", "handleSubmit", "undefined", "TextInput", "onChange", "event", "target", "TriggerButton", "disabled", "ANY", "types", "typenames", "typename", "getTypename", "ns", "sort", "a", "b", "localeCompare", "setTypename", "anyFilter", "or", "objects", "contextObjects", "onUpdateObject", "object", "getLabel", "findIndex", "obj", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "IconAnnotation", "get", "getOrElse", "iconClassNames", "surfaceText", "getDXN", "ScrollUpButton", "ScrollDownButton", "React", "Select", "useAtomValue", "Option", "React", "useCallback", "useEffect", "useRef", "useState", "useVoiceInput", "Input", "useDynamicRef", "useTranslation", "ChatEditor", "mx", "useChatKeymapExtensions", "meta", "Option", "React", "Annotation", "Obj", "Icon", "IconButton", "toLocalizedString", "useTranslation", "getStyles", "mx", "useContextObjects", "meta", "ChatReferences", "classNames", "context", "db", "t", "id", "objects", "onUpdateObject", "ul", "className", "map", "obj", "dxn", "getDXN", "typename", "getTypename", "label", "getLabel", "ns", "icon", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "IconAnnotation", "get", "getOrElse", "DEFAULT_OBJECT_ICON", "undefined", "styles", "li", "key", "toString", "data-hue", "size", "surfaceText", "iconOnly", "variant", "onClick", "React", "useEffect", "useState", "Tooltip", "useTimeout", "Spinner", "mx", "period", "ChatStatusIndicator", "classNames", "preset", "processing", "error", "props", "init", "setInit", "div", "role", "className", "duration", "state", "Trigger", "asChild", "content", "message", "ChatPrompt", "classNames", "outline", "chat", "db", "processor", "event", "online", "placeholder", "onOnlineChange", "onPresetChange", "settings", "presets", "preset", "t", "useTranslation", "meta", "id", "error", "useAtomValue", "pipe", "getOrUndefined", "streaming", "active", "activeRef", "useDynamicRef", "editorRef", "useRef", "recordingState", "setRecordingState", "useState", "useEffect", "on", "ev", "type", "current", "getText", "length", "setText", "text", "focus", "recording", "useVoiceInput", "onUpdate", "extensions", "useChatKeymapExtensions", "handleSubmit", "useCallback", "emit", "handleEvent", "React", "div", "role", "className", "mx", "ChatMcpErrors", "ChatStatusIndicator", "processing", "ChatEditor", "ref", "autoFocus", "lineWrapping", "onSubmit", "ChatOptions", "blueprintRegistry", "context", "ChatReferences", "ChatActions", "microphone", "onEvent", "undefined", "Input", "Root", "Label", "srOnly", "Switch", "checked", "onCheckedChange", "displayName", "React", "useEffect", "useMemo", "useState", "ChatStatus", "NaturalChatStatus", "formatElapsed", "Matrix", "Unit", "createContext", "ChatContextProvider", "useChatContext", "CHAT_STREAM_STATUS_NAME", "TICK_MS", "ChatStatus", "classNames", "icon", "messages", "requestTiming", "useChatContext", "lastOutputTokens", "sessionTotalTokens", "useMemo", "last", "total", "message", "block", "blocks", "isStats", "usage", "outputTokens", "totalTokens", "isRunning", "endedAt", "show", "React", "NaturalChatStatus", "Root", "defaultRunning", "Icon", "Matrix", "dotClassNames", "dim", "dotSize", "count", "interval", "active", "div", "role", "className", "Text", "Elapsed", "timing", "Separator", "Unit", "Thousand", "toString", "now", "setNow", "useState", "Date", "useEffect", "id", "setInterval", "clearInterval", "formatElapsed", "startedAt", "_tag", "React", "forwardRef", "useCallback", "useEffect", "useMemo", "useState", "PublicKey", "setRef", "MarkdownStream", "keyToFallback", "React", "log", "getXmlTextChild", "applyToolBlockToWidgetState", "context", "block", "_tag", "updateWidget", "toolCallId", "blocks", "rehydrateToolWidgetsFromMessages", "messages", "message", "React", "TogglePanel", "JsonHighlighter", "FallbackWidget", "_tag", "props", "Root", "Header", "classNames", "Content", "Viewport", "data", "displayName", "WidgetType", "Domino", "styles", "padding", "border", "ReasoningWidget", "WidgetType", "text", "pos", "undefined", "String", "eq", "other", "toDOM", "Domino", "of", "classNames", "styles", "padding", "append", "border", "attributes", "root", "updateDOM", "dom", "querySelector", "replaceChildren", "container", "trailHost", "childElementCount", "createTrailLayers", "destroy", "_dom", "previous", "trailRemovalTimers", "get", "clearTimeout", "timerId", "setTimeout", "delete", "remove", "TRAIL_REMOVAL_DELAY_MS", "set", "active", "trail", "Map", "WidgetType", "Domino", "ReferenceWidget", "WidgetType", "text", "dxn", "eq", "other", "toDOM", "Domino", "of", "classNames", "styles", "padding", "append", "attributes", "root", "WidgetType", "Domino", "SelectWidget", "WidgetType", "options", "eq", "other", "JSON", "stringify", "toDOM", "Domino", "of", "attributes", "role", "classNames", "styles", "padding", "append", "map", "option", "text", "root", "WidgetType", "Domino", "StatsWidget", "WidgetType", "text", "eq", "other", "toDOM", "Domino", "of", "classNames", "styles", "padding", "root", "updateDOM", "dom", "textContent", "WidgetType", "Domino", "StatusWidget", "WidgetType", "text", "pos", "undefined", "String", "eq", "other", "toDOM", "Domino", "of", "classNames", "styles", "padding", "append", "attributes", "root", "updateDOM", "dom", "querySelector", "replaceChildren", "trailHost", "childElementCount", "createTrailLayers", "destroy", "_dom", "previous", "trailRemovalTimers", "get", "clearTimeout", "timerId", "setTimeout", "delete", "remove", "TRAIL_REMOVAL_DELAY_MS", "set", "active", "trail", "Map", "React", "useTranslation", "TogglePanel", "meta", "SummaryWidget", "children", "t", "useTranslation", "meta", "id", "React", "TogglePanel", "Root", "classNames", "styles", "border", "Header", "Content", "div", "role", "className", "WidgetType", "Domino", "mx", "SuggestionWidget", "text", "eq", "other", "toDOM", "of", "classNames", "append", "attributes", "icon", "root", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useTranslation", "NumericTabs", "TextCrawl", "TogglePanel", "JsonHighlighter", "isNonNullable", "safeParseJson", "meta", "ToolWidget", "view", "blocks", "t", "useTranslation", "meta", "id", "items", "useMemo", "lastToolCall", "tools", "filter", "block", "_tag", "map", "pending", "toolCallId", "tool", "find", "name", "title", "description", "Boolean", "join", "content", "input", "safeParseJson", "error", "undefined", "result", "isNonNullable", "handleChangeOpen", "useCallback", "setTimeout", "requestMeasure", "length", "React", "ToolPanel", "onChangeOpen", "tabsRef", "useRef", "selected", "setSelected", "useState", "open", "setOpen", "useEffect", "prev", "Math", "min", "max", "current", "focus", "handleSelect", "index", "TogglePanel", "Root", "Header", "classNames", "TextCrawl", "key", "lines", "item", "autoAdvance", "greedy", "Content", "Viewport", "NumericTabs", "ref", "onSelect", "JsonHighlighter", "data", "replacer", "maxDepth", "maxArrayLen", "maxStringLen", "factory", "reasoning", "streaming", "text", "ReasoningWidget", "reference", "ref", "ReferenceWidget", "select", "options", "length", "suggestion", "SuggestionWidget", "stats", "StatsWidget", "status", "StatusWidget", "Component", "toolCall", "className", "React", "toolResult", "toolkit", "isBlockVisible", "message", "block", "str", "stringify", "_tag", "renderXMLBlock", "content", "pending", "tag", "opts", "attributes", "MessageThreadContext", "_widgetState", "updateWidget", "id", "value", "getObjectLabel", "_id", "MessageSyncer", "_threadId", "_completed", "_trailing", "_context", "_document", "_renderer", "context", "reset", "messages", "buffer", "_walk", "setContent", "then", "rehydrateToolWidgetsFromMessages", "update", "length", "append", "index", "outer", "message", "block", "blocks", "rendered", "slice", "pending", "defaultOptions", "autoScroll", "cursor", "fader", "typewriter", "ChatThread", "forwardRef", "classNames", "identity", "messages", "error", "options", "footer", "debug", "extensions", "viewType", "onEvent", "forwardedRef", "controller", "setController", "useState", "handleMarkdownStreamRef", "useCallback", "instance", "setRef", "userHue", "useMemo", "profile", "data", "hue", "keyToFallback", "identityKey", "PublicKey", "random", "useEffect", "scrollToBottom", "renderer", "createBlockRenderer", "syncer", "MessageSyncer", "update", "handleEvent", "type", "value", "text", "React", "div", "role", "data-hue", "className", "MarkdownStream", "key", "registry", "componentRegistry", "ref", "ChatRoot", "children", "chat", "feed", "processor", "onEvent", "props", "debug", "setDebug", "useState", "streaming", "useAtomValue", "active", "requestTiming", "useRequestTiming", "lastPrompt", "useRef", "undefined", "db", "Obj", "getDatabase", "feedMessages", "useQuery", "Filter", "type", "Message", "pendingMessages", "messages", "useMemo", "dedupeWith", "id", "a", "b", "dump", "useDebug", "event", "Event", "useEffect", "on", "ev", "text", "trim", "length", "current", "request", "message", "retry", "cancel", "emit", "React", "ChatContextProvider", "displayName", "setRequestTiming", "startedAt", "Date", "now", "endedAt", "prev", "CHAT_TOOLBAR_NAME", "ChatToolbar", "composable", "attendableId", "companionTo", "forwardedRef", "useChatContext", "menuActions", "useChatToolbarActions", "Menu", "Root", "Toolbar", "composableProps", "ref", "CHAT_CONTENT_NAME", "ChatContent", "div", "classNames", "CHAT_THREAD_NAME", "ChatThread", "viewType", "debugProp", "debugView", "identity", "useIdentity", "error", "pipe", "getOrUndefined", "extensions", "useChatKeymapExtensions", "controllerRef", "scrollToBottom", "navigatePrevious", "navigateNext", "handleEvent", "useCallback", "NaturalChatThread", "CHAT_PROMPT_NAME", "ChatPrompt", "NaturalChatPrompt", "Chat", "Content", "Prompt", "Status", "ChatStatus", "Thread", "Match", "Option", "React", "Process", "Icon", "IconButton", "ScrollArea", "Tooltip", "Treegrid", "composable", "composableProps", "mx", "Unit", "ProcessTree", "processes", "onProcessSelect", "onProcessTerminate", "props", "forwardedRef", "sortedProcesses", "filter", "process", "State", "RUNNING", "HYBERNATING", "includes", "state", "IDLE", "slice", "SUCCEEDED", "FAILED", "TERMINATED", "sort", "a", "b", "aCompletedAt", "getOrElse", "completedAt", "Infinity", "bCompletedAt", "Root", "classNames", "thin", "ref", "Viewport", "gridTemplateColumns", "parentPid", "map", "Row", "key", "pid", "toString", "id", "parentOf", "Cell", "indent", "onClick", "Trigger", "className", "content", "size", "icon", "value", "pipe", "when", "TERMINATING", "orElse", "div", "role", "span", "params", "name", "Millisecond", "metrics", "wallTime", "iconOnly", "variant", "label", "event", "stopPropagation", "defaultHighlightStyle", "syntaxHighlighting", "composeRefs", "React", "createDocAccessor", "useThemeContext", "useTranslation", "useTextEditor", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "composable", "composableProps", "isNonNullable", "meta", "autocompletion", "completionKeymap", "RangeSetBuilder", "Decoration", "ViewPlugin", "WidgetType", "keymap", "Domino", "mx", "handlebars", "_", "handlebarsHighlightPlugin", "activateOnTyping", "aboveCursor", "closeOnBlur", "override", "handlebarsCompletions", "of", "regex", "comment", "brackets", "command", "var", "dxn", "url", "tagPadding", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "selectionSet", "selection", "state", "main", "from", "to", "visibleRanges", "text", "doc", "sliceString", "match", "exec", "start", "index", "end", "length", "overlaps", "push", "decoration", "widget", "DXNWidget", "mark", "class", "parts", "split", "idx", "sort", "a", "b", "builder", "add", "finish", "v", "_identifier", "ignoreEvent", "eq", "other", "toDOM", "map", "part", "len", "plen", "slice", "join", "classNames", "root", "variables", "commands", "context", "matchBefore", "type", "matches", "startsWith", "lastIndexOf", "options", "filter", "name", "label", "syntaxTree", "RangeSetBuilder", "Decoration", "ViewPlugin", "xmlDecorator", "_", "xmlDecoratorPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "builder", "from", "to", "visibleRanges", "state", "iterate", "enter", "node", "name", "add", "mark", "class", "finish", "v", "TemplateEditor", "composable", "classNames", "id", "template", "lineNumbers", "props", "forwardedRef", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "target", "source", "initialValue", "content", "extensions", "createDataExtensions", "text", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineWrapping", "placeholder", "createThemeExtensions", "createMarkdownExtensions", "decorateMarkdown", "handlebars", "xmlDecorator", "syntaxHighlighting", "defaultHighlightStyle", "filter", "isNonNullable", "React", "div", "composableProps", "role", "ref", "composeRefs", "React", "Fragment", "useEffect", "useState", "Operation", "log", "Filter", "useQuery", "ScrollArea", "composable", "composableProps", "mx", "ServiceType", "__dxlog_file", "Toolbox", "thin", "orientation", "ref", "forwardedRef", "title", "blueprints", "map", "description", "tools", "subitems", "activeBlueprints", "items", "target", "name", "safeToolId", "toolId", "services", "service", "functions", "stripeClassNames", "gridClassNames", "subGridClassNames", "className", "div", "i", "striped", "ToolboxPanel", "classNames", "db", "type", "queueMicrotask", "processor", "context", "getBlueprints", "AssistantSettings", "lazy"]
7
+ }