@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
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/TriggerStatus/TriggerStatus.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { type InvocationsState } from '@dxos/functions-runtime';\nimport { useTriggerRuntimeControls } from '@dxos/plugin-automation/hooks';\nimport { StatusBar } from '@dxos/plugin-status-bar/components';\nimport { useObject } from '@dxos/react-client/echo';\nimport { IconButton, Popover, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\ntype TriggerStatusState = 'disabled' | 'idle' | 'running' | 'edge' | 'error';\n\nconst getIcon = (state: TriggerStatusState): string => {\n switch (state) {\n case 'disabled':\n return 'ph--lightning-slash--regular';\n case 'idle':\n return 'ph--lightning--regular';\n case 'edge':\n return 'ph--lightning--regular';\n case 'running':\n return 'ph--lightning--fill';\n case 'error':\n return 'ph--warning--regular';\n }\n};\n\nconst getIconClassNames = (state: TriggerStatusState): string | undefined => {\n switch (state) {\n case 'running':\n return 'animate-pulse text-accent-text';\n case 'error':\n return 'text-error-text';\n default:\n return undefined;\n }\n};\n\nexport type SpaceStatusProps = AppSurface.SpaceArticleProps;\n\nexport const SpaceStatus = ({ space }: SpaceStatusProps) => {\n const { t } = useTranslation(meta.profile.key);\n const { state } = useTriggerRuntimeControls(space.db);\n const isEnabled = state?.enabled ?? false;\n const [properties] = useObject(space.properties);\n const computeEnvironment = properties.computeEnvironment ?? 'local';\n\n // Determine the current trigger status state.\n const triggerState: TriggerStatusState = useMemo(() => {\n if (computeEnvironment === 'edge') {\n return 'edge';\n }\n\n if (!isEnabled) {\n return 'disabled';\n }\n\n // Check if there's any pending invocation.\n const hasPending = state?.invocations.some((invocation) => invocation.result === null);\n if (hasPending) {\n return 'running';\n }\n\n // Check if the last invocation failed.\n const lastInvocation = state?.invocations.at(-1);\n if (lastInvocation?.result?._tag === 'Failure') {\n return 'error';\n }\n\n return 'idle';\n }, [computeEnvironment, isEnabled, state?.invocations]);\n\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <StatusBar.Item>\n <IconButton\n variant='ghost'\n icon={getIcon(triggerState)}\n iconOnly\n label={t(`trigger-status-${triggerState}.label`)}\n classNames={getIconClassNames(triggerState)}\n />\n </StatusBar.Item>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='left'>\n <TriggerStatusPopover\n state={triggerState}\n currentFunctionName={\n state?.invocations.at(-1)?.function?.meta.name ?? state?.invocations.at(-1)?.function?.meta.key\n }\n lastInvocation={state?.invocations.at(-1)}\n />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n\ntype TriggerStatusPopoverProps = {\n state: TriggerStatusState;\n currentFunctionName?: string;\n lastInvocation?: InvocationsState;\n};\n\nconst TriggerStatusPopover = ({\n state,\n currentFunctionName,\n lastInvocation, // TODO(burdon): Show.\n}: TriggerStatusPopoverProps) => {\n const { t } = useTranslation(meta.profile.key);\n\n return (\n <div className='flex flex-col gap-2 p-2 w-[240px]'>\n <div className='flex flex-col gap-1'>\n <div className='text-sm'>{t(`trigger-status-${state}.label`)}</div>\n {currentFunctionName && state === 'running' && (\n <div className='text-xs text-description'>{currentFunctionName}</div>\n )}\n </div>\n </div>\n );\n};\n"],
5
- "mappings": ";;;AAIA,OAAOA,SAASC,eAAe;AAI/B,SAASC,iCAAiC;AAC1C,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,YAAYC,SAASC,sBAAsB;AAEpD,SAASC,YAAY;AAIrB,IAAMC,UAAU,CAACC,UAAAA;AACf,UAAQA,OAAAA;IACN,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;EACX;AACF;AAEA,IAAMC,oBAAoB,CAACD,UAAAA;AACzB,UAAQA,OAAAA;IACN,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT;AACE,aAAOE;EACX;AACF;AAIO,IAAMC,cAAc,CAAC,EAAEC,MAAK,MAAoB;AACrD,QAAM,EAAEC,EAAC,IAAKR,eAAeC,KAAKQ,QAAQC,GAAG;AAC7C,QAAM,EAAEP,MAAK,IAAKR,0BAA0BY,MAAMI,EAAE;AACpD,QAAMC,YAAYT,OAAOU,WAAW;AACpC,QAAM,CAACC,UAAAA,IAAcjB,UAAUU,MAAMO,UAAU;AAC/C,QAAMC,qBAAqBD,WAAWC,sBAAsB;AAG5D,QAAMC,eAAmCtB,QAAQ,MAAA;AAC/C,QAAIqB,uBAAuB,QAAQ;AACjC,aAAO;IACT;AAEA,QAAI,CAACH,WAAW;AACd,aAAO;IACT;AAGA,UAAMK,aAAad,OAAOe,YAAYC,KAAK,CAACC,eAAeA,WAAWC,WAAW,IAAA;AACjF,QAAIJ,YAAY;AACd,aAAO;IACT;AAGA,UAAMK,iBAAiBnB,OAAOe,YAAYK,GAAG,EAAC;AAC9C,QAAID,gBAAgBD,QAAQG,SAAS,WAAW;AAC9C,aAAO;IACT;AAEA,WAAO;EACT,GAAG;IAACT;IAAoBH;IAAWT,OAAOe;GAAY;AAEtD,SACE,sBAAA,cAACnB,QAAQ0B,MAAI,MACX,sBAAA,cAAC1B,QAAQ2B,SAAO;IAACC,SAAAA;KACf,sBAAA,cAAC/B,UAAUgC,MAAI,MACb,sBAAA,cAAC9B,YAAAA;IACC+B,SAAQ;IACRC,MAAM5B,QAAQc,YAAAA;IACde,UAAAA;IACAC,OAAOxB,EAAE,kBAAkBQ,YAAAA,QAAoB;IAC/CiB,YAAY7B,kBAAkBY,YAAAA;QAIpC,sBAAA,cAACjB,QAAQmC,QAAM,MACb,sBAAA,cAACnC,QAAQoC,SAAO;IAACC,MAAK;KACpB,sBAAA,cAACC,sBAAAA;IACClC,OAAOa;IACPsB,qBACEnC,OAAOe,YAAYK,GAAG,EAAC,GAAIgB,UAAUtC,KAAKuC,QAAQrC,OAAOe,YAAYK,GAAG,EAAC,GAAIgB,UAAUtC,KAAKS;IAE9FY,gBAAgBnB,OAAOe,YAAYK,GAAG,EAAC;MAEzC,sBAAA,cAACxB,QAAQ0C,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB;AAQA,IAAMJ,uBAAuB,CAAC,EAC5BlC,OACAmC,qBACAhB,eAAc,MACY;AAC1B,QAAM,EAAEd,EAAC,IAAKR,eAAeC,KAAKQ,QAAQC,GAAG;AAE7C,SACE,sBAAA,cAACgC,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACD,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACD,OAAAA;IAAIC,WAAU;KAAWnC,EAAE,kBAAkBL,KAAAA,QAAa,CAAA,GAC1DmC,uBAAuBnC,UAAU,aAChC,sBAAA,cAACuC,OAAAA;IAAIC,WAAU;KAA4BL,mBAAAA,CAAAA,CAAAA;AAKrD;",
6
- "names": ["React", "useMemo", "useTriggerRuntimeControls", "StatusBar", "useObject", "IconButton", "Popover", "useTranslation", "meta", "getIcon", "state", "getIconClassNames", "undefined", "SpaceStatus", "space", "t", "profile", "key", "db", "isEnabled", "enabled", "properties", "computeEnvironment", "triggerState", "hasPending", "invocations", "some", "invocation", "result", "lastInvocation", "at", "_tag", "Root", "Trigger", "asChild", "Item", "variant", "icon", "iconOnly", "label", "classNames", "Portal", "Content", "side", "TriggerStatusPopover", "currentFunctionName", "function", "name", "Arrow", "div", "className"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/agent-hydrator.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { ServiceResolver } from '@dxos/compute';\nimport { AgentService } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\n\n//\n// Capability Module\n//\n// Rehydrates durable agent processes once {@link ActivationEvents.ProcessManagerReady} fires.\n//\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const runtime = yield* Capability.get(Capabilities.ProcessManagerRuntime);\n\n runtime.runFork(\n Effect.gen(function* () {\n const service = yield* AgentService.AgentService;\n yield* service.hydrate();\n }).pipe(\n Effect.provide(ServiceResolver.provide({}, AgentService.AgentService)),\n Effect.catchAllCause((cause) =>\n Effect.sync(() => log.warn('agent hydrate failed', { cause: Cause.pretty(cause) })),\n ),\n ),\n );\n\n return Capability.contributes(Capabilities.Null, null);\n }),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,WAAW;AACvB,YAAYC,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SAASC,oBAAoB;AAC7B,SAASC,WAAW;AAEpB,IAAE,eAAA;IAUEC,yBAAQC,WACNP,WAAW,kBAAA,aAAA;QACT,UAAMQ,OAAU,WAAOJ,IAAAA,aAAaA,qBAAY;UAChD,QAAeK,WAAO,aAAA;AACrBC,UACDV,UAAOW,OAAQR,aAAgBQ;mBAE+BZ,QAAMa;UAAc,eAAA,gBAAA,QAAA,CAAA,GAAA,aAAA,YAAA,CAAA,GAAA,qBAAA,CAAA,UAAA,YAAA,MAAA,IAAA,KAAA,wBAAA;IAK/EV,OAAWW,aAAYZ,KAAAA;EAEhC,GAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;",
6
- "names": ["Cause", "Effect", "Capabilities", "Capability", "ServiceResolver", "AgentService", "log", "runtime", "runFork", "service", "hydrate", "pipe", "provide", "pretty", "contributes"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/agent-service.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { LayerSpec } from '@dxos/compute';\nimport { ProcessManager } from '@dxos/compute-runtime';\nimport { AgentService } from '@dxos/functions-runtime';\nimport { AutomationCapabilities } from '@dxos/plugin-automation';\n\n//\n// Capability Module\n//\n// Owns the application-affinity {@link AgentService} layer for process-backed agents.\n//\n\nconst AgentServiceSpec = LayerSpec.make(\n {\n affinity: 'application',\n requires: [ProcessManager.ProcessManagerService, Capability.Service],\n provides: [AgentService.AgentService],\n },\n () =>\n Layer.unwrapEffect(\n Effect.gen(function* () {\n // Optional supervisor behaviour, contributed by a plugin that knows the agent/plan model.\n const strategies = yield* Capability.getAll(AutomationCapabilities.AgentDelegationStrategy);\n const completionGuards = yield* Capability.getAll(AutomationCapabilities.AgentCompletionGuard);\n return AgentService.layer({\n delegationStrategy: strategies[0],\n completionGuard: completionGuards[0],\n });\n }),\n ),\n);\n\nexport default Capability.makeModule(() =>\n Effect.succeed([Capability.contributes(Capabilities.LayerSpec, AgentServiceSpec)]),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAC7B,SAASC,8BAA8B;AAQvC,IAAMC,mBAAmBJ,UAAUK,KACjC;EACEC,UAAU;EACVC,UAAU;IAACN,eAAeO;IAAuBT,WAAWU;;EAC5DC,UAAU;IAACR,aAAaA;;AAC1B,GACA,MACQS,mBACGC,WAAI,aAAA;AAET,QAAMC,aAAa,OAAOd,WAAWe,OAAOX,uBAAuBY,uBAAuB;AAC1F,QAAMC,mBAAmB,OAAOjB,WAAWe,OAAOX,uBAAuBc,oBAAoB;AAC7F,SAAOf,aAAagB,MAAM;IACxBC,oBAAoBN,WAAW,CAAA;IAC/BO,iBAAiBJ,iBAAiB,CAAA;EACpC,CAAA;AACF,CAAA,CAAA,CAAA;AAIN,IAAA,wBAAejB,WAAWsB,WAAW,MAC5BC,eAAQ;EAACvB,WAAWwB,YAAYzB,aAAaE,WAAWI,gBAAAA;CAAkB,CAAA;",
6
- "names": ["Effect", "Layer", "Capabilities", "Capability", "LayerSpec", "ProcessManager", "AgentService", "AutomationCapabilities", "AgentServiceSpec", "make", "affinity", "requires", "ProcessManagerService", "Service", "provides", "unwrapEffect", "gen", "strategies", "getAll", "AgentDelegationStrategy", "completionGuards", "AgentCompletionGuard", "layer", "delegationStrategy", "completionGuard", "makeModule", "succeed", "contributes"]
7
- }
@@ -1,42 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/capabilities/ai-context.ts
4
- import * as Effect from "effect/Effect";
5
- import * as Layer from "effect/Layer";
6
- import { Capabilities, Capability } from "@dxos/app-framework";
7
- import { AiContext } from "@dxos/assistant";
8
- import { LayerSpec, ServiceNotAvailableError } from "@dxos/compute";
9
- import { Database, EID, Feed } from "@dxos/echo";
10
- import { EffectEx } from "@dxos/effect";
11
- var AiContextSpec = LayerSpec.make({
12
- affinity: "process",
13
- requires: [
14
- Database.Service,
15
- Feed.FeedService
16
- ],
17
- provides: [
18
- AiContext.Service
19
- ]
20
- }, (context) => Layer.scoped(AiContext.Service, Effect.gen(function* () {
21
- if (!context.conversation) {
22
- return yield* Effect.die(new ServiceNotAvailableError(AiContext.Service.key, {
23
- message: `Service not available: ${AiContext.Service.key} \u2014 process spawn is missing 'conversation' in environment (set via Operation.withInvocationOptions or ProcessManager.spawn environment)`
24
- }));
25
- }
26
- const feed = yield* Database.resolve(EID.parse(context.conversation), Feed.Feed).pipe(Effect.orDie);
27
- const runtime2 = yield* Effect.runtime();
28
- const binder = yield* EffectEx.acquireReleaseResource(() => new AiContext.Binder({
29
- feed,
30
- runtime: runtime2
31
- }));
32
- return {
33
- binder
34
- };
35
- })));
36
- var ai_context_default = Capability.makeModule(() => Effect.succeed([
37
- Capability.contributes(Capabilities.LayerSpec, AiContextSpec)
38
- ]));
39
- export {
40
- ai_context_default as default
41
- };
42
- //# sourceMappingURL=ai-context-7WRHWYXY.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/ai-context.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AiContext } from '@dxos/assistant';\nimport { LayerSpec, ServiceNotAvailableError } from '@dxos/compute';\nimport { Database, EID, Feed } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\n\n//\n// Capability Module\n//\n// Contributes a process-affinity `LayerSpec` that materialises\n// {@link AiContext.Service} from the resolution context's `conversation` DXN.\n//\n\nconst AiContextSpec = LayerSpec.make(\n {\n affinity: 'process',\n requires: [Database.Service, Feed.FeedService],\n provides: [AiContext.Service],\n },\n (context) =>\n Layer.scoped(\n AiContext.Service,\n Effect.gen(function* () {\n if (!context.conversation) {\n return yield* Effect.die(\n new ServiceNotAvailableError(AiContext.Service.key, {\n message: `Service not available: ${AiContext.Service.key} — process spawn is missing 'conversation' in environment (set via Operation.withInvocationOptions or ProcessManager.spawn environment)`,\n }),\n );\n }\n const feed = yield* Database.resolve(EID.parse(context.conversation), Feed.Feed).pipe(Effect.orDie);\n const runtime = yield* Effect.runtime<Feed.FeedService>();\n const binder = yield* EffectEx.acquireReleaseResource(() => new AiContext.Binder({ feed, runtime }));\n return { binder };\n }),\n ),\n);\n\nexport default Capability.makeModule(() =>\n Effect.succeed([Capability.contributes(Capabilities.LayerSpec, AiContextSpec)]),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,iBAAiB;AAC1B,SAASC,WAAWC,gCAAgC;AACpD,SAASC,UAAUC,KAAKC,YAAY;AACpC,SAASC,gBAAgB;AASzB,IAAMC,gBAAgBN,UAAUO,KAC9B;EACEC,UAAU;EACVC,UAAU;IAACP,SAASQ;IAASN,KAAKO;;EAClCC,UAAU;IAACb,UAAUW;;AACvB,GACA,CAACG,YACOC,aACJf,UAAUW,SACHK,WAAI,aAAA;AACT,MAAI,CAACF,QAAQG,cAAc;AACzB,WAAO,OAAcC,WACnB,IAAIhB,yBAAyBF,UAAUW,QAAQQ,KAAK;MAClDC,SAAS,0BAA0BpB,UAAUW,QAAQQ,GAAG;IAC1D,CAAA,CAAA;EAEJ;AACA,QAAME,OAAO,OAAOlB,SAASmB,QAAQlB,IAAImB,MAAMT,QAAQG,YAAY,GAAGZ,KAAKA,IAAI,EAAEmB,KAAYC,YAAK;AAClG,QAAMC,WAAU,OAAcA,eAAO;AACrC,QAAMC,SAAS,OAAOrB,SAASsB,uBAAuB,MAAM,IAAI5B,UAAU6B,OAAO;IAAER;IAAMK,SAAAA;EAAQ,CAAA,CAAA;AACjG,SAAO;IAAEC;EAAO;AAClB,CAAA,CAAA,CAAA;AAIN,IAAA,qBAAe5B,WAAW+B,WAAW,MAC5BC,eAAQ;EAAChC,WAAWiC,YAAYlC,aAAaG,WAAWM,aAAAA;CAAe,CAAA;",
6
- "names": ["Effect", "Layer", "Capabilities", "Capability", "AiContext", "LayerSpec", "ServiceNotAvailableError", "Database", "EID", "Feed", "EffectEx", "AiContextSpec", "make", "affinity", "requires", "Service", "FeedService", "provides", "context", "scoped", "gen", "conversation", "die", "key", "message", "feed", "resolve", "parse", "pipe", "orDie", "runtime", "binder", "acquireReleaseResource", "Binder", "makeModule", "succeed", "contributes"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/ai-service.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { AiModelResolver, AiService } from '@dxos/ai';\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Credential, LayerSpec } from '@dxos/compute';\n\nimport type { AssistantPluginOptions } from '#types';\n\nexport default Capability.makeModule<AssistantPluginOptions | void, Capability.Any[]>(\n Effect.fnUntraced(function* (options) {\n const resolvers = yield* Capability.getAll(AppCapabilities.AiModelResolver);\n\n // TODO(dmaretskyi): Extract function to reduce them.\n const combinedLayer = resolvers.reduce(\n (acc, resolver) => resolver.pipe(Layer.provide(acc)),\n AiModelResolver.AiModelResolver.fromModelMap({ name: 'Fallback' }, Effect.succeed({})), // Empty resolver as fallback.\n );\n\n let aiServiceLayer: Layer.Layer<AiService.AiService, never, Credential.CredentialsService> =\n AiModelResolver.AiModelResolver.buildAiService.pipe(Layer.provide(combinedLayer));\n\n const aiServiceMiddleware = options?.aiServiceMiddleware;\n if (aiServiceMiddleware) {\n aiServiceLayer = aiServiceLayer.pipe(\n Layer.map((context) => {\n const aiService = Context.get(context, AiService.AiService);\n return Context.make(AiService.AiService, aiServiceMiddleware(aiService));\n }),\n );\n }\n\n const aiServiceSpec = LayerSpec.make(\n {\n affinity: 'space',\n requires: [Credential.CredentialsService],\n provides: [AiService.AiService],\n },\n () => aiServiceLayer,\n );\n\n return [Capability.contributes(Capabilities.LayerSpec, aiServiceSpec)];\n }),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,aAAa;AACzB,YAAYC,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,iBAAiBC,iBAAiB;AAC3C,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SAASC,YAAYC,iBAAiB;AAItC,IAAA,qBAAeH,WAAWI,WACjBC,kBAAW,WAAWC,SAAO;AAClC,QAAMC,YAAY,OAAOP,WAAWQ,OAAOP,gBAAgBJ,eAAe;AAG1E,QAAMY,gBAAgBF,UAAUG,OAC9B,CAACC,KAAKC,aAAaA,SAASC,KAAWC,cAAQH,GAAAA,CAAAA,GAC/Cd,gBAAgBA,gBAAgBkB,aAAa;IAAEC,MAAM;EAAW,GAAUC,eAAQ,CAAC,CAAA,CAAA,CAAA;AAGrF,MAAIC,iBACFrB,gBAAgBA,gBAAgBsB,eAAeN,KAAWC,cAAQL,aAAAA,CAAAA;AAEpE,QAAMW,sBAAsBd,SAASc;AACrC,MAAIA,qBAAqB;AACvBF,qBAAiBA,eAAeL,KACxBQ,UAAI,CAACC,YAAAA;AACT,YAAMC,YAAoBC,YAAIF,SAASxB,UAAUA,SAAS;AAC1D,aAAe2B,aAAK3B,UAAUA,WAAWsB,oBAAoBG,SAAAA,CAAAA;IAC/D,CAAA,CAAA;EAEJ;AAEA,QAAMG,gBAAgBvB,UAAUsB,KAC9B;IACEE,UAAU;IACVC,UAAU;MAAC1B,WAAW2B;;IACtBC,UAAU;MAAChC,UAAUA;;EACvB,GACA,MAAMoB,cAAAA;AAGR,SAAO;IAAClB,WAAW+B,YAAYhC,aAAaI,WAAWuB,aAAAA;;AACzD,CAAA,CAAA;",
6
- "names": ["Context", "Effect", "Layer", "AiModelResolver", "AiService", "Capabilities", "Capability", "AppCapabilities", "Credential", "LayerSpec", "makeModule", "fnUntraced", "options", "resolvers", "getAll", "combinedLayer", "reduce", "acc", "resolver", "pipe", "provide", "fromModelMap", "name", "succeed", "aiServiceLayer", "buildAiService", "aiServiceMiddleware", "map", "context", "aiService", "get", "make", "aiServiceSpec", "affinity", "requires", "CredentialsService", "provides", "contributes"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport { pipe } from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, AppNode, AppSpace, LayoutOperation, TypeSection } from '@dxos/app-toolkit';\nimport { AgentPrompt, Chat } from '@dxos/assistant-toolkit';\nimport { isSpace } from '@dxos/client/echo';\nimport { Operation, Routine } from '@dxos/compute';\nimport { Sequence } from '@dxos/conductor';\nimport { DXN, Database, Filter, Obj, Query, Type, type Ref } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { GraphBuilder, Node, NodeMatcher } from '@dxos/plugin-graph';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { linkedSegment } from '@dxos/react-ui-attention';\n\nimport { ASSISTANT_COMPANION_VARIANT, meta } from '#meta';\nimport { AssistantCapabilities, AssistantOperation } from '#types';\n\nimport { getChatsPath } from '../paths';\n\n/** Operation definitions to seed as `PersistentOperation` records for automation / triggers. */\nconst computeOperationsToImport = [AgentPrompt] as const;\n\n/** Match ECHO objects that are NOT chats. */\nconst whenNonChatObject = NodeMatcher.whenAll(\n NodeMatcher.whenEchoObject,\n NodeMatcher.whenNot(NodeMatcher.whenEchoTypeMatches(Chat.Chat)),\n);\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n const extensions = yield* Effect.all([\n GraphBuilder.createTypeExtension({\n id: 'root',\n type: Chat.Chat,\n actions: (chat) => {\n return Effect.succeed([\n Node.makeAction({\n id: AssistantOperation.UpdateChatName.meta.key,\n data: () =>\n Effect.gen(function* () {\n // TODO(dmaretskyi): This goes away when composer will have unified operation invocations.\n const db = Obj.getDatabase(chat);\n invariant(db);\n yield* Operation.invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId: db.spaceId });\n }),\n properties: {\n label: ['chat-update-name.label', { ns: meta.profile.key }],\n icon: 'ph--magic-wand--regular',\n disposition: 'list-item',\n },\n }),\n ]);\n },\n }),\n\n GraphBuilder.createExtension({\n id: 'assistant',\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n Node.makeAction({\n id: 'importComputeOperations',\n data: Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = AppSpace.getActiveSpace(client, capabilities) ?? AppSpace.getPersonalSpace(client);\n if (!space) {\n return;\n }\n for (const definition of computeOperationsToImport) {\n const key = definition.meta.key;\n if (!key) {\n continue;\n }\n const existing = yield* Effect.promise(\n (): Promise<Operation.PersistentOperation[]> =>\n space.db.query(Filter.and(Filter.type(Operation.PersistentOperation), Filter.key(key))).run(),\n );\n if (existing.length === 0) {\n space.db.add(Operation.serialize(definition));\n }\n }\n yield* Database.flush();\n }),\n properties: {\n label: ['import-compute-operations.label', { ns: meta.profile.key }],\n icon: 'ph--download-simple--regular',\n },\n }),\n Node.makeAction({\n id: AssistantOperation.ToggleTracePanelDebug.meta.key,\n data: () => Operation.invoke(AssistantOperation.ToggleTracePanelDebug, {}),\n properties: {\n label: ['toggle-trace-panel-debug.label', { ns: meta.profile.key }],\n icon: 'ph--brackets-curly--regular',\n },\n }),\n ]),\n }),\n\n // Don't show assistant companion when a chat is already the primary object.\n GraphBuilder.createExtension({\n id: 'companionChat',\n match: whenNonChatObject,\n connector: (object, get) =>\n Effect.gen(function* () {\n const state = get(yield* Capability.get(AssistantCapabilities.State));\n const cache = get(yield* Capability.get(AssistantCapabilities.CompanionChatCache));\n const objectUri = Obj.getURI(object);\n\n // Resolve chat from persisted state or transient cache.\n const chat = pipe(\n Option.fromNullable(state.currentChat[objectUri]),\n Option.flatMap((dxnStr) => Option.fromNullable(DXN.tryMake(dxnStr))),\n Option.flatMap((dxn) => Option.fromNullable(Obj.getDatabase(object)?.makeRef(dxn))),\n Option.map((ref) => get(Obj.atom(ref as Ref.Ref<Obj.Unknown>))),\n Option.filter(Obj.isObject),\n Option.orElse(() => pipe(Option.fromNullable(cache[objectUri]), Option.filter(Obj.isObject))),\n Option.getOrNull,\n );\n\n return [\n AppNode.makeCompanion({\n id: linkedSegment(ASSISTANT_COMPANION_VARIANT),\n label: ['assistant-chat.label', { ns: meta.profile.key }],\n icon: 'ph--sparkle--regular',\n data: chat,\n position: 'first',\n }),\n ];\n }),\n }),\n\n GraphBuilder.createExtension({\n id: 'invocations',\n match: NodeMatcher.whenAny(\n NodeMatcher.whenEchoTypeMatches(Sequence.Sequence),\n NodeMatcher.whenEchoTypeMatches(Routine.Routine),\n ),\n connector: () =>\n Effect.succeed([\n AppNode.makeCompanion({\n id: 'invocations',\n label: ['invocations.label', { ns: meta.profile.key }],\n icon: 'ph--clock-countdown--regular',\n data: 'invocations',\n }),\n ]),\n }),\n\n GraphBuilder.createExtension({\n id: 'trace',\n match: NodeMatcher.whenRoot,\n connector: () =>\n Effect.succeed([\n AppNode.makeDeckCompanion({\n id: linkedSegment('trace'),\n label: ['trace.label', { ns: meta.profile.key }],\n icon: 'ph--line-segments--regular',\n data: 'trace',\n position: 'last',\n }),\n ]),\n }),\n\n // Section node: standalone Chat.Chat objects per space (companions are excluded).\n TypeSection.createTypeSectionExtension(Chat.Chat, {\n // Exclude chats that are the source of a CompanionTo relation; those belong to\n // their primary object's companion panel and should not appear in the top-level list.\n query: Query.without(\n Query.select(Filter.type(Chat.Chat)),\n Query.select(Filter.type(Chat.Chat)).sourceOf(Chat.CompanionTo).source(),\n ),\n }),\n\n // Create-chat action on the Chats section header.\n GraphBuilder.createExtension({\n id: 'chatsSectionActions',\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return node.type === Type.getTypename(Chat.Chat) && space ? Option.some(space) : Option.none();\n },\n actions: (space) =>\n Effect.succeed([\n Node.makeAction({\n id: 'create-chat',\n data: () =>\n Effect.gen(function* () {\n const { object: chat } = yield* Operation.invoke(\n AssistantOperation.CreateChat,\n { db: space.db },\n { spaceId: space.db.spaceId },\n );\n const { subject } = yield* Operation.invoke(\n SpaceOperation.AddObject,\n { object: chat, target: space.db, hidden: true, targetNodeId: getChatsPath(space.db.spaceId) },\n { spaceId: space.db.spaceId },\n );\n yield* Operation.invoke(\n LayoutOperation.Open,\n { subject: [...subject] },\n { spaceId: space.db.spaceId },\n );\n }),\n properties: {\n label: ['create-chat.label', { ns: meta.profile.key }],\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n },\n }),\n ]),\n }),\n ]);\n\n return [\n Capability.contributes(AppCapabilities.AppGraphBuilder, extensions),\n Capability.contributes(\n AppCapabilities.NavigationPathResolver,\n TypeSection.createTypeSectionPathResolver(Chat.Chat),\n ),\n ];\n }),\n);\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "pipe", "Option", "Capability", "AppCapabilities", "AppNode", "AppSpace", "LayoutOperation", "TypeSection", "AgentPrompt", "Chat", "isSpace", "Operation", "Routine", "Sequence", "DXN", "Database", "Filter", "Obj", "Query", "Type", "invariant", "ClientCapabilities", "GraphBuilder", "Node", "NodeMatcher", "SpaceOperation", "linkedSegment", "ASSISTANT_COMPANION_VARIANT", "meta", "AssistantCapabilities", "AssistantOperation", "Service", "extensions", "GraphBuilder", "createTypeExtension", "Chat", "actions", "Effect", "Node", "makeAction", "AssistantOperation", "data", "db", "Obj", "getDatabase", "Operation", "chat", "spaceId", "properties", "label", "icon", "disposition", "NodeMatcher", "whenRoot", "client", "Capability", "space", "AppSpace", "getActiveSpace", "capabilities", "key", "serialize", "definition", "whenNonChatObject", "connector", "cache", "AssistantCapabilities", "objectUri", "getURI", "object", "Option", "fromNullable", "AppNode", "makeCompanion", "position", "whenAny", "makeDeckCompanion", "linkedSegment", "TypeSection", "node", "succeed", "subject", "target", "hidden", "targetNodeId", "getChatsPath", "invoke"]
7
- }
@@ -1,115 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/capabilities/automation-templates.ts
4
- import * as Effect2 from "effect/Effect";
5
- import { Capability } from "@dxos/app-framework";
6
- import { AutomationCapabilities } from "@dxos/plugin-automation";
7
-
8
- // src/templates/scaffold.ts
9
- import * as Effect from "effect/Effect";
10
- import * as Schema from "effect/Schema";
11
- import { AgentPrompt } from "@dxos/assistant-toolkit";
12
- import { Blueprint, Operation, Routine, Trigger } from "@dxos/compute";
13
- import { Database, Filter, Obj, Ref } from "@dxos/echo";
14
- import { Automation } from "@dxos/plugin-automation";
15
- var AGENT_PROMPT_KEY = "org.dxos.function.prompt";
16
- var makeScheduledRoutineAutomation = ({ name, instructions, blueprintKeys, cron }) => Effect.gen(function* () {
17
- const blueprints = blueprintKeys.map((key) => Ref.fromURI(Blueprint.registryURI(key)));
18
- const routine = yield* Database.add(Routine.make({
19
- name,
20
- instructions,
21
- // No per-run input; the task lives in the instructions. Unknown (not Void) so the empty trigger
22
- // input still validates.
23
- input: Schema.Unknown,
24
- output: Schema.Void,
25
- blueprints,
26
- context: []
27
- }));
28
- const existingFns = yield* Database.query(Filter.and(Filter.type(Operation.PersistentOperation), Filter.key(AGENT_PROMPT_KEY))).run;
29
- const agentPromptFn = existingFns[0] ?? (yield* Database.add(Operation.serialize(AgentPrompt)));
30
- const trigger = yield* Database.add(Obj.make(Trigger.Trigger, {
31
- enabled: false,
32
- function: Ref.make(agentPromptFn),
33
- spec: Trigger.specTimer(cron),
34
- input: {
35
- prompt: Ref.make(routine),
36
- input: {}
37
- },
38
- concurrency: 1
39
- }));
40
- const automation = Automation.make({
41
- name,
42
- runnable: Ref.make(agentPromptFn),
43
- triggers: [
44
- Ref.make(trigger)
45
- ]
46
- });
47
- Obj.setParent(trigger, automation);
48
- return automation;
49
- });
50
-
51
- // src/templates/daily-digest.ts
52
- var BLUEPRINT_KEYS = [
53
- "org.dxos.blueprint.inbox",
54
- "org.dxos.blueprint.database",
55
- "org.dxos.blueprint.markdown"
56
- ];
57
- var DEFAULT_CRON = "0 9 * * *";
58
- var DEFAULT_INSTRUCTIONS = `Summarize recent activity in this space into a markdown document.
59
-
60
- Review new messages in the inbox and recently changed objects. Produce a short digest grouped by theme,
61
- highlight anything that needs attention, and write it to a markdown document titled with the current date.
62
- `;
63
- var dailyDigest = {
64
- id: "org.dxos.automation.dailyDigest",
65
- label: "Daily Digest",
66
- icon: "ph--list-bullets--regular",
67
- scaffold: ({ name }) => makeScheduledRoutineAutomation({
68
- name: name ?? "Daily Digest",
69
- instructions: DEFAULT_INSTRUCTIONS,
70
- blueprintKeys: BLUEPRINT_KEYS,
71
- cron: DEFAULT_CRON
72
- })
73
- };
74
-
75
- // src/templates/research-brief.ts
76
- var BLUEPRINT_KEYS2 = [
77
- "org.dxos.blueprint.research",
78
- "org.dxos.blueprint.webSearch",
79
- "org.dxos.blueprint.markdown",
80
- "org.dxos.blueprint.database"
81
- ];
82
- var DEFAULT_CRON2 = "0 9 * * 1";
83
- var DEFAULT_INSTRUCTIONS2 = `Research the topic below and write a concise brief to a new markdown document.
84
-
85
- Topic: (replace with the topic you want tracked)
86
-
87
- Gather current information with the web-search and research tools. Summarize the key developments, link the
88
- sources you used, and create a markdown document titled with the topic and the current date.
89
- `;
90
- var researchBrief = {
91
- id: "org.dxos.automation.researchBrief",
92
- label: "Research Brief",
93
- icon: "ph--newspaper--regular",
94
- scaffold: ({ name }) => makeScheduledRoutineAutomation({
95
- name: name ?? "Research Brief",
96
- instructions: DEFAULT_INSTRUCTIONS2,
97
- blueprintKeys: BLUEPRINT_KEYS2,
98
- cron: DEFAULT_CRON2
99
- })
100
- };
101
-
102
- // src/templates/index.ts
103
- var automationTemplates = [
104
- researchBrief,
105
- dailyDigest
106
- ];
107
-
108
- // src/capabilities/automation-templates.ts
109
- var automation_templates_default = Capability.makeModule(Effect2.fnUntraced(function* () {
110
- return automationTemplates.map((template) => Capability.contributes(AutomationCapabilities.Template, template));
111
- }));
112
- export {
113
- automation_templates_default as default
114
- };
115
- //# sourceMappingURL=automation-templates-M2XQWGR6.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/automation-templates.ts", "../../../src/templates/scaffold.ts", "../../../src/templates/daily-digest.ts", "../../../src/templates/research-brief.ts", "../../../src/templates/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AutomationCapabilities } from '@dxos/plugin-automation';\n\nimport { automationTemplates } from '../templates';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return automationTemplates.map((template) => Capability.contributes(AutomationCapabilities.Template, template));\n }),\n);\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { AgentPrompt } from '@dxos/assistant-toolkit';\nimport { Blueprint, Operation, Routine, Trigger } from '@dxos/compute';\nimport { Database, Filter, Obj, Ref } from '@dxos/echo';\nimport { Automation } from '@dxos/plugin-automation';\n\n/** Registry key of the persisted AgentPrompt (\"Run Routine\") operation a routine trigger dispatches. */\nconst AGENT_PROMPT_KEY = 'org.dxos.function.prompt';\n\nexport type ScheduledRoutineOptions = {\n name: string;\n instructions: string;\n blueprintKeys: readonly string[];\n cron: string;\n};\n\n/**\n * Scaffold a timer-driven automation: a Routine (instructions + blueprints) run by the shared AgentPrompt\n * operation on a cron schedule. The trigger starts disabled so the user can review the schedule and\n * instructions before activating, and is owned by the automation (cascade-deletes with it); the routine\n * stays independent, since it is edited separately and may be reused.\n */\nexport const makeScheduledRoutineAutomation = ({\n name,\n instructions,\n blueprintKeys,\n cron,\n}: ScheduledRoutineOptions): Effect.Effect<Automation.Automation, Error, Database.Service> =>\n Effect.gen(function* () {\n const blueprints = blueprintKeys.map((key) => Ref.fromURI(Blueprint.registryURI(key)));\n const routine = yield* Database.add(\n Routine.make({\n name,\n instructions,\n // No per-run input; the task lives in the instructions. Unknown (not Void) so the empty trigger\n // input still validates.\n input: Schema.Unknown,\n output: Schema.Void,\n blueprints,\n context: [],\n }),\n );\n\n // The trigger's `function` must reference an in-space PersistentOperation; reuse the space's AgentPrompt\n // or persist it on first use.\n const existingFns = yield* Database.query(\n Filter.and(Filter.type(Operation.PersistentOperation), Filter.key(AGENT_PROMPT_KEY)),\n ).run;\n const agentPromptFn = existingFns[0] ?? (yield* Database.add(Operation.serialize(AgentPrompt)));\n\n const trigger = yield* Database.add(\n Obj.make(Trigger.Trigger, {\n enabled: false,\n function: Ref.make(agentPromptFn),\n spec: Trigger.specTimer(cron),\n input: { prompt: Ref.make(routine), input: {} },\n concurrency: 1,\n }),\n );\n\n const automation = Automation.make({\n name,\n runnable: Ref.make(agentPromptFn),\n triggers: [Ref.make(trigger)],\n });\n Obj.setParent(trigger, automation);\n return automation;\n });\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type AutomationCapabilities } from '@dxos/plugin-automation';\n\nimport { makeScheduledRoutineAutomation } from './scaffold';\n\n/** Inbox supplies new messages; database queries recent objects; markdown writes the digest document. */\nconst BLUEPRINT_KEYS = [\n 'org.dxos.blueprint.inbox',\n 'org.dxos.blueprint.database',\n 'org.dxos.blueprint.markdown',\n] as const;\n\n/** Runs daily by default; the user edits the schedule and the scope by opening the trigger and routine. */\nconst DEFAULT_CRON = '0 9 * * *';\n\nconst DEFAULT_INSTRUCTIONS = `\\\nSummarize recent activity in this space into a markdown document.\n\nReview new messages in the inbox and recently changed objects. Produce a short digest grouped by theme,\nhighlight anything that needs attention, and write it to a markdown document titled with the current date.\n`;\n\nexport const dailyDigest: AutomationCapabilities.Template = {\n id: 'org.dxos.automation.dailyDigest',\n label: 'Daily Digest',\n icon: 'ph--list-bullets--regular',\n scaffold: ({ name }) =>\n makeScheduledRoutineAutomation({\n name: name ?? 'Daily Digest',\n instructions: DEFAULT_INSTRUCTIONS,\n blueprintKeys: BLUEPRINT_KEYS,\n cron: DEFAULT_CRON,\n }),\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type AutomationCapabilities } from '@dxos/plugin-automation';\n\nimport { makeScheduledRoutineAutomation } from './scaffold';\n\n/** The research blueprint drives the brief; web-search, markdown, and database tools support it. */\nconst BLUEPRINT_KEYS = [\n 'org.dxos.blueprint.research',\n 'org.dxos.blueprint.webSearch',\n 'org.dxos.blueprint.markdown',\n 'org.dxos.blueprint.database',\n] as const;\n\n/** Runs weekly by default; the user edits the schedule and the topic by opening the trigger and routine. */\nconst DEFAULT_CRON = '0 9 * * 1';\n\nconst DEFAULT_INSTRUCTIONS = `\\\nResearch the topic below and write a concise brief to a new markdown document.\n\nTopic: (replace with the topic you want tracked)\n\nGather current information with the web-search and research tools. Summarize the key developments, link the\nsources you used, and create a markdown document titled with the topic and the current date.\n`;\n\nexport const researchBrief: AutomationCapabilities.Template = {\n id: 'org.dxos.automation.researchBrief',\n label: 'Research Brief',\n icon: 'ph--newspaper--regular',\n scaffold: ({ name }) =>\n makeScheduledRoutineAutomation({\n name: name ?? 'Research Brief',\n instructions: DEFAULT_INSTRUCTIONS,\n blueprintKeys: BLUEPRINT_KEYS,\n cron: DEFAULT_CRON,\n }),\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type AutomationCapabilities } from '@dxos/plugin-automation';\n\nimport { dailyDigest } from './daily-digest';\nimport { researchBrief } from './research-brief';\n\n/** Generic, subject-less automation templates contributed alongside plugin-automation's Blank. */\nexport const automationTemplates: AutomationCapabilities.Template[] = [researchBrief, dailyDigest];\n"],
5
- "mappings": ";;;AAIA,YAAYA,aAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,8BAA8B;;;ACHvC,YAAYC,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,mBAAmB;AAC5B,SAASC,WAAWC,WAAWC,SAASC,eAAe;AACvD,SAASC,UAAUC,QAAQC,KAAKC,WAAW;AAC3C,SAASC,kBAAkB;AAG3B,IAAMC,mBAAmB;AAelB,IAAMC,iCAAiC,CAAC,EAC7CC,MACAC,cACAC,eACAC,KAAI,MAEGC,WAAI,aAAA;AACT,QAAMC,aAAaH,cAAcI,IAAI,CAACC,QAAQX,IAAIY,QAAQnB,UAAUoB,YAAYF,GAAAA,CAAAA,CAAAA;AAChF,QAAMG,UAAU,OAAOjB,SAASkB,IAC9BpB,QAAQqB,KAAK;IACXZ;IACAC;;;IAGAY,OAAcC;IACdC,QAAeC;IACfX;IACAY,SAAS,CAAA;EACX,CAAA,CAAA;AAKF,QAAMC,cAAc,OAAOzB,SAAS0B,MAClCzB,OAAO0B,IAAI1B,OAAO2B,KAAK/B,UAAUgC,mBAAmB,GAAG5B,OAAOa,IAAIT,gBAAAA,CAAAA,CAAAA,EAClEyB;AACF,QAAMC,gBAAgBN,YAAY,CAAA,MAAO,OAAOzB,SAASkB,IAAIrB,UAAUmC,UAAUrC,WAAAA,CAAAA;AAEjF,QAAMsC,UAAU,OAAOjC,SAASkB,IAC9BhB,IAAIiB,KAAKpB,QAAQA,SAAS;IACxBmC,SAAS;IACTC,UAAUhC,IAAIgB,KAAKY,aAAAA;IACnBK,MAAMrC,QAAQsC,UAAU3B,IAAAA;IACxBU,OAAO;MAAEkB,QAAQnC,IAAIgB,KAAKF,OAAAA;MAAUG,OAAO,CAAC;IAAE;IAC9CmB,aAAa;EACf,CAAA,CAAA;AAGF,QAAMC,aAAapC,WAAWe,KAAK;IACjCZ;IACAkC,UAAUtC,IAAIgB,KAAKY,aAAAA;IACnBW,UAAU;MAACvC,IAAIgB,KAAKc,OAAAA;;EACtB,CAAA;AACA/B,MAAIyC,UAAUV,SAASO,UAAAA;AACvB,SAAOA;AACT,CAAA;;;AChEF,IAAMI,iBAAiB;EACrB;EACA;EACA;;AAIF,IAAMC,eAAe;AAErB,IAAMC,uBAAuB;;;;;AAOtB,IAAMC,cAA+C;EAC1DC,IAAI;EACJC,OAAO;EACPC,MAAM;EACNC,UAAU,CAAC,EAAEC,KAAI,MACfC,+BAA+B;IAC7BD,MAAMA,QAAQ;IACdE,cAAcR;IACdS,eAAeX;IACfY,MAAMX;EACR,CAAA;AACJ;;;AC3BA,IAAMY,kBAAiB;EACrB;EACA;EACA;EACA;;AAIF,IAAMC,gBAAe;AAErB,IAAMC,wBAAuB;;;;;;;AAStB,IAAMC,gBAAiD;EAC5DC,IAAI;EACJC,OAAO;EACPC,MAAM;EACNC,UAAU,CAAC,EAAEC,KAAI,MACfC,+BAA+B;IAC7BD,MAAMA,QAAQ;IACdE,cAAcR;IACdS,eAAeX;IACfY,MAAMX;EACR,CAAA;AACJ;;;AC7BO,IAAMY,sBAAyD;EAACC;EAAeC;;;;AJCtF,IAAA,+BAAeC,WAAWC,WACjBC,mBAAW,aAAA;AAChB,SAAOC,oBAAoBC,IAAI,CAACC,aAAaL,WAAWM,YAAYC,uBAAuBC,UAAUH,QAAAA,CAAAA;AACvG,CAAA,CAAA;",
6
- "names": ["Effect", "Capability", "AutomationCapabilities", "Effect", "Schema", "AgentPrompt", "Blueprint", "Operation", "Routine", "Trigger", "Database", "Filter", "Obj", "Ref", "Automation", "AGENT_PROMPT_KEY", "makeScheduledRoutineAutomation", "name", "instructions", "blueprintKeys", "cron", "gen", "blueprints", "map", "key", "fromURI", "registryURI", "routine", "add", "make", "input", "Unknown", "output", "Void", "context", "existingFns", "query", "and", "type", "PersistentOperation", "run", "agentPromptFn", "serialize", "trigger", "enabled", "function", "spec", "specTimer", "prompt", "concurrency", "automation", "runnable", "triggers", "setParent", "BLUEPRINT_KEYS", "DEFAULT_CRON", "DEFAULT_INSTRUCTIONS", "dailyDigest", "id", "label", "icon", "scaffold", "name", "makeScheduledRoutineAutomation", "instructions", "blueprintKeys", "cron", "BLUEPRINT_KEYS", "DEFAULT_CRON", "DEFAULT_INSTRUCTIONS", "researchBrief", "id", "label", "icon", "scaffold", "name", "makeScheduledRoutineAutomation", "instructions", "blueprintKeys", "cron", "automationTemplates", "researchBrief", "dailyDigest", "Capability", "makeModule", "fnUntraced", "automationTemplates", "map", "template", "contributes", "AutomationCapabilities", "Template"]
7
- }
@@ -1,40 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/capabilities/blueprint-definition.ts
4
- import * as Effect from "effect/Effect";
5
- import { Capabilities, Capability } from "@dxos/app-framework";
6
- import { AppCapabilities } from "@dxos/app-toolkit";
7
- import { AgentBlueprint, AgentBlueprintHandlers, AgentHandlers, AgentWizardBlueprint, AgentWizardHandlers, BlueprintManagerBlueprint, BlueprintManagerHandlers, BrowserBlueprint, DatabaseBlueprint, DatabaseHandlers, DiscordBlueprint, LinearBlueprint, PlanningBlueprint, WebSearchBlueprint, WebSearchHandlers, MemoryBlueprint, AutomationBlueprint, DelegationBlueprint, DelegationHandlers, makeDelegationStrategy, makePlanCompletionGuard } from "@dxos/assistant-toolkit";
8
- import { AutomationCapabilities } from "@dxos/plugin-automation";
9
- import { AssistantBlueprint } from "#blueprints";
10
- var blueprintDefinition = () => Effect.succeed([
11
- Capability.contributes(AppCapabilities.BlueprintDefinition, AssistantBlueprint),
12
- Capability.contributes(AppCapabilities.BlueprintDefinition, BrowserBlueprint),
13
- Capability.contributes(AppCapabilities.BlueprintDefinition, DatabaseBlueprint),
14
- Capability.contributes(AppCapabilities.BlueprintDefinition, WebSearchBlueprint),
15
- Capability.contributes(AppCapabilities.BlueprintDefinition, DiscordBlueprint),
16
- Capability.contributes(AppCapabilities.BlueprintDefinition, LinearBlueprint),
17
- Capability.contributes(AppCapabilities.BlueprintDefinition, AgentBlueprint),
18
- Capability.contributes(AppCapabilities.BlueprintDefinition, PlanningBlueprint),
19
- Capability.contributes(AppCapabilities.BlueprintDefinition, MemoryBlueprint),
20
- Capability.contributes(AppCapabilities.BlueprintDefinition, AutomationBlueprint),
21
- Capability.contributes(AppCapabilities.BlueprintDefinition, BlueprintManagerBlueprint),
22
- Capability.contributes(AppCapabilities.BlueprintDefinition, AgentWizardBlueprint),
23
- Capability.contributes(AppCapabilities.BlueprintDefinition, DelegationBlueprint),
24
- Capability.contributes(Capabilities.OperationHandler, AgentHandlers),
25
- Capability.contributes(Capabilities.OperationHandler, AgentBlueprintHandlers),
26
- Capability.contributes(Capabilities.OperationHandler, BlueprintManagerHandlers),
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
- // Run the conversational agent as a supervisor: delegate in-progress plan tasks to sub-agents
32
- // and fold their results back into the conversation (consumed by the AgentService LayerSpec).
33
- Capability.contributes(AutomationCapabilities.AgentDelegationStrategy, makeDelegationStrategy()),
34
- Capability.contributes(AutomationCapabilities.AgentCompletionGuard, makePlanCompletionGuard())
35
- ]);
36
- var blueprint_definition_default = blueprintDefinition;
37
- export {
38
- blueprint_definition_default as default
39
- };
40
- //# sourceMappingURL=blueprint-definition-2XPYI35X.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/blueprint-definition.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport {\n AgentBlueprint,\n AgentBlueprintHandlers,\n AgentHandlers,\n AgentWizardBlueprint,\n AgentWizardHandlers,\n BlueprintManagerBlueprint,\n BlueprintManagerHandlers,\n BrowserBlueprint,\n DatabaseBlueprint,\n DatabaseHandlers,\n DiscordBlueprint,\n LinearBlueprint,\n PlanningBlueprint,\n WebSearchBlueprint,\n WebSearchHandlers,\n MemoryBlueprint,\n AutomationBlueprint,\n DelegationBlueprint,\n DelegationHandlers,\n makeDelegationStrategy,\n makePlanCompletionGuard,\n} from '@dxos/assistant-toolkit';\nimport { AutomationCapabilities } from '@dxos/plugin-automation';\n\nimport { AssistantBlueprint } from '#blueprints';\n\n// NOTE: Explicit annotation required: d.ts emit cannot portably name the inferred @dxos/compute types (TS2883).\nconst blueprintDefinition: () => Effect.Effect<Capability.Capability<unknown>[]> = () =>\n Effect.succeed([\n Capability.contributes(AppCapabilities.BlueprintDefinition, AssistantBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, BrowserBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, DatabaseBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, WebSearchBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, DiscordBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, LinearBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, AgentBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, PlanningBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, MemoryBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, AutomationBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, BlueprintManagerBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, AgentWizardBlueprint),\n Capability.contributes(AppCapabilities.BlueprintDefinition, DelegationBlueprint),\n\n Capability.contributes(Capabilities.OperationHandler, AgentHandlers),\n Capability.contributes(Capabilities.OperationHandler, AgentBlueprintHandlers),\n Capability.contributes(Capabilities.OperationHandler, BlueprintManagerHandlers),\n Capability.contributes(Capabilities.OperationHandler, DatabaseHandlers),\n Capability.contributes(Capabilities.OperationHandler, WebSearchHandlers),\n Capability.contributes(Capabilities.OperationHandler, AgentWizardHandlers),\n Capability.contributes(Capabilities.OperationHandler, DelegationHandlers),\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(AutomationCapabilities.AgentDelegationStrategy, makeDelegationStrategy()),\n Capability.contributes(AutomationCapabilities.AgentCompletionGuard, makePlanCompletionGuard()),\n ]);\n\nexport default blueprintDefinition;\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SACEC,gBACAC,wBACAC,eACAC,sBACAC,qBACAC,2BACAC,0BACAC,kBACAC,mBACAC,kBACAC,kBACAC,iBACAC,mBACAC,oBACAC,mBACAC,iBACAC,qBACAC,qBACAC,oBACAC,wBACAC,+BACK;AACP,SAASC,8BAA8B;AAEvC,SAASC,0BAA0B;AAGnC,IAAMC,sBAA6E,MAC1EC,eAAQ;EACb1B,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBJ,kBAAAA;EAC5DxB,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBnB,gBAAAA;EAC5DT,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBlB,iBAAAA;EAC5DV,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBb,kBAAAA;EAC5Df,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBhB,gBAAAA;EAC5DZ,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBf,eAAAA;EAC5Db,WAAW2B,YAAY1B,gBAAgB2B,qBAAqB1B,cAAAA;EAC5DF,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBd,iBAAAA;EAC5Dd,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBX,eAAAA;EAC5DjB,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBV,mBAAAA;EAC5DlB,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBrB,yBAAAA;EAC5DP,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBvB,oBAAAA;EAC5DL,WAAW2B,YAAY1B,gBAAgB2B,qBAAqBT,mBAAAA;EAE5DnB,WAAW2B,YAAY5B,aAAa8B,kBAAkBzB,aAAAA;EACtDJ,WAAW2B,YAAY5B,aAAa8B,kBAAkB1B,sBAAAA;EACtDH,WAAW2B,YAAY5B,aAAa8B,kBAAkBrB,wBAAAA;EACtDR,WAAW2B,YAAY5B,aAAa8B,kBAAkBlB,gBAAAA;EACtDX,WAAW2B,YAAY5B,aAAa8B,kBAAkBb,iBAAAA;EACtDhB,WAAW2B,YAAY5B,aAAa8B,kBAAkBvB,mBAAAA;EACtDN,WAAW2B,YAAY5B,aAAa8B,kBAAkBT,kBAAAA;;;EAItDpB,WAAW2B,YAAYJ,uBAAuBO,yBAAyBT,uBAAAA,CAAAA;EACvErB,WAAW2B,YAAYJ,uBAAuBQ,sBAAsBT,wBAAAA,CAAAA;CACrE;AAEH,IAAA,+BAAeG;",
6
- "names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "AgentBlueprint", "AgentBlueprintHandlers", "AgentHandlers", "AgentWizardBlueprint", "AgentWizardHandlers", "BlueprintManagerBlueprint", "BlueprintManagerHandlers", "BrowserBlueprint", "DatabaseBlueprint", "DatabaseHandlers", "DiscordBlueprint", "LinearBlueprint", "PlanningBlueprint", "WebSearchBlueprint", "WebSearchHandlers", "MemoryBlueprint", "AutomationBlueprint", "DelegationBlueprint", "DelegationHandlers", "makeDelegationStrategy", "makePlanCompletionGuard", "AutomationCapabilities", "AssistantBlueprint", "blueprintDefinition", "succeed", "contributes", "BlueprintDefinition", "OperationHandler", "AgentDelegationStrategy", "AgentCompletionGuard"]
7
- }
@@ -1,8 +0,0 @@
1
- import {
2
- blueprint_default
3
- } from "../chunk-5H6UJHLF.mjs";
4
- import "../chunk-J5LGTIGS.mjs";
5
- export {
6
- blueprint_default as AssistantBlueprint
7
- };
8
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/processor/presets.ts", "../../../src/processor/processor.ts", "../../../src/util/error-cause.ts", "../../../src/components/Chat/context.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { type ModelName } from '@dxos/ai';\n\nconst ModelProviders = ['dxos-local', 'dxos-remote', 'lm-studio', 'ollama'] as const;\n\nconst ModelProvider = Schema.Literal(...ModelProviders);\ntype ModelProvider = Schema.Schema.Type<typeof ModelProvider>;\n\nexport type AiServicePreset = {\n id: string;\n provider: ModelProvider;\n model: ModelName;\n label?: string;\n};\n\nconst createModelLabel = (model: ModelName) => {\n const parts = model.split('.');\n return parts[parts.length - 1];\n};\n\n// TODO(burdon): Users should be able to create and edit presets.\nexport const AiServicePresets: AiServicePreset[] = [\n // Sonnet is first so it is the default selection.\n {\n provider: 'dxos-remote' as const,\n model: 'ai.claude.model.claude-sonnet-4-6' as const,\n label: 'Claude Sonnet',\n },\n {\n provider: 'dxos-remote' as const,\n model: 'ai.claude.model.claude-opus-4-8' as const,\n label: 'Claude Opus',\n },\n {\n provider: 'dxos-remote' as const,\n model: 'ai.claude.model.claude-haiku-4-5' as const,\n label: 'Claude Haiku',\n },\n {\n provider: 'ollama' as const,\n model: 'ai.ollama.model.gpt-oss:20b' as const,\n },\n {\n provider: 'ollama' as const,\n model: 'ai.ollama.model.gemma4:latest' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: 'ai.google.model.gemma-3-27b' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: 'ai.meta.model.llama-3.2-3b-instruct' as const,\n },\n {\n model: 'ai.ollama.model.deepseek-r1:latest' as const,\n provider: 'dxos-local' as const,\n },\n].map(\n ({ model, provider, label }, i) =>\n ({\n id: `preset-${i}`,\n provider,\n model,\n label: label ?? createModelLabel(model),\n }) satisfies AiServicePreset,\n);\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, DEFAULT_EDGE_MODEL, type ModelName, type ModelRegistry, type OpaqueToolkit } from '@dxos/ai';\nimport { Capabilities } from '@dxos/app-framework';\nimport {\n AiContext,\n AiSession,\n createSystemPrompt,\n formatSystemPrompt,\n McpServerError,\n PartialBlock,\n ToolExecutionServices,\n} from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { 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 { AgentService } from '@dxos/functions-runtime';\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 | Feed.FeedService\n | Credential.CredentialsService\n | AiService.AiService\n | AgentService.AgentService\n | Registry.Service\n | OpaqueToolkit.OpaqueToolkitProvider;\n\nexport type AiChatProcessorOptions = {\n model?: ModelName;\n modelRegistry?: ModelRegistry;\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: DEFAULT_EDGE_MODEL,\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() {\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 blueprints = this.context.getBlueprints();\n const objects = this.context.getObjects();\n return yield* formatSystemPrompt({ system: this._options.system, blueprints, objects });\n }).pipe(\n Effect.provideService(AiContext.Service, { binder: this.context }),\n Effect.provide(this._spaceLayer),\n Effect.orDie,\n ),\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', { feed: Obj.getURI(this._feed), model: this._options.model });\n const session = yield* AgentService.getSession(this._feed, { model: this._options.model });\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", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { type Chat as ChatModule } from '@dxos/assistant-toolkit';\nimport { type Event } from '@dxos/async';\nimport { type Database } from '@dxos/echo';\nimport { type Message } from '@dxos/types';\n\nimport { type AiChatProcessor } from '../../processor';\nimport { type ChatEvent } from './events';\n\n/**\n * Wall-clock timestamps for the most-recent (or in-flight) request, lifted out of\n * `ChatStreamStatus` so the elapsed value survives across re-mounts triggered when wire's\n * drip queue toggles `wireDrainingEffect` (which removes/restores the footer block widget).\n * `endedAt` is `null` while the request is still active.\n */\nexport type ChatRequestTiming = {\n startedAt: number;\n endedAt: number | null;\n};\n\nexport type ChatContextValue = {\n debug?: boolean;\n event: Event<ChatEvent>;\n db?: Database.Database;\n chat?: ChatModule.Chat;\n messages: Message.Message[];\n processor: AiChatProcessor;\n requestTiming: ChatRequestTiming | null;\n};\n\n// Internal: not re-exported from `Chat/index.ts`. Accessed by sibling components in this\n// package (e.g. `ChatStreamStatus`) without dragging in `Chat.tsx`'s heavy transitive\n// imports (transcription, etc.).\nexport const [ChatContextProvider, useChatContext] = createContext<ChatContextValue>('Chat');\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "ModelProviders", "ModelProvider", "Literal", "createModelLabel", "model", "parts", "split", "length", "AiServicePresets", "provider", "label", "map", "i", "id", "Atom", "Registry", "AtomRegistry", "AiError", "Cause", "Effect", "Exit", "Fiber", "Option", "Stream", "DEFAULT_EDGE_MODEL", "AiContext", "createSystemPrompt", "formatSystemPrompt", "McpServerError", "PartialBlock", "ToolExecutionServices", "Operation", "Trace", "Obj", "UsageQuotaExceededError", "EffectEx", "AgentService", "log", "Message", "AssistantOperation", "findInCause", "error", "predicate", "current", "visited", "Set", "has", "add", "Error", "cause", "undefined", "defaultOptions", "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", "blueprints", "objects", "getObjects", "formatSystemPrompt", "Effect", "binder", "provide", "orDie", "set", "active", "gen", "log", "model", "session", "AgentService", "ephemeralStream", "event", "isOfType", "PartialBlock", "McpServerError", "data", "length", "requestProp", "submitPrompt", "waitForCompletion", "Cause", "isInterruptedOnly", "exit", "Option", "undefined", "info", "Fiber", "interrupt", "getSession", "pipe", "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", "createContext", "ChatContextProvider", "useChatContext"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/blueprints/assistant/blueprint.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { templates } from '@dxos/assistant';\nimport { Blueprint } from '@dxos/compute';\n\nimport { AssistantOperation } from '#types';\n\nconst BLUEPRINT_KEY = 'org.dxos.blueprint.assistant';\n\nconst make = () =>\n Blueprint.make({\n key: BLUEPRINT_KEY,\n name: 'Assistant',\n tools: Blueprint.toolDefinitions({\n // TODO(wittjosiah): LayoutOperation.Open requires Capability.Service which is only available\n // via the compute-runtime layer (plugin-automation). 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 blueprint: Blueprint.Definition = {\n key: BLUEPRINT_KEY,\n make,\n};\n\nexport default blueprint;\n"],
5
- "mappings": ";AAIA,SAASA,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAE1B,SAASC,0BAA0B;AAEnC,IAAMC,gBAAgB;AAEtB,IAAMC,OAAO,MACXH,UAAUG,KAAK;EACbC,KAAKF;EACLG,MAAM;EACNC,OAAON,UAAUO,gBAAgB;;;;IAI/BC,YAAY;MAACV,gBAAgBW;MAAMR,mBAAmBS;;EACxD,CAAA;EACAC,cAAcZ,UAAUa;AAC1B,CAAA;AAEF,IAAMC,YAAkC;EACtCT,KAAKF;EACLC;AACF;AAEA,IAAA,oBAAeU;",
6
- "names": ["LayoutOperation", "templates", "Blueprint", "AssistantOperation", "BLUEPRINT_KEY", "make", "key", "name", "tools", "toolDefinitions", "operations", "Open", "ResolveNavigationTargets", "instructions", "system", "blueprint"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/Assistant.ts", "../../../src/types/Settings.ts", "../../../src/types/AssistantOperation.ts", "../../../src/types/AssistantCapabilities.ts", "../../../src/types/AssistantEvents.ts", "../../../src/types/service.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\n// Re-export Chat schema for backward compatibility.\nimport { Chat as ChatModule } from '@dxos/assistant-toolkit';\nexport const Chat = ChatModule.Chat;\nexport type Chat = ChatModule.Chat;\n\n// Re-export Settings as merged const/type (not as namespace).\nimport * as SettingsModule from './Settings';\nexport const Settings = SettingsModule.Settings;\nexport type Settings = SettingsModule.Settings;\n\nexport const ChatViews = SettingsModule.ChatViews;\nexport const ChatView = SettingsModule.ChatView;\nexport type ChatView = SettingsModule.ChatView;\n\nexport const ModelProviders = SettingsModule.ModelProviders;\nexport const ModelProvider = SettingsModule.ModelProvider;\nexport type ModelProvider = SettingsModule.ModelProvider;\n\nexport const ModelDefaults = SettingsModule.ModelDefaults;\nexport type ModelDefaults = SettingsModule.ModelDefaults;\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { SchemaEx } from '@dxos/effect';\n\nexport const ModelProvider = Schema.Union(\n Schema.Literal('edge').annotations({ title: 'DXOS' }),\n Schema.Literal('ollama').annotations({ title: 'Ollama' }),\n Schema.Literal('lmstudio').annotations({ title: 'LM Studio' }),\n);\nexport type ModelProvider = Schema.Schema.Type<typeof ModelProvider>;\nexport const ModelProviders = SchemaEx.getLiteralValues(ModelProvider);\n\nexport const ChatView = Schema.Union(\n Schema.Literal('normal').annotations({ title: 'Normal' }),\n Schema.Literal('summary').annotations({ title: 'Summary' }),\n Schema.Literal('thinking').annotations({ title: 'Thinking' }),\n Schema.Literal('debug').annotations({ title: 'Debug' }),\n);\nexport type ChatView = Schema.Schema.Type<typeof ChatView>;\nexport const ChatViews = SchemaEx.getLiteralValues(ChatView);\n\nexport const ModelDefaults = Schema.mutable(\n Schema.Struct({\n edge: Schema.optional(\n Schema.String.annotations({\n title: 'Remote language model',\n description: 'Choose the remote language model used for AI requests.',\n }),\n ),\n ollama: Schema.optional(\n Schema.String.annotations({\n title: 'Ollama language model',\n description: 'Choose the locally hosted Ollama model for AI requests.',\n }),\n ),\n lmstudio: Schema.optional(\n Schema.String.annotations({\n title: 'LM Studio language model',\n description: 'Choose the locally hosted LM Studio model for AI requests.',\n }),\n ),\n }),\n);\nexport type ModelDefaults = Schema.Schema.Type<typeof ModelDefaults>;\n\nexport const Settings = Schema.mutable(\n Schema.Struct({\n customPrompts: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Use custom prompts',\n description: 'Allow the assistant to use custom prompts defined in your spaces.',\n }),\n ),\n chatView: Schema.optional(\n ChatView.annotations({\n title: 'Chat view',\n description:\n 'Controls which message blocks are shown in the chat: normal hides reasoning, thinking shows reasoning, debug shows raw blocks, summary shows only conversational text.',\n }),\n ),\n modelProvider: Schema.optional(\n ModelProvider.annotations({\n title: 'LLM provider',\n description: 'Select which language model service to use for AI responses.',\n }),\n ),\n modelDefaults: Schema.optional(ModelDefaults),\n tracePanelDebug: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Trace panel debug',\n description: 'Show the raw span tree as JSON in the trace panel instead of the commit graph.',\n }),\n ),\n }),\n);\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { AiService } from '@dxos/ai';\nimport { Capability } from '@dxos/app-framework';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Routine, Operation } from '@dxos/compute';\nimport { Database, Feed, Obj, Ref, Type } from '@dxos/echo';\nimport { DXN } from '@dxos/keys';\n\nimport { meta } from '#meta';\n\nconst makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);\n\nexport const CreateChat = Operation.make({\n meta: { key: makeKey('createChat'), name: 'Create Chat', icon: 'ph--chat-text--regular' },\n services: [Capability.Service],\n input: Schema.Struct({\n db: Database.Database,\n name: Schema.optional(Schema.String),\n /** If false, chat is created in-memory only and not added to space. Defaults to true. */\n addToSpace: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Struct({\n object: Type.getSchema(Chat.Chat),\n }),\n});\n\nexport const UpdateChatName = Operation.make({\n meta: {\n key: makeKey('updateChatName'),\n name: 'Update Chat Name',\n icon: 'ph--pencil--regular',\n },\n services: [Database.Service, Feed.FeedService, AiService.AiService],\n input: Schema.Struct({\n chat: Type.getSchema(Chat.Chat),\n /** Initial user message text; used when the feed has no history yet (e.g. auto-rename on first send). */\n prompt: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n});\n\nexport const SetCurrentChat = Operation.make({\n meta: {\n key: makeKey('setCurrentChat'),\n name: 'Set Current Chat',\n icon: 'ph--chat-text--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n companionTo: Obj.Unknown,\n chat: Type.getSchema(Chat.Chat).pipe(Schema.optional),\n }),\n output: Schema.Void,\n});\n\nexport const RunPromptInNewChat = Operation.make({\n meta: {\n key: makeKey('runPromptInNewChat'),\n name: 'Run Prompt In New Chat',\n icon: 'ph--chat-text--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n db: Database.Database,\n /** Context objects to bind to the new chat. */\n objects: Schema.optional(Schema.Array(Obj.Unknown)),\n /** Blueprint keys to look up and bind to the new chat. */\n blueprints: Schema.optional(Schema.Array(Schema.String)),\n /** Raw instructions or an existing Routine object reference. */\n prompt: Schema.Union(Schema.String, Ref.Ref(Routine.Routine)),\n /**\n * When true, skips opening the chat: runs the Agent prompt operation against the new chat via the compute runtime (traced).\n */\n background: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Struct({\n object: Type.getSchema(Chat.Chat),\n }),\n});\n\nconst NavigationTargetSchema = Schema.Struct({\n path: Schema.String.annotations({ description: 'Navigation path to use with the Open operation.' }),\n label: Schema.String.annotations({ description: 'Human-readable label.' }),\n type: Schema.String.annotations({ description: 'Object type.' }),\n});\n\nexport const ResolveNavigationTargets = Operation.make({\n meta: {\n key: makeKey('resolveNavigationTargets'),\n name: 'Resolve navigation targets',\n description:\n 'Resolve navigation targets within the application. The returned paths can be used with the Open operation. Without a query, returns pages that can be navigated to.',\n icon: 'ph--compass--regular',\n },\n input: Schema.Struct({\n query: Schema.optional(\n Schema.Struct({\n dxn: Schema.optional(DXN.Schema),\n }),\n ),\n }),\n output: Schema.Struct({\n targets: Schema.Array(NavigationTargetSchema),\n }),\n services: [Capability.Service],\n});\n\nexport const ForkChat = Operation.make({\n meta: { key: makeKey('forkChat'), name: 'Fork Chat', icon: 'ph--git-branch--regular', skipRegistry: true },\n services: [Capability.Service, Database.Service],\n input: Schema.Struct({\n chat: Type.getSchema(Chat.Chat),\n /** When provided, the forked chat is set as the companion for this object rather than opened standalone. */\n companionTo: Schema.optional(Obj.Unknown),\n }),\n output: Schema.Struct({\n object: Type.getSchema(Chat.Chat),\n }),\n});\n\nexport const EnsureCompanionChat = Operation.make({\n meta: {\n key: makeKey('ensureCompanionChat'),\n name: 'Ensure Companion Chat',\n icon: 'ph--chat-text--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n db: Database.Database,\n companionTo: Obj.Unknown,\n }),\n output: Schema.Struct({\n chat: Type.getSchema(Chat.Chat),\n /** Whether the returned chat was already persisted in the space. */\n persisted: Schema.Boolean,\n }),\n});\n\nexport const BlueprintForm = Schema.Struct({\n key: Schema.String,\n name: Schema.String,\n description: Schema.optional(Schema.String),\n});\n\nexport const ToggleTracePanelDebug = Operation.make({\n meta: {\n key: makeKey('toggleTracePanelDebug'),\n name: 'Toggle trace panel debug',\n description: 'Toggle trace panel between commit graph and raw span tree JSON.',\n icon: 'ph--bug--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n state: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Boolean,\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type Obj } from '@dxos/echo';\n\nimport { meta } from '#meta';\n\nimport * as Assistant from './Assistant';\n\nexport const Settings = Capability.make<Atom.Writable<Assistant.Settings>>(`${meta.profile.key}.capability.settings`);\n\nexport const StateSchema = Schema.mutable(\n Schema.Struct({\n /** Map of primary object dxn to current chat dxn. */\n currentChat: Schema.Record({ key: Schema.String, value: Schema.UndefinedOr(Schema.String) }),\n /** Map of chat object path to prompt text to auto-submit when the chat opens. */\n pendingPrompts: Schema.Record({ key: Schema.String, value: Schema.UndefinedOr(Schema.String) }),\n }),\n);\n\nexport type AssistantState = Schema.Schema.Type<typeof StateSchema>;\n\nexport const State = Capability.make<Atom.Writable<AssistantState>>(`${meta.profile.key}.capability.state`);\n\n/** Session-scoped cache of transient (not yet persisted) companion chats keyed by companion DXN string. */\nexport const CompanionChatCache = Capability.make<Atom.Writable<Record<string, Obj.Unknown | undefined>>>(\n `${meta.profile.key}.capability.companion-chat-cache`,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { ActivationEvent } from '@dxos/app-framework';\n\nimport { meta } from '#meta';\n\nexport const SetupAiServiceProviders = ActivationEvent.make(`${meta.profile.key}.event.setupAiServiceProviders`);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Operation } from '@dxos/compute';\nimport { ComputeGraph } from '@dxos/conductor';\nimport { DXN, Ref, Type } from '@dxos/echo';\n\n// TODO(burdon): Factor out and reconcile with https://github.com/dxos/dxos/blob/main/packages/plugins/plugin-token-manager/src/defs/presets.ts#L7\n\nconst ApiAuthorizationKey = Schema.Struct({\n type: Schema.Literal('api-key'),\n key: Schema.String,\n placement: Schema.Union(\n Schema.Struct({\n type: Schema.Literal('authorization-header'),\n }),\n Schema.Struct({\n type: Schema.Literal('query'),\n name: Schema.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = Schema.Struct({\n type: Schema.Literal('oauth'),\n clientId: Schema.String,\n clientSecret: Schema.String,\n tokenUrl: Schema.String,\n grantType: Schema.String,\n});\n\nexport const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = Schema.Struct({\n kind: Schema.Literal('function'),\n fn: Ref.Ref(Operation.PersistentOperation),\n});\n\nconst ServiceInterfaceWorkflow = Schema.Struct({\n kind: Schema.Literal('workflow'),\n workflow: Ref.Ref(ComputeGraph),\n});\n\nconst ServiceInterfaceApi = Schema.Struct({\n kind: Schema.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: Schema.optional(Schema.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: Schema.optional(Schema.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: Schema.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = Schema.Union(\n // Service types.\n ServiceInterfaceFunction,\n ServiceInterfaceWorkflow,\n ServiceInterfaceApi,\n) as any;\n\nexport type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;\n\nexport const ServiceType = Schema.Struct({\n serviceId: Schema.String,\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n category: Schema.optional(Schema.String),\n enabled: Schema.optional(Schema.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: Schema.optional(Schema.Array(ServiceInterface)),\n}).pipe(Type.makeObject(DXN.make('org.dxos.type.service', '0.1.0')));\n\nexport type ServiceType = Type.InstanceType<typeof ServiceType>;\n\n//\n// Service Registry\n//\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n"],
5
- "mappings": "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",
6
- "names": ["ChatView", "ChatViews", "ModelDefaults", "ModelProvider", "ModelProviders", "Settings", "Chat", "ChatModule", "Schema", "SchemaEx", "ModelProvider", "Union", "Literal", "annotations", "title", "ModelProviders", "getLiteralValues", "ChatView", "ChatViews", "ModelDefaults", "mutable", "Struct", "edge", "optional", "String", "description", "ollama", "lmstudio", "Settings", "customPrompts", "Boolean", "chatView", "modelProvider", "modelDefaults", "tracePanelDebug", "Chat", "ChatModule", "Settings", "ChatViews", "ChatView", "ModelProviders", "ModelProvider", "ModelDefaults", "Schema", "AiService", "Capability", "Chat", "Routine", "Operation", "Database", "Feed", "Obj", "Ref", "Type", "DXN", "meta", "makeKey", "name", "make", "profile", "key", "CreateChat", "icon", "services", "Service", "input", "Struct", "db", "optional", "String", "addToSpace", "Boolean", "output", "object", "getSchema", "UpdateChatName", "FeedService", "chat", "prompt", "Void", "SetCurrentChat", "companionTo", "Unknown", "pipe", "RunPromptInNewChat", "objects", "Array", "blueprints", "Union", "background", "NavigationTargetSchema", "path", "annotations", "description", "label", "type", "ResolveNavigationTargets", "query", "dxn", "targets", "ForkChat", "skipRegistry", "EnsureCompanionChat", "persisted", "BlueprintForm", "ToggleTracePanelDebug", "state", "Settings", "Schema", "Capability", "meta", "make", "profile", "key", "StateSchema", "mutable", "Struct", "currentChat", "Record", "String", "value", "UndefinedOr", "pendingPrompts", "State", "CompanionChatCache", "ActivationEvent", "meta", "SetupAiServiceProviders", "make", "profile", "key", "Schema", "Operation", "ComputeGraph", "DXN", "Ref", "Type", "ApiAuthorizationKey", "Struct", "type", "Literal", "key", "String", "placement", "Union", "name", "ApiAuthorizationOauth", "clientId", "clientSecret", "tokenUrl", "grantType", "ApiAuthorization", "ServiceInterfaceFunction", "kind", "fn", "PersistentOperation", "ServiceInterfaceWorkflow", "workflow", "ServiceInterfaceApi", "schemaUrl", "optional", "schema", "Any", "authorization", "ServiceInterface", "ServiceType", "serviceId", "description", "category", "enabled", "Boolean", "interfaces", "Array", "pipe", "makeObject", "make", "categoryIcons", "finance", "health", "geolocation", "education", "entertainment", "shopping", "travel", "utilities", "weather"]
7
- }
@@ -1,8 +0,0 @@
1
- // src/operations/index.ts
2
- import { OperationHandlerSet } from "@dxos/compute";
3
- var AssistantOperationHandlerSet = OperationHandlerSet.lazy(() => import("./create-chat-Z3FNA6OJ.mjs"), () => import("./ensure-companion-chat-AMOF3C66.mjs"), () => import("./fork-chat-UYXYT6BT.mjs"), () => import("./resolve-navigation-targets-ZHIMMH7L.mjs"), () => import("./run-prompt-in-new-chat-NIAGCKQV.mjs"), () => import("./set-current-chat-VWBPSIMZ.mjs"), () => import("./toggle-trace-panel-debug-JGTB6KVJ.mjs"), () => import("./update-chat-name-Y7JWIP64.mjs"));
4
-
5
- export {
6
- AssistantOperationHandlerSet
7
- };
8
- //# sourceMappingURL=chunk-7FQT4XMI.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/ChatArticle/ChatArticle.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useCallback, useEffect, useRef } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useAtomCapability, useCapability, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { getSpace } from '@dxos/client/echo';\nimport { type Obj } from '@dxos/echo';\nimport { ClientOperation } from '@dxos/plugin-client';\nimport { useObject, useRegistry } from '@dxos/react-client/echo';\nimport { Panel } from '@dxos/react-ui';\n\nimport { Chat as ChatComponent, type ChatRootProps } from '#components';\nimport { useChatProcessor, useChatServices, useOnline, usePresets } from '#hooks';\nimport { type Assistant, AssistantCapabilities, type ChatType } from '#types';\n\nexport type ChatArticleProps = AppSurface.ObjectSectionProps<ChatType.Chat> & {\n companionTo?: Obj.Unknown;\n} & Pick<ChatRootProps, 'onEvent' | 'onSubmit'>;\n\nexport const ChatArticle = forwardRef<HTMLDivElement, ChatArticleProps>(\n ({ role, attendableId, subject: chat, companionTo, onEvent, onSubmit }, forwardedRef) => {\n const registry = useRegistry();\n const settings = useAtomCapability(AssistantCapabilities.Settings);\n const atomRegistry = useCapability(Capabilities.AtomRegistry);\n const stateAtom = useCapability(AssistantCapabilities.State);\n // Transient (pre-submit) chats have no database; fall back to the companion's space.\n const space = getSpace(chat) ?? getSpace(companionTo);\n const runtime = useChatServices({ id: space?.id });\n\n const [online, setOnline] = useOnline();\n const { preset, ...chatProps } = usePresets(online);\n const processor = useChatProcessor({ space, chat, preset, runtime, registry, settings });\n\n // Subscribe to the view type via `useObject` so the thread re-renders when ChatOptions changes it;\n // a direct `chat.viewType` read in render does not establish a reactive dependency.\n const [chatViewType] = useObject(chat, 'viewType');\n const viewType = (chatViewType as Assistant.ChatView | undefined) ?? settings.chatView;\n\n const { invokePromise } = useOperationInvoker();\n const handleViewUsage = useCallback(() => {\n void invokePromise(ClientOperation.OpenUsage, undefined);\n }, [invokePromise]);\n\n // Reset the one-shot guard when the target conversation changes, so a pending prompt for a new\n // `attendableId` is still auto-submitted within the same mount.\n const pendingSubmitted = useRef(false);\n useEffect(() => {\n pendingSubmitted.current = false;\n }, [attendableId]);\n\n useEffect(() => {\n if (!processor || !attendableId || pendingSubmitted.current) {\n return;\n }\n\n const state = atomRegistry.get(stateAtom);\n const pendingPrompt = state.pendingPrompts[attendableId];\n if (pendingPrompt) {\n pendingSubmitted.current = true;\n atomRegistry.update(stateAtom, (current) => {\n const { [attendableId]: _, ...rest } = current.pendingPrompts;\n return { ...current, pendingPrompts: rest };\n });\n\n void processor.request({ message: pendingPrompt });\n }\n }, [processor, attendableId, atomRegistry, stateAtom]);\n\n if (!processor) {\n return null;\n }\n\n return (\n <ChatComponent.Root\n chat={chat}\n feed={chat?.feed.target}\n db={space?.db}\n processor={processor}\n onEvent={onEvent}\n onSubmit={onSubmit}\n >\n <Panel.Root role={role} ref={forwardedRef}>\n <Panel.Toolbar className='bg-toolbar-surface'>\n <ChatComponent.Toolbar classNames='dx-document' attendableId={attendableId} companionTo={companionTo} />\n </Panel.Toolbar>\n <Panel.Content>\n <ChatComponent.Content>\n <div className='dx-container relative'>\n <ChatComponent.Thread viewType={viewType} onViewUsage={handleViewUsage} />\n {viewType !== 'summary' && (\n <div className='absolute bottom-2 left-0 right-0'>\n <div className='dx-document px-4'>\n <ChatComponent.Status classNames='px-3 rounded-sm bg-group-surface' />\n </div>\n </div>\n )}\n </div>\n <div className='dx-document px-4 pb-4'>\n <div className='flex flex-col items-center py-2 overflow-hidden'>\n <ChatComponent.TaskList classNames='max-h-[120px] border border-separator rounded-sm text-description' />\n </div>\n <ChatComponent.Prompt\n {...chatProps}\n outline\n preset={preset?.id}\n online={online}\n onOnlineChange={setOnline}\n />\n </div>\n </ChatComponent.Content>\n </Panel.Content>\n </Panel.Root>\n </ChatComponent.Root>\n );\n },\n);\n"],
5
- "mappings": ";AAIA,OAAOA,SAASC,YAAYC,aAAaC,WAAWC,cAAc;AAElE,SAASC,oBAAoB;AAC7B,SAASC,mBAAmBC,eAAeC,2BAA2B;AAEtE,SAASC,gBAAgB;AAEzB,SAASC,uBAAuB;AAChC,SAASC,WAAWC,mBAAmB;AACvC,SAASC,aAAa;AAEtB,SAASC,QAAQC,qBAAyC;AAC1D,SAASC,kBAAkBC,iBAAiBC,WAAWC,kBAAkB;AACzE,SAAyBC,6BAA4C;AAM9D,IAAMC,cAAcpB,2BACzB,CAAC,EAAEqB,MAAMC,cAAcC,SAASC,MAAMC,aAAaC,SAASC,SAAQ,GAAIC,iBAAAA;AACtE,QAAMC,WAAWlB,YAAAA;AACjB,QAAMmB,WAAWzB,kBAAkBc,sBAAsBY,QAAQ;AACjE,QAAMC,eAAe1B,cAAcF,aAAa6B,YAAY;AAC5D,QAAMC,YAAY5B,cAAca,sBAAsBgB,KAAK;AAE3D,QAAMC,QAAQ5B,SAASgB,IAAAA,KAAShB,SAASiB,WAAAA;AACzC,QAAMY,UAAUrB,gBAAgB;IAAEsB,IAAIF,OAAOE;EAAG,CAAA;AAEhD,QAAM,CAACC,QAAQC,SAAAA,IAAavB,UAAAA;AAC5B,QAAM,EAAEwB,QAAQ,GAAGC,UAAAA,IAAcxB,WAAWqB,MAAAA;AAC5C,QAAMI,YAAY5B,iBAAiB;IAAEqB;IAAOZ;IAAMiB;IAAQJ;IAASR;IAAUC;EAAS,CAAA;AAItF,QAAM,CAACc,YAAAA,IAAgBlC,UAAUc,MAAM,UAAA;AACvC,QAAMqB,WAAYD,gBAAmDd,SAASgB;AAE9E,QAAM,EAAEC,cAAa,IAAKxC,oBAAAA;AAC1B,QAAMyC,kBAAkB/C,YAAY,MAAA;AAClC,SAAK8C,cAActC,gBAAgBwC,WAAWC,MAAAA;EAChD,GAAG;IAACH;GAAc;AAIlB,QAAMI,mBAAmBhD,OAAO,KAAA;AAChCD,YAAU,MAAA;AACRiD,qBAAiBC,UAAU;EAC7B,GAAG;IAAC9B;GAAa;AAEjBpB,YAAU,MAAA;AACR,QAAI,CAACyC,aAAa,CAACrB,gBAAgB6B,iBAAiBC,SAAS;AAC3D;IACF;AAEA,UAAMC,QAAQrB,aAAasB,IAAIpB,SAAAA;AAC/B,UAAMqB,gBAAgBF,MAAMG,eAAelC,YAAAA;AAC3C,QAAIiC,eAAe;AACjBJ,uBAAiBC,UAAU;AAC3BpB,mBAAayB,OAAOvB,WAAW,CAACkB,YAAAA;AAC9B,cAAM,EAAE,CAAC9B,YAAAA,GAAeoC,GAAG,GAAGC,KAAAA,IAASP,QAAQI;AAC/C,eAAO;UAAE,GAAGJ;UAASI,gBAAgBG;QAAK;MAC5C,CAAA;AAEA,WAAKhB,UAAUiB,QAAQ;QAAEC,SAASN;MAAc,CAAA;IAClD;EACF,GAAG;IAACZ;IAAWrB;IAAcU;IAAcE;GAAU;AAErD,MAAI,CAACS,WAAW;AACd,WAAO;EACT;AAEA,SACE,sBAAA,cAAC7B,cAAcgD,MAAI;IACjBtC;IACAuC,MAAMvC,MAAMuC,KAAKC;IACjBC,IAAI7B,OAAO6B;IACXtB;IACAjB;IACAC;KAEA,sBAAA,cAACf,MAAMkD,MAAI;IAACzC;IAAY6C,KAAKtC;KAC3B,sBAAA,cAAChB,MAAMuD,SAAO;IAACC,WAAU;KACvB,sBAAA,cAACtD,cAAcqD,SAAO;IAACE,YAAW;IAAc/C;IAA4BG;OAE9E,sBAAA,cAACb,MAAM0D,SAAO,MACZ,sBAAA,cAACxD,cAAcwD,SAAO,MACpB,sBAAA,cAACC,OAAAA;IAAIH,WAAU;KACb,sBAAA,cAACtD,cAAc0D,QAAM;IAAC3B;IAAoB4B,aAAazB;MACtDH,aAAa,aACZ,sBAAA,cAAC0B,OAAAA;IAAIH,WAAU;KACb,sBAAA,cAACG,OAAAA;IAAIH,WAAU;KACb,sBAAA,cAACtD,cAAc4D,QAAM;IAACL,YAAW;SAKzC,sBAAA,cAACE,OAAAA;IAAIH,WAAU;KACb,sBAAA,cAACG,OAAAA;IAAIH,WAAU;KACb,sBAAA,cAACtD,cAAc6D,UAAQ;IAACN,YAAW;OAErC,sBAAA,cAACvD,cAAc8D,QAAM;IAClB,GAAGlC;IACJmC,SAAAA;IACApC,QAAQA,QAAQH;IAChBC;IACAuC,gBAAgBtC;;AAQhC,CAAA;",
6
- "names": ["React", "forwardRef", "useCallback", "useEffect", "useRef", "Capabilities", "useAtomCapability", "useCapability", "useOperationInvoker", "getSpace", "ClientOperation", "useObject", "useRegistry", "Panel", "Chat", "ChatComponent", "useChatProcessor", "useChatServices", "useOnline", "usePresets", "AssistantCapabilities", "ChatArticle", "role", "attendableId", "subject", "chat", "companionTo", "onEvent", "onSubmit", "forwardedRef", "registry", "settings", "Settings", "atomRegistry", "AtomRegistry", "stateAtom", "State", "space", "runtime", "id", "online", "setOnline", "preset", "chatProps", "processor", "chatViewType", "viewType", "chatView", "invokePromise", "handleViewUsage", "OpenUsage", "undefined", "pendingSubmitted", "current", "state", "get", "pendingPrompt", "pendingPrompts", "update", "_", "rest", "request", "message", "Root", "feed", "target", "db", "ref", "Toolbar", "className", "classNames", "Content", "div", "Thread", "onViewUsage", "Status", "TaskList", "Prompt", "outline", "onOnlineChange"]
7
- }