@dxos/plugin-assistant 0.8.4-main.67995b8 → 0.8.4-main.f5c0578

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 (350) hide show
  1. package/dist/lib/browser/{BlueprintContainer-IZ4AK5EO.mjs → BlueprintContainer-H7H4BQ2C.mjs} +4 -3
  2. package/dist/lib/browser/{ChatContainer-RP3QEXYX.mjs → ChatContainer-SB7YC2XP.mjs} +37 -14
  3. package/dist/lib/browser/ChatContainer-SB7YC2XP.mjs.map +7 -0
  4. package/dist/lib/browser/{ChatDialog-ZVLXFHEY.mjs → ChatDialog-X6PFOQSQ.mjs} +23 -8
  5. package/dist/lib/browser/ChatDialog-X6PFOQSQ.mjs.map +7 -0
  6. package/dist/lib/browser/{SequenceContainer-3UDVKWPA.mjs → SequenceContainer-627OQ557.mjs} +3 -2
  7. package/dist/lib/browser/SequenceContainer-627OQ557.mjs.map +7 -0
  8. package/dist/lib/browser/ai-service-7KJ5LXBT.mjs +22 -0
  9. package/dist/lib/browser/ai-service-7KJ5LXBT.mjs.map +7 -0
  10. package/dist/lib/browser/{app-graph-builder-XSEOKJLG.mjs → app-graph-builder-ERU5XY2S.mjs} +14 -12
  11. package/dist/lib/browser/app-graph-builder-ERU5XY2S.mjs.map +7 -0
  12. package/dist/lib/browser/blueprint-definition-CMGIZAOW.mjs +146 -0
  13. package/dist/lib/browser/blueprint-definition-CMGIZAOW.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-63GG6U6D.mjs → chunk-BVH6VK6Q.mjs} +817 -789
  15. package/dist/lib/browser/chunk-BVH6VK6Q.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  17. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-JBFDQMUJ.mjs +193 -0
  19. package/dist/lib/browser/chunk-JBFDQMUJ.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-LKP65RPA.mjs +20 -0
  21. package/dist/lib/browser/{chunk-FDCJSQYF.mjs.map → chunk-LKP65RPA.mjs.map} +1 -1
  22. package/dist/lib/browser/{chunk-KFXSBNZR.mjs → chunk-NZDCKQ6W.mjs} +3 -3
  23. package/dist/lib/{node-esm/chunk-VIIMA3XQ.mjs.map → browser/chunk-NZDCKQ6W.mjs.map} +2 -2
  24. package/dist/lib/browser/chunk-QB7OVS6Z.mjs +16 -0
  25. package/dist/lib/browser/chunk-QB7OVS6Z.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-Y66UJUHV.mjs +280 -0
  27. package/dist/lib/browser/chunk-Y66UJUHV.mjs.map +7 -0
  28. package/dist/lib/browser/edge-model-resolver-2HB4PCWH.mjs +24 -0
  29. package/dist/lib/browser/edge-model-resolver-2HB4PCWH.mjs.map +7 -0
  30. package/dist/lib/browser/index.mjs +83 -48
  31. package/dist/lib/browser/index.mjs.map +4 -4
  32. package/dist/lib/browser/{intent-resolver-MV3VSZLS.mjs → intent-resolver-DGRO2XSG.mjs} +20 -14
  33. package/dist/lib/browser/intent-resolver-DGRO2XSG.mjs.map +7 -0
  34. package/dist/lib/browser/meta.json +1 -1
  35. package/dist/lib/browser/{react-surface-3GYEHQRP.mjs → react-surface-LPSIBHEJ.mjs} +36 -23
  36. package/dist/lib/browser/react-surface-LPSIBHEJ.mjs.map +7 -0
  37. package/dist/lib/browser/{settings-5GTTCVGD.mjs → settings-ZFNQYSYP.mjs} +6 -5
  38. package/dist/lib/{node-esm/settings-J2EXEM5H.mjs.map → browser/settings-ZFNQYSYP.mjs.map} +1 -1
  39. package/dist/lib/browser/toolkit-IW4FBLLB.mjs +105 -0
  40. package/dist/lib/browser/toolkit-IW4FBLLB.mjs.map +7 -0
  41. package/dist/lib/browser/types/index.mjs +7 -4
  42. package/dist/lib/node-esm/{BlueprintContainer-RGTMNLNX.mjs → BlueprintContainer-VH4EE4CM.mjs} +4 -3
  43. package/dist/lib/{browser/BlueprintContainer-IZ4AK5EO.mjs.map → node-esm/BlueprintContainer-VH4EE4CM.mjs.map} +1 -1
  44. package/dist/lib/node-esm/{ChatContainer-W3W6FWV3.mjs → ChatContainer-7JLMWHMX.mjs} +37 -14
  45. package/dist/lib/node-esm/ChatContainer-7JLMWHMX.mjs.map +7 -0
  46. package/dist/lib/node-esm/{ChatDialog-QW4JRKVO.mjs → ChatDialog-QDD722F2.mjs} +23 -8
  47. package/dist/lib/node-esm/ChatDialog-QDD722F2.mjs.map +7 -0
  48. package/dist/lib/node-esm/{SequenceContainer-RQQH5XOC.mjs → SequenceContainer-EQ5NP2PG.mjs} +3 -2
  49. package/dist/lib/node-esm/SequenceContainer-EQ5NP2PG.mjs.map +7 -0
  50. package/dist/lib/node-esm/ai-service-LDD32477.mjs +23 -0
  51. package/dist/lib/node-esm/ai-service-LDD32477.mjs.map +7 -0
  52. package/dist/lib/node-esm/{app-graph-builder-PANCJUHV.mjs → app-graph-builder-RCT4ANP2.mjs} +14 -12
  53. package/dist/lib/node-esm/app-graph-builder-RCT4ANP2.mjs.map +7 -0
  54. package/dist/lib/node-esm/blueprint-definition-AEWYMW6I.mjs +147 -0
  55. package/dist/lib/node-esm/blueprint-definition-AEWYMW6I.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-BFO3KHYL.mjs → chunk-ETS2CIDF.mjs} +817 -789
  57. package/dist/lib/node-esm/chunk-ETS2CIDF.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-VIIMA3XQ.mjs → chunk-GAWXJ7K5.mjs} +3 -3
  59. package/dist/lib/{browser/chunk-KFXSBNZR.mjs.map → node-esm/chunk-GAWXJ7K5.mjs.map} +2 -2
  60. package/dist/lib/node-esm/chunk-GENVBE3B.mjs +194 -0
  61. package/dist/lib/node-esm/chunk-GENVBE3B.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  63. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-KOC6ESG7.mjs +22 -0
  65. package/dist/lib/node-esm/{chunk-QN2H2EHV.mjs.map → chunk-KOC6ESG7.mjs.map} +1 -1
  66. package/dist/lib/node-esm/chunk-QS6GWTVA.mjs +281 -0
  67. package/dist/lib/node-esm/chunk-QS6GWTVA.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-X6AANUHZ.mjs +17 -0
  69. package/dist/lib/node-esm/chunk-X6AANUHZ.mjs.map +7 -0
  70. package/dist/lib/node-esm/edge-model-resolver-UDDR2IA6.mjs +25 -0
  71. package/dist/lib/node-esm/edge-model-resolver-UDDR2IA6.mjs.map +7 -0
  72. package/dist/lib/node-esm/index.mjs +83 -48
  73. package/dist/lib/node-esm/index.mjs.map +4 -4
  74. package/dist/lib/node-esm/{intent-resolver-3FMC3GHC.mjs → intent-resolver-7CKWG7TZ.mjs} +20 -14
  75. package/dist/lib/node-esm/intent-resolver-7CKWG7TZ.mjs.map +7 -0
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/{react-surface-QDQWJ7FZ.mjs → react-surface-3EPAE4I4.mjs} +36 -23
  78. package/dist/lib/node-esm/react-surface-3EPAE4I4.mjs.map +7 -0
  79. package/dist/lib/node-esm/{settings-J2EXEM5H.mjs → settings-UI4VQCWW.mjs} +6 -5
  80. package/dist/lib/{browser/settings-5GTTCVGD.mjs.map → node-esm/settings-UI4VQCWW.mjs.map} +1 -1
  81. package/dist/lib/node-esm/toolkit-2VNUL77B.mjs +106 -0
  82. package/dist/lib/node-esm/toolkit-2VNUL77B.mjs.map +7 -0
  83. package/dist/lib/node-esm/types/index.mjs +7 -4
  84. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/ai-service.d.ts +5 -0
  86. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  87. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/blueprint-definition.d.ts +3 -0
  89. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/capabilities.d.ts +11 -0
  91. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/edge-model-resolver.d.ts +5 -0
  93. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/index.d.ts +5 -0
  95. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/toolkit.d.ts +5 -0
  99. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  100. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  101. package/dist/types/src/components/Chat/Chat.d.ts +6 -8
  102. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  103. package/dist/types/src/components/ChatContainer.d.ts +5 -4
  104. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  105. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  106. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +13 -0
  107. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
  108. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +3 -3
  109. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  110. package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
  111. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  112. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +4 -3
  113. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +1 -1
  114. package/dist/types/src/components/ChatThread/ChatThread.d.ts +2 -2
  115. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  116. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +33 -6
  117. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  118. package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
  119. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
  120. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +1 -1
  121. package/dist/types/src/components/SequenceContainer.d.ts.map +1 -1
  122. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -1
  123. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +1 -1
  124. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  126. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  128. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/Timeline/Timeline.d.ts +42 -0
  130. package/dist/types/src/components/Timeline/Timeline.d.ts.map +1 -0
  131. package/dist/types/src/components/Timeline/Timeline.stories.d.ts +11 -0
  132. package/dist/types/src/components/Timeline/Timeline.stories.d.ts.map +1 -0
  133. package/dist/types/src/components/Timeline/index.d.ts +2 -0
  134. package/dist/types/src/components/Timeline/index.d.ts.map +1 -0
  135. package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -7
  136. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  137. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -2
  138. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/index.d.ts +2 -1
  140. package/dist/types/src/components/index.d.ts.map +1 -1
  141. package/dist/types/src/events.d.ts +1 -1
  142. package/dist/types/src/events.d.ts.map +1 -1
  143. package/dist/types/src/execution-graph/execution-graph.d.ts +21 -0
  144. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -0
  145. package/dist/types/src/execution-graph/index.d.ts +2 -0
  146. package/dist/types/src/execution-graph/index.d.ts.map +1 -0
  147. package/dist/types/src/functions/analysis.d.ts +5 -0
  148. package/dist/types/src/functions/analysis.d.ts.map +1 -0
  149. package/dist/types/src/functions/index.d.ts +4 -0
  150. package/dist/types/src/functions/index.d.ts.map +1 -0
  151. package/dist/types/src/functions/list.d.ts +10 -0
  152. package/dist/types/src/functions/list.d.ts.map +1 -0
  153. package/dist/types/src/functions/load.d.ts +8 -0
  154. package/dist/types/src/functions/load.d.ts.map +1 -0
  155. package/dist/types/src/hooks/chat-processor.d.ts +28 -42
  156. package/dist/types/src/hooks/chat-processor.d.ts.map +1 -1
  157. package/dist/types/src/hooks/errors.d.ts +4 -0
  158. package/dist/types/src/hooks/errors.d.ts.map +1 -0
  159. package/dist/types/src/hooks/index.d.ts +6 -1
  160. package/dist/types/src/hooks/index.d.ts.map +1 -1
  161. package/dist/types/src/hooks/presets.d.ts +2 -2
  162. package/dist/types/src/hooks/presets.d.ts.map +1 -1
  163. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +21 -0
  164. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
  165. package/dist/types/src/hooks/useChatProcessor.d.ts +7 -14
  166. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  167. package/dist/types/src/hooks/useChatServices.d.ts +4 -3
  168. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  169. package/dist/types/src/hooks/useExecutionGraph.d.ts +7 -0
  170. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +1 -0
  171. package/dist/types/src/hooks/useOnline.d.ts +3 -0
  172. package/dist/types/src/hooks/useOnline.d.ts.map +1 -0
  173. package/dist/types/src/hooks/usePresets.d.ts +7 -0
  174. package/dist/types/src/hooks/usePresets.d.ts.map +1 -0
  175. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  176. package/dist/types/src/hooks/useResolveRef.d.ts +4 -0
  177. package/dist/types/src/hooks/useResolveRef.d.ts.map +1 -0
  178. package/dist/types/src/parser/filter-generator.d.ts.map +1 -1
  179. package/dist/types/src/parser/query-parser.d.ts.map +1 -1
  180. package/dist/types/src/stories/Chat.stories.d.ts +66 -5
  181. package/dist/types/src/stories/Chat.stories.d.ts.map +1 -1
  182. package/dist/types/src/stories/components/BlueprintContainer.d.ts +5 -0
  183. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +1 -0
  184. package/dist/types/src/stories/components/ChatContainer.d.ts +5 -0
  185. package/dist/types/src/stories/components/ChatContainer.d.ts.map +1 -0
  186. package/dist/types/src/stories/components/GraphContainer.d.ts +6 -0
  187. package/dist/types/src/stories/components/GraphContainer.d.ts.map +1 -0
  188. package/dist/types/src/stories/components/LoggingContainer.d.ts +5 -0
  189. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +1 -0
  190. package/dist/types/src/stories/components/SurfaceContainer.d.ts +8 -0
  191. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +1 -0
  192. package/dist/types/src/stories/components/TasksContainer.d.ts +5 -0
  193. package/dist/types/src/stories/components/TasksContainer.d.ts.map +1 -0
  194. package/dist/types/src/stories/components/index.d.ts +8 -0
  195. package/dist/types/src/stories/components/index.d.ts.map +1 -0
  196. package/dist/types/src/stories/components/types.d.ts +7 -0
  197. package/dist/types/src/stories/components/types.d.ts.map +1 -0
  198. package/dist/types/src/stories/hooks/index.d.ts +3 -0
  199. package/dist/types/src/stories/hooks/index.d.ts.map +1 -0
  200. package/dist/types/src/stories/hooks/useFlush.d.ts +6 -0
  201. package/dist/types/src/stories/hooks/useFlush.d.ts.map +1 -0
  202. package/dist/types/src/stories/hooks/useMatcherExtension.d.ts +3 -0
  203. package/dist/types/src/stories/hooks/useMatcherExtension.d.ts.map +1 -0
  204. package/dist/types/src/stories/testing/data.d.ts +142 -0
  205. package/dist/types/src/stories/testing/data.d.ts.map +1 -0
  206. package/dist/types/src/stories/testing/index.d.ts +3 -0
  207. package/dist/types/src/stories/testing/index.d.ts.map +1 -0
  208. package/dist/types/src/stories/testing/testing.d.ts +26 -0
  209. package/dist/types/src/stories/testing/testing.d.ts.map +1 -0
  210. package/dist/types/src/testing/test-functions.d.ts +5 -2
  211. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  212. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  213. package/dist/types/src/tools/function.d.ts.map +1 -1
  214. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  215. package/dist/types/src/translations.d.ts +5 -0
  216. package/dist/types/src/translations.d.ts.map +1 -1
  217. package/dist/types/src/types/Assistant.d.ts +42 -0
  218. package/dist/types/src/types/Assistant.d.ts.map +1 -0
  219. package/dist/types/src/types/AssistantAction.d.ts +91 -0
  220. package/dist/types/src/types/AssistantAction.d.ts.map +1 -0
  221. package/dist/types/src/types/defs.d.ts +2 -0
  222. package/dist/types/src/types/defs.d.ts.map +1 -0
  223. package/dist/types/src/types/index.d.ts +3 -1
  224. package/dist/types/src/types/index.d.ts.map +1 -1
  225. package/dist/types/src/types/service.d.ts +6 -6
  226. package/dist/types/src/types/service.d.ts.map +1 -1
  227. package/dist/types/tsconfig.tsbuildinfo +1 -1
  228. package/package.json +85 -79
  229. package/src/AssistantPlugin.tsx +37 -16
  230. package/src/capabilities/ai-service.ts +28 -0
  231. package/src/capabilities/app-graph-builder.ts +8 -8
  232. package/src/capabilities/blueprint-definition.ts +32 -0
  233. package/src/capabilities/capabilities.ts +22 -0
  234. package/src/capabilities/edge-model-resolver.ts +29 -0
  235. package/src/capabilities/index.ts +6 -0
  236. package/src/capabilities/intent-resolver.ts +13 -12
  237. package/src/capabilities/react-surface.tsx +22 -15
  238. package/src/capabilities/toolkit.ts +106 -0
  239. package/src/components/AssistantSettings/AssistantSettings.tsx +1 -1
  240. package/src/components/Chat/Chat.tsx +77 -64
  241. package/src/components/ChatContainer.tsx +38 -14
  242. package/src/components/ChatDialog.tsx +10 -6
  243. package/src/components/ChatPrompt/ChatOptions.tsx +59 -0
  244. package/src/components/ChatPrompt/ChatReferences.tsx +11 -9
  245. package/src/components/ChatPrompt/index.ts +1 -1
  246. package/src/components/ChatThread/ChatMessage.tsx +141 -118
  247. package/src/components/ChatThread/ChatThread.stories.tsx +236 -104
  248. package/src/components/ChatThread/ChatThread.tsx +2 -2
  249. package/src/components/ChatThread/Link.tsx +23 -0
  250. package/src/components/ChatThread/ToolBlock.tsx +20 -16
  251. package/src/components/SequenceContainer.tsx +2 -1
  252. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +3 -2
  253. package/src/components/SequenceEditor/SequenceEditor.tsx +1 -1
  254. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +9 -2
  255. package/src/components/TemplateEditor/TemplateEditor.tsx +3 -2
  256. package/src/components/TemplateEditor/TemplateForm.stories.tsx +9 -2
  257. package/src/components/TemplateEditor/TemplateForm.tsx +2 -1
  258. package/src/components/Timeline/Timeline.stories.tsx +144 -0
  259. package/src/components/Timeline/Timeline.tsx +202 -0
  260. package/src/components/Timeline/index.ts +5 -0
  261. package/src/components/Toolbox/Toolbox.stories.tsx +6 -12
  262. package/src/components/Toolbox/Toolbox.tsx +16 -40
  263. package/src/components/index.ts +1 -4
  264. package/src/events.ts +2 -2
  265. package/src/execution-graph/execution-graph.ts +184 -0
  266. package/src/execution-graph/index.ts +5 -0
  267. package/src/functions/analysis.ts +20 -0
  268. package/src/functions/index.ts +7 -0
  269. package/src/functions/list.ts +42 -0
  270. package/src/functions/load.ts +43 -0
  271. package/src/hooks/chat-processor.ts +123 -177
  272. package/src/hooks/errors.ts +8 -0
  273. package/src/hooks/index.ts +6 -1
  274. package/src/hooks/presets.ts +6 -5
  275. package/src/hooks/useBlueprintRegistry.ts +79 -0
  276. package/src/hooks/useChatProcessor.ts +21 -83
  277. package/src/hooks/useChatServices.ts +29 -22
  278. package/src/hooks/useExecutionGraph.ts +16 -0
  279. package/src/hooks/useOnline.ts +10 -0
  280. package/src/hooks/usePresets.ts +45 -0
  281. package/src/hooks/useReferencesProvider.ts +11 -9
  282. package/src/hooks/useResolveRef.ts +33 -0
  283. package/src/parser/filter-generator.ts +6 -13
  284. package/src/parser/query-parser.ts +1 -1
  285. package/src/queue-logger.ts +5 -5
  286. package/src/stories/Chat.stories.tsx +236 -290
  287. package/src/stories/components/BlueprintContainer.tsx +34 -0
  288. package/src/stories/components/ChatContainer.tsx +80 -0
  289. package/src/stories/components/GraphContainer.tsx +118 -0
  290. package/src/stories/components/LoggingContainer.tsx +29 -0
  291. package/src/stories/components/SurfaceContainer.tsx +62 -0
  292. package/src/stories/components/TasksContainer.tsx +51 -0
  293. package/src/stories/components/index.ts +12 -0
  294. package/src/stories/components/types.ts +11 -0
  295. package/src/stories/hooks/index.ts +6 -0
  296. package/src/stories/hooks/useFlush.ts +35 -0
  297. package/src/stories/hooks/useMatcherExtension.ts +45 -0
  298. package/src/stories/testing/data.ts +130 -0
  299. package/src/stories/testing/index.ts +6 -0
  300. package/src/stories/testing/testing.tsx +163 -0
  301. package/src/testing/test-functions.ts +8 -3
  302. package/src/testing/test-sequence.ts +1 -1
  303. package/src/tools/function.ts +4 -1
  304. package/src/tools/openapi.test.ts +7 -5
  305. package/src/tools/openapi.ts +4 -1
  306. package/src/translations.ts +7 -0
  307. package/src/types/Assistant.ts +62 -0
  308. package/src/types/AssistantAction.ts +54 -0
  309. package/src/types/defs.ts +5 -0
  310. package/src/types/index.ts +4 -1
  311. package/dist/lib/browser/ChatContainer-RP3QEXYX.mjs.map +0 -7
  312. package/dist/lib/browser/ChatDialog-ZVLXFHEY.mjs.map +0 -7
  313. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
  314. package/dist/lib/browser/app-graph-builder-XSEOKJLG.mjs.map +0 -7
  315. package/dist/lib/browser/chunk-63GG6U6D.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-7W7LHTRH.mjs +0 -171
  317. package/dist/lib/browser/chunk-7W7LHTRH.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
  319. package/dist/lib/browser/chunk-LERGF5YG.mjs +0 -108
  320. package/dist/lib/browser/chunk-LERGF5YG.mjs.map +0 -7
  321. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs.map +0 -7
  322. package/dist/lib/browser/react-surface-3GYEHQRP.mjs.map +0 -7
  323. package/dist/lib/node-esm/ChatContainer-W3W6FWV3.mjs.map +0 -7
  324. package/dist/lib/node-esm/ChatDialog-QW4JRKVO.mjs.map +0 -7
  325. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
  326. package/dist/lib/node-esm/app-graph-builder-PANCJUHV.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs.map +0 -7
  328. package/dist/lib/node-esm/chunk-MS3PJARN.mjs +0 -109
  329. package/dist/lib/node-esm/chunk-MS3PJARN.mjs.map +0 -7
  330. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
  331. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs +0 -172
  332. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs.map +0 -7
  333. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs.map +0 -7
  334. package/dist/lib/node-esm/react-surface-QDQWJ7FZ.mjs.map +0 -7
  335. package/dist/types/src/capability-definitions.d.ts +0 -7
  336. package/dist/types/src/capability-definitions.d.ts.map +0 -1
  337. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
  338. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
  339. package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
  340. package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
  341. package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
  342. package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
  343. package/dist/types/src/types/schema.d.ts +0 -120
  344. package/dist/types/src/types/schema.d.ts.map +0 -1
  345. package/src/capability-definitions.ts +0 -15
  346. package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
  347. package/src/hooks/chat-processor.test.ts +0 -16
  348. package/src/hooks/useBlueprints.ts +0 -57
  349. package/src/types/schema.ts +0 -108
  350. /package/dist/lib/{node-esm/BlueprintContainer-RGTMNLNX.mjs.map → browser/BlueprintContainer-H7H4BQ2C.mjs.map} +0 -0
@@ -4,62 +4,98 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type StoryObj, type Meta } from '@storybook/react-vite';
8
- import React, { useCallback, useEffect, useMemo, useState, type FC } from 'react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
+ import React, { type FC, useCallback } from 'react';
9
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';
10
+ import { EXA_API_KEY } from '@dxos/ai/testing';
11
+ import { Capabilities, useCapabilities } from '@dxos/app-framework';
12
+ import { RESEARCH_BLUEPRINT, ResearchDataTypes, ResearchGraph } from '@dxos/assistant-testing';
21
13
  import { Filter, Obj, Ref } from '@dxos/echo';
22
- import { invariant } from '@dxos/invariant';
23
14
  import { log } from '@dxos/log';
24
- import { ChessPlugin } from '@dxos/plugin-chess';
25
- import { ClientPlugin } from '@dxos/plugin-client';
15
+ import { Board, BoardPlugin } from '@dxos/plugin-board';
16
+ import { Chess, ChessPlugin } from '@dxos/plugin-chess';
26
17
  import { InboxPlugin } from '@dxos/plugin-inbox';
27
- import { MapPlugin } from '@dxos/plugin-map';
18
+ import { Map, MapPlugin } from '@dxos/plugin-map';
28
19
  import { MarkdownPlugin } from '@dxos/plugin-markdown';
29
- import { Markdown } from '@dxos/plugin-markdown/types';
30
- import { SpacePlugin } from '@dxos/plugin-space';
20
+ import { Markdown } from '@dxos/plugin-markdown';
31
21
  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';
22
+ import { useClient } from '@dxos/react-client';
23
+ import { useSpace } from '@dxos/react-client/echo';
24
+ import { useAsyncEffect } from '@dxos/react-ui';
25
+ import { DataType } from '@dxos/schema';
26
+ import { render } from '@dxos/storybook-utils';
27
+ import { trim } from '@dxos/util';
46
28
 
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
29
  import { translations } from '../translations';
53
30
  import { Assistant } from '../types';
54
31
 
55
- //
56
- // Story container
57
- //
32
+ import {
33
+ BlueprintContainer,
34
+ ChatContainer,
35
+ type ComponentProps,
36
+ GraphContainer,
37
+ LoggingContainer,
38
+ SurfaceContainer,
39
+ TasksContainer,
40
+ } from './components';
41
+ import { addTestData, config, getDecorators, testTypes } from './testing';
42
+
43
+ const DefaultStory = ({
44
+ debug = true,
45
+ components,
46
+ blueprints = [],
47
+ }: {
48
+ debug?: boolean;
49
+ components: (FC<ComponentProps> | FC<ComponentProps>[])[];
50
+ blueprints?: string[];
51
+ }) => {
52
+ const client = useClient();
53
+ const space = useSpace();
54
+
55
+ const blueprintsDefinitions = useCapabilities(Capabilities.BlueprintDefinition);
56
+ useAsyncEffect(async () => {
57
+ if (!space) {
58
+ return;
59
+ }
60
+ const { objects: chats = [] } = await space.db.query(Filter.type(Assistant.Chat)).run();
61
+ const chat = chats[0];
62
+ if (!chat) {
63
+ return;
64
+ }
65
+
66
+ // TODO(burdon): Active should be ephemeral state of AiProcessor; write on edit/prompt.
67
+
68
+ // TODO(burdon): RACE CONDITION; must handle concurrently adding multiple blueprints instances with same key.
69
+ // Add blueprints to context.
70
+ // const binder = new AiContextBinder(await chat.queue.load());
71
+ // for (const key of blueprints) {
72
+ // const blueprint = blueprintsDefinitions.find((blueprint) => blueprint.key === key);
73
+ // if (blueprint) {
74
+ // const obj = space.db.add(Obj.clone(blueprint));
75
+ // await binder.bind({ blueprints: [Ref.make(obj)] });
76
+ // }
77
+ // }
78
+ }, [space, blueprints, blueprintsDefinitions]);
79
+
80
+ const handleEvent = useCallback<NonNullable<ComponentProps['onEvent']>>((event) => {
81
+ log.info('event', { event });
82
+ switch (event) {
83
+ case 'reset': {
84
+ void client?.reset().then(() => {
85
+ document.location.reload();
86
+ });
87
+ break;
88
+ }
89
+ }
90
+ }, []);
91
+
92
+ if (!space) {
93
+ return null;
94
+ }
58
95
 
59
- const DefaultStory = ({ components }: { components: (FC | FC[])[] }) => {
60
96
  return (
61
97
  <div
62
- className={mx('grid grid-cols gap-2 m-2')}
98
+ className='grid grid-cols gap-2 m-2'
63
99
  style={{ gridTemplateColumns: `repeat(${components.length}, minmax(0, 40rem))` }}
64
100
  >
65
101
  {components.map((Component, index) =>
@@ -70,14 +106,14 @@ const DefaultStory = ({ components }: { components: (FC | FC[])[] }) => {
70
106
  style={{ gridTemplateRows: `repeat(${Component.length}, 1fr)` }}
71
107
  >
72
108
  {Component.map((Component, index) => (
73
- <div key={index} className='flex flex-col overflow-hidden bg-baseSurface border border-separator'>
74
- <Component />
109
+ <div key={index} className='flex flex-col overflow-hidden bg-baseSurface rounded border border-separator'>
110
+ <Component space={space} debug={debug} onEvent={handleEvent} />
75
111
  </div>
76
112
  ))}
77
113
  </div>
78
114
  ) : (
79
- <div key={index} className='flex flex-col overflow-hidden bg-baseSurface border border-separator'>
80
- <Component />
115
+ <div key={index} className='flex flex-col overflow-hidden bg-baseSurface rounded border border-separator'>
116
+ <Component space={space} debug={debug} onEvent={handleEvent} />
81
117
  </div>
82
118
  ),
83
119
  )}
@@ -85,154 +121,9 @@ const DefaultStory = ({ components }: { components: (FC | FC[])[] }) => {
85
121
  );
86
122
  };
87
123
 
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
124
  const storybook = {
233
125
  title: 'plugins/plugin-assistant/Chat',
234
126
  render: render(DefaultStory),
235
- decorators: [],
236
127
  parameters: {
237
128
  translations,
238
129
  controls: { disable: true },
@@ -244,128 +135,183 @@ export default storybook;
244
135
  type Story = StoryObj<typeof storybook>;
245
136
 
246
137
  //
247
- // Decorators
138
+ // Stories
248
139
  //
249
140
 
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
- },
141
+ export const Default = {
142
+ decorators: getDecorators({
143
+ config: config.remote,
144
+ }),
145
+ args: {
146
+ components: [ChatContainer],
261
147
  },
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(),
148
+ } satisfies Story;
313
149
 
314
- TranscriptionPlugin(),
315
- AssistantPlugin(),
150
+ export const WithDocument = {
151
+ decorators: getDecorators({
152
+ plugins: [MarkdownPlugin()],
153
+ config: config.remote,
154
+ onInit: async ({ space, binder }) => {
155
+ const object = space.db.add(
156
+ Markdown.makeDocument({
157
+ name: 'Document',
158
+ content: trim`
159
+ # Hello, world!
160
+ This is a test.
161
+ `,
162
+ }),
163
+ );
164
+ await binder.bind({ objects: [Ref.make(object)] });
165
+ },
166
+ }),
167
+ args: {
168
+ components: [ChatContainer, SurfaceContainer],
169
+ },
170
+ } satisfies Story;
316
171
 
317
- ...plugins,
318
- ],
319
- capabilities: [contributes(Capabilities.Functions, [readDocument, updateDocument])],
172
+ export const WithBlueprints = {
173
+ decorators: getDecorators({
174
+ plugins: [InboxPlugin(), MarkdownPlugin(), TablePlugin()],
175
+ config: config.remote,
176
+ onInit: async ({ space, binder }) => {
177
+ const object = space.db.add(Markdown.makeDocument({ name: 'Tasks' }));
178
+ await binder.bind({ objects: [Ref.make(object)] });
179
+ },
320
180
  }),
321
- withTheme,
322
- withLayout({
323
- fullscreen: true,
324
- classNames: 'bg-deckSurface justify-center',
181
+ args: {
182
+ components: [ChatContainer, [TasksContainer, BlueprintContainer]],
183
+ },
184
+ } satisfies Story;
185
+
186
+ export const WithChess = {
187
+ decorators: getDecorators({
188
+ plugins: [ChessPlugin()],
189
+ config: config.remote,
190
+ types: [Chess.Game],
191
+ onInit: async ({ space, binder }) => {
192
+ // TODO(burdon): Add player DID (for user and assistant).
193
+ const object = space.db.add(
194
+ Chess.makeGame({
195
+ name: 'Challenge',
196
+ pgn: '1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 d5 8. exd5 Nxd5 9. O-O Be6 10. Qb3 Na5 11. Qa4+ c6 12. Bxd5 Bxc3 13. Bxe6 fxe6 *',
197
+ }),
198
+ );
199
+ await binder.bind({ objects: [Ref.make(object)] });
200
+ },
325
201
  }),
326
- ];
202
+ args: {
203
+ components: [ChatContainer, SurfaceContainer],
204
+ blueprints: ['dxos.org/blueprint/assistant', 'dxos.org/blueprint/chess'],
205
+ },
206
+ } satisfies Story;
327
207
 
328
- //
329
- // Stories
330
- //
208
+ export const WithMap = {
209
+ decorators: getDecorators({
210
+ plugins: [MapPlugin()],
211
+ config: config.remote,
212
+ types: [Map.Map],
213
+ onInit: async ({ space, binder }) => {
214
+ const object = space.db.add(Map.makeMap());
215
+ await binder.bind({ objects: [Ref.make(object)] });
216
+ },
217
+ }),
218
+ args: {
219
+ components: [ChatContainer, SurfaceContainer],
220
+ },
221
+ } satisfies Story;
331
222
 
332
- export const Default = {
223
+ export const WithTrip = {
333
224
  decorators: getDecorators({
334
- config: remoteConfig,
225
+ plugins: [MarkdownPlugin(), MapPlugin()],
226
+ config: config.remote,
227
+ types: [Map.Map],
228
+ onInit: async ({ space, binder }) => {
229
+ // TODO(burdon): Table.
230
+ {
231
+ const object = space.db.add(Map.makeMap({ name: 'Trip' }));
232
+ await binder.bind({ objects: [Ref.make(object)] });
233
+ }
234
+ {
235
+ const object = space.db.add(
236
+ Markdown.makeDocument({
237
+ name: 'Itinerary',
238
+ content: trim`
239
+ # Itinerary
240
+
241
+ ## Day 1
242
+ - Visit the Sagrada Familia
243
+ - Visit the Park Güell
244
+ - Visit the Casa Batlló
245
+
246
+ ## Day 2
247
+ - Visit the Eiffel Tower
248
+ - Visit the Louvre
249
+ - Visit the Musée d'Orsay
250
+ `,
251
+ }),
252
+ );
253
+ await binder.bind({ objects: [Ref.make(object)] });
254
+ }
255
+ {
256
+ const object = space.db.add(
257
+ Markdown.makeDocument({
258
+ name: 'Barcelona',
259
+ content: trim`
260
+ # Barcelona
261
+
262
+ Barcelona is the capital and most populous city of Catalonia, an autonomous community in northeastern Spain.
263
+ It is located on the Mediterranean coast, on the banks of the Llobregat River, in the comarca of the Baix Llobregat.
264
+ The city is known for its rich history, vibrant culture, and stunning architecture, including the Sagrada Familia, Park Güell, and Casa Batlló.
265
+ `,
266
+ }),
267
+ );
268
+ await binder.bind({ objects: [Ref.make(object)] });
269
+ }
270
+ },
335
271
  }),
336
272
  args: {
337
- components: [ChatContainer],
273
+ components: [ChatContainer, SurfaceContainer],
338
274
  },
339
275
  } satisfies Story;
340
276
 
341
- export const WithDocument = {
277
+ export const WithBoard = {
342
278
  decorators: getDecorators({
343
- config: remoteConfig,
344
- plugins: [MarkdownPlugin()],
279
+ plugins: [BoardPlugin()],
280
+ config: config.remote,
281
+ types: [Board.Board],
282
+ onInit: async ({ space, binder }) => {
283
+ const object = space.db.add(Board.makeBoard());
284
+ await binder.bind({ objects: [Ref.make(object)] });
285
+ },
345
286
  }),
346
287
  args: {
347
- components: [ChatContainer, DocumentContainer],
288
+ debug: true,
289
+ components: [ChatContainer, SurfaceContainer],
348
290
  },
349
291
  } satisfies Story;
350
292
 
351
- export const WithBlueprints = {
293
+ export const WithResearch = {
352
294
  decorators: getDecorators({
353
- config: remoteConfig,
354
- plugins: [ChessPlugin(), InboxPlugin(), MapPlugin(), MarkdownPlugin(), TablePlugin()],
355
- blueprints: [PLANNING_BLUEPRINT],
356
- context: true,
295
+ plugins: [MarkdownPlugin(), TablePlugin()],
296
+ config: config.persistent,
297
+ types: [...ResearchDataTypes, ResearchGraph, DataType.AccessToken],
298
+ accessTokens: [Obj.make(DataType.AccessToken, { source: 'exa.ai', token: EXA_API_KEY })],
357
299
  }),
358
300
  args: {
359
- components: [ChatContainer, [DocumentContainer, BlueprintContainer]],
301
+ components: [ChatContainer, [/*GraphContainer, BlueprintContainer,*/ LoggingContainer]],
302
+ blueprints: [RESEARCH_BLUEPRINT.key],
360
303
  },
361
304
  } satisfies Story;
362
305
 
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;
306
+ export const WithSearch = {
307
+ decorators: getDecorators({
308
+ config: config.remote,
309
+ types: testTypes,
310
+ onInit: async ({ space }) => {
311
+ await addTestData(space);
312
+ },
313
+ }),
314
+ args: {
315
+ components: [ChatContainer, [GraphContainer]],
316
+ },
317
+ } satisfies Story;
@@ -0,0 +1,34 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import '@dxos-theme';
6
+
7
+ import React from 'react';
8
+
9
+ import { Blueprint } from '@dxos/blueprints';
10
+ import { Filter, Obj } from '@dxos/echo';
11
+ import { useQuery } from '@dxos/react-client/echo';
12
+ import { Toolbar } from '@dxos/react-ui';
13
+
14
+ import { TemplateEditor } from '../../components';
15
+
16
+ import { type ComponentProps } from './types';
17
+
18
+ export const BlueprintContainer = ({ space }: ComponentProps) => {
19
+ const [blueprint] = useQuery(space, Filter.type(Blueprint.Blueprint));
20
+ if (!blueprint?.instructions) {
21
+ return null;
22
+ }
23
+
24
+ return (
25
+ <div className='flex flex-col h-full'>
26
+ <Toolbar.Root classNames='density-coarse border-b border-subduedSeparator'>
27
+ <h2>{Obj.getLabel(blueprint)}</h2>
28
+ <div className='flex-1' />
29
+ <Toolbar.IconButton icon='ph--arrow-clockwise--regular' iconOnly label='Refresh' />
30
+ </Toolbar.Root>
31
+ <TemplateEditor id={blueprint.id} template={blueprint.instructions} />
32
+ </div>
33
+ );
34
+ };