@dxos/plugin-assistant 0.8.4-main.937b3ca → 0.8.4-main.9be5663bfe

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 (607) hide show
  1. package/dist/lib/browser/AssistantSettings-7QMO3LGF.mjs +97 -0
  2. package/dist/lib/browser/AssistantSettings-7QMO3LGF.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +3 -7
  4. package/dist/lib/browser/chunk-ATHYBVGN.mjs +176 -0
  5. package/dist/lib/browser/chunk-ATHYBVGN.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-EZRS3J25.mjs +30 -0
  7. package/dist/lib/browser/chunk-EZRS3J25.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-RUV2WOQH.mjs +154 -0
  9. package/dist/lib/browser/chunk-RUV2WOQH.mjs.map +7 -0
  10. package/dist/lib/browser/create-chat-LBZHGVSN.mjs +82 -0
  11. package/dist/lib/browser/create-chat-LBZHGVSN.mjs.map +7 -0
  12. package/dist/lib/browser/ensure-companion-chat-FR4AWZ2P.mjs +65 -0
  13. package/dist/lib/browser/ensure-companion-chat-FR4AWZ2P.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +3163 -245
  15. package/dist/lib/browser/index.mjs.map +4 -4
  16. package/dist/lib/browser/meta.json +1 -1
  17. package/dist/lib/browser/on-create-space-54RNX5JI.mjs +22 -0
  18. package/dist/lib/browser/on-create-space-54RNX5JI.mjs.map +7 -0
  19. package/dist/lib/browser/operations/index.mjs +13 -0
  20. package/dist/lib/browser/operations/index.mjs.map +7 -0
  21. package/dist/lib/browser/resolve-navigation-targets-NZOD66NY.mjs +22 -0
  22. package/dist/lib/browser/resolve-navigation-targets-NZOD66NY.mjs.map +7 -0
  23. package/dist/lib/browser/run-prompt-in-new-chat-4YQ37XIS.mjs +136 -0
  24. package/dist/lib/browser/run-prompt-in-new-chat-4YQ37XIS.mjs.map +7 -0
  25. package/dist/lib/browser/set-current-chat-WJI3WAVM.mjs +54 -0
  26. package/dist/lib/browser/set-current-chat-WJI3WAVM.mjs.map +7 -0
  27. package/dist/lib/browser/types/index.mjs +1 -4
  28. package/dist/lib/browser/update-chat-name-3Y36KFAS.mjs +71 -0
  29. package/dist/lib/browser/update-chat-name-3Y36KFAS.mjs.map +7 -0
  30. package/dist/lib/node-esm/AssistantSettings-UVUTKO7E.mjs +98 -0
  31. package/dist/lib/node-esm/AssistantSettings-UVUTKO7E.mjs.map +7 -0
  32. package/dist/lib/node-esm/blueprints/index.mjs +3 -7
  33. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs +32 -0
  34. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs.map +7 -0
  35. package/dist/lib/node-esm/chunk-PXAJSTGZ.mjs +177 -0
  36. package/dist/lib/node-esm/chunk-PXAJSTGZ.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-PY4X6FJT.mjs +155 -0
  38. package/dist/lib/node-esm/chunk-PY4X6FJT.mjs.map +7 -0
  39. package/dist/lib/node-esm/create-chat-3BEG4R6J.mjs +83 -0
  40. package/dist/lib/node-esm/create-chat-3BEG4R6J.mjs.map +7 -0
  41. package/dist/lib/node-esm/ensure-companion-chat-BLP7NT32.mjs +66 -0
  42. package/dist/lib/node-esm/ensure-companion-chat-BLP7NT32.mjs.map +7 -0
  43. package/dist/lib/node-esm/index.mjs +3163 -245
  44. package/dist/lib/node-esm/index.mjs.map +4 -4
  45. package/dist/lib/node-esm/meta.json +1 -1
  46. package/dist/lib/node-esm/on-create-space-YRPZ6HZY.mjs +23 -0
  47. package/dist/lib/node-esm/on-create-space-YRPZ6HZY.mjs.map +7 -0
  48. package/dist/lib/node-esm/operations/index.mjs +14 -0
  49. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  50. package/dist/lib/node-esm/resolve-navigation-targets-3PPK7XLH.mjs +23 -0
  51. package/dist/lib/node-esm/resolve-navigation-targets-3PPK7XLH.mjs.map +7 -0
  52. package/dist/lib/node-esm/run-prompt-in-new-chat-2IJBSDTM.mjs +137 -0
  53. package/dist/lib/node-esm/run-prompt-in-new-chat-2IJBSDTM.mjs.map +7 -0
  54. package/dist/lib/node-esm/set-current-chat-KBMMZULR.mjs +55 -0
  55. package/dist/lib/node-esm/set-current-chat-KBMMZULR.mjs.map +7 -0
  56. package/dist/lib/node-esm/types/index.mjs +1 -4
  57. package/dist/lib/node-esm/update-chat-name-HM2P4NSI.mjs +72 -0
  58. package/dist/lib/node-esm/update-chat-name-HM2P4NSI.mjs.map +7 -0
  59. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  60. package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
  61. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
  62. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +2 -0
  63. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +1 -0
  64. package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
  65. package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
  66. package/dist/types/src/blueprints/index.d.ts +1 -6
  67. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  68. package/dist/types/src/capabilities/ai-service.d.ts +6 -0
  69. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  70. package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
  71. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  72. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  73. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  74. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +9 -0
  75. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -0
  76. package/dist/types/src/capabilities/edge-model-resolver.d.ts +7 -0
  77. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  78. package/dist/types/src/capabilities/index.d.ts +41 -11
  79. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/local-model-resolver.d.ts +13 -0
  81. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  82. package/dist/types/src/capabilities/markdown.d.ts +5 -0
  83. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  84. package/dist/types/src/capabilities/migrations.d.ts +5 -0
  85. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  86. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  87. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  88. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  89. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/{settings/settings.d.ts → settings.d.ts} +4 -3
  91. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/state.d.ts +21 -0
  93. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/toolkit.d.ts +6 -0
  95. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  96. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +4 -6
  97. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  98. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +553 -0
  99. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -0
  100. package/dist/types/src/components/AssistantSettings/index.d.ts +1 -1
  101. package/dist/types/src/components/AssistantSettings/index.d.ts.map +1 -1
  102. package/dist/types/src/components/Chat/Chat.d.ts +15 -11
  103. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  104. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +6 -3
  105. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  106. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -1
  107. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  108. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  109. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  110. package/dist/types/src/components/ChatThread/ChatThread.d.ts +3 -3
  111. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  112. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +535 -303
  113. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  114. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +573 -0
  115. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -0
  116. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  117. package/dist/types/src/components/ChatThread/sync.d.ts +6 -5
  118. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  119. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts +18 -0
  120. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -0
  121. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts +2 -0
  122. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts.map +1 -0
  123. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +8 -0
  124. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -0
  125. package/dist/types/src/components/ChatThread/widgets/PromptWidget.d.ts +14 -0
  126. package/dist/types/src/components/ChatThread/widgets/PromptWidget.d.ts.map +1 -0
  127. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts +25 -0
  128. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -0
  129. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +18 -0
  130. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -0
  131. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts +9 -0
  132. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -0
  133. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts +14 -0
  134. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -0
  135. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts +12 -0
  136. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -0
  137. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +25 -0
  138. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -0
  139. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts +11 -0
  140. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -0
  141. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts +5 -0
  142. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -0
  143. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts +9 -0
  144. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -0
  145. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts +553 -0
  146. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -0
  147. package/dist/types/src/components/ChatThread/widgets/index.d.ts +11 -0
  148. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -0
  149. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +10 -0
  150. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -0
  151. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +8 -0
  152. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -0
  153. package/dist/types/src/components/ProcessTree/index.d.ts +2 -0
  154. package/dist/types/src/components/ProcessTree/index.d.ts.map +1 -0
  155. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +5 -4
  156. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  157. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +529 -295
  158. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  159. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  160. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +529 -295
  161. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  162. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +0 -9
  163. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  164. package/dist/types/src/components/Toolbox/Toolbox.d.ts +10 -8
  165. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  166. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +529 -295
  167. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  168. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +2 -2
  169. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +1 -1
  170. package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +1 -1
  171. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +1 -1
  172. package/dist/types/src/components/index.d.ts +3 -12
  173. package/dist/types/src/components/index.d.ts.map +1 -1
  174. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +6 -0
  175. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -0
  176. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +554 -0
  177. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -0
  178. package/dist/types/src/containers/AgentArticle/index.d.ts +2 -0
  179. package/dist/types/src/containers/AgentArticle/index.d.ts.map +1 -0
  180. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +6 -0
  181. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -0
  182. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts +554 -0
  183. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts.map +1 -0
  184. package/dist/types/src/containers/AgentProperties/index.d.ts +2 -0
  185. package/dist/types/src/containers/AgentProperties/index.d.ts.map +1 -0
  186. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +6 -0
  187. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
  188. package/dist/types/src/containers/BlueprintArticle/index.d.ts +2 -0
  189. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
  190. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +18 -0
  191. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
  192. package/dist/types/src/containers/ChatCompanion/index.d.ts +2 -0
  193. package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
  194. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +12 -0
  195. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
  196. package/dist/types/src/containers/ChatContainer/index.d.ts +2 -0
  197. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
  198. package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +2 -3
  199. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
  200. package/dist/types/src/containers/ChatDialog/index.d.ts +2 -0
  201. package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
  202. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +6 -0
  203. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +1 -0
  204. package/dist/types/src/containers/PromptArticle/index.d.ts +2 -0
  205. package/dist/types/src/containers/PromptArticle/index.d.ts.map +1 -0
  206. package/dist/types/src/containers/PromptList/PromptList.d.ts +6 -0
  207. package/dist/types/src/containers/PromptList/PromptList.d.ts.map +1 -0
  208. package/dist/types/src/containers/PromptList/PromptList.stories.d.ts +559 -0
  209. package/dist/types/src/containers/PromptList/PromptList.stories.d.ts.map +1 -0
  210. package/dist/types/src/containers/PromptList/index.d.ts +2 -0
  211. package/dist/types/src/containers/PromptList/index.d.ts.map +1 -0
  212. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +6 -0
  213. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -0
  214. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +19 -0
  215. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -0
  216. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts +2 -0
  217. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts.map +1 -0
  218. package/dist/types/src/containers/TracePanel/index.d.ts +4 -0
  219. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -0
  220. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +4 -0
  221. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -0
  222. package/dist/types/src/containers/TriggerStatus/index.d.ts +2 -0
  223. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
  224. package/dist/types/src/containers/index.d.ts +12 -0
  225. package/dist/types/src/containers/index.d.ts.map +1 -0
  226. package/dist/types/src/extensions/index.d.ts +2 -0
  227. package/dist/types/src/extensions/index.d.ts.map +1 -0
  228. package/dist/types/src/extensions/prompt-extension.d.ts +10 -0
  229. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -0
  230. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  231. package/dist/types/src/hooks/useChatProcessor.d.ts +7 -6
  232. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  233. package/dist/types/src/hooks/useChatServices.d.ts +3 -6
  234. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  235. package/dist/types/src/hooks/useChatToolbarActions.d.ts +2 -2
  236. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
  237. package/dist/types/src/hooks/useContextBinder.d.ts +3 -2
  238. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  239. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  240. package/dist/types/src/hooks/useFilteredTypes.d.ts +1 -1
  241. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
  242. package/dist/types/src/hooks/usePresets.d.ts +1 -1
  243. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  244. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  245. package/dist/types/src/index.d.ts +1 -1
  246. package/dist/types/src/index.d.ts.map +1 -1
  247. package/dist/types/src/meta.d.ts +2 -0
  248. package/dist/types/src/meta.d.ts.map +1 -1
  249. package/dist/types/src/operations/create-chat.d.ts +5 -0
  250. package/dist/types/src/operations/create-chat.d.ts.map +1 -0
  251. package/dist/types/src/operations/definitions.d.ts +135 -0
  252. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  253. package/dist/types/src/operations/ensure-companion-chat.d.ts +5 -0
  254. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -0
  255. package/dist/types/src/operations/index.d.ts +4 -0
  256. package/dist/types/src/operations/index.d.ts.map +1 -0
  257. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  258. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  259. package/dist/types/src/operations/resolve-navigation-targets.d.ts +15 -0
  260. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -0
  261. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +5 -0
  262. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -0
  263. package/dist/types/src/operations/set-current-chat.d.ts +5 -0
  264. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -0
  265. package/dist/types/src/operations/update-chat-name.d.ts +5 -0
  266. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -0
  267. package/dist/types/src/processor/index.d.ts +0 -1
  268. package/dist/types/src/processor/index.d.ts.map +1 -1
  269. package/dist/types/src/processor/processor.d.ts +33 -28
  270. package/dist/types/src/processor/processor.d.ts.map +1 -1
  271. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  272. package/dist/types/src/testing/test-services.d.ts +1 -1
  273. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  274. package/dist/types/src/translations.d.ts +529 -295
  275. package/dist/types/src/translations.d.ts.map +1 -1
  276. package/dist/types/src/types/Assistant.d.ts +17 -39
  277. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  278. package/dist/types/src/types/Settings.d.ts +10 -0
  279. package/dist/types/src/types/Settings.d.ts.map +1 -0
  280. package/dist/types/src/types/capabilities.d.ts +11 -0
  281. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  282. package/dist/types/src/types/index.d.ts +1 -1
  283. package/dist/types/src/types/index.d.ts.map +1 -1
  284. package/dist/types/src/types/service.d.ts.map +1 -1
  285. package/dist/types/tsconfig.tsbuildinfo +1 -1
  286. package/package.json +120 -92
  287. package/src/AssistantPlugin.tsx +148 -52
  288. package/src/blueprints/assistant/blueprint.conversations.json +1 -0
  289. package/src/blueprints/assistant/blueprint.test.ts +46 -0
  290. package/src/blueprints/assistant/blueprint.ts +31 -0
  291. package/src/blueprints/assistant/index.ts +5 -0
  292. package/src/blueprints/index.ts +1 -8
  293. package/src/capabilities/{ai-service/ai-service.ts → ai-service.ts} +4 -3
  294. package/src/capabilities/app-graph-builder.ts +217 -0
  295. package/src/capabilities/blueprint-definition.ts +58 -0
  296. package/src/capabilities/companion-chat-provisioner.ts +164 -0
  297. package/src/capabilities/{edge-model-resolver/edge-model-resolver.ts → edge-model-resolver.ts} +4 -3
  298. package/src/capabilities/index.ts +22 -11
  299. package/src/capabilities/{local-model-resolver/local-model-resolver.ts → local-model-resolver.ts} +4 -3
  300. package/src/capabilities/markdown.ts +40 -0
  301. package/src/capabilities/migrations.ts +34 -0
  302. package/src/capabilities/operation-handler.ts +16 -0
  303. package/src/capabilities/react-surface.tsx +157 -0
  304. package/src/capabilities/{settings/settings.ts → settings.ts} +5 -4
  305. package/src/capabilities/{state/state.ts → state.ts} +11 -3
  306. package/src/capabilities/toolkit.ts +13 -0
  307. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +34 -0
  308. package/src/components/AssistantSettings/AssistantSettings.tsx +104 -92
  309. package/src/components/AssistantSettings/index.ts +2 -2
  310. package/src/components/Chat/Chat.tsx +88 -45
  311. package/src/components/ChatProgress/ChatProgress.tsx +9 -7
  312. package/src/components/ChatPrompt/ChatActions.tsx +25 -5
  313. package/src/components/ChatPrompt/ChatOptions.tsx +43 -29
  314. package/src/components/ChatPrompt/ChatReferences.tsx +18 -8
  315. package/src/components/ChatThread/ChatThread.stories.tsx +31 -48
  316. package/src/components/ChatThread/ChatThread.tsx +28 -17
  317. package/src/components/ChatThread/Link.tsx +1 -1
  318. package/src/components/ChatThread/MarkdownStream.stories.tsx +243 -0
  319. package/src/components/ChatThread/registry.tsx +107 -43
  320. package/src/components/ChatThread/sync.test.ts +13 -10
  321. package/src/components/ChatThread/sync.ts +43 -32
  322. package/src/components/ChatThread/testing/thinking.md +21 -0
  323. package/src/components/ChatThread/testing/thread-1.md +30 -0
  324. package/src/components/ChatThread/testing/{thread.md → thread-2.md} +19 -0
  325. package/src/components/ChatThread/testing/thread-widgets.md +79 -0
  326. package/src/components/ChatThread/tool-widget-state.test.ts +34 -0
  327. package/src/components/ChatThread/tool-widget-state.ts +48 -0
  328. package/src/components/ChatThread/widgets/FallbackWidget.tsx +26 -0
  329. package/src/components/ChatThread/widgets/PromptWidget.ts +28 -0
  330. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +68 -0
  331. package/src/components/ChatThread/widgets/ReasoningWidget.ts +133 -0
  332. package/src/components/ChatThread/widgets/ReferenceWidget.ts +31 -0
  333. package/src/components/ChatThread/widgets/SelectWidget.ts +37 -0
  334. package/src/components/ChatThread/widgets/StatsWidget.ts +29 -0
  335. package/src/components/ChatThread/widgets/StatusWidget.ts +133 -0
  336. package/src/components/ChatThread/widgets/SuggestionWidget.ts +41 -0
  337. package/src/components/ChatThread/widgets/SummaryWidget.tsx +28 -0
  338. package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +54 -0
  339. package/src/components/ChatThread/widgets/ToolWidget.tsx +156 -0
  340. package/src/components/ChatThread/widgets/index.ts +14 -0
  341. package/src/components/ProcessTree/ProcessTree.stories.tsx +109 -0
  342. package/src/components/ProcessTree/ProcessTree.tsx +85 -0
  343. package/src/components/ProcessTree/index.ts +5 -0
  344. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +4 -9
  345. package/src/components/TemplateEditor/TemplateEditor.tsx +50 -42
  346. package/src/components/TemplateEditor/TemplateForm.stories.tsx +7 -6
  347. package/src/components/TemplateEditor/TemplateForm.tsx +9 -10
  348. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +4 -4
  349. package/src/components/ToolBlock/ToolBlock.tsx +21 -20
  350. package/src/components/Toolbox/Toolbox.stories.tsx +4 -6
  351. package/src/components/Toolbox/Toolbox.tsx +66 -60
  352. package/src/components/Typewriter/AssistantToolbar.tsx +7 -7
  353. package/src/components/Typewriter/Typewriter.stories.tsx +18 -15
  354. package/src/components/Typewriter/Typewriter.tsx +6 -10
  355. package/src/components/Typewriter/assistant-extension.tsx +5 -8
  356. package/src/components/index.ts +3 -7
  357. package/src/containers/AgentArticle/AgentArticle.stories.tsx +105 -0
  358. package/src/containers/AgentArticle/AgentArticle.tsx +157 -0
  359. package/src/containers/AgentArticle/index.ts +5 -0
  360. package/src/containers/AgentProperties/AgentProperties.stories.tsx +91 -0
  361. package/src/containers/AgentProperties/AgentProperties.tsx +169 -0
  362. package/src/containers/AgentProperties/index.ts +5 -0
  363. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +29 -0
  364. package/src/containers/BlueprintArticle/index.ts +5 -0
  365. package/src/{components → containers/ChatCompanion}/ChatCompanion.tsx +23 -44
  366. package/src/containers/ChatCompanion/index.ts +5 -0
  367. package/src/containers/ChatContainer/ChatContainer.tsx +95 -0
  368. package/src/containers/ChatContainer/index.ts +5 -0
  369. package/src/{components → containers/ChatDialog}/ChatDialog.tsx +10 -12
  370. package/src/containers/ChatDialog/index.ts +5 -0
  371. package/src/containers/PromptArticle/PromptArticle.tsx +59 -0
  372. package/src/containers/PromptArticle/index.ts +5 -0
  373. package/src/containers/PromptList/PromptList.stories.tsx +129 -0
  374. package/src/containers/PromptList/PromptList.tsx +49 -0
  375. package/src/containers/PromptList/index.ts +5 -0
  376. package/src/containers/TracePanel/TracePanel.tsx +361 -0
  377. package/src/containers/TracePanel/dxn-extractor.test.ts +153 -0
  378. package/src/containers/TracePanel/dxn-extractor.ts +178 -0
  379. package/src/containers/TracePanel/index.ts +9 -0
  380. package/src/containers/TriggerStatus/TriggerStatus.tsx +144 -0
  381. package/src/containers/TriggerStatus/index.ts +5 -0
  382. package/src/containers/index.ts +16 -0
  383. package/src/extensions/index.ts +5 -0
  384. package/src/extensions/prompt-extension.ts +111 -0
  385. package/src/hooks/useBlueprintRegistry.ts +8 -4
  386. package/src/hooks/useChatProcessor.ts +30 -17
  387. package/src/hooks/useChatServices.ts +7 -28
  388. package/src/hooks/useChatToolbarActions.ts +13 -12
  389. package/src/hooks/useContextBinder.ts +17 -6
  390. package/src/hooks/useContextObjects.ts +8 -4
  391. package/src/hooks/useFilteredTypes.ts +3 -3
  392. package/src/hooks/usePresets.ts +2 -1
  393. package/src/hooks/useReferencesProvider.ts +1 -5
  394. package/src/index.ts +1 -1
  395. package/src/meta.ts +6 -3
  396. package/src/operations/create-chat.ts +80 -0
  397. package/src/operations/definitions.ts +127 -0
  398. package/src/operations/ensure-companion-chat.ts +61 -0
  399. package/src/operations/index.ts +17 -0
  400. package/src/operations/on-create-space.ts +24 -0
  401. package/src/operations/resolve-navigation-targets.ts +26 -0
  402. package/src/operations/run-prompt-in-new-chat.ts +113 -0
  403. package/src/operations/set-current-chat.ts +50 -0
  404. package/src/operations/update-chat-name.ts +61 -0
  405. package/src/processor/index.ts +0 -1
  406. package/src/processor/presets.ts +2 -2
  407. package/src/processor/processor.test.ts +18 -50
  408. package/src/processor/processor.ts +190 -129
  409. package/src/queue-logger.ts +2 -2
  410. package/src/testing/test-generator.ts +45 -14
  411. package/src/testing/test-sequence.ts +3 -3
  412. package/src/testing/test-services.ts +2 -2
  413. package/src/translations.ts +134 -83
  414. package/src/types/Assistant.ts +8 -56
  415. package/src/types/Settings.ts +21 -0
  416. package/src/types/capabilities.ts +11 -3
  417. package/src/types/events.ts +2 -2
  418. package/src/types/index.ts +3 -1
  419. package/src/types/service.ts +5 -5
  420. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs +0 -31
  421. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs.map +0 -7
  422. package/dist/lib/browser/ChatCompanion-GFSJZTOT.mjs +0 -153
  423. package/dist/lib/browser/ChatCompanion-GFSJZTOT.mjs.map +0 -7
  424. package/dist/lib/browser/ChatContainer-IHAPBIZE.mjs +0 -72
  425. package/dist/lib/browser/ChatContainer-IHAPBIZE.mjs.map +0 -7
  426. package/dist/lib/browser/ChatDialog-EGRMPCTL.mjs +0 -85
  427. package/dist/lib/browser/ChatDialog-EGRMPCTL.mjs.map +0 -7
  428. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs +0 -53
  429. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs.map +0 -7
  430. package/dist/lib/browser/ai-service-5GUDOEWF.mjs +0 -21
  431. package/dist/lib/browser/ai-service-5GUDOEWF.mjs.map +0 -7
  432. package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs +0 -212
  433. package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs.map +0 -7
  434. package/dist/lib/browser/blueprint-definition-DGHH7MUU.mjs +0 -14
  435. package/dist/lib/browser/blueprint-definition-DGHH7MUU.mjs.map +0 -7
  436. package/dist/lib/browser/chunk-A75V4MOQ.mjs +0 -1832
  437. package/dist/lib/browser/chunk-A75V4MOQ.mjs.map +0 -7
  438. package/dist/lib/browser/chunk-DKQMSMBN.mjs +0 -326
  439. package/dist/lib/browser/chunk-DKQMSMBN.mjs.map +0 -7
  440. package/dist/lib/browser/chunk-EXVT7D4B.mjs +0 -23
  441. package/dist/lib/browser/chunk-EXVT7D4B.mjs.map +0 -7
  442. package/dist/lib/browser/chunk-ML3QCFKA.mjs +0 -265
  443. package/dist/lib/browser/chunk-ML3QCFKA.mjs.map +0 -7
  444. package/dist/lib/browser/chunk-MRJVYGLU.mjs +0 -208
  445. package/dist/lib/browser/chunk-MRJVYGLU.mjs.map +0 -7
  446. package/dist/lib/browser/chunk-V772AMZM.mjs +0 -250
  447. package/dist/lib/browser/chunk-V772AMZM.mjs.map +0 -7
  448. package/dist/lib/browser/chunk-WGQTU6UJ.mjs +0 -41
  449. package/dist/lib/browser/chunk-WGQTU6UJ.mjs.map +0 -7
  450. package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs +0 -20
  451. package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs.map +0 -7
  452. package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs +0 -19
  453. package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs.map +0 -7
  454. package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs +0 -132
  455. package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs.map +0 -7
  456. package/dist/lib/browser/react-surface-S7SBFOSW.mjs +0 -109
  457. package/dist/lib/browser/react-surface-S7SBFOSW.mjs.map +0 -7
  458. package/dist/lib/browser/repair-6QGAKOVM.mjs +0 -54
  459. package/dist/lib/browser/repair-6QGAKOVM.mjs.map +0 -7
  460. package/dist/lib/browser/settings-4ZDLUMYE.mjs +0 -32
  461. package/dist/lib/browser/settings-4ZDLUMYE.mjs.map +0 -7
  462. package/dist/lib/browser/state-AN6336ZX.mjs +0 -26
  463. package/dist/lib/browser/state-AN6336ZX.mjs.map +0 -7
  464. package/dist/lib/browser/toolkit-7AVTEPMA.mjs +0 -18
  465. package/dist/lib/browser/toolkit-7AVTEPMA.mjs.map +0 -7
  466. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs +0 -32
  467. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs.map +0 -7
  468. package/dist/lib/node-esm/ChatCompanion-UR7DXZ54.mjs +0 -154
  469. package/dist/lib/node-esm/ChatCompanion-UR7DXZ54.mjs.map +0 -7
  470. package/dist/lib/node-esm/ChatContainer-YMLLGOZK.mjs +0 -73
  471. package/dist/lib/node-esm/ChatContainer-YMLLGOZK.mjs.map +0 -7
  472. package/dist/lib/node-esm/ChatDialog-D24WJPK4.mjs +0 -86
  473. package/dist/lib/node-esm/ChatDialog-D24WJPK4.mjs.map +0 -7
  474. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs +0 -54
  475. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs.map +0 -7
  476. package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs +0 -22
  477. package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs.map +0 -7
  478. package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs +0 -213
  479. package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs.map +0 -7
  480. package/dist/lib/node-esm/blueprint-definition-SEMDEIYG.mjs +0 -15
  481. package/dist/lib/node-esm/blueprint-definition-SEMDEIYG.mjs.map +0 -7
  482. package/dist/lib/node-esm/chunk-355W5B27.mjs +0 -251
  483. package/dist/lib/node-esm/chunk-355W5B27.mjs.map +0 -7
  484. package/dist/lib/node-esm/chunk-4BERCIES.mjs +0 -1833
  485. package/dist/lib/node-esm/chunk-4BERCIES.mjs.map +0 -7
  486. package/dist/lib/node-esm/chunk-75PHXBN3.mjs +0 -327
  487. package/dist/lib/node-esm/chunk-75PHXBN3.mjs.map +0 -7
  488. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs +0 -209
  489. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs.map +0 -7
  490. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs +0 -42
  491. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs.map +0 -7
  492. package/dist/lib/node-esm/chunk-POWB2BPC.mjs +0 -25
  493. package/dist/lib/node-esm/chunk-POWB2BPC.mjs.map +0 -7
  494. package/dist/lib/node-esm/chunk-ZRIPP7YF.mjs +0 -267
  495. package/dist/lib/node-esm/chunk-ZRIPP7YF.mjs.map +0 -7
  496. package/dist/lib/node-esm/edge-model-resolver-G5KMODPO.mjs +0 -21
  497. package/dist/lib/node-esm/edge-model-resolver-G5KMODPO.mjs.map +0 -7
  498. package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs +0 -20
  499. package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs.map +0 -7
  500. package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs +0 -133
  501. package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs.map +0 -7
  502. package/dist/lib/node-esm/react-surface-ZR6FXGLF.mjs +0 -110
  503. package/dist/lib/node-esm/react-surface-ZR6FXGLF.mjs.map +0 -7
  504. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs +0 -55
  505. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs.map +0 -7
  506. package/dist/lib/node-esm/settings-CQEOHR3R.mjs +0 -33
  507. package/dist/lib/node-esm/settings-CQEOHR3R.mjs.map +0 -7
  508. package/dist/lib/node-esm/state-HDON4REW.mjs +0 -27
  509. package/dist/lib/node-esm/state-HDON4REW.mjs.map +0 -7
  510. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs +0 -19
  511. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs.map +0 -7
  512. package/dist/types/src/blueprints/assistant-blueprint.d.ts +0 -209
  513. package/dist/types/src/blueprints/assistant-blueprint.d.ts.map +0 -1
  514. package/dist/types/src/capabilities/ai-service/ai-service.d.ts +0 -5
  515. package/dist/types/src/capabilities/ai-service/ai-service.d.ts.map +0 -1
  516. package/dist/types/src/capabilities/ai-service/index.d.ts +0 -3
  517. package/dist/types/src/capabilities/ai-service/index.d.ts.map +0 -1
  518. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +0 -6
  519. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  520. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  521. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  522. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -21
  523. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
  524. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -4
  525. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
  526. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts +0 -6
  527. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +0 -1
  528. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts +0 -3
  529. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts.map +0 -1
  530. package/dist/types/src/capabilities/local-model-resolver/index.d.ts +0 -3
  531. package/dist/types/src/capabilities/local-model-resolver/index.d.ts.map +0 -1
  532. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +0 -12
  533. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +0 -1
  534. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  535. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  536. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  537. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  538. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  539. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  540. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -5
  541. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  542. package/dist/types/src/capabilities/repair/index.d.ts +0 -3
  543. package/dist/types/src/capabilities/repair/index.d.ts.map +0 -1
  544. package/dist/types/src/capabilities/repair/repair.d.ts +0 -6
  545. package/dist/types/src/capabilities/repair/repair.d.ts.map +0 -1
  546. package/dist/types/src/capabilities/settings/index.d.ts +0 -15
  547. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  548. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  549. package/dist/types/src/capabilities/state/index.d.ts +0 -11
  550. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  551. package/dist/types/src/capabilities/state/state.d.ts +0 -13
  552. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  553. package/dist/types/src/capabilities/toolkit/index.d.ts +0 -3
  554. package/dist/types/src/capabilities/toolkit/index.d.ts.map +0 -1
  555. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +0 -5
  556. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +0 -1
  557. package/dist/types/src/components/BlueprintArticle.d.ts +0 -7
  558. package/dist/types/src/components/BlueprintArticle.d.ts.map +0 -1
  559. package/dist/types/src/components/ChatCompanion.d.ts +0 -13
  560. package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
  561. package/dist/types/src/components/ChatContainer.d.ts +0 -19
  562. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  563. package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
  564. package/dist/types/src/components/ChatThread/reducers.d.ts +0 -40
  565. package/dist/types/src/components/ChatThread/reducers.d.ts.map +0 -1
  566. package/dist/types/src/components/PromptArticle.d.ts +0 -7
  567. package/dist/types/src/components/PromptArticle.d.ts.map +0 -1
  568. package/dist/types/src/functions/index.d.ts +0 -4
  569. package/dist/types/src/functions/index.d.ts.map +0 -1
  570. package/dist/types/src/functions/object-list.d.ts +0 -10
  571. package/dist/types/src/functions/object-list.d.ts.map +0 -1
  572. package/dist/types/src/functions/object-load.d.ts +0 -8
  573. package/dist/types/src/functions/object-load.d.ts.map +0 -1
  574. package/dist/types/src/functions/object-search.d.ts +0 -10
  575. package/dist/types/src/functions/object-search.d.ts.map +0 -1
  576. package/dist/types/src/processor/update-name.d.ts +0 -10
  577. package/dist/types/src/processor/update-name.d.ts.map +0 -1
  578. package/dist/types/src/types/AssistantAction.d.ts +0 -95
  579. package/dist/types/src/types/AssistantAction.d.ts.map +0 -1
  580. package/src/blueprints/assistant-blueprint.ts +0 -62
  581. package/src/capabilities/ai-service/index.ts +0 -7
  582. package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -180
  583. package/src/capabilities/app-graph-builder/index.ts +0 -7
  584. package/src/capabilities/blueprint-definition/blueprint-definition.ts +0 -60
  585. package/src/capabilities/blueprint-definition/index.ts +0 -8
  586. package/src/capabilities/edge-model-resolver/index.ts +0 -7
  587. package/src/capabilities/local-model-resolver/index.ts +0 -7
  588. package/src/capabilities/operation-resolver/index.ts +0 -7
  589. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -110
  590. package/src/capabilities/react-surface/index.ts +0 -7
  591. package/src/capabilities/react-surface/react-surface.tsx +0 -95
  592. package/src/capabilities/repair/index.ts +0 -7
  593. package/src/capabilities/repair/repair.ts +0 -63
  594. package/src/capabilities/settings/index.ts +0 -7
  595. package/src/capabilities/state/index.ts +0 -7
  596. package/src/capabilities/toolkit/index.ts +0 -7
  597. package/src/capabilities/toolkit/toolkit.ts +0 -26
  598. package/src/components/BlueprintArticle.tsx +0 -29
  599. package/src/components/ChatContainer.tsx +0 -61
  600. package/src/components/ChatThread/reducers.ts +0 -151
  601. package/src/components/PromptArticle.tsx +0 -50
  602. package/src/functions/index.ts +0 -7
  603. package/src/functions/object-list.ts +0 -49
  604. package/src/functions/object-load.ts +0 -47
  605. package/src/functions/object-search.ts +0 -46
  606. package/src/processor/update-name.ts +0 -59
  607. package/src/types/AssistantAction.ts +0 -75
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/capabilities/ai-service/index.ts", "../../../src/capabilities/app-graph-builder/index.ts", "../../../src/capabilities/blueprint-definition/index.ts", "../../../src/capabilities/edge-model-resolver/index.ts", "../../../src/capabilities/local-model-resolver/index.ts", "../../../src/capabilities/operation-resolver/index.ts", "../../../src/capabilities/react-surface/index.ts", "../../../src/capabilities/repair/index.ts", "../../../src/capabilities/settings/index.ts", "../../../src/capabilities/state/index.ts", "../../../src/capabilities/toolkit/index.ts", "../../../src/translations.ts", "../../../src/AssistantPlugin.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AiService = Capability.lazy('AiService', () => import('./ai-service'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const BlueprintDefinition = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));\nexport { AssistantBlueprint } from './blueprint-definition';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const EdgeModelResolver = Capability.lazy('EdgeModelResolver', () => import('./edge-model-resolver'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const LocalModelResolver = Capability.lazy('LocalModelResolver', () => import('./local-model-resolver'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const OperationResolver = Capability.lazy('OperationResolver', () => import('./operation-resolver'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const Repair = Capability.lazy('Repair', () => import('./repair'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const Settings = Capability.lazy('Settings', () => import('./settings'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AssistantState = Capability.lazy('AssistantState', () => import('./state'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const Toolkit = Capability.lazy('Toolkit', () => import('./toolkit'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Blueprint, Prompt } from '@dxos/blueprints';\nimport { Sequence } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\nimport { Assistant } from './types';\n\n// TODO(burdon): Standardize translation names.\nexport const translations = [\n {\n 'en-US': {\n // TODO(burdon): From assistant.\n [Blueprint.Blueprint.typename]: {\n 'typename label': 'Blueprint',\n 'typename label_zero': 'Blueprints',\n 'typename label_one': 'Blueprint',\n 'typename label_other': 'Blueprints',\n 'object name placeholder': 'New blueprint',\n 'rename object label': 'Rename blueprint',\n 'delete object label': 'Delete blueprint',\n 'object deleted label': 'Blueprint deleted',\n },\n [Type.getTypename(Prompt.Prompt)]: {\n 'typename label': 'Prompt',\n 'typename label_zero': 'Prompts',\n 'typename label_one': 'Prompt',\n 'typename label_other': 'Prompts',\n 'object name placeholder': 'New prompt',\n 'rename object label': 'Rename prompt',\n 'delete object label': 'Delete prompt',\n 'object deleted label': 'Prompt deleted',\n },\n // TODO(burdon): From conductor.\n [Sequence.typename]: {\n 'typename label': 'Sequence',\n 'typename label_zero': 'Sequences',\n 'typename label_one': 'Sequence',\n 'typename label_other': 'Sequences',\n 'object name placeholder': 'New sequence',\n 'rename object label': 'Rename sequence',\n 'delete object label': 'Delete sequence',\n 'object deleted label': 'Sequence deleted',\n },\n [Assistant.Chat.typename]: {\n 'typename label': 'AI Chat',\n 'object name placeholder': 'New AI Chat',\n 'rename object label': 'Rename AI Chat',\n 'delete object label': 'Delete AI Chat',\n 'object deleted label': 'AI Chat deleted',\n },\n // TODO(burdon): Reconcile with react-ui-chat.\n [meta.id]: {\n 'templates label': 'Templates',\n 'open ambient chat label': 'Open Assistant',\n 'assistant chat label': 'Assistant',\n 'plugin name': 'Assistant',\n 'settings title': 'Assistant settings',\n 'object placeholder': 'New prompt',\n 'create object label': 'Create prompt',\n 'create trigger label': 'Create trigger',\n 'create stack section label': 'Create prompt',\n 'command placeholder': 'Enter slash command...',\n 'template placeholder': 'Enter template...',\n 'value placeholder': 'Enter value...',\n 'prompt rules label': 'Prompt Rules',\n 'typename placeholder': 'Enter typename of objects which this template is for',\n 'description placeholder': 'Enter description of when this template should be used',\n 'select preset template placeholder': 'Select preset',\n 'service registry label': 'Service Registry',\n 'type filter placeholder': 'Type',\n 'any type filter label': 'Any',\n 'no blueprint message': 'No active blueprints',\n 'tool call label': 'Calling tool...',\n 'tool result label': 'Success',\n 'tool error label': 'Tool call failed',\n\n 'invocations label': 'Invocations',\n\n 'assistant dialog title': 'Assistant',\n 'open assistant label': 'Open assistant',\n\n 'no tools': 'No tools are configured',\n 'no results': 'No results',\n\n 'cancel button': 'Cancel',\n 'save button': 'Save',\n 'new thread button': 'New Chat',\n 'rename thread button': 'Rename Chat',\n 'chat history label': 'Chat History',\n 'chat update name label': 'Update AI Chat name',\n\n 'toolkit label': 'Toolkit',\n 'summary label': 'Summary',\n\n 'search placeholder': 'Search...',\n 'prompt placeholder': 'Enter question or command...',\n 'context objects button': 'Add to context',\n 'context settings button': 'Chat settings',\n 'microphone button': 'Click to speak',\n 'cancel processing button': 'Stop processing',\n 'blueprints in context title': 'Blueprints',\n 'objects in context title': 'Content',\n 'remove object in context label': 'Remove document',\n 'chat model title': 'Model',\n\n 'settings default label': 'Default',\n 'settings custom prompts label': 'Use custom prompts',\n 'settings llm provider label': 'LLM provider',\n 'settings edge llm model label': 'Remote language model',\n 'settings ollama llm model label': 'Ollama language model',\n },\n },\n },\n] as const satisfies Resource[];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common, Plugin } from '@dxos/app-framework';\nimport { ResearchGraph } from '@dxos/assistant-toolkit';\nimport { Blueprint, Prompt } from '@dxos/blueprints';\nimport { Sequence } from '@dxos/conductor';\nimport { Obj, Type } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { ClientEvents } from '@dxos/plugin-client/types';\nimport { SpaceCapabilities, SpaceEvents } from '@dxos/plugin-space/types';\nimport { type CreateObject } from '@dxos/plugin-space/types';\nimport { HasSubject } from '@dxos/types';\n\nimport {\n AiService,\n AppGraphBuilder,\n AssistantState,\n BlueprintDefinition,\n EdgeModelResolver,\n LocalModelResolver,\n OperationResolver,\n ReactSurface,\n Repair,\n Settings,\n Toolkit,\n} from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { AssistantEvents } from './types';\nimport { Assistant, AssistantOperation } from './types';\n\nexport const AssistantPlugin = Plugin.define(meta).pipe(\n Common.Plugin.addTranslationsModule({ translations }),\n Common.Plugin.addSettingsModule({ activate: Settings }),\n Plugin.addModule({\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Common.ActivationEvent.SetupSettings,\n activate: AssistantState,\n }),\n Common.Plugin.addMetadataModule({\n metadata: [\n {\n id: Type.getTypename(Assistant.Chat),\n metadata: {\n icon: 'ph--atom--regular',\n iconHue: 'sky',\n createObject: ((props) => Effect.sync(() => Assistant.make(props))) satisfies CreateObject,\n },\n },\n {\n id: Type.getTypename(Blueprint.Blueprint),\n metadata: {\n icon: 'ph--blueprint--regular',\n iconHue: 'sky',\n inputSchema: AssistantOperation.BlueprintForm,\n createObject: ((props) => Effect.sync(() => Blueprint.make(props))) satisfies CreateObject,\n },\n },\n {\n id: Type.getTypename(Prompt.Prompt),\n metadata: {\n icon: 'ph--scroll--regular',\n iconHue: 'sky',\n createObject: ((props) => Effect.sync(() => Prompt.make(props))) satisfies CreateObject,\n },\n },\n {\n id: Type.getTypename(Sequence),\n metadata: {\n icon: 'ph--circuitry--regular',\n iconHue: 'sky',\n createObject: ((props) => Effect.sync(() => Obj.make(Sequence, props))) satisfies CreateObject,\n addToCollectionOnCreate: true,\n },\n },\n ],\n }),\n Common.Plugin.addSchemaModule({\n schema: [\n Assistant.Chat,\n Assistant.CompanionTo,\n Blueprint.Blueprint,\n HasSubject.HasSubject,\n Prompt.Prompt,\n ResearchGraph,\n Sequence,\n ],\n }),\n Plugin.addModule({\n id: 'on-space-created',\n activatesOn: SpaceEvents.SpaceCreated,\n activate: () =>\n Effect.succeed(\n Capability.contributes(SpaceCapabilities.OnCreateSpace, (params) =>\n Operation.invoke(AssistantOperation.OnCreateSpace, params),\n ),\n ),\n }),\n Plugin.addModule({\n activatesOn: ClientEvents.SpacesReady,\n activate: Repair,\n }),\n Common.Plugin.addAppGraphModule({ activate: AppGraphBuilder }),\n Common.Plugin.addOperationResolverModule({ activate: OperationResolver }),\n Common.Plugin.addSurfaceModule({\n activate: ReactSurface,\n activatesBefore: [Common.ActivationEvent.SetupArtifactDefinition],\n }),\n Plugin.addModule({\n activatesOn: AssistantEvents.SetupAiServiceProviders,\n activate: EdgeModelResolver,\n }),\n Plugin.addModule({\n activatesOn: AssistantEvents.SetupAiServiceProviders,\n activate: LocalModelResolver,\n }),\n Plugin.addModule({\n activatesBefore: [AssistantEvents.SetupAiServiceProviders],\n // TODO(dmaretskyi): This should activate lazily when the AI chat is used.\n activatesOn: Common.ActivationEvent.Startup,\n activate: AiService,\n }),\n Common.Plugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n Plugin.addModule({\n // TODO(wittjosiah): Use a different event.\n activatesOn: Common.ActivationEvent.Startup,\n activate: Toolkit,\n }),\n Plugin.make,\n);\n"],
5
- "mappings": "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",
6
- "names": ["Capability", "AiService", "Capability", "lazy", "Capability", "AppGraphBuilder", "Capability", "lazy", "Capability", "BlueprintDefinition", "Capability", "lazy", "Capability", "EdgeModelResolver", "Capability", "lazy", "Capability", "LocalModelResolver", "Capability", "lazy", "Capability", "OperationResolver", "Capability", "lazy", "Capability", "ReactSurface", "Capability", "lazy", "Capability", "Repair", "Capability", "lazy", "Capability", "Settings", "Capability", "lazy", "Capability", "AssistantState", "Capability", "lazy", "Capability", "Toolkit", "Capability", "lazy", "Blueprint", "Prompt", "Sequence", "Type", "translations", "Blueprint", "typename", "Type", "getTypename", "Prompt", "Sequence", "Assistant", "Chat", "meta", "id", "Effect", "Capability", "Common", "Plugin", "ResearchGraph", "Blueprint", "Prompt", "Sequence", "Obj", "Type", "Operation", "ClientEvents", "SpaceCapabilities", "SpaceEvents", "HasSubject", "AssistantPlugin", "Plugin", "define", "meta", "pipe", "Common", "addTranslationsModule", "translations", "addSettingsModule", "activate", "Settings", "addModule", "activatesOn", "ActivationEvent", "SetupSettings", "AssistantState", "addMetadataModule", "metadata", "id", "Type", "getTypename", "Assistant", "Chat", "icon", "iconHue", "createObject", "props", "sync", "make", "Blueprint", "inputSchema", "AssistantOperation", "BlueprintForm", "Prompt", "Sequence", "Obj", "addToCollectionOnCreate", "addSchemaModule", "schema", "CompanionTo", "HasSubject", "ResearchGraph", "SpaceEvents", "SpaceCreated", "succeed", "Capability", "contributes", "SpaceCapabilities", "OnCreateSpace", "params", "Operation", "invoke", "ClientEvents", "SpacesReady", "Repair", "addAppGraphModule", "AppGraphBuilder", "addOperationResolverModule", "OperationResolver", "addSurfaceModule", "ReactSurface", "activatesBefore", "SetupArtifactDefinition", "AssistantEvents", "SetupAiServiceProviders", "EdgeModelResolver", "LocalModelResolver", "Startup", "AiService", "addBlueprintDefinitionModule", "BlueprintDefinition", "Toolkit"]
3
+ "sources": ["../../../src/components/index.ts", "../../../src/components/Chat/Chat.tsx", "../../../src/components/ChatPrompt/ChatActions.tsx", "../../../src/components/ChatPrompt/ChatOptions.tsx", "../../../src/components/ChatPrompt/ChatPresets.tsx", "../../../src/components/ChatPrompt/ChatReferences.tsx", "../../../src/components/ChatPrompt/ChatStatusIndicator.tsx", "../../../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/PromptWidget.ts", "../../../src/components/ChatThread/widgets/ReasoningWidget.ts", "../../../src/components/ChatThread/widgets/ReferenceWidget.ts", "../../../src/components/ChatThread/widgets/SelectWidget.ts", "../../../src/components/ChatThread/widgets/StatsWidget.ts", "../../../src/components/ChatThread/widgets/SummaryWidget.tsx", "../../../src/components/ChatThread/widgets/SuggestionWidget.ts", "../../../src/components/ChatThread/widgets/ToolWidget.tsx", "../../../src/components/ChatThread/widgets/StatusWidget.ts", "../../../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", "../../../src/hooks/useBlueprintRegistry.ts", "../../../src/hooks/useChatProcessor.ts", "../../../src/processor/presets.ts", "../../../src/processor/processor.ts", "../../../src/hooks/useChatServices.ts", "../../../src/hooks/useChatToolbarActions.ts", "../../../src/hooks/useContextBinder.ts", "../../../src/hooks/useContextObjects.ts", "../../../src/hooks/useFilteredTypes.ts", "../../../src/hooks/useFlush.ts", "../../../src/hooks/useOnline.ts", "../../../src/hooks/usePresets.ts", "../../../src/hooks/useReferencesProvider.ts", "../../../src/meta.ts", "../../../src/translations.ts", "../../../src/AssistantPlugin.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 { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\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 { type Chat as ChatModule } from '@dxos/assistant-toolkit';\nimport { Event } from '@dxos/async';\nimport { type Database, Filter, Obj } from '@dxos/echo';\nimport { useVoiceInput } from '@dxos/plugin-transcription';\nimport { type Queue, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Input, type ThemedClassName, useDynamicRef, useTranslation } from '@dxos/react-ui';\nimport { ChatEditor, type ChatEditorController, type ChatEditorProps } from '@dxos/react-ui-chat';\nimport { type MarkdownStreamController } from '@dxos/react-ui-components';\nimport { Menu, MenuRootProps } from '@dxos/react-ui-menu';\nimport { Message } from '@dxos/types';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\nimport { isTruthy, trim } from '@dxos/util';\n\nimport { useChatToolbarActions } from '#hooks';\nimport { meta } from '#meta';\n\nimport { type AiChatProcessor } from '../../processor';\nimport {\n ChatActions,\n type ChatActionsProps,\n ChatOptions,\n type ChatPresetsProps,\n ChatReferences,\n ChatStatusIndicator,\n} from '../ChatPrompt';\nimport { ChatThread as NaturalChatThread, type ChatThreadProps as NaturalChatThreadProps } from '../ChatThread';\nimport { type ChatEvent } from './events';\n\n//\n// Context\n// NOTE: The context should not be exported. It is only used internally.\n// Components outside of this Radix-style group shuld define their own APIs.\n//\n\ntype ChatContextValue = {\n debug?: boolean;\n event: Event<ChatEvent>;\n db?: Database.Database;\n chat?: ChatModule.Chat;\n messages: Message.Message[];\n processor: AiChatProcessor;\n};\n\nexport const [ChatContextProvider, useChatContext] = createContext<ChatContextValue>('Chat');\n\n//\n// Root\n//\n\ntype ChatRootProps = PropsWithChildren<\n Pick<ChatContextValue, 'db' | 'chat' | 'processor'> & {\n queue?: Queue;\n onEvent?: (event: ChatEvent) => void;\n }\n>;\n\nconst ChatRoot = ({ children, chat, queue, processor, onEvent, ...props }: ChatRootProps) => {\n const [debug, setDebug] = useState(false);\n const pending = useAtomValue(processor.messages);\n const streaming = useAtomValue(processor.streaming);\n const lastPrompt = useRef<string | undefined>(undefined);\n\n // Messages.\n const storedMessages = useQuery(queue, Filter.type(Message.Message));\n const messages = useMemo(() => {\n return Array.dedupeWith([...storedMessages, ...pending], ({ id: a }, { id: b }) => a === b);\n }, [storedMessages, pending]);\n\n // Debug.\n const dump = useCallback(async () => {\n const objects = processor.context.getObjects();\n const blueprints = processor.context.getBlueprints();\n const system = await processor.getSystemPrompt();\n const tools = await processor.getTools();\n\n // eslint-disable-next-line no-console\n // eslint-disable-next-line no-console\n console.group('Chat', { objects, blueprints });\n // eslint-disable-next-line no-console\n console.log(trim`\n System Prompt:\n ${system}\n `);\n // eslint-disable-next-line no-console\n console.log(trim`\n Tools:\n ${Object.values(tools)\n .map((tool) => JSON.stringify(tool, null, 2))\n .join('\\n')}\n `);\n console.groupEnd();\n }, [processor]);\n\n // Events.\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 const db = props.db ?? (chat && Obj.getDatabase(chat));\n\n return (\n <ChatContextProvider\n debug={debug}\n event={event}\n db={db}\n chat={chat}\n messages={messages}\n processor={processor}\n {...props}\n >\n {children}\n </ChatContextProvider>\n );\n};\n\nChatRoot.displayName = 'Chat.Root';\n\n//\n// Viewport\n//\n\nconst CHAT_VIEWPORT_NAME = 'Chat.Viewport';\n\ntype ChatViewportProps = {};\n\nconst ChatViewport = composable<HTMLDivElement, ChatViewportProps>(({ children, ...props }, forwardedRef) => {\n return (\n <div {...composableProps(props, { classNames: 'dx-expander flex flex-col' })} ref={forwardedRef}>\n {children}\n </div>\n );\n});\n\nChatViewport.displayName = CHAT_VIEWPORT_NAME;\n\n//\n// Thread\n//\n\nconst CHAT_THREAD_NAME = 'Chat.Thread';\n\ntype ChatThreadProps = Omit<NaturalChatThreadProps, 'identity' | 'messages' | 'tools'>;\n\nconst ChatThread = (props: ChatThreadProps) => {\n const { debug, event, messages, processor } = useChatContext(CHAT_THREAD_NAME);\n const identity = useIdentity();\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\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={debug}\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 = ThemedClassName<\n {\n outline?: boolean;\n settings?: boolean;\n } & Pick<ChatEditorProps, 'placeholder'> &\n Omit<ChatPresetsProps, 'onChange'> & {\n expandable?: boolean;\n online?: boolean;\n onOnlineChange?: (online: boolean) => void;\n onPresetChange?: ChatPresetsProps['onChange'];\n }\n>;\n\nconst ChatPrompt = ({\n classNames,\n outline,\n settings = true,\n placeholder,\n expandable,\n online,\n presets,\n preset,\n onPresetChange,\n onOnlineChange,\n}: ChatPromptProps) => {\n const { t } = useTranslation(meta.id);\n const { db, processor, event } = useChatContext(CHAT_PROMPT_NAME);\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((event) => {\n switch (event.type) {\n case 'update-prompt':\n if (!editorRef.current?.getText()?.length) {\n editorRef.current?.setText(event.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 = useMemo<Extension[]>(() => {\n return [\n Prec.highest(\n keymap.of([\n {\n key: 'Mod-d',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'toggle-debug' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-previous' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-next' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isTruthy);\n }, [event, expandable]);\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 border border-subdued-separator transition transition-border [&:has(.cm-content:focus)]:border-separator rounded-sm',\n classNames,\n )}\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'>\n <ChatOptions\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 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-2' checked={online} onCheckedChange={onOnlineChange} />\n </Input.Root>\n )}\n </ChatActions>\n </div>\n )}\n </div>\n );\n};\n\nChatPrompt.displayName = CHAT_PROMPT_NAME;\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// Chat\n//\n\nexport const Chat = {\n Root: ChatRoot,\n Viewport: ChatViewport,\n Thread: ChatThread,\n Prompt: ChatPrompt,\n Toolbar: ChatToolbar,\n};\n\nexport type { ChatRootProps, ChatViewportProps, ChatThreadProps, ChatPromptProps, ChatToolbarProps, 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 me-1', classNames)}>\n {children}\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\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 </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { type JSX, useMemo, useState } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { type Database, Filter, Obj, Type } from '@dxos/echo';\nimport { Annotation } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { IconButton, Popover, Select, useTranslation } from '@dxos/react-ui';\nimport { Listbox, 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';\n\nconst panelClassNames = 'w-[calc(100dvw-.5rem)] sm:w-max md:w-72 max-w-document-width';\n\nexport type ChatOptionsProps = {\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 = ({ db, context, blueprintRegistry, presets, preset, onPresetChange }: ChatOptionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div role='none' className='flex p-2'>\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={panelClassNames}>\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={panelClassNames}>\n <Popover.Viewport>\n <Tabs.Root orientation='horizontal' defaultValue='blueprints' defaultActivePart='list' tabIndex={-1}>\n <Tabs.Viewport\n classNames={mx(\n 'max-h-(--radix-popover-content-available-height) grid grid-rows-[1fr_min-content]',\n '[&_[cmdk-root]]:contents [&_[role=\"tabpanel\"]]:grid [&_[role=\"tabpanel\"]]:grid-rows-[1fr_min-content]',\n '[&_[role=\"listbox\"]]:min-h-0 [&_[role=\"listbox\"]]:overflow-y-auto',\n '[&_[role=\"tabpanel\"]]:min-h-0 [&_[role=\"tabpanel\"]]:px-form-chrome [&_[role=\"tabpanel\"][data-state=\"active\"]]:order-first [&_[role=\"tabpanel\"][data-state=\"inactive\"]]:hidden',\n )}\n >\n <Tabs.Panel value='blueprints' tabIndex={-1} classNames='dx-focus-ring-inset'>\n <BlueprintsPanel blueprintRegistry={blueprintRegistry} db={db} context={context} />\n </Tabs.Panel>\n <Tabs.Panel value='model' tabIndex={-1} classNames='dx-focus-ring-inset px-0!'>\n <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />\n </Tabs.Panel>\n <Tabs.Tablist classNames='justify-center p-form-chrome border-y border-subdued-separator order-last'>\n <Tabs.IconTab\n value='blueprints'\n icon='ph--blueprint--regular'\n label={t('blueprints-in-context.title')}\n />\n <Tabs.IconTab value='model' label={t('chat-model.title')} icon='ph--cpu--regular' />\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\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='py-form-chrome'>\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.Content>\n <SearchList.Input placeholder={t('search.placeholder')} classNames='mb-form-chrome' autoFocus />\n </SearchList.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\nconst ANY = '__any__';\n\nconst 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\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(() => ({ icon: DEFAULT_OBJECT_ICON, hue: undefined as string | undefined })),\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='grid grid-cols-[min-content_1fr] gap-2 px-form-chrome mb-form-chrome'>\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')} classNames='mb-0' autoFocus />\n </div>\n </SearchList.Root>\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 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 * 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-in-context.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 2025 DXOS.org\n//\n\nimport React, { type CSSProperties, 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-components';\nimport { type Message } from '@dxos/types';\nimport { mx } from '@dxos/ui-theme';\nimport { keyToFallback } from '@dxos/util';\n\nimport { type ChatEvent } from '../Chat';\nimport { blockToMarkdown, componentRegistry } from './registry';\nimport { MessageSyncer } from './sync';\n\nconst defaultOptions: MarkdownStreamProps['options'] = {\n autoScroll: true,\n // wire: true,\n cursor: true,\n};\n\nexport type ChatThreadProps = ThemedClassName<\n {\n identity?: Identity;\n messages?: Message.Message[];\n error?: Error;\n onEvent?: (event: ChatEvent) => void;\n } & Pick<MarkdownStreamProps, 'options' | 'debug'>\n>;\n\n// TODO(burdon): Memo thread position.\nexport const ChatThread = forwardRef<MarkdownStreamController | null, ChatThreadProps>(\n ({ classNames, identity, messages = [], error, options = defaultOptions, debug = false, onEvent }, forwardedRef) => {\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 syncer = useMemo(() => controller && new MessageSyncer(controller, blockToMarkdown), [controller]);\n useEffect(() => {\n const reset = syncer?.append(messages, true);\n if (reset) {\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\n role='none'\n className={mx('flex h-full w-full justify-center overflow-hidden', classNames)}\n style={\n {\n '--user-fill': `var(--color-${userHue}-fill)`,\n } as CSSProperties\n }\n >\n <MarkdownStream\n registry={componentRegistry}\n options={options}\n debug={debug}\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 BlockRenderer, type MessageThreadContext } from './sync';\nimport { applyToolBlockToWidgetState } from './tool-widget-state';\nimport {\n FallbackWidget,\n PromptWidget,\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 */\nexport const componentRegistry: XmlWidgetRegistry = {\n //\n // DOM Widgets\n //\n\n prompt: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new PromptWidget(text) : 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 = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => {\n let str = blockToMarkdownImpl(context, message, block);\n if (str && !block.pending) {\n return (str += '\\n');\n }\n\n return str;\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 return `<prompt>${block.text}</prompt>`;\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\n/**\n * Strip actual list-marker prefixes without removing meaningful leading content.\n */\nconst stripBulletLikeLinePrefixes = (raw: string): string =>\n raw\n .split(/\\r?\\n/)\n .map((line) => line.replace(/^\\s*(?:[-*+•]|\\d+[.)]\\s)/, ''))\n .join('\\n');\n\nconst renderXMLBlock = (tag: string, opts: { content?: string; pending?: boolean; attributes?: string }) => {\n // Replace paragraph breaks so that markdown parser does not split the content into multiple paragraphs.\n const content = escapeXmlTextContent(stripBulletLikeLinePrefixes((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 { Json } 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 <Json.Data 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\n/**\n * Simple prompt widget.\n */\nexport class PromptWidget 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 /**\n * NOTE: Container must set var based on user's identity.\n */\n override toDOM() {\n const inner = Domino.of('div').classNames('px-3 py-1.5 bg-(--user-fill) rounded-xs').text(this.text);\n return Domino.of('div').classNames('flex justify-end my-2').append(inner).root;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\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 const root = Domino.of('div')\n .classNames('pt-2 pb-2')\n .append(\n Domino.of('div')\n .classNames('relative overflow-hidden p-px rounded-sm border border-subdued-separator')\n .attributes({ 'data-trail-container': '' })\n .append(\n Domino.of('div')\n .classNames('relative z-10 bg-base-surface rounded-sm text-sm text-description 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 return 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 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\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('pt-2 pb-2')\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\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('flex flex-wrap pt-2 pb-2 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\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('pt-2 pb-4 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 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';\n\nexport const SummaryWidget = ({ children }: XmlWidgetProps<MessageThreadContext>) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <TogglePanel.Root classNames='border border-separator rounded-sm'>\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-description'>\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-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 { Json } 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 <Json.Data\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 { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\nimport { XML_WIDGET_DATA_ATTR } from '@dxos/ui-editor';\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('py-0.5')\n .attributes({ [XML_WIDGET_DATA_ATTR]: '' })\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 { type DXN } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { type MarkdownStreamController } from '@dxos/react-ui-components';\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 * 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 from hypergraph.\n getObjectLabel(_id: DXN) {\n return 'Object';\n }\n}\n\n/**\n * Renders a block to markdown.\n */\nexport type BlockRenderer = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => string | undefined;\n\n/**\n * Syncs messages with the editor.\n */\nexport class MessageSyncer {\n #syncEpoch = 0;\n private _initialMessageId?: string;\n private _currentMessageIndex = 0;\n private _currentBlockIndex = 0;\n private _currentBlockContent?: string;\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 reset() {\n log('reset');\n this.#syncEpoch++;\n this._initialMessageId = undefined;\n this._currentMessageIndex = 0;\n this._currentBlockIndex = 0;\n this._currentBlockContent = undefined;\n void this._document.setContent('');\n }\n\n /**\n * Syncs messages with the editor.\n */\n append(messages: Message.Message[], flush = false): boolean {\n // TODO(dmaretskyi): MarkdownStream currently does not support streaming XML tags, so we need to remove pending non-text blocks.\n // messages = messages.map((message) => ({\n // ...message,\n // blocks: message.blocks.filter((block) => !block.pending || block._tag === 'text'),\n // }));\n\n // Check if new set of messages.\n if (this._initialMessageId !== messages[0]?.id) {\n this.reset();\n this._initialMessageId = messages[0]?.id;\n }\n\n if (this._document.length === 0 && flush) {\n const buffer: string[] = [];\n this.processBlocks(messages, (content) => buffer.push(content));\n const content = buffer.join('');\n // `setContent` dispatches `xmlTagResetEffect`, which clears widget props accumulated during\n // `processBlocks`; re-apply tool state after the document is replaced.\n const epoch = this.#syncEpoch;\n void this._document\n .setContent(content)\n .then(() => {\n if (epoch !== this.#syncEpoch) {\n return;\n }\n rehydrateToolWidgetsFromMessages(this._context, messages);\n })\n .catch((error) => {\n log.warn('failed to replace thread content before widget rehydration', { error });\n });\n\n return true;\n } else {\n this.processBlocks(messages, (content) => {\n void this._document.append(content);\n });\n\n return false;\n }\n }\n\n private processBlocks(messages: Message.Message[], append: (content: string) => void) {\n // console.log('sync', {\n // doc: this._model.view?.state.doc.length,\n // messages: messages.map((message) => message.blocks.length),\n // currentMessageIndex: this._currentMessageIndex,\n // currentBlockIndex: this._currentBlockIndex,\n // currentBlockContent: this._currentBlockContent,\n // });\n\n let i = this._currentMessageIndex;\n for (const message of messages.slice(this._currentMessageIndex)) {\n if (i > this._currentMessageIndex) {\n this._currentBlockIndex = 0;\n }\n\n this._currentMessageIndex = i;\n let j = this._currentBlockIndex;\n for (const block of message.blocks.slice(this._currentBlockIndex)) {\n this._currentBlockIndex = j;\n const currentBlockContent = this._renderer(this._context, message, block);\n if (currentBlockContent) {\n let content: string = '';\n if (this._currentBlockContent && currentBlockContent.startsWith(this._currentBlockContent)) {\n content = currentBlockContent.slice(this._currentBlockContent.length);\n } else {\n content = currentBlockContent;\n }\n\n // console.log('append', { message: i, block: j, content });\n this._currentBlockContent = currentBlockContent;\n append(content);\n }\n\n if (block.pending) {\n return;\n } else {\n this._currentBlockContent = undefined;\n this._currentBlockIndex++;\n }\n j++;\n }\n i++;\n }\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Match from 'effect/Match';\nimport React from 'react';\n\nimport { Process } from '@dxos/functions-runtime';\nimport { Icon, ScrollArea, Treegrid } from '@dxos/react-ui';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\n\nexport type ProcessTreeProps = {\n processes: readonly Process.Info[];\n onProcessSelect?: (process: Process.Info) => void;\n};\n\nexport const ProcessTree = composable<HTMLDivElement, ProcessTreeProps>(\n ({ processes, onProcessSelect, ...props }, forwardedRef) => {\n const filteredProcesses: Process.Info[] = [\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\n .filter((process) =>\n [Process.State.SUCCEEDED, Process.State.FAILED, Process.State.TERMINATED].includes(process.state),\n )\n .slice(0, 3),\n ];\n\n return (\n <ScrollArea.Root {...composableProps(props, { classNames: 'dx-expander' })} thin ref={forwardedRef}>\n <ScrollArea.Viewport>\n <Treegrid.Root gridTemplateColumns='1fr'>\n {filteredProcesses\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='flex items-center p-1 gap-2 min-w-0'\n onClick={() => onProcessSelect?.(process)}\n >\n <Icon\n size={4}\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 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 />\n <div role='none' className='flex items-center gap-2 text-xs overflow-hidden'>\n <span className='text-description'>{process.params.name}</span>\n {activeChildren.length > 0 && (\n <span className='text-xs text-description ml-1'>{activeChildren[0].params.name}</span>\n )}\n </div>\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/blueprints';\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 text = template.source?.target;\n if (!text) {\n return {};\n }\n\n return {\n initialValue: text.content ?? '',\n extensions: [\n createDataExtensions({\n id,\n text: createDocAccessor(text, ['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 // dxos.org/type/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/blueprints';\nimport { type Database, type Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { Operation } from '@dxos/operation';\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", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type Database, Filter, Obj, Ref } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { distinctBy } from '@dxos/util';\n\n/**\n * Provide a registry of blueprints from plugins.\n */\n// TODO(burdon): Reconcile with eventual public registry.\n// TODO(dmaretskyi): Reconcile with blueprint registry in compute runtime.\nexport const useBlueprintRegistry = () => {\n const blueprintDefinitions = useCapabilities(AppCapabilities.BlueprintDefinition);\n return useMemo(\n () => new Blueprint.Registry(blueprintDefinitions.map((blueprint) => blueprint.make())),\n [blueprintDefinitions],\n );\n};\n\nexport const useBlueprints = ({\n blueprintRegistry,\n db,\n}: {\n blueprintRegistry?: Blueprint.Registry;\n db?: Database.Database;\n}) => {\n const staticBlueprints = useMemo(() => blueprintRegistry?.query() ?? [], [blueprintRegistry]);\n const spaceBlueprints = useQuery(db, Filter.type(Blueprint.Blueprint));\n return useMemo(() => {\n const blueprints = distinctBy([...staticBlueprints, ...spaceBlueprints], (b) => b.key);\n blueprints.sort(({ name: a }, { name: b }) => a.localeCompare(b));\n return blueprints;\n }, [staticBlueprints, spaceBlueprints]);\n};\n\n/**\n * Create reactive map of active blueprints (by key).\n */\nexport const useActiveBlueprints = ({ context }: { context?: AiContextBinder }) => {\n const [active, setActive] = useState<Map<string, Blueprint.Blueprint>>(new Map());\n\n useEffect(() => {\n if (!context) {\n setActive(new Map());\n return;\n }\n\n const updateActive = () => {\n const blueprints = context.getBlueprints();\n setActive(new Map(blueprints.map((blueprint) => [blueprint.key, blueprint])));\n };\n\n // Set initial value.\n updateActive();\n\n // Subscribe to changes.\n return context.subscribeBlueprints(updateActive);\n }, [context]);\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useBlueprintHandlers = ({\n db,\n context,\n blueprintRegistry,\n}: {\n db: Database.Database;\n context?: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n}) => {\n const onUpdateBlueprint = useCallback(\n async (key: string, checked: boolean) => {\n if (!context || !blueprintRegistry) {\n return;\n }\n\n // Find existing cloned blueprint.\n const objects = await db.query(Filter.type(Blueprint.Blueprint)).run();\n let storedBlueprint = objects.find((blueprint) => blueprint.key === key);\n if (checked) {\n if (!storedBlueprint) {\n const blueprint = blueprintRegistry.getByKey(key);\n if (!blueprint) {\n return;\n }\n\n // NOTE: Possible race condition with other peers.\n storedBlueprint = db.add(Obj.clone(blueprint));\n }\n await context.bind({ blueprints: [Ref.make(storedBlueprint)] });\n } else if (storedBlueprint) {\n await context.unbind({ blueprints: [Ref.make(storedBlueprint)] });\n }\n },\n [db, context, blueprintRegistry],\n );\n\n return { onUpdateBlueprint };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useContext, useMemo, useState } from 'react';\n\nimport { AiConversation } from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { Feed, Ref } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-db';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { log } from '@dxos/log';\nimport { type AutomationCapabilities } from '@dxos/plugin-automation/types';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { type Assistant } from '#types';\n\nimport { AiChatProcessor, type AiServicePreset } from '../processor';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Chat.Chat;\n preset?: AiServicePreset;\n runtime?: AutomationCapabilities.ComputeRuntime;\n blueprintRegistry?: Blueprint.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n runtime,\n blueprintRegistry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n const [conversation, setConversation] = useState<AiConversation>();\n useAsyncEffect(async () => {\n if (!space || !chat) {\n return;\n }\n\n const feedTarget = chat.feed.target;\n if (!feedTarget) {\n return;\n }\n const feedServiceLayer = createFeedServiceLayer(space.queues);\n const runtime = await runAndForwardErrors(\n Effect.runtime<Feed.FeedService>().pipe(Effect.provide(feedServiceLayer)),\n );\n const conversation = new AiConversation({\n feed: feedTarget,\n runtime,\n registry: observableRegistry as Registry.Registry,\n });\n await conversation.open();\n setConversation(conversation);\n return () => {\n void conversation.close();\n setConversation(undefined);\n };\n }, [space, chat?.feed.target]);\n\n const feed = chat?.feed.target;\n\n const processor = useMemo(() => {\n if (!runtime || !conversation || !chat || !feed) {\n return undefined;\n }\n\n log('creating processor', { preset, model: preset?.model, settings });\n return new AiChatProcessor(conversation, runtime, feed, {\n chat: chat ? Ref.make(chat) : undefined,\n observableRegistry,\n blueprintRegistry,\n model: preset?.model,\n });\n }, [runtime, conversation, blueprintRegistry, preset, feed]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { type ModelName } from '@dxos/ai';\n\nconst ModelProviders = ['dxos-local', 'dxos-remote', 'lm-studio'] as const;\n\nconst ModelProvider = Schema.Literal(...ModelProviders);\ntype ModelProvider = Schema.Schema.Type<typeof ModelProvider>;\n\nexport type AiServicePreset = {\n id: string;\n provider: ModelProvider;\n model: ModelName;\n label?: string;\n};\n\nconst createModelLabel = (model: ModelName) => {\n const parts = model.split('/');\n return parts[parts.length - 1];\n};\n\n// TODO(burdon): Users should be able to create and edit presets.\nexport const AiServicePresets: AiServicePreset[] = [\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-opus-4-6' as const,\n },\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-sonnet-4-5' as const,\n },\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-3-5-haiku-20241022' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@google/gemma-3-27b' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@meta/llama-3.2-3b-instruct' as const,\n },\n {\n model: 'deepseek-r1:latest' as const,\n provider: 'dxos-local' as const,\n },\n].map(\n ({ model, provider }, i) =>\n ({\n id: `preset-${i}`,\n provider,\n model,\n label: createModelLabel(model),\n }) satisfies AiServicePreset,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, Registry } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Option from 'effect/Option';\nimport * as Stream from 'effect/Stream';\n\nimport {\n type AiService,\n DEFAULT_EDGE_MODEL,\n type ModelName,\n type ModelRegistry,\n type ToolExecutionService,\n type ToolResolverService,\n} from '@dxos/ai';\nimport {\n AiContextService,\n type AiConversation,\n createSystemPrompt,\n formatSystemPrompt,\n AgentService,\n PartialBlock,\n} from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { type Database, Feed, Obj, Ref } from '@dxos/echo';\nimport { runAndForwardErrors, unwrapExit } from '@dxos/effect';\nimport {\n Trace,\n type CredentialsService,\n type FunctionInvocationService,\n type QueueService,\n type TracingService,\n} from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { Operation } from '@dxos/operation';\nimport type { AutomationCapabilities } from '@dxos/plugin-automation/types';\nimport { Message } from '@dxos/types';\n\nimport { UpdateChatName } from '../operations/definitions';\n\n/**\n * @deprecated Services type for the old direct-conversation processor path.\n * Retained for backward compatibility with CLI and update-name.\n */\nexport type AiChatServices =\n | CredentialsService\n | Database.Service\n | QueueService\n | FunctionInvocationService\n | AiService.AiService\n | ToolExecutionService\n | ToolResolverService\n | TracingService\n | Trace.TraceService;\n\nexport type AiChatProcessorOptions = {\n model?: ModelName;\n modelRegistry?: ModelRegistry;\n blueprintRegistry?: Blueprint.Registry;\n observableRegistry?: Registry.Registry;\n /**\n * For tracing.\n */\n chat?: Ref.Ref<Chat.Chat>;\n system?: string;\n /**\n * Probability of automatically updating chat name after each request.\n * Chat name is always updated if it has no name.\n * @default 0.1 (10%)\n */\n autoUpdateNameChance?: number;\n};\n\nconst defaultOptions: Partial<AiChatProcessorOptions> = {\n model: DEFAULT_EDGE_MODEL,\n autoUpdateNameChance: 0.1,\n};\n\nexport type AiRequestOptions = {};\n\nexport type AiRequest = {\n message: string;\n options?: AiRequestOptions;\n};\n\n/**\n * Handles interactions with the AI service.\n * Uses AgentService to spawn a process-backed agent and subscribes to ephemeral trace events for streaming.\n */\nexport class AiChatProcessor {\n readonly #registry: Registry.Registry;\n\n /** Pending messages (finalized, non-streaming). */\n readonly #pending = Atom.make<Message.Message[]>([]);\n\n /** Currently streaming messages (from ephemeral trace events). */\n readonly #streaming = Atom.make<Message.Message[]>([]);\n\n /** Set of message IDs that have been finalized (non-pending delivered via ephemeral). */\n readonly #finalizedIds = new Set<string>();\n\n /** Currently active request fiber. */\n #requestFiber: Fiber.RuntimeFiber<void, unknown> | undefined;\n\n /** Last request (for retries). */\n #lastRequest: AiRequest | undefined;\n\n /** Streaming state. */\n public readonly streaming = Atom.make<boolean>((get) => get(this.#streaming).length > 0);\n\n /** Active state. */\n public readonly active = Atom.make(false);\n\n /** Array of Messages (incl. the current message being streamed). */\n public readonly messages = Atom.make<Message.Message[]>((get) => [...get(this.#pending), ...get(this.#streaming)]);\n\n /** Last error. */\n public readonly error = Atom.make<Option.Option<Error>>(Option.none());\n\n constructor(\n private readonly _conversation: AiConversation,\n private readonly _runtime: AutomationCapabilities.ComputeRuntime,\n private readonly _feed: Feed.Feed,\n private readonly _options: AiChatProcessorOptions = defaultOptions,\n ) {\n this.#registry = this._options.observableRegistry ?? Registry.make();\n if (this._options.model && !this._options.system) {\n const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};\n this._options.system = createSystemPrompt(capabilities);\n }\n }\n\n get context() {\n return this._conversation.context;\n }\n\n get conversation() {\n return this._conversation;\n }\n\n get blueprintRegistry() {\n return this._options.blueprintRegistry;\n }\n\n get system(): string {\n return this._options.system ?? '';\n }\n\n async getTools(): Promise<Record<string, any>> {\n return this._runtime.runPromise(this._conversation.getTools());\n }\n\n async getSystemPrompt(): Promise<string> {\n return this._runtime.runPromise(\n Effect.gen(this, function* () {\n const blueprints = this.context.getBlueprints();\n const objects = this.context.getObjects();\n return yield* formatSystemPrompt({ system: this._options.system, blueprints, objects });\n }).pipe(Effect.provideService(AiContextService, { binder: this.context }), Effect.orDie),\n );\n }\n\n /**\n * Initiates a new request via AgentService.\n */\n async request(requestProp: AiRequest): Promise<void> {\n if (this.#requestFiber) {\n await this.cancel();\n }\n\n try {\n this.#lastRequest = requestProp;\n this.#registry.set(this.error, Option.none());\n this.#registry.set(this.active, true);\n\n const effect = Effect.gen(this, function* () {\n // NOTE: Gets or creates a session for the feed.\n const session = yield* AgentService.getSession(this._feed);\n const ephemeralStream = session.subscribeEphemeral();\n yield* ephemeralStream.pipe(\n Stream.runForEach((message) =>\n Effect.sync(() => {\n for (const event of message.events) {\n if (Trace.isOfType(PartialBlock, event)) {\n this.#handleEphemeralMessage(event.data);\n }\n }\n }),\n ),\n Effect.fork,\n );\n\n log('chat processor submitting prompt', { length: requestProp.message.length });\n yield* session.submitPrompt(requestProp.message);\n log('chat processor submitPrompt returned, waiting for agent', {});\n yield* session.waitForCompletion();\n log.info('session complete');\n\n this.#flushStreaming();\n\n yield* this.#maybeUpdateChatName();\n });\n\n this.#requestFiber = this._runtime.runFork(effect);\n\n try {\n await this._runtime.runPromise(Fiber.join(this.#requestFiber));\n } catch (err: any) {\n if (err._tag === 'InterruptedException' || err.message?.includes('interrupted')) {\n return;\n }\n throw err;\n }\n\n this.#registry.set(this.error, Option.none());\n this.#lastRequest = undefined;\n this.#requestFiber = undefined;\n } catch (err) {\n log.error('request failed', { error: err });\n this.#registry.set(this.error, Option.some(new Error('AI service error', { cause: err })));\n } finally {\n log.info('setting active to false');\n this.#registry.set(this.active, false);\n this.#requestFiber = undefined;\n }\n }\n\n /**\n * Cancels the current request.\n */\n async cancel(): Promise<void> {\n await runAndForwardErrors(\n Effect.gen(this, function* () {\n if (this.#requestFiber) {\n yield* Fiber.interrupt(this.#requestFiber);\n }\n }),\n );\n\n this.#requestFiber = undefined;\n this.#registry.set(this.active, false);\n }\n\n /**\n * Retry last failed request.\n */\n async retry(): Promise<void> {\n if (this.#lastRequest) {\n return this.request(this.#lastRequest);\n }\n }\n\n /**\n * Update the current chat's name.\n */\n async updateName(chat: Chat.Chat): Promise<void> {\n unwrapExit(await this._runtime.runPromiseExit(Operation.invoke(UpdateChatName, { chat })));\n }\n\n /**\n * Handles an ephemeral message from the agent process.\n * Both pending and completed blocks arrive here. Completed blocks are deduped\n * against messages already written to the feed queue to handle the race between\n * ephemeral delivery and feed replication.\n */\n #handleEphemeralMessage(event: Trace.PayloadType<typeof PartialBlock>) {\n const isPending = event.block.pending;\n const message = Obj.make(Message.Message, {\n id: event.messageId,\n created: new Date().toISOString(),\n sender: { role: event.role },\n blocks: [event.block],\n });\n\n if (isPending) {\n if (this.#finalizedIds.has(event.messageId)) {\n return;\n }\n this.#registry.update(this.#streaming, (streaming) => {\n const idx = streaming.findIndex((existing) => existing.id === event.messageId);\n if (idx >= 0) {\n const updated = [...streaming];\n updated[idx] = message;\n return updated;\n }\n return [...streaming, message];\n });\n } else {\n this.#finalizedIds.add(event.messageId);\n this.#registry.update(this.#streaming, (streaming) => streaming.filter((existing) => existing.id !== message.id));\n this.#registry.update(this.#pending, (pending) => {\n if (pending.some((existing) => existing.id === message.id)) {\n return pending;\n }\n return [...pending, message];\n });\n }\n }\n\n /**\n * Move remaining streaming messages to pending (called when agent completes).\n */\n #flushStreaming() {\n const remaining = this.#registry.get(this.#streaming);\n if (remaining.length > 0) {\n this.#registry.update(this.#pending, (pending) => [...pending, ...remaining]);\n this.#registry.set(this.#streaming, []);\n }\n this.#finalizedIds.clear();\n }\n\n /**\n * Conditionally schedule chat name update in detached fork mode.\n * Updates if chat has no name OR based on random chance (default 10%).\n */\n #maybeUpdateChatName(): Effect.Effect<void, never, Operation.Service> {\n const chat = this._options.chat?.target;\n if (!chat) {\n return Effect.void;\n }\n\n const chance = this._options.autoUpdateNameChance ?? defaultOptions.autoUpdateNameChance ?? 0.1;\n const shouldUpdate = !chat.name || Math.random() < chance;\n if (!shouldUpdate) {\n return Effect.void;\n }\n\n // TODO(dmaretskyi): Operation.schedule didn't work.\n log.info('scheduling chat name update', { hasName: !!chat.name, chance });\n return Operation.schedule(UpdateChatName, { chat });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { getPersonalSpace } from '@dxos/app-toolkit';\nimport { type Key } from '@dxos/echo';\nimport { AutomationCapabilities } from '@dxos/plugin-automation/types';\nimport { useClient } from '@dxos/react-client';\n\nexport type UseChatServicesProps = {\n id?: Key.SpaceId;\n};\n\n/**\n * Resolves the compute runtime for a space.\n */\nexport const useChatServices = ({ id }: UseChatServicesProps) => {\n const client = useClient();\n id ??= getPersonalSpace(client)?.id;\n\n const runtimeResolver = useCapability(AutomationCapabilities.ComputeRuntime);\n return useMemo(() => (!id ? undefined : runtimeResolver.getRuntime(id)), [id]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { MenuBuilder, useMenuActions } from '@dxos/react-ui-menu';\n\nimport { useChatContext } from '#components';\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#operations';\n\nexport type ChatToolbarActionsProps = {\n chat?: Chat.Chat;\n companionTo?: Obj.Unknown;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo }: ChatToolbarActionsProps) => {\n const { invoke } = useOperationInvoker();\n const { db } = useChatContext('useChatToolbarActions');\n const query = companionTo\n ? Query.select(Filter.id(companionTo.id)).targetOf(Chat.CompanionTo).source()\n : Query.select(Filter.nothing());\n\n // TODO(wittjosiah): Query in react vs query in atom?\n const chats = useQuery(db, query);\n\n // Create stable reference for dependency array to avoid circular reference issues.\n return useMenuActions(\n useMemo(() => {\n return Atom.make(() => {\n const builder = MenuBuilder.make()\n .root({\n label: ['chat-toolbar.title', { ns: meta.id }],\n })\n .action(\n 'new',\n {\n label: ['new-thread.button', { ns: meta.id }],\n icon: 'ph--plus--regular',\n type: 'new',\n disabled: !companionTo,\n },\n () => {\n invariant(companionTo);\n return invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat: undefined,\n }).pipe(runAndForwardErrors);\n },\n )\n .action(\n 'rename',\n {\n label: ['rename-thread.button', { ns: meta.id }],\n icon: 'ph--magic-wand--regular',\n type: 'rename',\n disabled: !chat,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.UpdateChatName, { chat });\n }).pipe(runAndForwardErrors),\n )\n .action(\n 'branch',\n {\n label: ['branch-thread.menu', { ns: meta.id }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: true,\n },\n () => {},\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat-history.label', { ns: meta.id }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object-name.placeholder', { ns: Chat.Chat.typename }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }).pipe(runAndForwardErrors),\n );\n });\n },\n );\n }\n\n return builder.build();\n });\n }, [chats.length, db?.spaceId, companionTo?.id, chat?.id, invoke]),\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useContext, useState } from 'react';\n\nimport { AiContextBinder } from '@dxos/assistant';\nimport { Feed } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-db';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nexport const useContextBinder = (\n space: Space | undefined,\n feed: Feed.Feed | undefined,\n): AiContextBinder | undefined => {\n const registry = useContext(RegistryContext) as Registry.Registry;\n const [binder, setBinder] = useState<AiContextBinder>();\n\n useAsyncEffect(async () => {\n setBinder(undefined);\n if (!space || !feed) {\n return;\n }\n\n const feedServiceLayer = createFeedServiceLayer(space.queues);\n const runtime = await runAndForwardErrors(\n Effect.runtime<Feed.FeedService>().pipe(Effect.provide(feedServiceLayer)),\n );\n const binder = new AiContextBinder({ feed, runtime, registry });\n await binder.open();\n setBinder(binder);\n\n return () => {\n void binder.close();\n };\n }, [space, feed]);\n\n return binder;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type DXN, type Database, type Obj } from '@dxos/echo';\n\nexport type UseContextObjectsProps = {\n db?: Database.Database;\n context?: AiContextBinder;\n};\n\nexport type UseContextObjects = {\n objects: Obj.Unknown[];\n onUpdateObject: (dxn: DXN, checked: boolean) => Promise<void>;\n};\n\nconst emptyObjectsAtom = Atom.make<Obj.Unknown[]>([]);\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({ db, context }: UseContextObjectsProps): UseContextObjects => {\n const objects = useAtomValue(context?.objects ?? emptyObjectsAtom);\n\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: DXN, checked: boolean) => {\n if (!db || !context) {\n return;\n }\n\n const ref = db.makeRef<Obj.Unknown>(dxn);\n await ref.load();\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [db, context],\n );\n\n return {\n objects,\n onUpdateObject: handleUpdateObject,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, type Type } from '@dxos/echo';\nimport { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from '@dxos/echo/internal';\n\n// TODO(burdon): Pass in filter.\n// TODO(wittjosiah): Factor out.\nexport const useFilteredTypes = (db?: Database.Database): Type.AnyEntity[] => {\n const [types, setTypes] = useState<Type.AnyEntity[]>([]);\n useEffect(() => {\n if (!db) {\n return;\n }\n\n return db.schemaRegistry.query({ location: ['database', 'runtime'] }).subscribe(\n (query) => {\n const types = Array.from(\n new Set(\n query.results\n .filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation)\n .filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false))),\n ),\n );\n\n setTypes(types);\n },\n { fire: true },\n );\n }, [db]);\n\n return types;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nexport const useFlush = (space?: Space) => {\n const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');\n const resetTimer = useRef<NodeJS.Timeout | null>(null);\n\n const handleFlush = useCallback(() => {\n if (!space) {\n return;\n }\n\n queueMicrotask(async () => {\n if (resetTimer.current) {\n clearTimeout(resetTimer.current);\n }\n\n setState('flushing');\n await space.db.flush();\n setState('flushed');\n\n resetTimer.current = setTimeout(() => {\n setState('idle');\n resetTimer.current = null;\n }, 1_000);\n });\n }, [space]);\n\n return { state, handleFlush };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Dispatch, type SetStateAction, useState } from 'react';\n\nexport const useOnline = (): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const [online, setOnline] = useState(true);\n return [online, setOnline];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type ChatPromptProps } from '#components';\n\nimport { type AiServicePreset, AiServicePresets } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPromptProps, 'presets' | 'onPresetChange'>;\n\nexport const usePresets = (online: boolean): UsePresets => {\n // TODO(burdon): Memo preset for provider.\n const [preset, setPreset] = useState<AiServicePreset>();\n const presets = useMemo(\n () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),\n [online],\n );\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n useEffect(() => {\n setPreset(presets[0]);\n }, [presets]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPromptProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset: preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = blueprints.map((blueprint) => blueprint.schema).flat();\n // const objects = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const objects = await space.db.query(Filter.everything()).run();\n\n return (\n objects\n // TODO(burdon): Remove cast ??? (+ two instances below).\n // .map((object) => {\n // log.info('object', { object, label: Obj.getLabel(object as any) });\n // return object;\n // })\n .filter((object) => stringMatch(query, Obj.getLabel(object as any) ?? ''))\n // TODO(dmaretskyi): `Type.getDXN` (at the point of writing) didn't work here as it was schema-only.\n .filter((object) => !!Obj.getDXN(object as Obj.Unknown))\n .map((object) => ({\n uri: Obj.getDXN(object as any).toString(),\n label: Obj.getLabel(object as any) ?? '',\n }))\n );\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.id(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.assistant',\n name: 'Assistant',\n description: trim`\n Intelligent AI assistant that can analyze and interact with objects across your spaces.\n Chat naturally to get insights, search content, and perform actions using AI-powered context awareness.\n `,\n icon: 'ph--sparkle--regular',\n iconHue: 'sky',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',\n tags: ['labs'],\n};\n\nexport const ASSISTANT_DIALOG = `${meta.id}.assistant.dialog`;\n\n/** Companion variant identifier for the assistant chat panel. */\nexport const ASSISTANT_COMPANION_VARIANT = 'assistant-chat';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Chat, Agent } from '@dxos/assistant-toolkit';\nimport { Blueprint, Prompt } from '@dxos/blueprints';\nimport { Sequence } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\n// TODO(burdon): Standardize translation names.\nexport const translations = [\n {\n 'en-US': {\n // TODO(burdon): From assistant.\n [Blueprint.Blueprint.typename]: {\n 'typename.label': 'Blueprint',\n 'typename.label_zero': 'Blueprints',\n 'typename.label_one': 'Blueprint',\n 'typename.label_other': 'Blueprints',\n 'object-name.placeholder': 'New blueprint',\n 'add-object.label': 'Add blueprint',\n 'rename-object.label': 'Rename blueprint',\n 'delete-object.label': 'Delete blueprint',\n 'object-deleted.label': 'Blueprint deleted',\n },\n [Type.getTypename(Prompt.Prompt)]: {\n 'typename.label': 'Prompt',\n 'typename.label_zero': 'Prompts',\n 'typename.label_one': 'Prompt',\n 'typename.label_other': 'Prompts',\n 'object-name.placeholder': 'New prompt',\n 'add-object.label': 'Add prompt',\n 'rename-object.label': 'Rename prompt',\n 'delete-object.label': 'Delete prompt',\n 'object-deleted.label': 'Prompt deleted',\n },\n // TODO(burdon): From conductor.\n [Sequence.typename]: {\n 'typename.label': 'Sequence',\n 'typename.label_zero': 'Sequences',\n 'typename.label_one': 'Sequence',\n 'typename.label_other': 'Sequences',\n 'object-name.placeholder': 'New sequence',\n 'add-object.label': 'Add sequence',\n 'rename-object.label': 'Rename sequence',\n 'delete-object.label': 'Delete sequence',\n 'object-deleted.label': 'Sequence deleted',\n },\n [Chat.Chat.typename]: {\n 'typename.label': 'AI Chat',\n 'object-name.placeholder': 'New AI Chat',\n 'add-object.label': 'Add AI chat',\n 'rename-object.label': 'Rename AI Chat',\n 'delete-object.label': 'Delete AI Chat',\n 'object-deleted.label': 'AI Chat deleted',\n },\n [Agent.Agent.typename]: {\n 'typename.label': 'Agent',\n 'typename.label_zero': 'Agents',\n 'typename.label_one': 'Agent',\n 'typename.label_other': 'Agents',\n 'object-name.placeholder': 'New agent',\n 'add-object.label': 'Add agent',\n 'rename-object.label': 'Rename agent',\n 'delete-object.label': 'Delete agent',\n 'object-deleted.label': 'Agent deleted',\n },\n // TODO(burdon): Reconcile with react-ui-chat.\n [meta.id]: {\n 'templates.label': 'Templates',\n 'open-ambient-chat.label': 'Open Assistant',\n 'assistant-chat.label': 'Assistant',\n 'plugin.name': 'Assistant',\n 'settings.title': 'Assistant settings',\n 'object.placeholder': 'New prompt',\n 'create-object.label': 'Create prompt',\n 'create-trigger.label': 'Create trigger',\n 'create-stack-section.label': 'Create prompt',\n 'command.placeholder': 'Enter slash command...',\n 'template.placeholder': 'Enter template...',\n 'value.placeholder': 'Enter value...',\n 'prompt-rules.label': 'Prompt Rules',\n 'typename.placeholder': 'Enter typename of objects which this template is for',\n 'description.placeholder': 'Enter description of when this template should be used',\n 'select-preset-template.placeholder': 'Select preset',\n 'service-registry.label': 'Service Registry',\n 'type-filter.placeholder': 'Type',\n 'any-type-filter.label': 'Any',\n 'no-blueprint.message': 'No active blueprints',\n 'tool-call.label': 'Calling',\n 'tool-result.label': 'Success',\n 'tool-error.label': 'Tool call failed',\n\n 'invocations.label': 'Invocations',\n 'trace.label': 'Trace',\n\n 'assistant-dialog.title': 'Assistant',\n 'open-assistant.label': 'Open assistant',\n 'reset-blueprints.label': 'Reset blueprints',\n\n 'no-results.message': 'No results',\n\n 'cancel.button': 'Cancel',\n 'save.button': 'Save',\n 'new-thread.button': 'New Chat',\n 'rename-thread.button': 'Rename Chat',\n 'chat-history.label': 'Chat History',\n 'chat-update-name.label': 'Update AI Chat name',\n\n 'toolkit.label': 'Toolkit',\n 'stats.label': 'Stats',\n 'summary.label': 'Summary',\n 'thinking.label': 'Thinking',\n\n 'search.placeholder': 'Search...',\n 'prompt.placeholder': 'Enter question or command...',\n 'context-objects.button': 'Add to context',\n 'context-settings.button': 'Chat settings',\n 'microphone.button': 'Click to speak',\n 'cancel-processing.button': 'Stop processing',\n 'blueprints-in-context.title': 'Blueprints',\n 'objects-in-context.title': 'Content',\n 'remove-object-in-context.label': 'Remove document',\n 'chat-model.title': 'Model',\n\n 'debug.button': 'Debug',\n 'online-switch.label': 'Online',\n 'run-prompt.label': 'Run prompt',\n 'typename.label': 'Typename',\n 'branch-thread.menu': 'Branch chat',\n 'chat-toolbar.title': 'Chat toolbar',\n\n 'settings.default.label': 'Default',\n 'settings.custom-prompts.label': 'Use custom prompts',\n 'settings.custom-prompts.description': 'Allow the assistant to use custom prompts defined in your spaces.',\n 'settings.llm-provider.label': 'LLM provider',\n 'settings.llm-provider.description': 'Select which language model service to use for AI responses.',\n 'settings.edge-llm-model.label': 'Remote language model',\n 'settings.edge-llm-model.description': 'Choose the remote language model used for AI requests.',\n 'settings.ollama-llm-model.label': 'Ollama language model',\n 'settings.ollama-llm-model.description': 'Choose the locally hosted Ollama model for AI requests.',\n 'settings.default-llm-model.label': 'Default language model',\n\n // Trigger status\n 'trigger-status-disabled.label': 'Triggers disabled',\n 'trigger-status-idle.label': 'Triggers idle',\n 'trigger-status-running.label': 'Trigger running',\n 'trigger-status-error.label': 'Trigger error',\n 'trigger-runtime.label': 'Auto trigger execution',\n 'trigger-last-invocation.label': 'Last run',\n 'trigger-duration.label': 'Duration',\n\n // AgentArticle.\n 'project-empty-spec.message': 'Open Properties to configure the agent.',\n 'project-empty-spec.description': 'Open Assistant to interact with the agent.',\n 'artifacts.label': 'Artifacts',\n 'input-queue.label': 'Inputs',\n\n // AgentProperties.\n 'instructions.label': 'Instructions',\n 'agent.spec.placeholder': 'Enter instructions, goals, and constraints for the assistant.',\n 'reset-history.button': 'Reset',\n 'subscriptions.label': 'Subscriptions',\n },\n },\n },\n] as const satisfies Resource[];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { ActivationEvent, ActivationEvents, Capability, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { Agent, AgentBlueprint, Chat, Memory, Plan, ResearchGraph } from '@dxos/assistant-toolkit';\nimport { Blueprint, Prompt } from '@dxos/blueprints';\nimport { Sequence } from '@dxos/conductor';\nimport { Annotation, Feed, Obj, Type } from '@dxos/echo';\nimport { type SpaceId } from '@dxos/keys';\nimport { Operation } from '@dxos/operation';\nimport { AutomationCapabilities } from '@dxos/plugin-automation/types';\nimport { ClientEvents } from '@dxos/plugin-client/types';\nimport { DeckEvents } from '@dxos/plugin-deck/types';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceOperation } from '@dxos/plugin-space/operations';\nimport { type CreateObject, SpaceCapabilities, SpaceEvents } from '@dxos/plugin-space/types';\nimport { HasSubject } from '@dxos/types';\n\nimport {\n AiService,\n AppGraphBuilder,\n AssistantState,\n BlueprintDefinition,\n CompanionChatProvisioner,\n EdgeModelResolver,\n LocalModelResolver,\n MarkdownExtension,\n Migrations,\n OperationHandler,\n ReactSurface,\n Settings,\n Toolkit,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#operations';\nimport { AssistantEvents } from '#types';\n\nimport { translations } from './translations';\n\nexport const AssistantPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addMetadataModule({\n metadata: [\n {\n id: Type.getTypename(Chat.Chat),\n metadata: {\n icon: Annotation.IconAnnotation.get(Chat.Chat).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Chat.Chat).pipe(Option.getOrThrow).hue ?? 'white',\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const { object } = yield* Operation.invoke(AssistantOperation.CreateChat, {\n db: options.db,\n name: props?.name,\n });\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n })) satisfies CreateObject,\n },\n },\n {\n id: Type.getTypename(Blueprint.Blueprint),\n metadata: {\n icon: Annotation.IconAnnotation.get(Blueprint.Blueprint).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Blueprint.Blueprint).pipe(Option.getOrThrow).hue ?? 'white',\n inputSchema: AssistantOperation.BlueprintForm,\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const object = Blueprint.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n })) satisfies CreateObject,\n },\n },\n {\n id: Type.getTypename(Prompt.Prompt),\n metadata: {\n icon: Annotation.IconAnnotation.get(Prompt.Prompt).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Prompt.Prompt).pipe(Option.getOrThrow).hue ?? 'white',\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const object = Prompt.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n })) satisfies CreateObject,\n },\n },\n {\n id: Type.getTypename(Sequence),\n metadata: {\n icon: Annotation.IconAnnotation.get(Sequence).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Sequence).pipe(Option.getOrThrow).hue ?? 'white',\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const object = Obj.make(Sequence, props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n })) satisfies CreateObject,\n },\n },\n {\n id: Type.getTypename(Agent.Agent),\n metadata: {\n icon: Annotation.IconAnnotation.get(Agent.Agent).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Agent.Agent).pipe(Option.getOrThrow).hue ?? 'white',\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const object = yield* Agent.makeInitialized({ name: '', spec: '' }, AgentBlueprint.make()).pipe(\n withComputeRuntime(options.db.spaceId),\n );\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n })) satisfies CreateObject,\n },\n },\n ],\n }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({\n schema: [\n Chat.Chat,\n Chat.CompanionTo,\n Blueprint.Blueprint,\n Feed.Feed,\n HasSubject.HasSubject,\n Prompt.Prompt,\n ResearchGraph.ResearchGraph,\n Agent.Agent,\n Plan.Plan,\n Sequence,\n Memory.Memory,\n ],\n }),\n AppPlugin.addSettingsModule({ activate: Settings }),\n AppPlugin.addSurfaceModule({\n activate: ReactSurface,\n activatesBefore: [AppActivationEvents.SetupArtifactDefinition],\n }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.addModule({\n id: 'markdown',\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: MarkdownExtension,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: AppActivationEvents.SetupSettings,\n activate: AssistantState,\n }),\n Plugin.addModule({\n id: 'on-space-created',\n activatesOn: SpaceEvents.SpaceCreated,\n activate: () =>\n Effect.succeed(\n Capability.contributes(SpaceCapabilities.OnCreateSpace, (params) =>\n Operation.invoke(AssistantOperation.OnCreateSpace, params),\n ),\n ),\n }),\n Plugin.addModule({\n activatesOn: AssistantEvents.SetupAiServiceProviders,\n activate: EdgeModelResolver,\n }),\n Plugin.addModule({\n activatesOn: AssistantEvents.SetupAiServiceProviders,\n activate: LocalModelResolver,\n }),\n Plugin.addModule({\n activatesBefore: [AssistantEvents.SetupAiServiceProviders],\n // TODO(dmaretskyi): This should activate lazily when the AI chat is used.\n activatesOn: ActivationEvents.Startup,\n activate: AiService,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): Use a different event.\n activatesOn: ActivationEvents.Startup,\n activate: Toolkit,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvent.allOf(\n ActivationEvents.OperationInvokerReady,\n AppActivationEvents.AppGraphReady,\n DeckEvents.StateReady,\n ),\n activate: CompanionChatProvisioner,\n }),\n Plugin.addModule({\n activatesOn: ClientEvents.SetupMigration,\n activate: Migrations,\n }),\n Plugin.make,\n);\n\n// TODO(dmaretskyi): Extract to a helper module.\nconst withComputeRuntime =\n (spaceId: SpaceId) =>\n <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ): Effect.Effect<A, E, Exclude<R, AutomationCapabilities.ComputeServices> | Capability.Service> =>\n Effect.gen(function* () {\n // TODO(dmaretskyi): Capability.get has `Error` in the error channel. We should throw those as defects instead.\n const provider = yield* Capability.get(AutomationCapabilities.ComputeRuntime).pipe(Effect.orDie);\n const runtime = yield* provider.getRuntime(spaceId).runtimeEffect;\n return yield* effect.pipe(Effect.provide(runtime));\n });\n"],
5
+ "mappings": "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",
6
+ "names": ["lazy", "Prec", "keymap", "useAtomValue", "createContext", "Array", "Option", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Event", "Filter", "Obj", "useVoiceInput", "useQuery", "useIdentity", "Input", "useDynamicRef", "useTranslation", "ChatEditor", "Menu", "Message", "composable", "composableProps", "mx", "isTruthy", "trim", "useChatToolbarActions", "meta", "React", "IconButton", "useTranslation", "mx", "meta", "ChatActions", "classNames", "children", "microphone", "recording", "processing", "debug", "onEvent", "t", "useTranslation", "meta", "id", "div", "className", "mx", "IconButton", "disabled", "variant", "icon", "iconOnly", "label", "onClick", "type", "noTooltip", "onMouseDown", "onMouseUp", "onTouchStart", "onTouchEnd", "Option", "React", "useMemo", "useState", "Filter", "Obj", "Type", "Annotation", "useQuery", "IconButton", "Popover", "Select", "useTranslation", "Listbox", "SearchList", "useSearchListResults", "Tabs", "getStyles", "mx", "useActiveBlueprints", "useBlueprintHandlers", "useBlueprints", "useContextObjects", "useFilteredTypes", "meta", "panelClassNames", "ChatOptions", "db", "context", "blueprintRegistry", "presets", "preset", "onPresetChange", "t", "useTranslation", "meta", "id", "React", "div", "role", "className", "Popover", "Root", "Trigger", "asChild", "IconButton", "variant", "icon", "iconOnly", "label", "Portal", "Content", "side", "classNames", "Viewport", "ObjectsPanel", "Arrow", "Tabs", "orientation", "defaultValue", "defaultActivePart", "tabIndex", "mx", "Panel", "value", "BlueprintsPanel", "ModelsPanel", "Tablist", "IconTab", "blueprints", "useBlueprints", "activeBlueprints", "useActiveBlueprints", "onUpdateBlueprint", "useBlueprintHandlers", "results", "handleSearch", "useSearchListResults", "items", "extract", "blueprint", "name", "SearchList", "onSearch", "map", "isActive", "has", "key", "Item", "checked", "onSelect", "Input", "placeholder", "autoFocus", "Listbox", "onValueChange", "Option", "OptionLabel", "OptionIndicator", "ANY", "types", "useFilteredTypes", "typenames", "useMemo", "type", "typename", "Type", "getTypename", "ns", "sort", "a", "b", "localeCompare", "setTypename", "useState", "anyFilter", "Filter", "or", "objects", "useQuery", "contextObjects", "onUpdateObject", "useContextObjects", "object", "Obj", "getLabel", "length", "findIndex", "obj", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "Annotation", "IconAnnotation", "get", "getOrElse", "DEFAULT_OBJECT_ICON", "undefined", "styles", "getStyles", "iconClassNames", "surfaceText", "getDXN", "Select", "TriggerButton", "ScrollUpButton", "ScrollDownButton", "React", "Select", "Option", "React", "Annotation", "Obj", "Icon", "IconButton", "toLocalizedString", "useTranslation", "getStyles", "mx", "useContextObjects", "meta", "ChatReferences", "classNames", "context", "db", "t", "useTranslation", "meta", "id", "objects", "onUpdateObject", "useContextObjects", "React", "ul", "className", "mx", "map", "obj", "dxn", "Obj", "getDXN", "typename", "getTypename", "label", "getLabel", "ns", "icon", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "Annotation", "IconAnnotation", "get", "getOrElse", "DEFAULT_OBJECT_ICON", "undefined", "styles", "getStyles", "li", "key", "toString", "data-hue", "Icon", "size", "surfaceText", "toLocalizedString", "IconButton", "iconOnly", "variant", "onClick", "React", "useEffect", "useState", "Tooltip", "useTimeout", "Spinner", "mx", "period", "ChatStatusIndicator", "classNames", "preset", "processing", "error", "props", "init", "setInit", "useState", "useEffect", "useTimeout", "React", "div", "role", "className", "mx", "Spinner", "duration", "state", "Tooltip", "Trigger", "asChild", "content", "message", "React", "forwardRef", "useCallback", "useEffect", "useMemo", "useState", "PublicKey", "setRef", "MarkdownStream", "mx", "keyToFallback", "React", "log", "getXmlTextChild", "applyToolBlockToWidgetState", "context", "block", "_tag", "updateWidget", "toolCallId", "blocks", "rehydrateToolWidgetsFromMessages", "messages", "message", "React", "TogglePanel", "Json", "FallbackWidget", "_tag", "props", "React", "TogglePanel", "Root", "Header", "classNames", "Content", "Viewport", "Json", "Data", "data", "displayName", "WidgetType", "Domino", "PromptWidget", "WidgetType", "text", "eq", "other", "toDOM", "inner", "Domino", "of", "classNames", "append", "root", "WidgetType", "Domino", "ReasoningWidget", "WidgetType", "text", "pos", "undefined", "String", "eq", "other", "toDOM", "root", "Domino", "of", "classNames", "append", "attributes", "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", "append", "attributes", "root", "WidgetType", "Domino", "SelectWidget", "WidgetType", "options", "eq", "other", "JSON", "stringify", "toDOM", "Domino", "of", "attributes", "role", "classNames", "append", "map", "option", "text", "root", "WidgetType", "Domino", "StatsWidget", "WidgetType", "text", "eq", "other", "toDOM", "Domino", "of", "classNames", "root", "updateDOM", "dom", "textContent", "React", "useTranslation", "TogglePanel", "meta", "SummaryWidget", "children", "t", "useTranslation", "meta", "id", "React", "TogglePanel", "Root", "classNames", "Header", "Content", "div", "role", "className", "WidgetType", "Domino", "mx", "SuggestionWidget", "WidgetType", "text", "eq", "other", "toDOM", "Domino", "of", "classNames", "mx", "append", "attributes", "icon", "root", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useTranslation", "NumericTabs", "TextCrawl", "TogglePanel", "Json", "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", "Json", "Data", "data", "replacer", "maxDepth", "maxArrayLen", "maxStringLen", "WidgetType", "Domino", "XML_WIDGET_DATA_ATTR", "StatusWidget", "WidgetType", "text", "pos", "undefined", "String", "eq", "other", "toDOM", "Domino", "of", "classNames", "attributes", "XML_WIDGET_DATA_ATTR", "append", "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", "componentRegistry", "prompt", "block", "factory", "children", "text", "getXmlTextChild", "PromptWidget", "reasoning", "streaming", "range", "ReasoningWidget", "from", "reference", "ref", "ReferenceWidget", "select", "options", "map", "option", "_tag", "filter", "Boolean", "length", "SelectWidget", "suggestion", "SuggestionWidget", "stats", "StatsWidget", "status", "StatusWidget", "summary", "Component", "SummaryWidget", "toolCall", "props", "React", "div", "role", "className", "ToolWidget", "toolResult", "FallbackWidget", "toolkit", "json", "blockToMarkdown", "context", "message", "str", "blockToMarkdownImpl", "pending", "log", "JSON", "stringify", "sender", "trim", "dxn", "toString", "getObjectLabel", "join", "applyToolBlockToWidgetState", "toolCallId", "reasoningText", "redactedText", "renderXMLBlock", "content", "statusText", "id", "escapeXmlTextContent", "raw", "replace", "stripBulletLikeLinePrefixes", "split", "line", "tag", "opts", "attributes", "log", "MessageThreadContext", "_widgetState", "updateWidget", "id", "value", "getObjectLabel", "_id", "MessageSyncer", "_initialMessageId", "_currentMessageIndex", "_currentBlockIndex", "_currentBlockContent", "_context", "_document", "_renderer", "context", "reset", "log", "undefined", "setContent", "append", "messages", "flush", "length", "buffer", "processBlocks", "content", "push", "join", "epoch", "then", "rehydrateToolWidgetsFromMessages", "catch", "error", "warn", "i", "message", "slice", "j", "block", "blocks", "currentBlockContent", "startsWith", "pending", "defaultOptions", "autoScroll", "cursor", "ChatThread", "forwardRef", "classNames", "identity", "messages", "error", "options", "debug", "onEvent", "forwardedRef", "controller", "setController", "useState", "handleMarkdownStreamRef", "useCallback", "instance", "setRef", "userHue", "useMemo", "profile", "data", "hue", "keyToFallback", "identityKey", "PublicKey", "random", "useEffect", "scrollToBottom", "syncer", "MessageSyncer", "blockToMarkdown", "reset", "append", "handleEvent", "type", "value", "text", "React", "div", "role", "className", "mx", "style", "MarkdownStream", "registry", "componentRegistry", "ref", "ChatContextProvider", "useChatContext", "createContext", "ChatRoot", "children", "chat", "queue", "processor", "onEvent", "props", "debug", "setDebug", "useState", "pending", "useAtomValue", "messages", "streaming", "lastPrompt", "useRef", "undefined", "storedMessages", "useQuery", "Filter", "type", "Message", "useMemo", "dedupeWith", "id", "a", "b", "dump", "useCallback", "objects", "context", "getObjects", "blueprints", "getBlueprints", "system", "getSystemPrompt", "tools", "getTools", "console", "group", "log", "trim", "Object", "values", "map", "tool", "JSON", "stringify", "join", "groupEnd", "event", "Event", "useEffect", "on", "ev", "text", "length", "current", "request", "message", "retry", "cancel", "emit", "db", "Obj", "getDatabase", "React", "displayName", "CHAT_VIEWPORT_NAME", "ChatViewport", "composable", "forwardedRef", "div", "composableProps", "classNames", "ref", "CHAT_THREAD_NAME", "ChatThread", "identity", "useIdentity", "error", "pipe", "getOrUndefined", "controllerRef", "scrollToBottom", "navigatePrevious", "navigateNext", "handleEvent", "NaturalChatThread", "CHAT_PROMPT_NAME", "ChatPrompt", "outline", "settings", "placeholder", "expandable", "online", "presets", "preset", "onPresetChange", "onOnlineChange", "t", "useTranslation", "meta", "active", "activeRef", "useDynamicRef", "editorRef", "recordingState", "setRecordingState", "getText", "setText", "focus", "recording", "useVoiceInput", "onUpdate", "extensions", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "shift", "filter", "isTruthy", "handleSubmit", "role", "className", "mx", "ChatStatusIndicator", "processing", "ChatEditor", "autoFocus", "lineWrapping", "onSubmit", "ChatOptions", "blueprintRegistry", "ChatReferences", "ChatActions", "microphone", "Input", "Root", "Label", "srOnly", "Switch", "checked", "onCheckedChange", "CHAT_TOOLBAR_NAME", "ChatToolbar", "attendableId", "companionTo", "menuActions", "useChatToolbarActions", "Menu", "Toolbar", "Chat", "Viewport", "Thread", "Prompt", "Match", "React", "Process", "Icon", "ScrollArea", "Treegrid", "composable", "composableProps", "mx", "ProcessTree", "composable", "processes", "onProcessSelect", "props", "forwardedRef", "filteredProcesses", "filter", "process", "Process", "State", "RUNNING", "HYBERNATING", "includes", "state", "IDLE", "slice", "SUCCEEDED", "FAILED", "TERMINATED", "React", "ScrollArea", "Root", "composableProps", "classNames", "thin", "ref", "Viewport", "Treegrid", "gridTemplateColumns", "parentPid", "map", "activeChildren", "candidate", "toString", "pid", "Row", "key", "id", "parentOf", "Cell", "indent", "onClick", "Icon", "size", "icon", "value", "pipe", "when", "TERMINATING", "orElse", "mx", "div", "role", "className", "span", "params", "name", "length", "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", "autocompletion", "activateOnTyping", "aboveCursor", "closeOnBlur", "override", "handlebarsCompletions", "keymap", "of", "completionKeymap", "regex", "comment", "brackets", "command", "var", "dxn", "url", "tagPadding", "ViewPlugin", "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", "Decoration", "widget", "DXNWidget", "mark", "class", "mx", "parts", "split", "idx", "sort", "a", "b", "builder", "RangeSetBuilder", "add", "finish", "v", "WidgetType", "_identifier", "ignoreEvent", "eq", "other", "toDOM", "map", "part", "len", "plen", "slice", "join", "Domino", "classNames", "root", "variables", "commands", "context", "matchBefore", "type", "matches", "startsWith", "lastIndexOf", "options", "filter", "name", "label", "syntaxTree", "RangeSetBuilder", "Decoration", "ViewPlugin", "xmlDecorator", "_", "xmlDecoratorPlugin", "ViewPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "builder", "RangeSetBuilder", "from", "to", "visibleRanges", "syntaxTree", "state", "iterate", "enter", "node", "name", "add", "Decoration", "mark", "class", "finish", "v", "TemplateEditor", "composable", "classNames", "id", "template", "lineNumbers", "props", "forwardedRef", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "text", "source", "target", "initialValue", "content", "extensions", "createDataExtensions", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineWrapping", "placeholder", "createThemeExtensions", "createMarkdownExtensions", "decorateMarkdown", "handlebars", "xmlDecorator", "syntaxHighlighting", "defaultHighlightStyle", "filter", "isNonNullable", "React", "div", "composableProps", "role", "ref", "composeRefs", "React", "Fragment", "useEffect", "useState", "log", "Operation", "Filter", "useQuery", "ScrollArea", "composable", "composableProps", "mx", "ServiceType", "Toolbox", "functions", "services", "blueprints", "activeBlueprints", "props", "forwardedRef", "Root", "thin", "orientation", "ref", "Viewport", "length", "Section", "title", "items", "map", "name", "description", "tools", "subitems", "toolId", "safeToolId", "target", "service", "serviceId", "displayName", "striped", "stripeClassNames", "gridClassNames", "subGridClassNames", "div", "h1", "className", "i", "key", "ToolboxPanel", "classNames", "db", "processor", "type", "serviceTools", "setServiceTools", "queueMicrotask", "PersistentOperation", "context", "getBlueprints", "split", "pop", "AssistantSettings", "lazy", "useCallback", "useEffect", "useMemo", "useState", "useCapabilities", "AppCapabilities", "Blueprint", "Filter", "Obj", "Ref", "useQuery", "distinctBy", "useBlueprintRegistry", "blueprintDefinitions", "useCapabilities", "AppCapabilities", "BlueprintDefinition", "useMemo", "Blueprint", "Registry", "map", "blueprint", "make", "useBlueprints", "blueprintRegistry", "db", "staticBlueprints", "query", "spaceBlueprints", "useQuery", "Filter", "type", "blueprints", "distinctBy", "b", "key", "sort", "name", "a", "localeCompare", "useActiveBlueprints", "context", "active", "setActive", "useState", "Map", "useEffect", "updateActive", "getBlueprints", "subscribeBlueprints", "useBlueprintHandlers", "onUpdateBlueprint", "useCallback", "checked", "objects", "run", "storedBlueprint", "find", "getByKey", "add", "Obj", "clone", "bind", "Ref", "unbind", "RegistryContext", "Effect", "useContext", "useMemo", "useState", "AiConversation", "Ref", "createFeedServiceLayer", "runAndForwardErrors", "log", "useAsyncEffect", "Schema", "ModelProviders", "ModelProvider", "Literal", "createModelLabel", "model", "parts", "split", "length", "AiServicePresets", "provider", "map", "i", "id", "label", "Atom", "Registry", "Effect", "Fiber", "Option", "Stream", "DEFAULT_EDGE_MODEL", "AiContextService", "createSystemPrompt", "formatSystemPrompt", "AgentService", "PartialBlock", "Obj", "runAndForwardErrors", "unwrapExit", "Trace", "log", "Operation", "Message", "defaultOptions", "model", "DEFAULT_EDGE_MODEL", "autoUpdateNameChance", "AiChatProcessor", "Atom", "make", "Set", "streaming", "get", "length", "active", "messages", "error", "none", "_conversation", "_runtime", "_feed", "_options", "observableRegistry", "Registry", "system", "capabilities", "modelRegistry", "getCapabilities", "createSystemPrompt", "context", "conversation", "blueprintRegistry", "getTools", "runPromise", "getSystemPrompt", "gen", "blueprints", "getBlueprints", "objects", "getObjects", "formatSystemPrompt", "pipe", "provideService", "AiContextService", "binder", "orDie", "request", "requestProp", "cancel", "set", "effect", "session", "AgentService", "getSession", "ephemeralStream", "subscribeEphemeral", "runForEach", "message", "sync", "event", "events", "Trace", "isOfType", "PartialBlock", "data", "fork", "log", "submitPrompt", "waitForCompletion", "info", "runFork", "join", "err", "_tag", "includes", "undefined", "some", "Error", "cause", "runAndForwardErrors", "interrupt", "retry", "updateName", "chat", "unwrapExit", "runPromiseExit", "Operation", "invoke", "UpdateChatName", "isPending", "block", "pending", "Obj", "Message", "id", "messageId", "created", "Date", "toISOString", "sender", "role", "blocks", "has", "update", "idx", "findIndex", "existing", "updated", "add", "filter", "remaining", "clear", "target", "void", "chance", "shouldUpdate", "name", "Math", "random", "hasName", "schedule", "useChatProcessor", "space", "chat", "preset", "runtime", "blueprintRegistry", "settings", "observableRegistry", "useContext", "RegistryContext", "conversation", "setConversation", "useState", "useAsyncEffect", "feedTarget", "feed", "target", "feedServiceLayer", "createFeedServiceLayer", "queues", "runAndForwardErrors", "pipe", "provide", "AiConversation", "registry", "open", "close", "undefined", "processor", "useMemo", "log", "model", "AiChatProcessor", "Ref", "make", "useMemo", "useCapability", "getPersonalSpace", "AutomationCapabilities", "useClient", "useChatServices", "id", "client", "useClient", "getPersonalSpace", "runtimeResolver", "useCapability", "AutomationCapabilities", "ComputeRuntime", "useMemo", "undefined", "getRuntime", "Atom", "Effect", "useMemo", "useOperationInvoker", "Chat", "Filter", "Obj", "Query", "runAndForwardErrors", "invariant", "useQuery", "MenuBuilder", "useMenuActions", "useChatContext", "meta", "AssistantOperation", "useChatToolbarActions", "chat", "companionTo", "invoke", "db", "query", "select", "id", "targetOf", "CompanionTo", "source", "nothing", "chats", "make", "builder", "root", "label", "ns", "action", "icon", "type", "disabled", "SetCurrentChat", "undefined", "pipe", "gen", "UpdateChatName", "length", "group", "selectCardinality", "variant", "toSorted", "a", "b", "localeCompare", "forEach", "getLabel", "typename", "build", "spaceId", "RegistryContext", "Effect", "useContext", "useState", "AiContextBinder", "createFeedServiceLayer", "runAndForwardErrors", "useAsyncEffect", "useContextBinder", "space", "feed", "registry", "useContext", "RegistryContext", "binder", "setBinder", "useState", "useAsyncEffect", "undefined", "feedServiceLayer", "createFeedServiceLayer", "queues", "runtime", "runAndForwardErrors", "pipe", "provide", "AiContextBinder", "open", "close", "Atom", "useAtomValue", "useCallback", "emptyObjectsAtom", "Atom", "make", "useContextObjects", "db", "context", "objects", "useAtomValue", "handleUpdateObject", "useCallback", "dxn", "checked", "ref", "makeRef", "load", "bind", "unbind", "onUpdateObject", "Option", "useEffect", "useState", "EntityKind", "SystemTypeAnnotation", "getTypeAnnotation", "useFilteredTypes", "db", "types", "setTypes", "useState", "useEffect", "schemaRegistry", "query", "location", "subscribe", "Array", "from", "Set", "results", "filter", "schema", "getTypeAnnotation", "kind", "EntityKind", "Relation", "SystemTypeAnnotation", "get", "pipe", "getOrElse", "fire", "useCallback", "useRef", "useState", "useFlush", "space", "state", "setState", "useState", "resetTimer", "useRef", "handleFlush", "useCallback", "queueMicrotask", "current", "clearTimeout", "db", "flush", "setTimeout", "useState", "useOnline", "online", "setOnline", "useState", "useCallback", "useEffect", "useMemo", "useState", "usePresets", "online", "preset", "setPreset", "useState", "presets", "useMemo", "AiServicePresets", "filter", "provider", "presetOptions", "map", "id", "model", "label", "useEffect", "handlePresetChange", "useCallback", "find", "onPresetChange", "useMemo", "Filter", "Obj", "useReferencesProvider", "space", "useMemo", "undefined", "getReferences", "query", "objects", "db", "Filter", "everything", "run", "filter", "object", "stringMatch", "Obj", "getLabel", "getDXN", "map", "uri", "toString", "label", "resolveReference", "id", "first", "toLowerCase", "startsWith", "trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "tags", "ASSISTANT_DIALOG", "ASSISTANT_COMPANION_VARIANT", "Chat", "Agent", "Blueprint", "Prompt", "Sequence", "Type", "meta", "translations", "Blueprint", "typename", "Type", "getTypename", "Prompt", "Sequence", "Chat", "Agent", "meta", "id", "Effect", "Option", "ActivationEvent", "ActivationEvents", "Capability", "Plugin", "AppActivationEvents", "AppPlugin", "Agent", "AgentBlueprint", "Chat", "Memory", "Plan", "ResearchGraph", "Blueprint", "Prompt", "Sequence", "Annotation", "Feed", "Obj", "Type", "Operation", "AutomationCapabilities", "ClientEvents", "DeckEvents", "MarkdownEvents", "SpaceOperation", "SpaceCapabilities", "SpaceEvents", "HasSubject", "AiService", "AppGraphBuilder", "AssistantState", "BlueprintDefinition", "CompanionChatProvisioner", "EdgeModelResolver", "LocalModelResolver", "MarkdownExtension", "Migrations", "OperationHandler", "ReactSurface", "Settings", "Toolkit", "meta", "AssistantOperation", "AssistantEvents", "AssistantPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addAppGraphModule", "activate", "AppGraphBuilder", "addBlueprintDefinitionModule", "BlueprintDefinition", "addMetadataModule", "metadata", "id", "Type", "getTypename", "Chat", "icon", "Annotation", "IconAnnotation", "get", "getOrThrow", "iconHue", "hue", "createObject", "props", "options", "gen", "object", "Operation", "invoke", "AssistantOperation", "CreateChat", "db", "name", "SpaceOperation", "AddObject", "target", "hidden", "targetNodeId", "Blueprint", "inputSchema", "BlueprintForm", "make", "Prompt", "Sequence", "Obj", "Agent", "makeInitialized", "spec", "AgentBlueprint", "withComputeRuntime", "spaceId", "addOperationHandlerModule", "OperationHandler", "addSchemaModule", "schema", "CompanionTo", "Feed", "HasSubject", "ResearchGraph", "Plan", "Memory", "addSettingsModule", "Settings", "addSurfaceModule", "ReactSurface", "activatesBefore", "AppActivationEvents", "SetupArtifactDefinition", "addTranslationsModule", "translations", "addModule", "activatesOn", "MarkdownEvents", "SetupExtensions", "MarkdownExtension", "SetupSettings", "AssistantState", "SpaceEvents", "SpaceCreated", "succeed", "Capability", "contributes", "SpaceCapabilities", "OnCreateSpace", "params", "AssistantEvents", "SetupAiServiceProviders", "EdgeModelResolver", "LocalModelResolver", "ActivationEvents", "Startup", "AiService", "Toolkit", "ActivationEvent", "allOf", "OperationInvokerReady", "AppGraphReady", "DeckEvents", "StateReady", "CompanionChatProvisioner", "ClientEvents", "SetupMigration", "Migrations", "effect", "provider", "AutomationCapabilities", "ComputeRuntime", "orDie", "runtime", "getRuntime", "runtimeEffect", "provide"]
7
7
  }