@dxos/plugin-assistant 0.8.3 → 0.8.4-main.5acf9ea

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 (432) hide show
  1. package/dist/lib/browser/{TemplateContainer-QQHVOTSI.mjs → BlueprintContainer-IZ4AK5EO.mjs} +10 -10
  2. package/dist/lib/browser/BlueprintContainer-IZ4AK5EO.mjs.map +7 -0
  3. package/dist/lib/browser/ChatContainer-RP3QEXYX.mjs +54 -0
  4. package/dist/lib/browser/ChatContainer-RP3QEXYX.mjs.map +7 -0
  5. package/dist/lib/browser/ChatDialog-ZVLXFHEY.mjs +72 -0
  6. package/dist/lib/browser/ChatDialog-ZVLXFHEY.mjs.map +7 -0
  7. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs +162 -0
  8. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-E4H5DCOJ.mjs → app-graph-builder-XSEOKJLG.mjs} +25 -86
  10. package/dist/lib/browser/app-graph-builder-XSEOKJLG.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-63GG6U6D.mjs +2226 -0
  12. package/dist/lib/browser/chunk-63GG6U6D.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-7W7LHTRH.mjs +171 -0
  14. package/dist/lib/browser/chunk-7W7LHTRH.mjs.map +7 -0
  15. package/dist/lib/{node/chunk-P74TWGMG.cjs → browser/chunk-FDCJSQYF.mjs} +10 -14
  16. package/dist/lib/{node-esm/chunk-BB2TAT4P.mjs.map → browser/chunk-FDCJSQYF.mjs.map} +1 -1
  17. package/dist/lib/browser/{chunk-JQFUME3B.mjs → chunk-KFXSBNZR.mjs} +36 -34
  18. package/dist/lib/browser/chunk-KFXSBNZR.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-BI6AHRNJ.mjs → chunk-LERGF5YG.mjs} +19 -68
  20. package/dist/lib/browser/chunk-LERGF5YG.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +99 -119
  22. package/dist/lib/browser/index.mjs.map +4 -4
  23. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs +75 -0
  24. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs.map +7 -0
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/{react-surface-LXCNUSZN.mjs → react-surface-3GYEHQRP.mjs} +44 -53
  27. package/dist/lib/browser/react-surface-3GYEHQRP.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-XRHXVWGB.mjs → settings-5GTTCVGD.mjs} +6 -6
  29. package/dist/lib/browser/settings-5GTTCVGD.mjs.map +7 -0
  30. package/dist/lib/browser/types/index.mjs +4 -20
  31. package/dist/lib/node-esm/{TemplateContainer-SOEWY2ZN.mjs → BlueprintContainer-RGTMNLNX.mjs} +10 -10
  32. package/dist/lib/node-esm/BlueprintContainer-RGTMNLNX.mjs.map +7 -0
  33. package/dist/lib/node-esm/ChatContainer-W3W6FWV3.mjs +55 -0
  34. package/dist/lib/node-esm/ChatContainer-W3W6FWV3.mjs.map +7 -0
  35. package/dist/lib/node-esm/ChatDialog-QW4JRKVO.mjs +73 -0
  36. package/dist/lib/node-esm/ChatDialog-QW4JRKVO.mjs.map +7 -0
  37. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs +163 -0
  38. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +7 -0
  39. package/dist/lib/node-esm/{app-graph-builder-3SY5MBIK.mjs → app-graph-builder-PANCJUHV.mjs} +25 -86
  40. package/dist/lib/node-esm/app-graph-builder-PANCJUHV.mjs.map +7 -0
  41. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs +2227 -0
  42. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs.map +7 -0
  43. package/dist/lib/node-esm/{chunk-UCOFKNKN.mjs → chunk-MS3PJARN.mjs} +19 -68
  44. package/dist/lib/node-esm/chunk-MS3PJARN.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +41 -0
  46. package/dist/lib/{browser/chunk-XOZ7YMO3.mjs.map → node-esm/chunk-QN2H2EHV.mjs.map} +1 -1
  47. package/dist/lib/node-esm/{chunk-OYN6HLXZ.mjs → chunk-VIIMA3XQ.mjs} +36 -34
  48. package/dist/lib/node-esm/chunk-VIIMA3XQ.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs +172 -0
  50. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs.map +7 -0
  51. package/dist/lib/node-esm/index.mjs +99 -119
  52. package/dist/lib/node-esm/index.mjs.map +4 -4
  53. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs +76 -0
  54. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs.map +7 -0
  55. package/dist/lib/node-esm/meta.json +1 -1
  56. package/dist/lib/node-esm/{react-surface-7HA5EDWY.mjs → react-surface-QDQWJ7FZ.mjs} +44 -53
  57. package/dist/lib/node-esm/react-surface-QDQWJ7FZ.mjs.map +7 -0
  58. package/dist/lib/node-esm/{settings-5IAY6BT4.mjs → settings-J2EXEM5H.mjs} +6 -6
  59. package/dist/lib/node-esm/settings-J2EXEM5H.mjs.map +7 -0
  60. package/dist/lib/node-esm/types/index.mjs +4 -20
  61. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/index.d.ts +1 -3
  64. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  66. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  68. package/dist/types/src/capability-definitions.d.ts +7 -0
  69. package/dist/types/src/capability-definitions.d.ts.map +1 -0
  70. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +2 -2
  71. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  72. package/dist/types/src/components/BlueprintContainer.d.ts +5 -6
  73. package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -1
  74. package/dist/types/src/components/Chat/Chat.d.ts +47 -0
  75. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -0
  76. package/dist/types/src/components/Chat/events.d.ts +30 -0
  77. package/dist/types/src/components/Chat/events.d.ts.map +1 -0
  78. package/dist/types/src/components/Chat/index.d.ts +3 -0
  79. package/dist/types/src/components/Chat/index.d.ts.map +1 -0
  80. package/dist/types/src/components/ChatContainer.d.ts +6 -6
  81. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  82. package/dist/types/src/components/ChatDialog.d.ts +8 -0
  83. package/dist/types/src/components/ChatDialog.d.ts.map +1 -0
  84. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +11 -0
  85. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -0
  86. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +9 -0
  87. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +1 -0
  88. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts +11 -0
  89. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -0
  90. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +11 -0
  91. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -0
  92. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +8 -0
  93. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -0
  94. package/dist/types/src/components/ChatPrompt/index.d.ts +6 -0
  95. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -0
  96. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +17 -0
  97. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +1 -0
  98. package/dist/types/src/components/ChatThread/ChatThread.d.ts +19 -0
  99. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -0
  100. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +199 -0
  101. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -0
  102. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +19 -0
  103. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +1 -0
  104. package/dist/types/src/components/ChatThread/index.d.ts +2 -0
  105. package/dist/types/src/components/ChatThread/index.d.ts.map +1 -0
  106. package/dist/types/src/components/{Thread → ChatThread}/reducer.d.ts +4 -4
  107. package/dist/types/src/components/ChatThread/reducer.d.ts.map +1 -0
  108. package/dist/types/src/components/PromptSettings.d.ts +2 -2
  109. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  110. package/dist/types/src/components/SequenceContainer.d.ts +8 -0
  111. package/dist/types/src/components/SequenceContainer.d.ts.map +1 -0
  112. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +13 -0
  113. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -0
  114. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +8 -0
  115. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -0
  116. package/dist/types/src/components/SequenceEditor/index.d.ts +2 -0
  117. package/dist/types/src/components/SequenceEditor/index.d.ts.map +1 -0
  118. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +4 -3
  119. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  120. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +3 -3
  121. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  122. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +5 -4
  123. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  124. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +1 -1
  125. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  126. package/dist/types/src/components/Toolbox/Toolbox.d.ts +11 -4
  127. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  128. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -1
  129. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/index.d.ts +6 -12
  131. package/dist/types/src/components/index.d.ts.map +1 -1
  132. package/dist/types/src/events.d.ts.map +1 -1
  133. package/dist/types/src/hooks/{processor.d.ts → chat-processor.d.ts} +36 -22
  134. package/dist/types/src/hooks/chat-processor.d.ts.map +1 -0
  135. package/dist/types/src/hooks/chat-processor.test.d.ts +2 -0
  136. package/dist/types/src/hooks/chat-processor.test.d.ts.map +1 -0
  137. package/dist/types/src/hooks/index.d.ts +5 -5
  138. package/dist/types/src/hooks/index.d.ts.map +1 -1
  139. package/dist/types/src/hooks/presets.d.ts +13 -0
  140. package/dist/types/src/hooks/presets.d.ts.map +1 -0
  141. package/dist/types/src/hooks/useBlueprints.d.ts +9 -0
  142. package/dist/types/src/hooks/useBlueprints.d.ts.map +1 -0
  143. package/dist/types/src/hooks/useChatProcessor.d.ts +20 -8
  144. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  145. package/dist/types/src/hooks/useChatServices.d.ts +14 -0
  146. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -0
  147. package/dist/types/src/hooks/useReferencesProvider.d.ts +7 -0
  148. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -0
  149. package/dist/types/src/parser/index.d.ts +1 -1
  150. package/dist/types/src/parser/index.d.ts.map +1 -1
  151. package/dist/types/src/queue-logger.d.ts +5 -5
  152. package/dist/types/src/queue-logger.d.ts.map +1 -1
  153. package/dist/types/src/stories/Chat.stories.d.ts +207 -0
  154. package/dist/types/src/stories/Chat.stories.d.ts.map +1 -0
  155. package/dist/types/src/testing/index.d.ts +1 -1
  156. package/dist/types/src/testing/index.d.ts.map +1 -1
  157. package/dist/types/src/testing/test-sequence.d.ts +8 -0
  158. package/dist/types/src/testing/test-sequence.d.ts.map +1 -0
  159. package/dist/types/src/translations.d.ts +68 -113
  160. package/dist/types/src/translations.d.ts.map +1 -1
  161. package/dist/types/src/types/index.d.ts +1 -3
  162. package/dist/types/src/types/index.d.ts.map +1 -1
  163. package/dist/types/src/types/schema.d.ts +120 -0
  164. package/dist/types/src/types/schema.d.ts.map +1 -0
  165. package/dist/types/src/types/service.d.ts +9 -9
  166. package/dist/types/src/types/service.d.ts.map +1 -1
  167. package/dist/types/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +84 -76
  169. package/src/AssistantPlugin.tsx +43 -44
  170. package/src/capabilities/app-graph-builder.ts +24 -103
  171. package/src/capabilities/index.ts +0 -3
  172. package/src/capabilities/intent-resolver.ts +41 -14
  173. package/src/capabilities/react-surface.tsx +38 -37
  174. package/src/capabilities/settings.ts +3 -3
  175. package/src/capability-definitions.ts +15 -0
  176. package/src/components/AssistantSettings/AssistantSettings.tsx +4 -4
  177. package/src/components/BlueprintContainer.tsx +9 -133
  178. package/src/components/Chat/Chat.tsx +388 -0
  179. package/src/components/Chat/events.ts +50 -0
  180. package/src/components/Chat/index.ts +7 -0
  181. package/src/components/ChatContainer.tsx +26 -20
  182. package/src/components/ChatDialog.tsx +64 -0
  183. package/src/components/ChatPrompt/ChatActions.tsx +71 -0
  184. package/src/components/ChatPrompt/ChatOptionsMenu.tsx +52 -0
  185. package/src/components/ChatPrompt/ChatPresets.tsx +28 -0
  186. package/src/components/ChatPrompt/ChatReferences.tsx +53 -0
  187. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +39 -0
  188. package/src/components/ChatPrompt/index.ts +9 -0
  189. package/src/components/ChatThread/ChatMessage.tsx +268 -0
  190. package/src/components/ChatThread/ChatThread.stories.tsx +143 -0
  191. package/src/components/ChatThread/ChatThread.tsx +57 -0
  192. package/src/components/{Thread/ToolInvocations.tsx → ChatThread/ToolBlock.tsx} +36 -21
  193. package/src/{experimental/transcription → components/ChatThread}/index.ts +2 -0
  194. package/src/components/{Thread → ChatThread}/reducer.ts +14 -14
  195. package/src/components/PromptSettings.tsx +43 -45
  196. package/src/components/SequenceContainer.tsx +132 -0
  197. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +32 -0
  198. package/src/components/{BlueprintEditor/BlueprintEditor.tsx → SequenceEditor/SequenceEditor.tsx} +7 -7
  199. package/src/components/{AmbientDialog → SequenceEditor}/index.ts +1 -1
  200. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +29 -34
  201. package/src/components/TemplateEditor/TemplateEditor.tsx +39 -24
  202. package/src/components/TemplateEditor/TemplateForm.stories.tsx +17 -17
  203. package/src/components/TemplateEditor/TemplateForm.tsx +50 -57
  204. package/src/components/Toolbox/Toolbox.stories.tsx +5 -6
  205. package/src/components/Toolbox/Toolbox.tsx +60 -4
  206. package/src/components/index.ts +4 -5
  207. package/src/events.ts +2 -2
  208. package/src/hooks/{processor.test.ts → chat-processor.test.ts} +3 -2
  209. package/src/hooks/chat-processor.ts +314 -0
  210. package/src/hooks/index.ts +5 -5
  211. package/src/hooks/presets.ts +52 -0
  212. package/src/hooks/useBlueprints.ts +57 -0
  213. package/src/hooks/useChatProcessor.ts +143 -0
  214. package/src/hooks/useChatServices.ts +67 -0
  215. package/src/hooks/{useContextProvider.ts → useReferencesProvider.ts} +14 -14
  216. package/src/parser/index.ts +1 -1
  217. package/src/queue-logger.ts +6 -6
  218. package/src/stories/Chat.stories.tsx +371 -0
  219. package/src/testing/index.ts +1 -1
  220. package/src/testing/test-functions.ts +1 -1
  221. package/src/testing/test-sequence.ts +51 -0
  222. package/src/tools/openapi.test.ts +11 -11
  223. package/src/translations.ts +39 -28
  224. package/src/types/index.ts +1 -3
  225. package/src/types/schema.ts +108 -0
  226. package/dist/lib/browser/AssistantDialog-MQOOR364.mjs +0 -47
  227. package/dist/lib/browser/AssistantDialog-MQOOR364.mjs.map +0 -7
  228. package/dist/lib/browser/BlueprintContainer-AT5Y7EXG.mjs +0 -321
  229. package/dist/lib/browser/BlueprintContainer-AT5Y7EXG.mjs.map +0 -7
  230. package/dist/lib/browser/ChatContainer-C2NEAS3A.mjs +0 -40
  231. package/dist/lib/browser/ChatContainer-C2NEAS3A.mjs.map +0 -7
  232. package/dist/lib/browser/TemplateContainer-QQHVOTSI.mjs.map +0 -7
  233. package/dist/lib/browser/ai-client-MK2ZZII2.mjs +0 -39
  234. package/dist/lib/browser/ai-client-MK2ZZII2.mjs.map +0 -7
  235. package/dist/lib/browser/app-graph-builder-E4H5DCOJ.mjs.map +0 -7
  236. package/dist/lib/browser/chunk-AAOKC2JN.mjs +0 -208
  237. package/dist/lib/browser/chunk-AAOKC2JN.mjs.map +0 -7
  238. package/dist/lib/browser/chunk-BI6AHRNJ.mjs.map +0 -7
  239. package/dist/lib/browser/chunk-JO4W3MF7.mjs +0 -2101
  240. package/dist/lib/browser/chunk-JO4W3MF7.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-JQFUME3B.mjs.map +0 -7
  242. package/dist/lib/browser/chunk-MEGMOFJB.mjs +0 -16
  243. package/dist/lib/browser/chunk-MEGMOFJB.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-Q6UZ4F3H.mjs +0 -96
  245. package/dist/lib/browser/chunk-Q6UZ4F3H.mjs.map +0 -7
  246. package/dist/lib/browser/chunk-UE3IZ4PN.mjs +0 -15
  247. package/dist/lib/browser/chunk-UE3IZ4PN.mjs.map +0 -7
  248. package/dist/lib/browser/chunk-XOZ7YMO3.mjs +0 -20
  249. package/dist/lib/browser/intent-resolver-3UICTGPM.mjs +0 -43
  250. package/dist/lib/browser/intent-resolver-3UICTGPM.mjs.map +0 -7
  251. package/dist/lib/browser/react-surface-LXCNUSZN.mjs.map +0 -7
  252. package/dist/lib/browser/settings-XRHXVWGB.mjs.map +0 -7
  253. package/dist/lib/node/AssistantDialog-AN4Z6YUV.cjs +0 -73
  254. package/dist/lib/node/AssistantDialog-AN4Z6YUV.cjs.map +0 -7
  255. package/dist/lib/node/BlueprintContainer-NOWLDYCZ.cjs +0 -344
  256. package/dist/lib/node/BlueprintContainer-NOWLDYCZ.cjs.map +0 -7
  257. package/dist/lib/node/ChatContainer-VKYBQHUB.cjs +0 -68
  258. package/dist/lib/node/ChatContainer-VKYBQHUB.cjs.map +0 -7
  259. package/dist/lib/node/TemplateContainer-JZF2DCCG.cjs +0 -58
  260. package/dist/lib/node/TemplateContainer-JZF2DCCG.cjs.map +0 -7
  261. package/dist/lib/node/ai-client-7HNSMUMT.cjs +0 -53
  262. package/dist/lib/node/ai-client-7HNSMUMT.cjs.map +0 -7
  263. package/dist/lib/node/app-graph-builder-PPR5B5KU.cjs +0 -235
  264. package/dist/lib/node/app-graph-builder-PPR5B5KU.cjs.map +0 -7
  265. package/dist/lib/node/chunk-4EEWTDQK.cjs +0 -117
  266. package/dist/lib/node/chunk-4EEWTDQK.cjs.map +0 -7
  267. package/dist/lib/node/chunk-FUAGEO7Q.cjs +0 -52
  268. package/dist/lib/node/chunk-FUAGEO7Q.cjs.map +0 -7
  269. package/dist/lib/node/chunk-HRNIUYVQ.cjs +0 -128
  270. package/dist/lib/node/chunk-HRNIUYVQ.cjs.map +0 -7
  271. package/dist/lib/node/chunk-IKZBMHSW.cjs +0 -184
  272. package/dist/lib/node/chunk-IKZBMHSW.cjs.map +0 -7
  273. package/dist/lib/node/chunk-LMDJEGZ2.cjs +0 -233
  274. package/dist/lib/node/chunk-LMDJEGZ2.cjs.map +0 -7
  275. package/dist/lib/node/chunk-NIDICM57.cjs +0 -2080
  276. package/dist/lib/node/chunk-NIDICM57.cjs.map +0 -7
  277. package/dist/lib/node/chunk-P74TWGMG.cjs.map +0 -7
  278. package/dist/lib/node/chunk-QGPWY6GW.cjs +0 -34
  279. package/dist/lib/node/chunk-QGPWY6GW.cjs.map +0 -7
  280. package/dist/lib/node/index.cjs +0 -289
  281. package/dist/lib/node/index.cjs.map +0 -7
  282. package/dist/lib/node/intent-resolver-QSWGTKON.cjs +0 -58
  283. package/dist/lib/node/intent-resolver-QSWGTKON.cjs.map +0 -7
  284. package/dist/lib/node/meta.json +0 -1
  285. package/dist/lib/node/react-surface-D3NBYRZ6.cjs +0 -172
  286. package/dist/lib/node/react-surface-D3NBYRZ6.cjs.map +0 -7
  287. package/dist/lib/node/settings-2JXLKYGE.cjs +0 -36
  288. package/dist/lib/node/settings-2JXLKYGE.cjs.map +0 -7
  289. package/dist/lib/node/types/index.cjs +0 -54
  290. package/dist/lib/node/types/index.cjs.map +0 -7
  291. package/dist/lib/node-esm/AssistantDialog-6WEMLUPU.mjs +0 -48
  292. package/dist/lib/node-esm/AssistantDialog-6WEMLUPU.mjs.map +0 -7
  293. package/dist/lib/node-esm/BlueprintContainer-STOJAVML.mjs +0 -322
  294. package/dist/lib/node-esm/BlueprintContainer-STOJAVML.mjs.map +0 -7
  295. package/dist/lib/node-esm/ChatContainer-3MVBTUJN.mjs +0 -41
  296. package/dist/lib/node-esm/ChatContainer-3MVBTUJN.mjs.map +0 -7
  297. package/dist/lib/node-esm/TemplateContainer-SOEWY2ZN.mjs.map +0 -7
  298. package/dist/lib/node-esm/ai-client-XGZBJ6BE.mjs +0 -40
  299. package/dist/lib/node-esm/ai-client-XGZBJ6BE.mjs.map +0 -7
  300. package/dist/lib/node-esm/app-graph-builder-3SY5MBIK.mjs.map +0 -7
  301. package/dist/lib/node-esm/chunk-34EX6E5Q.mjs +0 -18
  302. package/dist/lib/node-esm/chunk-34EX6E5Q.mjs.map +0 -7
  303. package/dist/lib/node-esm/chunk-3UEZLJ2V.mjs +0 -16
  304. package/dist/lib/node-esm/chunk-3UEZLJ2V.mjs.map +0 -7
  305. package/dist/lib/node-esm/chunk-BB2TAT4P.mjs +0 -22
  306. package/dist/lib/node-esm/chunk-CDAILLCU.mjs +0 -98
  307. package/dist/lib/node-esm/chunk-CDAILLCU.mjs.map +0 -7
  308. package/dist/lib/node-esm/chunk-J6UXXZGJ.mjs +0 -209
  309. package/dist/lib/node-esm/chunk-J6UXXZGJ.mjs.map +0 -7
  310. package/dist/lib/node-esm/chunk-OD574YIU.mjs +0 -2102
  311. package/dist/lib/node-esm/chunk-OD574YIU.mjs.map +0 -7
  312. package/dist/lib/node-esm/chunk-OYN6HLXZ.mjs.map +0 -7
  313. package/dist/lib/node-esm/chunk-UCOFKNKN.mjs.map +0 -7
  314. package/dist/lib/node-esm/intent-resolver-E6MXTYAU.mjs +0 -44
  315. package/dist/lib/node-esm/intent-resolver-E6MXTYAU.mjs.map +0 -7
  316. package/dist/lib/node-esm/react-surface-7HA5EDWY.mjs.map +0 -7
  317. package/dist/lib/node-esm/settings-5IAY6BT4.mjs.map +0 -7
  318. package/dist/types/src/capabilities/ai-client.d.ts +0 -5
  319. package/dist/types/src/capabilities/ai-client.d.ts.map +0 -1
  320. package/dist/types/src/capabilities/capabilities.d.ts +0 -6
  321. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  322. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +0 -10
  323. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +0 -1
  324. package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts +0 -8
  325. package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts.map +0 -1
  326. package/dist/types/src/components/AmbientDialog/index.d.ts +0 -2
  327. package/dist/types/src/components/AmbientDialog/index.d.ts.map +0 -1
  328. package/dist/types/src/components/AssistantDialog.d.ts +0 -7
  329. package/dist/types/src/components/AssistantDialog.d.ts.map +0 -1
  330. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts +0 -13
  331. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts.map +0 -1
  332. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts +0 -8
  333. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts.map +0 -1
  334. package/dist/types/src/components/BlueprintEditor/index.d.ts +0 -2
  335. package/dist/types/src/components/BlueprintEditor/index.d.ts.map +0 -1
  336. package/dist/types/src/components/Prompt/Prompt.d.ts +0 -23
  337. package/dist/types/src/components/Prompt/Prompt.d.ts.map +0 -1
  338. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +0 -13
  339. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +0 -1
  340. package/dist/types/src/components/Prompt/PromptBar.d.ts +0 -16
  341. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +0 -1
  342. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts +0 -9
  343. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts.map +0 -1
  344. package/dist/types/src/components/Prompt/autocomplete.d.ts +0 -25
  345. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +0 -1
  346. package/dist/types/src/components/Prompt/index.d.ts +0 -3
  347. package/dist/types/src/components/Prompt/index.d.ts.map +0 -1
  348. package/dist/types/src/components/Prompt/references.d.ts +0 -30
  349. package/dist/types/src/components/Prompt/references.d.ts.map +0 -1
  350. package/dist/types/src/components/TemplateContainer.d.ts +0 -8
  351. package/dist/types/src/components/TemplateContainer.d.ts.map +0 -1
  352. package/dist/types/src/components/Thread/Thread.d.ts +0 -28
  353. package/dist/types/src/components/Thread/Thread.d.ts.map +0 -1
  354. package/dist/types/src/components/Thread/Thread.stories.d.ts +0 -11
  355. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +0 -1
  356. package/dist/types/src/components/Thread/ThreadContainer.d.ts +0 -13
  357. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +0 -1
  358. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +0 -16
  359. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +0 -1
  360. package/dist/types/src/components/Thread/ThreadMessage.d.ts +0 -16
  361. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +0 -1
  362. package/dist/types/src/components/Thread/ToolInvocations.d.ts +0 -13
  363. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +0 -1
  364. package/dist/types/src/components/Thread/index.d.ts +0 -3
  365. package/dist/types/src/components/Thread/index.d.ts.map +0 -1
  366. package/dist/types/src/components/Thread/reducer.d.ts.map +0 -1
  367. package/dist/types/src/experimental/transcription/index.d.ts +0 -1
  368. package/dist/types/src/experimental/transcription/index.d.ts.map +0 -1
  369. package/dist/types/src/hooks/processor.d.ts.map +0 -1
  370. package/dist/types/src/hooks/processor.test.d.ts +0 -2
  371. package/dist/types/src/hooks/processor.test.d.ts.map +0 -1
  372. package/dist/types/src/hooks/useContextProvider.d.ts +0 -17
  373. package/dist/types/src/hooks/useContextProvider.d.ts.map +0 -1
  374. package/dist/types/src/hooks/useMessageQueue.d.ts +0 -42
  375. package/dist/types/src/hooks/useMessageQueue.d.ts.map +0 -1
  376. package/dist/types/src/hooks/useServices.d.ts +0 -7
  377. package/dist/types/src/hooks/useServices.d.ts.map +0 -1
  378. package/dist/types/src/hooks/useTextInputEvents.d.ts +0 -13
  379. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +0 -1
  380. package/dist/types/src/stories/Prompt.stories.d.ts +0 -8
  381. package/dist/types/src/stories/Prompt.stories.d.ts.map +0 -1
  382. package/dist/types/src/stories/Query.stories.d.ts +0 -19
  383. package/dist/types/src/stories/Query.stories.d.ts.map +0 -1
  384. package/dist/types/src/stories/Research.stories.d.ts +0 -15
  385. package/dist/types/src/stories/Research.stories.d.ts.map +0 -1
  386. package/dist/types/src/stories/test-data.d.ts +0 -3
  387. package/dist/types/src/stories/test-data.d.ts.map +0 -1
  388. package/dist/types/src/stories/testing.d.ts +0 -12
  389. package/dist/types/src/stories/testing.d.ts.map +0 -1
  390. package/dist/types/src/testing/test-blueprint.d.ts +0 -8
  391. package/dist/types/src/testing/test-blueprint.d.ts.map +0 -1
  392. package/dist/types/src/types/chat.d.ts +0 -23
  393. package/dist/types/src/types/chat.d.ts.map +0 -1
  394. package/dist/types/src/types/template.d.ts +0 -56
  395. package/dist/types/src/types/template.d.ts.map +0 -1
  396. package/dist/types/src/types/types.d.ts +0 -50
  397. package/dist/types/src/types/types.d.ts.map +0 -1
  398. package/src/capabilities/ai-client.ts +0 -42
  399. package/src/capabilities/capabilities.ts +0 -15
  400. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +0 -84
  401. package/src/components/AmbientDialog/AmbientDialog.tsx +0 -117
  402. package/src/components/AssistantDialog.tsx +0 -37
  403. package/src/components/BlueprintEditor/BlueprintEditor.stories.tsx +0 -32
  404. package/src/components/BlueprintEditor/index.ts +0 -5
  405. package/src/components/Prompt/Prompt.stories.tsx +0 -121
  406. package/src/components/Prompt/Prompt.tsx +0 -124
  407. package/src/components/Prompt/PromptBar.stories.tsx +0 -69
  408. package/src/components/Prompt/PromptBar.tsx +0 -105
  409. package/src/components/Prompt/autocomplete.ts +0 -218
  410. package/src/components/Prompt/index.ts +0 -6
  411. package/src/components/Prompt/references.ts +0 -180
  412. package/src/components/TemplateContainer.tsx +0 -23
  413. package/src/components/Thread/Thread.stories.tsx +0 -201
  414. package/src/components/Thread/Thread.tsx +0 -118
  415. package/src/components/Thread/ThreadContainer.stories.tsx +0 -283
  416. package/src/components/Thread/ThreadContainer.tsx +0 -105
  417. package/src/components/Thread/ThreadMessage.tsx +0 -234
  418. package/src/components/Thread/index.ts +0 -6
  419. package/src/hooks/processor.ts +0 -238
  420. package/src/hooks/useChatProcessor.tsx +0 -97
  421. package/src/hooks/useMessageQueue.ts +0 -22
  422. package/src/hooks/useServices.ts +0 -28
  423. package/src/hooks/useTextInputEvents.ts +0 -49
  424. package/src/stories/Prompt.stories.tsx +0 -60
  425. package/src/stories/Query.stories.tsx +0 -514
  426. package/src/stories/Research.stories.tsx +0 -482
  427. package/src/stories/test-data.ts +0 -128
  428. package/src/stories/testing.ts +0 -60
  429. package/src/testing/test-blueprint.ts +0 -58
  430. package/src/types/chat.ts +0 -32
  431. package/src/types/template.ts +0 -66
  432. package/src/types/types.ts +0 -48
@@ -7,27 +7,25 @@ import { useMemo } from 'react';
7
7
  import { Capabilities, useCapabilities } from '@dxos/app-framework';
8
8
  import { type Space } from '@dxos/client/echo';
9
9
  import { Filter, Obj, type Type } from '@dxos/echo';
10
+ import { type ReferencesProvider } from '@dxos/react-ui-chat';
10
11
 
11
- export type ContextProvider = {
12
- query: (params: { query: string }) => Promise<Array<{ uri: string; label: string }>>;
13
- resolveMetadata: (params: { uri: string }) => Promise<{ uri: string; label: string }>;
14
- };
15
-
16
- const stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());
17
-
18
- export const useContextProvider = (space?: Space): ContextProvider | undefined => {
12
+ /**
13
+ * Resolve references to objects in the space.
14
+ */
15
+ export const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {
16
+ // TODO(burdon): Pass in.
19
17
  const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);
20
18
 
21
- return useMemo<ContextProvider | undefined>((): ContextProvider | undefined => {
19
+ return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {
22
20
  if (!space) {
23
21
  return undefined;
24
22
  }
25
23
 
26
24
  return {
27
- query: async ({ query }) => {
28
- const artifactSchemas = artifactDefinitions.map((artifact) => artifact.schema);
25
+ getReferences: async ({ query }) => {
26
+ const schemas = artifactDefinitions.map((artifact) => artifact.schema);
29
27
  const { objects } = await space.db
30
- .query(Filter.or(...artifactSchemas.map((schema) => Filter.type(schema as Type.Schema))))
28
+ .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))
31
29
  .run();
32
30
 
33
31
  return (
@@ -46,10 +44,12 @@ export const useContextProvider = (space?: Space): ContextProvider | undefined =
46
44
  }))
47
45
  );
48
46
  },
49
- resolveMetadata: async ({ uri }) => {
47
+ resolveReference: async ({ uri }) => {
50
48
  const object = await space.db.query(Filter.ids(uri)).first();
51
49
  return { uri, label: Obj.getLabel(object) ?? '' };
52
50
  },
53
- };
51
+ } satisfies ReferencesProvider;
54
52
  }, [space, artifactDefinitions]);
55
53
  };
54
+
55
+ const stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());
@@ -4,4 +4,4 @@
4
4
 
5
5
  export * from './filter-generator';
6
6
  export * from './query-parser';
7
- export * from './types';
7
+ export type * from './types';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Blueprint, type BlueprintEvent, type BlueprintLogger } from '@dxos/assistant';
6
5
  import { getSpace, Ref, type Queue, type Space } from '@dxos/client/echo';
6
+ import { type Sequence, type SequenceEvent, type SequenceLogger } from '@dxos/conductor';
7
7
  import { DXN, Key, Obj } from '@dxos/echo';
8
8
  import {
9
9
  InvocationOutcome,
@@ -16,12 +16,12 @@ import {
16
16
  import { invariant } from '@dxos/invariant';
17
17
  import { QueueSubspaceTags } from '@dxos/keys';
18
18
 
19
- export class QueueLogger implements BlueprintLogger {
19
+ export class QueueLogger implements SequenceLogger {
20
20
  private _space: Space;
21
21
  private _invocationTraceQueue: Queue<InvocationTraceEvent>;
22
22
 
23
- constructor(private readonly blueprint: Blueprint) {
24
- const space = getSpace(blueprint);
23
+ constructor(private readonly sequence: Sequence) {
24
+ const space = getSpace(sequence);
25
25
  invariant(space, 'Space not found');
26
26
  this._space = space;
27
27
  let dxn = this._space.properties.invocationTraceQueue?.dxn;
@@ -32,7 +32,7 @@ export class QueueLogger implements BlueprintLogger {
32
32
  this._invocationTraceQueue = this._space.queues.get(dxn);
33
33
  }
34
34
 
35
- log(event: BlueprintEvent) {
35
+ log(event: SequenceEvent) {
36
36
  switch (event.type) {
37
37
  case 'begin':
38
38
  void this._invocationTraceQueue.append([
@@ -42,7 +42,7 @@ export class QueueLogger implements BlueprintLogger {
42
42
  timestampMs: Date.now(),
43
43
  input: {},
44
44
  invocationTraceQueue: Ref.fromDXN(this._getTraceQueueDxn(event.invocationId)),
45
- invocationTarget: Ref.make(this.blueprint),
45
+ invocationTarget: Ref.make(this.sequence),
46
46
  }),
47
47
  ]);
48
48
  break;
@@ -0,0 +1,371 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import '@dxos-theme';
6
+
7
+ import { type StoryObj, type Meta } from '@storybook/react-vite';
8
+ import React, { useCallback, useEffect, useMemo, useState, type FC } from 'react';
9
+
10
+ import { Capabilities, contributes, Events, IntentPlugin, type Plugin, SettingsPlugin } from '@dxos/app-framework';
11
+ import { withPluginManager } from '@dxos/app-framework/testing';
12
+ import { ContextBinder } from '@dxos/assistant';
13
+ import {
14
+ DESIGN_BLUEPRINT,
15
+ PLANNING_BLUEPRINT,
16
+ readDocument,
17
+ remoteServiceEndpoints,
18
+ updateDocument,
19
+ } from '@dxos/assistant-testing';
20
+ import { Blueprint } from '@dxos/blueprints';
21
+ import { Filter, Obj, Ref } from '@dxos/echo';
22
+ import { invariant } from '@dxos/invariant';
23
+ import { log } from '@dxos/log';
24
+ import { ChessPlugin } from '@dxos/plugin-chess';
25
+ import { ClientPlugin } from '@dxos/plugin-client';
26
+ import { InboxPlugin } from '@dxos/plugin-inbox';
27
+ import { MapPlugin } from '@dxos/plugin-map';
28
+ import { MarkdownPlugin } from '@dxos/plugin-markdown';
29
+ import { Markdown } from '@dxos/plugin-markdown/types';
30
+ import { SpacePlugin } from '@dxos/plugin-space';
31
+ import { TablePlugin } from '@dxos/plugin-table';
32
+ import { TranscriptionPlugin } from '@dxos/plugin-transcription';
33
+ import { Config } from '@dxos/react-client';
34
+ import { createDocAccessor, useQuery, useSpace } from '@dxos/react-client/echo';
35
+ import { Toolbar, useThemeContext, useTranslation } from '@dxos/react-ui';
36
+ import {
37
+ Editor,
38
+ createBasicExtensions,
39
+ createDataExtensions,
40
+ createMarkdownExtensions,
41
+ createThemeExtensions,
42
+ outliner,
43
+ } from '@dxos/react-ui-editor';
44
+ import { mx } from '@dxos/react-ui-theme';
45
+ import { render, withLayout, withTheme } from '@dxos/storybook-utils';
46
+
47
+ import { AssistantPlugin } from '../AssistantPlugin';
48
+ import { Chat, TemplateEditor, type ChatPromptProps } from '../components';
49
+ import { type AiServicePreset, AiServicePresets } from '../hooks';
50
+ import { useChatProcessor, useChatServices } from '../hooks';
51
+ import { meta } from '../meta';
52
+ import { translations } from '../translations';
53
+ import { Assistant } from '../types';
54
+
55
+ //
56
+ // Story container
57
+ //
58
+
59
+ const DefaultStory = ({ components }: { components: (FC | FC[])[] }) => {
60
+ return (
61
+ <div
62
+ className={mx('grid grid-cols gap-2 m-2')}
63
+ style={{ gridTemplateColumns: `repeat(${components.length}, minmax(0, 40rem))` }}
64
+ >
65
+ {components.map((Component, index) =>
66
+ Array.isArray(Component) ? (
67
+ <div
68
+ key={index}
69
+ className='grid grid-rows gap-2 overflow-hidden'
70
+ style={{ gridTemplateRows: `repeat(${Component.length}, 1fr)` }}
71
+ >
72
+ {Component.map((Component, index) => (
73
+ <div key={index} className='flex flex-col overflow-hidden bg-baseSurface border border-separator'>
74
+ <Component />
75
+ </div>
76
+ ))}
77
+ </div>
78
+ ) : (
79
+ <div key={index} className='flex flex-col overflow-hidden bg-baseSurface border border-separator'>
80
+ <Component />
81
+ </div>
82
+ ),
83
+ )}
84
+ </div>
85
+ );
86
+ };
87
+
88
+ //
89
+ // Components
90
+ //
91
+
92
+ const ChatContainer = () => {
93
+ const { t } = useTranslation(meta.id);
94
+ const space = useSpace();
95
+
96
+ const [chat, setChat] = useState<Assistant.Chat>();
97
+ useEffect(() => {
98
+ const results = space?.db.query(Filter.type(Assistant.Chat)).runSync();
99
+ if (results?.length) {
100
+ setChat(results[0].object);
101
+ }
102
+ }, [space]);
103
+
104
+ // TODO(burdon): Memo preset for provider.
105
+ const [online, setOnline] = useState(true);
106
+ const [preset, setPreset] = useState<AiServicePreset>();
107
+ const presets = useMemo(
108
+ () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),
109
+ [online],
110
+ );
111
+ useEffect(() => {
112
+ setPreset(presets[0]);
113
+ }, [presets]);
114
+
115
+ const services = useChatServices({ space });
116
+ const blueprintRegistry = useMemo(() => new Blueprint.Registry([DESIGN_BLUEPRINT, PLANNING_BLUEPRINT]), []);
117
+ const processor = useChatProcessor({
118
+ preset,
119
+ chat,
120
+ space,
121
+ services,
122
+ blueprintRegistry,
123
+ noPluginArtifacts: true,
124
+ });
125
+
126
+ const handleChangePreset = useCallback<NonNullable<ChatPromptProps['onChangePreset']>>(
127
+ (id) => {
128
+ const preset = presets.find((preset) => preset.id === id);
129
+ if (preset) {
130
+ setPreset(preset);
131
+ }
132
+ },
133
+ [presets],
134
+ );
135
+
136
+ const handleNewChat = useCallback(() => {
137
+ invariant(space);
138
+ const chat = space.db.add(
139
+ Obj.make(Assistant.Chat, {
140
+ queue: Ref.fromDXN(space.queues.create().dxn),
141
+ }),
142
+ );
143
+ setChat(chat);
144
+ }, [space]);
145
+
146
+ const handleBranchChat = useCallback(() => {}, [space]);
147
+
148
+ if (!chat || !processor) {
149
+ return null;
150
+ }
151
+
152
+ return (
153
+ <Chat.Root chat={chat} processor={processor} onEvent={(event) => log.info('event', { event })}>
154
+ <Toolbar.Root classNames='border-b border-subduedSeparator'>
155
+ <Toolbar.IconButton icon='ph--plus--regular' iconOnly label={t('button new thread')} onClick={handleNewChat} />
156
+ <Toolbar.IconButton
157
+ disabled
158
+ icon='ph--git-branch--regular'
159
+ iconOnly
160
+ label={t('button branch thread')}
161
+ onClick={handleBranchChat}
162
+ />
163
+ </Toolbar.Root>
164
+ <Chat.Thread />
165
+ <div className='p-4'>
166
+ <Chat.Prompt
167
+ classNames='p-2 border border-subduedSeparator rounded focus-within:outline focus-within:border-transparent outline-primary-500'
168
+ expandable
169
+ online={online}
170
+ presets={presets.map(({ id, model, label }) => ({ id, label: label ?? model }))}
171
+ preset={preset?.id}
172
+ onChangeOnline={setOnline}
173
+ onChangePreset={handleChangePreset}
174
+ />
175
+ </div>
176
+ </Chat.Root>
177
+ );
178
+ };
179
+
180
+ const DocumentContainer = () => {
181
+ const { themeMode } = useThemeContext();
182
+ const space = useSpace();
183
+ const [document] = useQuery(space, Filter.type(Markdown.Document));
184
+ if (!document?.content.target) {
185
+ return null;
186
+ }
187
+
188
+ return (
189
+ <>
190
+ <Toolbar.Root classNames='border-b border-subduedSeparator'>
191
+ <h2>{Obj.getLabel(document)}</h2>
192
+ </Toolbar.Root>
193
+ <Editor
194
+ id={document.id}
195
+ text={document.content.target}
196
+ classNames='h-full p-2 overflow-hidden'
197
+ extensions={[
198
+ // TODO(burdon): Create util.
199
+ createDataExtensions({ id: document.id, text: createDocAccessor(document.content.target, ['content']) }),
200
+ createBasicExtensions({ readOnly: false }),
201
+ createMarkdownExtensions({ themeMode }),
202
+ createThemeExtensions({ themeMode }),
203
+ outliner(),
204
+ ]}
205
+ />
206
+ </>
207
+ );
208
+ };
209
+
210
+ // TODO(burdon): Show all active blueprints from context?
211
+ const BlueprintContainer = () => {
212
+ const space = useSpace();
213
+ const [blueprint] = useQuery(space, Filter.type(Blueprint.Blueprint));
214
+ if (!blueprint?.instructions) {
215
+ return null;
216
+ }
217
+
218
+ return (
219
+ <div className='flex flex-col h-full'>
220
+ <Toolbar.Root classNames='border-b border-subduedSeparator'>
221
+ <h2>{Obj.getLabel(blueprint)}</h2>
222
+ </Toolbar.Root>
223
+ <TemplateEditor id={blueprint.id} template={blueprint.instructions} />
224
+ </div>
225
+ );
226
+ };
227
+
228
+ //
229
+ // Configuration
230
+ //
231
+
232
+ const storybook = {
233
+ title: 'plugins/plugin-assistant/Chat',
234
+ render: render(DefaultStory),
235
+ decorators: [],
236
+ parameters: {
237
+ translations,
238
+ controls: { disable: true },
239
+ },
240
+ } satisfies Meta<typeof DefaultStory>;
241
+
242
+ export default storybook;
243
+
244
+ type Story = StoryObj<typeof storybook>;
245
+
246
+ //
247
+ // Decorators
248
+ //
249
+
250
+ const remoteConfig = new Config({
251
+ runtime: {
252
+ services: {
253
+ ai: {
254
+ // TODO(burdon): 'url'?
255
+ server: remoteServiceEndpoints.ai,
256
+ },
257
+ edge: {
258
+ url: remoteServiceEndpoints.edge,
259
+ },
260
+ },
261
+ },
262
+ });
263
+
264
+ const getDecorators = ({
265
+ config,
266
+ plugins = [],
267
+ blueprints = [],
268
+ context = false,
269
+ }: {
270
+ config: Config;
271
+ plugins?: Plugin[];
272
+ blueprints?: Blueprint.Blueprint[];
273
+ context?: boolean;
274
+ }) => [
275
+ withPluginManager({
276
+ fireEvents: [Events.SetupArtifactDefinition],
277
+ plugins: [
278
+ ClientPlugin({
279
+ config,
280
+ types: [Markdown.Document, Assistant.Chat, Blueprint.Blueprint],
281
+ onClientInitialized: async (_, client) => {
282
+ await client.halo.createIdentity();
283
+ await client.spaces.waitUntilReady();
284
+ const space = client.spaces.default;
285
+ // ISSUE(burdon): Should not require this.
286
+ // ERROR: invariant violation: Database was not initialized with root object.
287
+ await space.waitUntilReady();
288
+
289
+ const chat = space.db.add(
290
+ // TODO(burdon): Assistant.makeChat()
291
+ Obj.make(Assistant.Chat, {
292
+ queue: Ref.fromDXN(space.queues.create().dxn),
293
+ }),
294
+ );
295
+ const binder = new ContextBinder(await chat.queue.load());
296
+ const doc = space.db.add(Markdown.makeDocument({ name: 'Tasks' }));
297
+ if (context) {
298
+ await binder.bind({ objects: [Ref.make(doc)] });
299
+ }
300
+
301
+ for (const blueprint of blueprints) {
302
+ // Clone blueprints and bind to conversation.
303
+ // TODO(dmaretskyi): This should be done by Obj.clone.
304
+ const { id: _id, ...data } = blueprint;
305
+ const obj = space.db.add(Obj.make(Blueprint.Blueprint, data));
306
+ await binder.bind({ blueprints: [Ref.make(obj)] });
307
+ }
308
+ },
309
+ }),
310
+ IntentPlugin(),
311
+ SettingsPlugin(),
312
+ SpacePlugin(),
313
+
314
+ TranscriptionPlugin(),
315
+ AssistantPlugin(),
316
+
317
+ ...plugins,
318
+ ],
319
+ capabilities: [contributes(Capabilities.Functions, [readDocument, updateDocument])],
320
+ }),
321
+ withTheme,
322
+ withLayout({
323
+ fullscreen: true,
324
+ classNames: 'bg-deckSurface justify-center',
325
+ }),
326
+ ];
327
+
328
+ //
329
+ // Stories
330
+ //
331
+
332
+ export const Default = {
333
+ decorators: getDecorators({
334
+ config: remoteConfig,
335
+ }),
336
+ args: {
337
+ components: [ChatContainer],
338
+ },
339
+ } satisfies Story;
340
+
341
+ export const WithDocument = {
342
+ decorators: getDecorators({
343
+ config: remoteConfig,
344
+ plugins: [MarkdownPlugin()],
345
+ }),
346
+ args: {
347
+ components: [ChatContainer, DocumentContainer],
348
+ },
349
+ } satisfies Story;
350
+
351
+ export const WithBlueprints = {
352
+ decorators: getDecorators({
353
+ config: remoteConfig,
354
+ plugins: [ChessPlugin(), InboxPlugin(), MapPlugin(), MarkdownPlugin(), TablePlugin()],
355
+ blueprints: [PLANNING_BLUEPRINT],
356
+ context: true,
357
+ }),
358
+ args: {
359
+ components: [ChatContainer, [DocumentContainer, BlueprintContainer]],
360
+ },
361
+ } satisfies Story;
362
+
363
+ // export const WithArtifacts = {
364
+ // decorators: getDecorators({
365
+ // config: remoteConfig,
366
+ // plugins: [ChessPlugin(), InboxPlugin(), MapPlugin(), MarkdownPlugin(), TablePlugin()],
367
+ // }),
368
+ // args: {
369
+ // components: [ChatContainer],
370
+ // },
371
+ // } satisfies Story;
@@ -2,6 +2,6 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- export * from './test-blueprint';
5
+ export * from './test-sequence';
6
6
  export * from './test-functions';
7
7
  export * from './test-services';
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { DEFAULT_EDGE_MODEL, type GenerateRequest } from '@dxos/ai';
6
- import { createSystemPrompt } from '@dxos/artifact';
6
+ import { createSystemPrompt } from '@dxos/assistant';
7
7
 
8
8
  export const createProcessorOptions = (artifacts: string[]): Pick<GenerateRequest, 'model' | 'systemPrompt'> => ({
9
9
  model: DEFAULT_EDGE_MODEL,
@@ -0,0 +1,51 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { ToolId, ToolRegistry } from '@dxos/ai';
6
+ // import { createExaTool, createGraphWriterTool, createLocalSearchTool } from '@dxos/assistant';
7
+ import { type Space } from '@dxos/client/echo';
8
+ import { SequenceParser, type SequenceDefinition } from '@dxos/conductor';
9
+ import { type DXN } from '@dxos/keys';
10
+ import { isNonNullable } from '@dxos/util';
11
+
12
+ // TODO(dmaretskyi): make db available through services (same as function executor).
13
+ // TODO(burdon): Can tools implement "aspects" so that variants can be used rather than an explicit reference?
14
+ export const createToolRegistry = (space: Space, queueDxn?: DXN): ToolRegistry => {
15
+ return new ToolRegistry(
16
+ [
17
+ // createExaTool({ apiKey: EXA_API_KEY }),
18
+ // createLocalSearchTool(space.db, queueDxn && space.queues.get(queueDxn)),
19
+ // queueDxn &&
20
+ // createGraphWriterTool({
21
+ // db: space.db,
22
+ // queue: space.queues.get(queueDxn),
23
+ // schema: DataTypes,
24
+ // onDone: async (objects) => {
25
+ // const queue = space.queues.get(queueDxn);
26
+ // await queue.append(objects);
27
+ // },
28
+ // }),
29
+ ].filter(isNonNullable),
30
+ );
31
+ };
32
+
33
+ export const RESEARCH_SEQUENCE_DEFINITION: SequenceDefinition = {
34
+ steps: [
35
+ {
36
+ instructions: 'Research information and entities related to the selected objects.',
37
+ tools: [ToolId.make('search/web_search')],
38
+ },
39
+ {
40
+ instructions:
41
+ 'Based on your research find matching entires that are already in the graph. Do exaustive research.',
42
+ tools: [ToolId.make('search/local_search')],
43
+ },
44
+ {
45
+ instructions: 'Add researched data to the graph. Make connections to existing objects.',
46
+ tools: [ToolId.make('search/local_search'), ToolId.make('graph/writer')],
47
+ },
48
+ ],
49
+ };
50
+
51
+ export const RESEARCH_SEQUENCE = SequenceParser.create().parse(RESEARCH_SEQUENCE_DEFINITION);
@@ -4,19 +4,16 @@
4
4
 
5
5
  import { describe, expect, test } from 'vitest';
6
6
 
7
- import { EdgeAiServiceClient } from '@dxos/ai';
8
- import { AI_SERVICE_ENDPOINT } from '@dxos/ai/testing';
9
7
  import { log } from '@dxos/log';
10
8
 
11
9
  import { createToolsFromApi, resolveAuthorization } from './openapi';
12
10
  import { ChatProcessor } from '../hooks';
13
- import type { ApiAuthorization } from '../types';
11
+ import { type ApiAuthorization } from '../types';
14
12
 
15
13
  describe.skip('openapi', () => {
16
14
  describe.skip('mapping', () => {
17
15
  test('amadeus flight availabilities', async () => {
18
16
  const tools = await createToolsFromApi(FLIGHT_SEARCH_API);
19
-
20
17
  log.info('tools', { tools });
21
18
  // for (const tool of tools) {
22
19
  // const schema = tool.parameters;
@@ -57,7 +54,7 @@ describe.skip('openapi', () => {
57
54
 
58
55
  test('weather API', async () => {
59
56
  const tools = await createToolsFromApi(WEATHER_API, { authorization: VISUAL_CROSSING_CREDENTIALS });
60
- const forecastTool = tools.find((t) => t.name.includes('forecast'));
57
+ const forecastTool = tools.find((tool) => tool.name.includes('forecast'));
61
58
  const result = await forecastTool?.execute(
62
59
  {
63
60
  locations: 'Brooklyn, NY',
@@ -73,8 +70,9 @@ describe.skip('openapi', () => {
73
70
  describe.skip('AI uses tools', () => {
74
71
  test('amadeus flight availabilities', { timeout: 60_000 }, async () => {
75
72
  const tools = await createToolsFromApi(FLIGHT_SEARCH_API, { authorization: AMADEUS_AUTH });
76
- const aiClient = new EdgeAiServiceClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
77
- const processor = new ChatProcessor(aiClient, tools);
73
+ // const aiClient = new Edge AiServiceClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
74
+ // TODO(dmaretskyi): FIX ME.
75
+ const processor = new ChatProcessor(null as any, null as any, { tools });
78
76
  const reply = await processor.request(
79
77
  `What is the cheapest flight from New York to Paris? going on ${new Date().toISOString()} and returning after a week. 1 adult traveler`,
80
78
  );
@@ -85,8 +83,9 @@ describe.skip('openapi', () => {
85
83
  // TODO(dmaretskyi): Doesn't work.
86
84
  test('amadeus hotel name autocomplete', { timeout: 60_000 }, async () => {
87
85
  const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API, { authorization: AMADEUS_AUTH });
88
- const aiClient = new EdgeAiServiceClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
89
- const processor = new ChatProcessor(aiClient, tools);
86
+ // const aiClient = new Edge AiServiceClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
87
+ // TODO(dmaretskyi): FIX ME.
88
+ const processor = new ChatProcessor(null as any, null as any, { tools });
90
89
  const reply = await processor.request('Find me the William Wale in Brooklyn New York');
91
90
 
92
91
  log.info('reply', { reply });
@@ -97,8 +96,9 @@ describe.skip('openapi', () => {
97
96
  authorization: VISUAL_CROSSING_CREDENTIALS,
98
97
  instructions: WEATHER_INSTRUCTIONS,
99
98
  });
100
- const aiClient = new EdgeAiServiceClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
101
- const processor = new ChatProcessor(aiClient, tools);
99
+ // const aiClient = new Edge AiServiceClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
100
+ // TODO(dmaretskyi): FIX ME.
101
+ const processor = new ChatProcessor(null as any, null as any, { tools });
102
102
  const reply = await processor.request(
103
103
  `Today's date is ${new Date().toISOString().split('T')[0]}. Give me weather forecast for Warsaw for next 5 days.`,
104
104
  );