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

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 (462) hide show
  1. package/dist/lib/browser/{BlueprintContainer-IZ4AK5EO.mjs → BlueprintContainer-OWUSKPRK.mjs} +4 -3
  2. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs +126 -0
  3. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs.map +7 -0
  4. package/dist/lib/browser/{ChatContainer-RP3QEXYX.mjs → ChatContainer-YBJBIVUZ.mjs} +34 -13
  5. package/dist/lib/browser/ChatContainer-YBJBIVUZ.mjs.map +7 -0
  6. package/dist/lib/browser/{ChatDialog-ZVLXFHEY.mjs → ChatDialog-MTPJLEHM.mjs} +26 -9
  7. package/dist/lib/browser/ChatDialog-MTPJLEHM.mjs.map +7 -0
  8. package/dist/lib/browser/{SequenceContainer-3UDVKWPA.mjs → SequenceContainer-TF5QNXYM.mjs} +5 -17
  9. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +7 -0
  10. package/dist/lib/browser/ai-service-NRZPTUHO.mjs +22 -0
  11. package/dist/lib/browser/ai-service-NRZPTUHO.mjs.map +7 -0
  12. package/dist/lib/browser/{app-graph-builder-XSEOKJLG.mjs → app-graph-builder-7AAWTWGA.mjs} +25 -36
  13. package/dist/lib/browser/app-graph-builder-7AAWTWGA.mjs.map +7 -0
  14. package/dist/lib/browser/blueprint-definition-CRZPIA5A.mjs +12 -0
  15. package/dist/lib/browser/blueprint-definition-CRZPIA5A.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-6QMISAU6.mjs +167 -0
  17. package/dist/lib/browser/chunk-6QMISAU6.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-LERGF5YG.mjs → chunk-CFXXQM25.mjs} +96 -22
  19. package/dist/lib/browser/chunk-CFXXQM25.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-IJAJRAR7.mjs +18 -0
  21. package/dist/lib/browser/chunk-IJAJRAR7.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  23. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-O4LUJEDV.mjs +20 -0
  25. package/dist/lib/browser/{chunk-FDCJSQYF.mjs.map → chunk-O4LUJEDV.mjs.map} +2 -2
  26. package/dist/lib/browser/chunk-OYFQS7JM.mjs +157 -0
  27. package/dist/lib/browser/chunk-OYFQS7JM.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-SMIVXXAI.mjs +202 -0
  29. package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +7 -0
  30. package/dist/lib/browser/chunk-V5H5CCZA.mjs +218 -0
  31. package/dist/lib/browser/chunk-V5H5CCZA.mjs.map +7 -0
  32. package/dist/lib/browser/chunk-XL557TXF.mjs +2332 -0
  33. package/dist/lib/browser/chunk-XL557TXF.mjs.map +7 -0
  34. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs +22 -0
  35. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs.map +7 -0
  36. package/dist/lib/browser/index.mjs +134 -59
  37. package/dist/lib/browser/index.mjs.map +4 -4
  38. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs +112 -0
  39. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs.map +7 -0
  40. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs +21 -0
  41. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs.map +7 -0
  42. package/dist/lib/browser/meta.json +1 -1
  43. package/dist/lib/browser/{react-surface-3GYEHQRP.mjs → react-surface-VNCD2H7C.mjs} +25 -66
  44. package/dist/lib/browser/react-surface-VNCD2H7C.mjs.map +7 -0
  45. package/dist/lib/browser/{settings-5GTTCVGD.mjs → settings-36V3VUMW.mjs} +6 -5
  46. package/dist/lib/{node-esm/settings-J2EXEM5H.mjs.map → browser/settings-36V3VUMW.mjs.map} +1 -1
  47. package/dist/lib/browser/state-D5IVKNYG.mjs +21 -0
  48. package/dist/lib/browser/state-D5IVKNYG.mjs.map +7 -0
  49. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs +191 -0
  50. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs.map +7 -0
  51. package/dist/lib/browser/types/index.mjs +7 -4
  52. package/dist/lib/node-esm/{BlueprintContainer-RGTMNLNX.mjs → BlueprintContainer-UFVWCRN6.mjs} +4 -3
  53. package/dist/lib/{browser/BlueprintContainer-IZ4AK5EO.mjs.map → node-esm/BlueprintContainer-UFVWCRN6.mjs.map} +1 -1
  54. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs +127 -0
  55. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs.map +7 -0
  56. package/dist/lib/node-esm/{ChatContainer-W3W6FWV3.mjs → ChatContainer-TUCITJJW.mjs} +34 -13
  57. package/dist/lib/node-esm/ChatContainer-TUCITJJW.mjs.map +7 -0
  58. package/dist/lib/node-esm/{ChatDialog-QW4JRKVO.mjs → ChatDialog-JLM7RDZQ.mjs} +26 -9
  59. package/dist/lib/node-esm/ChatDialog-JLM7RDZQ.mjs.map +7 -0
  60. package/dist/lib/node-esm/{SequenceContainer-RQQH5XOC.mjs → SequenceContainer-UXOVZPZO.mjs} +5 -17
  61. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +7 -0
  62. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs +23 -0
  63. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs.map +7 -0
  64. package/dist/lib/node-esm/{app-graph-builder-PANCJUHV.mjs → app-graph-builder-PNAFQUYT.mjs} +25 -36
  65. package/dist/lib/node-esm/app-graph-builder-PNAFQUYT.mjs.map +7 -0
  66. package/dist/lib/node-esm/blueprint-definition-275J3XL2.mjs +13 -0
  67. package/dist/lib/node-esm/blueprint-definition-275J3XL2.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-2X6VEO32.mjs +2333 -0
  69. package/dist/lib/node-esm/chunk-2X6VEO32.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-7YOGZI66.mjs +203 -0
  71. package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs +159 -0
  73. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs.map +7 -0
  74. package/dist/lib/node-esm/{chunk-MS3PJARN.mjs → chunk-FNZJJL7G.mjs} +96 -22
  75. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  77. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs +168 -0
  79. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs +219 -0
  81. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs.map +7 -0
  82. package/dist/lib/node-esm/chunk-VFY2JG62.mjs +22 -0
  83. package/dist/lib/node-esm/{chunk-QN2H2EHV.mjs.map → chunk-VFY2JG62.mjs.map} +2 -2
  84. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs +19 -0
  85. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs.map +7 -0
  86. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs +23 -0
  87. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs.map +7 -0
  88. package/dist/lib/node-esm/index.mjs +134 -59
  89. package/dist/lib/node-esm/index.mjs.map +4 -4
  90. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs +113 -0
  91. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs.map +7 -0
  92. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs +22 -0
  93. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs.map +7 -0
  94. package/dist/lib/node-esm/meta.json +1 -1
  95. package/dist/lib/node-esm/{react-surface-QDQWJ7FZ.mjs → react-surface-4NLRKNBU.mjs} +25 -66
  96. package/dist/lib/node-esm/react-surface-4NLRKNBU.mjs.map +7 -0
  97. package/dist/lib/node-esm/{settings-J2EXEM5H.mjs → settings-7ZCZ6AS5.mjs} +6 -5
  98. package/dist/lib/{browser/settings-5GTTCVGD.mjs.map → node-esm/settings-7ZCZ6AS5.mjs.map} +1 -1
  99. package/dist/lib/node-esm/state-4VLKPLW3.mjs +22 -0
  100. package/dist/lib/node-esm/state-4VLKPLW3.mjs.map +7 -0
  101. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs +192 -0
  102. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs.map +7 -0
  103. package/dist/lib/node-esm/types/index.mjs +7 -4
  104. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/ai-service.d.ts +5 -0
  106. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  108. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/blueprint-definition.d.ts +7 -0
  110. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/capabilities.d.ts +19 -0
  112. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/edge-model-resolver.d.ts +4 -0
  114. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/index.d.ts +11 -3
  116. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  118. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/local-model-resolver.d.ts +10 -0
  120. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  122. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  123. package/dist/types/src/capabilities/settings.d.ts +1 -1
  124. package/dist/types/src/capabilities/state.d.ts +4 -0
  125. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  126. package/dist/types/src/capabilities/toolkit.d.ts +4 -0
  127. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  128. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  129. package/dist/types/src/components/Chat/Chat.d.ts +19 -16
  130. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  131. package/dist/types/src/components/Chat/events.d.ts +5 -0
  132. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  133. package/dist/types/src/components/ChatCompanion.d.ts +13 -0
  134. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -0
  135. package/dist/types/src/components/ChatContainer.d.ts +4 -4
  136. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  137. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  138. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +7 -0
  139. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -0
  140. package/dist/types/src/components/ChatProgress/index.d.ts +2 -0
  141. package/dist/types/src/components/ChatProgress/index.d.ts.map +1 -0
  142. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  143. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +20 -0
  144. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
  145. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  146. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +4 -5
  147. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  148. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
  149. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  150. package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
  151. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  152. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +21 -5
  153. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +1 -1
  154. package/dist/types/src/components/ChatThread/ChatThread.d.ts +4 -4
  155. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  156. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +108 -30
  157. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
  159. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
  160. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +12 -12
  161. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +1 -1
  162. package/dist/types/src/components/ChatThread/reducers.d.ts +40 -0
  163. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -0
  164. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  165. package/dist/types/src/components/SequenceContainer.d.ts.map +1 -1
  166. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -1
  167. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +257 -2
  168. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -1
  169. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +0 -5
  170. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  171. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +257 -6
  172. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  173. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  174. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +254 -1
  175. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  176. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts +12 -0
  177. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +1 -0
  178. package/dist/types/src/components/Toolbar/Toolbar.d.ts +4 -0
  179. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
  180. package/dist/types/src/components/Toolbar/index.d.ts +2 -0
  181. package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
  182. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +11 -0
  183. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +1 -0
  184. package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -9
  185. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  186. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +258 -4
  187. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  188. package/dist/types/src/components/index.d.ts +4 -1
  189. package/dist/types/src/components/index.d.ts.map +1 -1
  190. package/dist/types/src/events.d.ts +1 -1
  191. package/dist/types/src/events.d.ts.map +1 -1
  192. package/dist/types/src/execution-graph/execution-graph.d.ts +21 -0
  193. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -0
  194. package/dist/types/src/execution-graph/index.d.ts +2 -0
  195. package/dist/types/src/execution-graph/index.d.ts.map +1 -0
  196. package/dist/types/src/functions/analysis.d.ts +5 -0
  197. package/dist/types/src/functions/analysis.d.ts.map +1 -0
  198. package/dist/types/src/functions/index.d.ts +4 -0
  199. package/dist/types/src/functions/index.d.ts.map +1 -0
  200. package/dist/types/src/functions/list.d.ts +10 -0
  201. package/dist/types/src/functions/list.d.ts.map +1 -0
  202. package/dist/types/src/functions/load.d.ts +8 -0
  203. package/dist/types/src/functions/load.d.ts.map +1 -0
  204. package/dist/types/src/hooks/index.d.ts +10 -3
  205. package/dist/types/src/hooks/index.d.ts.map +1 -1
  206. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +24 -0
  207. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
  208. package/dist/types/src/hooks/useChatProcessor.d.ts +7 -20
  209. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  210. package/dist/types/src/hooks/useChatServices.d.ts +4 -5
  211. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  212. package/dist/types/src/hooks/useContextBinder.d.ts +4 -0
  213. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
  214. package/dist/types/src/hooks/useContextObjects.d.ts +15 -0
  215. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
  216. package/dist/types/src/hooks/useExecutionGraph.d.ts +7 -0
  217. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +1 -0
  218. package/dist/types/src/hooks/useFlush.d.ts +6 -0
  219. package/dist/types/src/hooks/useFlush.d.ts.map +1 -0
  220. package/dist/types/src/hooks/useItemTypes.d.ts +4 -0
  221. package/dist/types/src/hooks/useItemTypes.d.ts.map +1 -0
  222. package/dist/types/src/hooks/useMatcherExtension.d.ts +3 -0
  223. package/dist/types/src/hooks/useMatcherExtension.d.ts.map +1 -0
  224. package/dist/types/src/hooks/useOnline.d.ts +3 -0
  225. package/dist/types/src/hooks/useOnline.d.ts.map +1 -0
  226. package/dist/types/src/hooks/usePresets.d.ts +7 -0
  227. package/dist/types/src/hooks/usePresets.d.ts.map +1 -0
  228. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  229. package/dist/types/src/hooks/useResolveRef.d.ts +4 -0
  230. package/dist/types/src/hooks/useResolveRef.d.ts.map +1 -0
  231. package/dist/types/src/parser/filter-generator.d.ts.map +1 -1
  232. package/dist/types/src/parser/query-parser.d.ts.map +1 -1
  233. package/dist/types/src/parser/types.d.ts.map +1 -1
  234. package/dist/types/src/processor/index.d.ts +3 -0
  235. package/dist/types/src/processor/index.d.ts.map +1 -0
  236. package/dist/types/src/{hooks → processor}/presets.d.ts +2 -2
  237. package/dist/types/src/processor/presets.d.ts.map +1 -0
  238. package/dist/types/src/processor/processor.d.ts +80 -0
  239. package/dist/types/src/processor/processor.d.ts.map +1 -0
  240. package/dist/types/src/processor/processor.test.d.ts +2 -0
  241. package/dist/types/src/processor/processor.test.d.ts.map +1 -0
  242. package/dist/types/src/stories/Chat.stories.d.ts +22 -203
  243. package/dist/types/src/stories/Chat.stories.d.ts.map +1 -1
  244. package/dist/types/src/stories/components/BlueprintContainer.d.ts +4 -0
  245. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +1 -0
  246. package/dist/types/src/stories/components/ChatContainer.d.ts +4 -0
  247. package/dist/types/src/stories/components/ChatContainer.d.ts.map +1 -0
  248. package/dist/types/src/stories/components/CommentsContainer.d.ts +4 -0
  249. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +1 -0
  250. package/dist/types/src/stories/components/GraphContainer.d.ts +6 -0
  251. package/dist/types/src/stories/components/GraphContainer.d.ts.map +1 -0
  252. package/dist/types/src/stories/components/LoggingContainer.d.ts +4 -0
  253. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +1 -0
  254. package/dist/types/src/stories/components/MessageContainer.d.ts +4 -0
  255. package/dist/types/src/stories/components/MessageContainer.d.ts.map +1 -0
  256. package/dist/types/src/stories/components/SurfaceContainer.d.ts +8 -0
  257. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +1 -0
  258. package/dist/types/src/stories/components/TasksContainer.d.ts +4 -0
  259. package/dist/types/src/stories/components/TasksContainer.d.ts.map +1 -0
  260. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +3 -0
  261. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +1 -0
  262. package/dist/types/src/stories/components/index.d.ts +11 -0
  263. package/dist/types/src/stories/components/index.d.ts.map +1 -0
  264. package/dist/types/src/stories/components/types.d.ts +7 -0
  265. package/dist/types/src/stories/components/types.d.ts.map +1 -0
  266. package/dist/types/src/stories/testing/data.d.ts +5 -0
  267. package/dist/types/src/stories/testing/data.d.ts.map +1 -0
  268. package/dist/types/src/stories/testing/index.d.ts +3 -0
  269. package/dist/types/src/stories/testing/index.d.ts.map +1 -0
  270. package/dist/types/src/stories/testing/testing.d.ts +44 -0
  271. package/dist/types/src/stories/testing/testing.d.ts.map +1 -0
  272. package/dist/types/src/testing/index.d.ts +2 -1
  273. package/dist/types/src/testing/index.d.ts.map +1 -1
  274. package/dist/types/src/testing/test-data.d.ts +4 -0
  275. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  276. package/dist/types/src/testing/test-functions.d.ts +5 -2
  277. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  278. package/dist/types/src/testing/test-sequence.d.ts +0 -4
  279. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  280. package/dist/types/src/translations.d.ts +26 -11
  281. package/dist/types/src/translations.d.ts.map +1 -1
  282. package/dist/types/src/types/Assistant.d.ts +42 -0
  283. package/dist/types/src/types/Assistant.d.ts.map +1 -0
  284. package/dist/types/src/types/AssistantAction.d.ts +107 -0
  285. package/dist/types/src/types/AssistantAction.d.ts.map +1 -0
  286. package/dist/types/src/types/defs.d.ts +2 -0
  287. package/dist/types/src/types/defs.d.ts.map +1 -0
  288. package/dist/types/src/types/index.d.ts +3 -1
  289. package/dist/types/src/types/index.d.ts.map +1 -1
  290. package/dist/types/src/types/service.d.ts +9 -6
  291. package/dist/types/src/types/service.d.ts.map +1 -1
  292. package/dist/types/tsconfig.tsbuildinfo +1 -1
  293. package/package.json +99 -81
  294. package/src/AssistantPlugin.tsx +52 -16
  295. package/src/capabilities/ai-service.ts +28 -0
  296. package/src/capabilities/app-graph-builder.ts +41 -48
  297. package/src/capabilities/blueprint-definition.ts +42 -0
  298. package/src/capabilities/capabilities.ts +31 -0
  299. package/src/capabilities/edge-model-resolver.ts +27 -0
  300. package/src/capabilities/index.ts +9 -0
  301. package/src/capabilities/intent-resolver.ts +45 -23
  302. package/src/capabilities/local-model-resolver.ts +32 -0
  303. package/src/capabilities/react-surface.tsx +10 -57
  304. package/src/capabilities/state.ts +20 -0
  305. package/src/capabilities/toolkit.ts +163 -0
  306. package/src/components/AssistantSettings/AssistantSettings.tsx +83 -76
  307. package/src/components/Chat/Chat.tsx +171 -165
  308. package/src/components/Chat/events.ts +7 -0
  309. package/src/components/ChatCompanion.tsx +111 -0
  310. package/src/components/ChatContainer.tsx +19 -13
  311. package/src/components/ChatDialog.tsx +11 -7
  312. package/src/components/ChatProgress/ChatProgress.tsx +68 -0
  313. package/src/components/ChatProgress/index.ts +5 -0
  314. package/src/components/ChatPrompt/ChatActions.tsx +10 -24
  315. package/src/components/ChatPrompt/ChatOptions.tsx +233 -0
  316. package/src/components/ChatPrompt/ChatPresets.tsx +1 -0
  317. package/src/components/ChatPrompt/ChatReferences.tsx +31 -36
  318. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
  319. package/src/components/ChatPrompt/index.ts +1 -1
  320. package/src/components/ChatThread/ChatMessage.tsx +214 -148
  321. package/src/components/ChatThread/ChatThread.stories.tsx +244 -104
  322. package/src/components/ChatThread/ChatThread.tsx +44 -22
  323. package/src/components/ChatThread/Link.tsx +23 -0
  324. package/src/components/ChatThread/ToolBlock.tsx +103 -77
  325. package/src/components/ChatThread/reducers.ts +151 -0
  326. package/src/components/PromptSettings.tsx +1 -0
  327. package/src/components/SequenceContainer.tsx +27 -28
  328. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +5 -4
  329. package/src/components/SequenceEditor/SequenceEditor.tsx +1 -1
  330. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +25 -12
  331. package/src/components/TemplateEditor/TemplateEditor.tsx +14 -47
  332. package/src/components/TemplateEditor/TemplateForm.stories.tsx +12 -5
  333. package/src/components/TemplateEditor/TemplateForm.tsx +3 -1
  334. package/src/components/TemplateEditor/handlebars-extension.ts +165 -0
  335. package/src/components/Toolbar/Toolbar.tsx +20 -0
  336. package/src/components/Toolbar/index.ts +5 -0
  337. package/src/components/Toolbar/useChatToolbarActions.ts +125 -0
  338. package/src/components/Toolbox/Toolbox.stories.tsx +10 -16
  339. package/src/components/Toolbox/Toolbox.tsx +21 -51
  340. package/src/components/index.ts +3 -4
  341. package/src/events.ts +2 -2
  342. package/src/execution-graph/execution-graph.ts +211 -0
  343. package/src/execution-graph/index.ts +5 -0
  344. package/src/functions/analysis.ts +20 -0
  345. package/src/functions/index.ts +7 -0
  346. package/src/functions/list.ts +46 -0
  347. package/src/functions/load.ts +43 -0
  348. package/src/hooks/index.ts +10 -4
  349. package/src/hooks/useBlueprintRegistry.ts +80 -0
  350. package/src/hooks/useChatProcessor.ts +20 -97
  351. package/src/hooks/useChatServices.ts +29 -32
  352. package/src/hooks/useContextBinder.ts +18 -0
  353. package/src/hooks/useContextObjects.ts +58 -0
  354. package/src/hooks/useExecutionGraph.ts +20 -0
  355. package/src/hooks/useFlush.ts +35 -0
  356. package/src/hooks/useItemTypes.ts +37 -0
  357. package/src/hooks/useMatcherExtension.ts +45 -0
  358. package/src/hooks/useOnline.ts +10 -0
  359. package/src/hooks/usePresets.ts +44 -0
  360. package/src/hooks/useReferencesProvider.ts +11 -9
  361. package/src/hooks/useResolveRef.ts +33 -0
  362. package/src/meta.ts +1 -1
  363. package/src/parser/filter-generator.ts +8 -13
  364. package/src/parser/query-parser.ts +1 -1
  365. package/src/parser/types.ts +2 -0
  366. package/src/processor/index.ts +6 -0
  367. package/src/{hooks → processor}/presets.ts +14 -6
  368. package/src/processor/processor.test.ts +77 -0
  369. package/src/processor/processor.ts +304 -0
  370. package/src/queue-logger.ts +5 -5
  371. package/src/stories/Chat.stories.tsx +391 -293
  372. package/src/stories/components/BlueprintContainer.tsx +32 -0
  373. package/src/stories/components/ChatContainer.tsx +57 -0
  374. package/src/stories/components/CommentsContainer.tsx +25 -0
  375. package/src/stories/components/GraphContainer.tsx +118 -0
  376. package/src/stories/components/LoggingContainer.tsx +21 -0
  377. package/src/stories/components/MessageContainer.tsx +27 -0
  378. package/src/stories/components/SurfaceContainer.tsx +52 -0
  379. package/src/stories/components/TasksContainer.tsx +49 -0
  380. package/src/stories/components/TokenManagerContainer.tsx +14 -0
  381. package/src/stories/components/index.ts +15 -0
  382. package/src/stories/components/types.ts +11 -0
  383. package/src/stories/testing/data.ts +142 -0
  384. package/src/stories/testing/index.ts +6 -0
  385. package/src/stories/testing/testing.tsx +254 -0
  386. package/src/testing/index.ts +2 -1
  387. package/src/testing/test-data.ts +109 -0
  388. package/src/testing/test-functions.ts +8 -3
  389. package/src/testing/test-sequence.ts +2 -27
  390. package/src/translations.ts +30 -11
  391. package/src/types/Assistant.ts +61 -0
  392. package/src/types/AssistantAction.ts +62 -0
  393. package/src/types/defs.ts +5 -0
  394. package/src/types/index.ts +4 -1
  395. package/src/vite-env.d.ts +30 -0
  396. package/dist/lib/browser/ChatContainer-RP3QEXYX.mjs.map +0 -7
  397. package/dist/lib/browser/ChatDialog-ZVLXFHEY.mjs.map +0 -7
  398. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
  399. package/dist/lib/browser/app-graph-builder-XSEOKJLG.mjs.map +0 -7
  400. package/dist/lib/browser/chunk-63GG6U6D.mjs +0 -2226
  401. package/dist/lib/browser/chunk-63GG6U6D.mjs.map +0 -7
  402. package/dist/lib/browser/chunk-7W7LHTRH.mjs +0 -171
  403. package/dist/lib/browser/chunk-7W7LHTRH.mjs.map +0 -7
  404. package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
  405. package/dist/lib/browser/chunk-KFXSBNZR.mjs +0 -89
  406. package/dist/lib/browser/chunk-KFXSBNZR.mjs.map +0 -7
  407. package/dist/lib/browser/chunk-LERGF5YG.mjs.map +0 -7
  408. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs +0 -75
  409. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs.map +0 -7
  410. package/dist/lib/browser/react-surface-3GYEHQRP.mjs.map +0 -7
  411. package/dist/lib/node-esm/ChatContainer-W3W6FWV3.mjs.map +0 -7
  412. package/dist/lib/node-esm/ChatDialog-QW4JRKVO.mjs.map +0 -7
  413. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
  414. package/dist/lib/node-esm/app-graph-builder-PANCJUHV.mjs.map +0 -7
  415. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs +0 -2227
  416. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs.map +0 -7
  417. package/dist/lib/node-esm/chunk-MS3PJARN.mjs.map +0 -7
  418. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
  419. package/dist/lib/node-esm/chunk-VIIMA3XQ.mjs +0 -90
  420. package/dist/lib/node-esm/chunk-VIIMA3XQ.mjs.map +0 -7
  421. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs +0 -172
  422. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs.map +0 -7
  423. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs +0 -76
  424. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs.map +0 -7
  425. package/dist/lib/node-esm/react-surface-QDQWJ7FZ.mjs.map +0 -7
  426. package/dist/types/src/capability-definitions.d.ts +0 -7
  427. package/dist/types/src/capability-definitions.d.ts.map +0 -1
  428. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
  429. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
  430. package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
  431. package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
  432. package/dist/types/src/hooks/chat-processor.d.ts +0 -86
  433. package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
  434. package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
  435. package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
  436. package/dist/types/src/hooks/presets.d.ts.map +0 -1
  437. package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
  438. package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
  439. package/dist/types/src/tools/function.d.ts +0 -5
  440. package/dist/types/src/tools/function.d.ts.map +0 -1
  441. package/dist/types/src/tools/index.d.ts +0 -3
  442. package/dist/types/src/tools/index.d.ts.map +0 -1
  443. package/dist/types/src/tools/openapi.d.ts +0 -10
  444. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  445. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  446. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  447. package/dist/types/src/types/schema.d.ts +0 -120
  448. package/dist/types/src/types/schema.d.ts.map +0 -1
  449. package/src/capability-definitions.ts +0 -15
  450. package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
  451. package/src/components/ChatThread/reducer.ts +0 -52
  452. package/src/hooks/chat-processor.test.ts +0 -16
  453. package/src/hooks/chat-processor.ts +0 -314
  454. package/src/hooks/useBlueprints.ts +0 -57
  455. package/src/shims.d.ts +0 -8
  456. package/src/tools/function.ts +0 -46
  457. package/src/tools/index.ts +0 -6
  458. package/src/tools/openapi.test.ts +0 -217
  459. package/src/tools/openapi.ts +0 -338
  460. package/src/types/schema.ts +0 -108
  461. package/src/typings.d.ts +0 -9
  462. /package/dist/lib/{node-esm/BlueprintContainer-RGTMNLNX.mjs.map → browser/BlueprintContainer-OWUSKPRK.mjs.map} +0 -0
@@ -4,62 +4,113 @@
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';
10
+ import { EXA_API_KEY } from '@dxos/ai/testing';
11
+ import { Capabilities, useCapabilities } from '@dxos/app-framework';
12
+ import { AiContextBinder } from '@dxos/assistant';
13
+ import { LINEAR_BLUEPRINT, RESEARCH_BLUEPRINT, ResearchDataTypes, ResearchGraph } from '@dxos/assistant-testing';
20
14
  import { Blueprint } from '@dxos/blueprints';
21
15
  import { Filter, Obj, Ref } from '@dxos/echo';
22
- import { invariant } from '@dxos/invariant';
23
16
  import { log } from '@dxos/log';
24
- import { ChessPlugin } from '@dxos/plugin-chess';
25
- import { ClientPlugin } from '@dxos/plugin-client';
17
+ import { Board, BoardPlugin } from '@dxos/plugin-board';
18
+ import { Chess, ChessPlugin } from '@dxos/plugin-chess';
26
19
  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';
20
+ import { Mailbox } from '@dxos/plugin-inbox/types';
21
+ import { Map, MapPlugin } from '@dxos/plugin-map';
22
+ import { createLocationSchema } from '@dxos/plugin-map/testing';
23
+ import { Markdown, MarkdownPlugin } from '@dxos/plugin-markdown';
31
24
  import { TablePlugin } from '@dxos/plugin-table';
25
+ import { ThreadPlugin } from '@dxos/plugin-thread';
26
+ import { TokenManagerPlugin } from '@dxos/plugin-token-manager';
32
27
  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';
28
+ import { Transcript } from '@dxos/plugin-transcription/types';
29
+ import { useClient } from '@dxos/react-client';
30
+ import { useSpace } from '@dxos/react-client/echo';
31
+ import { useAsyncEffect } from '@dxos/react-ui';
32
+ import { Table } from '@dxos/react-ui-table/types';
33
+ import { DataType } from '@dxos/schema';
34
+ import { render } from '@dxos/storybook-utils';
35
+ import { isNonNullable, trim } from '@dxos/util';
36
+
37
+ import { BLUEPRINT_KEY } from '../capabilities';
38
+ import { createTestMailbox, createTestTranscription } from '../testing';
52
39
  import { translations } from '../translations';
53
40
  import { Assistant } from '../types';
54
41
 
55
- //
56
- // Story container
57
- //
42
+ import {
43
+ BlueprintContainer,
44
+ ChatContainer,
45
+ CommentsContainer,
46
+ type ComponentProps,
47
+ GraphContainer,
48
+ LoggingContainer,
49
+ MessageContainer,
50
+ SurfaceContainer,
51
+ TasksContainer,
52
+ TokenManagerContainer,
53
+ } from './components';
54
+ import { accessTokensFromEnv, addTestData, config, getDecorators, testTypes } from './testing';
55
+
56
+ const panelClassNames = 'flex flex-col overflow-hidden bg-baseSurface rounded border border-separator';
57
+
58
+ const DefaultStory = ({
59
+ debug = true,
60
+ components,
61
+ blueprints = [],
62
+ }: {
63
+ debug?: boolean;
64
+ components: (FC<ComponentProps> | FC<ComponentProps>[])[];
65
+ blueprints?: string[];
66
+ }) => {
67
+ const client = useClient();
68
+ const space = useSpace();
69
+
70
+ const blueprintsDefinitions = useCapabilities(Capabilities.BlueprintDefinition);
71
+ useAsyncEffect(async () => {
72
+ if (!space) {
73
+ return;
74
+ }
75
+ const { objects: chats = [] } = await space.db.query(Filter.type(Assistant.Chat)).run();
76
+ const chat = chats[0];
77
+ if (!chat) {
78
+ return;
79
+ }
80
+
81
+ // Add blueprints to context.
82
+ const binder = new AiContextBinder(await chat.queue.load());
83
+ const registry = new Blueprint.Registry(blueprintsDefinitions);
84
+ const blueprintObjects = blueprints
85
+ .map((key) => {
86
+ const blueprint = registry.getByKey(key);
87
+ if (blueprint) {
88
+ return space.db.add(Obj.clone(blueprint));
89
+ }
90
+ })
91
+ .filter(isNonNullable);
92
+ await binder.bind({ blueprints: blueprintObjects.map((blueprint) => Ref.make(blueprint)) });
93
+ }, [space, blueprints, blueprintsDefinitions]);
94
+
95
+ const handleEvent = useCallback<NonNullable<ComponentProps['onEvent']>>((event) => {
96
+ log.info('event', { event });
97
+ switch (event) {
98
+ case 'reset': {
99
+ void client?.reset().then(() => {
100
+ document.location.reload();
101
+ });
102
+ break;
103
+ }
104
+ }
105
+ }, []);
106
+
107
+ if (!space) {
108
+ return null;
109
+ }
58
110
 
59
- const DefaultStory = ({ components }: { components: (FC | FC[])[] }) => {
60
111
  return (
61
112
  <div
62
- className={mx('grid grid-cols gap-2 m-2')}
113
+ className='grid grid-cols gap-2 m-2'
63
114
  style={{ gridTemplateColumns: `repeat(${components.length}, minmax(0, 40rem))` }}
64
115
  >
65
116
  {components.map((Component, index) =>
@@ -70,14 +121,14 @@ const DefaultStory = ({ components }: { components: (FC | FC[])[] }) => {
70
121
  style={{ gridTemplateRows: `repeat(${Component.length}, 1fr)` }}
71
122
  >
72
123
  {Component.map((Component, index) => (
73
- <div key={index} className='flex flex-col overflow-hidden bg-baseSurface border border-separator'>
74
- <Component />
124
+ <div key={index} className={panelClassNames}>
125
+ <Component space={space} debug={debug} onEvent={handleEvent} />
75
126
  </div>
76
127
  ))}
77
128
  </div>
78
129
  ) : (
79
- <div key={index} className='flex flex-col overflow-hidden bg-baseSurface border border-separator'>
80
- <Component />
130
+ <div key={index} className={panelClassNames}>
131
+ <Component space={space} debug={debug} onEvent={handleEvent} />
81
132
  </div>
82
133
  ),
83
134
  )}
@@ -85,287 +136,334 @@ const DefaultStory = ({ components }: { components: (FC | FC[])[] }) => {
85
136
  );
86
137
  };
87
138
 
88
- //
89
- // Components
90
- //
91
-
92
- const ChatContainer = () => {
93
- const { t } = useTranslation(meta.id);
94
- const space = useSpace();
139
+ const storybook: Meta<typeof DefaultStory> = {
140
+ title: 'plugins/plugin-assistant/Chat',
141
+ render: render(DefaultStory),
142
+ parameters: {
143
+ translations,
144
+ controls: { disable: true },
145
+ },
146
+ };
95
147
 
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
- );
148
+ export default storybook;
135
149
 
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]);
150
+ type Story = StoryObj<typeof storybook>;
145
151
 
146
- const handleBranchChat = useCallback(() => {}, [space]);
152
+ //
153
+ // Stories
154
+ //
147
155
 
148
- if (!chat || !processor) {
149
- return null;
156
+ const MARKDOWN_DOCUMENT = trim`
157
+ # Hello, world!
158
+
159
+ This is a test document that contains Markdown content. Markdown is a lightweight markup language for writing formatted text in plain text form. Its goal is to be easy to read and write in raw form, easy to convert to HTML.
160
+
161
+ Markdown’s simplicity makes it highly adaptable: it can be written in any text editor, stored in plain .md files, and rendered into HTML, PDF, or other formats with converters. Because of this portability, it’s widely used in software documentation, static site generators, technical blogging, and collaborative platforms like GitHub and Notion.
162
+
163
+ Many applications extend the core syntax with extras (e.g., tables, task lists, math notation), but the core idea remains the same—clean, minimal markup that stays readable even without rendering.
164
+ `;
165
+
166
+ const STYLE_GUIDE = trim`
167
+ # Style Guide
168
+ - Use short, simple sentences.
169
+ - Organize content with headings and bullet points.
170
+ - Avoid jargon and explain technical terms.
171
+ - Use active voice whenever possible.
172
+ - Highlight key points in bold.
173
+ - Keep paragraphs brief and focused on one idea.
174
+ - Proofread for clarity and correctness.
175
+ `;
176
+
177
+ const addSpellingMistakes = (text: string, n: number): string => {
178
+ const words = text.split(' ');
179
+ for (let i = 0; i < n; i++) {
180
+ const idx = Math.floor(Math.random() * words.length);
181
+ const word = words[idx];
182
+ const charIdx = Math.floor(Math.random() * word.length);
183
+ const typoChar = String.fromCharCode(word.charCodeAt(charIdx) + 1);
184
+ words[idx] = word.slice(0, charIdx) + typoChar + word.slice(charIdx + 1);
150
185
  }
151
186
 
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
- );
187
+ return words.join(' ');
178
188
  };
179
189
 
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
- );
190
+ export const Default: Story = {
191
+ decorators: getDecorators({
192
+ plugins: [MarkdownPlugin()],
193
+ config: config.remote,
194
+ }),
195
+ args: {
196
+ components: [ChatContainer, SurfaceContainer],
197
+ },
208
198
  };
209
199
 
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
- );
200
+ // Test with prompt: Propose changes to my document based on the style guide.
201
+ export const WithDocument: Story = {
202
+ decorators: getDecorators({
203
+ plugins: [MarkdownPlugin(), ThreadPlugin()],
204
+ config: config.remote, // TODO(burdon): Issue making persistent.
205
+ onInit: async ({ space, binder }) => {
206
+ const doc = space.db.add(
207
+ Markdown.makeDocument({
208
+ name: 'My Document',
209
+ content: addSpellingMistakes(MARKDOWN_DOCUMENT, 2),
210
+ }),
211
+ );
212
+ const styleGuide = space.db.add(
213
+ Markdown.makeDocument({
214
+ name: 'Style Guide',
215
+ content: STYLE_GUIDE,
216
+ }),
217
+ );
218
+ await binder.bind({ objects: [Ref.make(doc), Ref.make(styleGuide)] });
219
+ },
220
+ }),
221
+ args: {
222
+ components: [ChatContainer, [SurfaceContainer, CommentsContainer, LoggingContainer]],
223
+ blueprints: [BLUEPRINT_KEY, 'dxos.org/blueprint/markdown'],
224
+ },
226
225
  };
227
226
 
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 },
227
+ export const WithBlueprints: Story = {
228
+ decorators: getDecorators({
229
+ plugins: [InboxPlugin(), MarkdownPlugin(), TablePlugin()],
230
+ config: config.remote,
231
+ onInit: async ({ space, binder }) => {
232
+ const object = space.db.add(Markdown.makeDocument({ name: 'Tasks' }));
233
+ await binder.bind({ objects: [Ref.make(object)] });
234
+ },
235
+ }),
236
+ args: {
237
+ components: [ChatContainer, [TasksContainer, BlueprintContainer]],
239
238
  },
240
- } satisfies Meta<typeof DefaultStory>;
239
+ };
241
240
 
242
- export default storybook;
241
+ export const WithChess: Story = {
242
+ decorators: getDecorators({
243
+ plugins: [ChessPlugin()],
244
+ config: config.remote,
245
+ types: [Chess.Game],
246
+ onInit: async ({ space, binder }) => {
247
+ // TODO(burdon): Add player DID (for user and assistant).
248
+ const object = space.db.add(
249
+ Chess.makeGame({
250
+ name: 'Challenge',
251
+ pgn: [
252
+ '1. e4 e5',
253
+ '2. Nf3 Nc6',
254
+ '3. Bc4 Bc5',
255
+ '4. c3 Nf6',
256
+ '5. d4 exd4',
257
+ '6. cxd4 Bb4+',
258
+ '7. Nc3 d5',
259
+ '8. exd5 Nxd5',
260
+ '9. O-O Be6',
261
+ '10. Qb3 Na5',
262
+ '11. Qa4+ c6',
263
+ '12. Bxd5 Bxc3',
264
+ '13. Bxe6 fxe6',
265
+ '*',
266
+ ].join(' '),
267
+ }),
268
+ );
269
+ await binder.bind({ objects: [Ref.make(object)] });
270
+ },
271
+ }),
272
+ args: {
273
+ components: [ChatContainer, [SurfaceContainer, LoggingContainer]],
274
+ blueprints: [BLUEPRINT_KEY, 'dxos.org/blueprint/chess'],
275
+ },
276
+ };
243
277
 
244
- type Story = StoryObj<typeof storybook>;
278
+ // Test with prompt: Summarize my mailbox and write the summary in a new document.
279
+ export const WithMail: Story = {
280
+ decorators: getDecorators({
281
+ plugins: [InboxPlugin(), MarkdownPlugin(), ThreadPlugin()],
282
+ config: config.remote,
283
+ types: [Mailbox.Mailbox],
284
+ onInit: async ({ space, binder }) => {
285
+ const queue = space.queues.create();
286
+ const messages = createTestMailbox();
287
+ await queue.append(messages);
288
+ const mailbox = space.db.add(Mailbox.make({ name: 'Mailbox', queue: queue.dxn }));
289
+ await binder.bind({ objects: [Ref.make(mailbox)] });
290
+ },
291
+ }),
292
+ args: {
293
+ components: [ChatContainer, [SurfaceContainer, MessageContainer]],
294
+ blueprints: [BLUEPRINT_KEY, 'dxos.org/blueprint/inbox'],
295
+ },
296
+ };
245
297
 
246
- //
247
- // Decorators
248
- //
298
+ export const WithGmail: Story = {
299
+ decorators: getDecorators({
300
+ plugins: [InboxPlugin(), TokenManagerPlugin()],
301
+ config: config.remote,
302
+ types: [Mailbox.Mailbox],
303
+ onInit: async ({ space, binder }) => {
304
+ const queue = space.queues.create();
305
+ const mailbox = space.db.add(Mailbox.make({ name: 'Mailbox', queue: queue.dxn }));
306
+ await binder.bind({ objects: [Ref.make(mailbox)] });
307
+ },
308
+ }),
309
+ args: {
310
+ components: [ChatContainer, [SurfaceContainer, MessageContainer, TokenManagerContainer]],
311
+ blueprints: [BLUEPRINT_KEY, 'dxos.org/blueprint/inbox'],
312
+ },
313
+ };
249
314
 
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
- },
315
+ // Test with prompt: Create 10 locations.
316
+ export const WithMap: Story = {
317
+ decorators: getDecorators({
318
+ plugins: [MapPlugin(), TablePlugin()],
319
+ config: config.remote,
320
+ types: [DataType.View, Map.Map, Table.Table],
321
+ onInit: async ({ space, binder }) => {
322
+ const [schema] = await space.db.schemaRegistry.register([createLocationSchema()]);
323
+ const { view: tableView } = await Table.makeView({ name: 'Table', space, typename: schema.typename });
324
+ const { view: mapView } = await Map.makeView({
325
+ name: 'Map',
326
+ space,
327
+ typename: schema.typename,
328
+ pivotFieldName: 'location',
329
+ });
330
+ space.db.add(tableView);
331
+ space.db.add(mapView);
332
+ await binder.bind({ objects: [Ref.make(tableView), Ref.make(mapView)] });
260
333
  },
334
+ }),
335
+ args: {
336
+ components: [ChatContainer, SurfaceContainer],
337
+ blueprints: [BLUEPRINT_KEY, 'dxos.org/blueprint/map'],
261
338
  },
262
- });
339
+ };
263
340
 
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])],
341
+ export const WithTrip: Story = {
342
+ decorators: getDecorators({
343
+ plugins: [MarkdownPlugin(), MapPlugin()],
344
+ config: config.remote,
345
+ types: [Map.Map],
346
+ onInit: async ({ space, binder }) => {
347
+ // TODO(burdon): Table.
348
+ {
349
+ const object = space.db.add(Map.make({ name: 'Trip' }));
350
+ await binder.bind({ objects: [Ref.make(object)] });
351
+ }
352
+ {
353
+ const object = space.db.add(
354
+ Markdown.makeDocument({
355
+ name: 'Itinerary',
356
+ content: trim`
357
+ # Itinerary
358
+
359
+ ## Day 1
360
+ - Visit the Sagrada Familia
361
+ - Visit the Park Güell
362
+ - Visit the Casa Batlló
363
+
364
+ ## Day 2
365
+ - Visit the Eiffel Tower
366
+ - Visit the Louvre
367
+ - Visit the Musée d'Orsay
368
+ `,
369
+ }),
370
+ );
371
+ await binder.bind({ objects: [Ref.make(object)] });
372
+ }
373
+ {
374
+ const object = space.db.add(
375
+ Markdown.makeDocument({
376
+ name: 'Barcelona',
377
+ content: trim`
378
+ # Barcelona
379
+
380
+ Barcelona is the capital and most populous city of Catalonia, an autonomous community in northeastern Spain.
381
+ It is located on the Mediterranean coast, on the banks of the Llobregat River, in the comarca of the Baix Llobregat.
382
+ The city is known for its rich history, vibrant culture, and stunning architecture, including the Sagrada Familia, Park Güell, and Casa Batlló.
383
+ `,
384
+ }),
385
+ );
386
+ await binder.bind({ objects: [Ref.make(object)] });
387
+ }
388
+ },
320
389
  }),
321
- withTheme,
322
- withLayout({
323
- fullscreen: true,
324
- classNames: 'bg-deckSurface justify-center',
390
+ args: {
391
+ components: [ChatContainer, SurfaceContainer],
392
+ },
393
+ };
394
+
395
+ export const WithBoard: Story = {
396
+ decorators: getDecorators({
397
+ plugins: [BoardPlugin()],
398
+ config: config.remote,
399
+ types: [Board.Board],
400
+ onInit: async ({ space, binder }) => {
401
+ const object = space.db.add(Board.makeBoard());
402
+ await binder.bind({ objects: [Ref.make(object)] });
403
+ },
325
404
  }),
326
- ];
405
+ args: {
406
+ debug: true,
407
+ components: [ChatContainer, SurfaceContainer],
408
+ },
409
+ };
327
410
 
328
- //
329
- // Stories
330
- //
411
+ export const WithResearch: Story = {
412
+ decorators: getDecorators({
413
+ plugins: [MarkdownPlugin(), TablePlugin()],
414
+ config: config.persistent,
415
+ types: [...ResearchDataTypes, ResearchGraph],
416
+ accessTokens: [Obj.make(DataType.AccessToken, { source: 'exa.ai', token: EXA_API_KEY })],
417
+ }),
418
+ args: {
419
+ components: [ChatContainer, [GraphContainer, LoggingContainer]],
420
+ blueprints: [RESEARCH_BLUEPRINT.key],
421
+ },
422
+ };
331
423
 
332
- export const Default = {
424
+ export const WithSearch: Story = {
333
425
  decorators: getDecorators({
334
- config: remoteConfig,
426
+ config: config.remote,
427
+ types: testTypes,
428
+ onInit: async ({ space }) => {
429
+ await addTestData(space);
430
+ },
335
431
  }),
336
432
  args: {
337
- components: [ChatContainer],
433
+ components: [ChatContainer, [GraphContainer, LoggingContainer]],
338
434
  },
339
- } satisfies Story;
435
+ };
340
436
 
341
- export const WithDocument = {
437
+ export const WithTranscription: Story = {
342
438
  decorators: getDecorators({
343
- config: remoteConfig,
344
- plugins: [MarkdownPlugin()],
439
+ plugins: [TranscriptionPlugin()],
440
+ config: config.remote,
441
+ types: [Transcript.Transcript],
442
+ onInit: async ({ space, binder }) => {
443
+ const queue = space.queues.create();
444
+ const messages = createTestTranscription();
445
+ await queue.append(messages);
446
+ const transcript = space.db.add(Transcript.makeTranscript(queue.dxn));
447
+ await binder.bind({ objects: [Ref.make(transcript)] });
448
+ },
345
449
  }),
346
450
  args: {
347
- components: [ChatContainer, DocumentContainer],
451
+ components: [ChatContainer, [SurfaceContainer, LoggingContainer]],
452
+ blueprints: [BLUEPRINT_KEY, 'dxos.org/blueprint/transcription'],
348
453
  },
349
- } satisfies Story;
454
+ };
350
455
 
351
- export const WithBlueprints = {
456
+ export const WithLinearSync: Story = {
352
457
  decorators: getDecorators({
353
- config: remoteConfig,
354
- plugins: [ChessPlugin(), InboxPlugin(), MapPlugin(), MarkdownPlugin(), TablePlugin()],
355
- blueprints: [PLANNING_BLUEPRINT],
356
- context: true,
458
+ plugins: [],
459
+ config: config.remote,
460
+ types: [DataType.Task, DataType.Person, DataType.Project],
461
+ accessTokens: accessTokensFromEnv({
462
+ 'linear.app': import.meta.env.VITE_LINEAR_API_KEY,
463
+ }),
357
464
  }),
358
465
  args: {
359
- components: [ChatContainer, [DocumentContainer, BlueprintContainer]],
466
+ components: [ChatContainer, [GraphContainer]],
467
+ blueprints: [LINEAR_BLUEPRINT.key],
360
468
  },
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;
469
+ };