@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
@@ -2,8 +2,9 @@
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,
@@ -13,26 +14,60 @@ import {
13
14
  contributes,
14
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
22
  import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
21
- import { ROOT_ID, createExtension } from '@dxos/plugin-graph';
22
- import { getActiveSpace, rxFromQuery } from '@dxos/plugin-space';
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 { Filter, Query, type QueryResult, type Space, 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
29
  import { Assistant, AssistantAction } from '../types';
28
30
 
31
+ import { AssistantCapabilities } from './capabilities';
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) => {
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.ref(currentChatDxn) : undefined;
137
+ const currentChat = get(atomFromSignal(() => currentChatRef?.target));
138
+ return 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,11 +197,10 @@ 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
206
  const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { space }));
@@ -2,31 +2,65 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { ToolId } from '@dxos/ai';
6
- import { Capabilities, contributes } from '@dxos/app-framework';
5
+ import { Capabilities, type Capability, contributes } from '@dxos/app-framework';
7
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';
8
20
  import { Blueprint } from '@dxos/blueprints';
21
+ import { type FunctionDefinition } from '@dxos/functions';
9
22
 
10
23
  import { analysis, list, load } from '../functions';
11
24
 
12
- const functions = [analysis, list, load];
13
- const tools: string[] = [
14
- 'get-schemas',
15
- 'create-record',
16
- // 'open-item'
17
- ];
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();
18
46
 
19
- export default () => {
20
- return [
21
- contributes(
22
- Capabilities.BlueprintDefinition,
23
- Blueprint.make({
24
- key: 'dxos.org/blueprint/assistant',
25
- name: 'Assistant',
26
- instructions: templates.system,
27
- tools: [...functions.map((tool) => ToolId.make(tool.name)), ...tools.map((tool) => ToolId.make(tool))],
28
- }),
29
- ),
30
- contributes(Capabilities.Functions, functions),
31
- ];
32
- };
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
+ ];
@@ -2,21 +2,16 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Layer } from 'effect';
6
-
7
- import { type AiService, type AiServiceRouter } from '@dxos/ai';
8
5
  import { defineCapability } from '@dxos/app-framework';
6
+ import { type DeepReadonly } from '@dxos/util';
9
7
 
10
8
  import { meta } from '../meta';
11
9
 
12
10
  export namespace AssistantCapabilities {
13
- export type AiServiceLayer = Layer.Layer<AiService.AiService>;
14
- export const AiServiceLayer = defineCapability<AiServiceLayer>(`${meta.id}/capability/ai-service-factory`);
15
-
16
- /**
17
- * Plugins can contribute them to provide model resolvers.
18
- */
19
- export const AiModelResolver = defineCapability<Layer.Layer<AiServiceRouter.AiModelResolver>>(
20
- `${meta.id}/capability/ai-model-resolver`,
21
- );
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`);
22
17
  }
@@ -2,28 +2,24 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { AnthropicClient } from '@effect/ai-anthropic';
6
- import { FetchHttpClient } from '@effect/platform';
7
- import { Layer } from 'effect';
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
8
 
9
- import { AiServiceRouter } from '@dxos/ai';
10
- import { contributes } from '@dxos/app-framework';
9
+ import * as AiServiceRouter from '@dxos/ai/AiServiceRouter';
10
+ import { Capabilities, type Capability, contributes } from '@dxos/app-framework';
11
11
 
12
- import { AssistantCapabilities } from './capabilities';
13
-
14
- export default () => {
15
- return [
16
- contributes(
17
- AssistantCapabilities.AiModelResolver,
18
- AiServiceRouter.AnthropicResolver.pipe(
19
- Layer.provide(
20
- AnthropicClient.layer({
21
- // TODO(dmaretskyi): Read endpoint from config/settings.
22
- apiUrl: 'https://ai-service.dxos.workers.dev/provider/anthropic',
23
- }),
24
- ),
25
- Layer.provide(FetchHttpClient.layer),
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
+ }),
26
21
  ),
22
+ Layer.provide(FetchHttpClient.layer),
27
23
  ),
28
- ];
29
- };
24
+ ),
25
+ ];
@@ -4,13 +4,16 @@
4
4
 
5
5
  import { lazy } from '@dxos/app-framework';
6
6
 
7
- export * from './capabilities';
8
-
9
7
  export const AiService = lazy(() => import('./ai-service'));
10
8
  export const AppGraphBuilder = lazy(() => import('./app-graph-builder'));
9
+ export const AssistantState = lazy(() => import('./state'));
11
10
  export const BlueprintDefinition = lazy(() => import('./blueprint-definition'));
12
11
  export const EdgeModelResolver = lazy(() => import('./edge-model-resolver'));
13
12
  export const IntentResolver = lazy(() => import('./intent-resolver'));
13
+ export const LocalModelResolver = lazy(() => import('./local-model-resolver'));
14
14
  export const ReactSurface = lazy(() => import('./react-surface'));
15
15
  export const Settings = lazy(() => import('./settings'));
16
16
  export const Toolkit = lazy(() => import('./toolkit'));
17
+
18
+ export * from './blueprint-definition';
19
+ export * from './capabilities';
@@ -2,54 +2,120 @@
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
7
  import { Capabilities, type PluginContext, contributes, createIntent, createResolver } from '@dxos/app-framework';
8
- import { Blueprint, Template } from '@dxos/blueprints';
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';
13
+ import { Filter, Key, Obj, Ref, Type } from '@dxos/echo';
14
+ import { TracingService, serializeFunction } from '@dxos/functions';
15
+ import { AutomationCapabilities } from '@dxos/plugin-automation';
11
16
  import { CollectionAction } from '@dxos/plugin-space/types';
17
+ import { getSpace } from '@dxos/react-client/echo';
18
+ import { type Message } from '@dxos/types';
12
19
 
20
+ import { type AiChatServices, updateName } from '../processor';
13
21
  import { Assistant, AssistantAction } from '../types';
14
22
 
23
+ import { ASSISTANT_BLUEPRINT_KEY, createBlueprint } from './blueprint-definition';
24
+ import { AssistantCapabilities } from './capabilities';
25
+
15
26
  export default (context: PluginContext) => [
16
27
  contributes(Capabilities.IntentResolver, [
17
28
  createResolver({
18
- intent: AssistantAction.OnSpaceCreated,
29
+ intent: AssistantAction.onCreateSpace,
19
30
  resolve: ({ space, rootCollection }) =>
20
31
  Effect.gen(function* () {
21
32
  const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);
22
33
  const { object: chatCollection } = yield* dispatch(
23
- createIntent(CollectionAction.CreateQueryCollection, { typename: Assistant.Chat.typename }),
34
+ createIntent(CollectionAction.CreateQueryCollection, {
35
+ typename: Assistant.Chat.typename,
36
+ }),
24
37
  );
25
38
  const { object: blueprintCollection } = yield* dispatch(
26
- createIntent(CollectionAction.CreateQueryCollection, { typename: Blueprint.Blueprint.typename }),
39
+ createIntent(CollectionAction.CreateQueryCollection, {
40
+ typename: Blueprint.Blueprint.typename,
41
+ }),
42
+ );
43
+ const { object: promptCollection } = yield* dispatch(
44
+ createIntent(CollectionAction.CreateQueryCollection, {
45
+ typename: Type.getTypename(Prompt.Prompt),
46
+ }),
47
+ );
48
+ rootCollection.objects.push(
49
+ Ref.make(chatCollection),
50
+ Ref.make(blueprintCollection),
51
+ Ref.make(promptCollection),
27
52
  );
28
- rootCollection.objects.push(Ref.make(chatCollection), Ref.make(blueprintCollection));
53
+
54
+ // TODO(wittjosiah): Remove once function registry is avaiable.
55
+ space.db.add(serializeFunction(Agent.prompt));
56
+
57
+ // Create default chat.
29
58
  const { object: chat } = yield* dispatch(createIntent(AssistantAction.CreateChat, { space }));
30
59
  space.db.add(chat);
31
-
32
- // TODO(wittjosiah): Create default blueprint.
33
- // const { object: blueprint } = yield* dispatch(createIntent(AssistantAction.CreateBlueprint, { ... }));
34
- // space.db.add(blueprint);
35
60
  }),
36
61
  }),
37
62
  createResolver({
38
63
  intent: AssistantAction.CreateChat,
39
- resolve: ({ space, name }) => ({
64
+ resolve: async ({ space, name }) => {
65
+ const queue = space.queues.create();
66
+ const chat = Assistant.makeChat({ name, queue });
67
+
68
+ // TODO(wittjosiah): This should be a space-level setting.
69
+ // TODO(burdon): Clone when activated. Copy-on-write for template.
70
+ const { objects: blueprints } = await space.db.query(Filter.type(Blueprint.Blueprint)).run();
71
+ let defaultBlueprint = blueprints.find((blueprint) => blueprint.key === ASSISTANT_BLUEPRINT_KEY);
72
+ if (!defaultBlueprint) {
73
+ defaultBlueprint = space.db.add(createBlueprint());
74
+ }
75
+
76
+ const binder = new AiContextBinder(queue);
77
+ await binder.use((binder) => binder.bind({ blueprints: [Ref.make(defaultBlueprint)] }));
78
+
79
+ return {
80
+ data: { object: chat },
81
+ };
82
+ },
83
+ }),
84
+ createResolver({
85
+ intent: AssistantAction.UpdateChatName,
86
+ resolve: async ({ chat }) => {
87
+ const space = getSpace(chat);
88
+ const queue = chat.queue.target as Queue<Message.Message>;
89
+ if (!space || !queue) {
90
+ return;
91
+ }
92
+
93
+ const runtimeResolver = context.getCapability(AutomationCapabilities.ComputeRuntime);
94
+ const runtime = await runtimeResolver
95
+ .getRuntime(space.id)
96
+ .runPromise(Effect.runtime<AiChatServices>().pipe(Effect.provide(TracingService.layerNoop)));
97
+
98
+ await new AiConversation(queue).use(async (conversation) => updateName(runtime, conversation, chat));
99
+ },
100
+ }),
101
+ createResolver({
102
+ intent: AssistantAction.CreateBlueprint,
103
+ resolve: ({ key, name, description }) => ({
40
104
  data: {
41
- object: Obj.make(Assistant.Chat, {
105
+ object: Blueprint.make({
106
+ key,
42
107
  name,
43
- queue: Ref.fromDXN(space.queues.create().dxn),
108
+ description,
109
+ instructions: Template.make(),
44
110
  }),
45
111
  },
46
112
  }),
47
113
  }),
48
114
  createResolver({
49
- intent: AssistantAction.CreateBlueprint,
50
- resolve: ({ key, name, description }) => ({
115
+ intent: AssistantAction.CreatePrompt,
116
+ resolve: ({ name }) => ({
51
117
  data: {
52
- object: Blueprint.make({ key, name, description, instructions: Template.make({ source: '' }) }),
118
+ object: Prompt.make({ name }),
53
119
  },
54
120
  }),
55
121
  }),
@@ -69,5 +135,13 @@ export default (context: PluginContext) => [
69
135
  },
70
136
  }),
71
137
  }),
138
+ createResolver({
139
+ intent: AssistantAction.SetCurrentChat,
140
+ resolve: ({ companionTo, chat }) =>
141
+ Effect.gen(function* () {
142
+ const state = context.getCapability(AssistantCapabilities.MutableState);
143
+ state.currentChat[Obj.getDXN(companionTo).toString()] = chat && Obj.getDXN(chat).toString();
144
+ }),
145
+ }),
72
146
  ]),
73
147
  ];
@@ -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
+ ];