@dxos/plugin-assistant 0.10.0 → 0.11.1

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,12 @@
1
+ import { u as __exportAll } from "./chunk-types.mjs";
2
+ import { AppCapabilities } from "@dxos/app-toolkit";
3
+ import { Capability } from "@dxos/app-framework";
4
+ import { WebSearchToolkitOpaque } from "@dxos/assistant-toolkit";
5
+ import * as Effect from "effect/Effect";
6
+ //#region src/capabilities/toolkit.ts
7
+ var toolkit_exports = /* @__PURE__ */ __exportAll({ default: () => toolkit_default });
8
+ var toolkit_default = Capability.makeModule(() => Effect.succeed([Capability.contributes(AppCapabilities.Toolkit, WebSearchToolkitOpaque)]));
9
+ //#endregion
10
+ export { toolkit_exports as n, toolkit_default as t };
11
+
12
+ //# sourceMappingURL=chunk-toolkit.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-toolkit.mjs","names":[],"sources":["../../src/capabilities/toolkit.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { WebSearchToolkitOpaque } from '@dxos/assistant-toolkit';\n\nexport default Capability.makeModule(() =>\n Effect.succeed([Capability.contributes(AppCapabilities.Toolkit, WebSearchToolkitOpaque)]),\n);\n"],"mappings":";;;;;;;AAUA,IAAA,kBAAe,WAAW,iBACxB,OAAO,QAAQ,CAAC,WAAW,YAAY,gBAAgB,SAAS,sBAAsB,CAAC,CAAC,CAC1F"}
@@ -0,0 +1,332 @@
1
+ import { Instructions, Operation } from "@dxos/compute";
2
+ import { ActivationEvent, Capability, Role } from "@dxos/app-framework";
3
+ import { DXN } from "@dxos/keys";
4
+ import { Chat } from "@dxos/assistant-toolkit";
5
+ import * as Schema from "effect/Schema";
6
+ import { AiService, Provider } from "@dxos/ai";
7
+ import { SchemaEx } from "@dxos/effect";
8
+ import { DXN as DXN$1, Database, Obj, Ref, Type } from "@dxos/echo";
9
+ import { meta } from "#meta";
10
+ import { Atom } from "@effect-atom/atom";
11
+ import { ComputeGraph } from "@dxos/conductor";
12
+ //#region \0rolldown/runtime.js
13
+ var __defProp = Object.defineProperty;
14
+ var __exportAll = (all, no_symbols) => {
15
+ let target = {};
16
+ for (var name in all) __defProp(target, name, {
17
+ get: all[name],
18
+ enumerable: true
19
+ });
20
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
21
+ return target;
22
+ };
23
+ //#endregion
24
+ //#region src/types/ChatSurface.ts
25
+ /**
26
+ * Role token for surfaces an agent requests inline in the conversation via the `<surface>` content
27
+ * block. `role` selects the concrete surface to render (e.g. `integration-prompt`); `data` carries
28
+ * its payload (e.g. `{ service: 'gmail.com' }`). Plugins contribute renderers by filtering on the
29
+ * inner `role`, which keeps the chat renderer decoupled from the specific surfaces it can host.
30
+ */
31
+ var ChatSurface = Role.make("org.dxos.plugin.assistant.role.chatSurface");
32
+ //#endregion
33
+ //#region src/types/Settings.ts
34
+ var ModelProvider$1 = DXN.Schema;
35
+ var ModelProviders$1 = Provider.all.map((provider) => provider.id);
36
+ var ChatView$1 = Schema.Union(Schema.Literal("normal").annotations({ title: "Normal" }), Schema.Literal("summary").annotations({ title: "Summary" }), Schema.Literal("thinking").annotations({ title: "Thinking" }), Schema.Literal("debug").annotations({ title: "Debug" }));
37
+ var ChatViews$1 = SchemaEx.getLiteralValues(ChatView$1);
38
+ var ModelDefaults$1 = Schema.mutable(Schema.Struct({
39
+ edge: Schema.optional(Schema.String.annotations({
40
+ title: "Remote language model",
41
+ description: "Choose the remote language model used for AI requests."
42
+ })),
43
+ ollama: Schema.optional(Schema.String.annotations({
44
+ title: "Local language model",
45
+ description: "Choose the locally hosted model used for AI requests."
46
+ })),
47
+ lmstudio: Schema.optional(Schema.String.annotations({
48
+ title: "LM Studio language model",
49
+ description: "Choose the locally hosted LM Studio model for AI requests."
50
+ }))
51
+ }));
52
+ var Settings$2 = Schema.mutable(Schema.Struct({
53
+ customPrompts: Schema.optional(Schema.Boolean.annotations({
54
+ title: "Use custom prompts",
55
+ description: "Allow the assistant to use custom prompts defined in your spaces."
56
+ })),
57
+ chatView: Schema.optional(ChatView$1.annotations({
58
+ title: "Chat view",
59
+ description: "Controls which message blocks are shown in the chat: normal hides reasoning, thinking shows reasoning, debug shows raw blocks, summary shows only conversational text."
60
+ })),
61
+ modelProvider: Schema.optional(ModelProvider$1.annotations({
62
+ title: "LLM provider",
63
+ description: "Select which language model service to use for AI responses."
64
+ })),
65
+ modelDefaults: Schema.optional(ModelDefaults$1.annotations({ title: "Model defaults" })),
66
+ tracePanelDebug: Schema.optional(Schema.Boolean.annotations({
67
+ title: "Trace panel debug",
68
+ description: "Show the raw span tree as JSON in the trace panel instead of the commit graph."
69
+ }))
70
+ }));
71
+ //#endregion
72
+ //#region src/types/Assistant.ts
73
+ var Assistant_exports = /* @__PURE__ */ __exportAll({
74
+ Chat: () => Chat$1,
75
+ ChatView: () => ChatView,
76
+ ChatViews: () => ChatViews,
77
+ ModelDefaults: () => ModelDefaults,
78
+ ModelProvider: () => ModelProvider,
79
+ ModelProviders: () => ModelProviders,
80
+ Settings: () => Settings$1
81
+ });
82
+ var Chat$1 = Chat.Chat;
83
+ var Settings$1 = Settings$2;
84
+ var ChatViews = ChatViews$1;
85
+ var ChatView = ChatView$1;
86
+ var ModelProviders = ModelProviders$1;
87
+ var ModelProvider = ModelProvider$1;
88
+ var ModelDefaults = ModelDefaults$1;
89
+ //#endregion
90
+ //#region src/types/AssistantOperation.ts
91
+ var AssistantOperation_exports = /* @__PURE__ */ __exportAll({
92
+ CreateChat: () => CreateChat,
93
+ EnsureCompanionChat: () => EnsureCompanionChat,
94
+ ForkChat: () => ForkChat,
95
+ GenerateHomeSuggestions: () => GenerateHomeSuggestions,
96
+ SetCurrentChat: () => SetCurrentChat,
97
+ SkillForm: () => SkillForm,
98
+ ToggleTracePanelDebug: () => ToggleTracePanelDebug,
99
+ UpdateChatName: () => UpdateChatName
100
+ });
101
+ var makeKey = (name) => DXN.make(`${meta.profile.key}.operation.${name}`);
102
+ var CreateChat = Operation.make({
103
+ meta: {
104
+ key: makeKey("createChat"),
105
+ name: "Create Chat",
106
+ icon: "ph--chat-text--regular"
107
+ },
108
+ services: [Capability.Service],
109
+ input: Schema.Struct({
110
+ db: Database.Database,
111
+ name: Schema.optional(Schema.String),
112
+ /**
113
+ * Instructions steering the conversation, rendered into the system prompt at request time.
114
+ * Held by reference so the chat follows later edits to them.
115
+ */
116
+ instructions: Schema.optional(Ref.Ref(Instructions.Instructions)),
117
+ /** If false, chat is created in-memory only and not added to space. Defaults to true. */
118
+ addToSpace: Schema.optional(Schema.Boolean)
119
+ }),
120
+ output: Schema.Struct({ object: Type.getSchema(Chat.Chat) })
121
+ });
122
+ var UpdateChatName = Operation.make({
123
+ meta: {
124
+ key: makeKey("updateChatName"),
125
+ name: "Update Chat Name",
126
+ icon: "ph--pencil--regular"
127
+ },
128
+ services: [Database.Service, AiService.AiService],
129
+ input: Schema.Struct({
130
+ chat: Type.getSchema(Chat.Chat),
131
+ /** Initial user message text; used when the feed has no history yet (e.g. auto-rename on first send). */
132
+ prompt: Schema.optional(Schema.String)
133
+ }),
134
+ output: Schema.Void
135
+ });
136
+ var SetCurrentChat = Operation.make({
137
+ meta: {
138
+ key: makeKey("setCurrentChat"),
139
+ name: "Set Current Chat",
140
+ icon: "ph--chat-text--regular"
141
+ },
142
+ services: [Capability.Service],
143
+ input: Schema.Struct({
144
+ companionTo: Obj.Unknown,
145
+ chat: Type.getSchema(Chat.Chat).pipe(Schema.optional)
146
+ }),
147
+ output: Schema.Void
148
+ });
149
+ var ForkChat = Operation.make({
150
+ meta: {
151
+ key: makeKey("forkChat"),
152
+ name: "Fork Chat",
153
+ icon: "ph--git-branch--regular",
154
+ skipRegistry: true
155
+ },
156
+ services: [Capability.Service, Database.Service],
157
+ input: Schema.Struct({
158
+ chat: Type.getSchema(Chat.Chat),
159
+ /** When provided, the forked chat is set as the companion for this object rather than opened standalone. */
160
+ companionTo: Schema.optional(Obj.Unknown)
161
+ }),
162
+ output: Schema.Struct({ object: Type.getSchema(Chat.Chat) })
163
+ });
164
+ var EnsureCompanionChat = Operation.make({
165
+ meta: {
166
+ key: makeKey("ensureCompanionChat"),
167
+ name: "Ensure Companion Chat",
168
+ icon: "ph--chat-text--regular"
169
+ },
170
+ services: [Capability.Service],
171
+ input: Schema.Struct({
172
+ db: Database.Database,
173
+ companionTo: Obj.Unknown
174
+ }),
175
+ output: Schema.Struct({
176
+ chat: Type.getSchema(Chat.Chat),
177
+ /** Whether the returned chat was already persisted in the space. */
178
+ persisted: Schema.Boolean
179
+ })
180
+ });
181
+ var SkillForm = Schema.Struct({
182
+ key: Schema.String,
183
+ name: Schema.String,
184
+ description: Schema.optional(Schema.String)
185
+ });
186
+ var GenerateHomeSuggestions = Operation.make({
187
+ meta: {
188
+ key: makeKey("generateHomeSuggestions"),
189
+ name: "Generate Home Suggestions",
190
+ icon: "ph--sparkle--regular",
191
+ skipRegistry: true
192
+ },
193
+ services: [Capability.Service, AiService.AiService],
194
+ input: Schema.Struct({ db: Database.Database }),
195
+ output: Schema.Struct({ prompts: Schema.Array(Schema.String) })
196
+ });
197
+ var ToggleTracePanelDebug = Operation.make({
198
+ meta: {
199
+ key: makeKey("toggleTracePanelDebug"),
200
+ name: "Toggle trace panel debug",
201
+ description: "Toggle trace panel between commit graph and raw span tree JSON.",
202
+ icon: "ph--bug--regular"
203
+ },
204
+ services: [Capability.Service],
205
+ input: Schema.Struct({ state: Schema.optional(Schema.Boolean) }),
206
+ output: Schema.Boolean
207
+ });
208
+ //#endregion
209
+ //#region src/types/AssistantCapabilities.ts
210
+ var AssistantCapabilities_exports = /* @__PURE__ */ __exportAll({
211
+ CompanionChatCache: () => CompanionChatCache,
212
+ HomeSuggestionsCache: () => HomeSuggestionsCache,
213
+ HomeSuggestionsCacheSchema: () => HomeSuggestionsCacheSchema,
214
+ OllamaManager: () => OllamaManager,
215
+ Settings: () => Settings,
216
+ State: () => State,
217
+ StateSchema: () => StateSchema
218
+ });
219
+ var Settings = Capability.make(`${meta.profile.key}.capability.settings`);
220
+ var OllamaManager = Capability.make(`${meta.profile.key}.capability.ollama-manager`);
221
+ var StateSchema = Schema.mutable(Schema.Struct({
222
+ /** Map of primary object dxn to current chat dxn. */
223
+ currentChat: Schema.Record({
224
+ key: Schema.String,
225
+ value: Schema.UndefinedOr(Schema.String)
226
+ }),
227
+ /** Map of chat object path to prompt text to auto-submit when the chat opens. */
228
+ pendingPrompts: Schema.Record({
229
+ key: Schema.String,
230
+ value: Schema.UndefinedOr(Schema.String)
231
+ })
232
+ }));
233
+ var State = Capability.make(`${meta.profile.key}.capability.state`);
234
+ /** Session-scoped cache of transient (not yet persisted) companion chats keyed by companion DXN string. */
235
+ var CompanionChatCache = Capability.make(`${meta.profile.key}.capability.companion-chat-cache`);
236
+ var HomeSuggestionsCacheSchema = Schema.mutable(Schema.Record({
237
+ key: Schema.String,
238
+ value: Schema.Struct({
239
+ /** Epoch ms timestamp of the successful generation that produced these prompts. */
240
+ generatedAt: Schema.Number,
241
+ /** Non-empty, trimmed prompts from a successful generation. */
242
+ prompts: Schema.Array(Schema.String)
243
+ })
244
+ }));
245
+ /** Per-space cache of LLM-generated home starter prompts, persisted across page reloads. */
246
+ var HomeSuggestionsCache = Capability.make(`${meta.profile.key}.capability.home-suggestions-cache`);
247
+ //#endregion
248
+ //#region src/types/AssistantEvents.ts
249
+ var AssistantEvents_exports = /* @__PURE__ */ __exportAll({ SetupAiServiceProviders: () => SetupAiServiceProviders });
250
+ var SetupAiServiceProviders = ActivationEvent.make(`${meta.profile.key}.event.setupAiServiceProviders`);
251
+ //#endregion
252
+ //#region src/types/Ollama.ts
253
+ var Ollama_exports = /* @__PURE__ */ __exportAll({ emptyState: () => emptyState });
254
+ /**
255
+ * Stable, empty model state. Subscribed to when no sidecar manager is present (web/mobile) so a
256
+ * reactive read keeps an unconditional hook order.
257
+ */
258
+ var emptyState = Atom.make({
259
+ kind: "idle",
260
+ models: [],
261
+ loaded: [],
262
+ pulls: {},
263
+ errors: {}
264
+ });
265
+ //#endregion
266
+ //#region src/types/service.ts
267
+ var ApiAuthorizationKey = Schema.Struct({
268
+ type: Schema.Literal("api-key"),
269
+ key: Schema.String,
270
+ placement: Schema.Union(Schema.Struct({ type: Schema.Literal("authorization-header") }), Schema.Struct({
271
+ type: Schema.Literal("query"),
272
+ name: Schema.String
273
+ }))
274
+ });
275
+ var ApiAuthorizationOauth = Schema.Struct({
276
+ type: Schema.Literal("oauth"),
277
+ clientId: Schema.String,
278
+ clientSecret: Schema.String,
279
+ tokenUrl: Schema.String,
280
+ grantType: Schema.String
281
+ });
282
+ var ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
283
+ var ServiceInterfaceFunction = Schema.Struct({
284
+ kind: Schema.Literal("function"),
285
+ fn: Ref.Ref(Operation.PersistentOperation)
286
+ });
287
+ var ServiceInterfaceWorkflow = Schema.Struct({
288
+ kind: Schema.Literal("workflow"),
289
+ workflow: Ref.Ref(ComputeGraph)
290
+ });
291
+ var ServiceInterfaceApi = Schema.Struct({
292
+ kind: Schema.Literal("api"),
293
+ /**
294
+ * URL to fetch the openapi schema.
295
+ */
296
+ schemaUrl: Schema.optional(Schema.String),
297
+ /**
298
+ * Inlined openapi schema.
299
+ */
300
+ schema: Schema.optional(Schema.Any),
301
+ /**
302
+ * Authorization configuration if required.
303
+ */
304
+ authorization: Schema.optional(ApiAuthorization)
305
+ });
306
+ var ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
307
+ var ServiceType = class extends Type.makeObject(DXN$1.make("org.dxos.type.service", "0.1.0"))(Schema.Struct({
308
+ serviceId: Schema.String,
309
+ name: Schema.optional(Schema.String),
310
+ description: Schema.optional(Schema.String),
311
+ category: Schema.optional(Schema.String),
312
+ enabled: Schema.optional(Schema.Boolean),
313
+ /**
314
+ * Entries exposed: functions, workflows, and APIs.
315
+ */
316
+ interfaces: Schema.optional(Schema.Array(ServiceInterface))
317
+ })) {};
318
+ var categoryIcons = {
319
+ finance: "ph--bank--regular",
320
+ health: "ph--heart--regular",
321
+ geolocation: "ph--globe-simple--regular",
322
+ education: "ph--books--regular",
323
+ entertainment: "ph--music-notes--regular",
324
+ shopping: "ph--shopping-cart--regular",
325
+ travel: "ph--airplane-takeoff--regular",
326
+ utilities: "ph--lightning--regular",
327
+ weather: "ph--cloud-rain--regular"
328
+ };
329
+ //#endregion
330
+ export { AssistantEvents_exports as a, Assistant_exports as c, Ollama_exports as i, ChatSurface as l, ServiceType as n, AssistantCapabilities_exports as o, categoryIcons as r, AssistantOperation_exports as s, ApiAuthorization as t, __exportAll as u };
331
+
332
+ //# sourceMappingURL=chunk-types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-types.mjs","names":[],"sources":["../../src/types/ChatSurface.ts","../../src/types/Settings.ts","../../src/types/Assistant.ts","../../src/types/AssistantOperation.ts","../../src/types/AssistantCapabilities.ts","../../src/types/AssistantEvents.ts","../../src/types/Ollama.ts","../../src/types/service.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Role } from '@dxos/app-framework';\n\n/**\n * Role token for surfaces an agent requests inline in the conversation via the `<surface>` content\n * block. `role` selects the concrete surface to render (e.g. `integration-prompt`); `data` carries\n * its payload (e.g. `{ service: 'gmail.com' }`). Plugins contribute renderers by filtering on the\n * inner `role`, which keeps the chat renderer decoupled from the specific surfaces it can host.\n */\nexport const ChatSurface: Role.Role<{\n role: string;\n data?: Record<string, unknown>;\n}> = Role.make('org.dxos.plugin.assistant.role.chatSurface');\n","//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { Provider } from '@dxos/ai';\nimport { SchemaEx } from '@dxos/effect';\nimport { DXN } from '@dxos/keys';\n\n// A provider id is an open DXN (third-party providers define their own), validated as a DXN rather\n// than restricted to a closed literal union. The known providers come from the @dxos/ai registry.\nexport const ModelProvider = DXN.Schema;\nexport type ModelProvider = DXN.DXN;\nexport const ModelProviders: readonly DXN.DXN[] = Provider.all.map((provider) => provider.id);\n\nexport const ChatView = Schema.Union(\n Schema.Literal('normal').annotations({ title: 'Normal' }),\n Schema.Literal('summary').annotations({ title: 'Summary' }),\n Schema.Literal('thinking').annotations({ title: 'Thinking' }),\n Schema.Literal('debug').annotations({ title: 'Debug' }),\n);\nexport type ChatView = Schema.Schema.Type<typeof ChatView>;\nexport const ChatViews = SchemaEx.getLiteralValues(ChatView);\n\nexport const ModelDefaults = Schema.mutable(\n Schema.Struct({\n edge: Schema.optional(\n Schema.String.annotations({\n title: 'Remote language model',\n description: 'Choose the remote language model used for AI requests.',\n }),\n ),\n // `built-in` (bundled sidecar) and `ollama` (external) share the `ollama` model source, so they\n // share this single default key.\n ollama: Schema.optional(\n Schema.String.annotations({\n title: 'Local language model',\n description: 'Choose the locally hosted model used for AI requests.',\n }),\n ),\n lmstudio: Schema.optional(\n Schema.String.annotations({\n title: 'LM Studio language model',\n description: 'Choose the locally hosted LM Studio model for AI requests.',\n }),\n ),\n }),\n);\nexport type ModelDefaults = Schema.Schema.Type<typeof ModelDefaults>;\n\nexport const Settings = Schema.mutable(\n Schema.Struct({\n customPrompts: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Use custom prompts',\n description: 'Allow the assistant to use custom prompts defined in your spaces.',\n }),\n ),\n chatView: Schema.optional(\n ChatView.annotations({\n title: 'Chat view',\n description:\n 'Controls which message blocks are shown in the chat: normal hides reasoning, thinking shows reasoning, debug shows raw blocks, summary shows only conversational text.',\n }),\n ),\n modelProvider: Schema.optional(\n ModelProvider.annotations({\n title: 'LLM provider',\n description: 'Select which language model service to use for AI responses.',\n }),\n ),\n modelDefaults: Schema.optional(ModelDefaults.annotations({ title: 'Model defaults' })),\n tracePanelDebug: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Trace panel debug',\n description: 'Show the raw span tree as JSON in the trace panel instead of the commit graph.',\n }),\n ),\n }),\n);\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n","//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\n// Re-export Chat schema for backward compatibility.\nimport { Chat as ChatModule } from '@dxos/assistant-toolkit';\nexport const Chat = ChatModule.Chat;\nexport type Chat = ChatModule.Chat;\n\nimport { type DXN } from '@dxos/keys';\n\n// Re-export Settings as merged const/type (not as namespace).\nimport * as SettingsModule from './Settings';\nexport const Settings = SettingsModule.Settings;\nexport type Settings = SettingsModule.Settings;\n\nexport const ChatViews = SettingsModule.ChatViews;\nexport const ChatView = SettingsModule.ChatView;\nexport type ChatView = SettingsModule.ChatView;\n\nexport const ModelProviders: readonly DXN.DXN[] = SettingsModule.ModelProviders;\nexport const ModelProvider = SettingsModule.ModelProvider;\nexport type ModelProvider = SettingsModule.ModelProvider;\n\nexport const ModelDefaults = SettingsModule.ModelDefaults;\nexport type ModelDefaults = SettingsModule.ModelDefaults;\n","//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { AiService } from '@dxos/ai';\nimport { Capability } from '@dxos/app-framework';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Instructions, Operation } from '@dxos/compute';\nimport { Database, Obj, Ref, Type } from '@dxos/echo';\nimport { DXN } from '@dxos/keys';\n\nimport { meta } from '#meta';\n\nconst makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);\n\nexport const CreateChat = Operation.make({\n meta: { key: makeKey('createChat'), name: 'Create Chat', icon: 'ph--chat-text--regular' },\n services: [Capability.Service],\n input: Schema.Struct({\n db: Database.Database,\n name: Schema.optional(Schema.String),\n /**\n * Instructions steering the conversation, rendered into the system prompt at request time.\n * Held by reference so the chat follows later edits to them.\n */\n instructions: Schema.optional(Ref.Ref(Instructions.Instructions)),\n /** If false, chat is created in-memory only and not added to space. Defaults to true. */\n addToSpace: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Struct({\n object: Type.getSchema(Chat.Chat),\n }),\n});\n\nexport const UpdateChatName = Operation.make({\n meta: {\n key: makeKey('updateChatName'),\n name: 'Update Chat Name',\n icon: 'ph--pencil--regular',\n },\n services: [Database.Service, AiService.AiService],\n input: Schema.Struct({\n chat: Type.getSchema(Chat.Chat),\n /** Initial user message text; used when the feed has no history yet (e.g. auto-rename on first send). */\n prompt: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n});\n\nexport const SetCurrentChat = Operation.make({\n meta: {\n key: makeKey('setCurrentChat'),\n name: 'Set Current Chat',\n icon: 'ph--chat-text--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n companionTo: Obj.Unknown,\n chat: Type.getSchema(Chat.Chat).pipe(Schema.optional),\n }),\n output: Schema.Void,\n});\n\nexport const ForkChat = Operation.make({\n meta: { key: makeKey('forkChat'), name: 'Fork Chat', icon: 'ph--git-branch--regular', skipRegistry: true },\n services: [Capability.Service, Database.Service],\n input: Schema.Struct({\n chat: Type.getSchema(Chat.Chat),\n /** When provided, the forked chat is set as the companion for this object rather than opened standalone. */\n companionTo: Schema.optional(Obj.Unknown),\n }),\n output: Schema.Struct({\n object: Type.getSchema(Chat.Chat),\n }),\n});\n\nexport const EnsureCompanionChat = Operation.make({\n meta: {\n key: makeKey('ensureCompanionChat'),\n name: 'Ensure Companion Chat',\n icon: 'ph--chat-text--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n db: Database.Database,\n companionTo: Obj.Unknown,\n }),\n output: Schema.Struct({\n chat: Type.getSchema(Chat.Chat),\n /** Whether the returned chat was already persisted in the space. */\n persisted: Schema.Boolean,\n }),\n});\n\nexport const SkillForm = Schema.Struct({\n key: Schema.String,\n name: Schema.String,\n description: Schema.optional(Schema.String),\n});\n\nexport const GenerateHomeSuggestions = Operation.make({\n meta: {\n key: makeKey('generateHomeSuggestions'),\n name: 'Generate Home Suggestions',\n icon: 'ph--sparkle--regular',\n // Internal UI operation — not exposed as an agent tool.\n skipRegistry: true,\n },\n services: [Capability.Service, AiService.AiService],\n input: Schema.Struct({ db: Database.Database }),\n output: Schema.Struct({ prompts: Schema.Array(Schema.String) }),\n});\n\nexport const ToggleTracePanelDebug = Operation.make({\n meta: {\n key: makeKey('toggleTracePanelDebug'),\n name: 'Toggle trace panel debug',\n description: 'Toggle trace panel between commit graph and raw span tree JSON.',\n icon: 'ph--bug--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n state: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Boolean,\n});\n","//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type Atom } from '@effect-atom/atom';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type Obj } from '@dxos/echo';\n\nimport { meta } from '#meta';\n\nimport * as Assistant from './Assistant';\nimport * as Ollama from './Ollama';\n\nexport const Settings = Capability.make<Atom.Writable<Assistant.Settings>>(`${meta.profile.key}.capability.settings`);\n\nexport const OllamaManager = Capability.make<Ollama.Manager>(`${meta.profile.key}.capability.ollama-manager`);\n\nexport const StateSchema = Schema.mutable(\n Schema.Struct({\n /** Map of primary object dxn to current chat dxn. */\n currentChat: Schema.Record({ key: Schema.String, value: Schema.UndefinedOr(Schema.String) }),\n /** Map of chat object path to prompt text to auto-submit when the chat opens. */\n pendingPrompts: Schema.Record({ key: Schema.String, value: Schema.UndefinedOr(Schema.String) }),\n }),\n);\n\nexport type AssistantState = Schema.Schema.Type<typeof StateSchema>;\n\nexport const State = Capability.make<Atom.Writable<AssistantState>>(`${meta.profile.key}.capability.state`);\n\n/** Session-scoped cache of transient (not yet persisted) companion chats keyed by companion DXN string. */\nexport const CompanionChatCache = Capability.make<Atom.Writable<Record<string, Obj.Unknown | undefined>>>(\n `${meta.profile.key}.capability.companion-chat-cache`,\n);\n\nexport const HomeSuggestionsCacheSchema = Schema.mutable(\n Schema.Record({\n key: Schema.String,\n value: Schema.Struct({\n /** Epoch ms timestamp of the successful generation that produced these prompts. */\n generatedAt: Schema.Number,\n /** Non-empty, trimmed prompts from a successful generation. */\n prompts: Schema.Array(Schema.String),\n }),\n }),\n);\nexport type HomeSuggestionsCache = Schema.Schema.Type<typeof HomeSuggestionsCacheSchema>;\n\n/** Per-space cache of LLM-generated home starter prompts, persisted across page reloads. */\nexport const HomeSuggestionsCache = Capability.make<Atom.Writable<HomeSuggestionsCache>>(\n `${meta.profile.key}.capability.home-suggestions-cache`,\n);\n","//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { ActivationEvent } from '@dxos/app-framework';\n\nimport { meta } from '#meta';\n\nexport const SetupAiServiceProviders = ActivationEvent.make(`${meta.profile.key}.event.setupAiServiceProviders`);\n","//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { Atom } from '@effect-atom/atom';\nimport type * as Effect from 'effect/Effect';\n\nimport { type OllamaAdmin } from '@dxos/ai/resolvers';\n\n/**\n * Reactive state of the local Ollama model installation, surfaced to the settings UI.\n */\nexport type ModelsState = {\n kind: 'idle' | 'loading' | 'ready' | 'failed';\n models: OllamaAdmin.Model[];\n /** Models currently loaded into memory (from `/api/ps`). */\n loaded: OllamaAdmin.RunningModel[];\n /** In-flight pulls keyed by model name. */\n pulls: Record<string, OllamaAdmin.PullProgress>;\n /** Per-model action errors (load/unload/remove/pull), keyed by model name, shown inline. */\n errors: Record<string, string>;\n /** Connection-level error reaching the service (no specific model). */\n error?: string;\n};\n\n/**\n * Stable, empty model state. Subscribed to when no sidecar manager is present (web/mobile) so a\n * reactive read keeps an unconditional hook order.\n */\nexport const emptyState: Atom.Atom<ModelsState> = Atom.make<ModelsState>({\n kind: 'idle',\n models: [],\n loaded: [],\n pulls: {},\n errors: {},\n});\n\n/**\n * Capability for managing locally-installed Ollama models. Implemented by the native (desktop)\n * plugin against the bundled sidecar; absent in the browser/mobile, where the UI renders nothing.\n */\nexport type Manager = {\n readonly endpoint: string;\n state: Atom.Writable<ModelsState>;\n /** List installed models (and currently-loaded models). Ensures the sidecar is running. */\n refresh: Effect.Effect<void>;\n /** Refresh only the currently-loaded models; cheap, for polling while a chat runs. */\n refreshLoaded: Effect.Effect<void>;\n pull: (name: string) => Effect.Effect<void>;\n /** Abort an in-flight pull, leaving any already-downloaded layers in place. */\n cancel: (name: string) => Effect.Effect<void>;\n /** Load a model into memory (kept resident until unloaded). */\n load: (name: string) => Effect.Effect<void>;\n /** Unload a model from memory. */\n unload: (name: string) => Effect.Effect<void>;\n remove: (name: string) => Effect.Effect<void>;\n};\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Operation } from '@dxos/compute';\nimport { ComputeGraph } from '@dxos/conductor';\nimport { DXN, Ref, Type } from '@dxos/echo';\n\n// TODO(burdon): Factor out and reconcile with https://github.com/dxos/dxos/blob/main/packages/plugins/plugin-token-manager/src/defs/presets.ts#L7\n\nconst ApiAuthorizationKey = Schema.Struct({\n type: Schema.Literal('api-key'),\n key: Schema.String,\n placement: Schema.Union(\n Schema.Struct({\n type: Schema.Literal('authorization-header'),\n }),\n Schema.Struct({\n type: Schema.Literal('query'),\n name: Schema.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = Schema.Struct({\n type: Schema.Literal('oauth'),\n clientId: Schema.String,\n clientSecret: Schema.String,\n tokenUrl: Schema.String,\n grantType: Schema.String,\n});\n\nexport const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = Schema.Struct({\n kind: Schema.Literal('function'),\n fn: Ref.Ref(Operation.PersistentOperation),\n});\n\nconst ServiceInterfaceWorkflow = Schema.Struct({\n kind: Schema.Literal('workflow'),\n workflow: Ref.Ref(ComputeGraph),\n});\n\nconst ServiceInterfaceApi = Schema.Struct({\n kind: Schema.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: Schema.optional(Schema.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: Schema.optional(Schema.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: Schema.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = Schema.Union(\n // Service types.\n ServiceInterfaceFunction,\n ServiceInterfaceWorkflow,\n ServiceInterfaceApi,\n) as any;\n\nexport type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;\n\nexport class ServiceType extends Type.makeObject<ServiceType>(DXN.make('org.dxos.type.service', '0.1.0'))(\n Schema.Struct({\n serviceId: Schema.String,\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n category: Schema.optional(Schema.String),\n enabled: Schema.optional(Schema.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: Schema.optional(Schema.Array(ServiceInterface)),\n }),\n) {}\n\n//\n// Service Registry\n//\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n"],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { Operation } from "@dxos/compute";
2
+ import { trim } from "@dxos/util";
3
+ import { AiPreprocessor, AiService } from "@dxos/ai";
4
+ import { Database, Feed, Filter, Obj } from "@dxos/echo";
5
+ import { Message } from "@dxos/types";
6
+ import { AssistantOperation } from "#types";
7
+ import * as Effect from "effect/Effect";
8
+ import { log } from "@dxos/log";
9
+ import * as LanguageModel from "@effect/ai/LanguageModel";
10
+ import * as Prompt from "@effect/ai/Prompt";
11
+ //#region src/operations/update-chat-name.ts
12
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/operations/update-chat-name.ts";
13
+ var handler = AssistantOperation.UpdateChatName.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ chat, prompt: initialPrompt }) {
14
+ log.info("updating chat name", { chat }, {
15
+ "~LogMeta": "~LogMeta",
16
+ F: __dxlog_file,
17
+ L: 22,
18
+ S: this
19
+ });
20
+ const system = trim`
21
+ It is extremely important that you respond only with the title and nothing else.
22
+ Do not use markdown or other formatting.
23
+ If you cannot do this effectively respond with "New Chat".
24
+
25
+ <example_reply>
26
+ Fishing Trip
27
+ </example_reply>
28
+ `;
29
+ let namePrompt;
30
+ if (initialPrompt) namePrompt = Prompt.setSystem(Prompt.make(`User's first message: "${initialPrompt}"\n\nSuggest a name for this chat.`), system);
31
+ else {
32
+ const feed = yield* Database.load(chat.feed);
33
+ const history = yield* Feed.query(feed, Filter.type(Message.Message)).run;
34
+ log.info("history", { history: history.length }, {
35
+ "~LogMeta": "~LogMeta",
36
+ F: __dxlog_file,
37
+ L: 44,
38
+ S: this
39
+ });
40
+ const historyPrompt = yield* AiPreprocessor.preprocessPrompt(history, {
41
+ system,
42
+ cacheControl: "ephemeral"
43
+ });
44
+ namePrompt = Prompt.merge(historyPrompt, "Suggest a name for this chat");
45
+ }
46
+ const newName = (yield* LanguageModel.generateText({ prompt: namePrompt })).text.replaceAll(/[^a-zA-Z0-9\s]/g, "").trim();
47
+ Obj.update(chat, (chat) => {
48
+ chat.name = newName;
49
+ });
50
+ log.info("chat name updated", {
51
+ chat,
52
+ newName: chat.name
53
+ }, {
54
+ "~LogMeta": "~LogMeta",
55
+ F: __dxlog_file,
56
+ L: 58,
57
+ S: this
58
+ });
59
+ }, Effect.provide(AiService.model("com.anthropic.model.claude-haiku-4-5.default")))));
60
+ //#endregion
61
+ export { handler as default };
62
+
63
+ //# sourceMappingURL=chunk-update-chat-name.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-update-chat-name.mjs","names":[],"sources":["../../src/operations/update-chat-name.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as LanguageModel from '@effect/ai/LanguageModel';\nimport * as Prompt from '@effect/ai/Prompt';\nimport * as Effect from 'effect/Effect';\n\nimport { AiPreprocessor, AiService } from '@dxos/ai';\nimport { Operation } from '@dxos/compute';\nimport { Database, Feed, Filter, Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { Message } from '@dxos/types';\nimport { trim } from '@dxos/util';\n\nimport { AssistantOperation } from '#types';\n\nconst handler: Operation.WithHandler<typeof AssistantOperation.UpdateChatName> = AssistantOperation.UpdateChatName.pipe(\n Operation.withHandler(\n Effect.fnUntraced(\n function* ({ chat, prompt: initialPrompt }) {\n log.info('updating chat name', { chat });\n\n const system = trim`\n It is extremely important that you respond only with the title and nothing else.\n Do not use markdown or other formatting.\n If you cannot do this effectively respond with \"New Chat\".\n\n <example_reply>\n Fishing Trip\n </example_reply>\n `;\n\n let namePrompt: Prompt.Prompt;\n if (initialPrompt) {\n // Use the provided prompt text directly; the feed may not have messages yet.\n namePrompt = Prompt.setSystem(\n Prompt.make(`User's first message: \"${initialPrompt}\"\\n\\nSuggest a name for this chat.`),\n system,\n );\n } else {\n const feed = yield* Database.load(chat.feed);\n const history = yield* Feed.query(feed, Filter.type(Message.Message)).run;\n log.info('history', { history: history.length });\n const historyPrompt = yield* AiPreprocessor.preprocessPrompt(history, {\n system,\n cacheControl: 'ephemeral',\n });\n namePrompt = Prompt.merge(historyPrompt, 'Suggest a name for this chat');\n }\n\n const response = yield* LanguageModel.generateText({ prompt: namePrompt });\n const newName = response.text.replaceAll(/[^a-zA-Z0-9\\s]/g, '').trim();\n\n Obj.update(chat, (chat) => {\n chat.name = newName;\n });\n log.info('chat name updated', { chat, newName: chat.name });\n },\n Effect.provide(AiService.model('com.anthropic.model.claude-haiku-4-5.default')),\n ),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;;;;;;;;AAiBA,IAAM,UAA2E,mBAAmB,eAAe,KACjH,UAAU,YACR,OAAO,WACL,WAAW,EAAE,MAAM,QAAQ,iBAAiB;CAC1C,IAAI,KAAK,sBAAsB,EAAE,KAAK,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAEvC,MAAM,SAAS,IAAI;;;;;;;;;CAUnB,IAAI;CACJ,IAAI,eAEF,aAAa,OAAO,UAClB,OAAO,KAAK,0BAA0B,cAAc,mCAAmC,GACvF,MACF;MACK;EACL,MAAM,OAAO,OAAO,SAAS,KAAK,KAAK,IAAI;EAC3C,MAAM,UAAU,OAAO,KAAK,MAAM,MAAM,OAAO,KAAK,QAAQ,OAAO,CAAC,CAAC,CAAC;EACtE,IAAI,KAAK,WAAW,EAAE,SAAS,QAAQ,OAAO,GAAA;GAAA,YAAA;GAAA,GAAA;GAAA,GAAA;GAAA,GAAA;EAAA,CAAC;EAC/C,MAAM,gBAAgB,OAAO,eAAe,iBAAiB,SAAS;GACpE;GACA,cAAc;EAChB,CAAC;EACD,aAAa,OAAO,MAAM,eAAe,8BAA8B;CACzE;CAGA,MAAM,WAAU,OADQ,cAAc,aAAa,EAAE,QAAQ,WAAW,CAAC,EAAA,CAChD,KAAK,WAAW,mBAAmB,EAAE,CAAC,CAAC,KAAK;CAErE,IAAI,OAAO,OAAO,SAAS;EACzB,KAAK,OAAO;CACd,CAAC;CACD,IAAI,KAAK,qBAAqB;EAAE;EAAM,SAAS,KAAK;CAAK,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;AAC5D,GACA,OAAO,QAAQ,UAAU,MAAM,8CAA8C,CAAC,CAChF,CACF,CACF"}