@dxos/plugin-assistant 0.9.0 → 0.9.1-staging.ee54ba693a

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 (619) hide show
  1. package/PLUGIN.mdl +18 -24
  2. package/dist/lib/neutral/{AgentArticle-K7XM46OQ.mjs → AgentArticle-GV6EEW3I.mjs} +9 -8
  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-VNVZCDUR.mjs → ChatArticle-OO7GGEFW.mjs} +2 -2
  12. package/dist/lib/neutral/{ChatCompanion-LBUHYWQG.mjs → ChatCompanion-GIFJRY6I.mjs} +28 -28
  13. package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs.map +7 -0
  14. package/dist/lib/neutral/{ChatDialog-DCA6FLOV.mjs → ChatDialog-5MXN4MXS.mjs} +9 -8
  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/{PlanArticle-TS5ULWYS.mjs → PlanArticle-VPK2IYWU.mjs} +8 -2
  19. package/dist/lib/neutral/PlanArticle-VPK2IYWU.mjs.map +7 -0
  20. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs +114 -0
  21. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs.map +7 -0
  22. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs +63 -0
  23. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs.map +7 -0
  24. package/dist/lib/neutral/TracePanel-JKNWADJ4.mjs +12 -0
  25. package/dist/lib/neutral/TracePanel-JKNWADJ4.mjs.map +7 -0
  26. package/dist/lib/neutral/{TriggerStatus-X7Y5JFZJ.mjs → TriggerStatus-FURRBHYA.mjs} +9 -7
  27. package/dist/lib/neutral/TriggerStatus-FURRBHYA.mjs.map +7 -0
  28. package/dist/lib/neutral/{agent-hydrator-PJBYVMBW.mjs → agent-hydrator-OBO3RHLO.mjs} +3 -4
  29. package/dist/lib/neutral/agent-hydrator-OBO3RHLO.mjs.map +7 -0
  30. package/dist/lib/neutral/{agent-service-WCAP5MLI.mjs → agent-service-XFJ4VQMT.mjs} +6 -6
  31. package/dist/lib/neutral/agent-service-XFJ4VQMT.mjs.map +7 -0
  32. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs +14 -0
  33. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs.map +7 -0
  34. package/dist/lib/neutral/{ai-service-AADUIKBY.mjs → ai-service-DM6YXWUC.mjs} +9 -5
  35. package/dist/lib/neutral/ai-service-DM6YXWUC.mjs.map +7 -0
  36. package/dist/lib/neutral/{app-graph-builder-WUFHQH3Y.mjs → app-graph-builder-OPVOEQY7.mjs} +45 -28
  37. package/dist/lib/neutral/app-graph-builder-OPVOEQY7.mjs.map +7 -0
  38. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs +97 -0
  39. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs.map +7 -0
  40. package/dist/lib/neutral/capabilities/index.mjs +21 -19
  41. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  42. package/dist/lib/neutral/{chunk-KLYLW4WH.mjs → chunk-5IHQ52KJ.mjs} +1 -1
  43. package/dist/lib/neutral/chunk-5IHQ52KJ.mjs.map +7 -0
  44. package/dist/lib/neutral/{chunk-YXRGZYYH.mjs → chunk-6Q4OBGIK.mjs} +87 -59
  45. package/dist/lib/neutral/chunk-6Q4OBGIK.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-BXI2R4OO.mjs +410 -0
  47. package/dist/lib/neutral/chunk-BXI2R4OO.mjs.map +7 -0
  48. package/dist/lib/neutral/{chunk-5H6UJHLF.mjs → chunk-CMPLPDYE.mjs} +12 -12
  49. package/dist/lib/neutral/chunk-CMPLPDYE.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-GPHT3HYS.mjs +8 -0
  51. package/dist/lib/neutral/{chunk-SMFJD7BP.mjs.map → chunk-GPHT3HYS.mjs.map} +2 -2
  52. package/dist/lib/neutral/chunk-HKLSFB5I.mjs +90 -0
  53. package/dist/lib/neutral/chunk-HKLSFB5I.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-L7AR4VTA.mjs +53 -0
  55. package/dist/lib/neutral/chunk-L7AR4VTA.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-LS72HWMM.mjs +42 -0
  57. package/dist/lib/neutral/chunk-LS72HWMM.mjs.map +7 -0
  58. package/dist/lib/neutral/{chunk-HLANPOBA.mjs → chunk-OZWZGIV2.mjs} +5 -3
  59. package/dist/lib/neutral/chunk-OZWZGIV2.mjs.map +7 -0
  60. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs → chunk-QOKLFHUS.mjs} +3 -4
  61. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs.map → chunk-QOKLFHUS.mjs.map} +1 -1
  62. package/dist/lib/neutral/{TracePanel-KTZJ6JNR.mjs → chunk-SCTHQVIJ.mjs} +11 -23
  63. package/dist/lib/neutral/chunk-SCTHQVIJ.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-U4LTLBAX.mjs +56 -0
  65. package/dist/lib/neutral/chunk-U4LTLBAX.mjs.map +7 -0
  66. package/dist/lib/neutral/{chunk-RKVVK3R3.mjs → chunk-UPKFUZ6V.mjs} +22 -17
  67. package/dist/lib/neutral/chunk-UPKFUZ6V.mjs.map +7 -0
  68. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs → chunk-V2Y4XE3O.mjs} +3 -4
  69. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs.map → chunk-V2Y4XE3O.mjs.map} +1 -1
  70. package/dist/lib/neutral/chunk-XVGEJWJX.mjs +133 -0
  71. package/dist/lib/neutral/chunk-XVGEJWJX.mjs.map +7 -0
  72. package/dist/lib/neutral/{companion-chat-provisioner-YZZ73P6E.mjs → companion-chat-provisioner-IQV5VIVE.mjs} +14 -8
  73. package/dist/lib/neutral/companion-chat-provisioner-IQV5VIVE.mjs.map +7 -0
  74. package/dist/lib/neutral/components/index.mjs +749 -632
  75. package/dist/lib/neutral/components/index.mjs.map +4 -4
  76. package/dist/lib/neutral/{integration-provider-RBD3AFJU.mjs → connector-ITLLTBPZ.mjs} +13 -14
  77. package/dist/lib/neutral/connector-ITLLTBPZ.mjs.map +7 -0
  78. package/dist/lib/neutral/containers/index.mjs +15 -13
  79. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  80. package/dist/lib/neutral/{create-chat-SGGQ6HVN.mjs → create-chat-YGVZZYGP.mjs} +18 -16
  81. package/dist/lib/neutral/create-chat-YGVZZYGP.mjs.map +7 -0
  82. package/dist/lib/neutral/{create-object-U2SOFZLR.mjs → create-object-5PAEJ6KM.mjs} +11 -27
  83. package/dist/lib/neutral/create-object-5PAEJ6KM.mjs.map +7 -0
  84. package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs → edge-model-resolver-WDJWDZTT.mjs} +2 -2
  85. package/dist/lib/neutral/execution-graph/index.mjs +336 -62
  86. package/dist/lib/neutral/execution-graph/index.mjs.map +4 -4
  87. package/dist/lib/neutral/extensions/index.mjs +8 -0
  88. package/dist/lib/neutral/{fork-chat-34KEF4ZJ.mjs → fork-chat-RMAAYYQF.mjs} +16 -19
  89. package/dist/lib/neutral/fork-chat-RMAAYYQF.mjs.map +7 -0
  90. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs +93 -0
  91. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs.map +7 -0
  92. package/dist/lib/neutral/hooks/index.mjs +393 -508
  93. package/dist/lib/neutral/hooks/index.mjs.map +4 -4
  94. package/dist/lib/neutral/index.mjs +14 -10
  95. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs +41 -0
  96. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs.map +7 -0
  97. package/dist/lib/neutral/meta.json +1 -1
  98. package/dist/lib/neutral/meta.mjs +1 -1
  99. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs +18 -0
  100. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs.map +7 -0
  101. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs +8 -0
  102. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs.map +7 -0
  103. package/dist/lib/neutral/operations/index.mjs +1 -1
  104. package/dist/lib/neutral/plugin.mjs +2 -2
  105. package/dist/lib/neutral/plugin.workerd.mjs +13 -0
  106. package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
  107. package/dist/lib/neutral/{react-surface-XRTBW5OJ.mjs → react-surface-HEJEK44F.mjs} +42 -45
  108. package/dist/lib/neutral/react-surface-HEJEK44F.mjs.map +7 -0
  109. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs +28 -0
  110. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs.map +7 -0
  111. package/dist/lib/neutral/{run-prompt-in-new-chat-D5IIE2C7.mjs → run-prompt-in-new-chat-RNUJE2FM.mjs} +31 -31
  112. package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs.map +7 -0
  113. package/dist/lib/neutral/{settings-W4BLWQ53.mjs → settings-7Q3RITIT.mjs} +3 -3
  114. package/dist/lib/neutral/{settings-W4BLWQ53.mjs.map → settings-7Q3RITIT.mjs.map} +3 -3
  115. package/dist/lib/neutral/skill-definition-553MQRTR.mjs +8 -0
  116. package/dist/lib/neutral/skill-definition-553MQRTR.mjs.map +7 -0
  117. package/dist/lib/neutral/skills/index.mjs +8 -0
  118. package/dist/lib/neutral/skills/index.mjs.map +7 -0
  119. package/dist/lib/neutral/{state-H3G7QCU6.mjs → state-4LGAKSSD.mjs} +9 -3
  120. package/dist/lib/neutral/state-4LGAKSSD.mjs.map +7 -0
  121. package/dist/lib/neutral/testing.mjs +1 -1
  122. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs +8 -0
  123. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs.map +7 -0
  124. package/dist/lib/neutral/translations.mjs +69 -31
  125. package/dist/lib/neutral/translations.mjs.map +3 -3
  126. package/dist/lib/neutral/types/index.mjs +5 -1
  127. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs → update-chat-name-IJJELRR6.mjs} +3 -3
  128. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs.map → update-chat-name-IJJELRR6.mjs.map} +2 -2
  129. package/dist/types/dx.config.d.ts +28 -0
  130. package/dist/types/dx.config.d.ts.map +1 -0
  131. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  132. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -1
  133. package/dist/types/src/capabilities/agent-hydrator.d.ts +1 -1
  134. package/dist/types/src/capabilities/agent-service.d.ts +1 -2
  135. package/dist/types/src/capabilities/agent-service.d.ts.map +1 -1
  136. package/dist/types/src/capabilities/ai-context.d.ts +1 -2
  137. package/dist/types/src/capabilities/ai-context.d.ts.map +1 -1
  138. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -3
  139. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  140. package/dist/types/src/capabilities/automation-templates.d.ts +1 -2
  141. package/dist/types/src/capabilities/automation-templates.d.ts.map +1 -1
  142. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +1 -1
  143. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
  144. package/dist/types/src/capabilities/{integration-provider.d.ts → connector.d.ts} +2 -2
  145. package/dist/types/src/capabilities/connector.d.ts.map +1 -0
  146. package/dist/types/src/capabilities/create-object.d.ts +1 -27
  147. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  148. package/dist/types/src/capabilities/index.d.ts +18 -57
  149. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  150. package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
  151. package/dist/types/src/capabilities/migrations.d.ts +1 -2
  152. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  153. package/dist/types/src/capabilities/navigation-resolver.d.ts +5 -0
  154. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  156. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  157. package/dist/types/src/capabilities/settings.d.ts +1 -2
  158. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  159. package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
  160. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/state.d.ts +1 -17
  162. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  163. package/dist/types/src/capabilities/toolkit.d.ts +1 -2
  164. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  165. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/Chat/Chat.d.ts +10 -8
  167. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  168. package/dist/types/src/components/Chat/Chat.stories.d.ts +32 -0
  169. package/dist/types/src/components/Chat/Chat.stories.d.ts.map +1 -0
  170. package/dist/types/src/components/Chat/events.d.ts +0 -4
  171. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  172. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -2
  173. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  174. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  175. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +2 -2
  176. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -1
  177. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +5 -5
  178. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -1
  179. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts +9 -0
  180. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts.map +1 -0
  181. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +4 -4
  182. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  183. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +2 -2
  184. package/dist/types/src/components/ChatThread/MarkdownStream.stories.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/widgets/ReasoningWidget.stories.d.ts +2 -2
  187. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -1
  188. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts +11 -0
  189. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts.map +1 -0
  190. package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -0
  191. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
  192. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +6 -0
  193. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  194. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +1 -0
  195. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -1
  196. package/dist/types/src/components/TaskList/TaskList.d.ts +8 -0
  197. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -1
  198. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +5 -2
  199. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -1
  200. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -3
  201. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  202. package/dist/types/src/components/index.d.ts +1 -4
  203. package/dist/types/src/components/index.d.ts.map +1 -1
  204. package/dist/types/src/constants.d.ts +1 -1
  205. package/dist/types/src/constants.d.ts.map +1 -1
  206. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +2 -2
  207. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
  208. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +1 -1
  209. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +1 -0
  210. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
  211. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts +12 -0
  212. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts.map +1 -0
  213. package/dist/types/src/{components/TemplateEditor/TemplateEditor.stories.d.ts → containers/AssistantSettings/OllamaModels.stories.d.ts} +9 -7
  214. package/dist/types/src/containers/AssistantSettings/OllamaModels.stories.d.ts.map +1 -0
  215. package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts.map +1 -1
  216. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +3 -10
  217. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -1
  218. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +4 -11
  219. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  220. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  221. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts +13 -0
  222. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts.map +1 -0
  223. package/dist/types/src/containers/IntegrationPrompt/index.d.ts +2 -0
  224. package/dist/types/src/{components/RoutineProperties → containers/IntegrationPrompt}/index.d.ts.map +1 -1
  225. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -1
  226. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts +15 -0
  227. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts.map +1 -0
  228. package/dist/types/src/containers/SpaceHomePrompt/index.d.ts +2 -0
  229. package/dist/types/src/containers/SpaceHomePrompt/index.d.ts.map +1 -0
  230. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts +13 -0
  231. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts.map +1 -0
  232. package/dist/types/src/containers/SpaceHomeSuggestions/index.d.ts +2 -0
  233. package/dist/types/src/containers/SpaceHomeSuggestions/index.d.ts.map +1 -0
  234. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -1
  235. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
  236. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +1 -1
  237. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -1
  238. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  239. package/dist/types/src/containers/index.d.ts +4 -3
  240. package/dist/types/src/containers/index.d.ts.map +1 -1
  241. package/dist/types/src/execution-graph/execution-graph.d.ts +20 -1
  242. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
  243. package/dist/types/src/execution-graph/index.d.ts +3 -2
  244. package/dist/types/src/execution-graph/index.d.ts.map +1 -1
  245. package/dist/types/src/execution-graph/pending-block-status.d.ts +26 -0
  246. package/dist/types/src/execution-graph/pending-block-status.d.ts.map +1 -0
  247. package/dist/types/src/execution-graph/pending-block-status.test.d.ts +2 -0
  248. package/dist/types/src/execution-graph/pending-block-status.test.d.ts.map +1 -0
  249. package/dist/types/src/execution-graph/span-tree.d.ts +13 -0
  250. package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -1
  251. package/dist/types/src/extensions/index.d.ts +1 -1
  252. package/dist/types/src/extensions/index.d.ts.map +1 -1
  253. package/dist/types/src/extensions/prompt-extension.d.ts +1 -1
  254. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
  255. package/dist/types/src/feed-logger.d.ts +3 -2
  256. package/dist/types/src/feed-logger.d.ts.map +1 -1
  257. package/dist/types/src/hooks/index.d.ts +4 -2
  258. package/dist/types/src/hooks/index.d.ts.map +1 -1
  259. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  260. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  261. package/dist/types/src/hooks/useHomeSuggestions.d.ts +8 -0
  262. package/dist/types/src/hooks/useHomeSuggestions.d.ts.map +1 -0
  263. package/dist/types/src/hooks/usePresets.d.ts +6 -2
  264. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  265. package/dist/types/src/hooks/useProcessEphemeralStatus.d.ts +10 -0
  266. package/dist/types/src/hooks/useProcessEphemeralStatus.d.ts.map +1 -0
  267. package/dist/types/src/hooks/useSkillRegistry.d.ts +21 -0
  268. package/dist/types/src/hooks/useSkillRegistry.d.ts.map +1 -0
  269. package/dist/types/src/hooks/useTraceMessages.d.ts +12 -0
  270. package/dist/types/src/hooks/useTraceMessages.d.ts.map +1 -0
  271. package/dist/types/src/index.d.ts +1 -1
  272. package/dist/types/src/index.d.ts.map +1 -1
  273. package/dist/types/src/meta.d.ts +32 -2
  274. package/dist/types/src/meta.d.ts.map +1 -1
  275. package/dist/types/src/operations/create-chat.d.ts.map +1 -1
  276. package/dist/types/src/operations/fork-chat.d.ts.map +1 -1
  277. package/dist/types/src/operations/generate-home-suggestions.d.ts +5 -0
  278. package/dist/types/src/operations/generate-home-suggestions.d.ts.map +1 -0
  279. package/dist/types/src/operations/generate-home-suggestions.test.d.ts +2 -0
  280. package/dist/types/src/operations/generate-home-suggestions.test.d.ts.map +1 -0
  281. package/dist/types/src/operations/index.d.ts.map +1 -1
  282. package/dist/types/src/operations/resolve-navigation-targets.d.ts +3 -15
  283. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
  284. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +2 -2
  285. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
  286. package/dist/types/src/paths.d.ts +1 -1
  287. package/dist/types/src/paths.d.ts.map +1 -1
  288. package/dist/types/src/plugin.workerd.d.ts +2 -0
  289. package/dist/types/src/plugin.workerd.d.ts.map +1 -0
  290. package/dist/types/src/processor/presets.d.ts +20 -9
  291. package/dist/types/src/processor/presets.d.ts.map +1 -1
  292. package/dist/types/src/processor/processor.d.ts +33 -209
  293. package/dist/types/src/processor/processor.d.ts.map +1 -1
  294. package/dist/types/src/skills/assistant/index.d.ts +2 -0
  295. package/dist/types/src/skills/assistant/index.d.ts.map +1 -0
  296. package/dist/types/src/skills/assistant/skill.d.ts +4 -0
  297. package/dist/types/src/skills/assistant/skill.d.ts.map +1 -0
  298. package/dist/types/src/skills/assistant/skill.node.test.d.ts +2 -0
  299. package/dist/types/src/skills/assistant/skill.node.test.d.ts.map +1 -0
  300. package/dist/types/src/skills/index.d.ts.map +1 -0
  301. package/dist/types/src/templates/daily-digest.d.ts +2 -2
  302. package/dist/types/src/templates/daily-digest.d.ts.map +1 -1
  303. package/dist/types/src/templates/index.d.ts +3 -3
  304. package/dist/types/src/templates/index.d.ts.map +1 -1
  305. package/dist/types/src/templates/research-brief.d.ts +2 -2
  306. package/dist/types/src/templates/research-brief.d.ts.map +1 -1
  307. package/dist/types/src/templates/routine-templates.test.d.ts +2 -0
  308. package/dist/types/src/templates/routine-templates.test.d.ts.map +1 -0
  309. package/dist/types/src/templates/scaffold.d.ts +9 -9
  310. package/dist/types/src/templates/scaffold.d.ts.map +1 -1
  311. package/dist/types/src/testing/test-generator.d.ts +1 -1
  312. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  313. package/dist/types/src/testing/test-sequence.d.ts +1 -8
  314. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  315. package/dist/types/src/testing/test-trace.d.ts.map +1 -1
  316. package/dist/types/src/translations.d.ts.map +1 -1
  317. package/dist/types/src/types/Assistant.d.ts +5 -12
  318. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  319. package/dist/types/src/types/AssistantCapabilities.d.ts +21 -0
  320. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -1
  321. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -1
  322. package/dist/types/src/types/AssistantOperation.d.ts +17 -110
  323. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -1
  324. package/dist/types/src/types/ChatSurface.d.ts +12 -0
  325. package/dist/types/src/types/ChatSurface.d.ts.map +1 -0
  326. package/dist/types/src/types/Ollama.d.ts +44 -0
  327. package/dist/types/src/types/Ollama.d.ts.map +1 -0
  328. package/dist/types/src/types/Settings.d.ts +5 -4
  329. package/dist/types/src/types/Settings.d.ts.map +1 -1
  330. package/dist/types/src/types/index.d.ts +2 -0
  331. package/dist/types/src/types/index.d.ts.map +1 -1
  332. package/dist/types/src/types/service.d.ts +4 -3
  333. package/dist/types/src/types/service.d.ts.map +1 -1
  334. package/dist/types/src/util/error-cause.d.ts +3 -0
  335. package/dist/types/src/util/error-cause.d.ts.map +1 -0
  336. package/dist/types/src/util/suggestions.d.ts +1 -1
  337. package/dist/types/tsconfig.tsbuildinfo +1 -1
  338. package/dx.config.ts +38 -0
  339. package/package.json +103 -90
  340. package/src/AssistantPlugin.conversations.json +1 -1
  341. package/src/AssistantPlugin.node.ts +5 -5
  342. package/src/AssistantPlugin.test.ts +27 -41
  343. package/src/AssistantPlugin.ts +14 -12
  344. package/src/AssistantPlugin.workerd.ts +15 -6
  345. package/src/capabilities/agent-hydrator.ts +1 -2
  346. package/src/capabilities/agent-service.ts +7 -5
  347. package/src/capabilities/ai-context.ts +7 -32
  348. package/src/capabilities/ai-service.ts +3 -2
  349. package/src/capabilities/app-graph-builder.ts +43 -28
  350. package/src/capabilities/automation-templates.ts +3 -3
  351. package/src/capabilities/companion-chat-provisioner.ts +22 -6
  352. package/src/capabilities/{integration-provider.ts → connector.ts} +7 -12
  353. package/src/capabilities/create-object.ts +9 -26
  354. package/src/capabilities/index.ts +4 -12
  355. package/src/capabilities/markdown-extension.ts +7 -4
  356. package/src/capabilities/navigation-resolver.ts +20 -0
  357. package/src/capabilities/react-surface.tsx +55 -52
  358. package/src/capabilities/settings.ts +2 -2
  359. package/src/capabilities/skill-definition.ts +72 -0
  360. package/src/capabilities/state.ts +8 -1
  361. package/src/components/AgentProperties/AgentProperties.stories.tsx +1 -2
  362. package/src/components/AgentProperties/AgentProperties.tsx +1 -1
  363. package/src/components/Chat/Chat.stories.tsx +94 -0
  364. package/src/components/Chat/Chat.tsx +67 -16
  365. package/src/components/Chat/events.ts +0 -6
  366. package/src/components/ChatPrompt/ChatActions.tsx +185 -20
  367. package/src/components/ChatPrompt/ChatMcpErrors.tsx +1 -1
  368. package/src/components/ChatPrompt/ChatOptions.stories.tsx +3 -3
  369. package/src/components/ChatPrompt/ChatOptions.tsx +43 -50
  370. package/src/components/ChatPrompt/ChatPrompt.tsx +31 -47
  371. package/src/components/ChatPrompt/ChatReferences.tsx +1 -1
  372. package/src/components/ChatPrompt/useChatVoiceInput.ts +103 -0
  373. package/src/components/ChatThread/Anchor.stories.tsx +1 -1
  374. package/src/components/ChatThread/ChatThread.stories.tsx +7 -16
  375. package/src/components/ChatThread/DEBUG.md +23 -0
  376. package/src/components/ChatThread/MarkdownStream.stories.tsx +3 -3
  377. package/src/components/ChatThread/registry.tsx +43 -17
  378. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +2 -2
  379. package/src/components/ChatThread/widgets/SummaryWidget.tsx +1 -1
  380. package/src/components/ChatThread/widgets/SurfaceWidget.tsx +41 -0
  381. package/src/components/ChatThread/widgets/ToolWidget.tsx +1 -1
  382. package/src/components/ChatThread/widgets/index.ts +1 -0
  383. package/src/components/ProcessTree/ProcessTree.stories.tsx +7 -0
  384. package/src/components/ProcessTree/ProcessTree.tsx +183 -88
  385. package/src/components/TaskList/TaskList.stories.tsx +24 -3
  386. package/src/components/TaskList/TaskList.tsx +122 -28
  387. package/src/components/ToolBlock/ToolBlock.tsx +1 -1
  388. package/src/components/Toolbox/Toolbox.tsx +11 -11
  389. package/src/components/index.ts +1 -6
  390. package/src/constants.ts +1 -1
  391. package/src/containers/AgentArticle/AgentArticle.stories.tsx +12 -13
  392. package/src/containers/AgentArticle/AgentArticle.tsx +10 -10
  393. package/src/{components → containers}/AssistantSettings/AssistantSettings.stories.tsx +3 -2
  394. package/src/containers/AssistantSettings/AssistantSettings.tsx +90 -0
  395. package/src/containers/AssistantSettings/OllamaModels.stories.tsx +108 -0
  396. package/src/containers/AssistantSettings/OllamaModels.tsx +255 -0
  397. package/src/containers/ChatArticle/ChatArticle.stories.tsx +3 -3
  398. package/src/containers/ChatArticle/ChatArticle.tsx +25 -28
  399. package/src/containers/ChatCompanion/ChatCompanion.tsx +27 -27
  400. package/src/containers/ChatDialog/ChatDialog.tsx +10 -7
  401. package/src/containers/IntegrationPrompt/IntegrationPrompt.tsx +79 -0
  402. package/src/containers/IntegrationPrompt/index.ts +5 -0
  403. package/src/containers/PlanArticle/PlanArticle.tsx +5 -1
  404. package/src/containers/SpaceHomePrompt/SpaceHomePrompt.tsx +107 -0
  405. package/src/containers/SpaceHomePrompt/index.ts +5 -0
  406. package/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.tsx +83 -0
  407. package/src/containers/SpaceHomeSuggestions/index.ts +5 -0
  408. package/src/containers/TracePanel/TracePanel.stories.tsx +89 -47
  409. package/src/containers/TracePanel/TracePanel.tsx +15 -37
  410. package/src/containers/TracePanel/dxn-extractor.test.ts +2 -2
  411. package/src/containers/TriggerStatus/TriggerStatus.tsx +10 -6
  412. package/src/containers/index.ts +4 -3
  413. package/src/execution-graph/SPEC.md +1 -1
  414. package/src/execution-graph/execution-graph.test.ts +213 -25
  415. package/src/execution-graph/execution-graph.ts +337 -70
  416. package/src/execution-graph/index.ts +15 -5
  417. package/src/execution-graph/pending-block-status.test.ts +114 -0
  418. package/src/execution-graph/pending-block-status.ts +88 -0
  419. package/src/execution-graph/span-tree.test.ts +33 -1
  420. package/src/execution-graph/span-tree.ts +43 -2
  421. package/src/execution-graph/sub-agent-delegation.test.ts +34 -19
  422. package/src/extensions/index.ts +1 -1
  423. package/src/extensions/prompt-extension.ts +102 -73
  424. package/src/feed-logger.ts +24 -22
  425. package/src/functions/services.test.ts +4 -4
  426. package/src/hooks/index.ts +4 -2
  427. package/src/hooks/useChatProcessor.ts +12 -16
  428. package/src/hooks/useChatServices.ts +2 -2
  429. package/src/hooks/useChatToolbarActions.ts +5 -5
  430. package/src/hooks/useContextBinder.ts +2 -4
  431. package/src/hooks/useDebug.ts +2 -2
  432. package/src/hooks/useHomeSuggestions.ts +55 -0
  433. package/src/hooks/usePresets.ts +80 -11
  434. package/src/hooks/useProcessEphemeralStatus.ts +192 -0
  435. package/src/hooks/useReferencesProvider.ts +1 -1
  436. package/src/hooks/useSkillRegistry.ts +125 -0
  437. package/src/hooks/useTraceMessages.ts +41 -0
  438. package/src/index.ts +1 -1
  439. package/src/meta.ts +3 -31
  440. package/src/operations/create-chat.ts +11 -12
  441. package/src/operations/fork-chat.ts +15 -20
  442. package/src/operations/generate-home-suggestions.test.ts +103 -0
  443. package/src/operations/generate-home-suggestions.ts +116 -0
  444. package/src/operations/index.ts +1 -0
  445. package/src/operations/prompt.node.test.ts +14 -17
  446. package/src/operations/resolve-navigation-targets.ts +32 -19
  447. package/src/operations/run-prompt-in-new-chat.ts +34 -35
  448. package/src/operations/update-chat-name.ts +2 -2
  449. package/src/paths.ts +5 -3
  450. package/src/plugin.workerd.ts +5 -0
  451. package/src/processor/presets.ts +38 -61
  452. package/src/processor/processor.node.test.ts +72 -2
  453. package/src/processor/processor.ts +91 -21
  454. package/src/skills/assistant/index.ts +5 -0
  455. package/src/{blueprints/assistant/blueprint.node.test.ts → skills/assistant/skill.node.test.ts} +8 -8
  456. package/src/{blueprints/assistant/blueprint.ts → skills/assistant/skill.ts} +9 -9
  457. package/src/templates/daily-digest.ts +10 -12
  458. package/src/templates/index.ts +3 -3
  459. package/src/templates/research-brief.ts +15 -13
  460. package/src/templates/routine-templates.test.ts +55 -0
  461. package/src/templates/scaffold.ts +22 -57
  462. package/src/testing/data/trace-timeline-multiple.dx.json +1 -1
  463. package/src/testing/data/trace-timeline-remote.dx.json +1 -1
  464. package/src/testing/data/trace-timeline.dx.json +3430 -1093
  465. package/src/testing/test-generator.test.ts +26 -22
  466. package/src/testing/test-generator.ts +4 -8
  467. package/src/testing/test-trace.ts +2 -1
  468. package/src/testing/trace-timeline.node.test.ts +14 -14
  469. package/src/translations.ts +74 -31
  470. package/src/types/Assistant.ts +3 -1
  471. package/src/types/AssistantCapabilities.ts +24 -3
  472. package/src/types/AssistantEvents.ts +1 -1
  473. package/src/types/AssistantOperation.ts +22 -33
  474. package/src/types/ChatSurface.ts +16 -0
  475. package/src/types/Ollama.ts +59 -0
  476. package/src/types/Settings.ts +12 -10
  477. package/src/types/index.ts +3 -0
  478. package/src/types/service.ts +14 -14
  479. package/src/util/error-cause.ts +21 -0
  480. package/src/util/suggestions.ts +1 -1
  481. package/dist/lib/neutral/AgentArticle-K7XM46OQ.mjs.map +0 -7
  482. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +0 -40
  483. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs.map +0 -7
  484. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs +0 -27
  485. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs.map +0 -7
  486. package/dist/lib/neutral/ChatCompanion-LBUHYWQG.mjs.map +0 -7
  487. package/dist/lib/neutral/ChatDialog-DCA6FLOV.mjs.map +0 -7
  488. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +0 -7
  489. package/dist/lib/neutral/RoutineArticle-5NYXHRG6.mjs +0 -119
  490. package/dist/lib/neutral/RoutineArticle-5NYXHRG6.mjs.map +0 -7
  491. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs +0 -48
  492. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs.map +0 -7
  493. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +0 -17
  494. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +0 -7
  495. package/dist/lib/neutral/TracePanel-KTZJ6JNR.mjs.map +0 -7
  496. package/dist/lib/neutral/TriggerStatus-X7Y5JFZJ.mjs.map +0 -7
  497. package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs.map +0 -7
  498. package/dist/lib/neutral/agent-service-WCAP5MLI.mjs.map +0 -7
  499. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs +0 -42
  500. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs.map +0 -7
  501. package/dist/lib/neutral/ai-service-AADUIKBY.mjs.map +0 -7
  502. package/dist/lib/neutral/app-graph-builder-WUFHQH3Y.mjs.map +0 -7
  503. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs +0 -115
  504. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs.map +0 -7
  505. package/dist/lib/neutral/blueprint-definition-MH2QLYQH.mjs +0 -39
  506. package/dist/lib/neutral/blueprint-definition-MH2QLYQH.mjs.map +0 -7
  507. package/dist/lib/neutral/blueprints/index.mjs +0 -8
  508. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +0 -7
  509. package/dist/lib/neutral/chunk-HLANPOBA.mjs.map +0 -7
  510. package/dist/lib/neutral/chunk-KLYLW4WH.mjs.map +0 -7
  511. package/dist/lib/neutral/chunk-QAZMOFPI.mjs +0 -130
  512. package/dist/lib/neutral/chunk-QAZMOFPI.mjs.map +0 -7
  513. package/dist/lib/neutral/chunk-RKVVK3R3.mjs.map +0 -7
  514. package/dist/lib/neutral/chunk-SMFJD7BP.mjs +0 -8
  515. package/dist/lib/neutral/chunk-XYHPOGTK.mjs +0 -43
  516. package/dist/lib/neutral/chunk-XYHPOGTK.mjs.map +0 -7
  517. package/dist/lib/neutral/chunk-YXRGZYYH.mjs.map +0 -7
  518. package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs.map +0 -7
  519. package/dist/lib/neutral/create-chat-SGGQ6HVN.mjs.map +0 -7
  520. package/dist/lib/neutral/create-object-U2SOFZLR.mjs.map +0 -7
  521. package/dist/lib/neutral/fork-chat-34KEF4ZJ.mjs.map +0 -7
  522. package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +0 -7
  523. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs +0 -110
  524. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs.map +0 -7
  525. package/dist/lib/neutral/react-surface-XRTBW5OJ.mjs.map +0 -7
  526. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs +0 -22
  527. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +0 -7
  528. package/dist/lib/neutral/run-prompt-in-new-chat-D5IIE2C7.mjs.map +0 -7
  529. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +0 -7
  530. package/dist/types/src/blueprints/assistant/blueprint.d.ts +0 -4
  531. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +0 -1
  532. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +0 -2
  533. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +0 -1
  534. package/dist/types/src/blueprints/assistant/index.d.ts +0 -2
  535. package/dist/types/src/blueprints/assistant/index.d.ts.map +0 -1
  536. package/dist/types/src/blueprints/index.d.ts.map +0 -1
  537. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  538. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  539. package/dist/types/src/capabilities/integration-provider.d.ts.map +0 -1
  540. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +0 -1
  541. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +0 -7
  542. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +0 -1
  543. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +0 -15
  544. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +0 -1
  545. package/dist/types/src/components/RoutineProperties/index.d.ts +0 -2
  546. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +0 -13
  547. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +0 -1
  548. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +0 -1
  549. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +0 -21
  550. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +0 -1
  551. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +0 -16
  552. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +0 -1
  553. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +0 -12
  554. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +0 -1
  555. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +0 -3
  556. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +0 -1
  557. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +0 -8
  558. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +0 -1
  559. package/dist/types/src/components/TemplateEditor/index.d.ts +0 -2
  560. package/dist/types/src/components/TemplateEditor/index.d.ts.map +0 -1
  561. package/dist/types/src/components/TemplateEditor/types.d.ts +0 -18
  562. package/dist/types/src/components/TemplateEditor/types.d.ts.map +0 -1
  563. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +0 -6
  564. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +0 -1
  565. package/dist/types/src/containers/BlueprintArticle/index.d.ts +0 -2
  566. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +0 -1
  567. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +0 -6
  568. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +0 -1
  569. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +0 -15
  570. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +0 -1
  571. package/dist/types/src/containers/RoutineArticle/index.d.ts +0 -2
  572. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +0 -1
  573. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +0 -6
  574. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +0 -1
  575. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +0 -21
  576. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +0 -1
  577. package/dist/types/src/containers/RoutineList/index.d.ts +0 -2
  578. package/dist/types/src/containers/RoutineList/index.d.ts.map +0 -1
  579. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +0 -66
  580. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +0 -1
  581. package/dist/types/src/hooks/useOnline.d.ts +0 -3
  582. package/dist/types/src/hooks/useOnline.d.ts.map +0 -1
  583. package/dist/types/src/templates/automation-templates.test.d.ts +0 -2
  584. package/dist/types/src/templates/automation-templates.test.d.ts.map +0 -1
  585. package/src/blueprints/assistant/index.ts +0 -5
  586. package/src/capabilities/blueprint-definition.ts +0 -65
  587. package/src/components/AssistantSettings/AssistantSettings.tsx +0 -43
  588. package/src/components/RoutineProperties/RoutineProperties.stories.tsx +0 -59
  589. package/src/components/RoutineProperties/RoutineProperties.tsx +0 -23
  590. package/src/components/RoutineProperties/index.ts +0 -5
  591. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +0 -95
  592. package/src/components/TemplateEditor/TemplateEditor.tsx +0 -80
  593. package/src/components/TemplateEditor/TemplateForm.stories.tsx +0 -76
  594. package/src/components/TemplateEditor/TemplateForm.tsx +0 -204
  595. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +0 -274
  596. package/src/components/TemplateEditor/extensions/index.ts +0 -6
  597. package/src/components/TemplateEditor/extensions/xml-extension.ts +0 -64
  598. package/src/components/TemplateEditor/index.ts +0 -5
  599. package/src/components/TemplateEditor/types.tsx +0 -28
  600. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +0 -29
  601. package/src/containers/BlueprintArticle/index.ts +0 -5
  602. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +0 -75
  603. package/src/containers/RoutineArticle/RoutineArticle.tsx +0 -109
  604. package/src/containers/RoutineArticle/index.ts +0 -5
  605. package/src/containers/RoutineList/RoutineList.stories.tsx +0 -130
  606. package/src/containers/RoutineList/RoutineList.tsx +0 -50
  607. package/src/containers/RoutineList/index.ts +0 -5
  608. package/src/hooks/useBlueprintRegistry.ts +0 -125
  609. package/src/hooks/useOnline.ts +0 -10
  610. package/src/templates/automation-templates.test.ts +0 -66
  611. package/src/testing/trace-timeline.node.conversations.json +0 -1
  612. /package/dist/lib/neutral/{ChatArticle-VNVZCDUR.mjs.map → ChatArticle-OO7GGEFW.mjs.map} +0 -0
  613. /package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs.map → edge-model-resolver-WDJWDZTT.mjs.map} +0 -0
  614. /package/dist/lib/neutral/{blueprints → extensions}/index.mjs.map +0 -0
  615. /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts +0 -0
  616. /package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts +0 -0
  617. /package/dist/types/src/{blueprints → skills}/index.d.ts +0 -0
  618. /package/src/{components → containers}/AssistantSettings/index.ts +0 -0
  619. /package/src/{blueprints → skills}/index.ts +0 -0
@@ -0,0 +1,107 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import React, { useEffect, useMemo, useState } from 'react';
6
+
7
+ import { Provider } from '@dxos/ai';
8
+ import { Capabilities } from '@dxos/app-framework';
9
+ import { useAtomCapability, useCapability, useOperationInvoker } from '@dxos/app-framework/ui';
10
+ import { LayoutOperation } from '@dxos/app-toolkit';
11
+ import { Event } from '@dxos/async';
12
+ import { type Space, useRegistry } from '@dxos/react-client/echo';
13
+ import { useTranslation } from '@dxos/react-ui';
14
+
15
+ import { type ChatEvent, ChatPrompt } from '#components';
16
+ import { useChatProcessor, useChatServices, usePresets } from '#hooks';
17
+ import { meta } from '#meta';
18
+ import { AssistantCapabilities, AssistantOperation, type ChatType } from '#types';
19
+
20
+ import { getChatPath } from '../../paths';
21
+
22
+ type SpaceScopedProps = {
23
+ space?: Space;
24
+ };
25
+
26
+ /**
27
+ * Home article pinned-bottom contributor: the assistant prompt. Backed by an ephemeral in-memory
28
+ * chat whose sole responsibility is to collect the user's text, context bindings, and preset
29
+ * choice, then on submit: persist the chat to the space, queue the text as a pending prompt, and
30
+ * navigate to it. AI generation runs in the opened chat view — the processor here exists only to
31
+ * back the context-binder UI.
32
+ */
33
+ export const SpaceHomePrompt = ({ space }: SpaceScopedProps) => {
34
+ const { t } = useTranslation(meta.profile.key);
35
+ const { invokePromise } = useOperationInvoker();
36
+
37
+ const registry = useRegistry();
38
+ const atomRegistry = useCapability(Capabilities.AtomRegistry);
39
+ const stateAtom = useCapability(AssistantCapabilities.State);
40
+ const runtime = useChatServices({ id: space?.id });
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;
45
+
46
+ // In-memory backing chat (not yet added to the space). `nonce` forces a fresh chat after submit.
47
+ const [chat, setChat] = useState<ChatType.Chat>();
48
+ const [nonce, setNonce] = useState(0);
49
+ useEffect(() => {
50
+ if (!space) {
51
+ setChat(undefined);
52
+ return;
53
+ }
54
+ let cancelled = false;
55
+ void invokePromise(AssistantOperation.CreateChat, { db: space.db, addToSpace: false }).then((result) => {
56
+ if (!cancelled) {
57
+ setChat(result.data?.object);
58
+ }
59
+ });
60
+ return () => {
61
+ cancelled = true;
62
+ };
63
+ }, [space, nonce, invokePromise]);
64
+
65
+ const processor = useChatProcessor({ space, chat, preset, runtime, registry });
66
+
67
+ const event = useMemo(() => new Event<ChatEvent>(), []);
68
+ useEffect(() => {
69
+ return event.on((ev) => {
70
+ if (ev.type !== 'submit') {
71
+ return;
72
+ }
73
+ const text = ev.text.trim();
74
+ if (!space || !chat || text.length === 0) {
75
+ return;
76
+ }
77
+
78
+ // Persist the in-memory chat, queue the prompt, and open the chat (which submits it).
79
+ space.db.add(chat);
80
+ const chatPath = getChatPath(space.db.spaceId, chat.id);
81
+ atomRegistry.update(stateAtom, (current) => ({
82
+ ...current,
83
+ pendingPrompts: { ...current.pendingPrompts, [chatPath]: text },
84
+ }));
85
+ void invokePromise(LayoutOperation.Open, { subject: [chatPath] });
86
+ setNonce((current) => current + 1);
87
+ });
88
+ }, [event, space, chat, atomRegistry, stateAtom, invokePromise]);
89
+
90
+ if (!processor || !chat || !space) {
91
+ return null;
92
+ }
93
+
94
+ return (
95
+ <ChatPrompt
96
+ {...presetProps}
97
+ outline
98
+ chat={chat}
99
+ db={space.db}
100
+ processor={processor}
101
+ event={event}
102
+ preset={preset?.id}
103
+ online={online}
104
+ placeholder={t('space-home.prompt.placeholder')}
105
+ />
106
+ );
107
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export { SpaceHomePrompt as default } from './SpaceHomePrompt';
@@ -0,0 +1,83 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import React, { useCallback } from 'react';
6
+
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { RoutineOperation } from '@dxos/plugin-routine/types';
9
+ import { type Space } from '@dxos/react-client/echo';
10
+ import { Card, IconButton, useTranslation } from '@dxos/react-ui';
11
+
12
+ import { useHomeSuggestions } from '#hooks';
13
+ import { meta } from '#meta';
14
+
15
+ type SpaceScopedProps = {
16
+ space?: Space;
17
+ };
18
+
19
+ /**
20
+ * Home content contributor: starter-prompt cards. Each card runs its prompt in a new chat via the
21
+ * assistant operation. Always renders (below the recent-objects masonry) so the Home page offers
22
+ * quick entry points regardless of whether recent objects exist.
23
+ */
24
+ export const SpaceHomeSuggestions = ({ space }: SpaceScopedProps) => {
25
+ const { t } = useTranslation(meta.profile.key);
26
+ const { invokePromise } = useOperationInvoker();
27
+ const suggestions = useHomeSuggestions(space);
28
+
29
+ const handleRunPrompt = useCallback(
30
+ (prompt: string) => {
31
+ if (!space) {
32
+ return;
33
+ }
34
+ void invokePromise(RoutineOperation.RunPromptInNewChat, { db: space.db, instructions: prompt });
35
+ },
36
+ [invokePromise, space],
37
+ );
38
+
39
+ if (!suggestions) {
40
+ return null;
41
+ }
42
+
43
+ return (
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>
82
+ );
83
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export { SpaceHomeSuggestions as default } from './SpaceHomeSuggestions';
@@ -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,23 +10,22 @@ 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
- import { Process, Trace } from '@dxos/compute';
17
- import { Filter, Query } from '@dxos/echo';
18
- import { FeedTraceSink } from '@dxos/functions-runtime';
16
+ import { Process } from '@dxos/compute';
19
17
  import { EID } from '@dxos/keys';
20
18
  import { type Space } from '@dxos/react-client/echo';
21
19
  import { ScrollContainer } from '@dxos/react-ui';
22
20
  import { composable, composableProps } from '@dxos/react-ui';
23
21
  import { useAttentionAttributes } from '@dxos/react-ui-attention';
24
- import { Timeline, type Commit } from '@dxos/react-ui-components';
22
+ import { type Commit, Timeline } from '@dxos/react-ui-components';
25
23
  import { Syntax } from '@dxos/react-ui-syntax-highlighter';
26
24
  import { mx } from '@dxos/ui-theme';
27
25
 
28
26
  import { ProcessTree, ProcessTreeProps } from '#components';
29
- import { buildExecutionGraph, type ExecutionGraph } from '#execution-graph';
27
+ import { type ExecutionGraph, buildExecutionGraph } from '#execution-graph';
28
+ import { getTraceMessagesAtom, useTraceMessages } from '#hooks';
30
29
  import { AssistantCapabilities } from '#types';
31
30
 
32
31
  export type TracePanelProps = AppSurface.SpaceArticleProps<Pick<ProcessTreeProps, 'onProcessTerminate'>>;
@@ -160,52 +159,29 @@ export const TracePanel = composable<HTMLDivElement, TracePanelProps>(
160
159
  const atomEmpty = Atom.make(() => [] as const);
161
160
 
162
161
  type UseExecutionGraphOptions = {
162
+ collapseCompletedSpans?: boolean;
163
163
  eventLimit?: number;
164
164
  };
165
165
 
166
- const useExecutionGraph = (space: Space, { eventLimit }: UseExecutionGraphOptions = {}): ExecutionGraph => {
166
+ const useExecutionGraph = (
167
+ space: Space,
168
+ { collapseCompletedSpans, eventLimit }: UseExecutionGraphOptions = {},
169
+ ): ExecutionGraph => {
167
170
  const monitor = useCapability(Capabilities.ProcessMonitor);
168
171
  const processesAtom = monitor?.processTreeAtom ?? atomEmpty;
169
172
 
170
173
  const atom = useMemo(
171
- () => getExecutionGraph(space, processesAtom, { eventLimit }),
172
- [space, processesAtom, eventLimit],
173
- );
174
-
175
- return useAtomValue(atom);
176
- };
177
-
178
- /**
179
- * Atom of the raw trace messages for a space — the exact `Trace.Message[]` fed into
180
- * `buildExecutionGraph`. Shared by the execution graph and the debug trace export.
181
- */
182
- const getTraceMessagesAtom = (space: Space): Atom.Atom<readonly Trace.Message[]> =>
183
- pipe(
184
- space.db.query(FeedTraceSink.query).atom,
185
- Atom.map(
186
- (feeds) =>
187
- // TODO(dmaretskyi): This should be possible in a single query with properly working limit(1) and feed > feed contents traversal.
188
- space.db.query(
189
- feeds.length > 0
190
- ? Query.type(Trace.Message).from(feeds[0])
191
- : (Query.select(Filter.nothing()) as Query.Query<never>),
192
- ).atom,
193
- ),
194
- (atom) => Atom.make((get) => get(get(atom))),
174
+ () => getExecutionGraph(space, processesAtom, { collapseCompletedSpans, eventLimit }),
175
+ [space, processesAtom, collapseCompletedSpans, eventLimit],
195
176
  );
196
177
 
197
- /**
198
- * Returns the raw trace messages for a space (used by the debug trace export).
199
- */
200
- const useTraceMessages = (space: Space): readonly Trace.Message[] => {
201
- const atom = useMemo(() => getTraceMessagesAtom(space), [space]);
202
178
  return useAtomValue(atom);
203
179
  };
204
180
 
205
181
  const getExecutionGraph = (
206
182
  space: Space,
207
183
  processesAtom: Atom.Atom<readonly Process.Info[]>,
208
- { eventLimit = 100 }: UseExecutionGraphOptions = {},
184
+ { collapseCompletedSpans = true, eventLimit = 100 }: UseExecutionGraphOptions = {},
209
185
  ): Atom.Atom<ExecutionGraph> => {
210
186
  const traceMessages = getTraceMessagesAtom(space);
211
187
 
@@ -226,6 +202,7 @@ const getExecutionGraph = (
226
202
  buildExecutionGraph({
227
203
  traceMessages: get(traceMessages),
228
204
  activeProcesses: get(activeProcesses),
205
+ collapseCompletedSpans,
229
206
  eventLimit,
230
207
  }),
231
208
  );
@@ -250,6 +227,7 @@ const ProcessTreeContainer = ({
250
227
  return (
251
228
  <ProcessTree
252
229
  processes={processesDeferred}
230
+ depth={3}
253
231
  onProcessSelect={onProcessSelect}
254
232
  onProcessTerminate={onProcessTerminate}
255
233
  />
@@ -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';
@@ -44,11 +45,14 @@ const getIconClassNames = (state: TriggerStatusState): string | undefined => {
44
45
  export type SpaceStatusProps = AppSurface.SpaceArticleProps;
45
46
 
46
47
  export const SpaceStatus = ({ space }: SpaceStatusProps) => {
47
- const { t } = useTranslation(meta.id);
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(() => {
@@ -115,7 +119,7 @@ const TriggerStatusPopover = ({
115
119
  currentFunctionName,
116
120
  lastInvocation, // TODO(burdon): Show.
117
121
  }: TriggerStatusPopoverProps) => {
118
- const { t } = useTranslation(meta.id);
122
+ const { t } = useTranslation(meta.profile.key);
119
123
 
120
124
  return (
121
125
  <div className='flex flex-col gap-2 p-2 w-[240px]'>
@@ -6,12 +6,13 @@ 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'));
15
+ export const SpaceHomePrompt: ComponentType<any> = lazy(() => import('./SpaceHomePrompt'));
16
+ export const SpaceHomeSuggestions: ComponentType<any> = lazy(() => import('./SpaceHomeSuggestions'));
16
17
  export const TracePanel: ComponentType<any> = lazy(() => import('./TracePanel'));
17
18
  export const TriggerStatus: ComponentType<any> = lazy(() => import('./TriggerStatus'));
@@ -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: