@dxos/plugin-assistant 0.8.4-main.28f8d3d → 0.8.4-main.2c6827d

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 (510) hide show
  1. package/dist/lib/browser/BlueprintArticle-IMCR3642.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-IMCR3642.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-4MS4NMZY.mjs +158 -0
  4. package/dist/lib/browser/ChatCompanion-4MS4NMZY.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-OUVSX5V5.mjs → ChatContainer-GJZN3SIJ.mjs} +27 -26
  6. package/dist/lib/browser/ChatContainer-GJZN3SIJ.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-P4FLEOHG.mjs → ChatDialog-E2X6DTDX.mjs} +17 -13
  8. package/dist/lib/browser/ChatDialog-E2X6DTDX.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-45QX25Y5.mjs +59 -0
  10. package/dist/lib/browser/PromptArticle-45QX25Y5.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-AVHHQ3KV.mjs → app-graph-builder-VZEXMDTY.mjs} +72 -39
  14. package/dist/lib/browser/app-graph-builder-VZEXMDTY.mjs.map +7 -0
  15. package/dist/lib/browser/blueprint-definition-5FT5JGPY.mjs +12 -0
  16. package/dist/lib/browser/blueprint-definition-5FT5JGPY.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-2BOE3OTW.mjs +262 -0
  18. package/dist/lib/browser/chunk-2BOE3OTW.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-HRLMD35M.mjs → chunk-BNTPFZ7O.mjs} +60 -22
  20. package/dist/lib/browser/chunk-BNTPFZ7O.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs +335 -0
  22. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs.map +7 -0
  23. package/dist/lib/browser/{blueprint-definition-CMGIZAOW.mjs → chunk-IXIIS4QA.mjs} +78 -48
  24. package/dist/lib/browser/chunk-IXIIS4QA.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-LRE4VEZV.mjs +16 -0
  26. package/dist/lib/browser/chunk-LRE4VEZV.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-TCAQJ26D.mjs +1929 -0
  28. package/dist/lib/browser/chunk-TCAQJ26D.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-WBG5PTSX.mjs +23 -0
  30. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +7 -0
  31. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
  32. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
  33. package/dist/lib/browser/index.mjs +162 -73
  34. package/dist/lib/browser/index.mjs.map +4 -4
  35. package/dist/lib/browser/intent-resolver-AK5O4GUW.mjs +143 -0
  36. package/dist/lib/browser/intent-resolver-AK5O4GUW.mjs.map +7 -0
  37. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs +17 -0
  38. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs.map +7 -0
  39. package/dist/lib/browser/meta.json +1 -1
  40. package/dist/lib/browser/react-surface-XWAR5ZVL.mjs +98 -0
  41. package/dist/lib/browser/react-surface-XWAR5ZVL.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-G2EZXMWT.mjs → settings-NYJGNQ5I.mjs} +5 -5
  43. package/dist/lib/browser/{settings-G2EZXMWT.mjs.map → settings-NYJGNQ5I.mjs.map} +1 -1
  44. package/dist/lib/browser/state-GG7Z3NB7.mjs +25 -0
  45. package/dist/lib/browser/state-GG7Z3NB7.mjs.map +7 -0
  46. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  47. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/BlueprintArticle-OL2HUY6Q.mjs +37 -0
  50. package/dist/lib/node-esm/BlueprintArticle-OL2HUY6Q.mjs.map +7 -0
  51. package/dist/lib/node-esm/ChatCompanion-TYRR7BXD.mjs +159 -0
  52. package/dist/lib/node-esm/ChatCompanion-TYRR7BXD.mjs.map +7 -0
  53. package/dist/lib/node-esm/{ChatContainer-D5FABDNE.mjs → ChatContainer-MT4INE7Z.mjs} +27 -26
  54. package/dist/lib/node-esm/ChatContainer-MT4INE7Z.mjs.map +7 -0
  55. package/dist/lib/node-esm/{ChatDialog-NKWVXHJP.mjs → ChatDialog-G4EWBIJM.mjs} +17 -13
  56. package/dist/lib/node-esm/ChatDialog-G4EWBIJM.mjs.map +7 -0
  57. package/dist/lib/node-esm/PromptArticle-OUKFSJQV.mjs +60 -0
  58. package/dist/lib/node-esm/PromptArticle-OUKFSJQV.mjs.map +7 -0
  59. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
  60. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
  61. package/dist/lib/node-esm/{app-graph-builder-RMOUJMMG.mjs → app-graph-builder-VRN6ESRR.mjs} +72 -39
  62. package/dist/lib/node-esm/app-graph-builder-VRN6ESRR.mjs.map +7 -0
  63. package/dist/lib/node-esm/blueprint-definition-XW6QQVLV.mjs +13 -0
  64. package/dist/lib/node-esm/blueprint-definition-XW6QQVLV.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs +264 -0
  66. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-F7RXCX5Y.mjs → chunk-AB74FOA2.mjs} +60 -22
  68. package/dist/lib/node-esm/chunk-AB74FOA2.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs +336 -0
  70. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-KM24SYPM.mjs +1930 -0
  72. package/dist/lib/node-esm/chunk-KM24SYPM.mjs.map +7 -0
  73. package/dist/lib/node-esm/{blueprint-definition-AEWYMW6I.mjs → chunk-UXTUHH24.mjs} +78 -47
  74. package/dist/lib/node-esm/chunk-UXTUHH24.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-WE6KTH72.mjs +25 -0
  76. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +7 -0
  77. package/dist/lib/node-esm/{chunk-X6AANUHZ.mjs → chunk-YWFWT57N.mjs} +4 -4
  78. package/dist/lib/node-esm/chunk-YWFWT57N.mjs.map +7 -0
  79. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
  80. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
  81. package/dist/lib/node-esm/index.mjs +162 -73
  82. package/dist/lib/node-esm/index.mjs.map +4 -4
  83. package/dist/lib/node-esm/intent-resolver-L2F3N45L.mjs +144 -0
  84. package/dist/lib/node-esm/intent-resolver-L2F3N45L.mjs.map +7 -0
  85. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs +18 -0
  86. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs.map +7 -0
  87. package/dist/lib/node-esm/meta.json +1 -1
  88. package/dist/lib/node-esm/react-surface-JXB7Q6QR.mjs +99 -0
  89. package/dist/lib/node-esm/react-surface-JXB7Q6QR.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-AIP5FOJG.mjs → settings-RRHYI5KO.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-AIP5FOJG.mjs.map → settings-RRHYI5KO.mjs.map} +1 -1
  92. package/dist/lib/node-esm/state-FSUHFMDM.mjs +26 -0
  93. package/dist/lib/node-esm/state-FSUHFMDM.mjs.map +7 -0
  94. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  95. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +2 -2
  97. package/dist/types/src/AssistantPlugin.d.ts +1 -1
  98. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/ai-service.d.ts +2 -3
  100. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  102. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -1
  104. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/capabilities.d.ts +7 -8
  106. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/edge-model-resolver.d.ts +2 -3
  108. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/index.d.ts +7 -4
  110. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  112. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/local-model-resolver.d.ts +10 -0
  114. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  116. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/settings.d.ts +1 -1
  118. package/dist/types/src/capabilities/state.d.ts +4 -0
  119. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/toolkit.d.ts +2 -3
  121. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  122. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  123. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  124. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  125. package/dist/types/src/components/Chat/Chat.d.ts +32 -16
  126. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  127. package/dist/types/src/components/Chat/events.d.ts +9 -0
  128. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  129. package/dist/types/src/components/ChatCompanion.d.ts +13 -0
  130. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -0
  131. package/dist/types/src/components/ChatContainer.d.ts +8 -6
  132. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  133. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  134. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +7 -0
  135. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -0
  136. package/dist/types/src/components/ChatProgress/index.d.ts +2 -0
  137. package/dist/types/src/components/ChatProgress/index.d.ts.map +1 -0
  138. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  139. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +11 -4
  140. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  141. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  142. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +3 -4
  143. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  144. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
  145. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  146. package/dist/types/src/components/ChatThread/ChatThread.d.ts +12 -10
  147. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  148. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +191 -82
  149. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  151. package/dist/types/src/components/ChatThread/reducers.d.ts +40 -0
  152. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -0
  153. package/dist/types/src/components/ChatThread/registry.d.ts +11 -0
  154. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  155. package/dist/types/src/components/ChatThread/sync.d.ts +42 -0
  156. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  157. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  158. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  159. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  160. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  161. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
  162. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  163. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +312 -7
  164. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  165. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -1
  166. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  167. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +309 -2
  168. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  169. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +12 -0
  170. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  171. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  172. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  173. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  174. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  175. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +21 -0
  176. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  177. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  178. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  179. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  180. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  181. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -5
  182. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  183. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +314 -5
  184. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  185. package/dist/types/src/components/index.d.ts +4 -7
  186. package/dist/types/src/components/index.d.ts.map +1 -1
  187. package/dist/types/src/functions/analysis.d.ts +1 -1
  188. package/dist/types/src/functions/analysis.d.ts.map +1 -1
  189. package/dist/types/src/functions/index.d.ts +2 -2
  190. package/dist/types/src/functions/index.d.ts.map +1 -1
  191. package/dist/types/src/functions/{list.d.ts → object-list.d.ts} +2 -2
  192. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  193. package/dist/types/src/functions/{load.d.ts → object-load.d.ts} +3 -3
  194. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  195. package/dist/types/src/hooks/index.d.ts +5 -4
  196. package/dist/types/src/hooks/index.d.ts.map +1 -1
  197. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +5 -1
  198. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  199. package/dist/types/src/hooks/useChatProcessor.d.ts +3 -7
  200. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useChatServices.d.ts +5 -5
  202. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  203. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  204. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  205. package/dist/types/src/hooks/useContextBinder.d.ts +4 -0
  206. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
  207. package/dist/types/src/hooks/useContextObjects.d.ts +15 -0
  208. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
  209. package/dist/types/src/hooks/useFlush.d.ts.map +1 -0
  210. package/dist/types/src/hooks/useItemTypes.d.ts +4 -0
  211. package/dist/types/src/hooks/useItemTypes.d.ts.map +1 -0
  212. package/dist/types/src/hooks/usePresets.d.ts +2 -2
  213. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  214. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  215. package/dist/types/src/index.d.ts +2 -0
  216. package/dist/types/src/index.d.ts.map +1 -1
  217. package/dist/types/src/meta.d.ts +1 -2
  218. package/dist/types/src/meta.d.ts.map +1 -1
  219. package/dist/types/src/processor/index.d.ts +4 -0
  220. package/dist/types/src/processor/index.d.ts.map +1 -0
  221. package/dist/types/src/{hooks → processor}/presets.d.ts +1 -1
  222. package/dist/types/src/processor/presets.d.ts.map +1 -0
  223. package/dist/types/src/processor/processor.d.ts +74 -0
  224. package/dist/types/src/processor/processor.d.ts.map +1 -0
  225. package/dist/types/src/processor/processor.test.d.ts +2 -0
  226. package/dist/types/src/processor/processor.test.d.ts.map +1 -0
  227. package/dist/types/src/processor/update-name.d.ts +10 -0
  228. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  229. package/dist/types/src/queue-logger.d.ts.map +1 -1
  230. package/dist/types/src/testing/index.d.ts +1 -1
  231. package/dist/types/src/testing/index.d.ts.map +1 -1
  232. package/dist/types/src/testing/test-generator.d.ts +7 -0
  233. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  234. package/dist/types/src/testing/test-sequence.d.ts +0 -4
  235. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  236. package/dist/types/src/testing/test-services.d.ts +2 -2
  237. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  238. package/dist/types/src/translations.d.ts +257 -33
  239. package/dist/types/src/translations.d.ts.map +1 -1
  240. package/dist/types/src/types/Assistant.d.ts +15 -7
  241. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  242. package/dist/types/src/types/AssistantAction.d.ts +49 -7
  243. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  244. package/dist/types/src/types/service.d.ts +21 -12
  245. package/dist/types/src/types/service.d.ts.map +1 -1
  246. package/dist/types/tsconfig.tsbuildinfo +1 -1
  247. package/package.json +96 -97
  248. package/src/AssistantPlugin.tsx +156 -116
  249. package/src/capabilities/ai-service.ts +6 -7
  250. package/src/capabilities/app-graph-builder.ts +95 -54
  251. package/src/capabilities/blueprint-definition.ts +56 -22
  252. package/src/capabilities/capabilities.ts +7 -12
  253. package/src/capabilities/edge-model-resolver.ts +17 -21
  254. package/src/capabilities/index.ts +5 -2
  255. package/src/capabilities/intent-resolver.ts +91 -17
  256. package/src/capabilities/local-model-resolver.ts +30 -0
  257. package/src/capabilities/react-surface.tsx +23 -81
  258. package/src/capabilities/state.ts +22 -0
  259. package/src/capabilities/toolkit.ts +9 -98
  260. package/src/components/AssistantSettings/AssistantSettings.tsx +82 -75
  261. package/src/components/BlueprintArticle.tsx +29 -0
  262. package/src/components/Chat/Chat.tsx +252 -222
  263. package/src/components/Chat/events.ts +13 -0
  264. package/src/components/ChatCompanion.tsx +155 -0
  265. package/src/components/ChatContainer.tsx +33 -41
  266. package/src/components/ChatDialog.tsx +19 -12
  267. package/src/components/ChatProgress/ChatProgress.tsx +67 -0
  268. package/src/components/{Timeline → ChatProgress}/index.ts +1 -1
  269. package/src/components/ChatPrompt/ChatActions.tsx +10 -26
  270. package/src/components/ChatPrompt/ChatOptions.tsx +203 -34
  271. package/src/components/ChatPrompt/ChatPresets.tsx +1 -0
  272. package/src/components/ChatPrompt/ChatReferences.tsx +29 -36
  273. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
  274. package/src/components/ChatThread/ChatThread.stories.tsx +92 -204
  275. package/src/components/ChatThread/ChatThread.tsx +65 -35
  276. package/src/components/ChatThread/Link.tsx +8 -21
  277. package/src/components/ChatThread/reducers.ts +151 -0
  278. package/src/components/ChatThread/registry.tsx +174 -0
  279. package/src/components/ChatThread/sync.test.ts +89 -0
  280. package/src/components/ChatThread/sync.ts +148 -0
  281. package/src/components/ChatThread/testing/thread.md +37 -0
  282. package/src/components/PromptArticle.tsx +51 -0
  283. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +29 -15
  284. package/src/components/TemplateEditor/TemplateEditor.tsx +28 -53
  285. package/src/components/TemplateEditor/TemplateForm.stories.tsx +7 -9
  286. package/src/components/TemplateEditor/TemplateForm.tsx +3 -2
  287. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  288. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  289. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  290. package/src/components/ToolBlock/ToolBlock.tsx +143 -0
  291. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  292. package/src/components/ToolBlock/index.ts +6 -0
  293. package/src/components/Toolbox/Toolbox.stories.tsx +11 -14
  294. package/src/components/Toolbox/Toolbox.tsx +15 -21
  295. package/src/components/index.ts +3 -4
  296. package/src/functions/analysis.ts +5 -3
  297. package/src/functions/index.ts +2 -2
  298. package/src/functions/{list.ts → object-list.ts} +11 -5
  299. package/src/functions/{load.ts → object-load.ts} +9 -7
  300. package/src/hooks/index.ts +5 -5
  301. package/src/hooks/useBlueprintRegistry.ts +26 -10
  302. package/src/hooks/useChatProcessor.ts +26 -33
  303. package/src/hooks/useChatServices.ts +32 -53
  304. package/src/hooks/useChatToolbarActions.ts +122 -0
  305. package/src/hooks/useContextBinder.ts +30 -0
  306. package/src/hooks/useContextObjects.ts +58 -0
  307. package/src/hooks/useItemTypes.ts +37 -0
  308. package/src/hooks/usePresets.ts +4 -5
  309. package/src/hooks/useReferencesProvider.ts +2 -1
  310. package/src/index.ts +2 -0
  311. package/src/meta.ts +9 -6
  312. package/src/processor/index.ts +7 -0
  313. package/src/{hooks → processor}/presets.ts +11 -4
  314. package/src/processor/processor.test.ts +71 -0
  315. package/src/processor/processor.ts +277 -0
  316. package/src/processor/update-name.ts +56 -0
  317. package/src/queue-logger.ts +9 -13
  318. package/src/testing/index.ts +1 -1
  319. package/src/testing/test-generator.ts +261 -0
  320. package/src/testing/test-sequence.ts +1 -26
  321. package/src/testing/test-services.ts +2 -8
  322. package/src/translations.ts +44 -24
  323. package/src/types/Assistant.ts +11 -7
  324. package/src/types/AssistantAction.ts +31 -6
  325. package/src/types/service.ts +17 -9
  326. package/src/vite-env.d.ts +30 -0
  327. package/dist/lib/browser/BlueprintContainer-H7H4BQ2C.mjs +0 -29
  328. package/dist/lib/browser/BlueprintContainer-H7H4BQ2C.mjs.map +0 -7
  329. package/dist/lib/browser/ChatContainer-OUVSX5V5.mjs.map +0 -7
  330. package/dist/lib/browser/ChatDialog-P4FLEOHG.mjs.map +0 -7
  331. package/dist/lib/browser/SequenceContainer-627OQ557.mjs +0 -163
  332. package/dist/lib/browser/SequenceContainer-627OQ557.mjs.map +0 -7
  333. package/dist/lib/browser/ai-service-7KJ5LXBT.mjs +0 -22
  334. package/dist/lib/browser/ai-service-7KJ5LXBT.mjs.map +0 -7
  335. package/dist/lib/browser/app-graph-builder-AVHHQ3KV.mjs.map +0 -7
  336. package/dist/lib/browser/blueprint-definition-CMGIZAOW.mjs.map +0 -7
  337. package/dist/lib/browser/chunk-BRLHDHOF.mjs +0 -244
  338. package/dist/lib/browser/chunk-BRLHDHOF.mjs.map +0 -7
  339. package/dist/lib/browser/chunk-HRLMD35M.mjs.map +0 -7
  340. package/dist/lib/browser/chunk-LKP65RPA.mjs +0 -20
  341. package/dist/lib/browser/chunk-LKP65RPA.mjs.map +0 -7
  342. package/dist/lib/browser/chunk-NZDCKQ6W.mjs +0 -89
  343. package/dist/lib/browser/chunk-NZDCKQ6W.mjs.map +0 -7
  344. package/dist/lib/browser/chunk-QB7OVS6Z.mjs +0 -16
  345. package/dist/lib/browser/chunk-QB7OVS6Z.mjs.map +0 -7
  346. package/dist/lib/browser/chunk-VEBVAHNM.mjs +0 -2231
  347. package/dist/lib/browser/chunk-VEBVAHNM.mjs.map +0 -7
  348. package/dist/lib/browser/edge-model-resolver-2HB4PCWH.mjs +0 -24
  349. package/dist/lib/browser/edge-model-resolver-2HB4PCWH.mjs.map +0 -7
  350. package/dist/lib/browser/intent-resolver-MVOIEJXZ.mjs +0 -81
  351. package/dist/lib/browser/intent-resolver-MVOIEJXZ.mjs.map +0 -7
  352. package/dist/lib/browser/react-surface-4HXS3YLT.mjs +0 -163
  353. package/dist/lib/browser/react-surface-4HXS3YLT.mjs.map +0 -7
  354. package/dist/lib/browser/toolkit-IW4FBLLB.mjs +0 -105
  355. package/dist/lib/browser/toolkit-IW4FBLLB.mjs.map +0 -7
  356. package/dist/lib/node-esm/BlueprintContainer-VH4EE4CM.mjs +0 -30
  357. package/dist/lib/node-esm/BlueprintContainer-VH4EE4CM.mjs.map +0 -7
  358. package/dist/lib/node-esm/ChatContainer-D5FABDNE.mjs.map +0 -7
  359. package/dist/lib/node-esm/ChatDialog-NKWVXHJP.mjs.map +0 -7
  360. package/dist/lib/node-esm/SequenceContainer-EQ5NP2PG.mjs +0 -164
  361. package/dist/lib/node-esm/SequenceContainer-EQ5NP2PG.mjs.map +0 -7
  362. package/dist/lib/node-esm/ai-service-LDD32477.mjs +0 -23
  363. package/dist/lib/node-esm/ai-service-LDD32477.mjs.map +0 -7
  364. package/dist/lib/node-esm/app-graph-builder-RMOUJMMG.mjs.map +0 -7
  365. package/dist/lib/node-esm/blueprint-definition-AEWYMW6I.mjs.map +0 -7
  366. package/dist/lib/node-esm/chunk-3SOC5GOP.mjs +0 -2232
  367. package/dist/lib/node-esm/chunk-3SOC5GOP.mjs.map +0 -7
  368. package/dist/lib/node-esm/chunk-F7RXCX5Y.mjs.map +0 -7
  369. package/dist/lib/node-esm/chunk-GAWXJ7K5.mjs +0 -90
  370. package/dist/lib/node-esm/chunk-GAWXJ7K5.mjs.map +0 -7
  371. package/dist/lib/node-esm/chunk-KOC6ESG7.mjs +0 -22
  372. package/dist/lib/node-esm/chunk-KOC6ESG7.mjs.map +0 -7
  373. package/dist/lib/node-esm/chunk-RD755HN3.mjs +0 -245
  374. package/dist/lib/node-esm/chunk-RD755HN3.mjs.map +0 -7
  375. package/dist/lib/node-esm/chunk-X6AANUHZ.mjs.map +0 -7
  376. package/dist/lib/node-esm/edge-model-resolver-UDDR2IA6.mjs +0 -25
  377. package/dist/lib/node-esm/edge-model-resolver-UDDR2IA6.mjs.map +0 -7
  378. package/dist/lib/node-esm/intent-resolver-DTDNCX3C.mjs +0 -82
  379. package/dist/lib/node-esm/intent-resolver-DTDNCX3C.mjs.map +0 -7
  380. package/dist/lib/node-esm/react-surface-V6JNEZVO.mjs +0 -164
  381. package/dist/lib/node-esm/react-surface-V6JNEZVO.mjs.map +0 -7
  382. package/dist/lib/node-esm/toolkit-2VNUL77B.mjs +0 -106
  383. package/dist/lib/node-esm/toolkit-2VNUL77B.mjs.map +0 -7
  384. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  385. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  386. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -18
  387. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  388. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  389. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  390. package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
  391. package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
  392. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  393. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  394. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  395. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  396. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  397. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  398. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -8
  399. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  400. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  401. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  402. package/dist/types/src/components/Timeline/Timeline.d.ts +0 -24
  403. package/dist/types/src/components/Timeline/Timeline.d.ts.map +0 -1
  404. package/dist/types/src/components/Timeline/Timeline.stories.d.ts +0 -9
  405. package/dist/types/src/components/Timeline/Timeline.stories.d.ts.map +0 -1
  406. package/dist/types/src/components/Timeline/index.d.ts +0 -2
  407. package/dist/types/src/components/Timeline/index.d.ts.map +0 -1
  408. package/dist/types/src/functions/list.d.ts.map +0 -1
  409. package/dist/types/src/functions/load.d.ts.map +0 -1
  410. package/dist/types/src/hooks/chat-processor.d.ts +0 -72
  411. package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
  412. package/dist/types/src/hooks/errors.d.ts +0 -4
  413. package/dist/types/src/hooks/errors.d.ts.map +0 -1
  414. package/dist/types/src/hooks/presets.d.ts.map +0 -1
  415. package/dist/types/src/hooks/useResolveRef.d.ts +0 -4
  416. package/dist/types/src/hooks/useResolveRef.d.ts.map +0 -1
  417. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  418. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  419. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  420. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  421. package/dist/types/src/parser/index.d.ts +0 -4
  422. package/dist/types/src/parser/index.d.ts.map +0 -1
  423. package/dist/types/src/parser/query-parser.d.ts +0 -15
  424. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  425. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  426. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  427. package/dist/types/src/parser/types.d.ts +0 -24
  428. package/dist/types/src/parser/types.d.ts.map +0 -1
  429. package/dist/types/src/stories/Chat.stories.d.ts +0 -268
  430. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  431. package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -5
  432. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
  433. package/dist/types/src/stories/components/ChatContainer.d.ts +0 -5
  434. package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
  435. package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
  436. package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
  437. package/dist/types/src/stories/components/LoggingContainer.d.ts +0 -5
  438. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +0 -1
  439. package/dist/types/src/stories/components/SurfaceContainer.d.ts +0 -8
  440. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +0 -1
  441. package/dist/types/src/stories/components/TasksContainer.d.ts +0 -5
  442. package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
  443. package/dist/types/src/stories/components/index.d.ts +0 -8
  444. package/dist/types/src/stories/components/index.d.ts.map +0 -1
  445. package/dist/types/src/stories/components/types.d.ts +0 -7
  446. package/dist/types/src/stories/components/types.d.ts.map +0 -1
  447. package/dist/types/src/stories/hooks/index.d.ts +0 -3
  448. package/dist/types/src/stories/hooks/index.d.ts.map +0 -1
  449. package/dist/types/src/stories/hooks/useFlush.d.ts.map +0 -1
  450. package/dist/types/src/stories/hooks/useMatcherExtension.d.ts +0 -3
  451. package/dist/types/src/stories/hooks/useMatcherExtension.d.ts.map +0 -1
  452. package/dist/types/src/stories/testing/data.d.ts +0 -142
  453. package/dist/types/src/stories/testing/data.d.ts.map +0 -1
  454. package/dist/types/src/stories/testing/index.d.ts +0 -3
  455. package/dist/types/src/stories/testing/index.d.ts.map +0 -1
  456. package/dist/types/src/stories/testing/testing.d.ts +0 -26
  457. package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
  458. package/dist/types/src/testing/test-functions.d.ts +0 -6
  459. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  460. package/dist/types/src/tools/function.d.ts +0 -5
  461. package/dist/types/src/tools/function.d.ts.map +0 -1
  462. package/dist/types/src/tools/index.d.ts +0 -3
  463. package/dist/types/src/tools/index.d.ts.map +0 -1
  464. package/dist/types/src/tools/openapi.d.ts +0 -10
  465. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  466. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  467. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  468. package/src/components/BlueprintContainer.tsx +0 -24
  469. package/src/components/ChatThread/ChatMessage.tsx +0 -282
  470. package/src/components/ChatThread/ToolBlock.tsx +0 -125
  471. package/src/components/ChatThread/reducer.ts +0 -52
  472. package/src/components/PromptSettings.tsx +0 -89
  473. package/src/components/SequenceContainer.tsx +0 -133
  474. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -33
  475. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  476. package/src/components/SequenceEditor/index.ts +0 -5
  477. package/src/components/Timeline/Timeline.stories.tsx +0 -53
  478. package/src/components/Timeline/Timeline.tsx +0 -159
  479. package/src/hooks/chat-processor.ts +0 -260
  480. package/src/hooks/errors.ts +0 -8
  481. package/src/hooks/useResolveRef.ts +0 -33
  482. package/src/parser/filter-generator.test.ts +0 -32
  483. package/src/parser/filter-generator.ts +0 -74
  484. package/src/parser/index.ts +0 -7
  485. package/src/parser/query-parser.test.ts +0 -139
  486. package/src/parser/query-parser.ts +0 -199
  487. package/src/parser/types.ts +0 -34
  488. package/src/shims.d.ts +0 -8
  489. package/src/stories/Chat.stories.tsx +0 -317
  490. package/src/stories/components/BlueprintContainer.tsx +0 -34
  491. package/src/stories/components/ChatContainer.tsx +0 -80
  492. package/src/stories/components/GraphContainer.tsx +0 -118
  493. package/src/stories/components/LoggingContainer.tsx +0 -22
  494. package/src/stories/components/SurfaceContainer.tsx +0 -62
  495. package/src/stories/components/TasksContainer.tsx +0 -51
  496. package/src/stories/components/index.ts +0 -12
  497. package/src/stories/components/types.ts +0 -11
  498. package/src/stories/hooks/index.ts +0 -6
  499. package/src/stories/hooks/useMatcherExtension.ts +0 -45
  500. package/src/stories/testing/data.ts +0 -130
  501. package/src/stories/testing/index.ts +0 -6
  502. package/src/stories/testing/testing.tsx +0 -162
  503. package/src/testing/test-functions.ts +0 -16
  504. package/src/tools/function.ts +0 -49
  505. package/src/tools/index.ts +0 -6
  506. package/src/tools/openapi.test.ts +0 -219
  507. package/src/tools/openapi.ts +0 -341
  508. package/src/typings.d.ts +0 -9
  509. /package/dist/types/src/{stories/hooks → hooks}/useFlush.d.ts +0 -0
  510. /package/src/{stories/hooks → hooks}/useFlush.ts +0 -0
@@ -1,133 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type EditorView } from '@codemirror/view';
6
- import JSON5 from 'json5';
7
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
8
-
9
- import { ToolRegistry } from '@dxos/ai';
10
- import { getSpace } from '@dxos/client/echo';
11
- import { type Sequence, type SequenceDefinition } from '@dxos/conductor';
12
- import { Key } from '@dxos/echo';
13
- import { Toolbar, useTranslation } from '@dxos/react-ui';
14
- import { useSelectionManager } from '@dxos/react-ui-attention';
15
- import { StackItem } from '@dxos/react-ui-stack';
16
-
17
- import { meta } from '../meta';
18
-
19
- import { SequenceEditor } from './SequenceEditor';
20
-
21
- // TODO(burdon): Move to config.
22
- export const EXA_API_KEY = '9c7e17ff-0c85-4cd5-827a-8b489f139e03';
23
-
24
- // TODO(burdon): Validate.
25
- const parseSequence = (text: string): SequenceDefinition | undefined => {
26
- try {
27
- const json = JSON5.parse(text);
28
- const { steps } = json;
29
- return { steps };
30
- } catch (error) {
31
- // Ignore.
32
- }
33
- };
34
-
35
- export const SequenceContainer = ({ sequence }: { sequence: Sequence }) => {
36
- const { t } = useTranslation(meta.id);
37
- const selectionManager = useSelectionManager();
38
- const [definition, setDefinition] = useState<SequenceDefinition>();
39
- useEffect(() => {
40
- setDefinition({
41
- steps: sequence.steps.map(({ instructions, tools }) => ({ instructions, tools })),
42
- });
43
- }, [sequence]);
44
-
45
- const editorRef = useRef<EditorView | undefined>(undefined);
46
-
47
- // TODO(burdon): Factor out.
48
- const toolRegistry = useMemo(() => {
49
- const space = getSpace(sequence);
50
- if (!space) {
51
- return;
52
- }
53
-
54
- // TODO(burdon): How should the queue be created?
55
- // eslint-disable-next-line no-unused-vars
56
- const _queue = space.queues.create();
57
-
58
- return new ToolRegistry([
59
- // createExaTool({ apiKey: EXA_API_KEY }),
60
- // createLocalSearchTool(space.db, queue),
61
- // createGraphWriterTool({
62
- // db: space.db,
63
- // queue,
64
- // schema: [], // TODO(burdon): Get schema from client/sequence?
65
- // onDone: async (objects) => {
66
- // await queue.append(objects);
67
- // },
68
- // }),
69
- ]);
70
- }, [sequence]);
71
-
72
- const formatAndSave = useCallback((): SequenceDefinition | undefined => {
73
- if (!sequence) {
74
- return;
75
- }
76
-
77
- const text = editorRef.current?.state.doc.toString();
78
- if (!text) {
79
- return;
80
- }
81
-
82
- const definition = parseSequence(text);
83
- if (!definition) {
84
- return;
85
- }
86
-
87
- setDefinition(definition);
88
- const formatted = JSON.stringify(definition, null, 2);
89
- editorRef.current?.dispatch({
90
- changes: { from: 0, to: text.length, insert: formatted },
91
- });
92
-
93
- sequence.steps.length = 0;
94
- for (const step of definition.steps) {
95
- sequence.steps.push({
96
- id: Key.ObjectId.random(),
97
- instructions: step.instructions,
98
- tools: step.tools,
99
- });
100
- }
101
-
102
- return sequence;
103
- }, [sequence]);
104
-
105
- // TODO(burdon): Save raw sequence separately from parsed sequence? (like Script).
106
- const handleSave = useCallback(() => formatAndSave(), [formatAndSave]);
107
-
108
- const handleRun = useCallback(async () => {
109
- // if (!aiClient?.value || !toolRegistry) {
110
- // return;
111
- // }
112
- // formatAndSave();
113
- // // Get input from selection.
114
- // const input = Array.from(getSelectionSet(selectionManager)).map((id) => DXN.fromLocalObjectId(id));
115
- // if (!input.length) {
116
- // return;
117
- // }
118
- // const machine = new SequenceMachine(toolRegistry, sequence).setLogger(new QueueLogger(sequence));
119
- // await machine.runToCompletion({ aiClient: aiClient.value, input });
120
- }, [sequence, formatAndSave, selectionManager, toolRegistry]);
121
-
122
- return (
123
- <StackItem.Content toolbar>
124
- <Toolbar.Root>
125
- <Toolbar.Button onClick={handleSave}>{t('button save')}</Toolbar.Button>
126
- <Toolbar.Button onClick={handleRun}>{t('button run')}</Toolbar.Button>
127
- </Toolbar.Root>
128
- {definition && <SequenceEditor ref={editorRef} sequence={definition} />}
129
- </StackItem.Content>
130
- );
131
- };
132
-
133
- export default SequenceContainer;
@@ -1,33 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import { type Meta, type StoryObj } from '@storybook/react-vite';
8
-
9
- import { withLayout, withTheme } from '@dxos/storybook-utils';
10
-
11
- import { RESEARCH_SEQUENCE_DEFINITION } from '../../testing';
12
- import { translations } from '../../translations';
13
-
14
- import { SequenceEditor } from './SequenceEditor';
15
-
16
- const meta: Meta<typeof SequenceEditor> = {
17
- title: 'plugins/plugin-assistant/SequenceEditor',
18
- component: SequenceEditor,
19
- decorators: [withTheme, withLayout({ fullscreen: true, classNames: 'mli-auto max-is-[50rem] justify-center' })],
20
- parameters: {
21
- translations,
22
- },
23
- };
24
-
25
- export default meta;
26
-
27
- type Story = StoryObj<typeof SequenceEditor>;
28
-
29
- export const Default: Story = {
30
- args: {
31
- sequence: RESEARCH_SEQUENCE_DEFINITION,
32
- },
33
- };
@@ -1,50 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import React, { forwardRef, useImperativeHandle } from 'react';
6
-
7
- import { SequenceDefinition } from '@dxos/conductor';
8
- import { Type } from '@dxos/echo';
9
- import { type ThemedClassName, useThemeContext } from '@dxos/react-ui';
10
- import {
11
- type EditorView,
12
- createBasicExtensions,
13
- createJsonExtensions,
14
- createThemeExtensions,
15
- useTextEditor,
16
- } from '@dxos/react-ui-editor';
17
- import { mx } from '@dxos/react-ui-theme';
18
-
19
- export type SequenceEditorProps = ThemedClassName<{
20
- sequence: SequenceDefinition;
21
- }>;
22
-
23
- // TODO(burdon): Factor out JsonEditor.
24
- export const SequenceEditor = forwardRef<EditorView | undefined, SequenceEditorProps>(
25
- ({ classNames, sequence }, forwardedRef) => {
26
- const { themeMode } = useThemeContext();
27
- const { parentRef, view } = useTextEditor({
28
- initialValue: JSON.stringify(sequence, null, 2),
29
- extensions: [
30
- createBasicExtensions({
31
- lineNumbers: true,
32
- lineWrapping: false,
33
- monospace: true,
34
- scrollPastEnd: true,
35
- }),
36
- createThemeExtensions({
37
- themeMode,
38
- syntaxHighlighting: true,
39
- }),
40
- createJsonExtensions({
41
- schema: Type.toJsonSchema(SequenceDefinition, { strict: true }),
42
- }),
43
- ],
44
- });
45
-
46
- useImperativeHandle(forwardedRef, () => view, [view]);
47
-
48
- return <div ref={parentRef} className={mx('overflow-hidden', classNames)} />;
49
- },
50
- );
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export * from './SequenceEditor';
@@ -1,53 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import { type Meta, type StoryObj } from '@storybook/react-vite';
8
-
9
- import { faker } from '@dxos/random';
10
- import { withTheme } from '@dxos/storybook-utils';
11
-
12
- import { Timeline } from './Timeline';
13
-
14
- faker.seed(1);
15
-
16
- const meta: Meta<typeof Timeline> = {
17
- title: 'plugins/plugin-assistant/Timeline',
18
- component: Timeline,
19
- decorators: [withTheme],
20
- };
21
-
22
- export default meta;
23
-
24
- type Story = StoryObj<typeof meta>;
25
-
26
- export const Default: Story = {
27
- args: {
28
- branches: [{ name: 'main' }, { name: 'feature-a' }, { name: 'feature-b' }, { name: 'feature-c' }],
29
- commits: [
30
- { id: 'c1', message: faker.lorem.paragraph(), branch: 'main' },
31
- { id: 'c2', message: faker.lorem.paragraph(), branch: 'main', parent: 'c1' },
32
- { id: 'c3', message: faker.lorem.paragraph(), branch: 'feature-a', parent: 'c2' },
33
- { id: 'c4', message: faker.lorem.paragraph(), branch: 'main', parent: 'c2' },
34
- { id: 'c5', message: faker.lorem.paragraph(), branch: 'feature-b', parent: 'c2' },
35
- { id: 'c6', message: faker.lorem.paragraph(), branch: 'feature-a', parent: 'c3' },
36
- { id: 'c7', message: faker.lorem.paragraph(), branch: 'feature-a', parent: 'c6' },
37
- { id: 'c8', message: faker.lorem.paragraph(), branch: 'feature-c', parent: 'c6' },
38
- { id: 'c9', message: faker.lorem.paragraph(), branch: 'main', parent: 'c4' },
39
- ],
40
- },
41
- };
42
-
43
- export const Linear: Story = {
44
- args: {
45
- branches: [{ name: 'main' }],
46
- commits: [
47
- { id: 'c1', message: faker.lorem.paragraph(), branch: 'main' },
48
- { id: 'c2', message: faker.lorem.paragraph(), branch: 'main', parent: 'c1' },
49
- { id: 'c3', message: faker.lorem.paragraph(), branch: 'main', parent: 'c2' },
50
- { id: 'c4', message: faker.lorem.paragraph(), branch: 'main', parent: 'c3' },
51
- ],
52
- },
53
- };
@@ -1,159 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import React, { Fragment, useMemo } from 'react';
6
-
7
- import { type ThemedClassName } from '@dxos/react-ui';
8
- import { mx } from '@dxos/react-ui-theme';
9
- import { trim } from '@dxos/util';
10
-
11
- export type Commit = {
12
- id: string;
13
- parent?: string;
14
- branch: string;
15
- message: string;
16
- timestamp?: Date;
17
- tags?: string[];
18
- };
19
-
20
- export type Branch = {
21
- name: string;
22
- };
23
-
24
- export type Span = {
25
- start: number;
26
- end: number;
27
- parent?: number;
28
- };
29
-
30
- export type TimelineProps = ThemedClassName<{ branches: Branch[]; commits: Commit[] }>;
31
-
32
- // TODO(burdon): Reuse in toolCall messages.
33
- // TODO(burdon): Key up/down; selected.
34
- export const Timeline = ({ classNames, branches, commits }: TimelineProps) => {
35
- const spans = useMemo(() => {
36
- const spans = new Map<string, Span>();
37
- branches.forEach((branch) => {
38
- spans.set(branch.name, { start: -1, end: -1 });
39
- });
40
-
41
- commits.forEach((commit, index) => {
42
- const span = spans.get(commit.branch);
43
- if (span) {
44
- if (span.start === -1) {
45
- const parentIndex = commit.parent ? commits.findIndex((c) => c.id === commit.parent) : 0;
46
- span.start = parentIndex;
47
- span.parent = commit.parent
48
- ? branches.findIndex((branch) => branch.name === commits[parentIndex].branch)
49
- : undefined;
50
- }
51
- span.end = index;
52
- }
53
- });
54
-
55
- return spans;
56
- }, [commits, branches]);
57
-
58
- return (
59
- <div className={mx('flex flex-col w-full overflow-hidden', classNames)}>
60
- {commits.map((commit, index) => {
61
- return (
62
- <div
63
- key={commit.id}
64
- className='group flex items-center gap-2 overflow-hidden hover:bg-hoverSurface'
65
- style={{ height: `${lineHeight}px` }}
66
- >
67
- <svg width={branches.length * columnWidth} height={lineHeight} className='shrink-0'>
68
- {branches.map((branch, j) => {
69
- const span = spans.get(branch.name);
70
- const color = colors[j % colors.length];
71
- if (!span) {
72
- return null;
73
- }
74
-
75
- return (
76
- <Fragment key={j}>
77
- {/* Upper */}
78
- {index !== 0 && span.start !== -1 && span.start < index && span.end >= index && (
79
- <line
80
- x1={j * columnWidth + columnWidth / 2}
81
- y1={0}
82
- x2={j * columnWidth + columnWidth / 2}
83
- y2={lineHeight / 2}
84
- className={mx('stroke-2', color.stroke)}
85
- />
86
- )}
87
- {/* Lower */}
88
- {span.end !== -1 && (span.start < index || span.start === 0) && index < span.end && (
89
- <line
90
- x1={j * columnWidth + columnWidth / 2}
91
- y1={lineHeight / 2}
92
- x2={j * columnWidth + columnWidth / 2}
93
- y2={lineHeight}
94
- className={mx('stroke-2', color.stroke)}
95
- />
96
- )}
97
- {/* Arc to parent */}
98
- {span.start === index && span.parent !== undefined && span.parent !== -1 && (
99
- <path
100
- d={trim`
101
- M ${0.5 + span.parent * columnWidth + columnWidth / 2} ${lineHeight / 2}
102
- L ${j * columnWidth + columnWidth / 4} ${lineHeight / 2}
103
- A ${lineHeight / 4} ${lineHeight / 4} 0 0 1 ${j * columnWidth + columnWidth / 2} ${(lineHeight * 3) / 4}
104
- L ${j * columnWidth + columnWidth / 2} ${lineHeight}
105
- `}
106
- className={mx('stroke-2', color.stroke)}
107
- fill='none'
108
- />
109
- )}
110
- {branch.name === commit.branch && (
111
- <circle
112
- cx={j * columnWidth + columnWidth / 2}
113
- cy={lineHeight / 2}
114
- r={nodeRadius}
115
- className={mx('stroke-2 fill-red-500', color.stroke, color.hover)}
116
- />
117
- )}
118
- </Fragment>
119
- );
120
- })}
121
- {branches.map((branch, j) => {
122
- const color = colors[j % colors.length];
123
- return (
124
- branch.name === commit.branch && (
125
- <circle
126
- key={j}
127
- cx={j * columnWidth + columnWidth / 2}
128
- cy={lineHeight / 2}
129
- r={nodeRadius}
130
- className={mx('stroke-2', color.stroke, color.hover)}
131
- />
132
- )
133
- );
134
- })}
135
- </svg>
136
- <div className='text-sm truncate cursor-pointer text-subdued group-hover:text-baseText'>
137
- {commit.message}
138
- </div>
139
- </div>
140
- );
141
- })}
142
- </div>
143
- );
144
- };
145
-
146
- const lineHeight = 24;
147
- const columnWidth = 24;
148
- const nodeRadius = 6;
149
-
150
- const colors = [
151
- { stroke: 'stroke-orange-500', hover: 'group-hover:fill-orange-500' },
152
- { stroke: 'stroke-sky-500', hover: 'group-hover:fill-sky-500' },
153
- { stroke: 'stroke-green-500', hover: 'group-hover:fill-green-500' },
154
- { stroke: 'stroke-fuchsia-500', hover: 'group-hover:fill-fuchsia-500' },
155
- { stroke: 'stroke-cyan-500', hover: 'group-hover:fill-cyan-500' },
156
- { stroke: 'stroke-emerald-500', hover: 'group-hover:fill-emerald-500' },
157
- { stroke: 'stroke-violet-500', hover: 'group-hover:fill-violet-500' },
158
- { stroke: 'stroke-teal-500', hover: 'group-hover:fill-teal-500' },
159
- ];
@@ -1,260 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Registry, Result, Rx } from '@effect-rx/rx-react';
6
- import { Effect, type Layer, Option, Stream, pipe } from 'effect';
7
-
8
- import { AiService, DEFAULT_EDGE_MODEL, type ModelName, type ModelRegistry } from '@dxos/ai';
9
- import { type PromiseIntentDispatcher } from '@dxos/app-framework';
10
- import {
11
- type AiConversation,
12
- type AiConversationRunParams,
13
- AiSession,
14
- ArtifactDiffResolver,
15
- createSystemPrompt,
16
- } from '@dxos/assistant';
17
- import { type Blueprint } from '@dxos/blueprints';
18
- import { Context } from '@dxos/context';
19
- import { Obj } from '@dxos/echo';
20
- import { runAndForwardErrors } from '@dxos/effect';
21
- import { log } from '@dxos/log';
22
- import { Filter, type Space, getVersion } from '@dxos/react-client/echo';
23
- import { type ContentBlock, DataType } from '@dxos/schema';
24
-
25
- import { AiServiceOverloadedError } from './errors';
26
- import { type AiChatServices } from './useChatServices';
27
-
28
- // TODO(burdon): Is this still used?
29
- declare global {
30
- interface ToolContextExtensions {
31
- space?: Space;
32
- dispatch?: PromiseIntentDispatcher;
33
- }
34
- }
35
-
36
- export type AiRequestOptions = {
37
- // Empty for now.
38
- };
39
-
40
- export type AiChatProcessorOptions = {
41
- model?: ModelName;
42
- modelRegistry?: ModelRegistry;
43
- blueprintRegistry?: Blueprint.Registry;
44
- observableRegistry?: Registry.Registry;
45
- extensions?: ToolContextExtensions;
46
- } & Pick<AiConversationRunParams<any>, 'system'>;
47
-
48
- const defaultOptions: Partial<AiChatProcessorOptions> = {
49
- model: DEFAULT_EDGE_MODEL,
50
- };
51
-
52
- /**
53
- * Handles interactions with the AI service.
54
- * Maintains a queue of messages and handles streaming responses from the AI service.
55
- * Executes tools based on AI responses.
56
- * Supports cancellation of in-progress requests.
57
- */
58
- export class AiChatProcessor {
59
- /**
60
- * Last error.
61
- */
62
- // TODO(wittjosiah): Error should come from the message stream.
63
- readonly error = Rx.make<Option.Option<Error>>(Option.none());
64
-
65
- /** Rx registry. */
66
- private readonly _observableRegistry: Registry.Registry;
67
-
68
- /** Current session. */
69
- private readonly _session = Rx.make<Option.Option<AiSession>>(Option.none());
70
-
71
- /**
72
- * Current streaming message (from the AI service).
73
- */
74
- private readonly _streaming: Rx.Rx<Result.Result<Option.Option<DataType.Message>, Error>> = Rx.make((get) => {
75
- return pipe(
76
- get(this._session),
77
- Option.map((session) => Stream.fromQueue(session.blockQueue)),
78
- Option.getOrElse(() => Stream.make()),
79
- Stream.scan<Option.Option<DataType.Message>, Option.Option<ContentBlock.Any>>(Option.none(), (acc, blockOption) =>
80
- Option.flatMap(blockOption, (block) =>
81
- acc.pipe(
82
- Option.match({
83
- onNone: () => [block],
84
- onSome: (message) => [...message.blocks.filter((b) => !b.pending), block],
85
- }),
86
- Option.some,
87
- Option.map((blocks) =>
88
- Obj.make(DataType.Message, {
89
- created: new Date().toISOString(),
90
- sender: { role: 'assistant' },
91
- blocks,
92
- }),
93
- ),
94
- ),
95
- ),
96
- ),
97
- );
98
- });
99
-
100
- /**
101
- * Streaming state.
102
- */
103
- readonly streaming: Rx.Rx<boolean> = Rx.make((get) => {
104
- return pipe(
105
- get(this._streaming),
106
- Result.map((streaming) => Option.isSome(streaming)),
107
- Result.getOrElse(() => false),
108
- );
109
- });
110
-
111
- /**
112
- * Pending messages (incl. the current user request).
113
- */
114
- private readonly _pending: Rx.Rx<Result.Result<DataType.Message[], Error>> = Rx.make((get) => {
115
- // TODO(wittjosiah): For some reason using Option.map here loses reactivity.
116
- const session = get(this._session);
117
- return Option.isSome(session)
118
- ? pipe(
119
- session.value.messageQueue,
120
- Stream.fromQueue,
121
- Stream.scan<DataType.Message[], DataType.Message>([], (acc, message) => [...acc, message]),
122
- )
123
- : Stream.make();
124
- });
125
-
126
- /**
127
- * Array of Messages (incl. the current message being streamed).
128
- */
129
- readonly messages: Rx.Rx<Result.Result<DataType.Message[], Error>> = Rx.make((get) => {
130
- const streaming = get(this._streaming);
131
- return Result.map(get(this._pending), (pending) =>
132
- Result.match(streaming, {
133
- onInitial: () => pending,
134
- onSuccess: (streaming) =>
135
- Option.match(streaming.value, {
136
- onNone: () => pending,
137
- onSome: (message) => [...pending, message],
138
- }),
139
- onFailure: () => pending,
140
- }),
141
- );
142
- });
143
-
144
- constructor(
145
- // TODO(dmaretskyi): Replace this with effect's ManagedRuntime wrapping this layer.
146
- private readonly _services: Layer.Layer<AiChatServices>,
147
- private readonly _conversation: AiConversation,
148
- private readonly _options: AiChatProcessorOptions = defaultOptions,
149
- ) {
150
- // Initialize registries and defaults before using in other logic.
151
- this._observableRegistry = this._options.observableRegistry ?? Registry.make();
152
- if (this._options.model && !this._options.system) {
153
- const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};
154
- this._options.system = createSystemPrompt(capabilities);
155
- }
156
- }
157
-
158
- get context() {
159
- return this._conversation.context;
160
- }
161
-
162
- get conversation() {
163
- return this._conversation;
164
- }
165
-
166
- get blueprintRegistry() {
167
- return this._options.blueprintRegistry;
168
- }
169
-
170
- /**
171
- * Make GPT request.
172
- */
173
- async request(message: string, _options: AiRequestOptions = {}): Promise<void> {
174
- await using ctx = Context.default(); // Auto-disposed at the end of this block.
175
-
176
- const session = new AiSession();
177
- this._observableRegistry.set(this._session, Option.some(session));
178
-
179
- ctx.onDispose(() => {
180
- log.info('onDispose', { session, isDisposed: ctx.disposed });
181
- Option.match(this._observableRegistry.get(this._session), {
182
- onSome: (s) => {
183
- if (s === session) {
184
- this._observableRegistry.set(this._session, Option.none());
185
- }
186
- },
187
- onNone: () => {},
188
- });
189
- });
190
-
191
- try {
192
- const messages = await runAndForwardErrors(
193
- this._conversation
194
- .run({
195
- session,
196
- prompt: message,
197
- system: this._options.system,
198
- })
199
- .pipe(
200
- Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),
201
- // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.
202
- Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),
203
- Effect.provide(this._services),
204
- Effect.tapErrorCause((cause) => {
205
- log.error('error', { cause });
206
- return Effect.void;
207
- }),
208
- ),
209
- );
210
-
211
- log('completed', { messages });
212
- } catch (err) {
213
- log.catch(err);
214
- if (err instanceof Error && err.message.includes('Overloaded')) {
215
- this._observableRegistry.set(
216
- this.error,
217
- Option.some(new AiServiceOverloadedError('AI service overloaded', { cause: err })),
218
- );
219
- } else {
220
- this._observableRegistry.set(this.error, Option.some(new Error('AI service error', { cause: err })));
221
- }
222
- }
223
- }
224
-
225
- /**
226
- * Cancel pending requests.
227
- */
228
- async cancel(): Promise<void> {
229
- log.info('cancelling...');
230
-
231
- // TODO(dmaretskyi): Abort using Fiber.interrupt.
232
- }
233
-
234
- private _artifactDiffResolver: ArtifactDiffResolver.Service = {
235
- resolve: async (artifacts) => {
236
- const space = this._options.extensions?.space;
237
- if (!space) {
238
- return new Map();
239
- }
240
-
241
- const versions = new Map();
242
- await Promise.all(
243
- artifacts.map(async (artifact) => {
244
- const {
245
- objects: [object],
246
- } = await space.db.query(Filter.ids(artifact.id)).run();
247
- if (!object) {
248
- return;
249
- }
250
-
251
- versions.set(artifact.id, {
252
- version: getVersion(object),
253
- diff: `Current state: ${JSON.stringify(object)}`,
254
- });
255
- }),
256
- );
257
- return versions;
258
- },
259
- };
260
- }