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