@dxos/plugin-assistant 0.10.0 → 0.11.0

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 (611) hide show
  1. package/PLUGIN.mdl +3 -28
  2. package/dist/lib/AssistantPlugin.mjs +2 -0
  3. package/dist/lib/AssistantPlugin.node.mjs +55 -0
  4. package/dist/lib/AssistantPlugin.node.mjs.map +1 -0
  5. package/dist/lib/AssistantPlugin.workerd.mjs +43 -0
  6. package/dist/lib/AssistantPlugin.workerd.mjs.map +1 -0
  7. package/dist/lib/capabilities.mjs +24 -0
  8. package/dist/lib/capabilities.mjs.map +1 -0
  9. package/dist/lib/chunk-AgentArticle.mjs +52 -0
  10. package/dist/lib/chunk-AgentArticle.mjs.map +1 -0
  11. package/dist/lib/chunk-AgentProperties.mjs +35 -0
  12. package/dist/lib/chunk-AgentProperties.mjs.map +1 -0
  13. package/dist/lib/chunk-AssistantPlugin.mjs +88 -0
  14. package/dist/lib/chunk-AssistantPlugin.mjs.map +1 -0
  15. package/dist/lib/chunk-AssistantSettings.mjs +285 -0
  16. package/dist/lib/chunk-AssistantSettings.mjs.map +1 -0
  17. package/dist/lib/chunk-ChatArticle.mjs +121 -0
  18. package/dist/lib/chunk-ChatArticle.mjs.map +1 -0
  19. package/dist/lib/chunk-ChatCompanion.mjs +116 -0
  20. package/dist/lib/chunk-ChatCompanion.mjs.map +1 -0
  21. package/dist/lib/chunk-ChatDialog.mjs +73 -0
  22. package/dist/lib/chunk-ChatDialog.mjs.map +1 -0
  23. package/dist/lib/chunk-IntegrationPrompt.mjs +73 -0
  24. package/dist/lib/chunk-IntegrationPrompt.mjs.map +1 -0
  25. package/dist/lib/chunk-SpaceHomePrompt.mjs +104 -0
  26. package/dist/lib/chunk-SpaceHomePrompt.mjs.map +1 -0
  27. package/dist/lib/chunk-SpaceHomeSuggestions.mjs +60 -0
  28. package/dist/lib/chunk-SpaceHomeSuggestions.mjs.map +1 -0
  29. package/dist/lib/chunk-TracePanel.mjs +127 -0
  30. package/dist/lib/chunk-TracePanel.mjs.map +1 -0
  31. package/dist/lib/chunk-TracePanel2.mjs +7 -0
  32. package/dist/lib/chunk-TracePanel2.mjs.map +1 -0
  33. package/dist/lib/chunk-TriggerStatus.mjs +72 -0
  34. package/dist/lib/chunk-TriggerStatus.mjs.map +1 -0
  35. package/dist/lib/chunk-agent-hydrator.mjs +22 -0
  36. package/dist/lib/chunk-agent-hydrator.mjs.map +1 -0
  37. package/dist/lib/chunk-agent-service.mjs +21 -0
  38. package/dist/lib/chunk-agent-service.mjs.map +1 -0
  39. package/dist/lib/{neutral/ai-context-LIKJYMIN.mjs → chunk-ai-context.mjs} +8 -12
  40. package/dist/lib/chunk-ai-context.mjs.map +1 -0
  41. package/dist/lib/chunk-ai-service.mjs +27 -0
  42. package/dist/lib/chunk-ai-service.mjs.map +1 -0
  43. package/dist/lib/chunk-app-graph-builder.mjs +179 -0
  44. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
  45. package/dist/lib/chunk-automation-templates.mjs +99 -0
  46. package/dist/lib/chunk-automation-templates.mjs.map +1 -0
  47. package/dist/lib/chunk-companion-chat-provisioner.mjs +123 -0
  48. package/dist/lib/chunk-companion-chat-provisioner.mjs.map +1 -0
  49. package/dist/lib/chunk-connector.mjs +60 -0
  50. package/dist/lib/chunk-connector.mjs.map +1 -0
  51. package/dist/lib/chunk-constants.mjs +9 -0
  52. package/dist/lib/chunk-constants.mjs.map +1 -0
  53. package/dist/lib/chunk-context.mjs +7 -0
  54. package/dist/lib/chunk-context.mjs.map +1 -0
  55. package/dist/lib/chunk-create-chat.mjs +53 -0
  56. package/dist/lib/chunk-create-chat.mjs.map +1 -0
  57. package/dist/lib/chunk-create-object.mjs +70 -0
  58. package/dist/lib/chunk-create-object.mjs.map +1 -0
  59. package/dist/lib/chunk-edge-model-resolver.mjs +64 -0
  60. package/dist/lib/chunk-edge-model-resolver.mjs.map +1 -0
  61. package/dist/lib/chunk-ensure-companion-chat.mjs +49 -0
  62. package/dist/lib/chunk-ensure-companion-chat.mjs.map +1 -0
  63. package/dist/lib/chunk-extensions.mjs +78 -0
  64. package/dist/lib/chunk-extensions.mjs.map +1 -0
  65. package/dist/lib/chunk-fork-chat.mjs +83 -0
  66. package/dist/lib/chunk-fork-chat.mjs.map +1 -0
  67. package/dist/lib/chunk-generate-home-suggestions.mjs +71 -0
  68. package/dist/lib/chunk-generate-home-suggestions.mjs.map +1 -0
  69. package/dist/lib/chunk-local-model-resolver.mjs +25 -0
  70. package/dist/lib/chunk-local-model-resolver.mjs.map +1 -0
  71. package/dist/lib/chunk-markdown-extension.mjs +27 -0
  72. package/dist/lib/chunk-markdown-extension.mjs.map +1 -0
  73. package/dist/lib/{neutral/chunk-L7AR4VTA.mjs → chunk-meta.mjs} +20 -25
  74. package/dist/lib/chunk-meta.mjs.map +1 -0
  75. package/dist/lib/chunk-operation-handler.mjs +13 -0
  76. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  77. package/dist/lib/chunk-paths.mjs +8 -0
  78. package/dist/lib/chunk-paths.mjs.map +1 -0
  79. package/dist/lib/chunk-processor.mjs +432 -0
  80. package/dist/lib/chunk-processor.mjs.map +1 -0
  81. package/dist/lib/chunk-react-surface.mjs +177 -0
  82. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  83. package/dist/lib/chunk-run-prompt-in-new-chat.mjs +96 -0
  84. package/dist/lib/chunk-run-prompt-in-new-chat.mjs.map +1 -0
  85. package/dist/lib/chunk-set-current-chat.mjs +43 -0
  86. package/dist/lib/chunk-set-current-chat.mjs.map +1 -0
  87. package/dist/lib/chunk-settings.mjs +23 -0
  88. package/dist/lib/chunk-settings.mjs.map +1 -0
  89. package/dist/lib/chunk-skill-definition.mjs +42 -0
  90. package/dist/lib/chunk-skill-definition.mjs.map +1 -0
  91. package/dist/lib/chunk-skills.mjs +19 -0
  92. package/dist/lib/chunk-skills.mjs.map +1 -0
  93. package/dist/lib/chunk-state.mjs +32 -0
  94. package/dist/lib/chunk-state.mjs.map +1 -0
  95. package/dist/lib/chunk-toggle-trace-panel-debug.mjs +18 -0
  96. package/dist/lib/chunk-toggle-trace-panel-debug.mjs.map +1 -0
  97. package/dist/lib/chunk-toolkit.mjs +12 -0
  98. package/dist/lib/chunk-toolkit.mjs.map +1 -0
  99. package/dist/lib/chunk-types.mjs +332 -0
  100. package/dist/lib/chunk-types.mjs.map +1 -0
  101. package/dist/lib/chunk-update-chat-name.mjs +63 -0
  102. package/dist/lib/chunk-update-chat-name.mjs.map +1 -0
  103. package/dist/lib/components.mjs +2616 -0
  104. package/dist/lib/components.mjs.map +1 -0
  105. package/dist/lib/containers.mjs +17 -0
  106. package/dist/lib/containers.mjs.map +1 -0
  107. package/dist/lib/execution-graph.mjs +961 -0
  108. package/dist/lib/execution-graph.mjs.map +1 -0
  109. package/dist/lib/extensions.mjs +2 -0
  110. package/dist/lib/hooks.mjs +674 -0
  111. package/dist/lib/hooks.mjs.map +1 -0
  112. package/dist/lib/index.mjs +5 -0
  113. package/dist/lib/meta.mjs +2 -0
  114. package/dist/lib/operations.mjs +7 -0
  115. package/dist/lib/operations.mjs.map +1 -0
  116. package/dist/lib/plugin.mjs +9 -0
  117. package/dist/lib/plugin.mjs.map +1 -0
  118. package/dist/lib/plugin.workerd.mjs +2 -0
  119. package/dist/lib/skills.mjs +2 -0
  120. package/dist/lib/testing.mjs +2 -0
  121. package/dist/lib/translations.mjs +207 -0
  122. package/dist/lib/translations.mjs.map +1 -0
  123. package/dist/lib/types.mjs +2 -0
  124. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  125. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -1
  126. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -1
  127. package/dist/types/src/capabilities/AssistantSurfaces.d.ts +22 -0
  128. package/dist/types/src/capabilities/AssistantSurfaces.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/agent-hydrator.d.ts +1 -1
  130. package/dist/types/src/capabilities/agent-service.d.ts +1 -1
  131. package/dist/types/src/capabilities/agent-service.d.ts.map +1 -1
  132. package/dist/types/src/capabilities/ai-context.d.ts +1 -1
  133. package/dist/types/src/capabilities/ai-service.d.ts +1 -1
  134. package/dist/types/src/capabilities/app-graph-builder.d.ts +12 -1
  135. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  136. package/dist/types/src/capabilities/automation-templates.d.ts +1 -1
  137. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +1 -1
  138. package/dist/types/src/capabilities/connector.d.ts +1 -1
  139. package/dist/types/src/capabilities/create-object.d.ts +1 -1
  140. package/dist/types/src/capabilities/edge-model-resolver.d.ts +1 -1
  141. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  142. package/dist/types/src/capabilities/index.d.ts +0 -2
  143. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  144. package/dist/types/src/capabilities/local-model-resolver.d.ts +1 -1
  145. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  146. package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
  147. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  148. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  149. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  150. package/dist/types/src/capabilities/settings.d.ts +1 -1
  151. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -1
  152. package/dist/types/src/capabilities/standalone-chats-query.test.d.ts +2 -0
  153. package/dist/types/src/capabilities/standalone-chats-query.test.d.ts.map +1 -0
  154. package/dist/types/src/capabilities/state.d.ts +1 -1
  155. package/dist/types/src/capabilities/toolkit.d.ts +1 -1
  156. package/dist/types/src/components/AgentProperties/AgentProperties.d.ts +4 -1
  157. package/dist/types/src/components/AgentProperties/AgentProperties.d.ts.map +1 -1
  158. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -1
  159. package/dist/types/src/components/Chat/Chat.d.ts +21 -8
  160. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  161. package/dist/types/src/components/Chat/{Chat.stories.d.ts → Error.stories.d.ts} +1 -1
  162. package/dist/types/src/components/Chat/Error.stories.d.ts.map +1 -0
  163. package/dist/types/src/components/Chat/context.d.ts +8 -0
  164. package/dist/types/src/components/Chat/context.d.ts.map +1 -1
  165. package/dist/types/src/components/Chat/events.d.ts +5 -0
  166. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  167. package/dist/types/src/components/Chat/thread.d.ts +42 -0
  168. package/dist/types/src/components/Chat/thread.d.ts.map +1 -0
  169. package/dist/types/src/components/Chat/thread.test.d.ts +2 -0
  170. package/dist/types/src/components/Chat/thread.test.d.ts.map +1 -0
  171. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  172. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -1
  173. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +5 -3
  174. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -1
  175. package/dist/types/src/components/ChatPrompt/index.d.ts +0 -1
  176. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  177. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -1
  178. package/dist/types/src/components/ChatThread/ChatThread.d.ts +8 -3
  179. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  180. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +30 -2
  181. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  182. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  183. package/dist/types/src/components/ChatThread/index.d.ts +1 -0
  184. package/dist/types/src/components/ChatThread/index.d.ts.map +1 -1
  185. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  186. package/dist/types/src/components/ChatThread/sync/index.d.ts +3 -0
  187. package/dist/types/src/components/ChatThread/sync/index.d.ts.map +1 -0
  188. package/dist/types/src/components/ChatThread/{sync.d.ts → sync/sync.d.ts} +46 -2
  189. package/dist/types/src/components/ChatThread/sync/sync.d.ts.map +1 -0
  190. package/dist/types/src/components/ChatThread/sync/sync.test.d.ts.map +1 -0
  191. package/dist/types/src/components/ChatThread/sync/tool-widget-state.d.ts.map +1 -0
  192. package/dist/types/src/components/ChatThread/sync/tool-widget-state.test.d.ts.map +1 -0
  193. package/dist/types/src/components/ChatThread/widgets/BranchWidget.d.ts +15 -0
  194. package/dist/types/src/components/ChatThread/widgets/BranchWidget.d.ts.map +1 -0
  195. package/dist/types/src/components/ChatThread/widgets/BranchWidget.stories.d.ts +21 -0
  196. package/dist/types/src/components/ChatThread/widgets/BranchWidget.stories.d.ts.map +1 -0
  197. package/dist/types/src/components/ChatThread/widgets/BranchWidget.test.d.ts +2 -0
  198. package/dist/types/src/components/ChatThread/widgets/BranchWidget.test.d.ts.map +1 -0
  199. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -1
  200. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -1
  201. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts +1 -2
  202. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -1
  203. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +6 -0
  204. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -1
  205. package/dist/types/src/components/ChatThread/widgets/format-time.d.ts +2 -0
  206. package/dist/types/src/components/ChatThread/widgets/format-time.d.ts.map +1 -0
  207. package/dist/types/src/components/ChatThread/widgets/index.d.ts +4 -1
  208. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
  209. package/dist/types/src/components/ChatThread/widgets/is-tool-message.d.ts +3 -0
  210. package/dist/types/src/components/ChatThread/widgets/is-tool-message.d.ts.map +1 -0
  211. package/dist/types/src/components/ConnectorAuthMenu/ConnectorAuthMenu.d.ts +16 -0
  212. package/dist/types/src/components/ConnectorAuthMenu/ConnectorAuthMenu.d.ts.map +1 -0
  213. package/dist/types/src/components/ConnectorAuthMenu/ConnectorAuthMenu.stories.d.ts +210 -0
  214. package/dist/types/src/components/ConnectorAuthMenu/ConnectorAuthMenu.stories.d.ts.map +1 -0
  215. package/dist/types/src/components/ConnectorAuthMenu/index.d.ts +2 -0
  216. package/dist/types/src/components/ConnectorAuthMenu/index.d.ts.map +1 -0
  217. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +1 -1
  218. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  219. package/dist/types/src/components/TaskList/TaskList.d.ts +9 -11
  220. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -1
  221. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +3 -4
  222. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -1
  223. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +1 -2
  224. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  225. package/dist/types/src/components/ToolBlock/index.d.ts +1 -0
  226. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -1
  227. package/dist/types/src/components/ToolBlock/is-tool-message.d.ts +3 -0
  228. package/dist/types/src/components/ToolBlock/is-tool-message.d.ts.map +1 -0
  229. package/dist/types/src/components/Toolbox/Toolbox.d.ts +1 -1
  230. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  231. package/dist/types/src/components/index.d.ts +1 -0
  232. package/dist/types/src/components/index.d.ts.map +1 -1
  233. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +5 -2
  234. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -1
  235. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
  236. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +4 -1
  237. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -1
  238. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts +4 -1
  239. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  240. package/dist/types/src/containers/AssistantSettings/AssistantSettings.stories.d.ts +4 -1
  241. package/dist/types/src/containers/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
  242. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts +4 -6
  243. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts.map +1 -1
  244. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -1
  245. package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts +22 -1
  246. package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts.map +1 -1
  247. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  248. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts +4 -1
  249. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  250. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts +4 -7
  251. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts.map +1 -1
  252. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts +4 -9
  253. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts.map +1 -1
  254. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts +5 -7
  255. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts.map +1 -1
  256. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +1 -1
  257. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -1
  258. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
  259. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +15 -1
  260. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  261. package/dist/types/src/containers/index.d.ts +0 -1
  262. package/dist/types/src/containers/index.d.ts.map +1 -1
  263. package/dist/types/src/execution-graph/execution-graph.d.ts +12 -1
  264. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
  265. package/dist/types/src/execution-graph/index.d.ts +1 -1
  266. package/dist/types/src/execution-graph/index.d.ts.map +1 -1
  267. package/dist/types/src/execution-graph/pending-block-status.d.ts.map +1 -1
  268. package/dist/types/src/execution-graph/span-tree.d.ts +17 -0
  269. package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -1
  270. package/dist/types/src/feed-logger.d.ts +1 -1
  271. package/dist/types/src/feed-logger.d.ts.map +1 -1
  272. package/dist/types/src/hooks/index.d.ts +1 -1
  273. package/dist/types/src/hooks/index.d.ts.map +1 -1
  274. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  275. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
  276. package/dist/types/src/hooks/useContextObjects.d.ts +1 -1
  277. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  278. package/dist/types/src/hooks/useSelectionContext.d.ts +13 -0
  279. package/dist/types/src/hooks/useSelectionContext.d.ts.map +1 -0
  280. package/dist/types/src/hooks/useSelectionContext.test.d.ts +2 -0
  281. package/dist/types/src/hooks/useSelectionContext.test.d.ts.map +1 -0
  282. package/dist/types/src/hooks/useTraceMessages.d.ts.map +1 -1
  283. package/dist/types/src/operations/index.d.ts.map +1 -1
  284. package/dist/types/src/processor/index.d.ts +1 -0
  285. package/dist/types/src/processor/index.d.ts.map +1 -1
  286. package/dist/types/src/processor/processor.d.ts +5 -2
  287. package/dist/types/src/processor/processor.d.ts.map +1 -1
  288. package/dist/types/src/processor/prompt.d.ts +18 -0
  289. package/dist/types/src/processor/prompt.d.ts.map +1 -0
  290. package/dist/types/src/processor/prompt.test.d.ts +2 -0
  291. package/dist/types/src/processor/prompt.test.d.ts.map +1 -0
  292. package/dist/types/src/processor/streaming.node.test.d.ts +2 -0
  293. package/dist/types/src/processor/streaming.node.test.d.ts.map +1 -0
  294. package/dist/types/src/skills/assistant/skill.d.ts.map +1 -1
  295. package/dist/types/src/templates/scaffold.d.ts +1 -1
  296. package/dist/types/src/templates/scaffold.d.ts.map +1 -1
  297. package/dist/types/src/translations.d.ts.map +1 -1
  298. package/dist/types/src/types/AssistantCapabilities.d.ts +1 -1
  299. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -1
  300. package/dist/types/src/types/AssistantOperation.d.ts +2 -13
  301. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -1
  302. package/dist/types/src/types/ChatSurface.d.ts +2 -2
  303. package/dist/types/src/types/ChatSurface.d.ts.map +1 -1
  304. package/dist/types/src/types/Ollama.d.ts +1 -1
  305. package/dist/types/src/types/Ollama.d.ts.map +1 -1
  306. package/dist/types/tsconfig.tsbuildinfo +1 -1
  307. package/dx.config.ts +1 -0
  308. package/package.json +106 -105
  309. package/src/AssistantPlugin.node.ts +1 -2
  310. package/src/AssistantPlugin.test.ts +60 -62
  311. package/src/AssistantPlugin.ts +1 -10
  312. package/src/AssistantPlugin.workerd.ts +1 -2
  313. package/src/capabilities/AssistantSurfaces.tsx +86 -0
  314. package/src/capabilities/agent-service.ts +1 -1
  315. package/src/capabilities/app-graph-builder.ts +31 -17
  316. package/src/capabilities/companion-chat-provisioner.ts +12 -11
  317. package/src/capabilities/connector.ts +3 -3
  318. package/src/capabilities/edge-model-resolver.ts +5 -2
  319. package/src/capabilities/index.ts +0 -2
  320. package/src/capabilities/react-surface.ts +135 -0
  321. package/src/capabilities/skill-definition.ts +4 -0
  322. package/src/capabilities/standalone-chats-query.test.ts +51 -0
  323. package/src/capabilities/state.ts +1 -1
  324. package/src/components/AgentProperties/AgentProperties.stories.tsx +6 -7
  325. package/src/components/AgentProperties/AgentProperties.tsx +37 -30
  326. package/src/components/Chat/Chat.tsx +275 -59
  327. package/src/components/Chat/{Chat.stories.tsx → Error.stories.tsx} +1 -1
  328. package/src/components/Chat/context.ts +8 -0
  329. package/src/components/Chat/events.ts +5 -0
  330. package/src/components/Chat/thread.test.ts +127 -0
  331. package/src/components/Chat/thread.ts +87 -0
  332. package/src/components/ChatPrompt/ChatActions.tsx +8 -8
  333. package/src/components/ChatPrompt/ChatMcpErrors.tsx +2 -2
  334. package/src/components/ChatPrompt/ChatOptions.stories.tsx +2 -1
  335. package/src/components/ChatPrompt/ChatOptions.tsx +5 -5
  336. package/src/components/ChatPrompt/ChatPrompt.tsx +33 -6
  337. package/src/components/ChatPrompt/index.ts +0 -1
  338. package/src/components/ChatThread/Anchor.stories.tsx +2 -1
  339. package/src/components/ChatThread/ChatThread.stories.tsx +99 -4
  340. package/src/components/ChatThread/ChatThread.tsx +34 -6
  341. package/src/components/ChatThread/Link.tsx +1 -0
  342. package/src/components/ChatThread/index.ts +2 -0
  343. package/src/components/ChatThread/registry.tsx +28 -4
  344. package/src/components/ChatThread/sync/index.ts +6 -0
  345. package/src/components/ChatThread/{sync.test.ts → sync/sync.test.ts} +167 -7
  346. package/src/components/ChatThread/{sync.ts → sync/sync.ts} +97 -3
  347. package/src/components/ChatThread/{tool-widget-state.ts → sync/tool-widget-state.ts} +1 -3
  348. package/src/components/ChatThread/widgets/BranchWidget.stories.tsx +83 -0
  349. package/src/components/ChatThread/widgets/BranchWidget.test.ts +55 -0
  350. package/src/components/ChatThread/widgets/BranchWidget.tsx +61 -0
  351. package/src/components/ChatThread/widgets/FallbackWidget.tsx +2 -2
  352. package/src/components/ChatThread/widgets/ReasoningWidget.ts +1 -1
  353. package/src/components/ChatThread/widgets/ReferenceWidget.ts +1 -6
  354. package/src/components/ChatThread/widgets/SuggestionWidget.ts +12 -3
  355. package/src/components/ChatThread/widgets/SummaryWidget.tsx +1 -1
  356. package/src/components/ChatThread/widgets/ToolWidget.tsx +15 -9
  357. package/src/components/ChatThread/widgets/defaults.ts +7 -1
  358. package/src/components/ChatThread/widgets/format-time.ts +45 -0
  359. package/src/components/ChatThread/widgets/index.ts +4 -1
  360. package/src/components/ChatThread/widgets/is-tool-message.ts +13 -0
  361. package/src/components/ConnectorAuthMenu/ConnectorAuthMenu.stories.tsx +177 -0
  362. package/src/components/ConnectorAuthMenu/ConnectorAuthMenu.tsx +82 -0
  363. package/src/components/ConnectorAuthMenu/index.ts +5 -0
  364. package/src/components/ProcessTree/ProcessTree.stories.tsx +1 -1
  365. package/src/components/TaskList/TaskList.stories.tsx +19 -26
  366. package/src/components/TaskList/TaskList.tsx +32 -104
  367. package/src/components/ToolBlock/ToolBlock.tsx +1 -5
  368. package/src/components/ToolBlock/index.ts +1 -0
  369. package/src/components/ToolBlock/is-tool-message.ts +13 -0
  370. package/src/components/Toolbox/Toolbox.tsx +1 -1
  371. package/src/components/index.ts +1 -0
  372. package/src/containers/AgentArticle/AgentArticle.stories.tsx +18 -11
  373. package/src/containers/AgentArticle/AgentArticle.tsx +27 -151
  374. package/src/containers/AgentProperties/AgentProperties.tsx +21 -17
  375. package/src/containers/AssistantSettings/AssistantSettings.tsx +2 -0
  376. package/src/containers/AssistantSettings/OllamaModels.tsx +6 -4
  377. package/src/containers/ChatArticle/ChatArticle.stories.tsx +200 -27
  378. package/src/containers/ChatArticle/ChatArticle.tsx +25 -5
  379. package/src/containers/ChatCompanion/ChatCompanion.tsx +45 -10
  380. package/src/containers/ChatDialog/ChatDialog.tsx +4 -1
  381. package/src/containers/IntegrationPrompt/IntegrationPrompt.tsx +9 -6
  382. package/src/containers/SpaceHomePrompt/SpaceHomePrompt.tsx +2 -0
  383. package/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.tsx +40 -39
  384. package/src/containers/TracePanel/TracePanel.stories.tsx +9 -4
  385. package/src/containers/TracePanel/TracePanel.tsx +22 -6
  386. package/src/containers/TriggerStatus/TriggerStatus.tsx +9 -16
  387. package/src/containers/index.ts +0 -1
  388. package/src/execution-graph/SPEC.md +60 -2
  389. package/src/execution-graph/execution-graph.ts +15 -2
  390. package/src/execution-graph/index.ts +1 -0
  391. package/src/execution-graph/pending-block-status.ts +3 -2
  392. package/src/execution-graph/span-tree.test.ts +87 -1
  393. package/src/execution-graph/span-tree.ts +95 -0
  394. package/src/feed-logger.ts +6 -6
  395. package/src/hooks/index.ts +1 -1
  396. package/src/hooks/useChatProcessor.ts +2 -1
  397. package/src/hooks/useChatToolbarActions.ts +22 -19
  398. package/src/hooks/useContextObjects.ts +9 -3
  399. package/src/hooks/useSelectionContext.test.ts +93 -0
  400. package/src/hooks/useSelectionContext.ts +72 -0
  401. package/src/hooks/useSkillRegistry.ts +1 -1
  402. package/src/hooks/useTraceMessages.ts +5 -3
  403. package/src/operations/create-chat.ts +2 -2
  404. package/src/operations/fork-chat.ts +2 -2
  405. package/src/operations/generate-home-suggestions.test.ts +2 -2
  406. package/src/operations/index.ts +0 -1
  407. package/src/operations/prompt.node.test.ts +1 -1
  408. package/src/paths.ts +3 -3
  409. package/src/processor/index.ts +1 -0
  410. package/src/processor/processor.node.test.ts +1 -1
  411. package/src/processor/processor.ts +33 -5
  412. package/src/processor/prompt.test.ts +37 -0
  413. package/src/processor/prompt.ts +42 -0
  414. package/src/processor/streaming.node.test.ts +196 -0
  415. package/src/skills/assistant/skill.node.test.ts +2 -2
  416. package/src/skills/assistant/skill.ts +3 -5
  417. package/src/templates/routine-templates.test.ts +1 -2
  418. package/src/templates/scaffold.ts +3 -3
  419. package/src/testing/data/trace-timeline-multiple.dx.json +1 -1
  420. package/src/testing/data/trace-timeline-remote.dx.json +1 -1
  421. package/src/testing/data/trace-timeline.dx.json +1 -2
  422. package/src/testing/trace-timeline.node.test.ts +3 -3
  423. package/src/translations.ts +11 -10
  424. package/src/types/AssistantCapabilities.ts +1 -1
  425. package/src/types/AssistantOperation.ts +8 -31
  426. package/src/types/ChatSurface.ts +3 -3
  427. package/src/types/Ollama.ts +1 -1
  428. package/dist/lib/neutral/AgentArticle-GV6EEW3I.mjs +0 -161
  429. package/dist/lib/neutral/AgentArticle-GV6EEW3I.mjs.map +0 -7
  430. package/dist/lib/neutral/AgentProperties-LFTEYJ54.mjs +0 -40
  431. package/dist/lib/neutral/AgentProperties-LFTEYJ54.mjs.map +0 -7
  432. package/dist/lib/neutral/AssistantPlugin.mjs +0 -10
  433. package/dist/lib/neutral/AssistantPlugin.mjs.map +0 -7
  434. package/dist/lib/neutral/AssistantPlugin.node.mjs +0 -72
  435. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +0 -7
  436. package/dist/lib/neutral/AssistantPlugin.workerd.mjs +0 -13
  437. package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +0 -7
  438. package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs +0 -302
  439. package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs.map +0 -7
  440. package/dist/lib/neutral/ChatArticle-OO7GGEFW.mjs +0 -8
  441. package/dist/lib/neutral/ChatArticle-OO7GGEFW.mjs.map +0 -7
  442. package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs +0 -128
  443. package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs.map +0 -7
  444. package/dist/lib/neutral/ChatDialog-5MXN4MXS.mjs +0 -74
  445. package/dist/lib/neutral/ChatDialog-5MXN4MXS.mjs.map +0 -7
  446. package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs +0 -72
  447. package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs.map +0 -7
  448. package/dist/lib/neutral/PlanArticle-VPK2IYWU.mjs +0 -34
  449. package/dist/lib/neutral/PlanArticle-VPK2IYWU.mjs.map +0 -7
  450. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs +0 -114
  451. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs.map +0 -7
  452. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs +0 -63
  453. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs.map +0 -7
  454. package/dist/lib/neutral/TracePanel-JKNWADJ4.mjs +0 -12
  455. package/dist/lib/neutral/TracePanel-JKNWADJ4.mjs.map +0 -7
  456. package/dist/lib/neutral/TriggerStatus-FURRBHYA.mjs +0 -95
  457. package/dist/lib/neutral/TriggerStatus-FURRBHYA.mjs.map +0 -7
  458. package/dist/lib/neutral/agent-hydrator-OBO3RHLO.mjs +0 -23
  459. package/dist/lib/neutral/agent-hydrator-OBO3RHLO.mjs.map +0 -7
  460. package/dist/lib/neutral/agent-service-XFJ4VQMT.mjs +0 -32
  461. package/dist/lib/neutral/agent-service-XFJ4VQMT.mjs.map +0 -7
  462. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs.map +0 -7
  463. package/dist/lib/neutral/ai-service-DM6YXWUC.mjs +0 -44
  464. package/dist/lib/neutral/ai-service-DM6YXWUC.mjs.map +0 -7
  465. package/dist/lib/neutral/app-graph-builder-OPVOEQY7.mjs +0 -249
  466. package/dist/lib/neutral/app-graph-builder-OPVOEQY7.mjs.map +0 -7
  467. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs +0 -97
  468. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs.map +0 -7
  469. package/dist/lib/neutral/capabilities/index.mjs +0 -47
  470. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  471. package/dist/lib/neutral/chunk-5IHQ52KJ.mjs +0 -9
  472. package/dist/lib/neutral/chunk-5IHQ52KJ.mjs.map +0 -7
  473. package/dist/lib/neutral/chunk-6Q4OBGIK.mjs +0 -420
  474. package/dist/lib/neutral/chunk-6Q4OBGIK.mjs.map +0 -7
  475. package/dist/lib/neutral/chunk-BXI2R4OO.mjs +0 -410
  476. package/dist/lib/neutral/chunk-BXI2R4OO.mjs.map +0 -7
  477. package/dist/lib/neutral/chunk-CMPLPDYE.mjs +0 -30
  478. package/dist/lib/neutral/chunk-CMPLPDYE.mjs.map +0 -7
  479. package/dist/lib/neutral/chunk-GPHT3HYS.mjs +0 -8
  480. package/dist/lib/neutral/chunk-GPHT3HYS.mjs.map +0 -7
  481. package/dist/lib/neutral/chunk-HKLSFB5I.mjs +0 -90
  482. package/dist/lib/neutral/chunk-HKLSFB5I.mjs.map +0 -7
  483. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  484. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  485. package/dist/lib/neutral/chunk-L7AR4VTA.mjs.map +0 -7
  486. package/dist/lib/neutral/chunk-LS72HWMM.mjs +0 -42
  487. package/dist/lib/neutral/chunk-LS72HWMM.mjs.map +0 -7
  488. package/dist/lib/neutral/chunk-OZWZGIV2.mjs +0 -12
  489. package/dist/lib/neutral/chunk-OZWZGIV2.mjs.map +0 -7
  490. package/dist/lib/neutral/chunk-QOKLFHUS.mjs +0 -13
  491. package/dist/lib/neutral/chunk-QOKLFHUS.mjs.map +0 -7
  492. package/dist/lib/neutral/chunk-SCTHQVIJ.mjs +0 -155
  493. package/dist/lib/neutral/chunk-SCTHQVIJ.mjs.map +0 -7
  494. package/dist/lib/neutral/chunk-U4LTLBAX.mjs +0 -56
  495. package/dist/lib/neutral/chunk-U4LTLBAX.mjs.map +0 -7
  496. package/dist/lib/neutral/chunk-UPKFUZ6V.mjs +0 -115
  497. package/dist/lib/neutral/chunk-UPKFUZ6V.mjs.map +0 -7
  498. package/dist/lib/neutral/chunk-V2Y4XE3O.mjs +0 -12
  499. package/dist/lib/neutral/chunk-V2Y4XE3O.mjs.map +0 -7
  500. package/dist/lib/neutral/chunk-VTK5R4H3.mjs +0 -9
  501. package/dist/lib/neutral/chunk-VTK5R4H3.mjs.map +0 -7
  502. package/dist/lib/neutral/chunk-XVGEJWJX.mjs +0 -133
  503. package/dist/lib/neutral/chunk-XVGEJWJX.mjs.map +0 -7
  504. package/dist/lib/neutral/companion-chat-provisioner-IQV5VIVE.mjs +0 -126
  505. package/dist/lib/neutral/companion-chat-provisioner-IQV5VIVE.mjs.map +0 -7
  506. package/dist/lib/neutral/components/index.mjs +0 -2527
  507. package/dist/lib/neutral/components/index.mjs.map +0 -7
  508. package/dist/lib/neutral/connector-ITLLTBPZ.mjs +0 -70
  509. package/dist/lib/neutral/connector-ITLLTBPZ.mjs.map +0 -7
  510. package/dist/lib/neutral/containers/index.mjs +0 -31
  511. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  512. package/dist/lib/neutral/create-chat-YGVZZYGP.mjs +0 -56
  513. package/dist/lib/neutral/create-chat-YGVZZYGP.mjs.map +0 -7
  514. package/dist/lib/neutral/create-object-5PAEJ6KM.mjs +0 -76
  515. package/dist/lib/neutral/create-object-5PAEJ6KM.mjs.map +0 -7
  516. package/dist/lib/neutral/edge-model-resolver-WDJWDZTT.mjs +0 -55
  517. package/dist/lib/neutral/edge-model-resolver-WDJWDZTT.mjs.map +0 -7
  518. package/dist/lib/neutral/ensure-companion-chat-AMOF3C66.mjs +0 -58
  519. package/dist/lib/neutral/ensure-companion-chat-AMOF3C66.mjs.map +0 -7
  520. package/dist/lib/neutral/execution-graph/index.mjs +0 -977
  521. package/dist/lib/neutral/execution-graph/index.mjs.map +0 -7
  522. package/dist/lib/neutral/extensions/index.mjs +0 -8
  523. package/dist/lib/neutral/extensions/index.mjs.map +0 -7
  524. package/dist/lib/neutral/fork-chat-RMAAYYQF.mjs +0 -92
  525. package/dist/lib/neutral/fork-chat-RMAAYYQF.mjs.map +0 -7
  526. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs +0 -93
  527. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs.map +0 -7
  528. package/dist/lib/neutral/hooks/index.mjs +0 -877
  529. package/dist/lib/neutral/hooks/index.mjs.map +0 -7
  530. package/dist/lib/neutral/index.mjs +0 -42
  531. package/dist/lib/neutral/index.mjs.map +0 -7
  532. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs +0 -24
  533. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +0 -7
  534. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs +0 -41
  535. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs.map +0 -7
  536. package/dist/lib/neutral/meta.json +0 -1
  537. package/dist/lib/neutral/meta.mjs +0 -12
  538. package/dist/lib/neutral/meta.mjs.map +0 -7
  539. package/dist/lib/neutral/migrations-7DEMVBOG.mjs +0 -28
  540. package/dist/lib/neutral/migrations-7DEMVBOG.mjs.map +0 -7
  541. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs +0 -18
  542. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs.map +0 -7
  543. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs +0 -8
  544. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs.map +0 -7
  545. package/dist/lib/neutral/operations/index.mjs +0 -8
  546. package/dist/lib/neutral/operations/index.mjs.map +0 -7
  547. package/dist/lib/neutral/plugin.mjs +0 -16
  548. package/dist/lib/neutral/plugin.mjs.map +0 -7
  549. package/dist/lib/neutral/plugin.workerd.mjs +0 -13
  550. package/dist/lib/neutral/plugin.workerd.mjs.map +0 -7
  551. package/dist/lib/neutral/react-surface-HEJEK44F.mjs +0 -171
  552. package/dist/lib/neutral/react-surface-HEJEK44F.mjs.map +0 -7
  553. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs +0 -28
  554. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs.map +0 -7
  555. package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs +0 -102
  556. package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs.map +0 -7
  557. package/dist/lib/neutral/set-current-chat-VWBPSIMZ.mjs +0 -48
  558. package/dist/lib/neutral/set-current-chat-VWBPSIMZ.mjs.map +0 -7
  559. package/dist/lib/neutral/settings-7Q3RITIT.mjs +0 -28
  560. package/dist/lib/neutral/settings-7Q3RITIT.mjs.map +0 -7
  561. package/dist/lib/neutral/skill-definition-553MQRTR.mjs +0 -8
  562. package/dist/lib/neutral/skill-definition-553MQRTR.mjs.map +0 -7
  563. package/dist/lib/neutral/skills/index.mjs +0 -8
  564. package/dist/lib/neutral/skills/index.mjs.map +0 -7
  565. package/dist/lib/neutral/state-4LGAKSSD.mjs +0 -34
  566. package/dist/lib/neutral/state-4LGAKSSD.mjs.map +0 -7
  567. package/dist/lib/neutral/testing.mjs +0 -8
  568. package/dist/lib/neutral/testing.mjs.map +0 -7
  569. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs +0 -21
  570. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs.map +0 -7
  571. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs +0 -8
  572. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs.map +0 -7
  573. package/dist/lib/neutral/translations.mjs +0 -217
  574. package/dist/lib/neutral/translations.mjs.map +0 -7
  575. package/dist/lib/neutral/types/index.mjs +0 -24
  576. package/dist/lib/neutral/types/index.mjs.map +0 -7
  577. package/dist/lib/neutral/update-chat-name-IJJELRR6.mjs +0 -61
  578. package/dist/lib/neutral/update-chat-name-IJJELRR6.mjs.map +0 -7
  579. package/dist/types/src/capabilities/migrations.d.ts +0 -5
  580. package/dist/types/src/capabilities/migrations.d.ts.map +0 -1
  581. package/dist/types/src/capabilities/navigation-resolver.d.ts +0 -5
  582. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +0 -1
  583. package/dist/types/src/components/Chat/Chat.stories.d.ts.map +0 -1
  584. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +0 -10
  585. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +0 -1
  586. package/dist/types/src/components/ChatThread/sync.d.ts.map +0 -1
  587. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +0 -1
  588. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +0 -1
  589. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts.map +0 -1
  590. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts +0 -6
  591. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +0 -1
  592. package/dist/types/src/containers/PlanArticle/index.d.ts +0 -2
  593. package/dist/types/src/containers/PlanArticle/index.d.ts.map +0 -1
  594. package/dist/types/src/hooks/useFlush.d.ts +0 -6
  595. package/dist/types/src/hooks/useFlush.d.ts.map +0 -1
  596. package/dist/types/src/operations/resolve-navigation-targets.d.ts +0 -5
  597. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +0 -1
  598. package/src/AssistantPlugin.conversations.json +0 -1
  599. package/src/capabilities/migrations.ts +0 -28
  600. package/src/capabilities/navigation-resolver.ts +0 -20
  601. package/src/capabilities/react-surface.tsx +0 -177
  602. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +0 -42
  603. package/src/components/ChatThread/DEBUG.md +0 -64
  604. package/src/containers/PlanArticle/PlanArticle.tsx +0 -37
  605. package/src/containers/PlanArticle/index.ts +0 -5
  606. package/src/hooks/useFlush.ts +0 -35
  607. package/src/operations/resolve-navigation-targets.ts +0 -44
  608. /package/dist/types/src/components/ChatThread/{sync.test.d.ts → sync/sync.test.d.ts} +0 -0
  609. /package/dist/types/src/components/ChatThread/{tool-widget-state.d.ts → sync/tool-widget-state.d.ts} +0 -0
  610. /package/dist/types/src/components/ChatThread/{tool-widget-state.test.d.ts → sync/tool-widget-state.test.d.ts} +0 -0
  611. /package/src/components/ChatThread/{tool-widget-state.test.ts → sync/tool-widget-state.test.ts} +0 -0
@@ -0,0 +1,25 @@
1
+ import { AppCapabilities } from "@dxos/app-toolkit";
2
+ import { Capability } from "@dxos/app-framework";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import { LMStudioResolver, OllamaResolver } from "@dxos/ai/resolvers";
6
+ import * as OpenAiClient from "@effect/ai-openai/OpenAiClient";
7
+ import * as FetchHttpClient from "@effect/platform/FetchHttpClient";
8
+ import * as HttpClient from "@effect/platform/HttpClient";
9
+ //#region src/capabilities/local-model-resolver.ts
10
+ /**
11
+ * To start LM Studio server:
12
+ * ```bash
13
+ * ~/.lmstudio/bin/lms server start --cors
14
+ * ```
15
+ *
16
+ * To start Ollama server:
17
+ * ```bash
18
+ * OLLAMA_ORIGINS="*" ollama serve
19
+ * ```
20
+ */
21
+ var localModelResolver = Capability.makeModule(() => Effect.succeed([Capability.contributes(AppCapabilities.AiModelResolver, LMStudioResolver.make().pipe(Layer.provide(OpenAiClient.layer({ apiUrl: LMStudioResolver.DEFAULT_LMSTUDIO_ENDPOINT })), Layer.provide(FetchHttpClient.layer))), Capability.contributes(AppCapabilities.AiModelResolver, OllamaResolver.make({ transformClient: HttpClient.withTracerPropagation(false) }).pipe(Layer.provide(FetchHttpClient.layer)))]));
22
+ //#endregion
23
+ export { localModelResolver as default };
24
+
25
+ //# sourceMappingURL=chunk-local-model-resolver.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-local-model-resolver.mjs","names":[],"sources":["../../src/capabilities/local-model-resolver.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as OpenAiClient from '@effect/ai-openai/OpenAiClient';\nimport * as FetchHttpClient from '@effect/platform/FetchHttpClient';\nimport * as HttpClient from '@effect/platform/HttpClient';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { LMStudioResolver, OllamaResolver } from '@dxos/ai/resolvers';\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\n\n/**\n * To start LM Studio server:\n * ```bash\n * ~/.lmstudio/bin/lms server start --cors\n * ```\n *\n * To start Ollama server:\n * ```bash\n * OLLAMA_ORIGINS=\"*\" ollama serve\n * ```\n */\nconst localModelResolver = Capability.makeModule<[]>(() =>\n Effect.succeed([\n Capability.contributes(\n AppCapabilities.AiModelResolver,\n LMStudioResolver.make().pipe(\n Layer.provide(\n OpenAiClient.layer({\n apiUrl: LMStudioResolver.DEFAULT_LMSTUDIO_ENDPOINT,\n }),\n ),\n Layer.provide(FetchHttpClient.layer),\n ),\n ),\n Capability.contributes(\n AppCapabilities.AiModelResolver,\n OllamaResolver.make({\n transformClient: HttpClient.withTracerPropagation(false),\n }).pipe(Layer.provide(FetchHttpClient.layer)),\n ),\n ]),\n);\n\nexport default localModelResolver;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyBA,IAAM,qBAAqB,WAAW,iBACpC,OAAO,QAAQ,CACb,WAAW,YACT,gBAAgB,iBAChB,iBAAiB,KAAK,CAAC,CAAC,KACtB,MAAM,QACJ,aAAa,MAAM,EACjB,QAAQ,iBAAiB,0BAC3B,CAAC,CACH,GACA,MAAM,QAAQ,gBAAgB,KAAK,CACrC,CACF,GACA,WAAW,YACT,gBAAgB,iBAChB,eAAe,KAAK,EAClB,iBAAiB,WAAW,sBAAsB,KAAK,EACzD,CAAC,CAAC,CAAC,KAAK,MAAM,QAAQ,gBAAgB,KAAK,CAAC,CAC9C,CACF,CAAC,CACH"}
@@ -0,0 +1,27 @@
1
+ import { t as promptRunExtension } from "./chunk-extensions.mjs";
2
+ import { Capabilities, Capability } from "@dxos/app-framework";
3
+ import { Obj } from "@dxos/echo";
4
+ import * as Effect from "effect/Effect";
5
+ import { MarkdownCapabilities } from "@dxos/plugin-markdown/types";
6
+ import { RoutineOperation } from "@dxos/plugin-routine/types";
7
+ //#region src/capabilities/markdown-extension.ts
8
+ var markdown_extension_default = Capability.makeModule(Effect.fnUntraced(function* () {
9
+ const capabilities = yield* Capability.Service;
10
+ return Capability.contributes(MarkdownCapabilities.ExtensionProvider, [({ document: doc, viewMode }) => {
11
+ if (viewMode === "source") return;
12
+ if (!doc) return;
13
+ const db = Obj.getDatabase(doc);
14
+ if (!db) return;
15
+ const { invokePromise } = capabilities.get(Capabilities.OperationInvoker);
16
+ return promptRunExtension({ onRun: (promptText) => {
17
+ invokePromise(RoutineOperation.RunPromptInNewChat, {
18
+ db,
19
+ instructions: promptText
20
+ });
21
+ } });
22
+ }]);
23
+ }));
24
+ //#endregion
25
+ export { markdown_extension_default as default };
26
+
27
+ //# sourceMappingURL=chunk-markdown-extension.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-markdown-extension.mjs","names":[],"sources":["../../src/capabilities/markdown-extension.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { MarkdownCapabilities } from '@dxos/plugin-markdown/types';\nimport { RoutineOperation } from '@dxos/plugin-routine/types';\n\nimport { promptRunExtension } from '../extensions';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n return Capability.contributes(MarkdownCapabilities.ExtensionProvider, [\n ({ document: doc, viewMode }) => {\n if (viewMode === 'source') {\n return undefined;\n }\n\n if (!doc) {\n return undefined;\n }\n\n const db = Obj.getDatabase(doc);\n if (!db) {\n return undefined;\n }\n\n const { invokePromise } = capabilities.get(Capabilities.OperationInvoker);\n\n return promptRunExtension({\n onRun: (promptText) => {\n void invokePromise(RoutineOperation.RunPromptInNewChat, { db, instructions: promptText });\n },\n });\n },\n ]);\n }),\n);\n"],"mappings":";;;;;;;AAaA,IAAA,6BAAe,WAAW,WACxB,OAAO,WAAW,aAAa;CAC7B,MAAM,eAAe,OAAO,WAAW;CAEvC,OAAO,WAAW,YAAY,qBAAqB,mBAAmB,EACnE,EAAE,UAAU,KAAK,eAAe;EAC/B,IAAI,aAAa,UACf;EAGF,IAAI,CAAC,KACH;EAGF,MAAM,KAAK,IAAI,YAAY,GAAG;EAC9B,IAAI,CAAC,IACH;EAGF,MAAM,EAAE,kBAAkB,aAAa,IAAI,aAAa,gBAAgB;EAExE,OAAO,mBAAmB,EACxB,QAAQ,eAAe;GACrB,cAAmB,iBAAiB,oBAAoB;IAAE;IAAI,cAAc;GAAW,CAAC;EAC1F,EACF,CAAC;CACH,CACF,CAAC;AACH,CAAC,CACH"}
@@ -1,16 +1,13 @@
1
- // src/meta.ts
2
1
  import { Plugin } from "@dxos/app-framework";
3
2
  import { DXN } from "@dxos/keys";
4
-
5
- // dx.config.ts
6
3
  import { Config2 } from "@dxos/app-framework/config";
7
4
  import { trim } from "@dxos/util";
8
- var dx_config_default = Config2.make({
9
- plugin: {
10
- key: "org.dxos.plugin.assistant",
11
- name: "Assistant",
12
- author: "DXOS",
13
- description: trim`
5
+ //#region dx.config.ts
6
+ var dx_config_default = Config2.make({ plugin: {
7
+ key: "org.dxos.plugin.assistant",
8
+ name: "Assistant",
9
+ author: "DXOS",
10
+ description: trim`
14
11
  AssistantPlugin brings a conversational AI assistant into DXOS Composer, letting users chat naturally
15
12
  with objects in their spaces. Every Chat is a first-class ECHO object — messages are persisted,
16
13
  replicated across peers in real time, and can be bound to any document or collection as a companion
@@ -31,23 +28,21 @@ var dx_config_default = Config2.make({
31
28
  TracePanel visualises that trace as a commit graph or raw JSON, giving developers full observability
32
29
  into what the model did and why.
33
30
  `,
34
- icon: {
35
- key: "ph--sparkle--regular",
36
- hue: "sky"
37
- },
38
- source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant",
39
- spec: "PLUGIN.mdl"
40
- }
41
- });
42
-
43
- // src/meta.ts
31
+ icon: {
32
+ key: "ph--sparkle--regular",
33
+ hue: "sky"
34
+ },
35
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant",
36
+ spec: "PLUGIN.mdl",
37
+ tags: ["alpha"]
38
+ } });
39
+ //#endregion
40
+ //#region src/meta.ts
44
41
  var meta = Plugin.getMetaFromConfig(dx_config_default);
45
42
  var ASSISTANT_DIALOG = DXN.make(`${meta.profile.key}.assistantDialog`);
43
+ /** Companion variant identifier for the assistant chat panel. */
46
44
  var ASSISTANT_COMPANION_VARIANT = "assistant-chat";
45
+ //#endregion
46
+ export { ASSISTANT_DIALOG as n, meta as r, ASSISTANT_COMPANION_VARIANT as t };
47
47
 
48
- export {
49
- meta,
50
- ASSISTANT_DIALOG,
51
- ASSISTANT_COMPANION_VARIANT
52
- };
53
- //# sourceMappingURL=chunk-L7AR4VTA.mjs.map
48
+ //# sourceMappingURL=chunk-meta.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-meta.mjs","names":[],"sources":["../../dx.config.ts","../../src/meta.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.assistant',\n name: 'Assistant',\n author: 'DXOS',\n description: trim`\n AssistantPlugin brings a conversational AI assistant into DXOS Composer, letting users chat naturally\n with objects in their spaces. Every Chat is a first-class ECHO object — messages are persisted,\n replicated across peers in real time, and can be bound to any document or collection as a companion\n panel that appears alongside the primary view.\n\n AI capabilities are delivered through a flexible multi-provider model layer. Users can route requests\n to the DXOS Edge service, a locally running Ollama instance, or LM Studio, and switch providers at\n any time in Settings. Each provider can be configured with a preferred model, and the runtime\n automatically falls back when a provider is unavailable.\n\n Skills give every chat a specialised identity. Built-in skills cover general assistance,\n web browsing, database interaction, web search, Discord and Linear integration, autonomous agents,\n planning, memory, automation, and a wizard for authoring new skills. Binding a skill\n changes the system instructions and the tool set exposed to the model in a single step.\n\n Tool execution runs through the DXOS compute runtime so every AI action — opening a document,\n searching the web, querying a database — produces a structured execution trace. The optional\n TracePanel visualises that trace as a commit graph or raw JSON, giving developers full observability\n into what the model did and why.\n `,\n icon: { key: 'ph--sparkle--regular', hue: 'sky' },\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',\n spec: 'PLUGIN.mdl',\n tags: ['alpha'],\n },\n});\n","//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { DXN } from '@dxos/keys';\n\nimport config from '../dx.config';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n\nexport const ASSISTANT_DIALOG = DXN.make(`${meta.profile.key}.assistantDialog`);\n\n/** Companion variant identifier for the assistant chat panel. */\nexport const ASSISTANT_COMPANION_VARIANT = 'assistant-chat';\n"],"mappings":";;;;;AAOA,IAAA,oBAAe,QAAQ,KAAK,EAC1B,QAAQ;CACN,KAAK;CACL,MAAM;CACN,QAAQ;CACR,aAAa,IAAI;;;;;;;;;;;;;;;;;;;;;CAqBjB,MAAM;EAAE,KAAK;EAAwB,KAAK;CAAM;CAChD,QAAQ;CACR,MAAM;CACN,MAAM,CAAC,OAAO;AAChB,EACF,CAAC;;;AC7BD,IAAa,OAAO,OAAO,kBAAkB,iBAAM;AAEnD,IAAa,mBAAmB,IAAI,KAAK,GAAG,KAAK,QAAQ,IAAI,iBAAiB;;AAG9E,IAAa,8BAA8B"}
@@ -0,0 +1,13 @@
1
+ import { u as __exportAll } from "./chunk-types.mjs";
2
+ import { Capabilities, Capability } from "@dxos/app-framework";
3
+ import * as Effect from "effect/Effect";
4
+ import { AssistantOperationHandlerSet } from "#operations";
5
+ //#region src/capabilities/operation-handler.ts
6
+ var operation_handler_exports = /* @__PURE__ */ __exportAll({ default: () => operation_handler_default });
7
+ var operation_handler_default = Capability.makeModule(Effect.fnUntraced(function* () {
8
+ return Capability.contributes(Capabilities.OperationHandler, AssistantOperationHandlerSet);
9
+ }));
10
+ //#endregion
11
+ export { operation_handler_exports as n, operation_handler_default as t };
12
+
13
+ //# sourceMappingURL=chunk-operation-handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-operation-handler.mjs","names":[],"sources":["../../src/capabilities/operation-handler.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport type { OperationHandlerSet } from '@dxos/compute';\n\nimport { AssistantOperationHandlerSet } from '#operations';\n\nexport default Capability.makeModule<OperationHandlerSet.OperationHandlerSet>(\n Effect.fnUntraced(function* () {\n return Capability.contributes(Capabilities.OperationHandler, AssistantOperationHandlerSet);\n }),\n);\n"],"mappings":";;;;;;AAWA,IAAA,4BAAe,WAAW,WACxB,OAAO,WAAW,aAAa;CAC7B,OAAO,WAAW,YAAY,aAAa,kBAAkB,4BAA4B;AAC3F,CAAC,CACH"}
@@ -0,0 +1,8 @@
1
+ import { GraphPath } from "@dxos/app-toolkit";
2
+ import { Chat } from "@dxos/assistant-toolkit";
3
+ //#region src/paths.ts
4
+ var { getSectionPath: getChatsPath, getObjectPath: getChatPath } = GraphPath.createTypeSectionPaths(Chat.Chat, { groupId: GraphPath.GroupSegments.ai });
5
+ //#endregion
6
+ export { getChatsPath as n, getChatPath as t };
7
+
8
+ //# sourceMappingURL=chunk-paths.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-paths.mjs","names":[],"sources":["../../src/paths.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { GraphPath } from '@dxos/app-toolkit';\nimport { Chat } from '@dxos/assistant-toolkit';\n\nconst { getSectionPath: getChatsPath, getObjectPath: getChatPath } = GraphPath.createTypeSectionPaths(Chat.Chat, {\n groupId: GraphPath.GroupSegments.ai,\n});\n\nexport { getChatPath, getChatsPath };\n"],"mappings":";;;AAOA,IAAM,EAAE,gBAAgB,cAAc,eAAe,gBAAgB,UAAU,uBAAuB,KAAK,MAAM,EAC/G,SAAS,UAAU,cAAc,GACnC,CAAC"}
@@ -0,0 +1,432 @@
1
+ import { Harness, McpServerError, PartialBlock, ToolExecutionServices, createSystemPrompt, formatSystemPrompt } from "@dxos/assistant";
2
+ import { AgentService, Operation, Trace } from "@dxos/compute";
3
+ import { DXN } from "@dxos/keys";
4
+ import { trim } from "@dxos/util";
5
+ import { Model, Provider } from "@dxos/ai";
6
+ import { EffectEx } from "@dxos/effect";
7
+ import { Database, Obj } from "@dxos/echo";
8
+ import { Atom, Registry as Registry$1 } from "@effect-atom/atom";
9
+ import { ContentBlock, Message } from "@dxos/types";
10
+ import { AssistantOperation } from "#types";
11
+ import * as Effect from "effect/Effect";
12
+ import * as Option from "effect/Option";
13
+ import { log } from "@dxos/log";
14
+ import * as AiError from "@effect/ai/AiError";
15
+ import * as Cause from "effect/Cause";
16
+ import * as Exit from "effect/Exit";
17
+ import * as Fiber from "effect/Fiber";
18
+ import * as Stream from "effect/Stream";
19
+ import { UsageQuotaExceededError } from "@dxos/edge-client";
20
+ //#region src/processor/presets.ts
21
+ /** Presets for a provider: every model the provider serves (the catalog filtered by provider). */
22
+ var presetsForProvider = (provider) => Model.forProvider(provider).map((model) => ({
23
+ id: model.id,
24
+ provider,
25
+ model: model.id,
26
+ backend: model.backend,
27
+ label: model.label
28
+ }));
29
+ /**
30
+ * Reconcile a stored provider DXN with the runtime: map the bundled sidecar (`built-in`) and an
31
+ * external server (`ollama`) onto whichever is actually available — they are environment-exclusive
32
+ * (the sidecar exists only on desktop). Defaults to `edge` when unset or unparseable.
33
+ */
34
+ var resolveProvider = (provider, hasBuiltIn) => {
35
+ const resolved = (provider ? DXN.tryMake(provider) : void 0) ?? Provider.edge.id;
36
+ if (resolved === Provider.ollama.id && hasBuiltIn) return Provider.builtIn.id;
37
+ if (resolved === Provider.builtIn.id && !hasBuiltIn) return Provider.ollama.id;
38
+ return resolved;
39
+ };
40
+ /** The {@link Settings.modelDefaults} key for a provider (`built-in` shares the `ollama` key). */
41
+ var defaultsKeyForProvider = (provider) => provider === Provider.edge.id ? "edge" : provider === Provider.lmStudio.id ? "lmstudio" : "ollama";
42
+ //#endregion
43
+ //#region src/util/error-cause.ts
44
+ /** Walk an error's `cause` chain and return the first value matching `predicate`. */
45
+ var findInCause = (error, predicate) => {
46
+ let current = error;
47
+ const visited = /* @__PURE__ */ new Set();
48
+ while (current) {
49
+ if (visited.has(current)) break;
50
+ visited.add(current);
51
+ if (predicate(current)) return current;
52
+ current = current instanceof Error ? current.cause : void 0;
53
+ }
54
+ };
55
+ //#endregion
56
+ //#region src/processor/prompt.ts
57
+ /**
58
+ * Prompt content for a request: the bare message, or — when the request carries selection context —
59
+ * a synthetic block (system-generated user-turn content, hidden from the summary view) ahead of it.
60
+ */
61
+ var createPromptContent = (request) => {
62
+ const selection = request.context?.selection;
63
+ if (!selection?.text.length) return request.message;
64
+ return [ContentBlock.Text.make({
65
+ disposition: "synthetic",
66
+ text: trim`
67
+ The user's current selection in the document they are viewing:
68
+ <selection>
69
+ ${selection.text}
70
+ </selection>
71
+ `
72
+ }), ContentBlock.Text.make({ text: request.message })];
73
+ };
74
+ //#endregion
75
+ //#region src/processor/processor.ts
76
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/processor/processor.ts";
77
+ var defaultOptions = { model: Model.DEFAULT_EDGE };
78
+ /** User-facing message shown when an AI request is rejected for exceeding the account usage quota (HTTP 429). */
79
+ var QUOTA_EXCEEDED_MESSAGE = "You have reached your AI usage limit for this period.";
80
+ /**
81
+ * Display error for an over-quota (HTTP 429) rejection. Declares an {@link action} so the chat toast can
82
+ * offer a usage-dashboard link declaratively — the UI renders whatever action an error declares rather
83
+ * than branching on the error type.
84
+ */
85
+ var AiUsageQuotaError = class extends Error {
86
+ action = { labelKey: "view-usage.label" };
87
+ };
88
+ /**
89
+ * Matches an over-quota rejection (EDGE responds 429) in error text. The typed
90
+ * {@link UsageQuotaExceededError} is wrapped deep in the cause chain and does not survive the
91
+ * agent-process boundary — the failure is rendered to a string via `Cause.pretty`, which drops
92
+ * nested causes — so detection also relies on the HTTP 429 that `@effect/ai`'s
93
+ * {@link AiError.HttpResponseError} embeds in its message (e.g. "... (429 POST ...").
94
+ */
95
+ var QUOTA_PATTERN = /\b429\b|rate.?limit|too many requests|usage quota|quota exceeded/i;
96
+ /** Whether an error denotes an over-quota (HTTP 429) rejection, detected by typed status or message text. */
97
+ var isQuotaError = (err) => {
98
+ if (AiError.isAiError(err)) {
99
+ if (err._tag === "HttpResponseError" && err.response.status === 429) return true;
100
+ return QUOTA_PATTERN.test(err.description ?? err.message);
101
+ }
102
+ return typeof err === "string" && QUOTA_PATTERN.test(err);
103
+ };
104
+ /**
105
+ * Maps a failure from the agent fiber to an error suitable for display.
106
+ * An over-quota (HTTP 429) rejection is surfaced as an actionable usage-limit message; the typed
107
+ * {@link UsageQuotaExceededError} only survives on the direct path, so {@link isQuotaError} also
108
+ * recognizes the stringified 429 the chat receives across the agent-process boundary.
109
+ * Other {@link AiError}s originate from the AI service and are actionable by the user
110
+ * (e.g., "model 'x' not found", "Connection refused"), so their detail is propagated.
111
+ * Any other failure is treated as an internal/unexpected error and reported generically
112
+ * to avoid leaking implementation detail.
113
+ */
114
+ var parseError = (err) => {
115
+ const quotaError = findInCause(err, UsageQuotaExceededError.is);
116
+ if (quotaError || isQuotaError(err)) return new AiUsageQuotaError(quotaError?.message?.trim() || QUOTA_EXCEEDED_MESSAGE, { cause: err });
117
+ let message;
118
+ if (AiError.isAiError(err)) message = err.description?.trim() || err.message;
119
+ else if (typeof err === "string") {
120
+ const [, model] = err.match(/model\s+'([^']+)'\s+not\s+found/i) || [];
121
+ if (model) message = `The model is not available: ${model}`;
122
+ }
123
+ if (!message) message = "An unexpected error occurred.";
124
+ return new Error(message, { cause: err });
125
+ };
126
+ /**
127
+ * Handles interactions with the AI service.
128
+ * Uses AgentService to spawn a process-backed agent and subscribes to ephemeral trace events for streaming.
129
+ */
130
+ var AiChatProcessor = class {
131
+ _conversation;
132
+ _runtime;
133
+ _feed;
134
+ _spaceLayer;
135
+ _options;
136
+ #registry;
137
+ /** Pending messages (finalized, non-streaming). */
138
+ #pending = Atom.make([]);
139
+ /** Currently streaming messages (from ephemeral trace events). */
140
+ #streaming = Atom.make([]);
141
+ /** Set of message IDs that have been finalized (non-pending delivered via ephemeral). */
142
+ #finalizedIds = /* @__PURE__ */ new Set();
143
+ /** Currently active request fiber. */
144
+ #requestFiber;
145
+ /** Last request (for retries). */
146
+ #lastRequest;
147
+ /** Streaming state. */
148
+ streaming = Atom.make((get) => get(this.#streaming).length > 0);
149
+ /** Active state. */
150
+ active = Atom.make(false);
151
+ /** Array of Messages (incl. the current message being streamed). */
152
+ messages = Atom.make((get) => [...get(this.#pending), ...get(this.#streaming)]);
153
+ /** Last error. */
154
+ error = Atom.make(Option.none());
155
+ /**
156
+ * MCP server connection errors observed during the most recent request.
157
+ * Misconfigured/unreachable servers are dropped from the toolkit so the chat
158
+ * keeps working; the entries here let the UI display which servers failed.
159
+ */
160
+ mcpErrors = Atom.make([]);
161
+ constructor(_conversation, _runtime, _feed, _spaceLayer, _options = defaultOptions) {
162
+ this._conversation = _conversation;
163
+ this._runtime = _runtime;
164
+ this._feed = _feed;
165
+ this._spaceLayer = _spaceLayer;
166
+ this._options = _options;
167
+ this.#registry = this._options.observableRegistry ?? Registry$1.make();
168
+ if (this._options.model && !this._options.system) {
169
+ const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};
170
+ this._options.system = createSystemPrompt(capabilities);
171
+ }
172
+ }
173
+ get context() {
174
+ return this._conversation.context;
175
+ }
176
+ get conversation() {
177
+ return this._conversation;
178
+ }
179
+ get registry() {
180
+ return this._options.registry;
181
+ }
182
+ get system() {
183
+ return this._options.system ?? "";
184
+ }
185
+ async getTools() {
186
+ return this._runtime.runPromise(Effect.provide(this._conversation.getTools(), ToolExecutionServices).pipe(Effect.provide(this._spaceLayer)));
187
+ }
188
+ async getSystemPrompt() {
189
+ return this._runtime.runPromise(Effect.gen(this, function* () {
190
+ const skills = this.context.getSkills();
191
+ const objects = this.context.getObjects();
192
+ const instructions = yield* this.#getInstructions();
193
+ const runtime = yield* Effect.runtime();
194
+ return yield* formatSystemPrompt({
195
+ system: this._options.system,
196
+ skills,
197
+ objects,
198
+ instructions
199
+ }).pipe(Effect.provideService(Harness.HarnessService, Harness.fromBinder({
200
+ feed: this._feed,
201
+ runtime,
202
+ binder: this.context
203
+ })));
204
+ }).pipe(Effect.provide(this._spaceLayer), Effect.orDie));
205
+ }
206
+ /**
207
+ * Resolves the chat's steering instructions, if any. The session is feed-centric and cannot reach
208
+ * its chat, so the ref is resolved here and handed down.
209
+ */
210
+ #getInstructions() {
211
+ return Effect.gen(this, function* () {
212
+ const instructionsRef = this._options.chat?.target?.instructions;
213
+ if (!instructionsRef) return [];
214
+ const instructions = yield* Database.load(instructionsRef).pipe(Effect.orElseSucceed(() => void 0));
215
+ return instructions ? [instructions] : [];
216
+ });
217
+ }
218
+ /**
219
+ * Initiates a new request via AgentService.
220
+ */
221
+ async request(requestProp) {
222
+ if (this.#requestFiber) await this.cancel();
223
+ try {
224
+ this.#lastRequest = requestProp;
225
+ this.#registry.set(this.error, Option.none());
226
+ this.#registry.set(this.mcpErrors, []);
227
+ this.#registry.set(this.active, true);
228
+ const effect = Effect.gen(this, function* () {
229
+ log.info("init agent session", {
230
+ feed: Obj.getURI(this._feed),
231
+ model: this._options.model,
232
+ provider: this._options.provider
233
+ }, {
234
+ "~LogMeta": "~LogMeta",
235
+ F: __dxlog_file,
236
+ L: 305,
237
+ S: this
238
+ });
239
+ const session = yield* AgentService.getSession(this._feed, {
240
+ model: this._options.model,
241
+ provider: this._options.provider,
242
+ instructions: this._options.chat?.target?.instructions
243
+ });
244
+ yield* session.subscribeEphemeral().pipe(Stream.runForEach((message) => Effect.sync(() => {
245
+ for (const event of message.events) if (Trace.isOfType(PartialBlock, event)) this.#handleEphemeralMessage(event.data);
246
+ else if (Trace.isOfType(McpServerError, event)) this.#handleMcpError(event.data);
247
+ })), Effect.fork);
248
+ log("chat processor submitting prompt", { length: requestProp.message.length }, {
249
+ "~LogMeta": "~LogMeta",
250
+ F: __dxlog_file,
251
+ L: 331,
252
+ S: this
253
+ });
254
+ yield* session.submitPrompt(createPromptContent(requestProp));
255
+ log("chat processor submitPrompt returned, waiting for agent", {}, {
256
+ "~LogMeta": "~LogMeta",
257
+ F: __dxlog_file,
258
+ L: 333,
259
+ S: this
260
+ });
261
+ if (!this._options.chat?.target?.name) yield* this.#updateChatName(requestProp.message);
262
+ yield* session.waitForCompletion();
263
+ log.info("session complete", void 0, {
264
+ "~LogMeta": "~LogMeta",
265
+ F: __dxlog_file,
266
+ L: 342,
267
+ S: this
268
+ });
269
+ this.#flushStreaming();
270
+ });
271
+ this.#requestFiber = this._runtime.runFork(effect.pipe(Effect.provide(this._spaceLayer)));
272
+ const exit = await this._runtime.runPromise(Fiber.await(this.#requestFiber));
273
+ if (Exit.isFailure(exit)) {
274
+ if (Cause.isInterruptedOnly(exit.cause)) {
275
+ this.#discardStreaming();
276
+ return;
277
+ }
278
+ throw EffectEx.causeToError(exit.cause);
279
+ }
280
+ this.#registry.set(this.error, Option.none());
281
+ this.#lastRequest = void 0;
282
+ this.#requestFiber = void 0;
283
+ } catch (err) {
284
+ log.error("request failed", { error: err }, {
285
+ "~LogMeta": "~LogMeta",
286
+ F: __dxlog_file,
287
+ L: 367,
288
+ S: this
289
+ });
290
+ this.#registry.set(this.error, Option.some(parseError(err)));
291
+ } finally {
292
+ log.info("setting active to false", void 0, {
293
+ "~LogMeta": "~LogMeta",
294
+ F: __dxlog_file,
295
+ L: 370,
296
+ S: this
297
+ });
298
+ this.#registry.set(this.active, false);
299
+ this.#requestFiber = void 0;
300
+ }
301
+ }
302
+ /**
303
+ * Cancels the current request.
304
+ */
305
+ async cancel() {
306
+ await EffectEx.runAndForwardErrors(Effect.gen(this, function* () {
307
+ log.info("cancelling request", { fiber: this.#requestFiber }, {
308
+ "~LogMeta": "~LogMeta",
309
+ F: __dxlog_file,
310
+ L: 382,
311
+ S: this
312
+ });
313
+ if (this.#requestFiber) yield* Fiber.interrupt(this.#requestFiber);
314
+ yield* (yield* AgentService.getSession(this._feed)).terminate();
315
+ }).pipe(Effect.provide(this._spaceLayer)));
316
+ this.#requestFiber = void 0;
317
+ this.#discardStreaming();
318
+ this.#registry.set(this.active, false);
319
+ }
320
+ /**
321
+ * Retry last failed request.
322
+ */
323
+ async retry() {
324
+ if (this.#lastRequest) return this.request(this.#lastRequest);
325
+ }
326
+ /**
327
+ * Clears the recorded MCP server errors (e.g. after the user dismisses the warning banner).
328
+ */
329
+ dismissMcpErrors() {
330
+ this.#registry.set(this.mcpErrors, []);
331
+ }
332
+ /**
333
+ * Update the current chat's name.
334
+ */
335
+ async updateName(chat) {
336
+ const spaceId = Obj.getDatabase(chat)?.spaceId;
337
+ if (!spaceId) return;
338
+ EffectEx.unwrapExit(await this._runtime.runPromiseExit(Operation.invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId }).pipe(Effect.provide(this._spaceLayer))));
339
+ }
340
+ /**
341
+ * Handles an ephemeral message from the agent process.
342
+ * Both pending and completed blocks arrive here. Completed blocks are deduped
343
+ * against messages already written to the feed queue to handle the race between
344
+ * ephemeral delivery and feed replication.
345
+ */
346
+ #handleEphemeralMessage(event) {
347
+ const isPending = event.block.pending;
348
+ const message = Obj.make(Message.Message, {
349
+ id: event.messageId,
350
+ created: (/* @__PURE__ */ new Date()).toISOString(),
351
+ sender: { role: event.role },
352
+ blocks: [event.block]
353
+ });
354
+ if (isPending) {
355
+ if (this.#finalizedIds.has(event.messageId)) return;
356
+ this.#registry.update(this.#streaming, (streaming) => {
357
+ const idx = streaming.findIndex((existing) => existing.id === event.messageId);
358
+ if (idx >= 0) {
359
+ const updated = [...streaming];
360
+ updated[idx] = message;
361
+ return updated;
362
+ }
363
+ return [...streaming, message];
364
+ });
365
+ } else {
366
+ this.#finalizedIds.add(event.messageId);
367
+ this.#registry.update(this.#streaming, (streaming) => streaming.filter((existing) => existing.id !== message.id));
368
+ this.#registry.update(this.#pending, (pending) => {
369
+ if (pending.some((existing) => existing.id === message.id)) return pending;
370
+ return [...pending, message];
371
+ });
372
+ }
373
+ }
374
+ /**
375
+ * Records a per-server MCP failure, deduped by url+protocol so repeat misconfigurations
376
+ * across turns do not spam the UI.
377
+ */
378
+ #handleMcpError(event) {
379
+ log.warn("MCP server error", event, {
380
+ "~LogMeta": "~LogMeta",
381
+ F: __dxlog_file,
382
+ L: 474,
383
+ S: this
384
+ });
385
+ this.#registry.update(this.mcpErrors, (errors) => {
386
+ if (errors.some((existing) => existing.url === event.url && existing.protocol === event.protocol)) return errors;
387
+ return [...errors, event];
388
+ });
389
+ }
390
+ /**
391
+ * Drop in-flight streaming messages (cancel/interrupt — partial blocks are discarded).
392
+ */
393
+ #discardStreaming() {
394
+ this.#registry.set(this.#streaming, []);
395
+ this.#finalizedIds.clear();
396
+ }
397
+ /**
398
+ * Move remaining streaming messages to pending (called when agent completes).
399
+ */
400
+ #flushStreaming() {
401
+ const remaining = this.#registry.get(this.#streaming);
402
+ if (remaining.length > 0) {
403
+ this.#registry.update(this.#pending, (pending) => [...pending, ...remaining]);
404
+ this.#registry.set(this.#streaming, []);
405
+ }
406
+ this.#finalizedIds.clear();
407
+ }
408
+ /**
409
+ * Schedule a chat name update as a detached (fire-and-forget) operation.
410
+ * Called automatically on the first message; can also be invoked manually via the toolbar.
411
+ */
412
+ #updateChatName(prompt) {
413
+ const chat = this._options.chat?.target;
414
+ if (!chat) return Effect.void;
415
+ const spaceId = Obj.getDatabase(chat)?.spaceId;
416
+ if (!spaceId) return Effect.void;
417
+ log.info("scheduling chat name update", void 0, {
418
+ "~LogMeta": "~LogMeta",
419
+ F: __dxlog_file,
420
+ L: 518,
421
+ S: this
422
+ });
423
+ return Operation.schedule(AssistantOperation.UpdateChatName, {
424
+ chat,
425
+ prompt
426
+ }, { spaceId });
427
+ }
428
+ };
429
+ //#endregion
430
+ export { resolveProvider as a, presetsForProvider as i, AiUsageQuotaError as n, defaultsKeyForProvider as r, AiChatProcessor as t };
431
+
432
+ //# sourceMappingURL=chunk-processor.mjs.map