@dxos/plugin-assistant 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a

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 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/hooks/useBlueprintRegistry.ts", "../../../../src/hooks/useChatKeymap.ts", "../../../../src/hooks/useChatProcessor.ts", "../../../../src/hooks/useChatServices.ts", "../../../../src/hooks/useChatToolbarActions.ts", "../../../../src/hooks/useContextBinder.ts", "../../../../src/hooks/useContextObjects.ts", "../../../../src/hooks/useDebug.ts", "../../../../src/hooks/useFilteredTypes.ts", "../../../../src/hooks/useFlush.ts", "../../../../src/hooks/useOnline.ts", "../../../../src/hooks/usePresets.ts", "../../../../src/hooks/useReferencesProvider.ts", "../../../../src/hooks/useTraceMessages.ts", "../../../../src/hooks/useProcessEphemeralStatus.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { Blueprint } from '@dxos/compute';\nimport { type Database, Filter, Obj, Ref, type Registry } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { distinctBy } from '@dxos/util';\n\nexport const useBlueprints = ({ registry, db }: { registry?: Registry.Registry; db?: Database.Database }) => {\n const [registryBlueprints, setRegistryBlueprints] = useState<Blueprint.Blueprint[]>(\n () => registry?.query(Filter.type(Blueprint.Blueprint)).runSync() ?? [],\n );\n\n useEffect(() => {\n if (!registry) {\n setRegistryBlueprints([]);\n return;\n }\n setRegistryBlueprints(registry.query(Filter.type(Blueprint.Blueprint)).runSync());\n return registry.changed.on(() => {\n setRegistryBlueprints(registry.query(Filter.type(Blueprint.Blueprint)).runSync());\n });\n }, [registry]);\n\n const spaceBlueprints = useQuery(db, Filter.type(Blueprint.Blueprint));\n return useMemo(() => {\n const blueprints = distinctBy([...registryBlueprints, ...spaceBlueprints], (b) => Obj.getMeta(b).key);\n blueprints.sort(({ name: a }, { name: b }) => a.localeCompare(b));\n return blueprints;\n }, [registryBlueprints, spaceBlueprints]);\n};\n\n/**\n * Create reactive map of active blueprints (by key).\n */\nexport const useActiveBlueprints = ({ context }: { context?: AiContext.Binder }) => {\n const [active, setActive] = useState<Map<string, Blueprint.Blueprint>>(new Map());\n\n useEffect(() => {\n if (!context) {\n setActive(new Map());\n return;\n }\n\n const updateActive = () => {\n const blueprints = context.getBlueprints();\n setActive(\n new Map(\n blueprints\n .map((blueprint) => [Obj.getMeta(blueprint).key, blueprint] as const)\n .filter((entry): entry is readonly [string, Blueprint.Blueprint] => entry[0] !== undefined),\n ),\n );\n };\n\n // Set initial value.\n updateActive();\n\n // Subscribe to changes.\n return context.subscribeBlueprints(updateActive);\n }, [context]);\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useBlueprintHandlers = ({\n db,\n context,\n registry,\n}: {\n db: Database.Database;\n context?: AiContext.Binder;\n registry?: Registry.Registry;\n}) => {\n const onUpdateBlueprint = useCallback(\n async (key: string, checked: boolean) => {\n if (!context) {\n return;\n }\n\n if (checked) {\n // Check if the blueprint is in the registry — if so, bind via its key URI directly\n // (no DB clone needed). Fall back to an existing DB copy for user-forked blueprints.\n const registryBlueprint = registry\n ?.query(Filter.type(Blueprint.Blueprint))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n\n if (registryBlueprint) {\n await context.bind({ blueprints: [Ref.fromURI(Blueprint.registryURI(key))] });\n } else {\n // User-forked blueprint (in DB but not in registry): bind via DB ref.\n const objects = await db.query(Filter.type(Blueprint.Blueprint)).run();\n const storedBlueprint = objects.find((blueprint) => Obj.getMeta(blueprint).key === key);\n if (storedBlueprint) {\n await context.bind({ blueprints: [Ref.make(storedBlueprint)] });\n }\n }\n } else {\n // Unbind: try registry ref first, then DB ref.\n const registryBlueprint = registry\n ?.query(Filter.type(Blueprint.Blueprint))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n if (registryBlueprint) {\n await context.unbind({ blueprints: [Ref.fromURI(Blueprint.registryURI(key))] });\n } else {\n const objects = await db.query(Filter.type(Blueprint.Blueprint)).run();\n const storedBlueprint = objects.find((blueprint) => Obj.getMeta(blueprint).key === key);\n if (storedBlueprint) {\n await context.unbind({ blueprints: [Ref.make(storedBlueprint)] });\n }\n }\n }\n },\n [db, context, registry],\n );\n\n return { onUpdateBlueprint };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useMemo } from 'react';\n\nimport { type Event } from '@dxos/async';\nimport { isTruthy } from '@dxos/util';\n\nimport { type ChatEvent } from '../components/Chat/events';\n\n/**\n * CodeMirror keymap shared by the chat document (Thread) and the prompt editor — pressing\n * Mod-Arrow keys when either editor is focused emits the corresponding `ChatEvent` on the\n * shared event bus.\n */\nexport const useChatKeymapExtensions = ({ event }: { event: Event<ChatEvent> }): Extension[] => {\n return useMemo<Extension[]>(() => {\n return [\n Prec.highest(\n keymap.of([\n {\n key: 'Mod-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-previous' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-next' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isTruthy);\n }, [event]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport { useContext, useMemo, useState } from 'react';\n\nimport { AiService, OpaqueToolkit } from '@dxos/ai';\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AiSession } from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { Credential, ServiceResolver } from '@dxos/compute';\nimport { Database, Feed, Ref, Registry } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { EffectEx } from '@dxos/effect';\nimport { AgentService } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { type Assistant } from '#types';\n\nimport { AiChatProcessor, type AiServicePreset } from '../processor';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Chat.Chat;\n preset?: AiServicePreset;\n runtime?: Capabilities.ProcessManagerRuntime;\n registry?: Registry.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n runtime,\n registry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n const [session, setSession] = useState<AiSession.Session>();\n useAsyncEffect(async () => {\n if (!space || !chat) {\n return;\n }\n\n const feedTarget = chat.feed.target;\n if (!feedTarget) {\n return;\n }\n const feedServiceLayer = createFeedServiceLayer(space.db);\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Feed.FeedService>().pipe(Effect.provide(feedServiceLayer)),\n );\n const session = new AiSession.Session({\n feed: feedTarget,\n runtime,\n registry: observableRegistry,\n });\n await session.open();\n setSession(session);\n return () => {\n void session.close();\n setSession(undefined);\n };\n }, [space, chat?.feed.target]);\n\n const feed = chat?.feed.target;\n const serviceResolver = useCapability(Capabilities.ServiceResolver);\n\n const processor = useMemo(() => {\n if (!runtime || !session || !chat || !feed || !space) {\n return undefined;\n }\n\n const spaceLayer = ServiceResolver.provide(\n { space: space.id },\n Database.Service,\n Feed.FeedService,\n Credential.CredentialsService,\n AiService.AiService,\n AgentService.AgentService,\n Registry.Service,\n OpaqueToolkit.OpaqueToolkitProvider,\n ).pipe(Layer.provide(Layer.succeed(ServiceResolver.ServiceResolver, serviceResolver)));\n\n log('creating processor', { preset, model: preset?.model, settings });\n return new AiChatProcessor(session, runtime, feed, spaceLayer, {\n chat: chat ? Ref.make(chat) : undefined,\n observableRegistry,\n registry,\n model: preset?.model,\n });\n }, [runtime, session, registry, preset, chat, feed, space?.id]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AppSpace } from '@dxos/app-toolkit';\nimport { type Key } from '@dxos/echo';\nimport { useClient } from '@dxos/react-client';\n\nexport type UseChatServicesProps = {\n id?: Key.SpaceId;\n};\n\n/**\n * Resolves the shared {@link Capabilities.ProcessManagerRuntime} for the given space.\n *\n * The runtime itself is space-agnostic; the returned value can be used to run\n * effects that pipe through {@link ServiceResolver.provide} (or the\n * `useSpaceCallback`/`useSpaceService` hooks) with the resolved {@link Key.SpaceId}.\n */\nexport const useChatServices = ({ id }: UseChatServicesProps) => {\n const client = useClient();\n id ??= AppSpace.getPersonalSpace(client)?.id;\n\n const runtime = useCapability(Capabilities.ProcessManagerRuntime);\n return id ? runtime : undefined;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Filter, Obj, Query, Type } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { MenuBuilder, useMenuBuilder } from '@dxos/react-ui-menu';\n\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#types';\n\nimport { useChatContext } from '../components/Chat/context';\n\nexport type ChatToolbarActionsProps = {\n chat?: Chat.Chat;\n companionTo?: Obj.Unknown;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo }: ChatToolbarActionsProps) => {\n const { invoke } = useOperationInvoker();\n const { db } = useChatContext('useChatToolbarActions');\n\n // Stable references in deps avoid circular reference issues.\n return useMenuBuilder(\n (get) => {\n const chats =\n companionTo && db\n ? get(db.query(Query.select(Filter.id(companionTo.id)).targetOf(Chat.CompanionTo).source()).atom)\n : [];\n\n const builder = MenuBuilder.make()\n .root({\n label: ['chat-toolbar.title', { ns: meta.profile.key }],\n })\n .action(\n 'new',\n {\n label: ['new-thread.button', { ns: meta.profile.key }],\n icon: 'ph--plus--regular',\n type: 'new',\n disabled: !companionTo,\n },\n () => {\n invariant(companionTo);\n return invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat: undefined,\n }).pipe(EffectEx.runAndForwardErrors);\n },\n )\n .action(\n 'rename',\n {\n label: ['rename-thread.button', { ns: meta.profile.key }],\n icon: 'ph--magic-wand--regular',\n type: 'rename',\n disabled: !chat,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n )\n .action(\n 'branch',\n {\n label: ['branch-thread.menu', { ns: meta.profile.key }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: !chat || !db,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.ForkChat, { chat, companionTo }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat-history.label', { ns: meta.profile.key }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n get(Obj.atomProperty(chat, 'name'));\n\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object-name.placeholder', { ns: Type.getTypename(Chat.Chat) }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n });\n },\n );\n }\n\n return builder.build();\n },\n [db?.spaceId, companionTo?.id, chat?.id, invoke],\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useContext, useState } from 'react';\n\nimport { AiContext } from '@dxos/assistant';\nimport { Feed } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { EffectEx } from '@dxos/effect';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nexport const useContextBinder = (\n space: Space | undefined,\n feed: Feed.Feed | undefined,\n): AiContext.Binder | undefined => {\n const registry = useContext(RegistryContext) as Registry.Registry;\n const [binder, setBinder] = useState<AiContext.Binder>();\n\n useAsyncEffect(async () => {\n setBinder(undefined);\n if (!space || !feed) {\n return;\n }\n\n const feedServiceLayer = createFeedServiceLayer(space.db);\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Feed.FeedService>().pipe(Effect.provide(feedServiceLayer)),\n );\n const binder = new AiContext.Binder({ feed, runtime, registry });\n await binder.open();\n setBinder(binder);\n\n return () => {\n void binder.close();\n };\n }, [space, feed]);\n\n return binder;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { type Database, type Obj } from '@dxos/echo';\nimport { type URI } from '@dxos/keys';\n\nexport type UseContextObjectsProps = {\n db?: Database.Database;\n context?: AiContext.Binder;\n};\n\nexport type UseContextObjects = {\n objects: Obj.Unknown[];\n onUpdateObject: (dxn: URI.URI, checked: boolean) => Promise<void>;\n};\n\nconst emptyObjectsAtom = Atom.make<Obj.Unknown[]>([]);\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({ db, context }: UseContextObjectsProps): UseContextObjects => {\n const objects = useAtomValue(context?.objects ?? emptyObjectsAtom);\n\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: URI.URI, checked: boolean) => {\n if (!db || !context) {\n return;\n }\n\n const ref = db.makeRef<Obj.Unknown>(dxn);\n await ref.load();\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [db, context],\n );\n\n return {\n objects,\n onUpdateObject: handleUpdateObject,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { trim } from '@dxos/util';\n\nimport { type AiChatProcessor } from '../processor';\n\n/**\n * Returns an async callback that logs the chat's current context, system prompt,\n * and resolved tools to the browser console under a collapsible group.\n * Used by the chat's debug-toggle event handler.\n */\nexport const useDebug = ({ processor }: { processor: AiChatProcessor }) => {\n return useCallback(async () => {\n const objects = processor.context.getObjects();\n const blueprints = processor.context.getBlueprints();\n const system = await processor.getSystemPrompt();\n const tools = (await processor.getTools()) ?? {};\n console.group('Chat', { objects, blueprints });\n try {\n console.log(trim`\n System Prompt:\n ${system}\n `);\n console.log(trim`\n Tools:\n ${Object.values(tools)\n .map((tool) => JSON.stringify(tool, null, 2))\n .join('\\n')}\n `);\n } finally {\n console.groupEnd();\n }\n }, [processor]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\n\nconst getFilteredTypes = (db: Database.Database): Type.AnyEntity[] =>\n Array.from(\n new Set(\n db.graph.registry\n .list()\n .filter(Type.isType)\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false))),\n ),\n );\n\n// TODO(burdon): Pass in filter.\n// TODO(wittjosiah): Factor out.\nexport const useFilteredTypes = (db?: Database.Database): Type.AnyEntity[] => {\n const [types, setTypes] = useState<Type.AnyEntity[]>([]);\n useEffect(() => {\n if (!db) {\n return;\n }\n\n setTypes(getFilteredTypes(db));\n return db.graph.registry.changed.on(() => {\n setTypes(getFilteredTypes(db));\n });\n }, [db]);\n\n return types;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nexport const useFlush = (space?: Space) => {\n const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');\n const resetTimer = useRef<NodeJS.Timeout | null>(null);\n\n const handleFlush = useCallback(() => {\n if (!space) {\n return;\n }\n\n queueMicrotask(async () => {\n if (resetTimer.current) {\n clearTimeout(resetTimer.current);\n }\n\n setState('flushing');\n await space.db.flush();\n setState('flushed');\n\n resetTimer.current = setTimeout(() => {\n setState('idle');\n resetTimer.current = null;\n }, 1_000);\n });\n }, [space]);\n\n return { state, handleFlush };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Dispatch, type SetStateAction, useState } from 'react';\n\nexport const useOnline = (): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const [online, setOnline] = useState(true);\n return [online, setOnline];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type ChatPresetProps } from '#types';\n\nimport { type AiServicePreset, AiServicePresets } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPresetProps, 'presets' | 'onPresetChange'>;\n\nexport const usePresets = (online: boolean): UsePresets => {\n // TODO(burdon): Memo preset for provider.\n const [preset, setPreset] = useState<AiServicePreset>();\n const presets = useMemo(\n () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),\n [online],\n );\n\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n\n useEffect(() => {\n setPreset(presets[0]);\n }, [presets]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPresetProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset: preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = blueprints.map((blueprint) => blueprint.schema).flat();\n // const objects = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const objects = await space.db.query(Filter.everything()).run();\n\n return objects\n .filter(Obj.isObject)\n .filter((object) => stringMatch(query, Obj.getLabel(object) ?? ''))\n .map((object) => ({\n uri: Obj.getURI(object),\n label: Obj.getLabel(object) ?? '',\n }));\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.id(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { pipe } from 'effect/Function';\nimport { useMemo } from 'react';\n\nimport { Trace } from '@dxos/compute';\nimport { Filter, Query } from '@dxos/echo';\nimport { FeedTraceSink } from '@dxos/functions-runtime';\nimport { type Space } from '@dxos/react-client/echo';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\n/**\n * Atom of raw trace messages for a space — the input to `buildExecutionGraph`.\n */\nexport const getTraceMessagesAtom = (space: Space): Atom.Atom<readonly Trace.Message[]> =>\n pipe(\n space.db.query(FeedTraceSink.query).atom,\n Atom.map(\n (feeds) =>\n // TODO(dmaretskyi): Single query with limit(1) and feed traversal when query supports it.\n space.db.query(\n feeds.length > 0\n ? Query.type(Trace.Message).from(feeds[0])\n : (Query.select(Filter.nothing()) as Query.Query<never>),\n ).atom,\n ),\n (atom) => Atom.make((get) => get(get(atom))),\n );\n\n/**\n * Subscribes to the space invocation trace feed.\n */\nexport const useTraceMessages = (space?: Space): readonly Trace.Message[] => {\n const atom = useMemo(() => (space ? getTraceMessagesAtom(space) : atomEmpty), [space]);\n return useAtomValue(atom);\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Stream from 'effect/Stream';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useOptionalCapability } from '@dxos/app-framework/ui';\nimport { Process, ServiceResolver, type Trace } from '@dxos/compute';\nimport { ProcessManager } from '@dxos/compute-runtime';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { resolveEphemeralStatusUpdate } from '#execution-graph';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\nconst ACTIVE_PROCESS_STATES = new Set<Process.State>([Process.State.RUNNING, Process.State.HYBERNATING]);\n\n/** Durable trace lines that represent finished work, not in-flight status. */\nexport const isTerminalActivityLine = (line: string): boolean =>\n line.endsWith(' - Success') || line.endsWith(' - Error') || line === 'Agent completed request';\n\nconst collectDescendantPids = (processes: readonly Process.Info[], rootPid: string): Set<string> => {\n const pids = new Set([rootPid]);\n let expanded = true;\n while (expanded) {\n expanded = false;\n for (const process of processes) {\n const pid = String(process.pid);\n const parentPid = process.parentPid ? String(process.parentPid) : undefined;\n if (parentPid && pids.has(parentPid) && !pids.has(pid)) {\n pids.add(pid);\n expanded = true;\n }\n }\n }\n return pids;\n};\n\nconst resolveSubscribePids = (agentPid: Process.ID, processes: readonly Process.Info[]): Process.ID[] => {\n const rootPid = String(agentPid);\n const descendants = collectDescendantPids(processes, rootPid);\n const activePids = processes\n .filter((process) => descendants.has(String(process.pid)) && ACTIVE_PROCESS_STATES.has(process.state))\n .map((process) => process.pid);\n\n if (activePids.length > 0) {\n return activePids;\n }\n\n return [agentPid];\n};\n\nconst attachActiveHandle = (\n processManager: ProcessManager.Manager,\n pid: Process.ID,\n): Effect.Effect<ProcessManager.Handle<any, any> | undefined> =>\n Effect.gen(function* () {\n const maxAttempts = 15;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const handle = yield* processManager.attach(pid).pipe(Effect.catchAll(() => Effect.succeed(undefined)));\n if (handle && ACTIVE_PROCESS_STATES.has(handle.status.state)) {\n return handle;\n }\n if (handle) {\n return undefined;\n }\n yield* Effect.sleep(100);\n }\n return undefined;\n });\n\n/**\n * Subscribes to ephemeral trace events for a delegated sub-agent process subtree\n * and surfaces the latest pending text or tool-call block as a status line.\n */\nexport const useProcessEphemeralStatus = (\n agentPid: Process.ID | undefined,\n space: Space | undefined,\n): string | undefined => {\n // Optional capabilities: the live status is a progressive enhancement, so the component still\n // renders (e.g. in standalone stories) when there is no plugin manager / process runtime.\n const runtime = useOptionalCapability(Capabilities.ProcessManagerRuntime);\n const monitor = useOptionalCapability(Capabilities.ProcessMonitor);\n const processes = useAtomValue(monitor?.processTreeAtom ?? atomEmpty);\n const [status, setStatus] = useState<string | undefined>();\n const fibersRef = useRef<Fiber.RuntimeFiber<void, unknown>[]>([]);\n\n const subscribePidsKey = useMemo(() => {\n if (!agentPid) {\n return '';\n }\n return resolveSubscribePids(agentPid, processes)\n .map((pid) => String(pid))\n .sort()\n .join('|');\n }, [agentPid, processes]);\n\n useEffect(() => {\n if (!agentPid || !space?.id || !runtime || !subscribePidsKey) {\n setStatus(undefined);\n return;\n }\n\n const pids = subscribePidsKey.split('|').map((pid) => Process.ID.make(pid));\n let disposed = false;\n let replaying = true;\n let replayStatus: string | undefined;\n const endReplay = () => {\n replaying = false;\n if (!disposed) {\n setStatus(replayStatus);\n }\n };\n queueMicrotask(endReplay);\n fibersRef.current = [];\n\n const handleEphemeralMessage = (message: Trace.Message) => {\n const update = resolveEphemeralStatusUpdate(message);\n if (update === 'unchanged') {\n return;\n }\n\n if (replaying) {\n replayStatus = update.line;\n return;\n }\n setStatus(update.line);\n };\n\n const layer = ServiceResolver.provide({ space: space.id }, ProcessManager.ProcessManagerService);\n\n const subscribe = (pid: Process.ID) =>\n Effect.gen(function* () {\n // `attachActiveHandle` polls, so a teardown can land mid-resolve; bail before forking a\n // daemon that the cleanup pass below would never see (and thus never interrupt).\n if (disposed) {\n return;\n }\n const processManager = yield* ProcessManager.ProcessManagerService;\n const handle = yield* attachActiveHandle(processManager, pid);\n if (!handle || disposed) {\n return;\n }\n\n // `forkDaemon` keeps the stream fiber alive after `runPromise(forEach)` returns;\n // scoped `fork` is interrupted when the subscribe effect's parent scope closes.\n const fiber = yield* handle.subscribeEphemeral().pipe(\n Stream.runForEach((message) =>\n Effect.sync(() => {\n if (disposed) {\n return;\n }\n handleEphemeralMessage(message);\n }),\n ),\n Effect.forkDaemon,\n );\n if (disposed) {\n yield* Fiber.interrupt(fiber);\n return;\n }\n fibersRef.current.push(fiber);\n });\n\n void runtime\n .runPromise(\n Effect.forEach(pids, subscribe, { concurrency: 'unbounded', discard: true }).pipe(Effect.provide(layer)),\n )\n .catch(() => {\n if (!disposed) {\n setStatus(undefined);\n }\n });\n\n return () => {\n disposed = true;\n const fibers = fibersRef.current;\n fibersRef.current = [];\n for (const fiber of fibers) {\n void runtime.runPromise(Fiber.interrupt(fiber).pipe(Effect.provide(layer)));\n }\n };\n }, [agentPid, runtime, space?.id, subscribePidsKey]);\n\n return status;\n};\n"],
5
- "mappings": "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",
6
- "names": ["useCallback", "useEffect", "useMemo", "useState", "Blueprint", "Filter", "Obj", "Ref", "useQuery", "distinctBy", "useBlueprints", "registry", "db", "registryBlueprints", "setRegistryBlueprints", "query", "type", "runSync", "changed", "on", "spaceBlueprints", "blueprints", "b", "getMeta", "key", "sort", "name", "a", "localeCompare", "useActiveBlueprints", "context", "active", "setActive", "Map", "updateActive", "getBlueprints", "map", "blueprint", "filter", "entry", "undefined", "subscribeBlueprints", "useBlueprintHandlers", "onUpdateBlueprint", "checked", "registryBlueprint", "find", "bind", "fromURI", "registryURI", "objects", "run", "storedBlueprint", "make", "unbind", "Prec", "keymap", "useMemo", "isTruthy", "useChatKeymapExtensions", "event", "highest", "of", "key", "preventDefault", "run", "emit", "type", "shift", "filter", "RegistryContext", "Effect", "Layer", "useContext", "useMemo", "useState", "AiService", "OpaqueToolkit", "Capabilities", "useCapability", "AiSession", "Credential", "ServiceResolver", "Database", "Feed", "Ref", "Registry", "createFeedServiceLayer", "EffectEx", "AgentService", "log", "useAsyncEffect", "session", "useState", "useAsyncEffect", "space", "AiSession", "feed", "feedTarget", "runtime", "registry", "open", "setSession", "close", "chat", "processor", "useMemo", "undefined", "spaceLayer", "Database", "FeedService", "Credential", "preset", "model", "settings", "observableRegistry", "Capabilities", "useCapability", "AppSpace", "useClient", "useChatServices", "id", "client", "getPersonalSpace", "runtime", "ProcessManagerRuntime", "undefined", "Effect", "useOperationInvoker", "Chat", "Filter", "Obj", "Query", "Type", "EffectEx", "invariant", "MenuBuilder", "useMenuBuilder", "meta", "AssistantOperation", "__dxlog_file", "useChatToolbarActions", "db", "useMenuBuilder", "get", "MenuBuilder", "label", "Filter", "action", "icon", "type", "disabled", "invariant", "companionTo", "chat", "undefined", "pipe", "EffectEx", "Effect", "invoke", "AssistantOperation", "spaceId", "runAndForwardErrors", "chats", "builder", "group", "selectCardinality", "variant", "getLabel", "Obj", "RegistryContext", "Effect", "useContext", "useState", "AiContext", "createFeedServiceLayer", "EffectEx", "useAsyncEffect", "useContextBinder", "space", "feed", "registry", "binder", "setBinder", "undefined", "feedServiceLayer", "db", "runtime", "runAndForwardErrors", "pipe", "provide", "Binder", "open", "close", "Atom", "useAtomValue", "useCallback", "emptyObjectsAtom", "make", "useContextObjects", "db", "context", "objects", "handleUpdateObject", "dxn", "checked", "ref", "makeRef", "load", "bind", "unbind", "onUpdateObject", "useCallback", "trim", "useDebug", "processor", "objects", "context", "getObjects", "blueprints", "getBlueprints", "system", "getSystemPrompt", "tools", "getTools", "console", "group", "log", "Object", "values", "map", "tool", "JSON", "stringify", "join", "groupEnd", "Option", "useEffect", "useState", "Type", "HiddenAnnotation", "getTypeAnnotation", "Kind", "EntityKind", "getFilteredTypes", "db", "Array", "from", "Set", "graph", "registry", "list", "filter", "isType", "schema", "getSchema", "kind", "Relation", "get", "pipe", "getOrElse", "useFilteredTypes", "types", "setTypes", "changed", "on", "useCallback", "useRef", "useState", "useFlush", "space", "state", "setState", "resetTimer", "handleFlush", "queueMicrotask", "current", "clearTimeout", "db", "flush", "setTimeout", "useState", "useOnline", "online", "setOnline", "useCallback", "useEffect", "useMemo", "useState", "usePresets", "online", "preset", "setPreset", "useState", "presets", "useMemo", "AiServicePresets", "filter", "provider", "presetOptions", "map", "id", "model", "label", "useEffect", "handlePresetChange", "useCallback", "find", "onPresetChange", "useMemo", "Filter", "Obj", "useReferencesProvider", "space", "undefined", "getReferences", "query", "objects", "db", "everything", "run", "filter", "isObject", "object", "stringMatch", "getLabel", "map", "uri", "getURI", "label", "resolveReference", "id", "first", "toLowerCase", "startsWith", "Atom", "useAtomValue", "pipe", "useMemo", "Trace", "Filter", "Query", "FeedTraceSink", "atomEmpty", "make", "getTraceMessagesAtom", "space", "db", "query", "atom", "map", "feeds", "length", "type", "Message", "from", "select", "nothing", "get", "useTraceMessages", "Atom", "useAtomValue", "Effect", "Fiber", "Stream", "useEffect", "useMemo", "useRef", "useState", "Capabilities", "useOptionalCapability", "Process", "ServiceResolver", "ProcessManager", "resolveEphemeralStatusUpdate", "atomEmpty", "make", "ACTIVE_PROCESS_STATES", "Set", "State", "RUNNING", "HYBERNATING", "isTerminalActivityLine", "line", "endsWith", "collectDescendantPids", "processes", "rootPid", "pids", "expanded", "process", "pid", "String", "parentPid", "undefined", "has", "add", "resolveSubscribePids", "agentPid", "descendants", "activePids", "filter", "state", "map", "length", "attachActiveHandle", "processManager", "gen", "maxAttempts", "attempt", "handle", "attach", "pipe", "catchAll", "succeed", "status", "sleep", "useProcessEphemeralStatus", "space", "runtime", "ProcessManagerRuntime", "monitor", "ProcessMonitor", "processTreeAtom", "setStatus", "fibersRef", "subscribePidsKey", "sort", "join", "id", "split", "ID", "disposed", "replaying", "replayStatus", "endReplay", "queueMicrotask", "current", "handleEphemeralMessage", "message", "update", "layer", "provide", "ProcessManagerService", "subscribe", "fiber", "subscribeEphemeral", "runForEach", "sync", "forkDaemon", "interrupt", "push", "runPromise", "forEach", "concurrency", "discard", "catch", "fibers"]
3
+ "sources": ["../../../../src/hooks/useSkillRegistry.ts", "../../../../src/hooks/useChatKeymap.ts", "../../../../src/hooks/useChatProcessor.ts", "../../../../src/hooks/useChatServices.ts", "../../../../src/hooks/useChatToolbarActions.ts", "../../../../src/hooks/useContextBinder.ts", "../../../../src/hooks/useContextObjects.ts", "../../../../src/hooks/useDebug.ts", "../../../../src/hooks/useFilteredTypes.ts", "../../../../src/hooks/useFlush.ts", "../../../../src/hooks/usePresets.ts", "../../../../src/hooks/useReferencesProvider.ts", "../../../../src/hooks/useTraceMessages.ts", "../../../../src/hooks/useHomeSuggestions.ts", "../../../../src/hooks/useProcessEphemeralStatus.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { Skill } from '@dxos/compute';\nimport { type Database, Filter, Obj, Ref, type Registry } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { distinctBy } from '@dxos/util';\n\nexport const useSkills = ({ registry, db }: { registry?: Registry.Registry; db?: Database.Database }) => {\n const [registrySkills, setRegistrySkills] = useState<Skill.Skill[]>(\n () => registry?.query(Filter.type(Skill.Skill)).runSync() ?? [],\n );\n\n useEffect(() => {\n if (!registry) {\n setRegistrySkills([]);\n return;\n }\n setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());\n return registry.changed.on(() => {\n setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());\n });\n }, [registry]);\n\n const spaceSkills = useQuery(db, Filter.type(Skill.Skill));\n return useMemo(() => {\n const skills = distinctBy([...registrySkills, ...spaceSkills], (b) => Obj.getMeta(b).key);\n skills.sort(({ name: a }, { name: b }) => a.localeCompare(b));\n return skills;\n }, [registrySkills, spaceSkills]);\n};\n\n/**\n * Create reactive map of active skills (by key).\n */\nexport const useActiveSkills = ({ context }: { context?: AiContext.Binder }) => {\n const [active, setActive] = useState<Map<string, Skill.Skill>>(new Map());\n\n useEffect(() => {\n if (!context) {\n setActive(new Map());\n return;\n }\n\n const updateActive = () => {\n const skills = context.getSkills();\n setActive(\n new Map(\n skills\n .map((skill) => [Obj.getMeta(skill).key, skill] as const)\n .filter((entry): entry is readonly [string, Skill.Skill] => entry[0] !== undefined),\n ),\n );\n };\n\n // Set initial value.\n updateActive();\n\n // Subscribe to changes.\n return context.subscribeSkills(updateActive);\n }, [context]);\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useSkillHandlers = ({\n db,\n context,\n registry,\n}: {\n db: Database.Database;\n context?: AiContext.Binder;\n registry?: Registry.Registry;\n}) => {\n const onUpdateSkill = useCallback(\n async (key: string, checked: boolean) => {\n if (!context) {\n return;\n }\n\n if (checked) {\n // Check if the skill is in the registry — if so, bind via its key URI directly\n // (no DB clone needed). Fall back to an existing DB copy for user-forked skills.\n const registrySkill = registry\n ?.query(Filter.type(Skill.Skill))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n\n if (registrySkill) {\n await context.bind({ skills: [Ref.fromURI(Skill.registryURI(key))] });\n } else {\n // User-forked skill (in DB but not in registry): bind via DB ref.\n const objects = await db.query(Filter.type(Skill.Skill)).run();\n const storedSkill = objects.find((skill) => Obj.getMeta(skill).key === key);\n if (storedSkill) {\n await context.bind({ skills: [Ref.make(storedSkill)] });\n }\n }\n } else {\n // Unbind: try registry ref first, then DB ref.\n const registrySkill = registry\n ?.query(Filter.type(Skill.Skill))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n if (registrySkill) {\n await context.unbind({ skills: [Ref.fromURI(Skill.registryURI(key))] });\n } else {\n const objects = await db.query(Filter.type(Skill.Skill)).run();\n const storedSkill = objects.find((skill) => Obj.getMeta(skill).key === key);\n if (storedSkill) {\n await context.unbind({ skills: [Ref.make(storedSkill)] });\n }\n }\n }\n },\n [db, context, registry],\n );\n\n return { onUpdateSkill };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useMemo } from 'react';\n\nimport { type Event } from '@dxos/async';\nimport { isTruthy } from '@dxos/util';\n\nimport { type ChatEvent } from '../components/Chat/events';\n\n/**\n * CodeMirror keymap shared by the chat document (Thread) and the prompt editor — pressing\n * Mod-Arrow keys when either editor is focused emits the corresponding `ChatEvent` on the\n * shared event bus.\n */\nexport const useChatKeymapExtensions = ({ event }: { event: Event<ChatEvent> }): Extension[] => {\n return useMemo<Extension[]>(() => {\n return [\n Prec.highest(\n keymap.of([\n {\n key: 'Mod-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-previous' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-next' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isTruthy);\n }, [event]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport { useContext, useMemo, useState } from 'react';\n\nimport { AiService, OpaqueToolkit } from '@dxos/ai';\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AiSession } from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { AgentService, Credential, ServiceResolver } from '@dxos/compute';\nimport { Database, Obj, Ref, Registry } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { log } from '@dxos/log';\nimport { type Space, useObject } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { type Assistant } from '#types';\n\nimport { AiChatProcessor, type AiServicePreset } from '../processor';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Chat.Chat;\n preset?: AiServicePreset;\n runtime?: Capabilities.ProcessManagerRuntime;\n registry?: Registry.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n runtime,\n registry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n // Reactive subscription — re-renders when the feed ref resolves. Direct `.target` reads are not reactive.\n const [feedSnapshot] = useObject(chat?.feed);\n const feed = Obj.getReactiveOrUndefined(feedSnapshot);\n\n const [session, setSession] = useState<AiSession.Session>();\n useAsyncEffect(async () => {\n if (!space || !chat || !feed) {\n return;\n }\n\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Database.Service>().pipe(Effect.provide(Database.layer(space.db))),\n );\n const session = new AiSession.Session({\n feed,\n runtime,\n registry: observableRegistry,\n });\n await session.open();\n setSession(session);\n return () => {\n void session.close();\n setSession(undefined);\n };\n }, [space, chat, feed]);\n\n const serviceResolver = useCapability(Capabilities.ServiceResolver);\n\n const processor = useMemo(() => {\n if (!runtime || !session || !chat || !feed || !space) {\n return undefined;\n }\n\n const spaceLayer = ServiceResolver.provide(\n { space: space.id },\n Database.Service,\n Credential.CredentialsService,\n AiService.AiService,\n AgentService.AgentService,\n Registry.Service,\n OpaqueToolkit.OpaqueToolkitProvider,\n ).pipe(Layer.provide(Layer.succeed(ServiceResolver.ServiceResolver, serviceResolver)));\n\n log('creating processor', { preset, model: preset?.model, settings });\n return new AiChatProcessor(session, runtime, feed, spaceLayer, {\n chat: chat ? Ref.make(chat) : undefined,\n observableRegistry,\n registry,\n model: preset?.model,\n provider: preset?.provider,\n });\n }, [runtime, session, registry, preset, chat, feed, space?.id]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AppSpace } from '@dxos/app-toolkit';\nimport { type Key } from '@dxos/echo';\nimport { useClient } from '@dxos/react-client';\n\nexport type UseChatServicesProps = {\n id?: Key.SpaceId;\n};\n\n/**\n * Resolves the shared {@link Capabilities.ProcessManagerRuntime} for the given space.\n *\n * The runtime itself is space-agnostic; the returned value can be used to run\n * effects that pipe through {@link ServiceResolver.provide} (or the\n * `useSpaceCallback`/`useSpaceService` hooks) with the resolved {@link Key.SpaceId}.\n */\nexport const useChatServices = ({ id }: UseChatServicesProps) => {\n const client = useClient();\n id ??= AppSpace.getPersonalSpace(client)?.id;\n\n const runtime = useCapability(Capabilities.ProcessManagerRuntime);\n return id ? runtime : undefined;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Filter, Obj, Query, Type } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { MenuBuilder, useMenuBuilder } from '@dxos/react-ui-menu';\n\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#types';\n\nimport { useChatContext } from '../components/Chat/context';\n\nexport type ChatToolbarActionsProps = {\n chat?: Chat.Chat;\n companionTo?: Obj.Unknown;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo }: ChatToolbarActionsProps) => {\n const { invoke } = useOperationInvoker();\n const { db } = useChatContext('useChatToolbarActions');\n\n // Stable references in deps avoid circular reference issues.\n return useMenuBuilder(\n (get) => {\n const chats =\n companionTo && db\n ? get(db.query(Query.select(Filter.id(companionTo.id)).targetOf(Chat.CompanionTo).source()).atom)\n : [];\n\n const builder = MenuBuilder.make()\n .root({\n label: ['chat-toolbar.title', { ns: meta.profile.key }],\n })\n .action(\n 'new',\n {\n label: ['new-thread.button', { ns: meta.profile.key }],\n icon: 'ph--plus--regular',\n type: 'new',\n disabled: !companionTo,\n },\n () => {\n invariant(companionTo);\n return invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat: undefined,\n }).pipe(EffectEx.runAndForwardErrors);\n },\n )\n .action(\n 'rename',\n {\n label: ['rename-thread.button', { ns: meta.profile.key }],\n icon: 'ph--magic-wand--regular',\n type: 'rename',\n disabled: !chat,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n )\n .action(\n 'branch',\n {\n label: ['branch-thread.menu', { ns: meta.profile.key }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: !chat || !db,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.ForkChat, { chat, companionTo }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat-history.label', { ns: meta.profile.key }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n get(Obj.atomProperty(chat, 'name'));\n\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object-name.placeholder', { ns: Type.getTypename(Chat.Chat) }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n });\n },\n );\n }\n\n return builder.build();\n },\n [db?.spaceId, companionTo?.id, chat?.id, invoke],\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useContext, useState } from 'react';\n\nimport { AiContext } from '@dxos/assistant';\nimport { Database, Feed } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nexport const useContextBinder = (\n space: Space | undefined,\n feed: Feed.Feed | undefined,\n): AiContext.Binder | undefined => {\n const registry = useContext(RegistryContext) as Registry.Registry;\n const [binder, setBinder] = useState<AiContext.Binder>();\n\n useAsyncEffect(async () => {\n setBinder(undefined);\n if (!space || !feed) {\n return;\n }\n\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Database.Service>().pipe(Effect.provide(Database.layer(space.db))),\n );\n const binder = new AiContext.Binder({ feed, runtime, registry });\n await binder.open();\n setBinder(binder);\n\n return () => {\n void binder.close();\n };\n }, [space, feed]);\n\n return binder;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { type Database, type Obj } from '@dxos/echo';\nimport { type URI } from '@dxos/keys';\n\nexport type UseContextObjectsProps = {\n db?: Database.Database;\n context?: AiContext.Binder;\n};\n\nexport type UseContextObjects = {\n objects: Obj.Unknown[];\n onUpdateObject: (dxn: URI.URI, checked: boolean) => Promise<void>;\n};\n\nconst emptyObjectsAtom = Atom.make<Obj.Unknown[]>([]);\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({ db, context }: UseContextObjectsProps): UseContextObjects => {\n const objects = useAtomValue(context?.objects ?? emptyObjectsAtom);\n\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: URI.URI, checked: boolean) => {\n if (!db || !context) {\n return;\n }\n\n const ref = db.makeRef<Obj.Unknown>(dxn);\n await ref.load();\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [db, context],\n );\n\n return {\n objects,\n onUpdateObject: handleUpdateObject,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { trim } from '@dxos/util';\n\nimport { type AiChatProcessor } from '../processor';\n\n/**\n * Returns an async callback that logs the chat's current context, system prompt,\n * and resolved tools to the browser console under a collapsible group.\n * Used by the chat's debug-toggle event handler.\n */\nexport const useDebug = ({ processor }: { processor: AiChatProcessor }) => {\n return useCallback(async () => {\n const objects = processor.context.getObjects();\n const skills = processor.context.getSkills();\n const system = await processor.getSystemPrompt();\n const tools = (await processor.getTools()) ?? {};\n console.group('Chat', { objects, skills });\n try {\n console.log(trim`\n System Prompt:\n ${system}\n `);\n console.log(trim`\n Tools:\n ${Object.values(tools)\n .map((tool) => JSON.stringify(tool, null, 2))\n .join('\\n')}\n `);\n } finally {\n console.groupEnd();\n }\n }, [processor]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\n\nconst getFilteredTypes = (db: Database.Database): Type.AnyEntity[] =>\n Array.from(\n new Set(\n db.graph.registry\n .list()\n .filter(Type.isType)\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false))),\n ),\n );\n\n// TODO(burdon): Pass in filter.\n// TODO(wittjosiah): Factor out.\nexport const useFilteredTypes = (db?: Database.Database): Type.AnyEntity[] => {\n const [types, setTypes] = useState<Type.AnyEntity[]>([]);\n useEffect(() => {\n if (!db) {\n return;\n }\n\n setTypes(getFilteredTypes(db));\n return db.graph.registry.changed.on(() => {\n setTypes(getFilteredTypes(db));\n });\n }, [db]);\n\n return types;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nexport const useFlush = (space?: Space) => {\n const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');\n const resetTimer = useRef<NodeJS.Timeout | null>(null);\n\n const handleFlush = useCallback(() => {\n if (!space) {\n return;\n }\n\n queueMicrotask(async () => {\n if (resetTimer.current) {\n clearTimeout(resetTimer.current);\n }\n\n setState('flushing');\n await space.db.flush();\n setState('flushed');\n\n resetTimer.current = setTimeout(() => {\n setState('idle');\n resetTimer.current = null;\n }, 1_000);\n });\n }, [space]);\n\n return { state, handleFlush };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Provider } from '@dxos/ai';\nimport { useOptionalCapability } from '@dxos/app-framework/ui';\nimport { EffectEx } from '@dxos/effect';\n\nimport { type Assistant, AssistantCapabilities, type ChatPresetProps, Ollama } from '#types';\n\nimport { type AiServicePreset, defaultsKeyForProvider, presetsForProvider, resolveProvider } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPresetProps, 'presets' | 'onPresetChange'>;\n\n/**\n * Resolves the chat model presets for the provider selected in settings ({@link Assistant.Settings.modelProvider}),\n * defaulting the selection to the configured per-provider model.\n */\nexport const usePresets = (settings: Assistant.Settings): UsePresets => {\n const [preset, setPreset] = useState<AiServicePreset>();\n\n // The Ollama manager is the bundled sidecar (desktop only); its presence signals that the\n // `built-in` provider (rather than an external Ollama server) is available.\n const ollamaManager = useOptionalCapability(AssistantCapabilities.OllamaManager);\n\n const provider = resolveProvider(settings.modelProvider, !!ollamaManager);\n const defaultModel = settings.modelDefaults?.[defaultsKeyForProvider(provider)];\n\n // Installed models reported by the bundled sidecar; used to offer only models actually present.\n const localModels = useAtomValue(ollamaManager?.state ?? Ollama.emptyState);\n\n // When the bundled sidecar is the active provider, list installed models in the background so the\n // chat selector is populated without first opening settings. Idempotent: kicks off only from the\n // idle state, so it spawns the sidecar once when local models are in use (not on every launch);\n // settings remains the explicit path for retrying after a failure.\n useEffect(() => {\n if (provider === Provider.builtIn.id && ollamaManager && localModels.kind === 'idle') {\n void EffectEx.runPromise(ollamaManager.refresh);\n }\n }, [provider, ollamaManager, localModels.kind]);\n\n // Probe the external LM Studio server only when that provider is selected on desktop.\n const lmStudioProbeUrl =\n provider === Provider.lmStudio.id && ollamaManager ? `${Provider.lmStudio.endpoint}/v1/models` : undefined;\n const lmStudioReachable = useEndpointReachable(lmStudioProbeUrl);\n\n const presets = useMemo(() => {\n const base = presetsForProvider(provider);\n // Desktop LM Studio: only offer presets when the external server responds.\n if (provider === Provider.lmStudio.id && ollamaManager) {\n return lmStudioReachable ? base : [];\n }\n // Bundled sidecar: only offer models that are actually installed (matched by back-end pull tag).\n if (provider === Provider.builtIn.id && ollamaManager) {\n const installed = new Set(localModels.models.map((model) => model.name));\n return base.filter((preset) => installed.has(preset.backend));\n }\n return base;\n }, [provider, ollamaManager, lmStudioReachable, localModels]);\n\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n\n // Default to the provider's configured model, else the first available preset.\n useEffect(() => {\n const configured = defaultModel ? presets.find((preset) => preset.model === defaultModel) : undefined;\n setPreset(configured ?? presets[0]);\n }, [presets, defaultModel]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPresetProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n\n/** Reactively reports whether an HTTP endpoint responds; `undefined` url disables the probe. */\nconst useEndpointReachable = (url: string | undefined): boolean => {\n const [reachable, setReachable] = useState(false);\n useEffect(() => {\n if (!url) {\n setReachable(false);\n return;\n }\n let active = true;\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 1500);\n fetch(url, { signal: controller.signal })\n .then((response) => active && setReachable(response.ok))\n .catch(() => active && setReachable(false))\n .finally(() => clearTimeout(timer));\n return () => {\n active = false;\n controller.abort();\n clearTimeout(timer);\n };\n }, [url]);\n return reachable;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = skills.map((skill) => skill.schema).flat();\n // const objects = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const objects = await space.db.query(Filter.everything()).run();\n\n return objects\n .filter(Obj.isObject)\n .filter((object) => stringMatch(query, Obj.getLabel(object) ?? ''))\n .map((object) => ({\n uri: Obj.getURI(object),\n label: Obj.getLabel(object) ?? '',\n }));\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.id(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { pipe } from 'effect/Function';\nimport { useMemo } from 'react';\n\nimport { Trace } from '@dxos/compute';\nimport { Filter, Query } from '@dxos/echo';\nimport { FeedTraceSink } from '@dxos/functions-runtime';\nimport { type Space } from '@dxos/react-client/echo';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\n/**\n * Atom of raw trace messages for a space — the input to `buildExecutionGraph`.\n */\nexport const getTraceMessagesAtom = (space: Space): Atom.Atom<readonly Trace.Message[]> =>\n pipe(\n space.db.query(FeedTraceSink.query).atom,\n Atom.map(\n (feeds) =>\n // TODO(dmaretskyi): Single query with limit(1) and feed traversal when query supports it.\n space.db.query(\n feeds.length > 0\n ? Query.type(Trace.Message).from(feeds[0])\n : (Query.select(Filter.nothing()) as Query.Query<never>),\n ).atom,\n ),\n (atom) => Atom.make((get) => get(get(atom))),\n );\n\n/**\n * Subscribes to the space invocation trace feed.\n */\nexport const useTraceMessages = (space?: Space): readonly Trace.Message[] => {\n const atom = useMemo(() => (space ? getTraceMessagesAtom(space) : atomEmpty), [space]);\n return useAtomValue(atom);\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { useMemo, useState } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#types';\n\nconst FALLBACK_SUGGESTION_KEYS = [\n 'space-home.suggestion-magazine.label',\n 'space-home.suggestion-spreadsheet.label',\n 'space-home.suggestion-kanban.label',\n] as const;\n\n/**\n * Returns starter prompts for the space Home page. Returns undefined while the request is in flight\n * so the section stays hidden until settled. On success yields generated prompts; on empty result or\n * error falls back to the hardcoded defaults.\n */\nexport const useHomeSuggestions = (space?: Space): readonly string[] | undefined => {\n const { t } = useTranslation(meta.profile.key);\n const { invokePromise } = useOperationInvoker();\n const fallbacks = useMemo(\n () => FALLBACK_SUGGESTION_KEYS.map((key) => t(key, { year: new Date().getFullYear() })),\n [t],\n );\n const [suggestions, setSuggestions] = useState<readonly string[] | undefined>(undefined);\n\n useAsyncEffect(\n async (controller) => {\n setSuggestions(undefined);\n if (!space) {\n return;\n }\n const result = await invokePromise(\n AssistantOperation.GenerateHomeSuggestions,\n { db: space.db },\n { spaceId: space.db.spaceId },\n );\n if (controller.signal.aborted) {\n return;\n }\n const prompts = result.data?.prompts;\n setSuggestions(prompts && prompts.length > 0 ? prompts : fallbacks);\n },\n [space, invokePromise],\n );\n\n return suggestions;\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Stream from 'effect/Stream';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useOptionalCapability } from '@dxos/app-framework/ui';\nimport { Process, ServiceResolver, type Trace } from '@dxos/compute';\nimport { ProcessManager } from '@dxos/compute-runtime';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { resolveEphemeralStatusUpdate } from '#execution-graph';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\nconst ACTIVE_PROCESS_STATES = new Set<Process.State>([Process.State.RUNNING, Process.State.HYBERNATING]);\n\n/** Durable trace lines that represent finished work, not in-flight status. */\nexport const isTerminalActivityLine = (line: string): boolean =>\n line.endsWith(' - Success') || line.endsWith(' - Error') || line === 'Agent completed request';\n\nconst collectDescendantPids = (processes: readonly Process.Info[], rootPid: string): Set<string> => {\n const pids = new Set([rootPid]);\n let expanded = true;\n while (expanded) {\n expanded = false;\n for (const process of processes) {\n const pid = String(process.pid);\n const parentPid = process.parentPid ? String(process.parentPid) : undefined;\n if (parentPid && pids.has(parentPid) && !pids.has(pid)) {\n pids.add(pid);\n expanded = true;\n }\n }\n }\n return pids;\n};\n\nconst resolveSubscribePids = (agentPid: Process.ID, processes: readonly Process.Info[]): Process.ID[] => {\n const rootPid = String(agentPid);\n const descendants = collectDescendantPids(processes, rootPid);\n const activePids = processes\n .filter((process) => descendants.has(String(process.pid)) && ACTIVE_PROCESS_STATES.has(process.state))\n .map((process) => process.pid);\n\n if (activePids.length > 0) {\n return activePids;\n }\n\n return [agentPid];\n};\n\nconst attachActiveHandle = (\n processManager: ProcessManager.Manager,\n pid: Process.ID,\n): Effect.Effect<ProcessManager.Handle<any, any, never> | undefined> =>\n Effect.gen(function* () {\n const maxAttempts = 15;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const handle = yield* processManager.attach(pid).pipe(Effect.catchAll(() => Effect.succeed(undefined)));\n if (handle && ACTIVE_PROCESS_STATES.has(handle.status.state)) {\n return handle;\n }\n if (handle) {\n return undefined;\n }\n yield* Effect.sleep(100);\n }\n return undefined;\n });\n\n/**\n * Subscribes to ephemeral trace events for a delegated sub-agent process subtree\n * and surfaces the latest pending text or tool-call block as a status line.\n */\nexport const useProcessEphemeralStatus = (\n agentPid: Process.ID | undefined,\n space: Space | undefined,\n): string | undefined => {\n // Optional capabilities: the live status is a progressive enhancement, so the component still\n // renders (e.g. in standalone stories) when there is no plugin manager / process runtime.\n const runtime = useOptionalCapability(Capabilities.ProcessManagerRuntime);\n const monitor = useOptionalCapability(Capabilities.ProcessMonitor);\n const processes = useAtomValue(monitor?.processTreeAtom ?? atomEmpty);\n const [status, setStatus] = useState<string | undefined>();\n const fibersRef = useRef<Fiber.RuntimeFiber<void, unknown>[]>([]);\n\n const subscribePidsKey = useMemo(() => {\n if (!agentPid) {\n return '';\n }\n return resolveSubscribePids(agentPid, processes)\n .map((pid) => String(pid))\n .sort()\n .join('|');\n }, [agentPid, processes]);\n\n useEffect(() => {\n if (!agentPid || !space?.id || !runtime || !subscribePidsKey) {\n setStatus(undefined);\n return;\n }\n\n const pids = subscribePidsKey.split('|').map((pid) => Process.ID.make(pid));\n let disposed = false;\n let replaying = true;\n let replayStatus: string | undefined;\n const endReplay = () => {\n replaying = false;\n if (!disposed) {\n setStatus(replayStatus);\n }\n };\n queueMicrotask(endReplay);\n fibersRef.current = [];\n\n const handleEphemeralMessage = (message: Trace.Message) => {\n const update = resolveEphemeralStatusUpdate(message);\n if (update === 'unchanged') {\n return;\n }\n\n if (replaying) {\n replayStatus = update.line;\n return;\n }\n setStatus(update.line);\n };\n\n const layer = ServiceResolver.provide({ space: space.id }, ProcessManager.ProcessManagerService);\n\n const subscribe = (pid: Process.ID) =>\n Effect.gen(function* () {\n // `attachActiveHandle` polls, so a teardown can land mid-resolve; bail before forking a\n // daemon that the cleanup pass below would never see (and thus never interrupt).\n if (disposed) {\n return;\n }\n const processManager = yield* ProcessManager.ProcessManagerService;\n const handle = yield* attachActiveHandle(processManager, pid);\n if (!handle || disposed) {\n return;\n }\n\n // `forkDaemon` keeps the stream fiber alive after `runPromise(forEach)` returns;\n // scoped `fork` is interrupted when the subscribe effect's parent scope closes.\n const fiber = yield* handle.subscribeEphemeral().pipe(\n Stream.runForEach((message) =>\n Effect.sync(() => {\n if (disposed) {\n return;\n }\n handleEphemeralMessage(message);\n }),\n ),\n Effect.forkDaemon,\n );\n if (disposed) {\n yield* Fiber.interrupt(fiber);\n return;\n }\n fibersRef.current.push(fiber);\n });\n\n void runtime\n .runPromise(\n Effect.forEach(pids, subscribe, { concurrency: 'unbounded', discard: true }).pipe(Effect.provide(layer)),\n )\n .catch(() => {\n if (!disposed) {\n setStatus(undefined);\n }\n });\n\n return () => {\n disposed = true;\n const fibers = fibersRef.current;\n fibersRef.current = [];\n for (const fiber of fibers) {\n void runtime.runPromise(Fiber.interrupt(fiber).pipe(Effect.provide(layer)));\n }\n };\n }, [agentPid, runtime, space?.id, subscribePidsKey]);\n\n return status;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["useCallback", "useEffect", "useMemo", "useState", "Skill", "Filter", "Obj", "Ref", "useQuery", "distinctBy", "useSkills", "registry", "db", "registrySkills", "setRegistrySkills", "query", "type", "runSync", "changed", "on", "spaceSkills", "skills", "b", "getMeta", "key", "sort", "name", "a", "localeCompare", "useActiveSkills", "context", "active", "setActive", "Map", "updateActive", "getSkills", "map", "skill", "filter", "entry", "undefined", "subscribeSkills", "useSkillHandlers", "onUpdateSkill", "checked", "registrySkill", "find", "bind", "fromURI", "registryURI", "objects", "run", "storedSkill", "make", "unbind", "Prec", "keymap", "useMemo", "isTruthy", "useChatKeymapExtensions", "event", "highest", "of", "key", "preventDefault", "run", "emit", "type", "shift", "filter", "RegistryContext", "Effect", "Layer", "useContext", "useMemo", "useState", "AiService", "OpaqueToolkit", "Capabilities", "useCapability", "AiSession", "AgentService", "Credential", "ServiceResolver", "Database", "Obj", "Ref", "Registry", "EffectEx", "log", "useObject", "useAsyncEffect", "runtime", "useObject", "chat", "feed", "session", "setSession", "useState", "useAsyncEffect", "space", "registry", "open", "close", "undefined", "spaceLayer", "Database", "CredentialsService", "preset", "model", "settings", "observableRegistry", "provider", "processor", "Capabilities", "useCapability", "AppSpace", "useClient", "useChatServices", "id", "client", "getPersonalSpace", "runtime", "ProcessManagerRuntime", "undefined", "Effect", "useOperationInvoker", "Chat", "Filter", "Obj", "Query", "Type", "EffectEx", "invariant", "MenuBuilder", "useMenuBuilder", "meta", "AssistantOperation", "__dxlog_file", "useChatToolbarActions", "db", "useMenuBuilder", "get", "MenuBuilder", "label", "Filter", "action", "icon", "type", "disabled", "invariant", "companionTo", "chat", "undefined", "pipe", "EffectEx", "Effect", "invoke", "AssistantOperation", "spaceId", "runAndForwardErrors", "chats", "builder", "group", "selectCardinality", "variant", "getLabel", "Obj", "RegistryContext", "Effect", "useContext", "useState", "AiContext", "Database", "EffectEx", "useAsyncEffect", "useContextBinder", "space", "feed", "registry", "binder", "setBinder", "undefined", "runtime", "runAndForwardErrors", "pipe", "provide", "layer", "db", "Binder", "open", "close", "Atom", "useAtomValue", "useCallback", "emptyObjectsAtom", "make", "useContextObjects", "db", "context", "objects", "handleUpdateObject", "dxn", "checked", "ref", "makeRef", "load", "bind", "unbind", "onUpdateObject", "useCallback", "trim", "useDebug", "processor", "objects", "context", "getObjects", "skills", "getSkills", "system", "getSystemPrompt", "tools", "getTools", "console", "group", "log", "Object", "values", "map", "tool", "JSON", "stringify", "join", "groupEnd", "Option", "useEffect", "useState", "Type", "HiddenAnnotation", "getTypeAnnotation", "Kind", "EntityKind", "getFilteredTypes", "db", "Array", "from", "Set", "graph", "registry", "list", "filter", "isType", "schema", "getSchema", "kind", "Relation", "get", "pipe", "getOrElse", "useFilteredTypes", "types", "setTypes", "changed", "on", "useCallback", "useRef", "useState", "useFlush", "space", "state", "setState", "resetTimer", "handleFlush", "queueMicrotask", "current", "clearTimeout", "db", "flush", "setTimeout", "useAtomValue", "useCallback", "useEffect", "useMemo", "useState", "Provider", "useOptionalCapability", "EffectEx", "AssistantCapabilities", "Ollama", "usePresets", "settings", "preset", "setPreset", "useState", "ollamaManager", "useOptionalCapability", "AssistantCapabilities", "OllamaManager", "provider", "resolveProvider", "modelProvider", "defaultModel", "modelDefaults", "defaultsKeyForProvider", "localModels", "useAtomValue", "state", "Ollama", "emptyState", "useEffect", "Provider", "builtIn", "id", "kind", "EffectEx", "runPromise", "refresh", "lmStudioProbeUrl", "lmStudio", "endpoint", "undefined", "lmStudioReachable", "useEndpointReachable", "presets", "useMemo", "base", "presetsForProvider", "installed", "Set", "models", "map", "model", "name", "filter", "has", "backend", "presetOptions", "label", "configured", "find", "handlePresetChange", "useCallback", "onPresetChange", "url", "reachable", "setReachable", "active", "controller", "AbortController", "timer", "setTimeout", "abort", "fetch", "signal", "then", "response", "ok", "catch", "finally", "clearTimeout", "useMemo", "Filter", "Obj", "useReferencesProvider", "space", "undefined", "getReferences", "query", "objects", "db", "everything", "run", "filter", "isObject", "object", "stringMatch", "getLabel", "map", "uri", "getURI", "label", "resolveReference", "id", "first", "toLowerCase", "startsWith", "Atom", "useAtomValue", "pipe", "useMemo", "Trace", "Filter", "Query", "FeedTraceSink", "atomEmpty", "make", "getTraceMessagesAtom", "space", "db", "query", "atom", "map", "feeds", "length", "type", "Message", "from", "select", "nothing", "get", "useTraceMessages", "useMemo", "useState", "useOperationInvoker", "useAsyncEffect", "useTranslation", "meta", "AssistantOperation", "FALLBACK_SUGGESTION_KEYS", "useHomeSuggestions", "space", "t", "profile", "key", "invokePromise", "fallbacks", "map", "year", "Date", "getFullYear", "suggestions", "setSuggestions", "undefined", "controller", "result", "GenerateHomeSuggestions", "db", "spaceId", "signal", "aborted", "prompts", "data", "length", "Atom", "useAtomValue", "Effect", "Fiber", "Stream", "useEffect", "useMemo", "useRef", "useState", "Capabilities", "useOptionalCapability", "Process", "ServiceResolver", "ProcessManager", "resolveEphemeralStatusUpdate", "atomEmpty", "make", "ACTIVE_PROCESS_STATES", "Set", "State", "RUNNING", "HYBERNATING", "isTerminalActivityLine", "line", "endsWith", "collectDescendantPids", "processes", "rootPid", "pids", "expanded", "process", "pid", "String", "parentPid", "undefined", "has", "add", "resolveSubscribePids", "agentPid", "descendants", "activePids", "filter", "state", "map", "length", "attachActiveHandle", "processManager", "gen", "maxAttempts", "attempt", "handle", "attach", "pipe", "catchAll", "succeed", "status", "sleep", "useProcessEphemeralStatus", "space", "runtime", "ProcessManagerRuntime", "monitor", "ProcessMonitor", "processTreeAtom", "setStatus", "fibersRef", "subscribePidsKey", "sort", "join", "id", "split", "ID", "disposed", "replaying", "replayStatus", "endReplay", "queueMicrotask", "current", "handleEphemeralMessage", "message", "update", "layer", "provide", "ProcessManagerService", "subscribe", "fiber", "subscribeEphemeral", "runForEach", "sync", "forkDaemon", "interrupt", "push", "runPromise", "forEach", "concurrency", "discard", "catch", "fibers"]
7
7
  }
@@ -1,34 +1,38 @@
1
1
  import {
2
2
  getChatPath,
3
3
  getChatsPath
4
- } from "./chunk-35EL65O4.mjs";
5
- import {
6
- ASSISTANT_COMPANION_VARIANT,
7
- ASSISTANT_DIALOG,
8
- meta
9
- } from "./chunk-ZNDQVYUN.mjs";
4
+ } from "./chunk-OZWZGIV2.mjs";
10
5
  import {
11
6
  ApiAuthorization,
12
7
  AssistantCapabilities_exports,
13
8
  AssistantEvents_exports,
14
9
  AssistantOperation_exports,
15
10
  Assistant_exports,
11
+ ChatSurface,
12
+ Ollama_exports,
16
13
  ServiceType,
17
14
  categoryIcons
18
- } from "./chunk-5KB2WRI2.mjs";
15
+ } from "./chunk-6Q4OBGIK.mjs";
16
+ import {
17
+ ASSISTANT_COMPANION_VARIANT,
18
+ ASSISTANT_DIALOG,
19
+ meta
20
+ } from "./chunk-L7AR4VTA.mjs";
19
21
  import {
20
- blueprint_default
21
- } from "./chunk-5H6UJHLF.mjs";
22
+ skill_default
23
+ } from "./chunk-CMPLPDYE.mjs";
22
24
  import "./chunk-J5LGTIGS.mjs";
23
25
  export {
24
26
  ASSISTANT_COMPANION_VARIANT,
25
27
  ASSISTANT_DIALOG,
26
28
  ApiAuthorization,
27
29
  Assistant_exports as Assistant,
28
- blueprint_default as AssistantBlueprint,
29
30
  AssistantCapabilities_exports as AssistantCapabilities,
30
31
  AssistantEvents_exports as AssistantEvents,
31
32
  AssistantOperation_exports as AssistantOperation,
33
+ skill_default as AssistantSkill,
34
+ ChatSurface,
35
+ Ollama_exports as Ollama,
32
36
  ServiceType,
33
37
  categoryIcons,
34
38
  getChatPath,
@@ -0,0 +1,41 @@
1
+ import {
2
+ promptRunExtension
3
+ } from "./chunk-HKLSFB5I.mjs";
4
+ import "./chunk-J5LGTIGS.mjs";
5
+
6
+ // src/capabilities/markdown-extension.ts
7
+ import * as Effect from "effect/Effect";
8
+ import { Capabilities, Capability } from "@dxos/app-framework";
9
+ import { Obj } from "@dxos/echo";
10
+ import { MarkdownCapabilities } from "@dxos/plugin-markdown/types";
11
+ import { RoutineOperation } from "@dxos/plugin-routine/types";
12
+ var markdown_extension_default = Capability.makeModule(Effect.fnUntraced(function* () {
13
+ const capabilities = yield* Capability.Service;
14
+ return Capability.contributes(MarkdownCapabilities.ExtensionProvider, [
15
+ ({ document: doc, viewMode }) => {
16
+ if (viewMode === "source") {
17
+ return void 0;
18
+ }
19
+ if (!doc) {
20
+ return void 0;
21
+ }
22
+ const db = Obj.getDatabase(doc);
23
+ if (!db) {
24
+ return void 0;
25
+ }
26
+ const { invokePromise } = capabilities.get(Capabilities.OperationInvoker);
27
+ return promptRunExtension({
28
+ onRun: (promptText) => {
29
+ void invokePromise(RoutineOperation.RunPromptInNewChat, {
30
+ db,
31
+ instructions: promptText
32
+ });
33
+ }
34
+ });
35
+ }
36
+ ]);
37
+ }));
38
+ export {
39
+ markdown_extension_default as default
40
+ };
41
+ //# sourceMappingURL=markdown-extension-R4TKDTIF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/markdown-extension.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 { Obj } from '@dxos/echo';\nimport { MarkdownCapabilities } from '@dxos/plugin-markdown/types';\nimport { RoutineOperation } from '@dxos/plugin-routine/types';\n\nimport { promptRunExtension } from '../extensions';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n return Capability.contributes(MarkdownCapabilities.ExtensionProvider, [\n ({ document: doc, viewMode }) => {\n if (viewMode === 'source') {\n return undefined;\n }\n\n if (!doc) {\n return undefined;\n }\n\n const db = Obj.getDatabase(doc);\n if (!db) {\n return undefined;\n }\n\n const { invokePromise } = capabilities.get(Capabilities.OperationInvoker);\n\n return promptRunExtension({\n onRun: (promptText) => {\n void invokePromise(RoutineOperation.RunPromptInNewChat, { db, instructions: promptText });\n },\n });\n },\n ]);\n }),\n);\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,WAAW;AACpB,SAASC,4BAA4B;AACrC,SAASC,wBAAwB;AAIjC,IAAA,6BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,eAAe,OAAOH,WAAWI;AAEvC,SAAOJ,WAAWK,YAAYC,qBAAqBC,mBAAmB;IACpE,CAAC,EAAEC,UAAUC,KAAKC,SAAQ,MAAE;AAC1B,UAAIA,aAAa,UAAU;AACzB,eAAOC;MACT;AAEA,UAAI,CAACF,KAAK;AACR,eAAOE;MACT;AAEA,YAAMC,KAAKC,IAAIC,YAAYL,GAAAA;AAC3B,UAAI,CAACG,IAAI;AACP,eAAOD;MACT;AAEA,YAAM,EAAEI,cAAa,IAAKZ,aAAaa,IAAIC,aAAaC,gBAAgB;AAExE,aAAOC,mBAAmB;QACxBC,OAAO,CAACC,eAAAA;AACN,eAAKN,cAAcO,iBAAiBC,oBAAoB;YAAEX;YAAIY,cAAcH;UAAW,CAAA;QACzF;MACF,CAAA;IACF;GACD;AACH,CAAA,CAAA;",
6
+ "names": ["Effect", "Capabilities", "Capability", "Obj", "MarkdownCapabilities", "RoutineOperation", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "contributes", "MarkdownCapabilities", "ExtensionProvider", "document", "doc", "viewMode", "undefined", "db", "Obj", "getDatabase", "invokePromise", "get", "Capabilities", "OperationInvoker", "promptRunExtension", "onRun", "promptText", "RoutineOperation", "RunPromptInNewChat", "instructions"]
7
+ }