@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,674 @@
1
+ import { a as resolveProvider, i as presetsForProvider, r as defaultsKeyForProvider, t as AiChatProcessor } from "./chunk-processor.mjs";
2
+ import { n as useChatContext } from "./chunk-context.mjs";
3
+ import { AppCapabilities, AppSpace } from "@dxos/app-toolkit";
4
+ import { AiContext, AiSession } from "@dxos/assistant";
5
+ import { AgentService, Credential, Process, ServiceResolver, Skill, Trace } from "@dxos/compute";
6
+ import { Capabilities } from "@dxos/app-framework";
7
+ import { distinctBy, isTruthy, trim } from "@dxos/util";
8
+ import { Chat } from "@dxos/assistant-toolkit";
9
+ import { AiService, OpaqueToolkit, Provider } from "@dxos/ai";
10
+ import { EffectEx } from "@dxos/effect";
11
+ import { Database, Filter, Obj, Query, Ref, Registry, Type } from "@dxos/echo";
12
+ import { meta } from "#meta";
13
+ import { Atom } from "@effect-atom/atom";
14
+ import { AssistantCapabilities, AssistantOperation, Ollama } from "#types";
15
+ import * as Effect from "effect/Effect";
16
+ import * as Option from "effect/Option";
17
+ import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
18
+ import { useObject, useQuery } from "@dxos/echo-react";
19
+ import { useAsyncEffect, useTranslation } from "@dxos/react-ui";
20
+ import { Atom as Atom$1, RegistryContext, useAtomValue } from "@effect-atom/atom-react";
21
+ import { log } from "@dxos/log";
22
+ import { MenuBuilder, useMenuBuilder } from "@dxos/react-ui-menu";
23
+ import * as Fiber from "effect/Fiber";
24
+ import * as Stream from "effect/Stream";
25
+ import { useCapabilities, useCapability, useOperationInvoker, useOptionalCapability } from "@dxos/app-framework/ui";
26
+ import { keymap } from "@codemirror/view";
27
+ import { pipe } from "effect/Function";
28
+ import { Selection } from "@dxos/react-ui-attention";
29
+ import { resolveEphemeralStatusUpdate } from "#execution-graph";
30
+ import { Prec } from "@codemirror/state";
31
+ import * as Layer from "effect/Layer";
32
+ import { useClient } from "@dxos/react-client";
33
+ import { invariant } from "@dxos/invariant";
34
+ import { HiddenAnnotation, getTypeAnnotation } from "@dxos/echo/Annotation";
35
+ import { Kind } from "@dxos/echo/Entity";
36
+ import { AttentionCapabilities } from "@dxos/plugin-attention";
37
+ import { FeedTraceSink, ProcessManager } from "@dxos/compute-runtime";
38
+ //#region src/hooks/useSkillRegistry.ts
39
+ var useSkills = ({ registry, db }) => {
40
+ const [registrySkills, setRegistrySkills] = useState(() => registry?.query(Filter.type(Skill.Skill)).runSync() ?? []);
41
+ useEffect(() => {
42
+ if (!registry) {
43
+ setRegistrySkills([]);
44
+ return;
45
+ }
46
+ setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());
47
+ return registry.changed.on(() => {
48
+ setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());
49
+ });
50
+ }, [registry]);
51
+ const spaceSkills = useQuery(db, Filter.type(Skill.Skill));
52
+ return useMemo(() => {
53
+ const skills = distinctBy([...registrySkills, ...spaceSkills], (b) => Obj.getMeta(b).key);
54
+ skills.sort(({ name: a }, { name: b }) => a.localeCompare(b));
55
+ return skills;
56
+ }, [registrySkills, spaceSkills]);
57
+ };
58
+ /**
59
+ * Create reactive map of active skills (by key).
60
+ */
61
+ var useActiveSkills = ({ context }) => {
62
+ const [active, setActive] = useState(/* @__PURE__ */ new Map());
63
+ useEffect(() => {
64
+ if (!context) {
65
+ setActive(/* @__PURE__ */ new Map());
66
+ return;
67
+ }
68
+ const updateActive = () => {
69
+ const skills = context.getSkills();
70
+ setActive(new Map(skills.map((skill) => [Obj.getMeta(skill).key, skill]).filter((entry) => entry[0] !== void 0)));
71
+ };
72
+ updateActive();
73
+ return context.subscribeSkills(updateActive);
74
+ }, [context]);
75
+ return active;
76
+ };
77
+ var useSkillHandlers = ({ db, context, registry }) => {
78
+ return { onUpdateSkill: useCallback(async (key, checked) => {
79
+ if (!context) return;
80
+ if (checked) if (registry?.query(Filter.type(Skill.Skill)).runSync().find((b) => Obj.getMeta(b).key === key)) await context.bind({ skills: [Ref.fromURI(Skill.registryURI(key))] });
81
+ else {
82
+ const storedSkill = (await db.query(Filter.type(Skill.Skill)).run()).find((skill) => Obj.getMeta(skill).key === key);
83
+ if (storedSkill) await context.bind({ skills: [Ref.make(storedSkill)] });
84
+ }
85
+ else if (registry?.query(Filter.type(Skill.Skill)).runSync().find((b) => Obj.getMeta(b).key === key)) await context.unbind({ skills: [Ref.fromURI(Skill.registryURI(key))] });
86
+ else {
87
+ const storedSkill = (await db.query(Filter.type(Skill.Skill)).run()).find((skill) => Obj.getMeta(skill).key === key);
88
+ if (storedSkill) await context.unbind({ skills: [Ref.make(storedSkill)] });
89
+ }
90
+ }, [
91
+ db,
92
+ context,
93
+ registry
94
+ ]) };
95
+ };
96
+ //#endregion
97
+ //#region src/hooks/useChatKeymap.ts
98
+ /**
99
+ * CodeMirror keymap shared by the chat document (Thread) and the prompt editor — pressing
100
+ * Mod-Arrow keys when either editor is focused emits the corresponding `ChatEvent` on the
101
+ * shared event bus.
102
+ */
103
+ var useChatKeymapExtensions = ({ event }) => {
104
+ return useMemo(() => {
105
+ return [Prec.highest(keymap.of([{
106
+ key: "Mod-ArrowUp",
107
+ preventDefault: true,
108
+ run: () => {
109
+ event.emit({ type: "nav-previous" });
110
+ return true;
111
+ },
112
+ shift: () => {
113
+ event.emit({ type: "thread-open" });
114
+ return true;
115
+ }
116
+ }, {
117
+ key: "Mod-ArrowDown",
118
+ preventDefault: true,
119
+ run: () => {
120
+ event.emit({ type: "nav-next" });
121
+ return true;
122
+ },
123
+ shift: () => {
124
+ event.emit({ type: "thread-close" });
125
+ return true;
126
+ }
127
+ }]))].filter(isTruthy);
128
+ }, [event]);
129
+ };
130
+ //#endregion
131
+ //#region src/hooks/useChatProcessor.ts
132
+ var __dxlog_file$1 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.ts";
133
+ /**
134
+ * Configure and create AiChatProcessor.
135
+ */
136
+ var useChatProcessor = ({ space, chat, preset, runtime, registry, settings }) => {
137
+ const observableRegistry = useContext(RegistryContext);
138
+ const [feedSnapshot] = useObject(chat?.feed);
139
+ const feed = Obj.getReactiveOrUndefined(feedSnapshot);
140
+ const [session, setSession] = useState();
141
+ useAsyncEffect(async () => {
142
+ if (!space || !chat || !feed) return;
143
+ const runtime = await EffectEx.runAndForwardErrors(Effect.runtime().pipe(Effect.provide(Database.layer(space.db))));
144
+ const session = new AiSession.Session({
145
+ feed,
146
+ runtime,
147
+ registry: observableRegistry
148
+ });
149
+ await session.open();
150
+ setSession(session);
151
+ return () => {
152
+ session.close();
153
+ setSession(void 0);
154
+ };
155
+ }, [
156
+ space,
157
+ chat,
158
+ feed
159
+ ]);
160
+ const serviceResolver = useCapability(Capabilities.ServiceResolver);
161
+ return useMemo(() => {
162
+ if (!runtime || !session || !chat || !feed || !space) return;
163
+ const spaceLayer = ServiceResolver.provide({ space: space.id }, Database.Service, Credential.CredentialsService, AiService.AiService, AgentService.AgentService, Registry.Service, OpaqueToolkit.OpaqueToolkitProvider).pipe(Layer.provide(Layer.succeed(ServiceResolver.ServiceResolver, serviceResolver)));
164
+ log("creating processor", {
165
+ preset,
166
+ model: preset?.model,
167
+ settings
168
+ }, {
169
+ "~LogMeta": "~LogMeta",
170
+ F: __dxlog_file$1,
171
+ L: 92,
172
+ S: void 0
173
+ });
174
+ return new AiChatProcessor(session, runtime, feed, spaceLayer, {
175
+ chat: chat ? Ref.make(chat) : void 0,
176
+ observableRegistry,
177
+ registry,
178
+ model: preset?.model,
179
+ provider: preset?.provider
180
+ });
181
+ }, [
182
+ runtime,
183
+ session,
184
+ registry,
185
+ preset,
186
+ chat,
187
+ feed,
188
+ space?.id
189
+ ]);
190
+ };
191
+ //#endregion
192
+ //#region src/hooks/useChatServices.ts
193
+ /**
194
+ * Resolves the shared {@link Capabilities.ProcessManagerRuntime} for the given space.
195
+ *
196
+ * The runtime itself is space-agnostic; the returned value can be used to run
197
+ * effects that pipe through {@link ServiceResolver.provide} (or the
198
+ * `useSpaceCallback`/`useSpaceService` hooks) with the resolved {@link Key.SpaceId}.
199
+ */
200
+ var useChatServices = ({ id }) => {
201
+ const client = useClient();
202
+ id ??= AppSpace.getPersonalSpace(client)?.id;
203
+ const runtime = useCapability(Capabilities.ProcessManagerRuntime);
204
+ return id ? runtime : void 0;
205
+ };
206
+ //#endregion
207
+ //#region src/hooks/useChatToolbarActions.ts
208
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatToolbarActions.ts";
209
+ var useChatToolbarActions = ({ chat, companionTo }) => {
210
+ const { invoke } = useOperationInvoker();
211
+ const { db } = useChatContext("useChatToolbarActions");
212
+ return useMenuBuilder((get) => {
213
+ const chats = companionTo && db ? get(db.query(Query.select(Filter.id(companionTo.id)).targetOf(Chat.CompanionTo).source()).atom) : [];
214
+ const builder = MenuBuilder.make().root({ label: ["chat-toolbar.title", { ns: meta.profile.key }] });
215
+ if (companionTo) builder.action("new", {
216
+ label: ["new-thread.button", { ns: meta.profile.key }],
217
+ icon: "ph--plus--regular",
218
+ type: "new"
219
+ }, () => {
220
+ invariant(companionTo, void 0, {
221
+ "~LogMeta": "~LogMeta",
222
+ F: __dxlog_file,
223
+ L: 49,
224
+ S: void 0,
225
+ A: ["companionTo", ""]
226
+ });
227
+ return invoke(AssistantOperation.SetCurrentChat, {
228
+ companionTo,
229
+ chat: void 0
230
+ }).pipe(EffectEx.runAndForwardErrors);
231
+ });
232
+ builder.action("branch", {
233
+ label: ["branch-thread.menu", { ns: meta.profile.key }],
234
+ icon: "ph--git-branch--regular",
235
+ type: "branch",
236
+ disabled: !chat || !db
237
+ }, () => Effect.gen(function* () {
238
+ invariant(chat, void 0, {
239
+ "~LogMeta": "~LogMeta",
240
+ F: __dxlog_file,
241
+ L: 69,
242
+ S: this,
243
+ A: ["chat", ""]
244
+ });
245
+ yield* invoke(AssistantOperation.ForkChat, {
246
+ chat,
247
+ companionTo
248
+ }, { spaceId: db?.spaceId });
249
+ }).pipe(EffectEx.runAndForwardErrors)).action("rename", {
250
+ label: ["rename-thread.button", { ns: meta.profile.key }],
251
+ icon: "ph--magic-wand--regular",
252
+ type: "rename",
253
+ disabled: !chat
254
+ }, () => Effect.gen(function* () {
255
+ invariant(chat, void 0, {
256
+ "~LogMeta": "~LogMeta",
257
+ F: __dxlog_file,
258
+ L: 83,
259
+ S: this,
260
+ A: ["chat", ""]
261
+ });
262
+ yield* invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId: db?.spaceId });
263
+ }).pipe(EffectEx.runAndForwardErrors));
264
+ if (chats.length > 0) builder.group("chats", {
265
+ label: ["chat-history.label", { ns: meta.profile.key }],
266
+ icon: "ph--clock-counter-clockwise--regular",
267
+ selectCardinality: "single",
268
+ variant: "dropdownMenu"
269
+ }, (builder) => {
270
+ chats.toSorted((a, b) => a.id.localeCompare(b.id)).forEach((chat) => {
271
+ get(Obj.atomProperty(chat, "name"));
272
+ builder.action(chat.id, { label: Obj.getLabel(chat) ?? ["object-name.placeholder", { ns: Type.getTypename(Chat.Chat) }] }, () => Effect.gen(function* () {
273
+ invariant(companionTo, void 0, {
274
+ "~LogMeta": "~LogMeta",
275
+ F: __dxlog_file,
276
+ L: 111,
277
+ S: this,
278
+ A: ["companionTo", ""]
279
+ });
280
+ yield* invoke(AssistantOperation.SetCurrentChat, {
281
+ companionTo,
282
+ chat
283
+ });
284
+ }).pipe(EffectEx.runAndForwardErrors));
285
+ });
286
+ });
287
+ return builder.build();
288
+ }, [
289
+ db?.spaceId,
290
+ companionTo?.id,
291
+ chat?.id,
292
+ invoke
293
+ ]);
294
+ };
295
+ //#endregion
296
+ //#region src/hooks/useContextBinder.ts
297
+ var useContextBinder = (space, feed) => {
298
+ const registry = useContext(RegistryContext);
299
+ const [binder, setBinder] = useState();
300
+ useAsyncEffect(async () => {
301
+ setBinder(void 0);
302
+ if (!space || !feed) return;
303
+ const runtime = await EffectEx.runAndForwardErrors(Effect.runtime().pipe(Effect.provide(Database.layer(space.db))));
304
+ const binder = new AiContext.Binder({
305
+ feed,
306
+ runtime,
307
+ registry
308
+ });
309
+ await binder.open();
310
+ setBinder(binder);
311
+ return () => {
312
+ binder.close();
313
+ };
314
+ }, [space, feed]);
315
+ return binder;
316
+ };
317
+ //#endregion
318
+ //#region src/hooks/useContextObjects.ts
319
+ var emptyObjectsAtom = Atom$1.make([]);
320
+ /**
321
+ * Create reactive map of active object references (by DXN string).
322
+ */
323
+ var useContextObjects = ({ db, context }) => {
324
+ const boundObjects = useAtomValue(context?.objects ?? emptyObjectsAtom);
325
+ return {
326
+ objects: useMemo(() => boundObjects.filter((object) => !Obj.instanceOf(Chat.Chat, object)), [boundObjects]),
327
+ onUpdateObject: useCallback(async (dxn, checked) => {
328
+ if (!db || !context) return;
329
+ const ref = db.makeRef(dxn);
330
+ await ref.load();
331
+ if (checked) await context.bind({ objects: [ref] });
332
+ else await context.unbind({ objects: [ref] });
333
+ }, [db, context])
334
+ };
335
+ };
336
+ //#endregion
337
+ //#region src/hooks/useDebug.ts
338
+ /**
339
+ * Returns an async callback that logs the chat's current context, system prompt,
340
+ * and resolved tools to the browser console under a collapsible group.
341
+ * Used by the chat's debug-toggle event handler.
342
+ */
343
+ var useDebug = ({ processor }) => {
344
+ return useCallback(async () => {
345
+ const objects = processor.context.getObjects();
346
+ const skills = processor.context.getSkills();
347
+ const system = await processor.getSystemPrompt();
348
+ const tools = await processor.getTools() ?? {};
349
+ console.group("Chat", {
350
+ objects,
351
+ skills
352
+ });
353
+ try {
354
+ console.log(trim`
355
+ System Prompt:
356
+ ${system}
357
+ `);
358
+ console.log(trim`
359
+ Tools:
360
+ ${Object.values(tools).map((tool) => JSON.stringify(tool, null, 2)).join("\n")}
361
+ `);
362
+ } finally {
363
+ console.groupEnd();
364
+ }
365
+ }, [processor]);
366
+ };
367
+ //#endregion
368
+ //#region src/hooks/useFilteredTypes.ts
369
+ var getFilteredTypes = (db) => Array.from(new Set(db.graph.registry.list().filter(Type.isType).filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== Kind.Relation).filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false)))));
370
+ var useFilteredTypes = (db) => {
371
+ const [types, setTypes] = useState([]);
372
+ useEffect(() => {
373
+ if (!db) return;
374
+ setTypes(getFilteredTypes(db));
375
+ return db.graph.registry.changed.on(() => {
376
+ setTypes(getFilteredTypes(db));
377
+ });
378
+ }, [db]);
379
+ return types;
380
+ };
381
+ //#endregion
382
+ //#region src/hooks/usePresets.ts
383
+ /**
384
+ * Resolves the chat model presets for the provider selected in settings ({@link Assistant.Settings.modelProvider}),
385
+ * defaulting the selection to the configured per-provider model.
386
+ */
387
+ var usePresets = (settings) => {
388
+ const [preset, setPreset] = useState();
389
+ const ollamaManager = useOptionalCapability(AssistantCapabilities.OllamaManager);
390
+ const provider = resolveProvider(settings.modelProvider, !!ollamaManager);
391
+ const defaultModel = settings.modelDefaults?.[defaultsKeyForProvider(provider)];
392
+ const localModels = useAtomValue(ollamaManager?.state ?? Ollama.emptyState);
393
+ useEffect(() => {
394
+ if (provider === Provider.builtIn.id && ollamaManager && localModels.kind === "idle") EffectEx.runPromise(ollamaManager.refresh);
395
+ }, [
396
+ provider,
397
+ ollamaManager,
398
+ localModels.kind
399
+ ]);
400
+ const lmStudioReachable = useEndpointReachable(provider === Provider.lmStudio.id && ollamaManager ? `${Provider.lmStudio.endpoint}/v1/models` : void 0);
401
+ const presets = useMemo(() => {
402
+ const base = presetsForProvider(provider);
403
+ if (provider === Provider.lmStudio.id && ollamaManager) return lmStudioReachable ? base : [];
404
+ if (provider === Provider.builtIn.id && ollamaManager) {
405
+ const installed = new Set(localModels.models.map((model) => model.name));
406
+ return base.filter((preset) => installed.has(preset.backend));
407
+ }
408
+ return base;
409
+ }, [
410
+ provider,
411
+ ollamaManager,
412
+ lmStudioReachable,
413
+ localModels
414
+ ]);
415
+ const presetOptions = useMemo(() => presets.map(({ id, model, label }) => ({
416
+ id,
417
+ label: label ?? model
418
+ })), [presets]);
419
+ useEffect(() => {
420
+ const configured = defaultModel ? presets.find((preset) => preset.model === defaultModel) : void 0;
421
+ setPreset(configured ?? presets[0]);
422
+ }, [presets, defaultModel]);
423
+ return {
424
+ preset,
425
+ presets: presetOptions,
426
+ onPresetChange: useCallback((id) => {
427
+ const preset = presets.find((preset) => preset.id === id);
428
+ if (preset) setPreset(preset);
429
+ }, [presets])
430
+ };
431
+ };
432
+ /** Reactively reports whether an HTTP endpoint responds; `undefined` url disables the probe. */
433
+ var useEndpointReachable = (url) => {
434
+ const [reachable, setReachable] = useState(false);
435
+ useEffect(() => {
436
+ if (!url) {
437
+ setReachable(false);
438
+ return;
439
+ }
440
+ let active = true;
441
+ const controller = new AbortController();
442
+ const timer = setTimeout(() => controller.abort(), 1500);
443
+ fetch(url, { signal: controller.signal }).then((response) => active && setReachable(response.ok)).catch(() => active && setReachable(false)).finally(() => clearTimeout(timer));
444
+ return () => {
445
+ active = false;
446
+ controller.abort();
447
+ clearTimeout(timer);
448
+ };
449
+ }, [url]);
450
+ return reachable;
451
+ };
452
+ //#endregion
453
+ //#region src/hooks/useReferencesProvider.ts
454
+ /**
455
+ * Resolve references to objects in the space.
456
+ */
457
+ var useReferencesProvider = (space) => {
458
+ return useMemo(() => {
459
+ if (!space) return;
460
+ return {
461
+ getReferences: async ({ query }) => {
462
+ return (await space.db.query(Filter.everything()).run()).filter(Obj.isObject).filter((object) => stringMatch(query, Obj.getLabel(object) ?? "")).map((object) => ({
463
+ uri: Obj.getURI(object),
464
+ label: Obj.getLabel(object) ?? ""
465
+ }));
466
+ },
467
+ resolveReference: async ({ uri }) => {
468
+ const object = await space.db.query(Filter.id(uri)).first();
469
+ return {
470
+ uri,
471
+ label: Obj.getLabel(object) ?? ""
472
+ };
473
+ }
474
+ };
475
+ }, [space]);
476
+ };
477
+ var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
478
+ //#endregion
479
+ //#region src/hooks/useSelectionContext.ts
480
+ /** Resolve `object`'s selection to text via the AnchorResolver contributed for its typename. */
481
+ var getSelectionContext = ({ object, selection, resolvers }) => {
482
+ const typename = Obj.getTypename(object);
483
+ const resolver = typename ? resolvers.find((candidate) => candidate.key === typename) : void 0;
484
+ if (!resolver) return;
485
+ const resolveAnchorText = (anchor) => {
486
+ try {
487
+ return resolver.getText(object, anchor);
488
+ } catch {
489
+ return;
490
+ }
491
+ };
492
+ const resolved = Selection.toAnchors(selection).flatMap((anchor) => {
493
+ const text = resolveAnchorText(anchor);
494
+ return text != null && text.length > 0 ? [{
495
+ anchor,
496
+ text
497
+ }] : [];
498
+ });
499
+ if (resolved.length === 0) return;
500
+ return { selection: {
501
+ anchors: resolved.map(({ anchor }) => anchor),
502
+ text: resolved.map(({ text }) => text).join("\n…\n")
503
+ } };
504
+ };
505
+ /** Submit-time provider of the companion object's current selection as request context. */
506
+ var useSelectionContext = (companionTo) => {
507
+ const [viewState] = useCapabilities(AttentionCapabilities.ViewState);
508
+ const resolvers = useCapabilities(AppCapabilities.AnchorResolver);
509
+ return useCallback(() => {
510
+ if (!companionTo || !viewState) return;
511
+ return getSelectionContext({
512
+ object: companionTo,
513
+ selection: viewState.get(Selection.aspect, Obj.getURI(companionTo)),
514
+ resolvers
515
+ });
516
+ }, [
517
+ companionTo,
518
+ viewState,
519
+ resolvers
520
+ ]);
521
+ };
522
+ //#endregion
523
+ //#region src/hooks/useTraceMessages.ts
524
+ var atomEmpty$1 = Atom.make(() => []);
525
+ /**
526
+ * Atom of raw trace messages for a space — the input to `buildExecutionGraph`.
527
+ */
528
+ var getTraceMessagesAtom = (space) => pipe(space.db.query(FeedTraceSink.query).atom, Atom.map((feeds) => space.db.query(feeds.length > 0 ? Query.type(Trace.Message).from([...feeds]) : Query.select(Filter.nothing())).atom), (atom) => Atom.make((get) => get(get(atom))));
529
+ /**
530
+ * Subscribes to the space invocation trace feed.
531
+ */
532
+ var useTraceMessages = (space) => {
533
+ return useAtomValue(useMemo(() => space ? getTraceMessagesAtom(space) : atomEmpty$1, [space]));
534
+ };
535
+ //#endregion
536
+ //#region src/hooks/useHomeSuggestions.ts
537
+ var FALLBACK_SUGGESTION_KEYS = [
538
+ "space-home.suggestion-magazine.label",
539
+ "space-home.suggestion-spreadsheet.label",
540
+ "space-home.suggestion-kanban.label"
541
+ ];
542
+ /**
543
+ * Returns starter prompts for the space Home page. Returns undefined while the request is in flight
544
+ * so the section stays hidden until settled. On success yields generated prompts; on empty result or
545
+ * error falls back to the hardcoded defaults.
546
+ */
547
+ var useHomeSuggestions = (space) => {
548
+ const { t } = useTranslation(meta.profile.key);
549
+ const { invokePromise } = useOperationInvoker();
550
+ const fallbacks = useMemo(() => FALLBACK_SUGGESTION_KEYS.map((key) => t(key, { year: (/* @__PURE__ */ new Date()).getFullYear() })), [t]);
551
+ const [suggestions, setSuggestions] = useState(void 0);
552
+ useAsyncEffect(async (controller) => {
553
+ setSuggestions(void 0);
554
+ if (!space) return;
555
+ const result = await invokePromise(AssistantOperation.GenerateHomeSuggestions, { db: space.db }, { spaceId: space.db.spaceId });
556
+ if (controller.signal.aborted) return;
557
+ const prompts = result.data?.prompts;
558
+ setSuggestions(prompts && prompts.length > 0 ? prompts : fallbacks);
559
+ }, [space, invokePromise]);
560
+ return suggestions;
561
+ };
562
+ //#endregion
563
+ //#region src/hooks/useProcessEphemeralStatus.ts
564
+ var atomEmpty = Atom.make(() => []);
565
+ var ACTIVE_PROCESS_STATES = /* @__PURE__ */ new Set([Process.State.RUNNING, Process.State.HYBERNATING]);
566
+ /** Durable trace lines that represent finished work, not in-flight status. */
567
+ var isTerminalActivityLine = (line) => line.endsWith(" - Success") || line.endsWith(" - Error") || line === "Agent completed request";
568
+ var collectDescendantPids = (processes, rootPid) => {
569
+ const pids = /* @__PURE__ */ new Set([rootPid]);
570
+ let expanded = true;
571
+ while (expanded) {
572
+ expanded = false;
573
+ for (const process of processes) {
574
+ const pid = String(process.pid);
575
+ const parentPid = process.parentPid ? String(process.parentPid) : void 0;
576
+ if (parentPid && pids.has(parentPid) && !pids.has(pid)) {
577
+ pids.add(pid);
578
+ expanded = true;
579
+ }
580
+ }
581
+ }
582
+ return pids;
583
+ };
584
+ var resolveSubscribePids = (agentPid, processes) => {
585
+ const descendants = collectDescendantPids(processes, String(agentPid));
586
+ const activePids = processes.filter((process) => descendants.has(String(process.pid)) && ACTIVE_PROCESS_STATES.has(process.state)).map((process) => process.pid);
587
+ if (activePids.length > 0) return activePids;
588
+ return [agentPid];
589
+ };
590
+ var attachActiveHandle = (processManager, pid) => Effect.gen(function* () {
591
+ const maxAttempts = 15;
592
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
593
+ const handle = yield* processManager.attach(pid).pipe(Effect.catchAll(() => Effect.succeed(void 0)));
594
+ if (handle && ACTIVE_PROCESS_STATES.has(handle.status.state)) return handle;
595
+ if (handle) return;
596
+ yield* Effect.sleep(100);
597
+ }
598
+ });
599
+ /**
600
+ * Subscribes to ephemeral trace events for a delegated sub-agent process subtree
601
+ * and surfaces the latest pending text or tool-call block as a status line.
602
+ */
603
+ var useProcessEphemeralStatus = (agentPid, space) => {
604
+ const runtime = useOptionalCapability(Capabilities.ProcessManagerRuntime);
605
+ const processes = useAtomValue(useOptionalCapability(Capabilities.ProcessMonitor)?.processTreeAtom ?? atomEmpty);
606
+ const [status, setStatus] = useState();
607
+ const fibersRef = useRef([]);
608
+ const subscribePidsKey = useMemo(() => {
609
+ if (!agentPid) return "";
610
+ return resolveSubscribePids(agentPid, processes).map((pid) => String(pid)).sort().join("|");
611
+ }, [agentPid, processes]);
612
+ useEffect(() => {
613
+ if (!agentPid || !space?.id || !runtime || !subscribePidsKey) {
614
+ setStatus(void 0);
615
+ return;
616
+ }
617
+ const pids = subscribePidsKey.split("|").map((pid) => Process.ID.make(pid));
618
+ let disposed = false;
619
+ let replaying = true;
620
+ let replayStatus;
621
+ const endReplay = () => {
622
+ replaying = false;
623
+ if (!disposed) setStatus(replayStatus);
624
+ };
625
+ queueMicrotask(endReplay);
626
+ fibersRef.current = [];
627
+ const handleEphemeralMessage = (message) => {
628
+ const update = resolveEphemeralStatusUpdate(message);
629
+ if (update === "unchanged") return;
630
+ if (replaying) {
631
+ replayStatus = update.line;
632
+ return;
633
+ }
634
+ setStatus(update.line);
635
+ };
636
+ const layer = ServiceResolver.provide({ space: space.id }, ProcessManager.ProcessManagerService);
637
+ const subscribe = (pid) => Effect.gen(function* () {
638
+ if (disposed) return;
639
+ const handle = yield* attachActiveHandle(yield* ProcessManager.ProcessManagerService, pid);
640
+ if (!handle || disposed) return;
641
+ const fiber = yield* handle.subscribeEphemeral().pipe(Stream.runForEach((message) => Effect.sync(() => {
642
+ if (disposed) return;
643
+ handleEphemeralMessage(message);
644
+ })), Effect.forkDaemon);
645
+ if (disposed) {
646
+ yield* Fiber.interrupt(fiber);
647
+ return;
648
+ }
649
+ fibersRef.current.push(fiber);
650
+ });
651
+ runtime.runPromise(Effect.forEach(pids, subscribe, {
652
+ concurrency: "unbounded",
653
+ discard: true
654
+ }).pipe(Effect.provide(layer))).catch(() => {
655
+ if (!disposed) setStatus(void 0);
656
+ });
657
+ return () => {
658
+ disposed = true;
659
+ const fibers = fibersRef.current;
660
+ fibersRef.current = [];
661
+ for (const fiber of fibers) runtime.runPromise(Fiber.interrupt(fiber).pipe(Effect.provide(layer)));
662
+ };
663
+ }, [
664
+ agentPid,
665
+ runtime,
666
+ space?.id,
667
+ subscribePidsKey
668
+ ]);
669
+ return status;
670
+ };
671
+ //#endregion
672
+ export { getSelectionContext, getTraceMessagesAtom, isTerminalActivityLine, useActiveSkills, useChatKeymapExtensions, useChatProcessor, useChatServices, useChatToolbarActions, useContextBinder, useContextObjects, useDebug, useFilteredTypes, useHomeSuggestions, usePresets, useProcessEphemeralStatus, useReferencesProvider, useSelectionContext, useSkillHandlers, useSkills, useTraceMessages };
673
+
674
+ //# sourceMappingURL=hooks.mjs.map