@dxos/plugin-assistant 0.9.1-main.c7dcc2e112 → 0.10.0

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 (560) hide show
  1. package/PLUGIN.mdl +18 -24
  2. package/dist/lib/neutral/{AgentArticle-2BEPWUMN.mjs → AgentArticle-GV6EEW3I.mjs} +1 -2
  3. package/dist/lib/neutral/AgentArticle-GV6EEW3I.mjs.map +7 -0
  4. package/dist/lib/neutral/AssistantPlugin.mjs +1 -1
  5. package/dist/lib/neutral/AssistantPlugin.node.mjs +6 -6
  6. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +3 -3
  7. package/dist/lib/neutral/AssistantPlugin.workerd.mjs +7 -34
  8. package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +4 -4
  9. package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs +302 -0
  10. package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs.map +7 -0
  11. package/dist/lib/neutral/{ChatArticle-KT46SUFU.mjs → ChatArticle-OO7GGEFW.mjs} +2 -2
  12. package/dist/lib/neutral/{ChatCompanion-YHC43RYQ.mjs → ChatCompanion-GIFJRY6I.mjs} +27 -27
  13. package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs.map +7 -0
  14. package/dist/lib/neutral/{ChatDialog-YZDZLIQA.mjs → ChatDialog-5MXN4MXS.mjs} +5 -5
  15. package/dist/lib/neutral/ChatDialog-5MXN4MXS.mjs.map +7 -0
  16. package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs +72 -0
  17. package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs.map +7 -0
  18. package/dist/lib/neutral/{SpaceHomePrompt-HTWQKLGI.mjs → SpaceHomePrompt-ISAB76LD.mjs} +8 -7
  19. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs.map +7 -0
  20. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs +63 -0
  21. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs.map +7 -0
  22. package/dist/lib/neutral/{TracePanel-T552TAOH.mjs → TracePanel-JKNWADJ4.mjs} +2 -2
  23. package/dist/lib/neutral/{TriggerStatus-RBOHHDOK.mjs → TriggerStatus-FURRBHYA.mjs} +7 -5
  24. package/dist/lib/neutral/TriggerStatus-FURRBHYA.mjs.map +7 -0
  25. package/dist/lib/neutral/{agent-hydrator-PJBYVMBW.mjs → agent-hydrator-OBO3RHLO.mjs} +3 -4
  26. package/dist/lib/neutral/agent-hydrator-OBO3RHLO.mjs.map +7 -0
  27. package/dist/lib/neutral/{agent-service-WV5CSHAG.mjs → agent-service-XFJ4VQMT.mjs} +7 -9
  28. package/dist/lib/neutral/agent-service-XFJ4VQMT.mjs.map +7 -0
  29. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs +14 -0
  30. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs.map +7 -0
  31. package/dist/lib/neutral/{ai-service-AADUIKBY.mjs → ai-service-DM6YXWUC.mjs} +9 -5
  32. package/dist/lib/neutral/ai-service-DM6YXWUC.mjs.map +7 -0
  33. package/dist/lib/neutral/{app-graph-builder-PTSRZXRN.mjs → app-graph-builder-OPVOEQY7.mjs} +36 -19
  34. package/dist/lib/neutral/app-graph-builder-OPVOEQY7.mjs.map +7 -0
  35. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs +97 -0
  36. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs.map +7 -0
  37. package/dist/lib/neutral/capabilities/index.mjs +20 -18
  38. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  39. package/dist/lib/neutral/{chunk-KLYLW4WH.mjs → chunk-5IHQ52KJ.mjs} +1 -1
  40. package/dist/lib/neutral/chunk-5IHQ52KJ.mjs.map +7 -0
  41. package/dist/lib/neutral/{chunk-5KB2WRI2.mjs → chunk-6Q4OBGIK.mjs} +83 -55
  42. package/dist/lib/neutral/chunk-6Q4OBGIK.mjs.map +7 -0
  43. package/dist/lib/neutral/{chunk-54W7N6M6.mjs → chunk-BXI2R4OO.mjs} +49 -84
  44. package/dist/lib/neutral/chunk-BXI2R4OO.mjs.map +7 -0
  45. package/dist/lib/neutral/{chunk-5H6UJHLF.mjs → chunk-CMPLPDYE.mjs} +12 -12
  46. package/dist/lib/neutral/chunk-CMPLPDYE.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-GPHT3HYS.mjs +8 -0
  48. package/dist/lib/neutral/{chunk-7FQT4XMI.mjs.map → chunk-GPHT3HYS.mjs.map} +2 -2
  49. package/dist/lib/neutral/{markdown-extension-IJ5RQMQ4.mjs → chunk-HKLSFB5I.mjs} +2 -38
  50. package/dist/lib/neutral/chunk-HKLSFB5I.mjs.map +7 -0
  51. package/dist/lib/neutral/{chunk-ZNDQVYUN.mjs → chunk-L7AR4VTA.mjs} +3 -3
  52. package/dist/lib/neutral/{chunk-ZNDQVYUN.mjs.map → chunk-L7AR4VTA.mjs.map} +1 -1
  53. package/dist/lib/neutral/chunk-LS72HWMM.mjs +42 -0
  54. package/dist/lib/neutral/chunk-LS72HWMM.mjs.map +7 -0
  55. package/dist/lib/neutral/{chunk-35EL65O4.mjs → chunk-OZWZGIV2.mjs} +4 -2
  56. package/dist/lib/neutral/{chunk-35EL65O4.mjs.map → chunk-OZWZGIV2.mjs.map} +3 -3
  57. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs → chunk-QOKLFHUS.mjs} +3 -4
  58. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs.map → chunk-QOKLFHUS.mjs.map} +1 -1
  59. package/dist/lib/neutral/{chunk-5LKNH7FD.mjs → chunk-SCTHQVIJ.mjs} +8 -5
  60. package/dist/lib/neutral/{chunk-5LKNH7FD.mjs.map → chunk-SCTHQVIJ.mjs.map} +3 -3
  61. package/dist/lib/neutral/chunk-U4LTLBAX.mjs +56 -0
  62. package/dist/lib/neutral/chunk-U4LTLBAX.mjs.map +7 -0
  63. package/dist/lib/neutral/{chunk-H77JTXAN.mjs → chunk-UPKFUZ6V.mjs} +7 -10
  64. package/dist/lib/neutral/chunk-UPKFUZ6V.mjs.map +7 -0
  65. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs → chunk-V2Y4XE3O.mjs} +3 -4
  66. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs.map → chunk-V2Y4XE3O.mjs.map} +1 -1
  67. package/dist/lib/neutral/chunk-VTK5R4H3.mjs +9 -0
  68. package/dist/lib/neutral/chunk-VTK5R4H3.mjs.map +7 -0
  69. package/dist/lib/neutral/chunk-XVGEJWJX.mjs +133 -0
  70. package/dist/lib/neutral/chunk-XVGEJWJX.mjs.map +7 -0
  71. package/dist/lib/neutral/{companion-chat-provisioner-YZZ73P6E.mjs → companion-chat-provisioner-IQV5VIVE.mjs} +14 -8
  72. package/dist/lib/neutral/companion-chat-provisioner-IQV5VIVE.mjs.map +7 -0
  73. package/dist/lib/neutral/components/index.mjs +509 -579
  74. package/dist/lib/neutral/components/index.mjs.map +4 -4
  75. package/dist/lib/neutral/{integration-provider-RBD3AFJU.mjs → connector-ITLLTBPZ.mjs} +13 -14
  76. package/dist/lib/neutral/connector-ITLLTBPZ.mjs.map +7 -0
  77. package/dist/lib/neutral/containers/index.mjs +12 -14
  78. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  79. package/dist/lib/neutral/{create-chat-Z3FNA6OJ.mjs → create-chat-YGVZZYGP.mjs} +18 -16
  80. package/dist/lib/neutral/create-chat-YGVZZYGP.mjs.map +7 -0
  81. package/dist/lib/neutral/{create-object-BJUDDKQQ.mjs → create-object-5PAEJ6KM.mjs} +11 -27
  82. package/dist/lib/neutral/create-object-5PAEJ6KM.mjs.map +7 -0
  83. package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs → edge-model-resolver-WDJWDZTT.mjs} +2 -2
  84. package/dist/lib/neutral/execution-graph/index.mjs +182 -64
  85. package/dist/lib/neutral/execution-graph/index.mjs.map +3 -3
  86. package/dist/lib/neutral/extensions/index.mjs +8 -0
  87. package/dist/lib/neutral/{fork-chat-UYXYT6BT.mjs → fork-chat-RMAAYYQF.mjs} +15 -18
  88. package/dist/lib/neutral/fork-chat-RMAAYYQF.mjs.map +7 -0
  89. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs +93 -0
  90. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs.map +7 -0
  91. package/dist/lib/neutral/hooks/index.mjs +195 -105
  92. package/dist/lib/neutral/hooks/index.mjs.map +4 -4
  93. package/dist/lib/neutral/index.mjs +14 -10
  94. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs +41 -0
  95. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs.map +7 -0
  96. package/dist/lib/neutral/meta.json +1 -1
  97. package/dist/lib/neutral/meta.mjs +1 -1
  98. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs +18 -0
  99. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs.map +7 -0
  100. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs +8 -0
  101. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs.map +7 -0
  102. package/dist/lib/neutral/operations/index.mjs +1 -1
  103. package/dist/lib/neutral/plugin.mjs +2 -2
  104. package/dist/lib/neutral/plugin.workerd.mjs +13 -0
  105. package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
  106. package/dist/lib/neutral/{react-surface-ES7UHZ65.mjs → react-surface-HEJEK44F.mjs} +20 -35
  107. package/dist/lib/neutral/react-surface-HEJEK44F.mjs.map +7 -0
  108. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs +28 -0
  109. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs.map +7 -0
  110. package/dist/lib/neutral/{run-prompt-in-new-chat-NIAGCKQV.mjs → run-prompt-in-new-chat-RNUJE2FM.mjs} +28 -31
  111. package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs.map +7 -0
  112. package/dist/lib/neutral/skill-definition-553MQRTR.mjs +8 -0
  113. package/dist/lib/neutral/skill-definition-553MQRTR.mjs.map +7 -0
  114. package/dist/lib/neutral/skills/index.mjs +8 -0
  115. package/dist/lib/neutral/skills/index.mjs.map +7 -0
  116. package/dist/lib/neutral/{state-XO2UYSSG.mjs → state-4LGAKSSD.mjs} +8 -2
  117. package/dist/lib/neutral/{state-XO2UYSSG.mjs.map → state-4LGAKSSD.mjs.map} +3 -3
  118. package/dist/lib/neutral/testing.mjs +1 -1
  119. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs +8 -0
  120. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs.map +7 -0
  121. package/dist/lib/neutral/translations.mjs +64 -33
  122. package/dist/lib/neutral/translations.mjs.map +3 -3
  123. package/dist/lib/neutral/types/index.mjs +5 -1
  124. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs → update-chat-name-IJJELRR6.mjs} +3 -3
  125. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs.map → update-chat-name-IJJELRR6.mjs.map} +2 -2
  126. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  127. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -1
  128. package/dist/types/src/capabilities/agent-hydrator.d.ts +1 -1
  129. package/dist/types/src/capabilities/agent-service.d.ts +1 -2
  130. package/dist/types/src/capabilities/agent-service.d.ts.map +1 -1
  131. package/dist/types/src/capabilities/ai-context.d.ts +1 -2
  132. package/dist/types/src/capabilities/ai-context.d.ts.map +1 -1
  133. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -3
  134. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  135. package/dist/types/src/capabilities/automation-templates.d.ts +1 -2
  136. package/dist/types/src/capabilities/automation-templates.d.ts.map +1 -1
  137. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +1 -1
  138. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
  139. package/dist/types/src/capabilities/{integration-provider.d.ts → connector.d.ts} +2 -2
  140. package/dist/types/src/capabilities/connector.d.ts.map +1 -0
  141. package/dist/types/src/capabilities/create-object.d.ts +1 -27
  142. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  143. package/dist/types/src/capabilities/index.d.ts +3 -2
  144. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  145. package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
  146. package/dist/types/src/capabilities/migrations.d.ts +1 -2
  147. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  148. package/dist/types/src/capabilities/navigation-resolver.d.ts +5 -0
  149. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
  150. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  151. package/dist/types/src/capabilities/settings.d.ts +1 -2
  152. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  153. package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
  154. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/state.d.ts +1 -17
  156. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  157. package/dist/types/src/capabilities/toolkit.d.ts +1 -2
  158. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  159. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -1
  160. package/dist/types/src/components/Chat/Chat.d.ts +4 -5
  161. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  162. package/dist/types/src/components/Chat/events.d.ts +0 -4
  163. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  164. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -2
  165. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  166. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  167. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +2 -2
  168. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -1
  169. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +5 -5
  170. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -1
  171. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts +9 -0
  172. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts.map +1 -0
  173. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +4 -4
  174. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +2 -2
  176. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -1
  177. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  178. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +2 -2
  179. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -1
  180. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts +11 -0
  181. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts.map +1 -0
  182. package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -0
  183. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
  184. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  185. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +2 -2
  186. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -3
  188. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  189. package/dist/types/src/components/index.d.ts +0 -4
  190. package/dist/types/src/components/index.d.ts.map +1 -1
  191. package/dist/types/src/constants.d.ts +1 -1
  192. package/dist/types/src/constants.d.ts.map +1 -1
  193. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +2 -2
  194. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
  195. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +1 -1
  196. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +1 -0
  197. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
  198. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts +12 -0
  199. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts.map +1 -0
  200. package/dist/types/src/{components/TemplateEditor/TemplateEditor.stories.d.ts → containers/AssistantSettings/OllamaModels.stories.d.ts} +9 -7
  201. package/dist/types/src/containers/AssistantSettings/OllamaModels.stories.d.ts.map +1 -0
  202. package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts.map +1 -1
  203. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +2 -9
  204. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -1
  205. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +3 -10
  206. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  207. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  208. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts +13 -0
  209. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts.map +1 -0
  210. package/dist/types/src/containers/IntegrationPrompt/index.d.ts +2 -0
  211. package/dist/types/src/{components/RoutineProperties → containers/IntegrationPrompt}/index.d.ts.map +1 -1
  212. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts.map +1 -1
  213. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts +1 -1
  214. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts.map +1 -1
  215. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
  216. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +1 -1
  217. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -1
  218. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  219. package/dist/types/src/containers/index.d.ts +2 -3
  220. package/dist/types/src/containers/index.d.ts.map +1 -1
  221. package/dist/types/src/execution-graph/execution-graph.d.ts +2 -1
  222. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
  223. package/dist/types/src/execution-graph/index.d.ts +3 -3
  224. package/dist/types/src/execution-graph/index.d.ts.map +1 -1
  225. package/dist/types/src/execution-graph/span-tree.d.ts +13 -0
  226. package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -1
  227. package/dist/types/src/extensions/index.d.ts +1 -1
  228. package/dist/types/src/extensions/index.d.ts.map +1 -1
  229. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
  230. package/dist/types/src/hooks/index.d.ts +2 -2
  231. package/dist/types/src/hooks/index.d.ts.map +1 -1
  232. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  233. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  234. package/dist/types/src/hooks/useHomeSuggestions.d.ts +8 -0
  235. package/dist/types/src/hooks/useHomeSuggestions.d.ts.map +1 -0
  236. package/dist/types/src/hooks/usePresets.d.ts +6 -2
  237. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  238. package/dist/types/src/hooks/useSkillRegistry.d.ts +21 -0
  239. package/dist/types/src/hooks/useSkillRegistry.d.ts.map +1 -0
  240. package/dist/types/src/index.d.ts +1 -1
  241. package/dist/types/src/index.d.ts.map +1 -1
  242. package/dist/types/src/meta.d.ts +4 -0
  243. package/dist/types/src/meta.d.ts.map +1 -1
  244. package/dist/types/src/operations/create-chat.d.ts.map +1 -1
  245. package/dist/types/src/operations/fork-chat.d.ts.map +1 -1
  246. package/dist/types/src/operations/generate-home-suggestions.d.ts +5 -0
  247. package/dist/types/src/operations/generate-home-suggestions.d.ts.map +1 -0
  248. package/dist/types/src/operations/generate-home-suggestions.test.d.ts +2 -0
  249. package/dist/types/src/operations/generate-home-suggestions.test.d.ts.map +1 -0
  250. package/dist/types/src/operations/index.d.ts.map +1 -1
  251. package/dist/types/src/operations/resolve-navigation-targets.d.ts +3 -15
  252. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
  253. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +2 -2
  254. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
  255. package/dist/types/src/paths.d.ts +1 -1
  256. package/dist/types/src/paths.d.ts.map +1 -1
  257. package/dist/types/src/plugin.workerd.d.ts +2 -0
  258. package/dist/types/src/plugin.workerd.d.ts.map +1 -0
  259. package/dist/types/src/processor/presets.d.ts +20 -9
  260. package/dist/types/src/processor/presets.d.ts.map +1 -1
  261. package/dist/types/src/processor/processor.d.ts +10 -209
  262. package/dist/types/src/processor/processor.d.ts.map +1 -1
  263. package/dist/types/src/skills/assistant/index.d.ts +2 -0
  264. package/dist/types/src/skills/assistant/index.d.ts.map +1 -0
  265. package/dist/types/src/skills/assistant/skill.d.ts +4 -0
  266. package/dist/types/src/skills/assistant/skill.d.ts.map +1 -0
  267. package/dist/types/src/skills/assistant/skill.node.test.d.ts +2 -0
  268. package/dist/types/src/skills/assistant/skill.node.test.d.ts.map +1 -0
  269. package/dist/types/src/skills/index.d.ts.map +1 -0
  270. package/dist/types/src/templates/daily-digest.d.ts +2 -2
  271. package/dist/types/src/templates/daily-digest.d.ts.map +1 -1
  272. package/dist/types/src/templates/index.d.ts +3 -3
  273. package/dist/types/src/templates/index.d.ts.map +1 -1
  274. package/dist/types/src/templates/research-brief.d.ts +2 -2
  275. package/dist/types/src/templates/research-brief.d.ts.map +1 -1
  276. package/dist/types/src/templates/routine-templates.test.d.ts +2 -0
  277. package/dist/types/src/templates/routine-templates.test.d.ts.map +1 -0
  278. package/dist/types/src/templates/scaffold.d.ts +9 -9
  279. package/dist/types/src/templates/scaffold.d.ts.map +1 -1
  280. package/dist/types/src/testing/test-generator.d.ts +1 -1
  281. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  282. package/dist/types/src/testing/test-sequence.d.ts +1 -8
  283. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  284. package/dist/types/src/testing/test-trace.d.ts.map +1 -1
  285. package/dist/types/src/translations.d.ts.map +1 -1
  286. package/dist/types/src/types/Assistant.d.ts +5 -12
  287. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  288. package/dist/types/src/types/AssistantCapabilities.d.ts +21 -0
  289. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -1
  290. package/dist/types/src/types/AssistantOperation.d.ts +17 -110
  291. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -1
  292. package/dist/types/src/types/ChatSurface.d.ts +12 -0
  293. package/dist/types/src/types/ChatSurface.d.ts.map +1 -0
  294. package/dist/types/src/types/Ollama.d.ts +44 -0
  295. package/dist/types/src/types/Ollama.d.ts.map +1 -0
  296. package/dist/types/src/types/Settings.d.ts +5 -4
  297. package/dist/types/src/types/Settings.d.ts.map +1 -1
  298. package/dist/types/src/types/index.d.ts +2 -0
  299. package/dist/types/src/types/index.d.ts.map +1 -1
  300. package/dist/types/src/types/service.d.ts +4 -3
  301. package/dist/types/src/types/service.d.ts.map +1 -1
  302. package/dist/types/src/util/suggestions.d.ts +1 -1
  303. package/dist/types/tsconfig.tsbuildinfo +1 -1
  304. package/dx.config.ts +2 -2
  305. package/package.json +102 -90
  306. package/src/AssistantPlugin.conversations.json +1 -1
  307. package/src/AssistantPlugin.node.ts +5 -5
  308. package/src/AssistantPlugin.test.ts +26 -40
  309. package/src/AssistantPlugin.ts +12 -10
  310. package/src/AssistantPlugin.workerd.ts +15 -6
  311. package/src/capabilities/agent-hydrator.ts +1 -2
  312. package/src/capabilities/agent-service.ts +5 -7
  313. package/src/capabilities/ai-context.ts +7 -32
  314. package/src/capabilities/ai-service.ts +3 -2
  315. package/src/capabilities/app-graph-builder.ts +38 -18
  316. package/src/capabilities/automation-templates.ts +3 -3
  317. package/src/capabilities/companion-chat-provisioner.ts +22 -6
  318. package/src/capabilities/{integration-provider.ts → connector.ts} +7 -12
  319. package/src/capabilities/create-object.ts +9 -26
  320. package/src/capabilities/index.ts +3 -5
  321. package/src/capabilities/markdown-extension.ts +2 -3
  322. package/src/capabilities/navigation-resolver.ts +20 -0
  323. package/src/capabilities/react-surface.tsx +21 -33
  324. package/src/capabilities/skill-definition.ts +72 -0
  325. package/src/capabilities/state.ts +7 -0
  326. package/src/components/AgentProperties/AgentProperties.stories.tsx +1 -2
  327. package/src/components/Chat/Chat.tsx +28 -10
  328. package/src/components/Chat/events.ts +0 -6
  329. package/src/components/ChatPrompt/ChatActions.tsx +181 -18
  330. package/src/components/ChatPrompt/ChatOptions.stories.tsx +3 -3
  331. package/src/components/ChatPrompt/ChatOptions.tsx +17 -21
  332. package/src/components/ChatPrompt/ChatPrompt.tsx +30 -46
  333. package/src/components/ChatPrompt/useChatVoiceInput.ts +103 -0
  334. package/src/components/ChatThread/ChatThread.stories.tsx +7 -16
  335. package/src/components/ChatThread/MarkdownStream.stories.tsx +3 -3
  336. package/src/components/ChatThread/registry.tsx +43 -17
  337. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +2 -2
  338. package/src/components/ChatThread/widgets/SurfaceWidget.tsx +41 -0
  339. package/src/components/ChatThread/widgets/index.ts +1 -0
  340. package/src/components/ProcessTree/ProcessTree.tsx +2 -10
  341. package/src/components/TaskList/TaskList.stories.tsx +2 -2
  342. package/src/components/TaskList/TaskList.tsx +2 -2
  343. package/src/components/Toolbox/Toolbox.tsx +11 -11
  344. package/src/components/index.ts +0 -6
  345. package/src/constants.ts +1 -1
  346. package/src/containers/AgentArticle/AgentArticle.stories.tsx +8 -9
  347. package/src/containers/AgentArticle/AgentArticle.tsx +1 -1
  348. package/src/{components → containers}/AssistantSettings/AssistantSettings.stories.tsx +3 -2
  349. package/src/containers/AssistantSettings/AssistantSettings.tsx +90 -0
  350. package/src/containers/AssistantSettings/OllamaModels.stories.tsx +108 -0
  351. package/src/containers/AssistantSettings/OllamaModels.tsx +255 -0
  352. package/src/containers/ChatArticle/ChatArticle.stories.tsx +3 -3
  353. package/src/containers/ChatArticle/ChatArticle.tsx +8 -19
  354. package/src/containers/ChatCompanion/ChatCompanion.tsx +26 -26
  355. package/src/containers/ChatDialog/ChatDialog.tsx +5 -4
  356. package/src/containers/IntegrationPrompt/IntegrationPrompt.tsx +79 -0
  357. package/src/containers/IntegrationPrompt/index.ts +5 -0
  358. package/src/containers/SpaceHomePrompt/SpaceHomePrompt.tsx +8 -6
  359. package/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.tsx +46 -32
  360. package/src/containers/TracePanel/TracePanel.stories.tsx +89 -47
  361. package/src/containers/TracePanel/TracePanel.tsx +13 -8
  362. package/src/containers/TracePanel/dxn-extractor.test.ts +2 -2
  363. package/src/containers/TriggerStatus/TriggerStatus.tsx +8 -4
  364. package/src/containers/index.ts +2 -3
  365. package/src/execution-graph/SPEC.md +1 -1
  366. package/src/execution-graph/execution-graph.test.ts +213 -25
  367. package/src/execution-graph/execution-graph.ts +209 -72
  368. package/src/execution-graph/index.ts +8 -8
  369. package/src/execution-graph/span-tree.test.ts +33 -1
  370. package/src/execution-graph/span-tree.ts +43 -2
  371. package/src/execution-graph/sub-agent-delegation.test.ts +19 -19
  372. package/src/extensions/index.ts +1 -1
  373. package/src/extensions/prompt-extension.ts +1 -1
  374. package/src/feed-logger.ts +4 -4
  375. package/src/functions/services.test.ts +4 -4
  376. package/src/hooks/index.ts +2 -2
  377. package/src/hooks/useChatProcessor.ts +12 -16
  378. package/src/hooks/useContextBinder.ts +2 -4
  379. package/src/hooks/useDebug.ts +2 -2
  380. package/src/hooks/useHomeSuggestions.ts +55 -0
  381. package/src/hooks/usePresets.ts +80 -11
  382. package/src/hooks/useProcessEphemeralStatus.ts +1 -1
  383. package/src/hooks/useReferencesProvider.ts +1 -1
  384. package/src/hooks/useSkillRegistry.ts +125 -0
  385. package/src/index.ts +1 -1
  386. package/src/operations/create-chat.ts +11 -12
  387. package/src/operations/fork-chat.ts +14 -19
  388. package/src/operations/generate-home-suggestions.test.ts +103 -0
  389. package/src/operations/generate-home-suggestions.ts +116 -0
  390. package/src/operations/index.ts +1 -0
  391. package/src/operations/prompt.node.test.ts +14 -17
  392. package/src/operations/resolve-navigation-targets.ts +32 -19
  393. package/src/operations/run-prompt-in-new-chat.ts +30 -33
  394. package/src/operations/update-chat-name.ts +2 -2
  395. package/src/paths.ts +4 -2
  396. package/src/plugin.workerd.ts +5 -0
  397. package/src/processor/presets.ts +38 -61
  398. package/src/processor/processor.node.test.ts +1 -1
  399. package/src/processor/processor.ts +34 -20
  400. package/src/skills/assistant/index.ts +5 -0
  401. package/src/{blueprints/assistant/blueprint.node.test.ts → skills/assistant/skill.node.test.ts} +8 -8
  402. package/src/{blueprints/assistant/blueprint.ts → skills/assistant/skill.ts} +9 -9
  403. package/src/templates/daily-digest.ts +10 -12
  404. package/src/templates/index.ts +3 -3
  405. package/src/templates/research-brief.ts +15 -13
  406. package/src/templates/routine-templates.test.ts +55 -0
  407. package/src/templates/scaffold.ts +22 -57
  408. package/src/testing/data/trace-timeline-multiple.dx.json +1 -1
  409. package/src/testing/data/trace-timeline-remote.dx.json +1 -1
  410. package/src/testing/data/trace-timeline.dx.json +3430 -1092
  411. package/src/testing/test-generator.test.ts +26 -22
  412. package/src/testing/test-generator.ts +4 -8
  413. package/src/testing/test-trace.ts +2 -1
  414. package/src/testing/trace-timeline.node.test.ts +14 -14
  415. package/src/translations.ts +68 -33
  416. package/src/types/Assistant.ts +3 -1
  417. package/src/types/AssistantCapabilities.ts +21 -0
  418. package/src/types/AssistantOperation.ts +21 -32
  419. package/src/types/ChatSurface.ts +16 -0
  420. package/src/types/Ollama.ts +59 -0
  421. package/src/types/Settings.ts +12 -10
  422. package/src/types/index.ts +3 -0
  423. package/src/types/service.ts +14 -14
  424. package/src/util/suggestions.ts +1 -1
  425. package/dist/lib/neutral/AgentArticle-2BEPWUMN.mjs.map +0 -7
  426. package/dist/lib/neutral/AssistantSettings-7ALY4BMS.mjs +0 -40
  427. package/dist/lib/neutral/AssistantSettings-7ALY4BMS.mjs.map +0 -7
  428. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs +0 -27
  429. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs.map +0 -7
  430. package/dist/lib/neutral/ChatCompanion-YHC43RYQ.mjs.map +0 -7
  431. package/dist/lib/neutral/ChatDialog-YZDZLIQA.mjs.map +0 -7
  432. package/dist/lib/neutral/RoutineArticle-FK5BXQN5.mjs +0 -119
  433. package/dist/lib/neutral/RoutineArticle-FK5BXQN5.mjs.map +0 -7
  434. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs +0 -48
  435. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs.map +0 -7
  436. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +0 -17
  437. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +0 -7
  438. package/dist/lib/neutral/SpaceHomePrompt-HTWQKLGI.mjs.map +0 -7
  439. package/dist/lib/neutral/SpaceHomeSuggestions-6G4E7GNJ.mjs +0 -50
  440. package/dist/lib/neutral/SpaceHomeSuggestions-6G4E7GNJ.mjs.map +0 -7
  441. package/dist/lib/neutral/TriggerStatus-RBOHHDOK.mjs.map +0 -7
  442. package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs.map +0 -7
  443. package/dist/lib/neutral/agent-service-WV5CSHAG.mjs.map +0 -7
  444. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs +0 -42
  445. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs.map +0 -7
  446. package/dist/lib/neutral/ai-service-AADUIKBY.mjs.map +0 -7
  447. package/dist/lib/neutral/app-graph-builder-PTSRZXRN.mjs.map +0 -7
  448. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs +0 -115
  449. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs.map +0 -7
  450. package/dist/lib/neutral/blueprint-definition-2XPYI35X.mjs +0 -40
  451. package/dist/lib/neutral/blueprint-definition-2XPYI35X.mjs.map +0 -7
  452. package/dist/lib/neutral/blueprints/index.mjs +0 -8
  453. package/dist/lib/neutral/chunk-54W7N6M6.mjs.map +0 -7
  454. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +0 -7
  455. package/dist/lib/neutral/chunk-5KB2WRI2.mjs.map +0 -7
  456. package/dist/lib/neutral/chunk-7FQT4XMI.mjs +0 -8
  457. package/dist/lib/neutral/chunk-H77JTXAN.mjs.map +0 -7
  458. package/dist/lib/neutral/chunk-IQZJ5TTM.mjs +0 -130
  459. package/dist/lib/neutral/chunk-IQZJ5TTM.mjs.map +0 -7
  460. package/dist/lib/neutral/chunk-KLYLW4WH.mjs.map +0 -7
  461. package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs.map +0 -7
  462. package/dist/lib/neutral/create-chat-Z3FNA6OJ.mjs.map +0 -7
  463. package/dist/lib/neutral/create-object-BJUDDKQQ.mjs.map +0 -7
  464. package/dist/lib/neutral/fork-chat-UYXYT6BT.mjs.map +0 -7
  465. package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +0 -7
  466. package/dist/lib/neutral/markdown-extension-IJ5RQMQ4.mjs.map +0 -7
  467. package/dist/lib/neutral/react-surface-ES7UHZ65.mjs.map +0 -7
  468. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs +0 -22
  469. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +0 -7
  470. package/dist/lib/neutral/run-prompt-in-new-chat-NIAGCKQV.mjs.map +0 -7
  471. package/dist/types/src/blueprints/assistant/blueprint.d.ts +0 -4
  472. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +0 -1
  473. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +0 -2
  474. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +0 -1
  475. package/dist/types/src/blueprints/assistant/index.d.ts +0 -2
  476. package/dist/types/src/blueprints/assistant/index.d.ts.map +0 -1
  477. package/dist/types/src/blueprints/index.d.ts.map +0 -1
  478. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  479. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  480. package/dist/types/src/capabilities/integration-provider.d.ts.map +0 -1
  481. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +0 -1
  482. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +0 -7
  483. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +0 -1
  484. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +0 -15
  485. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +0 -1
  486. package/dist/types/src/components/RoutineProperties/index.d.ts +0 -2
  487. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +0 -13
  488. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +0 -1
  489. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +0 -1
  490. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +0 -21
  491. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +0 -1
  492. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +0 -16
  493. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +0 -1
  494. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +0 -12
  495. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +0 -1
  496. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +0 -3
  497. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +0 -1
  498. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +0 -8
  499. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +0 -1
  500. package/dist/types/src/components/TemplateEditor/index.d.ts +0 -2
  501. package/dist/types/src/components/TemplateEditor/index.d.ts.map +0 -1
  502. package/dist/types/src/components/TemplateEditor/types.d.ts +0 -18
  503. package/dist/types/src/components/TemplateEditor/types.d.ts.map +0 -1
  504. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +0 -6
  505. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +0 -1
  506. package/dist/types/src/containers/BlueprintArticle/index.d.ts +0 -2
  507. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +0 -1
  508. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +0 -6
  509. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +0 -1
  510. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +0 -15
  511. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +0 -1
  512. package/dist/types/src/containers/RoutineArticle/index.d.ts +0 -2
  513. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +0 -1
  514. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +0 -6
  515. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +0 -1
  516. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +0 -21
  517. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +0 -1
  518. package/dist/types/src/containers/RoutineList/index.d.ts +0 -2
  519. package/dist/types/src/containers/RoutineList/index.d.ts.map +0 -1
  520. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +0 -66
  521. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +0 -1
  522. package/dist/types/src/hooks/useOnline.d.ts +0 -3
  523. package/dist/types/src/hooks/useOnline.d.ts.map +0 -1
  524. package/dist/types/src/templates/automation-templates.test.d.ts +0 -2
  525. package/dist/types/src/templates/automation-templates.test.d.ts.map +0 -1
  526. package/src/blueprints/assistant/index.ts +0 -5
  527. package/src/capabilities/blueprint-definition.ts +0 -67
  528. package/src/components/AssistantSettings/AssistantSettings.tsx +0 -43
  529. package/src/components/RoutineProperties/RoutineProperties.stories.tsx +0 -59
  530. package/src/components/RoutineProperties/RoutineProperties.tsx +0 -23
  531. package/src/components/RoutineProperties/index.ts +0 -5
  532. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +0 -95
  533. package/src/components/TemplateEditor/TemplateEditor.tsx +0 -80
  534. package/src/components/TemplateEditor/TemplateForm.stories.tsx +0 -76
  535. package/src/components/TemplateEditor/TemplateForm.tsx +0 -204
  536. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +0 -274
  537. package/src/components/TemplateEditor/extensions/index.ts +0 -6
  538. package/src/components/TemplateEditor/extensions/xml-extension.ts +0 -64
  539. package/src/components/TemplateEditor/index.ts +0 -5
  540. package/src/components/TemplateEditor/types.tsx +0 -28
  541. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +0 -29
  542. package/src/containers/BlueprintArticle/index.ts +0 -5
  543. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +0 -75
  544. package/src/containers/RoutineArticle/RoutineArticle.tsx +0 -109
  545. package/src/containers/RoutineArticle/index.ts +0 -5
  546. package/src/containers/RoutineList/RoutineList.stories.tsx +0 -130
  547. package/src/containers/RoutineList/RoutineList.tsx +0 -50
  548. package/src/containers/RoutineList/index.ts +0 -5
  549. package/src/hooks/useBlueprintRegistry.ts +0 -125
  550. package/src/hooks/useOnline.ts +0 -10
  551. package/src/templates/automation-templates.test.ts +0 -66
  552. /package/dist/lib/neutral/{ChatArticle-KT46SUFU.mjs.map → ChatArticle-OO7GGEFW.mjs.map} +0 -0
  553. /package/dist/lib/neutral/{TracePanel-T552TAOH.mjs.map → TracePanel-JKNWADJ4.mjs.map} +0 -0
  554. /package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs.map → edge-model-resolver-WDJWDZTT.mjs.map} +0 -0
  555. /package/dist/lib/neutral/{blueprints → extensions}/index.mjs.map +0 -0
  556. /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts +0 -0
  557. /package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts +0 -0
  558. /package/dist/types/src/{blueprints → skills}/index.d.ts +0 -0
  559. /package/src/{components → containers}/AssistantSettings/index.ts +0 -0
  560. /package/src/{blueprints → skills}/index.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/processor/presets.ts", "../../../src/processor/processor.ts", "../../../src/util/error-cause.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Model, Provider } from '@dxos/ai';\nimport { DXN } from '@dxos/keys';\n\n/**\n * A chat preset: a model offered for a provider, with a display label. Derived from the {@link Model}\n * catalog — see {@link presetsForProvider}.\n */\nexport type AiServicePreset = {\n id: string;\n provider: DXN.DXN;\n model: DXN.DXN;\n /** Provider-specific back-end name (e.g. an Ollama pull tag); used to match installed models. */\n backend: string;\n label: string;\n};\n\n/** Presets for a provider: every model the provider serves (the catalog filtered by provider). */\nexport const presetsForProvider = (provider: DXN.DXN): AiServicePreset[] =>\n Model.forProvider(provider).map((model) => ({\n id: model.id,\n provider,\n model: model.id,\n backend: model.backend,\n label: model.label,\n }));\n\n/**\n * Reconcile a stored provider DXN with the runtime: map the bundled sidecar (`built-in`) and an\n * external server (`ollama`) onto whichever is actually available — they are environment-exclusive\n * (the sidecar exists only on desktop). Defaults to `edge` when unset or unparseable.\n */\nexport const resolveProvider = (provider: string | undefined, hasBuiltIn: boolean): DXN.DXN => {\n const resolved = (provider ? DXN.tryMake(provider) : undefined) ?? Provider.edge.id;\n if (resolved === Provider.ollama.id && hasBuiltIn) {\n return Provider.builtIn.id;\n }\n if (resolved === Provider.builtIn.id && !hasBuiltIn) {\n return Provider.ollama.id;\n }\n return resolved;\n};\n\n/** The {@link Settings.modelDefaults} key for a provider (`built-in` shares the `ollama` key). */\nexport const defaultsKeyForProvider = (provider: DXN.DXN): 'edge' | 'ollama' | 'lmstudio' =>\n provider === Provider.edge.id ? 'edge' : provider === Provider.lmStudio.id ? 'lmstudio' : 'ollama';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, Registry as AtomRegistry } from '@effect-atom/atom-react';\nimport * as AiError from '@effect/ai/AiError';\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport * as Fiber from 'effect/Fiber';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport * as Stream from 'effect/Stream';\n\nimport { type AiService, Model, type OpaqueToolkit } from '@dxos/ai';\nimport { Capabilities } from '@dxos/app-framework';\nimport {\n AiContext,\n AiSession,\n Harness,\n McpServerError,\n PartialBlock,\n ToolExecutionServices,\n createSystemPrompt,\n formatSystemPrompt,\n} from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { AgentService, type Credential, Operation, type ServiceNotAvailableError, Trace } from '@dxos/compute';\nimport { type Database, Feed, Obj, Ref, type Registry } from '@dxos/echo';\nimport { UsageQuotaExceededError } from '@dxos/edge-client';\nimport { EffectEx } from '@dxos/effect';\nimport { DXN } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Message } from '@dxos/types';\n\nimport { AssistantOperation } from '#types';\n\nimport { findInCause } from '../util/error-cause';\n\n/**\n * @deprecated Services type for the old direct-conversation processor path.\n * Retained for backward compatibility with CLI and update-name.\n */\nexport type AiChatServices =\n | Credential.CredentialsService\n | Database.Service\n | AiService.AiService\n | Trace.TraceService;\n\n/**\n * Space-scoped services materialised by the layer passed into\n * {@link AiChatProcessor}. Mirrors the tag list that\n * {@link useChatProcessor} passes to {@link ServiceResolver.provide}.\n */\nexport type SpaceServices =\n | Database.Service\n | Credential.CredentialsService\n | AiService.AiService\n | AgentService.AgentService\n | Registry.Service\n | OpaqueToolkit.OpaqueToolkitProvider;\n\nexport type AiChatProcessorOptions = {\n model?: DXN.DXN;\n // The selected provider, carried with the model so the agent process resolves the (provider, id)\n // pair — the catalog's shared model ids are ambiguous without it.\n provider?: DXN.DXN;\n modelRegistry?: Model.Registry;\n registry?: Registry.Registry;\n observableRegistry?: AtomRegistry.Registry;\n /**\n * For tracing.\n */\n chat?: Ref.Ref<Chat.Chat>;\n system?: string;\n};\n\nconst defaultOptions: Partial<AiChatProcessorOptions> = {\n model: Model.DEFAULT_EDGE,\n};\n\nexport type ProcessorRequestOptions = {};\n\nexport type ProcessorRequest = {\n message: string;\n options?: ProcessorRequestOptions;\n};\n\n/** User-facing message shown when an AI request is rejected for exceeding the account usage quota (HTTP 429). */\nconst QUOTA_EXCEEDED_MESSAGE = 'You have reached your AI usage limit for this period.';\n\n/** An actionable next-step a chat error surfaces in its toast; the label key is resolved by the chat UI. */\nexport type ChatErrorAction = { readonly labelKey: string };\n\n/**\n * Display error for an over-quota (HTTP 429) rejection. Declares an {@link action} so the chat toast can\n * offer a usage-dashboard link declaratively — the UI renders whatever action an error declares rather\n * than branching on the error type.\n */\nexport class AiUsageQuotaError extends Error {\n readonly action: ChatErrorAction = { labelKey: 'view-usage.label' };\n}\n\n/**\n * Matches an over-quota rejection (EDGE responds 429) in error text. The typed\n * {@link UsageQuotaExceededError} is wrapped deep in the cause chain and does not survive the\n * agent-process boundary — the failure is rendered to a string via `Cause.pretty`, which drops\n * nested causes — so detection also relies on the HTTP 429 that `@effect/ai`'s\n * {@link AiError.HttpResponseError} embeds in its message (e.g. \"... (429 POST ...\").\n */\nconst QUOTA_PATTERN = /\\b429\\b|rate.?limit|too many requests|usage quota|quota exceeded/i;\n\n/** Whether an error denotes an over-quota (HTTP 429) rejection, detected by typed status or message text. */\nconst isQuotaError = (err: unknown): boolean => {\n if (AiError.isAiError(err)) {\n if (err._tag === 'HttpResponseError' && err.response.status === 429) {\n return true;\n }\n return QUOTA_PATTERN.test(err.description ?? err.message);\n }\n return typeof err === 'string' && QUOTA_PATTERN.test(err);\n};\n\n/**\n * Maps a failure from the agent fiber to an error suitable for display.\n * An over-quota (HTTP 429) rejection is surfaced as an actionable usage-limit message; the typed\n * {@link UsageQuotaExceededError} only survives on the direct path, so {@link isQuotaError} also\n * recognizes the stringified 429 the chat receives across the agent-process boundary.\n * Other {@link AiError}s originate from the AI service and are actionable by the user\n * (e.g., \"model 'x' not found\", \"Connection refused\"), so their detail is propagated.\n * Any other failure is treated as an internal/unexpected error and reported generically\n * to avoid leaking implementation detail.\n */\nexport const parseError = (err: unknown): Error => {\n const quotaError = findInCause(err, UsageQuotaExceededError.is);\n if (quotaError || isQuotaError(err)) {\n return new AiUsageQuotaError(quotaError?.message?.trim() || QUOTA_EXCEEDED_MESSAGE, { cause: err });\n }\n\n let message: string | undefined;\n if (AiError.isAiError(err)) {\n message = err.description?.trim() || err.message;\n } else if (typeof err === 'string') {\n // TODO(burdon): This is brittle.\n // UnknownError: ChatCompletionsClient.streamText: model 'gemma3:27b' not found\n const [, model] = err.match(/model\\s+'([^']+)'\\s+not\\s+found/i) || [];\n if (model) {\n message = `The model is not available: ${model}`;\n }\n }\n\n if (!message) {\n message = 'An unexpected error occurred.';\n }\n\n return new Error(message, { cause: err });\n};\n\n/**\n * Handles interactions with the AI service.\n * Uses AgentService to spawn a process-backed agent and subscribes to ephemeral trace events for streaming.\n */\nexport class AiChatProcessor {\n readonly #registry: AtomRegistry.Registry;\n\n /** Pending messages (finalized, non-streaming). */\n readonly #pending = Atom.make<Message.Message[]>([]);\n\n /** Currently streaming messages (from ephemeral trace events). */\n readonly #streaming = Atom.make<Message.Message[]>([]);\n\n /** Set of message IDs that have been finalized (non-pending delivered via ephemeral). */\n readonly #finalizedIds = new Set<string>();\n\n /** Currently active request fiber. */\n #requestFiber: Fiber.RuntimeFiber<void, unknown> | undefined;\n\n /** Last request (for retries). */\n #lastRequest: ProcessorRequest | undefined;\n\n /** Streaming state. */\n public readonly streaming = Atom.make<boolean>((get) => get(this.#streaming).length > 0);\n\n /** Active state. */\n public readonly active = Atom.make(false);\n\n /** Array of Messages (incl. the current message being streamed). */\n public readonly messages = Atom.make<Message.Message[]>((get) => [...get(this.#pending), ...get(this.#streaming)]);\n\n /** Last error. */\n public readonly error = Atom.make<Option.Option<Error>>(Option.none());\n\n /**\n * MCP server connection errors observed during the most recent request.\n * Misconfigured/unreachable servers are dropped from the toolkit so the chat\n * keeps working; the entries here let the UI display which servers failed.\n */\n public readonly mcpErrors = Atom.make<readonly Trace.PayloadType<typeof McpServerError>[]>([]);\n\n constructor(\n private readonly _conversation: AiSession.Session,\n private readonly _runtime: Capabilities.ProcessManagerRuntime,\n private readonly _feed: Feed.Feed,\n /**\n * Pre-built layer that materialises {@link SpaceServices}. Built via\n * {@link ServiceResolver.provide} with the {@link ServiceResolver} already\n * supplied (hence `RIn = never`); the {@link ServiceNotAvailableError}\n * error channel surfaces when a tag is not available for the space.\n * Provided to every effect run by the processor so the underlying\n * {@link ProcessManagerRuntime} has access to space-affinity services.\n */\n private readonly _spaceLayer: Layer.Layer<SpaceServices, ServiceNotAvailableError, never>,\n private readonly _options: AiChatProcessorOptions = defaultOptions,\n ) {\n this.#registry = this._options.observableRegistry ?? AtomRegistry.make();\n if (this._options.model && !this._options.system) {\n const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};\n this._options.system = createSystemPrompt(capabilities);\n }\n }\n\n get context(): AiContext.Binder {\n return this._conversation.context;\n }\n\n get conversation() {\n return this._conversation;\n }\n\n get registry() {\n return this._options.registry;\n }\n\n get system(): string {\n return this._options.system ?? '';\n }\n\n async getTools(): Promise<Record<string, any>> {\n return this._runtime.runPromise(\n Effect.provide(this._conversation.getTools(), ToolExecutionServices).pipe(Effect.provide(this._spaceLayer)),\n );\n }\n\n async getSystemPrompt(): Promise<string> {\n return this._runtime.runPromise(\n Effect.gen(this, function* () {\n const skills = this.context.getSkills();\n const objects = this.context.getObjects();\n // Tier A only: system-prompt formatting runs operations that read the conversation context;\n // the live-host Tier B control surface is not reachable from this fiber.\n const runtime = yield* Effect.runtime<Database.Service>();\n return yield* formatSystemPrompt({ system: this._options.system, skills, objects }).pipe(\n Effect.provideService(\n Harness.HarnessService,\n Harness.fromBinder({ feed: this._feed, runtime, binder: this.context }),\n ),\n );\n }).pipe(Effect.provide(this._spaceLayer), Effect.orDie),\n );\n }\n\n /**\n * Initiates a new request via AgentService.\n */\n async request(requestProp: ProcessorRequest): Promise<void> {\n if (this.#requestFiber) {\n await this.cancel();\n }\n\n try {\n this.#lastRequest = requestProp;\n this.#registry.set(this.error, Option.none());\n this.#registry.set(this.mcpErrors, []);\n this.#registry.set(this.active, true);\n\n const effect = Effect.gen(this, function* () {\n // NOTE: Gets or creates a session for the feed.\n log.info('init agent session', {\n feed: Obj.getURI(this._feed),\n model: this._options.model,\n provider: this._options.provider,\n });\n const session = yield* AgentService.getSession(this._feed, {\n model: this._options.model,\n provider: this._options.provider,\n });\n const ephemeralStream = session.subscribeEphemeral();\n yield* ephemeralStream.pipe(\n Stream.runForEach((message) =>\n Effect.sync(() => {\n for (const event of message.events) {\n if (Trace.isOfType(PartialBlock, event)) {\n this.#handleEphemeralMessage(event.data);\n } else if (Trace.isOfType(McpServerError, event)) {\n this.#handleMcpError(event.data);\n }\n }\n }),\n ),\n Effect.fork,\n );\n\n log('chat processor submitting prompt', { length: requestProp.message.length });\n yield* session.submitPrompt(requestProp.message);\n log('chat processor submitPrompt returned, waiting for agent', {});\n\n // On the first message (no name yet), schedule rename immediately so it\n // runs concurrently with the AI response rather than waiting for completion.\n if (!this._options.chat?.target?.name) {\n yield* this.#updateChatName(requestProp.message);\n }\n\n yield* session.waitForCompletion();\n log.info('session complete');\n\n this.#flushStreaming();\n });\n\n this.#requestFiber = this._runtime.runFork(effect.pipe(Effect.provide(this._spaceLayer)));\n\n // Inspect the fiber's exit so the underlying failure (e.g. \"model 'x' not found\") is\n // preserved as a clean Error rather than an opaque FiberFailure.\n const exit = await this._runtime.runPromise(Fiber.await(this.#requestFiber));\n if (Exit.isFailure(exit)) {\n if (Cause.isInterruptedOnly(exit.cause)) {\n this.#discardStreaming();\n return;\n }\n\n throw EffectEx.causeToError(exit.cause);\n }\n\n this.#registry.set(this.error, Option.none());\n this.#lastRequest = undefined;\n this.#requestFiber = undefined;\n } catch (err) {\n // `EffectEx.causeToError` above unwraps the fiber failure into the underlying error (e.g. an AiError\n // carrying \"model 'x' not found\"); `parseError` decides what to surface to the user.\n log.error('request failed', { error: err });\n this.#registry.set(this.error, Option.some(parseError(err)));\n } finally {\n log.info('setting active to false');\n this.#registry.set(this.active, false);\n this.#requestFiber = undefined;\n }\n }\n\n /**\n * Cancels the current request.\n */\n async cancel(): Promise<void> {\n await EffectEx.runAndForwardErrors(\n Effect.gen(this, function* () {\n log.info('cancelling request', { fiber: this.#requestFiber });\n if (this.#requestFiber) {\n yield* Fiber.interrupt(this.#requestFiber);\n }\n const session = yield* AgentService.getSession(this._feed);\n yield* session.terminate();\n }).pipe(Effect.provide(this._spaceLayer)),\n );\n\n this.#requestFiber = undefined;\n this.#discardStreaming();\n this.#registry.set(this.active, false);\n }\n\n /**\n * Retry last failed request.\n */\n async retry(): Promise<void> {\n if (this.#lastRequest) {\n return this.request(this.#lastRequest);\n }\n }\n\n /**\n * Clears the recorded MCP server errors (e.g. after the user dismisses the warning banner).\n */\n dismissMcpErrors(): void {\n this.#registry.set(this.mcpErrors, []);\n }\n\n /**\n * Update the current chat's name.\n */\n async updateName(chat: Chat.Chat): Promise<void> {\n const spaceId = Obj.getDatabase(chat)?.spaceId;\n if (!spaceId) {\n return;\n }\n EffectEx.unwrapExit(\n await this._runtime.runPromiseExit(\n Operation.invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId }).pipe(\n Effect.provide(this._spaceLayer),\n ),\n ),\n );\n }\n\n /**\n * Handles an ephemeral message from the agent process.\n * Both pending and completed blocks arrive here. Completed blocks are deduped\n * against messages already written to the feed queue to handle the race between\n * ephemeral delivery and feed replication.\n */\n #handleEphemeralMessage(event: Trace.PayloadType<typeof PartialBlock>) {\n const isPending = event.block.pending;\n const message = Obj.make(Message.Message, {\n id: event.messageId,\n created: new Date().toISOString(),\n sender: { role: event.role },\n blocks: [event.block],\n });\n\n if (isPending) {\n if (this.#finalizedIds.has(event.messageId)) {\n return;\n }\n this.#registry.update(this.#streaming, (streaming) => {\n const idx = streaming.findIndex((existing) => existing.id === event.messageId);\n if (idx >= 0) {\n const updated = [...streaming];\n updated[idx] = message;\n return updated;\n }\n return [...streaming, message];\n });\n } else {\n this.#finalizedIds.add(event.messageId);\n this.#registry.update(this.#streaming, (streaming) => streaming.filter((existing) => existing.id !== message.id));\n this.#registry.update(this.#pending, (pending) => {\n if (pending.some((existing) => existing.id === message.id)) {\n return pending;\n }\n return [...pending, message];\n });\n }\n }\n\n /**\n * Records a per-server MCP failure, deduped by url+protocol so repeat misconfigurations\n * across turns do not spam the UI.\n */\n #handleMcpError(event: Trace.PayloadType<typeof McpServerError>) {\n log.warn('MCP server error', event);\n this.#registry.update(this.mcpErrors, (errors) => {\n if (errors.some((existing) => existing.url === event.url && existing.protocol === event.protocol)) {\n return errors;\n }\n return [...errors, event];\n });\n }\n\n /**\n * Drop in-flight streaming messages (cancel/interrupt — partial blocks are discarded).\n */\n #discardStreaming() {\n this.#registry.set(this.#streaming, []);\n this.#finalizedIds.clear();\n }\n\n /**\n * Move remaining streaming messages to pending (called when agent completes).\n */\n #flushStreaming() {\n const remaining = this.#registry.get(this.#streaming);\n if (remaining.length > 0) {\n this.#registry.update(this.#pending, (pending) => [...pending, ...remaining]);\n this.#registry.set(this.#streaming, []);\n }\n this.#finalizedIds.clear();\n }\n\n /**\n * Schedule a chat name update as a detached (fire-and-forget) operation.\n * Called automatically on the first message; can also be invoked manually via the toolbar.\n */\n #updateChatName(prompt?: string): Effect.Effect<void, never, Operation.Service> {\n const chat = this._options.chat?.target;\n if (!chat) {\n return Effect.void;\n }\n\n const spaceId = Obj.getDatabase(chat)?.spaceId;\n if (!spaceId) {\n return Effect.void;\n }\n\n log.info('scheduling chat name update');\n return Operation.schedule(AssistantOperation.UpdateChatName, { chat, prompt }, { spaceId });\n }\n}\n", "//\n// Copyright 2026 DXOS.org\n//\n\n/** Walk an error's `cause` chain and return the first value matching `predicate`. */\nexport const findInCause = <T>(error: unknown, predicate: (value: unknown) => value is T): T | undefined => {\n let current: unknown = error;\n // Guard against self-referential / cyclic `cause` chains so traversal always terminates.\n const visited = new Set<unknown>();\n while (current) {\n if (visited.has(current)) {\n break;\n }\n visited.add(current);\n if (predicate(current)) {\n return current;\n }\n current = current instanceof Error ? current.cause : undefined;\n }\n return undefined;\n};\n"],
5
+ "mappings": ";AAIA,SAASA,OAAOC,gBAAgB;AAChC,SAASC,WAAW;AAgBb,IAAMC,qBAAqB,CAACC,aACjCJ,MAAMK,YAAYD,QAAAA,EAAUE,IAAI,CAACC,WAAW;EAC1CC,IAAID,MAAMC;EACVJ;EACAG,OAAOA,MAAMC;EACbC,SAASF,MAAME;EACfC,OAAOH,MAAMG;AACf,EAAA;AAOK,IAAMC,kBAAkB,CAACP,UAA8BQ,eAAAA;AAC5D,QAAMC,YAAYT,WAAWF,IAAIY,QAAQV,QAAAA,IAAYW,WAAcd,SAASe,KAAKR;AACjF,MAAIK,aAAaZ,SAASgB,OAAOT,MAAMI,YAAY;AACjD,WAAOX,SAASiB,QAAQV;EAC1B;AACA,MAAIK,aAAaZ,SAASiB,QAAQV,MAAM,CAACI,YAAY;AACnD,WAAOX,SAASgB,OAAOT;EACzB;AACA,SAAOK;AACT;AAGO,IAAMM,yBAAyB,CAACf,aACrCA,aAAaH,SAASe,KAAKR,KAAK,SAASJ,aAAaH,SAASmB,SAASZ,KAAK,aAAa;;;AC5C5F,SAASa,MAAMC,YAAYC,oBAAoB;AAC/C,YAAYC,aAAa;AACzB,YAAYC,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,UAAU;AACtB,YAAYC,WAAW;AAEvB,YAAYC,YAAY;AACxB,YAAYC,YAAY;AAExB,SAAyBC,SAAAA,cAAiC;AAE1D,SAGEC,SACAC,gBACAC,cACAC,uBACAC,oBACAC,0BACK;AAEP,SAASC,cAA+BC,WAA0CC,aAAa;AAC/F,SAA8BC,WAA+B;AAC7D,SAASC,+BAA+B;AACxC,SAASC,gBAAgB;AAEzB,SAASC,WAAW;AACpB,SAASC,eAAe;AAExB,SAASC,0BAA0B;;;AC9B5B,IAAMC,cAAc,CAAIC,OAAgBC,cAAAA;AAC7C,MAAIC,UAAmBF;AAEvB,QAAMG,UAAU,oBAAIC,IAAAA;AACpB,SAAOF,SAAS;AACd,QAAIC,QAAQE,IAAIH,OAAAA,GAAU;AACxB;IACF;AACAC,YAAQG,IAAIJ,OAAAA;AACZ,QAAID,UAAUC,OAAAA,GAAU;AACtB,aAAOA;IACT;AACAA,cAAUA,mBAAmBK,QAAQL,QAAQM,QAAQC;EACvD;AACA,SAAOA;AACT;;;ADyDA,IAAA,eAAMC;AAEN,IAAA,iBAAA;EASA,OAAAC,OAAA;AAMA;;AAMuCC,IAAAA,oBAAAA,cAAU,MAAA;EAAmB,SAAE;IACtE,UAAA;EAEA;;AAWE,IAAIC,gBAAkBC;AACiD,IAAA,eAAA,CAAA,QAAA;MACnE,kBAAO,GAAA,GAAA;AACT,QAAA,IAAA,SAAA,uBAAA,IAAA,SAAA,WAAA,KAAA;AACA,aAAOC;IACT;AACA,WAAO,cAAe,KAAA,IAAYA,eAAcC,IAAKF,OAAAA;EACvD;AAEA,SAAA,OAAA,QAAA,YAAA,cAAA,KAAA,GAAA;;AAYMG,IAAAA,aAAcC,CAAAA,QAAaJ;QAC7B,aAAWK,YAAAA,KAAkBF,wBAAqBG,EAAAA;oBAA2CN,aAAAA,GAAAA,GAAAA;AAAI,WAAA,IAAA,kBAAA,YAAA,SAAA,KAAA,KAAA,wBAAA;MACnG,OAAA;IAEIO,CAAAA;EACJ;MACEA;AACF,MAAW,kBAAOP,GAAAA,GAAQ;AACxB,cAAA,IAAA,aAAA,KAAA,KAAiC,IAAA;aACjC,OAAA,QAAA,UAAA;UAGEO,CAAAA,EAAAA,KAAU,IAAC,IAAA,MAAA,kCAAqC,KAAA,CAAA;AAClD,QAAA,OAAA;AACF,gBAAA,+BAAA,KAAA;IAEI;;AAEJ,MAAA,CAAA,SAAA;AAEA,cAAWC;;AAA4B,SAAA,IAAA,MAAA,SAAA;IACvC,OAAA;EAEF,CAAA;;;;;;EAKW;EAET;EAGA;;EAGA,WAAA,KAAA,KAAA,CAAA,CAAA;;EAI6D,aAAA,KAAA,KAAA,CAAA,CAAA;;EAGlB,gBAAA,oBAAA,IAAA;;EAGfC;;EAGEC;;EAE9B,YAAA,KAAA,KAAA,CAAA,QAAA,IAAA,KAAA,UACgBC,EAAAA,SAAWF,CAAAA;;EAAmD,SAAQ,KAAA,KAAA,KAAA;;EAAyB,WAAA,KAAA,KAAA,CAAA,QAAA;IAAI,GAAA,IAAA,KAAA,QAAA;IAEnH,GAAA,IAAA,KACgBG,UAAQH;EAExB,CAAA;;;;;;;;;2DASmBI,WAAAA,gBAAAA;SACAC,gBAAAA;SASAC,WAAAA;SACAC,QAAAA;AAEjB,SAAK,cAAY;AACjB,SAAI,WAAKA;SACP,YAAMC,KAAAA,SAAoBD,sBAAsB,aAAEE,KAAgB;QAClE,KAAKF,SAASG,SAASC,CAAAA,KAAAA,SAAAA,QAAmBH;AAC5C,YAAA,eAAA,KAAA,SAAA,eAAA,gBAAA,KAAA,SAAA,KAAA,KAAA,CAAA;AACF,WAAA,SAAA,SAAA,mBAAA,YAAA;IAEII;;EAEJ,IAAA,UAAA;AAEIC,WAAAA,KAAAA,cAAe;;EAEnB,IAAA,eAAA;AAEIC,WAAAA,KAAW;;EAEf,IAAA,WAAA;AAEIJ,WAAAA,KAAiB,SAAA;;EAErB,IAAA,SAAA;AAEA,WAAMK,KAAAA,SAAyC,UAAA;;EAI/C,MAAA,WAAA;AAEA,WAAMC,KAAAA,SAAmC,WAAA,eAAA,KAAA,cAAA,SAAA,GAAA,qBAAA,EAAA,KAAA,eAAA,KAAA,WAAA,CAAA,CAAA;;0BAGpB;WACf,KAAMC,SAAU,WAAaC,WAAU,MAAA,aAAA;AACvC,YAAA,SAAA,KAAA,QAAA,UAAA;AACA,YAAA,UAAA,KAAA,QAAA,WAAA;YAEmCR,WAAY,OAAUA,eAAM;aAAES,OAAAA,mBAAAA;QAAQF,QAAAA,KAAAA,SAAAA;QAAWG;QAG3DC;cAAkBC,sBAAAA,QAAAA,gBAAAA,QAAAA,WAAAA;QAASC,MAAAA,KAAQ;QAAa,SAAAD;QAGnEE,QAAOC,KAAAA;MAEnB,CAAA,CAAA,CAAA;IAEA,CAAA,EAAA,KAAA,eAAA,KAAA,WAAA,GAAA,YAAA,CAAA;;;;;QAKI,QAAM,aAAW;AACnB,QAAA,KAAA,eAAA;AAEI,YAAA,KAAA,OAAA;;QAEF;AACA,WAAK,eAAc;AACnB,WAAK,UAAUC,IAAI,KAAKC,OAAQ,YAAA,CAAA;AAEhC,WAAA,UAAeH,IAAAA,KAAOI,WAAU,CAAA,CAAA;WAC9B,UAAA,IAAA,KAAA,QAAA,IAAA;YACAC,SAAS,WAAA,MAAA,aAAsB;YAE7BC,KAAAA,sBAA0B;UAC1BC,MAAAA,IAAU,OAAKxB,KAAAA,KAASwB;UAC1B,OAAA,KAAA,SAAA;UACA,UAAMC,KAAU,SAAOC;yBACd,YAAcH,GAAAA,cAAK,GAAA,KAAA,GAAA,KAAA,CAAA;cAC1BC,UAAU,OAAKxB,aAAiB,WAAA,KAAA,OAAA;UAClC,OAAA,KAAA,SAAA;UACA,UAAM2B,KAAAA,SAAkBF;QACxB,CAAA;gCAGiBG,QAASrC,mBAAgB;+BACxBsC,KAASC,kBAAcF,CAAAA,YAAQ,YAAA,MAAA;qBACvC,SAAK,QAAA,QAAA;AACP,gBAAA,MAAO,SAAUC,cAASE,KAAAA,GAAAA;AACxB,mBAAK,wBAAsBC,MAAI,IAAA;YACjC,WAAA,MAAA,SAAA,gBAAA,KAAA,GAAA;AACF,mBAAA,gBAAA,MAAA,IAAA;YAGJf;UAGE;QAAsCgB,CAAAA,CAAAA,GAAQC,WAAAA;AAA2B,YAAA,oCAAA;UAC7E,QAAOT,YAAQU,QAAaD;QAC5BZ,GAAAA,EAAAA,YAAI,YAAA,GAAA,cAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AAEJ,eAAA,QAAA,aAAA,YAAA,OAAA;AACA,YAAA,2DAAA,CAAA,GAAA,EAAA,YAA6E,YAAA,GAAA,cAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AAG7E,YAAA,CAAA,KAAA,SAAA,MAAA,QAAA,MAAA;AAEA,iBAAOG,KAAQW,gBAAiB,YAAA,OAAA;QAChCd;AAEA,eAAK,QAAA,kBAAe;AACtB,YAAA,KAAA,oBAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AAEI,aAAC,gBAAoB;MAEzB,CAAA;AACA,WAAA,gBAAA,KAAA,SAAA,QAAA,OAAA,KAAA,eAAiE,KAAA,WAAA,CAAA,CAAA;YAG/D,OAAIe,MAAMC,KAAAA,SAAkBC,WAAa,YAAA,KAAA,aAAA,CAAA;UACvC,eAAK,IAAA,GAAA;YACL,wBAAA,KAAA,KAAA,GAAA;AACF,eAAA,kBAAA;AAEA;QACF;AAEI,cAAC,SAAc,aAAYC,KAAAA,KAAW;MAC1C;AACA,WAAK,UAAA,IAAa,KAAGC,OAAAA,YAAAA,CAAAA;AACrB,WAAOzD,eAAK;AACZ,WAAA,gBAAA;aACA,KAAA;AACyC,UAAA,MAAA,kBAAA;QACrC,OAAC;MACP,GAAA,EAAA,YAAU,YAAA,GAAA,cAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACRsC,WAAIoB,UAAK,IAAA,KAAA,OAAA,YAAA,WAAA,GAAA,CAAA,CAAA;;AAET,UAAI,KAAC,2BAAgBD,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,cAAAA,GAAAA,KAAAA,GAAAA,KAAAA,CAAAA;AACvB,WAAA,UAAA,IAAA,KAAA,QAAA,KAAA;AACF,WAAA,gBAAA;IAEA;;;;;QAMMnB,SAAS;mBAA+B,oBAAkB,WAAA,MAAA,aAAA;AAAC,UAAA,KAAA,sBAAA;QACvD,OAAK,KAAA;uBACAqB,YAAMC,GAAU,cAAK,GAAA,KAAa,GAAA,KAAA,CAAA;AAC3C,UAAA,KAAA,eAAA;AACA,eAAgB,gBAAOlB,KAAAA,aAAamB;MACpC;AACChC,YAAKI,UAAOC,OAAY,aAAY,WAAA,KAAA,KAAA;AAGrC,aAAC,QAAa,UAAGuB;IACrB,CAAA,EAAA,KAAK,eAAiB,KAAA,WAAA,CAAA,CAAA;AACtB,SAAK,gBAAc;AACrB,SAAA,kBAAA;AAEA,SAAA,UAAA,IAAA,KAAA,QAAA,KAAA;;;;;QAKI,QAAO;AACT,QAAA,KAAA,cAAA;AACF,aAAA,KAAA,QAAA,KAAA,YAAA;IAEA;;;;;EAKA,mBAAA;AAEA,SAAA,UAAA,IAAA,KAAA,WAAA,CAAA,CAAA;;;;;QAKM,WAAU,MAAA;UACZ,UAAA,IAAA,YAAA,IAAA,GAAA;AACF,QAAA,CAAA,SAAA;AACAK;;AAE+D,aAAG,WAAA,MAAA,KAAA,SAAA,eAAA,UAAA,OAAA,mBAAA,gBAAA;MAAEC;IAAQ,GAAGlC;MAKjF;IAEA,CAAA,EAAA,KAAA,eAAA,KAAA,WAAA,CAAA,CAAA,CAAA;;;;;;;;0BAQsBnB,OAAKsD;UACvBC,YAAUC,MAAS,MAAA;UACnBC,UAAS,IAAIC,KAAOC,QAAAA,SAAW;MAC/BC,IAAAA,MAAQ;gBAAEC,oBAAM3B,KAAM2B,GAAI,YAAA;MAAC,QAAA;QAC3BC,MAAQ,MAAA;;cAAa;QACvB,MAAA;MAEIC;;mBAEA;AACF,UAAA,KAAA,cAAA,IAAA,MAAA,SAAA,GAAA;AACI;;WAEF,UAAW,OAAG,KAAA,YAAA,CAAA,cAAA;cACZ,MAAMC,UAAU,UAAA,CAAA,aAAA,SAAA,OAAA,MAAA,SAAA;mBAAIC,GAAAA;gBAAU,UAAA;YAC9BD,GAAO;UACP;AACF,kBAAA,GAAA,IAAA;AACA,iBAAO;;eAAenE;UAAQ,GAAA;UAChC;QACK;MACL,CAAA;WACA;AACA,WAAK,cAAUqE,IAAO,MAAK,SAAWC;WACpC,UAAIA,OAAcC,KAAAA,YAAaA,CAAAA,cAAgBvE,UAAa,OAAA,CAAA,aAAA,SAAA,OAAA,QAAA,EAAA,CAAA;qBACnDsE,OAAAA,KAAAA,UAAAA,CAAAA,YAAAA;AACT,YAAA,QAAA,KAAA,CAAA,aAAA,SAAA,OAAA,QAAA,EAAA,GAAA;AACA,iBAAO;;eAAatE;UAAQ,GAAA;UAC9B;QACF;MACF,CAAA;IAEA;;;;;;kBAMgB,OAAO;QACnB,KAAIwE,oBAAaD,OAAaA,EAAAA,YAAY,YAAc,GAAA,cAAaE,GAAAA,KAAQ,GAAA,KAAKpC,CAAAA;mBACzEmC,OAAAA,KAAAA,WAAAA,CAAAA,WAAAA;AACT,UAAA,OAAA,KAAA,CAAA,aAAA,SAAA,QAAA,MAAA,OAAA,SAAA,aAAA,MAAA,QAAA,GAAA;AACA,eAAO;;aAAYnC;QAAM,GAAA;QAC3B;MACF;IAEA,CAAA;;;;;sBAKoB;AACpB,SAAA,UAAA,IAAA,KAAA,YAAA,CAAA,CAAA;AAEA,SAAA,cAAA,MAAA;;;;;oBAKgBK;UACZ,YAAc,KAAC2B,UAAY,IAAA,KAAWC,UAAY;2BAAIA,GAAAA;qBAAYI,OAAAA,KAAAA,UAAAA,CAAAA,YAAAA;QAAU,GAAA;QACvE,GAAA;MACP,CAAA;AACI,WAAC,UAAcC,IAAAA,KAAK,YAAA,CAAA,CAAA;IAC1B;AAEA,SAAA,cAAA,MAAA;;;;;;kBAMa,QAAA;UACT,OAAOjD,KAAOkD,SAAI,MAAA;AACpB,QAAA,CAAA,MAAA;AAEA,aAAgBC;IAChB;UACE,UAAOnD,IAAOkD,YAAI,IAAA,GAAA;AACpB,QAAA,CAAA,SAAA;AAEIzB,aAAK;IACT;QAA+D2B,KAAAA,+BAAAA,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,cAAAA,GAAAA,KAAAA,GAAAA,KAAAA,CAAAA;WAAMC,UAAAA,SAAAA,mBAAAA,gBAAAA;MAAU;MAAEvB;IAAQ,GAAA;MAC3F;IACF,CAAA;;;",
6
+ "names": ["Model", "Provider", "DXN", "presetsForProvider", "provider", "forProvider", "map", "model", "id", "backend", "label", "resolveProvider", "hasBuiltIn", "resolved", "tryMake", "undefined", "edge", "ollama", "builtIn", "defaultsKeyForProvider", "lmStudio", "Atom", "Registry", "AtomRegistry", "AiError", "Cause", "Effect", "Exit", "Fiber", "Option", "Stream", "Model", "Harness", "McpServerError", "PartialBlock", "ToolExecutionServices", "createSystemPrompt", "formatSystemPrompt", "AgentService", "Operation", "Trace", "Obj", "UsageQuotaExceededError", "EffectEx", "log", "Message", "AssistantOperation", "findInCause", "error", "predicate", "current", "visited", "Set", "has", "add", "Error", "cause", "undefined", "defaultOptions", "Model", "labelKey", "AiError", "err", "QUOTA_PATTERN", "test", "quotaError", "isQuotaError", "AiUsageQuotaError", "trim", "message", "Error", "Atom", "make", "messages", "error", "_runtime", "_feed", "_spaceLayer", "_options", "capabilities", "getCapabilities", "system", "createSystemPrompt", "context", "conversation", "registry", "getTools", "getSystemPrompt", "objects", "getObjects", "skills", "pipe", "feed", "runtime", "binder", "Effect", "provide", "set", "active", "gen", "log", "model", "provider", "session", "AgentService", "ephemeralStream", "event", "isOfType", "PartialBlock", "McpServerError", "data", "length", "requestProp", "submitPrompt", "waitForCompletion", "Cause", "isInterruptedOnly", "exit", "Option", "undefined", "info", "Fiber", "interrupt", "getSession", "EffectEx", "spaceId", "Message", "id", "messageId", "created", "Date", "toISOString", "sender", "role", "blocks", "isPending", "updated", "streaming", "update", "pending", "existing", "errors", "protocol", "remaining", "clear", "void", "Obj", "chat", "prompt"]
7
+ }
@@ -1,15 +1,15 @@
1
- // src/blueprints/assistant/blueprint.ts
1
+ // src/skills/assistant/skill.ts
2
2
  import { LayoutOperation } from "@dxos/app-toolkit";
3
3
  import { templates } from "@dxos/assistant";
4
- import { Blueprint } from "@dxos/compute";
4
+ import { Skill } from "@dxos/compute";
5
5
  import { AssistantOperation } from "#types";
6
- var BLUEPRINT_KEY = "org.dxos.blueprint.assistant";
7
- var make = () => Blueprint.make({
8
- key: BLUEPRINT_KEY,
6
+ var SKILL_KEY = "org.dxos.skill.assistant";
7
+ var make = () => Skill.make({
8
+ key: SKILL_KEY,
9
9
  name: "Assistant",
10
- tools: Blueprint.toolDefinitions({
10
+ tools: Skill.toolDefinitions({
11
11
  // TODO(wittjosiah): LayoutOperation.Open requires Capability.Service which is only available
12
- // via the compute-runtime layer (plugin-automation). Once Capability.Service is propagated
12
+ // via the compute-runtime layer (plugin-routine). Once Capability.Service is propagated
13
13
  // through LocalFunctionExecutionService, this will work without the compute-runtime dependency.
14
14
  operations: [
15
15
  LayoutOperation.Open,
@@ -18,13 +18,13 @@ var make = () => Blueprint.make({
18
18
  }),
19
19
  instructions: templates.system
20
20
  });
21
- var blueprint = {
22
- key: BLUEPRINT_KEY,
21
+ var skill = {
22
+ key: SKILL_KEY,
23
23
  make
24
24
  };
25
- var blueprint_default = blueprint;
25
+ var skill_default = skill;
26
26
 
27
27
  export {
28
- blueprint_default
28
+ skill_default
29
29
  };
30
- //# sourceMappingURL=chunk-5H6UJHLF.mjs.map
30
+ //# sourceMappingURL=chunk-CMPLPDYE.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/skills/assistant/skill.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { templates } from '@dxos/assistant';\nimport { Skill } from '@dxos/compute';\n\nimport { AssistantOperation } from '#types';\n\nconst SKILL_KEY = 'org.dxos.skill.assistant';\n\nconst make = () =>\n Skill.make({\n key: SKILL_KEY,\n name: 'Assistant',\n tools: Skill.toolDefinitions({\n // TODO(wittjosiah): LayoutOperation.Open requires Capability.Service which is only available\n // via the compute-runtime layer (plugin-routine). Once Capability.Service is propagated\n // through LocalFunctionExecutionService, this will work without the compute-runtime dependency.\n operations: [LayoutOperation.Open, AssistantOperation.ResolveNavigationTargets],\n }),\n instructions: templates.system,\n });\n\nconst skill: Skill.Definition = {\n key: SKILL_KEY,\n make,\n};\n\nexport default skill;\n"],
5
+ "mappings": ";AAIA,SAASA,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,aAAa;AAEtB,SAASC,0BAA0B;AAEnC,IAAMC,YAAY;AAElB,IAAMC,OAAO,MACXH,MAAMG,KAAK;EACTC,KAAKF;EACLG,MAAM;EACNC,OAAON,MAAMO,gBAAgB;;;;IAI3BC,YAAY;MAACV,gBAAgBW;MAAMR,mBAAmBS;;EACxD,CAAA;EACAC,cAAcZ,UAAUa;AAC1B,CAAA;AAEF,IAAMC,QAA0B;EAC9BT,KAAKF;EACLC;AACF;AAEA,IAAA,gBAAeU;",
6
+ "names": ["LayoutOperation", "templates", "Skill", "AssistantOperation", "SKILL_KEY", "make", "key", "name", "tools", "toolDefinitions", "operations", "Open", "ResolveNavigationTargets", "instructions", "system", "skill"]
7
+ }
@@ -0,0 +1,8 @@
1
+ // src/operations/index.ts
2
+ import { OperationHandlerSet } from "@dxos/compute";
3
+ var AssistantOperationHandlerSet = OperationHandlerSet.lazy(() => import("./create-chat-YGVZZYGP.mjs"), () => import("./ensure-companion-chat-AMOF3C66.mjs"), () => import("./fork-chat-RMAAYYQF.mjs"), () => import("./generate-home-suggestions-6MM2XWPV.mjs"), () => import("./resolve-navigation-targets-PBQ3OLUE.mjs"), () => import("./run-prompt-in-new-chat-RNUJE2FM.mjs"), () => import("./set-current-chat-VWBPSIMZ.mjs"), () => import("./toggle-trace-panel-debug-JGTB6KVJ.mjs"), () => import("./update-chat-name-IJJELRR6.mjs"));
4
+
5
+ export {
6
+ AssistantOperationHandlerSet
7
+ };
8
+ //# sourceMappingURL=chunk-GPHT3HYS.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/operations/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const AssistantOperationHandlerSet = OperationHandlerSet.lazy(\n () => import('./create-chat'),\n () => import('./ensure-companion-chat'),\n () => import('./fork-chat'),\n () => import('./resolve-navigation-targets'),\n () => import('./run-prompt-in-new-chat'),\n () => import('./set-current-chat'),\n () => import('./toggle-trace-panel-debug'),\n () => import('./update-chat-name'),\n);\n"],
5
- "mappings": ";AAIA,SAASA,2BAA2B;AAE7B,IAAMC,+BAA+BD,oBAAoBE,KAC9D,MAAM,OAAO,4BAAA,GACb,MAAM,OAAO,sCAAA,GACb,MAAM,OAAO,0BAAA,GACb,MAAM,OAAO,2CAAA,GACb,MAAM,OAAO,uCAAA,GACb,MAAM,OAAO,iCAAA,GACb,MAAM,OAAO,yCAAA,GACb,MAAM,OAAO,iCAAA,CAAA;",
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const AssistantOperationHandlerSet = OperationHandlerSet.lazy(\n () => import('./create-chat'),\n () => import('./ensure-companion-chat'),\n () => import('./fork-chat'),\n () => import('./generate-home-suggestions'),\n () => import('./resolve-navigation-targets'),\n () => import('./run-prompt-in-new-chat'),\n () => import('./set-current-chat'),\n () => import('./toggle-trace-panel-debug'),\n () => import('./update-chat-name'),\n);\n"],
5
+ "mappings": ";AAIA,SAASA,2BAA2B;AAE7B,IAAMC,+BAA+BD,oBAAoBE,KAC9D,MAAM,OAAO,4BAAA,GACb,MAAM,OAAO,sCAAA,GACb,MAAM,OAAO,0BAAA,GACb,MAAM,OAAO,0CAAA,GACb,MAAM,OAAO,2CAAA,GACb,MAAM,OAAO,uCAAA,GACb,MAAM,OAAO,iCAAA,GACb,MAAM,OAAO,yCAAA,GACb,MAAM,OAAO,iCAAA,CAAA;",
6
6
  "names": ["OperationHandlerSet", "AssistantOperationHandlerSet", "lazy"]
7
7
  }
@@ -1,12 +1,3 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/capabilities/markdown-extension.ts
4
- import * as Effect from "effect/Effect";
5
- import { Capabilities, Capability } from "@dxos/app-framework";
6
- import { Obj } from "@dxos/echo";
7
- import { MarkdownCapabilities } from "@dxos/plugin-markdown/types";
8
- import { AssistantOperation } from "#types";
9
-
10
1
  // src/extensions/prompt-extension.ts
11
2
  import { syntaxTree } from "@codemirror/language";
12
3
  import { Facet } from "@codemirror/state";
@@ -93,34 +84,7 @@ var PromptRunWidget = class extends WidgetType {
93
84
  }
94
85
  };
95
86
 
96
- // src/capabilities/markdown-extension.ts
97
- var markdown_extension_default = Capability.makeModule(Effect.fnUntraced(function* () {
98
- const capabilities = yield* Capability.Service;
99
- return Capability.contributes(MarkdownCapabilities.ExtensionProvider, [
100
- ({ document: doc, viewMode }) => {
101
- if (viewMode === "source") {
102
- return void 0;
103
- }
104
- if (!doc) {
105
- return void 0;
106
- }
107
- const db = Obj.getDatabase(doc);
108
- if (!db) {
109
- return void 0;
110
- }
111
- const { invokePromise } = capabilities.get(Capabilities.OperationInvoker);
112
- return promptRunExtension({
113
- onRun: (promptText) => {
114
- void invokePromise(AssistantOperation.RunPromptInNewChat, {
115
- db,
116
- prompt: promptText
117
- });
118
- }
119
- });
120
- }
121
- ]);
122
- }));
123
87
  export {
124
- markdown_extension_default as default
88
+ promptRunExtension
125
89
  };
126
- //# sourceMappingURL=markdown-extension-IJ5RQMQ4.mjs.map
90
+ //# sourceMappingURL=chunk-HKLSFB5I.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extensions/prompt-extension.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type Extension, Facet, type Range } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nexport type PromptExtensionOptions = {\n /** Called when the user clicks the run button on a prompt code block. */\n onRun: (promptText: string) => void;\n};\n\ntype OnRun = (text: string) => void;\n\n// Module-level facet so the plugin singleton can read the latest handler.\nconst promptHandlerFacet = Facet.define<OnRun, OnRun | null>({\n combine: (handlers) => handlers[0] ?? null,\n});\n\n// Module-level singleton — CM6 deduplicates by reference equality, preventing duplicate buttons\n// when the extension is contributed more than once.\nconst promptPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (\n update.docChanged ||\n update.viewportChanged ||\n update.selectionSet ||\n update.focusChanged ||\n update.startState.facet(promptHandlerFacet) !== update.state.facet(promptHandlerFacet)\n ) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView): DecorationSet {\n const onRun = view.state.facet(promptHandlerFacet);\n if (!onRun) {\n return Decoration.none;\n }\n\n const ranges: Range<Decoration>[] = [];\n\n syntaxTree(view.state).iterate({\n enter: (node) => {\n if (node.name === 'FencedCode') {\n const info = node.node.getChild('CodeInfo');\n if (info) {\n const type = view.state.sliceDoc(info.from, info.to);\n const text = node.node.getChild('CodeText');\n if (type === 'prompt' && text) {\n const content = view.state.sliceDoc(text.from, text.to).trim();\n if (content.length > 0) {\n // Mark the header line as a positioned container for the button overlay.\n ranges.push(Decoration.line({ class: 'cm-prompt-header' }).range(node.from, node.from));\n ranges.push(\n Decoration.widget({ widget: new PromptRunWidget(content, onRun), side: -1 }).range(\n node.from,\n node.from,\n ),\n );\n }\n }\n }\n }\n },\n });\n\n // sort=true lets CM6 order by startSide (line decorations before widgets at the same position).\n return Decoration.set(ranges, true);\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n\n// Base theme wires up the positioned container on the header line.\nconst promptTheme = EditorView.baseTheme({\n '.cm-prompt-header': {\n position: 'relative',\n overflow: 'visible',\n },\n});\n\n/**\n * CodeMirror extension that adds a \"run\" button to ```prompt fenced code blocks.\n */\nexport const promptRunExtension = ({ onRun }: PromptExtensionOptions): Extension => [\n promptHandlerFacet.of(onRun),\n promptPlugin,\n promptTheme,\n];\n\nclass PromptRunWidget extends WidgetType {\n constructor(\n private readonly prompt: string,\n private readonly onClick: OnRun,\n ) {\n super();\n }\n\n override eq(other: this) {\n return this.prompt === other.prompt && this.onClick === other.onClick;\n }\n\n override ignoreEvent() {\n return false;\n }\n\n override toDOM() {\n return Domino.of('button')\n .classNames(\n 'dx-button h-6 w-6 min-h-0 p-1 absolute top-0 right-0 bg-green-bg hover:bg-green-surface text-green-fg',\n )\n .on('mousedown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n this.onClick(this.prompt);\n })\n .append(\n Domino.of('svg', Domino.SVG)\n .classNames('w-4 h-4 cursor-pointer')\n .append(\n Domino.of('use', Domino.SVG).attributes({\n href: Domino.icon('ph--sparkle--regular'),\n }),\n ),\n ).root;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["syntaxTree", "Facet", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "Domino", "promptHandlerFacet", "define", "combine", "handlers", "promptPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "selectionSet", "focusChanged", "startState", "facet", "state", "onRun", "none", "ranges", "iterate", "enter", "node", "name", "info", "getChild", "type", "sliceDoc", "from", "to", "text", "content", "trim", "length", "push", "line", "class", "range", "widget", "PromptRunWidget", "side", "set", "v", "promptTheme", "baseTheme", "position", "overflow", "promptRunExtension", "of", "prompt", "onClick", "eq", "other", "ignoreEvent", "toDOM", "classNames", "on", "event", "preventDefault", "stopPropagation", "append", "SVG", "attributes", "href", "icon", "root"]
7
+ }
@@ -21,9 +21,9 @@ var dx_config_default = Config2.make({
21
21
  any time in Settings. Each provider can be configured with a preferred model, and the runtime
22
22
  automatically falls back when a provider is unavailable.
23
23
 
24
- Blueprints give every chat a specialised identity. Built-in blueprints cover general assistance,
24
+ Skills give every chat a specialised identity. Built-in skills cover general assistance,
25
25
  web browsing, database interaction, web search, Discord and Linear integration, autonomous agents,
26
- planning, memory, automation, and a wizard for authoring new blueprints. Binding a blueprint
26
+ planning, memory, automation, and a wizard for authoring new skills. Binding a skill
27
27
  changes the system instructions and the tool set exposed to the model in a single step.
28
28
 
29
29
  Tool execution runs through the DXOS compute runtime so every AI action — opening a document,
@@ -50,4 +50,4 @@ export {
50
50
  ASSISTANT_DIALOG,
51
51
  ASSISTANT_COMPANION_VARIANT
52
52
  };
53
- //# sourceMappingURL=chunk-ZNDQVYUN.mjs.map
53
+ //# sourceMappingURL=chunk-L7AR4VTA.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/meta.ts", "../../../dx.config.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { DXN } from '@dxos/keys';\n\nimport config from '../dx.config';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n\nexport const ASSISTANT_DIALOG = DXN.make(`${meta.profile.key}.assistantDialog`);\n\n/** Companion variant identifier for the assistant chat panel. */\nexport const ASSISTANT_COMPANION_VARIANT = 'assistant-chat';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.assistant',\n name: 'Assistant',\n author: 'DXOS',\n description: trim`\n AssistantPlugin brings a conversational AI assistant into DXOS Composer, letting users chat naturally\n with objects in their spaces. Every Chat is a first-class ECHO object — messages are persisted,\n replicated across peers in real time, and can be bound to any document or collection as a companion\n panel that appears alongside the primary view.\n\n AI capabilities are delivered through a flexible multi-provider model layer. Users can route requests\n to the DXOS Edge service, a locally running Ollama instance, or LM Studio, and switch providers at\n any time in Settings. Each provider can be configured with a preferred model, and the runtime\n automatically falls back when a provider is unavailable.\n\n Blueprints give every chat a specialised identity. Built-in blueprints cover general assistance,\n web browsing, database interaction, web search, Discord and Linear integration, autonomous agents,\n planning, memory, automation, and a wizard for authoring new blueprints. Binding a blueprint\n changes the system instructions and the tool set exposed to the model in a single step.\n\n Tool execution runs through the DXOS compute runtime so every AI action — opening a document,\n searching the web, querying a database — produces a structured execution trace. The optional\n TracePanel visualises that trace as a commit graph or raw JSON, giving developers full observability\n into what the model did and why.\n `,\n icon: { key: 'ph--sparkle--regular', hue: 'sky' },\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',\n spec: 'PLUGIN.mdl',\n },\n});\n"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { DXN } from '@dxos/keys';\n\nimport config from '../dx.config';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n\nexport const ASSISTANT_DIALOG = DXN.make(`${meta.profile.key}.assistantDialog`);\n\n/** Companion variant identifier for the assistant chat panel. */\nexport const ASSISTANT_COMPANION_VARIANT = 'assistant-chat';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.assistant',\n name: 'Assistant',\n author: 'DXOS',\n description: trim`\n AssistantPlugin brings a conversational AI assistant into DXOS Composer, letting users chat naturally\n with objects in their spaces. Every Chat is a first-class ECHO object — messages are persisted,\n replicated across peers in real time, and can be bound to any document or collection as a companion\n panel that appears alongside the primary view.\n\n AI capabilities are delivered through a flexible multi-provider model layer. Users can route requests\n to the DXOS Edge service, a locally running Ollama instance, or LM Studio, and switch providers at\n any time in Settings. Each provider can be configured with a preferred model, and the runtime\n automatically falls back when a provider is unavailable.\n\n Skills give every chat a specialised identity. Built-in skills cover general assistance,\n web browsing, database interaction, web search, Discord and Linear integration, autonomous agents,\n planning, memory, automation, and a wizard for authoring new skills. Binding a skill\n changes the system instructions and the tool set exposed to the model in a single step.\n\n Tool execution runs through the DXOS compute runtime so every AI action — opening a document,\n searching the web, querying a database — produces a structured execution trace. The optional\n TracePanel visualises that trace as a commit graph or raw JSON, giving developers full observability\n into what the model did and why.\n `,\n icon: { key: 'ph--sparkle--regular', hue: 'sky' },\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',\n spec: 'PLUGIN.mdl',\n },\n});\n"],
5
5
  "mappings": ";AAIA,SAASA,cAAc;AACvB,SAASC,WAAW;;;ACDpB,SAASC,eAAe;AACxB,SAASC,YAAY;AAErB,IAAA,oBAAeD,QAAQE,KAAK;EAC1BC,QAAQ;IACNC,KAAK;IACLC,MAAM;IACNC,QAAQ;IACRC,aAAaN;;;;;;;;;;;;;;;;;;;;;IAqBbO,MAAM;MAAEJ,KAAK;MAAwBK,KAAK;IAAM;IAChDC,QAAQ;IACRC,MAAM;EACR;AACF,CAAA;;;AD5BO,IAAMC,OAAOC,OAAOC,kBAAkBC,iBAAAA;AAEtC,IAAMC,mBAAmBC,IAAIC,KAAK,GAAGN,KAAKO,QAAQC,GAAG,kBAAkB;AAGvE,IAAMC,8BAA8B;",
6
6
  "names": ["Plugin", "DXN", "Config2", "trim", "make", "plugin", "key", "name", "author", "description", "icon", "hue", "source", "spec", "meta", "Plugin", "getMetaFromConfig", "config", "ASSISTANT_DIALOG", "DXN", "make", "profile", "key", "ASSISTANT_COMPANION_VARIANT"]
7
7
  }
@@ -0,0 +1,42 @@
1
+ // src/capabilities/skill-definition.ts
2
+ import * as Effect from "effect/Effect";
3
+ import { Capabilities, Capability } from "@dxos/app-framework";
4
+ import { AppCapabilities } from "@dxos/app-toolkit";
5
+ import { AgentHandlers, AgentSkill, AgentSkillHandlers, AgentWizardHandlers, AgentWizardSkill, AlarmHandlers, AlarmSkill, AutomationSkill, BrowserSkill, ConnectorsSkill, DatabaseHandlers, DatabaseSkill, DelegationHandlers, DelegationSkill, DiscordSkill, LinearSkill, MemorySkill, PlanningHandlers, PlanningSkill, SkillManagerHandlers, SkillManagerSkill, WebSearchHandlers, WebSearchSkill, makeDelegationStrategy } from "@dxos/assistant-toolkit";
6
+ import { RoutineCapabilities } from "@dxos/plugin-routine";
7
+ import { AssistantSkill } from "#skills";
8
+ var skillDefinition = () => Effect.succeed([
9
+ Capability.contributes(AppCapabilities.SkillDefinition, AssistantSkill),
10
+ Capability.contributes(AppCapabilities.SkillDefinition, BrowserSkill),
11
+ Capability.contributes(AppCapabilities.SkillDefinition, ConnectorsSkill),
12
+ Capability.contributes(AppCapabilities.SkillDefinition, DatabaseSkill),
13
+ Capability.contributes(AppCapabilities.SkillDefinition, WebSearchSkill),
14
+ Capability.contributes(AppCapabilities.SkillDefinition, DiscordSkill),
15
+ Capability.contributes(AppCapabilities.SkillDefinition, LinearSkill),
16
+ Capability.contributes(AppCapabilities.SkillDefinition, AgentSkill),
17
+ Capability.contributes(AppCapabilities.SkillDefinition, PlanningSkill),
18
+ Capability.contributes(AppCapabilities.SkillDefinition, MemorySkill),
19
+ Capability.contributes(AppCapabilities.SkillDefinition, AutomationSkill),
20
+ Capability.contributes(AppCapabilities.SkillDefinition, SkillManagerSkill),
21
+ Capability.contributes(AppCapabilities.SkillDefinition, AgentWizardSkill),
22
+ Capability.contributes(AppCapabilities.SkillDefinition, DelegationSkill),
23
+ Capability.contributes(AppCapabilities.SkillDefinition, AlarmSkill),
24
+ Capability.contributes(Capabilities.OperationHandler, AgentHandlers),
25
+ Capability.contributes(Capabilities.OperationHandler, AgentSkillHandlers),
26
+ Capability.contributes(Capabilities.OperationHandler, SkillManagerHandlers),
27
+ Capability.contributes(Capabilities.OperationHandler, DatabaseHandlers),
28
+ Capability.contributes(Capabilities.OperationHandler, WebSearchHandlers),
29
+ Capability.contributes(Capabilities.OperationHandler, AgentWizardHandlers),
30
+ Capability.contributes(Capabilities.OperationHandler, DelegationHandlers),
31
+ Capability.contributes(Capabilities.OperationHandler, PlanningHandlers),
32
+ Capability.contributes(Capabilities.OperationHandler, AlarmHandlers),
33
+ // Run the conversational agent as a supervisor: delegate in-progress plan tasks to sub-agents
34
+ // and fold their results back into the conversation (consumed by the AgentService LayerSpec).
35
+ Capability.contributes(RoutineCapabilities.AgentDelegationStrategy, makeDelegationStrategy())
36
+ ]);
37
+ var skill_definition_default = skillDefinition;
38
+
39
+ export {
40
+ skill_definition_default
41
+ };
42
+ //# sourceMappingURL=chunk-LS72HWMM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/skill-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 AgentHandlers,\n AgentSkill,\n AgentSkillHandlers,\n AgentWizardHandlers,\n AgentWizardSkill,\n AlarmHandlers,\n AlarmSkill,\n AutomationSkill,\n BrowserSkill,\n ConnectorsSkill,\n DatabaseHandlers,\n DatabaseSkill,\n DelegationHandlers,\n DelegationSkill,\n DiscordSkill,\n LinearSkill,\n MemorySkill,\n PlanningHandlers,\n PlanningSkill,\n SkillManagerHandlers,\n SkillManagerSkill,\n WebSearchHandlers,\n WebSearchSkill,\n makeDelegationStrategy,\n} from '@dxos/assistant-toolkit';\nimport { RoutineCapabilities } from '@dxos/plugin-routine';\n\nimport { AssistantSkill } from '#skills';\n\nconst skillDefinition = () =>\n Effect.succeed([\n Capability.contributes(AppCapabilities.SkillDefinition, AssistantSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, BrowserSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, ConnectorsSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, DatabaseSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, WebSearchSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, DiscordSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, LinearSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, AgentSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, PlanningSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, MemorySkill),\n Capability.contributes(AppCapabilities.SkillDefinition, AutomationSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, SkillManagerSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, AgentWizardSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, DelegationSkill),\n Capability.contributes(AppCapabilities.SkillDefinition, AlarmSkill),\n\n Capability.contributes(Capabilities.OperationHandler, AgentHandlers),\n Capability.contributes(Capabilities.OperationHandler, AgentSkillHandlers),\n Capability.contributes(Capabilities.OperationHandler, SkillManagerHandlers),\n Capability.contributes(Capabilities.OperationHandler, DatabaseHandlers),\n Capability.contributes(Capabilities.OperationHandler, WebSearchHandlers),\n Capability.contributes(Capabilities.OperationHandler, AgentWizardHandlers),\n Capability.contributes(Capabilities.OperationHandler, DelegationHandlers),\n Capability.contributes(Capabilities.OperationHandler, PlanningHandlers),\n Capability.contributes(Capabilities.OperationHandler, AlarmHandlers),\n\n // Run the conversational agent as a supervisor: delegate in-progress plan tasks to sub-agents\n // and fold their results back into the conversation (consumed by the AgentService LayerSpec).\n Capability.contributes(RoutineCapabilities.AgentDelegationStrategy, makeDelegationStrategy()),\n ]);\n\nexport default skillDefinition;\n"],
5
+ "mappings": ";AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SACEC,eACAC,YACAC,oBACAC,qBACAC,kBACAC,eACAC,YACAC,iBACAC,cACAC,iBACAC,kBACAC,eACAC,oBACAC,iBACAC,cACAC,aACAC,aACAC,kBACAC,eACAC,sBACAC,mBACAC,mBACAC,gBACAC,8BACK;AACP,SAASC,2BAA2B;AAEpC,SAASC,sBAAsB;AAE/B,IAAMC,kBAAkB,MACfC,eAAQ;EACb7B,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBJ,cAAAA;EACxD3B,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBrB,YAAAA;EACxDV,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBpB,eAAAA;EACxDX,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBlB,aAAAA;EACxDb,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBP,cAAAA;EACxDxB,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBf,YAAAA;EACxDhB,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBd,WAAAA;EACxDjB,WAAW8B,YAAY7B,gBAAgB8B,iBAAiB5B,UAAAA;EACxDH,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBX,aAAAA;EACxDpB,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBb,WAAAA;EACxDlB,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBtB,eAAAA;EACxDT,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBT,iBAAAA;EACxDtB,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBzB,gBAAAA;EACxDN,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBhB,eAAAA;EACxDf,WAAW8B,YAAY7B,gBAAgB8B,iBAAiBvB,UAAAA;EAExDR,WAAW8B,YAAY/B,aAAaiC,kBAAkB9B,aAAAA;EACtDF,WAAW8B,YAAY/B,aAAaiC,kBAAkB5B,kBAAAA;EACtDJ,WAAW8B,YAAY/B,aAAaiC,kBAAkBX,oBAAAA;EACtDrB,WAAW8B,YAAY/B,aAAaiC,kBAAkBpB,gBAAAA;EACtDZ,WAAW8B,YAAY/B,aAAaiC,kBAAkBT,iBAAAA;EACtDvB,WAAW8B,YAAY/B,aAAaiC,kBAAkB3B,mBAAAA;EACtDL,WAAW8B,YAAY/B,aAAaiC,kBAAkBlB,kBAAAA;EACtDd,WAAW8B,YAAY/B,aAAaiC,kBAAkBb,gBAAAA;EACtDnB,WAAW8B,YAAY/B,aAAaiC,kBAAkBzB,aAAAA;;;EAItDP,WAAW8B,YAAYJ,oBAAoBO,yBAAyBR,uBAAAA,CAAAA;CACrE;AAEH,IAAA,2BAAeG;",
6
+ "names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "AgentHandlers", "AgentSkill", "AgentSkillHandlers", "AgentWizardHandlers", "AgentWizardSkill", "AlarmHandlers", "AlarmSkill", "AutomationSkill", "BrowserSkill", "ConnectorsSkill", "DatabaseHandlers", "DatabaseSkill", "DelegationHandlers", "DelegationSkill", "DiscordSkill", "LinearSkill", "MemorySkill", "PlanningHandlers", "PlanningSkill", "SkillManagerHandlers", "SkillManagerSkill", "WebSearchHandlers", "WebSearchSkill", "makeDelegationStrategy", "RoutineCapabilities", "AssistantSkill", "skillDefinition", "succeed", "contributes", "SkillDefinition", "OperationHandler", "AgentDelegationStrategy"]
7
+ }
@@ -1,10 +1,12 @@
1
1
  // src/paths.ts
2
2
  import { Paths } from "@dxos/app-toolkit";
3
3
  import { Chat } from "@dxos/assistant-toolkit";
4
- var { getSectionPath: getChatsPath, getObjectPath: getChatPath } = Paths.createTypeSectionPaths(Chat.Chat);
4
+ var { getSectionPath: getChatsPath, getObjectPath: getChatPath } = Paths.createTypeSectionPaths(Chat.Chat, {
5
+ groupId: Paths.GroupSegments.ai
6
+ });
5
7
 
6
8
  export {
7
9
  getChatsPath,
8
10
  getChatPath
9
11
  };
10
- //# sourceMappingURL=chunk-35EL65O4.mjs.map
12
+ //# sourceMappingURL=chunk-OZWZGIV2.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/paths.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Paths } from '@dxos/app-toolkit';\nimport { Chat } from '@dxos/assistant-toolkit';\n\nconst { getSectionPath: getChatsPath, getObjectPath: getChatPath } = Paths.createTypeSectionPaths(Chat.Chat);\n\nexport { getChatsPath, getChatPath };\n"],
5
- "mappings": ";AAIA,SAASA,aAAa;AACtB,SAASC,YAAY;AAErB,IAAM,EAAEC,gBAAgBC,cAAcC,eAAeC,YAAW,IAAKL,MAAMM,uBAAuBL,KAAKA,IAAI;",
6
- "names": ["Paths", "Chat", "getSectionPath", "getChatsPath", "getObjectPath", "getChatPath", "createTypeSectionPaths"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Paths } from '@dxos/app-toolkit';\nimport { Chat } from '@dxos/assistant-toolkit';\n\nconst { getSectionPath: getChatsPath, getObjectPath: getChatPath } = Paths.createTypeSectionPaths(Chat.Chat, {\n groupId: Paths.GroupSegments.ai,\n});\n\nexport { getChatPath, getChatsPath };\n"],
5
+ "mappings": ";AAIA,SAASA,aAAa;AACtB,SAASC,YAAY;AAErB,IAAM,EAAEC,gBAAgBC,cAAcC,eAAeC,YAAW,IAAKL,MAAMM,uBAAuBL,KAAKA,MAAM;EAC3GM,SAASP,MAAMQ,cAAcC;AAC/B,CAAA;",
6
+ "names": ["Paths", "Chat", "getSectionPath", "getChatsPath", "getObjectPath", "getChatPath", "createTypeSectionPaths", "groupId", "GroupSegments", "ai"]
7
7
  }
@@ -1,5 +1,3 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
1
  // src/capabilities/toolkit.ts
4
2
  import * as Effect from "effect/Effect";
5
3
  import { Capability } from "@dxos/app-framework";
@@ -8,7 +6,8 @@ import { WebSearchToolkitOpaque } from "@dxos/assistant-toolkit";
8
6
  var toolkit_default = Capability.makeModule(() => Effect.succeed([
9
7
  Capability.contributes(AppCapabilities.Toolkit, WebSearchToolkitOpaque)
10
8
  ]));
9
+
11
10
  export {
12
- toolkit_default as default
11
+ toolkit_default
13
12
  };
14
- //# sourceMappingURL=toolkit-GVWXPDLJ.mjs.map
13
+ //# sourceMappingURL=chunk-QOKLFHUS.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/toolkit.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { WebSearchToolkitOpaque } from '@dxos/assistant-toolkit';\n\nexport default Capability.makeModule(() =>\n Effect.succeed([Capability.contributes(AppCapabilities.Toolkit, WebSearchToolkitOpaque)]),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,8BAA8B;AAEvC,IAAA,kBAAeF,WAAWG,WAAW,MAC5BC,eAAQ;EAACJ,WAAWK,YAAYJ,gBAAgBK,SAASJ,sBAAAA;CAAwB,CAAA;",
5
+ "mappings": ";AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,8BAA8B;AAEvC,IAAA,kBAAeF,WAAWG,WAAW,MAC5BC,eAAQ;EAACJ,WAAWK,YAAYJ,gBAAgBK,SAASJ,sBAAAA;CAAwB,CAAA;",
6
6
  "names": ["Effect", "Capability", "AppCapabilities", "WebSearchToolkitOpaque", "makeModule", "succeed", "contributes", "Toolkit"]
7
7
  }
@@ -6,7 +6,7 @@ import * as Duration from "effect/Duration";
6
6
  import { pipe } from "effect/Function";
7
7
  import React, { useCallback, useDeferredValue, useEffect, useMemo, useState } from "react";
8
8
  import { Capabilities } from "@dxos/app-framework";
9
- import { useCapability, useAtomCapability, useOperationInvoker } from "@dxos/app-framework/ui";
9
+ import { useAtomCapability, useCapability, useOperationInvoker } from "@dxos/app-framework/ui";
10
10
  import { LayoutOperation } from "@dxos/app-toolkit";
11
11
  import { Process } from "@dxos/compute";
12
12
  import { EID } from "@dxos/keys";
@@ -18,7 +18,7 @@ import { Syntax } from "@dxos/react-ui-syntax-highlighter";
18
18
  import { mx } from "@dxos/ui-theme";
19
19
  import { ProcessTree } from "#components";
20
20
  import { buildExecutionGraph } from "#execution-graph";
21
- import { useTraceMessages, getTraceMessagesAtom } from "#hooks";
21
+ import { getTraceMessagesAtom, useTraceMessages } from "#hooks";
22
22
  import { AssistantCapabilities } from "#types";
23
23
  var TracePanel = composable(({ space, attendableId, onProcessTerminate, ...props }, forwardedRef) => {
24
24
  const attentionAttrs = useAttentionAttributes(attendableId);
@@ -107,19 +107,21 @@ var TracePanel = composable(({ space, attendableId, onProcessTerminate, ...props
107
107
  })))));
108
108
  });
109
109
  var atomEmpty = Atom.make(() => []);
110
- var useExecutionGraph = (space, { eventLimit } = {}) => {
110
+ var useExecutionGraph = (space, { collapseCompletedSpans, eventLimit } = {}) => {
111
111
  const monitor = useCapability(Capabilities.ProcessMonitor);
112
112
  const processesAtom = monitor?.processTreeAtom ?? atomEmpty;
113
113
  const atom = useMemo(() => getExecutionGraph(space, processesAtom, {
114
+ collapseCompletedSpans,
114
115
  eventLimit
115
116
  }), [
116
117
  space,
117
118
  processesAtom,
119
+ collapseCompletedSpans,
118
120
  eventLimit
119
121
  ]);
120
122
  return useAtomValue(atom);
121
123
  };
122
- var getExecutionGraph = (space, processesAtom, { eventLimit = 100 } = {}) => {
124
+ var getExecutionGraph = (space, processesAtom, { collapseCompletedSpans = true, eventLimit = 100 } = {}) => {
123
125
  const traceMessages = getTraceMessagesAtom(space);
124
126
  const activeProcesses = pipe(processesAtom, Atom.debounce(Duration.millis(500)), Atom.map((processes) => (
125
127
  // `Data.array` does structural comparison on the array elements.
@@ -128,6 +130,7 @@ var getExecutionGraph = (space, processesAtom, { eventLimit = 100 } = {}) => {
128
130
  return Atom.make((get) => buildExecutionGraph({
129
131
  traceMessages: get(traceMessages),
130
132
  activeProcesses: get(activeProcesses),
133
+ collapseCompletedSpans,
131
134
  eventLimit
132
135
  }));
133
136
  };
@@ -149,4 +152,4 @@ var ProcessTreeContainer = ({ onProcessSelect, onProcessTerminate }) => {
149
152
  export {
150
153
  TracePanel
151
154
  };
152
- //# sourceMappingURL=chunk-5LKNH7FD.mjs.map
155
+ //# sourceMappingURL=chunk-SCTHQVIJ.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/containers/TracePanel/TracePanel.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Data from 'effect/Data';\nimport * as Duration from 'effect/Duration';\nimport { pipe } from 'effect/Function';\nimport React, { useCallback, useDeferredValue, useEffect, useMemo, useState } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability, useAtomCapability, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Process } from '@dxos/compute';\nimport { EID } from '@dxos/keys';\nimport { type Space } from '@dxos/react-client/echo';\nimport { ScrollContainer } from '@dxos/react-ui';\nimport { composable, composableProps } 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 { mx } from '@dxos/ui-theme';\n\nimport { ProcessTree, ProcessTreeProps } from '#components';\nimport { buildExecutionGraph, type ExecutionGraph } from '#execution-graph';\nimport { useTraceMessages, getTraceMessagesAtom } from '#hooks';\nimport { AssistantCapabilities } from '#types';\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\n // `useDeferredValue` batches update bursts, works together with `React.memo`.\n // See the comment in `ProcessTreeContainer` for more details.\n const { branches, commits, spanTree, details } = useDeferredValue(useExecutionGraph(space));\n\n // Debug hatch (dev builds only): expose the raw trace messages (the exact `buildExecutionGraph`\n // input) so a real trace can be captured as a test fixture. While the TracePanel is mounted, run\n // `dxosDumpTrace()` in the console — it copies the serialized `Trace.Message[]` to the clipboard\n // (and logs it). Gated on `import.meta.env.DEV` so it's stripped from production builds.\n const traceMessages = useTraceMessages(space);\n useEffect(() => {\n if (!import.meta.env.DEV) {\n return;\n }\n // Attach a debug hatch to the global object (a genuine global-augmentation boundary).\n const debugGlobal = globalThis as typeof globalThis & { dxosDumpTrace?: () => string };\n debugGlobal.dxosDumpTrace = () => {\n const data = traceMessages.map((message) => ({\n meta: message.meta,\n isEphemeral: message.isEphemeral,\n events: message.events,\n }));\n const json = JSON.stringify(data, null, 2);\n // eslint-disable-next-line no-console\n console.log(json);\n void navigator.clipboard?.writeText(json);\n return `dxosDumpTrace: ${data.length} message(s) copied to clipboard`;\n };\n return () => {\n delete debugGlobal.dxosDumpTrace;\n };\n }, [traceMessages]);\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 echoUri = EID.tryParse(commit.link);\n const spaceId = echoUri ? EID.getSpaceId(echoUri) : undefined;\n const objectId = echoUri ? EID.getEntityId(echoUri) : undefined;\n if (spaceId && objectId) {\n // TODO(dmaretskyi): Navigates, but fails to open.\n void invokePromise(LayoutOperation.Open, {\n subject: [`${spaceId}:${objectId}`],\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,160px)_1fr_minmax(0,206px)]'\n : 'grid-rows-[minmax(0,160px)_1fr]',\n ),\n })}\n ref={forwardedRef}\n >\n <ProcessTreeContainer onProcessSelect={handleProcessSelect} onProcessTerminate={onProcessTerminate} />\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={details[selectedCommit.id] ?? 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 monitor = useCapability(Capabilities.ProcessMonitor);\n const processesAtom = monitor?.processTreeAtom ?? atomEmpty;\n\n const atom = useMemo(\n () => getExecutionGraph(space, processesAtom, { eventLimit }),\n [space, processesAtom, eventLimit],\n );\n\n return useAtomValue(atom);\n};\n\nconst getExecutionGraph = (\n space: Space,\n processesAtom: Atom.Atom<readonly Process.Info[]>,\n { eventLimit = 100 }: UseExecutionGraphOptions = {},\n): Atom.Atom<ExecutionGraph> => {\n const traceMessages = getTraceMessagesAtom(space);\n\n const activeProcesses = pipe(\n processesAtom,\n Atom.debounce(Duration.millis(500)),\n Atom.map((processes) =>\n // `Data.array` does structural comparison on the array elements.\n Data.array(\n processes\n .filter((process) => process.state === Process.State.RUNNING || process.state === Process.State.HYBERNATING)\n .map(Data.struct),\n ),\n ),\n );\n\n return Atom.make((get) =>\n buildExecutionGraph({\n traceMessages: get(traceMessages),\n activeProcesses: get(activeProcesses),\n eventLimit,\n }),\n );\n};\nTracePanel.displayName = 'TracePanel';\n\n// Isolate `ProcessTree` updates from the rest of the panel.\n// TODO(dmaretskyi): Currently not useful since `useExecutionGraph` also pulls in the updates.\nconst ProcessTreeContainer = ({\n onProcessSelect,\n onProcessTerminate,\n}: Pick<ProcessTreeProps, 'onProcessSelect' | 'onProcessTerminate'>) => {\n const monitor = useCapability(Capabilities.ProcessMonitor);\n const processes = useAtomValue(\n useMemo(() => monitor?.processTreeAtom.pipe(Atom.debounce(Duration.millis(500))) ?? atomEmpty, [monitor]),\n );\n\n // `processes` updates in bursts (about 14 updates per navigation).\n // `useDeferredValue` will debounce update propagation, returning stale value for short periods.\n // NOTE: `ProcessTree` MUST use `React.memo`, otherwise this will not work.\n const processesDeferred = useDeferredValue(processes);\n return (\n <ProcessTree\n processes={processesDeferred}\n depth={3}\n onProcessSelect={onProcessSelect}\n onProcessTerminate={onProcessTerminate}\n />\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["Atom", "useAtomValue", "Data", "Duration", "pipe", "React", "useCallback", "useDeferredValue", "useEffect", "useMemo", "useState", "Capabilities", "useCapability", "useAtomCapability", "useOperationInvoker", "LayoutOperation", "Process", "EID", "ScrollContainer", "composable", "composableProps", "useAttentionAttributes", "Timeline", "Syntax", "mx", "ProcessTree", "buildExecutionGraph", "useTraceMessages", "getTraceMessagesAtom", "AssistantCapabilities", "TracePanel", "space", "attendableId", "onProcessTerminate", "props", "forwardedRef", "attentionAttrs", "invokePromise", "settings", "Settings", "tracePanelDebug", "branches", "commits", "spanTree", "details", "useExecutionGraph", "traceMessages", "env", "DEV", "debugGlobal", "globalThis", "dxosDumpTrace", "data", "map", "message", "meta", "isEphemeral", "events", "json", "JSON", "stringify", "console", "log", "navigator", "clipboard", "writeText", "length", "selectedCommit", "setSelectedCommit", "handleCommitSelect", "commit", "link", "echoUri", "tryParse", "spaceId", "getSpaceId", "undefined", "objectId", "getEntityId", "Open", "subject", "currentBranch", "setCurrentBranch", "handleProcessSelect", "process", "branch", "find", "pid", "toString", "div", "classNames", "ref", "ProcessTreeContainer", "onProcessSelect", "Root", "pin", "Content", "thin", "Fade", "Viewport", "Code", "className", "compact", "onSelect", "ScrollDownButton", "id", "atomEmpty", "make", "eventLimit", "monitor", "ProcessMonitor", "processesAtom", "processTreeAtom", "atom", "getExecutionGraph", "activeProcesses", "debounce", "millis", "processes", "array", "filter", "state", "State", "RUNNING", "HYBERNATING", "struct", "get", "displayName", "processesDeferred", "depth"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Data from 'effect/Data';\nimport * as Duration from 'effect/Duration';\nimport { pipe } from 'effect/Function';\nimport React, { useCallback, useDeferredValue, useEffect, useMemo, useState } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useAtomCapability, useCapability, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Process } from '@dxos/compute';\nimport { EID } from '@dxos/keys';\nimport { type Space } from '@dxos/react-client/echo';\nimport { ScrollContainer } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { useAttentionAttributes } from '@dxos/react-ui-attention';\nimport { type Commit, Timeline } from '@dxos/react-ui-components';\nimport { Syntax } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/ui-theme';\n\nimport { ProcessTree, ProcessTreeProps } from '#components';\nimport { type ExecutionGraph, buildExecutionGraph } from '#execution-graph';\nimport { getTraceMessagesAtom, useTraceMessages } from '#hooks';\nimport { AssistantCapabilities } from '#types';\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\n // `useDeferredValue` batches update bursts, works together with `React.memo`.\n // See the comment in `ProcessTreeContainer` for more details.\n const { branches, commits, spanTree, details } = useDeferredValue(useExecutionGraph(space));\n\n // Debug hatch (dev builds only): expose the raw trace messages (the exact `buildExecutionGraph`\n // input) so a real trace can be captured as a test fixture. While the TracePanel is mounted, run\n // `dxosDumpTrace()` in the console — it copies the serialized `Trace.Message[]` to the clipboard\n // (and logs it). Gated on `import.meta.env.DEV` so it's stripped from production builds.\n const traceMessages = useTraceMessages(space);\n useEffect(() => {\n if (!import.meta.env.DEV) {\n return;\n }\n // Attach a debug hatch to the global object (a genuine global-augmentation boundary).\n const debugGlobal = globalThis as typeof globalThis & { dxosDumpTrace?: () => string };\n debugGlobal.dxosDumpTrace = () => {\n const data = traceMessages.map((message) => ({\n meta: message.meta,\n isEphemeral: message.isEphemeral,\n events: message.events,\n }));\n const json = JSON.stringify(data, null, 2);\n // eslint-disable-next-line no-console\n console.log(json);\n void navigator.clipboard?.writeText(json);\n return `dxosDumpTrace: ${data.length} message(s) copied to clipboard`;\n };\n return () => {\n delete debugGlobal.dxosDumpTrace;\n };\n }, [traceMessages]);\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 echoUri = EID.tryParse(commit.link);\n const spaceId = echoUri ? EID.getSpaceId(echoUri) : undefined;\n const objectId = echoUri ? EID.getEntityId(echoUri) : undefined;\n if (spaceId && objectId) {\n // TODO(dmaretskyi): Navigates, but fails to open.\n void invokePromise(LayoutOperation.Open, {\n subject: [`${spaceId}:${objectId}`],\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,160px)_1fr_minmax(0,206px)]'\n : 'grid-rows-[minmax(0,160px)_1fr]',\n ),\n })}\n ref={forwardedRef}\n >\n <ProcessTreeContainer onProcessSelect={handleProcessSelect} onProcessTerminate={onProcessTerminate} />\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={details[selectedCommit.id] ?? 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 collapseCompletedSpans?: boolean;\n eventLimit?: number;\n};\n\nconst useExecutionGraph = (\n space: Space,\n { collapseCompletedSpans, eventLimit }: UseExecutionGraphOptions = {},\n): ExecutionGraph => {\n const monitor = useCapability(Capabilities.ProcessMonitor);\n const processesAtom = monitor?.processTreeAtom ?? atomEmpty;\n\n const atom = useMemo(\n () => getExecutionGraph(space, processesAtom, { collapseCompletedSpans, eventLimit }),\n [space, processesAtom, collapseCompletedSpans, eventLimit],\n );\n\n return useAtomValue(atom);\n};\n\nconst getExecutionGraph = (\n space: Space,\n processesAtom: Atom.Atom<readonly Process.Info[]>,\n { collapseCompletedSpans = true, eventLimit = 100 }: UseExecutionGraphOptions = {},\n): Atom.Atom<ExecutionGraph> => {\n const traceMessages = getTraceMessagesAtom(space);\n\n const activeProcesses = pipe(\n processesAtom,\n Atom.debounce(Duration.millis(500)),\n Atom.map((processes) =>\n // `Data.array` does structural comparison on the array elements.\n Data.array(\n processes\n .filter((process) => process.state === Process.State.RUNNING || process.state === Process.State.HYBERNATING)\n .map(Data.struct),\n ),\n ),\n );\n\n return Atom.make((get) =>\n buildExecutionGraph({\n traceMessages: get(traceMessages),\n activeProcesses: get(activeProcesses),\n collapseCompletedSpans,\n eventLimit,\n }),\n );\n};\nTracePanel.displayName = 'TracePanel';\n\n// Isolate `ProcessTree` updates from the rest of the panel.\n// TODO(dmaretskyi): Currently not useful since `useExecutionGraph` also pulls in the updates.\nconst ProcessTreeContainer = ({\n onProcessSelect,\n onProcessTerminate,\n}: Pick<ProcessTreeProps, 'onProcessSelect' | 'onProcessTerminate'>) => {\n const monitor = useCapability(Capabilities.ProcessMonitor);\n const processes = useAtomValue(\n useMemo(() => monitor?.processTreeAtom.pipe(Atom.debounce(Duration.millis(500))) ?? atomEmpty, [monitor]),\n );\n\n // `processes` updates in bursts (about 14 updates per navigation).\n // `useDeferredValue` will debounce update propagation, returning stale value for short periods.\n // NOTE: `ProcessTree` MUST use `React.memo`, otherwise this will not work.\n const processesDeferred = useDeferredValue(processes);\n return (\n <ProcessTree\n processes={processesDeferred}\n depth={3}\n onProcessSelect={onProcessSelect}\n onProcessTerminate={onProcessTerminate}\n />\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Atom", "useAtomValue", "Data", "Duration", "pipe", "React", "useCallback", "useDeferredValue", "useEffect", "useMemo", "useState", "Capabilities", "useAtomCapability", "useCapability", "useOperationInvoker", "LayoutOperation", "Process", "EID", "ScrollContainer", "composable", "composableProps", "useAttentionAttributes", "Timeline", "Syntax", "mx", "ProcessTree", "buildExecutionGraph", "getTraceMessagesAtom", "useTraceMessages", "AssistantCapabilities", "TracePanel", "space", "attendableId", "onProcessTerminate", "props", "forwardedRef", "attentionAttrs", "invokePromise", "settings", "Settings", "tracePanelDebug", "branches", "commits", "spanTree", "details", "useExecutionGraph", "traceMessages", "env", "DEV", "debugGlobal", "globalThis", "dxosDumpTrace", "data", "map", "message", "meta", "isEphemeral", "events", "json", "JSON", "stringify", "console", "log", "navigator", "clipboard", "writeText", "length", "selectedCommit", "setSelectedCommit", "handleCommitSelect", "commit", "link", "echoUri", "tryParse", "spaceId", "getSpaceId", "undefined", "objectId", "getEntityId", "Open", "subject", "currentBranch", "setCurrentBranch", "handleProcessSelect", "process", "branch", "find", "pid", "toString", "div", "classNames", "ref", "ProcessTreeContainer", "onProcessSelect", "Root", "pin", "Content", "thin", "Fade", "Viewport", "Code", "className", "compact", "onSelect", "ScrollDownButton", "id", "atomEmpty", "make", "collapseCompletedSpans", "eventLimit", "monitor", "ProcessMonitor", "processesAtom", "processTreeAtom", "atom", "getExecutionGraph", "activeProcesses", "debounce", "millis", "processes", "array", "filter", "state", "State", "RUNNING", "HYBERNATING", "struct", "get", "displayName", "processesDeferred", "depth"]
7
7
  }
@@ -0,0 +1,56 @@
1
+ import {
2
+ operation_handler_default
3
+ } from "./chunk-V2Y4XE3O.mjs";
4
+ import {
5
+ skill_definition_default
6
+ } from "./chunk-LS72HWMM.mjs";
7
+ import {
8
+ toolkit_default
9
+ } from "./chunk-QOKLFHUS.mjs";
10
+
11
+ // src/AssistantPlugin.workerd.ts
12
+ import { ActivationEvents, Plugin } from "@dxos/app-framework";
13
+ import { AppPlugin } from "@dxos/app-toolkit";
14
+ import { AiContext } from "@dxos/assistant";
15
+ import { Agent, Chat, McpServer, Memory, Plan } from "@dxos/assistant-toolkit";
16
+ import { Instructions, Skill } from "@dxos/compute";
17
+ import { Sequence } from "@dxos/conductor";
18
+ import { Feed } from "@dxos/echo";
19
+ import { Text } from "@dxos/schema";
20
+ import { HasSubject, Message } from "@dxos/types";
21
+ import { meta } from "#meta";
22
+ var AssistantPlugin = Plugin.define(meta).pipe(AppPlugin.addSkillDefinitionModule({
23
+ id: "skill-definition",
24
+ activate: skill_definition_default
25
+ }), AppPlugin.addOperationHandlerModule({
26
+ id: "operation-handler",
27
+ activate: operation_handler_default
28
+ }), Plugin.addModule({
29
+ id: "toolkit",
30
+ activatesOn: ActivationEvents.Startup,
31
+ activate: toolkit_default
32
+ }), AppPlugin.addSchemaModule({
33
+ schema: [
34
+ Chat.Chat,
35
+ Chat.CompanionTo,
36
+ Skill.Skill,
37
+ AiContext.Binding,
38
+ Feed.Feed,
39
+ HasSubject.HasSubject,
40
+ Message.Message,
41
+ Instructions.Instructions,
42
+ Agent.Agent,
43
+ McpServer.McpServer,
44
+ Plan.Plan,
45
+ Sequence.Sequence,
46
+ Memory.Memory,
47
+ Text.Text
48
+ ]
49
+ }), Plugin.make);
50
+ var AssistantPlugin_workerd_default = AssistantPlugin;
51
+
52
+ export {
53
+ AssistantPlugin,
54
+ AssistantPlugin_workerd_default
55
+ };
56
+ //# sourceMappingURL=chunk-U4LTLBAX.mjs.map