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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/AgentArticle-5XDDEXMP.mjs +169 -0
  4. package/dist/lib/neutral/AgentArticle-5XDDEXMP.mjs.map +7 -0
  5. package/dist/lib/neutral/AgentProperties-CNH4JMDZ.mjs +100 -0
  6. package/dist/lib/neutral/AgentProperties-CNH4JMDZ.mjs.map +7 -0
  7. package/dist/lib/neutral/AssistantPlugin.mjs +10 -0
  8. package/dist/lib/neutral/AssistantPlugin.node.mjs +46 -0
  9. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +7 -0
  10. package/dist/lib/neutral/AssistantPlugin.workerd.mjs +40 -0
  11. package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +7 -0
  12. package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs +27 -0
  13. package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs.map +7 -0
  14. package/dist/lib/neutral/ChatArticle-WVAFZPVI.mjs +8 -0
  15. package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs +133 -0
  16. package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs.map +7 -0
  17. package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs +72 -0
  18. package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs.map +7 -0
  19. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs +28 -0
  20. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +7 -0
  21. package/dist/lib/neutral/RoutineArticle-H7ECM7AH.mjs +116 -0
  22. package/dist/lib/neutral/RoutineArticle-H7ECM7AH.mjs.map +7 -0
  23. package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs +48 -0
  24. package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs.map +7 -0
  25. package/dist/lib/neutral/TracePanel-C77SPEIS.mjs +672 -0
  26. package/dist/lib/neutral/TracePanel-C77SPEIS.mjs.map +7 -0
  27. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs +92 -0
  28. package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs.map +7 -0
  29. package/dist/lib/neutral/ai-service-GJXMI5OI.mjs +22 -0
  30. package/dist/lib/neutral/ai-service-GJXMI5OI.mjs.map +7 -0
  31. package/dist/lib/neutral/app-graph-builder-5QBICPYP.mjs +200 -0
  32. package/dist/lib/neutral/app-graph-builder-5QBICPYP.mjs.map +7 -0
  33. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs +32 -0
  34. package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs.map +7 -0
  35. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  36. package/dist/lib/neutral/capabilities/index.mjs +35 -0
  37. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-3FIV362Z.mjs +8 -0
  39. package/dist/lib/neutral/chunk-3FIV362Z.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-4CQZCMRP.mjs +25 -0
  41. package/dist/lib/neutral/chunk-4CQZCMRP.mjs.map +7 -0
  42. package/dist/lib/{browser/blueprints/index.mjs → neutral/chunk-5H6UJHLF.mjs} +4 -5
  43. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-ITJX2YZZ.mjs +98 -0
  45. package/dist/lib/neutral/chunk-ITJX2YZZ.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-IZQWGJNG.mjs +380 -0
  47. package/dist/lib/neutral/chunk-IZQWGJNG.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-SLIPV6NN.mjs +106 -0
  49. package/dist/lib/neutral/chunk-SLIPV6NN.mjs.map +7 -0
  50. package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs +116 -0
  51. package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs.map +7 -0
  52. package/dist/lib/{browser/chunk-VK53MITK.mjs → neutral/components/index.mjs} +139 -141
  53. package/dist/lib/neutral/components/index.mjs.map +7 -0
  54. package/dist/lib/neutral/containers/index.mjs +29 -0
  55. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  56. package/dist/lib/{browser/create-chat-E2ZLVTLP.mjs → neutral/create-chat-QQZURUBW.mjs} +10 -12
  57. package/dist/lib/neutral/create-chat-QQZURUBW.mjs.map +7 -0
  58. package/dist/lib/neutral/create-object-UZCJCPWM.mjs +93 -0
  59. package/dist/lib/neutral/create-object-UZCJCPWM.mjs.map +7 -0
  60. package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs +21 -0
  61. package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs.map +7 -0
  62. package/dist/lib/{browser/ensure-companion-chat-7GDMXSQW.mjs → neutral/ensure-companion-chat-5S4LZM2H.mjs} +9 -16
  63. package/dist/lib/neutral/ensure-companion-chat-5S4LZM2H.mjs.map +7 -0
  64. package/dist/lib/{browser/chunk-M55MBYG7.mjs → neutral/hooks/index.mjs} +106 -111
  65. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  66. package/dist/lib/neutral/index.mjs +32 -0
  67. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs +24 -0
  68. package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +7 -0
  69. package/dist/lib/neutral/markdown-KTBFOMFM.mjs +110 -0
  70. package/dist/lib/neutral/markdown-KTBFOMFM.mjs.map +7 -0
  71. package/dist/lib/neutral/meta.json +1 -0
  72. package/dist/lib/neutral/meta.mjs +12 -0
  73. package/dist/lib/neutral/migrations-7DEMVBOG.mjs +28 -0
  74. package/dist/lib/neutral/migrations-7DEMVBOG.mjs.map +7 -0
  75. package/dist/lib/{browser/on-create-space-4J3KTNAJ.mjs → neutral/on-create-space-Q2R7OSP6.mjs} +4 -7
  76. package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs.map +7 -0
  77. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs +13 -0
  78. package/dist/lib/neutral/operation-handler-SF36MOB5.mjs.map +7 -0
  79. package/dist/lib/neutral/operations/index.mjs +8 -0
  80. package/dist/lib/neutral/plugin.mjs +16 -0
  81. package/dist/lib/neutral/plugin.mjs.map +7 -0
  82. package/dist/lib/neutral/react-surface-T4R65UJU.mjs +174 -0
  83. package/dist/lib/neutral/react-surface-T4R65UJU.mjs.map +7 -0
  84. package/dist/lib/{browser/resolve-navigation-targets-3ZPQE6SZ.mjs → neutral/resolve-navigation-targets-VXBSWV5L.mjs} +3 -5
  85. package/dist/lib/neutral/resolve-navigation-targets-VXBSWV5L.mjs.map +7 -0
  86. package/dist/lib/{browser/run-prompt-in-new-chat-AA3KPBDN.mjs → neutral/run-prompt-in-new-chat-VJXXZ6SI.mjs} +16 -19
  87. package/dist/lib/neutral/run-prompt-in-new-chat-VJXXZ6SI.mjs.map +7 -0
  88. package/dist/lib/{browser/set-current-chat-P4VHI3YF.mjs → neutral/set-current-chat-ZFDCYK5I.mjs} +4 -10
  89. package/dist/lib/neutral/set-current-chat-ZFDCYK5I.mjs.map +7 -0
  90. package/dist/lib/neutral/settings-W4BLWQ53.mjs +28 -0
  91. package/dist/lib/neutral/settings-W4BLWQ53.mjs.map +7 -0
  92. package/dist/lib/neutral/state-H3G7QCU6.mjs +28 -0
  93. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +7 -0
  94. package/dist/lib/neutral/testing.mjs +8 -0
  95. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs +21 -0
  96. package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs.map +7 -0
  97. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs +14 -0
  98. package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs.map +7 -0
  99. package/dist/lib/{browser → neutral}/translations.mjs +5 -2
  100. package/dist/lib/neutral/translations.mjs.map +7 -0
  101. package/dist/lib/neutral/types/index.mjs +20 -0
  102. package/dist/lib/neutral/types/index.mjs.map +7 -0
  103. package/dist/lib/{browser/update-chat-name-VWKNUON7.mjs → neutral/update-chat-name-ENXRUMDJ.mjs} +3 -5
  104. package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs.map +7 -0
  105. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  106. package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -1
  107. package/dist/types/src/AssistantPlugin.workerd.d.ts +4 -0
  108. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/create-object.d.ts +31 -0
  111. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/index.d.ts +27 -1
  113. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  115. package/dist/types/src/capabilities/migrations.d.ts +2 -1
  116. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  117. package/dist/types/src/components/Chat/Chat.d.ts +11 -5
  118. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  119. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +2 -2
  120. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  121. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +2 -2
  122. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  123. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +2 -3
  124. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  126. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +2 -15
  127. package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -1
  128. package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -1
  129. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  130. package/dist/types/src/components/TaskList/TaskList.d.ts +10 -0
  131. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -0
  132. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +16 -0
  133. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -0
  134. package/dist/types/src/components/TaskList/index.d.ts +2 -0
  135. package/dist/types/src/components/TaskList/index.d.ts.map +1 -0
  136. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -2
  137. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  138. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +1 -1
  139. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  141. package/dist/types/src/components/index.d.ts +1 -0
  142. package/dist/types/src/components/index.d.ts.map +1 -1
  143. package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -1
  144. package/dist/types/src/containers/{ChatContainer/ChatContainer.d.ts → ChatArticle/ChatArticle.d.ts} +3 -3
  145. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -0
  146. package/dist/types/src/containers/ChatArticle/index.d.ts +2 -0
  147. package/dist/types/src/containers/ChatArticle/index.d.ts.map +1 -0
  148. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  149. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts +6 -0
  150. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -0
  151. package/dist/types/src/containers/PlanArticle/index.d.ts +2 -0
  152. package/dist/types/src/containers/PlanArticle/index.d.ts.map +1 -0
  153. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -1
  154. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +15 -0
  155. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +1 -0
  156. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -1
  157. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
  158. package/dist/types/src/containers/TracePanel/execution-graph.d.ts +11 -2
  159. package/dist/types/src/containers/TracePanel/execution-graph.d.ts.map +1 -1
  160. package/dist/types/src/containers/TracePanel/span-tree.d.ts +73 -0
  161. package/dist/types/src/containers/TracePanel/span-tree.d.ts.map +1 -0
  162. package/dist/types/src/containers/TracePanel/span-tree.test.d.ts +2 -0
  163. package/dist/types/src/containers/TracePanel/span-tree.test.d.ts.map +1 -0
  164. package/dist/types/src/containers/index.d.ts +4 -3
  165. package/dist/types/src/containers/index.d.ts.map +1 -1
  166. package/dist/types/src/feed-logger.d.ts +13 -0
  167. package/dist/types/src/feed-logger.d.ts.map +1 -0
  168. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +3 -3
  169. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  170. package/dist/types/src/hooks/useChatProcessor.d.ts +1 -1
  171. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  172. package/dist/types/src/hooks/useChatServices.d.ts +1 -1
  173. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  174. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
  175. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  176. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  177. package/dist/types/src/hooks/useContextObjects.d.ts +2 -2
  178. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  179. package/dist/types/src/index.d.ts +2 -4
  180. package/dist/types/src/index.d.ts.map +1 -1
  181. package/dist/types/src/operations/create-chat.d.ts +2 -2
  182. package/dist/types/src/operations/create-chat.d.ts.map +1 -1
  183. package/dist/types/src/operations/ensure-companion-chat.d.ts +2 -2
  184. package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -1
  185. package/dist/types/src/operations/index.d.ts +0 -1
  186. package/dist/types/src/operations/index.d.ts.map +1 -1
  187. package/dist/types/src/operations/on-create-space.d.ts +2 -2
  188. package/dist/types/src/operations/on-create-space.d.ts.map +1 -1
  189. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +2 -2
  190. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
  191. package/dist/types/src/operations/set-current-chat.d.ts +2 -2
  192. package/dist/types/src/operations/set-current-chat.d.ts.map +1 -1
  193. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts +5 -0
  194. package/dist/types/src/operations/toggle-trace-panel-debug.d.ts.map +1 -0
  195. package/dist/types/src/operations/update-chat-name.d.ts +2 -2
  196. package/dist/types/src/operations/update-chat-name.d.ts.map +1 -1
  197. package/dist/types/src/plugin.d.ts +4 -0
  198. package/dist/types/src/plugin.d.ts.map +1 -0
  199. package/dist/types/src/processor/processor.d.ts +11 -11
  200. package/dist/types/src/processor/processor.d.ts.map +1 -1
  201. package/dist/types/src/testing/test-generator.d.ts +2 -3
  202. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  203. package/dist/types/src/testing/test-sequence.d.ts +3 -3
  204. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  205. package/dist/types/src/testing.d.ts +2 -0
  206. package/dist/types/src/testing.d.ts.map +1 -0
  207. package/dist/types/src/translations.d.ts.map +1 -1
  208. package/dist/types/src/types/Assistant.d.ts +1 -0
  209. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  210. package/dist/types/src/types/AssistantCapabilities.d.ts +30 -0
  211. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -0
  212. package/dist/types/src/types/AssistantEvents.d.ts +3 -0
  213. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -0
  214. package/dist/types/src/{operations/definitions.d.ts → types/AssistantOperation.d.ts} +10 -6
  215. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -0
  216. package/dist/types/src/types/Settings.d.ts +1 -0
  217. package/dist/types/src/types/Settings.d.ts.map +1 -1
  218. package/dist/types/src/types/index.d.ts +3 -2
  219. package/dist/types/src/types/index.d.ts.map +1 -1
  220. package/dist/types/src/util/suggestions.d.ts +9 -0
  221. package/dist/types/src/util/suggestions.d.ts.map +1 -0
  222. package/dist/types/src/util/suggestions.test.d.ts +2 -0
  223. package/dist/types/src/util/suggestions.test.d.ts.map +1 -0
  224. package/dist/types/tsconfig.tsbuildinfo +1 -1
  225. package/package.json +152 -128
  226. package/src/AssistantPlugin.node.ts +7 -88
  227. package/src/AssistantPlugin.test.ts +3 -3
  228. package/src/AssistantPlugin.ts +126 -0
  229. package/src/AssistantPlugin.workerd.ts +41 -0
  230. package/src/blueprints/assistant/blueprint.ts +1 -1
  231. package/src/capabilities/app-graph-builder.ts +48 -9
  232. package/src/capabilities/companion-chat-provisioner.ts +4 -5
  233. package/src/capabilities/create-object.ts +107 -0
  234. package/src/capabilities/index.ts +1 -0
  235. package/src/capabilities/markdown.ts +2 -2
  236. package/src/capabilities/migrations.ts +3 -3
  237. package/src/capabilities/react-surface.tsx +15 -7
  238. package/src/components/Chat/Chat.tsx +35 -5
  239. package/src/components/ChatPrompt/ChatMcpErrors.tsx +1 -1
  240. package/src/components/ChatPrompt/ChatOptions.stories.tsx +4 -4
  241. package/src/components/ChatPrompt/ChatOptions.tsx +12 -11
  242. package/src/components/ChatPrompt/ChatPrompt.tsx +3 -3
  243. package/src/components/ChatPrompt/ChatReferences.tsx +3 -3
  244. package/src/components/ChatPrompt/ChatStatus.tsx +1 -1
  245. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
  246. package/src/components/ChatThread/Anchor.stories.tsx +3 -3
  247. package/src/components/ChatThread/ChatThread.stories.tsx +25 -29
  248. package/src/components/ChatThread/ChatThread.tsx +1 -1
  249. package/src/components/ChatThread/registry.tsx +8 -4
  250. package/src/components/ChatThread/sync.test.ts +4 -6
  251. package/src/components/ChatThread/widgets/ReasoningWidget.ts +2 -2
  252. package/src/components/ChatThread/widgets/StatusWidget.ts +3 -83
  253. package/src/components/ChatThread/widgets/SummaryWidget.tsx +1 -3
  254. package/src/components/ProcessTree/ProcessTree.tsx +2 -1
  255. package/src/components/TaskList/TaskList.stories.tsx +44 -0
  256. package/src/components/TaskList/TaskList.tsx +45 -0
  257. package/src/{cli → components/TaskList}/index.ts +1 -1
  258. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +1 -1
  259. package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -6
  260. package/src/components/TemplateEditor/TemplateForm.tsx +48 -69
  261. package/src/components/Toolbox/Toolbox.stories.tsx +4 -4
  262. package/src/components/Toolbox/Toolbox.tsx +2 -2
  263. package/src/components/index.ts +1 -0
  264. package/src/containers/AgentArticle/AgentArticle.stories.tsx +7 -7
  265. package/src/containers/AgentArticle/AgentArticle.tsx +11 -7
  266. package/src/containers/AgentProperties/AgentProperties.stories.tsx +4 -4
  267. package/src/containers/AgentProperties/AgentProperties.tsx +4 -4
  268. package/src/containers/{ChatContainer/ChatContainer.tsx → ChatArticle/ChatArticle.tsx} +11 -9
  269. package/src/containers/ChatArticle/index.ts +5 -0
  270. package/src/containers/ChatCompanion/ChatCompanion.tsx +20 -29
  271. package/src/containers/PlanArticle/PlanArticle.tsx +33 -0
  272. package/src/containers/PlanArticle/index.ts +5 -0
  273. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +75 -0
  274. package/src/containers/RoutineArticle/RoutineArticle.tsx +74 -24
  275. package/src/containers/RoutineList/RoutineList.stories.tsx +3 -3
  276. package/src/containers/RoutineList/RoutineList.tsx +3 -3
  277. package/src/containers/TracePanel/TracePanel.stories.tsx +33 -26
  278. package/src/containers/TracePanel/TracePanel.tsx +72 -33
  279. package/src/containers/TracePanel/dxn-extractor.ts +7 -7
  280. package/src/containers/TracePanel/execution-graph.test.ts +218 -213
  281. package/src/containers/TracePanel/execution-graph.ts +316 -271
  282. package/src/containers/TracePanel/span-tree.test.ts +166 -0
  283. package/src/containers/TracePanel/span-tree.ts +214 -0
  284. package/src/containers/index.ts +4 -3
  285. package/src/{queue-logger.ts → feed-logger.ts} +37 -27
  286. package/src/hooks/useBlueprintRegistry.ts +12 -6
  287. package/src/hooks/useChatProcessor.ts +3 -3
  288. package/src/hooks/useChatServices.ts +1 -1
  289. package/src/hooks/useChatToolbarActions.ts +86 -88
  290. package/src/hooks/useContextBinder.ts +4 -4
  291. package/src/hooks/useContextObjects.ts +2 -2
  292. package/src/index.ts +2 -9
  293. package/src/operations/create-chat.ts +16 -11
  294. package/src/operations/ensure-companion-chat.ts +47 -45
  295. package/src/operations/index.ts +1 -2
  296. package/src/operations/on-create-space.ts +3 -3
  297. package/src/operations/prompt.test.ts +5 -5
  298. package/src/operations/resolve-navigation-targets.ts +2 -2
  299. package/src/operations/run-prompt-in-new-chat.ts +85 -84
  300. package/src/operations/set-current-chat.ts +3 -4
  301. package/src/operations/toggle-trace-panel-debug.ts +27 -0
  302. package/src/operations/update-chat-name.ts +2 -2
  303. package/src/plugin.ts +11 -0
  304. package/src/processor/processor.test.ts +1 -1
  305. package/src/processor/processor.ts +15 -15
  306. package/src/testing/test-generator.test.ts +41 -52
  307. package/src/testing/test-generator.ts +174 -189
  308. package/src/testing/test-sequence.ts +3 -3
  309. package/src/testing/trace-timeline.conversations.json +1 -1
  310. package/src/testing/trace-timeline.test.ts +3 -5
  311. package/src/testing.ts +7 -0
  312. package/src/translations.ts +5 -2
  313. package/src/types/Assistant.ts +2 -1
  314. package/src/types/AssistantCapabilities.ts +35 -0
  315. package/src/types/AssistantEvents.ts +11 -0
  316. package/src/{operations/definitions.ts → types/AssistantOperation.ts} +15 -0
  317. package/src/types/Settings.ts +6 -0
  318. package/src/types/index.ts +5 -2
  319. package/src/util/suggestions.test.ts +52 -0
  320. package/src/util/suggestions.ts +42 -0
  321. package/dist/lib/browser/blueprints/index.mjs.map +0 -7
  322. package/dist/lib/browser/chunk-DVOOFAWU.mjs +0 -175
  323. package/dist/lib/browser/chunk-DVOOFAWU.mjs.map +0 -7
  324. package/dist/lib/browser/chunk-M55MBYG7.mjs.map +0 -7
  325. package/dist/lib/browser/chunk-SEMCG4ZK.mjs +0 -195
  326. package/dist/lib/browser/chunk-SEMCG4ZK.mjs.map +0 -7
  327. package/dist/lib/browser/chunk-VK53MITK.mjs.map +0 -7
  328. package/dist/lib/browser/cli/index.mjs +0 -73
  329. package/dist/lib/browser/cli/index.mjs.map +0 -7
  330. package/dist/lib/browser/components/index.mjs +0 -20
  331. package/dist/lib/browser/create-chat-E2ZLVTLP.mjs.map +0 -7
  332. package/dist/lib/browser/ensure-companion-chat-7GDMXSQW.mjs.map +0 -7
  333. package/dist/lib/browser/hooks/index.mjs +0 -39
  334. package/dist/lib/browser/index.mjs +0 -84
  335. package/dist/lib/browser/index.mjs.map +0 -7
  336. package/dist/lib/browser/meta.json +0 -1
  337. package/dist/lib/browser/on-create-space-4J3KTNAJ.mjs.map +0 -7
  338. package/dist/lib/browser/operations/index.mjs +0 -13
  339. package/dist/lib/browser/operations/index.mjs.map +0 -7
  340. package/dist/lib/browser/resolve-navigation-targets-3ZPQE6SZ.mjs.map +0 -7
  341. package/dist/lib/browser/run-prompt-in-new-chat-AA3KPBDN.mjs.map +0 -7
  342. package/dist/lib/browser/set-current-chat-P4VHI3YF.mjs.map +0 -7
  343. package/dist/lib/browser/translations.mjs.map +0 -7
  344. package/dist/lib/browser/types/index.mjs +0 -18
  345. package/dist/lib/browser/update-chat-name-VWKNUON7.mjs.map +0 -7
  346. package/dist/lib/node-esm/AssistantSettings-23A5IMHS.mjs +0 -41
  347. package/dist/lib/node-esm/AssistantSettings-23A5IMHS.mjs.map +0 -7
  348. package/dist/lib/node-esm/blueprints/index.mjs +0 -32
  349. package/dist/lib/node-esm/blueprints/index.mjs.map +0 -7
  350. package/dist/lib/node-esm/chunk-FWC3ZGPH.mjs +0 -933
  351. package/dist/lib/node-esm/chunk-FWC3ZGPH.mjs.map +0 -7
  352. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  353. package/dist/lib/node-esm/chunk-JKEB3NFZ.mjs +0 -2302
  354. package/dist/lib/node-esm/chunk-JKEB3NFZ.mjs.map +0 -7
  355. package/dist/lib/node-esm/chunk-MBDVPB4V.mjs +0 -176
  356. package/dist/lib/node-esm/chunk-MBDVPB4V.mjs.map +0 -7
  357. package/dist/lib/node-esm/chunk-XAFVSEUJ.mjs +0 -196
  358. package/dist/lib/node-esm/chunk-XAFVSEUJ.mjs.map +0 -7
  359. package/dist/lib/node-esm/cli/index.mjs +0 -74
  360. package/dist/lib/node-esm/cli/index.mjs.map +0 -7
  361. package/dist/lib/node-esm/components/index.mjs +0 -21
  362. package/dist/lib/node-esm/create-chat-UQQ3542N.mjs +0 -74
  363. package/dist/lib/node-esm/create-chat-UQQ3542N.mjs.map +0 -7
  364. package/dist/lib/node-esm/ensure-companion-chat-LVCPD4DJ.mjs +0 -66
  365. package/dist/lib/node-esm/ensure-companion-chat-LVCPD4DJ.mjs.map +0 -7
  366. package/dist/lib/node-esm/hooks/index.mjs +0 -40
  367. package/dist/lib/node-esm/index.mjs +0 -85
  368. package/dist/lib/node-esm/index.mjs.map +0 -7
  369. package/dist/lib/node-esm/meta.json +0 -1
  370. package/dist/lib/node-esm/on-create-space-M63UBTTT.mjs +0 -23
  371. package/dist/lib/node-esm/on-create-space-M63UBTTT.mjs.map +0 -7
  372. package/dist/lib/node-esm/operations/index.mjs +0 -14
  373. package/dist/lib/node-esm/operations/index.mjs.map +0 -7
  374. package/dist/lib/node-esm/resolve-navigation-targets-HO77CAFT.mjs +0 -23
  375. package/dist/lib/node-esm/resolve-navigation-targets-HO77CAFT.mjs.map +0 -7
  376. package/dist/lib/node-esm/run-prompt-in-new-chat-RIRYYYPK.mjs +0 -107
  377. package/dist/lib/node-esm/run-prompt-in-new-chat-RIRYYYPK.mjs.map +0 -7
  378. package/dist/lib/node-esm/set-current-chat-Z7GJ52VX.mjs +0 -55
  379. package/dist/lib/node-esm/set-current-chat-Z7GJ52VX.mjs.map +0 -7
  380. package/dist/lib/node-esm/translations.mjs +0 -173
  381. package/dist/lib/node-esm/translations.mjs.map +0 -7
  382. package/dist/lib/node-esm/types/index.mjs +0 -19
  383. package/dist/lib/node-esm/update-chat-name-GV4HX32Z.mjs +0 -57
  384. package/dist/lib/node-esm/update-chat-name-GV4HX32Z.mjs.map +0 -7
  385. package/dist/types/src/cli/index.d.ts +0 -2
  386. package/dist/types/src/cli/index.d.ts.map +0 -1
  387. package/dist/types/src/cli/plugin.d.ts +0 -10
  388. package/dist/types/src/cli/plugin.d.ts.map +0 -1
  389. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +0 -1
  390. package/dist/types/src/containers/ChatContainer/index.d.ts +0 -2
  391. package/dist/types/src/containers/ChatContainer/index.d.ts.map +0 -1
  392. package/dist/types/src/operations/definitions.d.ts.map +0 -1
  393. package/dist/types/src/queue-logger.d.ts +0 -11
  394. package/dist/types/src/queue-logger.d.ts.map +0 -1
  395. package/dist/types/src/types/capabilities.d.ts +0 -32
  396. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  397. package/dist/types/src/types/events.d.ts +0 -5
  398. package/dist/types/src/types/events.d.ts.map +0 -1
  399. package/src/AssistantPlugin.tsx +0 -238
  400. package/src/cli/plugin.ts +0 -83
  401. package/src/containers/ChatContainer/index.ts +0 -5
  402. package/src/types/capabilities.ts +0 -35
  403. package/src/types/events.ts +0 -11
  404. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/AssistantPlugin.mjs.map} +0 -0
  405. /package/dist/lib/{browser → neutral}/AssistantSettings-GG52BLKS.mjs +0 -0
  406. /package/dist/lib/{browser → neutral}/AssistantSettings-GG52BLKS.mjs.map +0 -0
  407. /package/dist/lib/{browser/components/index.mjs.map → neutral/ChatArticle-WVAFZPVI.mjs.map} +0 -0
  408. /package/dist/lib/{browser/hooks → neutral/blueprints}/index.mjs.map +0 -0
  409. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  410. /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  411. /package/dist/lib/{node-esm/components → neutral}/index.mjs.map +0 -0
  412. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
  413. /package/dist/lib/{node-esm/hooks → neutral/operations}/index.mjs.map +0 -0
  414. /package/dist/lib/{node-esm/types/index.mjs.map → neutral/testing.mjs.map} +0 -0
@@ -0,0 +1,133 @@
1
+ import {
2
+ ChatArticle
3
+ } from "./chunk-SLIPV6NN.mjs";
4
+ import "./chunk-J5LGTIGS.mjs";
5
+
6
+ // src/containers/ChatCompanion/ChatCompanion.tsx
7
+ import * as Option from "effect/Option";
8
+ import React, { forwardRef, useCallback, useMemo } from "react";
9
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
10
+ import { BlueprintsAnnotation } from "@dxos/app-toolkit";
11
+ import { Chat } from "@dxos/assistant-toolkit";
12
+ import { getSpace } from "@dxos/client/echo";
13
+ import { Blueprint } from "@dxos/compute";
14
+ import { Filter, Obj, Ref } from "@dxos/echo";
15
+ import { SpaceOperation } from "@dxos/plugin-space";
16
+ import { useQuery } from "@dxos/react-client/echo";
17
+ import { useAsyncEffect } from "@dxos/react-ui";
18
+ import { useBlueprintRegistry, useContextBinder } from "#hooks";
19
+ import { AssistantOperation } from "#types";
20
+ var ChatCompanion = /* @__PURE__ */ forwardRef(({ role, subject: chat, companionTo, attendableId }, forwardedRef) => {
21
+ const { invokePromise } = useOperationInvoker();
22
+ const blueprintRegistry = useBlueprintRegistry();
23
+ const space = getSpace(companionTo);
24
+ const feedTarget = chat?.feed.target;
25
+ const binder = useContextBinder(space, feedTarget);
26
+ const handleEvent = useCallback(async (event) => {
27
+ if (!space || !chat) {
28
+ return;
29
+ }
30
+ if (event.type === "submit" && !Obj.getDatabase(chat)) {
31
+ await invokePromise(SpaceOperation.AddObject, {
32
+ object: chat,
33
+ target: space.db,
34
+ hidden: true
35
+ });
36
+ await invokePromise(SpaceOperation.AddRelation, {
37
+ db: space.db,
38
+ schema: Chat.CompanionTo,
39
+ source: chat,
40
+ target: companionTo
41
+ });
42
+ await invokePromise(AssistantOperation.SetCurrentChat, {
43
+ companionTo,
44
+ chat
45
+ });
46
+ }
47
+ }, [
48
+ chat,
49
+ space,
50
+ companionTo,
51
+ invokePromise
52
+ ]);
53
+ const blueprintKeys = useMemo(() => {
54
+ const schema = companionTo ? Obj.getSchema(companionTo) : void 0;
55
+ if (!schema) {
56
+ return [];
57
+ }
58
+ return Option.getOrElse(() => [])(BlueprintsAnnotation.get(schema));
59
+ }, [
60
+ companionTo
61
+ ]);
62
+ const existingBlueprints = useQuery(space?.db, Filter.type(Blueprint.Blueprint));
63
+ const pluginBlueprints = useMemo(() => existingBlueprints.filter((blueprint) => {
64
+ const key = Obj.getMeta(blueprint).key;
65
+ return key !== void 0 && blueprintKeys.includes(key);
66
+ }), [
67
+ existingBlueprints,
68
+ blueprintKeys
69
+ ]);
70
+ useAsyncEffect(async () => {
71
+ if (!space) {
72
+ return;
73
+ }
74
+ const existingBlueprints2 = await space.db.query(Filter.type(Blueprint.Blueprint)).run();
75
+ for (const key of blueprintKeys) {
76
+ const existingBlueprint = existingBlueprints2.find((blueprint2) => Obj.getMeta(blueprint2).key === key);
77
+ if (existingBlueprint) {
78
+ continue;
79
+ }
80
+ const blueprint = blueprintRegistry.getByKey(key);
81
+ if (!blueprint) {
82
+ continue;
83
+ }
84
+ space.db.add(Obj.clone(blueprint, {
85
+ deep: true
86
+ }));
87
+ }
88
+ }, [
89
+ space,
90
+ blueprintRegistry,
91
+ blueprintKeys
92
+ ]);
93
+ useAsyncEffect(async () => {
94
+ if (!binder?.isOpen) {
95
+ return;
96
+ }
97
+ if (pluginBlueprints.length > 0) {
98
+ await binder.bind({
99
+ blueprints: pluginBlueprints.map((blueprint) => Ref.make(blueprint))
100
+ });
101
+ }
102
+ if (Obj.instanceOf(Blueprint.Blueprint, companionTo)) {
103
+ await binder.bind({
104
+ blueprints: [
105
+ Ref.make(companionTo)
106
+ ]
107
+ });
108
+ } else {
109
+ await binder.bind({
110
+ objects: [
111
+ Ref.make(companionTo)
112
+ ]
113
+ });
114
+ }
115
+ }, [
116
+ binder,
117
+ companionTo,
118
+ blueprintKeys
119
+ ]);
120
+ return /* @__PURE__ */ React.createElement(ChatArticle, {
121
+ role: role ?? "article",
122
+ space,
123
+ subject: chat,
124
+ attendableId,
125
+ companionTo,
126
+ onEvent: handleEvent,
127
+ ref: forwardedRef
128
+ });
129
+ });
130
+ export {
131
+ ChatCompanion as default
132
+ };
133
+ //# sourceMappingURL=ChatCompanion-DFRMRUK3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/ChatCompanion/ChatCompanion.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { forwardRef, useCallback, useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { BlueprintsAnnotation } from '@dxos/app-toolkit';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { getSpace } from '@dxos/client/echo';\nimport { Blueprint } from '@dxos/compute';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { type ChatEvent } from '#components';\nimport { useBlueprintRegistry, useContextBinder } from '#hooks';\nimport { AssistantOperation } from '#types';\n\nimport ChatArticle from '../ChatArticle';\n\nexport type ChatCompanionProps = AppSurface.ArticleProps<Chat.Chat, {}, Obj.Unknown>;\n\nexport const ChatCompanion = forwardRef<HTMLDivElement, ChatCompanionProps>(\n ({ role, subject: chat, companionTo, attendableId }, forwardedRef) => {\n const { invokePromise } = useOperationInvoker();\n const blueprintRegistry = useBlueprintRegistry();\n const space = getSpace(companionTo);\n const feedTarget = chat?.feed.target;\n const binder = useContextBinder(space, feedTarget);\n\n // Persist chat on first submit.\n const handleEvent = useCallback(\n async (event: ChatEvent) => {\n if (!space || !chat) {\n return;\n }\n\n if (event.type === 'submit' && !Obj.getDatabase(chat)) {\n await invokePromise(SpaceOperation.AddObject, {\n object: chat,\n target: space.db,\n hidden: true,\n });\n await invokePromise(SpaceOperation.AddRelation, {\n db: space.db,\n schema: Chat.CompanionTo,\n source: chat,\n target: companionTo,\n });\n await invokePromise(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }\n },\n [chat, space, companionTo, invokePromise],\n );\n\n const blueprintKeys = useMemo(() => {\n const schema = companionTo ? Obj.getSchema(companionTo) : undefined;\n if (!schema) {\n return [] as string[];\n }\n return Option.getOrElse(() => [] as string[])(BlueprintsAnnotation.get(schema));\n }, [companionTo]);\n const existingBlueprints = useQuery(space?.db, Filter.type(Blueprint.Blueprint));\n const pluginBlueprints = useMemo(\n () =>\n existingBlueprints.filter((blueprint) => {\n const key = Obj.getMeta(blueprint).key;\n return key !== undefined && blueprintKeys.includes(key);\n }),\n [existingBlueprints, blueprintKeys],\n );\n\n // Initialize related blueprints that are not already in the space.\n useAsyncEffect(async () => {\n if (!space) {\n return;\n }\n\n // NOTE: This must be run instead of using the useQuery result to avoid duplicates.\n const existingBlueprints = await space.db.query(Filter.type(Blueprint.Blueprint)).run();\n for (const key of blueprintKeys) {\n const existingBlueprint = existingBlueprints.find((blueprint) => Obj.getMeta(blueprint).key === key);\n if (existingBlueprint) {\n continue;\n }\n\n const blueprint = blueprintRegistry.getByKey(key);\n if (!blueprint) {\n continue;\n }\n\n space.db.add(Obj.clone(blueprint, { deep: true }));\n }\n }, [space, blueprintRegistry, blueprintKeys]);\n\n useAsyncEffect(async () => {\n if (!binder?.isOpen) {\n return;\n }\n\n if (pluginBlueprints.length > 0) {\n await binder.bind({\n blueprints: pluginBlueprints.map((blueprint) => Ref.make(blueprint)),\n });\n }\n\n if (Obj.instanceOf(Blueprint.Blueprint, companionTo)) {\n await binder.bind({ blueprints: [Ref.make(companionTo)] });\n } else {\n await binder.bind({ objects: [Ref.make(companionTo)] });\n }\n }, [binder, companionTo, blueprintKeys]);\n\n return (\n <ChatArticle\n role={role ?? 'article'}\n space={space}\n subject={chat}\n attendableId={attendableId}\n companionTo={companionTo}\n onEvent={handleEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,SAASC,YAAYC,aAAaC,eAAe;AAExD,SAASC,2BAA2B;AACpC,SAASC,4BAA4B;AAErC,SAASC,YAAY;AACrB,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,QAAQC,KAAKC,WAAW;AACjC,SAASC,sBAAsB;AAC/B,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAG/B,SAASC,sBAAsBC,wBAAwB;AACvD,SAASC,0BAA0B;AAM5B,IAAMC,gBAAgBC,2BAC3B,CAAC,EAAEC,MAAMC,SAASC,MAAMC,aAAaC,aAAY,GAAIC,iBAAAA;AACnD,QAAM,EAAEC,cAAa,IAAKC,oBAAAA;AAC1B,QAAMC,oBAAoBC,qBAAAA;AAC1B,QAAMC,QAAQC,SAASR,WAAAA;AACvB,QAAMS,aAAaV,MAAMW,KAAKC;AAC9B,QAAMC,SAASC,iBAAiBN,OAAOE,UAAAA;AAGvC,QAAMK,cAAcC,YAClB,OAAOC,UAAAA;AACL,QAAI,CAACT,SAAS,CAACR,MAAM;AACnB;IACF;AAEA,QAAIiB,MAAMC,SAAS,YAAY,CAACC,IAAIC,YAAYpB,IAAAA,GAAO;AACrD,YAAMI,cAAciB,eAAeC,WAAW;QAC5CC,QAAQvB;QACRY,QAAQJ,MAAMgB;QACdC,QAAQ;MACV,CAAA;AACA,YAAMrB,cAAciB,eAAeK,aAAa;QAC9CF,IAAIhB,MAAMgB;QACVG,QAAQC,KAAKC;QACbC,QAAQ9B;QACRY,QAAQX;MACV,CAAA;AACA,YAAMG,cAAc2B,mBAAmBC,gBAAgB;QACrD/B;QACAD;MACF,CAAA;IACF;EACF,GACA;IAACA;IAAMQ;IAAOP;IAAaG;GAAc;AAG3C,QAAM6B,gBAAgBC,QAAQ,MAAA;AAC5B,UAAMP,SAAS1B,cAAckB,IAAIgB,UAAUlC,WAAAA,IAAemC;AAC1D,QAAI,CAACT,QAAQ;AACX,aAAO,CAAA;IACT;AACA,WAAcU,iBAAU,MAAM,CAAA,CAAE,EAAcC,qBAAqBC,IAAIZ,MAAAA,CAAAA;EACzE,GAAG;IAAC1B;GAAY;AAChB,QAAMuC,qBAAqBC,SAASjC,OAAOgB,IAAIkB,OAAOxB,KAAKyB,UAAUA,SAAS,CAAA;AAC9E,QAAMC,mBAAmBV,QACvB,MACEM,mBAAmBK,OAAO,CAACC,cAAAA;AACzB,UAAMC,MAAM5B,IAAI6B,QAAQF,SAAAA,EAAWC;AACnC,WAAOA,QAAQX,UAAaH,cAAcgB,SAASF,GAAAA;EACrD,CAAA,GACF;IAACP;IAAoBP;GAAc;AAIrCiB,iBAAe,YAAA;AACb,QAAI,CAAC1C,OAAO;AACV;IACF;AAGA,UAAMgC,sBAAqB,MAAMhC,MAAMgB,GAAG2B,MAAMT,OAAOxB,KAAKyB,UAAUA,SAAS,CAAA,EAAGS,IAAG;AACrF,eAAWL,OAAOd,eAAe;AAC/B,YAAMoB,oBAAoBb,oBAAmBc,KAAK,CAACR,eAAc3B,IAAI6B,QAAQF,UAAAA,EAAWC,QAAQA,GAAAA;AAChG,UAAIM,mBAAmB;AACrB;MACF;AAEA,YAAMP,YAAYxC,kBAAkBiD,SAASR,GAAAA;AAC7C,UAAI,CAACD,WAAW;AACd;MACF;AAEAtC,YAAMgB,GAAGgC,IAAIrC,IAAIsC,MAAMX,WAAW;QAAEY,MAAM;MAAK,CAAA,CAAA;IACjD;EACF,GAAG;IAAClD;IAAOF;IAAmB2B;GAAc;AAE5CiB,iBAAe,YAAA;AACb,QAAI,CAACrC,QAAQ8C,QAAQ;AACnB;IACF;AAEA,QAAIf,iBAAiBgB,SAAS,GAAG;AAC/B,YAAM/C,OAAOgD,KAAK;QAChBC,YAAYlB,iBAAiBmB,IAAI,CAACjB,cAAckB,IAAIC,KAAKnB,SAAAA,CAAAA;MAC3D,CAAA;IACF;AAEA,QAAI3B,IAAI+C,WAAWvB,UAAUA,WAAW1C,WAAAA,GAAc;AACpD,YAAMY,OAAOgD,KAAK;QAAEC,YAAY;UAACE,IAAIC,KAAKhE,WAAAA;;MAAc,CAAA;IAC1D,OAAO;AACL,YAAMY,OAAOgD,KAAK;QAAEM,SAAS;UAACH,IAAIC,KAAKhE,WAAAA;;MAAc,CAAA;IACvD;EACF,GAAG;IAACY;IAAQZ;IAAagC;GAAc;AAEvC,SACE,sBAAA,cAACmC,aAAAA;IACCtE,MAAMA,QAAQ;IACdU;IACAT,SAASC;IACTE;IACAD;IACAoE,SAAStD;IACTuD,KAAKnE;;AAGX,CAAA;",
6
+ "names": ["Option", "React", "forwardRef", "useCallback", "useMemo", "useOperationInvoker", "BlueprintsAnnotation", "Chat", "getSpace", "Blueprint", "Filter", "Obj", "Ref", "SpaceOperation", "useQuery", "useAsyncEffect", "useBlueprintRegistry", "useContextBinder", "AssistantOperation", "ChatCompanion", "forwardRef", "role", "subject", "chat", "companionTo", "attendableId", "forwardedRef", "invokePromise", "useOperationInvoker", "blueprintRegistry", "useBlueprintRegistry", "space", "getSpace", "feedTarget", "feed", "target", "binder", "useContextBinder", "handleEvent", "useCallback", "event", "type", "Obj", "getDatabase", "SpaceOperation", "AddObject", "object", "db", "hidden", "AddRelation", "schema", "Chat", "CompanionTo", "source", "AssistantOperation", "SetCurrentChat", "blueprintKeys", "useMemo", "getSchema", "undefined", "getOrElse", "BlueprintsAnnotation", "get", "existingBlueprints", "useQuery", "Filter", "Blueprint", "pluginBlueprints", "filter", "blueprint", "key", "getMeta", "includes", "useAsyncEffect", "query", "run", "existingBlueprint", "find", "getByKey", "add", "clone", "deep", "isOpen", "length", "bind", "blueprints", "map", "Ref", "make", "instanceOf", "objects", "ChatArticle", "onEvent", "ref"]
7
+ }
@@ -0,0 +1,72 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/containers/ChatDialog/ChatDialog.tsx
4
+ import React, { useCallback, useState } from "react";
5
+ import { useAtomCapability } from "@dxos/app-framework/ui";
6
+ import { Obj } from "@dxos/echo";
7
+ import { useTranslation } from "@dxos/react-ui";
8
+ import { ChatDialog as NaturalChatDialog } from "@dxos/react-ui-chat";
9
+ import { Chat } from "#components";
10
+ import { useBlueprintRegistry, useChatProcessor, useChatServices, useOnline, usePresets } from "#hooks";
11
+ import { meta } from "#meta";
12
+ import { AssistantCapabilities } from "#types";
13
+ var ChatDialog = ({ chat }) => {
14
+ const { t } = useTranslation(meta.id);
15
+ const db = chat && Obj.getDatabase(chat);
16
+ const settings = useAtomCapability(AssistantCapabilities.Settings);
17
+ const runtime = useChatServices({
18
+ id: db?.spaceId
19
+ });
20
+ const [online, setOnline] = useOnline();
21
+ const { preset, ...chatProps } = usePresets(online);
22
+ const blueprintRegistry = useBlueprintRegistry();
23
+ const processor = useChatProcessor({
24
+ chat,
25
+ preset,
26
+ runtime,
27
+ blueprintRegistry,
28
+ settings
29
+ });
30
+ const [open, setOpen] = useState(true);
31
+ const [expanded, setExpanded] = useState(false);
32
+ const handleEvent = useCallback((event) => {
33
+ switch (event.type) {
34
+ case "submit":
35
+ case "thread-open":
36
+ setOpen(true);
37
+ setExpanded(true);
38
+ break;
39
+ case "thread-close":
40
+ setOpen(false);
41
+ break;
42
+ }
43
+ }, []);
44
+ if (!chat || !processor) {
45
+ return null;
46
+ }
47
+ return /* @__PURE__ */ React.createElement(Chat.Root, {
48
+ chat,
49
+ processor,
50
+ onEvent: handleEvent
51
+ }, /* @__PURE__ */ React.createElement(NaturalChatDialog.Root, {
52
+ open,
53
+ expanded,
54
+ onOpenChange: setOpen
55
+ }, /* @__PURE__ */ React.createElement(NaturalChatDialog.Header, {
56
+ title: t("assistant-dialog.title")
57
+ }), /* @__PURE__ */ React.createElement(NaturalChatDialog.Content, null, /* @__PURE__ */ React.createElement(Chat.Thread, {
58
+ viewType: chat.view ?? settings.chatView
59
+ })), /* @__PURE__ */ React.createElement(NaturalChatDialog.Footer, {
60
+ classNames: "p-1.5"
61
+ }, /* @__PURE__ */ React.createElement(Chat.Prompt, {
62
+ ...chatProps,
63
+ preset: preset?.id,
64
+ online,
65
+ onOnlineChange: setOnline,
66
+ expandable: true
67
+ }))));
68
+ };
69
+ export {
70
+ ChatDialog as default
71
+ };
72
+ //# sourceMappingURL=ChatDialog-QKZLG7SQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/ChatDialog/ChatDialog.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { useAtomCapability } from '@dxos/app-framework/ui';\nimport { type Chat as ChatTypes } from '@dxos/assistant-toolkit';\nimport { Obj } from '@dxos/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { ChatDialog as NaturalChatDialog } from '@dxos/react-ui-chat';\n\nimport { Chat, type ChatRootProps } from '#components';\nimport { useBlueprintRegistry, useChatProcessor, useChatServices, useOnline, usePresets } from '#hooks';\nimport { meta } from '#meta';\nimport { type Assistant, AssistantCapabilities } from '#types';\n\nexport type ChatDialogProps = {\n chat?: ChatTypes.Chat;\n};\n\nexport const ChatDialog = ({ chat }: ChatDialogProps) => {\n const { t } = useTranslation(meta.id);\n\n const db = chat && Obj.getDatabase(chat);\n const settings = useAtomCapability(AssistantCapabilities.Settings);\n const runtime = useChatServices({ id: db?.spaceId });\n const [online, setOnline] = useOnline();\n const { preset, ...chatProps } = usePresets(online);\n const blueprintRegistry = useBlueprintRegistry();\n const processor = useChatProcessor({ chat, preset, runtime, blueprintRegistry, settings });\n\n // TODO(burdon): Refocus when open.\n const [open, setOpen] = useState(true);\n const [expanded, setExpanded] = useState(false);\n const handleEvent = useCallback<NonNullable<ChatRootProps['onEvent']>>((event) => {\n switch (event.type) {\n case 'submit':\n case 'thread-open':\n setOpen(true);\n setExpanded(true);\n break;\n case 'thread-close':\n setOpen(false);\n break;\n }\n }, []);\n\n if (!chat || !processor) {\n return null;\n }\n\n return (\n <Chat.Root chat={chat} processor={processor} onEvent={handleEvent}>\n <NaturalChatDialog.Root open={open} expanded={expanded} onOpenChange={setOpen}>\n <NaturalChatDialog.Header title={t('assistant-dialog.title')} />\n <NaturalChatDialog.Content>\n <Chat.Thread viewType={(chat.view as Assistant.ChatView | undefined) ?? settings.chatView} />\n </NaturalChatDialog.Content>\n <NaturalChatDialog.Footer classNames='p-1.5'>\n <Chat.Prompt {...chatProps} preset={preset?.id} online={online} onOnlineChange={setOnline} expandable />\n </NaturalChatDialog.Footer>\n </NaturalChatDialog.Root>\n </Chat.Root>\n );\n};\n"],
5
+ "mappings": ";;;AAIA,OAAOA,SAASC,aAAaC,gBAAgB;AAE7C,SAASC,yBAAyB;AAElC,SAASC,WAAW;AACpB,SAASC,sBAAsB;AAC/B,SAASC,cAAcC,yBAAyB;AAEhD,SAASC,YAAgC;AACzC,SAASC,sBAAsBC,kBAAkBC,iBAAiBC,WAAWC,kBAAkB;AAC/F,SAASC,YAAY;AACrB,SAAyBC,6BAA6B;AAM/C,IAAMT,aAAa,CAAC,EAAEU,KAAI,MAAmB;AAClD,QAAM,EAAEC,EAAC,IAAKZ,eAAeS,KAAKI,EAAE;AAEpC,QAAMC,KAAKH,QAAQZ,IAAIgB,YAAYJ,IAAAA;AACnC,QAAMK,WAAWlB,kBAAkBY,sBAAsBO,QAAQ;AACjE,QAAMC,UAAUZ,gBAAgB;IAAEO,IAAIC,IAAIK;EAAQ,CAAA;AAClD,QAAM,CAACC,QAAQC,SAAAA,IAAad,UAAAA;AAC5B,QAAM,EAAEe,QAAQ,GAAGC,UAAAA,IAAcf,WAAWY,MAAAA;AAC5C,QAAMI,oBAAoBpB,qBAAAA;AAC1B,QAAMqB,YAAYpB,iBAAiB;IAAEM;IAAMW;IAAQJ;IAASM;IAAmBR;EAAS,CAAA;AAGxF,QAAM,CAACU,MAAMC,OAAAA,IAAW9B,SAAS,IAAA;AACjC,QAAM,CAAC+B,UAAUC,WAAAA,IAAehC,SAAS,KAAA;AACzC,QAAMiC,cAAclC,YAAmD,CAACmC,UAAAA;AACtE,YAAQA,MAAMC,MAAI;MAChB,KAAK;MACL,KAAK;AACHL,gBAAQ,IAAA;AACRE,oBAAY,IAAA;AACZ;MACF,KAAK;AACHF,gBAAQ,KAAA;AACR;IACJ;EACF,GAAG,CAAA,CAAE;AAEL,MAAI,CAAChB,QAAQ,CAACc,WAAW;AACvB,WAAO;EACT;AAEA,SACE,sBAAA,cAACtB,KAAK8B,MAAI;IAACtB;IAAYc;IAAsBS,SAASJ;KACpD,sBAAA,cAAC5B,kBAAkB+B,MAAI;IAACP;IAAYE;IAAoBO,cAAcR;KACpE,sBAAA,cAACzB,kBAAkBkC,QAAM;IAACC,OAAOzB,EAAE,wBAAA;MACnC,sBAAA,cAACV,kBAAkBoC,SAAO,MACxB,sBAAA,cAACnC,KAAKoC,QAAM;IAACC,UAAW7B,KAAK8B,QAA2CzB,SAAS0B;OAEnF,sBAAA,cAACxC,kBAAkByC,QAAM;IAACC,YAAW;KACnC,sBAAA,cAACzC,KAAK0C,QAAM;IAAE,GAAGtB;IAAWD,QAAQA,QAAQT;IAAIO;IAAgB0B,gBAAgBzB;IAAW0B,YAAAA;;AAKrG;",
6
+ "names": ["React", "useCallback", "useState", "useAtomCapability", "Obj", "useTranslation", "ChatDialog", "NaturalChatDialog", "Chat", "useBlueprintRegistry", "useChatProcessor", "useChatServices", "useOnline", "usePresets", "meta", "AssistantCapabilities", "chat", "t", "id", "db", "getDatabase", "settings", "Settings", "runtime", "spaceId", "online", "setOnline", "preset", "chatProps", "blueprintRegistry", "processor", "open", "setOpen", "expanded", "setExpanded", "handleEvent", "event", "type", "Root", "onEvent", "onOpenChange", "Header", "title", "Content", "Thread", "viewType", "view", "chatView", "Footer", "classNames", "Prompt", "onOnlineChange", "expandable"]
7
+ }
@@ -0,0 +1,28 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/containers/PlanArticle/PlanArticle.tsx
4
+ import React from "react";
5
+ import { Panel, ScrollArea, Toolbar } from "@dxos/react-ui";
6
+ import { useAttention } from "@dxos/react-ui-attention";
7
+ import { TaskList } from "#components";
8
+ var PlanArticle = ({ role, attendableId, subject }) => {
9
+ const { hasAttention } = useAttention(attendableId);
10
+ return /* @__PURE__ */ React.createElement(Panel.Root, {
11
+ role,
12
+ classNames: "dx-document"
13
+ }, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
14
+ asChild: true
15
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, {
16
+ disabled: !hasAttention
17
+ })), /* @__PURE__ */ React.createElement(Panel.Content, {
18
+ asChild: true
19
+ }, /* @__PURE__ */ React.createElement(ScrollArea.Root, {
20
+ orientation: "vertical"
21
+ }, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(TaskList, {
22
+ plan: subject
23
+ })))));
24
+ };
25
+ export {
26
+ PlanArticle as default
27
+ };
28
+ //# sourceMappingURL=PlanArticle-TS5ULWYS.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/PlanArticle/PlanArticle.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Plan } from '@dxos/assistant-toolkit';\nimport { Panel, ScrollArea, Toolbar } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\n\nimport { TaskList } from '#components';\n\nexport type PlanArticleProps = AppSurface.ObjectArticleProps<Plan.Plan>;\n\nexport const PlanArticle = ({ role, attendableId, subject }: PlanArticleProps) => {\n const { hasAttention } = useAttention(attendableId);\n\n return (\n <Panel.Root role={role} classNames='dx-document'>\n <Panel.Toolbar asChild>\n <Toolbar.Root disabled={!hasAttention} />\n </Panel.Toolbar>\n <Panel.Content asChild>\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport>\n <TaskList plan={subject} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Panel.Content>\n </Panel.Root>\n );\n};\n"],
5
+ "mappings": ";;;AAIA,OAAOA,WAAW;AAIlB,SAASC,OAAOC,YAAYC,eAAe;AAC3C,SAASC,oBAAoB;AAE7B,SAASC,gBAAgB;AAIlB,IAAMC,cAAc,CAAC,EAAEC,MAAMC,cAAcC,QAAO,MAAoB;AAC3E,QAAM,EAAEC,aAAY,IAAKN,aAAaI,YAAAA;AAEtC,SACE,sBAAA,cAACP,MAAMU,MAAI;IAACJ;IAAYK,YAAW;KACjC,sBAAA,cAACX,MAAME,SAAO;IAACU,SAAAA;KACb,sBAAA,cAACV,QAAQQ,MAAI;IAACG,UAAU,CAACJ;OAE3B,sBAAA,cAACT,MAAMc,SAAO;IAACF,SAAAA;KACb,sBAAA,cAACX,WAAWS,MAAI;IAACK,aAAY;KAC3B,sBAAA,cAACd,WAAWe,UAAQ,MAClB,sBAAA,cAACZ,UAAAA;IAASa,MAAMT;;AAM5B;",
6
+ "names": ["React", "Panel", "ScrollArea", "Toolbar", "useAttention", "TaskList", "PlanArticle", "role", "attendableId", "subject", "hasAttention", "Root", "classNames", "asChild", "disabled", "Content", "orientation", "Viewport", "plan"]
7
+ }
@@ -0,0 +1,116 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/containers/RoutineArticle/RoutineArticle.tsx
4
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
+ import { AgentPrompt } from "@dxos/assistant-toolkit";
6
+ import { Operation } from "@dxos/compute";
7
+ import { Obj } from "@dxos/echo";
8
+ import { invariant } from "@dxos/invariant";
9
+ import { useComputeRuntimeCallback } from "@dxos/plugin-automation/hooks";
10
+ import { Panel, Toolbar, useTranslation } from "@dxos/react-ui";
11
+ import { useAttention } from "@dxos/react-ui-attention";
12
+ import { JsonHighlighter } from "@dxos/react-ui-syntax-highlighter";
13
+ import { TemplateEditor } from "#components";
14
+ import { meta } from "#meta";
15
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/containers/RoutineArticle/RoutineArticle.tsx";
16
+ var RoutineArticle = ({ role, attendableId, subject }) => {
17
+ const { t } = useTranslation(meta.id);
18
+ const { hasAttention } = useAttention(attendableId);
19
+ const invoke = usePromptHandler(subject);
20
+ const [state, setState] = useState({
21
+ status: "idle"
22
+ });
23
+ const mountedRef = useRef(true);
24
+ useEffect(() => {
25
+ return () => {
26
+ mountedRef.current = false;
27
+ };
28
+ }, []);
29
+ const handleRun = useCallback(async () => {
30
+ setState({
31
+ status: "running"
32
+ });
33
+ try {
34
+ const result = await invoke();
35
+ if (mountedRef.current) {
36
+ setState({
37
+ status: "success",
38
+ result
39
+ });
40
+ }
41
+ } catch (err) {
42
+ if (mountedRef.current) {
43
+ setState({
44
+ status: "error",
45
+ error: err instanceof Error ? err : new Error(String(err))
46
+ });
47
+ }
48
+ }
49
+ }, [
50
+ invoke
51
+ ]);
52
+ return /* @__PURE__ */ React.createElement(Panel.Root, {
53
+ role,
54
+ className: "dx-document"
55
+ }, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
56
+ asChild: true
57
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, {
58
+ disabled: !hasAttention || state.status === "running"
59
+ }, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
60
+ iconOnly: true,
61
+ icon: state.status === "running" ? "ph--spinner-gap--regular" : "ph--play--regular",
62
+ label: t("run-prompt.label"),
63
+ onClick: handleRun
64
+ }))), /* @__PURE__ */ React.createElement(Panel.Content, {
65
+ classNames: "flex flex-col gap-2"
66
+ }, /* @__PURE__ */ React.createElement(TemplateEditor, {
67
+ id: subject.id,
68
+ template: subject.instructions
69
+ }), /* @__PURE__ */ React.createElement(RoutineResult, {
70
+ state
71
+ })));
72
+ };
73
+ var RoutineResult = ({ state }) => {
74
+ const { t } = useTranslation(meta.id);
75
+ switch (state.status) {
76
+ case "idle":
77
+ return null;
78
+ case "running":
79
+ return /* @__PURE__ */ React.createElement("div", {
80
+ className: "p-2 text-sm text-subdued"
81
+ }, t("routine-running.label"));
82
+ case "error":
83
+ return /* @__PURE__ */ React.createElement("div", {
84
+ className: "p-2 text-sm text-error"
85
+ }, state.error.message);
86
+ case "success":
87
+ return /* @__PURE__ */ React.createElement(JsonHighlighter, {
88
+ classNames: "p-2! text-sm",
89
+ data: state.result
90
+ });
91
+ }
92
+ };
93
+ var usePromptHandler = (routine) => {
94
+ const db = Obj.getDatabase(routine);
95
+ const data = useMemo(() => {
96
+ if (db && routine) {
97
+ return {
98
+ prompt: db.makeRef(Obj.getDXN(routine)),
99
+ input: {}
100
+ };
101
+ }
102
+ }, [
103
+ routine,
104
+ db
105
+ ]);
106
+ return useComputeRuntimeCallback(db?.spaceId, () => {
107
+ invariant(data, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 107, S: void 0, A: ["data", ""] });
108
+ return Operation.invoke(AgentPrompt, data);
109
+ }, [
110
+ data
111
+ ]);
112
+ };
113
+ export {
114
+ RoutineArticle as default
115
+ };
116
+ //# sourceMappingURL=RoutineArticle-H7ECM7AH.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/RoutineArticle/RoutineArticle.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { AgentPrompt } from '@dxos/assistant-toolkit';\nimport { type Routine } from '@dxos/compute';\nimport { Operation } from '@dxos/compute';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { useComputeRuntimeCallback } from '@dxos/plugin-automation/hooks';\nimport { Panel, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\n\nimport { TemplateEditor } from '#components';\nimport { meta } from '#meta';\n\nexport type RoutineArticleProps = AppSurface.ObjectArticleProps<Routine.Routine>;\n\ntype RunState =\n | { status: 'idle' }\n | { status: 'running' }\n | { status: 'success'; result: unknown }\n | { status: 'error'; error: Error };\n\n// TODO(burdon): Trigger editor.\nexport const RoutineArticle = ({ role, attendableId, subject }: RoutineArticleProps) => {\n const { t } = useTranslation(meta.id);\n const { hasAttention } = useAttention(attendableId);\n const invoke = usePromptHandler(subject);\n const [state, setState] = useState<RunState>({ status: 'idle' });\n const mountedRef = useRef(true);\n useEffect(() => {\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n const handleRun = useCallback(async () => {\n setState({ status: 'running' });\n try {\n const result = await invoke();\n if (mountedRef.current) {\n setState({ status: 'success', result });\n }\n } catch (err) {\n if (mountedRef.current) {\n setState({ status: 'error', error: err instanceof Error ? err : new Error(String(err)) });\n }\n }\n }, [invoke]);\n\n return (\n <Panel.Root role={role} className='dx-document'>\n <Panel.Toolbar asChild>\n <Toolbar.Root disabled={!hasAttention || state.status === 'running'}>\n <Toolbar.IconButton\n iconOnly\n icon={state.status === 'running' ? 'ph--spinner-gap--regular' : 'ph--play--regular'}\n label={t('run-prompt.label')}\n onClick={handleRun}\n />\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content classNames='flex flex-col gap-2'>\n <TemplateEditor id={subject.id} template={subject.instructions} />\n <RoutineResult state={state} />\n </Panel.Content>\n </Panel.Root>\n );\n};\n\nconst RoutineResult = ({ state }: { state: RunState }) => {\n const { t } = useTranslation(meta.id);\n switch (state.status) {\n case 'idle':\n return null;\n case 'running':\n return <div className='p-2 text-sm text-subdued'>{t('routine-running.label')}</div>;\n case 'error':\n return <div className='p-2 text-sm text-error'>{state.error.message}</div>;\n case 'success':\n return <JsonHighlighter classNames='p-2! text-sm' data={state.result} />;\n }\n};\n\nconst usePromptHandler = (routine: Routine.Routine) => {\n const db = Obj.getDatabase(routine);\n const data = useMemo<Operation.Definition.Input<typeof AgentPrompt> | undefined>(() => {\n if (db && routine) {\n return {\n prompt: db.makeRef(Obj.getDXN(routine)),\n input: {},\n };\n }\n }, [routine, db]);\n\n return useComputeRuntimeCallback(\n db?.spaceId,\n () => {\n invariant(data);\n return Operation.invoke(AgentPrompt, data);\n },\n [data],\n );\n};\n"],
5
+ "mappings": ";;;AAIA,OAAOA,SAASC,aAAaC,WAAWC,SAASC,QAAQC,gBAAgB;AAGzE,SAASC,mBAAmB;AAE5B,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,iCAAiC;AAC1C,SAASC,OAAOC,SAASC,sBAAsB;AAC/C,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAEhC,SAASC,sBAAsB;AAC/B,SAASC,YAAY;AAUrB,IAAA,eAAA;AAGE,IAAQC,iBAAiBJ,CAAAA,EAAAA,MAAAA,cAAaK,QAAAA,MAAAA;AACtC,QAAMC,EAAAA,EAAAA,IAAAA,eAASC,KAAiBC,EAAAA;AAChC,QAAM,EAACC,aAAOC,IAAS,aAAsB,YAAA;QAAEC,SAAQ,iBAAA,OAAA;AAAO,QAAA,CAAA,OAAA,QAAA,IAAA,SAAA;IAC9D,QAAMC;EACNxB,CAAAA;QACE,aAAO,OAAA,IAAA;YACLwB,MAAAA;AACF,WAAA,MAAA;AACG,iBAAA,UAAA;IAEL;MACEF,CAAAA;oBAAmB,YAAA,YAAA;AAAU,aAAA;MACzB,QAAA;;QAEF;YACEA,SAAS,MAAA,OAAA;qBAAEC,SAAQ;iBAAWE;UAAO,QAAA;UACvC;QACA,CAAOC;MACP;aACEJ,KAAAA;qBAAWC,SAAQ;iBAASI;UAA2D,QAAA;UACzF,OAAA,eAAA,QAAA,MAAA,IAAA,MAAA,OAAA,GAAA,CAAA;QACF,CAAA;MACC;IAACT;KAAO;IAEX;;SACoC,sBAAA,cAAA,MAAA,MAAA;;IACjBU,WAAAA;KACb,sBAAA,cAAClB,MAAAA,SAAY;IAACmB,SAAAA;KACZ,sBAAA,cAACnB,QAAQoB,MAAAA;IACPC,UAAAA,CAAAA,gBAAAA,MAAAA,WAAAA;KACYR,sBAAM,cAAK,QAAY,YAAA;IACnCS,UAAS;IACTC,MAAAA,MAASC,WAAAA,YAAAA,6BAAAA;+BAIf;IAAeC,SAAAA;QACb,sBAAA,cAACrB,MAAAA,SAAAA;IAAesB,YAAYA;KAAchB,sBAAQiB,cAAY,gBAAA;;IAC/ChB,UAAOA,QAAAA;;IAI5B;EAEF,CAAA,CAAMiB,CAAAA;;IAEJ,gBAAcf,CAAM,EAAA,MAAA,MAAA;QAClB,EAAA,EAAK,IAAA,eAAA,KAAA,EAAA;gBACH,QAAO;IACT,KAAK;AACH,aAAA;;aAAoD,sBAAA,cAAA,OAAA;QACjD,WAAA;MACH,GAAA,EAAA,uBAAO,CAAA;;aAAqDgB,sBAAO,cAAA,OAAA;QAChE,WAAA;MACH,GAAA,MAAA,MAAA,OAAO;;aAAuDd,sBAAM,cAAA,iBAAA;;QACxE,MAAA,MAAA;MACF,CAAA;EAEA;;IAEE,mBAAiF,CAAA,YAAA;QAC/E,KAAIe,IAAMC,YAAS,OAAA;eACjB,QAAO,MAAA;cACLC,SAAWC;aACXC;QACF,QAAA,GAAA,QAAA,IAAA,OAAA,OAAA,CAAA;QACF,OAAA,CAAA;MACC;IAACH;;IAAY;IAEhB;;SAII,0BAAwBrC,IAAAA,SAAayC,MAAAA;AAEvC,cAAA,MAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,KAAA,GAAA,QAAA,GAAA,CAAA,QAAA,EAAA,EAAA,CAAA;AAACA,WAAAA,UAAAA,OAAAA,aAAAA,IAAAA;KAAK;IAEV;;;",
6
+ "names": ["React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "AgentPrompt", "Operation", "Obj", "invariant", "useComputeRuntimeCallback", "Panel", "Toolbar", "useTranslation", "useAttention", "JsonHighlighter", "TemplateEditor", "meta", "hasAttention", "attendableId", "invoke", "usePromptHandler", "subject", "state", "setState", "status", "mountedRef", "result", "err", "error", "asChild", "disabled", "IconButton", "iconOnly", "label", "onClick", "handleRun", "classNames", "id", "instructions", "RoutineResult", "message", "db", "routine", "prompt", "makeRef", "input", "data"]
7
+ }
@@ -0,0 +1,48 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/containers/RoutineList/RoutineList.tsx
4
+ import React from "react";
5
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
6
+ import { DatabaseBlueprint, WebSearchBlueprint } from "@dxos/assistant-toolkit";
7
+ import { Routine } from "@dxos/compute";
8
+ import { Filter, Obj, Ref } from "@dxos/echo";
9
+ import { MarkdownBlueprint } from "@dxos/plugin-markdown";
10
+ import { useQuery } from "@dxos/react-client/echo";
11
+ import { IconButton } from "@dxos/react-ui";
12
+ import { AssistantOperation } from "#types";
13
+ var RoutineList = ({ subject }) => {
14
+ const { invokePromise } = useOperationInvoker();
15
+ const db = Obj.getDatabase(subject);
16
+ const prompts = useQuery(db, Filter.type(Routine.Routine));
17
+ if (!db) {
18
+ return null;
19
+ }
20
+ return /* @__PURE__ */ React.createElement("div", {
21
+ className: "flex gap-2"
22
+ }, prompts.map((prompt, i) => /* @__PURE__ */ React.createElement("div", {
23
+ key: i
24
+ }, /* @__PURE__ */ React.createElement(IconButton, {
25
+ icon: "ph--magic-wand--regular",
26
+ label: Obj.getLabel(prompt) ?? Obj.getDXN(prompt).toString(),
27
+ onClick: () => {
28
+ void invokePromise(AssistantOperation.RunPromptInNewChat, {
29
+ db,
30
+ prompt: Ref.make(prompt),
31
+ objects: [
32
+ subject
33
+ ],
34
+ // TODO(burdon): Concifgure from Prompt object.
35
+ blueprints: [
36
+ DatabaseBlueprint.key,
37
+ WebSearchBlueprint.key,
38
+ MarkdownBlueprint.key
39
+ ],
40
+ background: true
41
+ });
42
+ }
43
+ }))));
44
+ };
45
+ export {
46
+ RoutineList as default
47
+ };
48
+ //# sourceMappingURL=RoutineList-CLDXGQUD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/RoutineList/RoutineList.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { DatabaseBlueprint, WebSearchBlueprint } from '@dxos/assistant-toolkit';\nimport { Routine } from '@dxos/compute';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { MarkdownBlueprint } from '@dxos/plugin-markdown';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { IconButton } from '@dxos/react-ui';\n\nimport { AssistantOperation } from '#types';\n\nexport type RoutineListProps = AppSurface.ObjectSectionProps<Obj.Unknown>;\n\nexport const RoutineList = ({ subject }: RoutineListProps) => {\n const { invokePromise } = useOperationInvoker();\n const db = Obj.getDatabase(subject);\n const prompts = useQuery(db, Filter.type(Routine.Routine));\n if (!db) {\n return null;\n }\n\n return (\n <div className='flex gap-2'>\n {prompts.map((prompt, i) => (\n <div key={i}>\n <IconButton\n icon='ph--magic-wand--regular'\n label={Obj.getLabel(prompt) ?? Obj.getDXN(prompt).toString()}\n onClick={() => {\n void invokePromise(AssistantOperation.RunPromptInNewChat, {\n db,\n prompt: Ref.make(prompt),\n objects: [subject],\n // TODO(burdon): Concifgure from Prompt object.\n blueprints: [DatabaseBlueprint.key, WebSearchBlueprint.key, MarkdownBlueprint.key],\n background: true,\n });\n }}\n />\n </div>\n ))}\n </div>\n );\n};\n"],
5
+ "mappings": ";;;AAIA,OAAOA,WAAW;AAElB,SAASC,2BAA2B;AAEpC,SAASC,mBAAmBC,0BAA0B;AACtD,SAASC,eAAe;AACxB,SAASC,QAAQC,KAAKC,WAAW;AACjC,SAASC,yBAAyB;AAClC,SAASC,gBAAgB;AACzB,SAASC,kBAAkB;AAE3B,SAASC,0BAA0B;AAI5B,IAAMC,cAAc,CAAC,EAAEC,QAAO,MAAoB;AACvD,QAAM,EAAEC,cAAa,IAAKb,oBAAAA;AAC1B,QAAMc,KAAKT,IAAIU,YAAYH,OAAAA;AAC3B,QAAMI,UAAUR,SAASM,IAAIV,OAAOa,KAAKd,QAAQA,OAAO,CAAA;AACxD,MAAI,CAACW,IAAI;AACP,WAAO;EACT;AAEA,SACE,sBAAA,cAACI,OAAAA;IAAIC,WAAU;KACZH,QAAQI,IAAI,CAACC,QAAQC,MACpB,sBAAA,cAACJ,OAAAA;IAAIK,KAAKD;KACR,sBAAA,cAACb,YAAAA;IACCe,MAAK;IACLC,OAAOpB,IAAIqB,SAASL,MAAAA,KAAWhB,IAAIsB,OAAON,MAAAA,EAAQO,SAAQ;IAC1DC,SAAS,MAAA;AACP,WAAKhB,cAAcH,mBAAmBoB,oBAAoB;QACxDhB;QACAO,QAAQf,IAAIyB,KAAKV,MAAAA;QACjBW,SAAS;UAACpB;;;QAEVqB,YAAY;UAAChC,kBAAkBsB;UAAKrB,mBAAmBqB;UAAKhB,kBAAkBgB;;QAC9EW,YAAY;MACd,CAAA;IACF;;AAMZ;",
6
+ "names": ["React", "useOperationInvoker", "DatabaseBlueprint", "WebSearchBlueprint", "Routine", "Filter", "Obj", "Ref", "MarkdownBlueprint", "useQuery", "IconButton", "AssistantOperation", "RoutineList", "subject", "invokePromise", "db", "getDatabase", "prompts", "type", "div", "className", "map", "prompt", "i", "key", "icon", "label", "getLabel", "getDXN", "toString", "onClick", "RunPromptInNewChat", "make", "objects", "blueprints", "background"]
7
+ }