@dxos/plugin-assistant 0.8.4-main.74a063c4e0 → 0.8.4-main.765dc60934

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 (640) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/AgentArticle-5XDDEXMP.mjs +169 -0
  4. package/dist/lib/neutral/AgentArticle-5XDDEXMP.mjs.map +7 -0
  5. package/dist/lib/neutral/AgentProperties-CNH4JMDZ.mjs +100 -0
  6. package/dist/lib/neutral/AgentProperties-CNH4JMDZ.mjs.map +7 -0
  7. package/dist/lib/neutral/AssistantPlugin.mjs +10 -0
  8. package/dist/lib/neutral/AssistantPlugin.node.mjs +46 -0
  9. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +7 -0
  10. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +40 -0
  11. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs.map +7 -0
  12. package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs +27 -0
  13. package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs.map +7 -0
  14. package/dist/lib/neutral/ChatArticle-WVAFZPVI.mjs +8 -0
  15. package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs +133 -0
  16. package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs.map +7 -0
  17. package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs +72 -0
  18. package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs.map +7 -0
  19. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs +28 -0
  20. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +7 -0
  21. package/dist/lib/neutral/RoutineArticle-H7ECM7AH.mjs +116 -0
  22. package/dist/lib/neutral/RoutineArticle-H7ECM7AH.mjs.map +7 -0
  23. package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs +48 -0
  24. package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs.map +7 -0
  25. package/dist/lib/neutral/TracePanel-HYVPDIAA.mjs +565 -0
  26. package/dist/lib/neutral/TracePanel-HYVPDIAA.mjs.map +7 -0
  27. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs +92 -0
  28. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs.map +7 -0
  29. package/dist/lib/neutral/ai-service-GJXMI5OI.mjs +22 -0
  30. package/dist/lib/neutral/ai-service-GJXMI5OI.mjs.map +7 -0
  31. package/dist/lib/neutral/app-graph-builder-QNKVSPPG.mjs +187 -0
  32. package/dist/lib/neutral/app-graph-builder-QNKVSPPG.mjs.map +7 -0
  33. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs +32 -0
  34. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs.map +7 -0
  35. package/dist/lib/{browser → neutral}/blueprints/index.mjs +1 -1
  36. package/dist/lib/neutral/capabilities/index.mjs +35 -0
  37. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-4CQZCMRP.mjs +25 -0
  39. package/dist/lib/neutral/chunk-4CQZCMRP.mjs.map +7 -0
  40. package/dist/lib/{browser/chunk-EZRS3J25.mjs → neutral/chunk-5H6UJHLF.mjs} +3 -3
  41. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-CU5S7SGF.mjs +8 -0
  43. package/dist/lib/neutral/chunk-CU5S7SGF.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-ITJX2YZZ.mjs +98 -0
  45. package/dist/lib/neutral/chunk-ITJX2YZZ.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-SLIPV6NN.mjs +106 -0
  47. package/dist/lib/neutral/chunk-SLIPV6NN.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-VHPTYKYD.mjs +361 -0
  49. package/dist/lib/neutral/chunk-VHPTYKYD.mjs.map +7 -0
  50. package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs +116 -0
  51. package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs.map +7 -0
  52. package/dist/lib/neutral/components/index.mjs +2298 -0
  53. package/dist/lib/neutral/components/index.mjs.map +7 -0
  54. package/dist/lib/neutral/containers/index.mjs +29 -0
  55. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  56. package/dist/lib/{browser/create-chat-DF5TG5XC.mjs → neutral/create-chat-QQZURUBW.mjs} +16 -27
  57. package/dist/lib/neutral/create-chat-QQZURUBW.mjs.map +7 -0
  58. package/dist/lib/neutral/create-object-UZCJCPWM.mjs +93 -0
  59. package/dist/lib/neutral/create-object-UZCJCPWM.mjs.map +7 -0
  60. package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs +21 -0
  61. package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs.map +7 -0
  62. package/dist/lib/{browser/ensure-companion-chat-FR4AWZ2P.mjs → neutral/ensure-companion-chat-5S4LZM2H.mjs} +10 -17
  63. package/dist/lib/neutral/ensure-companion-chat-5S4LZM2H.mjs.map +7 -0
  64. package/dist/lib/neutral/hooks/index.mjs +927 -0
  65. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  66. package/dist/lib/neutral/index.mjs +32 -0
  67. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs +24 -0
  68. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +7 -0
  69. package/dist/lib/neutral/markdown-KTBFOMFM.mjs +110 -0
  70. package/dist/lib/neutral/markdown-KTBFOMFM.mjs.map +7 -0
  71. package/dist/lib/neutral/meta.json +1 -0
  72. package/dist/lib/neutral/meta.mjs +12 -0
  73. package/dist/lib/neutral/migrations-7DEMVBOG.mjs +28 -0
  74. package/dist/lib/neutral/migrations-7DEMVBOG.mjs.map +7 -0
  75. package/dist/lib/{browser/on-create-space-54RNX5JI.mjs → neutral/on-create-space-Q2R7OSP6.mjs} +5 -8
  76. package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs.map +7 -0
  77. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs +13 -0
  78. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs.map +7 -0
  79. package/dist/lib/neutral/operations/index.mjs +8 -0
  80. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  81. package/dist/lib/neutral/plugin.mjs +16 -0
  82. package/dist/lib/neutral/plugin.mjs.map +7 -0
  83. package/dist/lib/neutral/react-surface-T4R65UJU.mjs +174 -0
  84. package/dist/lib/neutral/react-surface-T4R65UJU.mjs.map +7 -0
  85. package/dist/lib/{browser/resolve-navigation-targets-NZOD66NY.mjs → neutral/resolve-navigation-targets-VXBSWV5L.mjs} +4 -6
  86. package/dist/lib/neutral/resolve-navigation-targets-VXBSWV5L.mjs.map +7 -0
  87. package/dist/lib/{browser/run-prompt-in-new-chat-4YQ37XIS.mjs → neutral/run-prompt-in-new-chat-VJXXZ6SI.mjs} +18 -51
  88. package/dist/lib/neutral/run-prompt-in-new-chat-VJXXZ6SI.mjs.map +7 -0
  89. package/dist/lib/{browser/set-current-chat-WJI3WAVM.mjs → neutral/set-current-chat-ZFDCYK5I.mjs} +5 -11
  90. package/dist/lib/neutral/set-current-chat-ZFDCYK5I.mjs.map +7 -0
  91. package/dist/lib/neutral/settings-W4BLWQ53.mjs +28 -0
  92. package/dist/lib/neutral/settings-W4BLWQ53.mjs.map +7 -0
  93. package/dist/lib/neutral/state-H3G7QCU6.mjs +28 -0
  94. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +7 -0
  95. package/dist/lib/neutral/testing.mjs +8 -0
  96. package/dist/lib/neutral/testing.mjs.map +7 -0
  97. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs +14 -0
  98. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs.map +7 -0
  99. package/dist/lib/neutral/translations.mjs +174 -0
  100. package/dist/lib/neutral/translations.mjs.map +7 -0
  101. package/dist/lib/neutral/types/index.mjs +20 -0
  102. package/dist/lib/neutral/types/index.mjs.map +7 -0
  103. package/dist/lib/{browser/update-chat-name-3Y36KFAS.mjs → neutral/update-chat-name-ENXRUMDJ.mjs} +8 -25
  104. package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs.map +7 -0
  105. package/dist/types/src/AssistantPlugin.d.ts +1 -0
  106. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  107. package/dist/types/src/AssistantPlugin.node.d.ts +4 -0
  108. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -0
  109. package/dist/types/src/AssistantPlugin.test.d.ts +2 -0
  110. package/dist/types/src/AssistantPlugin.test.d.ts.map +1 -0
  111. package/dist/types/src/blueprints/assistant/blueprint.d.ts +2 -2
  112. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/create-object.d.ts +31 -0
  118. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/index.d.ts +30 -16
  121. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  122. package/dist/types/src/capabilities/local-model-resolver.d.ts +6 -3
  123. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  125. package/dist/types/src/capabilities/migrations.d.ts +2 -1
  126. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  127. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  128. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  129. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  130. package/dist/types/src/capabilities/settings.d.ts +1 -13
  131. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  132. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  133. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  134. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +1 -1
  135. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  136. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +1 -503
  137. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/Chat/Chat.d.ts +38 -50
  139. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  140. package/dist/types/src/components/Chat/context.d.ts +29 -0
  141. package/dist/types/src/components/Chat/context.d.ts.map +1 -0
  142. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  143. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts +12 -0
  144. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts.map +1 -0
  145. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +8 -4
  146. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  147. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +19 -0
  148. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -0
  149. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  150. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +28 -0
  151. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -0
  152. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +2 -2
  153. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  154. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts +20 -0
  155. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts.map +1 -0
  156. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  157. package/dist/types/src/components/ChatPrompt/index.d.ts +3 -0
  158. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  159. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts +14 -0
  160. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -0
  161. package/dist/types/src/components/ChatThread/ChatThread.d.ts +6 -3
  162. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  163. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +7 -509
  164. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  165. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  166. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +42 -0
  167. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -0
  168. package/dist/types/src/components/ChatThread/registry.d.ts +18 -0
  169. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  170. package/dist/types/src/components/ChatThread/sync.d.ts +40 -13
  171. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  172. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts +18 -0
  173. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -0
  174. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts +2 -0
  175. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts.map +1 -0
  176. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +4 -4
  177. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -1
  178. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -1
  179. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +18 -0
  180. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -0
  181. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -1
  182. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -1
  183. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -1
  184. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +12 -0
  185. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -0
  186. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -1
  187. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -1
  188. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -1
  189. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts +15 -0
  190. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -0
  191. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +5 -0
  192. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -0
  193. package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -1
  194. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
  195. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +2 -5
  196. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  197. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +0 -1
  198. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -1
  199. package/dist/types/src/components/TaskList/TaskList.d.ts +10 -0
  200. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -0
  201. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +16 -0
  202. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -0
  203. package/dist/types/src/components/TaskList/index.d.ts +2 -0
  204. package/dist/types/src/components/TaskList/index.d.ts.map +1 -0
  205. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
  206. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  207. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +1 -503
  208. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  209. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +4 -5
  210. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  211. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +2 -504
  212. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  213. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -1
  214. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -1
  215. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +4 -4
  216. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  217. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -7
  218. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  219. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -503
  220. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  221. package/dist/types/src/components/index.d.ts +1 -0
  222. package/dist/types/src/components/index.d.ts.map +1 -1
  223. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +6 -0
  224. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -0
  225. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +21 -0
  226. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -0
  227. package/dist/types/src/containers/AgentArticle/index.d.ts +2 -0
  228. package/dist/types/src/containers/AgentArticle/index.d.ts.map +1 -0
  229. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +6 -0
  230. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -0
  231. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts +16 -0
  232. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts.map +1 -0
  233. package/dist/types/src/containers/AgentProperties/index.d.ts +2 -0
  234. package/dist/types/src/containers/{ProjectSettings → AgentProperties}/index.d.ts.map +1 -1
  235. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +1 -1
  236. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -1
  237. package/dist/types/src/containers/{ChatContainer/ChatContainer.d.ts → ChatArticle/ChatArticle.d.ts} +3 -3
  238. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -0
  239. package/dist/types/src/containers/ChatArticle/index.d.ts +2 -0
  240. package/dist/types/src/containers/ChatArticle/index.d.ts.map +1 -0
  241. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +1 -1
  242. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  243. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  244. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts +6 -0
  245. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -0
  246. package/dist/types/src/containers/PlanArticle/index.d.ts +2 -0
  247. package/dist/types/src/containers/PlanArticle/index.d.ts.map +1 -0
  248. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +6 -0
  249. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
  250. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +15 -0
  251. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +1 -0
  252. package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
  253. package/dist/types/src/containers/{ProjectArticle → RoutineArticle}/index.d.ts.map +1 -1
  254. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +6 -0
  255. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +1 -0
  256. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +21 -0
  257. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +1 -0
  258. package/dist/types/src/containers/RoutineList/index.d.ts +2 -0
  259. package/dist/types/src/containers/RoutineList/index.d.ts.map +1 -0
  260. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +6 -4
  261. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -1
  262. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts +13 -0
  263. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -0
  264. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +1 -1
  265. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -1
  266. package/dist/types/src/containers/TracePanel/execution-graph.d.ts +97 -0
  267. package/dist/types/src/containers/TracePanel/execution-graph.d.ts.map +1 -0
  268. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts +2 -0
  269. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts.map +1 -0
  270. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -1
  271. package/dist/types/src/containers/TracePanel/testing/index.d.ts +3 -0
  272. package/dist/types/src/containers/TracePanel/testing/index.d.ts.map +1 -0
  273. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +14 -0
  274. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -0
  275. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts +12 -0
  276. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts.map +1 -0
  277. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +3 -2
  278. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  279. package/dist/types/src/containers/TriggerStatus/index.d.ts +1 -1
  280. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -1
  281. package/dist/types/src/containers/index.d.ts +6 -5
  282. package/dist/types/src/containers/index.d.ts.map +1 -1
  283. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
  284. package/dist/types/src/feed-logger.d.ts +13 -0
  285. package/dist/types/src/feed-logger.d.ts.map +1 -0
  286. package/dist/types/src/hooks/index.d.ts +2 -0
  287. package/dist/types/src/hooks/index.d.ts.map +1 -1
  288. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +4 -4
  289. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  290. package/dist/types/src/hooks/useChatKeymap.d.ts +12 -0
  291. package/dist/types/src/hooks/useChatKeymap.d.ts.map +1 -0
  292. package/dist/types/src/hooks/useChatProcessor.d.ts +2 -2
  293. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  294. package/dist/types/src/hooks/useChatServices.d.ts +1 -1
  295. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  296. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
  297. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  298. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  299. package/dist/types/src/hooks/useContextObjects.d.ts +2 -2
  300. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  301. package/dist/types/src/hooks/useDebug.d.ts +10 -0
  302. package/dist/types/src/hooks/useDebug.d.ts.map +1 -0
  303. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
  304. package/dist/types/src/hooks/useFlush.d.ts +1 -1
  305. package/dist/types/src/hooks/useFlush.d.ts.map +1 -1
  306. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  307. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  308. package/dist/types/src/index.d.ts +0 -4
  309. package/dist/types/src/index.d.ts.map +1 -1
  310. package/dist/types/src/operations/create-chat.d.ts +3 -3
  311. package/dist/types/src/operations/create-chat.d.ts.map +1 -1
  312. package/dist/types/src/operations/ensure-companion-chat.d.ts +3 -3
  313. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -1
  314. package/dist/types/src/operations/index.d.ts +1 -2
  315. package/dist/types/src/operations/index.d.ts.map +1 -1
  316. package/dist/types/src/operations/on-create-space.d.ts +3 -3
  317. package/dist/types/src/operations/on-create-space.d.ts.map +1 -1
  318. package/dist/types/src/operations/prompt.test.d.ts +2 -0
  319. package/dist/types/src/operations/prompt.test.d.ts.map +1 -0
  320. package/dist/types/src/operations/resolve-navigation-targets.d.ts +1 -1
  321. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
  322. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +3 -3
  323. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
  324. package/dist/types/src/operations/set-current-chat.d.ts +3 -3
  325. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -1
  326. package/dist/types/src/operations/update-chat-name.d.ts +3 -3
  327. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -1
  328. package/dist/types/src/plugin.d.ts +4 -0
  329. package/dist/types/src/plugin.d.ts.map +1 -0
  330. package/dist/types/src/processor/presets.d.ts +1 -1
  331. package/dist/types/src/processor/presets.d.ts.map +1 -1
  332. package/dist/types/src/processor/processor.d.ts +31 -13
  333. package/dist/types/src/processor/processor.d.ts.map +1 -1
  334. package/dist/types/src/testing/index.d.ts +1 -0
  335. package/dist/types/src/testing/index.d.ts.map +1 -1
  336. package/dist/types/src/testing/test-generator.d.ts +2 -3
  337. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  338. package/dist/types/src/testing/test-generator.test.d.ts +2 -0
  339. package/dist/types/src/testing/test-generator.test.d.ts.map +1 -0
  340. package/dist/types/src/testing/test-sequence.d.ts +3 -3
  341. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  342. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  343. package/dist/types/src/testing/test-trace.d.ts +5 -0
  344. package/dist/types/src/testing/test-trace.d.ts.map +1 -0
  345. package/dist/types/src/testing/trace-timeline.test.d.ts +2 -0
  346. package/dist/types/src/testing/trace-timeline.test.d.ts.map +1 -0
  347. package/dist/types/src/testing.d.ts +2 -0
  348. package/dist/types/src/testing.d.ts.map +1 -0
  349. package/dist/types/src/translations.d.ts +2 -503
  350. package/dist/types/src/translations.d.ts.map +1 -1
  351. package/dist/types/src/types/Assistant.d.ts +22 -6
  352. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  353. package/dist/types/src/types/AssistantCapabilities.d.ts +30 -0
  354. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -0
  355. package/dist/types/src/types/AssistantEvents.d.ts +3 -0
  356. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -0
  357. package/dist/types/src/{operations/definitions.d.ts → types/AssistantOperation.d.ts} +26 -20
  358. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -0
  359. package/dist/types/src/types/Settings.d.ts +22 -6
  360. package/dist/types/src/types/Settings.d.ts.map +1 -1
  361. package/dist/types/src/types/index.d.ts +3 -3
  362. package/dist/types/src/types/index.d.ts.map +1 -1
  363. package/dist/types/src/types/service.d.ts +1 -1
  364. package/dist/types/src/types/service.d.ts.map +1 -1
  365. package/dist/types/src/util/suggestions.d.ts +9 -0
  366. package/dist/types/src/util/suggestions.d.ts.map +1 -0
  367. package/dist/types/src/util/suggestions.test.d.ts +2 -0
  368. package/dist/types/src/util/suggestions.test.d.ts.map +1 -0
  369. package/dist/types/tsconfig.tsbuildinfo +1 -1
  370. package/package.json +163 -124
  371. package/src/AssistantPlugin.node.ts +44 -0
  372. package/src/AssistantPlugin.test.ts +35 -0
  373. package/src/AssistantPlugin.ts +126 -0
  374. package/src/blueprints/assistant/blueprint.test.ts +3 -3
  375. package/src/blueprints/assistant/blueprint.ts +4 -4
  376. package/src/capabilities/app-graph-builder.ts +32 -57
  377. package/src/capabilities/blueprint-definition.ts +10 -12
  378. package/src/capabilities/companion-chat-provisioner.ts +4 -5
  379. package/src/capabilities/create-object.ts +107 -0
  380. package/src/capabilities/index.ts +3 -1
  381. package/src/capabilities/local-model-resolver.ts +14 -4
  382. package/src/capabilities/markdown.ts +1 -1
  383. package/src/capabilities/migrations.ts +4 -10
  384. package/src/capabilities/operation-handler.ts +1 -1
  385. package/src/capabilities/react-surface.tsx +57 -39
  386. package/src/capabilities/toolkit.ts +2 -2
  387. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +3 -2
  388. package/src/components/AssistantSettings/AssistantSettings.tsx +22 -111
  389. package/src/components/Chat/Chat.tsx +105 -279
  390. package/src/components/Chat/context.ts +39 -0
  391. package/src/components/ChatPrompt/ChatActions.tsx +10 -10
  392. package/src/components/ChatPrompt/ChatMcpErrors.tsx +50 -0
  393. package/src/components/ChatPrompt/ChatOptions.stories.tsx +136 -0
  394. package/src/components/ChatPrompt/ChatOptions.tsx +238 -45
  395. package/src/components/ChatPrompt/ChatPrompt.tsx +182 -0
  396. package/src/components/ChatPrompt/ChatReferences.tsx +4 -4
  397. package/src/components/ChatPrompt/ChatStatus.tsx +123 -0
  398. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
  399. package/src/components/ChatPrompt/index.ts +3 -0
  400. package/src/components/ChatThread/Anchor.stories.tsx +95 -0
  401. package/src/components/ChatThread/ChatThread.stories.tsx +48 -42
  402. package/src/components/ChatThread/ChatThread.tsx +36 -21
  403. package/src/components/ChatThread/DEBUG.md +41 -0
  404. package/src/components/ChatThread/MarkdownStream.stories.tsx +281 -0
  405. package/src/components/ChatThread/registry.tsx +106 -24
  406. package/src/components/ChatThread/sync.test.ts +179 -21
  407. package/src/components/ChatThread/sync.ts +89 -87
  408. package/src/components/ChatThread/testing/reasoning.md +25 -0
  409. package/src/components/ChatThread/testing/thinking.md +21 -0
  410. package/src/components/ChatThread/testing/thread-1.md +13 -0
  411. package/src/components/ChatThread/testing/thread-2.md +19 -0
  412. package/src/components/ChatThread/testing/thread-widgets.md +79 -0
  413. package/src/components/ChatThread/tool-widget-state.test.ts +34 -0
  414. package/src/components/ChatThread/tool-widget-state.ts +48 -0
  415. package/src/components/ChatThread/widgets/FallbackWidget.tsx +5 -3
  416. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +68 -0
  417. package/src/components/ChatThread/widgets/ReasoningWidget.ts +19 -6
  418. package/src/components/ChatThread/widgets/ReferenceWidget.ts +3 -1
  419. package/src/components/ChatThread/widgets/SelectWidget.ts +3 -1
  420. package/src/components/ChatThread/widgets/StatsWidget.ts +3 -1
  421. package/src/components/ChatThread/widgets/StatusWidget.ts +53 -0
  422. package/src/components/ChatThread/widgets/SuggestionWidget.ts +1 -1
  423. package/src/components/ChatThread/widgets/SummaryWidget.tsx +3 -4
  424. package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +55 -0
  425. package/src/components/ChatThread/widgets/ToolWidget.tsx +26 -13
  426. package/src/components/ChatThread/widgets/defaults.ts +8 -0
  427. package/src/components/ChatThread/widgets/index.ts +1 -1
  428. package/src/components/ProcessTree/ProcessTree.stories.tsx +12 -38
  429. package/src/components/ProcessTree/ProcessTree.tsx +72 -38
  430. package/src/components/TaskList/TaskList.stories.tsx +44 -0
  431. package/src/components/TaskList/TaskList.tsx +45 -0
  432. package/src/components/{Typewriter → TaskList}/index.ts +1 -1
  433. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +4 -3
  434. package/src/components/TemplateEditor/TemplateEditor.tsx +5 -5
  435. package/src/components/TemplateEditor/TemplateForm.stories.tsx +6 -9
  436. package/src/components/TemplateEditor/TemplateForm.tsx +51 -72
  437. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +1 -1
  438. package/src/components/ToolBlock/ToolBlock.tsx +2 -2
  439. package/src/components/Toolbox/Toolbox.stories.tsx +6 -5
  440. package/src/components/Toolbox/Toolbox.tsx +4 -4
  441. package/src/components/index.ts +1 -0
  442. package/src/containers/AgentArticle/AgentArticle.stories.tsx +120 -0
  443. package/src/containers/AgentArticle/AgentArticle.tsx +204 -0
  444. package/src/containers/AgentArticle/index.ts +5 -0
  445. package/src/containers/AgentProperties/AgentProperties.stories.tsx +101 -0
  446. package/src/containers/AgentProperties/AgentProperties.tsx +127 -0
  447. package/src/containers/AgentProperties/index.ts +5 -0
  448. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +1 -1
  449. package/src/containers/{ChatContainer/ChatContainer.tsx → ChatArticle/ChatArticle.tsx} +22 -10
  450. package/src/containers/ChatArticle/index.ts +5 -0
  451. package/src/containers/ChatCompanion/ChatCompanion.tsx +21 -30
  452. package/src/containers/ChatDialog/ChatDialog.tsx +3 -9
  453. package/src/containers/PlanArticle/PlanArticle.tsx +33 -0
  454. package/src/containers/PlanArticle/index.ts +5 -0
  455. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +75 -0
  456. package/src/containers/RoutineArticle/RoutineArticle.tsx +109 -0
  457. package/src/containers/RoutineArticle/index.ts +5 -0
  458. package/src/containers/{PromptList/PromptList.stories.tsx → RoutineList/RoutineList.stories.tsx} +14 -13
  459. package/src/containers/{PromptList/PromptList.tsx → RoutineList/RoutineList.tsx} +8 -7
  460. package/src/containers/RoutineList/index.ts +5 -0
  461. package/src/containers/TracePanel/TracePanel.stories.tsx +285 -0
  462. package/src/containers/TracePanel/TracePanel.tsx +128 -266
  463. package/src/containers/TracePanel/dxn-extractor.test.ts +7 -7
  464. package/src/containers/TracePanel/dxn-extractor.ts +11 -11
  465. package/src/containers/TracePanel/execution-graph.test.ts +382 -0
  466. package/src/containers/TracePanel/execution-graph.ts +621 -0
  467. package/src/containers/TracePanel/testing/index.ts +6 -0
  468. package/src/containers/TracePanel/testing/simulated-agent.ts +114 -0
  469. package/src/containers/TracePanel/testing/snapshot-playback.ts +45 -0
  470. package/src/containers/TriggerStatus/TriggerStatus.tsx +19 -34
  471. package/src/containers/TriggerStatus/index.ts +1 -1
  472. package/src/containers/index.ts +6 -5
  473. package/src/{queue-logger.ts → feed-logger.ts} +45 -24
  474. package/src/hooks/index.ts +2 -0
  475. package/src/hooks/useBlueprintRegistry.ts +13 -7
  476. package/src/hooks/useChatKeymap.ts +52 -0
  477. package/src/hooks/useChatProcessor.ts +12 -12
  478. package/src/hooks/useChatServices.ts +1 -1
  479. package/src/hooks/useChatToolbarActions.ts +86 -88
  480. package/src/hooks/useContextBinder.ts +4 -4
  481. package/src/hooks/useContextObjects.ts +2 -2
  482. package/src/hooks/useDebug.ts +38 -0
  483. package/src/index.ts +0 -5
  484. package/src/meta.ts +1 -1
  485. package/src/operations/create-chat.ts +21 -17
  486. package/src/operations/ensure-companion-chat.ts +49 -47
  487. package/src/operations/index.ts +1 -3
  488. package/src/operations/on-create-space.ts +4 -4
  489. package/src/operations/prompt.test.ts +77 -0
  490. package/src/operations/resolve-navigation-targets.ts +3 -3
  491. package/src/operations/run-prompt-in-new-chat.ts +86 -86
  492. package/src/operations/set-current-chat.ts +4 -5
  493. package/src/operations/update-chat-name.ts +4 -4
  494. package/src/plugin.ts +11 -0
  495. package/src/processor/presets.ts +11 -3
  496. package/src/processor/processor.test.ts +4 -4
  497. package/src/processor/processor.ts +54 -38
  498. package/src/testing/data/trace-timeline.dx.json +4657 -0
  499. package/src/testing/index.ts +1 -0
  500. package/src/testing/test-generator.test.ts +70 -0
  501. package/src/testing/test-generator.ts +213 -191
  502. package/src/testing/test-sequence.ts +3 -3
  503. package/src/testing/test-trace.ts +20 -0
  504. package/src/testing/trace-timeline.conversations.json +1 -0
  505. package/src/testing/trace-timeline.test.ts +250 -0
  506. package/src/testing.ts +7 -0
  507. package/src/translations.ts +74 -49
  508. package/src/types/Assistant.ts +13 -1
  509. package/src/types/AssistantCapabilities.ts +35 -0
  510. package/src/types/AssistantEvents.ts +11 -0
  511. package/src/{operations/definitions.ts → types/AssistantOperation.ts} +5 -4
  512. package/src/types/Settings.ts +63 -8
  513. package/src/types/index.ts +5 -3
  514. package/src/types/service.ts +1 -1
  515. package/src/util/suggestions.test.ts +52 -0
  516. package/src/util/suggestions.ts +42 -0
  517. package/dist/lib/browser/AssistantSettings-7QMO3LGF.mjs +0 -97
  518. package/dist/lib/browser/AssistantSettings-7QMO3LGF.mjs.map +0 -7
  519. package/dist/lib/browser/chunk-ATHYBVGN.mjs +0 -176
  520. package/dist/lib/browser/chunk-ATHYBVGN.mjs.map +0 -7
  521. package/dist/lib/browser/chunk-EZRS3J25.mjs.map +0 -7
  522. package/dist/lib/browser/chunk-RUV2WOQH.mjs +0 -154
  523. package/dist/lib/browser/chunk-RUV2WOQH.mjs.map +0 -7
  524. package/dist/lib/browser/create-chat-DF5TG5XC.mjs.map +0 -7
  525. package/dist/lib/browser/ensure-companion-chat-FR4AWZ2P.mjs.map +0 -7
  526. package/dist/lib/browser/index.mjs +0 -3122
  527. package/dist/lib/browser/index.mjs.map +0 -7
  528. package/dist/lib/browser/meta.json +0 -1
  529. package/dist/lib/browser/on-create-space-54RNX5JI.mjs.map +0 -7
  530. package/dist/lib/browser/operations/index.mjs +0 -13
  531. package/dist/lib/browser/operations/index.mjs.map +0 -7
  532. package/dist/lib/browser/resolve-navigation-targets-NZOD66NY.mjs.map +0 -7
  533. package/dist/lib/browser/run-prompt-in-new-chat-4YQ37XIS.mjs.map +0 -7
  534. package/dist/lib/browser/set-current-chat-WJI3WAVM.mjs.map +0 -7
  535. package/dist/lib/browser/types/index.mjs +0 -20
  536. package/dist/lib/browser/update-chat-name-3Y36KFAS.mjs.map +0 -7
  537. package/dist/lib/node-esm/AssistantSettings-UVUTKO7E.mjs +0 -98
  538. package/dist/lib/node-esm/AssistantSettings-UVUTKO7E.mjs.map +0 -7
  539. package/dist/lib/node-esm/blueprints/index.mjs +0 -9
  540. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  541. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs +0 -32
  542. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs.map +0 -7
  543. package/dist/lib/node-esm/chunk-PXAJSTGZ.mjs +0 -177
  544. package/dist/lib/node-esm/chunk-PXAJSTGZ.mjs.map +0 -7
  545. package/dist/lib/node-esm/chunk-PY4X6FJT.mjs +0 -155
  546. package/dist/lib/node-esm/chunk-PY4X6FJT.mjs.map +0 -7
  547. package/dist/lib/node-esm/create-chat-RAV7IX2S.mjs +0 -83
  548. package/dist/lib/node-esm/create-chat-RAV7IX2S.mjs.map +0 -7
  549. package/dist/lib/node-esm/ensure-companion-chat-BLP7NT32.mjs +0 -66
  550. package/dist/lib/node-esm/ensure-companion-chat-BLP7NT32.mjs.map +0 -7
  551. package/dist/lib/node-esm/index.mjs +0 -3123
  552. package/dist/lib/node-esm/index.mjs.map +0 -7
  553. package/dist/lib/node-esm/meta.json +0 -1
  554. package/dist/lib/node-esm/on-create-space-YRPZ6HZY.mjs +0 -23
  555. package/dist/lib/node-esm/on-create-space-YRPZ6HZY.mjs.map +0 -7
  556. package/dist/lib/node-esm/operations/index.mjs +0 -14
  557. package/dist/lib/node-esm/operations/index.mjs.map +0 -7
  558. package/dist/lib/node-esm/resolve-navigation-targets-3PPK7XLH.mjs +0 -23
  559. package/dist/lib/node-esm/resolve-navigation-targets-3PPK7XLH.mjs.map +0 -7
  560. package/dist/lib/node-esm/run-prompt-in-new-chat-2IJBSDTM.mjs +0 -137
  561. package/dist/lib/node-esm/run-prompt-in-new-chat-2IJBSDTM.mjs.map +0 -7
  562. package/dist/lib/node-esm/set-current-chat-KBMMZULR.mjs +0 -55
  563. package/dist/lib/node-esm/set-current-chat-KBMMZULR.mjs.map +0 -7
  564. package/dist/lib/node-esm/types/index.mjs +0 -21
  565. package/dist/lib/node-esm/update-chat-name-HM2P4NSI.mjs +0 -72
  566. package/dist/lib/node-esm/update-chat-name-HM2P4NSI.mjs.map +0 -7
  567. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +0 -10
  568. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +0 -1
  569. package/dist/types/src/components/ChatProgress/index.d.ts +0 -2
  570. package/dist/types/src/components/ChatProgress/index.d.ts.map +0 -1
  571. package/dist/types/src/components/ChatThread/ChatStream.stories.d.ts +0 -530
  572. package/dist/types/src/components/ChatThread/ChatStream.stories.d.ts.map +0 -1
  573. package/dist/types/src/components/ChatThread/widgets/PromptWidget.d.ts +0 -14
  574. package/dist/types/src/components/ChatThread/widgets/PromptWidget.d.ts.map +0 -1
  575. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +0 -12
  576. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +0 -1
  577. package/dist/types/src/components/Typewriter/Typewriter.d.ts +0 -11
  578. package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +0 -1
  579. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts +0 -7
  580. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +0 -1
  581. package/dist/types/src/components/Typewriter/assistant-extension.d.ts +0 -5
  582. package/dist/types/src/components/Typewriter/assistant-extension.d.ts.map +0 -1
  583. package/dist/types/src/components/Typewriter/index.d.ts +0 -2
  584. package/dist/types/src/components/Typewriter/index.d.ts.map +0 -1
  585. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +0 -1
  586. package/dist/types/src/containers/ChatContainer/index.d.ts +0 -2
  587. package/dist/types/src/containers/ChatContainer/index.d.ts.map +0 -1
  588. package/dist/types/src/containers/ProjectArticle/ProjectArticle.d.ts +0 -6
  589. package/dist/types/src/containers/ProjectArticle/ProjectArticle.d.ts.map +0 -1
  590. package/dist/types/src/containers/ProjectArticle/index.d.ts +0 -2
  591. package/dist/types/src/containers/ProjectSettings/ProjectSettings.d.ts +0 -6
  592. package/dist/types/src/containers/ProjectSettings/ProjectSettings.d.ts.map +0 -1
  593. package/dist/types/src/containers/ProjectSettings/index.d.ts +0 -2
  594. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +0 -6
  595. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +0 -1
  596. package/dist/types/src/containers/PromptArticle/index.d.ts +0 -2
  597. package/dist/types/src/containers/PromptArticle/index.d.ts.map +0 -1
  598. package/dist/types/src/containers/PromptList/PromptList.d.ts +0 -6
  599. package/dist/types/src/containers/PromptList/PromptList.d.ts.map +0 -1
  600. package/dist/types/src/containers/PromptList/PromptList.stories.d.ts +0 -523
  601. package/dist/types/src/containers/PromptList/PromptList.stories.d.ts.map +0 -1
  602. package/dist/types/src/containers/PromptList/index.d.ts +0 -2
  603. package/dist/types/src/containers/PromptList/index.d.ts.map +0 -1
  604. package/dist/types/src/operations/definitions.d.ts.map +0 -1
  605. package/dist/types/src/queue-logger.d.ts +0 -11
  606. package/dist/types/src/queue-logger.d.ts.map +0 -1
  607. package/dist/types/src/types/capabilities.d.ts +0 -44
  608. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  609. package/dist/types/src/types/defs.d.ts +0 -2
  610. package/dist/types/src/types/defs.d.ts.map +0 -1
  611. package/dist/types/src/types/events.d.ts +0 -5
  612. package/dist/types/src/types/events.d.ts.map +0 -1
  613. package/src/AssistantPlugin.tsx +0 -235
  614. package/src/blueprints/assistant/blueprint.conversations.json +0 -1
  615. package/src/components/ChatProgress/ChatProgress.tsx +0 -56
  616. package/src/components/ChatProgress/index.ts +0 -5
  617. package/src/components/ChatThread/ChatStream.stories.tsx +0 -168
  618. package/src/components/ChatThread/widgets/PromptWidget.ts +0 -28
  619. package/src/components/Typewriter/AssistantToolbar.tsx +0 -161
  620. package/src/components/Typewriter/Typewriter.stories.tsx +0 -86
  621. package/src/components/Typewriter/Typewriter.tsx +0 -50
  622. package/src/components/Typewriter/assistant-extension.tsx +0 -141
  623. package/src/containers/ChatContainer/index.ts +0 -5
  624. package/src/containers/ProjectArticle/ProjectArticle.tsx +0 -131
  625. package/src/containers/ProjectArticle/index.ts +0 -5
  626. package/src/containers/ProjectSettings/ProjectSettings.tsx +0 -139
  627. package/src/containers/ProjectSettings/index.ts +0 -5
  628. package/src/containers/PromptArticle/PromptArticle.tsx +0 -59
  629. package/src/containers/PromptArticle/index.ts +0 -5
  630. package/src/containers/PromptList/index.ts +0 -5
  631. package/src/types/capabilities.ts +0 -35
  632. package/src/types/defs.ts +0 -5
  633. package/src/types/events.ts +0 -11
  634. /package/dist/lib/{browser/blueprints/index.mjs.map → neutral/AssistantPlugin.mjs.map} +0 -0
  635. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/ChatArticle-WVAFZPVI.mjs.map} +0 -0
  636. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  637. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  638. /package/dist/lib/{node-esm/blueprints/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  639. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  640. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
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/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/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 { 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 {\n FallbackWidget,\n PromptWidget,\n ReasoningWidget,\n ReferenceWidget,\n SelectWidget,\n SuggestionWidget,\n StatsWidget,\n SummaryWidget,\n ToolWidget,\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\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: ToolWidget,\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 context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, {\n blocks: [block],\n });\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 context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, ({ blocks = [] } = { blocks: [] }) => ({\n blocks: [...blocks, block],\n }));\n break;\n }\n\n case 'stats': {\n return renderXMLBlock('stats', { content: ContentBlock.createStatsMessage(block) });\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 default: {\n // TODO(burdon): Needs stable ID.\n return `<json id=\"${message.id}\">\\n${JSON.stringify(block)}\\n</json>`;\n }\n }\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 = (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 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 classNames='rounded-xs'>\n <TogglePanel.Header classNames='bg-group-surface'>{_tag}</TogglePanel.Header>\n <TogglePanel.Content classNames='bg-modal-surface'>\n <Json.Data classNames='p-2! text-sm' data={props} />\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 return Domino.of('div')\n .classNames('pt-2 pb-4')\n .append(\n Domino.of('div')\n .classNames('relative overflow-hidden p-px rounded-sm border border-subdued-separator')\n .append(\n Domino.of('div')\n .classNames('relative z-10 bg-base-surface rounded-sm text-sm text-description p-2')\n .attributes({ 'data-reasoning-text': '' })\n .text(this.text),\n Domino.of('div').attributes({ 'data-id': this.#pos }),\n ),\n ).root;\n }\n\n override updateDOM(dom: HTMLElement) {\n // Update only the text leaf; `dom` may be wrapped in an outer shell, and the trail host is a\n // sibling of the text node inside the bordered container — setting `textContent` on the wrong\n // ancestor would remove `[data-id]`.\n dom.querySelector<HTMLElement>('[data-reasoning-text]')?.replaceChildren(this.text);\n\n 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 { 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 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 classNames='w-full rounded-xs border border-subdued-separator' 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 classNames='grid grid-cols-[32px_1fr]'>\n <NumericTabs ref={tabsRef} classNames='p-1' length={items.length} selected={selected} onSelect={handleSelect} />\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.Content>\n </TogglePanel.Root>\n );\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\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 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._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 void this._document.setContent(content);\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-0' as const,\n },\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-sonnet-4-0' 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--atom--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, Project } 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 [Project.Project.typename]: {\n 'typename.label': 'Project',\n 'typename.label_zero': 'Projects',\n 'typename.label_one': 'Project',\n 'typename.label_other': 'Projects',\n 'object-name.placeholder': 'New project',\n 'add-object.label': 'Add project',\n 'rename-object.label': 'Rename project',\n 'delete-object.label': 'Delete project',\n 'object-deleted.label': 'Project 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 '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\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.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 '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 // ProjectSettings\n 'instructions.label': 'Instructions',\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 { Chat, Memory, Plan, Project, ProjectBlueprint, ResearchGraph } from '@dxos/assistant-toolkit';\nimport { Blueprint, Prompt } from '@dxos/blueprints';\nimport { Sequence } from '@dxos/conductor';\nimport { Annotation, 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(Project.Project),\n metadata: {\n icon: Annotation.IconAnnotation.get(Project.Project).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Project.Project).pipe(Option.getOrThrow).hue ?? 'white',\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const object = yield* Project.makeInitialized(\n {\n name: 'New Project',\n spec: 'Not specified yet',\n },\n ProjectBlueprint.make(),\n ).pipe(withComputeRuntime(options.db.spaceId));\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 HasSubject.HasSubject,\n Prompt.Prompt,\n ResearchGraph.ResearchGraph,\n Project.Project,\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", "log", "ContentBlock", "getXmlTextChild", "React", "TogglePanel", "Json", "FallbackWidget", "_tag", "props", "React", "TogglePanel", "Root", "classNames", "Header", "Content", "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", "Domino", "of", "classNames", "append", "attributes", "root", "updateDOM", "dom", "querySelector", "replaceChildren", "trailHost", "childElementCount", "createTrailLayers", "destroy", "_dom", "previous", "trailRemovalTimers", "get", "clearTimeout", "timerId", "setTimeout", "delete", "remove", "TRAIL_REMOVAL_DELAY_MS", "set", "active", "trail", "Map", "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", "current", "focus", "handleSelect", "index", "TogglePanel", "Root", "classNames", "Header", "TextCrawl", "key", "lines", "item", "autoAdvance", "greedy", "Content", "NumericTabs", "ref", "onSelect", "Json", "Data", "data", "replacer", "maxDepth", "maxArrayLen", "maxStringLen", "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", "summary", "Component", "SummaryWidget", "toolCall", "ToolWidget", "toolResult", "FallbackWidget", "toolkit", "json", "blockToMarkdown", "context", "message", "str", "blockToMarkdownImpl", "pending", "log", "JSON", "stringify", "sender", "role", "trim", "dxn", "toString", "getObjectLabel", "join", "updateWidget", "toolCallId", "blocks", "renderXMLBlock", "content", "ContentBlock", "createStatsMessage", "reasoningText", "redactedText", "id", "tag", "opts", "replace", "attributes", "log", "MessageThreadContext", "_widgetState", "updateWidget", "id", "value", "getObjectLabel", "_id", "MessageSyncer", "_initialMessageId", "_currentMessageIndex", "_currentBlockIndex", "_currentBlockContent", "_context", "_document", "_renderer", "context", "reset", "undefined", "setContent", "append", "messages", "flush", "length", "buffer", "processBlocks", "content", "push", "join", "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", "Project", "Blueprint", "Prompt", "Sequence", "Type", "meta", "translations", "Blueprint", "typename", "Type", "getTypename", "Prompt", "Sequence", "Chat", "Project", "meta", "id", "Effect", "Option", "ActivationEvent", "ActivationEvents", "Capability", "Plugin", "AppActivationEvents", "AppPlugin", "Chat", "Memory", "Plan", "Project", "ProjectBlueprint", "ResearchGraph", "Blueprint", "Prompt", "Sequence", "Annotation", "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", "Project", "makeInitialized", "spec", "ProjectBlueprint", "withComputeRuntime", "spaceId", "addOperationHandlerModule", "OperationHandler", "addSchemaModule", "schema", "CompanionTo", "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
- }