@dxos/plugin-assistant 0.9.1-main.c7dcc2e112 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/PLUGIN.mdl +18 -24
  2. package/dist/lib/neutral/{AgentArticle-2BEPWUMN.mjs → AgentArticle-GV6EEW3I.mjs} +1 -2
  3. package/dist/lib/neutral/AgentArticle-GV6EEW3I.mjs.map +7 -0
  4. package/dist/lib/neutral/AssistantPlugin.mjs +1 -1
  5. package/dist/lib/neutral/AssistantPlugin.node.mjs +6 -6
  6. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +3 -3
  7. package/dist/lib/neutral/AssistantPlugin.workerd.mjs +7 -34
  8. package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +4 -4
  9. package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs +302 -0
  10. package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs.map +7 -0
  11. package/dist/lib/neutral/{ChatArticle-KT46SUFU.mjs → ChatArticle-OO7GGEFW.mjs} +2 -2
  12. package/dist/lib/neutral/{ChatCompanion-YHC43RYQ.mjs → ChatCompanion-GIFJRY6I.mjs} +27 -27
  13. package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs.map +7 -0
  14. package/dist/lib/neutral/{ChatDialog-YZDZLIQA.mjs → ChatDialog-5MXN4MXS.mjs} +5 -5
  15. package/dist/lib/neutral/ChatDialog-5MXN4MXS.mjs.map +7 -0
  16. package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs +72 -0
  17. package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs.map +7 -0
  18. package/dist/lib/neutral/{SpaceHomePrompt-HTWQKLGI.mjs → SpaceHomePrompt-ISAB76LD.mjs} +8 -7
  19. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs.map +7 -0
  20. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs +63 -0
  21. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs.map +7 -0
  22. package/dist/lib/neutral/{TracePanel-T552TAOH.mjs → TracePanel-JKNWADJ4.mjs} +2 -2
  23. package/dist/lib/neutral/{TriggerStatus-RBOHHDOK.mjs → TriggerStatus-FURRBHYA.mjs} +7 -5
  24. package/dist/lib/neutral/TriggerStatus-FURRBHYA.mjs.map +7 -0
  25. package/dist/lib/neutral/{agent-hydrator-PJBYVMBW.mjs → agent-hydrator-OBO3RHLO.mjs} +3 -4
  26. package/dist/lib/neutral/agent-hydrator-OBO3RHLO.mjs.map +7 -0
  27. package/dist/lib/neutral/{agent-service-WV5CSHAG.mjs → agent-service-XFJ4VQMT.mjs} +7 -9
  28. package/dist/lib/neutral/agent-service-XFJ4VQMT.mjs.map +7 -0
  29. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs +14 -0
  30. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs.map +7 -0
  31. package/dist/lib/neutral/{ai-service-AADUIKBY.mjs → ai-service-DM6YXWUC.mjs} +9 -5
  32. package/dist/lib/neutral/ai-service-DM6YXWUC.mjs.map +7 -0
  33. package/dist/lib/neutral/{app-graph-builder-PTSRZXRN.mjs → app-graph-builder-OPVOEQY7.mjs} +36 -19
  34. package/dist/lib/neutral/app-graph-builder-OPVOEQY7.mjs.map +7 -0
  35. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs +97 -0
  36. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs.map +7 -0
  37. package/dist/lib/neutral/capabilities/index.mjs +20 -18
  38. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  39. package/dist/lib/neutral/{chunk-KLYLW4WH.mjs → chunk-5IHQ52KJ.mjs} +1 -1
  40. package/dist/lib/neutral/chunk-5IHQ52KJ.mjs.map +7 -0
  41. package/dist/lib/neutral/{chunk-5KB2WRI2.mjs → chunk-6Q4OBGIK.mjs} +83 -55
  42. package/dist/lib/neutral/chunk-6Q4OBGIK.mjs.map +7 -0
  43. package/dist/lib/neutral/{chunk-54W7N6M6.mjs → chunk-BXI2R4OO.mjs} +49 -84
  44. package/dist/lib/neutral/chunk-BXI2R4OO.mjs.map +7 -0
  45. package/dist/lib/neutral/{chunk-5H6UJHLF.mjs → chunk-CMPLPDYE.mjs} +12 -12
  46. package/dist/lib/neutral/chunk-CMPLPDYE.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-GPHT3HYS.mjs +8 -0
  48. package/dist/lib/neutral/{chunk-7FQT4XMI.mjs.map → chunk-GPHT3HYS.mjs.map} +2 -2
  49. package/dist/lib/neutral/{markdown-extension-IJ5RQMQ4.mjs → chunk-HKLSFB5I.mjs} +2 -38
  50. package/dist/lib/neutral/chunk-HKLSFB5I.mjs.map +7 -0
  51. package/dist/lib/neutral/{chunk-ZNDQVYUN.mjs → chunk-L7AR4VTA.mjs} +3 -3
  52. package/dist/lib/neutral/{chunk-ZNDQVYUN.mjs.map → chunk-L7AR4VTA.mjs.map} +1 -1
  53. package/dist/lib/neutral/chunk-LS72HWMM.mjs +42 -0
  54. package/dist/lib/neutral/chunk-LS72HWMM.mjs.map +7 -0
  55. package/dist/lib/neutral/{chunk-35EL65O4.mjs → chunk-OZWZGIV2.mjs} +4 -2
  56. package/dist/lib/neutral/{chunk-35EL65O4.mjs.map → chunk-OZWZGIV2.mjs.map} +3 -3
  57. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs → chunk-QOKLFHUS.mjs} +3 -4
  58. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs.map → chunk-QOKLFHUS.mjs.map} +1 -1
  59. package/dist/lib/neutral/{chunk-5LKNH7FD.mjs → chunk-SCTHQVIJ.mjs} +8 -5
  60. package/dist/lib/neutral/{chunk-5LKNH7FD.mjs.map → chunk-SCTHQVIJ.mjs.map} +3 -3
  61. package/dist/lib/neutral/chunk-U4LTLBAX.mjs +56 -0
  62. package/dist/lib/neutral/chunk-U4LTLBAX.mjs.map +7 -0
  63. package/dist/lib/neutral/{chunk-H77JTXAN.mjs → chunk-UPKFUZ6V.mjs} +7 -10
  64. package/dist/lib/neutral/chunk-UPKFUZ6V.mjs.map +7 -0
  65. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs → chunk-V2Y4XE3O.mjs} +3 -4
  66. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs.map → chunk-V2Y4XE3O.mjs.map} +1 -1
  67. package/dist/lib/neutral/chunk-VTK5R4H3.mjs +9 -0
  68. package/dist/lib/neutral/chunk-VTK5R4H3.mjs.map +7 -0
  69. package/dist/lib/neutral/chunk-XVGEJWJX.mjs +133 -0
  70. package/dist/lib/neutral/chunk-XVGEJWJX.mjs.map +7 -0
  71. package/dist/lib/neutral/{companion-chat-provisioner-YZZ73P6E.mjs → companion-chat-provisioner-IQV5VIVE.mjs} +14 -8
  72. package/dist/lib/neutral/companion-chat-provisioner-IQV5VIVE.mjs.map +7 -0
  73. package/dist/lib/neutral/components/index.mjs +509 -579
  74. package/dist/lib/neutral/components/index.mjs.map +4 -4
  75. package/dist/lib/neutral/{integration-provider-RBD3AFJU.mjs → connector-ITLLTBPZ.mjs} +13 -14
  76. package/dist/lib/neutral/connector-ITLLTBPZ.mjs.map +7 -0
  77. package/dist/lib/neutral/containers/index.mjs +12 -14
  78. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  79. package/dist/lib/neutral/{create-chat-Z3FNA6OJ.mjs → create-chat-YGVZZYGP.mjs} +18 -16
  80. package/dist/lib/neutral/create-chat-YGVZZYGP.mjs.map +7 -0
  81. package/dist/lib/neutral/{create-object-BJUDDKQQ.mjs → create-object-5PAEJ6KM.mjs} +11 -27
  82. package/dist/lib/neutral/create-object-5PAEJ6KM.mjs.map +7 -0
  83. package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs → edge-model-resolver-WDJWDZTT.mjs} +2 -2
  84. package/dist/lib/neutral/execution-graph/index.mjs +182 -64
  85. package/dist/lib/neutral/execution-graph/index.mjs.map +3 -3
  86. package/dist/lib/neutral/extensions/index.mjs +8 -0
  87. package/dist/lib/neutral/{fork-chat-UYXYT6BT.mjs → fork-chat-RMAAYYQF.mjs} +15 -18
  88. package/dist/lib/neutral/fork-chat-RMAAYYQF.mjs.map +7 -0
  89. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs +93 -0
  90. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs.map +7 -0
  91. package/dist/lib/neutral/hooks/index.mjs +195 -105
  92. package/dist/lib/neutral/hooks/index.mjs.map +4 -4
  93. package/dist/lib/neutral/index.mjs +14 -10
  94. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs +41 -0
  95. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs.map +7 -0
  96. package/dist/lib/neutral/meta.json +1 -1
  97. package/dist/lib/neutral/meta.mjs +1 -1
  98. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs +18 -0
  99. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs.map +7 -0
  100. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs +8 -0
  101. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs.map +7 -0
  102. package/dist/lib/neutral/operations/index.mjs +1 -1
  103. package/dist/lib/neutral/plugin.mjs +2 -2
  104. package/dist/lib/neutral/plugin.workerd.mjs +13 -0
  105. package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
  106. package/dist/lib/neutral/{react-surface-ES7UHZ65.mjs → react-surface-HEJEK44F.mjs} +20 -35
  107. package/dist/lib/neutral/react-surface-HEJEK44F.mjs.map +7 -0
  108. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs +28 -0
  109. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs.map +7 -0
  110. package/dist/lib/neutral/{run-prompt-in-new-chat-NIAGCKQV.mjs → run-prompt-in-new-chat-RNUJE2FM.mjs} +28 -31
  111. package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs.map +7 -0
  112. package/dist/lib/neutral/skill-definition-553MQRTR.mjs +8 -0
  113. package/dist/lib/neutral/skill-definition-553MQRTR.mjs.map +7 -0
  114. package/dist/lib/neutral/skills/index.mjs +8 -0
  115. package/dist/lib/neutral/skills/index.mjs.map +7 -0
  116. package/dist/lib/neutral/{state-XO2UYSSG.mjs → state-4LGAKSSD.mjs} +8 -2
  117. package/dist/lib/neutral/{state-XO2UYSSG.mjs.map → state-4LGAKSSD.mjs.map} +3 -3
  118. package/dist/lib/neutral/testing.mjs +1 -1
  119. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs +8 -0
  120. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs.map +7 -0
  121. package/dist/lib/neutral/translations.mjs +64 -33
  122. package/dist/lib/neutral/translations.mjs.map +3 -3
  123. package/dist/lib/neutral/types/index.mjs +5 -1
  124. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs → update-chat-name-IJJELRR6.mjs} +3 -3
  125. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs.map → update-chat-name-IJJELRR6.mjs.map} +2 -2
  126. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  127. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -1
  128. package/dist/types/src/capabilities/agent-hydrator.d.ts +1 -1
  129. package/dist/types/src/capabilities/agent-service.d.ts +1 -2
  130. package/dist/types/src/capabilities/agent-service.d.ts.map +1 -1
  131. package/dist/types/src/capabilities/ai-context.d.ts +1 -2
  132. package/dist/types/src/capabilities/ai-context.d.ts.map +1 -1
  133. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -3
  134. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  135. package/dist/types/src/capabilities/automation-templates.d.ts +1 -2
  136. package/dist/types/src/capabilities/automation-templates.d.ts.map +1 -1
  137. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +1 -1
  138. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
  139. package/dist/types/src/capabilities/{integration-provider.d.ts → connector.d.ts} +2 -2
  140. package/dist/types/src/capabilities/connector.d.ts.map +1 -0
  141. package/dist/types/src/capabilities/create-object.d.ts +1 -27
  142. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  143. package/dist/types/src/capabilities/index.d.ts +3 -2
  144. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  145. package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
  146. package/dist/types/src/capabilities/migrations.d.ts +1 -2
  147. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  148. package/dist/types/src/capabilities/navigation-resolver.d.ts +5 -0
  149. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
  150. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  151. package/dist/types/src/capabilities/settings.d.ts +1 -2
  152. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  153. package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
  154. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/state.d.ts +1 -17
  156. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  157. package/dist/types/src/capabilities/toolkit.d.ts +1 -2
  158. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  159. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -1
  160. package/dist/types/src/components/Chat/Chat.d.ts +4 -5
  161. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  162. package/dist/types/src/components/Chat/events.d.ts +0 -4
  163. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  164. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -2
  165. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  166. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  167. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +2 -2
  168. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -1
  169. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +5 -5
  170. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -1
  171. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts +9 -0
  172. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts.map +1 -0
  173. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +4 -4
  174. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +2 -2
  176. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -1
  177. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  178. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +2 -2
  179. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -1
  180. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts +11 -0
  181. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts.map +1 -0
  182. package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -0
  183. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
  184. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  185. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +2 -2
  186. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -3
  188. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  189. package/dist/types/src/components/index.d.ts +0 -4
  190. package/dist/types/src/components/index.d.ts.map +1 -1
  191. package/dist/types/src/constants.d.ts +1 -1
  192. package/dist/types/src/constants.d.ts.map +1 -1
  193. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +2 -2
  194. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
  195. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +1 -1
  196. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +1 -0
  197. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
  198. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts +12 -0
  199. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts.map +1 -0
  200. package/dist/types/src/{components/TemplateEditor/TemplateEditor.stories.d.ts → containers/AssistantSettings/OllamaModels.stories.d.ts} +9 -7
  201. package/dist/types/src/containers/AssistantSettings/OllamaModels.stories.d.ts.map +1 -0
  202. package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts.map +1 -1
  203. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +2 -9
  204. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -1
  205. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +3 -10
  206. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  207. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  208. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts +13 -0
  209. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts.map +1 -0
  210. package/dist/types/src/containers/IntegrationPrompt/index.d.ts +2 -0
  211. package/dist/types/src/{components/RoutineProperties → containers/IntegrationPrompt}/index.d.ts.map +1 -1
  212. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts.map +1 -1
  213. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts +1 -1
  214. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts.map +1 -1
  215. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
  216. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +1 -1
  217. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -1
  218. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  219. package/dist/types/src/containers/index.d.ts +2 -3
  220. package/dist/types/src/containers/index.d.ts.map +1 -1
  221. package/dist/types/src/execution-graph/execution-graph.d.ts +2 -1
  222. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
  223. package/dist/types/src/execution-graph/index.d.ts +3 -3
  224. package/dist/types/src/execution-graph/index.d.ts.map +1 -1
  225. package/dist/types/src/execution-graph/span-tree.d.ts +13 -0
  226. package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -1
  227. package/dist/types/src/extensions/index.d.ts +1 -1
  228. package/dist/types/src/extensions/index.d.ts.map +1 -1
  229. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
  230. package/dist/types/src/hooks/index.d.ts +2 -2
  231. package/dist/types/src/hooks/index.d.ts.map +1 -1
  232. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  233. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  234. package/dist/types/src/hooks/useHomeSuggestions.d.ts +8 -0
  235. package/dist/types/src/hooks/useHomeSuggestions.d.ts.map +1 -0
  236. package/dist/types/src/hooks/usePresets.d.ts +6 -2
  237. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  238. package/dist/types/src/hooks/useSkillRegistry.d.ts +21 -0
  239. package/dist/types/src/hooks/useSkillRegistry.d.ts.map +1 -0
  240. package/dist/types/src/index.d.ts +1 -1
  241. package/dist/types/src/index.d.ts.map +1 -1
  242. package/dist/types/src/meta.d.ts +4 -0
  243. package/dist/types/src/meta.d.ts.map +1 -1
  244. package/dist/types/src/operations/create-chat.d.ts.map +1 -1
  245. package/dist/types/src/operations/fork-chat.d.ts.map +1 -1
  246. package/dist/types/src/operations/generate-home-suggestions.d.ts +5 -0
  247. package/dist/types/src/operations/generate-home-suggestions.d.ts.map +1 -0
  248. package/dist/types/src/operations/generate-home-suggestions.test.d.ts +2 -0
  249. package/dist/types/src/operations/generate-home-suggestions.test.d.ts.map +1 -0
  250. package/dist/types/src/operations/index.d.ts.map +1 -1
  251. package/dist/types/src/operations/resolve-navigation-targets.d.ts +3 -15
  252. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
  253. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +2 -2
  254. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
  255. package/dist/types/src/paths.d.ts +1 -1
  256. package/dist/types/src/paths.d.ts.map +1 -1
  257. package/dist/types/src/plugin.workerd.d.ts +2 -0
  258. package/dist/types/src/plugin.workerd.d.ts.map +1 -0
  259. package/dist/types/src/processor/presets.d.ts +20 -9
  260. package/dist/types/src/processor/presets.d.ts.map +1 -1
  261. package/dist/types/src/processor/processor.d.ts +10 -209
  262. package/dist/types/src/processor/processor.d.ts.map +1 -1
  263. package/dist/types/src/skills/assistant/index.d.ts +2 -0
  264. package/dist/types/src/skills/assistant/index.d.ts.map +1 -0
  265. package/dist/types/src/skills/assistant/skill.d.ts +4 -0
  266. package/dist/types/src/skills/assistant/skill.d.ts.map +1 -0
  267. package/dist/types/src/skills/assistant/skill.node.test.d.ts +2 -0
  268. package/dist/types/src/skills/assistant/skill.node.test.d.ts.map +1 -0
  269. package/dist/types/src/skills/index.d.ts.map +1 -0
  270. package/dist/types/src/templates/daily-digest.d.ts +2 -2
  271. package/dist/types/src/templates/daily-digest.d.ts.map +1 -1
  272. package/dist/types/src/templates/index.d.ts +3 -3
  273. package/dist/types/src/templates/index.d.ts.map +1 -1
  274. package/dist/types/src/templates/research-brief.d.ts +2 -2
  275. package/dist/types/src/templates/research-brief.d.ts.map +1 -1
  276. package/dist/types/src/templates/routine-templates.test.d.ts +2 -0
  277. package/dist/types/src/templates/routine-templates.test.d.ts.map +1 -0
  278. package/dist/types/src/templates/scaffold.d.ts +9 -9
  279. package/dist/types/src/templates/scaffold.d.ts.map +1 -1
  280. package/dist/types/src/testing/test-generator.d.ts +1 -1
  281. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  282. package/dist/types/src/testing/test-sequence.d.ts +1 -8
  283. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  284. package/dist/types/src/testing/test-trace.d.ts.map +1 -1
  285. package/dist/types/src/translations.d.ts.map +1 -1
  286. package/dist/types/src/types/Assistant.d.ts +5 -12
  287. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  288. package/dist/types/src/types/AssistantCapabilities.d.ts +21 -0
  289. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -1
  290. package/dist/types/src/types/AssistantOperation.d.ts +17 -110
  291. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -1
  292. package/dist/types/src/types/ChatSurface.d.ts +12 -0
  293. package/dist/types/src/types/ChatSurface.d.ts.map +1 -0
  294. package/dist/types/src/types/Ollama.d.ts +44 -0
  295. package/dist/types/src/types/Ollama.d.ts.map +1 -0
  296. package/dist/types/src/types/Settings.d.ts +5 -4
  297. package/dist/types/src/types/Settings.d.ts.map +1 -1
  298. package/dist/types/src/types/index.d.ts +2 -0
  299. package/dist/types/src/types/index.d.ts.map +1 -1
  300. package/dist/types/src/types/service.d.ts +4 -3
  301. package/dist/types/src/types/service.d.ts.map +1 -1
  302. package/dist/types/src/util/suggestions.d.ts +1 -1
  303. package/dist/types/tsconfig.tsbuildinfo +1 -1
  304. package/dx.config.ts +2 -2
  305. package/package.json +102 -90
  306. package/src/AssistantPlugin.conversations.json +1 -1
  307. package/src/AssistantPlugin.node.ts +5 -5
  308. package/src/AssistantPlugin.test.ts +26 -40
  309. package/src/AssistantPlugin.ts +12 -10
  310. package/src/AssistantPlugin.workerd.ts +15 -6
  311. package/src/capabilities/agent-hydrator.ts +1 -2
  312. package/src/capabilities/agent-service.ts +5 -7
  313. package/src/capabilities/ai-context.ts +7 -32
  314. package/src/capabilities/ai-service.ts +3 -2
  315. package/src/capabilities/app-graph-builder.ts +38 -18
  316. package/src/capabilities/automation-templates.ts +3 -3
  317. package/src/capabilities/companion-chat-provisioner.ts +22 -6
  318. package/src/capabilities/{integration-provider.ts → connector.ts} +7 -12
  319. package/src/capabilities/create-object.ts +9 -26
  320. package/src/capabilities/index.ts +3 -5
  321. package/src/capabilities/markdown-extension.ts +2 -3
  322. package/src/capabilities/navigation-resolver.ts +20 -0
  323. package/src/capabilities/react-surface.tsx +21 -33
  324. package/src/capabilities/skill-definition.ts +72 -0
  325. package/src/capabilities/state.ts +7 -0
  326. package/src/components/AgentProperties/AgentProperties.stories.tsx +1 -2
  327. package/src/components/Chat/Chat.tsx +28 -10
  328. package/src/components/Chat/events.ts +0 -6
  329. package/src/components/ChatPrompt/ChatActions.tsx +181 -18
  330. package/src/components/ChatPrompt/ChatOptions.stories.tsx +3 -3
  331. package/src/components/ChatPrompt/ChatOptions.tsx +17 -21
  332. package/src/components/ChatPrompt/ChatPrompt.tsx +30 -46
  333. package/src/components/ChatPrompt/useChatVoiceInput.ts +103 -0
  334. package/src/components/ChatThread/ChatThread.stories.tsx +7 -16
  335. package/src/components/ChatThread/MarkdownStream.stories.tsx +3 -3
  336. package/src/components/ChatThread/registry.tsx +43 -17
  337. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +2 -2
  338. package/src/components/ChatThread/widgets/SurfaceWidget.tsx +41 -0
  339. package/src/components/ChatThread/widgets/index.ts +1 -0
  340. package/src/components/ProcessTree/ProcessTree.tsx +2 -10
  341. package/src/components/TaskList/TaskList.stories.tsx +2 -2
  342. package/src/components/TaskList/TaskList.tsx +2 -2
  343. package/src/components/Toolbox/Toolbox.tsx +11 -11
  344. package/src/components/index.ts +0 -6
  345. package/src/constants.ts +1 -1
  346. package/src/containers/AgentArticle/AgentArticle.stories.tsx +8 -9
  347. package/src/containers/AgentArticle/AgentArticle.tsx +1 -1
  348. package/src/{components → containers}/AssistantSettings/AssistantSettings.stories.tsx +3 -2
  349. package/src/containers/AssistantSettings/AssistantSettings.tsx +90 -0
  350. package/src/containers/AssistantSettings/OllamaModels.stories.tsx +108 -0
  351. package/src/containers/AssistantSettings/OllamaModels.tsx +255 -0
  352. package/src/containers/ChatArticle/ChatArticle.stories.tsx +3 -3
  353. package/src/containers/ChatArticle/ChatArticle.tsx +8 -19
  354. package/src/containers/ChatCompanion/ChatCompanion.tsx +26 -26
  355. package/src/containers/ChatDialog/ChatDialog.tsx +5 -4
  356. package/src/containers/IntegrationPrompt/IntegrationPrompt.tsx +79 -0
  357. package/src/containers/IntegrationPrompt/index.ts +5 -0
  358. package/src/containers/SpaceHomePrompt/SpaceHomePrompt.tsx +8 -6
  359. package/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.tsx +46 -32
  360. package/src/containers/TracePanel/TracePanel.stories.tsx +89 -47
  361. package/src/containers/TracePanel/TracePanel.tsx +13 -8
  362. package/src/containers/TracePanel/dxn-extractor.test.ts +2 -2
  363. package/src/containers/TriggerStatus/TriggerStatus.tsx +8 -4
  364. package/src/containers/index.ts +2 -3
  365. package/src/execution-graph/SPEC.md +1 -1
  366. package/src/execution-graph/execution-graph.test.ts +213 -25
  367. package/src/execution-graph/execution-graph.ts +209 -72
  368. package/src/execution-graph/index.ts +8 -8
  369. package/src/execution-graph/span-tree.test.ts +33 -1
  370. package/src/execution-graph/span-tree.ts +43 -2
  371. package/src/execution-graph/sub-agent-delegation.test.ts +19 -19
  372. package/src/extensions/index.ts +1 -1
  373. package/src/extensions/prompt-extension.ts +1 -1
  374. package/src/feed-logger.ts +4 -4
  375. package/src/functions/services.test.ts +4 -4
  376. package/src/hooks/index.ts +2 -2
  377. package/src/hooks/useChatProcessor.ts +12 -16
  378. package/src/hooks/useContextBinder.ts +2 -4
  379. package/src/hooks/useDebug.ts +2 -2
  380. package/src/hooks/useHomeSuggestions.ts +55 -0
  381. package/src/hooks/usePresets.ts +80 -11
  382. package/src/hooks/useProcessEphemeralStatus.ts +1 -1
  383. package/src/hooks/useReferencesProvider.ts +1 -1
  384. package/src/hooks/useSkillRegistry.ts +125 -0
  385. package/src/index.ts +1 -1
  386. package/src/operations/create-chat.ts +11 -12
  387. package/src/operations/fork-chat.ts +14 -19
  388. package/src/operations/generate-home-suggestions.test.ts +103 -0
  389. package/src/operations/generate-home-suggestions.ts +116 -0
  390. package/src/operations/index.ts +1 -0
  391. package/src/operations/prompt.node.test.ts +14 -17
  392. package/src/operations/resolve-navigation-targets.ts +32 -19
  393. package/src/operations/run-prompt-in-new-chat.ts +30 -33
  394. package/src/operations/update-chat-name.ts +2 -2
  395. package/src/paths.ts +4 -2
  396. package/src/plugin.workerd.ts +5 -0
  397. package/src/processor/presets.ts +38 -61
  398. package/src/processor/processor.node.test.ts +1 -1
  399. package/src/processor/processor.ts +34 -20
  400. package/src/skills/assistant/index.ts +5 -0
  401. package/src/{blueprints/assistant/blueprint.node.test.ts → skills/assistant/skill.node.test.ts} +8 -8
  402. package/src/{blueprints/assistant/blueprint.ts → skills/assistant/skill.ts} +9 -9
  403. package/src/templates/daily-digest.ts +10 -12
  404. package/src/templates/index.ts +3 -3
  405. package/src/templates/research-brief.ts +15 -13
  406. package/src/templates/routine-templates.test.ts +55 -0
  407. package/src/templates/scaffold.ts +22 -57
  408. package/src/testing/data/trace-timeline-multiple.dx.json +1 -1
  409. package/src/testing/data/trace-timeline-remote.dx.json +1 -1
  410. package/src/testing/data/trace-timeline.dx.json +3430 -1092
  411. package/src/testing/test-generator.test.ts +26 -22
  412. package/src/testing/test-generator.ts +4 -8
  413. package/src/testing/test-trace.ts +2 -1
  414. package/src/testing/trace-timeline.node.test.ts +14 -14
  415. package/src/translations.ts +68 -33
  416. package/src/types/Assistant.ts +3 -1
  417. package/src/types/AssistantCapabilities.ts +21 -0
  418. package/src/types/AssistantOperation.ts +21 -32
  419. package/src/types/ChatSurface.ts +16 -0
  420. package/src/types/Ollama.ts +59 -0
  421. package/src/types/Settings.ts +12 -10
  422. package/src/types/index.ts +3 -0
  423. package/src/types/service.ts +14 -14
  424. package/src/util/suggestions.ts +1 -1
  425. package/dist/lib/neutral/AgentArticle-2BEPWUMN.mjs.map +0 -7
  426. package/dist/lib/neutral/AssistantSettings-7ALY4BMS.mjs +0 -40
  427. package/dist/lib/neutral/AssistantSettings-7ALY4BMS.mjs.map +0 -7
  428. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs +0 -27
  429. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs.map +0 -7
  430. package/dist/lib/neutral/ChatCompanion-YHC43RYQ.mjs.map +0 -7
  431. package/dist/lib/neutral/ChatDialog-YZDZLIQA.mjs.map +0 -7
  432. package/dist/lib/neutral/RoutineArticle-FK5BXQN5.mjs +0 -119
  433. package/dist/lib/neutral/RoutineArticle-FK5BXQN5.mjs.map +0 -7
  434. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs +0 -48
  435. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs.map +0 -7
  436. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +0 -17
  437. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +0 -7
  438. package/dist/lib/neutral/SpaceHomePrompt-HTWQKLGI.mjs.map +0 -7
  439. package/dist/lib/neutral/SpaceHomeSuggestions-6G4E7GNJ.mjs +0 -50
  440. package/dist/lib/neutral/SpaceHomeSuggestions-6G4E7GNJ.mjs.map +0 -7
  441. package/dist/lib/neutral/TriggerStatus-RBOHHDOK.mjs.map +0 -7
  442. package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs.map +0 -7
  443. package/dist/lib/neutral/agent-service-WV5CSHAG.mjs.map +0 -7
  444. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs +0 -42
  445. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs.map +0 -7
  446. package/dist/lib/neutral/ai-service-AADUIKBY.mjs.map +0 -7
  447. package/dist/lib/neutral/app-graph-builder-PTSRZXRN.mjs.map +0 -7
  448. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs +0 -115
  449. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs.map +0 -7
  450. package/dist/lib/neutral/blueprint-definition-2XPYI35X.mjs +0 -40
  451. package/dist/lib/neutral/blueprint-definition-2XPYI35X.mjs.map +0 -7
  452. package/dist/lib/neutral/blueprints/index.mjs +0 -8
  453. package/dist/lib/neutral/chunk-54W7N6M6.mjs.map +0 -7
  454. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +0 -7
  455. package/dist/lib/neutral/chunk-5KB2WRI2.mjs.map +0 -7
  456. package/dist/lib/neutral/chunk-7FQT4XMI.mjs +0 -8
  457. package/dist/lib/neutral/chunk-H77JTXAN.mjs.map +0 -7
  458. package/dist/lib/neutral/chunk-IQZJ5TTM.mjs +0 -130
  459. package/dist/lib/neutral/chunk-IQZJ5TTM.mjs.map +0 -7
  460. package/dist/lib/neutral/chunk-KLYLW4WH.mjs.map +0 -7
  461. package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs.map +0 -7
  462. package/dist/lib/neutral/create-chat-Z3FNA6OJ.mjs.map +0 -7
  463. package/dist/lib/neutral/create-object-BJUDDKQQ.mjs.map +0 -7
  464. package/dist/lib/neutral/fork-chat-UYXYT6BT.mjs.map +0 -7
  465. package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +0 -7
  466. package/dist/lib/neutral/markdown-extension-IJ5RQMQ4.mjs.map +0 -7
  467. package/dist/lib/neutral/react-surface-ES7UHZ65.mjs.map +0 -7
  468. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs +0 -22
  469. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +0 -7
  470. package/dist/lib/neutral/run-prompt-in-new-chat-NIAGCKQV.mjs.map +0 -7
  471. package/dist/types/src/blueprints/assistant/blueprint.d.ts +0 -4
  472. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +0 -1
  473. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +0 -2
  474. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +0 -1
  475. package/dist/types/src/blueprints/assistant/index.d.ts +0 -2
  476. package/dist/types/src/blueprints/assistant/index.d.ts.map +0 -1
  477. package/dist/types/src/blueprints/index.d.ts.map +0 -1
  478. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  479. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  480. package/dist/types/src/capabilities/integration-provider.d.ts.map +0 -1
  481. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +0 -1
  482. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +0 -7
  483. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +0 -1
  484. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +0 -15
  485. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +0 -1
  486. package/dist/types/src/components/RoutineProperties/index.d.ts +0 -2
  487. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +0 -13
  488. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +0 -1
  489. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +0 -1
  490. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +0 -21
  491. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +0 -1
  492. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +0 -16
  493. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +0 -1
  494. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +0 -12
  495. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +0 -1
  496. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +0 -3
  497. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +0 -1
  498. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +0 -8
  499. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +0 -1
  500. package/dist/types/src/components/TemplateEditor/index.d.ts +0 -2
  501. package/dist/types/src/components/TemplateEditor/index.d.ts.map +0 -1
  502. package/dist/types/src/components/TemplateEditor/types.d.ts +0 -18
  503. package/dist/types/src/components/TemplateEditor/types.d.ts.map +0 -1
  504. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +0 -6
  505. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +0 -1
  506. package/dist/types/src/containers/BlueprintArticle/index.d.ts +0 -2
  507. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +0 -1
  508. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +0 -6
  509. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +0 -1
  510. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +0 -15
  511. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +0 -1
  512. package/dist/types/src/containers/RoutineArticle/index.d.ts +0 -2
  513. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +0 -1
  514. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +0 -6
  515. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +0 -1
  516. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +0 -21
  517. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +0 -1
  518. package/dist/types/src/containers/RoutineList/index.d.ts +0 -2
  519. package/dist/types/src/containers/RoutineList/index.d.ts.map +0 -1
  520. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +0 -66
  521. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +0 -1
  522. package/dist/types/src/hooks/useOnline.d.ts +0 -3
  523. package/dist/types/src/hooks/useOnline.d.ts.map +0 -1
  524. package/dist/types/src/templates/automation-templates.test.d.ts +0 -2
  525. package/dist/types/src/templates/automation-templates.test.d.ts.map +0 -1
  526. package/src/blueprints/assistant/index.ts +0 -5
  527. package/src/capabilities/blueprint-definition.ts +0 -67
  528. package/src/components/AssistantSettings/AssistantSettings.tsx +0 -43
  529. package/src/components/RoutineProperties/RoutineProperties.stories.tsx +0 -59
  530. package/src/components/RoutineProperties/RoutineProperties.tsx +0 -23
  531. package/src/components/RoutineProperties/index.ts +0 -5
  532. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +0 -95
  533. package/src/components/TemplateEditor/TemplateEditor.tsx +0 -80
  534. package/src/components/TemplateEditor/TemplateForm.stories.tsx +0 -76
  535. package/src/components/TemplateEditor/TemplateForm.tsx +0 -204
  536. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +0 -274
  537. package/src/components/TemplateEditor/extensions/index.ts +0 -6
  538. package/src/components/TemplateEditor/extensions/xml-extension.ts +0 -64
  539. package/src/components/TemplateEditor/index.ts +0 -5
  540. package/src/components/TemplateEditor/types.tsx +0 -28
  541. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +0 -29
  542. package/src/containers/BlueprintArticle/index.ts +0 -5
  543. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +0 -75
  544. package/src/containers/RoutineArticle/RoutineArticle.tsx +0 -109
  545. package/src/containers/RoutineArticle/index.ts +0 -5
  546. package/src/containers/RoutineList/RoutineList.stories.tsx +0 -130
  547. package/src/containers/RoutineList/RoutineList.tsx +0 -50
  548. package/src/containers/RoutineList/index.ts +0 -5
  549. package/src/hooks/useBlueprintRegistry.ts +0 -125
  550. package/src/hooks/useOnline.ts +0 -10
  551. package/src/templates/automation-templates.test.ts +0 -66
  552. /package/dist/lib/neutral/{ChatArticle-KT46SUFU.mjs.map → ChatArticle-OO7GGEFW.mjs.map} +0 -0
  553. /package/dist/lib/neutral/{TracePanel-T552TAOH.mjs.map → TracePanel-JKNWADJ4.mjs.map} +0 -0
  554. /package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs.map → edge-model-resolver-WDJWDZTT.mjs.map} +0 -0
  555. /package/dist/lib/neutral/{blueprints → extensions}/index.mjs.map +0 -0
  556. /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts +0 -0
  557. /package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts +0 -0
  558. /package/dist/types/src/{blueprints → skills}/index.d.ts +0 -0
  559. /package/src/{components → containers}/AssistantSettings/index.ts +0 -0
  560. /package/src/{blueprints → skills}/index.ts +0 -0
@@ -0,0 +1,79 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import React, { useMemo } from 'react';
6
+
7
+ import { Surface, useCapabilities } from '@dxos/app-framework/ui';
8
+ import { useActiveSpace } from '@dxos/app-toolkit/ui';
9
+ import { Connector, ConnectorAuth, type ConnectorEntry } from '@dxos/plugin-connector';
10
+ import { Icon, useTranslation } from '@dxos/react-ui';
11
+
12
+ import { meta } from '#meta';
13
+
14
+ export type IntegrationPromptProps = {
15
+ /** Service the agent needs access to, e.g. `gmail.com`. */
16
+ service?: string;
17
+ };
18
+
19
+ /**
20
+ * Agent-facing connector prompt: rendered when the assistant needs a service the user has not yet
21
+ * connected. Resolves the matching {@link Connector} entries for `service` and offers to connect via
22
+ * the shared connector-auth surface, so the user can grant access inline instead of the agent failing
23
+ * silently.
24
+ */
25
+ export const IntegrationPrompt = ({ service }: IntegrationPromptProps) => {
26
+ const { t } = useTranslation(meta.profile.key);
27
+ const space = useActiveSpace();
28
+ const connectors = useCapabilities(Connector).flat();
29
+ const matched = useMemo(() => (service ? matchConnectors(connectors, service) : []), [connectors, service]);
30
+
31
+ if (!service) {
32
+ return null;
33
+ }
34
+
35
+ const label = matched[0]?.label ?? service;
36
+ const connectorIds = matched.map((connector) => connector.id);
37
+
38
+ return (
39
+ <div role='group' className='flex flex-col gap-2 my-2 p-3 border border-subdued-separator rounded-sm'>
40
+ <div className='flex items-center gap-2'>
41
+ <Icon icon='ph--plugs--regular' size={5} classNames='shrink-0 text-subdued' />
42
+ <div className='flex flex-col min-w-0'>
43
+ <p className='text-sm font-medium truncate'>{t('integration-prompt.title', { service: label })}</p>
44
+ <p className='text-sm text-subdued'>
45
+ {connectorIds.length > 0
46
+ ? t('integration-prompt.description', { service: label })
47
+ : t('integration-prompt.unavailable', { service: label })}
48
+ </p>
49
+ </div>
50
+ </div>
51
+ {connectorIds.length > 0 && space && (
52
+ <div className='flex justify-end'>
53
+ <Surface.Surface type={ConnectorAuth} data={{ connectorIds }} limit={1} />
54
+ </div>
55
+ )}
56
+ </div>
57
+ );
58
+ };
59
+
60
+ /**
61
+ * Connectors whose id, source, or label relate to the requested service. Matches on the service's
62
+ * leading token (e.g. `gmail` from `gmail.com`) so model-supplied hostnames resolve to connectors
63
+ * keyed by short id or provider domain.
64
+ */
65
+ const matchConnectors = (connectors: ConnectorEntry[], service: string): ConnectorEntry[] => {
66
+ const needle = service.trim().toLowerCase();
67
+ // A malformed service (e.g. `.gmail.com` or `/`) can yield an empty base token, which would make
68
+ // `value.includes(base)` match every connector; bail so the unavailable state is shown instead.
69
+ const base = needle.split(/[.@/]/)[0];
70
+ if (!needle || !base) {
71
+ return [];
72
+ }
73
+ return connectors.filter((connector) => {
74
+ const candidates = [connector.id, connector.source, connector.label]
75
+ .filter((value): value is string => typeof value === 'string')
76
+ .map((value) => value.toLowerCase());
77
+ return candidates.some((value) => value === needle || value === base || value.includes(base));
78
+ });
79
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export { IntegrationPrompt as default } from './IntegrationPrompt';
@@ -4,15 +4,16 @@
4
4
 
5
5
  import React, { useEffect, useMemo, useState } from 'react';
6
6
 
7
+ import { Provider } from '@dxos/ai';
7
8
  import { Capabilities } from '@dxos/app-framework';
8
- import { useCapability, useOperationInvoker } from '@dxos/app-framework/ui';
9
+ import { useAtomCapability, useCapability, useOperationInvoker } from '@dxos/app-framework/ui';
9
10
  import { LayoutOperation } from '@dxos/app-toolkit';
10
11
  import { Event } from '@dxos/async';
11
12
  import { type Space, useRegistry } from '@dxos/react-client/echo';
12
13
  import { useTranslation } from '@dxos/react-ui';
13
14
 
14
- import { ChatPrompt, type ChatEvent } from '#components';
15
- import { useChatProcessor, useChatServices, useOnline, usePresets } from '#hooks';
15
+ import { type ChatEvent, ChatPrompt } from '#components';
16
+ import { useChatProcessor, useChatServices, usePresets } from '#hooks';
16
17
  import { meta } from '#meta';
17
18
  import { AssistantCapabilities, AssistantOperation, type ChatType } from '#types';
18
19
 
@@ -37,8 +38,10 @@ export const SpaceHomePrompt = ({ space }: SpaceScopedProps) => {
37
38
  const atomRegistry = useCapability(Capabilities.AtomRegistry);
38
39
  const stateAtom = useCapability(AssistantCapabilities.State);
39
40
  const runtime = useChatServices({ id: space?.id });
40
- const [online, setOnline] = useOnline();
41
- const { preset, ...presetProps } = usePresets(online);
41
+ const settings = useAtomCapability(AssistantCapabilities.Settings);
42
+ const { preset, ...presetProps } = usePresets(settings);
43
+ // The remote (online) service is the edge provider; the resolved preset carries the active provider.
44
+ const online = preset?.provider === Provider.edge.id;
42
45
 
43
46
  // In-memory backing chat (not yet added to the space). `nonce` forces a fresh chat after submit.
44
47
  const [chat, setChat] = useState<ChatType.Chat>();
@@ -98,7 +101,6 @@ export const SpaceHomePrompt = ({ space }: SpaceScopedProps) => {
98
101
  event={event}
99
102
  preset={preset?.id}
100
103
  online={online}
101
- onOnlineChange={setOnline}
102
104
  placeholder={t('space-home.prompt.placeholder')}
103
105
  />
104
106
  );
@@ -5,19 +5,12 @@
5
5
  import React, { useCallback } from 'react';
6
6
 
7
7
  import { useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { RoutineOperation } from '@dxos/plugin-routine/types';
8
9
  import { type Space } from '@dxos/react-client/echo';
9
10
  import { Card, IconButton, useTranslation } from '@dxos/react-ui';
10
11
 
12
+ import { useHomeSuggestions } from '#hooks';
11
13
  import { meta } from '#meta';
12
- import { AssistantOperation } from '#types';
13
-
14
- /** Starter prompts shown on the Home page. Always rendered — they surface quick actions alongside
15
- * the recent-objects masonry rather than only as an empty-state fallback. */
16
- const SUGGESTION_KEYS = [
17
- 'space-home.suggestion-draft-doc.label',
18
- 'space-home.suggestion-data-type.label',
19
- 'space-home.suggestion-ideas.label',
20
- ] as const;
21
14
 
22
15
  type SpaceScopedProps = {
23
16
  space?: Space;
@@ -31,39 +24,60 @@ type SpaceScopedProps = {
31
24
  export const SpaceHomeSuggestions = ({ space }: SpaceScopedProps) => {
32
25
  const { t } = useTranslation(meta.profile.key);
33
26
  const { invokePromise } = useOperationInvoker();
27
+ const suggestions = useHomeSuggestions(space);
34
28
 
35
29
  const handleRunPrompt = useCallback(
36
30
  (prompt: string) => {
37
31
  if (!space) {
38
32
  return;
39
33
  }
40
- void invokePromise(AssistantOperation.RunPromptInNewChat, { db: space.db, prompt });
34
+ void invokePromise(RoutineOperation.RunPromptInNewChat, { db: space.db, instructions: prompt });
41
35
  },
42
36
  [invokePromise, space],
43
37
  );
44
38
 
39
+ if (!suggestions) {
40
+ return null;
41
+ }
42
+
45
43
  return (
46
- <>
47
- <h2 className='text-sm font-medium text-description'>{t('space-home.suggestions.heading')}</h2>
48
- {SUGGESTION_KEYS.map((key) => {
49
- const prompt = t(key);
50
- return (
51
- <Card.Root
52
- key={key}
53
- fullWidth
54
- role='button'
55
- classNames='cursor-pointer'
56
- onClick={() => handleRunPrompt(prompt)}
57
- >
58
- <Card.Header>
59
- <Card.Block>
60
- <IconButton variant='ghost' label={prompt} icon='ph--sparkle--regular' iconOnly />
61
- </Card.Block>
62
- <Card.Title>{prompt}</Card.Title>
63
- </Card.Header>
64
- </Card.Root>
65
- );
66
- })}
67
- </>
44
+ <div className='flex justify-center w-full'>
45
+ <div className='flex flex-col gap-trim-sm w-full max-w-[40rem]'>
46
+ <h2 className='text-sm font-medium text-description'>{t('space-home.suggestions.heading')}</h2>
47
+ <div className='flex flex-col gap-3'>
48
+ {suggestions.map((prompt, index) => (
49
+ <div
50
+ key={`${index}:${prompt}`}
51
+ role='button'
52
+ tabIndex={0}
53
+ className='cursor-pointer w-full'
54
+ onClick={() => handleRunPrompt(prompt)}
55
+ onKeyDown={(e) => {
56
+ if (e.key === 'Enter' || e.key === ' ') {
57
+ e.preventDefault();
58
+ handleRunPrompt(prompt);
59
+ }
60
+ }}
61
+ >
62
+ <Card.Root fullWidth>
63
+ <Card.Header>
64
+ <Card.Block>
65
+ <IconButton
66
+ variant='ghost'
67
+ label={prompt}
68
+ icon='ph--sparkle--regular'
69
+ iconOnly
70
+ tabIndex={-1}
71
+ aria-hidden
72
+ />
73
+ </Card.Block>
74
+ <Card.Title>{prompt}</Card.Title>
75
+ </Card.Header>
76
+ </Card.Root>
77
+ </div>
78
+ ))}
79
+ </div>
80
+ </div>
81
+ </div>
68
82
  );
69
83
  };
@@ -14,14 +14,16 @@ import { ProcessManager } from '@dxos/compute-runtime';
14
14
  import { Feed, Filter, Query } from '@dxos/echo';
15
15
  import { FeedTraceSink } from '@dxos/functions-runtime';
16
16
  import { log } from '@dxos/log';
17
- import { AutomationPlugin } from '@dxos/plugin-automation/testing';
18
17
  import { ClientPlugin } from '@dxos/plugin-client/testing';
19
18
  import { initializeIdentity } from '@dxos/plugin-client/testing';
19
+ import { RoutinePlugin } from '@dxos/plugin-routine/testing';
20
20
  import { corePlugins } from '@dxos/plugin-testing';
21
21
  import { useQuery, useSpaces } from '@dxos/react-client/echo';
22
22
  import { IconButton, Panel, ScrollContainer, Toolbar } from '@dxos/react-ui';
23
- import { Timeline } from '@dxos/react-ui-components';
23
+ import { type Commit, Timeline } from '@dxos/react-ui-components';
24
+ import { Syntax } from '@dxos/react-ui-syntax-highlighter';
24
25
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
26
+ import { mx } from '@dxos/ui-theme';
25
27
 
26
28
  import { buildExecutionGraph } from '#execution-graph';
27
29
  import { AssistantPlugin } from '#plugin';
@@ -30,7 +32,7 @@ import { translations } from '#translations';
30
32
  import subAgentFixture from '../../execution-graph/testing/sub-agent-delegation.json';
31
33
  // TODO(dmaretskyi): testing.ts module shadows the ./testing dir.
32
34
  import { initClientFromSpaceSnapshot } from '../../testing/snapshot';
33
- import { PLAYBACK_INTERVAL_MS, STEP_STORAGE_KEY, SimulatedAgent, useLocalStorageNumber } from './testing';
35
+ import { PLAYBACK_INTERVAL_MS, SimulatedAgent, STEP_STORAGE_KEY, useLocalStorageNumber } from './testing';
34
36
  import { TracePanel } from './TracePanel';
35
37
 
36
38
  type BaseStoryProps = PropsWithChildren<{
@@ -38,12 +40,34 @@ type BaseStoryProps = PropsWithChildren<{
38
40
  }>;
39
41
 
40
42
  const BaseStory = ({ children, toolbar }: BaseStoryProps) => (
41
- <Panel.Root>
43
+ <Panel.Root classNames='h-full min-h-0'>
42
44
  <Panel.Toolbar asChild>{toolbar}</Panel.Toolbar>
43
- <Panel.Content asChild>{children}</Panel.Content>
45
+ <Panel.Content asChild classNames='min-h-0'>
46
+ {children}
47
+ </Panel.Content>
44
48
  </Panel.Root>
45
49
  );
46
50
 
51
+ const JsonInspectorPanel = ({ data }: { data: unknown }) => (
52
+ <div className='min-h-0 h-full'>
53
+ <ScrollContainer.Root pin>
54
+ <ScrollContainer.Content thin>
55
+ <ScrollContainer.Viewport>
56
+ <Syntax.Root data={data}>
57
+ <Syntax.Content>
58
+ <Syntax.Viewport>
59
+ <Syntax.Code className='text-xs' />
60
+ </Syntax.Viewport>
61
+ </Syntax.Content>
62
+ </Syntax.Root>
63
+ </ScrollContainer.Viewport>
64
+ <ScrollContainer.ScrollDownButton />
65
+ <ScrollContainer.Fade />
66
+ </ScrollContainer.Content>
67
+ </ScrollContainer.Root>
68
+ </div>
69
+ );
70
+
47
71
  const DefaultStory = () => {
48
72
  const [space] = useSpaces();
49
73
  const runtime = useProcessManagerRuntime();
@@ -100,7 +124,7 @@ const SnapshotStory = () => {
100
124
  [allMessages],
101
125
  );
102
126
 
103
- return <TimelinePlayback messages={sortedMessages} />;
127
+ return <TimelinePlayback messages={sortedMessages} collapseCompletedSpans={true} />;
104
128
  };
105
129
 
106
130
  // Raw Trace.Message[] captured from a live sub-agent delegation via `dxosDumpTrace()` (see
@@ -121,10 +145,17 @@ const FixtureStory = () => {
121
145
  * Step/playback over a fixed list of trace messages — renders the execution-graph Timeline at each
122
146
  * step so layout (e.g. concurrent sub-agent lanes) can be inspected as events "stream" in.
123
147
  */
124
- const TimelinePlayback = ({ messages: sortedMessages }: { messages: readonly Trace.Message[] }) => {
148
+ const TimelinePlayback = ({
149
+ messages: sortedMessages,
150
+ collapseCompletedSpans = true,
151
+ }: {
152
+ messages: readonly Trace.Message[];
153
+ collapseCompletedSpans?: boolean;
154
+ }) => {
125
155
  const total = sortedMessages.length;
126
156
  const [step, setStep, stepHydrated] = useLocalStorageNumber(STEP_STORAGE_KEY, 0);
127
157
  const [playing, setPlaying] = useState(false);
158
+ const [selectedCommit, setSelectedCommit] = useState<Commit | undefined>();
128
159
 
129
160
  useEffect(() => {
130
161
  setStep((current) => Math.min(Math.max(current, 0), total));
@@ -143,10 +174,13 @@ const TimelinePlayback = ({ messages: sortedMessages }: { messages: readonly Tra
143
174
  }, [total, stepHydrated, setStep]);
144
175
 
145
176
  const visibleMessages = useMemo(() => sortedMessages.slice(0, step), [sortedMessages, step]);
146
- const { commits, branches } = useMemo(
147
- () => buildExecutionGraph({ traceMessages: visibleMessages }),
148
- [visibleMessages],
177
+ const { commits, branches, spanTree, details } = useMemo(
178
+ () => buildExecutionGraph({ traceMessages: visibleMessages, collapseCompletedSpans }),
179
+ [visibleMessages, collapseCompletedSpans],
149
180
  );
181
+ const selectedCommitDetail = selectedCommit
182
+ ? { commit: selectedCommit, detail: details[selectedCommit.id] }
183
+ : undefined;
150
184
 
151
185
  // Auto-play steps forward until we reach the end.
152
186
  useEffect(() => {
@@ -215,35 +249,43 @@ const TimelinePlayback = ({ messages: sortedMessages }: { messages: readonly Tra
215
249
  }, [handleNext, handlePrev, handleTogglePlay, handleReset, handleShowAll]);
216
250
 
217
251
  return (
218
- <ScrollContainer.Root pin>
219
- <BaseStory
220
- toolbar={
221
- <Toolbar.Root>
222
- <IconButton iconOnly icon='ph--skip-back--regular' label='Reset (R)' onClick={handleReset} />
223
- <IconButton iconOnly icon='ph--caret-left--regular' label='Step back (← / H)' onClick={handlePrev} />
224
- <IconButton
225
- iconOnly
226
- icon={playing ? 'ph--pause--regular' : 'ph--play--regular'}
227
- label={playing ? 'Pause (Space)' : 'Play (Space)'}
228
- onClick={handleTogglePlay}
229
- />
230
- <IconButton iconOnly icon='ph--caret-right--regular' label='Step forward ( / L)' onClick={handleNext} />
231
- <IconButton iconOnly icon='ph--skip-forward--regular' label='Show all (E / End)' onClick={handleShowAll} />
232
- <Toolbar.Text className='text-right text-sm tabular-nums opacity-70'>
233
- {step} / {total}
234
- </Toolbar.Text>
235
- </Toolbar.Root>
236
- }
237
- >
238
- <ScrollContainer.Content thin>
239
- <ScrollContainer.Viewport>
240
- <Timeline branches={branches} commits={commits} showTimestamp />
241
- </ScrollContainer.Viewport>
242
- <ScrollContainer.ScrollDownButton />
243
- <ScrollContainer.Fade />
244
- </ScrollContainer.Content>
245
- </BaseStory>
246
- </ScrollContainer.Root>
252
+ <BaseStory
253
+ toolbar={
254
+ <Toolbar.Root>
255
+ <IconButton iconOnly icon='ph--skip-back--regular' label='Reset (R)' onClick={handleReset} />
256
+ <IconButton iconOnly icon='ph--caret-left--regular' label='Step back (← / H)' onClick={handlePrev} />
257
+ <IconButton
258
+ iconOnly
259
+ icon={playing ? 'ph--pause--regular' : 'ph--play--regular'}
260
+ label={playing ? 'Pause (Space)' : 'Play (Space)'}
261
+ onClick={handleTogglePlay}
262
+ />
263
+ <IconButton iconOnly icon='ph--caret-right--regular' label='Step forward (→ / L)' onClick={handleNext} />
264
+ <IconButton iconOnly icon='ph--skip-forward--regular' label='Show all (E / End)' onClick={handleShowAll} />
265
+ <Toolbar.Text className='text-right text-sm tabular-nums opacity-70'>
266
+ {step} / {total}
267
+ </Toolbar.Text>
268
+ </Toolbar.Root>
269
+ }
270
+ >
271
+ <div className={mx('grid h-full min-h-0 grid-cols-3 divide-x divide-separator')}>
272
+ <JsonInspectorPanel data={spanTree} />
273
+
274
+ <div className='min-h-0'>
275
+ <ScrollContainer.Root pin>
276
+ <ScrollContainer.Content thin>
277
+ <ScrollContainer.Viewport>
278
+ <Timeline branches={branches} commits={commits} showTimestamp onSelect={setSelectedCommit} />
279
+ </ScrollContainer.Viewport>
280
+ <ScrollContainer.ScrollDownButton />
281
+ <ScrollContainer.Fade />
282
+ </ScrollContainer.Content>
283
+ </ScrollContainer.Root>
284
+ </div>
285
+
286
+ <JsonInspectorPanel data={selectedCommitDetail} />
287
+ </div>
288
+ </BaseStory>
247
289
  );
248
290
  };
249
291
 
@@ -277,7 +319,7 @@ export const Default: Story = {
277
319
  }),
278
320
  }),
279
321
  AssistantPlugin(),
280
- AutomationPlugin(),
322
+ RoutinePlugin(),
281
323
  ],
282
324
  }),
283
325
  ],
@@ -285,14 +327,14 @@ export const Default: Story = {
285
327
 
286
328
  export const WithSubAgentFixture: Story = {
287
329
  render: FixtureStory,
288
- decorators: [withTheme(), withLayout({ layout: 'column', classNames: 'w-(--dx-complementary-sidebar-size)' })],
330
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
289
331
  };
290
332
 
291
333
  export const WithSnapshot: Story = {
292
334
  render: SnapshotStory,
293
335
  decorators: [
294
336
  withTheme(),
295
- withLayout({ layout: 'column', classNames: 'w-(--dx-complementary-sidebar-size)' }),
337
+ withLayout({ layout: 'fullscreen' }),
296
338
  withPluginManager({
297
339
  plugins: [
298
340
  ...corePlugins(),
@@ -300,7 +342,7 @@ export const WithSnapshot: Story = {
300
342
  types: [Feed.Feed, Trace.Message],
301
343
  onClientInitialized: initClientFromSpaceSnapshot(() => import('../../testing/data/trace-timeline.dx.json')),
302
344
  }),
303
- AutomationPlugin(),
345
+ RoutinePlugin(),
304
346
  ],
305
347
  }),
306
348
  ],
@@ -310,7 +352,7 @@ export const WithRemoteSnapshot: Story = {
310
352
  render: SnapshotStory,
311
353
  decorators: [
312
354
  withTheme(),
313
- withLayout({ layout: 'column', classNames: 'w-(--dx-complementary-sidebar-size)' }),
355
+ withLayout({ layout: 'fullscreen' }),
314
356
  withPluginManager({
315
357
  plugins: [
316
358
  ...corePlugins(),
@@ -320,7 +362,7 @@ export const WithRemoteSnapshot: Story = {
320
362
  () => import('../../testing/data/trace-timeline-remote.dx.json'),
321
363
  ),
322
364
  }),
323
- AutomationPlugin(),
365
+ RoutinePlugin(),
324
366
  ],
325
367
  }),
326
368
  ],
@@ -330,7 +372,7 @@ export const WithRemoteMultipleSnapshot: Story = {
330
372
  render: SnapshotStory,
331
373
  decorators: [
332
374
  withTheme(),
333
- withLayout({ layout: 'column', classNames: 'w-(--dx-complementary-sidebar-size)' }),
375
+ withLayout({ layout: 'fullscreen' }),
334
376
  withPluginManager({
335
377
  plugins: [
336
378
  ...corePlugins(),
@@ -340,7 +382,7 @@ export const WithRemoteMultipleSnapshot: Story = {
340
382
  () => import('../../testing/data/trace-timeline-multiple.dx.json'),
341
383
  ),
342
384
  }),
343
- AutomationPlugin(),
385
+ RoutinePlugin(),
344
386
  ],
345
387
  }),
346
388
  ],
@@ -10,7 +10,7 @@ import { pipe } from 'effect/Function';
10
10
  import React, { useCallback, useDeferredValue, useEffect, useMemo, useState } from 'react';
11
11
 
12
12
  import { Capabilities } from '@dxos/app-framework';
13
- import { useCapability, useAtomCapability, useOperationInvoker } from '@dxos/app-framework/ui';
13
+ import { useAtomCapability, useCapability, useOperationInvoker } from '@dxos/app-framework/ui';
14
14
  import { LayoutOperation } from '@dxos/app-toolkit';
15
15
  import { type AppSurface } from '@dxos/app-toolkit/ui';
16
16
  import { Process } from '@dxos/compute';
@@ -19,13 +19,13 @@ import { type Space } from '@dxos/react-client/echo';
19
19
  import { ScrollContainer } from '@dxos/react-ui';
20
20
  import { composable, composableProps } from '@dxos/react-ui';
21
21
  import { useAttentionAttributes } from '@dxos/react-ui-attention';
22
- import { Timeline, type Commit } from '@dxos/react-ui-components';
22
+ import { type Commit, Timeline } from '@dxos/react-ui-components';
23
23
  import { Syntax } from '@dxos/react-ui-syntax-highlighter';
24
24
  import { mx } from '@dxos/ui-theme';
25
25
 
26
26
  import { ProcessTree, ProcessTreeProps } from '#components';
27
- import { buildExecutionGraph, type ExecutionGraph } from '#execution-graph';
28
- import { useTraceMessages, getTraceMessagesAtom } from '#hooks';
27
+ import { type ExecutionGraph, buildExecutionGraph } from '#execution-graph';
28
+ import { getTraceMessagesAtom, useTraceMessages } from '#hooks';
29
29
  import { AssistantCapabilities } from '#types';
30
30
 
31
31
  export type TracePanelProps = AppSurface.SpaceArticleProps<Pick<ProcessTreeProps, 'onProcessTerminate'>>;
@@ -159,16 +159,20 @@ export const TracePanel = composable<HTMLDivElement, TracePanelProps>(
159
159
  const atomEmpty = Atom.make(() => [] as const);
160
160
 
161
161
  type UseExecutionGraphOptions = {
162
+ collapseCompletedSpans?: boolean;
162
163
  eventLimit?: number;
163
164
  };
164
165
 
165
- const useExecutionGraph = (space: Space, { eventLimit }: UseExecutionGraphOptions = {}): ExecutionGraph => {
166
+ const useExecutionGraph = (
167
+ space: Space,
168
+ { collapseCompletedSpans, eventLimit }: UseExecutionGraphOptions = {},
169
+ ): ExecutionGraph => {
166
170
  const monitor = useCapability(Capabilities.ProcessMonitor);
167
171
  const processesAtom = monitor?.processTreeAtom ?? atomEmpty;
168
172
 
169
173
  const atom = useMemo(
170
- () => getExecutionGraph(space, processesAtom, { eventLimit }),
171
- [space, processesAtom, eventLimit],
174
+ () => getExecutionGraph(space, processesAtom, { collapseCompletedSpans, eventLimit }),
175
+ [space, processesAtom, collapseCompletedSpans, eventLimit],
172
176
  );
173
177
 
174
178
  return useAtomValue(atom);
@@ -177,7 +181,7 @@ const useExecutionGraph = (space: Space, { eventLimit }: UseExecutionGraphOption
177
181
  const getExecutionGraph = (
178
182
  space: Space,
179
183
  processesAtom: Atom.Atom<readonly Process.Info[]>,
180
- { eventLimit = 100 }: UseExecutionGraphOptions = {},
184
+ { collapseCompletedSpans = true, eventLimit = 100 }: UseExecutionGraphOptions = {},
181
185
  ): Atom.Atom<ExecutionGraph> => {
182
186
  const traceMessages = getTraceMessagesAtom(space);
183
187
 
@@ -198,6 +202,7 @@ const getExecutionGraph = (
198
202
  buildExecutionGraph({
199
203
  traceMessages: get(traceMessages),
200
204
  activeProcesses: get(activeProcesses),
205
+ collapseCompletedSpans,
201
206
  eventLimit,
202
207
  }),
203
208
  );
@@ -5,8 +5,8 @@
5
5
  import { describe, test } from 'vitest';
6
6
 
7
7
  import {
8
- extractDxnsFromObject,
9
8
  extractDxnFromString,
9
+ extractDxnsFromObject,
10
10
  extractFirstDxnFromToolInput,
11
11
  extractFirstDxnFromToolResult,
12
12
  } from './dxn-extractor';
@@ -57,7 +57,7 @@ describe('dxn-extractor', () => {
57
57
  test('extracts @uri key reference { "@uri": "echo:..." }', ({ expect }) => {
58
58
  const result = extractDxnsFromObject({
59
59
  '@uri': 'echo:/01KG7R1ZXWFMWQ4DA1Q6TN1DG4',
60
- name: 'Test',
60
+ 'name': 'Test',
61
61
  });
62
62
  expect(result).toHaveLength(1);
63
63
  expect(result[0].toString()).toBe('echo:/01KG7R1ZXWFMWQ4DA1Q6TN1DG4');
@@ -6,9 +6,10 @@ import React, { useMemo } from 'react';
6
6
 
7
7
  import { AppSurface } from '@dxos/app-toolkit/ui';
8
8
  import { type InvocationsState } from '@dxos/functions-runtime';
9
- import { useTriggerRuntimeControls } from '@dxos/plugin-automation/hooks';
9
+ import { useTriggerRuntimeControls } from '@dxos/plugin-routine/hooks';
10
10
  import { StatusBar } from '@dxos/plugin-status-bar/components';
11
- import { useObject } from '@dxos/react-client/echo';
11
+ import { useMulticastObservable } from '@dxos/react-client';
12
+ import { SpaceState, useObject } from '@dxos/react-client/echo';
12
13
  import { IconButton, Popover, useTranslation } from '@dxos/react-ui';
13
14
 
14
15
  import { meta } from '#meta';
@@ -47,8 +48,11 @@ export const SpaceStatus = ({ space }: SpaceStatusProps) => {
47
48
  const { t } = useTranslation(meta.profile.key);
48
49
  const { state } = useTriggerRuntimeControls(space.db);
49
50
  const isEnabled = state?.enabled ?? false;
50
- const [properties] = useObject(space.properties);
51
- const computeEnvironment = properties.computeEnvironment ?? 'local';
51
+ // `space.properties` throws until the space finishes initializing (e.g. right after joining);
52
+ // gate on `space.state` so this component doesn't crash for a freshly-joined space.
53
+ const spaceState = useMulticastObservable(space.state);
54
+ const [properties] = useObject(spaceState === SpaceState.SPACE_READY ? space.properties : undefined);
55
+ const computeEnvironment = properties?.computeEnvironment ?? 'local';
52
56
 
53
57
  // Determine the current trigger status state.
54
58
  const triggerState: TriggerStatusState = useMemo(() => {
@@ -6,13 +6,12 @@ import { type ComponentType, lazy } from 'react';
6
6
 
7
7
  export const AgentArticle: ComponentType<any> = lazy(() => import('./AgentArticle'));
8
8
  export const AgentProperties: ComponentType<any> = lazy(() => import('./AgentProperties'));
9
- export const BlueprintArticle: ComponentType<any> = lazy(() => import('./BlueprintArticle'));
9
+ export const AssistantSettings: ComponentType<any> = lazy(() => import('./AssistantSettings'));
10
10
  export const ChatCompanion: ComponentType<any> = lazy(() => import('./ChatCompanion'));
11
11
  export const ChatArticle: ComponentType<any> = lazy(() => import('./ChatArticle'));
12
12
  export const ChatDialog: ComponentType<any> = lazy(() => import('./ChatDialog'));
13
+ export const IntegrationPrompt: ComponentType<any> = lazy(() => import('./IntegrationPrompt'));
13
14
  export const PlanArticle: ComponentType<any> = lazy(() => import('./PlanArticle'));
14
- export const RoutineArticle: ComponentType<any> = lazy(() => import('./RoutineArticle'));
15
- export const RoutineList: ComponentType<any> = lazy(() => import('./RoutineList'));
16
15
  export const SpaceHomePrompt: ComponentType<any> = lazy(() => import('./SpaceHomePrompt'));
17
16
  export const SpaceHomeSuggestions: ComponentType<any> = lazy(() => import('./SpaceHomeSuggestions'));
18
17
  export const TracePanel: ComponentType<any> = lazy(() => import('./TracePanel'));
@@ -392,7 +392,7 @@ process in `activeProcesses` (`execution-graph.ts#L397`):
392
392
  When **all** of:
393
393
 
394
394
  - `process.key === AGENT_PROCESS_KEY` (`'org.dxos.testing.process.agent'`),
395
- - `process.params.target` is truthy,
395
+ - `process.params.annotations` carries a `Process.TargetAnnotation` value,
396
396
  - `process.state ∈ { RUNNING, HYBERNATING }`,
397
397
 
398
398
  emit: