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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-BWSLH6LG.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs +158 -0
  4. package/dist/lib/browser/ChatCompanion-OSZZZSWV.mjs.map +7 -0
  5. package/dist/lib/browser/ChatContainer-2W6FNSJD.mjs +77 -0
  6. package/dist/lib/browser/ChatContainer-2W6FNSJD.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-ZVLXFHEY.mjs → ChatDialog-XQ3KDYWE.mjs} +30 -12
  8. package/dist/lib/browser/ChatDialog-XQ3KDYWE.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-Q7JYGFQV.mjs +59 -0
  10. package/dist/lib/browser/PromptArticle-Q7JYGFQV.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +19 -0
  12. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +7 -0
  13. package/dist/lib/browser/app-graph-builder-LM6GVHQO.mjs +199 -0
  14. package/dist/lib/browser/app-graph-builder-LM6GVHQO.mjs.map +7 -0
  15. package/dist/lib/browser/blueprint-definition-VBEOXNBS.mjs +12 -0
  16. package/dist/lib/browser/blueprint-definition-VBEOXNBS.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-2BOE3OTW.mjs +262 -0
  18. package/dist/lib/browser/chunk-2BOE3OTW.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-5JZRYQZL.mjs +229 -0
  20. package/dist/lib/browser/chunk-5JZRYQZL.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs +335 -0
  22. package/dist/lib/browser/chunk-7ZJIXQ2Y.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  24. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-LRE4VEZV.mjs +16 -0
  26. package/dist/lib/browser/chunk-LRE4VEZV.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-NC2QNMBF.mjs +176 -0
  28. package/dist/lib/browser/chunk-NC2QNMBF.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-PWSTPQUY.mjs +1929 -0
  30. package/dist/lib/browser/chunk-PWSTPQUY.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-WBG5PTSX.mjs +23 -0
  32. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +7 -0
  33. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
  34. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
  35. package/dist/lib/browser/index.mjs +221 -107
  36. package/dist/lib/browser/index.mjs.map +4 -4
  37. package/dist/lib/browser/intent-resolver-EEYS2GJF.mjs +143 -0
  38. package/dist/lib/browser/intent-resolver-EEYS2GJF.mjs.map +7 -0
  39. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs +17 -0
  40. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs.map +7 -0
  41. package/dist/lib/browser/meta.json +1 -1
  42. package/dist/lib/browser/react-surface-ECKZNDSU.mjs +98 -0
  43. package/dist/lib/browser/react-surface-ECKZNDSU.mjs.map +7 -0
  44. package/dist/lib/browser/repair-3MZXLUHO.mjs +44 -0
  45. package/dist/lib/browser/repair-3MZXLUHO.mjs.map +7 -0
  46. package/dist/lib/browser/{settings-5GTTCVGD.mjs → settings-HD5WA24I.mjs} +8 -7
  47. package/dist/lib/{node-esm/settings-J2EXEM5H.mjs.map → browser/settings-HD5WA24I.mjs.map} +1 -1
  48. package/dist/lib/browser/state-GG7Z3NB7.mjs +25 -0
  49. package/dist/lib/browser/state-GG7Z3NB7.mjs.map +7 -0
  50. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  51. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  52. package/dist/lib/browser/types/index.mjs +7 -4
  53. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs +37 -0
  54. package/dist/lib/node-esm/BlueprintArticle-R2XYBRCK.mjs.map +7 -0
  55. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs +159 -0
  56. package/dist/lib/node-esm/ChatCompanion-IUMU7WRQ.mjs.map +7 -0
  57. package/dist/lib/node-esm/{ChatContainer-W3W6FWV3.mjs → ChatContainer-CTUNUEU3.mjs} +38 -15
  58. package/dist/lib/node-esm/ChatContainer-CTUNUEU3.mjs.map +7 -0
  59. package/dist/lib/node-esm/{ChatDialog-QW4JRKVO.mjs → ChatDialog-X42ASXQD.mjs} +30 -12
  60. package/dist/lib/node-esm/ChatDialog-X42ASXQD.mjs.map +7 -0
  61. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.mjs +60 -0
  62. package/dist/lib/node-esm/PromptArticle-IV7O5UZ3.mjs.map +7 -0
  63. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
  64. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
  65. package/dist/lib/node-esm/app-graph-builder-6XUAGTRS.mjs +200 -0
  66. package/dist/lib/node-esm/app-graph-builder-6XUAGTRS.mjs.map +7 -0
  67. package/dist/lib/node-esm/blueprint-definition-RDCLLIQH.mjs +13 -0
  68. package/dist/lib/node-esm/blueprint-definition-RDCLLIQH.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-25GMMNY5.mjs +178 -0
  70. package/dist/lib/node-esm/chunk-25GMMNY5.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs +264 -0
  72. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs +336 -0
  74. package/dist/lib/node-esm/chunk-CKW4IYLY.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-E4JSYCWZ.mjs +230 -0
  76. package/dist/lib/node-esm/chunk-E4JSYCWZ.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  78. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-WE6KTH72.mjs +25 -0
  80. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-YWFWT57N.mjs +17 -0
  82. package/dist/lib/node-esm/chunk-YWFWT57N.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-Z37USO4K.mjs +1930 -0
  84. package/dist/lib/node-esm/chunk-Z37USO4K.mjs.map +7 -0
  85. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
  86. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
  87. package/dist/lib/node-esm/index.mjs +221 -107
  88. package/dist/lib/node-esm/index.mjs.map +4 -4
  89. package/dist/lib/node-esm/intent-resolver-4SRYLDK5.mjs +144 -0
  90. package/dist/lib/node-esm/intent-resolver-4SRYLDK5.mjs.map +7 -0
  91. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs +18 -0
  92. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs.map +7 -0
  93. package/dist/lib/node-esm/meta.json +1 -1
  94. package/dist/lib/node-esm/react-surface-NLIG5VAI.mjs +99 -0
  95. package/dist/lib/node-esm/react-surface-NLIG5VAI.mjs.map +7 -0
  96. package/dist/lib/node-esm/repair-RER5H7Y6.mjs +45 -0
  97. package/dist/lib/node-esm/repair-RER5H7Y6.mjs.map +7 -0
  98. package/dist/lib/node-esm/{settings-J2EXEM5H.mjs → settings-YJQVKHH5.mjs} +8 -7
  99. package/dist/lib/{browser/settings-5GTTCVGD.mjs.map → node-esm/settings-YJQVKHH5.mjs.map} +1 -1
  100. package/dist/lib/node-esm/state-FSUHFMDM.mjs +26 -0
  101. package/dist/lib/node-esm/state-FSUHFMDM.mjs.map +7 -0
  102. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  103. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs.map +7 -0
  104. package/dist/lib/node-esm/types/index.mjs +7 -4
  105. package/dist/types/src/AssistantPlugin.d.ts +1 -1
  106. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/ai-service.d.ts +4 -0
  108. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  110. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/blueprint-definition.d.ts +7 -0
  112. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/capabilities.d.ts +10 -0
  114. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/edge-model-resolver.d.ts +4 -0
  116. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/index.d.ts +12 -3
  118. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  120. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  121. package/dist/types/src/capabilities/local-model-resolver.d.ts +10 -0
  122. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  124. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  125. package/dist/types/src/capabilities/repair.d.ts +4 -0
  126. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/settings.d.ts +1 -1
  128. package/dist/types/src/capabilities/state.d.ts +4 -0
  129. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  130. package/dist/types/src/capabilities/toolkit.d.ts +4 -0
  131. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  132. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  133. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  134. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  135. package/dist/types/src/components/Chat/Chat.d.ts +35 -21
  136. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  137. package/dist/types/src/components/Chat/events.d.ts +9 -0
  138. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  139. package/dist/types/src/components/ChatCompanion.d.ts +13 -0
  140. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -0
  141. package/dist/types/src/components/ChatContainer.d.ts +9 -6
  142. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  143. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  144. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +7 -0
  145. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -0
  146. package/dist/types/src/components/ChatProgress/index.d.ts +2 -0
  147. package/dist/types/src/components/ChatProgress/index.d.ts.map +1 -0
  148. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  149. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +20 -0
  150. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
  151. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  152. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +4 -5
  153. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  154. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
  155. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  156. package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
  157. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  158. package/dist/types/src/components/ChatThread/ChatThread.d.ts +12 -10
  159. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  160. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +196 -55
  161. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  162. package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
  163. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
  164. package/dist/types/src/components/ChatThread/reducers.d.ts +40 -0
  165. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -0
  166. package/dist/types/src/components/ChatThread/registry.d.ts +11 -0
  167. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
  168. package/dist/types/src/components/ChatThread/sync.d.ts +42 -0
  169. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
  170. package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
  171. package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
  172. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  173. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  174. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
  175. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  176. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +317 -7
  177. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  178. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -1
  179. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  180. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +314 -2
  181. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  182. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +12 -0
  183. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  184. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  185. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  186. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  187. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  188. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +21 -0
  189. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
  190. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
  191. package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
  192. package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
  193. package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
  194. package/dist/types/src/components/Toolbox/Toolbox.d.ts +6 -11
  195. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  196. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +318 -5
  197. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  198. package/dist/types/src/components/index.d.ts +4 -6
  199. package/dist/types/src/components/index.d.ts.map +1 -1
  200. package/dist/types/src/events.d.ts +1 -1
  201. package/dist/types/src/events.d.ts.map +1 -1
  202. package/dist/types/src/functions/analysis.d.ts +5 -0
  203. package/dist/types/src/functions/analysis.d.ts.map +1 -0
  204. package/dist/types/src/functions/index.d.ts +4 -0
  205. package/dist/types/src/functions/index.d.ts.map +1 -0
  206. package/dist/types/src/functions/object-list.d.ts +10 -0
  207. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  208. package/dist/types/src/functions/object-load.d.ts +8 -0
  209. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  210. package/dist/types/src/hooks/index.d.ts +8 -3
  211. package/dist/types/src/hooks/index.d.ts.map +1 -1
  212. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +25 -0
  213. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
  214. package/dist/types/src/hooks/useChatProcessor.d.ts +8 -19
  215. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  216. package/dist/types/src/hooks/useChatServices.d.ts +5 -6
  217. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  218. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  219. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  220. package/dist/types/src/hooks/useContextBinder.d.ts +4 -0
  221. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
  222. package/dist/types/src/hooks/useContextObjects.d.ts +15 -0
  223. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
  224. package/dist/types/src/hooks/useFilteredTypes.d.ts +4 -0
  225. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  226. package/dist/types/src/hooks/useFlush.d.ts +6 -0
  227. package/dist/types/src/hooks/useFlush.d.ts.map +1 -0
  228. package/dist/types/src/hooks/useOnline.d.ts +3 -0
  229. package/dist/types/src/hooks/useOnline.d.ts.map +1 -0
  230. package/dist/types/src/hooks/usePresets.d.ts +7 -0
  231. package/dist/types/src/hooks/usePresets.d.ts.map +1 -0
  232. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  233. package/dist/types/src/index.d.ts +2 -0
  234. package/dist/types/src/index.d.ts.map +1 -1
  235. package/dist/types/src/meta.d.ts +1 -2
  236. package/dist/types/src/meta.d.ts.map +1 -1
  237. package/dist/types/src/processor/index.d.ts +4 -0
  238. package/dist/types/src/processor/index.d.ts.map +1 -0
  239. package/dist/types/src/{hooks → processor}/presets.d.ts +3 -3
  240. package/dist/types/src/processor/presets.d.ts.map +1 -0
  241. package/dist/types/src/processor/processor.d.ts +74 -0
  242. package/dist/types/src/processor/processor.d.ts.map +1 -0
  243. package/dist/types/src/processor/processor.test.d.ts +2 -0
  244. package/dist/types/src/processor/processor.test.d.ts.map +1 -0
  245. package/dist/types/src/processor/update-name.d.ts +10 -0
  246. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  247. package/dist/types/src/queue-logger.d.ts.map +1 -1
  248. package/dist/types/src/testing/index.d.ts +1 -1
  249. package/dist/types/src/testing/index.d.ts.map +1 -1
  250. package/dist/types/src/testing/test-generator.d.ts +7 -0
  251. package/dist/types/src/testing/test-generator.d.ts.map +1 -0
  252. package/dist/types/src/testing/test-sequence.d.ts +0 -4
  253. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  254. package/dist/types/src/testing/test-services.d.ts +2 -2
  255. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  256. package/dist/types/src/translations.d.ts +262 -28
  257. package/dist/types/src/translations.d.ts.map +1 -1
  258. package/dist/types/src/types/Assistant.d.ts +45 -0
  259. package/dist/types/src/types/Assistant.d.ts.map +1 -0
  260. package/dist/types/src/types/AssistantAction.d.ts +129 -0
  261. package/dist/types/src/types/AssistantAction.d.ts.map +1 -0
  262. package/dist/types/src/types/defs.d.ts +2 -0
  263. package/dist/types/src/types/defs.d.ts.map +1 -0
  264. package/dist/types/src/types/index.d.ts +3 -1
  265. package/dist/types/src/types/index.d.ts.map +1 -1
  266. package/dist/types/src/types/service.d.ts +135 -85
  267. package/dist/types/src/types/service.d.ts.map +1 -1
  268. package/dist/types/tsconfig.tsbuildinfo +1 -1
  269. package/package.json +100 -97
  270. package/src/AssistantPlugin.tsx +151 -111
  271. package/src/capabilities/ai-service.ts +27 -0
  272. package/src/capabilities/app-graph-builder.ts +101 -60
  273. package/src/capabilities/blueprint-definition.ts +66 -0
  274. package/src/capabilities/capabilities.ts +17 -0
  275. package/src/capabilities/edge-model-resolver.ts +25 -0
  276. package/src/capabilities/index.ts +10 -0
  277. package/src/capabilities/intent-resolver.ts +89 -26
  278. package/src/capabilities/local-model-resolver.ts +30 -0
  279. package/src/capabilities/react-surface.tsx +24 -75
  280. package/src/capabilities/repair.ts +49 -0
  281. package/src/capabilities/state.ts +22 -0
  282. package/src/capabilities/toolkit.ts +17 -0
  283. package/src/components/AssistantSettings/AssistantSettings.tsx +83 -76
  284. package/src/components/BlueprintArticle.tsx +29 -0
  285. package/src/components/Chat/Chat.tsx +260 -217
  286. package/src/components/Chat/events.ts +13 -0
  287. package/src/components/ChatCompanion.tsx +155 -0
  288. package/src/components/ChatContainer.tsx +36 -20
  289. package/src/components/ChatDialog.tsx +25 -14
  290. package/src/components/ChatProgress/ChatProgress.tsx +67 -0
  291. package/src/components/{SequenceEditor → ChatProgress}/index.ts +1 -1
  292. package/src/components/ChatPrompt/ChatActions.tsx +10 -26
  293. package/src/components/ChatPrompt/ChatOptions.tsx +234 -0
  294. package/src/components/ChatPrompt/ChatPresets.tsx +1 -0
  295. package/src/components/ChatPrompt/ChatReferences.tsx +31 -36
  296. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
  297. package/src/components/ChatPrompt/index.ts +1 -1
  298. package/src/components/ChatThread/ChatThread.stories.tsx +120 -115
  299. package/src/components/ChatThread/ChatThread.tsx +65 -35
  300. package/src/components/ChatThread/Link.tsx +26 -0
  301. package/src/components/ChatThread/reducers.ts +151 -0
  302. package/src/components/ChatThread/registry.tsx +174 -0
  303. package/src/components/ChatThread/sync.test.ts +89 -0
  304. package/src/components/ChatThread/sync.ts +148 -0
  305. package/src/components/ChatThread/testing/thread.md +37 -0
  306. package/src/components/PromptArticle.tsx +51 -0
  307. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +38 -17
  308. package/src/components/TemplateEditor/TemplateEditor.tsx +30 -54
  309. package/src/components/TemplateEditor/TemplateForm.stories.tsx +16 -11
  310. package/src/components/TemplateEditor/TemplateForm.tsx +5 -3
  311. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  312. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  313. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  314. package/src/components/ToolBlock/ToolBlock.tsx +143 -0
  315. package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
  316. package/src/components/ToolBlock/index.ts +6 -0
  317. package/src/components/Toolbox/Toolbox.stories.tsx +14 -23
  318. package/src/components/Toolbox/Toolbox.tsx +25 -55
  319. package/src/components/index.ts +3 -7
  320. package/src/events.ts +2 -2
  321. package/src/functions/analysis.ts +22 -0
  322. package/src/functions/index.ts +7 -0
  323. package/src/functions/object-list.ts +48 -0
  324. package/src/functions/object-load.ts +45 -0
  325. package/src/hooks/index.ts +8 -4
  326. package/src/hooks/useBlueprintRegistry.ts +95 -0
  327. package/src/hooks/useChatProcessor.ts +35 -104
  328. package/src/hooks/useChatServices.ts +33 -49
  329. package/src/hooks/useChatToolbarActions.ts +122 -0
  330. package/src/hooks/useContextBinder.ts +30 -0
  331. package/src/hooks/useContextObjects.ts +58 -0
  332. package/src/hooks/useFilteredTypes.ts +38 -0
  333. package/src/hooks/useFlush.ts +35 -0
  334. package/src/hooks/useOnline.ts +10 -0
  335. package/src/hooks/usePresets.ts +44 -0
  336. package/src/hooks/useReferencesProvider.ts +13 -10
  337. package/src/index.ts +2 -0
  338. package/src/meta.ts +9 -6
  339. package/src/processor/index.ts +7 -0
  340. package/src/{hooks → processor}/presets.ts +16 -8
  341. package/src/processor/processor.test.ts +71 -0
  342. package/src/processor/processor.ts +277 -0
  343. package/src/processor/update-name.ts +56 -0
  344. package/src/queue-logger.ts +13 -17
  345. package/src/testing/index.ts +1 -1
  346. package/src/testing/test-generator.ts +261 -0
  347. package/src/testing/test-sequence.ts +2 -27
  348. package/src/testing/test-services.ts +2 -8
  349. package/src/translations.ts +49 -18
  350. package/src/types/Assistant.ts +63 -0
  351. package/src/types/AssistantAction.ts +79 -0
  352. package/src/types/defs.ts +5 -0
  353. package/src/types/index.ts +4 -1
  354. package/src/types/service.ts +17 -9
  355. package/src/vite-env.d.ts +30 -0
  356. package/dist/lib/browser/BlueprintContainer-IZ4AK5EO.mjs +0 -28
  357. package/dist/lib/browser/BlueprintContainer-IZ4AK5EO.mjs.map +0 -7
  358. package/dist/lib/browser/ChatContainer-RP3QEXYX.mjs +0 -54
  359. package/dist/lib/browser/ChatContainer-RP3QEXYX.mjs.map +0 -7
  360. package/dist/lib/browser/ChatDialog-ZVLXFHEY.mjs.map +0 -7
  361. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs +0 -162
  362. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
  363. package/dist/lib/browser/app-graph-builder-XSEOKJLG.mjs +0 -164
  364. package/dist/lib/browser/app-graph-builder-XSEOKJLG.mjs.map +0 -7
  365. package/dist/lib/browser/chunk-63GG6U6D.mjs +0 -2226
  366. package/dist/lib/browser/chunk-63GG6U6D.mjs.map +0 -7
  367. package/dist/lib/browser/chunk-7W7LHTRH.mjs +0 -171
  368. package/dist/lib/browser/chunk-7W7LHTRH.mjs.map +0 -7
  369. package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
  370. package/dist/lib/browser/chunk-FDCJSQYF.mjs.map +0 -7
  371. package/dist/lib/browser/chunk-KFXSBNZR.mjs +0 -89
  372. package/dist/lib/browser/chunk-KFXSBNZR.mjs.map +0 -7
  373. package/dist/lib/browser/chunk-LERGF5YG.mjs +0 -108
  374. package/dist/lib/browser/chunk-LERGF5YG.mjs.map +0 -7
  375. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs +0 -75
  376. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs.map +0 -7
  377. package/dist/lib/browser/react-surface-3GYEHQRP.mjs +0 -150
  378. package/dist/lib/browser/react-surface-3GYEHQRP.mjs.map +0 -7
  379. package/dist/lib/node-esm/BlueprintContainer-RGTMNLNX.mjs +0 -29
  380. package/dist/lib/node-esm/BlueprintContainer-RGTMNLNX.mjs.map +0 -7
  381. package/dist/lib/node-esm/ChatContainer-W3W6FWV3.mjs.map +0 -7
  382. package/dist/lib/node-esm/ChatDialog-QW4JRKVO.mjs.map +0 -7
  383. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs +0 -163
  384. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
  385. package/dist/lib/node-esm/app-graph-builder-PANCJUHV.mjs +0 -165
  386. package/dist/lib/node-esm/app-graph-builder-PANCJUHV.mjs.map +0 -7
  387. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs +0 -2227
  388. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs.map +0 -7
  389. package/dist/lib/node-esm/chunk-MS3PJARN.mjs +0 -109
  390. package/dist/lib/node-esm/chunk-MS3PJARN.mjs.map +0 -7
  391. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
  392. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs.map +0 -7
  393. package/dist/lib/node-esm/chunk-VIIMA3XQ.mjs +0 -90
  394. package/dist/lib/node-esm/chunk-VIIMA3XQ.mjs.map +0 -7
  395. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs +0 -172
  396. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs.map +0 -7
  397. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs +0 -76
  398. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs.map +0 -7
  399. package/dist/lib/node-esm/react-surface-QDQWJ7FZ.mjs +0 -151
  400. package/dist/lib/node-esm/react-surface-QDQWJ7FZ.mjs.map +0 -7
  401. package/dist/types/src/capability-definitions.d.ts +0 -7
  402. package/dist/types/src/capability-definitions.d.ts.map +0 -1
  403. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  404. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  405. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
  406. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
  407. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -17
  408. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
  409. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
  410. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
  411. package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
  412. package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
  413. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  414. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  415. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  416. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  417. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  418. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  419. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -8
  420. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  421. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  422. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  423. package/dist/types/src/hooks/chat-processor.d.ts +0 -86
  424. package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
  425. package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
  426. package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
  427. package/dist/types/src/hooks/presets.d.ts.map +0 -1
  428. package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
  429. package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
  430. package/dist/types/src/parser/filter-generator.d.ts +0 -4
  431. package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
  432. package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
  433. package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
  434. package/dist/types/src/parser/index.d.ts +0 -4
  435. package/dist/types/src/parser/index.d.ts.map +0 -1
  436. package/dist/types/src/parser/query-parser.d.ts +0 -15
  437. package/dist/types/src/parser/query-parser.d.ts.map +0 -1
  438. package/dist/types/src/parser/query-parser.test.d.ts +0 -2
  439. package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
  440. package/dist/types/src/parser/types.d.ts +0 -24
  441. package/dist/types/src/parser/types.d.ts.map +0 -1
  442. package/dist/types/src/stories/Chat.stories.d.ts +0 -207
  443. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  444. package/dist/types/src/testing/test-functions.d.ts +0 -3
  445. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  446. package/dist/types/src/tools/function.d.ts +0 -5
  447. package/dist/types/src/tools/function.d.ts.map +0 -1
  448. package/dist/types/src/tools/index.d.ts +0 -3
  449. package/dist/types/src/tools/index.d.ts.map +0 -1
  450. package/dist/types/src/tools/openapi.d.ts +0 -10
  451. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  452. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  453. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  454. package/dist/types/src/types/schema.d.ts +0 -120
  455. package/dist/types/src/types/schema.d.ts.map +0 -1
  456. package/src/capability-definitions.ts +0 -15
  457. package/src/components/BlueprintContainer.tsx +0 -24
  458. package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
  459. package/src/components/ChatThread/ChatMessage.tsx +0 -268
  460. package/src/components/ChatThread/ToolBlock.tsx +0 -121
  461. package/src/components/ChatThread/reducer.ts +0 -52
  462. package/src/components/PromptSettings.tsx +0 -89
  463. package/src/components/SequenceContainer.tsx +0 -132
  464. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -32
  465. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  466. package/src/hooks/chat-processor.test.ts +0 -16
  467. package/src/hooks/chat-processor.ts +0 -314
  468. package/src/hooks/useBlueprints.ts +0 -57
  469. package/src/parser/filter-generator.test.ts +0 -32
  470. package/src/parser/filter-generator.ts +0 -81
  471. package/src/parser/index.ts +0 -7
  472. package/src/parser/query-parser.test.ts +0 -139
  473. package/src/parser/query-parser.ts +0 -199
  474. package/src/parser/types.ts +0 -34
  475. package/src/shims.d.ts +0 -8
  476. package/src/stories/Chat.stories.tsx +0 -371
  477. package/src/testing/test-functions.ts +0 -11
  478. package/src/tools/function.ts +0 -46
  479. package/src/tools/index.ts +0 -6
  480. package/src/tools/openapi.test.ts +0 -217
  481. package/src/tools/openapi.ts +0 -338
  482. package/src/types/schema.ts +0 -108
  483. package/src/typings.d.ts +0 -9
@@ -0,0 +1,178 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/capabilities/blueprint-definition.ts
4
+ import { Capabilities, contributes } from "@dxos/app-framework";
5
+ import { templates } from "@dxos/assistant";
6
+ import { Agent, AssistantToolkit, Discord, DiscordBlueprint, EntityExtraction, Linear, LinearBlueprint, Research, ResearchBlueprint, SystemToolkit, WebSearchBlueprint } from "@dxos/assistant-toolkit";
7
+ import { Blueprint } from "@dxos/blueprints";
8
+
9
+ // src/functions/analysis.ts
10
+ import * as Effect from "effect/Effect";
11
+ import * as Schema from "effect/Schema";
12
+ import { defineFunction } from "@dxos/functions";
13
+ import { log } from "@dxos/log";
14
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/functions/analysis.ts";
15
+ var analysis_default = defineFunction({
16
+ key: "dxos.org/function/assistant-analysis",
17
+ name: "Assistant analysis",
18
+ description: "Enter analysis analysis mode.",
19
+ inputSchema: Schema.Struct({
20
+ enable: Schema.Boolean.annotations({
21
+ description: "Enable or disable analysis mode."
22
+ })
23
+ }),
24
+ outputSchema: Schema.Void,
25
+ handler: Effect.fn(function* ({ context, data: { enable } }) {
26
+ log.info("analysis mode", {
27
+ enable
28
+ }, {
29
+ F: __dxlog_file,
30
+ L: 20,
31
+ S: this,
32
+ C: (f, a) => f(...a)
33
+ });
34
+ })
35
+ });
36
+
37
+ // src/functions/object-list.ts
38
+ import * as Effect2 from "effect/Effect";
39
+ import * as Schema2 from "effect/Schema";
40
+ import { Filter, Obj, Query } from "@dxos/echo";
41
+ import { DatabaseService, defineFunction as defineFunction2 } from "@dxos/functions";
42
+ import { trim } from "@dxos/util";
43
+ var object_list_default = defineFunction2({
44
+ key: "dxos.org/function/assistant/object-list",
45
+ name: "List objects",
46
+ description: (
47
+ // TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.
48
+ trim`
49
+ Lists the objects of the given type.
50
+ Check the get-schemas tool for available types before calling this function.
51
+ `
52
+ ),
53
+ inputSchema: Schema2.Struct({
54
+ typename: Schema2.String.annotations({
55
+ description: "The typename of the objects to list."
56
+ })
57
+ }),
58
+ outputSchema: Schema2.Struct({
59
+ results: Schema2.Array(Schema2.Struct({
60
+ dxn: Schema2.String.annotations({
61
+ description: "The DXN of the object."
62
+ }),
63
+ label: Schema2.optional(Schema2.String.annotations({
64
+ description: "The label of the object."
65
+ }))
66
+ }))
67
+ }),
68
+ handler: Effect2.fn(function* ({ data: { typename } }) {
69
+ const [schema] = yield* DatabaseService.runSchemaQuery({
70
+ typename
71
+ });
72
+ const filter = schema ? Filter.type(schema) : Filter.typename(typename);
73
+ const { objects } = yield* DatabaseService.runQuery(Query.select(filter));
74
+ const results = objects.map((object) => ({
75
+ dxn: Obj.getDXN(object).toString(),
76
+ label: Obj.getLabel(object)
77
+ }));
78
+ return {
79
+ results
80
+ };
81
+ })
82
+ });
83
+
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";
89
+ import { ArtifactId } from "@dxos/assistant";
90
+ import { Obj as Obj2 } from "@dxos/echo";
91
+ import { DatabaseService as DatabaseService2, defineFunction as defineFunction3 } from "@dxos/functions";
92
+ var object_load_default = defineFunction3({
93
+ key: "dxos.org/function/assistant/object-load",
94
+ name: "Load object",
95
+ description: "Loads the object.",
96
+ inputSchema: Schema3.Struct({
97
+ id: ArtifactId.annotations({
98
+ description: "The ID of the object."
99
+ }),
100
+ typename: Schema3.String.annotations({
101
+ description: "The typename of the object."
102
+ })
103
+ }),
104
+ outputSchema: Schema3.Struct({
105
+ // TODO(wittjosiah): Type.Entity.Any
106
+ object: Schema3.Any
107
+ }),
108
+ handler: Effect3.fn(function* ({ data: { id, typename } }) {
109
+ const object = yield* DatabaseService2.resolve(ArtifactId.toDXN(id));
110
+ return yield* Function.pipe(Option.fromNullable(object), Option.flatMap((object2) => Obj2.getTypename(object2) === typename ? Option.some(object2) : Option.none()), Option.match({
111
+ onNone: () => Effect3.fail("Object not found."),
112
+ onSome: (object2) => {
113
+ return Effect3.succeed({
114
+ object: object2
115
+ });
116
+ }
117
+ }));
118
+ })
119
+ });
120
+
121
+ // src/capabilities/blueprint-definition.ts
122
+ var deckTools = [
123
+ "open-item"
124
+ ];
125
+ var functions = [
126
+ analysis_default,
127
+ object_list_default,
128
+ object_load_default
129
+ ];
130
+ var tools = [
131
+ ...AssistantToolkit.tools,
132
+ ...SystemToolkit.tools,
133
+ ...deckTools
134
+ ];
135
+ var ASSISTANT_BLUEPRINT_KEY = "dxos.org/blueprint/assistant";
136
+ var createBlueprint = () => Blueprint.make({
137
+ key: ASSISTANT_BLUEPRINT_KEY,
138
+ name: "Assistant",
139
+ tools: Blueprint.toolDefinitions({
140
+ functions,
141
+ tools
142
+ }),
143
+ instructions: templates.system
144
+ });
145
+ var blueprint = createBlueprint();
146
+ var blueprint_definition_default = (() => [
147
+ contributes(Capabilities.Functions, functions),
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
+ ]);
172
+
173
+ export {
174
+ ASSISTANT_BLUEPRINT_KEY,
175
+ createBlueprint,
176
+ blueprint_definition_default
177
+ };
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": ";;;AAIA,YAAYA,YAAY;AACxB,YAAYC,UAAU;AACtB,YAAYC,WAAW;AACvB,YAAYC,aAAa;AAEzB,SAASC,WAAWC,0BAA0C;AAC9D,SAA8BC,iBAAiB;AAC/C,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AAUd,IAAMC,aAAa,OACxBC,SACAC,cACAC,MACAC,QAAmBC,uBAAkB;AAErC,QAAMC,UAAU,MAAMJ,aAAaK,WAAU;AAC7C,QAAMC,SAASC;;;;AAIf,QAAMC,SAAS;AAEf,QAAMC,QAAeC,WAAI,QAAM,aAAA;AAC7B,UAAMC,UAAU,IAAIC,UAAAA;AACpB,WAAO,OAAOD,QAAQE,IAAI;MAAEP;MAAQE;MAAQJ;IAAQ,CAAA;EACtD,CAAA,EAAGU,KACMC,eAAQC,UAAUd,MAAMA,KAAAA,CAAAA,GACxBe,WAAI,CAACC,aAAAA;AAEV,UAAMC,UAAUD,SAASE,KAAK,CAACD,aAAYA,SAAQE,OAAOC,SAAS,WAAA;AACnE,UAAMC,QAAQJ,SAASK,OAAOJ,KAAK,CAACK,UAAUA,MAAMC,SAAS,MAAA,GAASC;AACtE,QAAIJ,OAAO;AACTtB,WAAK2B,OAAOL;IACd;EACF,CAAA,GACQM,gBAAQ9B,OAAAA,CAAAA;AAGlB,QAAM+B,WAAW,MAAMrB,MAAMK,KAAWiB,YAAaC,qBAAc;AACnE,MAAI,CAAMC,eAAUH,QAAAA,GAAW;AAC7BI,eAAWJ,SAASK,KAAK;EAC3B;AACF;;;ACnDA,YAAYC,YAAY;AAIxB,IAAMC,iBAAiB;EAAC;EAAc;EAAe;;AAErD,IAAMC,gBAAuBC,eAAO,GAAIF,cAAAA;AAUxC,IAAMG,mBAAmB,CAACC,UAAAA;AACxB,QAAMC,QAAQD,MAAME,MAAM,GAAA;AAC1B,SAAOD,MAAMA,MAAME,SAAS,CAAA;AAC9B;AAGO,IAAMC,mBAAsC;EACjD;IACEC,UAAU;IACVL,OAAO;EACT;EACA;IACEK,UAAU;IACVL,OAAO;EACT;EACA;IACEK,UAAU;IACVL,OAAO;EACT;EACA;IACEK,UAAU;IACVL,OAAO;EACT;EACA;IACEK,UAAU;IACVL,OAAO;EACT;EACA;IACEA,OAAO;IACPK,UAAU;EACZ;EACAC,IACA,CAAC,EAAEN,OAAOK,SAAQ,GAAIE,OACnB;EACCC,IAAI,UAAUD,CAAAA;EACdF;EACAL;EACAS,OAAOV,iBAAiBC,KAAAA;AAC1B,EAAA;;;ACtDJ,SAASU,MAAMC,gBAAgB;AAC/B,YAAYC,WAAW;AACvB,YAAYC,aAAY;AACxB,YAAYC,WAAU;AACtB,YAAYC,YAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,cAAa;AAEzB,SACEC,aAAAA,YACAC,sBAAAA,2BAKK;AACP,SAGEC,sBACAC,oBACAC,0BACK;AAEP,SAASC,WAAW;AACpB,SAASC,cAAAA,mBAAkB;AAQ3B,SAASC,WAAW;AACpB,SAA4BC,eAAe;;AAwB3C,IAAMC,iBAAkD;EACtDC,OAAOC;AACT;AAcO,IAAMC,kBAAN,MAAMA;;;;EACMC;;EAGAC;;EAGTC;;EAGAC;;EAGSC,WAAWC,KAAKC,KAAwB,CAAA,CAAE;;EAG1CC,aAAaF,KAAKC,KAA4CE,YAAI,CAAA;;EAGnEC,YAAYJ,KAAKC,KAAc,CAACI,QAAeC,cAAOD,IAAI,KAAKH,UAAU,CAAA,CAAA;;EAGzEK,SAASP,KAAKC,KAAK,KAAA;;EAGnBO,WAAWR,KAAKC,KAAwB,CAACI,QAChDI,aAAMJ,IAAI,KAAKH,UAAU,GAAG;IACjCQ,QAAQ,MAAML,IAAI,KAAKN,QAAQ;IAC/BY,QAAQ,CAACP,cAAc;SAAIC,IAAI,KAAKN,QAAQ;MAAGK;;EACjD,CAAA,CAAA;;EAIcQ,QAAQZ,KAAKC,KAAkCE,YAAI,CAAA;EAEnE,YACmBU,eAEAC,WACAC,WAAmCxB,gBACpD;SAJiBsB,gBAAAA;SAEAC,YAAAA;SACAC,WAAAA;AAGjB,SAAKpB,YAAY,KAAKoB,SAASC,sBAAsBC,SAAShB,KAAI;AAClE,SAAKL,YAAYsB,mBAAmBjB,KAAK;MACvCkB,SAAS,KAAKC;MACdC,WAAW,KAAKC;IAClB,CAAA;AACA,QAAI,KAAKP,SAASvB,SAAS,CAAC,KAAKuB,SAASQ,QAAQ;AAChD,YAAMC,eAAe,KAAKT,SAASU,eAAeC,gBAAgB,KAAKX,SAASvB,KAAK,KAAK,CAAC;AAC3F,WAAKuB,SAASQ,SAASI,mBAAmBH,YAAAA;IAC5C;EACF;EAEA,IAAII,UAAU;AACZ,WAAO,KAAKf,cAAce;EAC5B;EAEA,IAAIC,eAAe;AACjB,WAAO,KAAKhB;EACd;EAEA,IAAIiB,oBAAoB;AACtB,WAAO,KAAKf,SAASe;EACvB;;;;EAKA,MAAMC,QAAQC,cAAwC;AACpD,QAAI,KAAKnC,QAAQ;AACf,YAAM,KAAKoC,OAAM;IACnB;AAEA,QAAI;AACF,WAAKnC,eAAekC;AACpB,WAAKrC,UAAUuC,IAAI,KAAKtB,OAAcT,YAAI,CAAA;AAC1C,WAAKR,UAAUuC,IAAI,KAAK3B,QAAQ,IAAA;AAGhC,YAAMwB,UAAU,KAAKlB,cAAcsB,cAAc;QAC/CZ,QAAQ,KAAKR,SAASQ;QACtBa,QAAQJ,aAAaK;QACrBC,UAAU,KAAK1C;MACjB,CAAA;AAEA,YAAM2C,UAAU,MAAM,KAAKzB,UAAS;AAGpC,WAAKjB,SAASkC,QAAQS;QACbC,gBAAQC,WAAUlD,MAAM,KAAKuB,SAASvB,SAASC,mBAAAA,CAAAA;;QAG/CkD,uBAAeC,sBAAsB,KAAKC,qBAAqB;QAE/DC;QACCC,iBAAQR,OAAAA;MAAAA;AAIlB,YAAMS,WAAW,MAAM,KAAKnD,OAAO2C,KAAWS,aAAaC,sBAAc;AACzE,UAAI,CAAMC,gBAAUH,QAAAA,KAAa,CAAOI,wBAAkBJ,SAASK,KAAK,GAAG;AACzEC,QAAAA,YAAWN,SAASK,KAAK;MAC3B;AAEA,WAAK1D,UAAUuC,IAAI,KAAKtB,OAAcT,YAAI,CAAA;AAC1C,WAAKL,eAAeyD;AACpB,WAAK1D,SAAS0D;IAChB,SAAS3C,OAAO;AACd4C,UAAI5C,MAAM,kBAAkB;QAAEA;MAAM,GAAA;;;;;;AACpC,WAAKjB,UAAUuC,IAAI,KAAKtB,OAAc6C,YAAK,IAAIC,MAAM,oBAAoB;QAAEL,OAAOzC;MAAM,CAAA,CAAA,CAAA;IAC1F,UAAA;AACE,WAAKf,SAAS0D;AACd,WAAK5D,UAAUuC,IAAI,KAAK3B,QAAQ,KAAA;IAClC;EACF;;;;EAKA,MAAM0B,SAAwB;AAC5B,UAAa0B,mBACJC,YAAI,MAAM,aAAA;AACf,UAAI,KAAK/D,QAAQ;AACf,eAAO,KAAKA,OAAO2C,KAAWqB,gBAAS;MACzC;IACF,CAAA,CAAA;AAGF,SAAKhE,SAAS0D;AACd,SAAK5D,UAAUuC,IAAI,KAAK3B,QAAQ,KAAA;EAClC;;;;EAKA,MAAMuD,QAAuB;AAC3B,QAAI,KAAKhE,cAAc;AACrB,aAAO,KAAKiC,QAAQ,KAAKjC,YAAY;IACvC;EACF;;;;EAKA,MAAMiE,WAAWC,MAAqC;AACpD,UAAMzB,UAAU,MAAM,KAAKzB,UAAS;AACpC,UAAMiD,WAAWxB,SAAS,KAAK1B,eAAemD,MAAM,KAAKjD,SAASvB,KAAK;EACzE;;EAGQqD,wBAAsD;IAC5DoB,SAAS,OAAOC,eAAAA;AACd,YAAMC,WAAW,oBAAIC,IAAAA;AAiBrB,aAAOD;IACT;EACF;EAEQ7C,aAAoB+C,YAC1B,WAAkChC,SAAwB;AACxD,SAAK1C,UAAUuC,IAAI,KAAKhC,YAAmBC,YAAI,CAAA;AAC/C,SAAKR,UAAU2E,OAAO,KAAKvE,UAAU,CAACwE,YAAY;SAAIA;MAASlC;KAAQ;EACzE,GAAEmC,KAAK,IAAI,CAAA;EAGLpD,WAAkBiD,YACxB,WAAkCI,OAAuB;AACvD,SAAK9E,UAAU2E,OAAO,KAAKpE,YAAY,CAACE,cAAAA;AACtC,YAAMsE,SAAStE,UAAUoC,KAChBmC,WAAI,CAACvE,eAAcA,WAAUsE,OAAOE,OAAO,CAACC,MAAwB,CAACA,EAAEN,OAAO,CAAA,GAC9EO,iBAAU,MAAM,CAAA,CAAE,CAAA;AAG3B,aAAcrB,YACZsB,IAAI9E,KAAK+E,QAAQA,SAAS;QACxBC,UAAS,oBAAIC,KAAAA,GAAOC,YAAW;QAC/BC,QAAQ;UAAEC,MAAM;QAAY;QAC5BX,QAAQ;aAAIA;UAAQD;;MACtB,CAAA,CAAA;IAEJ,CAAA;EACF,GAAED,KAAK,IAAI,CAAA;AAEf;",
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
+ }