@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 @@
1
+ {"version":3,"file":"hooks.mjs","names":[],"sources":["../../src/hooks/useSkillRegistry.ts","../../src/hooks/useChatKeymap.ts","../../src/hooks/useChatProcessor.ts","../../src/hooks/useChatServices.ts","../../src/hooks/useChatToolbarActions.ts","../../src/hooks/useContextBinder.ts","../../src/hooks/useContextObjects.ts","../../src/hooks/useDebug.ts","../../src/hooks/useFilteredTypes.ts","../../src/hooks/usePresets.ts","../../src/hooks/useReferencesProvider.ts","../../src/hooks/useSelectionContext.ts","../../src/hooks/useTraceMessages.ts","../../src/hooks/useHomeSuggestions.ts","../../src/hooks/useProcessEphemeralStatus.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { Skill } from '@dxos/compute';\nimport { type Database, Filter, Obj, Ref, type Registry } from '@dxos/echo';\nimport { useQuery } from '@dxos/echo-react';\nimport { distinctBy } from '@dxos/util';\n\nexport const useSkills = ({ registry, db }: { registry?: Registry.Registry; db?: Database.Database }) => {\n const [registrySkills, setRegistrySkills] = useState<Skill.Skill[]>(\n () => registry?.query(Filter.type(Skill.Skill)).runSync() ?? [],\n );\n\n useEffect(() => {\n if (!registry) {\n setRegistrySkills([]);\n return;\n }\n setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());\n return registry.changed.on(() => {\n setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());\n });\n }, [registry]);\n\n const spaceSkills = useQuery(db, Filter.type(Skill.Skill));\n return useMemo(() => {\n const skills = distinctBy([...registrySkills, ...spaceSkills], (b) => Obj.getMeta(b).key);\n skills.sort(({ name: a }, { name: b }) => a.localeCompare(b));\n return skills;\n }, [registrySkills, spaceSkills]);\n};\n\n/**\n * Create reactive map of active skills (by key).\n */\nexport const useActiveSkills = ({ context }: { context?: AiContext.Binder }) => {\n const [active, setActive] = useState<Map<string, Skill.Skill>>(new Map());\n\n useEffect(() => {\n if (!context) {\n setActive(new Map());\n return;\n }\n\n const updateActive = () => {\n const skills = context.getSkills();\n setActive(\n new Map(\n skills\n .map((skill) => [Obj.getMeta(skill).key, skill] as const)\n .filter((entry): entry is readonly [string, Skill.Skill] => entry[0] !== undefined),\n ),\n );\n };\n\n // Set initial value.\n updateActive();\n\n // Subscribe to changes.\n return context.subscribeSkills(updateActive);\n }, [context]);\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useSkillHandlers = ({\n db,\n context,\n registry,\n}: {\n db: Database.Database;\n context?: AiContext.Binder;\n registry?: Registry.Registry;\n}) => {\n const onUpdateSkill = useCallback(\n async (key: string, checked: boolean) => {\n if (!context) {\n return;\n }\n\n if (checked) {\n // Check if the skill is in the registry — if so, bind via its key URI directly\n // (no DB clone needed). Fall back to an existing DB copy for user-forked skills.\n const registrySkill = registry\n ?.query(Filter.type(Skill.Skill))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n\n if (registrySkill) {\n await context.bind({ skills: [Ref.fromURI(Skill.registryURI(key))] });\n } else {\n // User-forked skill (in DB but not in registry): bind via DB ref.\n const objects = await db.query(Filter.type(Skill.Skill)).run();\n const storedSkill = objects.find((skill) => Obj.getMeta(skill).key === key);\n if (storedSkill) {\n await context.bind({ skills: [Ref.make(storedSkill)] });\n }\n }\n } else {\n // Unbind: try registry ref first, then DB ref.\n const registrySkill = registry\n ?.query(Filter.type(Skill.Skill))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n if (registrySkill) {\n await context.unbind({ skills: [Ref.fromURI(Skill.registryURI(key))] });\n } else {\n const objects = await db.query(Filter.type(Skill.Skill)).run();\n const storedSkill = objects.find((skill) => Obj.getMeta(skill).key === key);\n if (storedSkill) {\n await context.unbind({ skills: [Ref.make(storedSkill)] });\n }\n }\n }\n },\n [db, context, registry],\n );\n\n return { onUpdateSkill };\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useMemo } from 'react';\n\nimport { type Event } from '@dxos/async';\nimport { isTruthy } from '@dxos/util';\n\nimport { type ChatEvent } from '../components/Chat/events';\n\n/**\n * CodeMirror keymap shared by the chat document (Thread) and the prompt editor — pressing\n * Mod-Arrow keys when either editor is focused emits the corresponding `ChatEvent` on the\n * shared event bus.\n */\nexport const useChatKeymapExtensions = ({ event }: { event: Event<ChatEvent> }): Extension[] => {\n return useMemo<Extension[]>(() => {\n return [\n Prec.highest(\n keymap.of([\n {\n key: 'Mod-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-previous' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-next' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isTruthy);\n }, [event]);\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport { useContext, useMemo, useState } from 'react';\n\nimport { AiService, OpaqueToolkit } from '@dxos/ai';\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AiSession } from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { AgentService, Credential, ServiceResolver } from '@dxos/compute';\nimport { Database, Obj, Ref, Registry } from '@dxos/echo';\nimport { useObject } from '@dxos/echo-react';\nimport { EffectEx } from '@dxos/effect';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { type Assistant } from '#types';\n\nimport { AiChatProcessor, type AiServicePreset } from '../processor';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Chat.Chat;\n preset?: AiServicePreset;\n runtime?: Capabilities.ProcessManagerRuntime;\n registry?: Registry.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n runtime,\n registry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n // Reactive subscription — re-renders when the feed ref resolves. Direct `.target` reads are not reactive.\n const [feedSnapshot] = useObject(chat?.feed);\n const feed = Obj.getReactiveOrUndefined(feedSnapshot);\n\n const [session, setSession] = useState<AiSession.Session>();\n useAsyncEffect(async () => {\n if (!space || !chat || !feed) {\n return;\n }\n\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Database.Service>().pipe(Effect.provide(Database.layer(space.db))),\n );\n const session = new AiSession.Session({\n feed,\n runtime,\n registry: observableRegistry,\n });\n await session.open();\n setSession(session);\n return () => {\n void session.close();\n setSession(undefined);\n };\n }, [space, chat, feed]);\n\n const serviceResolver = useCapability(Capabilities.ServiceResolver);\n\n const processor = useMemo(() => {\n if (!runtime || !session || !chat || !feed || !space) {\n return undefined;\n }\n\n const spaceLayer = ServiceResolver.provide(\n { space: space.id },\n Database.Service,\n Credential.CredentialsService,\n AiService.AiService,\n AgentService.AgentService,\n Registry.Service,\n OpaqueToolkit.OpaqueToolkitProvider,\n ).pipe(Layer.provide(Layer.succeed(ServiceResolver.ServiceResolver, serviceResolver)));\n\n log('creating processor', { preset, model: preset?.model, settings });\n return new AiChatProcessor(session, runtime, feed, spaceLayer, {\n chat: chat ? Ref.make(chat) : undefined,\n observableRegistry,\n registry,\n model: preset?.model,\n provider: preset?.provider,\n });\n }, [runtime, session, registry, preset, chat, feed, space?.id]);\n\n return processor;\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AppSpace } from '@dxos/app-toolkit';\nimport { type Key } from '@dxos/echo';\nimport { useClient } from '@dxos/react-client';\n\nexport type UseChatServicesProps = {\n id?: Key.SpaceId;\n};\n\n/**\n * Resolves the shared {@link Capabilities.ProcessManagerRuntime} for the given space.\n *\n * The runtime itself is space-agnostic; the returned value can be used to run\n * effects that pipe through {@link ServiceResolver.provide} (or the\n * `useSpaceCallback`/`useSpaceService` hooks) with the resolved {@link Key.SpaceId}.\n */\nexport const useChatServices = ({ id }: UseChatServicesProps) => {\n const client = useClient();\n id ??= AppSpace.getPersonalSpace(client)?.id;\n\n const runtime = useCapability(Capabilities.ProcessManagerRuntime);\n return id ? runtime : undefined;\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Filter, Obj, Query, Type } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { MenuBuilder, useMenuBuilder } from '@dxos/react-ui-menu';\n\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#types';\n\nimport { useChatContext } from '../components/Chat/context';\n\nexport type ChatToolbarActionsProps = {\n chat?: Chat.Chat;\n companionTo?: Obj.Unknown;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo }: ChatToolbarActionsProps) => {\n const { invoke } = useOperationInvoker();\n const { db } = useChatContext('useChatToolbarActions');\n\n // Stable references in deps avoid circular reference issues.\n return useMenuBuilder(\n (get) => {\n const chats =\n companionTo && db\n ? get(db.query(Query.select(Filter.id(companionTo.id)).targetOf(Chat.CompanionTo).source()).atom)\n : [];\n\n const builder = MenuBuilder.make().root({\n label: ['chat-toolbar.title', { ns: meta.profile.key }],\n });\n\n if (companionTo) {\n builder.action(\n 'new',\n {\n label: ['new-thread.button', { ns: meta.profile.key }],\n icon: 'ph--plus--regular',\n type: 'new',\n },\n () => {\n invariant(companionTo);\n return invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat: undefined,\n }).pipe(EffectEx.runAndForwardErrors);\n },\n );\n }\n\n builder\n .action(\n 'branch',\n {\n label: ['branch-thread.menu', { ns: meta.profile.key }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: !chat || !db,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.ForkChat, { chat, companionTo }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n )\n .action(\n 'rename',\n {\n label: ['rename-thread.button', { ns: meta.profile.key }],\n icon: 'ph--magic-wand--regular',\n type: 'rename',\n disabled: !chat,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat-history.label', { ns: meta.profile.key }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n get(Obj.atomProperty(chat, 'name'));\n\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object-name.placeholder', { ns: Type.getTypename(Chat.Chat) }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n });\n },\n );\n }\n\n return builder.build();\n },\n [db?.spaceId, companionTo?.id, chat?.id, invoke],\n );\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useContext, useState } from 'react';\n\nimport { AiContext } from '@dxos/assistant';\nimport { Database, Feed } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nexport const useContextBinder = (\n space: Space | undefined,\n feed: Feed.Feed | undefined,\n): AiContext.Binder | undefined => {\n const registry = useContext(RegistryContext) as Registry.Registry;\n const [binder, setBinder] = useState<AiContext.Binder>();\n\n useAsyncEffect(async () => {\n setBinder(undefined);\n if (!space || !feed) {\n return;\n }\n\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Database.Service>().pipe(Effect.provide(Database.layer(space.db))),\n );\n const binder = new AiContext.Binder({ feed, runtime, registry });\n await binder.open();\n setBinder(binder);\n\n return () => {\n void binder.close();\n };\n }, [space, feed]);\n\n return binder;\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback, useMemo } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { type Database, Obj } from '@dxos/echo';\nimport { type URI } from '@dxos/keys';\n\nexport type UseContextObjectsProps = {\n db?: Database.Database;\n context?: AiContext.Binder;\n};\n\nexport type UseContextObjects = {\n objects: Obj.Unknown[];\n onUpdateObject: (dxn: URI.URI, checked: boolean) => Promise<void>;\n};\n\nconst emptyObjectsAtom = Atom.make<Obj.Unknown[]>([]);\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({ db, context }: UseContextObjectsProps): UseContextObjects => {\n const boundObjects = useAtomValue(context?.objects ?? emptyObjectsAtom);\n // The session's own chat is bound into its context so the agent harness can resolve it\n // (`get-context` requires a bound chat to read the plan when no agent is present); it is not a\n // user-added reference, so exclude it from the UI. Mirrors the `!Obj.instanceOf(Chat.Chat, …)`\n // filter applied when copying context objects in `assistant-toolkit` `Agent`.\n const objects = useMemo(() => boundObjects.filter((object) => !Obj.instanceOf(Chat.Chat, object)), [boundObjects]);\n\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: URI.URI, checked: boolean) => {\n if (!db || !context) {\n return;\n }\n\n const ref = db.makeRef<Obj.Unknown>(dxn);\n await ref.load();\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [db, context],\n );\n\n return {\n objects,\n onUpdateObject: handleUpdateObject,\n };\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { trim } from '@dxos/util';\n\nimport { type AiChatProcessor } from '../processor';\n\n/**\n * Returns an async callback that logs the chat's current context, system prompt,\n * and resolved tools to the browser console under a collapsible group.\n * Used by the chat's debug-toggle event handler.\n */\nexport const useDebug = ({ processor }: { processor: AiChatProcessor }) => {\n return useCallback(async () => {\n const objects = processor.context.getObjects();\n const skills = processor.context.getSkills();\n const system = await processor.getSystemPrompt();\n const tools = (await processor.getTools()) ?? {};\n console.group('Chat', { objects, skills });\n try {\n console.log(trim`\n System Prompt:\n ${system}\n `);\n console.log(trim`\n Tools:\n ${Object.values(tools)\n .map((tool) => JSON.stringify(tool, null, 2))\n .join('\\n')}\n `);\n } finally {\n console.groupEnd();\n }\n }, [processor]);\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\n\nconst getFilteredTypes = (db: Database.Database): Type.AnyEntity[] =>\n Array.from(\n new Set(\n db.graph.registry\n .list()\n .filter(Type.isType)\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false))),\n ),\n );\n\n// TODO(burdon): Pass in filter.\n// TODO(wittjosiah): Factor out.\nexport const useFilteredTypes = (db?: Database.Database): Type.AnyEntity[] => {\n const [types, setTypes] = useState<Type.AnyEntity[]>([]);\n useEffect(() => {\n if (!db) {\n return;\n }\n\n setTypes(getFilteredTypes(db));\n return db.graph.registry.changed.on(() => {\n setTypes(getFilteredTypes(db));\n });\n }, [db]);\n\n return types;\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Provider } from '@dxos/ai';\nimport { useOptionalCapability } from '@dxos/app-framework/ui';\nimport { EffectEx } from '@dxos/effect';\n\nimport { type Assistant, AssistantCapabilities, type ChatPresetProps, Ollama } from '#types';\n\nimport { type AiServicePreset, defaultsKeyForProvider, presetsForProvider, resolveProvider } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPresetProps, 'presets' | 'onPresetChange'>;\n\n/**\n * Resolves the chat model presets for the provider selected in settings ({@link Assistant.Settings.modelProvider}),\n * defaulting the selection to the configured per-provider model.\n */\nexport const usePresets = (settings: Assistant.Settings): UsePresets => {\n const [preset, setPreset] = useState<AiServicePreset>();\n\n // The Ollama manager is the bundled sidecar (desktop only); its presence signals that the\n // `built-in` provider (rather than an external Ollama server) is available.\n const ollamaManager = useOptionalCapability(AssistantCapabilities.OllamaManager);\n\n const provider = resolveProvider(settings.modelProvider, !!ollamaManager);\n const defaultModel = settings.modelDefaults?.[defaultsKeyForProvider(provider)];\n\n // Installed models reported by the bundled sidecar; used to offer only models actually present.\n const localModels = useAtomValue(ollamaManager?.state ?? Ollama.emptyState);\n\n // When the bundled sidecar is the active provider, list installed models in the background so the\n // chat selector is populated without first opening settings. Idempotent: kicks off only from the\n // idle state, so it spawns the sidecar once when local models are in use (not on every launch);\n // settings remains the explicit path for retrying after a failure.\n useEffect(() => {\n if (provider === Provider.builtIn.id && ollamaManager && localModels.kind === 'idle') {\n void EffectEx.runPromise(ollamaManager.refresh);\n }\n }, [provider, ollamaManager, localModels.kind]);\n\n // Probe the external LM Studio server only when that provider is selected on desktop.\n const lmStudioProbeUrl =\n provider === Provider.lmStudio.id && ollamaManager ? `${Provider.lmStudio.endpoint}/v1/models` : undefined;\n const lmStudioReachable = useEndpointReachable(lmStudioProbeUrl);\n\n const presets = useMemo(() => {\n const base = presetsForProvider(provider);\n // Desktop LM Studio: only offer presets when the external server responds.\n if (provider === Provider.lmStudio.id && ollamaManager) {\n return lmStudioReachable ? base : [];\n }\n // Bundled sidecar: only offer models that are actually installed (matched by back-end pull tag).\n if (provider === Provider.builtIn.id && ollamaManager) {\n const installed = new Set(localModels.models.map((model) => model.name));\n return base.filter((preset) => installed.has(preset.backend));\n }\n return base;\n }, [provider, ollamaManager, lmStudioReachable, localModels]);\n\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n\n // Default to the provider's configured model, else the first available preset.\n useEffect(() => {\n const configured = defaultModel ? presets.find((preset) => preset.model === defaultModel) : undefined;\n setPreset(configured ?? presets[0]);\n }, [presets, defaultModel]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPresetProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n\n/** Reactively reports whether an HTTP endpoint responds; `undefined` url disables the probe. */\nconst useEndpointReachable = (url: string | undefined): boolean => {\n const [reachable, setReachable] = useState(false);\n useEffect(() => {\n if (!url) {\n setReachable(false);\n return;\n }\n let active = true;\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 1500);\n fetch(url, { signal: controller.signal })\n .then((response) => active && setReachable(response.ok))\n .catch(() => active && setReachable(false))\n .finally(() => clearTimeout(timer));\n return () => {\n active = false;\n controller.abort();\n clearTimeout(timer);\n };\n }, [url]);\n return reachable;\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = skills.map((skill) => skill.schema).flat();\n // const objects = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const objects = await space.db.query(Filter.everything()).run();\n\n return objects\n .filter(Obj.isObject)\n .filter((object) => stringMatch(query, Obj.getLabel(object) ?? ''))\n .map((object) => ({\n uri: Obj.getURI(object),\n label: Obj.getLabel(object) ?? '',\n }));\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.id(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Obj } from '@dxos/echo';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { Selection } from '@dxos/react-ui-attention';\n\nimport { type ProcessorRequestContext } from '../processor';\n\n/** Resolve `object`'s selection to text via the AnchorResolver contributed for its typename. */\nexport const getSelectionContext = ({\n object,\n selection,\n resolvers,\n}: {\n object: Obj.Unknown;\n selection: Selection.Selection | undefined;\n resolvers: readonly AppCapabilities.AnchorResolver[];\n}): ProcessorRequestContext | undefined => {\n const typename = Obj.getTypename(object);\n const resolver = typename ? resolvers.find((candidate) => candidate.key === typename) : undefined;\n if (!resolver) {\n return undefined;\n }\n\n // A stale cursor throws in Automerge; a bad range must not abort the submit.\n const resolveAnchorText = (anchor: string): string | undefined => {\n try {\n return resolver.getText(object, anchor);\n } catch {\n return undefined;\n }\n };\n\n // Anchors and text stay pairwise-aligned: a range that fails to resolve is dropped from both.\n const resolved = Selection.toAnchors(selection).flatMap((anchor) => {\n const text = resolveAnchorText(anchor);\n return text != null && text.length > 0 ? [{ anchor, text }] : [];\n });\n if (resolved.length === 0) {\n return undefined;\n }\n\n return {\n selection: {\n anchors: resolved.map(({ anchor }) => anchor),\n text: resolved.map(({ text }) => text).join('\\n…\\n'),\n },\n };\n};\n\n/** Submit-time provider of the companion object's current selection as request context. */\nexport const useSelectionContext = (\n companionTo: Obj.Unknown | undefined,\n): (() => ProcessorRequestContext | undefined) => {\n // getAll-style lookup: absent capabilities yield empty arrays so non-companion chats stay inert.\n const [viewState] = useCapabilities(AttentionCapabilities.ViewState);\n const resolvers = useCapabilities(AppCapabilities.AnchorResolver);\n\n return useCallback(() => {\n if (!companionTo || !viewState) {\n return undefined;\n }\n const selection = viewState.get(Selection.aspect, Obj.getURI(companionTo));\n return getSelectionContext({ object: companionTo, selection, resolvers });\n }, [companionTo, viewState, resolvers]);\n};\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { pipe } from 'effect/Function';\nimport { useMemo } from 'react';\n\nimport { Trace } from '@dxos/compute';\nimport { FeedTraceSink } from '@dxos/compute-runtime';\nimport { Filter, Query } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\n/**\n * Atom of raw trace messages for a space — the input to `buildExecutionGraph`.\n */\nexport const getTraceMessagesAtom = (space: Space): Atom.Atom<readonly Trace.Message[]> =>\n pipe(\n space.db.query(FeedTraceSink.query).atom,\n Atom.map(\n (feeds) =>\n // Query across ALL trace feeds: writers race on feed creation (the edge's indexer-backed\n // lookup can miss a not-yet-indexed feed and create a duplicate), so a space may hold\n // several trace feeds — reading only one would silently drop the others' events.\n space.db.query(\n feeds.length > 0\n ? Query.type(Trace.Message).from([...feeds])\n : (Query.select(Filter.nothing()) as Query.Query<never>),\n ).atom,\n ),\n (atom) => Atom.make((get) => get(get(atom))),\n );\n\n/**\n * Subscribes to the space invocation trace feed.\n */\nexport const useTraceMessages = (space?: Space): readonly Trace.Message[] => {\n const atom = useMemo(() => (space ? getTraceMessagesAtom(space) : atomEmpty), [space]);\n return useAtomValue(atom);\n};\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport { useMemo, useState } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#types';\n\nconst FALLBACK_SUGGESTION_KEYS = [\n 'space-home.suggestion-magazine.label',\n 'space-home.suggestion-spreadsheet.label',\n 'space-home.suggestion-kanban.label',\n] as const;\n\n/**\n * Returns starter prompts for the space Home page. Returns undefined while the request is in flight\n * so the section stays hidden until settled. On success yields generated prompts; on empty result or\n * error falls back to the hardcoded defaults.\n */\nexport const useHomeSuggestions = (space?: Space): readonly string[] | undefined => {\n const { t } = useTranslation(meta.profile.key);\n const { invokePromise } = useOperationInvoker();\n const fallbacks = useMemo(\n () => FALLBACK_SUGGESTION_KEYS.map((key) => t(key, { year: new Date().getFullYear() })),\n [t],\n );\n const [suggestions, setSuggestions] = useState<readonly string[] | undefined>(undefined);\n\n useAsyncEffect(\n async (controller) => {\n setSuggestions(undefined);\n if (!space) {\n return;\n }\n const result = await invokePromise(\n AssistantOperation.GenerateHomeSuggestions,\n { db: space.db },\n { spaceId: space.db.spaceId },\n );\n if (controller.signal.aborted) {\n return;\n }\n const prompts = result.data?.prompts;\n setSuggestions(prompts && prompts.length > 0 ? prompts : fallbacks);\n },\n [space, invokePromise],\n );\n\n return suggestions;\n};\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Stream from 'effect/Stream';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useOptionalCapability } from '@dxos/app-framework/ui';\nimport { Process, ServiceResolver, type Trace } from '@dxos/compute';\nimport { ProcessManager } from '@dxos/compute-runtime';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { resolveEphemeralStatusUpdate } from '#execution-graph';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\nconst ACTIVE_PROCESS_STATES = new Set<Process.State>([Process.State.RUNNING, Process.State.HYBERNATING]);\n\n/** Durable trace lines that represent finished work, not in-flight status. */\nexport const isTerminalActivityLine = (line: string): boolean =>\n line.endsWith(' - Success') || line.endsWith(' - Error') || line === 'Agent completed request';\n\nconst collectDescendantPids = (processes: readonly Process.Info[], rootPid: string): Set<string> => {\n const pids = new Set([rootPid]);\n let expanded = true;\n while (expanded) {\n expanded = false;\n for (const process of processes) {\n const pid = String(process.pid);\n const parentPid = process.parentPid ? String(process.parentPid) : undefined;\n if (parentPid && pids.has(parentPid) && !pids.has(pid)) {\n pids.add(pid);\n expanded = true;\n }\n }\n }\n return pids;\n};\n\nconst resolveSubscribePids = (agentPid: Process.ID, processes: readonly Process.Info[]): Process.ID[] => {\n const rootPid = String(agentPid);\n const descendants = collectDescendantPids(processes, rootPid);\n const activePids = processes\n .filter((process) => descendants.has(String(process.pid)) && ACTIVE_PROCESS_STATES.has(process.state))\n .map((process) => process.pid);\n\n if (activePids.length > 0) {\n return activePids;\n }\n\n return [agentPid];\n};\n\nconst attachActiveHandle = (\n processManager: ProcessManager.Manager,\n pid: Process.ID,\n): Effect.Effect<ProcessManager.Handle<any, any, never> | undefined> =>\n Effect.gen(function* () {\n const maxAttempts = 15;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const handle = yield* processManager.attach(pid).pipe(Effect.catchAll(() => Effect.succeed(undefined)));\n if (handle && ACTIVE_PROCESS_STATES.has(handle.status.state)) {\n return handle;\n }\n if (handle) {\n return undefined;\n }\n yield* Effect.sleep(100);\n }\n return undefined;\n });\n\n/**\n * Subscribes to ephemeral trace events for a delegated sub-agent process subtree\n * and surfaces the latest pending text or tool-call block as a status line.\n */\nexport const useProcessEphemeralStatus = (\n agentPid: Process.ID | undefined,\n space: Space | undefined,\n): string | undefined => {\n // Optional capabilities: the live status is a progressive enhancement, so the component still\n // renders (e.g. in standalone stories) when there is no plugin manager / process runtime.\n const runtime = useOptionalCapability(Capabilities.ProcessManagerRuntime);\n const monitor = useOptionalCapability(Capabilities.ProcessMonitor);\n const processes = useAtomValue(monitor?.processTreeAtom ?? atomEmpty);\n const [status, setStatus] = useState<string | undefined>();\n const fibersRef = useRef<Fiber.RuntimeFiber<void, unknown>[]>([]);\n\n const subscribePidsKey = useMemo(() => {\n if (!agentPid) {\n return '';\n }\n return resolveSubscribePids(agentPid, processes)\n .map((pid) => String(pid))\n .sort()\n .join('|');\n }, [agentPid, processes]);\n\n useEffect(() => {\n if (!agentPid || !space?.id || !runtime || !subscribePidsKey) {\n setStatus(undefined);\n return;\n }\n\n const pids = subscribePidsKey.split('|').map((pid) => Process.ID.make(pid));\n let disposed = false;\n let replaying = true;\n let replayStatus: string | undefined;\n const endReplay = () => {\n replaying = false;\n if (!disposed) {\n setStatus(replayStatus);\n }\n };\n queueMicrotask(endReplay);\n fibersRef.current = [];\n\n const handleEphemeralMessage = (message: Trace.Message) => {\n const update = resolveEphemeralStatusUpdate(message);\n if (update === 'unchanged') {\n return;\n }\n\n if (replaying) {\n replayStatus = update.line;\n return;\n }\n setStatus(update.line);\n };\n\n const layer = ServiceResolver.provide({ space: space.id }, ProcessManager.ProcessManagerService);\n\n const subscribe = (pid: Process.ID) =>\n Effect.gen(function* () {\n // `attachActiveHandle` polls, so a teardown can land mid-resolve; bail before forking a\n // daemon that the cleanup pass below would never see (and thus never interrupt).\n if (disposed) {\n return;\n }\n const processManager = yield* ProcessManager.ProcessManagerService;\n const handle = yield* attachActiveHandle(processManager, pid);\n if (!handle || disposed) {\n return;\n }\n\n // `forkDaemon` keeps the stream fiber alive after `runPromise(forEach)` returns;\n // scoped `fork` is interrupted when the subscribe effect's parent scope closes.\n const fiber = yield* handle.subscribeEphemeral().pipe(\n Stream.runForEach((message) =>\n Effect.sync(() => {\n if (disposed) {\n return;\n }\n handleEphemeralMessage(message);\n }),\n ),\n Effect.forkDaemon,\n );\n if (disposed) {\n yield* Fiber.interrupt(fiber);\n return;\n }\n fibersRef.current.push(fiber);\n });\n\n void runtime\n .runPromise(\n Effect.forEach(pids, subscribe, { concurrency: 'unbounded', discard: true }).pipe(Effect.provide(layer)),\n )\n .catch(() => {\n if (!disposed) {\n setStatus(undefined);\n }\n });\n\n return () => {\n disposed = true;\n const fibers = fibersRef.current;\n fibersRef.current = [];\n for (const fiber of fibers) {\n void runtime.runPromise(Fiber.interrupt(fiber).pipe(Effect.provide(layer)));\n }\n };\n }, [agentPid, runtime, space?.id, subscribePidsKey]);\n\n return status;\n};\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { a as AssistantEvents_exports, c as Assistant_exports, i as Ollama_exports, l as ChatSurface, n as ServiceType, o as AssistantCapabilities_exports, r as categoryIcons, s as AssistantOperation_exports, t as ApiAuthorization } from "./chunk-types.mjs";
2
+ import { t as skill } from "./chunk-skills.mjs";
3
+ import { n as ASSISTANT_DIALOG, r as meta, t as ASSISTANT_COMPANION_VARIANT } from "./chunk-meta.mjs";
4
+ import { n as getChatsPath, t as getChatPath } from "./chunk-paths.mjs";
5
+ export { ASSISTANT_COMPANION_VARIANT, ASSISTANT_DIALOG, ApiAuthorization, Assistant_exports as Assistant, AssistantCapabilities_exports as AssistantCapabilities, AssistantEvents_exports as AssistantEvents, AssistantOperation_exports as AssistantOperation, skill as AssistantSkill, ChatSurface, Ollama_exports as Ollama, ServiceType, categoryIcons, getChatPath, getChatsPath, meta };
@@ -0,0 +1,2 @@
1
+ import { n as ASSISTANT_DIALOG, r as meta, t as ASSISTANT_COMPANION_VARIANT } from "./chunk-meta.mjs";
2
+ export { ASSISTANT_COMPANION_VARIANT, ASSISTANT_DIALOG, meta };
@@ -0,0 +1,7 @@
1
+ import { OperationHandlerSet } from "@dxos/compute";
2
+ //#region src/operations/index.ts
3
+ var AssistantOperationHandlerSet = OperationHandlerSet.lazy(() => import("./chunk-create-chat.mjs"), () => import("./chunk-ensure-companion-chat.mjs"), () => import("./chunk-fork-chat.mjs"), () => import("./chunk-generate-home-suggestions.mjs"), () => import("./chunk-run-prompt-in-new-chat.mjs"), () => import("./chunk-set-current-chat.mjs"), () => import("./chunk-toggle-trace-panel-debug.mjs"), () => import("./chunk-update-chat-name.mjs"));
4
+ //#endregion
5
+ export { AssistantOperationHandlerSet };
6
+
7
+ //# sourceMappingURL=operations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.mjs","names":[],"sources":["../../src/operations/index.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const AssistantOperationHandlerSet = OperationHandlerSet.lazy(\n () => import('./create-chat'),\n () => import('./ensure-companion-chat'),\n () => import('./fork-chat'),\n () => import('./generate-home-suggestions'),\n () => import('./run-prompt-in-new-chat'),\n () => import('./set-current-chat'),\n () => import('./toggle-trace-panel-debug'),\n () => import('./update-chat-name'),\n);\n"],"mappings":";;AAMA,IAAa,+BAA+B,oBAAoB,WACxD,OAAO,kCACP,OAAO,4CACP,OAAO,gCACP,OAAO,gDACP,OAAO,6CACP,OAAO,uCACP,OAAO,+CACP,OAAO,+BACf"}
@@ -0,0 +1,9 @@
1
+ import { r as meta } from "./chunk-meta.mjs";
2
+ import { AssistantOperationHandlerSet } from "./operations.mjs";
3
+ import { Plugin } from "@dxos/app-framework";
4
+ //#region src/plugin.ts
5
+ var AssistantPlugin = Plugin.lazy(meta, () => import("#plugin"));
6
+ //#endregion
7
+ export { AssistantOperationHandlerSet, AssistantPlugin };
8
+
9
+ //# sourceMappingURL=plugin.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.mjs","names":[],"sources":["../../src/plugin.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport const AssistantPlugin = Plugin.lazy(meta, () => import('#plugin'));\n\nexport { AssistantOperationHandlerSet } from './operations';\n"],"mappings":";;;;AAQA,IAAa,kBAAkB,OAAO,KAAK,YAAY,OAAO,UAAU"}
@@ -0,0 +1,2 @@
1
+ import { AssistantPlugin } from "./AssistantPlugin.workerd.mjs";
2
+ export { AssistantPlugin, AssistantPlugin as default };
@@ -0,0 +1,2 @@
1
+ import { t as skill } from "./chunk-skills.mjs";
2
+ export { skill as AssistantSkill };
@@ -0,0 +1,2 @@
1
+ import { t as AssistantPlugin } from "./chunk-AssistantPlugin.mjs";
2
+ export { AssistantPlugin };
@@ -0,0 +1,207 @@
1
+ import { Instructions, Skill } from "@dxos/compute";
2
+ import { Agent, Chat, McpServer } from "@dxos/assistant-toolkit";
3
+ import { Type } from "@dxos/echo";
4
+ import { meta } from "#meta";
5
+ import { Sequence } from "@dxos/conductor";
6
+ import { translations as translations$1 } from "@dxos/react-ui-components/translations";
7
+ import { translations as translations$2 } from "@dxos/react-ui-form/translations";
8
+ //#region src/translations.ts
9
+ var translations = [
10
+ ...translations$1,
11
+ ...translations$2,
12
+ { "en-US": {
13
+ [Type.getTypename(Skill.Skill)]: {
14
+ "typename.label": "Skill",
15
+ "typename.label_zero": "Skills",
16
+ "typename.label_one": "Skill",
17
+ "typename.label_other": "Skills",
18
+ "object-name.placeholder": "New skill",
19
+ "add-object.label": "Add skill",
20
+ "rename-object.label": "Rename skill",
21
+ "delete-object.label": "Delete skill",
22
+ "object-deleted.label": "Skill deleted"
23
+ },
24
+ [Type.getTypename(Instructions.Instructions)]: {
25
+ "typename.label": "Instructions",
26
+ "typename.label_zero": "Instructions",
27
+ "typename.label_one": "Instructions",
28
+ "typename.label_other": "Instructions",
29
+ "object-name.placeholder": "New instructions",
30
+ "add-object.label": "Add instructions",
31
+ "rename-object.label": "Rename instructions",
32
+ "delete-object.label": "Delete instructions",
33
+ "object-deleted.label": "Instructions deleted"
34
+ },
35
+ [Type.getTypename(Sequence.Sequence)]: {
36
+ "typename.label": "Sequence",
37
+ "typename.label_zero": "Sequences",
38
+ "typename.label_one": "Sequence",
39
+ "typename.label_other": "Sequences",
40
+ "object-name.placeholder": "New sequence",
41
+ "add-object.label": "Add sequence",
42
+ "rename-object.label": "Rename sequence",
43
+ "delete-object.label": "Delete sequence",
44
+ "object-deleted.label": "Sequence deleted"
45
+ },
46
+ [Type.getTypename(Chat.Chat)]: {
47
+ "typename.label": "Session",
48
+ "typename.label_zero": "Sessions",
49
+ "typename.label_one": "Session",
50
+ "typename.label_other": "Sessions",
51
+ "object-name.placeholder": "New session",
52
+ "add-object.label": "Add Session",
53
+ "rename-object.label": "Rename session",
54
+ "delete-object.label": "Delete session",
55
+ "object-deleted.label": "Session deleted"
56
+ },
57
+ [Type.getTypename(McpServer.McpServer)]: {
58
+ "typename.label": "MCP Server",
59
+ "typename.label_zero": "MCP Servers",
60
+ "typename.label_one": "MCP Server",
61
+ "typename.label_other": "MCP Servers"
62
+ },
63
+ [Type.getTypename(Agent.Agent)]: {
64
+ "typename.label": "Agent",
65
+ "typename.label_zero": "Agents",
66
+ "typename.label_one": "Agent",
67
+ "typename.label_other": "Agents",
68
+ "object-name.placeholder": "New agent",
69
+ "add-object.label": "Add agent",
70
+ "rename-object.label": "Rename agent",
71
+ "delete-object.label": "Delete agent",
72
+ "object-deleted.label": "Agent deleted"
73
+ },
74
+ [meta.profile.key]: {
75
+ "templates.label": "Templates",
76
+ "open-ambient-chat.label": "Open Assistant",
77
+ "assistant-chat.label": "Assistant",
78
+ "plugin.name": "Assistant",
79
+ "object.placeholder": "New prompt",
80
+ "create-object.label": "Create prompt",
81
+ "create-trigger.label": "Create trigger",
82
+ "create-stack-section.label": "Create prompt",
83
+ "value.placeholder": "Enter value...",
84
+ "prompt-rules.label": "Prompt Rules",
85
+ "typename.placeholder": "Enter typename of objects which this template is for",
86
+ "description.placeholder": "Enter description of when this template should be used",
87
+ "select-preset-template.placeholder": "Select preset",
88
+ "service-registry.label": "Service Registry",
89
+ "type-filter.placeholder": "Type",
90
+ "any-type-filter.label": "Any",
91
+ "no-skill.message": "No active skills",
92
+ "tool-call.label": "Calling",
93
+ "tool-result.label": "Success",
94
+ "tool-error.label": "Tool call failed",
95
+ "invocations.label": "Invocations",
96
+ "trace.label": "Trace",
97
+ "assistant-dialog.title": "Assistant",
98
+ "open-assistant.label": "Open assistant",
99
+ "import-compute-operations.label": "Import compute operations",
100
+ "toggle-trace-panel-debug.label": "Toggle trace panel debug view",
101
+ "no-results.message": "No results",
102
+ "cancel.button": "Cancel",
103
+ "save.button": "Save",
104
+ "new-thread.button": "New Chat",
105
+ "rename-thread.button": "Rename Chat",
106
+ "chat-history.label": "Chat History",
107
+ "chat-update-name.label": "Update AI Chat name",
108
+ "create-chat.label": "New AI Chat",
109
+ "toolkit.label": "Toolkit",
110
+ "stats.label": "Stats",
111
+ "summary.label": "Summary",
112
+ "rewind.label": "Rewind to here",
113
+ "thinking.label": "Thinking",
114
+ "connect.label": "Connect",
115
+ "integration-prompt.title": "Connect {{service}}",
116
+ "integration-prompt.description": "This action needs access to {{service}}. Connect it to continue.",
117
+ "integration-prompt.unavailable": "No connector is available for {{service}}.",
118
+ "search.placeholder": "Search...",
119
+ "prompt.placeholder": "Enter question or command...",
120
+ "context-objects.button": "Add to context",
121
+ "context-settings.button": "Chat settings",
122
+ "microphone.button": "Click to speak",
123
+ "recording.placeholder": "Recording…",
124
+ "stop-recording.label": "Stop recording",
125
+ "hold-to-record.label": "Hold to record",
126
+ "start-recording.label": "Start recording",
127
+ "recording-options.label": "Recording options",
128
+ "record-mode.label": "Record mode",
129
+ "record-mode.toggle.label": "Toggle",
130
+ "record-mode.hold.label": "Hold (push-to-talk)",
131
+ "audio-device.label": "Microphone",
132
+ "audio-device.default.label": "System default",
133
+ "settings.entity-extraction.label": "Entity extraction",
134
+ "cancel-processing.button": "Stop processing",
135
+ "options.skills.title": "Skills",
136
+ "options.mcp.title": "MCP",
137
+ "options.chat-model.title": "Models",
138
+ "remove-object.label": "Remove object",
139
+ "chat-view.title": "View",
140
+ "chat-view.normal.label": "Normal",
141
+ "chat-view.summary.label": "Summary",
142
+ "chat-view.thinking.label": "Thinking",
143
+ "chat-view.debug.label": "Debug",
144
+ "mcp-server-add.label": "Add MCP server",
145
+ "mcp-server-remove.label": "Remove MCP server",
146
+ "mcp-server-name.label": "Server name",
147
+ "mcp-server-name.placeholder": "Name",
148
+ "mcp-server-url.label": "Server URL",
149
+ "mcp-server-url.placeholder": "https://...",
150
+ "mcp-server-protocol.label": "Protocol",
151
+ "mcp-server-api-key.label": "API key",
152
+ "mcp-server-api-key.placeholder": "API key (optional)",
153
+ "mcp-server-error.label": "MCP server unavailable",
154
+ "ai-service-error.label": "AI service error",
155
+ "view-usage.label": "View usage",
156
+ "settings.provider.edge.label": "Edge",
157
+ "settings.provider.built-in.label": "Built-in",
158
+ "settings.provider.ollama.label": "Ollama",
159
+ "settings.provider.lmstudio.label": "LM Studio",
160
+ "settings.ollama.title": "Local models",
161
+ "settings.ollama.installed.label": "Downloaded models",
162
+ "settings.ollama.empty.message": "No models downloaded. Pull one below to get started.",
163
+ "settings.ollama.pull.label": "Pull model",
164
+ "settings.ollama.pull.placeholder": "Search or enter a model name (e.g. llama3.2:1b)",
165
+ "settings.ollama.pull-custom.label": "Pull “{{name}}”",
166
+ "settings.ollama.pulling.label": "Pulling…",
167
+ "settings.ollama.pulling.message": "Downloading… {{percent}}%",
168
+ "settings.ollama.cancel.label": "Cancel download",
169
+ "settings.ollama.loaded.label": "Loaded",
170
+ "settings.ollama.loaded.vram": "Loaded · {{size}}",
171
+ "settings.ollama.load.label": "Load into memory",
172
+ "settings.ollama.unload.label": "Unload from memory",
173
+ "settings.ollama.remove.label": "Delete model",
174
+ "settings.ollama.failed.message": "Could not reach the local model service: {{error}}",
175
+ "debug.button": "Debug",
176
+ "online-switch.label": "Online",
177
+ "typename.label": "Typename",
178
+ "branch-thread.menu": "Branch chat",
179
+ "chat-toolbar.title": "Chat toolbar",
180
+ "trigger-status-disabled.label": "Triggers disabled",
181
+ "trigger-status-idle.label": "Triggers idle",
182
+ "trigger-status-running.label": "Trigger running",
183
+ "trigger-status-error.label": "Trigger error",
184
+ "trigger-runtime.label": "Auto trigger execution",
185
+ "trigger-last-invocation.label": "Last run",
186
+ "trigger-duration.label": "Duration",
187
+ "project-empty-spec.message": "Open the Properties companion to configure the agent.",
188
+ "project-empty-spec.description": "Open the Assistant companion to interact with the agent.",
189
+ "artifacts.label": "Artifacts",
190
+ "inputs.label": "Inputs",
191
+ "instructions.label": "Instructions",
192
+ "instructions.placeholder": "Enter instructions, goals, and constraints for the assistant.",
193
+ "reset-history.button": "Reset",
194
+ "subscriptions.label": "Subscriptions",
195
+ "space-home.suggestions.heading": "Get started",
196
+ "space-home.suggestion-magazine.label": "Create feeds for tracking the latest AI news and build a magazine",
197
+ "space-home.suggestion-spreadsheet.label": "Look up and create a spreadsheet of MLB's top starters by month for {{year}}",
198
+ "space-home.suggestion-kanban.label": "Create a kanban view for tracking tasks",
199
+ "space-home.prompt.placeholder": "Ask the assistant anything…",
200
+ "nav-tree-group-ai.label": "Assistant"
201
+ }
202
+ } }
203
+ ];
204
+ //#endregion
205
+ export { translations };
206
+
207
+ //# sourceMappingURL=translations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.mjs","names":[],"sources":["../../src/translations.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Agent, Chat, McpServer } from '@dxos/assistant-toolkit';\nimport { Instructions, Skill } from '@dxos/compute';\nimport { Sequence } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { type Resource } from '@dxos/react-ui';\nimport { translations as componentsTranslations } from '@dxos/react-ui-components/translations';\nimport { translations as formTranslations } from '@dxos/react-ui-form/translations';\n\nimport { meta } from '#meta';\n\nexport const translations: Resource[] = [\n ...componentsTranslations,\n ...formTranslations,\n {\n 'en-US': {\n [Type.getTypename(Skill.Skill)]: {\n 'typename.label': 'Skill',\n 'typename.label_zero': 'Skills',\n 'typename.label_one': 'Skill',\n 'typename.label_other': 'Skills',\n 'object-name.placeholder': 'New skill',\n 'add-object.label': 'Add skill',\n 'rename-object.label': 'Rename skill',\n 'delete-object.label': 'Delete skill',\n 'object-deleted.label': 'Skill deleted',\n },\n [Type.getTypename(Instructions.Instructions)]: {\n 'typename.label': 'Instructions',\n 'typename.label_zero': 'Instructions',\n 'typename.label_one': 'Instructions',\n 'typename.label_other': 'Instructions',\n 'object-name.placeholder': 'New instructions',\n 'add-object.label': 'Add instructions',\n 'rename-object.label': 'Rename instructions',\n 'delete-object.label': 'Delete instructions',\n 'object-deleted.label': 'Instructions deleted',\n },\n [Type.getTypename(Sequence.Sequence)]: {\n 'typename.label': 'Sequence',\n 'typename.label_zero': 'Sequences',\n 'typename.label_one': 'Sequence',\n 'typename.label_other': 'Sequences',\n 'object-name.placeholder': 'New sequence',\n 'add-object.label': 'Add sequence',\n 'rename-object.label': 'Rename sequence',\n 'delete-object.label': 'Delete sequence',\n 'object-deleted.label': 'Sequence deleted',\n },\n [Type.getTypename(Chat.Chat)]: {\n 'typename.label': 'Session',\n 'typename.label_zero': 'Sessions',\n 'typename.label_one': 'Session',\n 'typename.label_other': 'Sessions',\n 'object-name.placeholder': 'New session',\n 'add-object.label': 'Add Session',\n 'rename-object.label': 'Rename session',\n 'delete-object.label': 'Delete session',\n 'object-deleted.label': 'Session deleted',\n },\n [Type.getTypename(McpServer.McpServer)]: {\n 'typename.label': 'MCP Server',\n 'typename.label_zero': 'MCP Servers',\n 'typename.label_one': 'MCP Server',\n 'typename.label_other': 'MCP Servers',\n },\n [Type.getTypename(Agent.Agent)]: {\n 'typename.label': 'Agent',\n 'typename.label_zero': 'Agents',\n 'typename.label_one': 'Agent',\n 'typename.label_other': 'Agents',\n 'object-name.placeholder': 'New agent',\n 'add-object.label': 'Add agent',\n 'rename-object.label': 'Rename agent',\n 'delete-object.label': 'Delete agent',\n 'object-deleted.label': 'Agent deleted',\n },\n // TODO(burdon): Reconcile with react-ui-chat.\n [meta.profile.key]: {\n 'templates.label': 'Templates',\n 'open-ambient-chat.label': 'Open Assistant',\n 'assistant-chat.label': 'Assistant',\n 'plugin.name': 'Assistant',\n 'object.placeholder': 'New prompt',\n 'create-object.label': 'Create prompt',\n 'create-trigger.label': 'Create trigger',\n 'create-stack-section.label': 'Create prompt',\n 'value.placeholder': 'Enter value...',\n 'prompt-rules.label': 'Prompt Rules',\n 'typename.placeholder': 'Enter typename of objects which this template is for',\n 'description.placeholder': 'Enter description of when this template should be used',\n 'select-preset-template.placeholder': 'Select preset',\n 'service-registry.label': 'Service Registry',\n 'type-filter.placeholder': 'Type',\n 'any-type-filter.label': 'Any',\n 'no-skill.message': 'No active skills',\n 'tool-call.label': 'Calling',\n 'tool-result.label': 'Success',\n 'tool-error.label': 'Tool call failed',\n\n 'invocations.label': 'Invocations',\n 'trace.label': 'Trace',\n\n 'assistant-dialog.title': 'Assistant',\n 'open-assistant.label': 'Open assistant',\n 'import-compute-operations.label': 'Import compute operations',\n 'toggle-trace-panel-debug.label': 'Toggle trace panel debug view',\n\n 'no-results.message': 'No results',\n\n 'cancel.button': 'Cancel',\n 'save.button': 'Save',\n 'new-thread.button': 'New Chat',\n 'rename-thread.button': 'Rename Chat',\n 'chat-history.label': 'Chat History',\n 'chat-update-name.label': 'Update AI Chat name',\n 'create-chat.label': 'New AI Chat',\n\n 'toolkit.label': 'Toolkit',\n 'stats.label': 'Stats',\n 'summary.label': 'Summary',\n 'rewind.label': 'Rewind to here',\n 'thinking.label': 'Thinking',\n\n 'connect.label': 'Connect',\n 'integration-prompt.title': 'Connect {{service}}',\n 'integration-prompt.description': 'This action needs access to {{service}}. Connect it to continue.',\n 'integration-prompt.unavailable': 'No connector is available for {{service}}.',\n\n 'search.placeholder': 'Search...',\n 'prompt.placeholder': 'Enter question or command...',\n 'context-objects.button': 'Add to context',\n 'context-settings.button': 'Chat settings',\n 'microphone.button': 'Click to speak',\n 'recording.placeholder': 'Recording…',\n 'stop-recording.label': 'Stop recording',\n 'hold-to-record.label': 'Hold to record',\n 'start-recording.label': 'Start recording',\n 'recording-options.label': 'Recording options',\n 'record-mode.label': 'Record mode',\n 'record-mode.toggle.label': 'Toggle',\n 'record-mode.hold.label': 'Hold (push-to-talk)',\n 'audio-device.label': 'Microphone',\n 'audio-device.default.label': 'System default',\n 'settings.entity-extraction.label': 'Entity extraction',\n 'cancel-processing.button': 'Stop processing',\n\n 'options.skills.title': 'Skills',\n 'options.mcp.title': 'MCP',\n 'options.chat-model.title': 'Models',\n 'remove-object.label': 'Remove object',\n\n 'chat-view.title': 'View',\n 'chat-view.normal.label': 'Normal',\n 'chat-view.summary.label': 'Summary',\n 'chat-view.thinking.label': 'Thinking',\n 'chat-view.debug.label': 'Debug',\n 'mcp-server-add.label': 'Add MCP server',\n 'mcp-server-remove.label': 'Remove MCP server',\n 'mcp-server-name.label': 'Server name',\n 'mcp-server-name.placeholder': 'Name',\n 'mcp-server-url.label': 'Server URL',\n 'mcp-server-url.placeholder': 'https://...',\n 'mcp-server-protocol.label': 'Protocol',\n 'mcp-server-api-key.label': 'API key',\n 'mcp-server-api-key.placeholder': 'API key (optional)',\n 'mcp-server-error.label': 'MCP server unavailable',\n 'ai-service-error.label': 'AI service error',\n 'view-usage.label': 'View usage',\n\n // LLM provider labels.\n 'settings.provider.edge.label': 'Edge',\n 'settings.provider.built-in.label': 'Built-in',\n 'settings.provider.ollama.label': 'Ollama',\n 'settings.provider.lmstudio.label': 'LM Studio',\n\n // Ollama local model management (desktop only).\n 'settings.ollama.title': 'Local models',\n 'settings.ollama.installed.label': 'Downloaded models',\n 'settings.ollama.empty.message': 'No models downloaded. Pull one below to get started.',\n 'settings.ollama.pull.label': 'Pull model',\n 'settings.ollama.pull.placeholder': 'Search or enter a model name (e.g. llama3.2:1b)',\n 'settings.ollama.pull-custom.label': 'Pull “{{name}}”',\n 'settings.ollama.pulling.label': 'Pulling…',\n 'settings.ollama.pulling.message': 'Downloading… {{percent}}%',\n 'settings.ollama.cancel.label': 'Cancel download',\n 'settings.ollama.loaded.label': 'Loaded',\n 'settings.ollama.loaded.vram': 'Loaded · {{size}}',\n 'settings.ollama.load.label': 'Load into memory',\n 'settings.ollama.unload.label': 'Unload from memory',\n 'settings.ollama.remove.label': 'Delete model',\n 'settings.ollama.failed.message': 'Could not reach the local model service: {{error}}',\n\n 'debug.button': 'Debug',\n 'online-switch.label': 'Online',\n 'typename.label': 'Typename',\n 'branch-thread.menu': 'Branch chat',\n 'chat-toolbar.title': 'Chat toolbar',\n\n // Trigger status\n 'trigger-status-disabled.label': 'Triggers disabled',\n 'trigger-status-idle.label': 'Triggers idle',\n 'trigger-status-running.label': 'Trigger running',\n 'trigger-status-error.label': 'Trigger error',\n 'trigger-runtime.label': 'Auto trigger execution',\n 'trigger-last-invocation.label': 'Last run',\n 'trigger-duration.label': 'Duration',\n\n // AgentArticle.\n 'project-empty-spec.message': 'Open the Properties companion to configure the agent.',\n 'project-empty-spec.description': 'Open the Assistant companion to interact with the agent.',\n 'artifacts.label': 'Artifacts',\n 'inputs.label': 'Inputs',\n\n // AgentProperties.\n 'instructions.label': 'Instructions',\n 'instructions.placeholder': 'Enter instructions, goals, and constraints for the assistant.',\n 'reset-history.button': 'Reset',\n 'subscriptions.label': 'Subscriptions',\n\n // Per-space Home article: starter-prompt cards + the pinned assistant prompt.\n 'space-home.suggestions.heading': 'Get started',\n 'space-home.suggestion-magazine.label': 'Create feeds for tracking the latest AI news and build a magazine',\n 'space-home.suggestion-spreadsheet.label':\n \"Look up and create a spreadsheet of MLB's top starters by month for {{year}}\",\n 'space-home.suggestion-kanban.label': 'Create a kanban view for tracking tasks',\n 'space-home.prompt.placeholder': 'Ask the assistant anything…',\n\n 'nav-tree-group-ai.label': 'Assistant',\n },\n },\n },\n];\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { a as AssistantEvents_exports, c as Assistant_exports, i as Ollama_exports, l as ChatSurface, n as ServiceType, o as AssistantCapabilities_exports, r as categoryIcons, s as AssistantOperation_exports, t as ApiAuthorization } from "./chunk-types.mjs";
2
+ export { ApiAuthorization, Assistant_exports as Assistant, AssistantCapabilities_exports as AssistantCapabilities, AssistantEvents_exports as AssistantEvents, AssistantOperation_exports as AssistantOperation, ChatSurface, Ollama_exports as Ollama, ServiceType, categoryIcons };
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantPlugin.d.ts","sourceRoot":"","sources":["../../../src/AssistantPlugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiD,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAqC5F,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAOtE,eAAO,MAAM,eAAe,qDA6GzB,CAAC;eAEW,eAAe"}
1
+ {"version":3,"file":"AssistantPlugin.d.ts","sourceRoot":"","sources":["../../../src/AssistantPlugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiD,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAkC5F,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAOtE,eAAO,MAAM,eAAe,qDAuGzB,CAAC;eAEW,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantPlugin.node.d.ts","sourceRoot":"","sources":["../../../src/AssistantPlugin.node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgC,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAwB3E,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAEtE,eAAO,MAAM,eAAe,qDAyDzB,CAAC;eAEW,eAAe"}
1
+ {"version":3,"file":"AssistantPlugin.node.d.ts","sourceRoot":"","sources":["../../../src/AssistantPlugin.node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgC,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAwB3E,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAEtE,eAAO,MAAM,eAAe,qDAwDzB,CAAC;eAEW,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantPlugin.workerd.d.ts","sourceRoot":"","sources":["../../../src/AssistantPlugin.workerd.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAgB/D,eAAO,MAAM,eAAe,4BA2B3B,CAAC;eAEa,eAAe"}
1
+ {"version":3,"file":"AssistantPlugin.workerd.d.ts","sourceRoot":"","sources":["../../../src/AssistantPlugin.workerd.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAgB/D,eAAO,MAAM,eAAe,4BA0B3B,CAAC;eAEa,eAAe"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { type AppCapabilities } from '@dxos/app-toolkit';
3
+ import { Obj } from '@dxos/echo';
4
+ import { type Space } from '@dxos/react-client/echo';
5
+ export type AssistantSettingsSurfaceProps = {
6
+ subject: AppCapabilities.Settings;
7
+ };
8
+ export declare const AssistantSettingsSurface: ({ subject }: AssistantSettingsSurfaceProps) => React.JSX.Element;
9
+ export type SpaceHomeSuggestionsSurfaceProps = {
10
+ space: Space;
11
+ };
12
+ /** Suggestions are dismissible per space, so visibility is durable UI state rather than surface data. */
13
+ export declare const SpaceHomeSuggestionsSurface: ({ space }: SpaceHomeSuggestionsSurfaceProps) => React.JSX.Element | null;
14
+ export type InvocationsSurfaceProps = {
15
+ role: string;
16
+ companionTo: Obj.Unknown;
17
+ };
18
+ /** Resolves the space's invocation-trace feed for the companion's subject. */
19
+ export declare const InvocationsSurface: ({ role, companionTo }: InvocationsSurfaceProps) => React.JSX.Element;
20
+ export declare const TracePanelSurface: () => React.JSX.Element | null;
21
+ export declare const TriggerStatusSurface: () => React.JSX.Element | null;
22
+ //# sourceMappingURL=AssistantSurfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssistantSurfaces.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/AssistantSurfaces.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,OAAO,EAAQ,GAAG,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAMrD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,gBAAiB,6BAA6B,sBAIlF,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,2BAA2B,cAAe,gCAAgC,6BAItF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC;CAC1B,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,0BAA2B,uBAAuB,sBAchF,CAAC;AAEF,eAAO,MAAM,iBAAiB,gCAW7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,gCAOhC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, Capability.Service>;
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, import("effect/Scope").Scope | Capability.Service>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=agent-hydrator.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<[Capability.Any], never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<[Capability.Any], never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=agent-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-service.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/agent-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"agent-service.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/agent-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<[Capability.Any], never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<[Capability.Any], never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=ai-context.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
3
  import type { AssistantPluginOptions } from '#types';
4
- declare const _default: (props: void | AssistantPluginOptions) => Effect.Effect<Capability.Any[], Error, Capability.Service>;
4
+ declare const _default: (props: void | AssistantPluginOptions) => Effect.Effect<Capability.Any[], Error, import("effect/Scope").Scope | Capability.Service>;
5
5
  export default _default;
6
6
  //# sourceMappingURL=ai-service.d.ts.map
@@ -1,5 +1,16 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Any, never, Capability.Service>;
3
+ import { Query } from '@dxos/echo';
4
+ /**
5
+ * Chats belonging to the top-level Chats section: every chat minus the two kinds that already appear
6
+ * elsewhere in the tree. A chat sourcing a `CompanionTo` relation belongs to its primary object's
7
+ * companion panel; a chat parented to a `Project` is that project's navtree child (plugin-projects
8
+ * `projectChats`). Without the second exclusion a project chat appears twice.
9
+ *
10
+ * The project exclusion subtracts every project child rather than just chats — `children()` takes no
11
+ * type filter, and subtracting a non-chat from a chat-typed source is a no-op.
12
+ */
13
+ export declare const standaloneChatsQuery: Query.Query<any>;
14
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, never, import("effect/Scope").Scope | Capability.Service>;
4
15
  export default _default;
5
16
  //# sourceMappingURL=app-graph-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAcjD,OAAO,EAA8B,KAAK,EAAkB,MAAM,YAAY,CAAC;AAgB/E;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,kBAMhC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Any[], never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Any[], never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=automation-templates.d.ts.map
@@ -4,6 +4,6 @@ import { Capability } from '@dxos/app-framework';
4
4
  * Non-React capability that watches deck companion state and provisions transient chats
5
5
  * for active planks when the assistant companion is selected.
6
6
  */
7
- declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, Capability.Service>;
7
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, import("effect/Scope").Scope | Capability.Service>;
8
8
  export default _default;
9
9
  //# sourceMappingURL=companion-chat-provisioner.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Any, never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=connector.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<[Capability.Any, Capability.Any, Capability.Any, Capability.Any], never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<[Capability.Any, Capability.Any, Capability.Any, Capability.Any], never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=create-object.d.ts.map
@@ -2,6 +2,6 @@ import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
3
  import { AppCapabilities } from '@dxos/app-toolkit';
4
4
  export type EdgeModelResolverCapabilities = Capability.Capability<typeof AppCapabilities.AiModelResolver>[];
5
- declare const edgeModelResolver: (props: []) => Effect.Effect<EdgeModelResolverCapabilities, Error, Capability.Service>;
5
+ declare const edgeModelResolver: (props: []) => Effect.Effect<EdgeModelResolverCapabilities, Error, import("effect/Scope").Scope | Capability.Service>;
6
6
  export default edgeModelResolver;
7
7
  //# sourceMappingURL=edge-model-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-model-resolver.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/edge-model-resolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWpD,MAAM,MAAM,6BAA6B,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC;AAE5G,QAAA,MAAM,iBAAiB,wFA4CtB,CAAC;eAEa,iBAAiB"}
1
+ {"version":3,"file":"edge-model-resolver.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/edge-model-resolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWpD,MAAM,MAAM,6BAA6B,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC;AAE5G,QAAA,MAAM,iBAAiB,uHA8CtB,CAAC;eAEa,iBAAiB"}