@dxos/plugin-assistant 0.8.4-main.ae835ea → 0.8.4-main.bc2380dfbc

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 (793) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/AgentArticle-5XDDEXMP.mjs +169 -0
  4. package/dist/lib/neutral/AgentArticle-5XDDEXMP.mjs.map +7 -0
  5. package/dist/lib/neutral/AgentProperties-CNH4JMDZ.mjs +100 -0
  6. package/dist/lib/neutral/AgentProperties-CNH4JMDZ.mjs.map +7 -0
  7. package/dist/lib/neutral/AssistantPlugin.mjs +10 -0
  8. package/dist/lib/neutral/AssistantPlugin.node.mjs +46 -0
  9. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +7 -0
  10. package/dist/lib/neutral/AssistantPlugin.workerd.mjs +40 -0
  11. package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +7 -0
  12. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +40 -0
  13. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs.map +7 -0
  14. package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs +27 -0
  15. package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs.map +7 -0
  16. package/dist/lib/neutral/ChatArticle-WVAFZPVI.mjs +8 -0
  17. package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs +133 -0
  18. package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs.map +7 -0
  19. package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs +72 -0
  20. package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs.map +7 -0
  21. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs +28 -0
  22. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +7 -0
  23. package/dist/lib/neutral/RoutineArticle-H7ECM7AH.mjs +116 -0
  24. package/dist/lib/neutral/RoutineArticle-H7ECM7AH.mjs.map +7 -0
  25. package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs +48 -0
  26. package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs.map +7 -0
  27. package/dist/lib/neutral/TracePanel-C77SPEIS.mjs +672 -0
  28. package/dist/lib/neutral/TracePanel-C77SPEIS.mjs.map +7 -0
  29. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs +92 -0
  30. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs.map +7 -0
  31. package/dist/lib/neutral/ai-service-GJXMI5OI.mjs +22 -0
  32. package/dist/lib/neutral/ai-service-GJXMI5OI.mjs.map +7 -0
  33. package/dist/lib/neutral/app-graph-builder-5QBICPYP.mjs +200 -0
  34. package/dist/lib/neutral/app-graph-builder-5QBICPYP.mjs.map +7 -0
  35. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs +32 -0
  36. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs.map +7 -0
  37. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  38. package/dist/lib/neutral/capabilities/index.mjs +35 -0
  39. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-3FIV362Z.mjs +8 -0
  41. package/dist/lib/neutral/chunk-3FIV362Z.mjs.map +7 -0
  42. package/dist/lib/{browser/chunk-WBG5PTSX.mjs → neutral/chunk-4CQZCMRP.mjs} +7 -5
  43. package/dist/lib/neutral/chunk-4CQZCMRP.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-5H6UJHLF.mjs +30 -0
  45. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-ITJX2YZZ.mjs +98 -0
  47. package/dist/lib/neutral/chunk-ITJX2YZZ.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-IZQWGJNG.mjs +380 -0
  49. package/dist/lib/neutral/chunk-IZQWGJNG.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-SLIPV6NN.mjs +106 -0
  51. package/dist/lib/neutral/chunk-SLIPV6NN.mjs.map +7 -0
  52. package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs +116 -0
  53. package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs.map +7 -0
  54. package/dist/lib/neutral/components/index.mjs +2298 -0
  55. package/dist/lib/neutral/components/index.mjs.map +7 -0
  56. package/dist/lib/neutral/containers/index.mjs +29 -0
  57. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  58. package/dist/lib/neutral/create-chat-QQZURUBW.mjs +71 -0
  59. package/dist/lib/neutral/create-chat-QQZURUBW.mjs.map +7 -0
  60. package/dist/lib/neutral/create-object-UZCJCPWM.mjs +93 -0
  61. package/dist/lib/neutral/create-object-UZCJCPWM.mjs.map +7 -0
  62. package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs +21 -0
  63. package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs.map +7 -0
  64. package/dist/lib/neutral/ensure-companion-chat-5S4LZM2H.mjs +58 -0
  65. package/dist/lib/neutral/ensure-companion-chat-5S4LZM2H.mjs.map +7 -0
  66. package/dist/lib/neutral/hooks/index.mjs +927 -0
  67. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  68. package/dist/lib/neutral/index.mjs +32 -0
  69. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs +24 -0
  70. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +7 -0
  71. package/dist/lib/neutral/markdown-KTBFOMFM.mjs +110 -0
  72. package/dist/lib/neutral/markdown-KTBFOMFM.mjs.map +7 -0
  73. package/dist/lib/neutral/meta.json +1 -0
  74. package/dist/lib/neutral/meta.mjs +12 -0
  75. package/dist/lib/neutral/migrations-7DEMVBOG.mjs +28 -0
  76. package/dist/lib/neutral/migrations-7DEMVBOG.mjs.map +7 -0
  77. package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs +19 -0
  78. package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs.map +7 -0
  79. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs +13 -0
  80. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs.map +7 -0
  81. package/dist/lib/neutral/operations/index.mjs +8 -0
  82. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  83. package/dist/lib/neutral/plugin.mjs +16 -0
  84. package/dist/lib/neutral/plugin.mjs.map +7 -0
  85. package/dist/lib/neutral/react-surface-T4R65UJU.mjs +174 -0
  86. package/dist/lib/neutral/react-surface-T4R65UJU.mjs.map +7 -0
  87. package/dist/lib/neutral/resolve-navigation-targets-VXBSWV5L.mjs +20 -0
  88. package/dist/lib/neutral/resolve-navigation-targets-VXBSWV5L.mjs.map +7 -0
  89. package/dist/lib/neutral/run-prompt-in-new-chat-VJXXZ6SI.mjs +103 -0
  90. package/dist/lib/neutral/run-prompt-in-new-chat-VJXXZ6SI.mjs.map +7 -0
  91. package/dist/lib/neutral/set-current-chat-ZFDCYK5I.mjs +48 -0
  92. package/dist/lib/neutral/set-current-chat-ZFDCYK5I.mjs.map +7 -0
  93. package/dist/lib/neutral/settings-W4BLWQ53.mjs +28 -0
  94. package/dist/lib/neutral/settings-W4BLWQ53.mjs.map +7 -0
  95. package/dist/lib/neutral/state-H3G7QCU6.mjs +28 -0
  96. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +7 -0
  97. package/dist/lib/neutral/testing.mjs +8 -0
  98. package/dist/lib/neutral/testing.mjs.map +7 -0
  99. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs +21 -0
  100. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs.map +7 -0
  101. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs +14 -0
  102. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs.map +7 -0
  103. package/dist/lib/neutral/translations.mjs +175 -0
  104. package/dist/lib/neutral/translations.mjs.map +7 -0
  105. package/dist/lib/neutral/types/index.mjs +20 -0
  106. package/dist/lib/neutral/types/index.mjs.map +7 -0
  107. package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs +54 -0
  108. package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs.map +7 -0
  109. package/dist/types/src/AssistantPlugin.d.ts +3 -1
  110. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  111. package/dist/types/src/AssistantPlugin.node.d.ts +4 -0
  112. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -0
  113. package/dist/types/src/AssistantPlugin.test.d.ts +2 -0
  114. package/dist/types/src/AssistantPlugin.test.d.ts.map +1 -0
  115. package/dist/types/src/AssistantPlugin.workerd.d.ts +4 -0
  116. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -0
  117. package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
  118. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
  119. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +2 -0
  120. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +1 -0
  121. package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
  122. package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
  123. package/dist/types/src/blueprints/index.d.ts +2 -0
  124. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/ai-service.d.ts +4 -2
  126. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  127. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  128. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  129. package/dist/types/src/capabilities/blueprint-definition.d.ts +4 -6
  130. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  131. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +9 -0
  132. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -0
  133. package/dist/types/src/capabilities/create-object.d.ts +31 -0
  134. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  135. package/dist/types/src/capabilities/edge-model-resolver.d.ts +6 -3
  136. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  137. package/dist/types/src/capabilities/index.d.ts +55 -12
  138. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  139. package/dist/types/src/capabilities/local-model-resolver.d.ts +9 -3
  140. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  141. package/dist/types/src/capabilities/markdown.d.ts +5 -0
  142. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  143. package/dist/types/src/capabilities/migrations.d.ts +6 -0
  144. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  145. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  146. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  147. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  148. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  149. package/dist/types/src/capabilities/settings.d.ts +4 -2
  150. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  151. package/dist/types/src/capabilities/state.d.ts +19 -2
  152. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  153. package/dist/types/src/capabilities/toolkit.d.ts +4 -2
  154. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  155. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +4 -4
  156. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  157. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +15 -0
  158. package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -0
  159. package/dist/types/src/components/AssistantSettings/index.d.ts +1 -1
  160. package/dist/types/src/components/AssistantSettings/index.d.ts.map +1 -1
  161. package/dist/types/src/components/Chat/Chat.d.ts +42 -33
  162. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  163. package/dist/types/src/components/Chat/context.d.ts +29 -0
  164. package/dist/types/src/components/Chat/context.d.ts.map +1 -0
  165. package/dist/types/src/components/Chat/events.d.ts +5 -1
  166. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  167. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -1
  168. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  169. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts +12 -0
  170. package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts.map +1 -0
  171. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +10 -6
  172. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  173. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +19 -0
  174. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -0
  175. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  176. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +28 -0
  177. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -0
  178. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +5 -5
  179. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  180. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts +20 -0
  181. package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts.map +1 -0
  182. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  183. package/dist/types/src/components/ChatPrompt/index.d.ts +3 -0
  184. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  185. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts +14 -0
  186. package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -0
  187. package/dist/types/src/components/ChatThread/ChatThread.d.ts +11 -11
  188. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  189. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +15 -266
  190. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  191. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  192. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +42 -0
  193. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -0
  194. package/dist/types/src/components/ChatThread/registry.d.ts +19 -1
  195. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  196. package/dist/types/src/components/ChatThread/sync.d.ts +51 -18
  197. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  198. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts +18 -0
  199. package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -0
  200. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts +2 -0
  201. package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts.map +1 -0
  202. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +8 -0
  203. package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -0
  204. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts +25 -0
  205. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -0
  206. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +18 -0
  207. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -0
  208. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts +9 -0
  209. package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -0
  210. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts +14 -0
  211. package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -0
  212. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts +12 -0
  213. package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -0
  214. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +12 -0
  215. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -0
  216. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts +11 -0
  217. package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -0
  218. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts +5 -0
  219. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -0
  220. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts +9 -0
  221. package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -0
  222. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts +15 -0
  223. package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -0
  224. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +5 -0
  225. package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -0
  226. package/dist/types/src/components/ChatThread/widgets/index.d.ts +10 -0
  227. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -0
  228. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +11 -0
  229. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -0
  230. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +7 -0
  231. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -0
  232. package/dist/types/src/components/ProcessTree/index.d.ts +2 -0
  233. package/dist/types/src/components/ProcessTree/index.d.ts.map +1 -0
  234. package/dist/types/src/components/TaskList/TaskList.d.ts +10 -0
  235. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -0
  236. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +16 -0
  237. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -0
  238. package/dist/types/src/components/TaskList/index.d.ts +2 -0
  239. package/dist/types/src/components/TaskList/index.d.ts.map +1 -0
  240. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +6 -5
  241. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  242. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +1 -253
  243. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  244. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +12 -3
  245. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  246. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +2 -254
  247. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  248. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  249. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  250. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  251. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  252. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  253. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +9 -16
  254. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  255. package/dist/types/src/components/Toolbox/Toolbox.d.ts +14 -13
  256. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  257. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -253
  258. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  259. package/dist/types/src/components/index.d.ts +4 -7
  260. package/dist/types/src/components/index.d.ts.map +1 -1
  261. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +6 -0
  262. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -0
  263. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +21 -0
  264. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -0
  265. package/dist/types/src/containers/AgentArticle/index.d.ts +2 -0
  266. package/dist/types/src/containers/AgentArticle/index.d.ts.map +1 -0
  267. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +6 -0
  268. package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -0
  269. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts +16 -0
  270. package/dist/types/src/containers/AgentProperties/AgentProperties.stories.d.ts.map +1 -0
  271. package/dist/types/src/containers/AgentProperties/index.d.ts +2 -0
  272. package/dist/types/src/containers/AgentProperties/index.d.ts.map +1 -0
  273. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +6 -0
  274. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
  275. package/dist/types/src/containers/BlueprintArticle/index.d.ts +2 -0
  276. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
  277. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +12 -0
  278. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -0
  279. package/dist/types/src/containers/ChatArticle/index.d.ts +2 -0
  280. package/dist/types/src/containers/ChatArticle/index.d.ts.map +1 -0
  281. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +18 -0
  282. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
  283. package/dist/types/src/containers/ChatCompanion/index.d.ts +2 -0
  284. package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
  285. package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +2 -3
  286. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
  287. package/dist/types/src/containers/ChatDialog/index.d.ts +2 -0
  288. package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
  289. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts +6 -0
  290. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -0
  291. package/dist/types/src/containers/PlanArticle/index.d.ts +2 -0
  292. package/dist/types/src/containers/PlanArticle/index.d.ts.map +1 -0
  293. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +6 -0
  294. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
  295. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +15 -0
  296. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +1 -0
  297. package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
  298. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +1 -0
  299. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +6 -0
  300. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +1 -0
  301. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +21 -0
  302. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +1 -0
  303. package/dist/types/src/containers/RoutineList/index.d.ts +2 -0
  304. package/dist/types/src/containers/RoutineList/index.d.ts.map +1 -0
  305. package/dist/types/src/containers/TracePanel/TracePanel.d.ts +8 -0
  306. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -0
  307. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts +13 -0
  308. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -0
  309. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +19 -0
  310. package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -0
  311. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts +2 -0
  312. package/dist/types/src/containers/TracePanel/dxn-extractor.test.d.ts.map +1 -0
  313. package/dist/types/src/containers/TracePanel/execution-graph.d.ts +106 -0
  314. package/dist/types/src/containers/TracePanel/execution-graph.d.ts.map +1 -0
  315. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts +2 -0
  316. package/dist/types/src/containers/TracePanel/execution-graph.test.d.ts.map +1 -0
  317. package/dist/types/src/containers/TracePanel/index.d.ts +4 -0
  318. package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -0
  319. package/dist/types/src/containers/TracePanel/span-tree.d.ts +73 -0
  320. package/dist/types/src/containers/TracePanel/span-tree.d.ts.map +1 -0
  321. package/dist/types/src/containers/TracePanel/span-tree.test.d.ts +2 -0
  322. package/dist/types/src/containers/TracePanel/span-tree.test.d.ts.map +1 -0
  323. package/dist/types/src/containers/TracePanel/testing/index.d.ts +3 -0
  324. package/dist/types/src/containers/TracePanel/testing/index.d.ts.map +1 -0
  325. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +14 -0
  326. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -0
  327. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts +12 -0
  328. package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts.map +1 -0
  329. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +5 -0
  330. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -0
  331. package/dist/types/src/containers/TriggerStatus/index.d.ts +2 -0
  332. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
  333. package/dist/types/src/containers/index.d.ts +13 -0
  334. package/dist/types/src/containers/index.d.ts.map +1 -0
  335. package/dist/types/src/extensions/index.d.ts +2 -0
  336. package/dist/types/src/extensions/index.d.ts.map +1 -0
  337. package/dist/types/src/extensions/prompt-extension.d.ts +10 -0
  338. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -0
  339. package/dist/types/src/feed-logger.d.ts +13 -0
  340. package/dist/types/src/feed-logger.d.ts.map +1 -0
  341. package/dist/types/src/hooks/index.d.ts +4 -1
  342. package/dist/types/src/hooks/index.d.ts.map +1 -1
  343. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +9 -9
  344. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  345. package/dist/types/src/hooks/useChatKeymap.d.ts +12 -0
  346. package/dist/types/src/hooks/useChatKeymap.d.ts.map +1 -0
  347. package/dist/types/src/hooks/useChatProcessor.d.ts +10 -7
  348. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  349. package/dist/types/src/hooks/useChatServices.d.ts +5 -8
  350. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  351. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  352. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  353. package/dist/types/src/hooks/useContextBinder.d.ts +4 -3
  354. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  355. package/dist/types/src/hooks/useContextObjects.d.ts +8 -8
  356. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  357. package/dist/types/src/hooks/useDebug.d.ts +10 -0
  358. package/dist/types/src/hooks/useDebug.d.ts.map +1 -0
  359. package/dist/types/src/hooks/useFilteredTypes.d.ts +3 -0
  360. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  361. package/dist/types/src/hooks/useFlush.d.ts +1 -1
  362. package/dist/types/src/hooks/useFlush.d.ts.map +1 -1
  363. package/dist/types/src/hooks/usePresets.d.ts +1 -1
  364. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  365. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  366. package/dist/types/src/index.d.ts +1 -6
  367. package/dist/types/src/index.d.ts.map +1 -1
  368. package/dist/types/src/meta.d.ts +4 -2
  369. package/dist/types/src/meta.d.ts.map +1 -1
  370. package/dist/types/src/operations/create-chat.d.ts +5 -0
  371. package/dist/types/src/operations/create-chat.d.ts.map +1 -0
  372. package/dist/types/src/operations/ensure-companion-chat.d.ts +5 -0
  373. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -0
  374. package/dist/types/src/operations/index.d.ts +3 -0
  375. package/dist/types/src/operations/index.d.ts.map +1 -0
  376. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  377. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  378. package/dist/types/src/operations/prompt.test.d.ts +2 -0
  379. package/dist/types/src/operations/prompt.test.d.ts.map +1 -0
  380. package/dist/types/src/operations/resolve-navigation-targets.d.ts +15 -0
  381. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -0
  382. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +5 -0
  383. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -0
  384. package/dist/types/src/operations/set-current-chat.d.ts +5 -0
  385. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -0
  386. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts +5 -0
  387. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts.map +1 -0
  388. package/dist/types/src/operations/update-chat-name.d.ts +5 -0
  389. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -0
  390. package/dist/types/src/plugin.d.ts +4 -0
  391. package/dist/types/src/plugin.d.ts.map +1 -0
  392. package/dist/types/src/processor/index.d.ts +0 -1
  393. package/dist/types/src/processor/index.d.ts.map +1 -1
  394. package/dist/types/src/processor/presets.d.ts +1 -1
  395. package/dist/types/src/processor/presets.d.ts.map +1 -1
  396. package/dist/types/src/processor/processor.d.ts +64 -40
  397. package/dist/types/src/processor/processor.d.ts.map +1 -1
  398. package/dist/types/src/testing/index.d.ts +1 -0
  399. package/dist/types/src/testing/index.d.ts.map +1 -1
  400. package/dist/types/src/testing/test-generator.d.ts +4 -4
  401. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  402. package/dist/types/src/testing/test-generator.test.d.ts +2 -0
  403. package/dist/types/src/testing/test-generator.test.d.ts.map +1 -0
  404. package/dist/types/src/testing/test-sequence.d.ts +3 -3
  405. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  406. package/dist/types/src/testing/test-services.d.ts +1 -1
  407. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  408. package/dist/types/src/testing/test-trace.d.ts +5 -0
  409. package/dist/types/src/testing/test-trace.d.ts.map +1 -0
  410. package/dist/types/src/testing/trace-timeline.test.d.ts +2 -0
  411. package/dist/types/src/testing/trace-timeline.test.d.ts.map +1 -0
  412. package/dist/types/src/testing.d.ts +2 -0
  413. package/dist/types/src/testing.d.ts.map +1 -0
  414. package/dist/types/src/translations.d.ts +2 -88
  415. package/dist/types/src/translations.d.ts.map +1 -1
  416. package/dist/types/src/types/Assistant.d.ts +34 -45
  417. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  418. package/dist/types/src/types/AssistantCapabilities.d.ts +30 -0
  419. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -0
  420. package/dist/types/src/types/AssistantEvents.d.ts +3 -0
  421. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -0
  422. package/dist/types/src/types/AssistantOperation.d.ts +144 -0
  423. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -0
  424. package/dist/types/src/types/Settings.d.ts +27 -0
  425. package/dist/types/src/types/Settings.d.ts.map +1 -0
  426. package/dist/types/src/types/index.d.ts +4 -2
  427. package/dist/types/src/types/index.d.ts.map +1 -1
  428. package/dist/types/src/types/service.d.ts +10 -212
  429. package/dist/types/src/types/service.d.ts.map +1 -1
  430. package/dist/types/src/util/suggestions.d.ts +9 -0
  431. package/dist/types/src/util/suggestions.d.ts.map +1 -0
  432. package/dist/types/src/util/suggestions.test.d.ts +2 -0
  433. package/dist/types/src/util/suggestions.test.d.ts.map +1 -0
  434. package/dist/types/tsconfig.tsbuildinfo +1 -1
  435. package/package.json +196 -107
  436. package/src/AssistantPlugin.node.ts +44 -0
  437. package/src/AssistantPlugin.test.ts +35 -0
  438. package/src/AssistantPlugin.ts +126 -0
  439. package/src/AssistantPlugin.workerd.ts +41 -0
  440. package/src/blueprints/assistant/blueprint.test.ts +46 -0
  441. package/src/blueprints/assistant/blueprint.ts +31 -0
  442. package/src/blueprints/assistant/index.ts +5 -0
  443. package/src/{components/ChatToolbar → blueprints}/index.ts +1 -1
  444. package/src/capabilities/ai-service.ts +20 -17
  445. package/src/capabilities/app-graph-builder.ts +177 -171
  446. package/src/capabilities/blueprint-definition.ts +47 -57
  447. package/src/capabilities/companion-chat-provisioner.ts +163 -0
  448. package/src/capabilities/create-object.ts +107 -0
  449. package/src/capabilities/edge-model-resolver.ts +22 -14
  450. package/src/capabilities/index.ts +23 -14
  451. package/src/capabilities/local-model-resolver.ts +31 -13
  452. package/src/capabilities/markdown.ts +40 -0
  453. package/src/capabilities/migrations.ts +28 -0
  454. package/src/capabilities/operation-handler.ts +16 -0
  455. package/src/capabilities/react-surface.tsx +165 -61
  456. package/src/capabilities/settings.ts +24 -12
  457. package/src/capabilities/state.ts +27 -12
  458. package/src/capabilities/toolkit.ts +7 -13
  459. package/src/components/AssistantSettings/AssistantSettings.stories.tsx +35 -0
  460. package/src/components/AssistantSettings/AssistantSettings.tsx +30 -99
  461. package/src/components/AssistantSettings/index.ts +2 -2
  462. package/src/components/Chat/Chat.tsx +162 -258
  463. package/src/components/Chat/context.ts +39 -0
  464. package/src/components/Chat/events.ts +7 -1
  465. package/src/components/ChatPrompt/ChatActions.tsx +34 -16
  466. package/src/components/ChatPrompt/ChatMcpErrors.tsx +50 -0
  467. package/src/components/ChatPrompt/ChatOptions.stories.tsx +136 -0
  468. package/src/components/ChatPrompt/ChatOptions.tsx +310 -90
  469. package/src/components/ChatPrompt/ChatPrompt.tsx +182 -0
  470. package/src/components/ChatPrompt/ChatReferences.tsx +25 -16
  471. package/src/components/ChatPrompt/ChatStatus.tsx +123 -0
  472. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +2 -2
  473. package/src/components/ChatPrompt/index.ts +3 -0
  474. package/src/components/ChatThread/Anchor.stories.tsx +95 -0
  475. package/src/components/ChatThread/ChatThread.stories.tsx +81 -71
  476. package/src/components/ChatThread/ChatThread.tsx +62 -46
  477. package/src/components/ChatThread/DEBUG.md +41 -0
  478. package/src/components/ChatThread/Link.tsx +4 -4
  479. package/src/components/ChatThread/MarkdownStream.stories.tsx +281 -0
  480. package/src/components/ChatThread/registry.tsx +184 -78
  481. package/src/components/ChatThread/sync.test.ts +201 -25
  482. package/src/components/ChatThread/sync.ts +105 -68
  483. package/src/components/ChatThread/testing/reasoning.md +25 -0
  484. package/src/components/ChatThread/testing/thinking.md +21 -0
  485. package/src/components/ChatThread/testing/thread-1.md +30 -0
  486. package/src/components/ChatThread/testing/thread-2.md +56 -0
  487. package/src/components/ChatThread/testing/thread-widgets.md +79 -0
  488. package/src/components/ChatThread/tool-widget-state.test.ts +34 -0
  489. package/src/components/ChatThread/tool-widget-state.ts +48 -0
  490. package/src/components/ChatThread/widgets/FallbackWidget.tsx +26 -0
  491. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +68 -0
  492. package/src/components/ChatThread/widgets/ReasoningWidget.ts +133 -0
  493. package/src/components/ChatThread/widgets/ReferenceWidget.ts +33 -0
  494. package/src/components/ChatThread/widgets/SelectWidget.ts +39 -0
  495. package/src/components/ChatThread/widgets/StatsWidget.ts +31 -0
  496. package/src/components/ChatThread/widgets/StatusWidget.ts +53 -0
  497. package/src/components/ChatThread/widgets/SuggestionWidget.ts +41 -0
  498. package/src/components/ChatThread/widgets/SummaryWidget.tsx +27 -0
  499. package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +55 -0
  500. package/src/components/ChatThread/widgets/ToolWidget.tsx +156 -0
  501. package/src/components/ChatThread/widgets/defaults.ts +8 -0
  502. package/src/components/ChatThread/widgets/index.ts +13 -0
  503. package/src/components/ProcessTree/ProcessTree.stories.tsx +83 -0
  504. package/src/components/ProcessTree/ProcessTree.tsx +119 -0
  505. package/src/components/ProcessTree/index.ts +5 -0
  506. package/src/components/TaskList/TaskList.stories.tsx +44 -0
  507. package/src/components/TaskList/TaskList.tsx +45 -0
  508. package/src/components/TaskList/index.ts +5 -0
  509. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +18 -14
  510. package/src/components/TemplateEditor/TemplateEditor.tsx +55 -43
  511. package/src/components/TemplateEditor/TemplateForm.stories.tsx +21 -15
  512. package/src/components/TemplateEditor/TemplateForm.tsx +111 -86
  513. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +274 -0
  514. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  515. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  516. package/src/components/ToolBlock/ToolBlock.tsx +46 -54
  517. package/src/components/Toolbox/Toolbox.stories.tsx +16 -18
  518. package/src/components/Toolbox/Toolbox.tsx +71 -66
  519. package/src/components/index.ts +4 -8
  520. package/src/containers/AgentArticle/AgentArticle.stories.tsx +120 -0
  521. package/src/containers/AgentArticle/AgentArticle.tsx +204 -0
  522. package/src/containers/AgentArticle/index.ts +5 -0
  523. package/src/containers/AgentProperties/AgentProperties.stories.tsx +101 -0
  524. package/src/containers/AgentProperties/AgentProperties.tsx +127 -0
  525. package/src/containers/AgentProperties/index.ts +5 -0
  526. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +29 -0
  527. package/src/containers/BlueprintArticle/index.ts +5 -0
  528. package/src/containers/ChatArticle/ChatArticle.tsx +107 -0
  529. package/src/containers/ChatArticle/index.ts +5 -0
  530. package/src/containers/ChatCompanion/ChatCompanion.tsx +133 -0
  531. package/src/containers/ChatCompanion/index.ts +5 -0
  532. package/src/{components → containers/ChatDialog}/ChatDialog.tsx +14 -16
  533. package/src/containers/ChatDialog/index.ts +5 -0
  534. package/src/containers/PlanArticle/PlanArticle.tsx +33 -0
  535. package/src/containers/PlanArticle/index.ts +5 -0
  536. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +75 -0
  537. package/src/containers/RoutineArticle/RoutineArticle.tsx +109 -0
  538. package/src/containers/RoutineArticle/index.ts +5 -0
  539. package/src/containers/RoutineList/RoutineList.stories.tsx +130 -0
  540. package/src/containers/RoutineList/RoutineList.tsx +50 -0
  541. package/src/containers/RoutineList/index.ts +5 -0
  542. package/src/containers/TracePanel/TracePanel.stories.tsx +285 -0
  543. package/src/containers/TracePanel/TracePanel.tsx +177 -0
  544. package/src/containers/TracePanel/dxn-extractor.test.ts +153 -0
  545. package/src/containers/TracePanel/dxn-extractor.ts +178 -0
  546. package/src/containers/TracePanel/execution-graph.test.ts +387 -0
  547. package/src/containers/TracePanel/execution-graph.ts +624 -0
  548. package/src/containers/TracePanel/index.ts +9 -0
  549. package/src/containers/TracePanel/span-tree.test.ts +166 -0
  550. package/src/containers/TracePanel/span-tree.ts +214 -0
  551. package/src/containers/TracePanel/testing/index.ts +6 -0
  552. package/src/containers/TracePanel/testing/simulated-agent.ts +114 -0
  553. package/src/containers/TracePanel/testing/snapshot-playback.ts +45 -0
  554. package/src/containers/TriggerStatus/TriggerStatus.tsx +129 -0
  555. package/src/containers/TriggerStatus/index.ts +5 -0
  556. package/src/containers/index.ts +17 -0
  557. package/src/extensions/index.ts +5 -0
  558. package/src/extensions/prompt-extension.ts +111 -0
  559. package/src/feed-logger.ts +145 -0
  560. package/src/hooks/index.ts +4 -1
  561. package/src/hooks/useBlueprintRegistry.ts +48 -27
  562. package/src/hooks/useChatKeymap.ts +52 -0
  563. package/src/hooks/useChatProcessor.ts +45 -29
  564. package/src/hooks/useChatServices.ts +8 -30
  565. package/src/hooks/useChatToolbarActions.ts +120 -0
  566. package/src/hooks/useContextBinder.ts +23 -10
  567. package/src/hooks/useContextObjects.ts +17 -25
  568. package/src/hooks/useDebug.ts +38 -0
  569. package/src/hooks/useFilteredTypes.ts +37 -0
  570. package/src/hooks/usePresets.ts +2 -1
  571. package/src/hooks/useReferencesProvider.ts +5 -8
  572. package/src/index.ts +1 -7
  573. package/src/meta.ts +8 -5
  574. package/src/operations/create-chat.ts +84 -0
  575. package/src/operations/ensure-companion-chat.ts +63 -0
  576. package/src/operations/index.ts +16 -0
  577. package/src/operations/on-create-space.ts +24 -0
  578. package/src/operations/prompt.test.ts +77 -0
  579. package/src/operations/resolve-navigation-targets.ts +26 -0
  580. package/src/operations/run-prompt-in-new-chat.ts +113 -0
  581. package/src/operations/set-current-chat.ts +49 -0
  582. package/src/operations/toggle-trace-panel-debug.ts +27 -0
  583. package/src/operations/update-chat-name.ts +61 -0
  584. package/src/plugin.ts +11 -0
  585. package/src/processor/index.ts +0 -1
  586. package/src/processor/presets.ts +12 -4
  587. package/src/processor/processor.test.ts +20 -61
  588. package/src/processor/processor.ts +238 -163
  589. package/src/testing/data/trace-timeline.dx.json +4657 -0
  590. package/src/testing/index.ts +1 -0
  591. package/src/testing/test-generator.test.ts +70 -0
  592. package/src/testing/test-generator.ts +217 -194
  593. package/src/testing/test-sequence.ts +6 -6
  594. package/src/testing/test-services.ts +9 -7
  595. package/src/testing/test-trace.ts +20 -0
  596. package/src/testing/trace-timeline.conversations.json +1 -0
  597. package/src/testing/trace-timeline.test.ts +247 -0
  598. package/src/testing.ts +7 -0
  599. package/src/translations.ts +161 -81
  600. package/src/types/Assistant.ts +17 -54
  601. package/src/types/AssistantCapabilities.ts +35 -0
  602. package/src/types/AssistantEvents.ts +11 -0
  603. package/src/types/AssistantOperation.ts +141 -0
  604. package/src/types/Settings.ts +82 -0
  605. package/src/types/index.ts +8 -2
  606. package/src/types/service.ts +14 -11
  607. package/src/util/suggestions.test.ts +52 -0
  608. package/src/util/suggestions.ts +42 -0
  609. package/dist/lib/browser/BlueprintContainer-GMSYKGSO.mjs +0 -36
  610. package/dist/lib/browser/BlueprintContainer-GMSYKGSO.mjs.map +0 -7
  611. package/dist/lib/browser/ChatCompanion-M3FDKTQM.mjs +0 -151
  612. package/dist/lib/browser/ChatCompanion-M3FDKTQM.mjs.map +0 -7
  613. package/dist/lib/browser/ChatContainer-KAH7XITI.mjs +0 -74
  614. package/dist/lib/browser/ChatContainer-KAH7XITI.mjs.map +0 -7
  615. package/dist/lib/browser/ChatDialog-ZWRGABW6.mjs +0 -87
  616. package/dist/lib/browser/ChatDialog-ZWRGABW6.mjs.map +0 -7
  617. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +0 -19
  618. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +0 -7
  619. package/dist/lib/browser/app-graph-builder-R5T7BJPC.mjs +0 -183
  620. package/dist/lib/browser/app-graph-builder-R5T7BJPC.mjs.map +0 -7
  621. package/dist/lib/browser/blueprint-definition-AGTDXTXO.mjs +0 -13
  622. package/dist/lib/browser/chunk-357IHWQL.mjs +0 -1519
  623. package/dist/lib/browser/chunk-357IHWQL.mjs.map +0 -7
  624. package/dist/lib/browser/chunk-A2NVNXPL.mjs +0 -170
  625. package/dist/lib/browser/chunk-A2NVNXPL.mjs.map +0 -7
  626. package/dist/lib/browser/chunk-CQW6UPJM.mjs +0 -199
  627. package/dist/lib/browser/chunk-CQW6UPJM.mjs.map +0 -7
  628. package/dist/lib/browser/chunk-GNI6HL6G.mjs +0 -219
  629. package/dist/lib/browser/chunk-GNI6HL6G.mjs.map +0 -7
  630. package/dist/lib/browser/chunk-GXHZTOWJ.mjs +0 -378
  631. package/dist/lib/browser/chunk-GXHZTOWJ.mjs.map +0 -7
  632. package/dist/lib/browser/chunk-L5OA5OGS.mjs +0 -262
  633. package/dist/lib/browser/chunk-L5OA5OGS.mjs.map +0 -7
  634. package/dist/lib/browser/chunk-MEN5WTLA.mjs +0 -182
  635. package/dist/lib/browser/chunk-MEN5WTLA.mjs.map +0 -7
  636. package/dist/lib/browser/chunk-PUG24BEC.mjs +0 -277
  637. package/dist/lib/browser/chunk-PUG24BEC.mjs.map +0 -7
  638. package/dist/lib/browser/chunk-SJJV3HEX.mjs +0 -16
  639. package/dist/lib/browser/chunk-SJJV3HEX.mjs.map +0 -7
  640. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +0 -7
  641. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +0 -18
  642. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +0 -7
  643. package/dist/lib/browser/index.mjs +0 -369
  644. package/dist/lib/browser/index.mjs.map +0 -7
  645. package/dist/lib/browser/intent-resolver-3C5TABOX.mjs +0 -136
  646. package/dist/lib/browser/intent-resolver-3C5TABOX.mjs.map +0 -7
  647. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +0 -17
  648. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +0 -7
  649. package/dist/lib/browser/meta.json +0 -1
  650. package/dist/lib/browser/react-surface-EYKA5IFU.mjs +0 -90
  651. package/dist/lib/browser/react-surface-EYKA5IFU.mjs.map +0 -7
  652. package/dist/lib/browser/settings-VMVBYZLN.mjs +0 -23
  653. package/dist/lib/browser/settings-VMVBYZLN.mjs.map +0 -7
  654. package/dist/lib/browser/state-CFREPBB6.mjs +0 -21
  655. package/dist/lib/browser/state-CFREPBB6.mjs.map +0 -7
  656. package/dist/lib/browser/toolkit-F3NQ7TSI.mjs +0 -21
  657. package/dist/lib/browser/toolkit-F3NQ7TSI.mjs.map +0 -7
  658. package/dist/lib/browser/types/index.mjs +0 -19
  659. package/dist/lib/node-esm/BlueprintContainer-6GBLMK4Z.mjs +0 -37
  660. package/dist/lib/node-esm/BlueprintContainer-6GBLMK4Z.mjs.map +0 -7
  661. package/dist/lib/node-esm/ChatCompanion-OV426GCP.mjs +0 -152
  662. package/dist/lib/node-esm/ChatCompanion-OV426GCP.mjs.map +0 -7
  663. package/dist/lib/node-esm/ChatContainer-UKY7NHFY.mjs +0 -75
  664. package/dist/lib/node-esm/ChatContainer-UKY7NHFY.mjs.map +0 -7
  665. package/dist/lib/node-esm/ChatDialog-2BDQIEXH.mjs +0 -88
  666. package/dist/lib/node-esm/ChatDialog-2BDQIEXH.mjs.map +0 -7
  667. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +0 -20
  668. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +0 -7
  669. package/dist/lib/node-esm/app-graph-builder-I52RYVWH.mjs +0 -184
  670. package/dist/lib/node-esm/app-graph-builder-I52RYVWH.mjs.map +0 -7
  671. package/dist/lib/node-esm/blueprint-definition-CFCUD2VC.mjs +0 -14
  672. package/dist/lib/node-esm/chunk-2CAETDW2.mjs +0 -183
  673. package/dist/lib/node-esm/chunk-2CAETDW2.mjs.map +0 -7
  674. package/dist/lib/node-esm/chunk-4J5FYNNM.mjs +0 -171
  675. package/dist/lib/node-esm/chunk-4J5FYNNM.mjs.map +0 -7
  676. package/dist/lib/node-esm/chunk-5ARE4R2I.mjs +0 -220
  677. package/dist/lib/node-esm/chunk-5ARE4R2I.mjs.map +0 -7
  678. package/dist/lib/node-esm/chunk-7ZYOYW7F.mjs +0 -264
  679. package/dist/lib/node-esm/chunk-7ZYOYW7F.mjs.map +0 -7
  680. package/dist/lib/node-esm/chunk-HJPIYMWD.mjs +0 -1520
  681. package/dist/lib/node-esm/chunk-HJPIYMWD.mjs.map +0 -7
  682. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  683. package/dist/lib/node-esm/chunk-O36P4LN5.mjs +0 -200
  684. package/dist/lib/node-esm/chunk-O36P4LN5.mjs.map +0 -7
  685. package/dist/lib/node-esm/chunk-WE6KTH72.mjs +0 -25
  686. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +0 -7
  687. package/dist/lib/node-esm/chunk-XM4BVQQR.mjs +0 -278
  688. package/dist/lib/node-esm/chunk-XM4BVQQR.mjs.map +0 -7
  689. package/dist/lib/node-esm/chunk-XQBL2SBL.mjs +0 -17
  690. package/dist/lib/node-esm/chunk-XQBL2SBL.mjs.map +0 -7
  691. package/dist/lib/node-esm/chunk-YIO5MEPR.mjs +0 -380
  692. package/dist/lib/node-esm/chunk-YIO5MEPR.mjs.map +0 -7
  693. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +0 -19
  694. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +0 -7
  695. package/dist/lib/node-esm/index.mjs +0 -370
  696. package/dist/lib/node-esm/index.mjs.map +0 -7
  697. package/dist/lib/node-esm/intent-resolver-HQ27YALS.mjs +0 -137
  698. package/dist/lib/node-esm/intent-resolver-HQ27YALS.mjs.map +0 -7
  699. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +0 -18
  700. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +0 -7
  701. package/dist/lib/node-esm/meta.json +0 -1
  702. package/dist/lib/node-esm/react-surface-UOC3CBPH.mjs +0 -91
  703. package/dist/lib/node-esm/react-surface-UOC3CBPH.mjs.map +0 -7
  704. package/dist/lib/node-esm/settings-7AUVNDM2.mjs +0 -24
  705. package/dist/lib/node-esm/settings-7AUVNDM2.mjs.map +0 -7
  706. package/dist/lib/node-esm/state-XXND44OW.mjs +0 -22
  707. package/dist/lib/node-esm/state-XXND44OW.mjs.map +0 -7
  708. package/dist/lib/node-esm/toolkit-7CH5UNSQ.mjs +0 -22
  709. package/dist/lib/node-esm/toolkit-7CH5UNSQ.mjs.map +0 -7
  710. package/dist/lib/node-esm/types/index.mjs +0 -20
  711. package/dist/types/src/capabilities/capabilities.d.ts +0 -11
  712. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  713. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  714. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  715. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  716. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  717. package/dist/types/src/components/ChatCompanion.d.ts +0 -13
  718. package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
  719. package/dist/types/src/components/ChatContainer.d.ts +0 -11
  720. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  721. package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
  722. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +0 -7
  723. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +0 -1
  724. package/dist/types/src/components/ChatProgress/index.d.ts +0 -2
  725. package/dist/types/src/components/ChatProgress/index.d.ts.map +0 -1
  726. package/dist/types/src/components/ChatThread/reducers.d.ts +0 -40
  727. package/dist/types/src/components/ChatThread/reducers.d.ts.map +0 -1
  728. package/dist/types/src/components/ChatToolbar/ChatToolbar.d.ts +0 -6
  729. package/dist/types/src/components/ChatToolbar/ChatToolbar.d.ts.map +0 -1
  730. package/dist/types/src/components/ChatToolbar/index.d.ts +0 -2
  731. package/dist/types/src/components/ChatToolbar/index.d.ts.map +0 -1
  732. package/dist/types/src/components/ChatToolbar/useChatToolbarActions.d.ts +0 -9
  733. package/dist/types/src/components/ChatToolbar/useChatToolbarActions.d.ts.map +0 -1
  734. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  735. package/dist/types/src/events.d.ts +0 -4
  736. package/dist/types/src/events.d.ts.map +0 -1
  737. package/dist/types/src/functions/analysis.d.ts +0 -5
  738. package/dist/types/src/functions/analysis.d.ts.map +0 -1
  739. package/dist/types/src/functions/index.d.ts +0 -4
  740. package/dist/types/src/functions/index.d.ts.map +0 -1
  741. package/dist/types/src/functions/object-list.d.ts +0 -10
  742. package/dist/types/src/functions/object-list.d.ts.map +0 -1
  743. package/dist/types/src/functions/object-load.d.ts +0 -8
  744. package/dist/types/src/functions/object-load.d.ts.map +0 -1
  745. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  746. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  747. package/dist/types/src/processor/update-name.d.ts +0 -10
  748. package/dist/types/src/processor/update-name.d.ts.map +0 -1
  749. package/dist/types/src/queue-logger.d.ts +0 -11
  750. package/dist/types/src/queue-logger.d.ts.map +0 -1
  751. package/dist/types/src/toolkits/AssistantToolkit.d.ts +0 -21
  752. package/dist/types/src/toolkits/AssistantToolkit.d.ts.map +0 -1
  753. package/dist/types/src/toolkits/SystemToolkit.d.ts +0 -69
  754. package/dist/types/src/toolkits/SystemToolkit.d.ts.map +0 -1
  755. package/dist/types/src/toolkits/index.d.ts +0 -3
  756. package/dist/types/src/toolkits/index.d.ts.map +0 -1
  757. package/dist/types/src/types/AssistantAction.d.ts +0 -119
  758. package/dist/types/src/types/AssistantAction.d.ts.map +0 -1
  759. package/dist/types/src/types/defs.d.ts +0 -2
  760. package/dist/types/src/types/defs.d.ts.map +0 -1
  761. package/src/AssistantPlugin.tsx +0 -171
  762. package/src/capabilities/capabilities.ts +0 -18
  763. package/src/capabilities/intent-resolver.ts +0 -121
  764. package/src/components/BlueprintContainer.tsx +0 -30
  765. package/src/components/ChatCompanion.tsx +0 -136
  766. package/src/components/ChatContainer.tsx +0 -51
  767. package/src/components/ChatProgress/ChatProgress.tsx +0 -67
  768. package/src/components/ChatProgress/index.ts +0 -5
  769. package/src/components/ChatThread/reducers.ts +0 -151
  770. package/src/components/ChatToolbar/ChatToolbar.tsx +0 -23
  771. package/src/components/ChatToolbar/useChatToolbarActions.ts +0 -126
  772. package/src/components/TemplateEditor/handlebars-extension.ts +0 -166
  773. package/src/events.ts +0 -11
  774. package/src/functions/analysis.ts +0 -22
  775. package/src/functions/index.ts +0 -7
  776. package/src/functions/object-list.ts +0 -48
  777. package/src/functions/object-load.ts +0 -45
  778. package/src/hooks/useItemTypes.ts +0 -37
  779. package/src/processor/update-name.ts +0 -57
  780. package/src/queue-logger.ts +0 -125
  781. package/src/toolkits/AssistantToolkit.ts +0 -55
  782. package/src/toolkits/SystemToolkit.ts +0 -292
  783. package/src/toolkits/index.ts +0 -6
  784. package/src/types/AssistantAction.ts +0 -70
  785. package/src/types/defs.ts +0 -5
  786. /package/dist/lib/{browser/blueprint-definition-AGTDXTXO.mjs.map → neutral/AssistantPlugin.mjs.map} +0 -0
  787. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/ChatArticle-WVAFZPVI.mjs.map} +0 -0
  788. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  789. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  790. /package/dist/lib/{node-esm/blueprint-definition-CFCUD2VC.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  791. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  792. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
  793. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/TracePanel/TracePanel.tsx", "../../../src/containers/TracePanel/execution-graph.ts", "../../../src/containers/TracePanel/span-tree.ts", "../../../src/containers/TracePanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { pipe } from 'effect/Function';\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { useAtomCapability, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Trace } from '@dxos/compute';\nimport { Filter, Query } from '@dxos/echo';\nimport { AtomQuery } from '@dxos/echo-atom';\nimport { FeedTraceSink, Process } from '@dxos/functions-runtime';\nimport { DXN } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { useComputeRuntimeService } from '@dxos/plugin-automation/hooks';\nimport { type Space } from '@dxos/react-client/echo';\nimport { ScrollContainer } from '@dxos/react-ui';\nimport { useAttentionAttributes } from '@dxos/react-ui-attention';\nimport { Timeline, type Commit } from '@dxos/react-ui-components';\nimport { Syntax } from '@dxos/react-ui-syntax-highlighter';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\n\nimport { ProcessTree, ProcessTreeProps } from '#components';\nimport { AssistantCapabilities } from '#types';\n\nimport { buildExecutionGraph, type ExecutionGraph } from './execution-graph';\n\nexport type TracePanelProps = AppSurface.SpaceArticleProps<Pick<ProcessTreeProps, 'onProcessTerminate'>>;\n\nexport const TracePanel = composable<HTMLDivElement, TracePanelProps>(\n ({ space, attendableId, onProcessTerminate, ...props }, forwardedRef) => {\n const attentionAttrs = useAttentionAttributes(attendableId);\n const { invokePromise } = useOperationInvoker();\n const settings = useAtomCapability(AssistantCapabilities.Settings);\n const tracePanelDebug = settings.tracePanelDebug ?? false;\n const { branches, commits, spanTree } = useExecutionGraph(space);\n const runtime = useComputeRuntimeService(Process.ProcessMonitorService, space.id);\n const processes = useAtomValue(runtime?.processTreeAtom ?? atomEmpty);\n\n const [selectedCommit, setSelectedCommit] = useState<Commit | undefined>();\n const handleCommitSelect = useCallback(\n (commit: Commit | undefined) => {\n setSelectedCommit(commit);\n if (commit?.link) {\n const dxn = DXN.tryParse(commit.link)?.asEchoDXN();\n if (dxn?.spaceId && dxn.echoId) {\n // TODO(dmaretskyi): Navigates, but fails to open.\n void invokePromise(LayoutOperation.Open, {\n subject: [`${dxn.spaceId}:${dxn.echoId}`],\n });\n }\n }\n },\n [invokePromise, setSelectedCommit],\n );\n\n // Select current branch.\n const [currentBranch, setCurrentBranch] = useState<string | null>(null);\n const handleProcessSelect = useCallback(\n (process: Process.Info) => {\n const branch = branches.find((branch) => branch === process.pid.toString());\n if (branch) {\n setCurrentBranch(branch);\n }\n },\n [branches],\n );\n\n return (\n <div\n {...composableProps(props, {\n ...attentionAttrs,\n classNames: mx(\n 'h-full grid divide-y divide-separator',\n !tracePanelDebug && selectedCommit\n ? 'grid-rows-[minmax(0,4lh)_1fr_minmax(0,206px)]'\n : 'grid-rows-[minmax(0,4lh)_1fr]',\n ),\n })}\n ref={forwardedRef}\n >\n <ProcessTree\n processes={processes}\n onProcessSelect={handleProcessSelect}\n onProcessTerminate={onProcessTerminate}\n />\n\n <ScrollContainer.Root pin>\n <ScrollContainer.Content thin>\n <ScrollContainer.Fade />\n <ScrollContainer.Viewport>\n {tracePanelDebug ? (\n <Syntax.Root data={spanTree}>\n <Syntax.Content>\n <Syntax.Viewport>\n <Syntax.Code className='text-xs' />\n </Syntax.Viewport>\n </Syntax.Content>\n </Syntax.Root>\n ) : (\n <Timeline\n compact\n commits={commits}\n branches={branches}\n currentBranch={currentBranch}\n onSelect={handleCommitSelect}\n />\n )}\n </ScrollContainer.Viewport>\n <ScrollContainer.ScrollDownButton />\n </ScrollContainer.Content>\n </ScrollContainer.Root>\n\n {!tracePanelDebug && selectedCommit && (\n <Syntax.Root data={selectedCommit}>\n <Syntax.Content>\n <Syntax.Viewport>\n <Syntax.Code className='text-xs' />\n </Syntax.Viewport>\n </Syntax.Content>\n </Syntax.Root>\n )}\n </div>\n );\n },\n);\n\n// Stable ref.\nconst atomEmpty = Atom.make(() => [] as const);\n\ntype UseExecutionGraphOptions = {\n eventLimit?: number;\n};\n\nconst useExecutionGraph = (space: Space, { eventLimit }: UseExecutionGraphOptions = {}): ExecutionGraph => {\n const runtime = useComputeRuntimeService(Process.ProcessMonitorService, space.id);\n const activeProcesses = useAtomValue(runtime?.processTreeAtom ?? atomEmpty);\n const atom = useMemo(\n () => getExecutionGraph(space, activeProcesses, { eventLimit }),\n [space, activeProcesses, eventLimit],\n );\n\n return useAtomValue(atom);\n};\n\nconst getExecutionGraph = (\n space: Space,\n activeProcesses: readonly Process.Info[] = [],\n { eventLimit = 300 }: UseExecutionGraphOptions = {},\n): Atom.Atom<ExecutionGraph> => {\n return pipe(\n AtomQuery.make(space.db, FeedTraceSink.query),\n Atom.map((feeds) => {\n log('trace panel query trace feeds', { spaceId: space.id, feedCount: feeds.length });\n // TODO(dmaretskyi): This should be possible in a single query with properly working limit(1) and feed > feed contents traversal.\n return AtomQuery.make(\n space.db,\n feeds.length > 0\n ? Query.type(Trace.Message).from(feeds[0])\n : (Query.select(Filter.nothing()) as Query.Query<never>),\n );\n }),\n (_) => Atom.make((get) => get(get(_))),\n (_) =>\n Atom.make((get) =>\n buildExecutionGraph({\n traceMessages: [...get(_)],\n activeProcesses,\n eventLimit,\n }),\n ),\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as Either from 'effect/Either';\nimport { pipe } from 'effect/Function';\nimport * as Pipeable from 'effect/Pipeable';\nimport * as Schema from 'effect/Schema';\nimport * as Struct from 'effect/Struct';\n\nimport { AgentRequestBegin, AgentRequestEnd, CompleteBlock } from '@dxos/assistant';\nimport { Trace } from '@dxos/compute';\nimport { AGENT_PROCESS_KEY, Process } from '@dxos/functions-runtime';\nimport { LogLevel, log } from '@dxos/log';\nimport { type Commit } from '@dxos/react-ui-components';\n\nimport { ROOT_SPAN_ID, type Span, buildSpanTree, isSpanBeginEvent, isSpanEndEvent, walkSpanTree } from './span-tree';\n\n/**\n * Branch name for top-level operation invocations.\n */\nconst MAIN_BRANCH = 'main';\n\nconst ICONS = {\n agentRequestBegin: {\n icon: 'ph--atom--regular',\n level: LogLevel.VERBOSE,\n },\n agentRequestEnd: {\n icon: 'ph--atom--regular',\n level: LogLevel.INFO,\n },\n userMessage: {\n icon: 'ph--user--regular',\n level: LogLevel.VERBOSE,\n },\n statusMessage: {\n icon: 'ph--info--regular',\n level: LogLevel.VERBOSE,\n },\n operationStart: {\n icon: 'ph--function--regular',\n level: LogLevel.VERBOSE,\n },\n operationEndSuccess: {\n icon: 'ph--function--regular',\n level: LogLevel.INFO,\n },\n operationEndError: {\n icon: 'ph--function--regular',\n level: LogLevel.ERROR,\n },\n agentRequestRunning: {\n icon: 'ph--spinner-gap--regular',\n level: LogLevel.VERBOSE,\n },\n processRunning: {\n icon: 'ph--spinner-gap--regular',\n level: LogLevel.VERBOSE,\n },\n} as const;\n\nexport interface BuildExecutionGraphParams {\n traceMessages: Trace.Message[];\n activeProcesses?: readonly Process.Info[];\n eventLimit?: number;\n}\n\n/**\n * Builds a Timeline-compatible execution graph from trace messages and active processes.\n *\n * The conversion runs in two stages:\n * 1. `buildSpanTree` converts the flat list of trace messages into a hierarchical\n * tree of spans grouped by process id (pid). See `./span-tree.ts`.\n * 2. `spanTreeToCommits` walks the tree and emits one commit per event, using the\n * tree structure to decide which branch each commit belongs to and how to wire parents.\n *\n * Pure function — no signals or atoms.\n */\nexport type ExecutionGraph = {\n branches: string[];\n commits: Commit[];\n spanTree: Span;\n};\n\nexport const buildExecutionGraph = ({\n traceMessages,\n activeProcesses = [],\n eventLimit = 500,\n}: BuildExecutionGraphParams): ExecutionGraph => {\n const spanTree = buildSpanTree(traceMessages, { eventLimit });\n const built = spanTreeToCommits(spanTree, activeProcesses);\n log('trace execution graph', {\n traceMessages: traceMessages.length,\n commits: built.commits.length,\n branches: built.branches.length,\n activeProcesses: activeProcesses.length,\n });\n return { ...built, spanTree };\n};\n\n/**\n * Visual representation of a single trace event — icon, log level, message string.\n * `undefined` indicates that the event should not produce a commit.\n */\ninterface EventPresentation {\n icon: string;\n level: LogLevel;\n message: string;\n idSuffix?: string;\n}\n\nconst presentEvent = (event: Trace.FlatEvent): EventPresentation | undefined => {\n if (Trace.isOfType(AgentRequestBegin, event)) {\n if (Either.isLeft(Schema.validateEither(AgentRequestBegin.schema)(event.data))) {\n log('invalid trace event', { type: event.type });\n return undefined;\n }\n return {\n icon: ICONS.agentRequestBegin.icon,\n level: ICONS.agentRequestBegin.level,\n message: 'Agent processing request...',\n };\n }\n if (Trace.isOfType(AgentRequestEnd, event)) {\n if (Either.isLeft(Schema.validateEither(AgentRequestEnd.schema)(event.data))) {\n log('invalid trace event', { type: event.type });\n return undefined;\n }\n return {\n icon: ICONS.agentRequestEnd.icon,\n level: ICONS.agentRequestEnd.level,\n message: 'Agent completed request',\n };\n }\n if (Trace.isOfType(CompleteBlock, event)) {\n if (Either.isLeft(Schema.validateEither(CompleteBlock.schema)(event.data))) {\n log('invalid trace event', { type: event.type });\n return undefined;\n }\n switch (event.data.block._tag) {\n case 'text':\n return event.data.role === 'user'\n ? {\n icon: ICONS.userMessage.icon,\n level: ICONS.userMessage.level,\n message: trimText(event.data.block.text),\n }\n : undefined;\n case 'status':\n return {\n icon: ICONS.statusMessage.icon,\n level: ICONS.statusMessage.level,\n message: trimText(event.data.block.statusText),\n };\n default:\n return undefined;\n }\n }\n if (Trace.isOfType(Trace.OperationStart, event)) {\n if (Either.isLeft(Schema.validateEither(Trace.OperationStart.schema)(event.data))) {\n log('invalid trace event', { type: event.type });\n return undefined;\n }\n return {\n icon: ICONS.operationStart.icon,\n level: ICONS.operationStart.level,\n message: event.data.name ?? event.data.key,\n idSuffix: `${event.data.key}:start`,\n };\n }\n if (Trace.isOfType(Trace.OperationEnd, event)) {\n if (Either.isLeft(Schema.validateEither(Trace.OperationEnd.schema)(event.data))) {\n log('invalid trace event', { type: event.type });\n return undefined;\n }\n const success = event.data.outcome === 'success';\n return {\n icon: success ? ICONS.operationEndSuccess.icon : ICONS.operationEndError.icon,\n level: success ? ICONS.operationEndSuccess.level : ICONS.operationEndError.level,\n message: `${event.data.name ?? event.data.key} - ${success ? 'Success' : 'Error'}`,\n idSuffix: `${event.data.key}:end`,\n };\n }\n return undefined;\n};\n\n/**\n * A span is \"collapsible\" when it would otherwise render as an empty fork-and-merge:\n * exactly two events that form a begin/end pair and no child sub-spans. In that case\n * we emit a single commit for the end event on the parent branch.\n *\n * A *pending* span (one whose end event has not yet been recorded) is never collapsed:\n * its trailing events should keep rendering as middle commits on the span's own branch\n * — never as a fake \"end\" commit on the parent branch.\n *\n * Both nested spans and top-level spans (whose parent is the synthetic root) are eligible\n * once they have completed: a span with no inner activity is collapsed regardless of where\n * it sits in the tree.\n */\nconst isCollapsibleSpan = (span: Span, parent: Span | null): boolean => {\n if (span.id === ROOT_SPAN_ID) {\n return false;\n }\n if (span.events.length !== 2) {\n return false;\n }\n if (span.children.length > 0) {\n return false;\n }\n const firstEvent = span.events[0];\n const lastEvent = span.events[span.events.length - 1];\n if (!isSpanBeginEvent(firstEvent) || !isSpanEndEvent(lastEvent)) {\n return false;\n }\n return parent !== null;\n};\n\n/**\n * Converts a span tree into a flat list of commits + branches suitable for `Timeline` rendering.\n *\n * For every span the algorithm:\n * - emits the **first** event as a \"begin\" commit on the parent span's branch (fork);\n * - emits **middle** events as commits on the span's own branch;\n * - emits the **last** event as an \"end\" commit on the parent span's branch with two parents\n * (the begin commit and the last commit on the span's own branch — a merge).\n *\n * Collapsible spans (`isCollapsibleSpan`) emit only the end commit on the parent branch with\n * a single parent — a tidier rendering for sub-operations that have no inner detail.\n *\n * Events are processed in global chronological order so that sub-operations of a span interleave\n * naturally with the span's own middle events.\n */\nconst spanTreeToCommits = (\n root: Span,\n activeProcesses: readonly Process.Info[],\n): { branches: string[]; commits: Commit[] } => {\n const builder = new GraphBuilder();\n builder.addBranch(MAIN_BRANCH);\n\n // Build a child → parent lookup using the tree's own structure (already correctly parented\n // when the tree was constructed, including sequential spans of the same process).\n const parentBySpan = new Map<Span, Span | null>();\n parentBySpan.set(root, null);\n const indexParents = (span: Span): void => {\n for (const child of span.children) {\n parentBySpan.set(child, span);\n indexParents(child);\n }\n };\n indexParents(root);\n\n const findParentSpan = (span: Span): Span | null => parentBySpan.get(span) ?? null;\n\n // The branch name for a span is its pid — multiple sequential spans of the same process\n // (e.g. successive agent requests in one session) share a branch so they reuse a single lane.\n const branchOf = (span: Span | null): string => {\n if (!span || span.id === ROOT_SPAN_ID) {\n return MAIN_BRANCH;\n }\n return span.meta.pid ?? span.id;\n };\n\n // Selector that returns the most recent commit walking up the ancestor chain of `span`,\n // starting from `span`'s own branch and falling back through parent branches up to main.\n // Used when a commit emitted on a parent/ancestor branch needs to attach to something\n // that hasn't been written to yet (e.g. the first child sub-span begins before any\n // middle event has landed on the parent branch).\n const lastInAncestorChain = (span: Span | null): CommitSelector => {\n const branches: string[] = [];\n const seen = new Set<string>();\n let current = span;\n while (current) {\n const branch = branchOf(current);\n if (!seen.has(branch)) {\n seen.add(branch);\n branches.push(branch);\n }\n current = findParentSpan(current);\n }\n if (!seen.has(MAIN_BRANCH)) {\n branches.push(MAIN_BRANCH);\n }\n return CommitSelector.firstOf(\n ...branches.map((branch) => CommitSelector.branch(branch).pipe(CommitSelector.compose(CommitSelector.last()))),\n );\n };\n\n // Flatten the tree into a chronological stream, recording each event's position within its span\n // so we can detect begin/end events.\n interface EventCursor {\n span: Span;\n event: Trace.FlatEvent;\n eventIndex: number;\n globalIndex: number;\n }\n const stream: EventCursor[] = [];\n walkSpanTree(root, (span) => {\n span.events.forEach((event, eventIndex) => {\n stream.push({ span, event, eventIndex, globalIndex: stream.length });\n });\n });\n stream.sort((a, b) => a.event.timestamp - b.event.timestamp || a.globalIndex - b.globalIndex);\n\n // Track the id of the begin commit for each non-collapsible span so the end commit can merge into it.\n const beginCommitIdBySpan = new Map<string, string>();\n\n for (const { span, event, globalIndex } of stream) {\n const presentation = presentEvent(event);\n if (!presentation) {\n continue;\n }\n\n // Classify based on event TYPE, not array index. A pending span's trailing\n // middle event (e.g. a user message awaiting an agent response) must not be\n // mistaken for the span's end event — otherwise it would render on the\n // parent branch instead of the span's own branch.\n const isBeginEvent = isSpanBeginEvent(event);\n const isEndEvent = isSpanEndEvent(event);\n const parentSpan = findParentSpan(span);\n const collapsible = isCollapsibleSpan(span, parentSpan);\n\n // Collapsed spans: skip the begin event entirely; only the end event renders.\n if (collapsible && isBeginEvent) {\n continue;\n }\n\n const parentBranch = branchOf(parentSpan);\n const ownBranch = branchOf(span);\n\n let branch: string;\n let parents: string[];\n\n if (span.id === ROOT_SPAN_ID) {\n // Root-level events (no pid) attach sequentially to main.\n branch = MAIN_BRANCH;\n parents = builder.computeParents(\n CommitSelector.branch(MAIN_BRANCH).pipe(CommitSelector.compose(CommitSelector.last())),\n );\n } else if (collapsible) {\n // Only the end event reaches here for collapsible spans.\n // Walk the ancestor chain so the commit attaches to the most recent ancestor\n // even when the immediate parent branch has not received a commit yet.\n branch = parentBranch;\n parents = builder.computeParents(lastInAncestorChain(parentSpan));\n } else if (isBeginEvent) {\n // Begin commit: fork off the parent branch.\n // Walk the ancestor chain to find the most recent ancestor commit to fork from.\n branch = parentBranch;\n parents = builder.computeParents(lastInAncestorChain(parentSpan));\n } else if (isEndEvent) {\n // End commit: merge from the span's own branch back into the parent branch.\n branch = parentBranch;\n const beginId = beginCommitIdBySpan.get(span.id);\n parents = builder.computeParents(\n CommitSelector.unionAll(\n beginId ? CommitSelector.id(beginId) : lastInAncestorChain(parentSpan),\n CommitSelector.branch(ownBranch).pipe(CommitSelector.compose(CommitSelector.last())),\n ),\n );\n } else {\n // Middle event: continue the span's own branch.\n branch = ownBranch;\n parents = builder.computeParents(\n CommitSelector.branch(ownBranch).pipe(\n CommitSelector.compose(CommitSelector.last()),\n CommitSelector.orElse(lastInAncestorChain(parentSpan)),\n ),\n );\n }\n\n const commitId = formatCommitId(span, globalIndex, presentation.idSuffix);\n const commit: Commit = {\n id: commitId,\n branch,\n parents,\n timestamp: new Date(event.timestamp),\n icon: presentation.icon,\n level: presentation.level,\n message: presentation.message,\n };\n builder.addCommit(commit);\n\n // Record begin commit so a later end event can merge into it.\n if (isBeginEvent && !collapsible && span.id !== ROOT_SPAN_ID) {\n beginCommitIdBySpan.set(span.id, commitId);\n }\n }\n\n // Append \"running\" indicators for processes that are still active.\n for (const process of activeProcesses) {\n if (\n process.key === AGENT_PROCESS_KEY &&\n process.params.target &&\n (process.state === Process.State.RUNNING || process.state === Process.State.HYBERNATING)\n ) {\n builder.addCommit({\n id: `running:${process.pid}`,\n branch: process.pid,\n parents: builder.computeParents(\n CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),\n ),\n icon: ICONS.agentRequestRunning.icon,\n level: ICONS.agentRequestRunning.level,\n message: 'Generating...',\n timestamp: new Date(),\n });\n } else if (process.state === Process.State.RUNNING && builder.hasBranch(process.pid)) {\n builder.addCommit({\n id: `running:${process.pid}`,\n branch: process.pid,\n parents: builder.computeParents(\n CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),\n ),\n icon: ICONS.processRunning.icon,\n level: ICONS.processRunning.level,\n message: 'Running...',\n timestamp: new Date(),\n });\n }\n }\n\n return builder.build();\n};\n\nconst formatCommitId = (span: Span, globalIndex: number, suffix?: string): string => {\n const base = `${span.id}:${globalIndex}`;\n return suffix ? `${base}:${suffix}` : base;\n};\n\nconst trimText = (text: string) => text.slice(0, 100).trim().split('\\n')[0];\n\ntype Falsy = false | null | undefined;\n\nexport interface CommitSelector extends Pipeable.Pipeable {\n select: (commits: Commit[]) => Commit[];\n}\n\nexport const CommitSelector = {\n make: (select: CommitSelector['select']): CommitSelector => ({\n select,\n pipe(...args: any) {\n return Pipeable.pipeArguments(this, args);\n },\n }),\n\n identity: (): CommitSelector => CommitSelector.make((commits) => commits),\n\n /**\n * Selects commits that match the given predicate.\n */\n filter: (predicate: (commit: Commit) => unknown): CommitSelector =>\n CommitSelector.make((commits) => commits.filter(predicate)),\n\n /**\n * Selects commits by id.\n */\n id: (id: string): CommitSelector => CommitSelector.filter((commit) => commit.id === id),\n /**\n * Selects commits by tag.\n */\n tag: (tag: string | Falsy): CommitSelector => CommitSelector.filter((commit) => tag && commit.tags?.includes(tag)),\n /**\n * Selects commits by if any of the given tags are present.\n */\n anyTags: (tags: (string | Falsy)[]): CommitSelector =>\n CommitSelector.filter((commit) => tags.some((tag) => tag && commit.tags?.includes(tag))),\n /**\n * Selects commits by branch.\n */\n branch: (branch: string | Falsy): CommitSelector =>\n CommitSelector.filter((commit) => branch && commit.branch === branch),\n\n /**\n * Chains two selectors together, applying the second selector to the result of the first.\n *\n * Example:\n *\n * ```\n * CommitSelector.tag('tag').pipe(CommitSelector.compose(CommitSelector.branch('main')));\n * ```\n */\n compose:\n (next: CommitSelector) =>\n (prev: CommitSelector): CommitSelector =>\n CommitSelector.make((commits) => next.select(prev.select(commits))),\n\n /**\n * If `prev` selector matches no commits, return `next` selector, otherwise return `prev` selector.\n * Same as `CommitSelector.firstOf(prev, next)`.\n *\n * Example:\n *\n * ```\n * CommitSelector.tag('tag').pipe(CommitSelector.orElse(CommitSelector.branch('main')));\n * ```\n */\n orElse:\n (next: CommitSelector) =>\n (prev: CommitSelector): CommitSelector =>\n CommitSelector.make((commits) => {\n const selected = prev.select(commits);\n if (selected.length > 0) {\n return selected;\n }\n return next.select(commits);\n }),\n\n /**\n * Selects commits that match either of the given selectors.\n */\n andAlso:\n (next: CommitSelector) =>\n (prev: CommitSelector): CommitSelector =>\n CommitSelector.unionAll(prev, next),\n\n /**\n * Selects the first n commits.\n */\n first: (n: number = 1): CommitSelector => CommitSelector.make((commits) => commits.slice(0, n)),\n /**\n * Selects the last n commits (reverses the order of the commits).\n */\n last: (n: number = 1): CommitSelector => CommitSelector.make((commits) => commits.toReversed().slice(0, n)),\n /**\n * Selects commits that do not match the given selector.\n */\n not: (selector: CommitSelector): CommitSelector =>\n CommitSelector.make((commits) => {\n const selected = selector.select(commits);\n return commits.filter((commit) => !selected.includes(commit));\n }),\n\n /**\n * Selects commits that match any of the given selectors.\n */\n unionAll: (...selectors: CommitSelector[]): CommitSelector =>\n CommitSelector.make((commits) => {\n return Array.dedupeWith(\n selectors.flatMap((selector) => selector.select(commits)),\n (a, b) => a.id === b.id,\n );\n }),\n\n /**\n * Selects commits that match all of the given selectors.\n */\n intersectAll: (...selectors: CommitSelector[]): CommitSelector =>\n CommitSelector.make((commits) => {\n const selected = selectors.map((selector) => selector.select(commits));\n if (selected.length === 0) {\n return [];\n }\n return selected[0].filter((commit) => selected.every((selected) => selected.some((c) => c.id === commit.id)));\n }),\n\n /**\n * Returns the result of the first selector that matches any commits.\n */\n firstOf: (...selectors: CommitSelector[]): CommitSelector =>\n CommitSelector.make((commits) => {\n for (const selector of selectors) {\n const selected = selector.select(commits);\n if (selected.length > 0) {\n return selected;\n }\n }\n return [];\n }),\n};\n\nclass GraphBuilder {\n #commits: Commit[] = [];\n #branches = new Set<string>();\n\n findCommits(selector: CommitSelector): Commit[] {\n return selector.select(this.#commits);\n }\n\n hasBranch(branch: string): boolean {\n return this.#branches.has(branch);\n }\n\n addCommit(commit: Commit) {\n this.addBranch(commit.branch);\n this.#commits.push(commit);\n }\n\n /**\n * Computes parents — picks first matching commit's id.\n */\n computeParents(selector: CommitSelector): string[] {\n return Array.dedupe(selector.select(this.#commits).map((commit) => commit.id));\n }\n\n addBranch(branch: string) {\n this.#branches.add(branch);\n }\n\n /**\n * Removes duplicate commits and dangling parents.\n */\n doctor() {\n this.#commits = pipe(\n this.#commits,\n Array.dedupeWith((a, b) => a.id === b.id),\n Array.map(\n Struct.evolve({\n parents: (parents) =>\n parents ? Array.filter(parents, (id) => this.#commits.some((commit) => commit.id === id)) : undefined,\n }),\n ),\n );\n }\n\n build() {\n this.doctor();\n return {\n commits: this.#commits,\n branches: [...this.#branches],\n };\n }\n}\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { AgentRequestBegin, AgentRequestEnd } from '@dxos/assistant';\nimport { Trace } from '@dxos/compute';\n\n/**\n * Synthetic id assigned to the root span.\n * The root is a virtual container for top-level spans (those without a parent in the captured trace).\n */\nexport const ROOT_SPAN_ID = '<main>';\n\n/**\n * Computed metadata for a span.\n * Derived from the meta of the begin event that opened the span.\n */\nexport interface SpanMeta {\n readonly pid?: string;\n readonly parentPid?: string;\n readonly processName?: string;\n readonly conversationId?: string;\n readonly triggerId?: string;\n readonly toolCallId?: string;\n readonly runtimeName?: string;\n}\n\n/**\n * A span in the trace hierarchy.\n *\n * Each span represents a single bounded unit of work — an operation invocation or an\n * agent request. Spans are opened by `OperationStart` / `AgentRequestBegin` events and\n * closed by their matching `OperationEnd` / `AgentRequestEnd` events. A single process\n * (pid) may produce multiple sequential spans (for example, an agent session that serves\n * three prompts produces three sibling spans sharing the agent's pid).\n *\n * `events` contains the bounded events for this span only — child spans' events are not\n * duplicated here. `children` contains sub-spans that opened while this span was active.\n */\nexport interface Span {\n readonly id: string;\n readonly meta: SpanMeta;\n readonly events: Trace.FlatEvent[];\n readonly children: Span[];\n}\n\nexport const BEGIN_EVENT_TYPES = new Set<string>([Trace.OperationStart.key, AgentRequestBegin.key]);\nexport const END_EVENT_TYPES = new Set<string>([Trace.OperationEnd.key, AgentRequestEnd.key]);\n\nexport const isSpanBeginEvent = (event: Trace.FlatEvent): boolean => BEGIN_EVENT_TYPES.has(event.type);\nexport const isSpanEndEvent = (event: Trace.FlatEvent): boolean => END_EVENT_TYPES.has(event.type);\n\nconst computeMeta = (rawMeta: Trace.Meta): SpanMeta => ({\n pid: rawMeta.pid,\n parentPid: rawMeta.parentPid,\n processName: rawMeta.processName,\n conversationId: rawMeta.conversationId,\n triggerId: rawMeta.triggerId,\n toolCallId: rawMeta.toolCallId,\n runtimeName: rawMeta.runtimeName,\n});\n\ninterface MutableSpan {\n id: string;\n meta: SpanMeta;\n events: Trace.FlatEvent[];\n children: MutableSpan[];\n firstTimestamp: number;\n}\n\nconst makeMutableSpan = (id: string, meta: SpanMeta): MutableSpan => ({\n id,\n meta,\n events: [],\n children: [],\n firstTimestamp: Number.POSITIVE_INFINITY,\n});\n\nconst freezeSpan = (span: MutableSpan): Span => ({\n id: span.id,\n meta: span.meta,\n events: span.events,\n children: span.children.map(freezeSpan),\n});\n\nexport interface BuildSpanTreeOptions {\n /**\n * If provided, only the last `eventLimit` flat events (after flattening and chronological sort)\n * are placed into the tree. Spans with no remaining events are dropped from the result.\n */\n eventLimit?: number;\n}\n\n/**\n * Builds a hierarchical span tree from a list of trace messages.\n *\n * Algorithm:\n * 1. Flatten messages into events and sort them chronologically.\n * 2. For each event:\n * - Begin events (`OperationStart`, `AgentRequestBegin`) open a new span whose parent\n * is the currently-open span of the event's `meta.parentPid`, or the root if there is\n * none. The begin event itself becomes the first event of the new span.\n * - End events (`OperationEnd`, `AgentRequestEnd`) close the currently-open span for\n * the event's `meta.pid` and become its last event.\n * - Other events attach to the currently-open span for their `meta.pid`, or to the\n * root span if no span is currently open for that pid (or the event has no pid).\n * 3. Sort each span's children by their earliest event timestamp.\n */\nexport const buildSpanTree = (messages: Trace.Message[], options: BuildSpanTreeOptions = {}): Span => {\n const allEvents = messages.flatMap((message) => Trace.flatten(message));\n allEvents.sort((a, b) => a.timestamp - b.timestamp);\n\n const events =\n options.eventLimit !== undefined && allEvents.length > options.eventLimit\n ? allEvents.slice(-options.eventLimit)\n : allEvents;\n\n const root = makeMutableSpan(ROOT_SPAN_ID, {});\n\n // Currently-open span for each pid.\n // A process may host multiple sequential spans (e.g. successive agent requests), so we\n // track the active one and start a new span on the next begin event.\n const openSpans = new Map<string, MutableSpan>();\n\n let spanCounter = 0;\n const allocSpanId = (pid: string): string => {\n const id = `${pid}#${spanCounter}`;\n spanCounter += 1;\n return id;\n };\n\n const noteTimestamp = (span: MutableSpan, timestamp: number): void => {\n if (timestamp < span.firstTimestamp) {\n span.firstTimestamp = timestamp;\n }\n };\n\n for (const event of events) {\n const pid = event.meta.pid;\n\n if (!pid) {\n // Events without a pid attach to the root.\n root.events.push(event);\n noteTimestamp(root, event.timestamp);\n continue;\n }\n\n if (BEGIN_EVENT_TYPES.has(event.type)) {\n const parentPid = event.meta.parentPid;\n const parent = (parentPid && openSpans.get(parentPid)) || root;\n const span = makeMutableSpan(allocSpanId(pid), computeMeta(event.meta));\n span.events.push(event);\n noteTimestamp(span, event.timestamp);\n parent.children.push(span);\n // The new span supersedes any previously-open span for this pid.\n openSpans.set(pid, span);\n continue;\n }\n\n if (END_EVENT_TYPES.has(event.type)) {\n const span = openSpans.get(pid);\n if (span) {\n span.events.push(event);\n noteTimestamp(span, event.timestamp);\n openSpans.delete(pid);\n } else {\n // End event without a matching begin — attach to root so the event isn't lost.\n root.events.push(event);\n noteTimestamp(root, event.timestamp);\n }\n continue;\n }\n\n // Non-boundary event: attach to the currently-open span for this pid if any.\n const open = openSpans.get(pid);\n if (open) {\n open.events.push(event);\n noteTimestamp(open, event.timestamp);\n } else {\n root.events.push(event);\n noteTimestamp(root, event.timestamp);\n }\n }\n\n // Sort children chronologically for deterministic output.\n const sortChildren = (span: MutableSpan): void => {\n span.children.sort((a, b) => a.firstTimestamp - b.firstTimestamp);\n for (const child of span.children) {\n sortChildren(child);\n }\n };\n sortChildren(root);\n\n return freezeSpan(root);\n};\n\n/**\n * Walks the span tree in depth-first pre-order, invoking `visit` for each span (root included).\n */\nexport const walkSpanTree = (root: Span, visit: (span: Span, depth: number) => void, depth = 0): void => {\n visit(root, depth);\n for (const child of root.children) {\n walkSpanTree(child, visit, depth + 1);\n }\n};\n\n/**\n * Returns all spans in the tree in depth-first pre-order, root first.\n */\nexport const flattenSpanTree = (root: Span): Span[] => {\n const result: Span[] = [];\n walkSpanTree(root, (span) => result.push(span));\n return result;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { TracePanel } from './TracePanel';\n\nexport * from './TracePanel';\n\nexport default TracePanel;\n"],
5
+ "mappings": "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",
6
+ "names": ["Atom", "useAtomValue", "pipe", "React", "useCallback", "useMemo", "useState", "useAtomCapability", "useOperationInvoker", "LayoutOperation", "Trace", "Filter", "Query", "AtomQuery", "FeedTraceSink", "Process", "DXN", "log", "useComputeRuntimeService", "ScrollContainer", "useAttentionAttributes", "Timeline", "Syntax", "composable", "composableProps", "mx", "ProcessTree", "AssistantCapabilities", "Array", "Either", "pipe", "Pipeable", "Schema", "Struct", "AgentRequestBegin", "AgentRequestEnd", "CompleteBlock", "Trace", "AGENT_PROCESS_KEY", "Process", "LogLevel", "log", "AgentRequestBegin", "AgentRequestEnd", "Trace", "ROOT_SPAN_ID", "BEGIN_EVENT_TYPES", "Set", "OperationStart", "key", "END_EVENT_TYPES", "OperationEnd", "isSpanBeginEvent", "event", "has", "type", "isSpanEndEvent", "computeMeta", "rawMeta", "pid", "parentPid", "processName", "conversationId", "triggerId", "toolCallId", "runtimeName", "makeMutableSpan", "id", "meta", "events", "children", "firstTimestamp", "Number", "POSITIVE_INFINITY", "freezeSpan", "span", "map", "buildSpanTree", "messages", "options", "allEvents", "flatMap", "message", "flatten", "sort", "a", "b", "timestamp", "eventLimit", "undefined", "length", "slice", "root", "openSpans", "Map", "spanCounter", "allocSpanId", "noteTimestamp", "push", "parent", "get", "set", "delete", "open", "sortChildren", "child", "walkSpanTree", "visit", "depth", "agentRequestBegin", "LogLevel", "agentRequestEnd", "userMessage", "statusMessage", "operationStart", "operationEndSuccess", "INFO", "operationEndError", "agentRequestRunning", "VERBOSE", "processRunning", "eventLimit", "log", "traceMessages", "commits", "length", "branches", "built", "activeProcesses", "spanTree", "isLeft", "Schema", "AgentRequestBegin", "type", "undefined", "level", "message", "Trace", "AgentRequestEnd", "event", "data", "role", "ICONS", "trimText", "idSuffix", "success", "icon", "key", "span", "events", "children", "firstEvent", "isSpanBeginEvent", "parent", "builder", "MAIN_BRANCH", "indexParents", "child", "set", "Set", "current", "branch", "has", "seen", "push", "findParentSpan", "CommitSelector", "stream", "walkSpanTree", "forEach", "eventIndex", "globalIndex", "beginCommitIdBySpan", "Map", "presentEvent", "presentation", "parentSpan", "collapsible", "isCollapsibleSpan", "isBeginEvent", "parents", "isEndEvent", "parentBranch", "commitId", "formatCommitId", "id", "timestamp", "addCommit", "commit", "process", "computeParents", "Date", "state", "base", "text", "slice", "make", "select", "args", "identity", "selected", "next", "includes", "GraphBuilder", "findCommits", "selector", "hasBranch", "addBranch", "build", "__dxlog_file", "TracePanel", "invokePromise", "useOperationInvoker", "settings", "useAtomCapability", "AssistantCapabilities", "Settings", "tracePanelDebug", "useExecutionGraph", "space", "runtime", "useComputeRuntimeService", "ProcessMonitorService", "processes", "useAtomValue", "processTreeAtom", "atomEmpty", "selectedCommit", "Process", "useState", "handleCommitSelect", "useCallback", "commit", "setSelectedCommit", "DXN", "tryParse", "dxn", "spaceId", "LayoutOperation", "echoId", "branches", "branch", "process", "setCurrentBranch", "attentionAttrs", "ref", "forwardedRef", "onProcessSelect", "handleProcessSelect", "onProcessTerminate", "pin", "ScrollContainer", "Content", "thin", "Fade", "data", "spanTree", "Syntax", "Viewport", "className", "Timeline", "compact", "commits", "currentBranch", "onSelect", "activeProcesses", "atom", "useMemo", "getExecutionGraph", "eventLimit", "feedCount", "AtomQuery", "length", "Query", "traceMessages", "Trace", "get", "_", "TracePanel"]
7
+ }
@@ -0,0 +1,92 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/containers/TriggerStatus/TriggerStatus.tsx
4
+ import React, { useMemo } from "react";
5
+ import { useTriggerRuntimeControls } from "@dxos/plugin-automation/hooks";
6
+ import { StatusBar } from "@dxos/plugin-status-bar/components";
7
+ import { useObject } from "@dxos/react-client/echo";
8
+ import { IconButton, Popover, useTranslation } from "@dxos/react-ui";
9
+ import { meta } from "#meta";
10
+ var getIcon = (state) => {
11
+ switch (state) {
12
+ case "disabled":
13
+ return "ph--lightning-slash--regular";
14
+ case "idle":
15
+ return "ph--lightning--regular";
16
+ case "edge":
17
+ return "ph--lightning--regular";
18
+ case "running":
19
+ return "ph--lightning--fill";
20
+ case "error":
21
+ return "ph--warning--regular";
22
+ }
23
+ };
24
+ var getIconClassNames = (state) => {
25
+ switch (state) {
26
+ case "running":
27
+ return "animate-pulse text-accent-text";
28
+ case "error":
29
+ return "text-error-text";
30
+ default:
31
+ return void 0;
32
+ }
33
+ };
34
+ var SpaceStatus = ({ space }) => {
35
+ const { t } = useTranslation(meta.id);
36
+ const { state } = useTriggerRuntimeControls(space.db);
37
+ const isEnabled = state?.enabled ?? false;
38
+ const [properties] = useObject(space.properties);
39
+ const computeEnvironment = properties.computeEnvironment ?? "local";
40
+ const triggerState = useMemo(() => {
41
+ if (computeEnvironment === "edge") {
42
+ return "edge";
43
+ }
44
+ if (!isEnabled) {
45
+ return "disabled";
46
+ }
47
+ const hasPending = state?.invocations.some((invocation) => invocation.result === null);
48
+ if (hasPending) {
49
+ return "running";
50
+ }
51
+ const lastInvocation = state?.invocations.at(-1);
52
+ if (lastInvocation?.result?._tag === "Failure") {
53
+ return "error";
54
+ }
55
+ return "idle";
56
+ }, [
57
+ computeEnvironment,
58
+ isEnabled,
59
+ state?.invocations
60
+ ]);
61
+ return /* @__PURE__ */ React.createElement(Popover.Root, null, /* @__PURE__ */ React.createElement(Popover.Trigger, {
62
+ asChild: true
63
+ }, /* @__PURE__ */ React.createElement(StatusBar.Item, null, /* @__PURE__ */ React.createElement(IconButton, {
64
+ icon: getIcon(triggerState),
65
+ iconOnly: true,
66
+ label: t(`trigger-status-${triggerState}.label`),
67
+ classNames: getIconClassNames(triggerState)
68
+ }))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
69
+ side: "left"
70
+ }, /* @__PURE__ */ React.createElement(TriggerStatusPopover, {
71
+ state: triggerState,
72
+ currentFunctionName: state?.invocations.at(-1)?.function?.meta.name ?? state?.invocations.at(-1)?.function?.meta.key,
73
+ lastInvocation: state?.invocations.at(-1)
74
+ }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))));
75
+ };
76
+ var TriggerStatusPopover = ({ state, currentFunctionName, lastInvocation }) => {
77
+ const { t } = useTranslation(meta.id);
78
+ return /* @__PURE__ */ React.createElement("div", {
79
+ className: "flex flex-col gap-2 p-2 w-[240px]"
80
+ }, /* @__PURE__ */ React.createElement("div", {
81
+ className: "flex flex-col gap-1"
82
+ }, /* @__PURE__ */ React.createElement("div", {
83
+ className: "text-sm"
84
+ }, t(`trigger-status-${state}.label`)), currentFunctionName && state === "running" && /* @__PURE__ */ React.createElement("div", {
85
+ className: "text-xs text-description"
86
+ }, currentFunctionName)));
87
+ };
88
+ export {
89
+ SpaceStatus,
90
+ SpaceStatus as default
91
+ };
92
+ //# sourceMappingURL=TriggerStatus-WTFYUIG5.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/TriggerStatus/TriggerStatus.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { type InvocationsState } from '@dxos/functions-runtime';\nimport { useTriggerRuntimeControls } from '@dxos/plugin-automation/hooks';\nimport { StatusBar } from '@dxos/plugin-status-bar/components';\nimport { useObject } from '@dxos/react-client/echo';\nimport { IconButton, Popover, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\ntype TriggerStatusState = 'disabled' | 'idle' | 'running' | 'edge' | 'error';\n\nconst getIcon = (state: TriggerStatusState): string => {\n switch (state) {\n case 'disabled':\n return 'ph--lightning-slash--regular';\n case 'idle':\n return 'ph--lightning--regular';\n case 'edge':\n return 'ph--lightning--regular';\n case 'running':\n return 'ph--lightning--fill';\n case 'error':\n return 'ph--warning--regular';\n }\n};\n\nconst getIconClassNames = (state: TriggerStatusState): string | undefined => {\n switch (state) {\n case 'running':\n return 'animate-pulse text-accent-text';\n case 'error':\n return 'text-error-text';\n default:\n return undefined;\n }\n};\n\nexport type SpaceStatusProps = AppSurface.SpaceArticleProps;\n\nexport const SpaceStatus = ({ space }: SpaceStatusProps) => {\n const { t } = useTranslation(meta.id);\n const { state } = useTriggerRuntimeControls(space.db);\n const isEnabled = state?.enabled ?? false;\n const [properties] = useObject(space.properties);\n const computeEnvironment = properties.computeEnvironment ?? 'local';\n\n // Determine the current trigger status state.\n const triggerState: TriggerStatusState = useMemo(() => {\n if (computeEnvironment === 'edge') {\n return 'edge';\n }\n\n if (!isEnabled) {\n return 'disabled';\n }\n\n // Check if there's any pending invocation.\n const hasPending = state?.invocations.some((invocation) => invocation.result === null);\n if (hasPending) {\n return 'running';\n }\n\n // Check if the last invocation failed.\n const lastInvocation = state?.invocations.at(-1);\n if (lastInvocation?.result?._tag === 'Failure') {\n return 'error';\n }\n\n return 'idle';\n }, [computeEnvironment, isEnabled, state?.invocations]);\n\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <StatusBar.Item>\n <IconButton\n icon={getIcon(triggerState)}\n iconOnly\n label={t(`trigger-status-${triggerState}.label`)}\n classNames={getIconClassNames(triggerState)}\n />\n </StatusBar.Item>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='left'>\n <TriggerStatusPopover\n state={triggerState}\n currentFunctionName={\n state?.invocations.at(-1)?.function?.meta.name ?? state?.invocations.at(-1)?.function?.meta.key\n }\n lastInvocation={state?.invocations.at(-1)}\n />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n\ntype TriggerStatusPopoverProps = {\n state: TriggerStatusState;\n currentFunctionName?: string;\n lastInvocation?: InvocationsState;\n};\n\nconst TriggerStatusPopover = ({\n state,\n currentFunctionName,\n lastInvocation, // TODO(burdon): Show.\n}: TriggerStatusPopoverProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className='flex flex-col gap-2 p-2 w-[240px]'>\n <div className='flex flex-col gap-1'>\n <div className='text-sm'>{t(`trigger-status-${state}.label`)}</div>\n {currentFunctionName && state === 'running' && (\n <div className='text-xs text-description'>{currentFunctionName}</div>\n )}\n </div>\n </div>\n );\n};\n"],
5
+ "mappings": ";;;AAIA,OAAOA,SAASC,eAAe;AAI/B,SAASC,iCAAiC;AAC1C,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,YAAYC,SAASC,sBAAsB;AAEpD,SAASC,YAAY;AAIrB,IAAMC,UAAU,CAACC,UAAAA;AACf,UAAQA,OAAAA;IACN,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;EACX;AACF;AAEA,IAAMC,oBAAoB,CAACD,UAAAA;AACzB,UAAQA,OAAAA;IACN,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT;AACE,aAAOE;EACX;AACF;AAIO,IAAMC,cAAc,CAAC,EAAEC,MAAK,MAAoB;AACrD,QAAM,EAAEC,EAAC,IAAKR,eAAeC,KAAKQ,EAAE;AACpC,QAAM,EAAEN,MAAK,IAAKR,0BAA0BY,MAAMG,EAAE;AACpD,QAAMC,YAAYR,OAAOS,WAAW;AACpC,QAAM,CAACC,UAAAA,IAAchB,UAAUU,MAAMM,UAAU;AAC/C,QAAMC,qBAAqBD,WAAWC,sBAAsB;AAG5D,QAAMC,eAAmCrB,QAAQ,MAAA;AAC/C,QAAIoB,uBAAuB,QAAQ;AACjC,aAAO;IACT;AAEA,QAAI,CAACH,WAAW;AACd,aAAO;IACT;AAGA,UAAMK,aAAab,OAAOc,YAAYC,KAAK,CAACC,eAAeA,WAAWC,WAAW,IAAA;AACjF,QAAIJ,YAAY;AACd,aAAO;IACT;AAGA,UAAMK,iBAAiBlB,OAAOc,YAAYK,GAAG,EAAC;AAC9C,QAAID,gBAAgBD,QAAQG,SAAS,WAAW;AAC9C,aAAO;IACT;AAEA,WAAO;EACT,GAAG;IAACT;IAAoBH;IAAWR,OAAOc;GAAY;AAEtD,SACE,sBAAA,cAAClB,QAAQyB,MAAI,MACX,sBAAA,cAACzB,QAAQ0B,SAAO;IAACC,SAAAA;KACf,sBAAA,cAAC9B,UAAU+B,MAAI,MACb,sBAAA,cAAC7B,YAAAA;IACC8B,MAAM1B,QAAQa,YAAAA;IACdc,UAAAA;IACAC,OAAOtB,EAAE,kBAAkBO,YAAAA,QAAoB;IAC/CgB,YAAY3B,kBAAkBW,YAAAA;QAIpC,sBAAA,cAAChB,QAAQiC,QAAM,MACb,sBAAA,cAACjC,QAAQkC,SAAO;IAACC,MAAK;KACpB,sBAAA,cAACC,sBAAAA;IACChC,OAAOY;IACPqB,qBACEjC,OAAOc,YAAYK,GAAG,EAAC,GAAIe,UAAUpC,KAAKqC,QAAQnC,OAAOc,YAAYK,GAAG,EAAC,GAAIe,UAAUpC,KAAKsC;IAE9FlB,gBAAgBlB,OAAOc,YAAYK,GAAG,EAAC;MAEzC,sBAAA,cAACvB,QAAQyC,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB;AAQA,IAAML,uBAAuB,CAAC,EAC5BhC,OACAiC,qBACAf,eAAc,MACY;AAC1B,QAAM,EAAEb,EAAC,IAAKR,eAAeC,KAAKQ,EAAE;AAEpC,SACE,sBAAA,cAACgC,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACD,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACD,OAAAA;IAAIC,WAAU;KAAWlC,EAAE,kBAAkBL,KAAAA,QAAa,CAAA,GAC1DiC,uBAAuBjC,UAAU,aAChC,sBAAA,cAACsC,OAAAA;IAAIC,WAAU;KAA4BN,mBAAAA,CAAAA,CAAAA;AAKrD;",
6
+ "names": ["React", "useMemo", "useTriggerRuntimeControls", "StatusBar", "useObject", "IconButton", "Popover", "useTranslation", "meta", "getIcon", "state", "getIconClassNames", "undefined", "SpaceStatus", "space", "t", "id", "db", "isEnabled", "enabled", "properties", "computeEnvironment", "triggerState", "hasPending", "invocations", "some", "invocation", "result", "lastInvocation", "at", "_tag", "Root", "Trigger", "asChild", "Item", "icon", "iconOnly", "label", "classNames", "Portal", "Content", "side", "TriggerStatusPopover", "currentFunctionName", "function", "name", "key", "Arrow", "div", "className"]
7
+ }
@@ -0,0 +1,22 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/ai-service.ts
4
+ import * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
+ import { AiModelResolver } from "@dxos/ai";
7
+ import { Capability } from "@dxos/app-framework";
8
+ import { AppCapabilities } from "@dxos/app-toolkit";
9
+ var ai_service_default = Capability.makeModule(Effect.fnUntraced(function* () {
10
+ const resolvers = yield* Capability.getAll(AppCapabilities.AiModelResolver);
11
+ const combinedLayer = resolvers.reduce((acc, resolver) => resolver.pipe(Layer.provide(acc)), AiModelResolver.AiModelResolver.fromModelMap({
12
+ name: "Fallback"
13
+ }, Effect.succeed({})));
14
+ return [
15
+ // TODO(dmaretskyi): Read config from settings.
16
+ Capability.contributes(AppCapabilities.AiServiceLayer, AiModelResolver.AiModelResolver.buildAiService.pipe(Layer.provide(combinedLayer)))
17
+ ];
18
+ }));
19
+ export {
20
+ ai_service_default as default
21
+ };
22
+ //# sourceMappingURL=ai-service-GJXMI5OI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/ai-service.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { AiModelResolver } from '@dxos/ai';\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const resolvers = yield* Capability.getAll(AppCapabilities.AiModelResolver);\n\n // TODO(dmaretskyi): Extract function to reduce them.\n const combinedLayer = resolvers.reduce(\n (acc, resolver) => resolver.pipe(Layer.provide(acc)),\n AiModelResolver.AiModelResolver.fromModelMap({ name: 'Fallback' }, Effect.succeed({})), // Empty resolver as fallback.\n );\n\n return [\n // TODO(dmaretskyi): Read config from settings.\n Capability.contributes(\n AppCapabilities.AiServiceLayer,\n AiModelResolver.AiModelResolver.buildAiService.pipe(Layer.provide(combinedLayer)),\n ),\n ];\n }),\n);\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,uBAAuB;AAChC,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAEhC,IAAA,qBAAeD,WAAWE,WACjBC,kBAAW,aAAA;AAChB,QAAMC,YAAY,OAAOJ,WAAWK,OAAOJ,gBAAgBF,eAAe;AAG1E,QAAMO,gBAAgBF,UAAUG,OAC9B,CAACC,KAAKC,aAAaA,SAASC,KAAWC,cAAQH,GAAAA,CAAAA,GAC/CT,gBAAgBA,gBAAgBa,aAAa;IAAEC,MAAM;EAAW,GAAUC,eAAQ,CAAC,CAAA,CAAA,CAAA;AAGrF,SAAO;;IAELd,WAAWe,YACTd,gBAAgBe,gBAChBjB,gBAAgBA,gBAAgBkB,eAAeP,KAAWC,cAAQL,aAAAA,CAAAA,CAAAA;;AAGxE,CAAA,CAAA;",
6
+ "names": ["Effect", "Layer", "AiModelResolver", "Capability", "AppCapabilities", "makeModule", "fnUntraced", "resolvers", "getAll", "combinedLayer", "reduce", "acc", "resolver", "pipe", "provide", "fromModelMap", "name", "succeed", "contributes", "AiServiceLayer", "buildAiService"]
7
+ }
@@ -0,0 +1,200 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/app-graph-builder.ts
4
+ import * as Effect from "effect/Effect";
5
+ import { pipe } from "effect/Function";
6
+ import * as Option from "effect/Option";
7
+ import { Capability } from "@dxos/app-framework";
8
+ import { AppCapabilities, AppNode, getActiveSpace, getPersonalSpace } from "@dxos/app-toolkit";
9
+ import { AgentPrompt, Chat } from "@dxos/assistant-toolkit";
10
+ import { Blueprint, Routine, Operation } from "@dxos/compute";
11
+ import { Sequence } from "@dxos/conductor";
12
+ import { DXN, Database, Filter, Obj } from "@dxos/echo";
13
+ import { AtomObj } from "@dxos/echo-atom";
14
+ import { invariant } from "@dxos/invariant";
15
+ import { AutomationCapabilities } from "@dxos/plugin-automation";
16
+ import { ClientCapabilities } from "@dxos/plugin-client";
17
+ import { GraphBuilder, Node, NodeMatcher } from "@dxos/plugin-graph";
18
+ import { linkedSegment } from "@dxos/react-ui-attention";
19
+ import { ASSISTANT_COMPANION_VARIANT, meta } from "#meta";
20
+ import { AssistantCapabilities, AssistantOperation } from "#types";
21
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
22
+ var computeOperationsToImport = [
23
+ AgentPrompt
24
+ ];
25
+ var whenNonChatObject = NodeMatcher.whenAll(NodeMatcher.whenEchoObject, NodeMatcher.whenNot(NodeMatcher.whenEchoTypeMatches(Chat.Chat)));
26
+ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
27
+ const capabilities = yield* Capability.Service;
28
+ const extensions = yield* Effect.all([
29
+ GraphBuilder.createTypeExtension({
30
+ id: "root",
31
+ type: Chat.Chat,
32
+ actions: (chat) => {
33
+ return Effect.succeed([
34
+ Node.makeAction({
35
+ id: AssistantOperation.UpdateChatName.meta.key,
36
+ data: () => Effect.gen(function* () {
37
+ const computeRuntime = yield* Capability.get(AutomationCapabilities.ComputeRuntime);
38
+ const db = Obj.getDatabase(chat);
39
+ invariant(db, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 39, S: this, A: ["db", ""] });
40
+ const runtime = yield* computeRuntime.getRuntime(db.spaceId).runtimeEffect;
41
+ yield* Operation.invoke(AssistantOperation.UpdateChatName, {
42
+ chat
43
+ }).pipe(Effect.provide(runtime));
44
+ }),
45
+ properties: {
46
+ label: [
47
+ "chat-update-name.label",
48
+ {
49
+ ns: meta.id
50
+ }
51
+ ],
52
+ icon: "ph--magic-wand--regular",
53
+ disposition: "list-item"
54
+ }
55
+ })
56
+ ]);
57
+ }
58
+ }),
59
+ GraphBuilder.createExtension({
60
+ id: "assistant",
61
+ match: NodeMatcher.whenRoot,
62
+ actions: () => Effect.succeed([
63
+ Node.makeAction({
64
+ id: "import-compute-operations",
65
+ data: Effect.fnUntraced(function* () {
66
+ const capabilities2 = yield* Capability.Service;
67
+ const client = yield* Capability.get(ClientCapabilities.Client);
68
+ const space = getActiveSpace(client, capabilities2) ?? getPersonalSpace(client);
69
+ if (!space) {
70
+ return;
71
+ }
72
+ for (const definition of computeOperationsToImport) {
73
+ const key = definition.meta.key;
74
+ if (!key) {
75
+ continue;
76
+ }
77
+ const existing = yield* Effect.promise(() => space.db.query(Filter.and(Filter.type(Operation.PersistentOperation), Filter.key(key))).run());
78
+ if (existing.length === 0) {
79
+ space.db.add(Operation.serialize(definition));
80
+ }
81
+ }
82
+ yield* Database.flush();
83
+ }),
84
+ properties: {
85
+ label: [
86
+ "import-compute-operations.label",
87
+ {
88
+ ns: meta.id
89
+ }
90
+ ],
91
+ icon: "ph--download-simple--regular"
92
+ }
93
+ }),
94
+ Node.makeAction({
95
+ id: AssistantOperation.ToggleTracePanelDebug.meta.key,
96
+ data: () => Operation.invoke(AssistantOperation.ToggleTracePanelDebug, {}),
97
+ properties: {
98
+ label: [
99
+ "toggle-trace-panel-debug.label",
100
+ {
101
+ ns: meta.id
102
+ }
103
+ ],
104
+ icon: "ph--brackets-curly--regular"
105
+ }
106
+ }),
107
+ Node.makeAction({
108
+ id: "reset-blueprints",
109
+ data: Effect.fnUntraced(function* () {
110
+ const capabilities2 = yield* Capability.Service;
111
+ const client = yield* Capability.get(ClientCapabilities.Client);
112
+ const space = getActiveSpace(client, capabilities2) ?? getPersonalSpace(client);
113
+ if (!space) {
114
+ return;
115
+ }
116
+ const blueprints = yield* Effect.promise(() => space.db.query(Filter.type(Blueprint.Blueprint)).run());
117
+ for (const blueprint of blueprints) {
118
+ space.db.remove(blueprint);
119
+ }
120
+ yield* Database.flush();
121
+ }),
122
+ properties: {
123
+ label: [
124
+ "reset-blueprints.label",
125
+ {
126
+ ns: meta.id
127
+ }
128
+ ],
129
+ icon: "ph--arrow-clockwise--regular"
130
+ }
131
+ })
132
+ ])
133
+ }),
134
+ // Don't show assistant companion when a chat is already the primary object.
135
+ GraphBuilder.createExtension({
136
+ id: "companion-chat",
137
+ match: whenNonChatObject,
138
+ connector: (object, get) => Effect.gen(function* () {
139
+ const state = get(yield* Capability.get(AssistantCapabilities.State));
140
+ const cache = get(yield* Capability.get(AssistantCapabilities.CompanionChatCache));
141
+ const objectDXN = Obj.getDXN(object).toString();
142
+ const chat = pipe(Option.fromNullable(state.currentChat[objectDXN]), Option.flatMap((dxnStr) => Option.fromNullable(DXN.tryParse(dxnStr))), Option.flatMap((dxn) => Option.fromNullable(Obj.getDatabase(object)?.makeRef(dxn))), Option.map((ref) => get(AtomObj.make(ref))), Option.filter(Obj.isObject), Option.orElse(() => pipe(Option.fromNullable(cache[objectDXN]), Option.filter(Obj.isObject))), Option.getOrNull);
143
+ return [
144
+ AppNode.makeCompanion({
145
+ id: linkedSegment(ASSISTANT_COMPANION_VARIANT),
146
+ label: [
147
+ "assistant-chat.label",
148
+ {
149
+ ns: meta.id
150
+ }
151
+ ],
152
+ icon: "ph--sparkle--regular",
153
+ data: chat,
154
+ position: "hoist"
155
+ })
156
+ ];
157
+ })
158
+ }),
159
+ GraphBuilder.createExtension({
160
+ id: "invocations",
161
+ match: NodeMatcher.whenAny(NodeMatcher.whenEchoTypeMatches(Sequence.Sequence), NodeMatcher.whenEchoTypeMatches(Routine.Routine)),
162
+ connector: () => Effect.succeed([
163
+ AppNode.makeCompanion({
164
+ id: "invocations",
165
+ label: [
166
+ "invocations.label",
167
+ {
168
+ ns: meta.id
169
+ }
170
+ ],
171
+ icon: "ph--clock-countdown--regular",
172
+ data: "invocations"
173
+ })
174
+ ])
175
+ }),
176
+ GraphBuilder.createExtension({
177
+ id: "trace",
178
+ match: NodeMatcher.whenRoot,
179
+ connector: () => Effect.succeed([
180
+ AppNode.makeDeckCompanion({
181
+ id: linkedSegment("trace"),
182
+ label: [
183
+ "trace.label",
184
+ {
185
+ ns: meta.id
186
+ }
187
+ ],
188
+ icon: "ph--line-segments--regular",
189
+ data: "trace",
190
+ position: "fallback"
191
+ })
192
+ ])
193
+ })
194
+ ]);
195
+ return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
196
+ }));
197
+ export {
198
+ app_graph_builder_default as default
199
+ };
200
+ //# sourceMappingURL=app-graph-builder-5QBICPYP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport { pipe } from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, AppNode, getActiveSpace, getPersonalSpace } from '@dxos/app-toolkit';\nimport { AgentPrompt, Chat } from '@dxos/assistant-toolkit';\nimport { Blueprint, Routine, Operation } from '@dxos/compute';\nimport { Sequence } from '@dxos/conductor';\nimport { DXN, Database, Filter, Obj, type Ref } from '@dxos/echo';\nimport { AtomObj } from '@dxos/echo-atom';\nimport { invariant } from '@dxos/invariant';\nimport { AutomationCapabilities } from '@dxos/plugin-automation';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { GraphBuilder, Node, NodeMatcher } from '@dxos/plugin-graph';\nimport { linkedSegment } from '@dxos/react-ui-attention';\n\nimport { ASSISTANT_COMPANION_VARIANT, meta } from '#meta';\nimport { AssistantCapabilities, AssistantOperation } from '#types';\n\n/** Operation definitions to seed as `PersistentOperation` records for automation / triggers. */\nconst computeOperationsToImport = [AgentPrompt] as const;\n\n/** Match ECHO objects that are NOT chats. */\nconst whenNonChatObject = NodeMatcher.whenAll(\n NodeMatcher.whenEchoObject,\n NodeMatcher.whenNot(NodeMatcher.whenEchoTypeMatches(Chat.Chat)),\n);\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n const extensions = yield* Effect.all([\n GraphBuilder.createTypeExtension({\n id: 'root',\n type: Chat.Chat,\n actions: (chat) => {\n return Effect.succeed([\n Node.makeAction({\n id: AssistantOperation.UpdateChatName.meta.key,\n data: () =>\n Effect.gen(function* () {\n // TODO(dmaretskyi): This goes away when composer will have unified operation invocations.\n const computeRuntime = yield* Capability.get(AutomationCapabilities.ComputeRuntime);\n const db = Obj.getDatabase(chat);\n invariant(db);\n const runtime = yield* computeRuntime.getRuntime(db.spaceId).runtimeEffect;\n yield* Operation.invoke(AssistantOperation.UpdateChatName, { chat }).pipe(Effect.provide(runtime));\n }),\n properties: {\n label: ['chat-update-name.label', { ns: meta.id }],\n icon: 'ph--magic-wand--regular',\n disposition: 'list-item',\n },\n }),\n ]);\n },\n }),\n\n GraphBuilder.createExtension({\n id: 'assistant',\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n Node.makeAction({\n id: 'import-compute-operations',\n data: Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = getActiveSpace(client, capabilities) ?? getPersonalSpace(client);\n if (!space) {\n return;\n }\n for (const definition of computeOperationsToImport) {\n const key = definition.meta.key;\n if (!key) {\n continue;\n }\n const existing = yield* Effect.promise(\n (): Promise<Operation.PersistentOperation[]> =>\n space.db.query(Filter.and(Filter.type(Operation.PersistentOperation), Filter.key(key))).run(),\n );\n if (existing.length === 0) {\n space.db.add(Operation.serialize(definition));\n }\n }\n yield* Database.flush();\n }),\n properties: {\n label: ['import-compute-operations.label', { ns: meta.id }],\n icon: 'ph--download-simple--regular',\n },\n }),\n Node.makeAction({\n id: AssistantOperation.ToggleTracePanelDebug.meta.key,\n data: () => Operation.invoke(AssistantOperation.ToggleTracePanelDebug, {}),\n properties: {\n label: ['toggle-trace-panel-debug.label', { ns: meta.id }],\n icon: 'ph--brackets-curly--regular',\n },\n }),\n Node.makeAction({\n id: 'reset-blueprints',\n data: Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = getActiveSpace(client, capabilities) ?? getPersonalSpace(client);\n if (!space) {\n return;\n }\n const blueprints = yield* Effect.promise(\n (): Promise<Blueprint.Blueprint[]> => space.db.query(Filter.type(Blueprint.Blueprint)).run(),\n );\n for (const blueprint of blueprints) {\n space.db.remove(blueprint);\n }\n yield* Database.flush();\n }),\n properties: {\n label: ['reset-blueprints.label', { ns: meta.id }],\n icon: 'ph--arrow-clockwise--regular',\n },\n }),\n ]),\n }),\n\n // Don't show assistant companion when a chat is already the primary object.\n GraphBuilder.createExtension({\n id: 'companion-chat',\n match: whenNonChatObject,\n connector: (object, get) =>\n Effect.gen(function* () {\n const state = get(yield* Capability.get(AssistantCapabilities.State));\n const cache = get(yield* Capability.get(AssistantCapabilities.CompanionChatCache));\n const objectDXN = Obj.getDXN(object).toString();\n\n // Resolve chat from persisted state or transient cache.\n const chat = pipe(\n Option.fromNullable(state.currentChat[objectDXN]),\n Option.flatMap((dxnStr) => Option.fromNullable(DXN.tryParse(dxnStr))),\n Option.flatMap((dxn) => Option.fromNullable(Obj.getDatabase(object)?.makeRef(dxn))),\n Option.map((ref) => get(AtomObj.make(ref as Ref.Ref<Obj.Unknown>))),\n Option.filter(Obj.isObject),\n Option.orElse(() => pipe(Option.fromNullable(cache[objectDXN]), Option.filter(Obj.isObject))),\n Option.getOrNull,\n );\n\n return [\n AppNode.makeCompanion({\n id: linkedSegment(ASSISTANT_COMPANION_VARIANT),\n label: ['assistant-chat.label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n data: chat,\n position: 'hoist',\n }),\n ];\n }),\n }),\n\n GraphBuilder.createExtension({\n id: 'invocations',\n match: NodeMatcher.whenAny(\n NodeMatcher.whenEchoTypeMatches(Sequence.Sequence),\n NodeMatcher.whenEchoTypeMatches(Routine.Routine),\n ),\n connector: () =>\n Effect.succeed([\n AppNode.makeCompanion({\n id: 'invocations',\n label: ['invocations.label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n data: 'invocations',\n }),\n ]),\n }),\n\n GraphBuilder.createExtension({\n id: 'trace',\n match: NodeMatcher.whenRoot,\n connector: () =>\n Effect.succeed([\n AppNode.makeDeckCompanion({\n id: linkedSegment('trace'),\n label: ['trace.label', { ns: meta.id }],\n icon: 'ph--line-segments--regular',\n data: 'trace' as const,\n position: 'fallback',\n }),\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,SAASC,YAAY;AACrB,YAAYC,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,SAASC,gBAAgBC,wBAAwB;AAC3E,SAASC,aAAaC,YAAY;AAClC,SAASC,WAAWC,SAASC,iBAAiB;AAC9C,SAASC,gBAAgB;AACzB,SAASC,KAAKC,UAAUC,QAAQC,WAAqB;AACrD,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,8BAA8B;AACvC,SAASC,0BAA0B;AACnC,SAASC,cAAcC,MAAMC,mBAAmB;AAChD,SAASC,qBAAqB;AAE9B,SAASC,6BAA6BC,YAAY;AAClD,SAASC,uBAAuBC,0BAA0B;AAE1D,IAAA,eAAA;AAC+C,IAAA,4BAAA;EAE/C;AAMA;AAE2CC,IAAO,oBAAA,YAAA,QAAA,YAAA,gBAAA,YAAA,QAAA,YAAA,oBAAA,KAAA,IAAA,CAAA,CAAA;IAE9C,4BAAMC,WAAa,WAAkB,kBAAA,aAAA;QACnCT,eAAaU,OAAAA,WAAoB;qBAC3B,OAAA,WAAA;iBACEvB,oBAAS;MACfwB,IAAAA;YACE,KAAOjC;eACLuB,CAAAA,SAAKW;eACCL,eAAAA;eACJM,WACEnC;mCACE,eAAA,KAAA;wBACMoC,WAAAA,aAAiB;AAEvBjB,oBAAAA,iBAAUkB,OAAAA,WAAAA,IAAAA,uBAAAA,cAAAA;AACV,oBAAMC,KAAAA,IAAAA,YAAiBF,IAAAA;AACvB,wBAAOxB,IAAAA,QAAU2B,EAAAA,YAAOV,YAAmBW,GAAAA,cAAc,GAAE,IAAA,GAAA,MAAA,GAAA,CAAA,MAAA,EAAA,EAAA,CAAA;oBAAEC,UAAAA,OAAAA,eAAAA,WAAAA,GAAAA,OAAAA,EAAAA;AAAK,qBAAO,UAAQC,OAAQJ,mBAAAA,gBAAAA;gBAC3F;cACFK,CAAAA,EAAAA,KAAY,eAAA,OAAA,CAAA;YACVC,CAAAA;wBAAQ;qBAA0B;;gBAAc;kBAAE,IAAA,KAAA;gBAClDC;cACAC;cACF,MAAA;cACF,aAAA;YACD;UACH,CAAA;QACF,CAAA;MAEAxB;;iBAESE,gBAAYuB;MACnBd,IAAAA;yBAESC;qBACC,eAAA;aACJC,WAAMnC;cACJ;gBACMgD,kBAAS,aAAO7C;AACtB,kBAAM8C,gBAAQ3C,OAAAA,WAAuB4C;AACrC,kBAAKD,SAAO,OAAA,WAAA,IAAA,mBAAA,MAAA;kBACV,QAAA,eAAA,QAAAC,aAAA,KAAA,iBAAA,MAAA;AACF,gBAAA,CAAA,OAAA;AACA;;uBAEOC,cAAK,2BAAA;oBACR,MAAA,WAAA,KAAA;AACF,kBAAA,CAAA,KAAA;AACA;cAIA;oBACEF,WAAarC,OAAUwC,eAAUC,MAAAA,MAAAA,GAAAA,MAAAA,OAAAA,IAAAA,OAAAA,KAAAA,UAAAA,mBAAAA,GAAAA,OAAAA,IAAAA,GAAAA,CAAAA,CAAAA,EAAAA,IAAAA,CAAAA;AACnC,kBAAA,SAAA,WAAA,GAAA;AACF,sBAAA,GAAA,IAAA,UAAA,UAAA,UAAA,CAAA;cACA;YACF;AACAV,mBAAAA,SAAY,MAAA;;sBACF;mBAAmC;;cAAc;gBAAE,IAAA,KAAA;cAC3DE;YACF;YACF,MAAA;UACAtB;;aAEEY,WAAYvB;UACZ+B,IAAAA,mBAAY,sBAAA,KAAA;gBACVC,MAAAA,UAAO,OAAA,mBAAA,uBAAA,CAAA,CAAA;sBAAC;mBAAkC;;cAAc;gBAAE,IAAA,KAAA;cAC1DC;YACF;YACF,MAAA;UACAtB;;aAEEY,WAAMnC;cACJ;gBACMgD,kBAAS,aAAO7C;AACtB,kBAAM8C,gBAAQ3C,OAAAA,WAAuB4C;AACrC,kBAAKD,SAAO,OAAA,WAAA,IAAA,mBAAA,MAAA;kBACV,QAAA,eAAA,QAAAC,aAAA,KAAA,iBAAA,MAAA;AACF,gBAAA,CAAA,OAAA;AACA;YAGA;kBACED,aAAe,OAACK,eAAAA,MAAAA,MAAAA,GAAAA,MAAAA,OAAAA,KAAAA,UAAAA,SAAAA,CAAAA,EAAAA,IAAAA,CAAAA;AAClB,uBAAA,aAAA,YAAA;AACA,oBAAOvC,GAAAA,OAASwC,SAAK;YACvB;AACAZ,mBAAAA,SAAY,MAAA;;sBACF;mBAA0B;;cAAc;gBAAE,IAAA,KAAA;cAClDE;YACF;YACF,MAAA;UACD;QACL,CAAA;MAEA,CAAA;IACAvB,CAAAA;;iBAESkC,gBAAAA;MACPC,IAAAA;;iBAGI,CAAA,QAAMC,QAAY,WAAOvD,aAAeyB;AACxC,cAAM+B,QAAAA,IAAY1C,OAAI2C,WAAeC,IAAAA,sBAAQ,KAAA,CAAA;AAE7C,cAAA,QAAA,IAAA,OAAA,WAAA,IAAA,sBAAwD,kBAAA,CAAA;AACxD,cAAMpB,YACJvC,IAAAA,OAAO4D,MAAAA,EAAY,SAAOC;cAU1B1D,OAAQ2D,KAAa,oBAAC,MAAA,YAAA,SAAA,CAAA,GAAA,eAAA,CAAA,WAAA,oBAAA,IAAA,SAAA,MAAA,CAAA,CAAA,GAAA,eAAA,CAAA,QAAA,oBAAA,IAAA,YAAA,MAAA,GAAA,QAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA,QAAA,IAAA,QAAA,KAAA,GAAA,CAAA,CAAA,GAAA,cAAA,IAAA,QAAA,GAAA,cAAA,MAAA,KAAA,oBAAA,MAAA,SAAA,CAAA,GAAA,cAAA,IAAA,QAAA,CAAA,CAAA,GAAA,gBAAA;;kBAEpBpB,cAAO;gBAAC,cAAA,2BAAA;mBAAwB;;cAAc;gBAAE,IAAA,KAAA;cAChDC;YACAV;YACA8B,MAAAA;YACF,MAAA;YACD,UAAA;UACH,CAAA;QACJ;MAEA3C,CAAAA;;iBAESE,gBAAY0C;MAInBT,IAAAA;yBAEYO,QAAAA,YAAc,oBAAA,SAAA,QAAA,GAAA,YAAA,oBAAA,QAAA,OAAA,CAAA;uBAChB,eAAA;gBACJpB,cAAO;cAAC;iBAAqB;;YAAc;cAAE,IAAA,KAAA;YAC7CC;UACAV;UACF,MAAA;UACD,MAAA;QACL,CAAA;MAEAb,CAAAA;;iBAESE,gBAAYuB;MACnBU,IAAAA;yBAEYU;uBACF1C,eAAc;gBAClBmB,kBAAO;cAAC,cAAA,OAAA;iBAAe;;YAAc;cAAE,IAAA,KAAA;YACvCC;UACAV;UACA8B,MAAAA;UACF,MAAA;UACD,UAAA;QACL,CAAA;MACD,CAAA;IAED,CAAA;EAEF,CAAA;;;",
6
+ "names": ["Effect", "pipe", "Option", "Capability", "AppCapabilities", "AppNode", "getActiveSpace", "getPersonalSpace", "AgentPrompt", "Chat", "Blueprint", "Routine", "Operation", "Sequence", "DXN", "Database", "Filter", "Obj", "AtomObj", "invariant", "AutomationCapabilities", "ClientCapabilities", "GraphBuilder", "Node", "NodeMatcher", "linkedSegment", "ASSISTANT_COMPANION_VARIANT", "meta", "AssistantCapabilities", "AssistantOperation", "Service", "extensions", "createTypeExtension", "actions", "makeAction", "data", "computeRuntime", "db", "runtime", "invoke", "UpdateChatName", "chat", "provide", "properties", "label", "icon", "disposition", "whenRoot", "client", "space", "capabilities", "key", "serialize", "definition", "blueprint", "flush", "whenNonChatObject", "connector", "cache", "objectDXN", "getDXN", "toString", "fromNullable", "currentChat", "makeCompanion", "position", "whenAny", "makeDeckCompanion"]
7
+ }
@@ -0,0 +1,32 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/blueprint-definition.ts
4
+ import * as Effect from "effect/Effect";
5
+ import { Capabilities, Capability } from "@dxos/app-framework";
6
+ import { AppCapabilities } from "@dxos/app-toolkit";
7
+ import { AgentBlueprint, AgentBlueprintHandlers, AgentHandlers, AgentWizardBlueprint, AgentWizardHandlers, BlueprintManagerBlueprint, BlueprintManagerHandlers, BrowserBlueprint, DatabaseBlueprint, DatabaseHandlers, DiscordBlueprint, LinearBlueprint, PlanningBlueprint, WebSearchBlueprint, MemoryBlueprint, AutomationBlueprint } from "@dxos/assistant-toolkit";
8
+ import { AssistantBlueprint } from "#blueprints";
9
+ var blueprintDefinition = Capability.makeModule(() => Effect.succeed([
10
+ Capability.contributes(AppCapabilities.BlueprintDefinition, AssistantBlueprint),
11
+ Capability.contributes(AppCapabilities.BlueprintDefinition, BrowserBlueprint),
12
+ Capability.contributes(AppCapabilities.BlueprintDefinition, DatabaseBlueprint),
13
+ Capability.contributes(AppCapabilities.BlueprintDefinition, WebSearchBlueprint),
14
+ Capability.contributes(AppCapabilities.BlueprintDefinition, DiscordBlueprint),
15
+ Capability.contributes(AppCapabilities.BlueprintDefinition, LinearBlueprint),
16
+ Capability.contributes(AppCapabilities.BlueprintDefinition, AgentBlueprint),
17
+ Capability.contributes(AppCapabilities.BlueprintDefinition, PlanningBlueprint),
18
+ Capability.contributes(AppCapabilities.BlueprintDefinition, MemoryBlueprint),
19
+ Capability.contributes(AppCapabilities.BlueprintDefinition, AutomationBlueprint),
20
+ Capability.contributes(AppCapabilities.BlueprintDefinition, BlueprintManagerBlueprint),
21
+ Capability.contributes(AppCapabilities.BlueprintDefinition, AgentWizardBlueprint),
22
+ Capability.contributes(Capabilities.OperationHandler, AgentHandlers),
23
+ Capability.contributes(Capabilities.OperationHandler, AgentBlueprintHandlers),
24
+ Capability.contributes(Capabilities.OperationHandler, BlueprintManagerHandlers),
25
+ Capability.contributes(Capabilities.OperationHandler, DatabaseHandlers),
26
+ Capability.contributes(Capabilities.OperationHandler, AgentWizardHandlers)
27
+ ]));
28
+ var blueprint_definition_default = blueprintDefinition;
29
+ export {
30
+ blueprint_definition_default as default
31
+ };
32
+ //# sourceMappingURL=blueprint-definition-VXJYQ5AE.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/blueprint-definition.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport {\n AgentBlueprint,\n AgentBlueprintHandlers,\n AgentHandlers,\n AgentWizardBlueprint,\n AgentWizardHandlers,\n BlueprintManagerBlueprint,\n BlueprintManagerHandlers,\n BrowserBlueprint,\n DatabaseBlueprint,\n DatabaseHandlers,\n DiscordBlueprint,\n LinearBlueprint,\n PlanningBlueprint,\n WebSearchBlueprint,\n MemoryBlueprint,\n AutomationBlueprint,\n} from '@dxos/assistant-toolkit';\n// eslint-disable-next-line unused-imports/no-unused-imports\nimport type { Blueprint } from '@dxos/compute';\n\nimport { AssistantBlueprint } from '#blueprints';\n\n// TODO(dmaretskyi): Force this type for all Capability.makeModule calls.\nconst blueprintDefinition: () => Effect.Effect<Capability.Capability<unknown>[]> = Capability.makeModule(() =>\n Effect.succeed([\n Capability.contributes(AppCapabilities.BlueprintDefinition, AssistantBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, BrowserBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, DatabaseBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, WebSearchBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, DiscordBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, LinearBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, AgentBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, PlanningBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, MemoryBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, AutomationBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, BlueprintManagerBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, AgentWizardBlueprint),\n\n Capability.contributes(Capabilities.OperationHandler, AgentHandlers),\n Capability.contributes(Capabilities.OperationHandler, AgentBlueprintHandlers),\n Capability.contributes(Capabilities.OperationHandler, BlueprintManagerHandlers),\n Capability.contributes(Capabilities.OperationHandler, DatabaseHandlers),\n Capability.contributes(Capabilities.OperationHandler, AgentWizardHandlers),\n ]),\n);\n\nexport default blueprintDefinition;\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SACEC,gBACAC,wBACAC,eACAC,sBACAC,qBACAC,2BACAC,0BACAC,kBACAC,mBACAC,kBACAC,kBACAC,iBACAC,mBACAC,oBACAC,iBACAC,2BACK;AAIP,SAASC,0BAA0B;AAGnC,IAAMC,sBAA6EnB,WAAWoB,WAAW,MAChGC,eAAQ;EACbrB,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBL,kBAAAA;EAC5DlB,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBd,gBAAAA;EAC5DT,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBb,iBAAAA;EAC5DV,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBR,kBAAAA;EAC5Df,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBX,gBAAAA;EAC5DZ,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBV,eAAAA;EAC5Db,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBrB,cAAAA;EAC5DF,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBT,iBAAAA;EAC5Dd,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBP,eAAAA;EAC5DhB,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBN,mBAAAA;EAC5DjB,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBhB,yBAAAA;EAC5DP,WAAWsB,YAAYrB,gBAAgBsB,qBAAqBlB,oBAAAA;EAE5DL,WAAWsB,YAAYvB,aAAayB,kBAAkBpB,aAAAA;EACtDJ,WAAWsB,YAAYvB,aAAayB,kBAAkBrB,sBAAAA;EACtDH,WAAWsB,YAAYvB,aAAayB,kBAAkBhB,wBAAAA;EACtDR,WAAWsB,YAAYvB,aAAayB,kBAAkBb,gBAAAA;EACtDX,WAAWsB,YAAYvB,aAAayB,kBAAkBlB,mBAAAA;CACvD,CAAA;AAGH,IAAA,+BAAea;",
6
+ "names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "AgentBlueprint", "AgentBlueprintHandlers", "AgentHandlers", "AgentWizardBlueprint", "AgentWizardHandlers", "BlueprintManagerBlueprint", "BlueprintManagerHandlers", "BrowserBlueprint", "DatabaseBlueprint", "DatabaseHandlers", "DiscordBlueprint", "LinearBlueprint", "PlanningBlueprint", "WebSearchBlueprint", "MemoryBlueprint", "AutomationBlueprint", "AssistantBlueprint", "blueprintDefinition", "makeModule", "succeed", "contributes", "BlueprintDefinition", "OperationHandler"]
7
+ }
@@ -0,0 +1,8 @@
1
+ import {
2
+ blueprint_default
3
+ } from "../chunk-5H6UJHLF.mjs";
4
+ import "../chunk-J5LGTIGS.mjs";
5
+ export {
6
+ blueprint_default as AssistantBlueprint
7
+ };
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,35 @@
1
+ import "../chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/index.ts
4
+ import { Capability } from "@dxos/app-framework";
5
+ var AiService = Capability.lazy("AiService", () => import("../ai-service-GJXMI5OI.mjs"));
6
+ var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("../app-graph-builder-5QBICPYP.mjs"));
7
+ var BlueprintDefinition = Capability.lazy("BlueprintDefinition", () => import("../blueprint-definition-VXJYQ5AE.mjs"));
8
+ var CompanionChatProvisioner = Capability.lazy("CompanionChatProvisioner", () => import("../companion-chat-provisioner-2Y6PRSDK.mjs"));
9
+ var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-UZCJCPWM.mjs"));
10
+ var EdgeModelResolver = Capability.lazy("EdgeModelResolver", () => import("../edge-model-resolver-XDNBZ3US.mjs"));
11
+ var LocalModelResolver = Capability.lazy("LocalModelResolver", () => import("../local-model-resolver-I2BENFFS.mjs"));
12
+ var MarkdownExtension = Capability.lazy("MarkdownExtension", () => import("../markdown-KTBFOMFM.mjs"));
13
+ var Migrations = Capability.lazy("AssistantMigrations", () => import("../migrations-7DEMVBOG.mjs"));
14
+ var OperationHandler = Capability.lazy("OperationHandler", () => import("../operation-handler-SF36MOB5.mjs"));
15
+ var ReactSurface = Capability.lazy("ReactSurface", () => import("../react-surface-T4R65UJU.mjs"));
16
+ var Settings = Capability.lazy("Settings", () => import("../settings-W4BLWQ53.mjs"));
17
+ var AssistantState = Capability.lazy("AssistantState", () => import("../state-H3G7QCU6.mjs"));
18
+ var Toolkit = Capability.lazy("Toolkit", () => import("../toolkit-GVWXPDLJ.mjs"));
19
+ export {
20
+ AiService,
21
+ AppGraphBuilder,
22
+ AssistantState,
23
+ BlueprintDefinition,
24
+ CompanionChatProvisioner,
25
+ CreateObject,
26
+ EdgeModelResolver,
27
+ LocalModelResolver,
28
+ MarkdownExtension,
29
+ Migrations,
30
+ OperationHandler,
31
+ ReactSurface,
32
+ Settings,
33
+ Toolkit
34
+ };
35
+ //# sourceMappingURL=index.mjs.map