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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/dist/lib/browser/AssistantSettings-GG52BLKS.mjs +40 -0
  2. package/dist/lib/browser/AssistantSettings-GG52BLKS.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +26 -3
  4. package/dist/lib/browser/blueprints/index.mjs.map +4 -4
  5. package/dist/lib/browser/{chunk-ATHYBVGN.mjs → chunk-DVOOFAWU.mjs} +4 -5
  6. package/dist/lib/browser/chunk-DVOOFAWU.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-M55MBYG7.mjs +932 -0
  8. package/dist/lib/browser/chunk-M55MBYG7.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-RUV2WOQH.mjs → chunk-SEMCG4ZK.mjs} +58 -17
  10. package/dist/lib/browser/chunk-SEMCG4ZK.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-VK53MITK.mjs +2300 -0
  12. package/dist/lib/browser/chunk-VK53MITK.mjs.map +7 -0
  13. package/dist/lib/browser/cli/index.mjs +73 -0
  14. package/dist/lib/browser/cli/index.mjs.map +7 -0
  15. package/dist/lib/browser/components/index.mjs +20 -0
  16. package/dist/lib/browser/components/index.mjs.map +7 -0
  17. package/dist/lib/browser/{create-chat-LBZHGVSN.mjs → create-chat-E2ZLVTLP.mjs} +4 -13
  18. package/dist/lib/browser/create-chat-E2ZLVTLP.mjs.map +7 -0
  19. package/dist/lib/browser/{ensure-companion-chat-FR4AWZ2P.mjs → ensure-companion-chat-7GDMXSQW.mjs} +4 -4
  20. package/dist/lib/browser/ensure-companion-chat-7GDMXSQW.mjs.map +7 -0
  21. package/dist/lib/browser/hooks/index.mjs +39 -0
  22. package/dist/lib/browser/hooks/index.mjs.map +7 -0
  23. package/dist/lib/browser/index.mjs +43 -3233
  24. package/dist/lib/browser/index.mjs.map +4 -4
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/{on-create-space-54RNX5JI.mjs → on-create-space-4J3KTNAJ.mjs} +3 -3
  27. package/dist/lib/browser/{on-create-space-54RNX5JI.mjs.map → on-create-space-4J3KTNAJ.mjs.map} +1 -1
  28. package/dist/lib/browser/operations/index.mjs +3 -3
  29. package/dist/lib/browser/operations/index.mjs.map +3 -3
  30. package/dist/lib/browser/{resolve-navigation-targets-NZOD66NY.mjs → resolve-navigation-targets-3ZPQE6SZ.mjs} +3 -3
  31. package/dist/lib/browser/{resolve-navigation-targets-NZOD66NY.mjs.map → resolve-navigation-targets-3ZPQE6SZ.mjs.map} +1 -1
  32. package/dist/lib/browser/{run-prompt-in-new-chat-4YQ37XIS.mjs → run-prompt-in-new-chat-AA3KPBDN.mjs} +9 -39
  33. package/dist/lib/browser/run-prompt-in-new-chat-AA3KPBDN.mjs.map +7 -0
  34. package/dist/lib/browser/{set-current-chat-WJI3WAVM.mjs → set-current-chat-P4VHI3YF.mjs} +4 -4
  35. package/dist/lib/browser/set-current-chat-P4VHI3YF.mjs.map +7 -0
  36. package/dist/lib/browser/translations.mjs +172 -0
  37. package/dist/lib/browser/translations.mjs.map +7 -0
  38. package/dist/lib/browser/types/index.mjs +1 -3
  39. package/dist/lib/browser/{update-chat-name-3Y36KFAS.mjs → update-chat-name-VWKNUON7.mjs} +7 -22
  40. package/dist/lib/browser/update-chat-name-VWKNUON7.mjs.map +7 -0
  41. package/dist/lib/node-esm/AssistantSettings-23A5IMHS.mjs +41 -0
  42. package/dist/lib/node-esm/AssistantSettings-23A5IMHS.mjs.map +7 -0
  43. package/dist/lib/node-esm/blueprints/index.mjs +26 -3
  44. package/dist/lib/node-esm/blueprints/index.mjs.map +4 -4
  45. package/dist/lib/node-esm/chunk-FWC3ZGPH.mjs +933 -0
  46. package/dist/lib/node-esm/chunk-FWC3ZGPH.mjs.map +7 -0
  47. package/dist/lib/node-esm/chunk-JKEB3NFZ.mjs +2302 -0
  48. package/dist/lib/node-esm/chunk-JKEB3NFZ.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-PXAJSTGZ.mjs → chunk-MBDVPB4V.mjs} +4 -5
  50. package/dist/lib/node-esm/chunk-MBDVPB4V.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-PY4X6FJT.mjs → chunk-XAFVSEUJ.mjs} +58 -17
  52. package/dist/lib/node-esm/chunk-XAFVSEUJ.mjs.map +7 -0
  53. package/dist/lib/node-esm/cli/index.mjs +74 -0
  54. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  55. package/dist/lib/node-esm/components/index.mjs +21 -0
  56. package/dist/lib/node-esm/components/index.mjs.map +7 -0
  57. package/dist/lib/node-esm/{create-chat-3BEG4R6J.mjs → create-chat-UQQ3542N.mjs} +4 -13
  58. package/dist/lib/node-esm/create-chat-UQQ3542N.mjs.map +7 -0
  59. package/dist/lib/node-esm/{ensure-companion-chat-BLP7NT32.mjs → ensure-companion-chat-LVCPD4DJ.mjs} +4 -4
  60. package/dist/lib/node-esm/ensure-companion-chat-LVCPD4DJ.mjs.map +7 -0
  61. package/dist/lib/node-esm/hooks/index.mjs +40 -0
  62. package/dist/lib/node-esm/hooks/index.mjs.map +7 -0
  63. package/dist/lib/node-esm/index.mjs +43 -3233
  64. package/dist/lib/node-esm/index.mjs.map +4 -4
  65. package/dist/lib/node-esm/meta.json +1 -1
  66. package/dist/lib/node-esm/{on-create-space-YRPZ6HZY.mjs → on-create-space-M63UBTTT.mjs} +3 -3
  67. package/dist/lib/node-esm/{on-create-space-YRPZ6HZY.mjs.map → on-create-space-M63UBTTT.mjs.map} +1 -1
  68. package/dist/lib/node-esm/operations/index.mjs +3 -3
  69. package/dist/lib/node-esm/operations/index.mjs.map +3 -3
  70. package/dist/lib/node-esm/{resolve-navigation-targets-3PPK7XLH.mjs → resolve-navigation-targets-HO77CAFT.mjs} +3 -3
  71. package/dist/lib/node-esm/{resolve-navigation-targets-3PPK7XLH.mjs.map → resolve-navigation-targets-HO77CAFT.mjs.map} +1 -1
  72. package/dist/lib/node-esm/{run-prompt-in-new-chat-2IJBSDTM.mjs → run-prompt-in-new-chat-RIRYYYPK.mjs} +9 -39
  73. package/dist/lib/node-esm/run-prompt-in-new-chat-RIRYYYPK.mjs.map +7 -0
  74. package/dist/lib/node-esm/{set-current-chat-KBMMZULR.mjs → set-current-chat-Z7GJ52VX.mjs} +4 -4
  75. package/dist/lib/node-esm/set-current-chat-Z7GJ52VX.mjs.map +7 -0
  76. package/dist/lib/node-esm/translations.mjs +173 -0
  77. package/dist/lib/node-esm/translations.mjs.map +7 -0
  78. package/dist/lib/node-esm/types/index.mjs +1 -3
  79. package/dist/lib/node-esm/{update-chat-name-HM2P4NSI.mjs → update-chat-name-GV4HX32Z.mjs} +7 -22
  80. package/dist/lib/node-esm/update-chat-name-GV4HX32Z.mjs.map +7 -0
  81. package/dist/types/src/AssistantPlugin.d.ts +1 -0
  82. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  83. package/dist/types/src/AssistantPlugin.node.d.ts +4 -0
  84. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -0
  85. package/dist/types/src/AssistantPlugin.test.d.ts +2 -0
  86. package/dist/types/src/AssistantPlugin.test.d.ts.map +1 -0
  87. package/dist/types/src/blueprints/assistant/blueprint.d.ts +2 -2
  88. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/index.d.ts +5 -17
  95. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/local-model-resolver.d.ts +6 -3
  97. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  99. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/migrations.d.ts +1 -1
  101. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  103. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/settings.d.ts +1 -13
  106. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  109. package/dist/types/src/cli/index.d.ts +2 -0
  110. package/dist/types/src/cli/index.d.ts.map +1 -0
  111. package/dist/types/src/cli/plugin.d.ts +10 -0
  112. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  113. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +1 -1
  114. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  115. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +1 -539
  116. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
  117. package/dist/types/src/components/Chat/Chat.d.ts +32 -42
  118. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  119. package/dist/types/src/components/Chat/context.d.ts +29 -0
  120. package/dist/types/src/components/Chat/context.d.ts.map +1 -0
  121. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  122. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts +12 -0
  123. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts.map +1 -0
  124. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +6 -2
  125. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  126. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +19 -0
  127. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -0
  128. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  129. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +28 -0
  130. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -0
  131. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  132. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts +20 -0
  133. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts.map +1 -0
  134. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  135. package/dist/types/src/components/ChatPrompt/index.d.ts +3 -0
  136. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  137. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts +14 -0
  138. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -0
  139. package/dist/types/src/components/ChatThread/ChatThread.d.ts +6 -3
  140. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  141. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +4 -541
  142. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  144. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +9 -540
  145. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -1
  146. package/dist/types/src/components/ChatThread/registry.d.ts +18 -0
  147. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  148. package/dist/types/src/components/ChatThread/sync.d.ts +40 -14
  149. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  150. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -1
  151. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +4 -4
  152. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -1
  153. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -1
  154. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -1
  155. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -1
  156. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -1
  157. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -1
  158. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -1
  159. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -1
  160. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -1
  161. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -1
  162. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts +1 -539
  163. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -1
  164. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +5 -0
  165. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -0
  166. package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -2
  167. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
  168. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +2 -1
  169. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  170. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +0 -1
  171. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -1
  172. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -2
  173. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  174. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +1 -539
  175. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  176. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +3 -3
  177. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  178. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +1 -539
  179. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  180. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -1
  181. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -1
  182. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +4 -4
  183. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  184. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -3
  185. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  186. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -539
  187. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  188. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +2 -2
  189. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -1
  190. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +7 -540
  191. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
  192. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +1 -1
  193. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -1
  194. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts +1 -539
  195. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts.map +1 -1
  196. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +1 -1
  197. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -1
  198. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +1 -1
  199. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -1
  200. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  201. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +6 -0
  202. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
  203. package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
  204. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +1 -0
  205. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +6 -0
  206. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +1 -0
  207. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +21 -0
  208. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +1 -0
  209. package/dist/types/src/containers/RoutineList/index.d.ts +2 -0
  210. package/dist/types/src/containers/RoutineList/index.d.ts.map +1 -0
  211. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +6 -4
  212. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -1
  213. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts +13 -0
  214. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -0
  215. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +1 -1
  216. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -1
  217. package/dist/types/src/containers/TracePanel/execution-graph.d.ts +97 -0
  218. package/dist/types/src/containers/TracePanel/execution-graph.d.ts.map +1 -0
  219. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts +2 -0
  220. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts.map +1 -0
  221. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -1
  222. package/dist/types/src/containers/TracePanel/testing/index.d.ts +3 -0
  223. package/dist/types/src/containers/TracePanel/testing/index.d.ts.map +1 -0
  224. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +14 -0
  225. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -0
  226. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts +12 -0
  227. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts.map +1 -0
  228. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +3 -2
  229. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  230. package/dist/types/src/containers/TriggerStatus/index.d.ts +1 -1
  231. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -1
  232. package/dist/types/src/containers/index.d.ts +2 -2
  233. package/dist/types/src/containers/index.d.ts.map +1 -1
  234. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
  235. package/dist/types/src/hooks/index.d.ts +2 -0
  236. package/dist/types/src/hooks/index.d.ts.map +1 -1
  237. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +1 -1
  238. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  239. package/dist/types/src/hooks/useChatKeymap.d.ts +12 -0
  240. package/dist/types/src/hooks/useChatKeymap.d.ts.map +1 -0
  241. package/dist/types/src/hooks/useChatProcessor.d.ts +1 -1
  242. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  243. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  244. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
  245. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  246. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  247. package/dist/types/src/hooks/useDebug.d.ts +10 -0
  248. package/dist/types/src/hooks/useDebug.d.ts.map +1 -0
  249. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
  250. package/dist/types/src/hooks/useFlush.d.ts +1 -1
  251. package/dist/types/src/hooks/useFlush.d.ts.map +1 -1
  252. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  253. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  254. package/dist/types/src/index.d.ts +3 -5
  255. package/dist/types/src/index.d.ts.map +1 -1
  256. package/dist/types/src/operations/create-chat.d.ts +1 -1
  257. package/dist/types/src/operations/create-chat.d.ts.map +1 -1
  258. package/dist/types/src/operations/definitions.d.ts +24 -19
  259. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  260. package/dist/types/src/operations/ensure-companion-chat.d.ts +1 -1
  261. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -1
  262. package/dist/types/src/operations/index.d.ts +1 -1
  263. package/dist/types/src/operations/index.d.ts.map +1 -1
  264. package/dist/types/src/operations/on-create-space.d.ts +1 -1
  265. package/dist/types/src/operations/on-create-space.d.ts.map +1 -1
  266. package/dist/types/src/operations/prompt.test.d.ts +2 -0
  267. package/dist/types/src/operations/prompt.test.d.ts.map +1 -0
  268. package/dist/types/src/operations/resolve-navigation-targets.d.ts +1 -1
  269. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
  270. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +1 -1
  271. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
  272. package/dist/types/src/operations/set-current-chat.d.ts +1 -1
  273. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -1
  274. package/dist/types/src/operations/update-chat-name.d.ts +1 -1
  275. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -1
  276. package/dist/types/src/processor/presets.d.ts +1 -1
  277. package/dist/types/src/processor/presets.d.ts.map +1 -1
  278. package/dist/types/src/processor/processor.d.ts +25 -7
  279. package/dist/types/src/processor/processor.d.ts.map +1 -1
  280. package/dist/types/src/queue-logger.d.ts.map +1 -1
  281. package/dist/types/src/testing/index.d.ts +1 -0
  282. package/dist/types/src/testing/index.d.ts.map +1 -1
  283. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  284. package/dist/types/src/testing/test-generator.test.d.ts +2 -0
  285. package/dist/types/src/testing/test-generator.test.d.ts.map +1 -0
  286. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  287. package/dist/types/src/testing/test-trace.d.ts +5 -0
  288. package/dist/types/src/testing/test-trace.d.ts.map +1 -0
  289. package/dist/types/src/testing/trace-timeline.test.d.ts +2 -0
  290. package/dist/types/src/testing/trace-timeline.test.d.ts.map +1 -0
  291. package/dist/types/src/translations.d.ts +2 -539
  292. package/dist/types/src/translations.d.ts.map +1 -1
  293. package/dist/types/src/types/Assistant.d.ts +22 -6
  294. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  295. package/dist/types/src/types/Settings.d.ts +22 -6
  296. package/dist/types/src/types/Settings.d.ts.map +1 -1
  297. package/dist/types/src/types/capabilities.d.ts +1 -13
  298. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  299. package/dist/types/src/types/events.d.ts.map +1 -1
  300. package/dist/types/src/types/index.d.ts +0 -1
  301. package/dist/types/src/types/index.d.ts.map +1 -1
  302. package/dist/types/src/types/service.d.ts +1 -1
  303. package/dist/types/src/types/service.d.ts.map +1 -1
  304. package/dist/types/tsconfig.tsbuildinfo +1 -1
  305. package/package.json +113 -99
  306. package/src/AssistantPlugin.node.ts +125 -0
  307. package/src/AssistantPlugin.test.ts +35 -0
  308. package/src/AssistantPlugin.tsx +22 -16
  309. package/src/blueprints/assistant/blueprint.test.ts +3 -3
  310. package/src/blueprints/assistant/blueprint.ts +3 -3
  311. package/src/capabilities/app-graph-builder.ts +5 -61
  312. package/src/capabilities/blueprint-definition.ts +2 -4
  313. package/src/capabilities/index.ts +2 -1
  314. package/src/capabilities/local-model-resolver.ts +14 -4
  315. package/src/capabilities/markdown.ts +1 -1
  316. package/src/capabilities/migrations.ts +1 -7
  317. package/src/capabilities/operation-handler.ts +1 -1
  318. package/src/capabilities/react-surface.tsx +38 -28
  319. package/src/capabilities/toolkit.ts +2 -2
  320. package/src/{components/Typewriter → cli}/index.ts +1 -1
  321. package/src/cli/plugin.ts +83 -0
  322. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +3 -2
  323. package/src/components/AssistantSettings/AssistantSettings.tsx +22 -111
  324. package/src/components/Chat/Chat.tsx +82 -286
  325. package/src/components/Chat/context.ts +39 -0
  326. package/src/components/ChatPrompt/ChatActions.tsx +10 -10
  327. package/src/components/ChatPrompt/ChatMcpErrors.tsx +50 -0
  328. package/src/components/ChatPrompt/ChatOptions.stories.tsx +136 -0
  329. package/src/components/ChatPrompt/ChatOptions.tsx +229 -37
  330. package/src/components/ChatPrompt/ChatPrompt.tsx +182 -0
  331. package/src/components/ChatPrompt/ChatReferences.tsx +1 -1
  332. package/src/components/ChatPrompt/ChatStatus.tsx +123 -0
  333. package/src/components/ChatPrompt/index.ts +3 -0
  334. package/src/components/ChatThread/Anchor.stories.tsx +95 -0
  335. package/src/components/ChatThread/ChatThread.stories.tsx +39 -29
  336. package/src/components/ChatThread/ChatThread.tsx +36 -21
  337. package/src/components/ChatThread/DEBUG.md +41 -0
  338. package/src/components/ChatThread/MarkdownStream.stories.tsx +43 -5
  339. package/src/components/ChatThread/registry.tsx +72 -24
  340. package/src/components/ChatThread/sync.test.ts +175 -15
  341. package/src/components/ChatThread/sync.ts +87 -102
  342. package/src/components/ChatThread/testing/reasoning.md +25 -0
  343. package/src/components/ChatThread/widgets/FallbackWidget.tsx +2 -2
  344. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +1 -1
  345. package/src/components/ChatThread/widgets/ReasoningWidget.ts +6 -6
  346. package/src/components/ChatThread/widgets/ReferenceWidget.ts +3 -1
  347. package/src/components/ChatThread/widgets/SelectWidget.ts +3 -1
  348. package/src/components/ChatThread/widgets/StatsWidget.ts +3 -1
  349. package/src/components/ChatThread/widgets/StatusWidget.ts +3 -3
  350. package/src/components/ChatThread/widgets/SuggestionWidget.ts +1 -1
  351. package/src/components/ChatThread/widgets/SummaryWidget.tsx +3 -2
  352. package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +3 -2
  353. package/src/components/ChatThread/widgets/ToolWidget.tsx +2 -2
  354. package/src/components/ChatThread/widgets/defaults.ts +8 -0
  355. package/src/components/ChatThread/widgets/index.ts +1 -2
  356. package/src/components/ProcessTree/ProcessTree.stories.tsx +12 -38
  357. package/src/components/ProcessTree/ProcessTree.tsx +70 -37
  358. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +3 -2
  359. package/src/components/TemplateEditor/TemplateEditor.tsx +5 -5
  360. package/src/components/TemplateEditor/TemplateForm.stories.tsx +4 -3
  361. package/src/components/TemplateEditor/TemplateForm.tsx +3 -3
  362. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +1 -1
  363. package/src/components/ToolBlock/ToolBlock.tsx +2 -2
  364. package/src/components/Toolbox/Toolbox.stories.tsx +2 -1
  365. package/src/components/Toolbox/Toolbox.tsx +2 -2
  366. package/src/containers/AgentArticle/AgentArticle.stories.tsx +40 -25
  367. package/src/containers/AgentArticle/AgentArticle.tsx +96 -53
  368. package/src/containers/AgentProperties/AgentProperties.stories.tsx +14 -4
  369. package/src/containers/AgentProperties/AgentProperties.tsx +46 -88
  370. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +1 -1
  371. package/src/containers/ChatCompanion/ChatCompanion.tsx +1 -1
  372. package/src/containers/ChatContainer/ChatContainer.tsx +16 -6
  373. package/src/containers/ChatDialog/ChatDialog.tsx +3 -9
  374. package/src/containers/{PromptArticle/PromptArticle.tsx → RoutineArticle/RoutineArticle.tsx} +4 -4
  375. package/src/containers/RoutineArticle/index.ts +5 -0
  376. package/src/containers/{PromptList/PromptList.stories.tsx → RoutineList/RoutineList.stories.tsx} +11 -10
  377. package/src/containers/{PromptList/PromptList.tsx → RoutineList/RoutineList.tsx} +6 -5
  378. package/src/containers/RoutineList/index.ts +5 -0
  379. package/src/containers/TracePanel/TracePanel.stories.tsx +278 -0
  380. package/src/containers/TracePanel/TracePanel.tsx +95 -318
  381. package/src/containers/TracePanel/dxn-extractor.test.ts +7 -7
  382. package/src/containers/TracePanel/dxn-extractor.ts +4 -4
  383. package/src/containers/TracePanel/execution-graph.test.ts +382 -0
  384. package/src/containers/TracePanel/execution-graph.ts +579 -0
  385. package/src/containers/TracePanel/testing/index.ts +6 -0
  386. package/src/containers/TracePanel/testing/simulated-agent.ts +114 -0
  387. package/src/containers/TracePanel/testing/snapshot-playback.ts +45 -0
  388. package/src/containers/TriggerStatus/TriggerStatus.tsx +19 -34
  389. package/src/containers/TriggerStatus/index.ts +1 -1
  390. package/src/containers/index.ts +2 -2
  391. package/src/hooks/index.ts +2 -0
  392. package/src/hooks/useBlueprintRegistry.ts +1 -1
  393. package/src/hooks/useChatKeymap.ts +52 -0
  394. package/src/hooks/useChatProcessor.ts +11 -11
  395. package/src/hooks/useDebug.ts +38 -0
  396. package/src/index.ts +8 -6
  397. package/src/operations/create-chat.ts +1 -2
  398. package/src/operations/definitions.ts +3 -4
  399. package/src/operations/ensure-companion-chat.ts +1 -1
  400. package/src/operations/index.ts +1 -1
  401. package/src/operations/on-create-space.ts +1 -1
  402. package/src/operations/prompt.test.ts +77 -0
  403. package/src/operations/resolve-navigation-targets.ts +1 -1
  404. package/src/operations/run-prompt-in-new-chat.ts +2 -3
  405. package/src/operations/set-current-chat.ts +1 -1
  406. package/src/operations/update-chat-name.ts +2 -2
  407. package/src/processor/presets.ts +9 -1
  408. package/src/processor/processor.test.ts +4 -4
  409. package/src/processor/processor.ts +43 -27
  410. package/src/queue-logger.ts +19 -8
  411. package/src/testing/data/trace-timeline.dx.json +4657 -0
  412. package/src/testing/index.ts +1 -0
  413. package/src/testing/test-generator.test.ts +81 -0
  414. package/src/testing/test-generator.ts +46 -40
  415. package/src/testing/test-trace.ts +20 -0
  416. package/src/testing/trace-timeline.conversations.json +1 -0
  417. package/src/testing/trace-timeline.test.ts +249 -0
  418. package/src/translations.ts +49 -34
  419. package/src/types/Assistant.ts +11 -0
  420. package/src/types/Settings.ts +63 -8
  421. package/src/types/index.ts +0 -1
  422. package/src/types/service.ts +1 -1
  423. package/dist/lib/browser/AssistantSettings-7QMO3LGF.mjs +0 -97
  424. package/dist/lib/browser/AssistantSettings-7QMO3LGF.mjs.map +0 -7
  425. package/dist/lib/browser/chunk-ATHYBVGN.mjs.map +0 -7
  426. package/dist/lib/browser/chunk-EZRS3J25.mjs +0 -30
  427. package/dist/lib/browser/chunk-EZRS3J25.mjs.map +0 -7
  428. package/dist/lib/browser/chunk-RUV2WOQH.mjs.map +0 -7
  429. package/dist/lib/browser/create-chat-LBZHGVSN.mjs.map +0 -7
  430. package/dist/lib/browser/ensure-companion-chat-FR4AWZ2P.mjs.map +0 -7
  431. package/dist/lib/browser/run-prompt-in-new-chat-4YQ37XIS.mjs.map +0 -7
  432. package/dist/lib/browser/set-current-chat-WJI3WAVM.mjs.map +0 -7
  433. package/dist/lib/browser/update-chat-name-3Y36KFAS.mjs.map +0 -7
  434. package/dist/lib/node-esm/AssistantSettings-UVUTKO7E.mjs +0 -98
  435. package/dist/lib/node-esm/AssistantSettings-UVUTKO7E.mjs.map +0 -7
  436. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs +0 -32
  437. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs.map +0 -7
  438. package/dist/lib/node-esm/chunk-PXAJSTGZ.mjs.map +0 -7
  439. package/dist/lib/node-esm/chunk-PY4X6FJT.mjs.map +0 -7
  440. package/dist/lib/node-esm/create-chat-3BEG4R6J.mjs.map +0 -7
  441. package/dist/lib/node-esm/ensure-companion-chat-BLP7NT32.mjs.map +0 -7
  442. package/dist/lib/node-esm/run-prompt-in-new-chat-2IJBSDTM.mjs.map +0 -7
  443. package/dist/lib/node-esm/set-current-chat-KBMMZULR.mjs.map +0 -7
  444. package/dist/lib/node-esm/update-chat-name-HM2P4NSI.mjs.map +0 -7
  445. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +0 -10
  446. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +0 -1
  447. package/dist/types/src/components/ChatProgress/index.d.ts +0 -2
  448. package/dist/types/src/components/ChatProgress/index.d.ts.map +0 -1
  449. package/dist/types/src/components/ChatThread/widgets/PromptWidget.d.ts +0 -14
  450. package/dist/types/src/components/ChatThread/widgets/PromptWidget.d.ts.map +0 -1
  451. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +0 -12
  452. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +0 -1
  453. package/dist/types/src/components/Typewriter/Typewriter.d.ts +0 -11
  454. package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +0 -1
  455. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts +0 -7
  456. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +0 -1
  457. package/dist/types/src/components/Typewriter/assistant-extension.d.ts +0 -5
  458. package/dist/types/src/components/Typewriter/assistant-extension.d.ts.map +0 -1
  459. package/dist/types/src/components/Typewriter/index.d.ts +0 -2
  460. package/dist/types/src/components/Typewriter/index.d.ts.map +0 -1
  461. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +0 -6
  462. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +0 -1
  463. package/dist/types/src/containers/PromptArticle/index.d.ts +0 -2
  464. package/dist/types/src/containers/PromptArticle/index.d.ts.map +0 -1
  465. package/dist/types/src/containers/PromptList/PromptList.d.ts +0 -6
  466. package/dist/types/src/containers/PromptList/PromptList.d.ts.map +0 -1
  467. package/dist/types/src/containers/PromptList/PromptList.stories.d.ts +0 -559
  468. package/dist/types/src/containers/PromptList/PromptList.stories.d.ts.map +0 -1
  469. package/dist/types/src/containers/PromptList/index.d.ts +0 -2
  470. package/dist/types/src/containers/PromptList/index.d.ts.map +0 -1
  471. package/dist/types/src/types/defs.d.ts +0 -2
  472. package/dist/types/src/types/defs.d.ts.map +0 -1
  473. package/src/blueprints/assistant/blueprint.conversations.json +0 -1
  474. package/src/components/ChatProgress/ChatProgress.tsx +0 -56
  475. package/src/components/ChatProgress/index.ts +0 -5
  476. package/src/components/ChatThread/widgets/PromptWidget.ts +0 -28
  477. package/src/components/Typewriter/AssistantToolbar.tsx +0 -161
  478. package/src/components/Typewriter/Typewriter.stories.tsx +0 -86
  479. package/src/components/Typewriter/Typewriter.tsx +0 -50
  480. package/src/components/Typewriter/assistant-extension.tsx +0 -141
  481. package/src/containers/PromptArticle/index.ts +0 -5
  482. package/src/containers/PromptList/index.ts +0 -5
  483. package/src/types/defs.ts +0 -5
@@ -0,0 +1,933 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ UpdateChatName
4
+ } from "./chunk-MBDVPB4V.mjs";
5
+
6
+ // src/hooks/useBlueprintRegistry.ts
7
+ import { useCallback, useEffect, useMemo, useState } from "react";
8
+ import { useCapabilities } from "@dxos/app-framework/ui";
9
+ import { AppCapabilities } from "@dxos/app-toolkit";
10
+ import { Blueprint } from "@dxos/compute";
11
+ import { Filter, Obj, Ref } from "@dxos/echo";
12
+ import { useQuery } from "@dxos/react-client/echo";
13
+ import { distinctBy } from "@dxos/util";
14
+ var useBlueprintRegistry = () => {
15
+ const blueprintDefinitions = useCapabilities(AppCapabilities.BlueprintDefinition);
16
+ return useMemo(() => new Blueprint.Registry(blueprintDefinitions.map((blueprint) => blueprint.make())), [
17
+ blueprintDefinitions
18
+ ]);
19
+ };
20
+ var useBlueprints = ({ blueprintRegistry, db }) => {
21
+ const staticBlueprints = useMemo(() => blueprintRegistry?.query() ?? [], [
22
+ blueprintRegistry
23
+ ]);
24
+ const spaceBlueprints = useQuery(db, Filter.type(Blueprint.Blueprint));
25
+ return useMemo(() => {
26
+ const blueprints = distinctBy([
27
+ ...staticBlueprints,
28
+ ...spaceBlueprints
29
+ ], (b) => b.key);
30
+ blueprints.sort(({ name: a }, { name: b }) => a.localeCompare(b));
31
+ return blueprints;
32
+ }, [
33
+ staticBlueprints,
34
+ spaceBlueprints
35
+ ]);
36
+ };
37
+ var useActiveBlueprints = ({ context }) => {
38
+ const [active, setActive] = useState(/* @__PURE__ */ new Map());
39
+ useEffect(() => {
40
+ if (!context) {
41
+ setActive(/* @__PURE__ */ new Map());
42
+ return;
43
+ }
44
+ const updateActive = () => {
45
+ const blueprints = context.getBlueprints();
46
+ setActive(new Map(blueprints.map((blueprint) => [
47
+ blueprint.key,
48
+ blueprint
49
+ ])));
50
+ };
51
+ updateActive();
52
+ return context.subscribeBlueprints(updateActive);
53
+ }, [
54
+ context
55
+ ]);
56
+ return active;
57
+ };
58
+ var useBlueprintHandlers = ({ db, context, blueprintRegistry }) => {
59
+ const onUpdateBlueprint = useCallback(async (key, checked) => {
60
+ if (!context || !blueprintRegistry) {
61
+ return;
62
+ }
63
+ const objects = await db.query(Filter.type(Blueprint.Blueprint)).run();
64
+ let storedBlueprint = objects.find((blueprint) => blueprint.key === key);
65
+ if (checked) {
66
+ if (!storedBlueprint) {
67
+ const blueprint = blueprintRegistry.getByKey(key);
68
+ if (!blueprint) {
69
+ return;
70
+ }
71
+ storedBlueprint = db.add(Obj.clone(blueprint));
72
+ }
73
+ await context.bind({
74
+ blueprints: [
75
+ Ref.make(storedBlueprint)
76
+ ]
77
+ });
78
+ } else if (storedBlueprint) {
79
+ await context.unbind({
80
+ blueprints: [
81
+ Ref.make(storedBlueprint)
82
+ ]
83
+ });
84
+ }
85
+ }, [
86
+ db,
87
+ context,
88
+ blueprintRegistry
89
+ ]);
90
+ return {
91
+ onUpdateBlueprint
92
+ };
93
+ };
94
+
95
+ // src/hooks/useChatKeymap.ts
96
+ import { Prec } from "@codemirror/state";
97
+ import { keymap } from "@codemirror/view";
98
+ import { useMemo as useMemo2 } from "react";
99
+ import { isTruthy } from "@dxos/util";
100
+ var useChatKeymapExtensions = ({ event }) => {
101
+ return useMemo2(() => {
102
+ return [
103
+ Prec.highest(keymap.of([
104
+ {
105
+ key: "Mod-ArrowUp",
106
+ preventDefault: true,
107
+ run: () => {
108
+ event.emit({
109
+ type: "nav-previous"
110
+ });
111
+ return true;
112
+ },
113
+ shift: () => {
114
+ event.emit({
115
+ type: "thread-open"
116
+ });
117
+ return true;
118
+ }
119
+ },
120
+ {
121
+ key: "Mod-ArrowDown",
122
+ preventDefault: true,
123
+ run: () => {
124
+ event.emit({
125
+ type: "nav-next"
126
+ });
127
+ return true;
128
+ },
129
+ shift: () => {
130
+ event.emit({
131
+ type: "thread-close"
132
+ });
133
+ return true;
134
+ }
135
+ }
136
+ ]))
137
+ ].filter(isTruthy);
138
+ }, [
139
+ event
140
+ ]);
141
+ };
142
+
143
+ // src/hooks/useChatProcessor.ts
144
+ import { RegistryContext } from "@effect-atom/atom-react";
145
+ import * as Effect2 from "effect/Effect";
146
+ import { useContext, useMemo as useMemo3, useState as useState2 } from "react";
147
+ import { AiSession } from "@dxos/assistant";
148
+ import { Ref as Ref2 } from "@dxos/echo";
149
+ import { createFeedServiceLayer } from "@dxos/echo-db";
150
+ import { runAndForwardErrors as runAndForwardErrors2 } from "@dxos/effect";
151
+ import { log as log2 } from "@dxos/log";
152
+ import { useAsyncEffect } from "@dxos/react-ui";
153
+
154
+ // src/processor/presets.ts
155
+ import * as Schema from "effect/Schema";
156
+ var ModelProviders = [
157
+ "dxos-local",
158
+ "dxos-remote",
159
+ "lm-studio",
160
+ "ollama"
161
+ ];
162
+ var ModelProvider = Schema.Literal(...ModelProviders);
163
+ var createModelLabel = (model) => {
164
+ const parts = model.split("/");
165
+ return parts[parts.length - 1];
166
+ };
167
+ var AiServicePresets = [
168
+ {
169
+ provider: "dxos-remote",
170
+ model: "@anthropic/claude-opus-4-6"
171
+ },
172
+ {
173
+ provider: "dxos-remote",
174
+ model: "@anthropic/claude-sonnet-4-5"
175
+ },
176
+ {
177
+ provider: "dxos-remote",
178
+ model: "@anthropic/claude-3-5-haiku-20241022"
179
+ },
180
+ {
181
+ provider: "ollama",
182
+ model: "gpt-oss:20b"
183
+ },
184
+ {
185
+ provider: "ollama",
186
+ model: "gemma4:latest"
187
+ },
188
+ {
189
+ provider: "lm-studio",
190
+ model: "@google/gemma-3-27b"
191
+ },
192
+ {
193
+ provider: "lm-studio",
194
+ model: "@meta/llama-3.2-3b-instruct"
195
+ },
196
+ {
197
+ model: "deepseek-r1:latest",
198
+ provider: "dxos-local"
199
+ }
200
+ ].map(({ model, provider }, i) => ({
201
+ id: `preset-${i}`,
202
+ provider,
203
+ model,
204
+ label: createModelLabel(model)
205
+ }));
206
+
207
+ // src/processor/processor.ts
208
+ import { Atom, Registry } from "@effect-atom/atom-react";
209
+ import * as Effect from "effect/Effect";
210
+ import * as Fiber from "effect/Fiber";
211
+ import * as Option from "effect/Option";
212
+ import * as Stream from "effect/Stream";
213
+ import { DEFAULT_EDGE_MODEL } from "@dxos/ai";
214
+ import { AiContextService, createSystemPrompt, formatSystemPrompt, McpServerError, PartialBlock, ToolExecutionServices } from "@dxos/assistant";
215
+ import { Trace, Operation } from "@dxos/compute";
216
+ import { Obj as Obj2 } from "@dxos/echo";
217
+ import { runAndForwardErrors, unwrapExit } from "@dxos/effect";
218
+ import { AgentService } from "@dxos/functions-runtime";
219
+ import { log } from "@dxos/log";
220
+ import { Message } from "@dxos/types";
221
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/processor/processor.ts";
222
+ var defaultOptions = {
223
+ model: DEFAULT_EDGE_MODEL,
224
+ autoUpdateNameChance: 0.1
225
+ };
226
+ var AiChatProcessor = class {
227
+ _conversation;
228
+ _runtime;
229
+ _feed;
230
+ _options;
231
+ #registry;
232
+ /** Pending messages (finalized, non-streaming). */
233
+ #pending = Atom.make([]);
234
+ /** Currently streaming messages (from ephemeral trace events). */
235
+ #streaming = Atom.make([]);
236
+ /** Set of message IDs that have been finalized (non-pending delivered via ephemeral). */
237
+ #finalizedIds = /* @__PURE__ */ new Set();
238
+ /** Currently active request fiber. */
239
+ #requestFiber;
240
+ /** Last request (for retries). */
241
+ #lastRequest;
242
+ /** Streaming state. */
243
+ streaming = Atom.make((get) => get(this.#streaming).length > 0);
244
+ /** Active state. */
245
+ active = Atom.make(false);
246
+ /** Array of Messages (incl. the current message being streamed). */
247
+ messages = Atom.make((get) => [
248
+ ...get(this.#pending),
249
+ ...get(this.#streaming)
250
+ ]);
251
+ /** Last error. */
252
+ error = Atom.make(Option.none());
253
+ /**
254
+ * MCP server connection errors observed during the most recent request.
255
+ * Misconfigured/unreachable servers are dropped from the toolkit so the chat
256
+ * keeps working; the entries here let the UI display which servers failed.
257
+ */
258
+ mcpErrors = Atom.make([]);
259
+ constructor(_conversation, _runtime, _feed, _options = defaultOptions) {
260
+ this._conversation = _conversation;
261
+ this._runtime = _runtime;
262
+ this._feed = _feed;
263
+ this._options = _options;
264
+ this.#registry = this._options.observableRegistry ?? Registry.make();
265
+ if (this._options.model && !this._options.system) {
266
+ const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};
267
+ this._options.system = createSystemPrompt(capabilities);
268
+ }
269
+ }
270
+ get context() {
271
+ return this._conversation.context;
272
+ }
273
+ get conversation() {
274
+ return this._conversation;
275
+ }
276
+ get blueprintRegistry() {
277
+ return this._options.blueprintRegistry;
278
+ }
279
+ get system() {
280
+ return this._options.system ?? "";
281
+ }
282
+ async getTools() {
283
+ return this._runtime.runPromise(Effect.provide(this._conversation.getTools(), ToolExecutionServices));
284
+ }
285
+ async getSystemPrompt() {
286
+ return this._runtime.runPromise(Effect.gen(this, function* () {
287
+ const blueprints = this.context.getBlueprints();
288
+ const objects = this.context.getObjects();
289
+ return yield* formatSystemPrompt({
290
+ system: this._options.system,
291
+ blueprints,
292
+ objects
293
+ });
294
+ }).pipe(Effect.provideService(AiContextService, {
295
+ binder: this.context
296
+ }), Effect.orDie));
297
+ }
298
+ /**
299
+ * Initiates a new request via AgentService.
300
+ */
301
+ async request(requestProp) {
302
+ if (this.#requestFiber) {
303
+ await this.cancel();
304
+ }
305
+ try {
306
+ this.#lastRequest = requestProp;
307
+ this.#registry.set(this.error, Option.none());
308
+ this.#registry.set(this.mcpErrors, []);
309
+ this.#registry.set(this.active, true);
310
+ const effect = Effect.gen(this, function* () {
311
+ log.info("init agent session", {
312
+ feed: Obj2.getDXN(this._feed).toString(),
313
+ model: this._options.model
314
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 100, S: this });
315
+ const session = yield* AgentService.getSession(this._feed, {
316
+ model: this._options.model
317
+ });
318
+ const ephemeralStream = session.subscribeEphemeral();
319
+ yield* ephemeralStream.pipe(Stream.runForEach((message) => Effect.sync(() => {
320
+ for (const event of message.events) {
321
+ if (Trace.isOfType(PartialBlock, event)) {
322
+ this.#handleEphemeralMessage(event.data);
323
+ } else if (Trace.isOfType(McpServerError, event)) {
324
+ this.#handleMcpError(event.data);
325
+ }
326
+ }
327
+ })), Effect.fork);
328
+ log("chat processor submitting prompt", {
329
+ length: requestProp.message.length
330
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 117, S: this });
331
+ yield* session.submitPrompt(requestProp.message);
332
+ log("chat processor submitPrompt returned, waiting for agent", {}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 121, S: this });
333
+ yield* session.waitForCompletion();
334
+ log.info("session complete", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 123, S: this });
335
+ this.#flushStreaming();
336
+ yield* this.#maybeUpdateChatName();
337
+ });
338
+ this.#requestFiber = this._runtime.runFork(effect);
339
+ try {
340
+ await this._runtime.runPromise(Fiber.join(this.#requestFiber));
341
+ } catch (err) {
342
+ if (err._tag === "InterruptedException" || err.message?.includes("interrupted")) {
343
+ return;
344
+ }
345
+ throw err;
346
+ }
347
+ this.#registry.set(this.error, Option.none());
348
+ this.#lastRequest = void 0;
349
+ this.#requestFiber = void 0;
350
+ } catch (err) {
351
+ log.error("request failed", {
352
+ error: err
353
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 140, S: this });
354
+ this.#registry.set(this.error, Option.some(new Error("AI service error", {
355
+ cause: err
356
+ })));
357
+ } finally {
358
+ log.info("setting active to false", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 147, S: this });
359
+ this.#registry.set(this.active, false);
360
+ this.#requestFiber = void 0;
361
+ }
362
+ }
363
+ /**
364
+ * Cancels the current request.
365
+ */
366
+ async cancel() {
367
+ await runAndForwardErrors(Effect.gen(this, function* () {
368
+ if (this.#requestFiber) {
369
+ yield* Fiber.interrupt(this.#requestFiber);
370
+ }
371
+ }));
372
+ this.#requestFiber = void 0;
373
+ this.#registry.set(this.active, false);
374
+ }
375
+ /**
376
+ * Retry last failed request.
377
+ */
378
+ async retry() {
379
+ if (this.#lastRequest) {
380
+ return this.request(this.#lastRequest);
381
+ }
382
+ }
383
+ /**
384
+ * Clears the recorded MCP server errors (e.g. after the user dismisses the warning banner).
385
+ */
386
+ dismissMcpErrors() {
387
+ this.#registry.set(this.mcpErrors, []);
388
+ }
389
+ /**
390
+ * Update the current chat's name.
391
+ */
392
+ async updateName(chat) {
393
+ unwrapExit(await this._runtime.runPromiseExit(Operation.invoke(UpdateChatName, {
394
+ chat
395
+ })));
396
+ }
397
+ /**
398
+ * Handles an ephemeral message from the agent process.
399
+ * Both pending and completed blocks arrive here. Completed blocks are deduped
400
+ * against messages already written to the feed queue to handle the race between
401
+ * ephemeral delivery and feed replication.
402
+ */
403
+ #handleEphemeralMessage(event) {
404
+ const isPending = event.block.pending;
405
+ const message = Obj2.make(Message.Message, {
406
+ id: event.messageId,
407
+ created: (/* @__PURE__ */ new Date()).toISOString(),
408
+ sender: {
409
+ role: event.role
410
+ },
411
+ blocks: [
412
+ event.block
413
+ ]
414
+ });
415
+ if (isPending) {
416
+ if (this.#finalizedIds.has(event.messageId)) {
417
+ return;
418
+ }
419
+ this.#registry.update(this.#streaming, (streaming) => {
420
+ const idx = streaming.findIndex((existing) => existing.id === event.messageId);
421
+ if (idx >= 0) {
422
+ const updated = [
423
+ ...streaming
424
+ ];
425
+ updated[idx] = message;
426
+ return updated;
427
+ }
428
+ return [
429
+ ...streaming,
430
+ message
431
+ ];
432
+ });
433
+ } else {
434
+ this.#finalizedIds.add(event.messageId);
435
+ this.#registry.update(this.#streaming, (streaming) => streaming.filter((existing) => existing.id !== message.id));
436
+ this.#registry.update(this.#pending, (pending) => {
437
+ if (pending.some((existing) => existing.id === message.id)) {
438
+ return pending;
439
+ }
440
+ return [
441
+ ...pending,
442
+ message
443
+ ];
444
+ });
445
+ }
446
+ }
447
+ /**
448
+ * Records a per-server MCP failure, deduped by url+kind so repeat misconfigurations
449
+ * across turns do not spam the UI.
450
+ */
451
+ #handleMcpError(event) {
452
+ log.warn("MCP server error", event, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 235, S: this });
453
+ this.#registry.update(this.mcpErrors, (errors) => {
454
+ if (errors.some((existing) => existing.url === event.url && existing.kind === event.kind)) {
455
+ return errors;
456
+ }
457
+ return [
458
+ ...errors,
459
+ event
460
+ ];
461
+ });
462
+ }
463
+ /**
464
+ * Move remaining streaming messages to pending (called when agent completes).
465
+ */
466
+ #flushStreaming() {
467
+ const remaining = this.#registry.get(this.#streaming);
468
+ if (remaining.length > 0) {
469
+ this.#registry.update(this.#pending, (pending) => [
470
+ ...pending,
471
+ ...remaining
472
+ ]);
473
+ this.#registry.set(this.#streaming, []);
474
+ }
475
+ this.#finalizedIds.clear();
476
+ }
477
+ /**
478
+ * Conditionally schedule chat name update in detached fork mode.
479
+ * Updates if chat has no name OR based on random chance (default 10%).
480
+ */
481
+ #maybeUpdateChatName() {
482
+ const chat = this._options.chat?.target;
483
+ if (!chat) {
484
+ return Effect.void;
485
+ }
486
+ const chance = this._options.autoUpdateNameChance ?? defaultOptions.autoUpdateNameChance ?? 0.1;
487
+ const shouldUpdate = !chat.name || Math.random() < chance;
488
+ if (!shouldUpdate) {
489
+ return Effect.void;
490
+ }
491
+ log.info("scheduling chat name update", {
492
+ hasName: !!chat.name,
493
+ chance
494
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 273, S: this });
495
+ return Operation.schedule(UpdateChatName, {
496
+ chat
497
+ });
498
+ }
499
+ };
500
+
501
+ // src/hooks/useChatProcessor.ts
502
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.ts";
503
+ var useChatProcessor = ({ space, chat, preset, runtime: runtime3, blueprintRegistry, settings }) => {
504
+ const observableRegistry = useContext(RegistryContext);
505
+ const [session, setSession] = useState2();
506
+ useAsyncEffect(async () => {
507
+ if (!space || !chat) {
508
+ return;
509
+ }
510
+ const feedTarget = chat.feed.target;
511
+ if (!feedTarget) {
512
+ return;
513
+ }
514
+ const feedServiceLayer = createFeedServiceLayer(space.queues);
515
+ const runtime4 = await runAndForwardErrors2(Effect2.runtime().pipe(Effect2.provide(feedServiceLayer)));
516
+ const session2 = new AiSession({
517
+ feed: feedTarget,
518
+ runtime: runtime4,
519
+ registry: observableRegistry
520
+ });
521
+ await session2.open();
522
+ setSession(session2);
523
+ return () => {
524
+ void session2.close();
525
+ setSession(void 0);
526
+ };
527
+ }, [
528
+ space,
529
+ chat?.feed.target
530
+ ]);
531
+ const feed = chat?.feed.target;
532
+ const processor = useMemo3(() => {
533
+ if (!runtime3 || !session || !chat || !feed) {
534
+ return void 0;
535
+ }
536
+ log2("creating processor", {
537
+ preset,
538
+ model: preset?.model,
539
+ settings
540
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 49, S: void 0 });
541
+ return new AiChatProcessor(session, runtime3, feed, {
542
+ chat: chat ? Ref2.make(chat) : void 0,
543
+ observableRegistry,
544
+ blueprintRegistry,
545
+ model: preset?.model
546
+ });
547
+ }, [
548
+ runtime3,
549
+ session,
550
+ blueprintRegistry,
551
+ preset,
552
+ feed
553
+ ]);
554
+ return processor;
555
+ };
556
+
557
+ // src/hooks/useChatServices.ts
558
+ import { useMemo as useMemo4 } from "react";
559
+ import { useCapability } from "@dxos/app-framework/ui";
560
+ import { getPersonalSpace } from "@dxos/app-toolkit";
561
+ import { AutomationCapabilities } from "@dxos/plugin-automation/types";
562
+ import { useClient } from "@dxos/react-client";
563
+ var useChatServices = ({ id }) => {
564
+ const client = useClient();
565
+ id ??= getPersonalSpace(client)?.id;
566
+ const runtimeResolver = useCapability(AutomationCapabilities.ComputeRuntime);
567
+ return useMemo4(() => !id ? void 0 : runtimeResolver.getRuntime(id), [
568
+ id
569
+ ]);
570
+ };
571
+
572
+ // src/hooks/useChatToolbarActions.ts
573
+ import { Atom as Atom2 } from "@effect-atom/atom-react";
574
+ import * as Effect3 from "effect/Effect";
575
+ import { useMemo as useMemo5 } from "react";
576
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
577
+ import { Chat } from "@dxos/assistant-toolkit";
578
+ import { Filter as Filter2, Obj as Obj3, Query } from "@dxos/echo";
579
+ import { runAndForwardErrors as runAndForwardErrors3 } from "@dxos/effect";
580
+ import { invariant } from "@dxos/invariant";
581
+ import { useQuery as useQuery2 } from "@dxos/react-client/echo";
582
+ import { MenuBuilder, useMenuActions } from "@dxos/react-ui-menu";
583
+ import { useChatContext } from "#components";
584
+ import { meta } from "#meta";
585
+ import { AssistantOperation } from "#operations";
586
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatToolbarActions.ts";
587
+ var useChatToolbarActions = ({ chat, companionTo }) => {
588
+ const { invoke } = useOperationInvoker();
589
+ const { db } = useChatContext("useChatToolbarActions");
590
+ const query = companionTo ? Query.select(Filter2.id(companionTo.id)).targetOf(Chat.CompanionTo).source() : Query.select(Filter2.nothing());
591
+ const chats = useQuery2(db, query);
592
+ return useMenuActions(useMemo5(() => {
593
+ return Atom2.make(() => {
594
+ const builder = MenuBuilder.make().root({
595
+ label: [
596
+ "chat-toolbar.title",
597
+ {
598
+ ns: meta.id
599
+ }
600
+ ]
601
+ }).action("new", {
602
+ label: [
603
+ "new-thread.button",
604
+ {
605
+ ns: meta.id
606
+ }
607
+ ],
608
+ icon: "ph--plus--regular",
609
+ type: "new",
610
+ disabled: !companionTo
611
+ }, () => {
612
+ invariant(companionTo, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 44, S: void 0, A: ["companionTo", ""] });
613
+ return invoke(AssistantOperation.SetCurrentChat, {
614
+ companionTo,
615
+ chat: void 0
616
+ }).pipe(runAndForwardErrors3);
617
+ }).action("rename", {
618
+ label: [
619
+ "rename-thread.button",
620
+ {
621
+ ns: meta.id
622
+ }
623
+ ],
624
+ icon: "ph--magic-wand--regular",
625
+ type: "rename",
626
+ disabled: !chat
627
+ }, () => Effect3.gen(function* () {
628
+ invariant(chat, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 60, S: this, A: ["chat", ""] });
629
+ yield* invoke(AssistantOperation.UpdateChatName, {
630
+ chat
631
+ });
632
+ }).pipe(runAndForwardErrors3)).action("branch", {
633
+ label: [
634
+ "branch-thread.menu",
635
+ {
636
+ ns: meta.id
637
+ }
638
+ ],
639
+ icon: "ph--git-branch--regular",
640
+ type: "branch",
641
+ disabled: true
642
+ }, () => {
643
+ });
644
+ if (chats.length > 0) {
645
+ builder.group("chats", {
646
+ label: [
647
+ "chat-history.label",
648
+ {
649
+ ns: meta.id
650
+ }
651
+ ],
652
+ icon: "ph--clock-counter-clockwise--regular",
653
+ selectCardinality: "single",
654
+ variant: "dropdownMenu"
655
+ }, (builder2) => {
656
+ chats.toSorted((a, b) => a.id.localeCompare(b.id)).forEach((chat2) => {
657
+ builder2.action(chat2.id, {
658
+ label: Obj3.getLabel(chat2) ?? [
659
+ "object-name.placeholder",
660
+ {
661
+ ns: Chat.Chat.typename
662
+ }
663
+ ]
664
+ }, () => Effect3.gen(function* () {
665
+ invariant(companionTo, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 97, S: this, A: ["companionTo", ""] });
666
+ yield* invoke(AssistantOperation.SetCurrentChat, {
667
+ companionTo,
668
+ chat: chat2
669
+ });
670
+ }).pipe(runAndForwardErrors3));
671
+ });
672
+ });
673
+ }
674
+ return builder.build();
675
+ });
676
+ }, [
677
+ chats.length,
678
+ db?.spaceId,
679
+ companionTo?.id,
680
+ chat?.id,
681
+ invoke
682
+ ]));
683
+ };
684
+
685
+ // src/hooks/useContextBinder.ts
686
+ import { RegistryContext as RegistryContext2 } from "@effect-atom/atom-react";
687
+ import * as Effect4 from "effect/Effect";
688
+ import { useContext as useContext2, useState as useState3 } from "react";
689
+ import { AiContextBinder } from "@dxos/assistant";
690
+ import { createFeedServiceLayer as createFeedServiceLayer2 } from "@dxos/echo-db";
691
+ import { runAndForwardErrors as runAndForwardErrors4 } from "@dxos/effect";
692
+ import { useAsyncEffect as useAsyncEffect2 } from "@dxos/react-ui";
693
+ var useContextBinder = (space, feed) => {
694
+ const registry = useContext2(RegistryContext2);
695
+ const [binder, setBinder] = useState3();
696
+ useAsyncEffect2(async () => {
697
+ setBinder(void 0);
698
+ if (!space || !feed) {
699
+ return;
700
+ }
701
+ const feedServiceLayer = createFeedServiceLayer2(space.queues);
702
+ const runtime3 = await runAndForwardErrors4(Effect4.runtime().pipe(Effect4.provide(feedServiceLayer)));
703
+ const binder2 = new AiContextBinder({
704
+ feed,
705
+ runtime: runtime3,
706
+ registry
707
+ });
708
+ await binder2.open();
709
+ setBinder(binder2);
710
+ return () => {
711
+ void binder2.close();
712
+ };
713
+ }, [
714
+ space,
715
+ feed
716
+ ]);
717
+ return binder;
718
+ };
719
+
720
+ // src/hooks/useContextObjects.ts
721
+ import { Atom as Atom3, useAtomValue } from "@effect-atom/atom-react";
722
+ import { useCallback as useCallback2 } from "react";
723
+ var emptyObjectsAtom = Atom3.make([]);
724
+ var useContextObjects = ({ db, context }) => {
725
+ const objects = useAtomValue(context?.objects ?? emptyObjectsAtom);
726
+ const handleUpdateObject = useCallback2(async (dxn, checked) => {
727
+ if (!db || !context) {
728
+ return;
729
+ }
730
+ const ref = db.makeRef(dxn);
731
+ await ref.load();
732
+ if (checked) {
733
+ await context.bind({
734
+ objects: [
735
+ ref
736
+ ]
737
+ });
738
+ } else {
739
+ await context.unbind({
740
+ objects: [
741
+ ref
742
+ ]
743
+ });
744
+ }
745
+ }, [
746
+ db,
747
+ context
748
+ ]);
749
+ return {
750
+ objects,
751
+ onUpdateObject: handleUpdateObject
752
+ };
753
+ };
754
+
755
+ // src/hooks/useDebug.ts
756
+ import { useCallback as useCallback3 } from "react";
757
+ import { trim } from "@dxos/util";
758
+ var useDebug = ({ processor }) => {
759
+ return useCallback3(async () => {
760
+ const objects = processor.context.getObjects();
761
+ const blueprints = processor.context.getBlueprints();
762
+ const system = await processor.getSystemPrompt();
763
+ const tools = await processor.getTools() ?? {};
764
+ console.group("Chat", {
765
+ objects,
766
+ blueprints
767
+ });
768
+ try {
769
+ console.log(trim`
770
+ System Prompt:
771
+ ${system}
772
+ `);
773
+ console.log(trim`
774
+ Tools:
775
+ ${Object.values(tools).map((tool) => JSON.stringify(tool, null, 2)).join("\n")}
776
+ `);
777
+ } finally {
778
+ console.groupEnd();
779
+ }
780
+ }, [
781
+ processor
782
+ ]);
783
+ };
784
+
785
+ // src/hooks/useFilteredTypes.ts
786
+ import * as Option2 from "effect/Option";
787
+ import { useEffect as useEffect2, useState as useState4 } from "react";
788
+ import { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from "@dxos/echo/internal";
789
+ var useFilteredTypes = (db) => {
790
+ const [types, setTypes] = useState4([]);
791
+ useEffect2(() => {
792
+ if (!db) {
793
+ return;
794
+ }
795
+ return db.schemaRegistry.query({
796
+ location: [
797
+ "database",
798
+ "runtime"
799
+ ]
800
+ }).subscribe((query) => {
801
+ const types2 = Array.from(new Set(query.results.filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation).filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option2.getOrElse(() => false)))));
802
+ setTypes(types2);
803
+ }, {
804
+ fire: true
805
+ });
806
+ }, [
807
+ db
808
+ ]);
809
+ return types;
810
+ };
811
+
812
+ // src/hooks/useFlush.ts
813
+ import { useCallback as useCallback4, useRef, useState as useState5 } from "react";
814
+ var useFlush = (space) => {
815
+ const [state, setState] = useState5("idle");
816
+ const resetTimer = useRef(null);
817
+ const handleFlush = useCallback4(() => {
818
+ if (!space) {
819
+ return;
820
+ }
821
+ queueMicrotask(async () => {
822
+ if (resetTimer.current) {
823
+ clearTimeout(resetTimer.current);
824
+ }
825
+ setState("flushing");
826
+ await space.db.flush();
827
+ setState("flushed");
828
+ resetTimer.current = setTimeout(() => {
829
+ setState("idle");
830
+ resetTimer.current = null;
831
+ }, 1e3);
832
+ });
833
+ }, [
834
+ space
835
+ ]);
836
+ return {
837
+ state,
838
+ handleFlush
839
+ };
840
+ };
841
+
842
+ // src/hooks/useOnline.ts
843
+ import { useState as useState6 } from "react";
844
+ var useOnline = () => {
845
+ const [online, setOnline] = useState6(true);
846
+ return [
847
+ online,
848
+ setOnline
849
+ ];
850
+ };
851
+
852
+ // src/hooks/usePresets.ts
853
+ import { useCallback as useCallback5, useEffect as useEffect3, useMemo as useMemo6, useState as useState7 } from "react";
854
+ var usePresets = (online) => {
855
+ const [preset, setPreset] = useState7();
856
+ const presets = useMemo6(() => AiServicePresets.filter((preset2) => online === (preset2.provider === "dxos-remote")), [
857
+ online
858
+ ]);
859
+ const presetOptions = useMemo6(() => presets.map(({ id, model, label }) => ({
860
+ id,
861
+ label: label ?? model
862
+ })), [
863
+ presets
864
+ ]);
865
+ useEffect3(() => {
866
+ setPreset(presets[0]);
867
+ }, [
868
+ presets
869
+ ]);
870
+ const handlePresetChange = useCallback5((id) => {
871
+ const preset2 = presets.find((preset3) => preset3.id === id);
872
+ if (preset2) {
873
+ setPreset(preset2);
874
+ }
875
+ }, [
876
+ presets
877
+ ]);
878
+ return {
879
+ preset,
880
+ presets: presetOptions,
881
+ onPresetChange: handlePresetChange
882
+ };
883
+ };
884
+
885
+ // src/hooks/useReferencesProvider.ts
886
+ import { useMemo as useMemo7 } from "react";
887
+ import { Filter as Filter3, Obj as Obj4 } from "@dxos/echo";
888
+ var useReferencesProvider = (space) => {
889
+ return useMemo7(() => {
890
+ if (!space) {
891
+ return void 0;
892
+ }
893
+ return {
894
+ getReferences: async ({ query }) => {
895
+ const objects = await space.db.query(Filter3.everything()).run();
896
+ return objects.filter((object) => stringMatch(query, Obj4.getLabel(object) ?? "")).filter((object) => !!Obj4.getDXN(object)).map((object) => ({
897
+ uri: Obj4.getDXN(object).toString(),
898
+ label: Obj4.getLabel(object) ?? ""
899
+ }));
900
+ },
901
+ resolveReference: async ({ uri }) => {
902
+ const object = await space.db.query(Filter3.id(uri)).first();
903
+ return {
904
+ uri,
905
+ label: Obj4.getLabel(object) ?? ""
906
+ };
907
+ }
908
+ };
909
+ }, [
910
+ space
911
+ ]);
912
+ };
913
+ var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
914
+
915
+ export {
916
+ useBlueprintRegistry,
917
+ useBlueprints,
918
+ useActiveBlueprints,
919
+ useBlueprintHandlers,
920
+ useChatKeymapExtensions,
921
+ useChatProcessor,
922
+ useChatServices,
923
+ useChatToolbarActions,
924
+ useContextBinder,
925
+ useContextObjects,
926
+ useDebug,
927
+ useFilteredTypes,
928
+ useFlush,
929
+ useOnline,
930
+ usePresets,
931
+ useReferencesProvider
932
+ };
933
+ //# sourceMappingURL=chunk-FWC3ZGPH.mjs.map