@dxos/plugin-assistant 0.8.4-main.406dc2a → 0.8.4-main.548089c

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 (318) hide show
  1. package/dist/lib/browser/BlueprintArticle-UGPRZRBG.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-UGPRZRBG.mjs.map +7 -0
  3. package/dist/lib/browser/{ChatCompanion-BDZ55ZRF.mjs → ChatCompanion-BZGANK56.mjs} +58 -50
  4. package/dist/lib/browser/ChatCompanion-BZGANK56.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-RYGNN73X.mjs → ChatContainer-OG6Y3NHI.mjs} +22 -18
  6. package/dist/lib/browser/ChatContainer-OG6Y3NHI.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-MVHH2U66.mjs → ChatDialog-NKNUCC3R.mjs} +8 -4
  8. package/dist/lib/browser/ChatDialog-NKNUCC3R.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-QNJAXD5Y.mjs +89 -0
  10. package/dist/lib/browser/PromptArticle-QNJAXD5Y.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-builder-2U7SLCRX.mjs → app-graph-builder-CJ5ZUG5I.mjs} +62 -17
  12. package/dist/lib/browser/app-graph-builder-CJ5ZUG5I.mjs.map +7 -0
  13. package/dist/lib/browser/{blueprint-definition-NSJARW5U.mjs → blueprint-definition-5FT5JGPY.mjs} +4 -4
  14. package/dist/lib/browser/chunk-AO6XHMQ7.mjs +262 -0
  15. package/dist/lib/browser/chunk-AO6XHMQ7.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-FP56WB24.mjs → chunk-BNTPFZ7O.mjs} +30 -13
  17. package/dist/lib/browser/chunk-BNTPFZ7O.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs +335 -0
  19. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-2CE2KPKZ.mjs → chunk-IXIIS4QA.mjs} +37 -36
  21. package/dist/lib/browser/chunk-IXIIS4QA.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-5EGXHCAZ.mjs → chunk-LRE4VEZV.mjs} +2 -2
  23. package/dist/lib/browser/chunk-LRE4VEZV.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-WBG5PTSX.mjs +23 -0
  25. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +7 -0
  26. package/dist/lib/browser/{chunk-WRJGOT5P.mjs → chunk-Y4C2CMME.mjs} +772 -620
  27. package/dist/lib/browser/chunk-Y4C2CMME.mjs.map +7 -0
  28. package/dist/lib/browser/index.mjs +78 -62
  29. package/dist/lib/browser/index.mjs.map +3 -3
  30. package/dist/lib/browser/{intent-resolver-3GOJMBXJ.mjs → intent-resolver-42A4SLIQ.mjs} +49 -20
  31. package/dist/lib/browser/intent-resolver-42A4SLIQ.mjs.map +7 -0
  32. package/dist/lib/browser/{local-model-resolver-GO6ZEMLL.mjs → local-model-resolver-34MVHRKD.mjs} +2 -2
  33. package/dist/lib/browser/{local-model-resolver-GO6ZEMLL.mjs.map → local-model-resolver-34MVHRKD.mjs.map} +2 -2
  34. package/dist/lib/browser/meta.json +1 -1
  35. package/dist/lib/browser/{react-surface-FTKCE6GG.mjs → react-surface-TULJF2Y3.mjs} +22 -31
  36. package/dist/lib/browser/react-surface-TULJF2Y3.mjs.map +7 -0
  37. package/dist/lib/browser/{settings-HBF32KV6.mjs → settings-NYJGNQ5I.mjs} +3 -3
  38. package/dist/lib/browser/{state-LXTS54DI.mjs → state-GG7Z3NB7.mjs} +7 -3
  39. package/dist/lib/browser/{state-LXTS54DI.mjs.map → state-GG7Z3NB7.mjs.map} +3 -3
  40. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  41. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +2 -2
  43. package/dist/lib/node-esm/BlueprintArticle-RPZ2363K.mjs +37 -0
  44. package/dist/lib/node-esm/BlueprintArticle-RPZ2363K.mjs.map +7 -0
  45. package/dist/lib/node-esm/{ChatCompanion-XFNXVZIP.mjs → ChatCompanion-LKWZTSCI.mjs} +58 -50
  46. package/dist/lib/node-esm/ChatCompanion-LKWZTSCI.mjs.map +7 -0
  47. package/dist/lib/node-esm/{ChatContainer-UTJGCQXF.mjs → ChatContainer-HGAAKVB3.mjs} +22 -18
  48. package/dist/lib/node-esm/ChatContainer-HGAAKVB3.mjs.map +7 -0
  49. package/dist/lib/node-esm/{ChatDialog-QEYZ4IOV.mjs → ChatDialog-QA545GGB.mjs} +8 -4
  50. package/dist/lib/node-esm/ChatDialog-QA545GGB.mjs.map +7 -0
  51. package/dist/lib/node-esm/PromptArticle-JW46XL4M.mjs +90 -0
  52. package/dist/lib/node-esm/PromptArticle-JW46XL4M.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-builder-OKNLR7H2.mjs → app-graph-builder-XPQLG755.mjs} +62 -17
  54. package/dist/lib/node-esm/app-graph-builder-XPQLG755.mjs.map +7 -0
  55. package/dist/lib/node-esm/{blueprint-definition-WD2IVMAI.mjs → blueprint-definition-XW6QQVLV.mjs} +4 -4
  56. package/dist/lib/node-esm/chunk-3YVWS6OI.mjs +264 -0
  57. package/dist/lib/node-esm/chunk-3YVWS6OI.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-TNR46C3L.mjs → chunk-AB74FOA2.mjs} +30 -13
  59. package/dist/lib/node-esm/chunk-AB74FOA2.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs +336 -0
  61. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-U2NYUS2N.mjs → chunk-UXTUHH24.mjs} +37 -36
  63. package/dist/lib/node-esm/chunk-UXTUHH24.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-UFKLCEAE.mjs → chunk-VI6S3Q5H.mjs} +772 -620
  65. package/dist/lib/node-esm/chunk-VI6S3Q5H.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-73ABYRYX.mjs → chunk-WE6KTH72.mjs} +7 -2
  67. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-XQGWSZ4T.mjs → chunk-YWFWT57N.mjs} +2 -2
  69. package/dist/lib/node-esm/chunk-YWFWT57N.mjs.map +7 -0
  70. package/dist/lib/node-esm/index.mjs +78 -62
  71. package/dist/lib/node-esm/index.mjs.map +3 -3
  72. package/dist/lib/node-esm/{intent-resolver-6XLVTRDJ.mjs → intent-resolver-Y6I3IDSI.mjs} +49 -20
  73. package/dist/lib/node-esm/intent-resolver-Y6I3IDSI.mjs.map +7 -0
  74. package/dist/lib/node-esm/{local-model-resolver-WOQ2D2R2.mjs → local-model-resolver-TP2NTSAX.mjs} +2 -2
  75. package/dist/lib/node-esm/{local-model-resolver-WOQ2D2R2.mjs.map → local-model-resolver-TP2NTSAX.mjs.map} +2 -2
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/{react-surface-K7ZXQLAP.mjs → react-surface-C4WY3WRR.mjs} +22 -31
  78. package/dist/lib/node-esm/react-surface-C4WY3WRR.mjs.map +7 -0
  79. package/dist/lib/node-esm/{settings-CWP6MTWP.mjs → settings-RRHYI5KO.mjs} +3 -3
  80. package/dist/lib/node-esm/{state-BO6GUFLB.mjs → state-FSUHFMDM.mjs} +7 -3
  81. package/dist/lib/node-esm/{state-BO6GUFLB.mjs.map → state-FSUHFMDM.mjs.map} +3 -3
  82. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  83. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs.map +7 -0
  84. package/dist/lib/node-esm/types/index.mjs +2 -2
  85. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -1
  88. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/capabilities.d.ts +2 -3
  90. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/toolkit.d.ts +1 -1
  95. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  96. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  97. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  98. package/dist/types/src/components/Chat/Chat.d.ts +18 -8
  99. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  100. package/dist/types/src/components/Chat/events.d.ts +4 -0
  101. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  102. package/dist/types/src/components/ChatCompanion.d.ts +2 -2
  103. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
  104. package/dist/types/src/components/ChatContainer.d.ts +7 -4
  105. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  106. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  107. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  108. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  109. package/dist/types/src/components/ChatThread/ChatThread.d.ts +6 -9
  110. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  111. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +123 -70
  112. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/ChatThread/reducers.d.ts +5 -5
  114. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -1
  115. package/dist/types/src/components/ChatThread/sync.d.ts +12 -6
  116. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  117. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  118. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  119. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  120. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  121. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +111 -61
  122. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +111 -61
  124. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  126. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  127. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  128. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  129. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  130. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +9 -7
  131. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  132. package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -2
  133. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  134. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +111 -60
  135. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/index.d.ts +4 -9
  137. package/dist/types/src/components/index.d.ts.map +1 -1
  138. package/dist/types/src/functions/index.d.ts +2 -2
  139. package/dist/types/src/functions/index.d.ts.map +1 -1
  140. package/dist/types/src/functions/{list.d.ts → object-list.d.ts} +1 -1
  141. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  142. package/dist/types/src/functions/{load.d.ts → object-load.d.ts} +1 -1
  143. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  144. package/dist/types/src/hooks/index.d.ts +1 -0
  145. package/dist/types/src/hooks/index.d.ts.map +1 -1
  146. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  147. package/dist/types/src/hooks/useChatProcessor.d.ts +3 -1
  148. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  150. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  151. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  152. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  153. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  154. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  155. package/dist/types/src/meta.d.ts.map +1 -1
  156. package/dist/types/src/processor/index.d.ts +1 -0
  157. package/dist/types/src/processor/index.d.ts.map +1 -1
  158. package/dist/types/src/processor/processor.d.ts +6 -6
  159. package/dist/types/src/processor/processor.d.ts.map +1 -1
  160. package/dist/types/src/processor/update-name.d.ts +10 -0
  161. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  162. package/dist/types/src/queue-logger.d.ts.map +1 -1
  163. package/dist/types/src/testing/test-generator.d.ts +2 -2
  164. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  165. package/dist/types/src/translations.d.ts +239 -26
  166. package/dist/types/src/translations.d.ts.map +1 -1
  167. package/dist/types/src/types/Assistant.d.ts +0 -3
  168. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  169. package/dist/types/src/types/AssistantAction.d.ts +29 -4
  170. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  171. package/dist/types/src/types/service.d.ts +9 -6
  172. package/dist/types/src/types/service.d.ts.map +1 -1
  173. package/dist/types/tsconfig.tsbuildinfo +1 -1
  174. package/package.json +78 -73
  175. package/src/AssistantPlugin.tsx +20 -2
  176. package/src/capabilities/app-graph-builder.ts +62 -15
  177. package/src/capabilities/blueprint-definition.ts +38 -36
  178. package/src/capabilities/capabilities.ts +2 -3
  179. package/src/capabilities/intent-resolver.ts +66 -15
  180. package/src/capabilities/local-model-resolver.ts +1 -1
  181. package/src/capabilities/react-surface.tsx +16 -20
  182. package/src/capabilities/state.ts +2 -0
  183. package/src/capabilities/toolkit.ts +9 -160
  184. package/src/components/BlueprintArticle.tsx +29 -0
  185. package/src/components/Chat/Chat.tsx +112 -58
  186. package/src/components/Chat/events.ts +6 -0
  187. package/src/components/ChatCompanion.tsx +62 -43
  188. package/src/components/ChatContainer.tsx +27 -17
  189. package/src/components/ChatDialog.tsx +9 -2
  190. package/src/components/ChatProgress/ChatProgress.tsx +1 -1
  191. package/src/components/ChatPrompt/ChatActions.tsx +2 -4
  192. package/src/components/ChatPrompt/ChatOptions.tsx +26 -23
  193. package/src/components/ChatPrompt/ChatReferences.tsx +2 -2
  194. package/src/components/ChatThread/ChatThread.stories.tsx +45 -26
  195. package/src/components/ChatThread/ChatThread.tsx +25 -35
  196. package/src/components/ChatThread/reducers.ts +6 -6
  197. package/src/components/ChatThread/registry.tsx +23 -33
  198. package/src/components/ChatThread/sync.test.ts +20 -12
  199. package/src/components/ChatThread/sync.ts +47 -12
  200. package/src/components/ChatThread/testing/thread.md +37 -0
  201. package/src/components/PromptArticle.tsx +85 -0
  202. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +14 -4
  203. package/src/components/TemplateEditor/TemplateEditor.tsx +17 -8
  204. package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
  205. package/src/components/TemplateEditor/TemplateForm.tsx +1 -1
  206. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  207. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  208. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  209. package/src/components/ToolBlock/ToolBlock.tsx +33 -42
  210. package/src/components/Toolbox/Toolbox.stories.tsx +2 -2
  211. package/src/components/Toolbox/Toolbox.tsx +5 -5
  212. package/src/components/index.ts +2 -5
  213. package/src/functions/analysis.ts +1 -1
  214. package/src/functions/index.ts +2 -2
  215. package/src/functions/{list.ts → object-list.ts} +4 -4
  216. package/src/functions/{load.ts → object-load.ts} +3 -4
  217. package/src/hooks/index.ts +1 -0
  218. package/src/hooks/useBlueprintRegistry.ts +2 -1
  219. package/src/hooks/useChatProcessor.ts +12 -12
  220. package/src/hooks/useChatServices.ts +7 -5
  221. package/src/hooks/useChatToolbarActions.ts +122 -0
  222. package/src/hooks/useContextBinder.ts +6 -6
  223. package/src/hooks/useReferencesProvider.ts +2 -1
  224. package/src/meta.ts +6 -1
  225. package/src/processor/index.ts +1 -0
  226. package/src/processor/presets.ts +1 -1
  227. package/src/processor/processor.test.ts +8 -18
  228. package/src/processor/processor.ts +14 -39
  229. package/src/processor/update-name.ts +56 -0
  230. package/src/queue-logger.ts +4 -8
  231. package/src/testing/test-generator.ts +10 -10
  232. package/src/translations.ts +24 -16
  233. package/src/types/Assistant.ts +4 -5
  234. package/src/types/AssistantAction.ts +21 -4
  235. package/src/types/service.ts +2 -2
  236. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs +0 -28
  237. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs.map +0 -7
  238. package/dist/lib/browser/ChatCompanion-BDZ55ZRF.mjs.map +0 -7
  239. package/dist/lib/browser/ChatContainer-RYGNN73X.mjs.map +0 -7
  240. package/dist/lib/browser/ChatDialog-MVHH2U66.mjs.map +0 -7
  241. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs +0 -150
  242. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs.map +0 -7
  243. package/dist/lib/browser/app-graph-builder-2U7SLCRX.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-2CE2KPKZ.mjs.map +0 -7
  245. package/dist/lib/browser/chunk-43I2LR6O.mjs +0 -216
  246. package/dist/lib/browser/chunk-43I2LR6O.mjs.map +0 -7
  247. package/dist/lib/browser/chunk-5EGXHCAZ.mjs.map +0 -7
  248. package/dist/lib/browser/chunk-5RICKAMN.mjs +0 -18
  249. package/dist/lib/browser/chunk-5RICKAMN.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-CQ7UHYTT.mjs +0 -296
  251. package/dist/lib/browser/chunk-CQ7UHYTT.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-FP56WB24.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-JZRZVB2A.mjs +0 -170
  254. package/dist/lib/browser/chunk-JZRZVB2A.mjs.map +0 -7
  255. package/dist/lib/browser/chunk-WRJGOT5P.mjs.map +0 -7
  256. package/dist/lib/browser/intent-resolver-3GOJMBXJ.mjs.map +0 -7
  257. package/dist/lib/browser/react-surface-FTKCE6GG.mjs.map +0 -7
  258. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs +0 -199
  259. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs.map +0 -7
  260. package/dist/lib/node-esm/BlueprintContainer-4MKN6ZRB.mjs +0 -29
  261. package/dist/lib/node-esm/BlueprintContainer-4MKN6ZRB.mjs.map +0 -7
  262. package/dist/lib/node-esm/ChatCompanion-XFNXVZIP.mjs.map +0 -7
  263. package/dist/lib/node-esm/ChatContainer-UTJGCQXF.mjs.map +0 -7
  264. package/dist/lib/node-esm/ChatDialog-QEYZ4IOV.mjs.map +0 -7
  265. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs +0 -151
  266. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs.map +0 -7
  267. package/dist/lib/node-esm/app-graph-builder-OKNLR7H2.mjs.map +0 -7
  268. package/dist/lib/node-esm/chunk-73ABYRYX.mjs.map +0 -7
  269. package/dist/lib/node-esm/chunk-DSE2IILK.mjs +0 -217
  270. package/dist/lib/node-esm/chunk-DSE2IILK.mjs.map +0 -7
  271. package/dist/lib/node-esm/chunk-E2WXZND7.mjs +0 -297
  272. package/dist/lib/node-esm/chunk-E2WXZND7.mjs.map +0 -7
  273. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs +0 -171
  274. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs.map +0 -7
  275. package/dist/lib/node-esm/chunk-TNR46C3L.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs.map +0 -7
  277. package/dist/lib/node-esm/chunk-UFKLCEAE.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs.map +0 -7
  279. package/dist/lib/node-esm/intent-resolver-6XLVTRDJ.mjs.map +0 -7
  280. package/dist/lib/node-esm/react-surface-K7ZXQLAP.mjs.map +0 -7
  281. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs +0 -200
  282. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs.map +0 -7
  283. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  284. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  285. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  286. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  287. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  288. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  289. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  290. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  291. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -269
  292. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  293. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  294. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  295. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  296. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -5
  297. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  298. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  299. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  300. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  301. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  302. package/dist/types/src/functions/list.d.ts.map +0 -1
  303. package/dist/types/src/functions/load.d.ts.map +0 -1
  304. package/src/components/BlueprintContainer.tsx +0 -24
  305. package/src/components/PromptSettings.tsx +0 -90
  306. package/src/components/SequenceContainer.tsx +0 -131
  307. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -35
  308. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  309. package/src/components/SequenceEditor/index.ts +0 -5
  310. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  311. package/src/components/Toolbar/Toolbar.tsx +0 -21
  312. package/src/components/Toolbar/index.ts +0 -5
  313. package/src/components/Toolbar/useChatToolbarActions.ts +0 -126
  314. /package/dist/lib/browser/{blueprint-definition-NSJARW5U.mjs.map → blueprint-definition-5FT5JGPY.mjs.map} +0 -0
  315. /package/dist/lib/browser/{settings-HBF32KV6.mjs.map → settings-NYJGNQ5I.mjs.map} +0 -0
  316. /package/dist/lib/node-esm/{blueprint-definition-WD2IVMAI.mjs.map → blueprint-definition-XW6QQVLV.mjs.map} +0 -0
  317. /package/dist/lib/node-esm/{settings-CWP6MTWP.mjs.map → settings-RRHYI5KO.mjs.map} +0 -0
  318. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -0,0 +1,90 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ TemplateEditor
4
+ } from "./chunk-KJGD4EBJ.mjs";
5
+ import {
6
+ meta
7
+ } from "./chunk-WE6KTH72.mjs";
8
+ import "./chunk-HSLMI22Q.mjs";
9
+
10
+ // src/components/PromptArticle.tsx
11
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
12
+ import * as Cause from "effect/Cause";
13
+ import * as Effect from "effect/Effect";
14
+ import * as Exit from "effect/Exit";
15
+ import React, { useMemo } from "react";
16
+ import { Agent } from "@dxos/assistant-toolkit";
17
+ import { Obj } from "@dxos/echo";
18
+ import { FunctionInvocationService } from "@dxos/functions";
19
+ import { InvocationTracer, TracingServiceExt } from "@dxos/functions-runtime";
20
+ import { log } from "@dxos/log";
21
+ import { useComputeRuntimeCallback } from "@dxos/plugin-automation";
22
+ import { getSpace } from "@dxos/react-client/echo";
23
+ import { Toolbar, useTranslation } from "@dxos/react-ui";
24
+ import { useAttention } from "@dxos/react-ui-attention";
25
+ import { StackItem } from "@dxos/react-ui-stack";
26
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/components/PromptArticle.tsx";
27
+ var PromptArticle = ({ object }) => {
28
+ var _effect = _useSignals();
29
+ try {
30
+ const { t } = useTranslation(meta.id);
31
+ const space = getSpace(object);
32
+ const { hasAttention } = useAttention(Obj.getDXN(object).toString());
33
+ const inputData = useMemo(() => object && {
34
+ prompt: space?.db.ref(Obj.getDXN(object)),
35
+ input: {}
36
+ }, [
37
+ object,
38
+ space
39
+ ]);
40
+ const handleRun = useComputeRuntimeCallback(space, Effect.fnUntraced(function* () {
41
+ const tracer = yield* InvocationTracer;
42
+ const trace = yield* tracer.traceInvocationStart({
43
+ target: void 0,
44
+ payload: {
45
+ data: {}
46
+ }
47
+ });
48
+ const result = yield* FunctionInvocationService.invokeFunction(Agent.prompt, inputData).pipe(Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)), Effect.exit);
49
+ if (Exit.isFailure(result)) {
50
+ const error = Cause.prettyErrors(result.cause)[0];
51
+ log.error(error.message, error.cause ?? error.stack, {
52
+ F: __dxlog_file,
53
+ L: 63,
54
+ S: this,
55
+ C: (f, a) => f(...a)
56
+ });
57
+ }
58
+ yield* tracer.traceInvocationEnd({
59
+ trace,
60
+ // TODO(dmaretskyi): Might miss errors.
61
+ exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : void 0
62
+ });
63
+ }), [
64
+ inputData
65
+ ]);
66
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
67
+ toolbar: true
68
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, {
69
+ disabled: !hasAttention,
70
+ onClick: handleRun
71
+ }, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
72
+ iconOnly: true,
73
+ icon: "ph--play--regular",
74
+ label: t("run prompt label"),
75
+ onClick: handleRun
76
+ })), /* @__PURE__ */ React.createElement(TemplateEditor, {
77
+ id: object.id,
78
+ template: object.instructions,
79
+ classNames: "container-max-width"
80
+ }));
81
+ } finally {
82
+ _effect.f();
83
+ }
84
+ };
85
+ var PromptArticle_default = PromptArticle;
86
+ export {
87
+ PromptArticle,
88
+ PromptArticle_default as default
89
+ };
90
+ //# sourceMappingURL=PromptArticle-JW46XL4M.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/PromptArticle.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport React, { useMemo } from 'react';\n\nimport { type SurfaceComponentProps } from '@dxos/app-framework/react';\nimport { Agent } from '@dxos/assistant-toolkit';\nimport { type Prompt } from '@dxos/blueprints';\nimport { Obj } from '@dxos/echo';\nimport { FunctionInvocationService } from '@dxos/functions';\nimport { InvocationTracer, TracingServiceExt } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\nimport { useComputeRuntimeCallback } from '@dxos/plugin-automation';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Toolbar, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { meta } from '../meta';\n\nimport { TemplateEditor } from './TemplateEditor';\n\nexport type PromptArticleProps = SurfaceComponentProps<Prompt.Prompt>;\n\nexport const PromptArticle = ({ object }: PromptArticleProps) => {\n const { t } = useTranslation(meta.id);\n const space = getSpace(object);\n const { hasAttention } = useAttention(Obj.getDXN(object).toString());\n\n const inputData = useMemo(\n () =>\n object && {\n prompt: space?.db.ref(Obj.getDXN(object)),\n input: {},\n },\n [object, space],\n );\n\n // TODO(wittjosiah): Factor out.\n const handleRun = useComputeRuntimeCallback(\n space,\n Effect.fnUntraced(function* () {\n const tracer = yield* InvocationTracer;\n const trace = yield* tracer.traceInvocationStart({\n target: undefined,\n payload: {\n data: {},\n },\n });\n\n // Invoke the function.\n const result = yield* FunctionInvocationService.invokeFunction(Agent.prompt, inputData).pipe(\n Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)),\n Effect.exit,\n );\n\n if (Exit.isFailure(result)) {\n const error = Cause.prettyErrors(result.cause)[0];\n log.error(error.message, error.cause ?? error.stack);\n }\n\n yield* tracer.traceInvocationEnd({\n trace,\n // TODO(dmaretskyi): Might miss errors.\n exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : undefined,\n });\n }),\n [inputData],\n );\n\n return (\n <StackItem.Content toolbar>\n <Toolbar.Root disabled={!hasAttention} onClick={handleRun}>\n <Toolbar.IconButton iconOnly icon='ph--play--regular' label={t('run prompt label')} onClick={handleRun} />\n </Toolbar.Root>\n <TemplateEditor id={object.id} template={object.instructions} classNames='container-max-width' />\n </StackItem.Content>\n );\n};\n\nexport default PromptArticle;\n"],
5
+ "mappings": ";;;;;;;;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,UAAU;AACtB,OAAOC,SAASC,eAAe;AAG/B,SAASC,aAAa;AAEtB,SAASC,WAAW;AACpB,SAASC,iCAAiC;AAC1C,SAASC,kBAAkBC,yBAAyB;AACpD,SAASC,WAAW;AACpB,SAASC,iCAAiC;AAC1C,SAASC,gBAAgB;AACzB,SAASC,SAASC,sBAAsB;AACxC,SAASC,oBAAoB;AAC7B,SAASC,iBAAiB;;AAQnB,IAAMC,gBAAgB,CAAC,EAAEC,OAAM,MAAsB;;;AAC1D,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,QAAQC,SAASN,MAAAA;AACvB,UAAM,EAAEO,aAAY,IAAKC,aAAaC,IAAIC,OAAOV,MAAAA,EAAQW,SAAQ,CAAA;AAEjE,UAAMC,YAAYC,QAChB,MACEb,UAAU;MACRc,QAAQT,OAAOU,GAAGC,IAAIP,IAAIC,OAAOV,MAAAA,CAAAA;MACjCiB,OAAO,CAAC;IACV,GACF;MAACjB;MAAQK;KAAM;AAIjB,UAAMa,YAAYC,0BAChBd,OACOe,kBAAW,aAAA;AAChB,YAAMC,SAAS,OAAOC;AACtB,YAAMC,QAAQ,OAAOF,OAAOG,qBAAqB;QAC/CC,QAAQC;QACRC,SAAS;UACPC,MAAM,CAAC;QACT;MACF,CAAA;AAGA,YAAMC,SAAS,OAAOC,0BAA0BC,eAAeC,MAAMlB,QAAQF,SAAAA,EAAWqB,KAC/EC,eAAQC,kBAAkBC,WAAWb,MAAMc,oBAAoB,CAAA,GAC/DC,WAAI;AAGb,UAASC,eAAUV,MAAAA,GAAS;AAC1B,cAAMW,QAAcC,mBAAaZ,OAAOa,KAAK,EAAE,CAAA;AAC/CC,YAAIH,MAAMA,MAAMI,SAASJ,MAAME,SAASF,MAAMK,OAAK;;;;;;MACrD;AAEA,aAAOxB,OAAOyB,mBAAmB;QAC/BvB;;QAEAwB,WAAgBR,eAAUV,MAAAA,IAAgBY,mBAAaZ,OAAOa,KAAK,EAAE,CAAA,IAAKhB;MAC5E,CAAA;IACF,CAAA,GACA;MAACd;KAAU;AAGb,WACE,sBAAA,cAACoC,UAAUC,SAAO;MAACC,SAAAA;OACjB,sBAAA,cAACC,QAAQC,MAAI;MAACC,UAAU,CAAC9C;MAAc+C,SAASpC;OAC9C,sBAAA,cAACiC,QAAQI,YAAU;MAACC,UAAAA;MAASC,MAAK;MAAoBC,OAAOzD,EAAE,kBAAA;MAAqBqD,SAASpC;SAE/F,sBAAA,cAACyC,gBAAAA;MAAevD,IAAIJ,OAAOI;MAAIwD,UAAU5D,OAAO6D;MAAcC,YAAW;;;;;AAG/E;AAEA,IAAA,wBAAe/D;",
6
+ "names": ["Cause", "Effect", "Exit", "React", "useMemo", "Agent", "Obj", "FunctionInvocationService", "InvocationTracer", "TracingServiceExt", "log", "useComputeRuntimeCallback", "getSpace", "Toolbar", "useTranslation", "useAttention", "StackItem", "PromptArticle", "object", "t", "useTranslation", "meta", "id", "space", "getSpace", "hasAttention", "useAttention", "Obj", "getDXN", "toString", "inputData", "useMemo", "prompt", "db", "ref", "input", "handleRun", "useComputeRuntimeCallback", "fnUntraced", "tracer", "InvocationTracer", "trace", "traceInvocationStart", "target", "undefined", "payload", "data", "result", "FunctionInvocationService", "invokeFunction", "Agent", "pipe", "provide", "TracingServiceExt", "layerQueue", "invocationTraceQueue", "exit", "isFailure", "error", "prettyErrors", "cause", "log", "message", "stack", "traceInvocationEnd", "exception", "StackItem", "Content", "toolbar", "Toolbar", "Root", "disabled", "onClick", "IconButton", "iconOnly", "icon", "label", "TemplateEditor", "template", "instructions", "classNames"]
7
+ }
@@ -2,35 +2,65 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  AssistantAction_exports,
4
4
  Assistant_exports
5
- } from "./chunk-TNR46C3L.mjs";
5
+ } from "./chunk-AB74FOA2.mjs";
6
6
  import {
7
7
  AssistantCapabilities
8
- } from "./chunk-XQGWSZ4T.mjs";
8
+ } from "./chunk-YWFWT57N.mjs";
9
9
  import {
10
10
  ASSISTANT_DIALOG,
11
11
  meta
12
- } from "./chunk-73ABYRYX.mjs";
12
+ } from "./chunk-WE6KTH72.mjs";
13
13
  import "./chunk-HSLMI22Q.mjs";
14
14
 
15
15
  // src/capabilities/app-graph-builder.ts
16
- import { Rx } from "@effect-rx/rx-react";
16
+ import { Atom } from "@effect-atom/atom-react";
17
17
  import * as Function from "effect/Function";
18
18
  import * as Option from "effect/Option";
19
19
  import { Capabilities, LayoutAction, contributes, createIntent } from "@dxos/app-framework";
20
+ import { Prompt } from "@dxos/blueprints";
20
21
  import { Sequence } from "@dxos/conductor";
21
- import { Obj } from "@dxos/echo";
22
+ import { DXN, Obj } from "@dxos/echo";
22
23
  import { invariant } from "@dxos/invariant";
23
24
  import { ClientCapabilities } from "@dxos/plugin-client";
24
25
  import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
25
26
  import { ROOT_ID, createExtension, rxFromSignal } from "@dxos/plugin-graph";
26
27
  import { getActiveSpace } from "@dxos/plugin-space";
27
28
  import { SpaceAction } from "@dxos/plugin-space/types";
28
- import { Query, fullyQualifiedId } from "@dxos/react-client/echo";
29
+ import { Query, getSpace } from "@dxos/react-client/echo";
29
30
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
30
31
  var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphBuilder, [
32
+ createExtension({
33
+ id: `${meta.id}/root`,
34
+ actions: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
35
+ return Obj.instanceOf(Assistant_exports.Chat, node2.data) ? Option.some(node2.data) : Option.none();
36
+ }), Option.map((object) => {
37
+ const id = Obj.getDXN(object).toString();
38
+ return [
39
+ {
40
+ id: `${AssistantAction_exports.UpdateChatName._tag}/${id}`,
41
+ data: async () => {
42
+ const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
43
+ await dispatch(createIntent(AssistantAction_exports.UpdateChatName, {
44
+ chat: object
45
+ }));
46
+ },
47
+ properties: {
48
+ label: [
49
+ "chat update name label",
50
+ {
51
+ ns: meta.id
52
+ }
53
+ ],
54
+ icon: "ph--magic-wand--regular",
55
+ disposition: "list-item"
56
+ }
57
+ }
58
+ ];
59
+ }), Option.getOrElse(() => [])))
60
+ }),
31
61
  createExtension({
32
62
  id: `${meta.id}/assistant`,
33
- actions: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
63
+ actions: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
34
64
  {
35
65
  id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,
36
66
  data: async () => {
@@ -74,12 +104,27 @@ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphB
74
104
  createExtension({
75
105
  id: `${meta.id}/companion-chat`,
76
106
  connector: (node) => {
77
- return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.isObject(node2.data) ? Option.some(node2.data) : Option.none()), Option.map((object) => {
78
- const currentChat = get(rxFromSignal(() => context.getCapability(AssistantCapabilities.State).currentChat[fullyQualifiedId(object)]));
107
+ return Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.isObject(node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((object) => {
108
+ const currentChatState = get(rxFromSignal(() => context.getCapability(AssistantCapabilities.State).currentChat[Obj.getDXN(object).toString()]));
109
+ if (!currentChatState) {
110
+ return Option.some({
111
+ object,
112
+ currentChat: void 0
113
+ });
114
+ }
115
+ const space = getSpace(object);
116
+ const currentChatDxn = DXN.tryParse(currentChatState);
117
+ const currentChatRef = currentChatDxn ? space?.db.ref(currentChatDxn) : void 0;
118
+ const currentChat = get(rxFromSignal(() => currentChatRef?.target));
119
+ return currentChat ? Option.some({
120
+ object,
121
+ currentChat
122
+ }) : Option.none();
123
+ }), Option.map(({ object, currentChat }) => {
79
124
  return [
80
125
  {
81
126
  id: [
82
- fullyQualifiedId(object),
127
+ Obj.getDXN(object).toString(),
83
128
  "assistant-chat"
84
129
  ].join(ATTENDABLE_PATH_SEPARATOR),
85
130
  type: PLANK_COMPANION_TYPE,
@@ -101,18 +146,18 @@ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphB
101
146
  }
102
147
  }),
103
148
  createExtension({
104
- id: `${meta.id}/sequence-logs`,
105
- connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(Sequence, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
149
+ id: `${meta.id}/invocations`,
150
+ connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(Sequence, node2.data) || Obj.instanceOf(Prompt.Prompt, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
106
151
  {
107
152
  id: [
108
153
  node2.id,
109
- "logs"
154
+ "invocations"
110
155
  ].join(ATTENDABLE_PATH_SEPARATOR),
111
156
  type: PLANK_COMPANION_TYPE,
112
- data: "logs",
157
+ data: "invocations",
113
158
  properties: {
114
159
  label: [
115
- "sequence logs label",
160
+ "invocations label",
116
161
  {
117
162
  ns: meta.id
118
163
  }
@@ -136,7 +181,7 @@ var getOrCreateChat = async (dispatch, space) => {
136
181
  }));
137
182
  invariant(Obj.instanceOf(Assistant_exports.Chat, data?.object), void 0, {
138
183
  F: __dxlog_file,
139
- L: 160,
184
+ L: 207,
140
185
  S: void 0,
141
186
  A: [
142
187
  "Obj.instanceOf(Assistant.Chat, data?.object)",
@@ -152,4 +197,4 @@ var getOrCreateChat = async (dispatch, space) => {
152
197
  export {
153
198
  app_graph_builder_default as default
154
199
  };
155
- //# sourceMappingURL=app-graph-builder-OKNLR7H2.mjs.map
200
+ //# sourceMappingURL=app-graph-builder-XPQLG755.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport {\n Capabilities,\n LayoutAction,\n type PluginContext,\n type PromiseIntentDispatcher,\n contributes,\n createIntent,\n} from '@dxos/app-framework';\nimport { Prompt } from '@dxos/blueprints';\nimport { Sequence } from '@dxos/conductor';\nimport { DXN, Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { ROOT_ID, createExtension, rxFromSignal } from '@dxos/plugin-graph';\nimport { getActiveSpace } from '@dxos/plugin-space';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Query, type Space, getSpace } from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, meta } from '../meta';\nimport { Assistant, AssistantAction } from '../types';\n\nimport { AssistantCapabilities } from './capabilities';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/root`,\n actions: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => {\n return Obj.instanceOf(Assistant.Chat, node.data) ? Option.some(node.data) : Option.none();\n }),\n Option.map((object) => {\n const id = Obj.getDXN(object).toString();\n return [\n {\n id: `${AssistantAction.UpdateChatName._tag}/${id}`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(AssistantAction.UpdateChatName, { chat: object }));\n },\n properties: {\n label: ['chat update name label', { ns: meta.id }],\n icon: 'ph--magic-wand--regular',\n disposition: 'list-item',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${meta.id}/assistant`,\n actions: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n const chat = await getOrCreateChat(dispatch, space);\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${meta.id}/companion-chat`,\n connector: (node) => {\n return Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node.data) : Option.none())),\n Option.flatMap((object) => {\n const currentChatState = get(\n rxFromSignal(\n () => context.getCapability(AssistantCapabilities.State).currentChat[Obj.getDXN(object).toString()],\n ),\n );\n // If no state, continue to allow chat initialization.\n if (!currentChatState) {\n return Option.some({ object, currentChat: undefined });\n }\n\n const space = getSpace(object);\n const currentChatDxn = DXN.tryParse(currentChatState);\n const currentChatRef = currentChatDxn ? space?.db.ref(currentChatDxn) : undefined;\n const currentChat = get(rxFromSignal(() => currentChatRef?.target));\n return currentChat ? Option.some({ object, currentChat }) : Option.none();\n }),\n Option.map(({ object, currentChat }) => {\n return [\n {\n id: [Obj.getDXN(object).toString(), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: currentChat ?? 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n createExtension({\n id: `${meta.id}/invocations`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) =>\n Obj.instanceOf(Sequence, node.data) || Obj.instanceOf(Prompt.Prompt, node.data)\n ? Option.some(node)\n : Option.none(),\n ),\n Option.map((node) => [\n {\n id: [node.id, 'invocations'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'invocations',\n properties: {\n label: ['invocations label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (\n dispatch: PromiseIntentDispatcher,\n space: Space,\n): Promise<Assistant.Chat | undefined> => {\n // TODO(wittjosiah): This should be possible with a single query.\n const { objects: allChats } = await space.db.query(Query.type(Assistant.Chat)).run();\n const { objects: relatedChats } = await space.db\n .query(Query.type(Assistant.Chat).sourceOf(Assistant.CompanionTo).source())\n .run();\n\n const chats = allChats.filter((chat) => !relatedChats.includes(chat));\n if (chats.length > 0) {\n return chats.at(-1);\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { space }));\n invariant(Obj.instanceOf(Assistant.Chat, data?.object));\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AAExB,SACEC,cACAC,cAGAC,aACAC,oBACK;AACP,SAASC,cAAc;AACvB,SAASC,gBAAgB;AACzB,SAASC,KAAKC,WAAW;AACzB,SAASC,iBAAiB;AAC1B,SAASC,0BAA0B;AACnC,SAASC,2BAA2BC,4BAA4B;AAChE,SAASC,SAASC,iBAAiBC,oBAAoB;AACvD,SAASC,sBAAsB;AAC/B,SAASC,mBAAmB;AAC5B,SAASC,OAAmBC,gBAAgB;;AAO5C,IAAA,6BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,SAAS,CAACC,SACRC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAAA;AACd,aAAOM,IAAIC,WAAWC,kBAAUC,MAAMT,MAAKU,IAAI,IAAWC,YAAKX,MAAKU,IAAI,IAAWE,YAAI;IACzF,CAAA,GACOC,WAAI,CAACC,WAAAA;AACV,YAAMjB,KAAKS,IAAIS,OAAOD,MAAAA,EAAQE,SAAQ;AACtC,aAAO;QACL;UACEnB,IAAI,GAAGoB,wBAAgBC,eAAeC,IAAI,IAAItB,EAAAA;UAC9Ca,MAAM,YAAA;AACJ,kBAAM,EAAEU,iBAAiBC,SAAQ,IAAK7B,QAAQ8B,cAAc5B,aAAa6B,gBAAgB;AACzF,kBAAMF,SAASG,aAAaP,wBAAgBC,gBAAgB;cAAEO,MAAMX;YAAO,CAAA,CAAA;UAC7E;UACAY,YAAY;YACVC,OAAO;cAAC;cAA0B;gBAAEC,IAAI9B,KAAKD;cAAG;;YAChDgC,MAAM;YACNC,aAAa;UACf;QACF;;IAEJ,CAAA,GACOC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EAEAnC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,SAAS,CAACC,SACRC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUA,MAAKH,OAAOmC,UAAiBrB,YAAKX,KAAAA,IAAeY,YAAI,CAAA,GACxEC,WAAI,MAAM;MACf;QACEhB,IAAI,GAAGoC,aAAaC,aAAaf,IAAI;QACrCT,MAAM,YAAA;AACJ,gBAAM,EAAEU,iBAAiBC,SAAQ,IAAK7B,QAAQ8B,cAAc5B,aAAa6B,gBAAgB;AACzF,gBAAMY,SAAS3C,QAAQ8B,cAAcc,mBAAmBC,MAAM;AAC9D,gBAAMC,QAAQC,eAAe/C,OAAAA,KAAY2C,OAAOK,OAAOC;AACvD,gBAAMhB,OAAO,MAAMiB,gBAAgBrB,UAAUiB,KAAAA;AAC7C,cAAI,CAACb,MAAM;AACT;UACF;AAEA,gBAAMJ,SACJG,aAAaS,aAAaC,cAAc;YACtCS,MAAM;YACNC,SAASC;YACTC,SAAS;cACPC,OAAO;cACPC,YAAY;cACZC,OAAO;gBACLxB;cACF;YACF;UACF,CAAA,CAAA;QAEJ;QACAC,YAAY;UACVC,OAAO;YAAC;YAAwB;cAAEC,IAAI9B,KAAKD;YAAG;;UAC9CgC,MAAM;UACNC,aAAa;UACboB,UAAU;UACVC,YAAY;YACVC,OAAO;YACPC,SAAS;UACX;QACF;MACF;KACD,GACMtB,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EAEAnC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdyD,WAAW,CAACtD,SAAAA;AACV,aAAOC,KAAKC,KAAK,CAACC,QACPC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUM,IAAIiD,SAASvD,MAAKU,IAAI,IAAWC,YAAKX,MAAKU,IAAI,IAAWE,YAAI,CAAA,GACjFP,eAAQ,CAACS,WAAAA;AACd,cAAM0C,mBAAmBrD,IACvBsD,aACE,MAAMjE,QAAQ8B,cAAcoC,sBAAsBC,KAAK,EAAEC,YAAYtD,IAAIS,OAAOD,MAAAA,EAAQE,SAAQ,CAAA,CAAG,CAAA;AAIvG,YAAI,CAACwC,kBAAkB;AACrB,iBAAc7C,YAAK;YAAEG;YAAQ8C,aAAaC;UAAU,CAAA;QACtD;AAEA,cAAMvB,QAAQwB,SAAShD,MAAAA;AACvB,cAAMiD,iBAAiBC,IAAIC,SAAST,gBAAAA;AACpC,cAAMU,iBAAiBH,iBAAiBzB,OAAO6B,GAAGC,IAAIL,cAAAA,IAAkBF;AACxE,cAAMD,cAAczD,IAAIsD,aAAa,MAAMS,gBAAgBG,MAAAA,CAAAA;AAC3D,eAAOT,cAAqBjD,YAAK;UAAEG;UAAQ8C;QAAY,CAAA,IAAYhD,YAAI;MACzE,CAAA,GACOC,WAAI,CAAC,EAAEC,QAAQ8C,YAAW,MAAE;AACjC,eAAO;UACL;YACE/D,IAAI;cAACS,IAAIS,OAAOD,MAAAA,EAAQE,SAAQ;cAAI;cAAkBsD,KAAKC,yBAAAA;YAC3DC,MAAMC;YACN/D,MAAMkD,eAAe;YACrBlC,YAAY;cACVC,OAAO;gBAAC;gBAAwB;kBAAEC,IAAI9B,KAAKD;gBAAG;;cAC9CgC,MAAM;cACNqB,UAAU;cACVpB,aAAa;YACf;UACF;;MAEJ,CAAA,GACOC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;IAG/B;EACF,CAAA;EAEAnC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdyD,WAAW,CAACtD,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UACdM,IAAIC,WAAWmE,UAAU1E,MAAKU,IAAI,KAAKJ,IAAIC,WAAWoE,OAAOA,QAAQ3E,MAAKU,IAAI,IACnEC,YAAKX,KAAAA,IACLY,YAAI,CAAA,GAEVC,WAAI,CAACb,UAAS;MACnB;QACEH,IAAI;UAACG,MAAKH;UAAI;UAAeyE,KAAKC,yBAAAA;QAClCC,MAAMC;QACN/D,MAAM;QACNgB,YAAY;UACVC,OAAO;YAAC;YAAqB;cAAEC,IAAI9B,KAAKD;YAAG;;UAC3CgC,MAAM;UACNC,aAAa;QACf;MACF;KACD,GACMC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;CACD;AAGH,IAAMW,kBAAkB,OACtBrB,UACAiB,UAAAA;AAGA,QAAM,EAAEsC,SAASC,SAAQ,IAAK,MAAMvC,MAAM6B,GAAGW,MAAMC,MAAMP,KAAKhE,kBAAUC,IAAI,CAAA,EAAGuE,IAAG;AAClF,QAAM,EAAEJ,SAASK,aAAY,IAAK,MAAM3C,MAAM6B,GAC3CW,MAAMC,MAAMP,KAAKhE,kBAAUC,IAAI,EAAEyE,SAAS1E,kBAAU2E,WAAW,EAAEC,OAAM,CAAA,EACvEJ,IAAG;AAEN,QAAMK,QAAQR,SAASS,OAAO,CAAC7D,SAAS,CAACwD,aAAaM,SAAS9D,IAAAA,CAAAA;AAC/D,MAAI4D,MAAMG,SAAS,GAAG;AACpB,WAAOH,MAAMI,GAAG,EAAC;EACnB;AAEA,QAAM,EAAE/E,KAAI,IAAK,MAAMW,SAASG,aAAaP,wBAAgByE,YAAY;IAAEpD;EAAM,CAAA,CAAA;AACjFqD,YAAUrF,IAAIC,WAAWC,kBAAUC,MAAMC,MAAMI,MAAAA,GAAAA,QAAAA;;;;;;;;;AAC/C,QAAMO,SAASG,aAAaoE,YAAYC,WAAW;IAAExB,QAAQ/B;IAAOxB,QAAQJ,KAAKI;EAAO,CAAA,CAAA;AACxF,SAAOJ,KAAKI;AACd;",
6
+ "names": ["Atom", "Function", "Option", "Capabilities", "LayoutAction", "contributes", "createIntent", "Prompt", "Sequence", "DXN", "Obj", "invariant", "ClientCapabilities", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "ROOT_ID", "createExtension", "rxFromSignal", "getActiveSpace", "SpaceAction", "Query", "getSpace", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "actions", "node", "Atom", "make", "get", "pipe", "flatMap", "Obj", "instanceOf", "Assistant", "Chat", "data", "some", "none", "map", "object", "getDXN", "toString", "AssistantAction", "UpdateChatName", "_tag", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "createIntent", "chat", "properties", "label", "ns", "icon", "disposition", "getOrElse", "ROOT_ID", "LayoutAction", "UpdateDialog", "client", "ClientCapabilities", "Client", "space", "getActiveSpace", "spaces", "default", "getOrCreateChat", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "position", "keyBinding", "macos", "windows", "connector", "isObject", "currentChatState", "rxFromSignal", "AssistantCapabilities", "State", "currentChat", "undefined", "getSpace", "currentChatDxn", "DXN", "tryParse", "currentChatRef", "db", "ref", "target", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "Sequence", "Prompt", "objects", "allChats", "query", "Query", "run", "relatedChats", "sourceOf", "CompanionTo", "source", "chats", "filter", "includes", "length", "at", "CreateChat", "invariant", "SpaceAction", "AddObject"]
7
+ }
@@ -1,13 +1,13 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- BLUEPRINT_KEY,
3
+ ASSISTANT_BLUEPRINT_KEY,
4
4
  blueprint_definition_default,
5
5
  createBlueprint
6
- } from "./chunk-U2NYUS2N.mjs";
6
+ } from "./chunk-UXTUHH24.mjs";
7
7
  import "./chunk-HSLMI22Q.mjs";
8
8
  export {
9
- BLUEPRINT_KEY,
9
+ ASSISTANT_BLUEPRINT_KEY,
10
10
  createBlueprint,
11
11
  blueprint_definition_default as default
12
12
  };
13
- //# sourceMappingURL=blueprint-definition-WD2IVMAI.mjs.map
13
+ //# sourceMappingURL=blueprint-definition-XW6QQVLV.mjs.map
@@ -0,0 +1,264 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/processor/update-name.ts
4
+ import * as Effect from "effect/Effect";
5
+ import * as Exit from "effect/Exit";
6
+ import * as Fiber from "effect/Fiber";
7
+ import * as Runtime from "effect/Runtime";
8
+ import { AiService, DEFAULT_EDGE_MODEL } from "@dxos/ai";
9
+ import { AiSession } from "@dxos/assistant";
10
+ import { throwCause } from "@dxos/effect";
11
+ import { trim } from "@dxos/util";
12
+ var updateName = async (runtime, conversation, chat, model = DEFAULT_EDGE_MODEL) => {
13
+ const history = await conversation.getHistory();
14
+ const system = trim`
15
+ It is extremely important that you respond only with the title and nothing else.
16
+ If you cannot do this effectively respond with "New Chat".
17
+ `;
18
+ const prompt = "Suggest a name for this chat";
19
+ const fiber = Effect.gen(void 0, function* () {
20
+ const session = new AiSession();
21
+ return yield* session.run({
22
+ system,
23
+ prompt,
24
+ history
25
+ });
26
+ }).pipe(Effect.provide(AiService.model(model)), Effect.tap((messages) => {
27
+ const message = messages.find((message2) => message2.sender.role === "assistant");
28
+ const title = message?.blocks.find((block) => block._tag === "text")?.text;
29
+ if (title) {
30
+ chat.name = title;
31
+ }
32
+ }), Runtime.runFork(runtime));
33
+ const response = await fiber.pipe(Fiber.join, Effect.runPromiseExit);
34
+ if (!Exit.isSuccess(response)) {
35
+ throwCause(response.cause);
36
+ }
37
+ };
38
+
39
+ // src/processor/presets.ts
40
+ import * as Schema from "effect/Schema";
41
+ var ModelProviders = [
42
+ "dxos-local",
43
+ "dxos-remote",
44
+ "lm-studio"
45
+ ];
46
+ var ModelProvider = Schema.Literal(...ModelProviders);
47
+ var createModelLabel = (model) => {
48
+ const parts = model.split("/");
49
+ return parts[parts.length - 1];
50
+ };
51
+ var AiServicePresets = [
52
+ {
53
+ provider: "dxos-remote",
54
+ model: "@anthropic/claude-opus-4-0"
55
+ },
56
+ {
57
+ provider: "dxos-remote",
58
+ model: "@anthropic/claude-sonnet-4-0"
59
+ },
60
+ {
61
+ provider: "dxos-remote",
62
+ model: "@anthropic/claude-3-5-haiku-20241022"
63
+ },
64
+ {
65
+ provider: "lm-studio",
66
+ model: "@google/gemma-3-27b"
67
+ },
68
+ {
69
+ provider: "lm-studio",
70
+ model: "@meta/llama-3.2-3b-instruct"
71
+ },
72
+ {
73
+ model: "deepseek-r1:latest",
74
+ provider: "dxos-local"
75
+ }
76
+ ].map(({ model, provider }, i) => ({
77
+ id: `preset-${i}`,
78
+ provider,
79
+ model,
80
+ label: createModelLabel(model)
81
+ }));
82
+
83
+ // src/processor/processor.ts
84
+ import { Atom, Registry } from "@effect-atom/atom-react";
85
+ import * as Cause from "effect/Cause";
86
+ import * as Effect2 from "effect/Effect";
87
+ import * as Exit2 from "effect/Exit";
88
+ import * as Fiber2 from "effect/Fiber";
89
+ import * as Option from "effect/Option";
90
+ import * as Runtime2 from "effect/Runtime";
91
+ import { AiService as AiService2, DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL2 } from "@dxos/ai";
92
+ import { ArtifactDiffResolver, GenerationObserver, createSystemPrompt } from "@dxos/assistant";
93
+ import { Obj } from "@dxos/echo";
94
+ import { throwCause as throwCause2 } from "@dxos/effect";
95
+ import { log } from "@dxos/log";
96
+ import { Message } from "@dxos/types";
97
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/processor/processor.ts";
98
+ var defaultOptions = {
99
+ model: DEFAULT_EDGE_MODEL2
100
+ };
101
+ var AiChatProcessor = class {
102
+ _conversation;
103
+ _services;
104
+ _options;
105
+ _rx;
106
+ /** External observer. */
107
+ _observer;
108
+ /** Currently active request fiber. */
109
+ _fiber;
110
+ /** Last request (for retries). */
111
+ _lastRequest;
112
+ /** Pending messages (incl. the current user request). */
113
+ _pending = Atom.make([]);
114
+ /** Currently streaming message (from the AI service). */
115
+ _streaming = Atom.make(Option.none());
116
+ /** Streaming state. */
117
+ streaming = Atom.make((get) => Option.isSome(get(this._streaming)));
118
+ /** Active state. */
119
+ active = Atom.make(false);
120
+ /** Array of Messages (incl. the current message being streamed). */
121
+ messages = Atom.make((get) => Option.match(get(this._streaming), {
122
+ onNone: () => get(this._pending),
123
+ onSome: (streaming) => [
124
+ ...get(this._pending),
125
+ streaming
126
+ ]
127
+ }));
128
+ /** Last error. */
129
+ error = Atom.make(Option.none());
130
+ constructor(_conversation, _services, _options = defaultOptions) {
131
+ this._conversation = _conversation;
132
+ this._services = _services;
133
+ this._options = _options;
134
+ this._rx = this._options.observableRegistry ?? Registry.make();
135
+ this._observer = GenerationObserver.make({
136
+ onBlock: this._onBlock,
137
+ onMessage: this._onMessage
138
+ });
139
+ if (this._options.model && !this._options.system) {
140
+ const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};
141
+ this._options.system = createSystemPrompt(capabilities);
142
+ }
143
+ }
144
+ get context() {
145
+ return this._conversation.context;
146
+ }
147
+ get conversation() {
148
+ return this._conversation;
149
+ }
150
+ get blueprintRegistry() {
151
+ return this._options.blueprintRegistry;
152
+ }
153
+ /**
154
+ * Initiates a new request.
155
+ */
156
+ async request(requestParam) {
157
+ if (this._fiber) {
158
+ await this.cancel();
159
+ }
160
+ try {
161
+ this._lastRequest = requestParam;
162
+ this._rx.set(this.error, Option.none());
163
+ this._rx.set(this.active, true);
164
+ const request = this._conversation.createRequest({
165
+ system: this._options.system,
166
+ prompt: requestParam.message,
167
+ observer: this._observer
168
+ });
169
+ const runtime = await this._services();
170
+ this._fiber = request.pipe(
171
+ Effect2.provide(AiService2.model(this._options.model ?? DEFAULT_EDGE_MODEL2)),
172
+ // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.
173
+ Effect2.provideService(ArtifactDiffResolver, this._artifactDiffResolver),
174
+ Effect2.asVoid,
175
+ Runtime2.runFork(runtime)
176
+ );
177
+ const response = await this._fiber.pipe(Fiber2.join, Effect2.runPromiseExit);
178
+ if (!Exit2.isSuccess(response) && !Cause.isInterruptedOnly(response.cause)) {
179
+ throwCause2(response.cause);
180
+ }
181
+ this._rx.set(this.error, Option.none());
182
+ this._lastRequest = void 0;
183
+ this._fiber = void 0;
184
+ } catch (error) {
185
+ log.error("request failed", {
186
+ error
187
+ }, {
188
+ F: __dxlog_file,
189
+ L: 187,
190
+ S: this,
191
+ C: (f, a) => f(...a)
192
+ });
193
+ this._rx.set(this.error, Option.some(new Error("AI service error", {
194
+ cause: error
195
+ })));
196
+ } finally {
197
+ this._fiber = void 0;
198
+ this._rx.set(this.active, false);
199
+ }
200
+ }
201
+ /**
202
+ * Cancels the current request.
203
+ */
204
+ async cancel() {
205
+ await Effect2.runPromise(Effect2.gen(this, function* () {
206
+ if (this._fiber) {
207
+ yield* this._fiber.pipe(Fiber2.interrupt);
208
+ }
209
+ }));
210
+ this._fiber = void 0;
211
+ this._rx.set(this.active, false);
212
+ }
213
+ /**
214
+ * Retry last failed request.
215
+ */
216
+ async retry() {
217
+ if (this._lastRequest) {
218
+ return this.request(this._lastRequest);
219
+ }
220
+ }
221
+ /**
222
+ * Update the current chat's name.
223
+ */
224
+ async updateName(chat) {
225
+ const runtime = await this._services();
226
+ await updateName(runtime, this._conversation, chat, this._options.model);
227
+ }
228
+ // TODO(burdon): Fix/factor out.
229
+ _artifactDiffResolver = {
230
+ resolve: async (_artifacts) => {
231
+ const versions = /* @__PURE__ */ new Map();
232
+ return versions;
233
+ }
234
+ };
235
+ _onMessage = Effect2.fn((function* (message) {
236
+ this._rx.set(this._streaming, Option.none());
237
+ this._rx.update(this._pending, (pending) => [
238
+ ...pending,
239
+ message
240
+ ]);
241
+ }).bind(this));
242
+ _onBlock = Effect2.fn((function* (block) {
243
+ this._rx.update(this._streaming, (streaming) => {
244
+ const blocks = streaming.pipe(Option.map((streaming2) => streaming2.blocks.filter((b) => !b.pending)), Option.getOrElse(() => []));
245
+ return Option.some(Obj.make(Message.Message, {
246
+ created: (/* @__PURE__ */ new Date()).toISOString(),
247
+ sender: {
248
+ role: "assistant"
249
+ },
250
+ blocks: [
251
+ ...blocks,
252
+ block
253
+ ]
254
+ }));
255
+ });
256
+ }).bind(this));
257
+ };
258
+
259
+ export {
260
+ AiServicePresets,
261
+ updateName,
262
+ AiChatProcessor
263
+ };
264
+ //# sourceMappingURL=chunk-3YVWS6OI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/processor/update-name.ts", "../../../src/processor/presets.ts", "../../../src/processor/processor.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport * as Fiber from 'effect/Fiber';\nimport * as Runtime from 'effect/Runtime';\n\nimport { AiService, DEFAULT_EDGE_MODEL, type ModelName } from '@dxos/ai';\nimport { type AiConversation, AiSession } from '@dxos/assistant';\nimport { throwCause } from '@dxos/effect';\nimport { trim } from '@dxos/util';\n\nimport { type Assistant } from '../types';\n\nimport { type AiChatServices } from './processor';\n\n/**\n * Update the current chat's name.\n */\n// TODO(burdon): Convert this into a plugin tool.\nexport const updateName = async (\n runtime: Runtime.Runtime<AiChatServices>,\n conversation: AiConversation,\n chat: Assistant.Chat,\n model: ModelName = DEFAULT_EDGE_MODEL,\n): Promise<void> => {\n const history = await conversation.getHistory();\n const system = trim`\n It is extremely important that you respond only with the title and nothing else.\n If you cannot do this effectively respond with \"New Chat\".\n `;\n const prompt = 'Suggest a name for this chat';\n\n const fiber = Effect.gen(this, function* () {\n const session = new AiSession();\n return yield* session.run({ system, prompt, history });\n }).pipe(\n Effect.provide(AiService.model(model)),\n Effect.tap((messages) => {\n // TODO(burdon): Parse response (should update via tool).\n const message = messages.find((message) => message.sender.role === 'assistant');\n const title = message?.blocks.find((block) => block._tag === 'text')?.text;\n if (title) {\n chat.name = title;\n }\n }),\n Runtime.runFork(runtime), // Run in the background.\n );\n\n const response = await fiber.pipe(Fiber.join, Effect.runPromiseExit);\n if (!Exit.isSuccess(response)) {\n throwCause(response.cause);\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { type ModelName } from '@dxos/ai';\n\nconst ModelProviders = ['dxos-local', 'dxos-remote', 'lm-studio'] as const;\n\nconst ModelProvider = Schema.Literal(...ModelProviders);\ntype ModelProvider = Schema.Schema.Type<typeof ModelProvider>;\n\nexport type AiServicePreset = {\n id: string;\n provider: ModelProvider;\n model: ModelName;\n label?: string;\n};\n\nconst createModelLabel = (model: ModelName) => {\n const parts = model.split('/');\n return parts[parts.length - 1];\n};\n\n// TODO(burdon): Users should be able to create and edit presets.\nexport const AiServicePresets: AiServicePreset[] = [\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-opus-4-0' as const,\n },\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-sonnet-4-0' as const,\n },\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-3-5-haiku-20241022' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@google/gemma-3-27b' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@meta/llama-3.2-3b-instruct' as const,\n },\n {\n model: 'deepseek-r1:latest' as const,\n provider: 'dxos-local' as const,\n },\n].map(\n ({ model, provider }, i) =>\n ({\n id: `preset-${i}`,\n provider,\n model,\n label: createModelLabel(model),\n }) satisfies AiServicePreset,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, Registry } from '@effect-atom/atom-react';\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport * as Fiber from 'effect/Fiber';\nimport * as Option from 'effect/Option';\nimport * as Runtime from 'effect/Runtime';\n\nimport {\n AiService,\n DEFAULT_EDGE_MODEL,\n type ModelName,\n type ModelRegistry,\n type ToolExecutionService,\n type ToolResolverService,\n} from '@dxos/ai';\nimport {\n type AiConversation,\n type AiConversationRunParams,\n ArtifactDiffResolver,\n GenerationObserver,\n createSystemPrompt,\n} from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { Obj } from '@dxos/echo';\nimport { throwCause } from '@dxos/effect';\nimport {\n type CredentialsService,\n type DatabaseService,\n type FunctionInvocationService,\n type QueueService,\n type TracingService,\n} from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { type ContentBlock, Message } from '@dxos/types';\n\nimport { type Assistant } from '../types';\n\nimport { updateName } from './update-name';\n\nexport type AiChatServices =\n | CredentialsService\n | DatabaseService\n | QueueService\n | FunctionInvocationService\n | AiService.AiService\n | ToolExecutionService\n | ToolResolverService\n | TracingService;\n\nexport type AiChatProcessorOptions = {\n model?: ModelName;\n modelRegistry?: ModelRegistry;\n blueprintRegistry?: Blueprint.Registry;\n observableRegistry?: Registry.Registry;\n extensions?: ToolContextExtensions;\n} & Pick<AiConversationRunParams, 'system'>;\n\nconst defaultOptions: Partial<AiChatProcessorOptions> = {\n model: DEFAULT_EDGE_MODEL,\n};\n\n// TODO(burdon): Retry, timeout?\nexport type AiRequestOptions = {};\n\nexport type AiRequest = {\n message: string;\n options?: AiRequestOptions;\n};\n\n/**\n * Handles interactions with the AI service.\n * Handles streaming responses from the conversation.\n */\nexport class AiChatProcessor {\n private readonly _rx: Registry.Registry;\n\n /** External observer. */\n private readonly _observer: GenerationObserver;\n\n /** Currently active request fiber. */\n private _fiber: Fiber.Fiber<void, any> | undefined;\n\n /** Last request (for retries). */\n private _lastRequest: AiRequest | undefined;\n\n /** Pending messages (incl. the current user request). */\n private readonly _pending = Atom.make<Message.Message[]>([]);\n\n /** Currently streaming message (from the AI service). */\n private readonly _streaming = Atom.make<Option.Option<Message.Message>>(Option.none());\n\n /** Streaming state. */\n public readonly streaming = Atom.make<boolean>((get) => Option.isSome(get(this._streaming)));\n\n /** Active state. */\n public readonly active = Atom.make(false);\n\n /** Array of Messages (incl. the current message being streamed). */\n public readonly messages = Atom.make<Message.Message[]>((get) =>\n Option.match(get(this._streaming), {\n onNone: () => get(this._pending),\n onSome: (streaming) => [...get(this._pending), streaming],\n }),\n );\n\n /** Last error. */\n public readonly error = Atom.make<Option.Option<Error>>(Option.none());\n\n constructor(\n private readonly _conversation: AiConversation,\n // TODO(dmaretskyi): Replace this with effect's ManagedRuntime wrapping this layer.\n private readonly _services: () => Promise<Runtime.Runtime<AiChatServices>>,\n private readonly _options: AiChatProcessorOptions = defaultOptions,\n ) {\n // Initialize registries and defaults before using in other logic.\n this._rx = this._options.observableRegistry ?? Registry.make();\n this._observer = GenerationObserver.make({\n onBlock: this._onBlock,\n onMessage: this._onMessage,\n });\n if (this._options.model && !this._options.system) {\n const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};\n this._options.system = createSystemPrompt(capabilities);\n }\n }\n\n get context() {\n return this._conversation.context;\n }\n\n get conversation() {\n return this._conversation;\n }\n\n get blueprintRegistry() {\n return this._options.blueprintRegistry;\n }\n\n /**\n * Initiates a new request.\n */\n async request(requestParam: AiRequest): Promise<void> {\n if (this._fiber) {\n await this.cancel();\n }\n\n try {\n this._lastRequest = requestParam;\n this._rx.set(this.error, Option.none());\n this._rx.set(this.active, true);\n\n // Create request.\n const request = this._conversation.createRequest({\n system: this._options.system,\n prompt: requestParam.message,\n observer: this._observer,\n });\n\n const runtime = await this._services();\n\n // Create fiber.\n this._fiber = request.pipe(\n Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),\n\n // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.\n Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),\n\n Effect.asVoid,\n Runtime.runFork(runtime), // Runs in the background.\n );\n\n // Execute request.\n const response = await this._fiber.pipe(Fiber.join, Effect.runPromiseExit);\n if (!Exit.isSuccess(response) && !Cause.isInterruptedOnly(response.cause)) {\n throwCause(response.cause);\n }\n\n this._rx.set(this.error, Option.none());\n this._lastRequest = undefined;\n this._fiber = undefined;\n } catch (error) {\n log.error('request failed', { error });\n this._rx.set(this.error, Option.some(new Error('AI service error', { cause: error })));\n } finally {\n this._fiber = undefined;\n this._rx.set(this.active, false);\n }\n }\n\n /**\n * Cancels the current request.\n */\n async cancel(): Promise<void> {\n await Effect.runPromise(\n Effect.gen(this, function* () {\n if (this._fiber) {\n yield* this._fiber.pipe(Fiber.interrupt);\n }\n }),\n );\n\n this._fiber = undefined;\n this._rx.set(this.active, false);\n }\n\n /**\n * Retry last failed request.\n */\n async retry(): Promise<void> {\n if (this._lastRequest) {\n return this.request(this._lastRequest);\n }\n }\n\n /**\n * Update the current chat's name.\n */\n async updateName(chat: Assistant.Chat): Promise<void> {\n const runtime = await this._services();\n await updateName(runtime, this._conversation, chat, this._options.model);\n }\n\n // TODO(burdon): Fix/factor out.\n private _artifactDiffResolver: ArtifactDiffResolver.Service = {\n resolve: async (_artifacts) => {\n const versions = new Map();\n // await Promise.all(\n // artifacts.map(async (artifact) => {\n // const {\n // objects: [object],\n // } = await space.db.query(Filter.ids(artifact.id)).run();\n // if (!object) {\n // return;\n // }\n\n // versions.set(artifact.id, {\n // version: getVersion(object),\n // diff: `Current state: ${JSON.stringify(object)}`,\n // });\n // }),\n // );\n\n return versions;\n },\n };\n\n private _onMessage = Effect.fn(\n function* (this: AiChatProcessor, message: Message.Message) {\n this._rx.set(this._streaming, Option.none());\n this._rx.update(this._pending, (pending) => [...pending, message]);\n }.bind(this),\n );\n\n private _onBlock = Effect.fn(\n function* (this: AiChatProcessor, block: ContentBlock.Any) {\n this._rx.update(this._streaming, (streaming) => {\n const blocks = streaming.pipe(\n Option.map((streaming) => streaming.blocks.filter((b: ContentBlock.Any) => !b.pending)),\n Option.getOrElse(() => []),\n );\n\n return Option.some(\n Obj.make(Message.Message, {\n created: new Date().toISOString(),\n sender: { role: 'assistant' },\n blocks: [...blocks, block],\n }),\n );\n });\n }.bind(this),\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Exit", "Fiber", "Runtime", "AiService", "DEFAULT_EDGE_MODEL", "AiSession", "throwCause", "trim", "updateName", "runtime", "conversation", "chat", "model", "DEFAULT_EDGE_MODEL", "history", "getHistory", "system", "trim", "prompt", "fiber", "gen", "session", "AiSession", "run", "pipe", "provide", "AiService", "tap", "messages", "message", "find", "sender", "role", "title", "blocks", "block", "_tag", "text", "name", "runFork", "response", "join", "runPromiseExit", "isSuccess", "throwCause", "cause", "Schema", "ModelProviders", "ModelProvider", "Literal", "createModelLabel", "model", "parts", "split", "length", "AiServicePresets", "provider", "map", "i", "id", "label", "Atom", "Registry", "Cause", "Effect", "Exit", "Fiber", "Option", "Runtime", "AiService", "DEFAULT_EDGE_MODEL", "ArtifactDiffResolver", "GenerationObserver", "createSystemPrompt", "Obj", "throwCause", "log", "Message", "defaultOptions", "model", "DEFAULT_EDGE_MODEL", "AiChatProcessor", "_rx", "_observer", "_fiber", "_lastRequest", "_pending", "Atom", "make", "_streaming", "none", "streaming", "get", "isSome", "active", "messages", "match", "onNone", "onSome", "error", "_conversation", "_services", "_options", "observableRegistry", "Registry", "GenerationObserver", "onBlock", "_onBlock", "onMessage", "_onMessage", "system", "capabilities", "modelRegistry", "getCapabilities", "createSystemPrompt", "context", "conversation", "blueprintRegistry", "request", "requestParam", "cancel", "set", "createRequest", "prompt", "message", "observer", "runtime", "pipe", "provide", "AiService", "provideService", "ArtifactDiffResolver", "_artifactDiffResolver", "asVoid", "runFork", "response", "join", "runPromiseExit", "isSuccess", "isInterruptedOnly", "cause", "throwCause", "undefined", "log", "some", "Error", "runPromise", "gen", "interrupt", "retry", "updateName", "chat", "resolve", "_artifacts", "versions", "Map", "fn", "update", "pending", "bind", "block", "blocks", "map", "filter", "b", "getOrElse", "Obj", "Message", "created", "Date", "toISOString", "sender", "role"]
7
+ }