@dxos/plugin-assistant 0.8.4-main.fcfe5033a5 → 0.8.4-staging.60fe92afc8

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 (751) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +439 -0
  3. package/README.md +1 -1
  4. package/dist/lib/neutral/AgentArticle-K7XM46OQ.mjs +160 -0
  5. package/dist/lib/neutral/AgentArticle-K7XM46OQ.mjs.map +7 -0
  6. package/dist/lib/neutral/AgentProperties-LFTEYJ54.mjs +40 -0
  7. package/dist/lib/neutral/AgentProperties-LFTEYJ54.mjs.map +7 -0
  8. package/dist/lib/neutral/AssistantPlugin.mjs +10 -0
  9. package/dist/lib/neutral/AssistantPlugin.node.mjs +72 -0
  10. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +7 -0
  11. package/dist/lib/neutral/AssistantPlugin.workerd.mjs +40 -0
  12. package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +7 -0
  13. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +40 -0
  14. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs.map +7 -0
  15. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs +27 -0
  16. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs.map +7 -0
  17. package/dist/lib/neutral/ChatArticle-VNVZCDUR.mjs +8 -0
  18. package/dist/lib/neutral/ChatCompanion-LBUHYWQG.mjs +128 -0
  19. package/dist/lib/neutral/ChatCompanion-LBUHYWQG.mjs.map +7 -0
  20. package/dist/lib/neutral/ChatDialog-DCA6FLOV.mjs +73 -0
  21. package/dist/lib/neutral/ChatDialog-DCA6FLOV.mjs.map +7 -0
  22. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs +28 -0
  23. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +7 -0
  24. package/dist/lib/neutral/RoutineArticle-5NYXHRG6.mjs +119 -0
  25. package/dist/lib/neutral/RoutineArticle-5NYXHRG6.mjs.map +7 -0
  26. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs +48 -0
  27. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs.map +7 -0
  28. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +17 -0
  29. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +7 -0
  30. package/dist/lib/neutral/TracePanel-KTZJ6JNR.mjs +167 -0
  31. package/dist/lib/neutral/TracePanel-KTZJ6JNR.mjs.map +7 -0
  32. package/dist/lib/neutral/TriggerStatus-X7Y5JFZJ.mjs +93 -0
  33. package/dist/lib/neutral/TriggerStatus-X7Y5JFZJ.mjs.map +7 -0
  34. package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs +24 -0
  35. package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs.map +7 -0
  36. package/dist/lib/neutral/agent-service-WCAP5MLI.mjs +32 -0
  37. package/dist/lib/neutral/agent-service-WCAP5MLI.mjs.map +7 -0
  38. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs +42 -0
  39. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs.map +7 -0
  40. package/dist/lib/neutral/ai-service-AADUIKBY.mjs +40 -0
  41. package/dist/lib/neutral/ai-service-AADUIKBY.mjs.map +7 -0
  42. package/dist/lib/neutral/app-graph-builder-WUFHQH3Y.mjs +232 -0
  43. package/dist/lib/neutral/app-graph-builder-WUFHQH3Y.mjs.map +7 -0
  44. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs +115 -0
  45. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs.map +7 -0
  46. package/dist/lib/neutral/blueprint-definition-MH2QLYQH.mjs +39 -0
  47. package/dist/lib/neutral/blueprint-definition-MH2QLYQH.mjs.map +7 -0
  48. package/dist/lib/{browser → neutral}/blueprints/index.mjs +1 -1
  49. package/dist/lib/neutral/capabilities/index.mjs +45 -0
  50. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  51. package/dist/lib/{browser/chunk-EZRS3J25.mjs → neutral/chunk-5H6UJHLF.mjs} +3 -3
  52. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +7 -0
  53. package/dist/lib/neutral/chunk-HLANPOBA.mjs +10 -0
  54. package/dist/lib/neutral/chunk-HLANPOBA.mjs.map +7 -0
  55. package/dist/lib/neutral/chunk-KLYLW4WH.mjs +9 -0
  56. package/dist/lib/neutral/chunk-KLYLW4WH.mjs.map +7 -0
  57. package/dist/lib/neutral/chunk-QAZMOFPI.mjs +130 -0
  58. package/dist/lib/neutral/chunk-QAZMOFPI.mjs.map +7 -0
  59. package/dist/lib/neutral/chunk-RKVVK3R3.mjs +110 -0
  60. package/dist/lib/neutral/chunk-RKVVK3R3.mjs.map +7 -0
  61. package/dist/lib/neutral/chunk-SMFJD7BP.mjs +8 -0
  62. package/dist/lib/neutral/chunk-SMFJD7BP.mjs.map +7 -0
  63. package/dist/lib/neutral/chunk-VTK5R4H3.mjs +9 -0
  64. package/dist/lib/neutral/chunk-VTK5R4H3.mjs.map +7 -0
  65. package/dist/lib/neutral/chunk-XYHPOGTK.mjs +43 -0
  66. package/dist/lib/neutral/chunk-XYHPOGTK.mjs.map +7 -0
  67. package/dist/lib/neutral/chunk-YXRGZYYH.mjs +392 -0
  68. package/dist/lib/neutral/chunk-YXRGZYYH.mjs.map +7 -0
  69. package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs +120 -0
  70. package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs.map +7 -0
  71. package/dist/lib/neutral/components/index.mjs +2410 -0
  72. package/dist/lib/neutral/components/index.mjs.map +7 -0
  73. package/dist/lib/neutral/containers/index.mjs +29 -0
  74. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  75. package/dist/lib/neutral/create-chat-SGGQ6HVN.mjs +54 -0
  76. package/dist/lib/neutral/create-chat-SGGQ6HVN.mjs.map +7 -0
  77. package/dist/lib/neutral/create-object-U2SOFZLR.mjs +92 -0
  78. package/dist/lib/neutral/create-object-U2SOFZLR.mjs.map +7 -0
  79. package/dist/lib/neutral/edge-model-resolver-BBVOJBGJ.mjs +55 -0
  80. package/dist/lib/neutral/edge-model-resolver-BBVOJBGJ.mjs.map +7 -0
  81. package/dist/lib/{browser/ensure-companion-chat-ZEZA34MZ.mjs → neutral/ensure-companion-chat-AMOF3C66.mjs} +14 -21
  82. package/dist/lib/neutral/ensure-companion-chat-AMOF3C66.mjs.map +7 -0
  83. package/dist/lib/neutral/execution-graph/index.mjs +703 -0
  84. package/dist/lib/neutral/execution-graph/index.mjs.map +7 -0
  85. package/dist/lib/neutral/fork-chat-34KEF4ZJ.mjs +95 -0
  86. package/dist/lib/neutral/fork-chat-34KEF4ZJ.mjs.map +7 -0
  87. package/dist/lib/neutral/hooks/index.mjs +992 -0
  88. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  89. package/dist/lib/neutral/index.mjs +38 -0
  90. package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs +71 -0
  91. package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +7 -0
  92. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs +24 -0
  93. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +7 -0
  94. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs +110 -0
  95. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs.map +7 -0
  96. package/dist/lib/neutral/meta.json +1 -0
  97. package/dist/lib/neutral/meta.mjs +12 -0
  98. package/dist/lib/neutral/migrations-7DEMVBOG.mjs +28 -0
  99. package/dist/lib/neutral/migrations-7DEMVBOG.mjs.map +7 -0
  100. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs +13 -0
  101. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs.map +7 -0
  102. package/dist/lib/neutral/operations/index.mjs +8 -0
  103. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  104. package/dist/lib/neutral/plugin.mjs +16 -0
  105. package/dist/lib/neutral/plugin.mjs.map +7 -0
  106. package/dist/lib/neutral/react-surface-XRTBW5OJ.mjs +174 -0
  107. package/dist/lib/neutral/react-surface-XRTBW5OJ.mjs.map +7 -0
  108. package/dist/lib/{browser/resolve-navigation-targets-NZOD66NY.mjs → neutral/resolve-navigation-targets-ZHIMMH7L.mjs} +6 -6
  109. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +7 -0
  110. package/dist/lib/{browser/run-prompt-in-new-chat-THLK5YQC.mjs → neutral/run-prompt-in-new-chat-D5IIE2C7.mjs} +22 -56
  111. package/dist/lib/neutral/run-prompt-in-new-chat-D5IIE2C7.mjs.map +7 -0
  112. package/dist/lib/{browser/set-current-chat-LRS3VFSH.mjs → neutral/set-current-chat-VWBPSIMZ.mjs} +7 -13
  113. package/dist/lib/neutral/set-current-chat-VWBPSIMZ.mjs.map +7 -0
  114. package/dist/lib/neutral/settings-W4BLWQ53.mjs +28 -0
  115. package/dist/lib/neutral/settings-W4BLWQ53.mjs.map +7 -0
  116. package/dist/lib/neutral/state-H3G7QCU6.mjs +28 -0
  117. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +7 -0
  118. package/dist/lib/neutral/testing.mjs +8 -0
  119. package/dist/lib/neutral/testing.mjs.map +7 -0
  120. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs +21 -0
  121. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs.map +7 -0
  122. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs +14 -0
  123. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs.map +7 -0
  124. package/dist/lib/neutral/translations.mjs +179 -0
  125. package/dist/lib/neutral/translations.mjs.map +7 -0
  126. package/dist/lib/neutral/types/index.mjs +20 -0
  127. package/dist/lib/neutral/types/index.mjs.map +7 -0
  128. package/dist/lib/{browser/update-chat-name-3Y36KFAS.mjs → neutral/update-chat-name-Y7JWIP64.mjs} +26 -36
  129. package/dist/lib/neutral/update-chat-name-Y7JWIP64.mjs.map +7 -0
  130. package/dist/types/src/AssistantPlugin.d.ts +3 -1
  131. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  132. package/dist/types/src/AssistantPlugin.node.d.ts +5 -0
  133. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -0
  134. package/dist/types/src/AssistantPlugin.test.d.ts +2 -0
  135. package/dist/types/src/AssistantPlugin.test.d.ts.map +1 -0
  136. package/dist/types/src/AssistantPlugin.workerd.d.ts +4 -0
  137. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -0
  138. package/dist/types/src/blueprints/assistant/blueprint.d.ts +2 -2
  139. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -1
  140. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +2 -0
  141. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +1 -0
  142. package/dist/types/src/capabilities/agent-hydrator.d.ts +5 -0
  143. package/dist/types/src/capabilities/agent-hydrator.d.ts.map +1 -0
  144. package/dist/types/src/capabilities/agent-service.d.ts +6 -0
  145. package/dist/types/src/capabilities/agent-service.d.ts.map +1 -0
  146. package/dist/types/src/capabilities/ai-context.d.ts +6 -0
  147. package/dist/types/src/capabilities/ai-context.d.ts.map +1 -0
  148. package/dist/types/src/capabilities/ai-service.d.ts +2 -2
  149. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  150. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -1
  151. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  152. package/dist/types/src/capabilities/automation-templates.d.ts +6 -0
  153. package/dist/types/src/capabilities/automation-templates.d.ts.map +1 -0
  154. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  155. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
  156. package/dist/types/src/capabilities/create-object.d.ts +31 -0
  157. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  158. package/dist/types/src/capabilities/edge-model-resolver.d.ts +1 -1
  159. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  160. package/dist/types/src/capabilities/index.d.ts +36 -3
  161. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  162. package/dist/types/src/capabilities/integration-provider.d.ts +5 -0
  163. package/dist/types/src/capabilities/integration-provider.d.ts.map +1 -0
  164. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  165. package/dist/types/src/capabilities/{markdown.d.ts → markdown-extension.d.ts} +1 -1
  166. package/dist/types/src/capabilities/markdown-extension.d.ts.map +1 -0
  167. package/dist/types/src/capabilities/migrations.d.ts +2 -1
  168. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  169. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  170. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  171. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  172. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  173. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  174. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  175. package/dist/types/src/components/AgentProperties/AgentProperties.d.ts +7 -0
  176. package/dist/types/src/components/AgentProperties/AgentProperties.d.ts.map +1 -0
  177. package/dist/types/src/{containers → components}/AgentProperties/AgentProperties.stories.d.ts +1 -2
  178. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -0
  179. package/dist/types/src/components/AgentProperties/index.d.ts +2 -0
  180. package/dist/types/src/components/AgentProperties/index.d.ts.map +1 -0
  181. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +1 -1
  182. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  183. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/Chat/Chat.d.ts +44 -42
  185. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  186. package/dist/types/src/components/Chat/context.d.ts +29 -0
  187. package/dist/types/src/components/Chat/context.d.ts.map +1 -0
  188. package/dist/types/src/components/Chat/events.d.ts +3 -0
  189. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  190. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +1 -1
  191. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  192. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts +12 -0
  193. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts.map +1 -0
  194. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +10 -14
  195. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  196. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +1 -1
  197. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -1
  198. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts +2 -9
  199. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  200. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +27 -0
  201. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -0
  202. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +2 -2
  203. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  204. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts +20 -0
  205. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts.map +1 -0
  206. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +1 -1
  207. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  208. package/dist/types/src/components/ChatPrompt/index.d.ts +3 -0
  209. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  210. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts +14 -0
  211. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -0
  212. package/dist/types/src/components/ChatThread/ChatThread.d.ts +6 -3
  213. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  214. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +5 -5
  215. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  216. package/dist/types/src/components/ChatThread/Link.d.ts +2 -2
  217. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  218. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +8 -1
  219. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -1
  220. package/dist/types/src/components/ChatThread/registry.d.ts +18 -0
  221. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  222. package/dist/types/src/components/ChatThread/sync.d.ts +42 -16
  223. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  224. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -1
  225. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +4 -4
  226. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -1
  227. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -1
  228. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -1
  229. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -1
  230. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -1
  231. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -1
  232. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +2 -15
  233. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -1
  234. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -1
  235. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -1
  236. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -1
  237. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -1
  238. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +5 -0
  239. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -0
  240. package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -2
  241. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
  242. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +4 -3
  243. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  244. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +0 -1
  245. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -1
  246. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +7 -0
  247. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +1 -0
  248. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +15 -0
  249. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +1 -0
  250. package/dist/types/src/components/RoutineProperties/index.d.ts +2 -0
  251. package/dist/types/src/components/RoutineProperties/index.d.ts.map +1 -0
  252. package/dist/types/src/components/TaskList/TaskList.d.ts +10 -0
  253. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -0
  254. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +16 -0
  255. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -0
  256. package/dist/types/src/components/TaskList/index.d.ts +2 -0
  257. package/dist/types/src/components/TaskList/index.d.ts.map +1 -0
  258. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +5 -3
  259. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  260. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  261. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +4 -5
  262. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  263. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +1 -1
  264. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  265. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -1
  266. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -1
  267. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +4 -4
  268. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  269. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -3
  270. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  271. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  272. package/dist/types/src/components/index.d.ts +4 -0
  273. package/dist/types/src/components/index.d.ts.map +1 -1
  274. package/dist/types/src/constants.d.ts +5 -0
  275. package/dist/types/src/constants.d.ts.map +1 -0
  276. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -1
  277. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +0 -2
  278. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
  279. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -1
  280. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +1 -1
  281. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -1
  282. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +25 -0
  283. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -0
  284. package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts +15 -0
  285. package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts.map +1 -0
  286. package/dist/types/src/containers/ChatArticle/index.d.ts +2 -0
  287. package/dist/types/src/containers/ChatArticle/index.d.ts.map +1 -0
  288. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +11 -3
  289. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  290. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  291. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts +6 -0
  292. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -0
  293. package/dist/types/src/containers/PlanArticle/index.d.ts +2 -0
  294. package/dist/types/src/containers/PlanArticle/index.d.ts.map +1 -0
  295. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +6 -0
  296. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
  297. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +15 -0
  298. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +1 -0
  299. package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
  300. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +1 -0
  301. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +6 -0
  302. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +1 -0
  303. package/dist/types/src/containers/{PromptList/PromptList.stories.d.ts → RoutineList/RoutineList.stories.d.ts} +1 -1
  304. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +1 -0
  305. package/dist/types/src/containers/RoutineList/index.d.ts +2 -0
  306. package/dist/types/src/containers/RoutineList/index.d.ts.map +1 -0
  307. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +4 -5
  308. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -1
  309. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts +4 -3
  310. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
  311. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +6 -6
  312. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -1
  313. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -1
  314. package/dist/types/src/containers/TracePanel/testing/index.d.ts +3 -0
  315. package/dist/types/src/containers/TracePanel/testing/index.d.ts.map +1 -0
  316. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +14 -0
  317. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -0
  318. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts +12 -0
  319. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts.map +1 -0
  320. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +3 -2
  321. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  322. package/dist/types/src/containers/TriggerStatus/index.d.ts +1 -1
  323. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -1
  324. package/dist/types/src/containers/index.d.ts +6 -5
  325. package/dist/types/src/containers/index.d.ts.map +1 -1
  326. package/dist/types/src/execution-graph/execution-graph.d.ts +108 -0
  327. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -0
  328. package/dist/types/src/execution-graph/execution-graph.test.d.ts +2 -0
  329. package/dist/types/src/execution-graph/execution-graph.test.d.ts.map +1 -0
  330. package/dist/types/src/execution-graph/index.d.ts +3 -0
  331. package/dist/types/src/execution-graph/index.d.ts.map +1 -0
  332. package/dist/types/src/execution-graph/remote-snapshot.test.d.ts +2 -0
  333. package/dist/types/src/execution-graph/remote-snapshot.test.d.ts.map +1 -0
  334. package/dist/types/src/execution-graph/span-tree.d.ts +76 -0
  335. package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -0
  336. package/dist/types/src/execution-graph/span-tree.test.d.ts +2 -0
  337. package/dist/types/src/execution-graph/span-tree.test.d.ts.map +1 -0
  338. package/dist/types/src/execution-graph/sub-agent-delegation.test.d.ts +2 -0
  339. package/dist/types/src/execution-graph/sub-agent-delegation.test.d.ts.map +1 -0
  340. package/dist/types/src/execution-graph/testing/collect-trace-events.d.ts +40 -0
  341. package/dist/types/src/execution-graph/testing/collect-trace-events.d.ts.map +1 -0
  342. package/dist/types/src/execution-graph/testing/index.d.ts +2 -0
  343. package/dist/types/src/execution-graph/testing/index.d.ts.map +1 -0
  344. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
  345. package/dist/types/src/feed-logger.d.ts +13 -0
  346. package/dist/types/src/feed-logger.d.ts.map +1 -0
  347. package/dist/types/src/functions/services.test.d.ts +2 -0
  348. package/dist/types/src/functions/services.test.d.ts.map +1 -0
  349. package/dist/types/src/hooks/index.d.ts +3 -0
  350. package/dist/types/src/hooks/index.d.ts.map +1 -1
  351. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +56 -15
  352. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  353. package/dist/types/src/hooks/useChatKeymap.d.ts +12 -0
  354. package/dist/types/src/hooks/useChatKeymap.d.ts.map +1 -0
  355. package/dist/types/src/hooks/useChatProcessor.d.ts +5 -5
  356. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  357. package/dist/types/src/hooks/useChatServices.d.ts +7 -3
  358. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  359. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
  360. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  361. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  362. package/dist/types/src/hooks/useContextObjects.d.ts +5 -4
  363. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  364. package/dist/types/src/hooks/useDebug.d.ts +10 -0
  365. package/dist/types/src/hooks/useDebug.d.ts.map +1 -0
  366. package/dist/types/src/hooks/useFilteredTypes.d.ts +1 -1
  367. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
  368. package/dist/types/src/hooks/useFlush.d.ts +1 -1
  369. package/dist/types/src/hooks/useFlush.d.ts.map +1 -1
  370. package/dist/types/src/hooks/usePresets.d.ts +2 -2
  371. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  372. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  373. package/dist/types/src/index.d.ts +1 -4
  374. package/dist/types/src/index.d.ts.map +1 -1
  375. package/dist/types/src/meta.d.ts +3 -2
  376. package/dist/types/src/meta.d.ts.map +1 -1
  377. package/dist/types/src/operations/create-chat.d.ts +3 -3
  378. package/dist/types/src/operations/create-chat.d.ts.map +1 -1
  379. package/dist/types/src/operations/ensure-companion-chat.d.ts +3 -3
  380. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -1
  381. package/dist/types/src/operations/fork-chat.d.ts +5 -0
  382. package/dist/types/src/operations/fork-chat.d.ts.map +1 -0
  383. package/dist/types/src/operations/index.d.ts +1 -2
  384. package/dist/types/src/operations/index.d.ts.map +1 -1
  385. package/dist/types/src/operations/prompt.node.test.d.ts +2 -0
  386. package/dist/types/src/operations/prompt.node.test.d.ts.map +1 -0
  387. package/dist/types/src/operations/resolve-navigation-targets.d.ts +4 -2
  388. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
  389. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +3 -3
  390. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
  391. package/dist/types/src/operations/set-current-chat.d.ts +3 -3
  392. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -1
  393. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts +5 -0
  394. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts.map +1 -0
  395. package/dist/types/src/operations/update-chat-name.d.ts +3 -3
  396. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -1
  397. package/dist/types/src/paths.d.ts +3 -0
  398. package/dist/types/src/paths.d.ts.map +1 -0
  399. package/dist/types/src/plugin.d.ts +4 -0
  400. package/dist/types/src/plugin.d.ts.map +1 -0
  401. package/dist/types/src/processor/presets.d.ts.map +1 -1
  402. package/dist/types/src/processor/processor.d.ts +263 -26
  403. package/dist/types/src/processor/processor.d.ts.map +1 -1
  404. package/dist/types/src/processor/processor.node.test.d.ts +2 -0
  405. package/dist/types/src/processor/processor.node.test.d.ts.map +1 -0
  406. package/dist/types/src/templates/automation-templates.test.d.ts +2 -0
  407. package/dist/types/src/templates/automation-templates.test.d.ts.map +1 -0
  408. package/dist/types/src/templates/daily-digest.d.ts +3 -0
  409. package/dist/types/src/templates/daily-digest.d.ts.map +1 -0
  410. package/dist/types/src/templates/index.d.ts +4 -0
  411. package/dist/types/src/templates/index.d.ts.map +1 -0
  412. package/dist/types/src/templates/research-brief.d.ts +3 -0
  413. package/dist/types/src/templates/research-brief.d.ts.map +1 -0
  414. package/dist/types/src/templates/scaffold.d.ts +17 -0
  415. package/dist/types/src/templates/scaffold.d.ts.map +1 -0
  416. package/dist/types/src/testing/index.d.ts +2 -0
  417. package/dist/types/src/testing/index.d.ts.map +1 -1
  418. package/dist/types/src/testing/snapshot.d.ts +21 -0
  419. package/dist/types/src/testing/snapshot.d.ts.map +1 -0
  420. package/dist/types/src/testing/test-generator.d.ts +2 -3
  421. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  422. package/dist/types/src/testing/test-generator.test.d.ts +2 -0
  423. package/dist/types/src/testing/test-generator.test.d.ts.map +1 -0
  424. package/dist/types/src/testing/test-sequence.d.ts +10 -3
  425. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  426. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  427. package/dist/types/src/testing/test-trace.d.ts +5 -0
  428. package/dist/types/src/testing/test-trace.d.ts.map +1 -0
  429. package/dist/types/src/testing/trace-timeline.node.test.d.ts +2 -0
  430. package/dist/types/src/testing/trace-timeline.node.test.d.ts.map +1 -0
  431. package/dist/types/src/testing.d.ts +2 -0
  432. package/dist/types/src/testing.d.ts.map +1 -0
  433. package/dist/types/src/translations.d.ts.map +1 -1
  434. package/dist/types/src/types/Assistant.d.ts +25 -8
  435. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  436. package/dist/types/src/types/AssistantCapabilities.d.ts +30 -0
  437. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -0
  438. package/dist/types/src/types/AssistantEvents.d.ts +3 -0
  439. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -0
  440. package/dist/types/src/types/AssistantOperation.d.ts +153 -0
  441. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -0
  442. package/dist/types/src/types/Settings.d.ts +21 -5
  443. package/dist/types/src/types/Settings.d.ts.map +1 -1
  444. package/dist/types/src/types/index.d.ts +8 -3
  445. package/dist/types/src/types/index.d.ts.map +1 -1
  446. package/dist/types/src/types/preset.d.ts +12 -0
  447. package/dist/types/src/types/preset.d.ts.map +1 -0
  448. package/dist/types/src/types/service.d.ts +2 -3
  449. package/dist/types/src/types/service.d.ts.map +1 -1
  450. package/dist/types/src/util/suggestions.d.ts +9 -0
  451. package/dist/types/src/util/suggestions.d.ts.map +1 -0
  452. package/dist/types/src/util/suggestions.test.d.ts +2 -0
  453. package/dist/types/src/util/suggestions.test.d.ts.map +1 -0
  454. package/dist/types/tsconfig.tsbuildinfo +1 -1
  455. package/package.json +177 -146
  456. package/src/AssistantPlugin.conversations.json +1 -0
  457. package/src/AssistantPlugin.node.ts +90 -0
  458. package/src/AssistantPlugin.test.ts +213 -0
  459. package/src/AssistantPlugin.ts +158 -0
  460. package/src/AssistantPlugin.workerd.ts +41 -0
  461. package/src/blueprints/assistant/{blueprint.test.ts → blueprint.node.test.ts} +5 -5
  462. package/src/blueprints/assistant/blueprint.ts +4 -4
  463. package/src/capabilities/agent-hydrator.ts +37 -0
  464. package/src/capabilities/agent-service.ts +38 -0
  465. package/src/capabilities/ai-context.ts +48 -0
  466. package/src/capabilities/ai-service.ts +31 -11
  467. package/src/capabilities/app-graph-builder.ts +106 -86
  468. package/src/capabilities/automation-templates.ts +16 -0
  469. package/src/capabilities/blueprint-definition.ts +15 -8
  470. package/src/capabilities/companion-chat-provisioner.ts +5 -5
  471. package/src/capabilities/create-object.ts +100 -0
  472. package/src/capabilities/edge-model-resolver.ts +53 -16
  473. package/src/capabilities/index.ts +23 -3
  474. package/src/capabilities/integration-provider.ts +86 -0
  475. package/src/capabilities/{markdown.ts → markdown-extension.ts} +3 -3
  476. package/src/capabilities/migrations.ts +4 -11
  477. package/src/capabilities/operation-handler.ts +1 -1
  478. package/src/capabilities/react-surface.tsx +41 -21
  479. package/src/components/AgentProperties/AgentProperties.stories.tsx +74 -0
  480. package/src/components/AgentProperties/AgentProperties.tsx +103 -0
  481. package/src/components/AgentProperties/index.ts +5 -0
  482. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +3 -2
  483. package/src/components/AssistantSettings/AssistantSettings.tsx +22 -111
  484. package/src/components/Chat/Chat.tsx +145 -277
  485. package/src/components/Chat/context.ts +39 -0
  486. package/src/components/Chat/events.ts +7 -0
  487. package/src/components/ChatPrompt/ChatActions.tsx +11 -11
  488. package/src/components/ChatPrompt/ChatMcpErrors.tsx +50 -0
  489. package/src/components/ChatPrompt/ChatOptions.stories.tsx +32 -18
  490. package/src/components/ChatPrompt/ChatOptions.tsx +121 -103
  491. package/src/components/ChatPrompt/ChatPresets.tsx +3 -7
  492. package/src/components/ChatPrompt/ChatPrompt.tsx +180 -0
  493. package/src/components/ChatPrompt/ChatReferences.tsx +9 -13
  494. package/src/components/ChatPrompt/ChatStatus.tsx +123 -0
  495. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +2 -2
  496. package/src/components/ChatPrompt/index.ts +3 -0
  497. package/src/components/ChatThread/Anchor.stories.tsx +95 -0
  498. package/src/components/ChatThread/ChatThread.stories.tsx +33 -37
  499. package/src/components/ChatThread/ChatThread.tsx +47 -23
  500. package/src/components/ChatThread/DEBUG.md +41 -0
  501. package/src/components/ChatThread/Link.tsx +5 -5
  502. package/src/components/ChatThread/MarkdownStream.stories.tsx +43 -5
  503. package/src/components/ChatThread/registry.tsx +80 -28
  504. package/src/components/ChatThread/sync.test.ts +180 -22
  505. package/src/components/ChatThread/sync.ts +89 -104
  506. package/src/components/ChatThread/testing/reasoning.md +25 -0
  507. package/src/components/ChatThread/widgets/FallbackWidget.tsx +8 -6
  508. package/src/components/ChatThread/widgets/ReasoningWidget.ts +13 -7
  509. package/src/components/ChatThread/widgets/ReferenceWidget.ts +3 -1
  510. package/src/components/ChatThread/widgets/SelectWidget.ts +4 -2
  511. package/src/components/ChatThread/widgets/StatsWidget.ts +3 -1
  512. package/src/components/ChatThread/widgets/StatusWidget.ts +6 -86
  513. package/src/components/ChatThread/widgets/SuggestionWidget.ts +2 -2
  514. package/src/components/ChatThread/widgets/SummaryWidget.tsx +7 -6
  515. package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +2 -1
  516. package/src/components/ChatThread/widgets/ToolWidget.tsx +42 -25
  517. package/src/components/ChatThread/widgets/defaults.ts +8 -0
  518. package/src/components/ChatThread/widgets/index.ts +1 -2
  519. package/src/components/ProcessTree/ProcessTree.stories.tsx +13 -39
  520. package/src/components/ProcessTree/ProcessTree.tsx +101 -67
  521. package/src/components/RoutineProperties/RoutineProperties.stories.tsx +59 -0
  522. package/src/components/RoutineProperties/RoutineProperties.tsx +23 -0
  523. package/src/components/RoutineProperties/index.ts +5 -0
  524. package/src/components/TaskList/TaskList.stories.tsx +44 -0
  525. package/src/components/TaskList/TaskList.tsx +45 -0
  526. package/src/components/TaskList/index.ts +5 -0
  527. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +6 -5
  528. package/src/components/TemplateEditor/TemplateEditor.tsx +12 -10
  529. package/src/components/TemplateEditor/TemplateForm.stories.tsx +6 -9
  530. package/src/components/TemplateEditor/TemplateForm.tsx +52 -73
  531. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +2 -2
  532. package/src/components/ToolBlock/ToolBlock.tsx +25 -17
  533. package/src/components/Toolbox/Toolbox.stories.tsx +6 -5
  534. package/src/components/Toolbox/Toolbox.tsx +6 -5
  535. package/src/components/index.ts +6 -0
  536. package/src/constants.ts +9 -0
  537. package/src/containers/AgentArticle/AgentArticle.stories.tsx +19 -15
  538. package/src/containers/AgentArticle/AgentArticle.tsx +47 -53
  539. package/src/containers/AgentProperties/AgentProperties.tsx +20 -135
  540. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +2 -2
  541. package/src/containers/ChatArticle/ChatArticle.stories.tsx +78 -0
  542. package/src/containers/ChatArticle/ChatArticle.tsx +112 -0
  543. package/src/containers/ChatArticle/index.ts +5 -0
  544. package/src/containers/ChatCompanion/ChatCompanion.tsx +94 -109
  545. package/src/containers/ChatDialog/ChatDialog.tsx +6 -11
  546. package/src/containers/PlanArticle/PlanArticle.tsx +33 -0
  547. package/src/containers/PlanArticle/index.ts +5 -0
  548. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +75 -0
  549. package/src/containers/RoutineArticle/RoutineArticle.tsx +109 -0
  550. package/src/containers/RoutineArticle/index.ts +5 -0
  551. package/src/containers/{PromptList/PromptList.stories.tsx → RoutineList/RoutineList.stories.tsx} +14 -13
  552. package/src/containers/{PromptList/PromptList.tsx → RoutineList/RoutineList.tsx} +9 -8
  553. package/src/containers/RoutineList/index.ts +5 -0
  554. package/src/containers/TracePanel/TracePanel.stories.tsx +285 -168
  555. package/src/containers/TracePanel/TracePanel.tsx +220 -77
  556. package/src/containers/TracePanel/dxn-extractor.test.ts +32 -32
  557. package/src/containers/TracePanel/dxn-extractor.ts +52 -64
  558. package/src/containers/TracePanel/testing/index.ts +6 -0
  559. package/src/containers/TracePanel/testing/simulated-agent.ts +114 -0
  560. package/src/containers/TracePanel/testing/snapshot-playback.ts +45 -0
  561. package/src/containers/TriggerStatus/TriggerStatus.tsx +20 -34
  562. package/src/containers/TriggerStatus/index.ts +1 -1
  563. package/src/containers/index.ts +6 -5
  564. package/src/execution-graph/SPEC.md +690 -0
  565. package/src/execution-graph/execution-graph.test.ts +891 -0
  566. package/src/execution-graph/execution-graph.ts +777 -0
  567. package/src/execution-graph/index.ts +24 -0
  568. package/src/execution-graph/remote-snapshot.test.ts +116 -0
  569. package/src/execution-graph/span-tree.test.ts +249 -0
  570. package/src/execution-graph/span-tree.ts +269 -0
  571. package/src/execution-graph/sub-agent-delegation.test.ts +50 -0
  572. package/src/execution-graph/testing/collect-trace-events.ts +74 -0
  573. package/src/execution-graph/testing/index.ts +5 -0
  574. package/src/execution-graph/testing/sub-agent-delegation.json +1285 -0
  575. package/src/{queue-logger.ts → feed-logger.ts} +39 -25
  576. package/src/functions/services.test.ts +53 -0
  577. package/src/hooks/index.ts +5 -0
  578. package/src/hooks/useBlueprintRegistry.ts +62 -46
  579. package/src/hooks/useChatKeymap.ts +52 -0
  580. package/src/hooks/useChatProcessor.ts +33 -17
  581. package/src/hooks/useChatServices.ts +8 -6
  582. package/src/hooks/useChatToolbarActions.ts +98 -96
  583. package/src/hooks/useContextBinder.ts +7 -7
  584. package/src/hooks/useContextObjects.ts +6 -5
  585. package/src/hooks/useDebug.ts +38 -0
  586. package/src/hooks/useFilteredTypes.ts +18 -16
  587. package/src/hooks/usePresets.ts +5 -3
  588. package/src/hooks/useReferencesProvider.ts +7 -15
  589. package/src/index.ts +1 -5
  590. package/src/meta.ts +27 -8
  591. package/src/operations/create-chat.ts +15 -38
  592. package/src/operations/ensure-companion-chat.ts +49 -47
  593. package/src/operations/fork-chat.ts +112 -0
  594. package/src/operations/index.ts +3 -4
  595. package/src/operations/prompt.node.test.ts +82 -0
  596. package/src/operations/resolve-navigation-targets.ts +8 -3
  597. package/src/operations/run-prompt-in-new-chat.ts +87 -87
  598. package/src/operations/set-current-chat.ts +6 -7
  599. package/src/operations/toggle-trace-panel-debug.ts +27 -0
  600. package/src/operations/update-chat-name.ts +24 -20
  601. package/src/paths.ts +10 -0
  602. package/src/plugin.ts +11 -0
  603. package/src/processor/presets.ts +15 -11
  604. package/src/processor/{processor.test.ts → processor.node.test.ts} +7 -7
  605. package/src/processor/processor.ts +160 -58
  606. package/src/templates/automation-templates.test.ts +66 -0
  607. package/src/templates/daily-digest.ts +37 -0
  608. package/src/templates/index.ts +11 -0
  609. package/src/templates/research-brief.ts +40 -0
  610. package/src/templates/scaffold.ts +74 -0
  611. package/src/testing/data/trace-timeline-multiple.dx.json +1 -0
  612. package/src/testing/data/trace-timeline-remote.dx.json +1 -0
  613. package/src/testing/data/trace-timeline.dx.json +4657 -0
  614. package/src/testing/index.ts +2 -0
  615. package/src/testing/snapshot.ts +35 -0
  616. package/src/testing/test-generator.test.ts +71 -0
  617. package/src/testing/test-generator.ts +196 -205
  618. package/src/testing/test-sequence.ts +3 -3
  619. package/src/testing/test-services.ts +1 -1
  620. package/src/testing/test-trace.ts +20 -0
  621. package/src/testing/trace-timeline.node.conversations.json +1 -0
  622. package/src/testing/{trace-timeline.test.ts → trace-timeline.node.test.ts} +45 -50
  623. package/src/testing.ts +9 -0
  624. package/src/translations.ts +40 -38
  625. package/src/types/Assistant.ts +13 -1
  626. package/src/types/AssistantCapabilities.ts +35 -0
  627. package/src/types/AssistantEvents.ts +11 -0
  628. package/src/{operations/definitions.ts → types/AssistantOperation.ts} +66 -29
  629. package/src/types/Settings.ts +68 -7
  630. package/src/types/index.ts +12 -3
  631. package/src/types/preset.ts +16 -0
  632. package/src/types/service.ts +5 -10
  633. package/src/util/suggestions.test.ts +52 -0
  634. package/src/util/suggestions.ts +42 -0
  635. package/src/vite-env.d.ts +5 -0
  636. package/dist/lib/browser/AssistantSettings-7QMO3LGF.mjs +0 -97
  637. package/dist/lib/browser/AssistantSettings-7QMO3LGF.mjs.map +0 -7
  638. package/dist/lib/browser/chunk-ATHYBVGN.mjs +0 -176
  639. package/dist/lib/browser/chunk-ATHYBVGN.mjs.map +0 -7
  640. package/dist/lib/browser/chunk-EZRS3J25.mjs.map +0 -7
  641. package/dist/lib/browser/chunk-LMVTXH54.mjs +0 -154
  642. package/dist/lib/browser/chunk-LMVTXH54.mjs.map +0 -7
  643. package/dist/lib/browser/create-chat-LBZHGVSN.mjs +0 -82
  644. package/dist/lib/browser/create-chat-LBZHGVSN.mjs.map +0 -7
  645. package/dist/lib/browser/ensure-companion-chat-ZEZA34MZ.mjs.map +0 -7
  646. package/dist/lib/browser/index.mjs +0 -3452
  647. package/dist/lib/browser/index.mjs.map +0 -7
  648. package/dist/lib/browser/meta.json +0 -1
  649. package/dist/lib/browser/on-create-space-54RNX5JI.mjs +0 -22
  650. package/dist/lib/browser/on-create-space-54RNX5JI.mjs.map +0 -7
  651. package/dist/lib/browser/operations/index.mjs +0 -13
  652. package/dist/lib/browser/operations/index.mjs.map +0 -7
  653. package/dist/lib/browser/resolve-navigation-targets-NZOD66NY.mjs.map +0 -7
  654. package/dist/lib/browser/run-prompt-in-new-chat-THLK5YQC.mjs.map +0 -7
  655. package/dist/lib/browser/set-current-chat-LRS3VFSH.mjs.map +0 -7
  656. package/dist/lib/browser/types/index.mjs +0 -20
  657. package/dist/lib/browser/update-chat-name-3Y36KFAS.mjs.map +0 -7
  658. package/dist/lib/node-esm/AssistantSettings-UVUTKO7E.mjs +0 -98
  659. package/dist/lib/node-esm/AssistantSettings-UVUTKO7E.mjs.map +0 -7
  660. package/dist/lib/node-esm/blueprints/index.mjs +0 -9
  661. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  662. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs +0 -32
  663. package/dist/lib/node-esm/chunk-NZIKC7AN.mjs.map +0 -7
  664. package/dist/lib/node-esm/chunk-PXAJSTGZ.mjs +0 -177
  665. package/dist/lib/node-esm/chunk-PXAJSTGZ.mjs.map +0 -7
  666. package/dist/lib/node-esm/chunk-W3JZ2F4T.mjs +0 -155
  667. package/dist/lib/node-esm/chunk-W3JZ2F4T.mjs.map +0 -7
  668. package/dist/lib/node-esm/create-chat-3BEG4R6J.mjs +0 -83
  669. package/dist/lib/node-esm/create-chat-3BEG4R6J.mjs.map +0 -7
  670. package/dist/lib/node-esm/ensure-companion-chat-6K2WEWFP.mjs +0 -66
  671. package/dist/lib/node-esm/ensure-companion-chat-6K2WEWFP.mjs.map +0 -7
  672. package/dist/lib/node-esm/index.mjs +0 -3453
  673. package/dist/lib/node-esm/index.mjs.map +0 -7
  674. package/dist/lib/node-esm/meta.json +0 -1
  675. package/dist/lib/node-esm/on-create-space-YRPZ6HZY.mjs +0 -23
  676. package/dist/lib/node-esm/on-create-space-YRPZ6HZY.mjs.map +0 -7
  677. package/dist/lib/node-esm/operations/index.mjs +0 -14
  678. package/dist/lib/node-esm/operations/index.mjs.map +0 -7
  679. package/dist/lib/node-esm/resolve-navigation-targets-3PPK7XLH.mjs +0 -23
  680. package/dist/lib/node-esm/resolve-navigation-targets-3PPK7XLH.mjs.map +0 -7
  681. package/dist/lib/node-esm/run-prompt-in-new-chat-OUYKCMQ7.mjs +0 -137
  682. package/dist/lib/node-esm/run-prompt-in-new-chat-OUYKCMQ7.mjs.map +0 -7
  683. package/dist/lib/node-esm/set-current-chat-SMXZJD3F.mjs +0 -55
  684. package/dist/lib/node-esm/set-current-chat-SMXZJD3F.mjs.map +0 -7
  685. package/dist/lib/node-esm/types/index.mjs +0 -21
  686. package/dist/lib/node-esm/update-chat-name-HM2P4NSI.mjs +0 -72
  687. package/dist/lib/node-esm/update-chat-name-HM2P4NSI.mjs.map +0 -7
  688. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +0 -2
  689. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +0 -1
  690. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  691. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +0 -10
  692. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +0 -1
  693. package/dist/types/src/components/ChatProgress/index.d.ts +0 -2
  694. package/dist/types/src/components/ChatProgress/index.d.ts.map +0 -1
  695. package/dist/types/src/components/ChatThread/widgets/PromptWidget.d.ts +0 -14
  696. package/dist/types/src/components/ChatThread/widgets/PromptWidget.d.ts.map +0 -1
  697. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts.map +0 -1
  698. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +0 -12
  699. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +0 -1
  700. package/dist/types/src/containers/ChatContainer/index.d.ts +0 -2
  701. package/dist/types/src/containers/ChatContainer/index.d.ts.map +0 -1
  702. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +0 -6
  703. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +0 -1
  704. package/dist/types/src/containers/PromptArticle/index.d.ts +0 -2
  705. package/dist/types/src/containers/PromptArticle/index.d.ts.map +0 -1
  706. package/dist/types/src/containers/PromptList/PromptList.d.ts +0 -6
  707. package/dist/types/src/containers/PromptList/PromptList.d.ts.map +0 -1
  708. package/dist/types/src/containers/PromptList/PromptList.stories.d.ts.map +0 -1
  709. package/dist/types/src/containers/PromptList/index.d.ts +0 -2
  710. package/dist/types/src/containers/PromptList/index.d.ts.map +0 -1
  711. package/dist/types/src/containers/TracePanel/execution-graph.d.ts +0 -17
  712. package/dist/types/src/containers/TracePanel/execution-graph.d.ts.map +0 -1
  713. package/dist/types/src/operations/definitions.d.ts +0 -135
  714. package/dist/types/src/operations/definitions.d.ts.map +0 -1
  715. package/dist/types/src/operations/on-create-space.d.ts +0 -5
  716. package/dist/types/src/operations/on-create-space.d.ts.map +0 -1
  717. package/dist/types/src/processor/processor.test.d.ts +0 -2
  718. package/dist/types/src/processor/processor.test.d.ts.map +0 -1
  719. package/dist/types/src/queue-logger.d.ts +0 -11
  720. package/dist/types/src/queue-logger.d.ts.map +0 -1
  721. package/dist/types/src/testing/trace-timeline.test.d.ts +0 -2
  722. package/dist/types/src/testing/trace-timeline.test.d.ts.map +0 -1
  723. package/dist/types/src/types/capabilities.d.ts +0 -32
  724. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  725. package/dist/types/src/types/defs.d.ts +0 -2
  726. package/dist/types/src/types/defs.d.ts.map +0 -1
  727. package/dist/types/src/types/events.d.ts +0 -5
  728. package/dist/types/src/types/events.d.ts.map +0 -1
  729. package/src/AssistantPlugin.tsx +0 -233
  730. package/src/components/ChatProgress/ChatProgress.tsx +0 -56
  731. package/src/components/ChatProgress/index.ts +0 -5
  732. package/src/components/ChatThread/widgets/PromptWidget.ts +0 -28
  733. package/src/containers/AgentProperties/AgentProperties.stories.tsx +0 -100
  734. package/src/containers/ChatContainer/ChatContainer.tsx +0 -95
  735. package/src/containers/ChatContainer/index.ts +0 -5
  736. package/src/containers/PromptArticle/PromptArticle.tsx +0 -59
  737. package/src/containers/PromptArticle/index.ts +0 -5
  738. package/src/containers/PromptList/index.ts +0 -5
  739. package/src/containers/TracePanel/execution-graph.ts +0 -425
  740. package/src/operations/on-create-space.ts +0 -24
  741. package/src/testing/trace-timeline.conversations.json +0 -1
  742. package/src/types/capabilities.ts +0 -35
  743. package/src/types/defs.ts +0 -5
  744. package/src/types/events.ts +0 -11
  745. /package/dist/lib/{browser/blueprints/index.mjs.map → neutral/AssistantPlugin.mjs.map} +0 -0
  746. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/ChatArticle-VNVZCDUR.mjs.map} +0 -0
  747. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  748. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  749. /package/dist/lib/{node-esm/blueprints/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  750. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  751. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
@@ -0,0 +1,690 @@
1
+ # Trace Execution Graph — Specification
2
+
3
+ This document specifies the pure-data layer that powers the `TracePanel` Timeline view.
4
+ Source: `packages/plugins/plugin-assistant/src/execution-graph/`.
5
+
6
+ ## 1. Purpose & scope
7
+
8
+ The module converts a flat list of `Trace.Message` records (and a snapshot of active
9
+ processes) into a Mercurial/Git-style commit graph consumable by the
10
+ `@dxos/react-ui-components` `Timeline` component.
11
+
12
+ In scope:
13
+
14
+ - Hierarchical grouping of trace events into spans (`buildSpanTree`).
15
+ - Translation of the span tree into commits + branches with explicit parent edges
16
+ (`buildExecutionGraph` → `spanTreeToCommits`).
17
+ - A commit-query DSL (`CommitSelector`) used internally for parent computation.
18
+ - A `details` map exposing the underlying `Trace.FlatEvent` for each commit
19
+ (used by the inspector / Syntax pane).
20
+
21
+ Out of scope:
22
+
23
+ - React rendering, styling, layout.
24
+ - Trace transport, persistence, or feed queries (the panel reads these via ECHO atoms).
25
+ - Filtering / search of commits.
26
+ - Mutating, ack-ing, or replaying trace events.
27
+
28
+ Inputs: `traceMessages: Trace.Message[]`, `activeProcesses?: Process.Info[]`, `eventLimit?: number`.
29
+ Output: `ExecutionGraph = { branches, commits, spanTree, details }`.
30
+
31
+ ## 2. Inputs
32
+
33
+ ### 2.1 `Trace.Message`
34
+
35
+ Defined in `packages/core/compute/compute/src/Trace.ts#L154`.
36
+ A `Message` is `{ meta: Meta, isEphemeral: boolean, events: Event[] }`. The builder
37
+ flattens via `Trace.flatten` (`Trace.ts#L178`) so every event inherits its message's
38
+ `meta` — there is no per-event meta override.
39
+
40
+ `Meta` fields (`Trace.ts#L102`):
41
+
42
+ | Field | Read by the builder | Purpose |
43
+ | ---------------- | ---------------------------------------- | ---------------------------------------------------------------------------- |
44
+ | `pid` | Yes | Identifies the span the event belongs to and the branch the commit lives on. |
45
+ | `parentPid` | Yes | Links a span to its parent span at begin time. |
46
+ | `processName` | No (carried in `SpanMeta` for consumers) | — |
47
+ | `space` | No | — |
48
+ | `conversationId` | No (carried in `SpanMeta`) | — |
49
+ | `triggerId` | No (carried in `SpanMeta`) | — |
50
+ | `toolCallId` | No (carried in `SpanMeta`) | — |
51
+ | `runtimeName` | No (carried in `SpanMeta`) | — |
52
+
53
+ Only `pid` and `parentPid` participate in graph topology. The remaining fields are
54
+ forwarded as `SpanMeta` for downstream display but never branch or anchor logic.
55
+
56
+ `isEphemeral` is preserved on `FlatEvent` but is not consulted; ephemeral events
57
+ participate exactly like persistent events.
58
+
59
+ ### 2.2 `Process.Info` (active processes)
60
+
61
+ Defined in `packages/core/compute/compute/src/Process.ts#L365`.
62
+ Optional input via `activeProcesses` (defaults to `[]`). Fields the builder reads:
63
+
64
+ - `pid` — used both as a commit-id suffix and as the branch name for the spinner.
65
+ - `key` — compared against `AGENT_PROCESS_KEY` (`'org.dxos.testing.process.agent'`,
66
+ `packages/core/compute/functions-runtime/src/agent-service/agent-process.ts#L54`).
67
+ - `state` — gated on `Process.State.RUNNING` and `Process.State.HYBERNATING`
68
+ (spelling matches the runtime; `Process.ts#L321`).
69
+ - `params.target` — non-null required for the agent special case.
70
+
71
+ `parentPid`, `error`, `startedAt`, `completedAt`, `metrics` are ignored.
72
+
73
+ ### 2.3 Configuration
74
+
75
+ - `buildExecutionGraph` defaults `eventLimit = 500`
76
+ (`execution-graph.ts#L94`).
77
+ - `TracePanel`'s `getExecutionGraph` defaults `eventLimit = 300`
78
+ (`TracePanel.tsx#L153`).
79
+ - The cap targets `Timeline` rendering cost, not memory; see §11 for what it bounds.
80
+
81
+ ## 3. Outputs
82
+
83
+ ### 3.1 `ExecutionGraph`
84
+
85
+ ```ts
86
+ export type ExecutionGraph = {
87
+ branches: string[];
88
+ commits: Commit[];
89
+ spanTree: Span;
90
+ details: ExecutionGraphDetailsMap;
91
+ };
92
+ export type ExecutionGraphDetailsMap = Record<string, Trace.FlatEvent | undefined>;
93
+ ```
94
+
95
+ - `branches` — every branch name a commit was placed on; `'main'` is always present
96
+ (the builder seeds it). Order is insertion order from the underlying `Set`.
97
+ - `commits` — flat list, may be unordered (consumers should not rely on order; the
98
+ `Timeline` sorts by parent topology). Deduped by id.
99
+ - `spanTree` — the hierarchical intermediate representation; exposed for debug views.
100
+ - `details` — commit id → originating `Trace.FlatEvent`. Used by `TracePanel` to
101
+ render the Syntax pane when a commit is selected (`TracePanel.tsx#L118`). Only
102
+ commits that were emitted via `presentEvent` appear here.
103
+
104
+ ### 3.2 `Commit` (set fields only)
105
+
106
+ From `packages/ui/react-ui-components/src/components/Timeline/Timeline.tsx#L40`. The
107
+ builder sets:
108
+
109
+ - `id` — see §9.
110
+ - `branch` — pid-derived (see §6).
111
+ - `parents` — see §8.
112
+ - `timestamp` — `new Date(event.timestamp)` (events) or `new Date()` (spinners).
113
+ - `icon`, `level`, `message` — from `presentEvent`.
114
+
115
+ The builder does not set `tags` or `link`. `CommitSelector.tag` / `.anyTags` exist
116
+ for consumers that add their own tags downstream.
117
+
118
+ ## 4. Event classification
119
+
120
+ Two type sets defined in `span-tree.ts#L47`:
121
+
122
+ ```ts
123
+ export const BEGIN_EVENT_TYPES = new Set([Trace.OperationStart.key, AgentRequestBegin.key]);
124
+ export const END_EVENT_TYPES = new Set([Trace.OperationEnd.key, AgentRequestEnd.key]);
125
+ ```
126
+
127
+ - **Begin events**: `operation.start`, `assistant.agentRequestBegin`. Open a span.
128
+ - **End events**: `operation.end`, `assistant.agentRequestEnd`. Close a span.
129
+ - **Middle events**: every other event type carried by a `meta.pid`. Attached to the
130
+ currently-open span for that pid.
131
+ - **Pid-less events**: any event whose `meta.pid` is `undefined`. Attached to the
132
+ synthetic root span.
133
+
134
+ ### 4.1 Which events produce commits (`presentEvent`)
135
+
136
+ `execution-graph.ts#L118`. Each branch validates `event.data` against the
137
+ event-type schema; on validation failure the event is silently dropped (log only).
138
+
139
+ | Event type | Condition | Icon | Level | Message | `idSuffix` |
140
+ | ------------------------------ | ----------------------- | ----------------------- | --------- | ------------------------------- | ------------------- |
141
+ | `AgentRequestBegin` | — | `ph--atom--regular` | `VERBOSE` | `"Agent processing request..."` | — |
142
+ | `AgentRequestEnd` | — | `ph--atom--regular` | `INFO` | `"Agent completed request"` | — |
143
+ | `CompleteBlock` text | `role === 'user'` | `ph--user--regular` | `VERBOSE` | trimmed `block.text` | — |
144
+ | `CompleteBlock` text | `role !== 'user'` | — (drop) | — | — | — |
145
+ | `CompleteBlock` status | — | `ph--info--regular` | `VERBOSE` | trimmed `block.statusText` | — |
146
+ | `CompleteBlock` other | — | — (drop) | — | — | — |
147
+ | `Trace.OperationStart` | — | `ph--function--regular` | `VERBOSE` | `data.name ?? data.key` | `${data.key}:start` |
148
+ | `Trace.OperationEnd` (success) | `outcome === 'success'` | `ph--function--regular` | `INFO` | `${name ?? key} - Success` | `${data.key}:end` |
149
+ | `Trace.OperationEnd` (failure) | `outcome !== 'success'` | `ph--function--regular` | `ERROR` | `${name ?? key} - Error` | `${data.key}:end` |
150
+ | anything else | — | — (drop) | — | — | — |
151
+
152
+ `trimText` clips to first 100 chars, trims whitespace, drops everything after the
153
+ first newline (`execution-graph.ts#L438`).
154
+
155
+ Dropped events (non-`presentEvent` types or filtered roles) never appear in
156
+ `commits` or `details`, but they remain in `spanTree.events`.
157
+
158
+ ## 5. Span tree construction (`buildSpanTree`)
159
+
160
+ `span-tree.ts#L112`. Algorithm:
161
+
162
+ 1. **Flatten** every message: `messages.flatMap(Trace.flatten)`. Each output is a
163
+ `FlatEvent` carrying the message's `meta` and `isEphemeral`.
164
+ 2. **Sort** the flat stream chronologically by `event.timestamp` ascending. The
165
+ sort is in-place and uses subtraction (no NaN guard); identical timestamps
166
+ keep their relative order as `Array.prototype.sort` is stable in modern V8.
167
+ 3. **Apply `eventLimit`** (see §5.2). Boundary events are immune.
168
+ 4. **Linear scan** the (possibly trimmed) stream:
169
+ - Pid-less event → push onto root.
170
+ - Begin event with pid `P`, parentPid `Q`:
171
+ - Parent span = `openSpans.get(Q)` if `Q` is defined and open, else root.
172
+ - Allocate a fresh id `${P}#${spanCounter++}` and create the span.
173
+ - Push the begin event as the span's first event.
174
+ - **`openSpans.set(P, newSpan)`** — supersedes any previously open span for
175
+ this pid.
176
+ - End event with pid `P`:
177
+ - If a span is open for `P`: push the end event onto it and `openSpans.delete(P)`.
178
+ - Else: push the end event onto root (orphan end).
179
+ - Other event with pid `P`:
180
+ - If a span is open for `P`: push onto it.
181
+ - Else: push onto root.
182
+ 5. **Sort children** of every span by `firstTimestamp` ascending (depth-first).
183
+ Determinism guarantee.
184
+
185
+ The `MutableSpan.firstTimestamp` is updated on every push via `noteTimestamp`
186
+ (`Math.min` against the current value, init `+Infinity`). Used only for sibling
187
+ ordering.
188
+
189
+ Spans are frozen via `freezeSpan` into the public `Span` shape; the
190
+ `firstTimestamp` field is internal and not exposed.
191
+
192
+ ### 5.1 Same-pid sequential spans
193
+
194
+ Multiple complete begin/end pairs sharing a `pid` become **sibling spans under the
195
+ same parent**. The second begin orphans the first because `openSpans.set(pid, …)`
196
+ unconditionally supersedes. This is intended for _sequential_ execution within
197
+ one process (e.g. successive agent requests in a session) — not interleaved.
198
+ Each sibling receives a distinct synthetic id (`${pid}#${n}`); the shared `pid`
199
+ is preserved in `SpanMeta` and used for branch derivation (§6) so siblings share
200
+ a lane.
201
+
202
+ Test reference: `span-tree.test.ts#L80` ('sequential agent requests in one process
203
+ become sibling spans').
204
+
205
+ ### 5.2 `eventLimit` semantics
206
+
207
+ `applyEventLimit` (`span-tree.ts#L211`) — runs _after_ chronological sort, _before_
208
+ tree construction.
209
+
210
+ Rule: only **non-boundary** events count toward `eventLimit`. Span boundaries
211
+ (`OperationStart` / `OperationEnd` / `AgentRequestBegin` / `AgentRequestEnd`) are
212
+ **always retained** regardless of the cap.
213
+
214
+ Why: dropping a begin event detaches every descendant whose `parentPid` lookup
215
+ fails — those children would fall back to root and re-render as top-level spans.
216
+ Dropping an end leaves a span open and corrupts the open-span map for any later
217
+ same-pid sibling. The motivating regression is documented in `remote-snapshot.test.ts`
218
+ (commit `eae07dad83`, "enhance event limit handling").
219
+
220
+ When the non-boundary count exceeds `eventLimit`, the _oldest_ non-boundary events
221
+ are dropped while preserving chronological order. Test reference:
222
+ `span-tree.test.ts#L134` ('eventLimit drops oldest non-boundary events but always
223
+ retains span boundaries') and `#L159` (regression for parent-child preservation).
224
+
225
+ ### 5.3 Children ordering
226
+
227
+ Sibling spans are sorted by `firstTimestamp` ascending so output is deterministic
228
+ across runs that share inputs. Test: `span-tree.test.ts#L120`.
229
+
230
+ ## 6. Span branch assignment (`branchOf`)
231
+
232
+ `execution-graph.ts#L263`. Pure function on a span:
233
+
234
+ 1. `span === null` or `span.id === ROOT_SPAN_ID` → `MAIN_BRANCH = 'main'`.
235
+ 2. Else → `span.meta.pid ?? span.id`.
236
+
237
+ Consequence: sequential same-pid sibling spans share a branch (their `meta.pid`
238
+ matches). Spans whose meta lacks a `pid` (synthetic / unusual cases) fall back to
239
+ the synthetic span id — guaranteeing a non-empty branch name.
240
+
241
+ The synthetic root id is `ROOT_SPAN_ID = '<main>'` (`span-tree.ts#L12`).
242
+
243
+ ## 7. Collapsibility (`isCollapsibleSpan`)
244
+
245
+ `execution-graph.ts#L206`. A span is collapsible iff **all** of:
246
+
247
+ 1. `span.id !== ROOT_SPAN_ID`.
248
+ 2. `span.events.length === 2`.
249
+ 3. `span.children.length === 0`.
250
+ 4. `events[0]` is a begin event (`isSpanBeginEvent`).
251
+ 5. `events[events.length-1]` is an end event (`isSpanEndEvent`).
252
+ 6. `parent !== null` (i.e. the span has a parent in the tree).
253
+
254
+ Implication: a span whose end event hasn't arrived yet (pending) **never**
255
+ collapses, because its trailing event is a middle event, not an end. This matters
256
+ because the trailing middle event would otherwise be promoted to the parent
257
+ branch as a fake "end" commit — corrupting the visual. See test
258
+ `execution-graph.test.ts#L296` ('pending span with user message → user lands on
259
+ own branch, not parent').
260
+
261
+ Top-level spans (parent === root) **are** eligible — guard #6 only forbids
262
+ parent-less spans. A top-level operation with no inner events collapses to a
263
+ single end commit on `main` (test `execution-graph.test.ts#L194`).
264
+
265
+ ## 8. Commit anchoring rules (`spanTreeToCommits`)
266
+
267
+ `execution-graph.ts#L239`. Walks the entire tree once via `walkSpanTree`, flattens
268
+ into a single chronological stream (sorted by `timestamp`, ties broken by
269
+ `globalIndex` = insertion order), then emits commits in that order. Each
270
+ emission depends on the event's role and the host span's collapsibility:
271
+
272
+ ### 8.1 Root-level events (pid-less or orphans)
273
+
274
+ ```
275
+ branch = 'main'
276
+ parents = lastInSpanContext(null) // i.e. tail of main
277
+ ```
278
+
279
+ ### 8.2 Collapsible span — begin event
280
+
281
+ Skipped entirely. Only the end commit is emitted.
282
+
283
+ ### 8.3 Collapsible span — end event
284
+
285
+ ```
286
+ branch = parentBranch
287
+ parents = lastInSpanContext(parentSpan)
288
+ ```
289
+
290
+ Anchors to the parent's structural context (own-branch tail → parent's begin →
291
+ recurse). Critically, it does _not_ anchor to the immediate parent-branch tail,
292
+ because that tail could be a sibling span's commit; structural anchoring keeps
293
+ the fork visually attached to the correct span identity.
294
+
295
+ ### 8.4 Non-collapsible begin event
296
+
297
+ ```
298
+ isProcessBoundary = span.meta.pid != null
299
+ && parentSpan.meta.pid != null
300
+ && span.meta.pid !== parentSpan.meta.pid
301
+ branch = isProcessBoundary ? ownBranch : parentBranch
302
+ parents = lastInSpanContext(parentSpan)
303
+ ```
304
+
305
+ For a nested sub-span within the same process (or a span with no pid of its own),
306
+ the begin commit lives on the **parent** branch — the fork only becomes visible at
307
+ the span's first middle commit. For a **child process** (its own pid, differing
308
+ from the parent's — e.g. a delegated sub-agent), the begin commit instead forks
309
+ onto the span's **own** branch immediately, so a concurrent process gets its own
310
+ lane from its first event rather than sharing the parent's lane until its first
311
+ middle commit (which otherwise made the lane "snap" across as events streamed in).
312
+ Test: `execution-graph.test.ts` → "child process (sub-agent) forks onto its own branch…".
313
+
314
+ After emission: `beginCommitIdBySpan.set(span.id, commitId)` so any future
315
+ `lastInSpanContext(span)` call can fall back to this commit.
316
+
317
+ ### 8.5 Non-collapsible end event — two parents
318
+
319
+ ```
320
+ branch = parentBranch
321
+ parents = unionAll(
322
+ last commit on parentBranch, // chronological continuity on parent
323
+ last commit on ownBranch, // merge sub-flow back in
324
+ )
325
+ ```
326
+
327
+ Parent #1 is the **immediate predecessor on the parent branch**, not the matching
328
+ begin commit. Pointing back to the begin would draw an edge that skips over any
329
+ sibling spans' commits emitted between begin and end (e.g. two top-level Routine
330
+ spans overlapping on `main`: R1.end would otherwise arrow back to R1.begin
331
+ crossing over R2.begin). Anchoring to the previous parent-branch commit keeps
332
+ main linear. Regression: commit `ff8db16d9c`, test
333
+ `remote-snapshot.test.ts#L49`.
334
+
335
+ ### 8.6 Middle event
336
+
337
+ ```
338
+ branch = ownBranch
339
+ parents = lastInSpanContext(span)
340
+ ```
341
+
342
+ The first middle event of a span thereby forks from its own begin commit
343
+ (via `lastInSpanContext` fallback #2) rather than from a sibling's commit on
344
+ some shared ancestor.
345
+
346
+ ### 8.7 `lastInSpanContext(span)` helper
347
+
348
+ `execution-graph.ts#L282`. Structural (pid-keyed) walk, _not_ topological:
349
+
350
+ ```ts
351
+ lastInSpanContext(null) = branch('main').compose(last());
352
+ lastInSpanContext(span) = firstOf(
353
+ branch(branchOf(span)).compose(last()), // (a) own-branch tail
354
+ beginCommitIdBySpan.get(span.id), // (b) span's own begin commit
355
+ lastInSpanContext(parent(span)), // (c) recurse to parent
356
+ );
357
+ ```
358
+
359
+ Why structural and not topological: if a sub-span of agent A fires before A has
360
+ emitted any middle commits, walking the parent's shared branch topologically
361
+ could land on a commit belonging to an unrelated sibling B (a different top-level
362
+ span sharing `main`). Structural anchoring guarantees the fork edge attaches to
363
+ A's identity (`A.begin`) regardless of B's interleaving. Commit `ff8db16d9c`.
364
+
365
+ ## 9. Commit id format (`formatCommitId`)
366
+
367
+ `execution-graph.ts#L433`:
368
+
369
+ ```
370
+ ${span.id}:${globalIndex} // base
371
+ ${span.id}:${globalIndex}:${suffix} // when EventPresentation.idSuffix is set
372
+ ```
373
+
374
+ `globalIndex` is the index of the event in the post-sort flat stream — unique by
375
+ construction. `idSuffix` comes from `presentEvent`:
376
+
377
+ - `OperationStart` → `${data.key}:start`
378
+ - `OperationEnd` → `${data.key}:end`
379
+ - everything else → none
380
+
381
+ The suffix exists so a span hosting multiple sub-operations sharing the same
382
+ parent span id but different operation keys still produces distinct commit ids,
383
+ which the `Timeline` requires.
384
+
385
+ ## 10. Active-process "running" indicators
386
+
387
+ After commit emission, `spanTreeToCommits` appends spinner commits for each
388
+ process in `activeProcesses` (`execution-graph.ts#L397`):
389
+
390
+ ### 10.1 Agent special case
391
+
392
+ When **all** of:
393
+
394
+ - `process.key === AGENT_PROCESS_KEY` (`'org.dxos.testing.process.agent'`),
395
+ - `process.params.target` is truthy,
396
+ - `process.state ∈ { RUNNING, HYBERNATING }`,
397
+
398
+ emit:
399
+
400
+ ```ts
401
+ {
402
+ id: `running:${process.pid}`,
403
+ branch: process.pid,
404
+ parents: last commit on branch(process.pid),
405
+ icon: 'ph--spinner-gap--regular',
406
+ level: VERBOSE,
407
+ message: 'Generating...',
408
+ timestamp: new Date(),
409
+ }
410
+ ```
411
+
412
+ The branch is added by `addCommit` if it didn't already exist. This is the only
413
+ case where a spinner can introduce a new branch from thin air — the agent
414
+ process's pid always identifies a known conversational lane.
415
+
416
+ ### 10.2 Generic running process
417
+
418
+ For any other process with `state === RUNNING` **and** `builder.hasBranch(process.pid)`,
419
+ emit the same shape with `message: 'Running...'`.
420
+
421
+ The branch-exists guard prevents fabricating empty branches for processes that
422
+ have not emitted any trace events yet. (The agent case bypasses this guard
423
+ because the agent's branch is its conversation lane, which we want surfaced
424
+ even when no events have arrived.)
425
+
426
+ `HYBERNATING` (note the runtime spelling) qualifies for the agent spinner but
427
+ not for the generic one — the generic case demands strictly `RUNNING`.
428
+
429
+ ## 11. Graph hygiene (`GraphBuilder.doctor`)
430
+
431
+ `execution-graph.ts#L610`. Run once at `build()`:
432
+
433
+ 1. **Dedupe commits by `id`** via `Array.dedupeWith`. The first occurrence wins;
434
+ subsequent commits with the same id are dropped. `addCommit` is purely
435
+ append-only, so dedupe is the safety net when an event slips past the unique
436
+ `globalIndex` guarantee (e.g. spinner ids reused if two snapshots collide on
437
+ the same pid — not currently possible but cheap to guard).
438
+ 2. **Drop dangling parents** — for each surviving commit, filter `parents` to
439
+ ids that exist in the deduped commit set.
440
+
441
+ This matters when `eventLimit` trimming leaves an end commit whose own-branch
442
+ tail (the merge parent) was dropped — without doctor, the timeline component
443
+ would receive a parent id that doesn't resolve. Also defensive against partial
444
+ fixtures used in tests / Storybook stories.
445
+
446
+ `addBranch` is invoked by `addCommit` (`#L592`), so a branch is only present in
447
+ `branches` if at least one commit was written to it. `addBranch` is also called
448
+ explicitly for `MAIN_BRANCH` at the very start so `branches` always contains
449
+ `'main'`.
450
+
451
+ ## 12. `CommitSelector` DSL
452
+
453
+ `execution-graph.ts#L442`. A `CommitSelector` is a pipeable wrapper around
454
+ `(commits: Commit[]) => Commit[]`. All selectors are pure and never mutate the
455
+ input.
456
+
457
+ | Combinator | Semantics |
458
+ | ----------------------- | ------------------------------------------------------------------------------------------------- |
459
+ | `make(fn)` | Wrap an arbitrary selector function; sets up `.pipe`. |
460
+ | `identity()` | Returns the input array unchanged. |
461
+ | `filter(pred)` | Keeps commits where `pred(commit)` is truthy. |
462
+ | `id(id)` | `filter(c => c.id === id)`. |
463
+ | `tag(t)` | `filter(c => t && c.tags?.includes(t))`. Falsy `t` (`undefined` / `null` / `false`) yields empty. |
464
+ | `anyTags(ts)` | `filter(c => ts.some(t => t && c.tags?.includes(t)))`. |
465
+ | `branch(b)` | `filter(c => b && c.branch === b)`. Falsy `b` yields empty (same foot-gun as `tag`). |
466
+ | `compose(next)` | Pipe: `next(prev(commits))`. Used as `prev.pipe(compose(next))`. |
467
+ | `orElse(next)` | If `prev` is non-empty return `prev`, else `next`. Equivalent to `firstOf(prev, next)`. |
468
+ | `andAlso(next)` | Alias for `unionAll(prev, next)`. |
469
+ | `first(n=1)` | `commits.slice(0, n)`. |
470
+ | `last(n=1)` | `commits.toReversed().slice(0, n)` — **note reversed order**. |
471
+ | `not(sel)` | `commits.filter(c => !sel(commits).includes(c))`. |
472
+ | `unionAll(...sels)` | Concat results, dedupe by `id`. |
473
+ | `intersectAll(...sels)` | First selector's hits that also appear in every other selector's hits (by id). |
474
+ | `firstOf(...sels)` | First selector that returns a non-empty result; else empty. |
475
+
476
+ Foot-guns:
477
+
478
+ - `last(n)` returns commits in **reverse chronological order** (most recent first).
479
+ Callers wanting the "single most recent commit on branch X" use
480
+ `branch(X).pipe(compose(last()))` and the array's first element. Internally
481
+ `computeParents` only consumes the ids and dedupes (`#L599`), so reverse-order
482
+ is invisible there.
483
+ - `tag` / `branch` accept falsy inputs intentionally (the union type is
484
+ `string | Falsy`) so `tag(maybeUndefined)` is a no-op rather than a type error.
485
+ - All selectors are immutable; `identity().select(input)` does not mutate
486
+ `input` (`execution-graph.test.ts#L56`).
487
+
488
+ ## 13. Edge cases (exhaustive)
489
+
490
+ Each entry: **scenario → expected output → rationale**.
491
+
492
+ 1. **Empty `traceMessages`**
493
+ - Tree: root span with no events, no children.
494
+ - `commits = []`, `branches = ['main']`.
495
+ - Why: `MAIN_BRANCH` is seeded by `addBranch` (`execution-graph.ts#L245`)
496
+ even when no commits exist. Test: `execution-graph.test.ts#L188`.
497
+
498
+ 2. **Orphan end event** (end with no matching begin)
499
+ - Attached to root in `spanTree`; produces a single root-level commit on
500
+ `main`. Test: `span-tree.test.ts#L114`.
501
+
502
+ 3. **Orphan middle event** (no open span for pid)
503
+ - Attached to root; commit emitted on `main` (if `presentEvent` returns
504
+ non-undefined). Test: `span-tree.test.ts#L107`.
505
+
506
+ 4. **Two top-level spans overlapping in time, different pids**
507
+ - Two distinct branches off `main`; `main` stays linear; each end commit
508
+ merges its own-branch tail without skip-back edges across the sibling's
509
+ begin. Regression: commit `ff8db16d9c`, test `remote-snapshot.test.ts#L49`.
510
+
511
+ 5. **Two top-level spans sequential, same pid**
512
+ - Sibling spans under root sharing the same branch (`branchOf` returns the
513
+ shared `pid`). The second begin's parent commit is the tail of that shared
514
+ branch — i.e. the first end commit on `main` plus the own-branch tail
515
+ (which is the first end on the same lane). Test:
516
+ `span-tree.test.ts#L80`; visual contract in
517
+ `trace-timeline.node.test.ts#L51` ('create objects via AgentService').
518
+
519
+ 6. **Multiple sequential agent requests on one pid; sub-ops in the second session**
520
+ - Sub-op commits in the second session chain off the first session's
521
+ own-branch tail (because `branchOf` returns the shared pid). Visual
522
+ contract: `trace-timeline.node.test.ts#L122` ('sequential prompts in a
523
+ session') — note all three sessions share the `agent-1` branch lane.
524
+
525
+ 7. **Parent begin dropped by `eventLimit` (pre-fix)**
526
+ - Before commit `eae07dad83`: the parent's begin event was sliced away when
527
+ verbose noise pushed it past the window. All descendants then re-parented
528
+ to root and rendered as top-level collapsed end commits on `main`.
529
+ - After the fix: boundaries are immune; the parent stays open and children
530
+ remain nested. Regression: `remote-snapshot.test.ts#L27`.
531
+
532
+ 8. **Sub-op fires before parent has any middle commits**
533
+ - Sub-op's begin event anchors to its parent's `lastInSpanContext`. Lookup
534
+ order: parent's own-branch tail (absent) → parent's `beginCommitIdBySpan`
535
+ (present, this wins) → recurse to grandparent.
536
+ - Net effect: fork edge attaches to parent's begin commit.
537
+
538
+ 9. **Sub-op fires after a sibling top-level span begins**
539
+ - Sub-op of A still anchors structurally to A (via `lastInSpanContext`),
540
+ not to whatever B-belonging commit happens to be the topological tail on
541
+ the shared ancestor branch. Commit `ff8db16d9c`.
542
+
543
+ 10. **Collapsible span at root**
544
+ - `isCollapsibleSpan` returns `true` for top-level completed spans (parent
545
+ is root, not null). The span collapses to a single end commit on `main`.
546
+ Test: `execution-graph.test.ts#L194` ('top-level operation with no inner
547
+ events → collapsed to single end commit on main').
548
+
549
+ 11. **Active process emits no trace events but appears in `activeProcesses`**
550
+ - Not the agent special case → no spinner (the branch doesn't exist, so the
551
+ `hasBranch` guard rejects). The process is invisible to the timeline.
552
+ - Is the agent special case → spinner appears on a brand-new branch named
553
+ after the pid.
554
+
555
+ 12. **Identical timestamps on multiple events**
556
+ - Tie-break by `globalIndex` (insertion order before sort). Two layers:
557
+ `buildSpanTree` sorts the entire flat stream by `timestamp` only (stable
558
+ sort preserves insertion order); `spanTreeToCommits` sorts its event
559
+ stream by `timestamp` with explicit `globalIndex` tie-break
560
+ (`execution-graph.ts#L309`).
561
+ - Determinism is therefore guaranteed when input order is deterministic.
562
+
563
+ 13. **`Trace.flatten` meta inheritance**
564
+ - Every `FlatEvent` carries its message's `meta` verbatim. There is no
565
+ per-event override mechanism. Events that need different meta must be
566
+ emitted as separate `Trace.Message`s.
567
+
568
+ 14. **Pending span (begin without end)**
569
+ - Span is not collapsible (no trailing end event). Begin produces a fork
570
+ commit on the parent branch; middle events produce commits on the span's
571
+ own branch; no end commit is emitted. Test:
572
+ `execution-graph.test.ts#L296`.
573
+
574
+ 15. **`CompleteBlock` with `role !== 'user'` text block**
575
+ - Dropped — no commit, no `details` entry. The event remains in
576
+ `spanTree.events`.
577
+
578
+ 16. **`CompleteBlock` with unhandled block `_tag`**
579
+ - Dropped (neither `text` nor `status`).
580
+
581
+ 17. **Schema-invalid event payload**
582
+ - Logged via `log('invalid trace event', …)` and dropped. The event still
583
+ occupies a position in `spanTree.events`.
584
+
585
+ ## 14. Performance & complexity
586
+
587
+ - `buildSpanTree`: O(E log E) for the chronological sort, O(E) for the linear
588
+ scan, O(S log S) total over child sorts (S = span count). Memory O(E).
589
+ - `spanTreeToCommits`: O(E) walk of the tree + O(E log E) sort of the flat
590
+ stream. Commit emission is O(E) wall, but each emission's parent computation
591
+ is O(C) where C = current commit count (the selector linearly scans all
592
+ commits). Worst-case overall: O(E·C) — but in practice C ≪ E because most
593
+ events are dropped middle events with no `presentEvent` mapping, and
594
+ `lastInSpanContext` recursion depth equals tree depth D (typically ≤ 3-4).
595
+ - Expected scale: hundreds of commits, thousands of events. `eventLimit`
596
+ exists to bound `Timeline` rendering cost (DOM nodes, layout), not memory.
597
+
598
+ ## 15. Known limitations & future work
599
+
600
+ - **Pending spans + active processes**: an end-commit-less span surfaces as
601
+ "Generating..." only for processes matching `AGENT_PROCESS_KEY`. Other
602
+ long-running spans must wait for their begin commit to land and the
603
+ generic `RUNNING + hasBranch` heuristic to trigger.
604
+ - **Interleaved same-pid begin/end pairs**: the data model assumes _sequential_
605
+ spans per pid. If a process emits `B1 B2 E1 E2` interleaved, the second `B2`
606
+ orphans the still-open `B1` (no `E1` ever closes the first span). The first
607
+ span receives only its begin event; the second receives `B2 E1 E2`.
608
+ Outcome: incorrect. Not currently supported.
609
+ - **Event types beyond `presentEvent`**: silently dropped from the commit
610
+ stream but retained in `spanTree.events`. Consumers wanting the full event
611
+ stream must read `spanTree`. Examples: `OperationInput`, `OperationOutput`,
612
+ `StatusUpdate`, `process.spawned`, `process.exited`, `assistant.mcpServerError`.
613
+ - **`details` only stores presented events**. Selecting a commit in TracePanel
614
+ shows that single event; there is no per-span aggregation surfaced via
615
+ `details`.
616
+ - **Same-pid sub-spans of one process**: a process that re-uses its own pid
617
+ for an inner operation (without supplying a distinct child pid via
618
+ `parentPid`) cannot be distinguished from sequential top-level spans.
619
+ - **Schema validation is silent**: invalid event payloads are dropped without
620
+ surfacing to the UI; only `log` records the drop.
621
+
622
+ ## Appendix A: Source citations
623
+
624
+ | Symbol | File | Line |
625
+ | ------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------- |
626
+ | `buildSpanTree` | `packages/plugins/plugin-assistant/src/execution-graph/span-tree.ts` | L112 |
627
+ | `applyEventLimit` | same | L211 |
628
+ | `ROOT_SPAN_ID` | same | L12 |
629
+ | `BEGIN_EVENT_TYPES`/`END_EVENT_TYPES` | same | L47 |
630
+ | `walkSpanTree`/`flattenSpanTree` | same | L245 |
631
+ | `buildExecutionGraph` | `packages/plugins/plugin-assistant/src/execution-graph/execution-graph.ts` | L91 |
632
+ | `presentEvent` | same | L118 |
633
+ | `isCollapsibleSpan` | same | L206 |
634
+ | `spanTreeToCommits` | same | L239 |
635
+ | `lastInSpanContext` | same | L282 |
636
+ | `formatCommitId` | same | L433 |
637
+ | `CommitSelector` | same | L446 |
638
+ | `GraphBuilder` / `doctor` | same | L579 / L610 |
639
+ | `Trace.Meta` / `Trace.flatten` | `packages/core/compute/compute/src/Trace.ts` | L102 / L178 |
640
+ | `Process.Info` / `Process.State` | `packages/core/compute/compute/src/Process.ts` | L365 / L321 |
641
+ | `AGENT_PROCESS_KEY` | `packages/core/compute/functions-runtime/src/agent-service/agent-process.ts` | L54 |
642
+ | `Commit` type | `packages/ui/react-ui-components/src/components/Timeline/Timeline.tsx` | L40 |
643
+ | `TracePanel` `useExecutionGraph` / default `eventLimit` | `packages/plugins/plugin-assistant/src/containers/TracePanel/TracePanel.tsx` | L138 / L153 |
644
+
645
+ ## Appendix B: Visual contract examples
646
+
647
+ Top-level operation with no inner events (collapsed) —
648
+ `execution-graph.test.ts#L194`:
649
+
650
+ ```
651
+ ● [function] Reply - Success
652
+ ```
653
+
654
+ Nested operation under an agent (sub-op collapsed) —
655
+ `execution-graph.test.ts#L223`:
656
+
657
+ ```
658
+ ● [atom] Agent processing request...
659
+ ├──● [user] hello
660
+ │ ● [function] Lookup - Success
661
+ ◆──╯ [atom] Agent completed request
662
+ ```
663
+
664
+ Pending agent span with user message —
665
+ `execution-graph.test.ts#L296`:
666
+
667
+ ```
668
+ ● [atom] Agent processing request...
669
+ ├──● [user] hello
670
+ ```
671
+
672
+ Sequential agent requests on one pid (single shared lane) —
673
+ `trace-timeline.node.test.ts#L141`:
674
+
675
+ ```
676
+ ● [atom] Agent processing request...
677
+ ├──● [user] List all available schemas. Tell me what typenames are available.
678
+ │ ● [function] List schemas - Success
679
+ ◆──╯ [atom] Agent completed request
680
+ ● │ [atom] Agent processing request...
681
+ │ ● [user] Create an organization called "DXOS" and a person named "Alice".
682
+ │ ● [function] Create object - Success
683
+ │ ● [function] Create object - Success
684
+ ◆──╯ [atom] Agent completed request
685
+ ● │ [atom] Agent processing request...
686
+ │ ● [user] Search for all organizations and persons.
687
+ │ ● [function] Query - Success
688
+ │ ● [function] Query - Success
689
+ ◆──╯ [atom] Agent completed request
690
+ ```