@dxos/plugin-assistant 0.8.4-main.2e9d522 → 0.8.4-main.406dc2a

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 (461) hide show
  1. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs +28 -0
  2. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-BDZ55ZRF.mjs +150 -0
  4. package/dist/lib/browser/ChatCompanion-BDZ55ZRF.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-M3IHQLRS.mjs → ChatContainer-RYGNN73X.mjs} +33 -14
  6. package/dist/lib/browser/ChatContainer-RYGNN73X.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-X6VN6QZI.mjs → ChatDialog-MVHH2U66.mjs} +26 -12
  8. package/dist/lib/browser/ChatDialog-MVHH2U66.mjs.map +7 -0
  9. package/dist/lib/browser/{SequenceContainer-3UDVKWPA.mjs → SequenceContainer-2FEWMQGW.mjs} +7 -19
  10. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +19 -0
  12. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +7 -0
  13. package/dist/lib/browser/app-graph-builder-2U7SLCRX.mjs +154 -0
  14. package/dist/lib/browser/app-graph-builder-2U7SLCRX.mjs.map +7 -0
  15. package/dist/lib/browser/blueprint-definition-NSJARW5U.mjs +12 -0
  16. package/dist/lib/browser/blueprint-definition-NSJARW5U.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-2CE2KPKZ.mjs +175 -0
  18. package/dist/lib/browser/chunk-2CE2KPKZ.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-43I2LR6O.mjs +216 -0
  20. package/dist/lib/browser/chunk-43I2LR6O.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-5EGXHCAZ.mjs +16 -0
  22. package/dist/lib/browser/chunk-5EGXHCAZ.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-5RICKAMN.mjs +18 -0
  24. package/dist/lib/browser/chunk-5RICKAMN.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-CQ7UHYTT.mjs +296 -0
  26. package/dist/lib/browser/chunk-CQ7UHYTT.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-FP56WB24.mjs +212 -0
  28. package/dist/lib/browser/chunk-FP56WB24.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  30. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-JZRZVB2A.mjs +170 -0
  32. package/dist/lib/browser/chunk-JZRZVB2A.mjs.map +7 -0
  33. package/dist/lib/browser/chunk-WRJGOT5P.mjs +1794 -0
  34. package/dist/lib/browser/chunk-WRJGOT5P.mjs.map +7 -0
  35. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
  36. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
  37. package/dist/lib/browser/index.mjs +193 -75
  38. package/dist/lib/browser/index.mjs.map +4 -4
  39. package/dist/lib/browser/intent-resolver-3GOJMBXJ.mjs +114 -0
  40. package/dist/lib/browser/intent-resolver-3GOJMBXJ.mjs.map +7 -0
  41. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +17 -0
  42. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +7 -0
  43. package/dist/lib/browser/meta.json +1 -1
  44. package/dist/lib/browser/react-surface-FTKCE6GG.mjs +107 -0
  45. package/dist/lib/browser/react-surface-FTKCE6GG.mjs.map +7 -0
  46. package/dist/lib/browser/{settings-2DGP3UTS.mjs → settings-HBF32KV6.mjs} +8 -7
  47. package/dist/lib/{node-esm/settings-47RYZOU4.mjs.map → browser/settings-HBF32KV6.mjs.map} +1 -1
  48. package/dist/lib/browser/state-LXTS54DI.mjs +21 -0
  49. package/dist/lib/browser/state-LXTS54DI.mjs.map +7 -0
  50. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs +199 -0
  51. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs.map +7 -0
  52. package/dist/lib/browser/types/index.mjs +7 -4
  53. package/dist/lib/node-esm/{TemplateContainer-A3NAQCZE.mjs → BlueprintContainer-4MKN6ZRB.mjs} +12 -11
  54. package/dist/lib/node-esm/BlueprintContainer-4MKN6ZRB.mjs.map +7 -0
  55. package/dist/lib/node-esm/ChatCompanion-XFNXVZIP.mjs +151 -0
  56. package/dist/lib/node-esm/ChatCompanion-XFNXVZIP.mjs.map +7 -0
  57. package/dist/lib/node-esm/{ChatContainer-VZT74PO2.mjs → ChatContainer-UTJGCQXF.mjs} +33 -14
  58. package/dist/lib/node-esm/ChatContainer-UTJGCQXF.mjs.map +7 -0
  59. package/dist/lib/node-esm/{ChatDialog-RJ6FDX4Q.mjs → ChatDialog-QEYZ4IOV.mjs} +26 -12
  60. package/dist/lib/node-esm/ChatDialog-QEYZ4IOV.mjs.map +7 -0
  61. package/dist/lib/node-esm/{SequenceContainer-RQQH5XOC.mjs → SequenceContainer-PGGJUQ46.mjs} +7 -19
  62. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs.map +7 -0
  63. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
  64. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
  65. package/dist/lib/node-esm/app-graph-builder-OKNLR7H2.mjs +155 -0
  66. package/dist/lib/node-esm/app-graph-builder-OKNLR7H2.mjs.map +7 -0
  67. package/dist/lib/node-esm/blueprint-definition-WD2IVMAI.mjs +13 -0
  68. package/dist/lib/node-esm/blueprint-definition-WD2IVMAI.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-73ABYRYX.mjs +20 -0
  70. package/dist/lib/node-esm/chunk-73ABYRYX.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-DSE2IILK.mjs +217 -0
  72. package/dist/lib/node-esm/chunk-DSE2IILK.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-E2WXZND7.mjs +297 -0
  74. package/dist/lib/node-esm/chunk-E2WXZND7.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  76. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs +171 -0
  78. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-TNR46C3L.mjs +213 -0
  80. package/dist/lib/node-esm/chunk-TNR46C3L.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs +177 -0
  82. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-UFKLCEAE.mjs +1795 -0
  84. package/dist/lib/node-esm/chunk-UFKLCEAE.mjs.map +7 -0
  85. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs +17 -0
  86. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs.map +7 -0
  87. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
  88. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
  89. package/dist/lib/node-esm/index.mjs +193 -75
  90. package/dist/lib/node-esm/index.mjs.map +4 -4
  91. package/dist/lib/node-esm/intent-resolver-6XLVTRDJ.mjs +115 -0
  92. package/dist/lib/node-esm/intent-resolver-6XLVTRDJ.mjs.map +7 -0
  93. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +18 -0
  94. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +7 -0
  95. package/dist/lib/node-esm/meta.json +1 -1
  96. package/dist/lib/node-esm/react-surface-K7ZXQLAP.mjs +108 -0
  97. package/dist/lib/node-esm/react-surface-K7ZXQLAP.mjs.map +7 -0
  98. package/dist/lib/node-esm/{settings-47RYZOU4.mjs → settings-CWP6MTWP.mjs} +8 -7
  99. package/dist/lib/{browser/settings-2DGP3UTS.mjs.map → node-esm/settings-CWP6MTWP.mjs.map} +1 -1
  100. package/dist/lib/node-esm/state-BO6GUFLB.mjs +22 -0
  101. package/dist/lib/node-esm/state-BO6GUFLB.mjs.map +7 -0
  102. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs +200 -0
  103. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs.map +7 -0
  104. package/dist/lib/node-esm/types/index.mjs +7 -4
  105. package/dist/types/src/AssistantPlugin.d.ts +1 -1
  106. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/ai-service.d.ts +4 -0
  108. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  110. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/blueprint-definition.d.ts +7 -0
  112. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/capabilities.d.ts +11 -0
  114. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/edge-model-resolver.d.ts +4 -0
  116. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/index.d.ts +11 -3
  118. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  120. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  121. package/dist/types/src/capabilities/local-model-resolver.d.ts +10 -0
  122. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  124. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  125. package/dist/types/src/capabilities/settings.d.ts +1 -1
  126. package/dist/types/src/capabilities/state.d.ts +4 -0
  127. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  128. package/dist/types/src/capabilities/toolkit.d.ts +4 -0
  129. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  130. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  131. package/dist/types/src/components/BlueprintContainer.d.ts +8 -0
  132. package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -0
  133. package/dist/types/src/components/Chat/Chat.d.ts +21 -17
  134. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  135. package/dist/types/src/components/Chat/events.d.ts +5 -0
  136. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  137. package/dist/types/src/components/ChatCompanion.d.ts +13 -0
  138. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -0
  139. package/dist/types/src/components/ChatContainer.d.ts +4 -4
  140. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  141. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  142. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +7 -0
  143. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -0
  144. package/dist/types/src/components/ChatProgress/index.d.ts +2 -0
  145. package/dist/types/src/components/ChatProgress/index.d.ts.map +1 -0
  146. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  147. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +20 -0
  148. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
  149. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  150. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +4 -5
  151. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  152. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
  153. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  154. package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
  155. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  156. package/dist/types/src/components/ChatThread/ChatThread.d.ts +12 -7
  157. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  158. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +116 -75
  159. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  160. package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
  161. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
  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/ChatThread/registry.d.ts +11 -0
  165. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  166. package/dist/types/src/components/ChatThread/sync.d.ts +36 -0
  167. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  168. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  169. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  170. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  171. package/dist/types/src/components/SequenceContainer.d.ts.map +1 -1
  172. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +1 -1
  173. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -1
  174. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +264 -3
  175. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -1
  176. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
  177. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  178. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +262 -7
  179. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  180. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +3 -2
  181. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  182. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +259 -2
  183. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts +12 -0
  185. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +1 -0
  186. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +19 -0
  187. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  188. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  189. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  190. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  191. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  192. package/dist/types/src/components/Toolbar/Toolbar.d.ts +5 -0
  193. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
  194. package/dist/types/src/components/Toolbar/index.d.ts +2 -0
  195. package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
  196. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +11 -0
  197. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +1 -0
  198. package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -9
  199. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  200. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +262 -5
  201. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  202. package/dist/types/src/components/index.d.ts +5 -2
  203. package/dist/types/src/components/index.d.ts.map +1 -1
  204. package/dist/types/src/events.d.ts +1 -1
  205. package/dist/types/src/events.d.ts.map +1 -1
  206. package/dist/types/src/functions/analysis.d.ts +5 -0
  207. package/dist/types/src/functions/analysis.d.ts.map +1 -0
  208. package/dist/types/src/functions/index.d.ts +4 -0
  209. package/dist/types/src/functions/index.d.ts.map +1 -0
  210. package/dist/types/src/functions/list.d.ts +10 -0
  211. package/dist/types/src/functions/list.d.ts.map +1 -0
  212. package/dist/types/src/functions/load.d.ts +8 -0
  213. package/dist/types/src/functions/load.d.ts.map +1 -0
  214. package/dist/types/src/hooks/index.d.ts +7 -3
  215. package/dist/types/src/hooks/index.d.ts.map +1 -1
  216. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +25 -0
  217. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
  218. package/dist/types/src/hooks/useChatProcessor.d.ts +8 -21
  219. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  220. package/dist/types/src/hooks/useChatServices.d.ts +5 -6
  221. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  222. package/dist/types/src/hooks/useContextBinder.d.ts +4 -0
  223. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
  224. package/dist/types/src/hooks/useContextObjects.d.ts +15 -0
  225. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
  226. package/dist/types/src/hooks/useFlush.d.ts +6 -0
  227. package/dist/types/src/hooks/useFlush.d.ts.map +1 -0
  228. package/dist/types/src/hooks/useItemTypes.d.ts +4 -0
  229. package/dist/types/src/hooks/useItemTypes.d.ts.map +1 -0
  230. package/dist/types/src/hooks/useOnline.d.ts +3 -0
  231. package/dist/types/src/hooks/useOnline.d.ts.map +1 -0
  232. package/dist/types/src/hooks/usePresets.d.ts +7 -0
  233. package/dist/types/src/hooks/usePresets.d.ts.map +1 -0
  234. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  235. package/dist/types/src/index.d.ts +2 -0
  236. package/dist/types/src/index.d.ts.map +1 -1
  237. package/dist/types/src/meta.d.ts +1 -2
  238. package/dist/types/src/meta.d.ts.map +1 -1
  239. package/dist/types/src/processor/index.d.ts +3 -0
  240. package/dist/types/src/processor/index.d.ts.map +1 -0
  241. package/dist/types/src/{hooks → processor}/presets.d.ts +3 -3
  242. package/dist/types/src/processor/presets.d.ts.map +1 -0
  243. package/dist/types/src/processor/processor.d.ts +74 -0
  244. package/dist/types/src/processor/processor.d.ts.map +1 -0
  245. package/dist/types/src/processor/processor.test.d.ts +2 -0
  246. package/dist/types/src/processor/processor.test.d.ts.map +1 -0
  247. package/dist/types/src/testing/index.d.ts +1 -1
  248. package/dist/types/src/testing/index.d.ts.map +1 -1
  249. package/dist/types/src/testing/test-generator.d.ts +7 -0
  250. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  251. package/dist/types/src/testing/test-sequence.d.ts +0 -4
  252. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  253. package/dist/types/src/testing/test-services.d.ts +2 -2
  254. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  255. package/dist/types/src/translations.d.ts +29 -22
  256. package/dist/types/src/translations.d.ts.map +1 -1
  257. package/dist/types/src/types/Assistant.d.ts +51 -0
  258. package/dist/types/src/types/Assistant.d.ts.map +1 -0
  259. package/dist/types/src/types/AssistantAction.d.ts +107 -0
  260. package/dist/types/src/types/AssistantAction.d.ts.map +1 -0
  261. package/dist/types/src/types/defs.d.ts +2 -0
  262. package/dist/types/src/types/defs.d.ts.map +1 -0
  263. package/dist/types/src/types/index.d.ts +3 -1
  264. package/dist/types/src/types/index.d.ts.map +1 -1
  265. package/dist/types/src/types/service.d.ts +18 -15
  266. package/dist/types/src/types/service.d.ts.map +1 -1
  267. package/dist/types/tsconfig.tsbuildinfo +1 -1
  268. package/package.json +92 -92
  269. package/src/AssistantPlugin.tsx +151 -82
  270. package/src/capabilities/ai-service.ts +27 -0
  271. package/src/capabilities/app-graph-builder.ts +47 -137
  272. package/src/capabilities/blueprint-definition.ts +64 -0
  273. package/src/capabilities/capabilities.ts +18 -0
  274. package/src/capabilities/edge-model-resolver.ts +25 -0
  275. package/src/capabilities/index.ts +9 -0
  276. package/src/capabilities/intent-resolver.ts +53 -15
  277. package/src/capabilities/local-model-resolver.ts +30 -0
  278. package/src/capabilities/react-surface.tsx +17 -64
  279. package/src/capabilities/state.ts +20 -0
  280. package/src/capabilities/toolkit.ts +168 -0
  281. package/src/components/AssistantSettings/AssistantSettings.tsx +83 -76
  282. package/src/components/BlueprintContainer.tsx +24 -0
  283. package/src/components/Chat/Chat.tsx +189 -181
  284. package/src/components/Chat/events.ts +7 -0
  285. package/src/components/ChatCompanion.tsx +136 -0
  286. package/src/components/ChatContainer.tsx +19 -13
  287. package/src/components/ChatDialog.tsx +18 -14
  288. package/src/components/ChatProgress/ChatProgress.tsx +67 -0
  289. package/src/components/ChatProgress/index.ts +5 -0
  290. package/src/components/ChatPrompt/ChatActions.tsx +10 -24
  291. package/src/components/ChatPrompt/ChatOptions.tsx +225 -0
  292. package/src/components/ChatPrompt/ChatPresets.tsx +1 -0
  293. package/src/components/ChatPrompt/ChatReferences.tsx +31 -36
  294. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
  295. package/src/components/ChatPrompt/index.ts +1 -1
  296. package/src/components/ChatThread/ChatThread.stories.tsx +98 -112
  297. package/src/components/ChatThread/ChatThread.tsx +69 -29
  298. package/src/components/ChatThread/Link.tsx +26 -0
  299. package/src/components/ChatThread/reducers.ts +151 -0
  300. package/src/components/ChatThread/registry.tsx +184 -0
  301. package/src/components/ChatThread/sync.test.ts +81 -0
  302. package/src/components/ChatThread/sync.ts +113 -0
  303. package/src/components/PromptSettings.tsx +1 -0
  304. package/src/components/SequenceContainer.tsx +29 -30
  305. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +11 -8
  306. package/src/components/SequenceEditor/SequenceEditor.tsx +3 -3
  307. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +28 -17
  308. package/src/components/TemplateEditor/TemplateEditor.tsx +21 -52
  309. package/src/components/TemplateEditor/TemplateForm.stories.tsx +18 -13
  310. package/src/components/TemplateEditor/TemplateForm.tsx +7 -4
  311. package/src/components/TemplateEditor/handlebars-extension.ts +165 -0
  312. package/src/components/ToolBlock/ToolBlock.tsx +152 -0
  313. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  314. package/src/components/ToolBlock/index.ts +6 -0
  315. package/src/components/Toolbar/Toolbar.tsx +21 -0
  316. package/src/components/Toolbar/index.ts +5 -0
  317. package/src/components/Toolbar/useChatToolbarActions.ts +126 -0
  318. package/src/components/Toolbox/Toolbox.stories.tsx +13 -22
  319. package/src/components/Toolbox/Toolbox.tsx +21 -51
  320. package/src/components/index.ts +4 -5
  321. package/src/events.ts +2 -2
  322. package/src/functions/analysis.ts +22 -0
  323. package/src/functions/index.ts +7 -0
  324. package/src/functions/list.ts +48 -0
  325. package/src/functions/load.ts +46 -0
  326. package/src/hooks/index.ts +7 -4
  327. package/src/hooks/useBlueprintRegistry.ts +94 -0
  328. package/src/hooks/useChatProcessor.ts +30 -99
  329. package/src/hooks/useChatServices.ts +29 -71
  330. package/src/hooks/useContextBinder.ts +30 -0
  331. package/src/hooks/useContextObjects.ts +58 -0
  332. package/src/hooks/useFlush.ts +35 -0
  333. package/src/hooks/useItemTypes.ts +37 -0
  334. package/src/hooks/useOnline.ts +10 -0
  335. package/src/hooks/usePresets.ts +44 -0
  336. package/src/hooks/useReferencesProvider.ts +11 -9
  337. package/src/index.ts +2 -0
  338. package/src/meta.ts +4 -6
  339. package/src/processor/index.ts +6 -0
  340. package/src/{hooks → processor}/presets.ts +15 -7
  341. package/src/processor/processor.test.ts +81 -0
  342. package/src/processor/processor.ts +302 -0
  343. package/src/queue-logger.ts +10 -10
  344. package/src/testing/index.ts +1 -1
  345. package/src/testing/test-generator.ts +261 -0
  346. package/src/testing/test-sequence.ts +2 -27
  347. package/src/testing/test-services.ts +2 -8
  348. package/src/translations.ts +32 -22
  349. package/src/types/Assistant.ts +64 -0
  350. package/src/types/AssistantAction.ts +62 -0
  351. package/src/types/defs.ts +5 -0
  352. package/src/types/index.ts +4 -1
  353. package/src/types/service.ts +15 -7
  354. package/src/vite-env.d.ts +30 -0
  355. package/dist/lib/browser/ChatContainer-M3IHQLRS.mjs.map +0 -7
  356. package/dist/lib/browser/ChatDialog-X6VN6QZI.mjs.map +0 -7
  357. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
  358. package/dist/lib/browser/TemplateContainer-RPJ2LBOB.mjs +0 -27
  359. package/dist/lib/browser/TemplateContainer-RPJ2LBOB.mjs.map +0 -7
  360. package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs +0 -223
  361. package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs.map +0 -7
  362. package/dist/lib/browser/chunk-AEAEKWOC.mjs +0 -98
  363. package/dist/lib/browser/chunk-AEAEKWOC.mjs.map +0 -7
  364. package/dist/lib/browser/chunk-EQDW6BYQ.mjs +0 -108
  365. package/dist/lib/browser/chunk-EQDW6BYQ.mjs.map +0 -7
  366. package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
  367. package/dist/lib/browser/chunk-FDCJSQYF.mjs.map +0 -7
  368. package/dist/lib/browser/chunk-JQBVLTM5.mjs +0 -158
  369. package/dist/lib/browser/chunk-JQBVLTM5.mjs.map +0 -7
  370. package/dist/lib/browser/chunk-OWY4CUQY.mjs +0 -2245
  371. package/dist/lib/browser/chunk-OWY4CUQY.mjs.map +0 -7
  372. package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs +0 -60
  373. package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs.map +0 -7
  374. package/dist/lib/browser/react-surface-66VY37YQ.mjs +0 -150
  375. package/dist/lib/browser/react-surface-66VY37YQ.mjs.map +0 -7
  376. package/dist/lib/node-esm/ChatContainer-VZT74PO2.mjs.map +0 -7
  377. package/dist/lib/node-esm/ChatDialog-RJ6FDX4Q.mjs.map +0 -7
  378. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
  379. package/dist/lib/node-esm/TemplateContainer-A3NAQCZE.mjs.map +0 -7
  380. package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs +0 -224
  381. package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs.map +0 -7
  382. package/dist/lib/node-esm/chunk-2XL6MNPE.mjs +0 -99
  383. package/dist/lib/node-esm/chunk-2XL6MNPE.mjs.map +0 -7
  384. package/dist/lib/node-esm/chunk-BISJDTBK.mjs +0 -159
  385. package/dist/lib/node-esm/chunk-BISJDTBK.mjs.map +0 -7
  386. package/dist/lib/node-esm/chunk-E33DNNDW.mjs +0 -109
  387. package/dist/lib/node-esm/chunk-E33DNNDW.mjs.map +0 -7
  388. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
  389. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs.map +0 -7
  390. package/dist/lib/node-esm/chunk-SENTQAEO.mjs +0 -2246
  391. package/dist/lib/node-esm/chunk-SENTQAEO.mjs.map +0 -7
  392. package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs +0 -61
  393. package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs.map +0 -7
  394. package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs +0 -151
  395. package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs.map +0 -7
  396. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
  397. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
  398. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -17
  399. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  400. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  401. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  402. package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
  403. package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
  404. package/dist/types/src/components/TemplateContainer.d.ts +0 -8
  405. package/dist/types/src/components/TemplateContainer.d.ts.map +0 -1
  406. package/dist/types/src/hooks/chat-processor.d.ts +0 -86
  407. package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
  408. package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
  409. package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
  410. package/dist/types/src/hooks/presets.d.ts.map +0 -1
  411. package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
  412. package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
  413. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  414. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  415. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  416. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  417. package/dist/types/src/parser/index.d.ts +0 -4
  418. package/dist/types/src/parser/index.d.ts.map +0 -1
  419. package/dist/types/src/parser/query-parser.d.ts +0 -15
  420. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  421. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  422. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  423. package/dist/types/src/parser/types.d.ts +0 -24
  424. package/dist/types/src/parser/types.d.ts.map +0 -1
  425. package/dist/types/src/stories/Chat.stories.d.ts +0 -249
  426. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  427. package/dist/types/src/testing/test-functions.d.ts +0 -3
  428. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  429. package/dist/types/src/tools/function.d.ts +0 -5
  430. package/dist/types/src/tools/function.d.ts.map +0 -1
  431. package/dist/types/src/tools/index.d.ts +0 -3
  432. package/dist/types/src/tools/index.d.ts.map +0 -1
  433. package/dist/types/src/tools/openapi.d.ts +0 -10
  434. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  435. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  436. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  437. package/dist/types/src/types/schema.d.ts +0 -88
  438. package/dist/types/src/types/schema.d.ts.map +0 -1
  439. package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
  440. package/src/components/ChatThread/ChatMessage.tsx +0 -268
  441. package/src/components/ChatThread/ToolBlock.tsx +0 -121
  442. package/src/components/ChatThread/reducer.ts +0 -52
  443. package/src/components/TemplateContainer.tsx +0 -24
  444. package/src/hooks/chat-processor.test.ts +0 -16
  445. package/src/hooks/chat-processor.ts +0 -314
  446. package/src/hooks/useBlueprints.ts +0 -57
  447. package/src/parser/filter-generator.test.ts +0 -32
  448. package/src/parser/filter-generator.ts +0 -81
  449. package/src/parser/index.ts +0 -7
  450. package/src/parser/query-parser.test.ts +0 -139
  451. package/src/parser/query-parser.ts +0 -199
  452. package/src/parser/types.ts +0 -34
  453. package/src/shims.d.ts +0 -8
  454. package/src/stories/Chat.stories.tsx +0 -378
  455. package/src/testing/test-functions.ts +0 -11
  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 -95
  461. package/src/typings.d.ts +0 -9
@@ -1,199 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { invariant } from '@dxos/invariant';
6
-
7
- import { type Expression, type BinaryOperator, type RelationalOperator } from './types';
8
-
9
- // TODO(burdon): Move to echo-schema?
10
-
11
- type RelationalSymbol = '=' | '<' | '>';
12
-
13
- const operators: Record<RelationalSymbol, RelationalOperator> = {
14
- '=': 'EQ',
15
- '<': 'LT',
16
- '>': 'GT',
17
- };
18
-
19
- export class QueryParser {
20
- private tokens: string[] = [];
21
- private current = 0;
22
-
23
- constructor(input: string) {
24
- // Tokenize the input string.
25
- this.tokens = this.tokenize(input);
26
- }
27
-
28
- private tokenize(input: string): string[] {
29
- // Handle empty input.
30
- if (!input.trim()) {
31
- return [];
32
- }
33
-
34
- // Split on spaces but preserve quoted strings.
35
- const tokens: string[] = [];
36
- let current = '';
37
- let inQuotes = false;
38
-
39
- for (let i = 0; i < input.length; i++) {
40
- const char = input[i];
41
-
42
- if (char === '"') {
43
- // Handle quoted strings.
44
- inQuotes = !inQuotes;
45
- current += char;
46
- } else if (char === '(' || char === ')') {
47
- // If we have accumulated tokens, add them first.
48
- if (current) {
49
- tokens.push(current);
50
- current = '';
51
- }
52
- // Add the parenthesis as a separate token.
53
- tokens.push(char);
54
- } else if (operators[char as RelationalSymbol]) {
55
- // If we have accumulated tokens, add them first.
56
- if (current) {
57
- tokens.push(current);
58
- current = '';
59
- }
60
- // Add the operator as a separate token.
61
- tokens.push(operators[char as RelationalSymbol]);
62
- } else if (char === ' ' && !inQuotes) {
63
- if (current) {
64
- tokens.push(current);
65
- current = '';
66
- }
67
- } else {
68
- current += char;
69
- }
70
- }
71
-
72
- if (current) {
73
- tokens.push(current);
74
- }
75
-
76
- return tokens;
77
- }
78
-
79
- private peek(): string {
80
- return this.tokens[this.current];
81
- }
82
-
83
- private advance(): string {
84
- return this.tokens[this.current++];
85
- }
86
-
87
- private match(type: string): boolean {
88
- if (this.peek() === type) {
89
- this.advance();
90
- return true;
91
- }
92
- return false;
93
- }
94
-
95
- private isAtEnd(): boolean {
96
- return this.current >= this.tokens.length;
97
- }
98
-
99
- private parseExpression(): Expression {
100
- let expr = this.parseTerm();
101
-
102
- while (!this.isAtEnd()) {
103
- const operator = this.peek();
104
- if (operator === 'AND' || operator === 'OR') {
105
- this.advance();
106
- const right = this.parseTerm();
107
- expr = {
108
- type: 'binary',
109
- operator: operator as BinaryOperator,
110
- left: expr,
111
- right,
112
- };
113
- } else {
114
- break;
115
- }
116
- }
117
-
118
- return expr;
119
- }
120
-
121
- private parseTerm(): Expression {
122
- // Handle NOT operator
123
- if (this.peek() === 'NOT') {
124
- this.advance();
125
- const argument = this.parseTerm();
126
- return {
127
- type: 'unary',
128
- operator: 'NOT',
129
- argument,
130
- };
131
- }
132
-
133
- // Handle parentheses.
134
- if (this.match('(')) {
135
- const expr = this.parseExpression();
136
- if (!this.match(')')) {
137
- throw new Error('Expected closing parenthesis');
138
- }
139
- return expr;
140
- }
141
-
142
- const token = this.peek();
143
-
144
- // Handle type:Person style expressions.
145
- if (token.includes(':')) {
146
- const [field, value] = token.split(':');
147
- this.advance();
148
- if (!field || !value) {
149
- throw new Error(`Invalid type expression: ${token}`);
150
- }
151
-
152
- return {
153
- type: 'binary',
154
- operator: 'EQ',
155
- left: { type: 'identifier', name: field },
156
- right: { type: 'literal', value },
157
- };
158
- }
159
-
160
- // Handle $field expressions with operators.
161
- if (token.startsWith('$')) {
162
- const field = token;
163
- this.advance();
164
-
165
- // Get the operator.
166
- const operator = this.peek();
167
- if (operator !== 'EQ' && operator !== 'LT' && operator !== 'GT') {
168
- throw new Error(`Expected operator after field ${field}, got ${operator}`);
169
- }
170
- this.advance();
171
-
172
- // Get the value
173
- const value = this.peek();
174
- this.advance();
175
- invariant(value);
176
-
177
- return {
178
- type: 'binary',
179
- operator: operator as BinaryOperator,
180
- left: { type: 'identifier', name: field },
181
- right: { type: 'literal', value: value.replace(/^"|"$/g, '') },
182
- };
183
- }
184
-
185
- throw new Error(`Unexpected token: ${token}`);
186
- }
187
-
188
- public parse(): Expression {
189
- // Return a special expression for empty input.
190
- if (this.tokens.length === 0) {
191
- return {
192
- type: 'literal',
193
- value: '*',
194
- };
195
- }
196
-
197
- return this.parseExpression();
198
- }
199
- }
@@ -1,34 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export type UnaryOperator = 'NOT';
6
-
7
- export type RelationalOperator = 'EQ' | 'LT' | 'GT';
8
-
9
- export type BinaryOperator = RelationalOperator | 'AND' | 'OR';
10
-
11
- export type Expression = BinaryExpression | UnaryExpression | Identifier | Literal;
12
-
13
- export interface BinaryExpression {
14
- type: 'binary';
15
- operator: BinaryOperator;
16
- left: Expression;
17
- right: Expression;
18
- }
19
-
20
- export interface UnaryExpression {
21
- type: 'unary';
22
- operator: UnaryOperator;
23
- argument: Expression;
24
- }
25
-
26
- export interface Identifier {
27
- type: 'identifier';
28
- name: string;
29
- }
30
-
31
- export interface Literal {
32
- type: 'literal';
33
- value: string;
34
- }
package/src/shims.d.ts DELETED
@@ -1,8 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- declare module '*?raw' {
6
- const content: string;
7
- export default content;
8
- }
@@ -1,378 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import { type StoryObj, type Meta } from '@storybook/react-vite';
8
- import React, { useCallback, useEffect, useMemo, useState, type FC } from 'react';
9
-
10
- import { Capabilities, contributes, Events, IntentPlugin, type Plugin, SettingsPlugin } from '@dxos/app-framework';
11
- import { withPluginManager } from '@dxos/app-framework/testing';
12
- import { ContextBinder } from '@dxos/assistant';
13
- import {
14
- DESIGN_BLUEPRINT,
15
- TASK_BLUEPRINT,
16
- readDocument,
17
- remoteServiceEndpoints,
18
- writeDocument,
19
- } from '@dxos/assistant-testing';
20
- import { Blueprint } from '@dxos/blueprints';
21
- import { Filter, Obj, Ref } from '@dxos/echo';
22
- import { invariant } from '@dxos/invariant';
23
- import { log } from '@dxos/log';
24
- import { ChessPlugin } from '@dxos/plugin-chess';
25
- import { ClientPlugin } from '@dxos/plugin-client';
26
- import { InboxPlugin } from '@dxos/plugin-inbox';
27
- import { MapPlugin } from '@dxos/plugin-map';
28
- import { MarkdownPlugin } from '@dxos/plugin-markdown';
29
- import { DocumentType } from '@dxos/plugin-markdown/types';
30
- import { SpacePlugin } from '@dxos/plugin-space';
31
- import { TablePlugin } from '@dxos/plugin-table';
32
- import { TranscriptionPlugin } from '@dxos/plugin-transcription';
33
- import { Config } from '@dxos/react-client';
34
- import { createDocAccessor, useQuery, useSpace } from '@dxos/react-client/echo';
35
- import { Toolbar, useThemeContext, useTranslation } from '@dxos/react-ui';
36
- import {
37
- Editor,
38
- createBasicExtensions,
39
- createDataExtensions,
40
- createMarkdownExtensions,
41
- createThemeExtensions,
42
- outliner,
43
- } from '@dxos/react-ui-editor';
44
- import { mx } from '@dxos/react-ui-theme';
45
- import { DataType } from '@dxos/schema';
46
- import { render, withLayout, withTheme } from '@dxos/storybook-utils';
47
-
48
- import { AssistantPlugin } from '../AssistantPlugin';
49
- import { Chat, TemplateEditor, type ChatPromptProps } from '../components';
50
- import { type AiServicePreset, AiServicePresets } from '../hooks';
51
- import { useChatProcessor, useChatServices } from '../hooks';
52
- import { meta as AssistantMeta } from '../meta';
53
- import { translations } from '../translations';
54
- import { Assistant } from '../types';
55
-
56
- //
57
- // Story container
58
- //
59
-
60
- const DefaultStory = ({ components }: { components: (FC | FC[])[] }) => {
61
- return (
62
- <div
63
- className={mx('grid grid-cols gap-2 m-2')}
64
- style={{ gridTemplateColumns: `repeat(${components.length}, minmax(0, 40rem))` }}
65
- >
66
- {components.map((Component, index) =>
67
- Array.isArray(Component) ? (
68
- <div
69
- key={index}
70
- className='grid grid-rows gap-2 overflow-hidden'
71
- style={{ gridTemplateRows: `repeat(${Component.length}, 1fr)` }}
72
- >
73
- {Component.map((Component, index) => (
74
- <div key={index} className='flex flex-col overflow-hidden bg-baseSurface border border-separator'>
75
- <Component />
76
- </div>
77
- ))}
78
- </div>
79
- ) : (
80
- <div key={index} className='flex flex-col overflow-hidden bg-baseSurface border border-separator'>
81
- <Component />
82
- </div>
83
- ),
84
- )}
85
- </div>
86
- );
87
- };
88
-
89
- //
90
- // Components
91
- //
92
-
93
- const ChatContainer = () => {
94
- const { t } = useTranslation(AssistantMeta.id);
95
- const space = useSpace();
96
-
97
- const [chat, setChat] = useState<Assistant.Chat>();
98
- useEffect(() => {
99
- const results = space?.db.query(Filter.type(Assistant.Chat)).runSync();
100
- if (results?.length) {
101
- setChat(results[0].object);
102
- }
103
- }, [space]);
104
-
105
- // TODO(burdon): Memo preset for provider.
106
- const [online, setOnline] = useState(true);
107
- const [preset, setPreset] = useState<AiServicePreset>();
108
- const presets = useMemo(
109
- () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),
110
- [online],
111
- );
112
- useEffect(() => {
113
- setPreset(presets[0]);
114
- }, [presets]);
115
-
116
- const services = useChatServices({ space });
117
- const blueprintRegistry = useMemo(() => new Blueprint.Registry([DESIGN_BLUEPRINT, TASK_BLUEPRINT]), []);
118
- const processor = useChatProcessor({
119
- preset,
120
- chat,
121
- space,
122
- services,
123
- blueprintRegistry,
124
- noPluginArtifacts: true,
125
- });
126
-
127
- const handleChangePreset = useCallback<NonNullable<ChatPromptProps['onChangePreset']>>(
128
- (id) => {
129
- const preset = presets.find((preset) => preset.id === id);
130
- if (preset) {
131
- setPreset(preset);
132
- }
133
- },
134
- [presets],
135
- );
136
-
137
- const handleNewChat = useCallback(() => {
138
- invariant(space);
139
- const chat = space.db.add(
140
- Obj.make(Assistant.Chat, {
141
- queue: Ref.fromDXN(space.queues.create().dxn),
142
- }),
143
- );
144
- setChat(chat);
145
- }, [space]);
146
-
147
- const handleBranchChat = useCallback(() => {}, [space]);
148
-
149
- if (!chat || !processor) {
150
- return null;
151
- }
152
-
153
- return (
154
- <Chat.Root chat={chat} processor={processor} onEvent={(event) => log.info('event', { event })}>
155
- <Toolbar.Root classNames='border-b border-subduedSeparator'>
156
- <Toolbar.IconButton icon='ph--plus--regular' iconOnly label={t('button new thread')} onClick={handleNewChat} />
157
- <Toolbar.IconButton
158
- disabled
159
- icon='ph--git-branch--regular'
160
- iconOnly
161
- label={t('button branch thread')}
162
- onClick={handleBranchChat}
163
- />
164
- </Toolbar.Root>
165
- <Chat.Thread />
166
- <div className='p-4'>
167
- <Chat.Prompt
168
- classNames='p-2 border border-subduedSeparator rounded focus-within:outline focus-within:border-transparent outline-primary-500'
169
- expandable
170
- online={online}
171
- presets={presets.map(({ id, model, label }) => ({ id, label: label ?? model }))}
172
- preset={preset?.id}
173
- onChangeOnline={setOnline}
174
- onChangePreset={handleChangePreset}
175
- />
176
- </div>
177
- </Chat.Root>
178
- );
179
- };
180
-
181
- const DocumentContainer = () => {
182
- const { themeMode } = useThemeContext();
183
- const space = useSpace();
184
- const [document] = useQuery(space, Filter.type(DocumentType));
185
- if (!document?.content.target) {
186
- return null;
187
- }
188
-
189
- return (
190
- <>
191
- <Toolbar.Root classNames='border-b border-subduedSeparator'>
192
- <h2>{Obj.getLabel(document)}</h2>
193
- </Toolbar.Root>
194
- <Editor
195
- id={document.id}
196
- text={document.content.target}
197
- classNames='h-full p-2 overflow-hidden'
198
- extensions={[
199
- // TODO(burdon): Create util.
200
- createDataExtensions({ id: document.id, text: createDocAccessor(document.content.target, ['content']) }),
201
- createBasicExtensions({ readOnly: false }),
202
- createMarkdownExtensions({ themeMode }),
203
- createThemeExtensions({ themeMode }),
204
- outliner(),
205
- ]}
206
- />
207
- </>
208
- );
209
- };
210
-
211
- // TODO(burdon): Show all active blueprints from context?
212
- const BlueprintContainer = () => {
213
- const space = useSpace();
214
- const [blueprint] = useQuery(space, Filter.type(Blueprint.Blueprint));
215
- if (!blueprint?.instructions.target) {
216
- return null;
217
- }
218
-
219
- return (
220
- <div className='flex flex-col h-full'>
221
- <Toolbar.Root classNames='border-b border-subduedSeparator'>
222
- <h2>{Obj.getLabel(blueprint)}</h2>
223
- </Toolbar.Root>
224
- <TemplateEditor template={blueprint.instructions.target} />
225
- </div>
226
- );
227
- };
228
-
229
- //
230
- // Configuration
231
- //
232
-
233
- const meta = {
234
- title: 'plugins/plugin-assistant/Chat',
235
- render: render(DefaultStory),
236
- decorators: [],
237
- parameters: {
238
- translations,
239
- controls: { disable: true },
240
- },
241
- } satisfies Meta<typeof DefaultStory>;
242
-
243
- export default meta;
244
-
245
- type Story = StoryObj<typeof meta>;
246
-
247
- //
248
- // Decorators
249
- //
250
-
251
- const remoteConfig = new Config({
252
- runtime: {
253
- services: {
254
- ai: {
255
- // TODO(burdon): 'url'?
256
- server: remoteServiceEndpoints.ai,
257
- },
258
- edge: {
259
- url: remoteServiceEndpoints.edge,
260
- },
261
- },
262
- },
263
- });
264
-
265
- const getDecorators = ({
266
- config,
267
- plugins = [],
268
- blueprints = [],
269
- context = false,
270
- }: {
271
- config: Config;
272
- plugins?: Plugin[];
273
- blueprints?: Blueprint.Blueprint[];
274
- context?: boolean;
275
- }) => [
276
- withPluginManager({
277
- fireEvents: [Events.SetupArtifactDefinition],
278
- plugins: [
279
- ClientPlugin({
280
- config,
281
- types: [Assistant.Chat, DocumentType, Blueprint.Blueprint],
282
- onClientInitialized: async (_, client) => {
283
- await client.halo.createIdentity();
284
- await client.spaces.waitUntilReady();
285
- const space = client.spaces.default;
286
- // ISSUE(burdon): Should not require this.
287
- // ERROR: invariant violation: Database was not initialized with root object.
288
- await space.waitUntilReady();
289
-
290
- // TODO(burdon): Remove need for this boilerplate. Namespace for types?
291
- const chat = space.db.add(
292
- Obj.make(Assistant.Chat, {
293
- queue: Ref.fromDXN(space.queues.create().dxn),
294
- }),
295
- );
296
- const binder = new ContextBinder(await chat.queue.load());
297
-
298
- const doc = space.db.add(
299
- Obj.make(DocumentType, {
300
- name: 'Tasks',
301
- content: Ref.make(Obj.make(DataType.Text, { content: '' })),
302
- }),
303
- );
304
- if (context) {
305
- await binder.bind({ objects: [Ref.make(doc)] });
306
- }
307
-
308
- for (const blueprint of blueprints) {
309
- // Clone blueprints and bind to conversation.
310
- // TODO(dmaretskyi): This should be done by Obj.clone.
311
- const { id: _id, ...data } = blueprint;
312
- const obj = space.db.add(Obj.make(Blueprint.Blueprint, data));
313
- await binder.bind({ blueprints: [Ref.make(obj)] });
314
- }
315
- },
316
- }),
317
- IntentPlugin(),
318
- SettingsPlugin(),
319
- SpacePlugin(),
320
-
321
- TranscriptionPlugin(),
322
- AssistantPlugin(),
323
-
324
- ...plugins,
325
- ],
326
- capabilities: [contributes(Capabilities.Functions, [readDocument, writeDocument])],
327
- }),
328
- withTheme,
329
- withLayout({
330
- fullscreen: true,
331
- classNames: 'bg-deckSurface justify-center',
332
- }),
333
- ];
334
-
335
- //
336
- // Stories
337
- //
338
-
339
- export const Default = {
340
- decorators: getDecorators({
341
- config: remoteConfig,
342
- }),
343
- args: {
344
- components: [ChatContainer],
345
- },
346
- } satisfies Story;
347
-
348
- export const WithDocument = {
349
- decorators: getDecorators({
350
- config: remoteConfig,
351
- plugins: [MarkdownPlugin()],
352
- }),
353
- args: {
354
- components: [ChatContainer, DocumentContainer],
355
- },
356
- } satisfies Story;
357
-
358
- export const WithBlueprints = {
359
- decorators: getDecorators({
360
- config: remoteConfig,
361
- plugins: [ChessPlugin(), InboxPlugin(), MapPlugin(), MarkdownPlugin(), TablePlugin()],
362
- blueprints: [TASK_BLUEPRINT],
363
- context: true,
364
- }),
365
- args: {
366
- components: [ChatContainer, [DocumentContainer, BlueprintContainer]],
367
- },
368
- } satisfies Story;
369
-
370
- // export const WithArtifacts = {
371
- // decorators: getDecorators({
372
- // config: remoteConfig,
373
- // plugins: [ChessPlugin(), InboxPlugin(), MapPlugin(), MarkdownPlugin(), TablePlugin()],
374
- // }),
375
- // args: {
376
- // components: [ChatContainer],
377
- // },
378
- // } satisfies Story;
@@ -1,11 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { DEFAULT_EDGE_MODEL, type GenerateRequest } from '@dxos/ai';
6
- import { createSystemPrompt } from '@dxos/assistant';
7
-
8
- export const createProcessorOptions = (artifacts: string[]): Pick<GenerateRequest, 'model' | 'systemPrompt'> => ({
9
- model: DEFAULT_EDGE_MODEL,
10
- systemPrompt: createSystemPrompt({ artifacts }),
11
- });
@@ -1,46 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { createTool, type ExecutableTool, ToolResult } from '@dxos/ai';
6
- import { Type } from '@dxos/echo';
7
- import { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';
8
- import { type FunctionType } from '@dxos/functions';
9
- import { log } from '@dxos/log';
10
- import { type SpaceId } from '@dxos/react-client/echo';
11
- import { getMeta } from '@dxos/react-client/echo';
12
-
13
- // TODO(burdon): Move to @dxos/ai.
14
- export const convertFunctionToTool = (
15
- fn: FunctionType,
16
- edgeUrl: string,
17
- spaceId?: SpaceId | undefined,
18
- ): ExecutableTool | undefined => {
19
- if (!fn.description || !fn.inputSchema) {
20
- return undefined;
21
- }
22
- const existingFunctionUrl = getUserFunctionUrlInMetadata(getMeta(fn));
23
- if (!existingFunctionUrl) {
24
- return undefined;
25
- }
26
-
27
- const url = getInvocationUrl(existingFunctionUrl, edgeUrl, { spaceId });
28
-
29
- return createTool('user-function', {
30
- name: fn.name,
31
- description: fn.description,
32
- schema: Type.toEffectSchema(fn.inputSchema),
33
- execute: async (input) => {
34
- log.info('execute function tool', { name: fn.name, url, input });
35
- const response = await fetch(url, {
36
- method: 'POST',
37
- headers: {
38
- 'Content-Type': 'application/json',
39
- },
40
- body: JSON.stringify(input),
41
- });
42
-
43
- return ToolResult.Success(await response.text());
44
- },
45
- });
46
- };
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export * from './function';
6
- export * from './openapi';