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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs +158 -0
  4. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-YBJBIVUZ.mjs → ChatContainer-2W6FNSJD.mjs} +22 -20
  6. package/dist/lib/browser/ChatContainer-2W6FNSJD.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-MTPJLEHM.mjs → ChatDialog-XQ3KDYWE.mjs} +12 -11
  8. package/dist/lib/browser/ChatDialog-XQ3KDYWE.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-Q7JYGFQV.mjs +59 -0
  10. package/dist/lib/browser/PromptArticle-Q7JYGFQV.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +19 -0
  12. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +7 -0
  13. package/dist/lib/browser/{app-graph-builder-7AAWTWGA.mjs → app-graph-builder-LM6GVHQO.mjs} +67 -21
  14. package/dist/lib/browser/app-graph-builder-LM6GVHQO.mjs.map +7 -0
  15. package/dist/lib/browser/{blueprint-definition-CRZPIA5A.mjs → blueprint-definition-VBEOXNBS.mjs} +4 -4
  16. package/dist/lib/browser/chunk-2BOE3OTW.mjs +262 -0
  17. package/dist/lib/browser/chunk-2BOE3OTW.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-SMIVXXAI.mjs → chunk-5JZRYQZL.mjs} +52 -25
  19. package/dist/lib/browser/chunk-5JZRYQZL.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs +335 -0
  21. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-IJAJRAR7.mjs → chunk-LRE4VEZV.mjs} +2 -4
  23. package/dist/lib/browser/chunk-LRE4VEZV.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-OYFQS7JM.mjs → chunk-NC2QNMBF.mjs} +60 -41
  25. package/dist/lib/browser/chunk-NC2QNMBF.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-PWSTPQUY.mjs +1929 -0
  27. package/dist/lib/browser/chunk-PWSTPQUY.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-WBG5PTSX.mjs +23 -0
  29. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +7 -0
  30. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
  31. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
  32. package/dist/lib/browser/index.mjs +142 -103
  33. package/dist/lib/browser/index.mjs.map +4 -4
  34. package/dist/lib/browser/{intent-resolver-BQO5SVGI.mjs → intent-resolver-EEYS2GJF.mjs} +62 -31
  35. package/dist/lib/browser/intent-resolver-EEYS2GJF.mjs.map +7 -0
  36. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs +17 -0
  37. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs.map +7 -0
  38. package/dist/lib/browser/meta.json +1 -1
  39. package/dist/lib/browser/{react-surface-VNCD2H7C.mjs → react-surface-ECKZNDSU.mjs} +24 -35
  40. package/dist/lib/browser/react-surface-ECKZNDSU.mjs.map +7 -0
  41. package/dist/lib/browser/repair-3MZXLUHO.mjs +44 -0
  42. package/dist/lib/browser/repair-3MZXLUHO.mjs.map +7 -0
  43. package/dist/lib/browser/{settings-36V3VUMW.mjs → settings-HD5WA24I.mjs} +5 -5
  44. package/dist/lib/browser/{settings-36V3VUMW.mjs.map → settings-HD5WA24I.mjs.map} +1 -1
  45. package/dist/lib/browser/{state-D5IVKNYG.mjs → state-GG7Z3NB7.mjs} +9 -5
  46. package/dist/lib/browser/{state-D5IVKNYG.mjs.map → state-GG7Z3NB7.mjs.map} +3 -3
  47. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  48. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  49. package/dist/lib/browser/types/index.mjs +2 -2
  50. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs +37 -0
  51. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs.map +7 -0
  52. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs +159 -0
  53. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs.map +7 -0
  54. package/dist/lib/node-esm/{ChatContainer-TUCITJJW.mjs → ChatContainer-CTUNUEU3.mjs} +22 -20
  55. package/dist/lib/node-esm/ChatContainer-CTUNUEU3.mjs.map +7 -0
  56. package/dist/lib/node-esm/{ChatDialog-JLM7RDZQ.mjs → ChatDialog-X42ASXQD.mjs} +12 -11
  57. package/dist/lib/node-esm/ChatDialog-X42ASXQD.mjs.map +7 -0
  58. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.mjs +60 -0
  59. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.mjs.map +7 -0
  60. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
  61. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
  62. package/dist/lib/node-esm/{app-graph-builder-PNAFQUYT.mjs → app-graph-builder-6XUAGTRS.mjs} +67 -21
  63. package/dist/lib/node-esm/app-graph-builder-6XUAGTRS.mjs.map +7 -0
  64. package/dist/lib/node-esm/{blueprint-definition-275J3XL2.mjs → blueprint-definition-RDCLLIQH.mjs} +4 -4
  65. package/dist/lib/node-esm/{chunk-CAQKGW3B.mjs → chunk-25GMMNY5.mjs} +60 -41
  66. package/dist/lib/node-esm/chunk-25GMMNY5.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs +264 -0
  68. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs +336 -0
  70. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-7YOGZI66.mjs → chunk-E4JSYCWZ.mjs} +52 -25
  72. package/dist/lib/node-esm/chunk-E4JSYCWZ.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-WE6KTH72.mjs +25 -0
  74. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-YPXEA46Q.mjs → chunk-YWFWT57N.mjs} +2 -4
  76. package/dist/lib/node-esm/chunk-YWFWT57N.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-Z37USO4K.mjs +1930 -0
  78. package/dist/lib/node-esm/chunk-Z37USO4K.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 +142 -103
  82. package/dist/lib/node-esm/index.mjs.map +4 -4
  83. package/dist/lib/node-esm/{intent-resolver-FIS3T5KP.mjs → intent-resolver-4SRYLDK5.mjs} +62 -31
  84. package/dist/lib/node-esm/intent-resolver-4SRYLDK5.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-4NLRKNBU.mjs → react-surface-NLIG5VAI.mjs} +24 -35
  89. package/dist/lib/node-esm/react-surface-NLIG5VAI.mjs.map +7 -0
  90. package/dist/lib/node-esm/repair-RER5H7Y6.mjs +45 -0
  91. package/dist/lib/node-esm/repair-RER5H7Y6.mjs.map +7 -0
  92. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs → settings-YJQVKHH5.mjs} +5 -5
  93. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs.map → settings-YJQVKHH5.mjs.map} +1 -1
  94. package/dist/lib/node-esm/{state-4VLKPLW3.mjs → state-FSUHFMDM.mjs} +9 -5
  95. package/dist/lib/node-esm/{state-4VLKPLW3.mjs.map → state-FSUHFMDM.mjs.map} +3 -3
  96. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  97. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs.map +7 -0
  98. package/dist/lib/node-esm/types/index.mjs +2 -2
  99. package/dist/types/src/AssistantPlugin.d.ts +1 -1
  100. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/ai-service.d.ts +2 -3
  102. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -1
  105. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/capabilities.d.ts +2 -11
  107. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/index.d.ts +1 -0
  110. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/repair.d.ts +4 -0
  115. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/toolkit.d.ts +1 -1
  118. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  119. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  120. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  121. package/dist/types/src/components/Chat/Chat.d.ts +22 -11
  122. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  123. package/dist/types/src/components/Chat/events.d.ts +4 -0
  124. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  125. package/dist/types/src/components/ChatCompanion.d.ts +2 -2
  126. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
  127. package/dist/types/src/components/ChatContainer.d.ts +7 -4
  128. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  130. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  131. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  132. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  133. package/dist/types/src/components/ChatThread/ChatThread.d.ts +10 -8
  134. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  135. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +140 -77
  136. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  137. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
  138. package/dist/types/src/components/ChatThread/reducers.d.ts +5 -5
  139. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -1
  140. package/dist/types/src/components/ChatThread/registry.d.ts +11 -0
  141. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  142. package/dist/types/src/components/ChatThread/sync.d.ts +42 -0
  143. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  144. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  145. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  146. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  147. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  148. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  149. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  150. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +121 -62
  151. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  152. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -1
  153. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  154. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +121 -62
  155. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  157. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  158. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  159. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  160. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  161. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +21 -0
  162. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  163. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  164. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  165. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  166. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  167. package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -2
  168. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  169. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +121 -62
  170. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/index.d.ts +4 -9
  172. package/dist/types/src/components/index.d.ts.map +1 -1
  173. package/dist/types/src/functions/analysis.d.ts +1 -1
  174. package/dist/types/src/functions/analysis.d.ts.map +1 -1
  175. package/dist/types/src/functions/index.d.ts +2 -2
  176. package/dist/types/src/functions/index.d.ts.map +1 -1
  177. package/dist/types/src/functions/{list.d.ts → object-list.d.ts} +2 -2
  178. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  179. package/dist/types/src/functions/{load.d.ts → object-load.d.ts} +2 -2
  180. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  181. package/dist/types/src/hooks/index.d.ts +2 -4
  182. package/dist/types/src/hooks/index.d.ts.map +1 -1
  183. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +2 -1
  184. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  185. package/dist/types/src/hooks/useChatProcessor.d.ts +5 -3
  186. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  187. package/dist/types/src/hooks/useChatServices.d.ts +2 -2
  188. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  190. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  191. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  192. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  193. package/dist/types/src/hooks/useFilteredTypes.d.ts +4 -0
  194. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  195. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  196. package/dist/types/src/index.d.ts +2 -0
  197. package/dist/types/src/index.d.ts.map +1 -1
  198. package/dist/types/src/meta.d.ts +1 -2
  199. package/dist/types/src/meta.d.ts.map +1 -1
  200. package/dist/types/src/processor/index.d.ts +1 -0
  201. package/dist/types/src/processor/index.d.ts.map +1 -1
  202. package/dist/types/src/processor/presets.d.ts +1 -1
  203. package/dist/types/src/processor/presets.d.ts.map +1 -1
  204. package/dist/types/src/processor/processor.d.ts +17 -23
  205. package/dist/types/src/processor/processor.d.ts.map +1 -1
  206. package/dist/types/src/processor/update-name.d.ts +10 -0
  207. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  208. package/dist/types/src/queue-logger.d.ts.map +1 -1
  209. package/dist/types/src/testing/index.d.ts +1 -2
  210. package/dist/types/src/testing/index.d.ts.map +1 -1
  211. package/dist/types/src/testing/test-generator.d.ts +7 -0
  212. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  213. package/dist/types/src/testing/test-services.d.ts +2 -2
  214. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  215. package/dist/types/src/translations.d.ts +246 -27
  216. package/dist/types/src/translations.d.ts.map +1 -1
  217. package/dist/types/src/types/Assistant.d.ts +16 -13
  218. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  219. package/dist/types/src/types/AssistantAction.d.ts +38 -16
  220. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  221. package/dist/types/src/types/service.d.ts +129 -82
  222. package/dist/types/src/types/service.d.ts.map +1 -1
  223. package/dist/types/tsconfig.tsbuildinfo +1 -1
  224. package/package.json +96 -111
  225. package/src/AssistantPlugin.tsx +138 -134
  226. package/src/capabilities/ai-service.ts +6 -7
  227. package/src/capabilities/app-graph-builder.ts +69 -21
  228. package/src/capabilities/blueprint-definition.ts +39 -15
  229. package/src/capabilities/capabilities.ts +2 -16
  230. package/src/capabilities/edge-model-resolver.ts +5 -7
  231. package/src/capabilities/index.ts +1 -0
  232. package/src/capabilities/intent-resolver.ts +61 -20
  233. package/src/capabilities/local-model-resolver.ts +7 -9
  234. package/src/capabilities/react-surface.tsx +16 -20
  235. package/src/capabilities/repair.ts +49 -0
  236. package/src/capabilities/state.ts +2 -0
  237. package/src/capabilities/toolkit.ts +9 -155
  238. package/src/components/BlueprintArticle.tsx +29 -0
  239. package/src/components/Chat/Chat.tsx +177 -140
  240. package/src/components/Chat/events.ts +6 -0
  241. package/src/components/ChatCompanion.tsx +93 -49
  242. package/src/components/ChatContainer.tsx +27 -17
  243. package/src/components/ChatDialog.tsx +17 -10
  244. package/src/components/ChatProgress/ChatProgress.tsx +3 -4
  245. package/src/components/ChatPrompt/ChatActions.tsx +2 -4
  246. package/src/components/ChatPrompt/ChatOptions.tsx +48 -47
  247. package/src/components/ChatPrompt/ChatReferences.tsx +2 -2
  248. package/src/components/ChatThread/ChatThread.stories.tsx +90 -225
  249. package/src/components/ChatThread/ChatThread.tsx +59 -51
  250. package/src/components/ChatThread/Link.tsx +11 -8
  251. package/src/components/ChatThread/reducers.ts +6 -6
  252. package/src/components/ChatThread/registry.tsx +174 -0
  253. package/src/components/ChatThread/sync.test.ts +89 -0
  254. package/src/components/ChatThread/sync.ts +148 -0
  255. package/src/components/ChatThread/testing/thread.md +37 -0
  256. package/src/components/PromptArticle.tsx +51 -0
  257. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +15 -7
  258. package/src/components/TemplateEditor/TemplateEditor.tsx +21 -12
  259. package/src/components/TemplateEditor/TemplateForm.stories.tsx +4 -6
  260. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  261. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  262. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  263. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  264. package/src/components/{ChatThread → ToolBlock}/ToolBlock.tsx +46 -50
  265. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  266. package/src/components/ToolBlock/index.ts +6 -0
  267. package/src/components/Toolbox/Toolbox.stories.tsx +5 -8
  268. package/src/components/Toolbox/Toolbox.tsx +5 -5
  269. package/src/components/index.ts +2 -5
  270. package/src/functions/analysis.ts +5 -3
  271. package/src/functions/index.ts +2 -2
  272. package/src/functions/{list.ts → object-list.ts} +6 -4
  273. package/src/functions/{load.ts → object-load.ts} +10 -8
  274. package/src/hooks/index.ts +2 -4
  275. package/src/hooks/useBlueprintRegistry.ts +19 -4
  276. package/src/hooks/useChatProcessor.ts +23 -15
  277. package/src/hooks/useChatServices.ts +29 -42
  278. package/src/hooks/useChatToolbarActions.ts +122 -0
  279. package/src/hooks/useContextBinder.ts +19 -7
  280. package/src/hooks/useContextObjects.ts +1 -1
  281. package/src/hooks/{useItemTypes.ts → useFilteredTypes.ts} +8 -7
  282. package/src/hooks/useReferencesProvider.ts +2 -1
  283. package/src/index.ts +2 -0
  284. package/src/meta.ts +9 -6
  285. package/src/processor/index.ts +1 -0
  286. package/src/processor/presets.ts +2 -2
  287. package/src/processor/processor.test.ts +21 -27
  288. package/src/processor/processor.ts +47 -74
  289. package/src/processor/update-name.ts +56 -0
  290. package/src/queue-logger.ts +9 -13
  291. package/src/testing/index.ts +1 -2
  292. package/src/testing/test-generator.ts +261 -0
  293. package/src/testing/test-services.ts +2 -8
  294. package/src/translations.ts +30 -18
  295. package/src/types/Assistant.ts +11 -9
  296. package/src/types/AssistantAction.ts +23 -6
  297. package/src/types/service.ts +17 -9
  298. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs +0 -29
  299. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs.map +0 -7
  300. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs +0 -126
  301. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs.map +0 -7
  302. package/dist/lib/browser/ChatContainer-YBJBIVUZ.mjs.map +0 -7
  303. package/dist/lib/browser/ChatDialog-MTPJLEHM.mjs.map +0 -7
  304. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs +0 -150
  305. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +0 -7
  306. package/dist/lib/browser/ai-service-NRZPTUHO.mjs +0 -22
  307. package/dist/lib/browser/ai-service-NRZPTUHO.mjs.map +0 -7
  308. package/dist/lib/browser/app-graph-builder-7AAWTWGA.mjs.map +0 -7
  309. package/dist/lib/browser/chunk-6QMISAU6.mjs +0 -167
  310. package/dist/lib/browser/chunk-6QMISAU6.mjs.map +0 -7
  311. package/dist/lib/browser/chunk-CFXXQM25.mjs +0 -182
  312. package/dist/lib/browser/chunk-CFXXQM25.mjs.map +0 -7
  313. package/dist/lib/browser/chunk-IJAJRAR7.mjs.map +0 -7
  314. package/dist/lib/browser/chunk-O4LUJEDV.mjs +0 -20
  315. package/dist/lib/browser/chunk-O4LUJEDV.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-OYFQS7JM.mjs.map +0 -7
  317. package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-V5H5CCZA.mjs +0 -218
  319. package/dist/lib/browser/chunk-V5H5CCZA.mjs.map +0 -7
  320. package/dist/lib/browser/chunk-XL557TXF.mjs +0 -2332
  321. package/dist/lib/browser/chunk-XL557TXF.mjs.map +0 -7
  322. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs +0 -22
  323. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs.map +0 -7
  324. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs.map +0 -7
  325. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs +0 -21
  326. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs.map +0 -7
  327. package/dist/lib/browser/react-surface-VNCD2H7C.mjs.map +0 -7
  328. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs +0 -191
  329. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs.map +0 -7
  330. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs +0 -30
  331. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs.map +0 -7
  332. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs +0 -127
  333. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs.map +0 -7
  334. package/dist/lib/node-esm/ChatContainer-TUCITJJW.mjs.map +0 -7
  335. package/dist/lib/node-esm/ChatDialog-JLM7RDZQ.mjs.map +0 -7
  336. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs +0 -151
  337. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +0 -7
  338. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs +0 -23
  339. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs.map +0 -7
  340. package/dist/lib/node-esm/app-graph-builder-PNAFQUYT.mjs.map +0 -7
  341. package/dist/lib/node-esm/chunk-2X6VEO32.mjs +0 -2333
  342. package/dist/lib/node-esm/chunk-2X6VEO32.mjs.map +0 -7
  343. package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +0 -7
  344. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs.map +0 -7
  345. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs +0 -183
  346. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs.map +0 -7
  347. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs +0 -168
  348. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs.map +0 -7
  349. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs +0 -219
  350. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs.map +0 -7
  351. package/dist/lib/node-esm/chunk-VFY2JG62.mjs +0 -22
  352. package/dist/lib/node-esm/chunk-VFY2JG62.mjs.map +0 -7
  353. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs.map +0 -7
  354. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs +0 -23
  355. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs.map +0 -7
  356. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs.map +0 -7
  357. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs +0 -22
  358. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs.map +0 -7
  359. package/dist/lib/node-esm/react-surface-4NLRKNBU.mjs.map +0 -7
  360. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs +0 -192
  361. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs.map +0 -7
  362. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  363. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  364. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -33
  365. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  366. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  367. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  368. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  369. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  370. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  371. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  372. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  373. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  374. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -263
  375. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  376. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  377. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  378. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  379. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -4
  380. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  381. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  382. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  383. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  384. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  385. package/dist/types/src/execution-graph/execution-graph.d.ts +0 -21
  386. package/dist/types/src/execution-graph/execution-graph.d.ts.map +0 -1
  387. package/dist/types/src/execution-graph/index.d.ts +0 -2
  388. package/dist/types/src/execution-graph/index.d.ts.map +0 -1
  389. package/dist/types/src/functions/list.d.ts.map +0 -1
  390. package/dist/types/src/functions/load.d.ts.map +0 -1
  391. package/dist/types/src/hooks/useExecutionGraph.d.ts +0 -7
  392. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +0 -1
  393. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  394. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  395. package/dist/types/src/hooks/useMatcherExtension.d.ts +0 -3
  396. package/dist/types/src/hooks/useMatcherExtension.d.ts.map +0 -1
  397. package/dist/types/src/hooks/useResolveRef.d.ts +0 -4
  398. package/dist/types/src/hooks/useResolveRef.d.ts.map +0 -1
  399. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  400. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  401. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  402. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  403. package/dist/types/src/parser/index.d.ts +0 -4
  404. package/dist/types/src/parser/index.d.ts.map +0 -1
  405. package/dist/types/src/parser/query-parser.d.ts +0 -15
  406. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  407. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  408. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  409. package/dist/types/src/parser/types.d.ts +0 -24
  410. package/dist/types/src/parser/types.d.ts.map +0 -1
  411. package/dist/types/src/stories/Chat.stories.d.ts +0 -26
  412. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  413. package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -4
  414. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
  415. package/dist/types/src/stories/components/ChatContainer.d.ts +0 -4
  416. package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
  417. package/dist/types/src/stories/components/CommentsContainer.d.ts +0 -4
  418. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +0 -1
  419. package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
  420. package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
  421. package/dist/types/src/stories/components/LoggingContainer.d.ts +0 -4
  422. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +0 -1
  423. package/dist/types/src/stories/components/MessageContainer.d.ts +0 -4
  424. package/dist/types/src/stories/components/MessageContainer.d.ts.map +0 -1
  425. package/dist/types/src/stories/components/SurfaceContainer.d.ts +0 -8
  426. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +0 -1
  427. package/dist/types/src/stories/components/TasksContainer.d.ts +0 -4
  428. package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
  429. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +0 -3
  430. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +0 -1
  431. package/dist/types/src/stories/components/index.d.ts +0 -11
  432. package/dist/types/src/stories/components/index.d.ts.map +0 -1
  433. package/dist/types/src/stories/components/types.d.ts +0 -7
  434. package/dist/types/src/stories/components/types.d.ts.map +0 -1
  435. package/dist/types/src/stories/testing/data.d.ts +0 -5
  436. package/dist/types/src/stories/testing/data.d.ts.map +0 -1
  437. package/dist/types/src/stories/testing/index.d.ts +0 -3
  438. package/dist/types/src/stories/testing/index.d.ts.map +0 -1
  439. package/dist/types/src/stories/testing/testing.d.ts +0 -44
  440. package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
  441. package/dist/types/src/testing/test-data.d.ts +0 -4
  442. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  443. package/dist/types/src/testing/test-functions.d.ts +0 -6
  444. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  445. package/src/components/BlueprintContainer.tsx +0 -24
  446. package/src/components/ChatThread/ChatMessage.tsx +0 -334
  447. package/src/components/PromptSettings.tsx +0 -90
  448. package/src/components/SequenceContainer.tsx +0 -131
  449. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -33
  450. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  451. package/src/components/SequenceEditor/index.ts +0 -5
  452. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  453. package/src/components/Toolbar/Toolbar.tsx +0 -20
  454. package/src/components/Toolbar/index.ts +0 -5
  455. package/src/components/Toolbar/useChatToolbarActions.ts +0 -125
  456. package/src/execution-graph/execution-graph.ts +0 -211
  457. package/src/execution-graph/index.ts +0 -5
  458. package/src/hooks/useExecutionGraph.ts +0 -20
  459. package/src/hooks/useMatcherExtension.ts +0 -45
  460. package/src/hooks/useResolveRef.ts +0 -33
  461. package/src/parser/filter-generator.test.ts +0 -32
  462. package/src/parser/filter-generator.ts +0 -76
  463. package/src/parser/index.ts +0 -7
  464. package/src/parser/query-parser.test.ts +0 -139
  465. package/src/parser/query-parser.ts +0 -199
  466. package/src/parser/types.ts +0 -36
  467. package/src/stories/Chat.stories.tsx +0 -469
  468. package/src/stories/components/BlueprintContainer.tsx +0 -32
  469. package/src/stories/components/ChatContainer.tsx +0 -57
  470. package/src/stories/components/CommentsContainer.tsx +0 -25
  471. package/src/stories/components/GraphContainer.tsx +0 -118
  472. package/src/stories/components/LoggingContainer.tsx +0 -21
  473. package/src/stories/components/MessageContainer.tsx +0 -27
  474. package/src/stories/components/SurfaceContainer.tsx +0 -52
  475. package/src/stories/components/TasksContainer.tsx +0 -49
  476. package/src/stories/components/TokenManagerContainer.tsx +0 -14
  477. package/src/stories/components/index.ts +0 -15
  478. package/src/stories/components/types.ts +0 -11
  479. package/src/stories/testing/data.ts +0 -142
  480. package/src/stories/testing/index.ts +0 -6
  481. package/src/stories/testing/testing.tsx +0 -254
  482. package/src/testing/test-data.ts +0 -109
  483. package/src/testing/test-functions.ts +0 -16
  484. /package/dist/lib/browser/{blueprint-definition-CRZPIA5A.mjs.map → blueprint-definition-VBEOXNBS.mjs.map} +0 -0
  485. /package/dist/lib/node-esm/{blueprint-definition-275J3XL2.mjs.map → blueprint-definition-RDCLLIQH.mjs.map} +0 -0
  486. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -3,15 +3,18 @@ import { createRequire } from 'node:module';const require = createRequire(import
3
3
  // src/capabilities/blueprint-definition.ts
4
4
  import { Capabilities, contributes } from "@dxos/app-framework";
5
5
  import { templates } from "@dxos/assistant";
6
+ import { Agent, AssistantToolkit, Discord, DiscordBlueprint, EntityExtraction, Linear, LinearBlueprint, Research, ResearchBlueprint, SystemToolkit, WebSearchBlueprint } from "@dxos/assistant-toolkit";
6
7
  import { Blueprint } from "@dxos/blueprints";
7
8
 
8
9
  // src/functions/analysis.ts
9
- import { Effect, Schema } from "effect";
10
+ import * as Effect from "effect/Effect";
11
+ import * as Schema from "effect/Schema";
10
12
  import { defineFunction } from "@dxos/functions";
11
13
  import { log } from "@dxos/log";
12
14
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/functions/analysis.ts";
13
15
  var analysis_default = defineFunction({
14
- name: "dxos.org/function/assistant-analysis",
16
+ key: "dxos.org/function/assistant-analysis",
17
+ name: "Assistant analysis",
15
18
  description: "Enter analysis analysis mode.",
16
19
  inputSchema: Schema.Struct({
17
20
  enable: Schema.Boolean.annotations({
@@ -21,29 +24,30 @@ var analysis_default = defineFunction({
21
24
  outputSchema: Schema.Void,
22
25
  handler: Effect.fn(function* ({ context, data: { enable } }) {
23
26
  log.info("analysis mode", {
24
- space: context.space?.id,
25
27
  enable
26
28
  }, {
27
29
  F: __dxlog_file,
28
- L: 18,
30
+ L: 20,
29
31
  S: this,
30
32
  C: (f, a) => f(...a)
31
33
  });
32
34
  })
33
35
  });
34
36
 
35
- // src/functions/list.ts
36
- import { Effect as Effect2, Schema as Schema2 } from "effect";
37
+ // src/functions/object-list.ts
38
+ import * as Effect2 from "effect/Effect";
39
+ import * as Schema2 from "effect/Schema";
37
40
  import { Filter, Obj, Query } from "@dxos/echo";
38
41
  import { DatabaseService, defineFunction as defineFunction2 } from "@dxos/functions";
39
42
  import { trim } from "@dxos/util";
40
- var list_default = defineFunction2({
41
- name: "dxos.org/function/assistant/list",
43
+ var object_list_default = defineFunction2({
44
+ key: "dxos.org/function/assistant/object-list",
45
+ name: "List objects",
42
46
  description: (
43
47
  // TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.
44
48
  trim`
45
49
  Lists the objects of the given type.
46
- Check the list-schemas tool for available types before calling this function.
50
+ Check the get-schemas tool for available types before calling this function.
47
51
  `
48
52
  ),
49
53
  inputSchema: Schema2.Struct({
@@ -77,15 +81,17 @@ var list_default = defineFunction2({
77
81
  })
78
82
  });
79
83
 
80
- // src/functions/load.ts
81
- import { Effect as Effect3, Option, Schema as Schema3, pipe } from "effect";
84
+ // src/functions/object-load.ts
85
+ import * as Effect3 from "effect/Effect";
86
+ import * as Function from "effect/Function";
87
+ import * as Option from "effect/Option";
88
+ import * as Schema3 from "effect/Schema";
82
89
  import { ArtifactId } from "@dxos/assistant";
83
90
  import { Obj as Obj2 } from "@dxos/echo";
84
91
  import { DatabaseService as DatabaseService2, defineFunction as defineFunction3 } from "@dxos/functions";
85
- import { log as log2 } from "@dxos/log";
86
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/functions/load.ts";
87
- var load_default = defineFunction3({
88
- name: "dxos.org/function/assistant/load",
92
+ var object_load_default = defineFunction3({
93
+ key: "dxos.org/function/assistant/object-load",
94
+ name: "Load object",
89
95
  description: "Loads the object.",
90
96
  inputSchema: Schema3.Struct({
91
97
  id: ArtifactId.annotations({
@@ -96,22 +102,14 @@ var load_default = defineFunction3({
96
102
  })
97
103
  }),
98
104
  outputSchema: Schema3.Struct({
99
- // TODO(wittjosiah): Type.Obj.Any | Type.Relation.Any
105
+ // TODO(wittjosiah): Type.Entity.Any
100
106
  object: Schema3.Any
101
107
  }),
102
108
  handler: Effect3.fn(function* ({ data: { id, typename } }) {
103
109
  const object = yield* DatabaseService2.resolve(ArtifactId.toDXN(id));
104
- return yield* pipe(Option.fromNullable(object), Option.flatMap((object2) => Obj2.getTypename(object2) === typename ? Option.some(object2) : Option.none()), Option.match({
110
+ return yield* Function.pipe(Option.fromNullable(object), Option.flatMap((object2) => Obj2.getTypename(object2) === typename ? Option.some(object2) : Option.none()), Option.match({
105
111
  onNone: () => Effect3.fail("Object not found."),
106
112
  onSome: (object2) => {
107
- log2.info("object", {
108
- object: object2
109
- }, {
110
- F: __dxlog_file2,
111
- L: 37,
112
- S: this,
113
- C: (f, a) => f(...a)
114
- });
115
113
  return Effect3.succeed({
116
114
  object: object2
117
115
  });
@@ -121,23 +119,22 @@ var load_default = defineFunction3({
121
119
  });
122
120
 
123
121
  // src/capabilities/blueprint-definition.ts
122
+ var deckTools = [
123
+ "open-item"
124
+ ];
124
125
  var functions = [
125
126
  analysis_default,
126
- list_default,
127
- load_default
127
+ object_list_default,
128
+ object_load_default
128
129
  ];
129
130
  var tools = [
130
- "add-to-context",
131
- // TODO(wittjosiah): Factor out to an ECHO blueprint.
132
- "get-schemas",
133
- "add-schema",
134
- "create-record",
135
- // TODO(wittjosiah): Factor out to a generic app-framework blueprint.
136
- "open-item"
131
+ ...AssistantToolkit.tools,
132
+ ...SystemToolkit.tools,
133
+ ...deckTools
137
134
  ];
138
- var BLUEPRINT_KEY = "dxos.org/blueprint/assistant";
135
+ var ASSISTANT_BLUEPRINT_KEY = "dxos.org/blueprint/assistant";
139
136
  var createBlueprint = () => Blueprint.make({
140
- key: BLUEPRINT_KEY,
137
+ key: ASSISTANT_BLUEPRINT_KEY,
141
138
  name: "Assistant",
142
139
  tools: Blueprint.toolDefinitions({
143
140
  functions,
@@ -146,14 +143,36 @@ var createBlueprint = () => Blueprint.make({
146
143
  instructions: templates.system
147
144
  });
148
145
  var blueprint = createBlueprint();
149
- var blueprint_definition_default = () => [
146
+ var blueprint_definition_default = (() => [
150
147
  contributes(Capabilities.Functions, functions),
151
- contributes(Capabilities.BlueprintDefinition, blueprint)
152
- ];
148
+ contributes(Capabilities.BlueprintDefinition, blueprint),
149
+ // TODO(burdon): Factor out.
150
+ contributes(Capabilities.Functions, [
151
+ Research.create,
152
+ Research.research
153
+ ]),
154
+ contributes(Capabilities.BlueprintDefinition, ResearchBlueprint),
155
+ // TODO(burdon): Factor out.
156
+ contributes(Capabilities.Functions, [
157
+ Agent.prompt,
158
+ EntityExtraction.extract
159
+ ]),
160
+ contributes(Capabilities.BlueprintDefinition, WebSearchBlueprint),
161
+ // TODO(burdon): Factor out.
162
+ contributes(Capabilities.Functions, [
163
+ Discord.fetch
164
+ ]),
165
+ contributes(Capabilities.BlueprintDefinition, DiscordBlueprint),
166
+ // TODO(burdon): Factor out.
167
+ contributes(Capabilities.Functions, [
168
+ Linear.sync
169
+ ]),
170
+ contributes(Capabilities.BlueprintDefinition, LinearBlueprint)
171
+ ]);
153
172
 
154
173
  export {
155
- BLUEPRINT_KEY,
174
+ ASSISTANT_BLUEPRINT_KEY,
156
175
  createBlueprint,
157
176
  blueprint_definition_default
158
177
  };
159
- //# sourceMappingURL=chunk-CAQKGW3B.mjs.map
178
+ //# sourceMappingURL=chunk-25GMMNY5.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/analysis.ts", "../../../src/functions/object-list.ts", "../../../src/functions/object-load.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type Capability, contributes } from '@dxos/app-framework';\nimport { templates } from '@dxos/assistant';\nimport {\n Agent,\n AssistantToolkit,\n Discord,\n DiscordBlueprint,\n EntityExtraction,\n Linear,\n LinearBlueprint,\n Research,\n ResearchBlueprint,\n SystemToolkit,\n WebSearchBlueprint,\n} from '@dxos/assistant-toolkit';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\n\nimport { analysis, list, load } from '../functions';\n\n// TODO(burdon): Document plugin structure (blueprint, functions, toolkit.)\n// TODO(burdon): Test framework for developing functions. Error handling.\n// TODO(burdon): Function naming pattern (noun-verb); fully-qualified?\n\n// TODO(wittjosiah): Factor out to a generic app-framework blueprint.\nconst deckTools = ['open-item'];\n\nconst functions: FunctionDefinition[] = [analysis, list, load];\nconst tools = [...AssistantToolkit.tools, ...SystemToolkit.tools, ...deckTools];\n\nexport const ASSISTANT_BLUEPRINT_KEY = 'dxos.org/blueprint/assistant';\n\nexport const createBlueprint = (): Blueprint.Blueprint =>\n Blueprint.make({\n key: ASSISTANT_BLUEPRINT_KEY,\n name: 'Assistant',\n tools: Blueprint.toolDefinitions({ functions, tools }),\n instructions: templates.system,\n });\n\nconst blueprint = createBlueprint();\n\nexport default (): Capability<any>[] => [\n contributes(Capabilities.Functions, functions),\n contributes(Capabilities.BlueprintDefinition, blueprint),\n\n // TODO(burdon): Factor out.\n contributes(Capabilities.Functions, [Research.create, Research.research]),\n contributes(Capabilities.BlueprintDefinition, ResearchBlueprint),\n\n // TODO(burdon): Factor out.\n contributes(Capabilities.Functions, [Agent.prompt, EntityExtraction.extract]),\n contributes(Capabilities.BlueprintDefinition, WebSearchBlueprint),\n\n // TODO(burdon): Factor out.\n contributes(Capabilities.Functions, [Discord.fetch]),\n contributes(Capabilities.BlueprintDefinition, DiscordBlueprint),\n\n // TODO(burdon): Factor out.\n contributes(Capabilities.Functions, [Linear.sync]),\n contributes(Capabilities.BlueprintDefinition, LinearBlueprint),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { defineFunction } from '@dxos/functions';\nimport { log } from '@dxos/log';\n\nexport default defineFunction({\n key: 'dxos.org/function/assistant-analysis',\n name: 'Assistant analysis',\n description: 'Enter analysis analysis mode.',\n inputSchema: Schema.Struct({\n enable: Schema.Boolean.annotations({ description: 'Enable or disable analysis mode.' }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ context, data: { enable } }) {\n log.info('analysis mode', { enable });\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\n// TODO(burdon): Move to toolkit (i.e., tool not function).\nexport default defineFunction({\n key: 'dxos.org/function/assistant/object-list',\n name: 'List objects',\n description:\n // TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.\n trim`\n Lists the objects of the given type.\n Check the get-schemas tool for available types before calling this function.\n `,\n inputSchema: Schema.Struct({\n typename: Schema.String.annotations({\n description: 'The typename of the objects to list.',\n }),\n }),\n outputSchema: Schema.Struct({\n results: Schema.Array(\n Schema.Struct({\n dxn: Schema.String.annotations({ description: 'The DXN of the object.' }),\n label: Schema.optional(Schema.String.annotations({ description: 'The label of the object.' })),\n }),\n ),\n }),\n handler: Effect.fn(function* ({ data: { typename } }) {\n // TODO(wittjosiah): Typename query is not working for dynamic schemas.\n const [schema] = yield* DatabaseService.runSchemaQuery({ typename });\n const filter = schema ? Filter.type(schema) : Filter.typename(typename);\n\n const { objects } = yield* DatabaseService.runQuery(Query.select(filter));\n const results = objects.map((object) => ({\n dxn: Obj.getDXN(object).toString(),\n label: Obj.getLabel(object),\n }));\n\n return { results };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\n\n// TODO(burdon): Move to toolkit (i.e., tool not function).\nexport default defineFunction({\n key: 'dxos.org/function/assistant/object-load',\n name: 'Load object',\n description: 'Loads the object.',\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the object.',\n }),\n typename: Schema.String.annotations({\n description: 'The typename of the object.',\n }),\n }),\n outputSchema: Schema.Struct({\n // TODO(wittjosiah): Type.Entity.Any\n object: Schema.Any,\n }),\n handler: Effect.fn(function* ({ data: { id, typename } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id));\n return yield* Function.pipe(\n Option.fromNullable(object),\n Option.flatMap((object) => (Obj.getTypename(object) === typename ? Option.some(object) : Option.none())),\n Option.match({\n onNone: () => Effect.fail('Object not found.'),\n onSome: (object) => {\n // log.info('object', { object });\n return Effect.succeed({ object });\n },\n }),\n );\n }),\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Capabilities", "contributes", "templates", "Agent", "AssistantToolkit", "Discord", "DiscordBlueprint", "EntityExtraction", "Linear", "LinearBlueprint", "Research", "ResearchBlueprint", "SystemToolkit", "WebSearchBlueprint", "Blueprint", "Effect", "Schema", "defineFunction", "log", "key", "name", "description", "inputSchema", "Struct", "enable", "Boolean", "annotations", "outputSchema", "Void", "handler", "fn", "context", "data", "info", "Effect", "Schema", "Filter", "Obj", "Query", "DatabaseService", "defineFunction", "trim", "defineFunction", "key", "name", "description", "trim", "inputSchema", "Struct", "typename", "String", "annotations", "outputSchema", "results", "Array", "dxn", "label", "optional", "handler", "fn", "data", "schema", "DatabaseService", "runSchemaQuery", "filter", "Filter", "type", "objects", "runQuery", "Query", "select", "map", "object", "Obj", "getDXN", "toString", "getLabel", "Effect", "Function", "Option", "Schema", "ArtifactId", "Obj", "DatabaseService", "defineFunction", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "id", "ArtifactId", "annotations", "typename", "String", "outputSchema", "object", "Any", "handler", "fn", "data", "DatabaseService", "resolve", "toDXN", "pipe", "fromNullable", "flatMap", "Obj", "getTypename", "some", "none", "match", "onNone", "fail", "onSome", "succeed", "deckTools", "functions", "analysis", "list", "load", "tools", "AssistantToolkit", "SystemToolkit", "ASSISTANT_BLUEPRINT_KEY", "createBlueprint", "Blueprint", "make", "key", "name", "toolDefinitions", "instructions", "templates", "system", "blueprint", "contributes", "Capabilities", "Functions", "BlueprintDefinition", "Research", "create", "research", "ResearchBlueprint", "Agent", "prompt", "EntityExtraction", "extract", "WebSearchBlueprint", "Discord", "fetch", "DiscordBlueprint", "Linear", "sync", "LinearBlueprint"]
7
+ }
@@ -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
+ _registry;
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._registry = 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._registry.set(this.error, Option.none());
163
+ this._registry.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._registry.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._registry.set(this.error, Option.some(new Error("AI service error", {
194
+ cause: error
195
+ })));
196
+ } finally {
197
+ this._fiber = void 0;
198
+ this._registry.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._registry.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._registry.set(this._streaming, Option.none());
237
+ this._registry.update(this._pending, (pending) => [
238
+ ...pending,
239
+ message
240
+ ]);
241
+ }).bind(this));
242
+ _onBlock = Effect2.fn((function* (block) {
243
+ this._registry.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-3Q22TTXW.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 _registry: 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._registry = 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._registry.set(this.error, Option.none());\n this._registry.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._registry.set(this.error, Option.none());\n this._lastRequest = undefined;\n this._fiber = undefined;\n } catch (error) {\n log.error('request failed', { error });\n this._registry.set(this.error, Option.some(new Error('AI service error', { cause: error })));\n } finally {\n this._fiber = undefined;\n this._registry.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._registry.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._registry.set(this._streaming, Option.none());\n this._registry.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._registry.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", "_registry", "_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
+ }