@dxos/plugin-assistant 0.8.4-main.ead640a → 0.8.4-main.effb148878

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 (847) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/AgentArticle-UPXYXYFJ.mjs +166 -0
  4. package/dist/lib/neutral/AgentArticle-UPXYXYFJ.mjs.map +7 -0
  5. package/dist/lib/neutral/AgentProperties-W6LD56IB.mjs +40 -0
  6. package/dist/lib/neutral/AgentProperties-W6LD56IB.mjs.map +7 -0
  7. package/dist/lib/neutral/AssistantPlugin.mjs +10 -0
  8. package/dist/lib/neutral/AssistantPlugin.node.mjs +62 -0
  9. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +7 -0
  10. package/dist/lib/neutral/AssistantPlugin.workerd.mjs +40 -0
  11. package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +7 -0
  12. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +40 -0
  13. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs.map +7 -0
  14. package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs +27 -0
  15. package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs.map +7 -0
  16. package/dist/lib/neutral/ChatArticle-WVAFZPVI.mjs +8 -0
  17. package/dist/lib/neutral/ChatCompanion-PA5WC4ND.mjs +133 -0
  18. package/dist/lib/neutral/ChatCompanion-PA5WC4ND.mjs.map +7 -0
  19. package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs +72 -0
  20. package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs.map +7 -0
  21. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs +28 -0
  22. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +7 -0
  23. package/dist/lib/neutral/RoutineArticle-HWB5ZQ6O.mjs +119 -0
  24. package/dist/lib/neutral/RoutineArticle-HWB5ZQ6O.mjs.map +7 -0
  25. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs +48 -0
  26. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs.map +7 -0
  27. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +17 -0
  28. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +7 -0
  29. package/dist/lib/neutral/TracePanel-75DMDJEB.mjs +136 -0
  30. package/dist/lib/neutral/TracePanel-75DMDJEB.mjs.map +7 -0
  31. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs +92 -0
  32. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs.map +7 -0
  33. package/dist/lib/neutral/ai-context-ERNAJDGG.mjs +42 -0
  34. package/dist/lib/neutral/ai-context-ERNAJDGG.mjs.map +7 -0
  35. package/dist/lib/neutral/ai-service-7SQH5S4F.mjs +34 -0
  36. package/dist/lib/neutral/ai-service-7SQH5S4F.mjs.map +7 -0
  37. package/dist/lib/neutral/app-graph-builder-VBWAKZE5.mjs +199 -0
  38. package/dist/lib/neutral/app-graph-builder-VBWAKZE5.mjs.map +7 -0
  39. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs +32 -0
  40. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs.map +7 -0
  41. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  42. package/dist/lib/neutral/capabilities/index.mjs +37 -0
  43. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-5H6UJHLF.mjs +30 -0
  45. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-6UMJI6ON.mjs +110 -0
  47. package/dist/lib/neutral/chunk-6UMJI6ON.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-CJXRQ2YX.mjs +386 -0
  49. package/dist/lib/neutral/chunk-CJXRQ2YX.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-JUCBGMF3.mjs +8 -0
  51. package/dist/lib/neutral/chunk-JUCBGMF3.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-SLIPV6NN.mjs +106 -0
  53. package/dist/lib/neutral/chunk-SLIPV6NN.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-ZWY6Y5IW.mjs +41 -0
  55. package/dist/lib/neutral/chunk-ZWY6Y5IW.mjs.map +7 -0
  56. package/dist/lib/neutral/companion-chat-provisioner-7RTSXL6M.mjs +116 -0
  57. package/dist/lib/neutral/companion-chat-provisioner-7RTSXL6M.mjs.map +7 -0
  58. package/dist/lib/neutral/components/index.mjs +2373 -0
  59. package/dist/lib/neutral/components/index.mjs.map +7 -0
  60. package/dist/lib/neutral/containers/index.mjs +29 -0
  61. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  62. package/dist/lib/neutral/create-chat-QQZURUBW.mjs +71 -0
  63. package/dist/lib/neutral/create-chat-QQZURUBW.mjs.map +7 -0
  64. package/dist/lib/neutral/create-object-XPVVVEKF.mjs +89 -0
  65. package/dist/lib/neutral/create-object-XPVVVEKF.mjs.map +7 -0
  66. package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs +21 -0
  67. package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs.map +7 -0
  68. package/dist/lib/neutral/ensure-companion-chat-AMOF3C66.mjs +58 -0
  69. package/dist/lib/neutral/ensure-companion-chat-AMOF3C66.mjs.map +7 -0
  70. package/dist/lib/neutral/execution-graph/index.mjs +658 -0
  71. package/dist/lib/neutral/execution-graph/index.mjs.map +7 -0
  72. package/dist/lib/neutral/hooks/index.mjs +952 -0
  73. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  74. package/dist/lib/neutral/index.mjs +32 -0
  75. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs +24 -0
  76. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +7 -0
  77. package/dist/lib/neutral/markdown-KTBFOMFM.mjs +110 -0
  78. package/dist/lib/neutral/markdown-KTBFOMFM.mjs.map +7 -0
  79. package/dist/lib/neutral/meta.json +1 -0
  80. package/dist/lib/neutral/meta.mjs +12 -0
  81. package/dist/lib/neutral/migrations-7DEMVBOG.mjs +28 -0
  82. package/dist/lib/neutral/migrations-7DEMVBOG.mjs.map +7 -0
  83. package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs +19 -0
  84. package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs.map +7 -0
  85. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs +13 -0
  86. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs.map +7 -0
  87. package/dist/lib/neutral/operations/index.mjs +8 -0
  88. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  89. package/dist/lib/neutral/plugin.mjs +16 -0
  90. package/dist/lib/neutral/plugin.mjs.map +7 -0
  91. package/dist/lib/neutral/react-surface-CC6J7D4K.mjs +174 -0
  92. package/dist/lib/neutral/react-surface-CC6J7D4K.mjs.map +7 -0
  93. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs +22 -0
  94. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +7 -0
  95. package/dist/lib/neutral/run-prompt-in-new-chat-KPXN5YJ2.mjs +102 -0
  96. package/dist/lib/neutral/run-prompt-in-new-chat-KPXN5YJ2.mjs.map +7 -0
  97. package/dist/lib/neutral/set-current-chat-VWBPSIMZ.mjs +48 -0
  98. package/dist/lib/neutral/set-current-chat-VWBPSIMZ.mjs.map +7 -0
  99. package/dist/lib/neutral/settings-W4BLWQ53.mjs +28 -0
  100. package/dist/lib/neutral/settings-W4BLWQ53.mjs.map +7 -0
  101. package/dist/lib/neutral/state-H3G7QCU6.mjs +28 -0
  102. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +7 -0
  103. package/dist/lib/neutral/testing.mjs +8 -0
  104. package/dist/lib/neutral/testing.mjs.map +7 -0
  105. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs +21 -0
  106. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs.map +7 -0
  107. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs +14 -0
  108. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs.map +7 -0
  109. package/dist/lib/neutral/translations.mjs +175 -0
  110. package/dist/lib/neutral/translations.mjs.map +7 -0
  111. package/dist/lib/neutral/types/index.mjs +20 -0
  112. package/dist/lib/neutral/types/index.mjs.map +7 -0
  113. package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs +54 -0
  114. package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs.map +7 -0
  115. package/dist/types/src/AssistantPlugin.d.ts +3 -1
  116. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  117. package/dist/types/src/AssistantPlugin.node.d.ts +4 -0
  118. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -0
  119. package/dist/types/src/AssistantPlugin.test.d.ts +2 -0
  120. package/dist/types/src/AssistantPlugin.test.d.ts.map +1 -0
  121. package/dist/types/src/AssistantPlugin.workerd.d.ts +4 -0
  122. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -0
  123. package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
  124. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
  125. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +2 -0
  126. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +1 -0
  127. package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
  128. package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
  129. package/dist/types/src/blueprints/index.d.ts +2 -0
  130. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/ai-context.d.ts +6 -0
  132. package/dist/types/src/capabilities/ai-context.d.ts.map +1 -0
  133. package/dist/types/src/capabilities/ai-service.d.ts +5 -2
  134. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  135. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  136. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  137. package/dist/types/src/capabilities/blueprint-definition.d.ts +4 -6
  138. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  139. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +9 -0
  140. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -0
  141. package/dist/types/src/capabilities/create-object.d.ts +31 -0
  142. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  143. package/dist/types/src/capabilities/edge-model-resolver.d.ts +6 -3
  144. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  145. package/dist/types/src/capabilities/index.d.ts +56 -12
  146. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  147. package/dist/types/src/capabilities/local-model-resolver.d.ts +9 -3
  148. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  149. package/dist/types/src/capabilities/markdown.d.ts +5 -0
  150. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  151. package/dist/types/src/capabilities/migrations.d.ts +6 -0
  152. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  153. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  154. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  156. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  157. package/dist/types/src/capabilities/settings.d.ts +4 -2
  158. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  159. package/dist/types/src/capabilities/state.d.ts +19 -2
  160. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  161. package/dist/types/src/capabilities/toolkit.d.ts +4 -2
  162. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  163. package/dist/types/src/components/AgentProperties/AgentProperties.d.ts +7 -0
  164. package/dist/types/src/components/AgentProperties/AgentProperties.d.ts.map +1 -0
  165. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts +15 -0
  166. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -0
  167. package/dist/types/src/components/AgentProperties/index.d.ts +2 -0
  168. package/dist/types/src/components/AgentProperties/index.d.ts.map +1 -0
  169. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +4 -4
  170. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  171. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +15 -0
  172. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -0
  173. package/dist/types/src/components/AssistantSettings/index.d.ts +1 -1
  174. package/dist/types/src/components/AssistantSettings/index.d.ts.map +1 -1
  175. package/dist/types/src/components/Chat/Chat.d.ts +42 -33
  176. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  177. package/dist/types/src/components/Chat/context.d.ts +29 -0
  178. package/dist/types/src/components/Chat/context.d.ts.map +1 -0
  179. package/dist/types/src/components/Chat/events.d.ts +5 -1
  180. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  181. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -1
  182. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  183. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts +12 -0
  184. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts.map +1 -0
  185. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +10 -6
  186. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  187. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +19 -0
  188. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -0
  189. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  190. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +28 -0
  191. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -0
  192. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +5 -5
  193. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  194. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts +20 -0
  195. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts.map +1 -0
  196. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  197. package/dist/types/src/components/ChatPrompt/index.d.ts +3 -0
  198. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  199. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts +14 -0
  200. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -0
  201. package/dist/types/src/components/ChatThread/ChatThread.d.ts +11 -11
  202. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  203. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +15 -266
  204. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  205. package/dist/types/src/components/ChatThread/Link.d.ts +2 -2
  206. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  207. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +42 -0
  208. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -0
  209. package/dist/types/src/components/ChatThread/registry.d.ts +19 -1
  210. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  211. package/dist/types/src/components/ChatThread/sync.d.ts +51 -18
  212. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  213. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts +18 -0
  214. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -0
  215. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts +2 -0
  216. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts.map +1 -0
  217. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +8 -0
  218. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -0
  219. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts +25 -0
  220. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -0
  221. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +18 -0
  222. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -0
  223. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts +9 -0
  224. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -0
  225. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts +14 -0
  226. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -0
  227. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts +12 -0
  228. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -0
  229. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +12 -0
  230. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -0
  231. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts +11 -0
  232. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -0
  233. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts +5 -0
  234. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -0
  235. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts +9 -0
  236. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -0
  237. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts +15 -0
  238. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -0
  239. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +5 -0
  240. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -0
  241. package/dist/types/src/components/ChatThread/widgets/index.d.ts +10 -0
  242. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -0
  243. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +11 -0
  244. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -0
  245. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +7 -0
  246. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -0
  247. package/dist/types/src/components/ProcessTree/index.d.ts +2 -0
  248. package/dist/types/src/components/ProcessTree/index.d.ts.map +1 -0
  249. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +7 -0
  250. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +1 -0
  251. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +15 -0
  252. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +1 -0
  253. package/dist/types/src/components/RoutineProperties/index.d.ts +2 -0
  254. package/dist/types/src/components/RoutineProperties/index.d.ts.map +1 -0
  255. package/dist/types/src/components/TaskList/TaskList.d.ts +10 -0
  256. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -0
  257. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +16 -0
  258. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -0
  259. package/dist/types/src/components/TaskList/index.d.ts +2 -0
  260. package/dist/types/src/components/TaskList/index.d.ts.map +1 -0
  261. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +7 -5
  262. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  263. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +1 -253
  264. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  265. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +12 -3
  266. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  267. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +2 -254
  268. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  269. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  270. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  271. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  272. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  273. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  274. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +9 -16
  275. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  276. package/dist/types/src/components/Toolbox/Toolbox.d.ts +14 -13
  277. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  278. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -253
  279. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  280. package/dist/types/src/components/index.d.ts +6 -11
  281. package/dist/types/src/components/index.d.ts.map +1 -1
  282. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +6 -0
  283. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -0
  284. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +21 -0
  285. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -0
  286. package/dist/types/src/containers/AgentArticle/index.d.ts +2 -0
  287. package/dist/types/src/containers/AgentArticle/index.d.ts.map +1 -0
  288. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +6 -0
  289. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -0
  290. package/dist/types/src/containers/AgentProperties/index.d.ts +2 -0
  291. package/dist/types/src/containers/AgentProperties/index.d.ts.map +1 -0
  292. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +6 -0
  293. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
  294. package/dist/types/src/containers/BlueprintArticle/index.d.ts +2 -0
  295. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
  296. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +12 -0
  297. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -0
  298. package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts +15 -0
  299. package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts.map +1 -0
  300. package/dist/types/src/containers/ChatArticle/index.d.ts +2 -0
  301. package/dist/types/src/containers/ChatArticle/index.d.ts.map +1 -0
  302. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +26 -0
  303. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
  304. package/dist/types/src/containers/ChatCompanion/index.d.ts +2 -0
  305. package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
  306. package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +2 -3
  307. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
  308. package/dist/types/src/containers/ChatDialog/index.d.ts +2 -0
  309. package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
  310. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts +6 -0
  311. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -0
  312. package/dist/types/src/containers/PlanArticle/index.d.ts +2 -0
  313. package/dist/types/src/containers/PlanArticle/index.d.ts.map +1 -0
  314. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +6 -0
  315. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
  316. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +15 -0
  317. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +1 -0
  318. package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
  319. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +1 -0
  320. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +6 -0
  321. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +1 -0
  322. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +21 -0
  323. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +1 -0
  324. package/dist/types/src/containers/RoutineList/index.d.ts +2 -0
  325. package/dist/types/src/containers/RoutineList/index.d.ts.map +1 -0
  326. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +8 -0
  327. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -0
  328. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts +15 -0
  329. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -0
  330. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +19 -0
  331. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -0
  332. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts +2 -0
  333. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts.map +1 -0
  334. package/dist/types/src/containers/TracePanel/index.d.ts +4 -0
  335. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -0
  336. package/dist/types/src/containers/TracePanel/testing/index.d.ts +3 -0
  337. package/dist/types/src/containers/TracePanel/testing/index.d.ts.map +1 -0
  338. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +14 -0
  339. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -0
  340. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts +12 -0
  341. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts.map +1 -0
  342. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +5 -0
  343. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -0
  344. package/dist/types/src/containers/TriggerStatus/index.d.ts +2 -0
  345. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
  346. package/dist/types/src/containers/index.d.ts +13 -0
  347. package/dist/types/src/containers/index.d.ts.map +1 -0
  348. package/dist/types/src/execution-graph/execution-graph.d.ts +108 -0
  349. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -0
  350. package/dist/types/src/execution-graph/execution-graph.test.d.ts +2 -0
  351. package/dist/types/src/execution-graph/execution-graph.test.d.ts.map +1 -0
  352. package/dist/types/src/execution-graph/index.d.ts +3 -0
  353. package/dist/types/src/execution-graph/index.d.ts.map +1 -0
  354. package/dist/types/src/execution-graph/remote-snapshot.test.d.ts +2 -0
  355. package/dist/types/src/execution-graph/remote-snapshot.test.d.ts.map +1 -0
  356. package/dist/types/src/execution-graph/span-tree.d.ts +76 -0
  357. package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -0
  358. package/dist/types/src/execution-graph/span-tree.test.d.ts +2 -0
  359. package/dist/types/src/execution-graph/span-tree.test.d.ts.map +1 -0
  360. package/dist/types/src/execution-graph/testing/collect-trace-events.d.ts +40 -0
  361. package/dist/types/src/execution-graph/testing/collect-trace-events.d.ts.map +1 -0
  362. package/dist/types/src/execution-graph/testing/index.d.ts +2 -0
  363. package/dist/types/src/execution-graph/testing/index.d.ts.map +1 -0
  364. package/dist/types/src/extensions/index.d.ts +2 -0
  365. package/dist/types/src/extensions/index.d.ts.map +1 -0
  366. package/dist/types/src/extensions/prompt-extension.d.ts +10 -0
  367. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -0
  368. package/dist/types/src/feed-logger.d.ts +13 -0
  369. package/dist/types/src/feed-logger.d.ts.map +1 -0
  370. package/dist/types/src/hooks/index.d.ts +4 -1
  371. package/dist/types/src/hooks/index.d.ts.map +1 -1
  372. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +57 -11
  373. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  374. package/dist/types/src/hooks/useChatKeymap.d.ts +12 -0
  375. package/dist/types/src/hooks/useChatKeymap.d.ts.map +1 -0
  376. package/dist/types/src/hooks/useChatProcessor.d.ts +10 -7
  377. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  378. package/dist/types/src/hooks/useChatServices.d.ts +9 -8
  379. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  380. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  381. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  382. package/dist/types/src/hooks/useContextBinder.d.ts +4 -3
  383. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  384. package/dist/types/src/hooks/useContextObjects.d.ts +10 -9
  385. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  386. package/dist/types/src/hooks/useDebug.d.ts +10 -0
  387. package/dist/types/src/hooks/useDebug.d.ts.map +1 -0
  388. package/dist/types/src/hooks/useFilteredTypes.d.ts +3 -0
  389. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  390. package/dist/types/src/hooks/useFlush.d.ts +1 -1
  391. package/dist/types/src/hooks/useFlush.d.ts.map +1 -1
  392. package/dist/types/src/hooks/usePresets.d.ts +1 -1
  393. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  394. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  395. package/dist/types/src/index.d.ts +1 -6
  396. package/dist/types/src/index.d.ts.map +1 -1
  397. package/dist/types/src/meta.d.ts +4 -2
  398. package/dist/types/src/meta.d.ts.map +1 -1
  399. package/dist/types/src/operations/create-chat.d.ts +5 -0
  400. package/dist/types/src/operations/create-chat.d.ts.map +1 -0
  401. package/dist/types/src/operations/ensure-companion-chat.d.ts +5 -0
  402. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -0
  403. package/dist/types/src/operations/index.d.ts +3 -0
  404. package/dist/types/src/operations/index.d.ts.map +1 -0
  405. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  406. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  407. package/dist/types/src/operations/prompt.node.test.d.ts +2 -0
  408. package/dist/types/src/operations/prompt.node.test.d.ts.map +1 -0
  409. package/dist/types/src/operations/resolve-navigation-targets.d.ts +17 -0
  410. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -0
  411. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +5 -0
  412. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -0
  413. package/dist/types/src/operations/set-current-chat.d.ts +5 -0
  414. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -0
  415. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts +5 -0
  416. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts.map +1 -0
  417. package/dist/types/src/operations/update-chat-name.d.ts +5 -0
  418. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -0
  419. package/dist/types/src/plugin.d.ts +4 -0
  420. package/dist/types/src/plugin.d.ts.map +1 -0
  421. package/dist/types/src/processor/index.d.ts +0 -1
  422. package/dist/types/src/processor/index.d.ts.map +1 -1
  423. package/dist/types/src/processor/presets.d.ts +1 -1
  424. package/dist/types/src/processor/presets.d.ts.map +1 -1
  425. package/dist/types/src/processor/processor.d.ts +261 -40
  426. package/dist/types/src/processor/processor.d.ts.map +1 -1
  427. package/dist/types/src/processor/processor.node.test.d.ts +2 -0
  428. package/dist/types/src/processor/processor.node.test.d.ts.map +1 -0
  429. package/dist/types/src/testing/index.d.ts +2 -0
  430. package/dist/types/src/testing/index.d.ts.map +1 -1
  431. package/dist/types/src/testing/snapshot.d.ts +21 -0
  432. package/dist/types/src/testing/snapshot.d.ts.map +1 -0
  433. package/dist/types/src/testing/test-generator.d.ts +4 -4
  434. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  435. package/dist/types/src/testing/test-generator.test.d.ts +2 -0
  436. package/dist/types/src/testing/test-generator.test.d.ts.map +1 -0
  437. package/dist/types/src/testing/test-sequence.d.ts +10 -3
  438. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  439. package/dist/types/src/testing/test-services.d.ts +1 -1
  440. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  441. package/dist/types/src/testing/test-trace.d.ts +5 -0
  442. package/dist/types/src/testing/test-trace.d.ts.map +1 -0
  443. package/dist/types/src/testing/trace-timeline.node.test.d.ts +2 -0
  444. package/dist/types/src/testing/trace-timeline.node.test.d.ts.map +1 -0
  445. package/dist/types/src/testing.d.ts +2 -0
  446. package/dist/types/src/testing.d.ts.map +1 -0
  447. package/dist/types/src/translations.d.ts +2 -88
  448. package/dist/types/src/translations.d.ts.map +1 -1
  449. package/dist/types/src/types/Assistant.d.ts +34 -48
  450. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  451. package/dist/types/src/types/AssistantCapabilities.d.ts +30 -0
  452. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -0
  453. package/dist/types/src/types/AssistantEvents.d.ts +3 -0
  454. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -0
  455. package/dist/types/src/types/AssistantOperation.d.ts +145 -0
  456. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -0
  457. package/dist/types/src/types/Settings.d.ts +27 -0
  458. package/dist/types/src/types/Settings.d.ts.map +1 -0
  459. package/dist/types/src/types/index.d.ts +4 -2
  460. package/dist/types/src/types/index.d.ts.map +1 -1
  461. package/dist/types/src/types/service.d.ts +10 -213
  462. package/dist/types/src/types/service.d.ts.map +1 -1
  463. package/dist/types/src/util/suggestions.d.ts +9 -0
  464. package/dist/types/src/util/suggestions.d.ts.map +1 -0
  465. package/dist/types/src/util/suggestions.test.d.ts +2 -0
  466. package/dist/types/src/util/suggestions.test.d.ts.map +1 -0
  467. package/dist/types/tsconfig.tsbuildinfo +1 -1
  468. package/package.json +206 -110
  469. package/src/AssistantPlugin.node.ts +71 -0
  470. package/src/AssistantPlugin.test.ts +49 -0
  471. package/src/AssistantPlugin.ts +140 -0
  472. package/src/AssistantPlugin.workerd.ts +41 -0
  473. package/src/blueprints/assistant/blueprint.node.test.ts +46 -0
  474. package/src/blueprints/assistant/blueprint.ts +31 -0
  475. package/src/blueprints/assistant/index.ts +5 -0
  476. package/src/{components/Toolbar → blueprints}/index.ts +1 -1
  477. package/src/capabilities/ai-context.ts +85 -0
  478. package/src/capabilities/ai-service.ts +34 -17
  479. package/src/capabilities/app-graph-builder.ts +174 -171
  480. package/src/capabilities/blueprint-definition.ts +47 -55
  481. package/src/capabilities/companion-chat-provisioner.ts +163 -0
  482. package/src/capabilities/create-object.ts +98 -0
  483. package/src/capabilities/edge-model-resolver.ts +22 -14
  484. package/src/capabilities/index.ts +24 -14
  485. package/src/capabilities/local-model-resolver.ts +31 -13
  486. package/src/capabilities/markdown.ts +40 -0
  487. package/src/capabilities/migrations.ts +28 -0
  488. package/src/capabilities/operation-handler.ts +16 -0
  489. package/src/capabilities/react-surface.tsx +161 -78
  490. package/src/capabilities/settings.ts +24 -12
  491. package/src/capabilities/state.ts +27 -12
  492. package/src/capabilities/toolkit.ts +6 -161
  493. package/src/components/AgentProperties/AgentProperties.stories.tsx +74 -0
  494. package/src/components/AgentProperties/AgentProperties.tsx +102 -0
  495. package/src/components/AgentProperties/index.ts +5 -0
  496. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +35 -0
  497. package/src/components/AssistantSettings/AssistantSettings.tsx +30 -99
  498. package/src/components/AssistantSettings/index.ts +2 -2
  499. package/src/components/Chat/Chat.tsx +162 -258
  500. package/src/components/Chat/context.ts +39 -0
  501. package/src/components/Chat/events.ts +7 -1
  502. package/src/components/ChatPrompt/ChatActions.tsx +34 -16
  503. package/src/components/ChatPrompt/ChatMcpErrors.tsx +50 -0
  504. package/src/components/ChatPrompt/ChatOptions.stories.tsx +136 -0
  505. package/src/components/ChatPrompt/ChatOptions.tsx +311 -90
  506. package/src/components/ChatPrompt/ChatPrompt.tsx +182 -0
  507. package/src/components/ChatPrompt/ChatReferences.tsx +28 -18
  508. package/src/components/ChatPrompt/ChatStatus.tsx +123 -0
  509. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +2 -2
  510. package/src/components/ChatPrompt/index.ts +3 -0
  511. package/src/components/ChatThread/Anchor.stories.tsx +95 -0
  512. package/src/components/ChatThread/ChatThread.stories.tsx +81 -71
  513. package/src/components/ChatThread/ChatThread.tsx +62 -46
  514. package/src/components/ChatThread/DEBUG.md +41 -0
  515. package/src/components/ChatThread/Link.tsx +6 -6
  516. package/src/components/ChatThread/MarkdownStream.stories.tsx +281 -0
  517. package/src/components/ChatThread/registry.tsx +184 -78
  518. package/src/components/ChatThread/sync.test.ts +201 -25
  519. package/src/components/ChatThread/sync.ts +105 -68
  520. package/src/components/ChatThread/testing/reasoning.md +25 -0
  521. package/src/components/ChatThread/testing/thinking.md +21 -0
  522. package/src/components/ChatThread/testing/thread-1.md +30 -0
  523. package/src/components/ChatThread/testing/thread-2.md +56 -0
  524. package/src/components/ChatThread/testing/thread-widgets.md +79 -0
  525. package/src/components/ChatThread/tool-widget-state.test.ts +34 -0
  526. package/src/components/ChatThread/tool-widget-state.ts +48 -0
  527. package/src/components/ChatThread/widgets/FallbackWidget.tsx +26 -0
  528. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +68 -0
  529. package/src/components/ChatThread/widgets/ReasoningWidget.ts +133 -0
  530. package/src/components/ChatThread/widgets/ReferenceWidget.ts +33 -0
  531. package/src/components/ChatThread/widgets/SelectWidget.ts +39 -0
  532. package/src/components/ChatThread/widgets/StatsWidget.ts +31 -0
  533. package/src/components/ChatThread/widgets/StatusWidget.ts +53 -0
  534. package/src/components/ChatThread/widgets/SuggestionWidget.ts +41 -0
  535. package/src/components/ChatThread/widgets/SummaryWidget.tsx +27 -0
  536. package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +55 -0
  537. package/src/components/ChatThread/widgets/ToolWidget.tsx +156 -0
  538. package/src/components/ChatThread/widgets/defaults.ts +8 -0
  539. package/src/components/ChatThread/widgets/index.ts +13 -0
  540. package/src/components/ProcessTree/ProcessTree.stories.tsx +83 -0
  541. package/src/components/ProcessTree/ProcessTree.tsx +122 -0
  542. package/src/components/ProcessTree/index.ts +5 -0
  543. package/src/components/RoutineProperties/RoutineProperties.stories.tsx +59 -0
  544. package/src/components/RoutineProperties/RoutineProperties.tsx +23 -0
  545. package/src/components/RoutineProperties/index.ts +5 -0
  546. package/src/components/TaskList/TaskList.stories.tsx +44 -0
  547. package/src/components/TaskList/TaskList.tsx +45 -0
  548. package/src/components/TaskList/index.ts +5 -0
  549. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +18 -14
  550. package/src/components/TemplateEditor/TemplateEditor.tsx +58 -42
  551. package/src/components/TemplateEditor/TemplateForm.stories.tsx +21 -15
  552. package/src/components/TemplateEditor/TemplateForm.tsx +111 -86
  553. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +274 -0
  554. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  555. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  556. package/src/components/ToolBlock/ToolBlock.tsx +46 -54
  557. package/src/components/Toolbox/Toolbox.stories.tsx +16 -18
  558. package/src/components/Toolbox/Toolbox.tsx +72 -66
  559. package/src/components/index.ts +6 -10
  560. package/src/containers/AgentArticle/AgentArticle.stories.tsx +120 -0
  561. package/src/containers/AgentArticle/AgentArticle.tsx +197 -0
  562. package/src/containers/AgentArticle/index.ts +5 -0
  563. package/src/containers/AgentProperties/AgentProperties.tsx +43 -0
  564. package/src/containers/AgentProperties/index.ts +5 -0
  565. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +29 -0
  566. package/src/containers/BlueprintArticle/index.ts +5 -0
  567. package/src/containers/ChatArticle/ChatArticle.stories.tsx +76 -0
  568. package/src/containers/ChatArticle/ChatArticle.tsx +107 -0
  569. package/src/containers/ChatArticle/index.ts +5 -0
  570. package/src/containers/ChatCompanion/ChatCompanion.tsx +133 -0
  571. package/src/containers/ChatCompanion/index.ts +5 -0
  572. package/src/{components → containers/ChatDialog}/ChatDialog.tsx +14 -16
  573. package/src/containers/ChatDialog/index.ts +5 -0
  574. package/src/containers/PlanArticle/PlanArticle.tsx +33 -0
  575. package/src/containers/PlanArticle/index.ts +5 -0
  576. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +75 -0
  577. package/src/containers/RoutineArticle/RoutineArticle.tsx +109 -0
  578. package/src/containers/RoutineArticle/index.ts +5 -0
  579. package/src/containers/RoutineList/RoutineList.stories.tsx +130 -0
  580. package/src/containers/RoutineList/RoutineList.tsx +50 -0
  581. package/src/containers/RoutineList/index.ts +5 -0
  582. package/src/containers/TracePanel/TracePanel.stories.tsx +319 -0
  583. package/src/containers/TracePanel/TracePanel.tsx +213 -0
  584. package/src/containers/TracePanel/dxn-extractor.test.ts +153 -0
  585. package/src/containers/TracePanel/dxn-extractor.ts +168 -0
  586. package/src/containers/TracePanel/index.ts +9 -0
  587. package/src/containers/TracePanel/testing/index.ts +6 -0
  588. package/src/containers/TracePanel/testing/simulated-agent.ts +114 -0
  589. package/src/containers/TracePanel/testing/snapshot-playback.ts +45 -0
  590. package/src/containers/TriggerStatus/TriggerStatus.tsx +129 -0
  591. package/src/containers/TriggerStatus/index.ts +5 -0
  592. package/src/containers/index.ts +17 -0
  593. package/src/execution-graph/SPEC.md +678 -0
  594. package/src/execution-graph/execution-graph.test.ts +799 -0
  595. package/src/execution-graph/execution-graph.ts +714 -0
  596. package/src/execution-graph/index.ts +24 -0
  597. package/src/execution-graph/remote-snapshot.test.ts +116 -0
  598. package/src/execution-graph/span-tree.test.ts +249 -0
  599. package/src/execution-graph/span-tree.ts +259 -0
  600. package/src/execution-graph/testing/collect-trace-events.ts +74 -0
  601. package/src/execution-graph/testing/index.ts +5 -0
  602. package/src/extensions/index.ts +5 -0
  603. package/src/extensions/prompt-extension.ts +111 -0
  604. package/src/feed-logger.ts +149 -0
  605. package/src/hooks/index.ts +4 -1
  606. package/src/hooks/useBlueprintRegistry.ts +48 -27
  607. package/src/hooks/useChatKeymap.ts +52 -0
  608. package/src/hooks/useChatProcessor.ts +60 -28
  609. package/src/hooks/useChatServices.ts +14 -35
  610. package/src/hooks/useChatToolbarActions.ts +120 -0
  611. package/src/hooks/useContextBinder.ts +23 -10
  612. package/src/hooks/useContextObjects.ts +20 -27
  613. package/src/hooks/useDebug.ts +38 -0
  614. package/src/hooks/useFilteredTypes.ts +37 -0
  615. package/src/hooks/usePresets.ts +2 -1
  616. package/src/hooks/useReferencesProvider.ts +11 -22
  617. package/src/index.ts +1 -7
  618. package/src/meta.ts +33 -7
  619. package/src/operations/create-chat.ts +84 -0
  620. package/src/operations/ensure-companion-chat.ts +63 -0
  621. package/src/operations/index.ts +16 -0
  622. package/src/operations/on-create-space.ts +24 -0
  623. package/src/operations/prompt.node.test.ts +80 -0
  624. package/src/operations/resolve-navigation-targets.ts +31 -0
  625. package/src/operations/run-prompt-in-new-chat.ts +113 -0
  626. package/src/operations/set-current-chat.ts +49 -0
  627. package/src/operations/toggle-trace-panel-debug.ts +27 -0
  628. package/src/operations/update-chat-name.ts +61 -0
  629. package/src/plugin.ts +11 -0
  630. package/src/processor/index.ts +0 -1
  631. package/src/processor/presets.ts +12 -4
  632. package/src/processor/processor.node.test.ts +41 -0
  633. package/src/processor/processor.ts +287 -163
  634. package/src/testing/data/trace-timeline-multiple.dx.json +1 -0
  635. package/src/testing/data/trace-timeline-remote.dx.json +1 -0
  636. package/src/testing/data/trace-timeline.dx.json +4657 -0
  637. package/src/testing/index.ts +2 -0
  638. package/src/testing/snapshot.ts +35 -0
  639. package/src/testing/test-generator.test.ts +71 -0
  640. package/src/testing/test-generator.ts +217 -194
  641. package/src/testing/test-sequence.ts +6 -6
  642. package/src/testing/test-services.ts +9 -7
  643. package/src/testing/test-trace.ts +20 -0
  644. package/src/testing/trace-timeline.node.conversations.json +1 -0
  645. package/src/testing/trace-timeline.node.test.ts +250 -0
  646. package/src/testing.ts +9 -0
  647. package/src/translations.ts +162 -82
  648. package/src/types/Assistant.ts +17 -55
  649. package/src/types/AssistantCapabilities.ts +35 -0
  650. package/src/types/AssistantEvents.ts +11 -0
  651. package/src/types/AssistantOperation.ts +152 -0
  652. package/src/types/Settings.ts +82 -0
  653. package/src/types/index.ts +8 -2
  654. package/src/types/service.ts +9 -11
  655. package/src/util/suggestions.test.ts +52 -0
  656. package/src/util/suggestions.ts +42 -0
  657. package/dist/lib/browser/BlueprintContainer-FOZTO447.mjs +0 -28
  658. package/dist/lib/browser/BlueprintContainer-FOZTO447.mjs.map +0 -7
  659. package/dist/lib/browser/ChatCompanion-EC6LBEWF.mjs +0 -150
  660. package/dist/lib/browser/ChatCompanion-EC6LBEWF.mjs.map +0 -7
  661. package/dist/lib/browser/ChatContainer-A2SL6WO5.mjs +0 -73
  662. package/dist/lib/browser/ChatContainer-A2SL6WO5.mjs.map +0 -7
  663. package/dist/lib/browser/ChatDialog-XMOUFX2P.mjs +0 -86
  664. package/dist/lib/browser/ChatDialog-XMOUFX2P.mjs.map +0 -7
  665. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs +0 -150
  666. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs.map +0 -7
  667. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +0 -19
  668. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +0 -7
  669. package/dist/lib/browser/app-graph-builder-7AE4R5KJ.mjs +0 -183
  670. package/dist/lib/browser/app-graph-builder-7AE4R5KJ.mjs.map +0 -7
  671. package/dist/lib/browser/blueprint-definition-NSJARW5U.mjs +0 -12
  672. package/dist/lib/browser/chunk-2CE2KPKZ.mjs +0 -175
  673. package/dist/lib/browser/chunk-2CE2KPKZ.mjs.map +0 -7
  674. package/dist/lib/browser/chunk-37VMDB4P.mjs +0 -220
  675. package/dist/lib/browser/chunk-37VMDB4P.mjs.map +0 -7
  676. package/dist/lib/browser/chunk-3EWE2UQD.mjs +0 -220
  677. package/dist/lib/browser/chunk-3EWE2UQD.mjs.map +0 -7
  678. package/dist/lib/browser/chunk-5EGXHCAZ.mjs +0 -16
  679. package/dist/lib/browser/chunk-5EGXHCAZ.mjs.map +0 -7
  680. package/dist/lib/browser/chunk-5RICKAMN.mjs +0 -18
  681. package/dist/lib/browser/chunk-5RICKAMN.mjs.map +0 -7
  682. package/dist/lib/browser/chunk-7THOIN6F.mjs +0 -1802
  683. package/dist/lib/browser/chunk-7THOIN6F.mjs.map +0 -7
  684. package/dist/lib/browser/chunk-HYYWP3KP.mjs +0 -170
  685. package/dist/lib/browser/chunk-HYYWP3KP.mjs.map +0 -7
  686. package/dist/lib/browser/chunk-Z7DQT64Z.mjs +0 -301
  687. package/dist/lib/browser/chunk-Z7DQT64Z.mjs.map +0 -7
  688. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +0 -18
  689. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +0 -7
  690. package/dist/lib/browser/index.mjs +0 -370
  691. package/dist/lib/browser/index.mjs.map +0 -7
  692. package/dist/lib/browser/intent-resolver-BZUU4UNA.mjs +0 -130
  693. package/dist/lib/browser/intent-resolver-BZUU4UNA.mjs.map +0 -7
  694. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +0 -17
  695. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +0 -7
  696. package/dist/lib/browser/meta.json +0 -1
  697. package/dist/lib/browser/react-surface-KRRUOMYY.mjs +0 -107
  698. package/dist/lib/browser/react-surface-KRRUOMYY.mjs.map +0 -7
  699. package/dist/lib/browser/settings-PSR3WF3X.mjs +0 -23
  700. package/dist/lib/browser/settings-PSR3WF3X.mjs.map +0 -7
  701. package/dist/lib/browser/state-LXTS54DI.mjs +0 -21
  702. package/dist/lib/browser/state-LXTS54DI.mjs.map +0 -7
  703. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs +0 -199
  704. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs.map +0 -7
  705. package/dist/lib/browser/types/index.mjs +0 -19
  706. package/dist/lib/node-esm/BlueprintContainer-6HSEVQ7U.mjs +0 -29
  707. package/dist/lib/node-esm/BlueprintContainer-6HSEVQ7U.mjs.map +0 -7
  708. package/dist/lib/node-esm/ChatCompanion-NDYEAUQN.mjs +0 -151
  709. package/dist/lib/node-esm/ChatCompanion-NDYEAUQN.mjs.map +0 -7
  710. package/dist/lib/node-esm/ChatContainer-NMDQM5HG.mjs +0 -74
  711. package/dist/lib/node-esm/ChatContainer-NMDQM5HG.mjs.map +0 -7
  712. package/dist/lib/node-esm/ChatDialog-QPRWMRU4.mjs +0 -87
  713. package/dist/lib/node-esm/ChatDialog-QPRWMRU4.mjs.map +0 -7
  714. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs +0 -151
  715. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs.map +0 -7
  716. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +0 -20
  717. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +0 -7
  718. package/dist/lib/node-esm/app-graph-builder-SJCOS64C.mjs +0 -184
  719. package/dist/lib/node-esm/app-graph-builder-SJCOS64C.mjs.map +0 -7
  720. package/dist/lib/node-esm/blueprint-definition-WD2IVMAI.mjs +0 -13
  721. package/dist/lib/node-esm/chunk-73ABYRYX.mjs +0 -20
  722. package/dist/lib/node-esm/chunk-73ABYRYX.mjs.map +0 -7
  723. package/dist/lib/node-esm/chunk-HDZX6TSZ.mjs +0 -221
  724. package/dist/lib/node-esm/chunk-HDZX6TSZ.mjs.map +0 -7
  725. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  726. package/dist/lib/node-esm/chunk-TMCGJPAN.mjs +0 -171
  727. package/dist/lib/node-esm/chunk-TMCGJPAN.mjs.map +0 -7
  728. package/dist/lib/node-esm/chunk-TW2WKKSR.mjs +0 -302
  729. package/dist/lib/node-esm/chunk-TW2WKKSR.mjs.map +0 -7
  730. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs +0 -177
  731. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs.map +0 -7
  732. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs +0 -17
  733. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs.map +0 -7
  734. package/dist/lib/node-esm/chunk-YZYGXFVG.mjs +0 -1803
  735. package/dist/lib/node-esm/chunk-YZYGXFVG.mjs.map +0 -7
  736. package/dist/lib/node-esm/chunk-ZQ3THJ2W.mjs +0 -221
  737. package/dist/lib/node-esm/chunk-ZQ3THJ2W.mjs.map +0 -7
  738. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +0 -19
  739. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +0 -7
  740. package/dist/lib/node-esm/index.mjs +0 -371
  741. package/dist/lib/node-esm/index.mjs.map +0 -7
  742. package/dist/lib/node-esm/intent-resolver-B7YAS3NT.mjs +0 -131
  743. package/dist/lib/node-esm/intent-resolver-B7YAS3NT.mjs.map +0 -7
  744. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +0 -18
  745. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +0 -7
  746. package/dist/lib/node-esm/meta.json +0 -1
  747. package/dist/lib/node-esm/react-surface-VRDDARFF.mjs +0 -108
  748. package/dist/lib/node-esm/react-surface-VRDDARFF.mjs.map +0 -7
  749. package/dist/lib/node-esm/settings-4EBIOJVK.mjs +0 -24
  750. package/dist/lib/node-esm/settings-4EBIOJVK.mjs.map +0 -7
  751. package/dist/lib/node-esm/state-BO6GUFLB.mjs +0 -22
  752. package/dist/lib/node-esm/state-BO6GUFLB.mjs.map +0 -7
  753. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs +0 -200
  754. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs.map +0 -7
  755. package/dist/lib/node-esm/types/index.mjs +0 -20
  756. package/dist/types/src/capabilities/capabilities.d.ts +0 -11
  757. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  758. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  759. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  760. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  761. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  762. package/dist/types/src/components/BlueprintSettings.d.ts +0 -6
  763. package/dist/types/src/components/BlueprintSettings.d.ts.map +0 -1
  764. package/dist/types/src/components/ChatCompanion.d.ts +0 -13
  765. package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
  766. package/dist/types/src/components/ChatContainer.d.ts +0 -11
  767. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  768. package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
  769. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +0 -7
  770. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +0 -1
  771. package/dist/types/src/components/ChatProgress/index.d.ts +0 -2
  772. package/dist/types/src/components/ChatProgress/index.d.ts.map +0 -1
  773. package/dist/types/src/components/ChatThread/reducers.d.ts +0 -40
  774. package/dist/types/src/components/ChatThread/reducers.d.ts.map +0 -1
  775. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  776. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  777. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  778. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  779. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -272
  780. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  781. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  782. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  783. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  784. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -5
  785. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  786. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  787. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  788. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -9
  789. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  790. package/dist/types/src/events.d.ts +0 -4
  791. package/dist/types/src/events.d.ts.map +0 -1
  792. package/dist/types/src/functions/analysis.d.ts +0 -5
  793. package/dist/types/src/functions/analysis.d.ts.map +0 -1
  794. package/dist/types/src/functions/index.d.ts +0 -4
  795. package/dist/types/src/functions/index.d.ts.map +0 -1
  796. package/dist/types/src/functions/list.d.ts +0 -10
  797. package/dist/types/src/functions/list.d.ts.map +0 -1
  798. package/dist/types/src/functions/load.d.ts +0 -8
  799. package/dist/types/src/functions/load.d.ts.map +0 -1
  800. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  801. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  802. package/dist/types/src/processor/processor.test.d.ts +0 -2
  803. package/dist/types/src/processor/processor.test.d.ts.map +0 -1
  804. package/dist/types/src/processor/update-name.d.ts +0 -10
  805. package/dist/types/src/processor/update-name.d.ts.map +0 -1
  806. package/dist/types/src/queue-logger.d.ts +0 -11
  807. package/dist/types/src/queue-logger.d.ts.map +0 -1
  808. package/dist/types/src/types/AssistantAction.d.ts +0 -122
  809. package/dist/types/src/types/AssistantAction.d.ts.map +0 -1
  810. package/dist/types/src/types/defs.d.ts +0 -2
  811. package/dist/types/src/types/defs.d.ts.map +0 -1
  812. package/src/AssistantPlugin.tsx +0 -170
  813. package/src/capabilities/capabilities.ts +0 -18
  814. package/src/capabilities/intent-resolver.ts +0 -117
  815. package/src/components/BlueprintContainer.tsx +0 -24
  816. package/src/components/BlueprintSettings.tsx +0 -15
  817. package/src/components/ChatCompanion.tsx +0 -136
  818. package/src/components/ChatContainer.tsx +0 -51
  819. package/src/components/ChatProgress/ChatProgress.tsx +0 -67
  820. package/src/components/ChatProgress/index.ts +0 -5
  821. package/src/components/ChatThread/reducers.ts +0 -151
  822. package/src/components/SequenceContainer.tsx +0 -131
  823. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -34
  824. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  825. package/src/components/SequenceEditor/index.ts +0 -5
  826. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  827. package/src/components/Toolbar/Toolbar.tsx +0 -21
  828. package/src/components/Toolbar/useChatToolbarActions.ts +0 -126
  829. package/src/events.ts +0 -11
  830. package/src/functions/analysis.ts +0 -22
  831. package/src/functions/index.ts +0 -7
  832. package/src/functions/list.ts +0 -48
  833. package/src/functions/load.ts +0 -46
  834. package/src/hooks/useItemTypes.ts +0 -37
  835. package/src/processor/processor.test.ts +0 -81
  836. package/src/processor/update-name.ts +0 -57
  837. package/src/queue-logger.ts +0 -125
  838. package/src/types/AssistantAction.ts +0 -70
  839. package/src/types/defs.ts +0 -5
  840. /package/dist/lib/{browser/blueprint-definition-NSJARW5U.mjs.map → neutral/AssistantPlugin.mjs.map} +0 -0
  841. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/ChatArticle-WVAFZPVI.mjs.map} +0 -0
  842. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  843. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  844. /package/dist/lib/{node-esm/blueprint-definition-WD2IVMAI.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  845. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  846. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
  847. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -1,1803 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- meta
4
- } from "./chunk-73ABYRYX.mjs";
5
-
6
- // src/hooks/useBlueprintRegistry.ts
7
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
8
- import { useSignalEffect } from "@preact/signals-react";
9
- import { useCallback, useMemo, useState } from "react";
10
- import { Capabilities, useCapabilities } from "@dxos/app-framework";
11
- import { Blueprint } from "@dxos/blueprints";
12
- import { Filter, Obj, Ref } from "@dxos/echo";
13
- import { useQuery } from "@dxos/react-client/echo";
14
- import { distinctBy, isNonNullable } from "@dxos/util";
15
- var useBlueprintRegistry = () => {
16
- const blueprints = useCapabilities(Capabilities.BlueprintDefinition);
17
- return useMemo(() => new Blueprint.Registry(blueprints), [
18
- blueprints
19
- ]);
20
- };
21
- var useBlueprints = ({ blueprintRegistry, space }) => {
22
- const staticBlueprints = useMemo(() => blueprintRegistry?.query() ?? [], [
23
- blueprintRegistry
24
- ]);
25
- const spaceBlueprints = useQuery(space, Filter.type(Blueprint.Blueprint));
26
- return useMemo(() => {
27
- const blueprints = distinctBy([
28
- ...staticBlueprints,
29
- ...spaceBlueprints
30
- ], (b) => b.key);
31
- blueprints.sort(({ name: a }, { name: b }) => a.localeCompare(b));
32
- return blueprints;
33
- }, [
34
- staticBlueprints,
35
- spaceBlueprints
36
- ]);
37
- };
38
- var useActiveBlueprints = ({ context }) => {
39
- var _effect = _useSignals();
40
- try {
41
- const [active, setActive] = useState(/* @__PURE__ */ new Map());
42
- useSignalEffect(() => {
43
- const refs = [
44
- ...context?.blueprints.value ?? []
45
- ];
46
- const blueprints = refs.map((ref) => ref.target).filter(isNonNullable);
47
- setActive(new Map(blueprints.map((blueprint) => [
48
- blueprint.key,
49
- blueprint
50
- ])));
51
- });
52
- return active;
53
- } finally {
54
- _effect.f();
55
- }
56
- };
57
- var useBlueprintHandlers = ({ space, context, blueprintRegistry }) => {
58
- const onUpdateBlueprint = useCallback(async (key, checked) => {
59
- if (!context || !blueprintRegistry) {
60
- return;
61
- }
62
- const { objects } = await space.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 = space.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
- space,
86
- context,
87
- blueprintRegistry
88
- ]);
89
- return {
90
- onUpdateBlueprint
91
- };
92
- };
93
-
94
- // src/hooks/useChatProcessor.ts
95
- import { RegistryContext } from "@effect-rx/rx-react";
96
- import { useContext, useMemo as useMemo2, useState as useState2 } from "react";
97
- import { AiConversation } from "@dxos/assistant";
98
- import { log as log2 } from "@dxos/log";
99
- import { useAsyncEffect } from "@dxos/react-ui";
100
-
101
- // src/processor/presets.ts
102
- import * as Schema from "effect/Schema";
103
- var ModelProviders = [
104
- "dxos-local",
105
- "dxos-remote",
106
- "lm-studio"
107
- ];
108
- var ModelProvider = Schema.Literal(...ModelProviders);
109
- var createModelLabel = (model) => {
110
- const parts = model.split("/");
111
- return parts[parts.length - 1];
112
- };
113
- var AiServicePresets = [
114
- {
115
- provider: "dxos-remote",
116
- model: "@anthropic/claude-opus-4-0"
117
- },
118
- {
119
- provider: "dxos-remote",
120
- model: "@anthropic/claude-sonnet-4-0"
121
- },
122
- {
123
- provider: "dxos-remote",
124
- model: "@anthropic/claude-3-5-haiku-20241022"
125
- },
126
- {
127
- provider: "lm-studio",
128
- model: "@google/gemma-3-27b"
129
- },
130
- {
131
- provider: "lm-studio",
132
- model: "@mlx-community/llama-3.2-3b-instruct"
133
- },
134
- {
135
- model: "deepseek-r1:latest",
136
- provider: "dxos-local"
137
- }
138
- ].map(({ model, provider }, i) => ({
139
- id: `preset-${i}`,
140
- provider,
141
- model,
142
- label: createModelLabel(model)
143
- }));
144
-
145
- // src/processor/processor.ts
146
- import { Registry, Rx } from "@effect-rx/rx-react";
147
- import * as Cause from "effect/Cause";
148
- import * as Effect2 from "effect/Effect";
149
- import * as Exit2 from "effect/Exit";
150
- import * as Fiber2 from "effect/Fiber";
151
- import * as Option from "effect/Option";
152
- import * as Runtime2 from "effect/Runtime";
153
- import { AiService as AiService2, DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL2 } from "@dxos/ai";
154
- import { ArtifactDiffResolver, GenerationObserver, createSystemPrompt } from "@dxos/assistant";
155
- import { Obj as Obj2 } from "@dxos/echo";
156
- import { throwCause as throwCause2 } from "@dxos/effect";
157
- import { log } from "@dxos/log";
158
- import { DataType } from "@dxos/schema";
159
-
160
- // src/processor/update-name.ts
161
- import * as Effect from "effect/Effect";
162
- import * as Exit from "effect/Exit";
163
- import * as Fiber from "effect/Fiber";
164
- import * as Runtime from "effect/Runtime";
165
- import { AiService, DEFAULT_EDGE_MODEL } from "@dxos/ai";
166
- import { AiSession } from "@dxos/assistant";
167
- import { throwCause } from "@dxos/effect";
168
- import { trim } from "@dxos/util";
169
- var updateName = async (runtime2, conversation, chat, model = DEFAULT_EDGE_MODEL) => {
170
- const history = await conversation.getHistory();
171
- const system = trim`
172
- It is extremely important that you respond only with the title and nothing else.
173
- If you cannot do this effectively respond with "New Chat".
174
- `;
175
- const prompt = "Suggest a name for this chat";
176
- const fiber = Effect.gen(void 0, function* () {
177
- const session = new AiSession();
178
- return yield* session.run({
179
- system,
180
- prompt,
181
- history
182
- });
183
- }).pipe(Effect.provide(AiService.model(model)), Effect.tap((messages) => {
184
- const message = messages.find((message2) => message2.sender.role === "assistant");
185
- const title = message?.blocks.find((block) => block._tag === "text")?.text;
186
- if (title) {
187
- chat.name = title;
188
- }
189
- }), Runtime.runFork(runtime2));
190
- const response = await fiber.pipe(Fiber.join, Effect.runPromiseExit);
191
- if (!Exit.isSuccess(response)) {
192
- throwCause(response.cause);
193
- }
194
- };
195
-
196
- // src/processor/processor.ts
197
- function _define_property(obj, key, value) {
198
- if (key in obj) {
199
- Object.defineProperty(obj, key, {
200
- value,
201
- enumerable: true,
202
- configurable: true,
203
- writable: true
204
- });
205
- } else {
206
- obj[key] = value;
207
- }
208
- return obj;
209
- }
210
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/processor/processor.ts";
211
- var defaultOptions = {
212
- model: DEFAULT_EDGE_MODEL2
213
- };
214
- var AiChatProcessor = class {
215
- get context() {
216
- return this._conversation.context;
217
- }
218
- get conversation() {
219
- return this._conversation;
220
- }
221
- get blueprintRegistry() {
222
- return this._options.blueprintRegistry;
223
- }
224
- /**
225
- * Initiates a new request.
226
- */
227
- async request(requestParam) {
228
- if (this._fiber) {
229
- await this.cancel();
230
- }
231
- try {
232
- this._lastRequest = requestParam;
233
- this._rx.set(this.error, Option.none());
234
- this._rx.set(this.active, true);
235
- const request = this._conversation.createRequest({
236
- system: this._options.system,
237
- prompt: requestParam.message,
238
- observer: this._observer
239
- });
240
- const runtime2 = await this._services();
241
- this._fiber = request.pipe(
242
- Effect2.provide(AiService2.model(this._options.model ?? DEFAULT_EDGE_MODEL2)),
243
- // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.
244
- Effect2.provideService(ArtifactDiffResolver, this._artifactDiffResolver),
245
- Effect2.asVoid,
246
- Runtime2.runFork(runtime2)
247
- );
248
- const response = await this._fiber.pipe(Fiber2.join, Effect2.runPromiseExit);
249
- if (!Exit2.isSuccess(response) && !Cause.isInterruptedOnly(response.cause)) {
250
- throwCause2(response.cause);
251
- }
252
- this._rx.set(this.error, Option.none());
253
- this._lastRequest = void 0;
254
- this._fiber = void 0;
255
- } catch (error) {
256
- log.error("request failed", {
257
- error
258
- }, {
259
- F: __dxlog_file,
260
- L: 187,
261
- S: this,
262
- C: (f, a) => f(...a)
263
- });
264
- this._rx.set(this.error, Option.some(new Error("AI service error", {
265
- cause: error
266
- })));
267
- } finally {
268
- this._fiber = void 0;
269
- this._rx.set(this.active, false);
270
- }
271
- }
272
- /**
273
- * Cancels the current request.
274
- */
275
- async cancel() {
276
- await Effect2.runPromise(Effect2.gen(this, function* () {
277
- if (this._fiber) {
278
- yield* this._fiber.pipe(Fiber2.interrupt);
279
- }
280
- }));
281
- this._fiber = void 0;
282
- this._rx.set(this.active, false);
283
- }
284
- /**
285
- * Retry last failed request.
286
- */
287
- async retry() {
288
- if (this._lastRequest) {
289
- return this.request(this._lastRequest);
290
- }
291
- }
292
- /**
293
- * Update the current chat's name.
294
- */
295
- async updateName(chat) {
296
- const runtime2 = await this._services();
297
- await updateName(runtime2, this._conversation, chat, this._options.model);
298
- }
299
- constructor(_conversation, _services, _options = defaultOptions) {
300
- _define_property(this, "_conversation", void 0);
301
- _define_property(this, "_services", void 0);
302
- _define_property(this, "_options", void 0);
303
- _define_property(this, "_rx", void 0);
304
- _define_property(this, "_observer", void 0);
305
- _define_property(this, "_fiber", void 0);
306
- _define_property(this, "_lastRequest", void 0);
307
- _define_property(this, "_pending", void 0);
308
- _define_property(this, "_streaming", void 0);
309
- _define_property(this, "streaming", void 0);
310
- _define_property(this, "active", void 0);
311
- _define_property(this, "messages", void 0);
312
- _define_property(this, "error", void 0);
313
- _define_property(this, "_artifactDiffResolver", void 0);
314
- _define_property(this, "_onMessage", void 0);
315
- _define_property(this, "_onBlock", void 0);
316
- this._conversation = _conversation;
317
- this._services = _services;
318
- this._options = _options;
319
- this._pending = Rx.make([]);
320
- this._streaming = Rx.make(Option.none());
321
- this.streaming = Rx.make((get) => Option.isSome(get(this._streaming)));
322
- this.active = Rx.make(false);
323
- this.messages = Rx.make((get) => Option.match(get(this._streaming), {
324
- onNone: () => get(this._pending),
325
- onSome: (streaming) => [
326
- ...get(this._pending),
327
- streaming
328
- ]
329
- }));
330
- this.error = Rx.make(Option.none());
331
- this._artifactDiffResolver = {
332
- resolve: async (_artifacts) => {
333
- const versions = /* @__PURE__ */ new Map();
334
- return versions;
335
- }
336
- };
337
- this._onMessage = Effect2.fn((function* (message) {
338
- this._rx.set(this._streaming, Option.none());
339
- this._rx.update(this._pending, (pending) => [
340
- ...pending,
341
- message
342
- ]);
343
- }).bind(this));
344
- this._onBlock = Effect2.fn((function* (block) {
345
- this._rx.update(this._streaming, (streaming) => {
346
- const blocks = streaming.pipe(Option.map((streaming2) => streaming2.blocks.filter((b) => !b.pending)), Option.getOrElse(() => []));
347
- return Option.some(Obj2.make(DataType.Message, {
348
- created: (/* @__PURE__ */ new Date()).toISOString(),
349
- sender: {
350
- role: "assistant"
351
- },
352
- blocks: [
353
- ...blocks,
354
- block
355
- ]
356
- }));
357
- });
358
- }).bind(this));
359
- this._rx = this._options.observableRegistry ?? Registry.make();
360
- this._observer = GenerationObserver.make({
361
- onBlock: this._onBlock,
362
- onMessage: this._onMessage
363
- });
364
- if (this._options.model && !this._options.system) {
365
- const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};
366
- this._options.system = createSystemPrompt(capabilities);
367
- }
368
- }
369
- };
370
-
371
- // src/hooks/useChatProcessor.ts
372
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.ts";
373
- var useChatProcessor = ({ chat, preset, services, blueprintRegistry, settings }) => {
374
- const observableRegistry = useContext(RegistryContext);
375
- const [conversation, setConversation] = useState2();
376
- useAsyncEffect(async () => {
377
- if (!chat?.queue.target) {
378
- return;
379
- }
380
- const conversation2 = new AiConversation(chat.queue.target);
381
- await conversation2.open();
382
- setConversation(conversation2);
383
- return () => {
384
- void conversation2.close();
385
- };
386
- }, [
387
- chat?.queue.target
388
- ]);
389
- const processor = useMemo2(() => {
390
- if (!services || !conversation) {
391
- return void 0;
392
- }
393
- log2("creating processor", {
394
- preset,
395
- model: preset?.model,
396
- settings
397
- }, {
398
- F: __dxlog_file2,
399
- L: 60,
400
- S: void 0,
401
- C: (f, a) => f(...a)
402
- });
403
- return new AiChatProcessor(conversation, services, {
404
- observableRegistry,
405
- blueprintRegistry,
406
- model: preset?.model
407
- });
408
- }, [
409
- services,
410
- conversation,
411
- blueprintRegistry,
412
- preset
413
- ]);
414
- return processor;
415
- };
416
-
417
- // src/hooks/useChatServices.ts
418
- import * as Effect3 from "effect/Effect";
419
- import { useMemo as useMemo3 } from "react";
420
- import { useCapability } from "@dxos/app-framework";
421
- import { TracingService } from "@dxos/functions";
422
- import { AutomationCapabilities } from "@dxos/plugin-automation";
423
- import { useClient } from "@dxos/react-client";
424
- var useChatServices = ({ space, chat }) => {
425
- const client = useClient();
426
- space ?? (space = client.spaces.default);
427
- const computeRuntimeResolver = useCapability(AutomationCapabilities.ComputeRuntime);
428
- return useMemo3(() => {
429
- const runtime2 = computeRuntimeResolver.getRuntime(space.id);
430
- return () => runtime2.runPromise(Effect3.gen(function* () {
431
- return yield* Effect3.runtime().pipe(Effect3.provide(chat?.traceQueue?.target ? TracingService.layerQueue(chat.traceQueue?.target) : TracingService.layerNoop));
432
- }));
433
- }, [
434
- space,
435
- chat?.traceQueue?.target
436
- ]);
437
- };
438
-
439
- // src/hooks/useContextBinder.ts
440
- import { useState as useState3 } from "react";
441
- import { AiContextBinder } from "@dxos/assistant";
442
- import { useAsyncEffect as useAsyncEffect2 } from "@dxos/react-ui";
443
- var useContextBinder = (chat) => {
444
- const [binder, setBinder] = useState3();
445
- useAsyncEffect2(async () => {
446
- if (!chat?.queue.target) {
447
- return;
448
- }
449
- const binder2 = new AiContextBinder(chat.queue.target);
450
- await binder2.open();
451
- setBinder(binder2);
452
- return () => {
453
- void binder2.close();
454
- };
455
- }, [
456
- chat?.queue.target
457
- ]);
458
- return binder;
459
- };
460
-
461
- // src/hooks/useContextObjects.ts
462
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
463
- import { useCallback as useCallback2 } from "react";
464
- import { Ref as Ref2 } from "@dxos/echo";
465
- import { log as log3 } from "@dxos/log";
466
- import { isNonNullable as isNonNullable2 } from "@dxos/util";
467
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useContextObjects.ts";
468
- var useContextObjects = ({ space, context }) => {
469
- var _effect = _useSignals2();
470
- try {
471
- const objects = context?.objects.value.map((ref) => ref.target).filter(isNonNullable2) ?? [];
472
- const handleUpdateObject = useCallback2(async (dxn, checked) => {
473
- if (!space || !context) {
474
- return;
475
- }
476
- const id = dxn.asEchoDXN();
477
- const object = id && await space.db.getObjectById(id.echoId);
478
- if (!object) {
479
- log3.warn("Object not found", {
480
- dxn,
481
- id
482
- }, {
483
- F: __dxlog_file3,
484
- L: 40,
485
- S: void 0,
486
- C: (f, a) => f(...a)
487
- });
488
- return;
489
- }
490
- const ref = Ref2.fromDXN(dxn);
491
- if (checked) {
492
- await context.bind({
493
- objects: [
494
- ref
495
- ]
496
- });
497
- } else {
498
- await context.unbind({
499
- objects: [
500
- ref
501
- ]
502
- });
503
- }
504
- }, [
505
- space,
506
- context
507
- ]);
508
- return {
509
- objects,
510
- onUpdateObject: handleUpdateObject
511
- };
512
- } finally {
513
- _effect.f();
514
- }
515
- };
516
-
517
- // src/hooks/useFlush.ts
518
- import { useCallback as useCallback3, useRef, useState as useState4 } from "react";
519
- var useFlush = (space) => {
520
- const [state, setState] = useState4("idle");
521
- const resetTimer = useRef(null);
522
- const handleFlush = useCallback3(() => {
523
- if (!space) {
524
- return;
525
- }
526
- queueMicrotask(async () => {
527
- if (resetTimer.current) {
528
- clearTimeout(resetTimer.current);
529
- }
530
- setState("flushing");
531
- await space.db.flush();
532
- setState("flushed");
533
- resetTimer.current = setTimeout(() => {
534
- setState("idle");
535
- resetTimer.current = null;
536
- }, 1e3);
537
- });
538
- }, [
539
- space
540
- ]);
541
- return {
542
- state,
543
- handleFlush
544
- };
545
- };
546
-
547
- // src/hooks/useItemTypes.ts
548
- import * as Option2 from "effect/Option";
549
- import { useEffect, useState as useState5 } from "react";
550
- import { ItemAnnotation } from "@dxos/schema";
551
- var useItemTypes = (space) => {
552
- const [types, setTypes] = useState5([]);
553
- useEffect(() => {
554
- if (!space) {
555
- return;
556
- }
557
- return space.db.schemaRegistry.query().subscribe((query) => {
558
- const types2 = Array.from(new Set([
559
- ...space.db.graph.schemaRegistry.schemas,
560
- ...query.results
561
- ].filter((type) => Option2.isSome(ItemAnnotation.get(type)))));
562
- setTypes(types2);
563
- }, {
564
- fire: true
565
- });
566
- }, [
567
- space
568
- ]);
569
- return types;
570
- };
571
-
572
- // src/hooks/useOnline.ts
573
- import { useState as useState6 } from "react";
574
- var useOnline = () => {
575
- const [online, setOnline] = useState6(true);
576
- return [
577
- online,
578
- setOnline
579
- ];
580
- };
581
-
582
- // src/hooks/usePresets.ts
583
- import { useCallback as useCallback4, useEffect as useEffect2, useMemo as useMemo4, useState as useState7 } from "react";
584
- var usePresets = (online) => {
585
- const [preset, setPreset] = useState7();
586
- const presets = useMemo4(() => AiServicePresets.filter((preset2) => online === (preset2.provider === "dxos-remote")), [
587
- online
588
- ]);
589
- const presetOptions = useMemo4(() => presets.map(({ id, model, label }) => ({
590
- id,
591
- label: label ?? model
592
- })), [
593
- presets
594
- ]);
595
- useEffect2(() => {
596
- setPreset(presets[0]);
597
- }, [
598
- presets
599
- ]);
600
- const handlePresetChange = useCallback4((id) => {
601
- const preset2 = presets.find((preset3) => preset3.id === id);
602
- if (preset2) {
603
- setPreset(preset2);
604
- }
605
- }, [
606
- presets
607
- ]);
608
- return {
609
- preset,
610
- presets: presetOptions,
611
- onPresetChange: handlePresetChange
612
- };
613
- };
614
-
615
- // src/hooks/useReferencesProvider.ts
616
- import { useMemo as useMemo5 } from "react";
617
- import { Capabilities as Capabilities2, useCapabilities as useCapabilities2 } from "@dxos/app-framework";
618
- import { Filter as Filter2, Obj as Obj3 } from "@dxos/echo";
619
- var useReferencesProvider = (space) => {
620
- const blueprints = useCapabilities2(Capabilities2.BlueprintDefinition);
621
- return useMemo5(() => {
622
- if (!space) {
623
- return void 0;
624
- }
625
- return {
626
- getReferences: async ({ query }) => {
627
- const { objects } = await space.db.query(Filter2.everything()).run();
628
- return objects.filter((object) => stringMatch(query, Obj3.getLabel(object) ?? "")).filter((object) => !!Obj3.getDXN(object)).map((object) => ({
629
- uri: Obj3.getDXN(object).toString(),
630
- label: Obj3.getLabel(object) ?? ""
631
- }));
632
- },
633
- resolveReference: async ({ uri }) => {
634
- const object = await space.db.query(Filter2.ids(uri)).first();
635
- return {
636
- uri,
637
- label: Obj3.getLabel(object) ?? ""
638
- };
639
- }
640
- };
641
- }, [
642
- space,
643
- blueprints
644
- ]);
645
- };
646
- var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
647
-
648
- // src/components/Chat/Chat.tsx
649
- import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
650
- import { Prec } from "@codemirror/state";
651
- import { keymap } from "@codemirror/view";
652
- import { useRxValue } from "@effect-rx/rx-react";
653
- import { createContext } from "@radix-ui/react-context";
654
- import * as Array2 from "effect/Array";
655
- import * as Option3 from "effect/Option";
656
- import React9, { useCallback as useCallback6, useEffect as useEffect6, useMemo as useMemo9, useRef as useRef3, useState as useState12 } from "react";
657
- import { Event } from "@dxos/async";
658
- import { Obj as Obj6 } from "@dxos/echo";
659
- import { useVoiceInput } from "@dxos/plugin-transcription";
660
- import { getSpace, useQueue } from "@dxos/react-client/echo";
661
- import { useIdentity } from "@dxos/react-client/halo";
662
- import { Input, useDynamicRef, useTranslation as useTranslation5 } from "@dxos/react-ui";
663
- import { ChatEditor, references } from "@dxos/react-ui-chat";
664
- import { mx as mx5 } from "@dxos/react-ui-theme";
665
- import { DataType as DataType2 } from "@dxos/schema";
666
- import { isTruthy } from "@dxos/util";
667
-
668
- // src/components/ChatPrompt/ChatActions.tsx
669
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
670
- import React from "react";
671
- import { IconButton, useTranslation } from "@dxos/react-ui";
672
- import { mx } from "@dxos/react-ui-theme";
673
- var ChatActions = ({ classNames, children, microphone, recording, processing, onEvent }) => {
674
- var _effect = _useSignals3();
675
- try {
676
- const { t } = useTranslation(meta.id);
677
- return /* @__PURE__ */ React.createElement("div", {
678
- className: mx("flex items-center mie-1", classNames)
679
- }, children, /* @__PURE__ */ React.createElement(IconButton, {
680
- disabled: !processing,
681
- variant: "ghost",
682
- size: 5,
683
- icon: "ph--x--regular",
684
- iconOnly: true,
685
- label: t("button cancel processing"),
686
- onClick: () => onEvent?.({
687
- type: "cancel"
688
- })
689
- }), microphone && /* @__PURE__ */ React.createElement(IconButton, {
690
- disabled: !processing,
691
- classNames: mx(recording && "bg-primary-500"),
692
- variant: "ghost",
693
- size: 5,
694
- icon: "ph--microphone--regular",
695
- iconOnly: true,
696
- noTooltip: true,
697
- label: t("button microphone"),
698
- onMouseDown: () => onEvent?.({
699
- type: "record-start"
700
- }),
701
- onMouseUp: () => onEvent?.({
702
- type: "record-stop"
703
- }),
704
- onTouchStart: () => onEvent?.({
705
- type: "record-start"
706
- }),
707
- onTouchEnd: () => onEvent?.({
708
- type: "record-stop"
709
- })
710
- }));
711
- } finally {
712
- _effect.f();
713
- }
714
- };
715
-
716
- // src/components/ChatPrompt/ChatOptions.tsx
717
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
718
- import React2, { useMemo as useMemo6, useState as useState8 } from "react";
719
- import { Filter as Filter3, Obj as Obj4, Type } from "@dxos/echo";
720
- import { useQuery as useQuery2 } from "@dxos/react-client/echo";
721
- import { Icon, IconButton as IconButton2, Popover, Select, useTranslation as useTranslation2 } from "@dxos/react-ui";
722
- import { Listbox, SearchList } from "@dxos/react-ui-searchlist";
723
- import { Tabs } from "@dxos/react-ui-tabs";
724
- var panelClassNames = "is-[calc(100dvw-.5rem)] sm:is-max md:is-72 max-is-[--text-content]";
725
- var ChatOptions = ({ space, context, blueprintRegistry, presets, preset, onPresetChange }) => {
726
- var _effect = _useSignals4();
727
- try {
728
- const { t } = useTranslation2(meta.id);
729
- return /* @__PURE__ */ React2.createElement("div", {
730
- role: "none",
731
- className: "flex gap-0.5"
732
- }, /* @__PURE__ */ React2.createElement(Popover.Root, null, /* @__PURE__ */ React2.createElement(Popover.Trigger, {
733
- asChild: true
734
- }, /* @__PURE__ */ React2.createElement(IconButton2, {
735
- variant: "ghost",
736
- icon: "ph--plus--regular",
737
- iconOnly: true,
738
- size: 5,
739
- label: t("button context objects")
740
- })), /* @__PURE__ */ React2.createElement(Popover.Portal, null, /* @__PURE__ */ React2.createElement(Popover.Content, {
741
- side: "top",
742
- classNames: panelClassNames
743
- }, /* @__PURE__ */ React2.createElement(ObjectsPanel, {
744
- space,
745
- context
746
- }), /* @__PURE__ */ React2.createElement(Popover.Arrow, null)))), /* @__PURE__ */ React2.createElement(Popover.Root, null, /* @__PURE__ */ React2.createElement(Popover.Trigger, {
747
- asChild: true
748
- }, /* @__PURE__ */ React2.createElement(IconButton2, {
749
- variant: "ghost",
750
- icon: "ph--sliders-horizontal--regular",
751
- iconOnly: true,
752
- size: 5,
753
- label: t("button context settings")
754
- })), /* @__PURE__ */ React2.createElement(Popover.Portal, null, /* @__PURE__ */ React2.createElement(Popover.Content, {
755
- side: "top",
756
- classNames: panelClassNames
757
- }, /* @__PURE__ */ React2.createElement(Tabs.Root, {
758
- orientation: "horizontal",
759
- defaultValue: "blueprints",
760
- defaultActivePart: "list",
761
- tabIndex: -1
762
- }, /* @__PURE__ */ React2.createElement(Tabs.Viewport, {
763
- classNames: 'max-bs-[--radix-popover-content-available-height] grid grid-rows-[1fr_min-content] [&_[cmdk-root]]:contents [&_[role="tabpanel"]]:grid [&_[role="tabpanel"]]:grid-rows-[1fr_min-content] [&_[role="listbox"]]:min-bs-0 [&_[role="listbox"]]:overflow-y-auto [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:pli-cardSpacingChrome [&_[role="tabpanel"][data-state="active"]]:order-first [&_[role="tabpanel"][data-state="inactive"]]:hidden'
764
- }, /* @__PURE__ */ React2.createElement(Tabs.Tabpanel, {
765
- value: "blueprints",
766
- tabIndex: -1,
767
- classNames: "dx-focus-ring-inset"
768
- }, /* @__PURE__ */ React2.createElement(BlueprintsPanel, {
769
- blueprintRegistry,
770
- space,
771
- context
772
- })), /* @__PURE__ */ React2.createElement(Tabs.Tabpanel, {
773
- value: "model",
774
- tabIndex: -1,
775
- classNames: "dx-focus-ring-inset !pli-0"
776
- }, /* @__PURE__ */ React2.createElement(ModelsPanel, {
777
- presets,
778
- preset,
779
- onPresetChange
780
- })), /* @__PURE__ */ React2.createElement(Tabs.Tablist, {
781
- classNames: "sm:overflow-x-hidden justify-center p-[--dx-cardSpacingChrome] border-bs border-subduedSeparator order-last"
782
- }, /* @__PURE__ */ React2.createElement(Tabs.IconTab, {
783
- value: "blueprints",
784
- icon: "ph--blueprint--regular",
785
- label: t("blueprints in context title")
786
- }), /* @__PURE__ */ React2.createElement(Tabs.IconTab, {
787
- value: "model",
788
- label: t("chat model title"),
789
- icon: "ph--cpu--regular"
790
- })))), /* @__PURE__ */ React2.createElement(Popover.Arrow, null)))));
791
- } finally {
792
- _effect.f();
793
- }
794
- };
795
- var BlueprintsPanel = ({ blueprintRegistry, space, context }) => {
796
- var _effect = _useSignals4();
797
- try {
798
- const { t } = useTranslation2(meta.id);
799
- const blueprints = useBlueprints({
800
- blueprintRegistry,
801
- space
802
- });
803
- const activeBlueprints = useActiveBlueprints({
804
- context
805
- });
806
- const { onUpdateBlueprint } = useBlueprintHandlers({
807
- space,
808
- context,
809
- blueprintRegistry
810
- });
811
- return /* @__PURE__ */ React2.createElement(SearchList.Root, null, /* @__PURE__ */ React2.createElement(SearchList.Content, {
812
- classNames: "plb-cardSpacingChrome"
813
- }, blueprints.map((blueprint) => {
814
- const isActive = activeBlueprints.has(blueprint.key);
815
- return /* @__PURE__ */ React2.createElement(SearchList.Item, {
816
- classNames: "flex items-center overflow-hidden",
817
- key: blueprint.key,
818
- value: blueprint.name,
819
- onSelect: () => onUpdateBlueprint?.(blueprint.key, !isActive)
820
- }, /* @__PURE__ */ React2.createElement("div", {
821
- className: "grow truncate"
822
- }, blueprint.name), /* @__PURE__ */ React2.createElement(Icon, {
823
- icon: "ph--check--regular",
824
- classNames: [
825
- !isActive && "invisible"
826
- ]
827
- }));
828
- })), /* @__PURE__ */ React2.createElement(SearchList.Input, {
829
- placeholder: t("search placeholder"),
830
- classNames: "mbe-cardSpacingChrome",
831
- autoFocus: true
832
- }));
833
- } finally {
834
- _effect.f();
835
- }
836
- };
837
- var ModelsPanel = ({ presets, preset, onPresetChange }) => {
838
- var _effect = _useSignals4();
839
- try {
840
- return /* @__PURE__ */ React2.createElement(Listbox.Root, {
841
- value: preset,
842
- onValueChange: onPresetChange,
843
- autoFocus: true
844
- }, presets?.map(({ id, label }) => {
845
- return /* @__PURE__ */ React2.createElement(Listbox.Option, {
846
- key: id,
847
- value: id
848
- }, /* @__PURE__ */ React2.createElement(Listbox.OptionLabel, null, label), /* @__PURE__ */ React2.createElement(Listbox.OptionIndicator, null));
849
- }));
850
- } finally {
851
- _effect.f();
852
- }
853
- };
854
- var ANY = "__any__";
855
- var ObjectsPanel = ({ space, context }) => {
856
- var _effect = _useSignals4();
857
- try {
858
- const { t } = useTranslation2(meta.id);
859
- const types = useItemTypes(space);
860
- const typenames = useMemo6(() => {
861
- const typenames2 = types.map((type) => {
862
- const typename2 = Type.getTypename(type);
863
- return {
864
- typename: typename2,
865
- label: t("typename label", {
866
- ns: typename2,
867
- defaultValue: typename2
868
- })
869
- };
870
- });
871
- typenames2.sort((a, b) => a.label.localeCompare(b.label));
872
- return typenames2;
873
- }, [
874
- types
875
- ]);
876
- const [typename, setTypename] = useState8(ANY);
877
- const anyFilter = useMemo6(() => Filter3.or(...typenames.map(({ typename: typename2 }) => Filter3.typename(typename2))), [
878
- typenames
879
- ]);
880
- const objects = useQuery2(space, typename === ANY ? anyFilter : Filter3.typename(typename));
881
- const { objects: contextObjects, onUpdateObject } = useContextObjects({
882
- space,
883
- context
884
- });
885
- return /* @__PURE__ */ React2.createElement(SearchList.Root, null, /* @__PURE__ */ React2.createElement(SearchList.Content, {
886
- classNames: "p-cardSpacingChrome [&:has([cmdk-list-sizer]:empty)]:plb-0"
887
- }, objects.length ? objects.map((object) => {
888
- const label = Obj4.getLabel(object) ?? Obj4.getTypename(object) ?? object.id;
889
- const isActive = contextObjects.findIndex((obj) => obj.id === object.id) !== -1;
890
- return /* @__PURE__ */ React2.createElement(SearchList.Item, {
891
- classNames: "flex items-center overflow-hidden",
892
- key: object.id,
893
- value: object.id,
894
- onSelect: () => onUpdateObject?.(Obj4.getDXN(object), !isActive)
895
- }, /* @__PURE__ */ React2.createElement("div", {
896
- className: "grow truncate"
897
- }, label), /* @__PURE__ */ React2.createElement(Icon, {
898
- icon: "ph--check--regular",
899
- classNames: [
900
- !isActive && "invisible"
901
- ]
902
- }));
903
- }) : /* @__PURE__ */ React2.createElement(SearchList.Item, null, t("no results"))), /* @__PURE__ */ React2.createElement("div", {
904
- role: "none",
905
- className: "grid grid-cols-[min-content_1fr] gap-2 pli-cardSpacingChrome mbe-cardSpacingChrome"
906
- }, /* @__PURE__ */ React2.createElement(Select.Root, {
907
- value: typename === ANY ? void 0 : typename,
908
- onValueChange: setTypename
909
- }, /* @__PURE__ */ React2.createElement(Select.TriggerButton, {
910
- density: "fine",
911
- placeholder: t("type filter placeholder")
912
- }), /* @__PURE__ */ React2.createElement(Select.Portal, null, /* @__PURE__ */ React2.createElement(Select.Content, null, /* @__PURE__ */ React2.createElement(Select.ScrollUpButton, null), /* @__PURE__ */ React2.createElement(Select.Viewport, null, /* @__PURE__ */ React2.createElement(Select.Option, {
913
- value: ANY
914
- }, t("any type filter label")), typenames.map(({ typename: typename2, label }) => /* @__PURE__ */ React2.createElement(Select.Option, {
915
- key: typename2,
916
- value: typename2
917
- }, label))), /* @__PURE__ */ React2.createElement(Select.ScrollDownButton, null), /* @__PURE__ */ React2.createElement(Select.Arrow, null)))), /* @__PURE__ */ React2.createElement(SearchList.Input, {
918
- placeholder: t("search placeholder"),
919
- classNames: "mbe-0",
920
- autoFocus: true
921
- })));
922
- } finally {
923
- _effect.f();
924
- }
925
- };
926
-
927
- // src/components/ChatPrompt/ChatPresets.tsx
928
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
929
- import React3 from "react";
930
- import { Select as Select2 } from "@dxos/react-ui";
931
-
932
- // src/components/ChatPrompt/ChatReferences.tsx
933
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
934
- import React4 from "react";
935
- import { Obj as Obj5 } from "@dxos/echo";
936
- import { IconButton as IconButton3, toLocalizedString, useTranslation as useTranslation3 } from "@dxos/react-ui";
937
- import { mx as mx2 } from "@dxos/react-ui-theme";
938
- var ChatReferences = ({ classNames, context, space }) => {
939
- var _effect = _useSignals6();
940
- try {
941
- const { t } = useTranslation3(meta.id);
942
- const { objects, onUpdateObject } = useContextObjects({
943
- space,
944
- context
945
- });
946
- return /* @__PURE__ */ React4.createElement("ul", {
947
- className: mx2("flex flex-wrap", classNames)
948
- }, objects.map((obj) => {
949
- const dxn = Obj5.getDXN(obj);
950
- const typename = Obj5.getTypename(obj);
951
- const label = Obj5.getLabel(obj) ?? (typename ? [
952
- "object name placeholder",
953
- {
954
- ns: typename
955
- }
956
- ] : obj.id);
957
- return /* @__PURE__ */ React4.createElement("li", {
958
- key: dxn.toString(),
959
- className: "dx-tag plb-0 pis-2 flex items-center",
960
- "data-hue": "neutral"
961
- }, toLocalizedString(label, t), /* @__PURE__ */ React4.createElement(IconButton3, {
962
- iconOnly: true,
963
- variant: "ghost",
964
- label: t("remove object in context label"),
965
- classNames: "p-0 hover:bg-transparent",
966
- size: 3,
967
- icon: "ph--x--bold",
968
- onClick: () => onUpdateObject?.(dxn, false)
969
- }));
970
- }));
971
- } finally {
972
- _effect.f();
973
- }
974
- };
975
-
976
- // src/components/ChatPrompt/ChatStatusIndicator.tsx
977
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
978
- import React5, { useEffect as useEffect3, useState as useState9 } from "react";
979
- import { Tooltip, useTimeout } from "@dxos/react-ui";
980
- import { Spinner } from "@dxos/react-ui-sfx";
981
- import { mx as mx3 } from "@dxos/react-ui-theme";
982
- var period = 3e3;
983
- var ChatStatusIndicator = ({ classNames, preset, processing, error, ...props }) => {
984
- var _effect = _useSignals7();
985
- try {
986
- const [init, setInit] = useState9(false);
987
- useEffect3(() => setInit(false), [
988
- preset
989
- ]);
990
- useTimeout(async () => {
991
- setInit(true);
992
- }, period / 2, [
993
- preset
994
- ]);
995
- return /* @__PURE__ */ React5.createElement("div", {
996
- role: "none",
997
- className: mx3("relative flex", classNames)
998
- }, /* @__PURE__ */ React5.createElement(Spinner, {
999
- duration: period,
1000
- state: !init ? "flash" : error ? "error" : processing ? "spin" : "pulse",
1001
- ...props
1002
- }), error && /* @__PURE__ */ React5.createElement(Tooltip.Trigger, {
1003
- asChild: true,
1004
- content: error.message
1005
- }, /* @__PURE__ */ React5.createElement("div", {
1006
- className: "absolute inset-0"
1007
- })));
1008
- } finally {
1009
- _effect.f();
1010
- }
1011
- };
1012
-
1013
- // src/components/ChatThread/ChatThread.tsx
1014
- import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
1015
- import React8, { forwardRef, useCallback as useCallback5, useEffect as useEffect5, useImperativeHandle, useMemo as useMemo8, useState as useState11 } from "react";
1016
- import { PublicKey } from "@dxos/keys";
1017
- import { MarkdownStream } from "@dxos/react-ui-components";
1018
- import { mx as mx4 } from "@dxos/react-ui-theme";
1019
- import { keyToFallback } from "@dxos/util";
1020
-
1021
- // src/components/ChatThread/registry.tsx
1022
- import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
1023
- import React7 from "react";
1024
- import { log as log4 } from "@dxos/log";
1025
- import { PromptWidget, ReferenceWidget, SelectWidget, SuggestionWidget, SummaryWidget, ToggleContainer as ToggleContainer2 } from "@dxos/react-ui-components";
1026
- import { getXmlTextChild } from "@dxos/react-ui-editor";
1027
- import { Json as Json2 } from "@dxos/react-ui-syntax-highlighter";
1028
- import { ContentBlock } from "@dxos/schema";
1029
-
1030
- // src/components/ToolBlock/ToolBlock.tsx
1031
- import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
1032
- import React6, { useEffect as useEffect4, useMemo as useMemo7, useRef as useRef2, useState as useState10 } from "react";
1033
- import { useTranslation as useTranslation4 } from "@dxos/react-ui";
1034
- import { NumericTabs, TextCrawl, ToggleContainer, chatMessageJson, chatMessagePanel, chatMessagePanelContent, chatMessagePanelHeader } from "@dxos/react-ui-components";
1035
- import { Json } from "@dxos/react-ui-syntax-highlighter";
1036
- import { isNonNullable as isNonNullable3, safeParseJson } from "@dxos/util";
1037
- var ToolBlock = ({ blocks = [] }) => {
1038
- var _effect = _useSignals8();
1039
- try {
1040
- const { t } = useTranslation4(meta.id);
1041
- const getToolCaption = (tool, status) => {
1042
- if (!tool) {
1043
- return t("calling tool label");
1044
- }
1045
- return status?.message ?? tool.description ?? [
1046
- t("calling label"),
1047
- tool.name
1048
- ].join(" ");
1049
- };
1050
- const items = useMemo7(() => {
1051
- let lastToolCall;
1052
- const tools = [];
1053
- return blocks.filter((block) => block._tag === "toolCall" || block._tag === "toolResult" || block._tag === "summary").map((block) => {
1054
- switch (block._tag) {
1055
- case "toolCall": {
1056
- if (block.pending && lastToolCall?.block.toolCallId === block.toolCallId) {
1057
- return null;
1058
- }
1059
- const tool = tools.find((tool2) => tool2.name === block.name);
1060
- lastToolCall = {
1061
- tool,
1062
- block
1063
- };
1064
- return {
1065
- title: getToolCaption(lastToolCall?.tool),
1066
- content: {
1067
- ...block,
1068
- input: safeParseJson(block.input)
1069
- }
1070
- };
1071
- }
1072
- case "toolResult": {
1073
- if (block.error) {
1074
- return {
1075
- title: t("error label"),
1076
- content: block
1077
- };
1078
- }
1079
- const title = getToolCaption(lastToolCall?.tool ?? t("tool result label"));
1080
- lastToolCall = void 0;
1081
- return {
1082
- title,
1083
- content: {
1084
- ...block,
1085
- result: safeParseJson(block.result)
1086
- }
1087
- };
1088
- }
1089
- case "summary": {
1090
- if (!lastToolCall) {
1091
- return null;
1092
- }
1093
- return {
1094
- title: t("summary label"),
1095
- content: block
1096
- };
1097
- }
1098
- }
1099
- }).filter(isNonNullable3);
1100
- }, [
1101
- blocks
1102
- ]);
1103
- if (!items.length) {
1104
- return null;
1105
- }
1106
- return /* @__PURE__ */ React6.createElement(ToolContainer, {
1107
- items
1108
- });
1109
- } finally {
1110
- _effect.f();
1111
- }
1112
- };
1113
- ToolBlock.displayName = "ToolBlock";
1114
- var ToolContainer = ({ items }) => {
1115
- var _effect = _useSignals8();
1116
- try {
1117
- const tabsRef = useRef2(null);
1118
- const [selected, setSelected] = useState10(0);
1119
- const [open, setOpen] = useState10(false);
1120
- useEffect4(() => {
1121
- if (open) {
1122
- tabsRef.current?.focus();
1123
- }
1124
- }, [
1125
- open
1126
- ]);
1127
- const handleSelect = (index) => {
1128
- setSelected(index);
1129
- };
1130
- const data = items[selected]?.content;
1131
- return /* @__PURE__ */ React6.createElement(ToggleContainer.Root, {
1132
- classNames: chatMessagePanel,
1133
- open,
1134
- onChangeOpen: setOpen
1135
- }, /* @__PURE__ */ React6.createElement(ToggleContainer.Header, {
1136
- classNames: chatMessagePanelHeader
1137
- }, /* @__PURE__ */ React6.createElement(TextCrawl, {
1138
- key: "status-roll",
1139
- lines: items.map((item) => item.title)
1140
- })), /* @__PURE__ */ React6.createElement(ToggleContainer.Content, {
1141
- classNames: [
1142
- "grid grid-cols-[32px_1fr]",
1143
- chatMessagePanelContent
1144
- ]
1145
- }, /* @__PURE__ */ React6.createElement(NumericTabs, {
1146
- ref: tabsRef,
1147
- classNames: "p-1",
1148
- length: items.length,
1149
- selected,
1150
- onSelect: handleSelect
1151
- }), /* @__PURE__ */ React6.createElement(Json, {
1152
- data,
1153
- classNames: chatMessageJson,
1154
- replacer: {
1155
- maxDepth: 3,
1156
- maxArrayLen: 10,
1157
- maxStringLen: 128
1158
- }
1159
- })));
1160
- } finally {
1161
- _effect.f();
1162
- }
1163
- };
1164
-
1165
- // src/components/ChatThread/registry.tsx
1166
- var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/components/ChatThread/registry.tsx";
1167
- var Fallback = ({ _tag, ...props }) => {
1168
- var _effect = _useSignals9();
1169
- try {
1170
- return /* @__PURE__ */ React7.createElement(ToggleContainer2.Root, {
1171
- classNames: "rounded-sm"
1172
- }, /* @__PURE__ */ React7.createElement(ToggleContainer2.Header, {
1173
- classNames: "bg-groupSurface"
1174
- }, _tag), /* @__PURE__ */ React7.createElement(ToggleContainer2.Content, {
1175
- classNames: "bg-modalSurface"
1176
- }, /* @__PURE__ */ React7.createElement(Json2, {
1177
- classNames: "!p-2 text-sm",
1178
- data: props
1179
- })));
1180
- } finally {
1181
- _effect.f();
1182
- }
1183
- };
1184
- var componentRegistry = {
1185
- //
1186
- // Widgets
1187
- //
1188
- ["prompt"]: {
1189
- block: true,
1190
- factory: (props) => {
1191
- const text = getXmlTextChild(props.children);
1192
- return text ? new PromptWidget(text) : null;
1193
- }
1194
- },
1195
- ["reference"]: {
1196
- block: false,
1197
- factory: (props) => {
1198
- const text = getXmlTextChild(props.children);
1199
- return text && props.ref ? new ReferenceWidget(text, props.ref) : null;
1200
- }
1201
- },
1202
- ["select"]: {
1203
- block: true,
1204
- factory: (props) => {
1205
- const options = props.children?.map((option) => option._tag === "option" && getXmlTextChild(option.children)).filter(Boolean);
1206
- return options?.length ? new SelectWidget(options) : null;
1207
- }
1208
- },
1209
- ["suggestion"]: {
1210
- block: true,
1211
- factory: (props) => {
1212
- const text = getXmlTextChild(props.children);
1213
- return text ? new SuggestionWidget(text) : null;
1214
- }
1215
- },
1216
- ["summary"]: {
1217
- block: true,
1218
- factory: (props) => {
1219
- const text = getXmlTextChild(props.children);
1220
- return text ? new SummaryWidget(text) : null;
1221
- }
1222
- },
1223
- //
1224
- // React
1225
- //
1226
- ["toolCall"]: {
1227
- block: true,
1228
- Component: ToolBlock
1229
- },
1230
- ["toolResult"]: {
1231
- block: true,
1232
- Component: Fallback
1233
- },
1234
- ["toolkit"]: {
1235
- block: true,
1236
- Component: Fallback
1237
- },
1238
- //
1239
- // Fallback
1240
- //
1241
- ["json"]: {
1242
- block: true,
1243
- Component: Fallback
1244
- }
1245
- };
1246
- var blockToMarkdown = (context, message, block) => {
1247
- let str = _blockToMarkdown(context, message, block);
1248
- if (str && !block.pending) {
1249
- return str += "\n";
1250
- }
1251
- return str;
1252
- };
1253
- var _blockToMarkdown = (context, message, block) => {
1254
- log4("blockToMarkdown", {
1255
- block: JSON.stringify(block)
1256
- }, {
1257
- F: __dxlog_file4,
1258
- L: 125,
1259
- S: void 0,
1260
- C: (f, a) => f(...a)
1261
- });
1262
- switch (block._tag) {
1263
- case "text": {
1264
- if (message.sender.role === "user") {
1265
- return `
1266
- <prompt>${block.text}</prompt>
1267
- `;
1268
- } else {
1269
- const text = block.text.trim();
1270
- if (text.length > 0) {
1271
- return text;
1272
- }
1273
- }
1274
- break;
1275
- }
1276
- case "suggestion": {
1277
- if (block.pending) {
1278
- return;
1279
- }
1280
- return `<suggestion>${block.text}</suggestion>`;
1281
- }
1282
- case "select": {
1283
- if (block.pending || block.options.length === 0) {
1284
- return;
1285
- }
1286
- return `<select>${block.options.map((option) => `<option>${option}</option>`).join("")}</select>`;
1287
- }
1288
- // TODO(burdon): Need label.
1289
- case "reference": {
1290
- return `<reference ref="${block.reference.dxn.toString()}">Ref</reference>`;
1291
- }
1292
- // case 'toolkit': {
1293
- // return `<toolkit />`;
1294
- // }
1295
- case "toolCall": {
1296
- context.updateWidget(block.toolCallId, {
1297
- blocks: [
1298
- block
1299
- ]
1300
- });
1301
- return `<toolCall id="${block.toolCallId}" />`;
1302
- }
1303
- case "toolResult": {
1304
- context.updateWidget(block.toolCallId, ({ blocks = [] }) => ({
1305
- blocks: [
1306
- ...blocks,
1307
- block
1308
- ]
1309
- }));
1310
- break;
1311
- }
1312
- case "summary": {
1313
- return `<summary>${ContentBlock.createSummaryMessage(block)}</summary>`;
1314
- }
1315
- // TODO(burdon): Need stable ID.
1316
- default: {
1317
- return `<json id="${message.id}">
1318
- ${JSON.stringify(block)}
1319
- </json>`;
1320
- }
1321
- }
1322
- };
1323
-
1324
- // src/components/ChatThread/sync.ts
1325
- import { log as log5 } from "@dxos/log";
1326
- function _define_property2(obj, key, value) {
1327
- if (key in obj) {
1328
- Object.defineProperty(obj, key, {
1329
- value,
1330
- enumerable: true,
1331
- configurable: true,
1332
- writable: true
1333
- });
1334
- } else {
1335
- obj[key] = value;
1336
- }
1337
- return obj;
1338
- }
1339
- var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/components/ChatThread/sync.ts";
1340
- var MessageThreadContext = class {
1341
- updateWidget(id, value) {
1342
- this._widgetState?.updateWidget(id, value);
1343
- }
1344
- constructor(_widgetState) {
1345
- _define_property2(this, "_widgetState", void 0);
1346
- this._widgetState = _widgetState;
1347
- }
1348
- };
1349
- var MessageSyncer = class {
1350
- get context() {
1351
- return this._context;
1352
- }
1353
- reset() {
1354
- log5("reset", void 0, {
1355
- F: __dxlog_file5,
1356
- L: 58,
1357
- S: this,
1358
- C: (f, a) => f(...a)
1359
- });
1360
- this._initialMessageId = void 0;
1361
- this._currentMessageIndex = 0;
1362
- this._currentBlockIndex = 0;
1363
- this._currentBlockContent = void 0;
1364
- void this._model.reset("");
1365
- }
1366
- sync(messages) {
1367
- log5("sync", {
1368
- messages: messages.map((message) => message.blocks.length),
1369
- currentMessageIndex: this._currentMessageIndex,
1370
- currentBlockIndex: this._currentBlockIndex,
1371
- currentBlockContent: this._currentBlockContent
1372
- }, {
1373
- F: __dxlog_file5,
1374
- L: 67,
1375
- S: this,
1376
- C: (f, a) => f(...a)
1377
- });
1378
- if (this._initialMessageId !== messages[0]?.id) {
1379
- this.reset();
1380
- this._initialMessageId = messages[0]?.id;
1381
- }
1382
- let i = this._currentMessageIndex;
1383
- for (const message of messages.slice(this._currentMessageIndex)) {
1384
- if (i > this._currentMessageIndex) {
1385
- this._currentBlockIndex = 0;
1386
- }
1387
- this._currentMessageIndex = i;
1388
- let j = this._currentBlockIndex;
1389
- for (const block of message.blocks.slice(this._currentBlockIndex)) {
1390
- this._currentBlockIndex = j;
1391
- const currentBlockContent = this._blockRenderer(this._context, message, block);
1392
- if (currentBlockContent) {
1393
- let content = "";
1394
- if (this._currentBlockContent && currentBlockContent.startsWith(this._currentBlockContent)) {
1395
- content = currentBlockContent.slice(this._currentBlockContent.length);
1396
- } else {
1397
- content = currentBlockContent;
1398
- }
1399
- void this._model.append(content);
1400
- this._currentBlockContent = currentBlockContent;
1401
- log5("append", {
1402
- message: i,
1403
- block: j,
1404
- content
1405
- }, {
1406
- F: __dxlog_file5,
1407
- L: 99,
1408
- S: this,
1409
- C: (f, a) => f(...a)
1410
- });
1411
- }
1412
- if (block.pending) {
1413
- return;
1414
- } else {
1415
- this._currentBlockContent = void 0;
1416
- this._currentBlockIndex++;
1417
- }
1418
- j++;
1419
- }
1420
- i++;
1421
- }
1422
- }
1423
- constructor(_model, _blockRenderer) {
1424
- _define_property2(this, "_model", void 0);
1425
- _define_property2(this, "_blockRenderer", void 0);
1426
- _define_property2(this, "_initialMessageId", void 0);
1427
- _define_property2(this, "_currentMessageIndex", void 0);
1428
- _define_property2(this, "_currentBlockIndex", void 0);
1429
- _define_property2(this, "_currentBlockContent", void 0);
1430
- _define_property2(this, "_context", void 0);
1431
- this._model = _model;
1432
- this._blockRenderer = _blockRenderer;
1433
- this._currentMessageIndex = 0;
1434
- this._currentBlockIndex = 0;
1435
- this._context = new MessageThreadContext(this._model);
1436
- }
1437
- };
1438
-
1439
- // src/components/ChatThread/ChatThread.tsx
1440
- var ChatThread = /* @__PURE__ */ forwardRef(({ classNames, identity, messages = [], error, cursor = false, fadeIn = true, overscroll, onEvent }, forwardedRef) => {
1441
- var _effect = _useSignals10();
1442
- try {
1443
- const userHue = useMemo8(() => {
1444
- return identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue;
1445
- }, [
1446
- identity
1447
- ]);
1448
- const [controller, setController] = useState11(null);
1449
- useImperativeHandle(forwardedRef, () => controller ? controller : null, [
1450
- controller
1451
- ]);
1452
- useEffect5(() => {
1453
- controller?.scrollToBottom();
1454
- }, [
1455
- controller,
1456
- error
1457
- ]);
1458
- const syncer = useMemo8(() => controller && new MessageSyncer(controller, blockToMarkdown), [
1459
- controller
1460
- ]);
1461
- useEffect5(() => {
1462
- syncer?.sync(messages);
1463
- }, [
1464
- syncer,
1465
- messages
1466
- ]);
1467
- const handleEvent = useCallback5((ev) => {
1468
- switch (ev.type) {
1469
- case "submit": {
1470
- ev.value && onEvent?.({
1471
- type: "submit",
1472
- text: ev.value
1473
- });
1474
- break;
1475
- }
1476
- }
1477
- }, [
1478
- onEvent
1479
- ]);
1480
- return /* @__PURE__ */ React8.createElement("div", {
1481
- className: mx4("flex bs-full is-full justify-center overflow-hidden", classNames),
1482
- style: {
1483
- "--user-fill": `var(--dx-${userHue}Fill)`
1484
- }
1485
- }, /* @__PURE__ */ React8.createElement(MarkdownStream, {
1486
- ref: setController,
1487
- registry: componentRegistry,
1488
- cursor,
1489
- fadeIn,
1490
- overscroll,
1491
- onEvent: handleEvent
1492
- }));
1493
- } finally {
1494
- _effect.f();
1495
- }
1496
- });
1497
-
1498
- // src/components/Chat/Chat.tsx
1499
- var [ChatContextProvider, useChatContext] = createContext("Chat");
1500
- var ChatRoot = ({ classNames, children, chat, processor, onEvent, ...props }) => {
1501
- var _effect = _useSignals11();
1502
- try {
1503
- const [debug, setDebug] = useState12(false);
1504
- const space = getSpace(chat);
1505
- const queue = useQueue(chat?.queue.dxn);
1506
- const pending = useRxValue(processor.messages);
1507
- const streaming = useRxValue(processor.streaming);
1508
- const lastPrompt = useRef3(void 0);
1509
- const messages = useMemo9(() => {
1510
- const queueMessages = queue?.objects?.filter(Obj6.instanceOf(DataType2.Message)) ?? [];
1511
- return Array2.dedupeWith([
1512
- ...queueMessages,
1513
- ...pending
1514
- ], (a, b) => a.id === b.id);
1515
- }, [
1516
- queue?.objects,
1517
- pending
1518
- ]);
1519
- const event = useMemo9(() => new Event(), []);
1520
- useEffect6(() => {
1521
- return event.on((ev) => {
1522
- switch (ev.type) {
1523
- case "toggle-debug": {
1524
- setDebug((current) => !current);
1525
- break;
1526
- }
1527
- case "submit": {
1528
- const text = ev.text.trim();
1529
- if (!streaming && text.length) {
1530
- lastPrompt.current = ev.text;
1531
- void processor.request({
1532
- message: text
1533
- });
1534
- }
1535
- break;
1536
- }
1537
- case "retry": {
1538
- if (!streaming) {
1539
- void processor.retry();
1540
- }
1541
- break;
1542
- }
1543
- case "cancel": {
1544
- if (streaming) {
1545
- void processor.cancel();
1546
- if (lastPrompt.current) {
1547
- event.emit({
1548
- type: "update-prompt",
1549
- text: lastPrompt.current
1550
- });
1551
- }
1552
- }
1553
- break;
1554
- }
1555
- default: {
1556
- onEvent?.(ev);
1557
- }
1558
- }
1559
- });
1560
- }, [
1561
- event,
1562
- processor,
1563
- streaming,
1564
- onEvent
1565
- ]);
1566
- if (!space) {
1567
- return null;
1568
- }
1569
- return /* @__PURE__ */ React9.createElement(ChatContextProvider, {
1570
- debug,
1571
- event,
1572
- chat,
1573
- space,
1574
- messages,
1575
- processor,
1576
- ...props
1577
- }, /* @__PURE__ */ React9.createElement("div", {
1578
- role: "none",
1579
- className: mx5("flex flex-col bs-full is-full", classNames)
1580
- }, children));
1581
- } finally {
1582
- _effect.f();
1583
- }
1584
- };
1585
- ChatRoot.displayName = "Chat.Root";
1586
- var ChatPrompt = ({ classNames, outline, settings = true, placeholder, expandable, online, presets, preset, onPresetChange, onOnlineChange }) => {
1587
- var _effect = _useSignals11();
1588
- try {
1589
- const { t } = useTranslation5(meta.id);
1590
- const { space, event, processor } = useChatContext(ChatPrompt.displayName);
1591
- const error = useRxValue(processor.error).pipe(Option3.getOrUndefined);
1592
- const streaming = useRxValue(processor.streaming);
1593
- const active = useRxValue(processor.active);
1594
- const activeRef = useDynamicRef(active);
1595
- const editorRef = useRef3(null);
1596
- const [recordingState, setRecordingState] = useState12(false);
1597
- useEffect6(() => {
1598
- return event.on((event2) => {
1599
- switch (event2.type) {
1600
- case "update-prompt":
1601
- if (!editorRef.current?.getText()?.length) {
1602
- editorRef.current?.setText(event2.text);
1603
- editorRef.current?.focus();
1604
- }
1605
- break;
1606
- case "record-start":
1607
- setRecordingState(true);
1608
- break;
1609
- case "record-stop":
1610
- setRecordingState(false);
1611
- break;
1612
- }
1613
- });
1614
- }, [
1615
- event
1616
- ]);
1617
- const { recording } = useVoiceInput({
1618
- active: recordingState,
1619
- onUpdate: (text) => {
1620
- editorRef.current?.setText(text);
1621
- editorRef.current?.focus();
1622
- }
1623
- });
1624
- const referencesProvider = useReferencesProvider(space);
1625
- const extensions = useMemo9(() => {
1626
- return [
1627
- referencesProvider && references({
1628
- provider: referencesProvider
1629
- }),
1630
- Prec.highest(keymap.of([
1631
- {
1632
- key: "cmd-d",
1633
- preventDefault: true,
1634
- run: () => {
1635
- event.emit({
1636
- type: "toggle-debug"
1637
- });
1638
- return true;
1639
- }
1640
- },
1641
- expandable && {
1642
- key: "cmd-ArrowUp",
1643
- preventDefault: true,
1644
- run: () => {
1645
- event.emit({
1646
- type: "thread-open"
1647
- });
1648
- return true;
1649
- }
1650
- },
1651
- expandable && {
1652
- key: "cmd-ArrowDown",
1653
- preventDefault: true,
1654
- run: () => {
1655
- event.emit({
1656
- type: "thread-close"
1657
- });
1658
- return true;
1659
- }
1660
- }
1661
- ].filter(isTruthy)))
1662
- ].filter(isTruthy);
1663
- }, [
1664
- event,
1665
- expandable,
1666
- referencesProvider
1667
- ]);
1668
- const handleSubmit = useCallback6((text) => {
1669
- if (!activeRef.current) {
1670
- event.emit({
1671
- type: "submit",
1672
- text
1673
- });
1674
- return true;
1675
- }
1676
- }, [
1677
- event
1678
- ]);
1679
- const handleEvent = useCallback6((ev) => {
1680
- event.emit(ev);
1681
- }, [
1682
- event
1683
- ]);
1684
- return /* @__PURE__ */ React9.createElement("div", {
1685
- role: "group",
1686
- className: mx5("flex flex-col is-full density-fine", outline && [
1687
- "p-2 bg-groupSurface border border-subduedSeparator transition transition-border [&:has(.cm-content:focus)]:border-separator rounded"
1688
- ], classNames)
1689
- }, /* @__PURE__ */ React9.createElement("div", {
1690
- role: "none",
1691
- className: "flex gap-2"
1692
- }, /* @__PURE__ */ React9.createElement(ChatStatusIndicator, {
1693
- classNames: "p-1",
1694
- preset,
1695
- error,
1696
- processing: streaming
1697
- }), /* @__PURE__ */ React9.createElement(ChatEditor, {
1698
- ref: editorRef,
1699
- autoFocus: true,
1700
- lineWrapping: true,
1701
- classNames: "col-span-2 pbs-0.5",
1702
- placeholder: placeholder ?? t("prompt placeholder"),
1703
- extensions,
1704
- onSubmit: handleSubmit
1705
- })), settings && /* @__PURE__ */ React9.createElement("div", {
1706
- role: "none",
1707
- className: "flex pbs-2 items-center"
1708
- }, /* @__PURE__ */ React9.createElement(ChatOptions, {
1709
- space,
1710
- blueprintRegistry: processor.blueprintRegistry,
1711
- context: processor.context,
1712
- preset,
1713
- presets,
1714
- onPresetChange
1715
- }), /* @__PURE__ */ React9.createElement("div", {
1716
- role: "none",
1717
- className: "pli-cardSpacingChrome grow"
1718
- }, /* @__PURE__ */ React9.createElement(ChatReferences, {
1719
- space,
1720
- context: processor.context
1721
- })), /* @__PURE__ */ React9.createElement(ChatActions, {
1722
- classNames: "col-span-2",
1723
- microphone: true,
1724
- recording,
1725
- processing: streaming,
1726
- onEvent: handleEvent
1727
- }, online !== void 0 && /* @__PURE__ */ React9.createElement(Input.Root, null, /* @__PURE__ */ React9.createElement(Input.Label, {
1728
- srOnly: true
1729
- }, t("online switch label")), /* @__PURE__ */ React9.createElement(Input.Switch, {
1730
- classNames: "mis-2 mie-2",
1731
- checked: online,
1732
- onCheckedChange: onOnlineChange
1733
- })))));
1734
- } finally {
1735
- _effect.f();
1736
- }
1737
- };
1738
- ChatPrompt.displayName = "Chat.Prompt";
1739
- var ChatThread2 = (props) => {
1740
- var _effect = _useSignals11();
1741
- try {
1742
- const { event, messages, processor } = useChatContext(ChatThread2.displayName);
1743
- const identity = useIdentity();
1744
- const error = useRxValue(processor.error).pipe(Option3.getOrUndefined);
1745
- const scrollerRef = useRef3(null);
1746
- useEffect6(() => {
1747
- return event.on((event2) => {
1748
- switch (event2.type) {
1749
- case "submit":
1750
- case "scroll-to-bottom":
1751
- scrollerRef.current?.scrollToBottom();
1752
- break;
1753
- }
1754
- });
1755
- }, [
1756
- event
1757
- ]);
1758
- const handleEvent = useCallback6((ev) => {
1759
- event.emit(ev);
1760
- }, [
1761
- event
1762
- ]);
1763
- if (!identity) {
1764
- return null;
1765
- }
1766
- return /* @__PURE__ */ React9.createElement(ChatThread, {
1767
- ...props,
1768
- ref: scrollerRef,
1769
- identity,
1770
- messages,
1771
- error,
1772
- onEvent: handleEvent
1773
- });
1774
- } finally {
1775
- _effect.f();
1776
- }
1777
- };
1778
- ChatThread2.displayName = "Chat.Thread";
1779
- var Chat = {
1780
- Root: ChatRoot,
1781
- Prompt: ChatPrompt,
1782
- Thread: ChatThread2
1783
- };
1784
-
1785
- export {
1786
- useBlueprintRegistry,
1787
- useBlueprints,
1788
- useActiveBlueprints,
1789
- useBlueprintHandlers,
1790
- useChatProcessor,
1791
- useChatServices,
1792
- useContextBinder,
1793
- useContextObjects,
1794
- useFlush,
1795
- useItemTypes,
1796
- useOnline,
1797
- usePresets,
1798
- useReferencesProvider,
1799
- ChatContextProvider,
1800
- useChatContext,
1801
- Chat
1802
- };
1803
- //# sourceMappingURL=chunk-YZYGXFVG.mjs.map