@dxos/plugin-assistant 0.8.4-main.1da679c → 0.8.4-main.21d9917

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 (619) hide show
  1. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs +31 -0
  2. package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-GFSJZTOT.mjs +153 -0
  4. package/dist/lib/browser/ChatCompanion-GFSJZTOT.mjs.map +7 -0
  5. package/dist/lib/browser/ChatContainer-IHAPBIZE.mjs +72 -0
  6. package/dist/lib/browser/ChatContainer-IHAPBIZE.mjs.map +7 -0
  7. package/dist/lib/browser/ChatDialog-EGRMPCTL.mjs +85 -0
  8. package/dist/lib/browser/ChatDialog-EGRMPCTL.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs +53 -0
  10. package/dist/lib/browser/PromptArticle-K362ZPAE.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-5GUDOEWF.mjs +21 -0
  12. package/dist/lib/browser/ai-service-5GUDOEWF.mjs.map +7 -0
  13. package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs +212 -0
  14. package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs.map +7 -0
  15. package/dist/lib/browser/blueprint-definition-DGHH7MUU.mjs +14 -0
  16. package/dist/lib/browser/blueprints/index.mjs +12 -0
  17. package/dist/lib/browser/chunk-A75V4MOQ.mjs +1832 -0
  18. package/dist/lib/browser/chunk-A75V4MOQ.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-DKQMSMBN.mjs +326 -0
  20. package/dist/lib/browser/chunk-DKQMSMBN.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-EXVT7D4B.mjs +23 -0
  22. package/dist/lib/browser/chunk-EXVT7D4B.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-ML3QCFKA.mjs +265 -0
  24. package/dist/lib/browser/chunk-ML3QCFKA.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-MRJVYGLU.mjs +208 -0
  26. package/dist/lib/browser/chunk-MRJVYGLU.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-V772AMZM.mjs +250 -0
  28. package/dist/lib/browser/chunk-V772AMZM.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-WGQTU6UJ.mjs +41 -0
  30. package/dist/lib/browser/chunk-WGQTU6UJ.mjs.map +7 -0
  31. package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs +20 -0
  32. package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs.map +7 -0
  33. package/dist/lib/browser/index.mjs +229 -216
  34. package/dist/lib/browser/index.mjs.map +4 -4
  35. package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs +19 -0
  36. package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs.map +7 -0
  37. package/dist/lib/browser/meta.json +1 -1
  38. package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs +132 -0
  39. package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs.map +7 -0
  40. package/dist/lib/browser/react-surface-S7SBFOSW.mjs +109 -0
  41. package/dist/lib/browser/react-surface-S7SBFOSW.mjs.map +7 -0
  42. package/dist/lib/browser/repair-6QGAKOVM.mjs +54 -0
  43. package/dist/lib/browser/repair-6QGAKOVM.mjs.map +7 -0
  44. package/dist/lib/browser/settings-4ZDLUMYE.mjs +32 -0
  45. package/dist/lib/browser/settings-4ZDLUMYE.mjs.map +7 -0
  46. package/dist/lib/browser/state-AN6336ZX.mjs +26 -0
  47. package/dist/lib/browser/state-AN6336ZX.mjs.map +7 -0
  48. package/dist/lib/browser/toolkit-7AVTEPMA.mjs +18 -0
  49. package/dist/lib/browser/toolkit-7AVTEPMA.mjs.map +7 -0
  50. package/dist/lib/browser/types/index.mjs +8 -4
  51. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs +32 -0
  52. package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs.map +7 -0
  53. package/dist/lib/node-esm/ChatCompanion-UR7DXZ54.mjs +154 -0
  54. package/dist/lib/node-esm/ChatCompanion-UR7DXZ54.mjs.map +7 -0
  55. package/dist/lib/node-esm/ChatContainer-YMLLGOZK.mjs +73 -0
  56. package/dist/lib/node-esm/ChatContainer-YMLLGOZK.mjs.map +7 -0
  57. package/dist/lib/node-esm/ChatDialog-D24WJPK4.mjs +86 -0
  58. package/dist/lib/node-esm/ChatDialog-D24WJPK4.mjs.map +7 -0
  59. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs +54 -0
  60. package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs.map +7 -0
  61. package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs +22 -0
  62. package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs.map +7 -0
  63. package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs +213 -0
  64. package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs.map +7 -0
  65. package/dist/lib/node-esm/{blueprint-definition-B6UDX5U3.mjs → blueprint-definition-SEMDEIYG.mjs} +6 -4
  66. package/dist/lib/node-esm/blueprint-definition-SEMDEIYG.mjs.map +7 -0
  67. package/dist/lib/node-esm/blueprints/index.mjs +13 -0
  68. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-355W5B27.mjs +251 -0
  70. package/dist/lib/node-esm/chunk-355W5B27.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-4BERCIES.mjs +1833 -0
  72. package/dist/lib/node-esm/chunk-4BERCIES.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-75PHXBN3.mjs +327 -0
  74. package/dist/lib/node-esm/chunk-75PHXBN3.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs +209 -0
  76. package/dist/lib/node-esm/chunk-DCA5QWQT.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs +42 -0
  78. package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-POWB2BPC.mjs +25 -0
  80. package/dist/lib/node-esm/chunk-POWB2BPC.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-ZRIPP7YF.mjs +267 -0
  82. package/dist/lib/node-esm/chunk-ZRIPP7YF.mjs.map +7 -0
  83. package/dist/lib/node-esm/edge-model-resolver-G5KMODPO.mjs +21 -0
  84. package/dist/lib/node-esm/edge-model-resolver-G5KMODPO.mjs.map +7 -0
  85. package/dist/lib/node-esm/index.mjs +229 -216
  86. package/dist/lib/node-esm/index.mjs.map +4 -4
  87. package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs +20 -0
  88. package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs.map +7 -0
  89. package/dist/lib/node-esm/meta.json +1 -1
  90. package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs +133 -0
  91. package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs.map +7 -0
  92. package/dist/lib/node-esm/react-surface-ZR6FXGLF.mjs +110 -0
  93. package/dist/lib/node-esm/react-surface-ZR6FXGLF.mjs.map +7 -0
  94. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs +55 -0
  95. package/dist/lib/node-esm/repair-QJ7CQDKU.mjs.map +7 -0
  96. package/dist/lib/node-esm/settings-CQEOHR3R.mjs +33 -0
  97. package/dist/lib/node-esm/settings-CQEOHR3R.mjs.map +7 -0
  98. package/dist/lib/node-esm/state-HDON4REW.mjs +27 -0
  99. package/dist/lib/node-esm/state-HDON4REW.mjs.map +7 -0
  100. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs +19 -0
  101. package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs.map +7 -0
  102. package/dist/lib/node-esm/types/index.mjs +8 -4
  103. package/dist/types/src/AssistantPlugin.d.ts +2 -1
  104. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  105. package/dist/types/src/blueprints/assistant-blueprint.d.ts +209 -0
  106. package/dist/types/src/blueprints/assistant-blueprint.d.ts.map +1 -0
  107. package/dist/types/src/blueprints/index.d.ts +7 -0
  108. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/ai-service/ai-service.d.ts +5 -0
  110. package/dist/types/src/capabilities/ai-service/ai-service.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/ai-service/index.d.ts +3 -0
  112. package/dist/types/src/capabilities/ai-service/index.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  114. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  116. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +21 -0
  118. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +4 -0
  120. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts +6 -0
  122. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts +3 -0
  124. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/index.d.ts +10 -11
  126. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  127. package/dist/types/src/capabilities/local-model-resolver/index.d.ts +3 -0
  128. package/dist/types/src/capabilities/local-model-resolver/index.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +12 -0
  130. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  132. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  133. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  134. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  135. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  136. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  137. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  138. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  139. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  140. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  141. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  142. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  143. package/dist/types/src/capabilities/settings/index.d.ts +15 -0
  144. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  145. package/dist/types/src/capabilities/settings/settings.d.ts +17 -0
  146. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  147. package/dist/types/src/capabilities/state/index.d.ts +11 -0
  148. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  149. package/dist/types/src/capabilities/state/state.d.ts +13 -0
  150. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  151. package/dist/types/src/capabilities/toolkit/index.d.ts +3 -0
  152. package/dist/types/src/capabilities/toolkit/index.d.ts.map +1 -0
  153. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +5 -0
  154. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +1 -0
  155. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +4 -2
  156. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  157. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  158. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  159. package/dist/types/src/components/Chat/Chat.d.ts +23 -13
  160. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  161. package/dist/types/src/components/Chat/events.d.ts +5 -1
  162. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  163. package/dist/types/src/components/ChatCompanion.d.ts +2 -2
  164. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
  165. package/dist/types/src/components/ChatContainer.d.ts +13 -5
  166. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  167. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  168. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  169. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  170. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +3 -3
  171. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  172. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +3 -3
  173. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  174. package/dist/types/src/components/ChatThread/ChatThread.d.ts +7 -8
  175. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  176. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +133 -74
  177. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  178. package/dist/types/src/components/ChatThread/reducers.d.ts +5 -5
  179. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -1
  180. package/dist/types/src/components/ChatThread/registry.d.ts +1 -1
  181. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  182. package/dist/types/src/components/ChatThread/sync.d.ts +12 -6
  183. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  184. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  185. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  186. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  187. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  188. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +116 -61
  189. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  190. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +12 -2
  191. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  192. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +117 -62
  193. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  194. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  195. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  196. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  197. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  198. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  199. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +10 -8
  200. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  201. package/dist/types/src/components/Toolbox/Toolbox.d.ts +6 -7
  202. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  203. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +116 -61
  204. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  205. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +12 -0
  206. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +1 -0
  207. package/dist/types/src/components/Typewriter/Typewriter.d.ts +11 -0
  208. package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +1 -0
  209. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts +7 -0
  210. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +1 -0
  211. package/dist/types/src/components/Typewriter/assistant-extension.d.ts +5 -0
  212. package/dist/types/src/components/Typewriter/assistant-extension.d.ts.map +1 -0
  213. package/dist/types/src/components/Typewriter/index.d.ts +2 -0
  214. package/dist/types/src/components/Typewriter/index.d.ts.map +1 -0
  215. package/dist/types/src/components/index.d.ts +10 -9
  216. package/dist/types/src/components/index.d.ts.map +1 -1
  217. package/dist/types/src/functions/index.d.ts +3 -3
  218. package/dist/types/src/functions/index.d.ts.map +1 -1
  219. package/dist/types/src/functions/{list.d.ts → object-list.d.ts} +3 -3
  220. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  221. package/dist/types/src/functions/{load.d.ts → object-load.d.ts} +2 -2
  222. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  223. package/dist/types/src/functions/object-search.d.ts +10 -0
  224. package/dist/types/src/functions/object-search.d.ts.map +1 -0
  225. package/dist/types/src/hooks/index.d.ts +2 -2
  226. package/dist/types/src/hooks/index.d.ts.map +1 -1
  227. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +5 -4
  228. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  229. package/dist/types/src/hooks/useChatProcessor.d.ts +4 -2
  230. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  231. package/dist/types/src/hooks/useChatServices.d.ts +4 -4
  232. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  233. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  234. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  235. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  236. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  237. package/dist/types/src/hooks/useContextObjects.d.ts +7 -7
  238. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  239. package/dist/types/src/hooks/useFilteredTypes.d.ts +3 -0
  240. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  241. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  242. package/dist/types/src/index.d.ts +2 -1
  243. package/dist/types/src/index.d.ts.map +1 -1
  244. package/dist/types/src/meta.d.ts +3 -4
  245. package/dist/types/src/meta.d.ts.map +1 -1
  246. package/dist/types/src/processor/index.d.ts +1 -0
  247. package/dist/types/src/processor/index.d.ts.map +1 -1
  248. package/dist/types/src/processor/presets.d.ts +1 -1
  249. package/dist/types/src/processor/presets.d.ts.map +1 -1
  250. package/dist/types/src/processor/processor.d.ts +19 -17
  251. package/dist/types/src/processor/processor.d.ts.map +1 -1
  252. package/dist/types/src/processor/update-name.d.ts +10 -0
  253. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  254. package/dist/types/src/queue-logger.d.ts.map +1 -1
  255. package/dist/types/src/testing/index.d.ts +0 -2
  256. package/dist/types/src/testing/index.d.ts.map +1 -1
  257. package/dist/types/src/testing/test-generator.d.ts +6 -5
  258. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  259. package/dist/types/src/testing/test-services.d.ts +2 -2
  260. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  261. package/dist/types/src/translations.d.ts +244 -26
  262. package/dist/types/src/translations.d.ts.map +1 -1
  263. package/dist/types/src/types/Assistant.d.ts +20 -20
  264. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  265. package/dist/types/src/types/AssistantAction.d.ts +89 -101
  266. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  267. package/dist/types/src/types/capabilities.d.ts +33 -0
  268. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  269. package/dist/types/src/types/events.d.ts +5 -0
  270. package/dist/types/src/types/events.d.ts.map +1 -0
  271. package/dist/types/src/types/index.d.ts +3 -1
  272. package/dist/types/src/types/index.d.ts.map +1 -1
  273. package/dist/types/src/types/service.d.ts +14 -216
  274. package/dist/types/src/types/service.d.ts.map +1 -1
  275. package/dist/types/tsconfig.tsbuildinfo +1 -1
  276. package/package.json +118 -117
  277. package/src/AssistantPlugin.tsx +114 -146
  278. package/src/blueprints/assistant-blueprint.ts +62 -0
  279. package/src/blueprints/index.ts +12 -0
  280. package/src/capabilities/ai-service/ai-service.ts +29 -0
  281. package/src/capabilities/ai-service/index.ts +7 -0
  282. package/src/capabilities/app-graph-builder/app-graph-builder.ts +180 -0
  283. package/src/capabilities/app-graph-builder/index.ts +7 -0
  284. package/src/capabilities/blueprint-definition/blueprint-definition.ts +60 -0
  285. package/src/capabilities/blueprint-definition/index.ts +8 -0
  286. package/src/capabilities/edge-model-resolver/edge-model-resolver.ts +32 -0
  287. package/src/capabilities/edge-model-resolver/index.ts +7 -0
  288. package/src/capabilities/index.ts +10 -14
  289. package/src/capabilities/local-model-resolver/index.ts +7 -0
  290. package/src/capabilities/local-model-resolver/local-model-resolver.ts +37 -0
  291. package/src/capabilities/operation-resolver/index.ts +7 -0
  292. package/src/capabilities/operation-resolver/operation-resolver.ts +110 -0
  293. package/src/capabilities/react-surface/index.ts +7 -0
  294. package/src/capabilities/react-surface/react-surface.tsx +95 -0
  295. package/src/capabilities/repair/index.ts +7 -0
  296. package/src/capabilities/repair/repair.ts +63 -0
  297. package/src/capabilities/settings/index.ts +7 -0
  298. package/src/capabilities/settings/settings.ts +30 -0
  299. package/src/capabilities/state/index.ts +7 -0
  300. package/src/capabilities/state/state.ts +27 -0
  301. package/src/capabilities/toolkit/index.ts +7 -0
  302. package/src/capabilities/toolkit/toolkit.ts +26 -0
  303. package/src/components/AssistantSettings/AssistantSettings.tsx +13 -5
  304. package/src/components/BlueprintArticle.tsx +29 -0
  305. package/src/components/Chat/Chat.tsx +193 -151
  306. package/src/components/Chat/events.ts +7 -1
  307. package/src/components/ChatCompanion.tsx +143 -91
  308. package/src/components/ChatContainer.tsx +40 -30
  309. package/src/components/ChatDialog.tsx +13 -7
  310. package/src/components/ChatProgress/ChatProgress.tsx +4 -18
  311. package/src/components/ChatPrompt/ChatActions.tsx +3 -5
  312. package/src/components/ChatPrompt/ChatOptions.tsx +104 -99
  313. package/src/components/ChatPrompt/ChatReferences.tsx +7 -8
  314. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
  315. package/src/components/ChatThread/ChatThread.stories.tsx +62 -42
  316. package/src/components/ChatThread/ChatThread.tsx +29 -35
  317. package/src/components/ChatThread/Link.tsx +3 -3
  318. package/src/components/ChatThread/reducers.ts +6 -6
  319. package/src/components/ChatThread/registry.tsx +26 -41
  320. package/src/components/ChatThread/sync.test.ts +33 -18
  321. package/src/components/ChatThread/sync.ts +54 -13
  322. package/src/components/ChatThread/testing/thread.md +37 -0
  323. package/src/components/PromptArticle.tsx +50 -0
  324. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +16 -8
  325. package/src/components/TemplateEditor/TemplateEditor.tsx +24 -12
  326. package/src/components/TemplateEditor/TemplateForm.stories.tsx +17 -11
  327. package/src/components/TemplateEditor/TemplateForm.tsx +77 -30
  328. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +274 -0
  329. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  330. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  331. package/src/components/ToolBlock/ToolBlock.tsx +40 -49
  332. package/src/components/Toolbox/Toolbox.stories.tsx +11 -15
  333. package/src/components/Toolbox/Toolbox.tsx +18 -19
  334. package/src/components/Typewriter/AssistantToolbar.tsx +161 -0
  335. package/src/components/Typewriter/Typewriter.stories.tsx +83 -0
  336. package/src/components/Typewriter/Typewriter.tsx +54 -0
  337. package/src/components/Typewriter/assistant-extension.tsx +144 -0
  338. package/src/components/Typewriter/index.ts +5 -0
  339. package/src/components/index.ts +2 -5
  340. package/src/functions/index.ts +3 -3
  341. package/src/functions/{list.ts → object-list.ts} +10 -7
  342. package/src/functions/{load.ts → object-load.ts} +15 -10
  343. package/src/functions/object-search.ts +46 -0
  344. package/src/hooks/index.ts +2 -2
  345. package/src/hooks/useBlueprintRegistry.ts +44 -19
  346. package/src/hooks/useChatProcessor.ts +25 -14
  347. package/src/hooks/useChatServices.ts +16 -17
  348. package/src/hooks/useChatToolbarActions.ts +121 -0
  349. package/src/hooks/useContextBinder.ts +21 -7
  350. package/src/hooks/useContextObjects.ts +13 -25
  351. package/src/hooks/useFilteredTypes.ts +37 -0
  352. package/src/hooks/useReferencesProvider.ts +7 -6
  353. package/src/index.ts +2 -1
  354. package/src/meta.ts +11 -8
  355. package/src/processor/index.ts +1 -0
  356. package/src/processor/presets.ts +2 -2
  357. package/src/processor/processor.test.ts +19 -24
  358. package/src/processor/processor.ts +51 -78
  359. package/src/processor/update-name.ts +59 -0
  360. package/src/queue-logger.ts +8 -9
  361. package/src/testing/index.ts +0 -2
  362. package/src/testing/test-generator.ts +19 -14
  363. package/src/testing/test-services.ts +10 -14
  364. package/src/translations.ts +28 -16
  365. package/src/types/Assistant.ts +13 -12
  366. package/src/types/AssistantAction.ts +65 -52
  367. package/src/types/capabilities.ts +27 -0
  368. package/src/types/events.ts +11 -0
  369. package/src/types/index.ts +3 -1
  370. package/src/types/service.ts +25 -14
  371. package/dist/lib/browser/BlueprintContainer-6MZHBQ25.mjs +0 -29
  372. package/dist/lib/browser/BlueprintContainer-6MZHBQ25.mjs.map +0 -7
  373. package/dist/lib/browser/ChatCompanion-B4DLQE6Y.mjs +0 -124
  374. package/dist/lib/browser/ChatCompanion-B4DLQE6Y.mjs.map +0 -7
  375. package/dist/lib/browser/ChatContainer-Z7A3RKOY.mjs +0 -73
  376. package/dist/lib/browser/ChatContainer-Z7A3RKOY.mjs.map +0 -7
  377. package/dist/lib/browser/ChatDialog-PL5TSGD5.mjs +0 -86
  378. package/dist/lib/browser/ChatDialog-PL5TSGD5.mjs.map +0 -7
  379. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs +0 -150
  380. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +0 -7
  381. package/dist/lib/browser/ai-service-4VESSFNB.mjs +0 -18
  382. package/dist/lib/browser/ai-service-4VESSFNB.mjs.map +0 -7
  383. package/dist/lib/browser/app-graph-builder-BBDHBJXA.mjs +0 -153
  384. package/dist/lib/browser/app-graph-builder-BBDHBJXA.mjs.map +0 -7
  385. package/dist/lib/browser/blueprint-definition-3SATLYJW.mjs +0 -12
  386. package/dist/lib/browser/chunk-BBT6KNXA.mjs +0 -165
  387. package/dist/lib/browser/chunk-BBT6KNXA.mjs.map +0 -7
  388. package/dist/lib/browser/chunk-JDI4FEKA.mjs +0 -299
  389. package/dist/lib/browser/chunk-JDI4FEKA.mjs.map +0 -7
  390. package/dist/lib/browser/chunk-O4LUJEDV.mjs +0 -20
  391. package/dist/lib/browser/chunk-O4LUJEDV.mjs.map +0 -7
  392. package/dist/lib/browser/chunk-PQI3MGDN.mjs +0 -169
  393. package/dist/lib/browser/chunk-PQI3MGDN.mjs.map +0 -7
  394. package/dist/lib/browser/chunk-SMIVXXAI.mjs +0 -202
  395. package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +0 -7
  396. package/dist/lib/browser/chunk-TMKK6VCA.mjs +0 -216
  397. package/dist/lib/browser/chunk-TMKK6VCA.mjs.map +0 -7
  398. package/dist/lib/browser/chunk-YKODYEYR.mjs +0 -16
  399. package/dist/lib/browser/chunk-YKODYEYR.mjs.map +0 -7
  400. package/dist/lib/browser/chunk-YOBHCEEI.mjs +0 -1941
  401. package/dist/lib/browser/chunk-YOBHCEEI.mjs.map +0 -7
  402. package/dist/lib/browser/edge-model-resolver-6YWYDPTS.mjs +0 -18
  403. package/dist/lib/browser/edge-model-resolver-6YWYDPTS.mjs.map +0 -7
  404. package/dist/lib/browser/intent-resolver-MRZJU255.mjs +0 -112
  405. package/dist/lib/browser/intent-resolver-MRZJU255.mjs.map +0 -7
  406. package/dist/lib/browser/local-model-resolver-QXLLTV2H.mjs +0 -17
  407. package/dist/lib/browser/local-model-resolver-QXLLTV2H.mjs.map +0 -7
  408. package/dist/lib/browser/react-surface-UKMOARXR.mjs +0 -107
  409. package/dist/lib/browser/react-surface-UKMOARXR.mjs.map +0 -7
  410. package/dist/lib/browser/settings-4AJ34FKF.mjs +0 -23
  411. package/dist/lib/browser/settings-4AJ34FKF.mjs.map +0 -7
  412. package/dist/lib/browser/state-ABR7YSSA.mjs +0 -21
  413. package/dist/lib/browser/state-ABR7YSSA.mjs.map +0 -7
  414. package/dist/lib/browser/toolkit-U7SKGAIC.mjs +0 -191
  415. package/dist/lib/browser/toolkit-U7SKGAIC.mjs.map +0 -7
  416. package/dist/lib/node-esm/BlueprintContainer-MUHW5HNY.mjs +0 -30
  417. package/dist/lib/node-esm/BlueprintContainer-MUHW5HNY.mjs.map +0 -7
  418. package/dist/lib/node-esm/ChatCompanion-DK6FULBU.mjs +0 -125
  419. package/dist/lib/node-esm/ChatCompanion-DK6FULBU.mjs.map +0 -7
  420. package/dist/lib/node-esm/ChatContainer-7IN7ZICQ.mjs +0 -74
  421. package/dist/lib/node-esm/ChatContainer-7IN7ZICQ.mjs.map +0 -7
  422. package/dist/lib/node-esm/ChatDialog-LPE653RZ.mjs +0 -87
  423. package/dist/lib/node-esm/ChatDialog-LPE653RZ.mjs.map +0 -7
  424. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs +0 -151
  425. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +0 -7
  426. package/dist/lib/node-esm/ai-service-I5JU4JN2.mjs +0 -19
  427. package/dist/lib/node-esm/ai-service-I5JU4JN2.mjs.map +0 -7
  428. package/dist/lib/node-esm/app-graph-builder-EMR5JF6Z.mjs +0 -154
  429. package/dist/lib/node-esm/app-graph-builder-EMR5JF6Z.mjs.map +0 -7
  430. package/dist/lib/node-esm/chunk-4WLFSXZG.mjs +0 -170
  431. package/dist/lib/node-esm/chunk-4WLFSXZG.mjs.map +0 -7
  432. package/dist/lib/node-esm/chunk-5MYWJPYA.mjs +0 -167
  433. package/dist/lib/node-esm/chunk-5MYWJPYA.mjs.map +0 -7
  434. package/dist/lib/node-esm/chunk-7YOGZI66.mjs +0 -203
  435. package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +0 -7
  436. package/dist/lib/node-esm/chunk-FHRJMZ7L.mjs +0 -17
  437. package/dist/lib/node-esm/chunk-FHRJMZ7L.mjs.map +0 -7
  438. package/dist/lib/node-esm/chunk-GCNF3CQU.mjs +0 -217
  439. package/dist/lib/node-esm/chunk-GCNF3CQU.mjs.map +0 -7
  440. package/dist/lib/node-esm/chunk-H3ZC4UL7.mjs +0 -300
  441. package/dist/lib/node-esm/chunk-H3ZC4UL7.mjs.map +0 -7
  442. package/dist/lib/node-esm/chunk-VFY2JG62.mjs +0 -22
  443. package/dist/lib/node-esm/chunk-VFY2JG62.mjs.map +0 -7
  444. package/dist/lib/node-esm/chunk-X2YUKRBE.mjs +0 -1942
  445. package/dist/lib/node-esm/chunk-X2YUKRBE.mjs.map +0 -7
  446. package/dist/lib/node-esm/edge-model-resolver-A7B6QHLL.mjs +0 -19
  447. package/dist/lib/node-esm/edge-model-resolver-A7B6QHLL.mjs.map +0 -7
  448. package/dist/lib/node-esm/intent-resolver-CIXO3KMY.mjs +0 -113
  449. package/dist/lib/node-esm/intent-resolver-CIXO3KMY.mjs.map +0 -7
  450. package/dist/lib/node-esm/local-model-resolver-JCYDHAZY.mjs +0 -18
  451. package/dist/lib/node-esm/local-model-resolver-JCYDHAZY.mjs.map +0 -7
  452. package/dist/lib/node-esm/react-surface-5NDJAWA2.mjs +0 -108
  453. package/dist/lib/node-esm/react-surface-5NDJAWA2.mjs.map +0 -7
  454. package/dist/lib/node-esm/settings-K2QW4ATZ.mjs +0 -24
  455. package/dist/lib/node-esm/settings-K2QW4ATZ.mjs.map +0 -7
  456. package/dist/lib/node-esm/state-6UHESJI5.mjs +0 -22
  457. package/dist/lib/node-esm/state-6UHESJI5.mjs.map +0 -7
  458. package/dist/lib/node-esm/toolkit-LNLRBVDU.mjs +0 -192
  459. package/dist/lib/node-esm/toolkit-LNLRBVDU.mjs.map +0 -7
  460. package/dist/types/src/capabilities/ai-service.d.ts +0 -4
  461. package/dist/types/src/capabilities/ai-service.d.ts.map +0 -1
  462. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  463. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  464. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -7
  465. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  466. package/dist/types/src/capabilities/capabilities.d.ts +0 -11
  467. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  468. package/dist/types/src/capabilities/edge-model-resolver.d.ts +0 -4
  469. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +0 -1
  470. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  471. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  472. package/dist/types/src/capabilities/local-model-resolver.d.ts +0 -10
  473. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +0 -1
  474. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  475. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  476. package/dist/types/src/capabilities/settings.d.ts +0 -4
  477. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  478. package/dist/types/src/capabilities/state.d.ts +0 -4
  479. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  480. package/dist/types/src/capabilities/toolkit.d.ts +0 -4
  481. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  482. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  483. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  484. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  485. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  486. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  487. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  488. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  489. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  490. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -267
  491. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  492. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  493. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  494. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  495. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -5
  496. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  497. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  498. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  499. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  500. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  501. package/dist/types/src/events.d.ts +0 -4
  502. package/dist/types/src/events.d.ts.map +0 -1
  503. package/dist/types/src/execution-graph/execution-graph.d.ts +0 -21
  504. package/dist/types/src/execution-graph/execution-graph.d.ts.map +0 -1
  505. package/dist/types/src/execution-graph/index.d.ts +0 -2
  506. package/dist/types/src/execution-graph/index.d.ts.map +0 -1
  507. package/dist/types/src/functions/analysis.d.ts +0 -5
  508. package/dist/types/src/functions/analysis.d.ts.map +0 -1
  509. package/dist/types/src/functions/list.d.ts.map +0 -1
  510. package/dist/types/src/functions/load.d.ts.map +0 -1
  511. package/dist/types/src/hooks/useExecutionGraph.d.ts +0 -6
  512. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +0 -1
  513. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  514. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  515. package/dist/types/src/stories/Chat.stories.d.ts +0 -31
  516. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  517. package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -4
  518. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
  519. package/dist/types/src/stories/components/ChatContainer.d.ts +0 -4
  520. package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
  521. package/dist/types/src/stories/components/ChessContainer.d.ts +0 -4
  522. package/dist/types/src/stories/components/ChessContainer.d.ts.map +0 -1
  523. package/dist/types/src/stories/components/CommentsContainer.d.ts +0 -4
  524. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +0 -1
  525. package/dist/types/src/stories/components/DebugCard.d.ts +0 -8
  526. package/dist/types/src/stories/components/DebugCard.d.ts.map +0 -1
  527. package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
  528. package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
  529. package/dist/types/src/stories/components/InvocationsContainer.d.ts +0 -4
  530. package/dist/types/src/stories/components/InvocationsContainer.d.ts.map +0 -1
  531. package/dist/types/src/stories/components/LoggingContainer.d.ts +0 -7
  532. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +0 -1
  533. package/dist/types/src/stories/components/MessageContainer.d.ts +0 -4
  534. package/dist/types/src/stories/components/MessageContainer.d.ts.map +0 -1
  535. package/dist/types/src/stories/components/ProjectContainer.d.ts +0 -4
  536. package/dist/types/src/stories/components/ProjectContainer.d.ts.map +0 -1
  537. package/dist/types/src/stories/components/PromptContainer.d.ts +0 -6
  538. package/dist/types/src/stories/components/PromptContainer.d.ts.map +0 -1
  539. package/dist/types/src/stories/components/ResearchInputStack.d.ts +0 -4
  540. package/dist/types/src/stories/components/ResearchInputStack.d.ts.map +0 -1
  541. package/dist/types/src/stories/components/ResearchOutputStack.d.ts +0 -4
  542. package/dist/types/src/stories/components/ResearchOutputStack.d.ts.map +0 -1
  543. package/dist/types/src/stories/components/TasksContainer.d.ts +0 -4
  544. package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
  545. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +0 -3
  546. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +0 -1
  547. package/dist/types/src/stories/components/TriggersContainer.d.ts +0 -3
  548. package/dist/types/src/stories/components/TriggersContainer.d.ts.map +0 -1
  549. package/dist/types/src/stories/components/index.d.ts +0 -17
  550. package/dist/types/src/stories/components/index.d.ts.map +0 -1
  551. package/dist/types/src/stories/components/types.d.ts +0 -7
  552. package/dist/types/src/stories/components/types.d.ts.map +0 -1
  553. package/dist/types/src/stories/testing/data.d.ts +0 -9
  554. package/dist/types/src/stories/testing/data.d.ts.map +0 -1
  555. package/dist/types/src/stories/testing/index.d.ts +0 -3
  556. package/dist/types/src/stories/testing/index.d.ts.map +0 -1
  557. package/dist/types/src/stories/testing/schema.d.ts +0 -7
  558. package/dist/types/src/stories/testing/schema.d.ts.map +0 -1
  559. package/dist/types/src/stories/testing/testing.d.ts +0 -48
  560. package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
  561. package/dist/types/src/testing/test-data.d.ts +0 -14
  562. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  563. package/dist/types/src/testing/test-functions.d.ts +0 -6
  564. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  565. package/src/capabilities/ai-service.ts +0 -26
  566. package/src/capabilities/app-graph-builder.ts +0 -162
  567. package/src/capabilities/blueprint-definition.ts +0 -61
  568. package/src/capabilities/capabilities.ts +0 -18
  569. package/src/capabilities/edge-model-resolver.ts +0 -25
  570. package/src/capabilities/intent-resolver.ts +0 -94
  571. package/src/capabilities/local-model-resolver.ts +0 -30
  572. package/src/capabilities/react-surface.tsx +0 -91
  573. package/src/capabilities/settings.ts +0 -19
  574. package/src/capabilities/state.ts +0 -20
  575. package/src/capabilities/toolkit.ts +0 -163
  576. package/src/components/BlueprintContainer.tsx +0 -24
  577. package/src/components/PromptSettings.tsx +0 -90
  578. package/src/components/SequenceContainer.tsx +0 -131
  579. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -33
  580. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  581. package/src/components/SequenceEditor/index.ts +0 -5
  582. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  583. package/src/components/Toolbar/Toolbar.tsx +0 -21
  584. package/src/components/Toolbar/index.ts +0 -5
  585. package/src/components/Toolbar/useChatToolbarActions.ts +0 -126
  586. package/src/events.ts +0 -11
  587. package/src/execution-graph/execution-graph.ts +0 -211
  588. package/src/execution-graph/index.ts +0 -5
  589. package/src/functions/analysis.ts +0 -20
  590. package/src/hooks/useExecutionGraph.ts +0 -20
  591. package/src/hooks/useItemTypes.ts +0 -37
  592. package/src/stories/Chat.stories.tsx +0 -804
  593. package/src/stories/components/BlueprintContainer.tsx +0 -34
  594. package/src/stories/components/ChatContainer.tsx +0 -74
  595. package/src/stories/components/ChessContainer.tsx +0 -17
  596. package/src/stories/components/CommentsContainer.tsx +0 -25
  597. package/src/stories/components/DebugCard.tsx +0 -61
  598. package/src/stories/components/GraphContainer.tsx +0 -119
  599. package/src/stories/components/InvocationsContainer.tsx +0 -17
  600. package/src/stories/components/LoggingContainer.tsx +0 -33
  601. package/src/stories/components/MessageContainer.tsx +0 -22
  602. package/src/stories/components/ProjectContainer.tsx +0 -17
  603. package/src/stories/components/PromptContainer.tsx +0 -52
  604. package/src/stories/components/ResearchInputStack.tsx +0 -30
  605. package/src/stories/components/ResearchOutputStack.tsx +0 -29
  606. package/src/stories/components/TasksContainer.tsx +0 -49
  607. package/src/stories/components/TokenManagerContainer.tsx +0 -14
  608. package/src/stories/components/TriggersContainer.tsx +0 -12
  609. package/src/stories/components/index.ts +0 -21
  610. package/src/stories/components/types.ts +0 -11
  611. package/src/stories/testing/data.ts +0 -142
  612. package/src/stories/testing/index.ts +0 -6
  613. package/src/stories/testing/schema.ts +0 -17
  614. package/src/stories/testing/testing.tsx +0 -284
  615. package/src/testing/test-data.ts +0 -255
  616. package/src/testing/test-functions.ts +0 -16
  617. /package/dist/lib/browser/{blueprint-definition-3SATLYJW.mjs.map → blueprint-definition-DGHH7MUU.mjs.map} +0 -0
  618. /package/dist/lib/{node-esm/blueprint-definition-B6UDX5U3.mjs.map → browser/blueprints/index.mjs.map} +0 -0
  619. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/blueprint-definition/blueprint-definition.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport {\n Agent,\n Discord,\n DiscordBlueprint,\n EntityExtraction,\n Linear,\n LinearBlueprint,\n Research,\n ResearchBlueprint,\n WebSearchBlueprint,\n} from '@dxos/assistant-toolkit';\nimport { type Blueprint } from '@dxos/blueprints';\n\nimport { AssistantBlueprint } from '../../blueprints';\n\nexport const createBlueprint: () => Blueprint.Blueprint = AssistantBlueprint.make;\nexport { AssistantBlueprint };\n\nexport type BlueprintCapabilities = [\n Capability.Capability<typeof Common.Capability.Functions>,\n Capability.Capability<typeof Common.Capability.BlueprintDefinition>,\n Capability.Capability<typeof Common.Capability.Functions>,\n Capability.Capability<typeof Common.Capability.BlueprintDefinition>,\n Capability.Capability<typeof Common.Capability.Functions>,\n Capability.Capability<typeof Common.Capability.BlueprintDefinition>,\n Capability.Capability<typeof Common.Capability.Functions>,\n Capability.Capability<typeof Common.Capability.BlueprintDefinition>,\n Capability.Capability<typeof Common.Capability.Functions>,\n Capability.Capability<typeof Common.Capability.BlueprintDefinition>,\n];\n\nexport default Capability.makeModule<[], BlueprintCapabilities>(() =>\n Effect.succeed([\n Capability.contributes(Common.Capability.Functions, AssistantBlueprint.functions$),\n Capability.contributes(Common.Capability.BlueprintDefinition, AssistantBlueprint.blueprint),\n\n // TODO(burdon): Factor out.\n Capability.contributes(Common.Capability.Functions, [Research.create, Research.research]),\n Capability.contributes(Common.Capability.BlueprintDefinition, ResearchBlueprint),\n\n // TODO(burdon): Factor out.\n Capability.contributes(Common.Capability.Functions, [Agent.prompt, EntityExtraction.extract]),\n Capability.contributes(Common.Capability.BlueprintDefinition, WebSearchBlueprint),\n\n // TODO(burdon): Factor out.\n Capability.contributes(Common.Capability.Functions, [Discord.fetch]),\n Capability.contributes(Common.Capability.BlueprintDefinition, DiscordBlueprint),\n\n // TODO(burdon): Factor out.\n Capability.contributes(Common.Capability.Functions, [Linear.sync]),\n Capability.contributes(Common.Capability.BlueprintDefinition, LinearBlueprint),\n ]),\n);\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,cAAc;AACnC,SACEC,OACAC,SACAC,kBACAC,kBACAC,QACAC,iBACAC,UACAC,mBACAC,0BACK;AAKA,IAAMC,kBAA6CC,4BAAmBC;AAgB7E,IAAA,+BAAeC,WAAWC,WAAsC,MACvDC,eAAQ;EACbF,WAAWG,YAAYC,OAAOJ,WAAWK,WAAWC,4BAAmBC,UAAU;EACjFP,WAAWG,YAAYC,OAAOJ,WAAWQ,qBAAqBF,4BAAmBG,SAAS;;EAG1FT,WAAWG,YAAYC,OAAOJ,WAAWK,WAAW;IAACK,SAASC;IAAQD,SAASE;GAAS;EACxFZ,WAAWG,YAAYC,OAAOJ,WAAWQ,qBAAqBK,iBAAAA;;EAG9Db,WAAWG,YAAYC,OAAOJ,WAAWK,WAAW;IAACS,MAAMC;IAAQC,iBAAiBC;GAAQ;EAC5FjB,WAAWG,YAAYC,OAAOJ,WAAWQ,qBAAqBU,kBAAAA;;EAG9DlB,WAAWG,YAAYC,OAAOJ,WAAWK,WAAW;IAACc,QAAQC;GAAM;EACnEpB,WAAWG,YAAYC,OAAOJ,WAAWQ,qBAAqBa,gBAAAA;;EAG9DrB,WAAWG,YAAYC,OAAOJ,WAAWK,WAAW;IAACiB,OAAOC;GAAK;EACjEvB,WAAWG,YAAYC,OAAOJ,WAAWQ,qBAAqBgB,eAAAA;CAC/D,CAAA;",
6
+ "names": ["Effect", "Capability", "Common", "Agent", "Discord", "DiscordBlueprint", "EntityExtraction", "Linear", "LinearBlueprint", "Research", "ResearchBlueprint", "WebSearchBlueprint", "createBlueprint", "AssistantBlueprint", "make", "Capability", "makeModule", "succeed", "contributes", "Common", "Functions", "AssistantBlueprint", "functions$", "BlueprintDefinition", "blueprint", "Research", "create", "research", "ResearchBlueprint", "Agent", "prompt", "EntityExtraction", "extract", "WebSearchBlueprint", "Discord", "fetch", "DiscordBlueprint", "Linear", "sync", "LinearBlueprint"]
7
+ }
@@ -0,0 +1,25 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/meta.ts
4
+ import { trim } from "@dxos/util";
5
+ var meta = {
6
+ id: "dxos.org/plugin/assistant",
7
+ name: "Assistant",
8
+ description: trim`
9
+ Intelligent AI assistant that can analyze and interact with objects across your spaces.
10
+ Chat naturally to get insights, search content, and perform actions using AI-powered context awareness.
11
+ `,
12
+ icon: "ph--atom--regular",
13
+ iconHue: "sky",
14
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant",
15
+ tags: [
16
+ "labs"
17
+ ]
18
+ };
19
+ var ASSISTANT_DIALOG = `${meta.id}/assistant/dialog`;
20
+
21
+ export {
22
+ meta,
23
+ ASSISTANT_DIALOG
24
+ };
25
+ //# sourceMappingURL=chunk-POWB2BPC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'dxos.org/plugin/assistant',\n name: 'Assistant',\n description: trim`\n Intelligent AI assistant that can analyze and interact with objects across your spaces.\n Chat naturally to get insights, search content, and perform actions using AI-powered context awareness.\n `,\n icon: 'ph--atom--regular',\n iconHue: 'sky',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',\n tags: ['labs'],\n};\n\nexport const ASSISTANT_DIALOG = `${meta.id}/assistant/dialog`;\n"],
5
+ "mappings": ";;;AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,MAAM;IAAC;;AACT;AAEO,IAAMC,mBAAmB,GAAGT,KAAKC,EAAE;",
6
+ "names": ["trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "tags", "ASSISTANT_DIALOG"]
7
+ }
@@ -0,0 +1,267 @@
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 { Obj } from "@dxos/echo";
11
+ import { throwCause } from "@dxos/effect";
12
+ import { trim } from "@dxos/util";
13
+ var updateName = async (runtime, conversation, chat, model = DEFAULT_EDGE_MODEL) => {
14
+ const history = await conversation.getHistory();
15
+ const system = trim`
16
+ It is extremely important that you respond only with the title and nothing else.
17
+ If you cannot do this effectively respond with "New Chat".
18
+ `;
19
+ const prompt = "Suggest a name for this chat";
20
+ const fiber = Effect.gen(void 0, function* () {
21
+ const session = new AiSession();
22
+ return yield* session.run({
23
+ system,
24
+ prompt,
25
+ history
26
+ });
27
+ }).pipe(Effect.provide(AiService.model(model)), Effect.tap((messages) => {
28
+ const message = messages.find((message2) => message2.sender.role === "assistant");
29
+ const title = message?.blocks.find((block) => block._tag === "text")?.text;
30
+ if (title) {
31
+ Obj.change(chat, (c) => {
32
+ c.name = title;
33
+ });
34
+ }
35
+ }), Runtime.runFork(runtime));
36
+ const response = await fiber.pipe(Fiber.join, Effect.runPromiseExit);
37
+ if (!Exit.isSuccess(response)) {
38
+ throwCause(response.cause);
39
+ }
40
+ };
41
+
42
+ // src/processor/presets.ts
43
+ import * as Schema from "effect/Schema";
44
+ var ModelProviders = [
45
+ "dxos-local",
46
+ "dxos-remote",
47
+ "lm-studio"
48
+ ];
49
+ var ModelProvider = Schema.Literal(...ModelProviders);
50
+ var createModelLabel = (model) => {
51
+ const parts = model.split("/");
52
+ return parts[parts.length - 1];
53
+ };
54
+ var AiServicePresets = [
55
+ {
56
+ provider: "dxos-remote",
57
+ model: "@anthropic/claude-opus-4-0"
58
+ },
59
+ {
60
+ provider: "dxos-remote",
61
+ model: "@anthropic/claude-sonnet-4-0"
62
+ },
63
+ {
64
+ provider: "dxos-remote",
65
+ model: "@anthropic/claude-3-5-haiku-20241022"
66
+ },
67
+ {
68
+ provider: "lm-studio",
69
+ model: "@google/gemma-3-27b"
70
+ },
71
+ {
72
+ provider: "lm-studio",
73
+ model: "@meta/llama-3.2-3b-instruct"
74
+ },
75
+ {
76
+ model: "deepseek-r1:latest",
77
+ provider: "dxos-local"
78
+ }
79
+ ].map(({ model, provider }, i) => ({
80
+ id: `preset-${i}`,
81
+ provider,
82
+ model,
83
+ label: createModelLabel(model)
84
+ }));
85
+
86
+ // src/processor/processor.ts
87
+ import { Atom, Registry } from "@effect-atom/atom-react";
88
+ import * as Cause from "effect/Cause";
89
+ import * as Effect2 from "effect/Effect";
90
+ import * as Exit2 from "effect/Exit";
91
+ import * as Fiber2 from "effect/Fiber";
92
+ import * as Option from "effect/Option";
93
+ import * as Runtime2 from "effect/Runtime";
94
+ import { AiService as AiService2, DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL2 } from "@dxos/ai";
95
+ import { ArtifactDiffResolver, GenerationObserver, createSystemPrompt } from "@dxos/assistant";
96
+ import { Obj as Obj2 } from "@dxos/echo";
97
+ import { runAndForwardErrors, throwCause as throwCause2 } from "@dxos/effect";
98
+ import { log } from "@dxos/log";
99
+ import { Message } from "@dxos/types";
100
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/processor/processor.ts";
101
+ var defaultOptions = {
102
+ model: DEFAULT_EDGE_MODEL2
103
+ };
104
+ var AiChatProcessor = class {
105
+ _conversation;
106
+ _services;
107
+ _options;
108
+ _registry;
109
+ /** External observer. */
110
+ _observer;
111
+ /** Pending messages (incl. the current user request). */
112
+ _pending = Atom.make([]);
113
+ /** Currently streaming message (from the AI service). */
114
+ _streaming = Atom.make(Option.none());
115
+ /** Currently active request fiber. */
116
+ _fiber;
117
+ /** Last request (for retries). */
118
+ _lastRequest;
119
+ /** Streaming state. */
120
+ streaming = Atom.make((get) => Option.isSome(get(this._streaming)));
121
+ /** Active state. */
122
+ active = Atom.make(false);
123
+ /** Array of Messages (incl. the current message being streamed). */
124
+ messages = Atom.make((get) => Option.match(get(this._streaming), {
125
+ onNone: () => get(this._pending),
126
+ onSome: (streaming) => [
127
+ ...get(this._pending),
128
+ streaming
129
+ ]
130
+ }));
131
+ /** Last error. */
132
+ error = Atom.make(Option.none());
133
+ constructor(_conversation, _services, _options = defaultOptions) {
134
+ this._conversation = _conversation;
135
+ this._services = _services;
136
+ this._options = _options;
137
+ this._registry = this._options.observableRegistry ?? Registry.make();
138
+ this._observer = GenerationObserver.make({
139
+ onBlock: this._onBlock,
140
+ onMessage: this._onMessage
141
+ });
142
+ if (this._options.model && !this._options.system) {
143
+ const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};
144
+ this._options.system = createSystemPrompt(capabilities);
145
+ }
146
+ }
147
+ get context() {
148
+ return this._conversation.context;
149
+ }
150
+ get conversation() {
151
+ return this._conversation;
152
+ }
153
+ get blueprintRegistry() {
154
+ return this._options.blueprintRegistry;
155
+ }
156
+ /**
157
+ * Initiates a new request.
158
+ */
159
+ async request(requestProp) {
160
+ if (this._fiber) {
161
+ await this.cancel();
162
+ }
163
+ try {
164
+ this._lastRequest = requestProp;
165
+ this._registry.set(this.error, Option.none());
166
+ this._registry.set(this.active, true);
167
+ const services = await this._services();
168
+ const request = this._conversation.createRequest({
169
+ system: this._options.system,
170
+ prompt: requestProp.message,
171
+ observer: this._observer
172
+ });
173
+ this._fiber = request.pipe(
174
+ Effect2.provide(AiService2.model(this._options.model ?? DEFAULT_EDGE_MODEL2)),
175
+ // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.
176
+ Effect2.provideService(ArtifactDiffResolver, this._artifactDiffResolver),
177
+ Effect2.asVoid,
178
+ Runtime2.runFork(services)
179
+ );
180
+ const response = await this._fiber.pipe(Fiber2.join, Effect2.runPromiseExit);
181
+ if (!Exit2.isSuccess(response) && !Cause.isInterruptedOnly(response.cause)) {
182
+ throwCause2(response.cause);
183
+ }
184
+ this._registry.set(this.error, Option.none());
185
+ this._lastRequest = void 0;
186
+ this._fiber = void 0;
187
+ } catch (err) {
188
+ log.error("request failed", {
189
+ error: err
190
+ }, {
191
+ F: __dxlog_file,
192
+ L: 185,
193
+ S: this,
194
+ C: (f, a) => f(...a)
195
+ });
196
+ this._registry.set(this.error, Option.some(new Error("AI service error", {
197
+ cause: err
198
+ })));
199
+ } finally {
200
+ this._registry.set(this.active, false);
201
+ this._fiber = void 0;
202
+ }
203
+ }
204
+ /**
205
+ * Cancels the current request.
206
+ */
207
+ async cancel() {
208
+ await runAndForwardErrors(Effect2.gen(this, function* () {
209
+ if (this._fiber) {
210
+ yield* this._fiber.pipe(Fiber2.interrupt);
211
+ }
212
+ }));
213
+ this._fiber = void 0;
214
+ this._registry.set(this.active, false);
215
+ }
216
+ /**
217
+ * Retry last failed request.
218
+ */
219
+ async retry() {
220
+ if (this._lastRequest) {
221
+ return this.request(this._lastRequest);
222
+ }
223
+ }
224
+ /**
225
+ * Update the current chat's name.
226
+ */
227
+ async updateName(chat) {
228
+ const runtime = await this._services();
229
+ await updateName(runtime, this._conversation, chat, this._options.model);
230
+ }
231
+ // TODO(burdon): Fix/factor out.
232
+ _artifactDiffResolver = {
233
+ resolve: async (_artifacts) => {
234
+ const versions = /* @__PURE__ */ new Map();
235
+ return versions;
236
+ }
237
+ };
238
+ _onMessage = Effect2.fn((function* (message) {
239
+ this._registry.set(this._streaming, Option.none());
240
+ this._registry.update(this._pending, (pending) => [
241
+ ...pending,
242
+ message
243
+ ]);
244
+ }).bind(this));
245
+ _onBlock = Effect2.fn((function* (block) {
246
+ this._registry.update(this._streaming, (streaming) => {
247
+ const blocks = streaming.pipe(Option.map((streaming2) => streaming2.blocks.filter((b) => !b.pending)), Option.getOrElse(() => []));
248
+ return Option.some(Obj2.make(Message.Message, {
249
+ created: (/* @__PURE__ */ new Date()).toISOString(),
250
+ sender: {
251
+ role: "assistant"
252
+ },
253
+ blocks: [
254
+ ...blocks,
255
+ block
256
+ ]
257
+ }));
258
+ });
259
+ }).bind(this));
260
+ };
261
+
262
+ export {
263
+ AiServicePresets,
264
+ updateName,
265
+ AiChatProcessor
266
+ };
267
+ //# sourceMappingURL=chunk-ZRIPP7YF.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 { Obj } from '@dxos/echo';\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 Obj.change(chat, (c) => {\n c.name = title;\n });\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 AiConversationRunProps,\n ArtifactDiffResolver,\n GenerationObserver,\n createSystemPrompt,\n} from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { Obj } from '@dxos/echo';\nimport { type Database } from '@dxos/echo';\nimport { runAndForwardErrors, throwCause } from '@dxos/effect';\nimport {\n type CredentialsService,\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 | Database.Service\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<AiConversationRunProps, '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 /** 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 /** 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 /** 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(requestProp: AiRequest): Promise<void> {\n if (this._fiber) {\n await this.cancel();\n }\n\n try {\n this._lastRequest = requestProp;\n this._registry.set(this.error, Option.none());\n this._registry.set(this.active, true);\n\n const services = await this._services();\n\n // Create request.\n const request = this._conversation.createRequest({\n system: this._options.system,\n prompt: requestProp.message,\n observer: this._observer,\n });\n\n // Create fiber.\n this._fiber = request.pipe(\n Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),\n // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.\n Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),\n Effect.asVoid,\n Runtime.runFork(services), // 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 (err) {\n log.error('request failed', { error: err });\n this._registry.set(this.error, Option.some(new Error('AI service error', { cause: err })));\n } finally {\n this._registry.set(this.active, false);\n this._fiber = undefined;\n }\n }\n\n /**\n * Cancels the current request.\n */\n async cancel(): Promise<void> {\n await runAndForwardErrors(\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.id(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", "Obj", "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", "Obj", "change", "c", "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", "runAndForwardErrors", "throwCause", "log", "Message", "defaultOptions", "model", "DEFAULT_EDGE_MODEL", "AiChatProcessor", "_registry", "_observer", "_pending", "Atom", "make", "_streaming", "none", "_fiber", "_lastRequest", "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", "requestProp", "cancel", "set", "services", "createRequest", "prompt", "message", "observer", "pipe", "provide", "AiService", "provideService", "ArtifactDiffResolver", "_artifactDiffResolver", "asVoid", "runFork", "response", "join", "runPromiseExit", "isSuccess", "isInterruptedOnly", "cause", "throwCause", "undefined", "err", "log", "some", "Error", "runAndForwardErrors", "gen", "interrupt", "retry", "updateName", "chat", "runtime", "resolve", "_artifacts", "versions", "Map", "fn", "update", "pending", "bind", "block", "blocks", "map", "filter", "b", "getOrElse", "Obj", "Message", "created", "Date", "toISOString", "sender", "role"]
7
+ }
@@ -0,0 +1,21 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import "./chunk-HSLMI22Q.mjs";
3
+
4
+ // src/capabilities/edge-model-resolver/edge-model-resolver.ts
5
+ import * as AnthropicClient from "@effect/ai-anthropic/AnthropicClient";
6
+ import * as FetchHttpClient from "@effect/platform/FetchHttpClient";
7
+ import * as Effect from "effect/Effect";
8
+ import * as Layer from "effect/Layer";
9
+ import { AnthropicResolver } from "@dxos/ai/resolvers";
10
+ import { Capability, Common } from "@dxos/app-framework";
11
+ var edgeModelResolver = Capability.makeModule(() => Effect.succeed([
12
+ Capability.contributes(Common.Capability.AiModelResolver, AnthropicResolver.make().pipe(Layer.provide(AnthropicClient.layer({
13
+ // TODO(dmaretskyi): Read endpoint from config/settings.
14
+ apiUrl: "https://ai-service.dxos.workers.dev/provider/anthropic"
15
+ })), Layer.provide(FetchHttpClient.layer)))
16
+ ]));
17
+ var edge_model_resolver_default = edgeModelResolver;
18
+ export {
19
+ edge_model_resolver_default as default
20
+ };
21
+ //# sourceMappingURL=edge-model-resolver-G5KMODPO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/edge-model-resolver/edge-model-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as AnthropicClient from '@effect/ai-anthropic/AnthropicClient';\nimport * as FetchHttpClient from '@effect/platform/FetchHttpClient';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { AnthropicResolver } from '@dxos/ai/resolvers';\nimport { Capability, Common } from '@dxos/app-framework';\n\nexport type EdgeModelResolverCapabilities = [Capability.Capability<typeof Common.Capability.AiModelResolver>];\n\nconst edgeModelResolver = Capability.makeModule<[], EdgeModelResolverCapabilities>(() =>\n Effect.succeed([\n Capability.contributes(\n Common.Capability.AiModelResolver,\n AnthropicResolver.make().pipe(\n Layer.provide(\n AnthropicClient.layer({\n // TODO(dmaretskyi): Read endpoint from config/settings.\n apiUrl: 'https://ai-service.dxos.workers.dev/provider/anthropic',\n }),\n ),\n Layer.provide(FetchHttpClient.layer),\n ),\n ),\n ]),\n);\n\nexport default edgeModelResolver;\n"],
5
+ "mappings": ";;;;AAIA,YAAYA,qBAAqB;AACjC,YAAYC,qBAAqB;AACjC,YAAYC,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,yBAAyB;AAClC,SAASC,YAAYC,cAAc;AAInC,IAAMC,oBAAoBC,WAAWC,WAA8C,MAC1EC,eAAQ;EACbF,WAAWG,YACTC,OAAOJ,WAAWK,iBAClBC,kBAAkBC,KAAI,EAAGC,KACjBC,cACYC,sBAAM;;IAEpBC,QAAQ;EACV,CAAA,CAAA,GAEIF,cAAwBC,qBAAK,CAAA,CAAA;CAGxC,CAAA;AAGH,IAAA,8BAAeX;",
6
+ "names": ["AnthropicClient", "FetchHttpClient", "Effect", "Layer", "AnthropicResolver", "Capability", "Common", "edgeModelResolver", "Capability", "makeModule", "succeed", "contributes", "Common", "AiModelResolver", "AnthropicResolver", "make", "pipe", "provide", "layer", "apiUrl"]
7
+ }