@dxos/plugin-assistant 0.8.4-main.fd6878d → 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 (977) 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/neutral/blueprints/index.mjs +8 -0
  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/neutral/chunk-5H6UJHLF.mjs +30 -0
  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/neutral/ensure-companion-chat-AMOF3C66.mjs +58 -0
  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/index.mjs.map +7 -0
  91. package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs +71 -0
  92. package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +7 -0
  93. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs +24 -0
  94. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +7 -0
  95. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs +110 -0
  96. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs.map +7 -0
  97. package/dist/lib/neutral/meta.json +1 -0
  98. package/dist/lib/neutral/meta.mjs +12 -0
  99. package/dist/lib/neutral/meta.mjs.map +7 -0
  100. package/dist/lib/neutral/migrations-7DEMVBOG.mjs +28 -0
  101. package/dist/lib/neutral/migrations-7DEMVBOG.mjs.map +7 -0
  102. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs +13 -0
  103. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs.map +7 -0
  104. package/dist/lib/neutral/operations/index.mjs +8 -0
  105. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  106. package/dist/lib/neutral/plugin.mjs +16 -0
  107. package/dist/lib/neutral/plugin.mjs.map +7 -0
  108. package/dist/lib/neutral/react-surface-XRTBW5OJ.mjs +174 -0
  109. package/dist/lib/neutral/react-surface-XRTBW5OJ.mjs.map +7 -0
  110. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs +22 -0
  111. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +7 -0
  112. package/dist/lib/neutral/run-prompt-in-new-chat-D5IIE2C7.mjs +102 -0
  113. package/dist/lib/neutral/run-prompt-in-new-chat-D5IIE2C7.mjs.map +7 -0
  114. package/dist/lib/neutral/set-current-chat-VWBPSIMZ.mjs +48 -0
  115. package/dist/lib/neutral/set-current-chat-VWBPSIMZ.mjs.map +7 -0
  116. package/dist/lib/neutral/settings-W4BLWQ53.mjs +28 -0
  117. package/dist/lib/neutral/settings-W4BLWQ53.mjs.map +7 -0
  118. package/dist/lib/neutral/state-H3G7QCU6.mjs +28 -0
  119. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +7 -0
  120. package/dist/lib/neutral/testing.mjs +8 -0
  121. package/dist/lib/neutral/testing.mjs.map +7 -0
  122. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs +21 -0
  123. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs.map +7 -0
  124. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs +14 -0
  125. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs.map +7 -0
  126. package/dist/lib/neutral/translations.mjs +179 -0
  127. package/dist/lib/neutral/translations.mjs.map +7 -0
  128. package/dist/lib/neutral/types/index.mjs +20 -0
  129. package/dist/lib/neutral/types/index.mjs.map +7 -0
  130. package/dist/lib/neutral/update-chat-name-Y7JWIP64.mjs +61 -0
  131. package/dist/lib/neutral/update-chat-name-Y7JWIP64.mjs.map +7 -0
  132. package/dist/types/src/AssistantPlugin.d.ts +4 -1
  133. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  134. package/dist/types/src/AssistantPlugin.node.d.ts +5 -0
  135. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -0
  136. package/dist/types/src/AssistantPlugin.test.d.ts +2 -0
  137. package/dist/types/src/AssistantPlugin.test.d.ts.map +1 -0
  138. package/dist/types/src/AssistantPlugin.workerd.d.ts +4 -0
  139. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -0
  140. package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
  141. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
  142. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +2 -0
  143. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +1 -0
  144. package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
  145. package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
  146. package/dist/types/src/blueprints/index.d.ts +2 -0
  147. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  148. package/dist/types/src/capabilities/agent-hydrator.d.ts +5 -0
  149. package/dist/types/src/capabilities/agent-hydrator.d.ts.map +1 -0
  150. package/dist/types/src/capabilities/agent-service.d.ts +6 -0
  151. package/dist/types/src/capabilities/agent-service.d.ts.map +1 -0
  152. package/dist/types/src/capabilities/ai-context.d.ts +6 -0
  153. package/dist/types/src/capabilities/ai-context.d.ts.map +1 -0
  154. package/dist/types/src/capabilities/ai-service.d.ts +4 -3
  155. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  156. package/dist/types/src/capabilities/app-graph-builder.d.ts +5 -2
  157. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  158. package/dist/types/src/capabilities/automation-templates.d.ts +6 -0
  159. package/dist/types/src/capabilities/automation-templates.d.ts.map +1 -0
  160. package/dist/types/src/capabilities/blueprint-definition.d.ts +4 -2
  161. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  162. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +9 -0
  163. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -0
  164. package/dist/types/src/capabilities/create-object.d.ts +31 -0
  165. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  166. package/dist/types/src/capabilities/edge-model-resolver.d.ts +6 -4
  167. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  168. package/dist/types/src/capabilities/index.d.ts +62 -9
  169. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  170. package/dist/types/src/capabilities/integration-provider.d.ts +5 -0
  171. package/dist/types/src/capabilities/integration-provider.d.ts.map +1 -0
  172. package/dist/types/src/capabilities/local-model-resolver.d.ts +16 -0
  173. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  174. package/dist/types/src/capabilities/markdown-extension.d.ts +5 -0
  175. package/dist/types/src/capabilities/markdown-extension.d.ts.map +1 -0
  176. package/dist/types/src/capabilities/migrations.d.ts +6 -0
  177. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  178. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  179. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  180. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  181. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  182. package/dist/types/src/capabilities/settings.d.ts +4 -2
  183. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  184. package/dist/types/src/capabilities/state.d.ts +21 -0
  185. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  186. package/dist/types/src/capabilities/toolkit.d.ts +4 -3
  187. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  188. package/dist/types/src/components/AgentProperties/AgentProperties.d.ts +7 -0
  189. package/dist/types/src/components/AgentProperties/AgentProperties.d.ts.map +1 -0
  190. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts +15 -0
  191. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -0
  192. package/dist/types/src/components/AgentProperties/index.d.ts +2 -0
  193. package/dist/types/src/components/AgentProperties/index.d.ts.map +1 -0
  194. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +4 -4
  195. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  196. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +15 -0
  197. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -0
  198. package/dist/types/src/components/AssistantSettings/index.d.ts +1 -1
  199. package/dist/types/src/components/AssistantSettings/index.d.ts.map +1 -1
  200. package/dist/types/src/components/Chat/Chat.d.ts +52 -31
  201. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  202. package/dist/types/src/components/Chat/context.d.ts +29 -0
  203. package/dist/types/src/components/Chat/context.d.ts.map +1 -0
  204. package/dist/types/src/components/Chat/events.d.ts +13 -1
  205. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  206. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +3 -2
  207. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  208. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts +12 -0
  209. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts.map +1 -0
  210. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +13 -8
  211. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  212. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +19 -0
  213. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -0
  214. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts +2 -9
  215. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  216. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +27 -0
  217. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -0
  218. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +5 -6
  219. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  220. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts +20 -0
  221. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts.map +1 -0
  222. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
  223. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  224. package/dist/types/src/components/ChatPrompt/index.d.ts +3 -0
  225. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  226. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts +14 -0
  227. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -0
  228. package/dist/types/src/components/ChatThread/ChatThread.d.ts +16 -11
  229. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  230. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +24 -215
  231. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  232. package/dist/types/src/components/ChatThread/Link.d.ts +2 -2
  233. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  234. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +42 -0
  235. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -0
  236. package/dist/types/src/components/ChatThread/registry.d.ts +29 -0
  237. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  238. package/dist/types/src/components/ChatThread/sync.d.ts +69 -0
  239. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  240. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  241. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  242. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts +18 -0
  243. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -0
  244. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts +2 -0
  245. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts.map +1 -0
  246. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +8 -0
  247. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -0
  248. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts +25 -0
  249. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -0
  250. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +18 -0
  251. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -0
  252. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts +9 -0
  253. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -0
  254. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts +14 -0
  255. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -0
  256. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts +12 -0
  257. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -0
  258. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +12 -0
  259. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -0
  260. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts +11 -0
  261. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -0
  262. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts +5 -0
  263. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -0
  264. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts +9 -0
  265. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -0
  266. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts +15 -0
  267. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -0
  268. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +5 -0
  269. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -0
  270. package/dist/types/src/components/ChatThread/widgets/index.d.ts +10 -0
  271. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -0
  272. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +11 -0
  273. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -0
  274. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +7 -0
  275. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -0
  276. package/dist/types/src/components/ProcessTree/index.d.ts +2 -0
  277. package/dist/types/src/components/ProcessTree/index.d.ts.map +1 -0
  278. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +7 -0
  279. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +1 -0
  280. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +15 -0
  281. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +1 -0
  282. package/dist/types/src/components/RoutineProperties/index.d.ts +2 -0
  283. package/dist/types/src/components/RoutineProperties/index.d.ts.map +1 -0
  284. package/dist/types/src/components/TaskList/TaskList.d.ts +10 -0
  285. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -0
  286. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +16 -0
  287. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -0
  288. package/dist/types/src/components/TaskList/index.d.ts +2 -0
  289. package/dist/types/src/components/TaskList/index.d.ts.map +1 -0
  290. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +10 -11
  291. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  292. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +13 -7
  293. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  294. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +13 -4
  295. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  296. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +10 -2
  297. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  298. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +12 -0
  299. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  300. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  301. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  302. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  303. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  304. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +12 -0
  305. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  306. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  307. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  308. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  309. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  310. package/dist/types/src/components/Toolbox/Toolbox.d.ts +15 -16
  311. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  312. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +15 -5
  313. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  314. package/dist/types/src/components/index.d.ts +7 -9
  315. package/dist/types/src/components/index.d.ts.map +1 -1
  316. package/dist/types/src/constants.d.ts +5 -0
  317. package/dist/types/src/constants.d.ts.map +1 -0
  318. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +6 -0
  319. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -0
  320. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +19 -0
  321. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -0
  322. package/dist/types/src/containers/AgentArticle/index.d.ts +2 -0
  323. package/dist/types/src/containers/AgentArticle/index.d.ts.map +1 -0
  324. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +6 -0
  325. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -0
  326. package/dist/types/src/containers/AgentProperties/index.d.ts +2 -0
  327. package/dist/types/src/containers/AgentProperties/index.d.ts.map +1 -0
  328. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +6 -0
  329. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
  330. package/dist/types/src/containers/BlueprintArticle/index.d.ts +2 -0
  331. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
  332. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +25 -0
  333. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -0
  334. package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts +15 -0
  335. package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts.map +1 -0
  336. package/dist/types/src/containers/ChatArticle/index.d.ts +2 -0
  337. package/dist/types/src/containers/ChatArticle/index.d.ts.map +1 -0
  338. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +26 -0
  339. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
  340. package/dist/types/src/containers/ChatCompanion/index.d.ts +2 -0
  341. package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
  342. package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +2 -3
  343. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
  344. package/dist/types/src/containers/ChatDialog/index.d.ts +2 -0
  345. package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
  346. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts +6 -0
  347. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -0
  348. package/dist/types/src/containers/PlanArticle/index.d.ts +2 -0
  349. package/dist/types/src/containers/PlanArticle/index.d.ts.map +1 -0
  350. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +6 -0
  351. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
  352. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +15 -0
  353. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +1 -0
  354. package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
  355. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +1 -0
  356. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +6 -0
  357. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +1 -0
  358. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +21 -0
  359. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +1 -0
  360. package/dist/types/src/containers/RoutineList/index.d.ts +2 -0
  361. package/dist/types/src/containers/RoutineList/index.d.ts.map +1 -0
  362. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +8 -0
  363. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -0
  364. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts +16 -0
  365. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -0
  366. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +19 -0
  367. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -0
  368. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts +2 -0
  369. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts.map +1 -0
  370. package/dist/types/src/containers/TracePanel/index.d.ts +4 -0
  371. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -0
  372. package/dist/types/src/containers/TracePanel/testing/index.d.ts +3 -0
  373. package/dist/types/src/containers/TracePanel/testing/index.d.ts.map +1 -0
  374. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +14 -0
  375. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -0
  376. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts +12 -0
  377. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts.map +1 -0
  378. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +5 -0
  379. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -0
  380. package/dist/types/src/containers/TriggerStatus/index.d.ts +2 -0
  381. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
  382. package/dist/types/src/containers/index.d.ts +13 -0
  383. package/dist/types/src/containers/index.d.ts.map +1 -0
  384. package/dist/types/src/execution-graph/execution-graph.d.ts +108 -0
  385. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -0
  386. package/dist/types/src/execution-graph/execution-graph.test.d.ts +2 -0
  387. package/dist/types/src/execution-graph/execution-graph.test.d.ts.map +1 -0
  388. package/dist/types/src/execution-graph/index.d.ts +3 -0
  389. package/dist/types/src/execution-graph/index.d.ts.map +1 -0
  390. package/dist/types/src/execution-graph/remote-snapshot.test.d.ts +2 -0
  391. package/dist/types/src/execution-graph/remote-snapshot.test.d.ts.map +1 -0
  392. package/dist/types/src/execution-graph/span-tree.d.ts +76 -0
  393. package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -0
  394. package/dist/types/src/execution-graph/span-tree.test.d.ts +2 -0
  395. package/dist/types/src/execution-graph/span-tree.test.d.ts.map +1 -0
  396. package/dist/types/src/execution-graph/sub-agent-delegation.test.d.ts +2 -0
  397. package/dist/types/src/execution-graph/sub-agent-delegation.test.d.ts.map +1 -0
  398. package/dist/types/src/execution-graph/testing/collect-trace-events.d.ts +40 -0
  399. package/dist/types/src/execution-graph/testing/collect-trace-events.d.ts.map +1 -0
  400. package/dist/types/src/execution-graph/testing/index.d.ts +2 -0
  401. package/dist/types/src/execution-graph/testing/index.d.ts.map +1 -0
  402. package/dist/types/src/extensions/index.d.ts +2 -0
  403. package/dist/types/src/extensions/index.d.ts.map +1 -0
  404. package/dist/types/src/extensions/prompt-extension.d.ts +10 -0
  405. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -0
  406. package/dist/types/src/feed-logger.d.ts +13 -0
  407. package/dist/types/src/feed-logger.d.ts.map +1 -0
  408. package/dist/types/src/functions/services.test.d.ts +2 -0
  409. package/dist/types/src/functions/services.test.d.ts.map +1 -0
  410. package/dist/types/src/hooks/index.d.ts +8 -4
  411. package/dist/types/src/hooks/index.d.ts.map +1 -1
  412. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +59 -14
  413. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  414. package/dist/types/src/hooks/useChatKeymap.d.ts +12 -0
  415. package/dist/types/src/hooks/useChatKeymap.d.ts.map +1 -0
  416. package/dist/types/src/hooks/useChatProcessor.d.ts +9 -12
  417. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  418. package/dist/types/src/hooks/useChatServices.d.ts +9 -8
  419. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  420. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  421. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  422. package/dist/types/src/hooks/useContextBinder.d.ts +5 -0
  423. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
  424. package/dist/types/src/hooks/useContextObjects.d.ts +16 -0
  425. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
  426. package/dist/types/src/hooks/useDebug.d.ts +10 -0
  427. package/dist/types/src/hooks/useDebug.d.ts.map +1 -0
  428. package/dist/types/src/hooks/useFilteredTypes.d.ts +3 -0
  429. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  430. package/dist/types/src/{stories/hooks → hooks}/useFlush.d.ts +1 -1
  431. package/dist/types/src/hooks/useFlush.d.ts.map +1 -0
  432. package/dist/types/src/hooks/usePresets.d.ts +3 -3
  433. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  434. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  435. package/dist/types/src/index.d.ts +2 -4
  436. package/dist/types/src/index.d.ts.map +1 -1
  437. package/dist/types/src/meta.d.ts +6 -4
  438. package/dist/types/src/meta.d.ts.map +1 -1
  439. package/dist/types/src/operations/create-chat.d.ts +5 -0
  440. package/dist/types/src/operations/create-chat.d.ts.map +1 -0
  441. package/dist/types/src/operations/ensure-companion-chat.d.ts +5 -0
  442. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -0
  443. package/dist/types/src/operations/fork-chat.d.ts +5 -0
  444. package/dist/types/src/operations/fork-chat.d.ts.map +1 -0
  445. package/dist/types/src/operations/index.d.ts +3 -0
  446. package/dist/types/src/operations/index.d.ts.map +1 -0
  447. package/dist/types/src/operations/prompt.node.test.d.ts +2 -0
  448. package/dist/types/src/operations/prompt.node.test.d.ts.map +1 -0
  449. package/dist/types/src/operations/resolve-navigation-targets.d.ts +17 -0
  450. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -0
  451. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +5 -0
  452. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -0
  453. package/dist/types/src/operations/set-current-chat.d.ts +5 -0
  454. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -0
  455. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts +5 -0
  456. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts.map +1 -0
  457. package/dist/types/src/operations/update-chat-name.d.ts +5 -0
  458. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -0
  459. package/dist/types/src/paths.d.ts +3 -0
  460. package/dist/types/src/paths.d.ts.map +1 -0
  461. package/dist/types/src/plugin.d.ts +4 -0
  462. package/dist/types/src/plugin.d.ts.map +1 -0
  463. package/dist/types/src/processor/index.d.ts +3 -0
  464. package/dist/types/src/processor/index.d.ts.map +1 -0
  465. package/dist/types/src/{hooks → processor}/presets.d.ts +2 -2
  466. package/dist/types/src/processor/presets.d.ts.map +1 -0
  467. package/dist/types/src/processor/processor.d.ts +317 -0
  468. package/dist/types/src/processor/processor.d.ts.map +1 -0
  469. package/dist/types/src/processor/processor.node.test.d.ts +2 -0
  470. package/dist/types/src/processor/processor.node.test.d.ts.map +1 -0
  471. package/dist/types/src/templates/automation-templates.test.d.ts +2 -0
  472. package/dist/types/src/templates/automation-templates.test.d.ts.map +1 -0
  473. package/dist/types/src/templates/daily-digest.d.ts +3 -0
  474. package/dist/types/src/templates/daily-digest.d.ts.map +1 -0
  475. package/dist/types/src/templates/index.d.ts +4 -0
  476. package/dist/types/src/templates/index.d.ts.map +1 -0
  477. package/dist/types/src/templates/research-brief.d.ts +3 -0
  478. package/dist/types/src/templates/research-brief.d.ts.map +1 -0
  479. package/dist/types/src/templates/scaffold.d.ts +17 -0
  480. package/dist/types/src/templates/scaffold.d.ts.map +1 -0
  481. package/dist/types/src/testing/index.d.ts +3 -1
  482. package/dist/types/src/testing/index.d.ts.map +1 -1
  483. package/dist/types/src/testing/snapshot.d.ts +21 -0
  484. package/dist/types/src/testing/snapshot.d.ts.map +1 -0
  485. package/dist/types/src/testing/test-generator.d.ts +7 -0
  486. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  487. package/dist/types/src/testing/test-generator.test.d.ts +2 -0
  488. package/dist/types/src/testing/test-generator.test.d.ts.map +1 -0
  489. package/dist/types/src/testing/test-sequence.d.ts +10 -7
  490. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  491. package/dist/types/src/testing/test-services.d.ts +2 -2
  492. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  493. package/dist/types/src/testing/test-trace.d.ts +5 -0
  494. package/dist/types/src/testing/test-trace.d.ts.map +1 -0
  495. package/dist/types/src/testing/trace-timeline.node.test.d.ts +2 -0
  496. package/dist/types/src/testing/trace-timeline.node.test.d.ts.map +1 -0
  497. package/dist/types/src/testing.d.ts +2 -0
  498. package/dist/types/src/testing.d.ts.map +1 -0
  499. package/dist/types/src/translations.d.ts +2 -76
  500. package/dist/types/src/translations.d.ts.map +1 -1
  501. package/dist/types/src/types/Assistant.d.ts +34 -37
  502. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  503. package/dist/types/src/types/AssistantCapabilities.d.ts +30 -0
  504. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -0
  505. package/dist/types/src/types/AssistantEvents.d.ts +3 -0
  506. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -0
  507. package/dist/types/src/types/AssistantOperation.d.ts +153 -0
  508. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -0
  509. package/dist/types/src/types/Settings.d.ts +27 -0
  510. package/dist/types/src/types/Settings.d.ts.map +1 -0
  511. package/dist/types/src/types/index.d.ts +9 -2
  512. package/dist/types/src/types/index.d.ts.map +1 -1
  513. package/dist/types/src/types/preset.d.ts +12 -0
  514. package/dist/types/src/types/preset.d.ts.map +1 -0
  515. package/dist/types/src/types/service.d.ts +13 -213
  516. package/dist/types/src/types/service.d.ts.map +1 -1
  517. package/dist/types/src/util/suggestions.d.ts +9 -0
  518. package/dist/types/src/util/suggestions.d.ts.map +1 -0
  519. package/dist/types/src/util/suggestions.test.d.ts +2 -0
  520. package/dist/types/src/util/suggestions.test.d.ts.map +1 -0
  521. package/dist/types/tsconfig.tsbuildinfo +1 -1
  522. package/package.json +198 -119
  523. package/src/AssistantPlugin.conversations.json +1 -0
  524. package/src/AssistantPlugin.node.ts +90 -0
  525. package/src/AssistantPlugin.test.ts +213 -0
  526. package/src/AssistantPlugin.ts +158 -0
  527. package/src/AssistantPlugin.workerd.ts +41 -0
  528. package/src/blueprints/assistant/blueprint.node.test.ts +46 -0
  529. package/src/blueprints/assistant/blueprint.ts +31 -0
  530. package/src/blueprints/assistant/index.ts +5 -0
  531. package/src/{components/Timeline → blueprints}/index.ts +1 -1
  532. package/src/capabilities/agent-hydrator.ts +37 -0
  533. package/src/capabilities/agent-service.ts +38 -0
  534. package/src/capabilities/ai-context.ts +48 -0
  535. package/src/capabilities/ai-service.ts +46 -24
  536. package/src/capabilities/app-graph-builder.ts +222 -154
  537. package/src/capabilities/automation-templates.ts +16 -0
  538. package/src/capabilities/blueprint-definition.ts +58 -25
  539. package/src/capabilities/companion-chat-provisioner.ts +164 -0
  540. package/src/capabilities/create-object.ts +100 -0
  541. package/src/capabilities/edge-model-resolver.ts +66 -25
  542. package/src/capabilities/index.ts +40 -10
  543. package/src/capabilities/integration-provider.ts +86 -0
  544. package/src/capabilities/local-model-resolver.ts +48 -0
  545. package/src/capabilities/markdown-extension.ts +40 -0
  546. package/src/capabilities/migrations.ts +28 -0
  547. package/src/capabilities/operation-handler.ts +16 -0
  548. package/src/capabilities/react-surface.tsx +158 -129
  549. package/src/capabilities/settings.ts +24 -12
  550. package/src/capabilities/state.ts +35 -0
  551. package/src/capabilities/toolkit.ts +7 -100
  552. package/src/components/AgentProperties/AgentProperties.stories.tsx +74 -0
  553. package/src/components/AgentProperties/AgentProperties.tsx +103 -0
  554. package/src/components/AgentProperties/index.ts +5 -0
  555. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +35 -0
  556. package/src/components/AssistantSettings/AssistantSettings.tsx +29 -91
  557. package/src/components/AssistantSettings/index.ts +2 -2
  558. package/src/components/Chat/Chat.tsx +238 -297
  559. package/src/components/Chat/context.ts +39 -0
  560. package/src/components/Chat/events.ts +21 -1
  561. package/src/components/ChatPrompt/ChatActions.tsx +36 -32
  562. package/src/components/ChatPrompt/ChatMcpErrors.tsx +50 -0
  563. package/src/components/ChatPrompt/ChatOptions.stories.tsx +136 -0
  564. package/src/components/ChatPrompt/ChatOptions.tsx +405 -42
  565. package/src/components/ChatPrompt/ChatPresets.tsx +4 -7
  566. package/src/components/ChatPrompt/ChatPrompt.tsx +180 -0
  567. package/src/components/ChatPrompt/ChatReferences.tsx +38 -40
  568. package/src/components/ChatPrompt/ChatStatus.tsx +123 -0
  569. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
  570. package/src/components/ChatPrompt/index.ts +3 -0
  571. package/src/components/ChatThread/Anchor.stories.tsx +95 -0
  572. package/src/components/ChatThread/ChatThread.stories.tsx +98 -219
  573. package/src/components/ChatThread/ChatThread.tsx +101 -36
  574. package/src/components/ChatThread/DEBUG.md +41 -0
  575. package/src/components/ChatThread/Link.tsx +10 -23
  576. package/src/components/ChatThread/MarkdownStream.stories.tsx +281 -0
  577. package/src/components/ChatThread/registry.tsx +290 -0
  578. package/src/components/ChatThread/sync.test.ts +257 -0
  579. package/src/components/ChatThread/sync.ts +150 -0
  580. package/src/components/ChatThread/testing/reasoning.md +25 -0
  581. package/src/components/ChatThread/testing/thinking.md +21 -0
  582. package/src/components/ChatThread/testing/thread-1.md +30 -0
  583. package/src/components/ChatThread/testing/thread-2.md +56 -0
  584. package/src/components/ChatThread/testing/thread-widgets.md +79 -0
  585. package/src/components/ChatThread/tool-widget-state.test.ts +34 -0
  586. package/src/components/ChatThread/tool-widget-state.ts +48 -0
  587. package/src/components/ChatThread/widgets/FallbackWidget.tsx +28 -0
  588. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +68 -0
  589. package/src/components/ChatThread/widgets/ReasoningWidget.ts +139 -0
  590. package/src/components/ChatThread/widgets/ReferenceWidget.ts +33 -0
  591. package/src/components/ChatThread/widgets/SelectWidget.ts +39 -0
  592. package/src/components/ChatThread/widgets/StatsWidget.ts +31 -0
  593. package/src/components/ChatThread/widgets/StatusWidget.ts +53 -0
  594. package/src/components/ChatThread/widgets/SuggestionWidget.ts +41 -0
  595. package/src/components/ChatThread/widgets/SummaryWidget.tsx +29 -0
  596. package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +55 -0
  597. package/src/components/ChatThread/widgets/ToolWidget.tsx +173 -0
  598. package/src/components/ChatThread/widgets/defaults.ts +8 -0
  599. package/src/components/ChatThread/widgets/index.ts +13 -0
  600. package/src/components/ProcessTree/ProcessTree.stories.tsx +83 -0
  601. package/src/components/ProcessTree/ProcessTree.tsx +120 -0
  602. package/src/components/ProcessTree/index.ts +5 -0
  603. package/src/components/RoutineProperties/RoutineProperties.stories.tsx +59 -0
  604. package/src/components/RoutineProperties/RoutineProperties.tsx +23 -0
  605. package/src/components/RoutineProperties/index.ts +5 -0
  606. package/src/components/TaskList/TaskList.stories.tsx +44 -0
  607. package/src/components/TaskList/TaskList.tsx +45 -0
  608. package/src/components/TaskList/index.ts +5 -0
  609. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +30 -20
  610. package/src/components/TemplateEditor/TemplateEditor.tsx +60 -72
  611. package/src/components/TemplateEditor/TemplateForm.stories.tsx +25 -21
  612. package/src/components/TemplateEditor/TemplateForm.tsx +113 -87
  613. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +274 -0
  614. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  615. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  616. package/src/components/ToolBlock/ToolBlock.tsx +152 -0
  617. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  618. package/src/components/ToolBlock/index.ts +6 -0
  619. package/src/components/Toolbox/Toolbox.stories.tsx +22 -27
  620. package/src/components/Toolbox/Toolbox.tsx +82 -82
  621. package/src/components/index.ts +9 -8
  622. package/src/constants.ts +9 -0
  623. package/src/containers/AgentArticle/AgentArticle.stories.tsx +124 -0
  624. package/src/containers/AgentArticle/AgentArticle.tsx +192 -0
  625. package/src/containers/AgentArticle/index.ts +5 -0
  626. package/src/containers/AgentProperties/AgentProperties.tsx +43 -0
  627. package/src/containers/AgentProperties/index.ts +5 -0
  628. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +29 -0
  629. package/src/containers/BlueprintArticle/index.ts +5 -0
  630. package/src/containers/ChatArticle/ChatArticle.stories.tsx +78 -0
  631. package/src/containers/ChatArticle/ChatArticle.tsx +112 -0
  632. package/src/containers/ChatArticle/index.ts +5 -0
  633. package/src/containers/ChatCompanion/ChatCompanion.tsx +127 -0
  634. package/src/containers/ChatCompanion/index.ts +5 -0
  635. package/src/containers/ChatDialog/ChatDialog.tsx +67 -0
  636. package/src/containers/ChatDialog/index.ts +5 -0
  637. package/src/containers/PlanArticle/PlanArticle.tsx +33 -0
  638. package/src/containers/PlanArticle/index.ts +5 -0
  639. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +75 -0
  640. package/src/containers/RoutineArticle/RoutineArticle.tsx +109 -0
  641. package/src/containers/RoutineArticle/index.ts +5 -0
  642. package/src/containers/RoutineList/RoutineList.stories.tsx +130 -0
  643. package/src/containers/RoutineList/RoutineList.tsx +50 -0
  644. package/src/containers/RoutineList/index.ts +5 -0
  645. package/src/containers/TracePanel/TracePanel.stories.tsx +347 -0
  646. package/src/containers/TracePanel/TracePanel.tsx +257 -0
  647. package/src/containers/TracePanel/dxn-extractor.test.ts +153 -0
  648. package/src/containers/TracePanel/dxn-extractor.ts +166 -0
  649. package/src/containers/TracePanel/index.ts +9 -0
  650. package/src/containers/TracePanel/testing/index.ts +6 -0
  651. package/src/containers/TracePanel/testing/simulated-agent.ts +114 -0
  652. package/src/containers/TracePanel/testing/snapshot-playback.ts +45 -0
  653. package/src/containers/TriggerStatus/TriggerStatus.tsx +130 -0
  654. package/src/containers/TriggerStatus/index.ts +5 -0
  655. package/src/containers/index.ts +17 -0
  656. package/src/execution-graph/SPEC.md +690 -0
  657. package/src/execution-graph/execution-graph.test.ts +891 -0
  658. package/src/execution-graph/execution-graph.ts +777 -0
  659. package/src/execution-graph/index.ts +24 -0
  660. package/src/execution-graph/remote-snapshot.test.ts +116 -0
  661. package/src/execution-graph/span-tree.test.ts +249 -0
  662. package/src/execution-graph/span-tree.ts +269 -0
  663. package/src/execution-graph/sub-agent-delegation.test.ts +50 -0
  664. package/src/execution-graph/testing/collect-trace-events.ts +74 -0
  665. package/src/execution-graph/testing/index.ts +5 -0
  666. package/src/execution-graph/testing/sub-agent-delegation.json +1285 -0
  667. package/src/extensions/index.ts +5 -0
  668. package/src/extensions/prompt-extension.ts +111 -0
  669. package/src/feed-logger.ts +149 -0
  670. package/src/functions/services.test.ts +53 -0
  671. package/src/hooks/index.ts +10 -5
  672. package/src/hooks/useBlueprintRegistry.ts +90 -44
  673. package/src/hooks/useChatKeymap.ts +52 -0
  674. package/src/hooks/useChatProcessor.ts +65 -40
  675. package/src/hooks/useChatServices.ts +16 -60
  676. package/src/hooks/useChatToolbarActions.ts +124 -0
  677. package/src/hooks/useContextBinder.ts +43 -0
  678. package/src/hooks/useContextObjects.ts +51 -0
  679. package/src/hooks/useDebug.ts +38 -0
  680. package/src/hooks/useFilteredTypes.ts +39 -0
  681. package/src/hooks/usePresets.ts +7 -5
  682. package/src/hooks/useReferencesProvider.ts +11 -22
  683. package/src/index.ts +2 -5
  684. package/src/meta.ts +35 -10
  685. package/src/operations/create-chat.ts +57 -0
  686. package/src/operations/ensure-companion-chat.ts +63 -0
  687. package/src/operations/fork-chat.ts +112 -0
  688. package/src/operations/index.ts +16 -0
  689. package/src/operations/prompt.node.test.ts +82 -0
  690. package/src/operations/resolve-navigation-targets.ts +31 -0
  691. package/src/operations/run-prompt-in-new-chat.ts +113 -0
  692. package/src/operations/set-current-chat.ts +49 -0
  693. package/src/operations/toggle-trace-panel-debug.ts +27 -0
  694. package/src/operations/update-chat-name.ts +65 -0
  695. package/src/paths.ts +10 -0
  696. package/src/plugin.ts +11 -0
  697. package/src/processor/index.ts +6 -0
  698. package/src/processor/presets.ts +72 -0
  699. package/src/processor/processor.node.test.ts +40 -0
  700. package/src/processor/processor.ts +423 -0
  701. package/src/templates/automation-templates.test.ts +66 -0
  702. package/src/templates/daily-digest.ts +37 -0
  703. package/src/templates/index.ts +11 -0
  704. package/src/templates/research-brief.ts +40 -0
  705. package/src/templates/scaffold.ts +74 -0
  706. package/src/testing/data/trace-timeline-multiple.dx.json +1 -0
  707. package/src/testing/data/trace-timeline-remote.dx.json +1 -0
  708. package/src/testing/data/trace-timeline.dx.json +4657 -0
  709. package/src/testing/index.ts +3 -1
  710. package/src/testing/snapshot.ts +35 -0
  711. package/src/testing/test-generator.test.ts +71 -0
  712. package/src/testing/test-generator.ts +284 -0
  713. package/src/testing/test-sequence.ts +7 -32
  714. package/src/testing/test-services.ts +10 -14
  715. package/src/testing/test-trace.ts +20 -0
  716. package/src/testing/trace-timeline.node.conversations.json +1 -0
  717. package/src/testing/trace-timeline.node.test.ts +241 -0
  718. package/src/testing.ts +9 -0
  719. package/src/translations.ts +167 -70
  720. package/src/types/Assistant.ts +17 -50
  721. package/src/types/AssistantCapabilities.ts +35 -0
  722. package/src/types/AssistantEvents.ts +11 -0
  723. package/src/types/AssistantOperation.ts +164 -0
  724. package/src/types/Settings.ts +82 -0
  725. package/src/types/index.ts +15 -2
  726. package/src/types/preset.ts +16 -0
  727. package/src/types/service.ts +22 -16
  728. package/src/util/suggestions.test.ts +52 -0
  729. package/src/util/suggestions.ts +42 -0
  730. package/src/vite-env.d.ts +35 -0
  731. package/dist/lib/browser/BlueprintContainer-H7H4BQ2C.mjs +0 -29
  732. package/dist/lib/browser/BlueprintContainer-H7H4BQ2C.mjs.map +0 -7
  733. package/dist/lib/browser/ChatContainer-OUVSX5V5.mjs +0 -76
  734. package/dist/lib/browser/ChatContainer-OUVSX5V5.mjs.map +0 -7
  735. package/dist/lib/browser/ChatDialog-P4FLEOHG.mjs +0 -86
  736. package/dist/lib/browser/ChatDialog-P4FLEOHG.mjs.map +0 -7
  737. package/dist/lib/browser/SequenceContainer-627OQ557.mjs +0 -163
  738. package/dist/lib/browser/SequenceContainer-627OQ557.mjs.map +0 -7
  739. package/dist/lib/browser/ai-service-7KJ5LXBT.mjs +0 -22
  740. package/dist/lib/browser/ai-service-7KJ5LXBT.mjs.map +0 -7
  741. package/dist/lib/browser/app-graph-builder-AVHHQ3KV.mjs +0 -166
  742. package/dist/lib/browser/app-graph-builder-AVHHQ3KV.mjs.map +0 -7
  743. package/dist/lib/browser/blueprint-definition-CMGIZAOW.mjs +0 -146
  744. package/dist/lib/browser/blueprint-definition-CMGIZAOW.mjs.map +0 -7
  745. package/dist/lib/browser/chunk-BRLHDHOF.mjs +0 -244
  746. package/dist/lib/browser/chunk-BRLHDHOF.mjs.map +0 -7
  747. package/dist/lib/browser/chunk-HRLMD35M.mjs +0 -191
  748. package/dist/lib/browser/chunk-HRLMD35M.mjs.map +0 -7
  749. package/dist/lib/browser/chunk-LKP65RPA.mjs +0 -20
  750. package/dist/lib/browser/chunk-LKP65RPA.mjs.map +0 -7
  751. package/dist/lib/browser/chunk-NZDCKQ6W.mjs +0 -89
  752. package/dist/lib/browser/chunk-NZDCKQ6W.mjs.map +0 -7
  753. package/dist/lib/browser/chunk-QB7OVS6Z.mjs +0 -16
  754. package/dist/lib/browser/chunk-QB7OVS6Z.mjs.map +0 -7
  755. package/dist/lib/browser/chunk-VEBVAHNM.mjs +0 -2231
  756. package/dist/lib/browser/chunk-VEBVAHNM.mjs.map +0 -7
  757. package/dist/lib/browser/edge-model-resolver-2HB4PCWH.mjs +0 -24
  758. package/dist/lib/browser/edge-model-resolver-2HB4PCWH.mjs.map +0 -7
  759. package/dist/lib/browser/index.mjs +0 -293
  760. package/dist/lib/browser/index.mjs.map +0 -7
  761. package/dist/lib/browser/intent-resolver-MVOIEJXZ.mjs +0 -81
  762. package/dist/lib/browser/intent-resolver-MVOIEJXZ.mjs.map +0 -7
  763. package/dist/lib/browser/meta.json +0 -1
  764. package/dist/lib/browser/react-surface-4HXS3YLT.mjs +0 -163
  765. package/dist/lib/browser/react-surface-4HXS3YLT.mjs.map +0 -7
  766. package/dist/lib/browser/settings-G2EZXMWT.mjs +0 -23
  767. package/dist/lib/browser/settings-G2EZXMWT.mjs.map +0 -7
  768. package/dist/lib/browser/toolkit-IW4FBLLB.mjs +0 -105
  769. package/dist/lib/browser/toolkit-IW4FBLLB.mjs.map +0 -7
  770. package/dist/lib/browser/types/index.mjs +0 -19
  771. package/dist/lib/node-esm/BlueprintContainer-VH4EE4CM.mjs +0 -30
  772. package/dist/lib/node-esm/BlueprintContainer-VH4EE4CM.mjs.map +0 -7
  773. package/dist/lib/node-esm/ChatContainer-D5FABDNE.mjs +0 -77
  774. package/dist/lib/node-esm/ChatContainer-D5FABDNE.mjs.map +0 -7
  775. package/dist/lib/node-esm/ChatDialog-NKWVXHJP.mjs +0 -87
  776. package/dist/lib/node-esm/ChatDialog-NKWVXHJP.mjs.map +0 -7
  777. package/dist/lib/node-esm/SequenceContainer-EQ5NP2PG.mjs +0 -164
  778. package/dist/lib/node-esm/SequenceContainer-EQ5NP2PG.mjs.map +0 -7
  779. package/dist/lib/node-esm/ai-service-LDD32477.mjs +0 -23
  780. package/dist/lib/node-esm/ai-service-LDD32477.mjs.map +0 -7
  781. package/dist/lib/node-esm/app-graph-builder-RMOUJMMG.mjs +0 -167
  782. package/dist/lib/node-esm/app-graph-builder-RMOUJMMG.mjs.map +0 -7
  783. package/dist/lib/node-esm/blueprint-definition-AEWYMW6I.mjs +0 -147
  784. package/dist/lib/node-esm/blueprint-definition-AEWYMW6I.mjs.map +0 -7
  785. package/dist/lib/node-esm/chunk-3SOC5GOP.mjs +0 -2232
  786. package/dist/lib/node-esm/chunk-3SOC5GOP.mjs.map +0 -7
  787. package/dist/lib/node-esm/chunk-F7RXCX5Y.mjs +0 -192
  788. package/dist/lib/node-esm/chunk-F7RXCX5Y.mjs.map +0 -7
  789. package/dist/lib/node-esm/chunk-GAWXJ7K5.mjs +0 -90
  790. package/dist/lib/node-esm/chunk-GAWXJ7K5.mjs.map +0 -7
  791. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  792. package/dist/lib/node-esm/chunk-KOC6ESG7.mjs +0 -22
  793. package/dist/lib/node-esm/chunk-KOC6ESG7.mjs.map +0 -7
  794. package/dist/lib/node-esm/chunk-RD755HN3.mjs +0 -245
  795. package/dist/lib/node-esm/chunk-RD755HN3.mjs.map +0 -7
  796. package/dist/lib/node-esm/chunk-X6AANUHZ.mjs +0 -17
  797. package/dist/lib/node-esm/chunk-X6AANUHZ.mjs.map +0 -7
  798. package/dist/lib/node-esm/edge-model-resolver-UDDR2IA6.mjs +0 -25
  799. package/dist/lib/node-esm/edge-model-resolver-UDDR2IA6.mjs.map +0 -7
  800. package/dist/lib/node-esm/index.mjs +0 -294
  801. package/dist/lib/node-esm/index.mjs.map +0 -7
  802. package/dist/lib/node-esm/intent-resolver-DTDNCX3C.mjs +0 -82
  803. package/dist/lib/node-esm/intent-resolver-DTDNCX3C.mjs.map +0 -7
  804. package/dist/lib/node-esm/meta.json +0 -1
  805. package/dist/lib/node-esm/react-surface-V6JNEZVO.mjs +0 -164
  806. package/dist/lib/node-esm/react-surface-V6JNEZVO.mjs.map +0 -7
  807. package/dist/lib/node-esm/settings-AIP5FOJG.mjs +0 -24
  808. package/dist/lib/node-esm/settings-AIP5FOJG.mjs.map +0 -7
  809. package/dist/lib/node-esm/toolkit-2VNUL77B.mjs +0 -106
  810. package/dist/lib/node-esm/toolkit-2VNUL77B.mjs.map +0 -7
  811. package/dist/lib/node-esm/types/index.mjs +0 -20
  812. package/dist/types/src/capabilities/capabilities.d.ts +0 -11
  813. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  814. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  815. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  816. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  817. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  818. package/dist/types/src/components/ChatContainer.d.ts +0 -12
  819. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  820. package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
  821. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -18
  822. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  823. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  824. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  825. package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
  826. package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
  827. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  828. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  829. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  830. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  831. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  832. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  833. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -8
  834. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  835. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  836. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  837. package/dist/types/src/components/Timeline/Timeline.d.ts +0 -24
  838. package/dist/types/src/components/Timeline/Timeline.d.ts.map +0 -1
  839. package/dist/types/src/components/Timeline/Timeline.stories.d.ts +0 -9
  840. package/dist/types/src/components/Timeline/Timeline.stories.d.ts.map +0 -1
  841. package/dist/types/src/components/Timeline/index.d.ts +0 -2
  842. package/dist/types/src/components/Timeline/index.d.ts.map +0 -1
  843. package/dist/types/src/events.d.ts +0 -4
  844. package/dist/types/src/events.d.ts.map +0 -1
  845. package/dist/types/src/functions/analysis.d.ts +0 -5
  846. package/dist/types/src/functions/analysis.d.ts.map +0 -1
  847. package/dist/types/src/functions/index.d.ts +0 -4
  848. package/dist/types/src/functions/index.d.ts.map +0 -1
  849. package/dist/types/src/functions/list.d.ts +0 -10
  850. package/dist/types/src/functions/list.d.ts.map +0 -1
  851. package/dist/types/src/functions/load.d.ts +0 -8
  852. package/dist/types/src/functions/load.d.ts.map +0 -1
  853. package/dist/types/src/hooks/chat-processor.d.ts +0 -72
  854. package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
  855. package/dist/types/src/hooks/errors.d.ts +0 -4
  856. package/dist/types/src/hooks/errors.d.ts.map +0 -1
  857. package/dist/types/src/hooks/presets.d.ts.map +0 -1
  858. package/dist/types/src/hooks/useResolveRef.d.ts +0 -4
  859. package/dist/types/src/hooks/useResolveRef.d.ts.map +0 -1
  860. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  861. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  862. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  863. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  864. package/dist/types/src/parser/index.d.ts +0 -4
  865. package/dist/types/src/parser/index.d.ts.map +0 -1
  866. package/dist/types/src/parser/query-parser.d.ts +0 -15
  867. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  868. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  869. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  870. package/dist/types/src/parser/types.d.ts +0 -24
  871. package/dist/types/src/parser/types.d.ts.map +0 -1
  872. package/dist/types/src/queue-logger.d.ts +0 -11
  873. package/dist/types/src/queue-logger.d.ts.map +0 -1
  874. package/dist/types/src/stories/Chat.stories.d.ts +0 -268
  875. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  876. package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -5
  877. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
  878. package/dist/types/src/stories/components/ChatContainer.d.ts +0 -5
  879. package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
  880. package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
  881. package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
  882. package/dist/types/src/stories/components/LoggingContainer.d.ts +0 -5
  883. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +0 -1
  884. package/dist/types/src/stories/components/SurfaceContainer.d.ts +0 -8
  885. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +0 -1
  886. package/dist/types/src/stories/components/TasksContainer.d.ts +0 -5
  887. package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
  888. package/dist/types/src/stories/components/index.d.ts +0 -8
  889. package/dist/types/src/stories/components/index.d.ts.map +0 -1
  890. package/dist/types/src/stories/components/types.d.ts +0 -7
  891. package/dist/types/src/stories/components/types.d.ts.map +0 -1
  892. package/dist/types/src/stories/hooks/index.d.ts +0 -3
  893. package/dist/types/src/stories/hooks/index.d.ts.map +0 -1
  894. package/dist/types/src/stories/hooks/useFlush.d.ts.map +0 -1
  895. package/dist/types/src/stories/hooks/useMatcherExtension.d.ts +0 -3
  896. package/dist/types/src/stories/hooks/useMatcherExtension.d.ts.map +0 -1
  897. package/dist/types/src/stories/testing/data.d.ts +0 -142
  898. package/dist/types/src/stories/testing/data.d.ts.map +0 -1
  899. package/dist/types/src/stories/testing/index.d.ts +0 -3
  900. package/dist/types/src/stories/testing/index.d.ts.map +0 -1
  901. package/dist/types/src/stories/testing/testing.d.ts +0 -26
  902. package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
  903. package/dist/types/src/testing/test-functions.d.ts +0 -6
  904. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  905. package/dist/types/src/tools/function.d.ts +0 -5
  906. package/dist/types/src/tools/function.d.ts.map +0 -1
  907. package/dist/types/src/tools/index.d.ts +0 -3
  908. package/dist/types/src/tools/index.d.ts.map +0 -1
  909. package/dist/types/src/tools/openapi.d.ts +0 -10
  910. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  911. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  912. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  913. package/dist/types/src/types/AssistantAction.d.ts +0 -90
  914. package/dist/types/src/types/AssistantAction.d.ts.map +0 -1
  915. package/dist/types/src/types/defs.d.ts +0 -2
  916. package/dist/types/src/types/defs.d.ts.map +0 -1
  917. package/src/AssistantPlugin.tsx +0 -145
  918. package/src/capabilities/capabilities.ts +0 -22
  919. package/src/capabilities/intent-resolver.ts +0 -73
  920. package/src/components/BlueprintContainer.tsx +0 -24
  921. package/src/components/ChatContainer.tsx +0 -69
  922. package/src/components/ChatDialog.tsx +0 -68
  923. package/src/components/ChatThread/ChatMessage.tsx +0 -282
  924. package/src/components/ChatThread/ToolBlock.tsx +0 -125
  925. package/src/components/ChatThread/reducer.ts +0 -52
  926. package/src/components/PromptSettings.tsx +0 -89
  927. package/src/components/SequenceContainer.tsx +0 -133
  928. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -33
  929. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  930. package/src/components/SequenceEditor/index.ts +0 -5
  931. package/src/components/Timeline/Timeline.stories.tsx +0 -53
  932. package/src/components/Timeline/Timeline.tsx +0 -159
  933. package/src/events.ts +0 -11
  934. package/src/functions/analysis.ts +0 -20
  935. package/src/functions/index.ts +0 -7
  936. package/src/functions/list.ts +0 -42
  937. package/src/functions/load.ts +0 -43
  938. package/src/hooks/chat-processor.ts +0 -260
  939. package/src/hooks/errors.ts +0 -8
  940. package/src/hooks/presets.ts +0 -53
  941. package/src/hooks/useResolveRef.ts +0 -33
  942. package/src/parser/filter-generator.test.ts +0 -32
  943. package/src/parser/filter-generator.ts +0 -74
  944. package/src/parser/index.ts +0 -7
  945. package/src/parser/query-parser.test.ts +0 -139
  946. package/src/parser/query-parser.ts +0 -199
  947. package/src/parser/types.ts +0 -34
  948. package/src/queue-logger.ts +0 -125
  949. package/src/shims.d.ts +0 -8
  950. package/src/stories/Chat.stories.tsx +0 -317
  951. package/src/stories/components/BlueprintContainer.tsx +0 -34
  952. package/src/stories/components/ChatContainer.tsx +0 -80
  953. package/src/stories/components/GraphContainer.tsx +0 -118
  954. package/src/stories/components/LoggingContainer.tsx +0 -22
  955. package/src/stories/components/SurfaceContainer.tsx +0 -62
  956. package/src/stories/components/TasksContainer.tsx +0 -51
  957. package/src/stories/components/index.ts +0 -12
  958. package/src/stories/components/types.ts +0 -11
  959. package/src/stories/hooks/index.ts +0 -6
  960. package/src/stories/hooks/useMatcherExtension.ts +0 -45
  961. package/src/stories/testing/data.ts +0 -130
  962. package/src/stories/testing/index.ts +0 -6
  963. package/src/stories/testing/testing.tsx +0 -162
  964. package/src/testing/test-functions.ts +0 -16
  965. package/src/tools/function.ts +0 -49
  966. package/src/tools/index.ts +0 -6
  967. package/src/tools/openapi.test.ts +0 -219
  968. package/src/tools/openapi.ts +0 -341
  969. package/src/types/AssistantAction.ts +0 -54
  970. package/src/types/defs.ts +0 -5
  971. package/src/typings.d.ts +0 -9
  972. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/AssistantPlugin.mjs.map} +0 -0
  973. /package/dist/lib/{browser/types/index.mjs.map → neutral/ChatArticle-VNVZCDUR.mjs.map} +0 -0
  974. /package/dist/lib/{node-esm/types → neutral/blueprints}/index.mjs.map +0 -0
  975. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  976. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  977. /package/src/{stories/hooks → hooks}/useFlush.ts +0 -0
@@ -0,0 +1,24 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export {
6
+ CommitSelector,
7
+ buildExecutionGraph,
8
+ type BuildExecutionGraphParams,
9
+ type ExecutionGraph,
10
+ type ExecutionGraphDetailsMap,
11
+ } from './execution-graph';
12
+ export {
13
+ BEGIN_EVENT_TYPES,
14
+ END_EVENT_TYPES,
15
+ ROOT_SPAN_ID,
16
+ buildSpanTree,
17
+ flattenSpanTree,
18
+ isSpanBeginEvent,
19
+ isSpanEndEvent,
20
+ walkSpanTree,
21
+ type BuildSpanTreeOptions,
22
+ type Span,
23
+ type SpanMeta,
24
+ } from './span-tree';
@@ -0,0 +1,116 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { readFileSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { describe, test } from 'vitest';
8
+
9
+ import { Trace } from '@dxos/compute';
10
+ import { Obj } from '@dxos/echo';
11
+
12
+ import { buildExecutionGraph } from './execution-graph';
13
+
14
+ /**
15
+ * Regression for sub-operations collapsing onto `main` when the event window in `buildSpanTree`
16
+ * dropped the parent span's `operation.start`.
17
+ *
18
+ * The remote trace snapshot has 714 chronological events. The 4th `Run Routine` span hosts every
19
+ * `Create object` / `Add schema` / `List schemas` / `Query` / `Add to context` sub-operation.
20
+ * Its `operation.start` lives near the front of the stream (index 70). Before the fix, the
21
+ * default `eventLimit = 300` would `slice(-300)` away that begin event, leaving the sub-ops'
22
+ * `parentPid` lookup unsatisfied — they ended up as top-level collapsible spans rendering their
23
+ * end commits on `main`.
24
+ */
25
+ describe('TracePanel remote snapshot', () => {
26
+ test('sub-operations land on their parent Routine branch, never on main', ({ expect }) => {
27
+ const messages = loadRemoteTraceMessages(REMOTE_SNAPSHOT);
28
+ const { commits } = buildExecutionGraph({ traceMessages: messages });
29
+
30
+ // Commits whose message starts with one of these names originate from sub-operations
31
+ // (Trace.OperationEnd) — every one should live on the Routine's branch, never on `main`.
32
+ const subOpPrefixes = ['Create object', 'Add schema', 'List schemas', 'Query', 'Add to context'];
33
+ const isSubOpEnd = (message: string | undefined): boolean =>
34
+ message !== undefined && subOpPrefixes.some((prefix) => message.startsWith(prefix));
35
+
36
+ const subOpCommits = commits.filter((commit) => isSubOpEnd(commit.message));
37
+ expect(subOpCommits.length).toBeGreaterThan(0);
38
+
39
+ const onMain = subOpCommits.filter((commit) => commit.branch === 'main');
40
+ expect(onMain).toEqual([]);
41
+
42
+ // All sub-op end commits share the parent Routine's pid as their branch.
43
+ const branches = new Set(subOpCommits.map((commit) => commit.branch));
44
+ expect(branches.size).toBe(1);
45
+ expect(branches.has('main')).toBe(false);
46
+ });
47
+
48
+ test('Routine end commits anchor to the previous main commit, not back to their own begin', ({ expect }) => {
49
+ // Regression: the multi-Routine snapshot has overlapping top-level Routine spans (R2 starts
50
+ // before R1 ends, R4 starts before R3 ends). Previously, R1.end's first parent was
51
+ // R1.begin (looked up by `beginCommitIdBySpan`), which drew an edge across R2.begin in the
52
+ // rendered timeline. The fix anchors end commits to the immediate predecessor on the
53
+ // parent branch (R2.begin) and treats the own-branch tail as a separate merge parent.
54
+ const messages = loadRemoteTraceMessages(MULTI_SNAPSHOT);
55
+ const { commits } = buildExecutionGraph({ traceMessages: messages });
56
+
57
+ const mainCommits = commits.filter((commit) => commit.branch === 'main');
58
+ // Sanity check: 4 begin + 4 end Run-Routine commits on main.
59
+ expect(mainCommits).toHaveLength(8);
60
+
61
+ // For each commit on main, its first parent (if any) must be a commit that appears
62
+ // *earlier* in the main commit sequence — no "skip-back" edges to an older begin commit.
63
+ const idToMainIndex = new Map(mainCommits.map((commit, index) => [commit.id, index]));
64
+ for (let index = 1; index < mainCommits.length; index += 1) {
65
+ const commit = mainCommits[index];
66
+ const onMainParents = (commit.parents ?? []).filter((parentId) => idToMainIndex.has(parentId));
67
+ expect(onMainParents.length).toBeGreaterThan(0);
68
+ for (const parentId of onMainParents) {
69
+ const parentIndex = idToMainIndex.get(parentId)!;
70
+ // Every parent on main must be the immediate predecessor (index - 1). An older parent
71
+ // would render an edge that crosses over the intervening commits.
72
+ expect(parentIndex).toBe(index - 1);
73
+ }
74
+ }
75
+ });
76
+ });
77
+
78
+ const REMOTE_SNAPSHOT = 'trace-timeline-remote.dx.json';
79
+ const MULTI_SNAPSHOT = 'trace-timeline-multiple.dx.json';
80
+
81
+ interface RawMessage {
82
+ meta?: Trace.Meta;
83
+ isEphemeral?: boolean;
84
+ events?: Array<{ type: string; timestamp: number; data: unknown }>;
85
+ }
86
+
87
+ const loadRemoteTraceMessages = (filename: string): Trace.Message[] => {
88
+ const snapshotPath = join(__dirname, '../testing/data', filename);
89
+ const json = JSON.parse(readFileSync(snapshotPath, 'utf8')) as unknown;
90
+
91
+ const messages: Trace.Message[] = [];
92
+ const visit = (node: unknown): void => {
93
+ if (Array.isArray(node)) {
94
+ node.forEach(visit);
95
+ return;
96
+ }
97
+ if (node === null || typeof node !== 'object') {
98
+ return;
99
+ }
100
+ const candidate = node as RawMessage & Record<string, unknown>;
101
+ if (Array.isArray(candidate.events) && candidate.meta && typeof candidate.meta === 'object') {
102
+ messages.push(
103
+ Obj.make(Trace.Message, {
104
+ meta: candidate.meta,
105
+ isEphemeral: candidate.isEphemeral ?? false,
106
+ events: candidate.events,
107
+ }),
108
+ );
109
+ }
110
+ for (const value of Object.values(node as Record<string, unknown>)) {
111
+ visit(value);
112
+ }
113
+ };
114
+ visit(json);
115
+ return messages;
116
+ };
@@ -0,0 +1,249 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+ import * as Schema from 'effect/Schema';
7
+ import { describe, test } from 'vitest';
8
+
9
+ import { AgentRequestBegin, AgentRequestEnd } from '@dxos/assistant';
10
+ import { Trace } from '@dxos/compute';
11
+
12
+ import { ROOT_SPAN_ID, buildSpanTree, flattenSpanTree } from './span-tree';
13
+ import { collectTraceEvents, withMeta } from './testing';
14
+
15
+ const NoteEvent = Trace.EventType('note', {
16
+ schema: Schema.Struct({
17
+ text: Schema.optional(Schema.String),
18
+ index: Schema.optional(Schema.Number),
19
+ }),
20
+ isEphemeral: false,
21
+ });
22
+
23
+ const FooEvent = Trace.EventType('foo', {
24
+ schema: Schema.Struct({}),
25
+ isEphemeral: false,
26
+ });
27
+
28
+ describe('buildSpanTree', () => {
29
+ test('returns a root span for empty input', ({ expect }) => {
30
+ const tree = buildSpanTree([]);
31
+ expect(tree.id).toBe(ROOT_SPAN_ID);
32
+ expect(tree.children).toEqual([]);
33
+ expect(tree.events).toEqual([]);
34
+ });
35
+
36
+ test('events without pid attach to root span', ({ expect }) => {
37
+ const messages = collectTraceEvents(Trace.write(FooEvent, {}));
38
+ const tree = buildSpanTree(messages);
39
+ expect(tree.children).toEqual([]);
40
+ expect(tree.events).toHaveLength(1);
41
+ expect(tree.events[0].type).toBe('foo');
42
+ });
43
+
44
+ test('a single operation start/end pair produces one span under root', ({ expect }) => {
45
+ const messages = collectTraceEvents(
46
+ withMeta(
47
+ { pid: 'op-1' },
48
+ Effect.gen(function* () {
49
+ yield* Trace.write(Trace.OperationStart, { key: 'reply', name: 'Reply' });
50
+ yield* Trace.write(Trace.OperationEnd, { key: 'reply', name: 'Reply', outcome: 'success' });
51
+ }),
52
+ ),
53
+ );
54
+ const tree = buildSpanTree(messages);
55
+ expect(tree.children).toHaveLength(1);
56
+ expect(tree.children[0].meta.pid).toBe('op-1');
57
+ expect(tree.children[0].events).toHaveLength(2);
58
+ expect(tree.children[0].children).toEqual([]);
59
+ });
60
+
61
+ test('a nested operation attaches to its open parent', ({ expect }) => {
62
+ const messages = collectTraceEvents(
63
+ Effect.gen(function* () {
64
+ yield* withMeta({ pid: 'agent-1' }, Trace.write(AgentRequestBegin, {}));
65
+ yield* withMeta(
66
+ { pid: 'op-1', parentPid: 'agent-1' },
67
+ Effect.gen(function* () {
68
+ yield* Trace.write(Trace.OperationStart, { key: 'lookup', name: 'Lookup' });
69
+ yield* Trace.write(Trace.OperationEnd, { key: 'lookup', name: 'Lookup', outcome: 'success' });
70
+ }),
71
+ );
72
+ yield* withMeta({ pid: 'agent-1' }, Trace.write(AgentRequestEnd, { status: 'success' }));
73
+ }),
74
+ );
75
+ const tree = buildSpanTree(messages);
76
+ expect(tree.children).toHaveLength(1);
77
+ const agentSpan = tree.children[0];
78
+ expect(agentSpan.meta.pid).toBe('agent-1');
79
+ expect(agentSpan.children).toHaveLength(1);
80
+ expect(agentSpan.children[0].meta.pid).toBe('op-1');
81
+ expect(agentSpan.children[0].events).toHaveLength(2);
82
+ });
83
+
84
+ test('sequential agent requests in one process become sibling spans', ({ expect }) => {
85
+ const messages = collectTraceEvents(
86
+ withMeta(
87
+ { pid: 'agent-1' },
88
+ Effect.gen(function* () {
89
+ yield* Trace.write(AgentRequestBegin, {});
90
+ yield* Trace.write(AgentRequestEnd, { status: 'success' });
91
+ yield* Trace.write(AgentRequestBegin, {});
92
+ yield* Trace.write(AgentRequestEnd, { status: 'success' });
93
+ }),
94
+ ),
95
+ );
96
+ const tree = buildSpanTree(messages);
97
+ expect(tree.children).toHaveLength(2);
98
+ expect(tree.children.every((child) => child.meta.pid === 'agent-1')).toBe(true);
99
+ // Span ids are distinct even though pids are shared.
100
+ expect(tree.children[0].id).not.toBe(tree.children[1].id);
101
+ });
102
+
103
+ test('non-boundary events attach to the currently-open span', ({ expect }) => {
104
+ const messages = collectTraceEvents(
105
+ withMeta(
106
+ { pid: 'agent-1' },
107
+ Effect.gen(function* () {
108
+ yield* Trace.write(AgentRequestBegin, {});
109
+ yield* Trace.write(NoteEvent, {});
110
+ yield* Trace.write(AgentRequestEnd, { status: 'success' });
111
+ }),
112
+ ),
113
+ );
114
+ const tree = buildSpanTree(messages);
115
+ expect(tree.children[0].events).toHaveLength(3);
116
+ expect(tree.children[0].events.map((event) => event.type)).toEqual([
117
+ AgentRequestBegin.key,
118
+ 'note',
119
+ AgentRequestEnd.key,
120
+ ]);
121
+ });
122
+
123
+ test('non-boundary event without an open span lands on root', ({ expect }) => {
124
+ const messages = collectTraceEvents(withMeta({ pid: 'orphan-pid' }, Trace.write(NoteEvent, {})));
125
+ const tree = buildSpanTree(messages);
126
+ expect(tree.children).toEqual([]);
127
+ expect(tree.events).toHaveLength(1);
128
+ expect(tree.events[0].type).toBe('note');
129
+ });
130
+
131
+ test('end event without a matching begin attaches to root', ({ expect }) => {
132
+ const messages = collectTraceEvents(
133
+ withMeta({ pid: 'op-1' }, Trace.write(Trace.OperationEnd, { key: 'reply', name: 'Reply', outcome: 'success' })),
134
+ );
135
+ const tree = buildSpanTree(messages);
136
+ expect(tree.children).toEqual([]);
137
+ expect(tree.events).toHaveLength(1);
138
+ });
139
+
140
+ test('sorts sibling spans chronologically by their first event', ({ expect }) => {
141
+ // Build events in chronological order, then reverse the message array before feeding
142
+ // into `buildSpanTree` to verify that the algorithm orders siblings by their first
143
+ // event's timestamp rather than by input order.
144
+ const messages = collectTraceEvents(
145
+ Effect.gen(function* () {
146
+ yield* withMeta(
147
+ { pid: 'op-early' },
148
+ Effect.gen(function* () {
149
+ yield* Trace.write(Trace.OperationStart, { key: 'a' });
150
+ yield* Trace.write(Trace.OperationEnd, { key: 'a', outcome: 'success' });
151
+ }),
152
+ );
153
+ yield* withMeta(
154
+ { pid: 'op-late' },
155
+ Effect.gen(function* () {
156
+ yield* Trace.write(Trace.OperationStart, { key: 'b' });
157
+ yield* Trace.write(Trace.OperationEnd, { key: 'b', outcome: 'success' });
158
+ }),
159
+ );
160
+ }),
161
+ );
162
+ const tree = buildSpanTree([...messages].reverse());
163
+ expect(tree.children.map((child) => child.meta.pid)).toEqual(['op-early', 'op-late']);
164
+ });
165
+
166
+ test('eventLimit drops oldest non-boundary events but always retains span boundaries', ({ expect }) => {
167
+ // Three non-boundary events (`note 1..3`), all boundary events should be kept regardless.
168
+ // With `eventLimit: 1`, only the most recent `note` should survive.
169
+ const messages = collectTraceEvents(
170
+ withMeta(
171
+ { pid: 'agent-1' },
172
+ Effect.gen(function* () {
173
+ yield* Trace.write(AgentRequestBegin, {});
174
+ yield* Trace.write(NoteEvent, { text: 'note 1' });
175
+ yield* Trace.write(NoteEvent, { text: 'note 2' });
176
+ yield* Trace.write(NoteEvent, { text: 'note 3' });
177
+ yield* Trace.write(AgentRequestEnd, { status: 'success' });
178
+ }),
179
+ ),
180
+ );
181
+ const tree = buildSpanTree(messages, { eventLimit: 1 });
182
+ expect(tree.children).toHaveLength(1);
183
+ const agentSpan = tree.children[0];
184
+ expect(agentSpan.events.map((event) => event.type)).toEqual([AgentRequestBegin.key, 'note', AgentRequestEnd.key]);
185
+ expect((agentSpan.events[1].data as { text: string }).text).toBe('note 3');
186
+ });
187
+
188
+ test('eventLimit preserves parent-child structure when the parent begin is older than the window', ({ expect }) => {
189
+ // Regression: previously `events.slice(-eventLimit)` would drop the parent's begin event
190
+ // when the limit fell mid-span, orphaning every child span onto root. The fix retains all
191
+ // boundary events so the parent stays open and children remain nested.
192
+ const messages = collectTraceEvents(
193
+ Effect.gen(function* () {
194
+ yield* withMeta(
195
+ { pid: 'parent-1' },
196
+ Effect.gen(function* () {
197
+ yield* Trace.write(AgentRequestBegin, {});
198
+ for (let index = 0; index < 20; index += 1) {
199
+ yield* Trace.write(NoteEvent, { index });
200
+ }
201
+ }),
202
+ );
203
+ yield* withMeta(
204
+ { pid: 'child-1', parentPid: 'parent-1' },
205
+ Effect.gen(function* () {
206
+ yield* Trace.write(Trace.OperationStart, { key: 'lookup', name: 'Lookup' });
207
+ yield* Trace.write(Trace.OperationEnd, { key: 'lookup', name: 'Lookup', outcome: 'success' });
208
+ }),
209
+ );
210
+ yield* withMeta({ pid: 'parent-1' }, Trace.write(AgentRequestEnd, { status: 'success' }));
211
+ }),
212
+ );
213
+ const tree = buildSpanTree(messages, {
214
+ // Limit far below the 20 `note` events — naive slicing would drop the parent's begin.
215
+ eventLimit: 2,
216
+ });
217
+ expect(tree.children).toHaveLength(1);
218
+ const parentSpan = tree.children[0];
219
+ expect(parentSpan.meta.pid).toBe('parent-1');
220
+ expect(parentSpan.children).toHaveLength(1);
221
+ expect(parentSpan.children[0].meta.pid).toBe('child-1');
222
+ expect(parentSpan.children[0].events.map((event) => event.type)).toEqual([
223
+ Trace.OperationStart.key,
224
+ Trace.OperationEnd.key,
225
+ ]);
226
+ });
227
+
228
+ test('flattenSpanTree returns root + all descendants in depth-first order', ({ expect }) => {
229
+ const messages = collectTraceEvents(
230
+ Effect.gen(function* () {
231
+ yield* withMeta({ pid: 'agent-1' }, Trace.write(AgentRequestBegin, {}));
232
+ yield* withMeta(
233
+ { pid: 'op-1', parentPid: 'agent-1' },
234
+ Effect.gen(function* () {
235
+ yield* Trace.write(Trace.OperationStart, { key: 'a' });
236
+ yield* Trace.write(Trace.OperationEnd, { key: 'a', outcome: 'success' });
237
+ }),
238
+ );
239
+ yield* withMeta({ pid: 'agent-1' }, Trace.write(AgentRequestEnd, { status: 'success' }));
240
+ }),
241
+ );
242
+ const tree = buildSpanTree(messages);
243
+ const order = flattenSpanTree(tree);
244
+ expect(order[0].id).toBe(ROOT_SPAN_ID);
245
+ expect(order[1].meta.pid).toBe('agent-1');
246
+ expect(order[2].meta.pid).toBe('op-1');
247
+ expect(order).toHaveLength(3);
248
+ });
249
+ });
@@ -0,0 +1,269 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { AgentRequestBegin, AgentRequestEnd } from '@dxos/assistant';
6
+ import { Trace } from '@dxos/compute';
7
+
8
+ /**
9
+ * Synthetic id assigned to the root span.
10
+ * The root is a virtual container for top-level spans (those without a parent in the captured trace).
11
+ */
12
+ export const ROOT_SPAN_ID = '<main>';
13
+
14
+ /**
15
+ * Computed metadata for a span.
16
+ * Derived from the meta of the begin event that opened the span.
17
+ */
18
+ export interface SpanMeta {
19
+ readonly pid?: string;
20
+ readonly parentPid?: string;
21
+ readonly processName?: string;
22
+ readonly conversationId?: string;
23
+ readonly triggerId?: string;
24
+ readonly toolCallId?: string;
25
+ readonly runtimeName?: string;
26
+ }
27
+
28
+ /**
29
+ * A span in the trace hierarchy.
30
+ *
31
+ * Each span represents a single bounded unit of work — an operation invocation or an
32
+ * agent request. Spans are opened by `OperationStart` / `AgentRequestBegin` events and
33
+ * closed by their matching `OperationEnd` / `AgentRequestEnd` events. A single process
34
+ * (pid) may produce multiple sequential spans (for example, an agent session that serves
35
+ * three prompts produces three sibling spans sharing the agent's pid).
36
+ *
37
+ * `events` contains the bounded events for this span only — child spans' events are not
38
+ * duplicated here. `children` contains sub-spans that opened while this span was active.
39
+ */
40
+ export interface Span {
41
+ readonly id: string;
42
+ readonly meta: SpanMeta;
43
+ readonly events: Trace.FlatEvent[];
44
+ readonly children: Span[];
45
+ }
46
+
47
+ export const BEGIN_EVENT_TYPES = new Set<string>([Trace.OperationStart.key, AgentRequestBegin.key]);
48
+ export const END_EVENT_TYPES = new Set<string>([Trace.OperationEnd.key, AgentRequestEnd.key]);
49
+
50
+ export const isSpanBeginEvent = (event: Trace.FlatEvent): boolean => BEGIN_EVENT_TYPES.has(event.type);
51
+ export const isSpanEndEvent = (event: Trace.FlatEvent): boolean => END_EVENT_TYPES.has(event.type);
52
+
53
+ const computeMeta = (rawMeta: Trace.Meta): SpanMeta => ({
54
+ pid: rawMeta.pid,
55
+ parentPid: rawMeta.parentPid,
56
+ processName: rawMeta.processName,
57
+ conversationId: rawMeta.conversationId,
58
+ triggerId: rawMeta.triggerId,
59
+ toolCallId: rawMeta.toolCallId,
60
+ runtimeName: rawMeta.runtimeName,
61
+ });
62
+
63
+ interface MutableSpan {
64
+ id: string;
65
+ meta: SpanMeta;
66
+ events: Trace.FlatEvent[];
67
+ children: MutableSpan[];
68
+ firstTimestamp: number;
69
+ }
70
+
71
+ const makeMutableSpan = (id: string, meta: SpanMeta): MutableSpan => ({
72
+ id,
73
+ meta,
74
+ events: [],
75
+ children: [],
76
+ firstTimestamp: Number.POSITIVE_INFINITY,
77
+ });
78
+
79
+ const freezeSpan = (span: MutableSpan): Span => ({
80
+ id: span.id,
81
+ meta: span.meta,
82
+ events: span.events,
83
+ children: span.children.map(freezeSpan),
84
+ });
85
+
86
+ export interface BuildSpanTreeOptions {
87
+ /**
88
+ * If provided, caps how many *non-boundary* events (status updates, partial blocks, etc.)
89
+ * are retained — only the most recent `eventLimit` of them survive. Span boundary events
90
+ * (`OperationStart` / `OperationEnd` / `AgentRequestBegin` / `AgentRequestEnd`) are *always*
91
+ * retained regardless of the limit, because dropping them would orphan their child spans
92
+ * and collapse them onto the root branch.
93
+ */
94
+ eventLimit?: number;
95
+ }
96
+
97
+ /**
98
+ * Builds a hierarchical span tree from a list of trace messages.
99
+ *
100
+ * Algorithm:
101
+ * 1. Flatten messages into events and sort them chronologically.
102
+ * 2. For each event:
103
+ * - Begin events (`OperationStart`, `AgentRequestBegin`) open a new span whose parent
104
+ * is the currently-open span of the event's `meta.parentPid`, or the root if there is
105
+ * none. The begin event itself becomes the first event of the new span.
106
+ * - End events (`OperationEnd`, `AgentRequestEnd`) close the currently-open span for
107
+ * the event's `meta.pid` and become its last event.
108
+ * - Other events attach to the currently-open span for their `meta.pid`, or to the
109
+ * root span if no span is currently open for that pid (or the event has no pid).
110
+ * 3. Sort each span's children by their earliest event timestamp.
111
+ */
112
+ export const buildSpanTree = (messages: readonly Trace.Message[], options: BuildSpanTreeOptions = {}): Span => {
113
+ const allEvents = messages.flatMap((message) => Trace.flatten(message));
114
+ allEvents.sort((a, b) => a.timestamp - b.timestamp);
115
+
116
+ // The limit caps verbose middle events (status/partial-block) only. Span boundary events
117
+ // are always retained so the parent/child structure of older spans isn't dropped — losing a
118
+ // begin event detaches every descendant and collapses them onto the root branch.
119
+ const events = applyEventLimit(allEvents, options.eventLimit);
120
+
121
+ const root = makeMutableSpan(ROOT_SPAN_ID, {});
122
+
123
+ // Currently-open span for each pid.
124
+ // A process may host multiple sequential spans (e.g. successive agent requests), so we
125
+ // track the active one and start a new span on the next begin event.
126
+ const openSpans = new Map<string, MutableSpan>();
127
+
128
+ // Most-recent span for each pid, open OR already closed. Used as the parent fallback for a
129
+ // child process whose parent span has already ended — e.g. a delegated sub-agent runs
130
+ // concurrently and its begin event arrives after the supervisor's turn (its parent) closed.
131
+ // Without this the child would nest at the root and render on its own top-level lane, reusing
132
+ // a sibling's released lane instead of forking off its parent.
133
+ const lastSpanByPid = new Map<string, MutableSpan>();
134
+
135
+ let spanCounter = 0;
136
+ const allocSpanId = (pid: string): string => {
137
+ const id = `${pid}#${spanCounter}`;
138
+ spanCounter += 1;
139
+ return id;
140
+ };
141
+
142
+ const noteTimestamp = (span: MutableSpan, timestamp: number): void => {
143
+ if (timestamp < span.firstTimestamp) {
144
+ span.firstTimestamp = timestamp;
145
+ }
146
+ };
147
+
148
+ for (const event of events) {
149
+ const pid = event.meta.pid;
150
+
151
+ if (!pid) {
152
+ // Events without a pid attach to the root.
153
+ root.events.push(event);
154
+ noteTimestamp(root, event.timestamp);
155
+ continue;
156
+ }
157
+
158
+ if (BEGIN_EVENT_TYPES.has(event.type)) {
159
+ const parentPid = event.meta.parentPid;
160
+ // Prefer the parent's currently-open span; fall back to its most-recent (closed) span so a
161
+ // child process whose parent has already ended still nests under it (delegated sub-agents).
162
+ const parent = (parentPid && (openSpans.get(parentPid) ?? lastSpanByPid.get(parentPid))) || root;
163
+ const span = makeMutableSpan(allocSpanId(pid), computeMeta(event.meta));
164
+ span.events.push(event);
165
+ noteTimestamp(span, event.timestamp);
166
+ parent.children.push(span);
167
+ // The new span supersedes any previously-open span for this pid.
168
+ openSpans.set(pid, span);
169
+ lastSpanByPid.set(pid, span);
170
+ continue;
171
+ }
172
+
173
+ if (END_EVENT_TYPES.has(event.type)) {
174
+ const span = openSpans.get(pid);
175
+ if (span) {
176
+ span.events.push(event);
177
+ noteTimestamp(span, event.timestamp);
178
+ openSpans.delete(pid);
179
+ } else {
180
+ // End event without a matching begin — attach to root so the event isn't lost.
181
+ root.events.push(event);
182
+ noteTimestamp(root, event.timestamp);
183
+ }
184
+ continue;
185
+ }
186
+
187
+ // Non-boundary event: attach to the currently-open span for this pid if any.
188
+ const open = openSpans.get(pid);
189
+ if (open) {
190
+ open.events.push(event);
191
+ noteTimestamp(open, event.timestamp);
192
+ } else {
193
+ root.events.push(event);
194
+ noteTimestamp(root, event.timestamp);
195
+ }
196
+ }
197
+
198
+ // Sort children chronologically for deterministic output.
199
+ const sortChildren = (span: MutableSpan): void => {
200
+ span.children.sort((a, b) => a.firstTimestamp - b.firstTimestamp);
201
+ for (const child of span.children) {
202
+ sortChildren(child);
203
+ }
204
+ };
205
+ sortChildren(root);
206
+
207
+ return freezeSpan(root);
208
+ };
209
+
210
+ /**
211
+ * Caps the number of non-boundary events while retaining every span boundary event.
212
+ *
213
+ * Boundary events define the span tree's structure: dropping a begin event detaches every
214
+ * descendant span (its `parentPid` lookup fails, so children fall back to the root), and
215
+ * dropping an end event leaves a span open and corrupts the open-span map for sibling spans
216
+ * that share a pid. Status/partial-block events are the noisy bulk and the only ones the
217
+ * limit needs to control.
218
+ *
219
+ * The returned array stays in chronological order.
220
+ */
221
+ const applyEventLimit = (events: readonly Trace.FlatEvent[], eventLimit: number | undefined): Trace.FlatEvent[] => {
222
+ if (eventLimit === undefined) {
223
+ return [...events];
224
+ }
225
+
226
+ let nonBoundaryCount = 0;
227
+ for (const event of events) {
228
+ if (!isBoundary(event)) {
229
+ nonBoundaryCount += 1;
230
+ }
231
+ }
232
+ if (nonBoundaryCount <= eventLimit) {
233
+ return [...events];
234
+ }
235
+
236
+ const dropCount = nonBoundaryCount - eventLimit;
237
+ let dropped = 0;
238
+ const result: Trace.FlatEvent[] = [];
239
+ for (const event of events) {
240
+ if (!isBoundary(event) && dropped < dropCount) {
241
+ dropped += 1;
242
+ continue;
243
+ }
244
+ result.push(event);
245
+ }
246
+ return result;
247
+ };
248
+
249
+ const isBoundary = (event: Trace.FlatEvent): boolean =>
250
+ BEGIN_EVENT_TYPES.has(event.type) || END_EVENT_TYPES.has(event.type);
251
+
252
+ /**
253
+ * Walks the span tree in depth-first pre-order, invoking `visit` for each span (root included).
254
+ */
255
+ export const walkSpanTree = (root: Span, visit: (span: Span, depth: number) => void, depth = 0): void => {
256
+ visit(root, depth);
257
+ for (const child of root.children) {
258
+ walkSpanTree(child, visit, depth + 1);
259
+ }
260
+ };
261
+
262
+ /**
263
+ * Returns all spans in the tree in depth-first pre-order, root first.
264
+ */
265
+ export const flattenSpanTree = (root: Span): Span[] => {
266
+ const result: Span[] = [];
267
+ walkSpanTree(root, (span) => result.push(span));
268
+ return result;
269
+ };