@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
@@ -5,13 +5,16 @@
5
5
  import * as Array from 'effect/Array';
6
6
  import * as Either from 'effect/Either';
7
7
  import { pipe } from 'effect/Function';
8
+ import * as Option from 'effect/Option';
8
9
  import * as Pipeable from 'effect/Pipeable';
9
10
  import * as Schema from 'effect/Schema';
10
11
  import * as Struct from 'effect/Struct';
11
12
 
12
13
  import { AgentRequestBegin, AgentRequestEnd, CompleteBlock } from '@dxos/assistant';
13
14
  import { Process, Trace } from '@dxos/compute';
15
+ import { Annotation } from '@dxos/echo';
14
16
  import { AGENT_PROCESS_KEY } from '@dxos/functions-runtime';
17
+ import { EID } from '@dxos/keys';
15
18
  import { LogLevel, log } from '@dxos/log';
16
19
  import { type Commit } from '@dxos/react-ui-components';
17
20
  import { type ContentBlock } from '@dxos/types';
@@ -23,6 +26,9 @@ import { ROOT_SPAN_ID, type Span, buildSpanTree, isSpanBeginEvent, isSpanEndEven
23
26
  */
24
27
  const MAIN_BRANCH = 'main';
25
28
 
29
+ /** Timeline tag that applies a shimmer message effect. */
30
+ const SHIMMER_EFFECT_TAG = 'effect:shimmer';
31
+
26
32
  const ICONS = {
27
33
  agentRequestBegin: {
28
34
  icon: 'ph--atom--regular',
@@ -85,6 +91,7 @@ const ICONS = {
85
91
  export interface BuildExecutionGraphParams {
86
92
  traceMessages: readonly Trace.Message[];
87
93
  activeProcesses?: readonly Process.Info[];
94
+ collapseCompletedSpans?: boolean;
88
95
  eventLimit?: number;
89
96
  }
90
97
 
@@ -112,11 +119,12 @@ export type ExecutionGraphDetailsMap = Record<string, Trace.FlatEvent | undefine
112
119
  export const buildExecutionGraph = ({
113
120
  traceMessages,
114
121
  activeProcesses = [],
122
+ collapseCompletedSpans = false,
115
123
  eventLimit = 500,
116
124
  }: BuildExecutionGraphParams): ExecutionGraph => {
117
125
  const spanTree = buildSpanTree(traceMessages, { eventLimit });
118
126
  const toolCallContext = buildToolCallContext(traceMessages);
119
- const built = spanTreeToCommits(spanTree, activeProcesses, toolCallContext);
127
+ const built = spanTreeToCommits(spanTree, activeProcesses, toolCallContext, collapseCompletedSpans);
120
128
  log('trace execution graph', {
121
129
  traceMessages: traceMessages.length,
122
130
  commits: built.commits.length,
@@ -282,7 +290,7 @@ const presentEvent = (event: Trace.FlatEvent, toolCallContext: ToolCallContext):
282
290
  return {
283
291
  icon: success ? ICONS.toolResultSuccess.icon : ICONS.toolResultError.icon,
284
292
  level: success ? ICONS.toolResultSuccess.level : ICONS.toolResultError.level,
285
- message: `${name} - ${success ? 'Success' : 'Error'}`,
293
+ message: `${name}${!success ? ' - Error' : ''}`,
286
294
  idSuffix: `toolResult:${event.data.block.toolCallId}`,
287
295
  };
288
296
  }
@@ -311,18 +319,184 @@ const presentEvent = (event: Trace.FlatEvent, toolCallContext: ToolCallContext):
311
319
  return {
312
320
  icon: event.data.icon ?? (success ? ICONS.operationEndSuccess.icon : ICONS.operationEndError.icon),
313
321
  level: success ? ICONS.operationEndSuccess.level : ICONS.operationEndError.level,
314
- message: `${event.data.name ?? event.data.key} - ${success ? 'Success' : 'Error'}`,
322
+ message: `${event.data.name ?? event.data.key}${!success ? ' - Error' : ''}`,
315
323
  idSuffix: `${event.data.key}:end`,
316
324
  };
317
325
  }
318
326
  return undefined;
319
327
  };
320
328
 
329
+ export type CollectProcessActivityOptions = {
330
+ /**
331
+ * When set, messages with a `conversationId` that disagrees are excluded.
332
+ * Messages without `conversationId` still match when their pid is in the subtree.
333
+ */
334
+ conversationId?: string;
335
+ eventLimit?: number;
336
+ };
337
+
338
+ /**
339
+ * Collects human-readable activity lines for a process subtree (root pid and descendants).
340
+ * Used to surface live sub-agent status in the task list.
341
+ */
342
+ export const collectProcessActivityLines = (
343
+ messages: readonly Trace.Message[],
344
+ rootPid: string,
345
+ options: CollectProcessActivityOptions = {},
346
+ ): string[] => {
347
+ const { conversationId, eventLimit = 50 } = options;
348
+ const descendantPids = collectDescendantPids(messages, rootPid);
349
+ const filtered = messages.filter((message) => {
350
+ const pid = message.meta.pid;
351
+ if (!pid || !descendantPids.has(pid)) {
352
+ return false;
353
+ }
354
+ const metaConvId = message.meta.conversation
355
+ ? EID.getEntityId(EID.parse(message.meta.conversation.uri))
356
+ : undefined;
357
+ if (conversationId && metaConvId !== undefined && metaConvId !== conversationId) {
358
+ return false;
359
+ }
360
+ return true;
361
+ });
362
+
363
+ const events = filtered
364
+ .flatMap((message) => Trace.flatten(message))
365
+ .sort((left, right) => left.timestamp - right.timestamp)
366
+ .slice(-eventLimit);
367
+
368
+ const toolCallContext = buildToolCallContext(filtered);
369
+ const lines: string[] = [];
370
+ for (const event of events) {
371
+ const presentation = presentEvent(event, toolCallContext);
372
+ if (presentation) {
373
+ lines.push(presentation.message);
374
+ }
375
+ }
376
+ return lines;
377
+ };
378
+
379
+ /**
380
+ * Derives a single in-flight status line from durable trace when ephemeral subscription
381
+ * is unavailable (e.g. between partial blocks or while a child operation is running).
382
+ */
383
+ export const deriveInFlightActivityLine = (
384
+ messages: readonly Trace.Message[],
385
+ rootPid: string,
386
+ options: CollectProcessActivityOptions = {},
387
+ ): string | undefined => {
388
+ const { conversationId, eventLimit = 50 } = options;
389
+ const descendantPids = collectDescendantPids(messages, rootPid);
390
+ const filtered = messages.filter((message) => {
391
+ const pid = message.meta.pid;
392
+ if (!pid || !descendantPids.has(pid)) {
393
+ return false;
394
+ }
395
+ const metaConvId = message.meta.conversation
396
+ ? EID.getEntityId(EID.parse(message.meta.conversation.uri))
397
+ : undefined;
398
+ if (conversationId && metaConvId !== undefined && metaConvId !== conversationId) {
399
+ return false;
400
+ }
401
+ return true;
402
+ });
403
+
404
+ const events = filtered
405
+ .flatMap((message) => Trace.flatten(message))
406
+ .sort((left, right) => left.timestamp - right.timestamp)
407
+ .slice(-eventLimit);
408
+
409
+ const openOperations = new Map<string, { name: string; timestamp: number }>();
410
+ let agentRequestOpen = false;
411
+ let lastLine: string | undefined;
412
+
413
+ for (const event of events) {
414
+ const pid = event.meta.pid ?? rootPid;
415
+ if (Trace.isOfType(Trace.OperationStart, event)) {
416
+ const key = `${pid}:${event.data.key}`;
417
+ const name = event.data.name ?? event.data.key;
418
+ openOperations.set(key, { name, timestamp: event.timestamp });
419
+ lastLine = `${name}...`;
420
+ continue;
421
+ }
422
+ if (Trace.isOfType(Trace.OperationEnd, event)) {
423
+ openOperations.delete(`${pid}:${event.data.key}`);
424
+ continue;
425
+ }
426
+ if (Trace.isOfType(AgentRequestBegin, event)) {
427
+ agentRequestOpen = true;
428
+ lastLine = 'Generating...';
429
+ continue;
430
+ }
431
+ if (Trace.isOfType(AgentRequestEnd, event)) {
432
+ agentRequestOpen = false;
433
+ }
434
+ }
435
+
436
+ if (agentRequestOpen) {
437
+ return 'Generating...';
438
+ }
439
+
440
+ const latestOperation = [...openOperations.values()].sort((left, right) => right.timestamp - left.timestamp)[0];
441
+ if (latestOperation) {
442
+ return `${latestOperation.name}...`;
443
+ }
444
+
445
+ return lastLine;
446
+ };
447
+
448
+ const collectDescendantPids = (messages: readonly Trace.Message[], rootPid: string): Set<string> => {
449
+ const pids = new Set([rootPid]);
450
+ let expanded = true;
451
+ while (expanded) {
452
+ expanded = false;
453
+ for (const message of messages) {
454
+ const pid = message.meta.pid;
455
+ const parentPid = message.meta.parentPid;
456
+ if (pid && parentPid && pids.has(parentPid) && !pids.has(pid)) {
457
+ pids.add(pid);
458
+ expanded = true;
459
+ }
460
+ }
461
+ }
462
+ return pids;
463
+ };
464
+
465
+ const isPendingToolCallEvent = (event: Trace.FlatEvent, toolCallContext: ToolCallContext): boolean => {
466
+ if (!Trace.isOfType(CompleteBlock, event)) {
467
+ return false;
468
+ }
469
+ if (event.data.block._tag !== 'toolCall') {
470
+ return false;
471
+ }
472
+ return !toolCallContext.resultByCallId.has(event.data.block.toolCallId);
473
+ };
474
+
475
+ /**
476
+ * Marks commits that represent work still in flight for Timeline shimmer styling.
477
+ */
478
+ const shouldShimmerInProgressCommit = (event: Trace.FlatEvent, toolCallContext: ToolCallContext): boolean =>
479
+ isPendingToolCallEvent(event, toolCallContext);
480
+
481
+ /**
482
+ * A span is completed when its last recorded event is a matching end boundary.
483
+ */
484
+ const isCompletedSpan = (span: Span): boolean => {
485
+ if (span.id === ROOT_SPAN_ID) {
486
+ return false;
487
+ }
488
+ const lastEvent = span.events[span.events.length - 1];
489
+ return lastEvent !== undefined && isSpanEndEvent(lastEvent);
490
+ };
491
+
321
492
  /**
322
493
  * A span is "collapsible" when it would otherwise render as an empty fork-and-merge:
323
494
  * exactly two events that form a begin/end pair and no child sub-spans. In that case
324
495
  * we emit a single commit for the end event on the parent branch.
325
496
  *
497
+ * When `collapseCompletedSpans` is enabled, any completed span collapses to that single
498
+ * end commit — middle events, child sub-spans, and the begin fork are all omitted.
499
+ *
326
500
  * A *pending* span (one whose end event has not yet been recorded) is never collapsed:
327
501
  * its trailing events should keep rendering as middle commits on the span's own branch
328
502
  * — never as a fake "end" commit on the parent branch.
@@ -331,22 +505,24 @@ const presentEvent = (event: Trace.FlatEvent, toolCallContext: ToolCallContext):
331
505
  * once they have completed: a span with no inner activity is collapsed regardless of where
332
506
  * it sits in the tree.
333
507
  */
334
- const isCollapsibleSpan = (span: Span, parent: Span | null): boolean => {
508
+ const isCollapsibleSpan = (span: Span, parent: Span | null, collapseCompletedSpans: boolean): boolean => {
335
509
  if (span.id === ROOT_SPAN_ID) {
336
510
  return false;
337
511
  }
338
- if (span.events.length !== 2) {
512
+ if (parent === null) {
339
513
  return false;
340
514
  }
341
- if (span.children.length > 0) {
342
- return false;
515
+ if (span.events.length === 2 && span.children.length === 0) {
516
+ const firstEvent = span.events[0];
517
+ const lastEvent = span.events[span.events.length - 1];
518
+ if (isSpanBeginEvent(firstEvent) && isSpanEndEvent(lastEvent)) {
519
+ return true;
520
+ }
343
521
  }
344
- const firstEvent = span.events[0];
345
- const lastEvent = span.events[span.events.length - 1];
346
- if (!isSpanBeginEvent(firstEvent) || !isSpanEndEvent(lastEvent)) {
347
- return false;
522
+ if (collapseCompletedSpans && isCompletedSpan(span)) {
523
+ return true;
348
524
  }
349
- return parent !== null;
525
+ return false;
350
526
  };
351
527
 
352
528
  /**
@@ -361,13 +537,15 @@ const isCollapsibleSpan = (span: Span, parent: Span | null): boolean => {
361
537
  * Collapsible spans (`isCollapsibleSpan`) emit only the end commit on the parent branch with
362
538
  * a single parent — a tidier rendering for sub-operations that have no inner detail.
363
539
  *
364
- * Events are processed in global chronological order so that sub-operations of a span interleave
365
- * naturally with the span's own middle events.
540
+ * Events are processed in categorical span-tree order: each span's begin events, its child
541
+ * subtrees (depth-first), then its remaining events. Active-process running rows are inserted
542
+ * at the end of each matching span block — not appended after the entire tree.
366
543
  */
367
544
  const spanTreeToCommits = (
368
545
  root: Span,
369
546
  activeProcesses: readonly Process.Info[],
370
547
  toolCallContext: ToolCallContext,
548
+ collapseCompletedSpans: boolean,
371
549
  ): { branches: string[]; commits: Commit[]; details: ExecutionGraphDetailsMap } => {
372
550
  const builder = new GraphBuilder();
373
551
  const details: ExecutionGraphDetailsMap = {};
@@ -387,6 +565,24 @@ const spanTreeToCommits = (
387
565
 
388
566
  const findParentSpan = (span: Span): Span | null => parentBySpan.get(span) ?? null;
389
567
 
568
+ const collapsedSpanIds = new Set<string>();
569
+ walkSpanTree(root, (span) => {
570
+ if (isCollapsibleSpan(span, findParentSpan(span), collapseCompletedSpans)) {
571
+ collapsedSpanIds.add(span.id);
572
+ }
573
+ });
574
+
575
+ const isUnderCollapsedAncestor = (span: Span): boolean => {
576
+ let ancestor = findParentSpan(span);
577
+ while (ancestor) {
578
+ if (collapsedSpanIds.has(ancestor.id)) {
579
+ return true;
580
+ }
581
+ ancestor = findParentSpan(ancestor);
582
+ }
583
+ return false;
584
+ };
585
+
390
586
  // The branch name for a span is its pid — multiple sequential spans of the same process
391
587
  // (e.g. successive agent requests in one session) share a branch so they reuse a single lane.
392
588
  const branchOf = (span: Span | null): string => {
@@ -396,6 +592,9 @@ const spanTreeToCommits = (
396
592
  return span.meta.pid ?? span.id;
397
593
  };
398
594
 
595
+ // Track the id of the begin commit for each non-collapsible span so the end commit can merge into it.
596
+ const beginCommitIdBySpan = new Map<string, string>();
597
+
399
598
  // Selector that returns "the most recent commit in this span's structural context".
400
599
  //
401
600
  // The walk is structural (pid/parentPid), not topological: at each ancestor, we prefer
@@ -421,29 +620,60 @@ const spanTreeToCommits = (
421
620
  );
422
621
  };
423
622
 
424
- // Flatten the tree into a chronological stream, recording each event's position within its span
425
- // so we can detect begin/end events.
426
- interface EventCursor {
427
- span: Span;
428
- event: Trace.FlatEvent;
429
- eventIndex: number;
430
- globalIndex: number;
431
- }
432
- const stream: EventCursor[] = [];
433
- walkSpanTree(root, (span) => {
434
- span.events.forEach((event, eventIndex) => {
435
- stream.push({ span, event, eventIndex, globalIndex: stream.length });
436
- });
437
- });
438
- stream.sort((a, b) => a.event.timestamp - b.event.timestamp || a.globalIndex - b.globalIndex);
623
+ const lastCommitIdBySpan = new Map<string, string>();
624
+ let globalIndex = 0;
625
+ const insertedRunningPids = new Set<string>();
626
+ const activeProcessByPid = new Map(activeProcesses.map((process) => [process.pid, process]));
439
627
 
440
- // Track the id of the begin commit for each non-collapsible span so the end commit can merge into it.
441
- const beginCommitIdBySpan = new Map<string, string>();
628
+ const emitRunningIndicator = (pid: Process.ID): void => {
629
+ if (insertedRunningPids.has(pid)) {
630
+ return;
631
+ }
442
632
 
443
- for (const { span, event, globalIndex } of stream) {
633
+ const process = activeProcessByPid.get(pid);
634
+ if (!process) {
635
+ return;
636
+ }
637
+
638
+ if (
639
+ process.key === AGENT_PROCESS_KEY &&
640
+ Option.isSome(Annotation.getDictionary(process.params.annotations, Process.TargetAnnotation)) &&
641
+ (process.state === Process.State.RUNNING || process.state === Process.State.HYBERNATING)
642
+ ) {
643
+ builder.addCommit({
644
+ id: `running:${process.pid}`,
645
+ branch: process.pid,
646
+ parents: builder.computeParents(
647
+ CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),
648
+ ),
649
+ icon: ICONS.agentRequestRunning.icon,
650
+ level: ICONS.agentRequestRunning.level,
651
+ message: 'Generating...',
652
+ timestamp: new Date(),
653
+ tags: [SHIMMER_EFFECT_TAG],
654
+ });
655
+ insertedRunningPids.add(pid);
656
+ } else if (process.state === Process.State.RUNNING && builder.hasBranch(process.pid)) {
657
+ builder.addCommit({
658
+ id: `running:${process.pid}`,
659
+ branch: process.pid,
660
+ parents: builder.computeParents(
661
+ CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),
662
+ ),
663
+ icon: ICONS.processRunning.icon,
664
+ level: ICONS.processRunning.level,
665
+ message: 'Running...',
666
+ timestamp: new Date(),
667
+ tags: [SHIMMER_EFFECT_TAG],
668
+ });
669
+ insertedRunningPids.add(pid);
670
+ }
671
+ };
672
+
673
+ const emitEventCommit = (span: Span, event: Trace.FlatEvent, eventIndex: number): void => {
444
674
  const presentation = presentEvent(event, toolCallContext);
445
675
  if (!presentation) {
446
- continue;
676
+ return;
447
677
  }
448
678
 
449
679
  // Classify based on event TYPE, not array index. A pending span's trailing
@@ -453,11 +683,16 @@ const spanTreeToCommits = (
453
683
  const isBeginEvent = isSpanBeginEvent(event);
454
684
  const isEndEvent = isSpanEndEvent(event);
455
685
  const parentSpan = findParentSpan(span);
456
- const collapsible = isCollapsibleSpan(span, parentSpan);
686
+ const collapsible = isCollapsibleSpan(span, parentSpan, collapseCompletedSpans);
457
687
 
458
- // Collapsed spans: skip the begin event entirely; only the end event renders.
459
- if (collapsible && isBeginEvent) {
460
- continue;
688
+ // Descendants of a collapsed span emit no commits — inner activity is folded into the ancestor end row.
689
+ if (isUnderCollapsedAncestor(span)) {
690
+ return;
691
+ }
692
+
693
+ // Collapsed spans: skip every event except the end commit.
694
+ if (collapsible && !isEndEvent) {
695
+ return;
461
696
  }
462
697
 
463
698
  const parentBranch = branchOf(parentSpan);
@@ -471,7 +706,7 @@ const spanTreeToCommits = (
471
706
  // mid-stream would flash a throwaway lane.
472
707
  const ownPid = span.meta.pid;
473
708
  const parentPid = parentSpan?.meta.pid;
474
- const spanHasMiddle = span.events.some((event) => !isSpanBeginEvent(event) && !isSpanEndEvent(event));
709
+ const spanHasMiddle = span.events.some((spanEvent) => !isSpanBeginEvent(spanEvent) && !isSpanEndEvent(spanEvent));
475
710
  const isProcessBoundary = ownPid != null && parentPid != null && ownPid !== parentPid && spanHasMiddle;
476
711
 
477
712
  let branch: string;
@@ -521,7 +756,9 @@ const spanTreeToCommits = (
521
756
  parents = builder.computeParents(lastInSpanContext(span));
522
757
  }
523
758
 
524
- const commitId = formatCommitId(span, globalIndex, presentation.idSuffix);
759
+ const commitIndex = globalIndex++;
760
+ const commitId = formatCommitId(span, commitIndex, presentation.idSuffix);
761
+ const shimmer = shouldShimmerInProgressCommit(event, toolCallContext);
525
762
  const commit: Commit = {
526
763
  id: commitId,
527
764
  branch,
@@ -530,47 +767,65 @@ const spanTreeToCommits = (
530
767
  icon: presentation.icon,
531
768
  level: presentation.level,
532
769
  message: presentation.message,
770
+ ...(shimmer && { tags: [SHIMMER_EFFECT_TAG] }),
533
771
  };
534
772
  builder.addCommit(commit);
535
773
  details[commitId] = event;
774
+ lastCommitIdBySpan.set(span.id, commitId);
536
775
 
537
776
  // Record begin commit so a later end event can merge into it.
538
777
  if (isBeginEvent && !collapsible && span.id !== ROOT_SPAN_ID) {
539
778
  beginCommitIdBySpan.set(span.id, commitId);
540
779
  }
541
- }
780
+ };
542
781
 
543
- // Append "running" indicators for processes that are still active.
544
- for (const process of activeProcesses) {
545
- if (
546
- process.key === AGENT_PROCESS_KEY &&
547
- process.params.target &&
548
- (process.state === Process.State.RUNNING || process.state === Process.State.HYBERNATING)
549
- ) {
550
- builder.addCommit({
551
- id: `running:${process.pid}`,
552
- branch: process.pid,
553
- parents: builder.computeParents(
554
- CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),
555
- ),
556
- icon: ICONS.agentRequestRunning.icon,
557
- level: ICONS.agentRequestRunning.level,
558
- message: 'Generating...',
559
- timestamp: new Date(),
560
- });
561
- } else if (process.state === Process.State.RUNNING && builder.hasBranch(process.pid)) {
562
- builder.addCommit({
563
- id: `running:${process.pid}`,
564
- branch: process.pid,
565
- parents: builder.computeParents(
566
- CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),
567
- ),
568
- icon: ICONS.processRunning.icon,
569
- level: ICONS.processRunning.level,
570
- message: 'Running...',
571
- timestamp: new Date(),
572
- });
782
+ const finishSpan = (span: Span): void => {
783
+ const pid = span.meta.pid;
784
+ if (pid) {
785
+ // Trace.Meta.pid is plain string (avoids circular dep); construct brand here.
786
+ emitRunningIndicator(Process.ID.make(pid));
787
+ }
788
+
789
+ if (span.id === ROOT_SPAN_ID || isCompletedSpan(span)) {
790
+ return;
791
+ }
792
+
793
+ if (pid && insertedRunningPids.has(pid)) {
794
+ return;
795
+ }
796
+
797
+ const lastCommitId = lastCommitIdBySpan.get(span.id);
798
+ if (lastCommitId) {
799
+ builder.addTag(lastCommitId, SHIMMER_EFFECT_TAG);
800
+ }
801
+ };
802
+
803
+ const emitSpanCommits = (span: Span): void => {
804
+ for (let eventIndex = 0; eventIndex < span.events.length; eventIndex += 1) {
805
+ const event = span.events[eventIndex]!;
806
+ if (isSpanBeginEvent(event)) {
807
+ emitEventCommit(span, event, eventIndex);
808
+ }
809
+ }
810
+
811
+ for (const child of span.children) {
812
+ emitSpanCommits(child);
813
+ }
814
+
815
+ for (let eventIndex = 0; eventIndex < span.events.length; eventIndex += 1) {
816
+ const event = span.events[eventIndex]!;
817
+ if (!isSpanBeginEvent(event)) {
818
+ emitEventCommit(span, event, eventIndex);
819
+ }
573
820
  }
821
+
822
+ finishSpan(span);
823
+ };
824
+
825
+ emitSpanCommits(root);
826
+
827
+ for (const process of activeProcesses) {
828
+ emitRunningIndicator(process.pid);
574
829
  }
575
830
 
576
831
  const { commits, branches } = builder.build();
@@ -740,6 +995,18 @@ class GraphBuilder {
740
995
  this.#commits.push(commit);
741
996
  }
742
997
 
998
+ addTag(commitId: string, tag: string) {
999
+ const index = this.#commits.findIndex((commit) => commit.id === commitId);
1000
+ if (index < 0) {
1001
+ return;
1002
+ }
1003
+ const commit = this.#commits[index]!;
1004
+ if (commit.tags?.includes(tag)) {
1005
+ return;
1006
+ }
1007
+ this.#commits[index] = { ...commit, tags: [...(commit.tags ?? []), tag] };
1008
+ }
1009
+
743
1010
  /**
744
1011
  * Computes parents — picks first matching commit's id.
745
1012
  */
@@ -3,22 +3,32 @@
3
3
  //
4
4
 
5
5
  export {
6
- CommitSelector,
7
- buildExecutionGraph,
8
6
  type BuildExecutionGraphParams,
7
+ type CollectProcessActivityOptions,
8
+ CommitSelector,
9
9
  type ExecutionGraph,
10
10
  type ExecutionGraphDetailsMap,
11
+ buildExecutionGraph,
12
+ collectProcessActivityLines,
13
+ deriveInFlightActivityLine,
11
14
  } from './execution-graph';
15
+ export {
16
+ type EphemeralStatusUpdate,
17
+ estimateTokenCount,
18
+ formatPendingBlockStatus,
19
+ pendingStatusFromEphemeralMessage,
20
+ resolveEphemeralStatusUpdate,
21
+ } from './pending-block-status';
12
22
  export {
13
23
  BEGIN_EVENT_TYPES,
24
+ type BuildSpanTreeOptions,
14
25
  END_EVENT_TYPES,
15
26
  ROOT_SPAN_ID,
27
+ type Span,
28
+ type SpanMeta,
16
29
  buildSpanTree,
17
30
  flattenSpanTree,
18
31
  isSpanBeginEvent,
19
32
  isSpanEndEvent,
20
33
  walkSpanTree,
21
- type BuildSpanTreeOptions,
22
- type Span,
23
- type SpanMeta,
24
34
  } from './span-tree';