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

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 (483) hide show
  1. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs +158 -0
  4. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs.map +7 -0
  5. package/dist/lib/browser/ChatContainer-2W6FNSJD.mjs +77 -0
  6. package/dist/lib/browser/ChatContainer-2W6FNSJD.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-ZVLXFHEY.mjs → ChatDialog-XQ3KDYWE.mjs} +30 -12
  8. package/dist/lib/browser/ChatDialog-XQ3KDYWE.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-Q7JYGFQV.mjs +59 -0
  10. package/dist/lib/browser/PromptArticle-Q7JYGFQV.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-LM6GVHQO.mjs +199 -0
  14. package/dist/lib/browser/app-graph-builder-LM6GVHQO.mjs.map +7 -0
  15. package/dist/lib/browser/blueprint-definition-VBEOXNBS.mjs +12 -0
  16. package/dist/lib/browser/blueprint-definition-VBEOXNBS.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-5JZRYQZL.mjs +229 -0
  20. package/dist/lib/browser/chunk-5JZRYQZL.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs +335 -0
  22. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  24. package/dist/lib/browser/chunk-J5LGTIGS.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-NC2QNMBF.mjs +176 -0
  28. package/dist/lib/browser/chunk-NC2QNMBF.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-PWSTPQUY.mjs +1929 -0
  30. package/dist/lib/browser/chunk-PWSTPQUY.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-WBG5PTSX.mjs +23 -0
  32. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +7 -0
  33. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
  34. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
  35. package/dist/lib/browser/index.mjs +221 -107
  36. package/dist/lib/browser/index.mjs.map +4 -4
  37. package/dist/lib/browser/intent-resolver-EEYS2GJF.mjs +143 -0
  38. package/dist/lib/browser/intent-resolver-EEYS2GJF.mjs.map +7 -0
  39. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs +17 -0
  40. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs.map +7 -0
  41. package/dist/lib/browser/meta.json +1 -1
  42. package/dist/lib/browser/react-surface-ECKZNDSU.mjs +98 -0
  43. package/dist/lib/browser/react-surface-ECKZNDSU.mjs.map +7 -0
  44. package/dist/lib/browser/repair-3MZXLUHO.mjs +44 -0
  45. package/dist/lib/browser/repair-3MZXLUHO.mjs.map +7 -0
  46. package/dist/lib/browser/{settings-5GTTCVGD.mjs → settings-HD5WA24I.mjs} +8 -7
  47. package/dist/lib/{node-esm/settings-J2EXEM5H.mjs.map → browser/settings-HD5WA24I.mjs.map} +1 -1
  48. package/dist/lib/browser/state-GG7Z3NB7.mjs +25 -0
  49. package/dist/lib/browser/state-GG7Z3NB7.mjs.map +7 -0
  50. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  51. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  52. package/dist/lib/browser/types/index.mjs +7 -4
  53. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs +37 -0
  54. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs.map +7 -0
  55. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs +159 -0
  56. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs.map +7 -0
  57. package/dist/lib/node-esm/{ChatContainer-W3W6FWV3.mjs → ChatContainer-CTUNUEU3.mjs} +38 -15
  58. package/dist/lib/node-esm/ChatContainer-CTUNUEU3.mjs.map +7 -0
  59. package/dist/lib/node-esm/{ChatDialog-QW4JRKVO.mjs → ChatDialog-X42ASXQD.mjs} +30 -12
  60. package/dist/lib/node-esm/ChatDialog-X42ASXQD.mjs.map +7 -0
  61. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.mjs +60 -0
  62. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.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-6XUAGTRS.mjs +200 -0
  66. package/dist/lib/node-esm/app-graph-builder-6XUAGTRS.mjs.map +7 -0
  67. package/dist/lib/node-esm/blueprint-definition-RDCLLIQH.mjs +13 -0
  68. package/dist/lib/node-esm/blueprint-definition-RDCLLIQH.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-25GMMNY5.mjs +178 -0
  70. package/dist/lib/node-esm/chunk-25GMMNY5.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs +264 -0
  72. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs +336 -0
  74. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-E4JSYCWZ.mjs +230 -0
  76. package/dist/lib/node-esm/chunk-E4JSYCWZ.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  78. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-WE6KTH72.mjs +25 -0
  80. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-YWFWT57N.mjs +17 -0
  82. package/dist/lib/node-esm/chunk-YWFWT57N.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-Z37USO4K.mjs +1930 -0
  84. package/dist/lib/node-esm/chunk-Z37USO4K.mjs.map +7 -0
  85. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
  86. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
  87. package/dist/lib/node-esm/index.mjs +221 -107
  88. package/dist/lib/node-esm/index.mjs.map +4 -4
  89. package/dist/lib/node-esm/intent-resolver-4SRYLDK5.mjs +144 -0
  90. package/dist/lib/node-esm/intent-resolver-4SRYLDK5.mjs.map +7 -0
  91. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs +18 -0
  92. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs.map +7 -0
  93. package/dist/lib/node-esm/meta.json +1 -1
  94. package/dist/lib/node-esm/react-surface-NLIG5VAI.mjs +99 -0
  95. package/dist/lib/node-esm/react-surface-NLIG5VAI.mjs.map +7 -0
  96. package/dist/lib/node-esm/repair-RER5H7Y6.mjs +45 -0
  97. package/dist/lib/node-esm/repair-RER5H7Y6.mjs.map +7 -0
  98. package/dist/lib/node-esm/{settings-J2EXEM5H.mjs → settings-YJQVKHH5.mjs} +8 -7
  99. package/dist/lib/{browser/settings-5GTTCVGD.mjs.map → node-esm/settings-YJQVKHH5.mjs.map} +1 -1
  100. package/dist/lib/node-esm/state-FSUHFMDM.mjs +26 -0
  101. package/dist/lib/node-esm/state-FSUHFMDM.mjs.map +7 -0
  102. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  103. package/dist/lib/node-esm/toolkit-HFJZLVIR.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 +10 -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 +12 -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/repair.d.ts +4 -0
  126. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/settings.d.ts +1 -1
  128. package/dist/types/src/capabilities/state.d.ts +4 -0
  129. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  130. package/dist/types/src/capabilities/toolkit.d.ts +4 -0
  131. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  132. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  133. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  134. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  135. package/dist/types/src/components/Chat/Chat.d.ts +35 -21
  136. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  137. package/dist/types/src/components/Chat/events.d.ts +9 -0
  138. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  139. package/dist/types/src/components/ChatCompanion.d.ts +13 -0
  140. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -0
  141. package/dist/types/src/components/ChatContainer.d.ts +9 -6
  142. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  143. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  144. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +7 -0
  145. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -0
  146. package/dist/types/src/components/ChatProgress/index.d.ts +2 -0
  147. package/dist/types/src/components/ChatProgress/index.d.ts.map +1 -0
  148. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  149. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +20 -0
  150. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
  151. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  152. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +4 -5
  153. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  154. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
  155. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  156. package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
  157. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  158. package/dist/types/src/components/ChatThread/ChatThread.d.ts +12 -10
  159. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  160. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +196 -55
  161. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  162. package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
  163. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
  164. package/dist/types/src/components/ChatThread/reducers.d.ts +40 -0
  165. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -0
  166. package/dist/types/src/components/ChatThread/registry.d.ts +11 -0
  167. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  168. package/dist/types/src/components/ChatThread/sync.d.ts +42 -0
  169. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  170. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  171. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  172. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  173. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  174. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
  175. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  176. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +317 -7
  177. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  178. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -1
  179. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  180. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +314 -2
  181. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  182. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +12 -0
  183. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  184. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  185. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  186. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  187. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  188. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +21 -0
  189. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  190. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  191. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  192. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  193. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  194. package/dist/types/src/components/Toolbox/Toolbox.d.ts +6 -11
  195. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  196. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +318 -5
  197. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  198. package/dist/types/src/components/index.d.ts +4 -6
  199. package/dist/types/src/components/index.d.ts.map +1 -1
  200. package/dist/types/src/events.d.ts +1 -1
  201. package/dist/types/src/events.d.ts.map +1 -1
  202. package/dist/types/src/functions/analysis.d.ts +5 -0
  203. package/dist/types/src/functions/analysis.d.ts.map +1 -0
  204. package/dist/types/src/functions/index.d.ts +4 -0
  205. package/dist/types/src/functions/index.d.ts.map +1 -0
  206. package/dist/types/src/functions/object-list.d.ts +10 -0
  207. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  208. package/dist/types/src/functions/object-load.d.ts +8 -0
  209. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  210. package/dist/types/src/hooks/index.d.ts +8 -3
  211. package/dist/types/src/hooks/index.d.ts.map +1 -1
  212. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +25 -0
  213. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
  214. package/dist/types/src/hooks/useChatProcessor.d.ts +8 -19
  215. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  216. package/dist/types/src/hooks/useChatServices.d.ts +5 -6
  217. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  218. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  219. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  220. package/dist/types/src/hooks/useContextBinder.d.ts +4 -0
  221. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
  222. package/dist/types/src/hooks/useContextObjects.d.ts +15 -0
  223. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
  224. package/dist/types/src/hooks/useFilteredTypes.d.ts +4 -0
  225. package/dist/types/src/hooks/useFilteredTypes.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/useOnline.d.ts +3 -0
  229. package/dist/types/src/hooks/useOnline.d.ts.map +1 -0
  230. package/dist/types/src/hooks/usePresets.d.ts +7 -0
  231. package/dist/types/src/hooks/usePresets.d.ts.map +1 -0
  232. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  233. package/dist/types/src/index.d.ts +2 -0
  234. package/dist/types/src/index.d.ts.map +1 -1
  235. package/dist/types/src/meta.d.ts +1 -2
  236. package/dist/types/src/meta.d.ts.map +1 -1
  237. package/dist/types/src/processor/index.d.ts +4 -0
  238. package/dist/types/src/processor/index.d.ts.map +1 -0
  239. package/dist/types/src/{hooks → processor}/presets.d.ts +3 -3
  240. package/dist/types/src/processor/presets.d.ts.map +1 -0
  241. package/dist/types/src/processor/processor.d.ts +74 -0
  242. package/dist/types/src/processor/processor.d.ts.map +1 -0
  243. package/dist/types/src/processor/processor.test.d.ts +2 -0
  244. package/dist/types/src/processor/processor.test.d.ts.map +1 -0
  245. package/dist/types/src/processor/update-name.d.ts +10 -0
  246. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  247. package/dist/types/src/queue-logger.d.ts.map +1 -1
  248. package/dist/types/src/testing/index.d.ts +1 -1
  249. package/dist/types/src/testing/index.d.ts.map +1 -1
  250. package/dist/types/src/testing/test-generator.d.ts +7 -0
  251. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  252. package/dist/types/src/testing/test-sequence.d.ts +0 -4
  253. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  254. package/dist/types/src/testing/test-services.d.ts +2 -2
  255. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  256. package/dist/types/src/translations.d.ts +262 -28
  257. package/dist/types/src/translations.d.ts.map +1 -1
  258. package/dist/types/src/types/Assistant.d.ts +45 -0
  259. package/dist/types/src/types/Assistant.d.ts.map +1 -0
  260. package/dist/types/src/types/AssistantAction.d.ts +129 -0
  261. package/dist/types/src/types/AssistantAction.d.ts.map +1 -0
  262. package/dist/types/src/types/defs.d.ts +2 -0
  263. package/dist/types/src/types/defs.d.ts.map +1 -0
  264. package/dist/types/src/types/index.d.ts +3 -1
  265. package/dist/types/src/types/index.d.ts.map +1 -1
  266. package/dist/types/src/types/service.d.ts +135 -85
  267. package/dist/types/src/types/service.d.ts.map +1 -1
  268. package/dist/types/tsconfig.tsbuildinfo +1 -1
  269. package/package.json +100 -97
  270. package/src/AssistantPlugin.tsx +151 -111
  271. package/src/capabilities/ai-service.ts +27 -0
  272. package/src/capabilities/app-graph-builder.ts +101 -60
  273. package/src/capabilities/blueprint-definition.ts +66 -0
  274. package/src/capabilities/capabilities.ts +17 -0
  275. package/src/capabilities/edge-model-resolver.ts +25 -0
  276. package/src/capabilities/index.ts +10 -0
  277. package/src/capabilities/intent-resolver.ts +89 -26
  278. package/src/capabilities/local-model-resolver.ts +30 -0
  279. package/src/capabilities/react-surface.tsx +24 -75
  280. package/src/capabilities/repair.ts +49 -0
  281. package/src/capabilities/state.ts +22 -0
  282. package/src/capabilities/toolkit.ts +17 -0
  283. package/src/components/AssistantSettings/AssistantSettings.tsx +83 -76
  284. package/src/components/BlueprintArticle.tsx +29 -0
  285. package/src/components/Chat/Chat.tsx +260 -217
  286. package/src/components/Chat/events.ts +13 -0
  287. package/src/components/ChatCompanion.tsx +155 -0
  288. package/src/components/ChatContainer.tsx +36 -20
  289. package/src/components/ChatDialog.tsx +25 -14
  290. package/src/components/ChatProgress/ChatProgress.tsx +67 -0
  291. package/src/components/{SequenceEditor → ChatProgress}/index.ts +1 -1
  292. package/src/components/ChatPrompt/ChatActions.tsx +10 -26
  293. package/src/components/ChatPrompt/ChatOptions.tsx +234 -0
  294. package/src/components/ChatPrompt/ChatPresets.tsx +1 -0
  295. package/src/components/ChatPrompt/ChatReferences.tsx +31 -36
  296. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
  297. package/src/components/ChatPrompt/index.ts +1 -1
  298. package/src/components/ChatThread/ChatThread.stories.tsx +120 -115
  299. package/src/components/ChatThread/ChatThread.tsx +65 -35
  300. package/src/components/ChatThread/Link.tsx +26 -0
  301. package/src/components/ChatThread/reducers.ts +151 -0
  302. package/src/components/ChatThread/registry.tsx +174 -0
  303. package/src/components/ChatThread/sync.test.ts +89 -0
  304. package/src/components/ChatThread/sync.ts +148 -0
  305. package/src/components/ChatThread/testing/thread.md +37 -0
  306. package/src/components/PromptArticle.tsx +51 -0
  307. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +38 -17
  308. package/src/components/TemplateEditor/TemplateEditor.tsx +30 -54
  309. package/src/components/TemplateEditor/TemplateForm.stories.tsx +16 -11
  310. package/src/components/TemplateEditor/TemplateForm.tsx +5 -3
  311. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  312. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  313. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  314. package/src/components/ToolBlock/ToolBlock.tsx +143 -0
  315. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  316. package/src/components/ToolBlock/index.ts +6 -0
  317. package/src/components/Toolbox/Toolbox.stories.tsx +14 -23
  318. package/src/components/Toolbox/Toolbox.tsx +25 -55
  319. package/src/components/index.ts +3 -7
  320. package/src/events.ts +2 -2
  321. package/src/functions/analysis.ts +22 -0
  322. package/src/functions/index.ts +7 -0
  323. package/src/functions/object-list.ts +48 -0
  324. package/src/functions/object-load.ts +45 -0
  325. package/src/hooks/index.ts +8 -4
  326. package/src/hooks/useBlueprintRegistry.ts +95 -0
  327. package/src/hooks/useChatProcessor.ts +35 -104
  328. package/src/hooks/useChatServices.ts +33 -49
  329. package/src/hooks/useChatToolbarActions.ts +122 -0
  330. package/src/hooks/useContextBinder.ts +30 -0
  331. package/src/hooks/useContextObjects.ts +58 -0
  332. package/src/hooks/useFilteredTypes.ts +38 -0
  333. package/src/hooks/useFlush.ts +35 -0
  334. package/src/hooks/useOnline.ts +10 -0
  335. package/src/hooks/usePresets.ts +44 -0
  336. package/src/hooks/useReferencesProvider.ts +13 -10
  337. package/src/index.ts +2 -0
  338. package/src/meta.ts +9 -6
  339. package/src/processor/index.ts +7 -0
  340. package/src/{hooks → processor}/presets.ts +16 -8
  341. package/src/processor/processor.test.ts +71 -0
  342. package/src/processor/processor.ts +277 -0
  343. package/src/processor/update-name.ts +56 -0
  344. package/src/queue-logger.ts +13 -17
  345. package/src/testing/index.ts +1 -1
  346. package/src/testing/test-generator.ts +261 -0
  347. package/src/testing/test-sequence.ts +2 -27
  348. package/src/testing/test-services.ts +2 -8
  349. package/src/translations.ts +49 -18
  350. package/src/types/Assistant.ts +63 -0
  351. package/src/types/AssistantAction.ts +79 -0
  352. package/src/types/defs.ts +5 -0
  353. package/src/types/index.ts +4 -1
  354. package/src/types/service.ts +17 -9
  355. package/src/vite-env.d.ts +30 -0
  356. package/dist/lib/browser/BlueprintContainer-IZ4AK5EO.mjs +0 -28
  357. package/dist/lib/browser/BlueprintContainer-IZ4AK5EO.mjs.map +0 -7
  358. package/dist/lib/browser/ChatContainer-RP3QEXYX.mjs +0 -54
  359. package/dist/lib/browser/ChatContainer-RP3QEXYX.mjs.map +0 -7
  360. package/dist/lib/browser/ChatDialog-ZVLXFHEY.mjs.map +0 -7
  361. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs +0 -162
  362. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
  363. package/dist/lib/browser/app-graph-builder-XSEOKJLG.mjs +0 -164
  364. package/dist/lib/browser/app-graph-builder-XSEOKJLG.mjs.map +0 -7
  365. package/dist/lib/browser/chunk-63GG6U6D.mjs +0 -2226
  366. package/dist/lib/browser/chunk-63GG6U6D.mjs.map +0 -7
  367. package/dist/lib/browser/chunk-7W7LHTRH.mjs +0 -171
  368. package/dist/lib/browser/chunk-7W7LHTRH.mjs.map +0 -7
  369. package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
  370. package/dist/lib/browser/chunk-FDCJSQYF.mjs.map +0 -7
  371. package/dist/lib/browser/chunk-KFXSBNZR.mjs +0 -89
  372. package/dist/lib/browser/chunk-KFXSBNZR.mjs.map +0 -7
  373. package/dist/lib/browser/chunk-LERGF5YG.mjs +0 -108
  374. package/dist/lib/browser/chunk-LERGF5YG.mjs.map +0 -7
  375. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs +0 -75
  376. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs.map +0 -7
  377. package/dist/lib/browser/react-surface-3GYEHQRP.mjs +0 -150
  378. package/dist/lib/browser/react-surface-3GYEHQRP.mjs.map +0 -7
  379. package/dist/lib/node-esm/BlueprintContainer-RGTMNLNX.mjs +0 -29
  380. package/dist/lib/node-esm/BlueprintContainer-RGTMNLNX.mjs.map +0 -7
  381. package/dist/lib/node-esm/ChatContainer-W3W6FWV3.mjs.map +0 -7
  382. package/dist/lib/node-esm/ChatDialog-QW4JRKVO.mjs.map +0 -7
  383. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs +0 -163
  384. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
  385. package/dist/lib/node-esm/app-graph-builder-PANCJUHV.mjs +0 -165
  386. package/dist/lib/node-esm/app-graph-builder-PANCJUHV.mjs.map +0 -7
  387. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs +0 -2227
  388. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs.map +0 -7
  389. package/dist/lib/node-esm/chunk-MS3PJARN.mjs +0 -109
  390. package/dist/lib/node-esm/chunk-MS3PJARN.mjs.map +0 -7
  391. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
  392. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs.map +0 -7
  393. package/dist/lib/node-esm/chunk-VIIMA3XQ.mjs +0 -90
  394. package/dist/lib/node-esm/chunk-VIIMA3XQ.mjs.map +0 -7
  395. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs +0 -172
  396. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs.map +0 -7
  397. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs +0 -76
  398. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs.map +0 -7
  399. package/dist/lib/node-esm/react-surface-QDQWJ7FZ.mjs +0 -151
  400. package/dist/lib/node-esm/react-surface-QDQWJ7FZ.mjs.map +0 -7
  401. package/dist/types/src/capability-definitions.d.ts +0 -7
  402. package/dist/types/src/capability-definitions.d.ts.map +0 -1
  403. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  404. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  405. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
  406. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
  407. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -17
  408. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  409. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  410. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  411. package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
  412. package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
  413. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  414. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  415. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  416. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  417. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  418. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  419. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -8
  420. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  421. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  422. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  423. package/dist/types/src/hooks/chat-processor.d.ts +0 -86
  424. package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
  425. package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
  426. package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
  427. package/dist/types/src/hooks/presets.d.ts.map +0 -1
  428. package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
  429. package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
  430. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  431. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  432. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  433. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  434. package/dist/types/src/parser/index.d.ts +0 -4
  435. package/dist/types/src/parser/index.d.ts.map +0 -1
  436. package/dist/types/src/parser/query-parser.d.ts +0 -15
  437. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  438. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  439. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  440. package/dist/types/src/parser/types.d.ts +0 -24
  441. package/dist/types/src/parser/types.d.ts.map +0 -1
  442. package/dist/types/src/stories/Chat.stories.d.ts +0 -207
  443. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  444. package/dist/types/src/testing/test-functions.d.ts +0 -3
  445. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  446. package/dist/types/src/tools/function.d.ts +0 -5
  447. package/dist/types/src/tools/function.d.ts.map +0 -1
  448. package/dist/types/src/tools/index.d.ts +0 -3
  449. package/dist/types/src/tools/index.d.ts.map +0 -1
  450. package/dist/types/src/tools/openapi.d.ts +0 -10
  451. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  452. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  453. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  454. package/dist/types/src/types/schema.d.ts +0 -120
  455. package/dist/types/src/types/schema.d.ts.map +0 -1
  456. package/src/capability-definitions.ts +0 -15
  457. package/src/components/BlueprintContainer.tsx +0 -24
  458. package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
  459. package/src/components/ChatThread/ChatMessage.tsx +0 -268
  460. package/src/components/ChatThread/ToolBlock.tsx +0 -121
  461. package/src/components/ChatThread/reducer.ts +0 -52
  462. package/src/components/PromptSettings.tsx +0 -89
  463. package/src/components/SequenceContainer.tsx +0 -132
  464. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -32
  465. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  466. package/src/hooks/chat-processor.test.ts +0 -16
  467. package/src/hooks/chat-processor.ts +0 -314
  468. package/src/hooks/useBlueprints.ts +0 -57
  469. package/src/parser/filter-generator.test.ts +0 -32
  470. package/src/parser/filter-generator.ts +0 -81
  471. package/src/parser/index.ts +0 -7
  472. package/src/parser/query-parser.test.ts +0 -139
  473. package/src/parser/query-parser.ts +0 -199
  474. package/src/parser/types.ts +0 -34
  475. package/src/shims.d.ts +0 -8
  476. package/src/stories/Chat.stories.tsx +0 -371
  477. package/src/testing/test-functions.ts +0 -11
  478. package/src/tools/function.ts +0 -46
  479. package/src/tools/index.ts +0 -6
  480. package/src/tools/openapi.test.ts +0 -217
  481. package/src/tools/openapi.ts +0 -338
  482. package/src/types/schema.ts +0 -108
  483. package/src/typings.d.ts +0 -9
@@ -2,37 +2,72 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Rx } from '@effect-rx/rx-react';
6
- import { Option, pipe } from 'effect';
5
+ import { Atom } from '@effect-atom/atom-react';
6
+ import * as Function from 'effect/Function';
7
+ import * as Option from 'effect/Option';
7
8
 
8
9
  import {
9
10
  Capabilities,
10
- contributes,
11
- createIntent,
12
11
  LayoutAction,
13
- type PromiseIntentDispatcher,
14
12
  type PluginContext,
13
+ type PromiseIntentDispatcher,
14
+ contributes,
15
+ createIntent,
15
16
  } from '@dxos/app-framework';
17
+ import { Prompt } from '@dxos/blueprints';
16
18
  import { Sequence } from '@dxos/conductor';
17
- import { Obj } from '@dxos/echo';
19
+ import { DXN, Obj } from '@dxos/echo';
18
20
  import { invariant } from '@dxos/invariant';
19
21
  import { ClientCapabilities } from '@dxos/plugin-client';
20
- import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
21
- import { createExtension, ROOT_ID } from '@dxos/plugin-graph';
22
- import { getActiveSpace, rxFromQuery } from '@dxos/plugin-space';
22
+ import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
23
+ import { ROOT_ID, atomFromSignal, createExtension } from '@dxos/plugin-graph';
24
+ import { getActiveSpace } from '@dxos/plugin-space';
23
25
  import { SpaceAction } from '@dxos/plugin-space/types';
24
- import { type Space, Filter, Query, type QueryResult, fullyQualifiedId, getSpace } from '@dxos/react-client/echo';
26
+ import { Query, type Space, getSpace } from '@dxos/react-client/echo';
25
27
 
26
28
  import { ASSISTANT_DIALOG, meta } from '../meta';
27
- import { Assistant } from '../types';
29
+ import { Assistant, AssistantAction } from '../types';
30
+
31
+ import { AssistantCapabilities } from './capabilities';
28
32
 
29
33
  export default (context: PluginContext) =>
30
34
  contributes(Capabilities.AppGraphBuilder, [
35
+ createExtension({
36
+ id: `${meta.id}/root`,
37
+ actions: (node) =>
38
+ Atom.make((get) =>
39
+ Function.pipe(
40
+ get(node),
41
+ Option.flatMap((node) => {
42
+ return Obj.instanceOf(Assistant.Chat, node.data) ? Option.some(node.data) : Option.none();
43
+ }),
44
+ Option.map((object) => {
45
+ const id = Obj.getDXN(object).toString();
46
+ return [
47
+ {
48
+ id: `${AssistantAction.UpdateChatName._tag}/${id}`,
49
+ data: async () => {
50
+ const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
51
+ await dispatch(createIntent(AssistantAction.UpdateChatName, { chat: object }));
52
+ },
53
+ properties: {
54
+ label: ['chat update name label', { ns: meta.id }],
55
+ icon: 'ph--magic-wand--regular',
56
+ disposition: 'list-item',
57
+ },
58
+ },
59
+ ];
60
+ }),
61
+ Option.getOrElse(() => []),
62
+ ),
63
+ ),
64
+ }),
65
+
31
66
  createExtension({
32
67
  id: `${meta.id}/assistant`,
33
68
  actions: (node) =>
34
- Rx.make((get) =>
35
- pipe(
69
+ Atom.make((get) =>
70
+ Function.pipe(
36
71
  get(node),
37
72
  Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
38
73
  Option.map(() => [
@@ -79,61 +114,68 @@ export default (context: PluginContext) =>
79
114
  }),
80
115
 
81
116
  createExtension({
82
- id: `${meta.id}/object-chat-companion`,
117
+ id: `${meta.id}/companion-chat`,
83
118
  connector: (node) => {
84
- let query: QueryResult<Assistant.Chat> | undefined;
85
- return Rx.make((get) => {
86
- const nodeOption = get(node);
87
- if (Option.isNone(nodeOption)) {
88
- return [];
89
- }
90
-
91
- const object = nodeOption.value.data;
92
- if (!Obj.isObject(object)) {
93
- return [];
94
- }
95
-
96
- const space = getSpace(object);
97
- if (!space) {
98
- return [];
99
- }
100
-
101
- if (!query) {
102
- query = space.db.query(Query.select(Filter.ids(object.id)).targetOf(Assistant.CompanionTo).source());
103
- }
119
+ return Atom.make((get) =>
120
+ Function.pipe(
121
+ get(node),
122
+ Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node.data) : Option.none())),
123
+ Option.flatMap((object): Option.Option<{ object: Obj.Any; currentChat: Obj.Any | undefined }> => {
124
+ const currentChatState = get(
125
+ atomFromSignal(
126
+ () => context.getCapability(AssistantCapabilities.State).currentChat[Obj.getDXN(object).toString()],
127
+ ),
128
+ );
129
+ // If no state, continue to allow chat initialization.
130
+ if (!currentChatState) {
131
+ return Option.some({ object, currentChat: undefined });
132
+ }
104
133
 
105
- const chat = get(rxFromQuery(query))[0];
106
- return [
107
- {
108
- id: [fullyQualifiedId(object), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),
109
- type: PLANK_COMPANION_TYPE,
110
- data: chat ?? 'assistant-chat',
111
- properties: {
112
- label: ['assistant chat label', { ns: meta.id }],
113
- icon: 'ph--sparkle--regular',
114
- position: 'hoist',
115
- disposition: 'hidden',
116
- },
117
- },
118
- ];
119
- });
134
+ const space = getSpace(object);
135
+ const currentChatDxn = DXN.tryParse(currentChatState);
136
+ const currentChatRef = currentChatDxn ? space?.db.makeRef(currentChatDxn) : undefined;
137
+ const currentChat = get(atomFromSignal(() => currentChatRef?.target));
138
+ return Obj.isObject(currentChat) ? Option.some({ object, currentChat }) : Option.none();
139
+ }),
140
+ Option.map(({ object, currentChat }) => {
141
+ return [
142
+ {
143
+ id: [Obj.getDXN(object).toString(), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),
144
+ type: PLANK_COMPANION_TYPE,
145
+ data: currentChat ?? 'assistant-chat',
146
+ properties: {
147
+ label: ['assistant chat label', { ns: meta.id }],
148
+ icon: 'ph--sparkle--regular',
149
+ position: 'hoist',
150
+ disposition: 'hidden',
151
+ },
152
+ },
153
+ ];
154
+ }),
155
+ Option.getOrElse(() => []),
156
+ ),
157
+ );
120
158
  },
121
159
  }),
122
160
 
123
161
  createExtension({
124
- id: `${meta.id}/sequence-logs`,
162
+ id: `${meta.id}/invocations`,
125
163
  connector: (node) =>
126
- Rx.make((get) =>
127
- pipe(
164
+ Atom.make((get) =>
165
+ Function.pipe(
128
166
  get(node),
129
- Option.flatMap((node) => (Obj.instanceOf(Sequence, node.data) ? Option.some(node) : Option.none())),
167
+ Option.flatMap((node) =>
168
+ Obj.instanceOf(Sequence, node.data) || Obj.instanceOf(Prompt.Prompt, node.data)
169
+ ? Option.some(node)
170
+ : Option.none(),
171
+ ),
130
172
  Option.map((node) => [
131
173
  {
132
- id: [node.id, 'logs'].join(ATTENDABLE_PATH_SEPARATOR),
174
+ id: [node.id, 'invocations'].join(ATTENDABLE_PATH_SEPARATOR),
133
175
  type: PLANK_COMPANION_TYPE,
134
- data: 'logs',
176
+ data: 'invocations',
135
177
  properties: {
136
- label: ['sequence logs label', { ns: meta.id }],
178
+ label: ['invocations label', { ns: meta.id }],
137
179
  icon: 'ph--clock-countdown--regular',
138
180
  disposition: 'hidden',
139
181
  },
@@ -155,14 +197,13 @@ const getOrCreateChat = async (
155
197
  const { objects: relatedChats } = await space.db
156
198
  .query(Query.type(Assistant.Chat).sourceOf(Assistant.CompanionTo).source())
157
199
  .run();
200
+
158
201
  const chats = allChats.filter((chat) => !relatedChats.includes(chat));
159
- // console.log('objects', JSON.stringify(objects, null, 2));
160
202
  if (chats.length > 0) {
161
- // TODO(burdon): Is this the most recent?
162
- return chats[chats.length - 1];
203
+ return chats.at(-1);
163
204
  }
164
205
 
165
- const { data } = await dispatch(createIntent(Assistant.CreateChat, { space }));
206
+ const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { space }));
166
207
  invariant(Obj.instanceOf(Assistant.Chat, data?.object));
167
208
  await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));
168
209
  return data.object;
@@ -0,0 +1,66 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capabilities, type Capability, contributes } from '@dxos/app-framework';
6
+ import { templates } from '@dxos/assistant';
7
+ import {
8
+ Agent,
9
+ AssistantToolkit,
10
+ Discord,
11
+ DiscordBlueprint,
12
+ EntityExtraction,
13
+ Linear,
14
+ LinearBlueprint,
15
+ Research,
16
+ ResearchBlueprint,
17
+ SystemToolkit,
18
+ WebSearchBlueprint,
19
+ } from '@dxos/assistant-toolkit';
20
+ import { Blueprint } from '@dxos/blueprints';
21
+ import { type FunctionDefinition } from '@dxos/functions';
22
+
23
+ import { analysis, list, load } from '../functions';
24
+
25
+ // TODO(burdon): Document plugin structure (blueprint, functions, toolkit.)
26
+ // TODO(burdon): Test framework for developing functions. Error handling.
27
+ // TODO(burdon): Function naming pattern (noun-verb); fully-qualified?
28
+
29
+ // TODO(wittjosiah): Factor out to a generic app-framework blueprint.
30
+ const deckTools = ['open-item'];
31
+
32
+ const functions: FunctionDefinition[] = [analysis, list, load];
33
+ const tools = [...AssistantToolkit.tools, ...SystemToolkit.tools, ...deckTools];
34
+
35
+ export const ASSISTANT_BLUEPRINT_KEY = 'dxos.org/blueprint/assistant';
36
+
37
+ export const createBlueprint = (): Blueprint.Blueprint =>
38
+ Blueprint.make({
39
+ key: ASSISTANT_BLUEPRINT_KEY,
40
+ name: 'Assistant',
41
+ tools: Blueprint.toolDefinitions({ functions, tools }),
42
+ instructions: templates.system,
43
+ });
44
+
45
+ const blueprint = createBlueprint();
46
+
47
+ export default (): Capability<any>[] => [
48
+ contributes(Capabilities.Functions, functions),
49
+ contributes(Capabilities.BlueprintDefinition, blueprint),
50
+
51
+ // TODO(burdon): Factor out.
52
+ contributes(Capabilities.Functions, [Research.create, Research.research]),
53
+ contributes(Capabilities.BlueprintDefinition, ResearchBlueprint),
54
+
55
+ // TODO(burdon): Factor out.
56
+ contributes(Capabilities.Functions, [Agent.prompt, EntityExtraction.extract]),
57
+ contributes(Capabilities.BlueprintDefinition, WebSearchBlueprint),
58
+
59
+ // TODO(burdon): Factor out.
60
+ contributes(Capabilities.Functions, [Discord.fetch]),
61
+ contributes(Capabilities.BlueprintDefinition, DiscordBlueprint),
62
+
63
+ // TODO(burdon): Factor out.
64
+ contributes(Capabilities.Functions, [Linear.sync]),
65
+ contributes(Capabilities.BlueprintDefinition, LinearBlueprint),
66
+ ];
@@ -0,0 +1,17 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { defineCapability } from '@dxos/app-framework';
6
+ import { type DeepReadonly } from '@dxos/util';
7
+
8
+ import { meta } from '../meta';
9
+
10
+ export namespace AssistantCapabilities {
11
+ export type AssistantState = {
12
+ /** Map of primary object dxn to current chat dxn. */
13
+ currentChat: Record<string, string | undefined>;
14
+ };
15
+ export const State = defineCapability<DeepReadonly<AssistantState>>(`${meta.id}/capability/state`);
16
+ export const MutableState = defineCapability<AssistantState>(`${meta.id}/capability/state`);
17
+ }
@@ -0,0 +1,25 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as AnthropicClient from '@effect/ai-anthropic/AnthropicClient';
6
+ import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
7
+ import * as Layer from 'effect/Layer';
8
+
9
+ import * as AiServiceRouter from '@dxos/ai/AiServiceRouter';
10
+ import { Capabilities, type Capability, contributes } from '@dxos/app-framework';
11
+
12
+ export default (): Capability<any>[] => [
13
+ contributes(
14
+ Capabilities.AiModelResolver,
15
+ AiServiceRouter.AnthropicResolver.pipe(
16
+ Layer.provide(
17
+ AnthropicClient.layer({
18
+ // TODO(dmaretskyi): Read endpoint from config/settings.
19
+ apiUrl: 'https://ai-service.dxos.workers.dev/provider/anthropic',
20
+ }),
21
+ ),
22
+ Layer.provide(FetchHttpClient.layer),
23
+ ),
24
+ ),
25
+ ];
@@ -4,7 +4,17 @@
4
4
 
5
5
  import { lazy } from '@dxos/app-framework';
6
6
 
7
+ export const AiService = lazy(() => import('./ai-service'));
7
8
  export const AppGraphBuilder = lazy(() => import('./app-graph-builder'));
9
+ export const AssistantState = lazy(() => import('./state'));
10
+ export const BlueprintDefinition = lazy(() => import('./blueprint-definition'));
11
+ export const EdgeModelResolver = lazy(() => import('./edge-model-resolver'));
8
12
  export const IntentResolver = lazy(() => import('./intent-resolver'));
13
+ export const LocalModelResolver = lazy(() => import('./local-model-resolver'));
9
14
  export const ReactSurface = lazy(() => import('./react-surface'));
15
+ export const Repair = lazy(() => import('./repair'));
10
16
  export const Settings = lazy(() => import('./settings'));
17
+ export const Toolkit = lazy(() => import('./toolkit'));
18
+
19
+ export * from './blueprint-definition';
20
+ export * from './capabilities';
@@ -2,58 +2,113 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Effect } from 'effect';
5
+ import * as Effect from 'effect/Effect';
6
6
 
7
- import { Capabilities, contributes, createIntent, createResolver, type PluginContext } from '@dxos/app-framework';
8
- import { Blueprint } from '@dxos/blueprints';
7
+ import { Capabilities, type PluginContext, contributes, createIntent, createResolver } from '@dxos/app-framework';
8
+ import { AiContextBinder, AiConversation } from '@dxos/assistant';
9
+ import { Agent } from '@dxos/assistant-toolkit';
10
+ import { Blueprint, Prompt, Template } from '@dxos/blueprints';
11
+ import { type Queue } from '@dxos/client/echo';
9
12
  import { Sequence } from '@dxos/conductor';
10
- import { Key, Obj, Ref } from '@dxos/echo';
11
- import { CollectionAction } from '@dxos/plugin-space/types';
13
+ import { Filter, Key, Obj, Ref, Type } from '@dxos/echo';
14
+ import { TracingService, serializeFunction } from '@dxos/functions';
15
+ import { AutomationCapabilities } from '@dxos/plugin-automation';
16
+ import { getSpace } from '@dxos/react-client/echo';
17
+ import { Collection } from '@dxos/schema';
18
+ import { type Message } from '@dxos/types';
12
19
 
13
- import { Assistant } from '../types';
20
+ import { type AiChatServices, updateName } from '../processor';
21
+ import { Assistant, AssistantAction } from '../types';
22
+
23
+ import { ASSISTANT_BLUEPRINT_KEY, createBlueprint } from './blueprint-definition';
24
+ import { AssistantCapabilities } from './capabilities';
14
25
 
15
26
  export default (context: PluginContext) => [
16
27
  contributes(Capabilities.IntentResolver, [
17
28
  createResolver({
18
- intent: Assistant.OnSpaceCreated,
29
+ intent: AssistantAction.OnCreateSpace,
19
30
  resolve: ({ space, rootCollection }) =>
20
31
  Effect.gen(function* () {
21
32
  const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);
22
- const { object: chatCollection } = yield* dispatch(
23
- createIntent(CollectionAction.CreateQueryCollection, { typename: Assistant.Chat.typename }),
24
- );
25
- const { object: blueprintCollection } = yield* dispatch(
26
- createIntent(CollectionAction.CreateQueryCollection, { typename: Blueprint.Blueprint.typename }),
33
+ const chatCollection = Collection.makeManaged({ key: Assistant.Chat.typename });
34
+ const blueprintCollection = Collection.makeManaged({ key: Blueprint.Blueprint.typename });
35
+ const promptCollection = Collection.makeManaged({ key: Type.getTypename(Prompt.Prompt) });
36
+ rootCollection.objects.push(
37
+ Ref.make(chatCollection),
38
+ Ref.make(blueprintCollection),
39
+ Ref.make(promptCollection),
27
40
  );
28
- rootCollection.objects.push(Ref.make(chatCollection), Ref.make(blueprintCollection));
29
41
 
30
- const { object: chat } = yield* dispatch(createIntent(Assistant.CreateChat, { space }));
31
- space.db.add(chat);
42
+ // TODO(wittjosiah): Remove once function registry is avaiable.
43
+ space.db.add(serializeFunction(Agent.prompt));
32
44
 
33
- // TODO(wittjosiah): Create default blueprint.
34
- // const { object: blueprint } = yield* dispatch(createIntent(Assistant.CreateBlueprint, { ... }));
35
- // space.db.add(blueprint);
45
+ // Create default chat.
46
+ const { object: chat } = yield* dispatch(createIntent(AssistantAction.CreateChat, { space }));
47
+ space.db.add(chat);
36
48
  }),
37
49
  }),
38
50
  createResolver({
39
- intent: Assistant.CreateChat,
40
- resolve: ({ space, name }) => ({
51
+ intent: AssistantAction.CreateChat,
52
+ resolve: async ({ space, name }) => {
53
+ const queue = space.queues.create();
54
+ const chat = Assistant.makeChat({ name, queue });
55
+
56
+ // TODO(wittjosiah): This should be a space-level setting.
57
+ // TODO(burdon): Clone when activated. Copy-on-write for template.
58
+ const { objects: blueprints } = await space.db.query(Filter.type(Blueprint.Blueprint)).run();
59
+ let defaultBlueprint = blueprints.find((blueprint) => blueprint.key === ASSISTANT_BLUEPRINT_KEY);
60
+ if (!defaultBlueprint) {
61
+ defaultBlueprint = space.db.add(createBlueprint());
62
+ }
63
+
64
+ const binder = new AiContextBinder(queue);
65
+ await binder.use((binder) => binder.bind({ blueprints: [Ref.make(defaultBlueprint)] }));
66
+
67
+ return {
68
+ data: { object: chat },
69
+ };
70
+ },
71
+ }),
72
+ createResolver({
73
+ intent: AssistantAction.UpdateChatName,
74
+ resolve: async ({ chat }) => {
75
+ const space = getSpace(chat);
76
+ const queue = chat.queue.target as Queue<Message.Message>;
77
+ if (!space || !queue) {
78
+ return;
79
+ }
80
+
81
+ const runtimeResolver = context.getCapability(AutomationCapabilities.ComputeRuntime);
82
+ const runtime = await runtimeResolver
83
+ .getRuntime(space.id)
84
+ .runPromise(Effect.runtime<AiChatServices>().pipe(Effect.provide(TracingService.layerNoop)));
85
+
86
+ await new AiConversation(queue).use(async (conversation) => updateName(runtime, conversation, chat));
87
+ },
88
+ }),
89
+ createResolver({
90
+ intent: AssistantAction.CreateBlueprint,
91
+ resolve: ({ key, name, description }) => ({
41
92
  data: {
42
- object: Obj.make(Assistant.Chat, {
93
+ object: Blueprint.make({
94
+ key,
43
95
  name,
44
- queue: Ref.fromDXN(space.queues.create().dxn),
96
+ description,
97
+ instructions: Template.make(),
45
98
  }),
46
99
  },
47
100
  }),
48
101
  }),
49
102
  createResolver({
50
- intent: Assistant.CreateBlueprint,
51
- resolve: ({ name, description }) => ({
52
- data: { object: Blueprint.make({ name, description }) },
103
+ intent: AssistantAction.CreatePrompt,
104
+ resolve: ({ name }) => ({
105
+ data: {
106
+ object: Prompt.make({ name }),
107
+ },
53
108
  }),
54
109
  }),
55
110
  createResolver({
56
- intent: Assistant.CreateSequence,
111
+ intent: AssistantAction.CreateSequence,
57
112
  resolve: ({ name }) => ({
58
113
  data: {
59
114
  object: Obj.make(Sequence, {
@@ -68,5 +123,13 @@ export default (context: PluginContext) => [
68
123
  },
69
124
  }),
70
125
  }),
126
+ createResolver({
127
+ intent: AssistantAction.SetCurrentChat,
128
+ resolve: ({ companionTo, chat }) =>
129
+ Effect.gen(function* () {
130
+ const state = context.getCapability(AssistantCapabilities.MutableState);
131
+ state.currentChat[Obj.getDXN(companionTo).toString()] = chat && Obj.getDXN(chat).toString();
132
+ }),
133
+ }),
71
134
  ]),
72
135
  ];
@@ -0,0 +1,30 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as OpenAiClient from '@effect/ai-openai/OpenAiClient';
6
+ import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
7
+ import * as Layer from 'effect/Layer';
8
+
9
+ import * as AiServiceRouter from '@dxos/ai/AiServiceRouter';
10
+ import { Capabilities, type Capability, contributes } from '@dxos/app-framework';
11
+
12
+ /**
13
+ * To start LM Studio server:
14
+ * ```bash
15
+ * ~/.lmstudio/bin/lms server start --cors
16
+ * ```
17
+ */
18
+ export default (): Capability<any>[] => [
19
+ contributes(
20
+ Capabilities.AiModelResolver,
21
+ AiServiceRouter.LMStudioResolver.pipe(
22
+ Layer.provide(
23
+ OpenAiClient.layer({
24
+ apiUrl: AiServiceRouter.DEFAULT_LMSTUDIO_ENDPOINT,
25
+ }),
26
+ ),
27
+ Layer.provide(FetchHttpClient.layer),
28
+ ),
29
+ ),
30
+ ];