@dxos/plugin-assistant 0.9.0 → 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 (619) hide show
  1. package/PLUGIN.mdl +18 -24
  2. package/dist/lib/neutral/{AgentArticle-K7XM46OQ.mjs → AgentArticle-GV6EEW3I.mjs} +9 -8
  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-VNVZCDUR.mjs → ChatArticle-OO7GGEFW.mjs} +2 -2
  12. package/dist/lib/neutral/{ChatCompanion-LBUHYWQG.mjs → ChatCompanion-GIFJRY6I.mjs} +28 -28
  13. package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs.map +7 -0
  14. package/dist/lib/neutral/{ChatDialog-DCA6FLOV.mjs → ChatDialog-5MXN4MXS.mjs} +9 -8
  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/{PlanArticle-TS5ULWYS.mjs → PlanArticle-VPK2IYWU.mjs} +8 -2
  19. package/dist/lib/neutral/PlanArticle-VPK2IYWU.mjs.map +7 -0
  20. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs +114 -0
  21. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs.map +7 -0
  22. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs +63 -0
  23. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs.map +7 -0
  24. package/dist/lib/neutral/TracePanel-JKNWADJ4.mjs +12 -0
  25. package/dist/lib/neutral/TracePanel-JKNWADJ4.mjs.map +7 -0
  26. package/dist/lib/neutral/{TriggerStatus-X7Y5JFZJ.mjs → TriggerStatus-FURRBHYA.mjs} +9 -7
  27. package/dist/lib/neutral/TriggerStatus-FURRBHYA.mjs.map +7 -0
  28. package/dist/lib/neutral/{agent-hydrator-PJBYVMBW.mjs → agent-hydrator-OBO3RHLO.mjs} +3 -4
  29. package/dist/lib/neutral/agent-hydrator-OBO3RHLO.mjs.map +7 -0
  30. package/dist/lib/neutral/{agent-service-WCAP5MLI.mjs → agent-service-XFJ4VQMT.mjs} +6 -6
  31. package/dist/lib/neutral/agent-service-XFJ4VQMT.mjs.map +7 -0
  32. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs +14 -0
  33. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs.map +7 -0
  34. package/dist/lib/neutral/{ai-service-AADUIKBY.mjs → ai-service-DM6YXWUC.mjs} +9 -5
  35. package/dist/lib/neutral/ai-service-DM6YXWUC.mjs.map +7 -0
  36. package/dist/lib/neutral/{app-graph-builder-WUFHQH3Y.mjs → app-graph-builder-OPVOEQY7.mjs} +45 -28
  37. package/dist/lib/neutral/app-graph-builder-OPVOEQY7.mjs.map +7 -0
  38. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs +97 -0
  39. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs.map +7 -0
  40. package/dist/lib/neutral/capabilities/index.mjs +21 -19
  41. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  42. package/dist/lib/neutral/{chunk-KLYLW4WH.mjs → chunk-5IHQ52KJ.mjs} +1 -1
  43. package/dist/lib/neutral/chunk-5IHQ52KJ.mjs.map +7 -0
  44. package/dist/lib/neutral/{chunk-YXRGZYYH.mjs → chunk-6Q4OBGIK.mjs} +87 -59
  45. package/dist/lib/neutral/chunk-6Q4OBGIK.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-BXI2R4OO.mjs +410 -0
  47. package/dist/lib/neutral/chunk-BXI2R4OO.mjs.map +7 -0
  48. package/dist/lib/neutral/{chunk-5H6UJHLF.mjs → chunk-CMPLPDYE.mjs} +12 -12
  49. package/dist/lib/neutral/chunk-CMPLPDYE.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-GPHT3HYS.mjs +8 -0
  51. package/dist/lib/neutral/{chunk-SMFJD7BP.mjs.map → chunk-GPHT3HYS.mjs.map} +2 -2
  52. package/dist/lib/neutral/chunk-HKLSFB5I.mjs +90 -0
  53. package/dist/lib/neutral/chunk-HKLSFB5I.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-L7AR4VTA.mjs +53 -0
  55. package/dist/lib/neutral/chunk-L7AR4VTA.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-LS72HWMM.mjs +42 -0
  57. package/dist/lib/neutral/chunk-LS72HWMM.mjs.map +7 -0
  58. package/dist/lib/neutral/{chunk-HLANPOBA.mjs → chunk-OZWZGIV2.mjs} +5 -3
  59. package/dist/lib/neutral/chunk-OZWZGIV2.mjs.map +7 -0
  60. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs → chunk-QOKLFHUS.mjs} +3 -4
  61. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs.map → chunk-QOKLFHUS.mjs.map} +1 -1
  62. package/dist/lib/neutral/{TracePanel-KTZJ6JNR.mjs → chunk-SCTHQVIJ.mjs} +11 -23
  63. package/dist/lib/neutral/chunk-SCTHQVIJ.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-U4LTLBAX.mjs +56 -0
  65. package/dist/lib/neutral/chunk-U4LTLBAX.mjs.map +7 -0
  66. package/dist/lib/neutral/{chunk-RKVVK3R3.mjs → chunk-UPKFUZ6V.mjs} +22 -17
  67. package/dist/lib/neutral/chunk-UPKFUZ6V.mjs.map +7 -0
  68. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs → chunk-V2Y4XE3O.mjs} +3 -4
  69. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs.map → chunk-V2Y4XE3O.mjs.map} +1 -1
  70. package/dist/lib/neutral/chunk-XVGEJWJX.mjs +133 -0
  71. package/dist/lib/neutral/chunk-XVGEJWJX.mjs.map +7 -0
  72. package/dist/lib/neutral/{companion-chat-provisioner-YZZ73P6E.mjs → companion-chat-provisioner-IQV5VIVE.mjs} +14 -8
  73. package/dist/lib/neutral/companion-chat-provisioner-IQV5VIVE.mjs.map +7 -0
  74. package/dist/lib/neutral/components/index.mjs +749 -632
  75. package/dist/lib/neutral/components/index.mjs.map +4 -4
  76. package/dist/lib/neutral/{integration-provider-RBD3AFJU.mjs → connector-ITLLTBPZ.mjs} +13 -14
  77. package/dist/lib/neutral/connector-ITLLTBPZ.mjs.map +7 -0
  78. package/dist/lib/neutral/containers/index.mjs +15 -13
  79. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  80. package/dist/lib/neutral/{create-chat-SGGQ6HVN.mjs → create-chat-YGVZZYGP.mjs} +18 -16
  81. package/dist/lib/neutral/create-chat-YGVZZYGP.mjs.map +7 -0
  82. package/dist/lib/neutral/{create-object-U2SOFZLR.mjs → create-object-5PAEJ6KM.mjs} +11 -27
  83. package/dist/lib/neutral/create-object-5PAEJ6KM.mjs.map +7 -0
  84. package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs → edge-model-resolver-WDJWDZTT.mjs} +2 -2
  85. package/dist/lib/neutral/execution-graph/index.mjs +336 -62
  86. package/dist/lib/neutral/execution-graph/index.mjs.map +4 -4
  87. package/dist/lib/neutral/extensions/index.mjs +8 -0
  88. package/dist/lib/neutral/{fork-chat-34KEF4ZJ.mjs → fork-chat-RMAAYYQF.mjs} +16 -19
  89. package/dist/lib/neutral/fork-chat-RMAAYYQF.mjs.map +7 -0
  90. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs +93 -0
  91. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs.map +7 -0
  92. package/dist/lib/neutral/hooks/index.mjs +393 -508
  93. package/dist/lib/neutral/hooks/index.mjs.map +4 -4
  94. package/dist/lib/neutral/index.mjs +14 -10
  95. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs +41 -0
  96. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs.map +7 -0
  97. package/dist/lib/neutral/meta.json +1 -1
  98. package/dist/lib/neutral/meta.mjs +1 -1
  99. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs +18 -0
  100. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs.map +7 -0
  101. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs +8 -0
  102. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs.map +7 -0
  103. package/dist/lib/neutral/operations/index.mjs +1 -1
  104. package/dist/lib/neutral/plugin.mjs +2 -2
  105. package/dist/lib/neutral/plugin.workerd.mjs +13 -0
  106. package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
  107. package/dist/lib/neutral/{react-surface-XRTBW5OJ.mjs → react-surface-HEJEK44F.mjs} +42 -45
  108. package/dist/lib/neutral/react-surface-HEJEK44F.mjs.map +7 -0
  109. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs +28 -0
  110. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs.map +7 -0
  111. package/dist/lib/neutral/{run-prompt-in-new-chat-D5IIE2C7.mjs → run-prompt-in-new-chat-RNUJE2FM.mjs} +31 -31
  112. package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs.map +7 -0
  113. package/dist/lib/neutral/{settings-W4BLWQ53.mjs → settings-7Q3RITIT.mjs} +3 -3
  114. package/dist/lib/neutral/{settings-W4BLWQ53.mjs.map → settings-7Q3RITIT.mjs.map} +3 -3
  115. package/dist/lib/neutral/skill-definition-553MQRTR.mjs +8 -0
  116. package/dist/lib/neutral/skill-definition-553MQRTR.mjs.map +7 -0
  117. package/dist/lib/neutral/skills/index.mjs +8 -0
  118. package/dist/lib/neutral/skills/index.mjs.map +7 -0
  119. package/dist/lib/neutral/{state-H3G7QCU6.mjs → state-4LGAKSSD.mjs} +9 -3
  120. package/dist/lib/neutral/state-4LGAKSSD.mjs.map +7 -0
  121. package/dist/lib/neutral/testing.mjs +1 -1
  122. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs +8 -0
  123. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs.map +7 -0
  124. package/dist/lib/neutral/translations.mjs +69 -31
  125. package/dist/lib/neutral/translations.mjs.map +3 -3
  126. package/dist/lib/neutral/types/index.mjs +5 -1
  127. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs → update-chat-name-IJJELRR6.mjs} +3 -3
  128. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs.map → update-chat-name-IJJELRR6.mjs.map} +2 -2
  129. package/dist/types/dx.config.d.ts +28 -0
  130. package/dist/types/dx.config.d.ts.map +1 -0
  131. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  132. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -1
  133. package/dist/types/src/capabilities/agent-hydrator.d.ts +1 -1
  134. package/dist/types/src/capabilities/agent-service.d.ts +1 -2
  135. package/dist/types/src/capabilities/agent-service.d.ts.map +1 -1
  136. package/dist/types/src/capabilities/ai-context.d.ts +1 -2
  137. package/dist/types/src/capabilities/ai-context.d.ts.map +1 -1
  138. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -3
  139. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  140. package/dist/types/src/capabilities/automation-templates.d.ts +1 -2
  141. package/dist/types/src/capabilities/automation-templates.d.ts.map +1 -1
  142. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +1 -1
  143. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
  144. package/dist/types/src/capabilities/{integration-provider.d.ts → connector.d.ts} +2 -2
  145. package/dist/types/src/capabilities/connector.d.ts.map +1 -0
  146. package/dist/types/src/capabilities/create-object.d.ts +1 -27
  147. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  148. package/dist/types/src/capabilities/index.d.ts +18 -57
  149. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  150. package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
  151. package/dist/types/src/capabilities/migrations.d.ts +1 -2
  152. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  153. package/dist/types/src/capabilities/navigation-resolver.d.ts +5 -0
  154. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  156. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  157. package/dist/types/src/capabilities/settings.d.ts +1 -2
  158. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  159. package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
  160. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/state.d.ts +1 -17
  162. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  163. package/dist/types/src/capabilities/toolkit.d.ts +1 -2
  164. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  165. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/Chat/Chat.d.ts +10 -8
  167. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  168. package/dist/types/src/components/Chat/Chat.stories.d.ts +32 -0
  169. package/dist/types/src/components/Chat/Chat.stories.d.ts.map +1 -0
  170. package/dist/types/src/components/Chat/events.d.ts +0 -4
  171. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  172. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -2
  173. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  174. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  175. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +2 -2
  176. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -1
  177. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +5 -5
  178. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -1
  179. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts +9 -0
  180. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts.map +1 -0
  181. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +4 -4
  182. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  183. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +2 -2
  184. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -1
  185. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  186. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +2 -2
  187. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -1
  188. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts +11 -0
  189. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts.map +1 -0
  190. package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -0
  191. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
  192. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +6 -0
  193. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  194. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +1 -0
  195. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -1
  196. package/dist/types/src/components/TaskList/TaskList.d.ts +8 -0
  197. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -1
  198. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +5 -2
  199. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -1
  200. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -3
  201. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  202. package/dist/types/src/components/index.d.ts +1 -4
  203. package/dist/types/src/components/index.d.ts.map +1 -1
  204. package/dist/types/src/constants.d.ts +1 -1
  205. package/dist/types/src/constants.d.ts.map +1 -1
  206. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +2 -2
  207. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
  208. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +1 -1
  209. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +1 -0
  210. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
  211. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts +12 -0
  212. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts.map +1 -0
  213. package/dist/types/src/{components/TemplateEditor/TemplateEditor.stories.d.ts → containers/AssistantSettings/OllamaModels.stories.d.ts} +9 -7
  214. package/dist/types/src/containers/AssistantSettings/OllamaModels.stories.d.ts.map +1 -0
  215. package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts.map +1 -1
  216. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +3 -10
  217. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -1
  218. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +4 -11
  219. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  220. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  221. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts +13 -0
  222. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts.map +1 -0
  223. package/dist/types/src/containers/IntegrationPrompt/index.d.ts +2 -0
  224. package/dist/types/src/{components/RoutineProperties → containers/IntegrationPrompt}/index.d.ts.map +1 -1
  225. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -1
  226. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts +15 -0
  227. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts.map +1 -0
  228. package/dist/types/src/containers/SpaceHomePrompt/index.d.ts +2 -0
  229. package/dist/types/src/containers/SpaceHomePrompt/index.d.ts.map +1 -0
  230. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts +13 -0
  231. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts.map +1 -0
  232. package/dist/types/src/containers/SpaceHomeSuggestions/index.d.ts +2 -0
  233. package/dist/types/src/containers/SpaceHomeSuggestions/index.d.ts.map +1 -0
  234. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -1
  235. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
  236. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +1 -1
  237. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -1
  238. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  239. package/dist/types/src/containers/index.d.ts +4 -3
  240. package/dist/types/src/containers/index.d.ts.map +1 -1
  241. package/dist/types/src/execution-graph/execution-graph.d.ts +20 -1
  242. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
  243. package/dist/types/src/execution-graph/index.d.ts +3 -2
  244. package/dist/types/src/execution-graph/index.d.ts.map +1 -1
  245. package/dist/types/src/execution-graph/pending-block-status.d.ts +26 -0
  246. package/dist/types/src/execution-graph/pending-block-status.d.ts.map +1 -0
  247. package/dist/types/src/execution-graph/pending-block-status.test.d.ts +2 -0
  248. package/dist/types/src/execution-graph/pending-block-status.test.d.ts.map +1 -0
  249. package/dist/types/src/execution-graph/span-tree.d.ts +13 -0
  250. package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -1
  251. package/dist/types/src/extensions/index.d.ts +1 -1
  252. package/dist/types/src/extensions/index.d.ts.map +1 -1
  253. package/dist/types/src/extensions/prompt-extension.d.ts +1 -1
  254. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
  255. package/dist/types/src/feed-logger.d.ts +3 -2
  256. package/dist/types/src/feed-logger.d.ts.map +1 -1
  257. package/dist/types/src/hooks/index.d.ts +4 -2
  258. package/dist/types/src/hooks/index.d.ts.map +1 -1
  259. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  260. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  261. package/dist/types/src/hooks/useHomeSuggestions.d.ts +8 -0
  262. package/dist/types/src/hooks/useHomeSuggestions.d.ts.map +1 -0
  263. package/dist/types/src/hooks/usePresets.d.ts +6 -2
  264. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  265. package/dist/types/src/hooks/useProcessEphemeralStatus.d.ts +10 -0
  266. package/dist/types/src/hooks/useProcessEphemeralStatus.d.ts.map +1 -0
  267. package/dist/types/src/hooks/useSkillRegistry.d.ts +21 -0
  268. package/dist/types/src/hooks/useSkillRegistry.d.ts.map +1 -0
  269. package/dist/types/src/hooks/useTraceMessages.d.ts +12 -0
  270. package/dist/types/src/hooks/useTraceMessages.d.ts.map +1 -0
  271. package/dist/types/src/index.d.ts +1 -1
  272. package/dist/types/src/index.d.ts.map +1 -1
  273. package/dist/types/src/meta.d.ts +32 -2
  274. package/dist/types/src/meta.d.ts.map +1 -1
  275. package/dist/types/src/operations/create-chat.d.ts.map +1 -1
  276. package/dist/types/src/operations/fork-chat.d.ts.map +1 -1
  277. package/dist/types/src/operations/generate-home-suggestions.d.ts +5 -0
  278. package/dist/types/src/operations/generate-home-suggestions.d.ts.map +1 -0
  279. package/dist/types/src/operations/generate-home-suggestions.test.d.ts +2 -0
  280. package/dist/types/src/operations/generate-home-suggestions.test.d.ts.map +1 -0
  281. package/dist/types/src/operations/index.d.ts.map +1 -1
  282. package/dist/types/src/operations/resolve-navigation-targets.d.ts +3 -15
  283. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
  284. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +2 -2
  285. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
  286. package/dist/types/src/paths.d.ts +1 -1
  287. package/dist/types/src/paths.d.ts.map +1 -1
  288. package/dist/types/src/plugin.workerd.d.ts +2 -0
  289. package/dist/types/src/plugin.workerd.d.ts.map +1 -0
  290. package/dist/types/src/processor/presets.d.ts +20 -9
  291. package/dist/types/src/processor/presets.d.ts.map +1 -1
  292. package/dist/types/src/processor/processor.d.ts +33 -209
  293. package/dist/types/src/processor/processor.d.ts.map +1 -1
  294. package/dist/types/src/skills/assistant/index.d.ts +2 -0
  295. package/dist/types/src/skills/assistant/index.d.ts.map +1 -0
  296. package/dist/types/src/skills/assistant/skill.d.ts +4 -0
  297. package/dist/types/src/skills/assistant/skill.d.ts.map +1 -0
  298. package/dist/types/src/skills/assistant/skill.node.test.d.ts +2 -0
  299. package/dist/types/src/skills/assistant/skill.node.test.d.ts.map +1 -0
  300. package/dist/types/src/skills/index.d.ts.map +1 -0
  301. package/dist/types/src/templates/daily-digest.d.ts +2 -2
  302. package/dist/types/src/templates/daily-digest.d.ts.map +1 -1
  303. package/dist/types/src/templates/index.d.ts +3 -3
  304. package/dist/types/src/templates/index.d.ts.map +1 -1
  305. package/dist/types/src/templates/research-brief.d.ts +2 -2
  306. package/dist/types/src/templates/research-brief.d.ts.map +1 -1
  307. package/dist/types/src/templates/routine-templates.test.d.ts +2 -0
  308. package/dist/types/src/templates/routine-templates.test.d.ts.map +1 -0
  309. package/dist/types/src/templates/scaffold.d.ts +9 -9
  310. package/dist/types/src/templates/scaffold.d.ts.map +1 -1
  311. package/dist/types/src/testing/test-generator.d.ts +1 -1
  312. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  313. package/dist/types/src/testing/test-sequence.d.ts +1 -8
  314. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  315. package/dist/types/src/testing/test-trace.d.ts.map +1 -1
  316. package/dist/types/src/translations.d.ts.map +1 -1
  317. package/dist/types/src/types/Assistant.d.ts +5 -12
  318. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  319. package/dist/types/src/types/AssistantCapabilities.d.ts +21 -0
  320. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -1
  321. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -1
  322. package/dist/types/src/types/AssistantOperation.d.ts +17 -110
  323. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -1
  324. package/dist/types/src/types/ChatSurface.d.ts +12 -0
  325. package/dist/types/src/types/ChatSurface.d.ts.map +1 -0
  326. package/dist/types/src/types/Ollama.d.ts +44 -0
  327. package/dist/types/src/types/Ollama.d.ts.map +1 -0
  328. package/dist/types/src/types/Settings.d.ts +5 -4
  329. package/dist/types/src/types/Settings.d.ts.map +1 -1
  330. package/dist/types/src/types/index.d.ts +2 -0
  331. package/dist/types/src/types/index.d.ts.map +1 -1
  332. package/dist/types/src/types/service.d.ts +4 -3
  333. package/dist/types/src/types/service.d.ts.map +1 -1
  334. package/dist/types/src/util/error-cause.d.ts +3 -0
  335. package/dist/types/src/util/error-cause.d.ts.map +1 -0
  336. package/dist/types/src/util/suggestions.d.ts +1 -1
  337. package/dist/types/tsconfig.tsbuildinfo +1 -1
  338. package/dx.config.ts +38 -0
  339. package/package.json +103 -90
  340. package/src/AssistantPlugin.conversations.json +1 -1
  341. package/src/AssistantPlugin.node.ts +5 -5
  342. package/src/AssistantPlugin.test.ts +27 -41
  343. package/src/AssistantPlugin.ts +14 -12
  344. package/src/AssistantPlugin.workerd.ts +15 -6
  345. package/src/capabilities/agent-hydrator.ts +1 -2
  346. package/src/capabilities/agent-service.ts +7 -5
  347. package/src/capabilities/ai-context.ts +7 -32
  348. package/src/capabilities/ai-service.ts +3 -2
  349. package/src/capabilities/app-graph-builder.ts +43 -28
  350. package/src/capabilities/automation-templates.ts +3 -3
  351. package/src/capabilities/companion-chat-provisioner.ts +22 -6
  352. package/src/capabilities/{integration-provider.ts → connector.ts} +7 -12
  353. package/src/capabilities/create-object.ts +9 -26
  354. package/src/capabilities/index.ts +4 -12
  355. package/src/capabilities/markdown-extension.ts +7 -4
  356. package/src/capabilities/navigation-resolver.ts +20 -0
  357. package/src/capabilities/react-surface.tsx +55 -52
  358. package/src/capabilities/settings.ts +2 -2
  359. package/src/capabilities/skill-definition.ts +72 -0
  360. package/src/capabilities/state.ts +8 -1
  361. package/src/components/AgentProperties/AgentProperties.stories.tsx +1 -2
  362. package/src/components/AgentProperties/AgentProperties.tsx +1 -1
  363. package/src/components/Chat/Chat.stories.tsx +94 -0
  364. package/src/components/Chat/Chat.tsx +67 -16
  365. package/src/components/Chat/events.ts +0 -6
  366. package/src/components/ChatPrompt/ChatActions.tsx +185 -20
  367. package/src/components/ChatPrompt/ChatMcpErrors.tsx +1 -1
  368. package/src/components/ChatPrompt/ChatOptions.stories.tsx +3 -3
  369. package/src/components/ChatPrompt/ChatOptions.tsx +43 -50
  370. package/src/components/ChatPrompt/ChatPrompt.tsx +31 -47
  371. package/src/components/ChatPrompt/ChatReferences.tsx +1 -1
  372. package/src/components/ChatPrompt/useChatVoiceInput.ts +103 -0
  373. package/src/components/ChatThread/Anchor.stories.tsx +1 -1
  374. package/src/components/ChatThread/ChatThread.stories.tsx +7 -16
  375. package/src/components/ChatThread/DEBUG.md +23 -0
  376. package/src/components/ChatThread/MarkdownStream.stories.tsx +3 -3
  377. package/src/components/ChatThread/registry.tsx +43 -17
  378. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +2 -2
  379. package/src/components/ChatThread/widgets/SummaryWidget.tsx +1 -1
  380. package/src/components/ChatThread/widgets/SurfaceWidget.tsx +41 -0
  381. package/src/components/ChatThread/widgets/ToolWidget.tsx +1 -1
  382. package/src/components/ChatThread/widgets/index.ts +1 -0
  383. package/src/components/ProcessTree/ProcessTree.stories.tsx +7 -0
  384. package/src/components/ProcessTree/ProcessTree.tsx +183 -88
  385. package/src/components/TaskList/TaskList.stories.tsx +24 -3
  386. package/src/components/TaskList/TaskList.tsx +122 -28
  387. package/src/components/ToolBlock/ToolBlock.tsx +1 -1
  388. package/src/components/Toolbox/Toolbox.tsx +11 -11
  389. package/src/components/index.ts +1 -6
  390. package/src/constants.ts +1 -1
  391. package/src/containers/AgentArticle/AgentArticle.stories.tsx +12 -13
  392. package/src/containers/AgentArticle/AgentArticle.tsx +10 -10
  393. package/src/{components → containers}/AssistantSettings/AssistantSettings.stories.tsx +3 -2
  394. package/src/containers/AssistantSettings/AssistantSettings.tsx +90 -0
  395. package/src/containers/AssistantSettings/OllamaModels.stories.tsx +108 -0
  396. package/src/containers/AssistantSettings/OllamaModels.tsx +255 -0
  397. package/src/containers/ChatArticle/ChatArticle.stories.tsx +3 -3
  398. package/src/containers/ChatArticle/ChatArticle.tsx +25 -28
  399. package/src/containers/ChatCompanion/ChatCompanion.tsx +27 -27
  400. package/src/containers/ChatDialog/ChatDialog.tsx +10 -7
  401. package/src/containers/IntegrationPrompt/IntegrationPrompt.tsx +79 -0
  402. package/src/containers/IntegrationPrompt/index.ts +5 -0
  403. package/src/containers/PlanArticle/PlanArticle.tsx +5 -1
  404. package/src/containers/SpaceHomePrompt/SpaceHomePrompt.tsx +107 -0
  405. package/src/containers/SpaceHomePrompt/index.ts +5 -0
  406. package/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.tsx +83 -0
  407. package/src/containers/SpaceHomeSuggestions/index.ts +5 -0
  408. package/src/containers/TracePanel/TracePanel.stories.tsx +89 -47
  409. package/src/containers/TracePanel/TracePanel.tsx +15 -37
  410. package/src/containers/TracePanel/dxn-extractor.test.ts +2 -2
  411. package/src/containers/TriggerStatus/TriggerStatus.tsx +10 -6
  412. package/src/containers/index.ts +4 -3
  413. package/src/execution-graph/SPEC.md +1 -1
  414. package/src/execution-graph/execution-graph.test.ts +213 -25
  415. package/src/execution-graph/execution-graph.ts +337 -70
  416. package/src/execution-graph/index.ts +15 -5
  417. package/src/execution-graph/pending-block-status.test.ts +114 -0
  418. package/src/execution-graph/pending-block-status.ts +88 -0
  419. package/src/execution-graph/span-tree.test.ts +33 -1
  420. package/src/execution-graph/span-tree.ts +43 -2
  421. package/src/execution-graph/sub-agent-delegation.test.ts +34 -19
  422. package/src/extensions/index.ts +1 -1
  423. package/src/extensions/prompt-extension.ts +102 -73
  424. package/src/feed-logger.ts +24 -22
  425. package/src/functions/services.test.ts +4 -4
  426. package/src/hooks/index.ts +4 -2
  427. package/src/hooks/useChatProcessor.ts +12 -16
  428. package/src/hooks/useChatServices.ts +2 -2
  429. package/src/hooks/useChatToolbarActions.ts +5 -5
  430. package/src/hooks/useContextBinder.ts +2 -4
  431. package/src/hooks/useDebug.ts +2 -2
  432. package/src/hooks/useHomeSuggestions.ts +55 -0
  433. package/src/hooks/usePresets.ts +80 -11
  434. package/src/hooks/useProcessEphemeralStatus.ts +192 -0
  435. package/src/hooks/useReferencesProvider.ts +1 -1
  436. package/src/hooks/useSkillRegistry.ts +125 -0
  437. package/src/hooks/useTraceMessages.ts +41 -0
  438. package/src/index.ts +1 -1
  439. package/src/meta.ts +3 -31
  440. package/src/operations/create-chat.ts +11 -12
  441. package/src/operations/fork-chat.ts +15 -20
  442. package/src/operations/generate-home-suggestions.test.ts +103 -0
  443. package/src/operations/generate-home-suggestions.ts +116 -0
  444. package/src/operations/index.ts +1 -0
  445. package/src/operations/prompt.node.test.ts +14 -17
  446. package/src/operations/resolve-navigation-targets.ts +32 -19
  447. package/src/operations/run-prompt-in-new-chat.ts +34 -35
  448. package/src/operations/update-chat-name.ts +2 -2
  449. package/src/paths.ts +5 -3
  450. package/src/plugin.workerd.ts +5 -0
  451. package/src/processor/presets.ts +38 -61
  452. package/src/processor/processor.node.test.ts +72 -2
  453. package/src/processor/processor.ts +91 -21
  454. package/src/skills/assistant/index.ts +5 -0
  455. package/src/{blueprints/assistant/blueprint.node.test.ts → skills/assistant/skill.node.test.ts} +8 -8
  456. package/src/{blueprints/assistant/blueprint.ts → skills/assistant/skill.ts} +9 -9
  457. package/src/templates/daily-digest.ts +10 -12
  458. package/src/templates/index.ts +3 -3
  459. package/src/templates/research-brief.ts +15 -13
  460. package/src/templates/routine-templates.test.ts +55 -0
  461. package/src/templates/scaffold.ts +22 -57
  462. package/src/testing/data/trace-timeline-multiple.dx.json +1 -1
  463. package/src/testing/data/trace-timeline-remote.dx.json +1 -1
  464. package/src/testing/data/trace-timeline.dx.json +3430 -1093
  465. package/src/testing/test-generator.test.ts +26 -22
  466. package/src/testing/test-generator.ts +4 -8
  467. package/src/testing/test-trace.ts +2 -1
  468. package/src/testing/trace-timeline.node.test.ts +14 -14
  469. package/src/translations.ts +74 -31
  470. package/src/types/Assistant.ts +3 -1
  471. package/src/types/AssistantCapabilities.ts +24 -3
  472. package/src/types/AssistantEvents.ts +1 -1
  473. package/src/types/AssistantOperation.ts +22 -33
  474. package/src/types/ChatSurface.ts +16 -0
  475. package/src/types/Ollama.ts +59 -0
  476. package/src/types/Settings.ts +12 -10
  477. package/src/types/index.ts +3 -0
  478. package/src/types/service.ts +14 -14
  479. package/src/util/error-cause.ts +21 -0
  480. package/src/util/suggestions.ts +1 -1
  481. package/dist/lib/neutral/AgentArticle-K7XM46OQ.mjs.map +0 -7
  482. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +0 -40
  483. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs.map +0 -7
  484. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs +0 -27
  485. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs.map +0 -7
  486. package/dist/lib/neutral/ChatCompanion-LBUHYWQG.mjs.map +0 -7
  487. package/dist/lib/neutral/ChatDialog-DCA6FLOV.mjs.map +0 -7
  488. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +0 -7
  489. package/dist/lib/neutral/RoutineArticle-5NYXHRG6.mjs +0 -119
  490. package/dist/lib/neutral/RoutineArticle-5NYXHRG6.mjs.map +0 -7
  491. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs +0 -48
  492. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs.map +0 -7
  493. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +0 -17
  494. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +0 -7
  495. package/dist/lib/neutral/TracePanel-KTZJ6JNR.mjs.map +0 -7
  496. package/dist/lib/neutral/TriggerStatus-X7Y5JFZJ.mjs.map +0 -7
  497. package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs.map +0 -7
  498. package/dist/lib/neutral/agent-service-WCAP5MLI.mjs.map +0 -7
  499. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs +0 -42
  500. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs.map +0 -7
  501. package/dist/lib/neutral/ai-service-AADUIKBY.mjs.map +0 -7
  502. package/dist/lib/neutral/app-graph-builder-WUFHQH3Y.mjs.map +0 -7
  503. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs +0 -115
  504. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs.map +0 -7
  505. package/dist/lib/neutral/blueprint-definition-MH2QLYQH.mjs +0 -39
  506. package/dist/lib/neutral/blueprint-definition-MH2QLYQH.mjs.map +0 -7
  507. package/dist/lib/neutral/blueprints/index.mjs +0 -8
  508. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +0 -7
  509. package/dist/lib/neutral/chunk-HLANPOBA.mjs.map +0 -7
  510. package/dist/lib/neutral/chunk-KLYLW4WH.mjs.map +0 -7
  511. package/dist/lib/neutral/chunk-QAZMOFPI.mjs +0 -130
  512. package/dist/lib/neutral/chunk-QAZMOFPI.mjs.map +0 -7
  513. package/dist/lib/neutral/chunk-RKVVK3R3.mjs.map +0 -7
  514. package/dist/lib/neutral/chunk-SMFJD7BP.mjs +0 -8
  515. package/dist/lib/neutral/chunk-XYHPOGTK.mjs +0 -43
  516. package/dist/lib/neutral/chunk-XYHPOGTK.mjs.map +0 -7
  517. package/dist/lib/neutral/chunk-YXRGZYYH.mjs.map +0 -7
  518. package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs.map +0 -7
  519. package/dist/lib/neutral/create-chat-SGGQ6HVN.mjs.map +0 -7
  520. package/dist/lib/neutral/create-object-U2SOFZLR.mjs.map +0 -7
  521. package/dist/lib/neutral/fork-chat-34KEF4ZJ.mjs.map +0 -7
  522. package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +0 -7
  523. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs +0 -110
  524. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs.map +0 -7
  525. package/dist/lib/neutral/react-surface-XRTBW5OJ.mjs.map +0 -7
  526. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs +0 -22
  527. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +0 -7
  528. package/dist/lib/neutral/run-prompt-in-new-chat-D5IIE2C7.mjs.map +0 -7
  529. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +0 -7
  530. package/dist/types/src/blueprints/assistant/blueprint.d.ts +0 -4
  531. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +0 -1
  532. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +0 -2
  533. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +0 -1
  534. package/dist/types/src/blueprints/assistant/index.d.ts +0 -2
  535. package/dist/types/src/blueprints/assistant/index.d.ts.map +0 -1
  536. package/dist/types/src/blueprints/index.d.ts.map +0 -1
  537. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  538. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  539. package/dist/types/src/capabilities/integration-provider.d.ts.map +0 -1
  540. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +0 -1
  541. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +0 -7
  542. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +0 -1
  543. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +0 -15
  544. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +0 -1
  545. package/dist/types/src/components/RoutineProperties/index.d.ts +0 -2
  546. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +0 -13
  547. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +0 -1
  548. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +0 -1
  549. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +0 -21
  550. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +0 -1
  551. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +0 -16
  552. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +0 -1
  553. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +0 -12
  554. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +0 -1
  555. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +0 -3
  556. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +0 -1
  557. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +0 -8
  558. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +0 -1
  559. package/dist/types/src/components/TemplateEditor/index.d.ts +0 -2
  560. package/dist/types/src/components/TemplateEditor/index.d.ts.map +0 -1
  561. package/dist/types/src/components/TemplateEditor/types.d.ts +0 -18
  562. package/dist/types/src/components/TemplateEditor/types.d.ts.map +0 -1
  563. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +0 -6
  564. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +0 -1
  565. package/dist/types/src/containers/BlueprintArticle/index.d.ts +0 -2
  566. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +0 -1
  567. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +0 -6
  568. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +0 -1
  569. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +0 -15
  570. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +0 -1
  571. package/dist/types/src/containers/RoutineArticle/index.d.ts +0 -2
  572. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +0 -1
  573. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +0 -6
  574. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +0 -1
  575. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +0 -21
  576. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +0 -1
  577. package/dist/types/src/containers/RoutineList/index.d.ts +0 -2
  578. package/dist/types/src/containers/RoutineList/index.d.ts.map +0 -1
  579. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +0 -66
  580. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +0 -1
  581. package/dist/types/src/hooks/useOnline.d.ts +0 -3
  582. package/dist/types/src/hooks/useOnline.d.ts.map +0 -1
  583. package/dist/types/src/templates/automation-templates.test.d.ts +0 -2
  584. package/dist/types/src/templates/automation-templates.test.d.ts.map +0 -1
  585. package/src/blueprints/assistant/index.ts +0 -5
  586. package/src/capabilities/blueprint-definition.ts +0 -65
  587. package/src/components/AssistantSettings/AssistantSettings.tsx +0 -43
  588. package/src/components/RoutineProperties/RoutineProperties.stories.tsx +0 -59
  589. package/src/components/RoutineProperties/RoutineProperties.tsx +0 -23
  590. package/src/components/RoutineProperties/index.ts +0 -5
  591. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +0 -95
  592. package/src/components/TemplateEditor/TemplateEditor.tsx +0 -80
  593. package/src/components/TemplateEditor/TemplateForm.stories.tsx +0 -76
  594. package/src/components/TemplateEditor/TemplateForm.tsx +0 -204
  595. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +0 -274
  596. package/src/components/TemplateEditor/extensions/index.ts +0 -6
  597. package/src/components/TemplateEditor/extensions/xml-extension.ts +0 -64
  598. package/src/components/TemplateEditor/index.ts +0 -5
  599. package/src/components/TemplateEditor/types.tsx +0 -28
  600. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +0 -29
  601. package/src/containers/BlueprintArticle/index.ts +0 -5
  602. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +0 -75
  603. package/src/containers/RoutineArticle/RoutineArticle.tsx +0 -109
  604. package/src/containers/RoutineArticle/index.ts +0 -5
  605. package/src/containers/RoutineList/RoutineList.stories.tsx +0 -130
  606. package/src/containers/RoutineList/RoutineList.tsx +0 -50
  607. package/src/containers/RoutineList/index.ts +0 -5
  608. package/src/hooks/useBlueprintRegistry.ts +0 -125
  609. package/src/hooks/useOnline.ts +0 -10
  610. package/src/templates/automation-templates.test.ts +0 -66
  611. package/src/testing/trace-timeline.node.conversations.json +0 -1
  612. /package/dist/lib/neutral/{ChatArticle-VNVZCDUR.mjs.map → ChatArticle-OO7GGEFW.mjs.map} +0 -0
  613. /package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs.map → edge-model-resolver-WDJWDZTT.mjs.map} +0 -0
  614. /package/dist/lib/neutral/{blueprints → extensions}/index.mjs.map +0 -0
  615. /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts +0 -0
  616. /package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts +0 -0
  617. /package/dist/types/src/{blueprints → skills}/index.d.ts +0 -0
  618. /package/src/{components → containers}/AssistantSettings/index.ts +0 -0
  619. /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/processor/presets.ts", "../../../../src/processor/processor.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"],
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.queues);\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 * as Schema from 'effect/Schema';\n\nimport { type ModelName } from '@dxos/ai';\n\nconst ModelProviders = ['dxos-local', 'dxos-remote', 'lm-studio', 'ollama'] as const;\n\nconst ModelProvider = Schema.Literal(...ModelProviders);\ntype ModelProvider = Schema.Schema.Type<typeof ModelProvider>;\n\nexport type AiServicePreset = {\n id: string;\n provider: ModelProvider;\n model: ModelName;\n label?: string;\n};\n\nconst createModelLabel = (model: ModelName) => {\n const parts = model.split('.');\n return parts[parts.length - 1];\n};\n\n// TODO(burdon): Users should be able to create and edit presets.\nexport const AiServicePresets: AiServicePreset[] = [\n // Sonnet is first so it is the default selection.\n {\n provider: 'dxos-remote' as const,\n model: 'ai.claude.model.claude-sonnet-4-6' as const,\n label: 'Claude Sonnet',\n },\n {\n provider: 'dxos-remote' as const,\n model: 'ai.claude.model.claude-opus-4-8' as const,\n label: 'Claude Opus',\n },\n {\n provider: 'dxos-remote' as const,\n model: 'ai.claude.model.claude-haiku-4-5' as const,\n label: 'Claude Haiku',\n },\n {\n provider: 'ollama' as const,\n model: 'ai.ollama.model.gpt-oss:20b' as const,\n },\n {\n provider: 'ollama' as const,\n model: 'ai.ollama.model.gemma4:latest' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: 'ai.google.model.gemma-3-27b' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: 'ai.meta.model.llama-3.2-3b-instruct' as const,\n },\n {\n model: 'ai.ollama.model.deepseek-r1:latest' as const,\n provider: 'dxos-local' as const,\n },\n].map(\n ({ model, provider, label }, i) =>\n ({\n id: `preset-${i}`,\n provider,\n model,\n label: label ?? createModelLabel(model),\n }) satisfies AiServicePreset,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, Registry as AtomRegistry } from '@effect-atom/atom-react';\nimport * as AiError from '@effect/ai/AiError';\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport * as Fiber from 'effect/Fiber';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport * as Stream from 'effect/Stream';\n\nimport { type AiService, DEFAULT_EDGE_MODEL, type ModelName, type ModelRegistry, type OpaqueToolkit } from '@dxos/ai';\nimport { Capabilities } from '@dxos/app-framework';\nimport {\n AiContext,\n AiSession,\n createSystemPrompt,\n formatSystemPrompt,\n McpServerError,\n PartialBlock,\n ToolExecutionServices,\n} from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { type Credential, Operation, type ServiceNotAvailableError, Trace } from '@dxos/compute';\nimport { type Database, Feed, Obj, Ref, type Registry } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { AgentService } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\nimport { Message } from '@dxos/types';\n\nimport { AssistantOperation } from '#types';\n\n/**\n * @deprecated Services type for the old direct-conversation processor path.\n * Retained for backward compatibility with CLI and update-name.\n */\nexport type AiChatServices =\n | Credential.CredentialsService\n | Database.Service\n | AiService.AiService\n | Trace.TraceService;\n\n/**\n * Space-scoped services materialised by the layer passed into\n * {@link AiChatProcessor}. Mirrors the tag list that\n * {@link useChatProcessor} passes to {@link ServiceResolver.provide}.\n */\nexport type SpaceServices =\n | Database.Service\n | Feed.FeedService\n | Credential.CredentialsService\n | AiService.AiService\n | AgentService.AgentService\n | Registry.Service\n | OpaqueToolkit.OpaqueToolkitProvider;\n\nexport type AiChatProcessorOptions = {\n model?: ModelName;\n modelRegistry?: ModelRegistry;\n registry?: Registry.Registry;\n observableRegistry?: AtomRegistry.Registry;\n /**\n * For tracing.\n */\n chat?: Ref.Ref<Chat.Chat>;\n system?: string;\n};\n\nconst defaultOptions: Partial<AiChatProcessorOptions> = {\n model: DEFAULT_EDGE_MODEL,\n};\n\nexport type ProcessorRequestOptions = {};\n\nexport type ProcessorRequest = {\n message: string;\n options?: ProcessorRequestOptions;\n};\n\n/**\n * Maps a failure from the agent fiber to an error suitable for display.\n * {@link AiError}s originate from the AI service and are actionable by the user\n * (e.g., \"model 'x' not found\", \"Connection refused\"), so their detail is propagated.\n * Any other failure is treated as an internal/unexpected error and reported generically\n * to avoid leaking implementation detail.\n */\nconst parseError = (err: unknown): Error => {\n let message: string | undefined;\n if (AiError.isAiError(err)) {\n message = err.description?.trim() || err.message;\n } else if (typeof err === 'string') {\n // TODO(burdon): This is brittle.\n // UnknownError: ChatCompletionsClient.streamText: model 'gemma3:27b' not found\n const [, model] = err.match(/model\\s+'([^']+)'\\s+not\\s+found/i) || [];\n if (model) {\n message = `The model is not available: ${model}`;\n }\n }\n\n if (!message) {\n message = 'An unexpected error occurred.';\n }\n\n return new Error(message, { cause: err });\n};\n\n/**\n * Handles interactions with the AI service.\n * Uses AgentService to spawn a process-backed agent and subscribes to ephemeral trace events for streaming.\n */\nexport class AiChatProcessor {\n readonly #registry: AtomRegistry.Registry;\n\n /** Pending messages (finalized, non-streaming). */\n readonly #pending = Atom.make<Message.Message[]>([]);\n\n /** Currently streaming messages (from ephemeral trace events). */\n readonly #streaming = Atom.make<Message.Message[]>([]);\n\n /** Set of message IDs that have been finalized (non-pending delivered via ephemeral). */\n readonly #finalizedIds = new Set<string>();\n\n /** Currently active request fiber. */\n #requestFiber: Fiber.RuntimeFiber<void, unknown> | undefined;\n\n /** Last request (for retries). */\n #lastRequest: ProcessorRequest | undefined;\n\n /** Streaming state. */\n public readonly streaming = Atom.make<boolean>((get) => get(this.#streaming).length > 0);\n\n /** Active state. */\n public readonly active = Atom.make(false);\n\n /** Array of Messages (incl. the current message being streamed). */\n public readonly messages = Atom.make<Message.Message[]>((get) => [...get(this.#pending), ...get(this.#streaming)]);\n\n /** Last error. */\n public readonly error = Atom.make<Option.Option<Error>>(Option.none());\n\n /**\n * MCP server connection errors observed during the most recent request.\n * Misconfigured/unreachable servers are dropped from the toolkit so the chat\n * keeps working; the entries here let the UI display which servers failed.\n */\n public readonly mcpErrors = Atom.make<readonly Trace.PayloadType<typeof McpServerError>[]>([]);\n\n constructor(\n private readonly _conversation: AiSession.Session,\n private readonly _runtime: Capabilities.ProcessManagerRuntime,\n private readonly _feed: Feed.Feed,\n /**\n * Pre-built layer that materialises {@link SpaceServices}. Built via\n * {@link ServiceResolver.provide} with the {@link ServiceResolver} already\n * supplied (hence `RIn = never`); the {@link ServiceNotAvailableError}\n * error channel surfaces when a tag is not available for the space.\n * Provided to every effect run by the processor so the underlying\n * {@link ProcessManagerRuntime} has access to space-affinity services.\n */\n private readonly _spaceLayer: Layer.Layer<SpaceServices, ServiceNotAvailableError, never>,\n private readonly _options: AiChatProcessorOptions = defaultOptions,\n ) {\n this.#registry = this._options.observableRegistry ?? AtomRegistry.make();\n if (this._options.model && !this._options.system) {\n const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};\n this._options.system = createSystemPrompt(capabilities);\n }\n }\n\n get context() {\n return this._conversation.context;\n }\n\n get conversation() {\n return this._conversation;\n }\n\n get registry() {\n return this._options.registry;\n }\n\n get system(): string {\n return this._options.system ?? '';\n }\n\n async getTools(): Promise<Record<string, any>> {\n return this._runtime.runPromise(\n Effect.provide(this._conversation.getTools(), ToolExecutionServices).pipe(Effect.provide(this._spaceLayer)),\n );\n }\n\n async getSystemPrompt(): Promise<string> {\n return this._runtime.runPromise(\n Effect.gen(this, function* () {\n const blueprints = this.context.getBlueprints();\n const objects = this.context.getObjects();\n return yield* formatSystemPrompt({ system: this._options.system, blueprints, objects });\n }).pipe(\n Effect.provideService(AiContext.Service, { binder: this.context }),\n Effect.provide(this._spaceLayer),\n Effect.orDie,\n ),\n );\n }\n\n /**\n * Initiates a new request via AgentService.\n */\n async request(requestProp: ProcessorRequest): Promise<void> {\n if (this.#requestFiber) {\n await this.cancel();\n }\n\n try {\n this.#lastRequest = requestProp;\n this.#registry.set(this.error, Option.none());\n this.#registry.set(this.mcpErrors, []);\n this.#registry.set(this.active, true);\n\n const effect = Effect.gen(this, function* () {\n // NOTE: Gets or creates a session for the feed.\n log.info('init agent session', { feed: Obj.getURI(this._feed), model: this._options.model });\n const session = yield* AgentService.getSession(this._feed, { model: this._options.model });\n const ephemeralStream = session.subscribeEphemeral();\n yield* ephemeralStream.pipe(\n Stream.runForEach((message) =>\n Effect.sync(() => {\n for (const event of message.events) {\n if (Trace.isOfType(PartialBlock, event)) {\n this.#handleEphemeralMessage(event.data);\n } else if (Trace.isOfType(McpServerError, event)) {\n this.#handleMcpError(event.data);\n }\n }\n }),\n ),\n Effect.fork,\n );\n\n log('chat processor submitting prompt', { length: requestProp.message.length });\n yield* session.submitPrompt(requestProp.message);\n log('chat processor submitPrompt returned, waiting for agent', {});\n\n // On the first message (no name yet), schedule rename immediately so it\n // runs concurrently with the AI response rather than waiting for completion.\n if (!this._options.chat?.target?.name) {\n yield* this.#updateChatName(requestProp.message);\n }\n\n yield* session.waitForCompletion();\n log.info('session complete');\n\n this.#flushStreaming();\n });\n\n this.#requestFiber = this._runtime.runFork(effect.pipe(Effect.provide(this._spaceLayer)));\n\n // Inspect the fiber's exit so the underlying failure (e.g. \"model 'x' not found\") is\n // preserved as a clean Error rather than an opaque FiberFailure.\n const exit = await this._runtime.runPromise(Fiber.await(this.#requestFiber));\n if (Exit.isFailure(exit)) {\n if (Cause.isInterruptedOnly(exit.cause)) {\n return;\n }\n\n throw EffectEx.causeToError(exit.cause);\n }\n\n this.#registry.set(this.error, Option.none());\n this.#lastRequest = undefined;\n this.#requestFiber = undefined;\n } catch (err) {\n // `EffectEx.causeToError` above unwraps the fiber failure into the underlying error (e.g. an AiError\n // carrying \"model 'x' not found\"); `parseError` decides what to surface to the user.\n log.error('request failed', { error: err });\n this.#registry.set(this.error, Option.some(parseError(err)));\n } finally {\n log.info('setting active to false');\n this.#registry.set(this.active, false);\n this.#requestFiber = undefined;\n }\n }\n\n /**\n * Cancels the current request.\n */\n async cancel(): Promise<void> {\n await EffectEx.runAndForwardErrors(\n Effect.gen(this, function* () {\n log.info('cancelling request', { fiber: this.#requestFiber });\n if (this.#requestFiber) {\n yield* Fiber.interrupt(this.#requestFiber);\n }\n const session = yield* AgentService.getSession(this._feed);\n yield* session.terminate();\n }).pipe(Effect.provide(this._spaceLayer)),\n );\n\n this.#requestFiber = undefined;\n this.#registry.set(this.active, false);\n }\n\n /**\n * Retry last failed request.\n */\n async retry(): Promise<void> {\n if (this.#lastRequest) {\n return this.request(this.#lastRequest);\n }\n }\n\n /**\n * Clears the recorded MCP server errors (e.g. after the user dismisses the warning banner).\n */\n dismissMcpErrors(): void {\n this.#registry.set(this.mcpErrors, []);\n }\n\n /**\n * Update the current chat's name.\n */\n async updateName(chat: Chat.Chat): Promise<void> {\n const spaceId = Obj.getDatabase(chat)?.spaceId;\n if (!spaceId) {\n return;\n }\n EffectEx.unwrapExit(\n await this._runtime.runPromiseExit(\n Operation.invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId }).pipe(\n Effect.provide(this._spaceLayer),\n ),\n ),\n );\n }\n\n /**\n * Handles an ephemeral message from the agent process.\n * Both pending and completed blocks arrive here. Completed blocks are deduped\n * against messages already written to the feed queue to handle the race between\n * ephemeral delivery and feed replication.\n */\n #handleEphemeralMessage(event: Trace.PayloadType<typeof PartialBlock>) {\n const isPending = event.block.pending;\n const message = Obj.make(Message.Message, {\n id: event.messageId,\n created: new Date().toISOString(),\n sender: { role: event.role },\n blocks: [event.block],\n });\n\n if (isPending) {\n if (this.#finalizedIds.has(event.messageId)) {\n return;\n }\n this.#registry.update(this.#streaming, (streaming) => {\n const idx = streaming.findIndex((existing) => existing.id === event.messageId);\n if (idx >= 0) {\n const updated = [...streaming];\n updated[idx] = message;\n return updated;\n }\n return [...streaming, message];\n });\n } else {\n this.#finalizedIds.add(event.messageId);\n this.#registry.update(this.#streaming, (streaming) => streaming.filter((existing) => existing.id !== message.id));\n this.#registry.update(this.#pending, (pending) => {\n if (pending.some((existing) => existing.id === message.id)) {\n return pending;\n }\n return [...pending, message];\n });\n }\n }\n\n /**\n * Records a per-server MCP failure, deduped by url+protocol so repeat misconfigurations\n * across turns do not spam the UI.\n */\n #handleMcpError(event: Trace.PayloadType<typeof McpServerError>) {\n log.warn('MCP server error', event);\n this.#registry.update(this.mcpErrors, (errors) => {\n if (errors.some((existing) => existing.url === event.url && existing.protocol === event.protocol)) {\n return errors;\n }\n return [...errors, event];\n });\n }\n\n /**\n * Move remaining streaming messages to pending (called when agent completes).\n */\n #flushStreaming() {\n const remaining = this.#registry.get(this.#streaming);\n if (remaining.length > 0) {\n this.#registry.update(this.#pending, (pending) => [...pending, ...remaining]);\n this.#registry.set(this.#streaming, []);\n }\n this.#finalizedIds.clear();\n }\n\n /**\n * Schedule a chat name update as a detached (fire-and-forget) operation.\n * Called automatically on the first message; can also be invoked manually via the toolbar.\n */\n #updateChatName(prompt?: string): Effect.Effect<void, never, Operation.Service> {\n const chat = this._options.chat?.target;\n if (!chat) {\n return Effect.void;\n }\n\n const spaceId = Obj.getDatabase(chat)?.spaceId;\n if (!spaceId) {\n return Effect.void;\n }\n\n log.info('scheduling chat name update');\n return Operation.schedule(AssistantOperation.UpdateChatName, { chat, prompt }, { spaceId });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { getPersonalSpace } 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 ??= 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.id }],\n })\n .action(\n 'new',\n {\n label: ['new-thread.button', { ns: meta.id }],\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.id }],\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.id }],\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.id }],\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.queues);\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"],
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", "Schema", "ModelProviders", "ModelProvider", "Literal", "createModelLabel", "model", "parts", "split", "length", "AiServicePresets", "provider", "label", "map", "i", "id", "Atom", "Registry", "AtomRegistry", "AiError", "Cause", "Effect", "Exit", "Fiber", "Option", "Stream", "DEFAULT_EDGE_MODEL", "AiContext", "createSystemPrompt", "formatSystemPrompt", "McpServerError", "PartialBlock", "ToolExecutionServices", "Operation", "Trace", "Obj", "EffectEx", "AgentService", "log", "Message", "AssistantOperation", "defaultOptions", "isAiError", "err", "message", "Error", "make", "messages", "error", "_runtime", "_feed", "_spaceLayer", "_options", "capabilities", "getCapabilities", "system", "context", "conversation", "registry", "getTools", "getSystemPrompt", "blueprints", "objects", "getObjects", "binder", "provide", "orDie", "set", "active", "gen", "model", "session", "ephemeralStream", "event", "isOfType", "data", "length", "requestProp", "submitPrompt", "waitForCompletion", "isInterruptedOnly", "exit", "undefined", "info", "interrupt", "getSession", "pipe", "spaceId", "id", "messageId", "created", "Date", "toISOString", "sender", "role", "blocks", "isPending", "updated", "streaming", "update", "pending", "existing", "errors", "protocol", "remaining", "clear", "void", "chat", "prompt", "__dxlog_file", "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", "getPersonalSpace", "useClient", "useChatServices", "id", "client", "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", "queues", "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"]
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-HLANPOBA.mjs";
5
- import {
6
- ASSISTANT_COMPANION_VARIANT,
7
- ASSISTANT_DIALOG,
8
- meta
9
- } from "./chunk-XYHPOGTK.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-YXRGZYYH.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
+ }