@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
@@ -2,50 +2,33 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type AiTool } from '@effect/ai';
6
- import React, { useEffect, useMemo, useRef, useState } from 'react';
5
+ import type * as Tool from '@effect/ai/Tool';
6
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
7
7
 
8
- import { type AgentStatus } from '@dxos/ai';
9
8
  import { useTranslation } from '@dxos/react-ui';
10
- import {
11
- NumericTabs,
12
- TextCrawl,
13
- ToggleContainer,
14
- chatMessageJson,
15
- chatMessagePanel,
16
- chatMessagePanelContent,
17
- chatMessagePanelHeader,
18
- } from '@dxos/react-ui-components';
9
+ import { NumericTabs, TextCrawl, ToggleContainer, type ToggleContainerRootProps } from '@dxos/react-ui-components';
19
10
  import { Json } from '@dxos/react-ui-syntax-highlighter';
20
- import { type ContentBlock, type DataType } from '@dxos/schema';
21
- import { isNonNullable } from '@dxos/util';
22
- import { safeParseJson } from '@dxos/util';
11
+ import { type ContentBlock, type Message } from '@dxos/types';
12
+ import { type XmlWidgetProps } from '@dxos/ui-editor';
13
+ import { isNonNullable, safeParseJson } from '@dxos/util';
23
14
 
24
15
  import { meta } from '../../meta';
25
16
 
26
- export const isToolMessage = (message: DataType.Message) => {
27
- return message.blocks.some((block) => block._tag === 'toolCall' || block._tag === 'toolResult');
17
+ export const isToolMessage = (message: Message.Message) => {
18
+ return message.blocks.some((block: ContentBlock.Any) => block._tag === 'toolCall' || block._tag === 'toolResult');
28
19
  };
29
20
 
30
- export type ToolBlockProps = {
21
+ export type ToolBlockProps = XmlWidgetProps<{
31
22
  blocks: ContentBlock.Any[];
32
- };
23
+ }>;
33
24
 
34
- export const ToolBlock = ({ blocks = [] }: ToolBlockProps) => {
25
+ export const ToolBlock = ({ view, blocks = [] }: ToolBlockProps) => {
35
26
  const { t } = useTranslation(meta.id);
36
27
 
37
- const getToolCaption = (tool?: AiTool.Any, status?: AgentStatus) => {
38
- if (!tool) {
39
- return t('calling tool label');
40
- }
41
-
42
- return status?.message ?? tool.description ?? [t('calling label'), tool.name].join(' ');
43
- };
44
-
45
- const items = useMemo(() => {
46
- let lastToolCall: { tool: AiTool.Any | undefined; block: ContentBlock.ToolCall } | undefined;
28
+ const items = useMemo<ToolContainerProps['items']>(() => {
29
+ let lastToolCall: { tool: Tool.Any | undefined; block: ContentBlock.ToolCall } | undefined;
47
30
  // TODO(burdon): Get from context?
48
- const tools: AiTool.Any[] = []; //processor.conversation.toolkit?.tools ?? [];
31
+ const tools: Tool.Any[] = []; //processor.conversation.toolkit?.tools ?? [];
49
32
  return blocks
50
33
  .filter((block) => block._tag === 'toolCall' || block._tag === 'toolResult' || block._tag === 'summary')
51
34
  .map((block) => {
@@ -58,7 +41,7 @@ export const ToolBlock = ({ blocks = [] }: ToolBlockProps) => {
58
41
  const tool = tools.find((tool) => tool.name === block.name);
59
42
  lastToolCall = { tool, block };
60
43
  return {
61
- title: getToolCaption(lastToolCall?.tool),
44
+ title: tool?.description ?? [t('tool call label'), tool?.name].join(' '),
62
45
  content: {
63
46
  ...block,
64
47
  input: safeParseJson(block.input),
@@ -70,12 +53,13 @@ export const ToolBlock = ({ blocks = [] }: ToolBlockProps) => {
70
53
  // TODO(burdon): Parse error type.
71
54
  if (block.error) {
72
55
  return {
73
- title: t('error label'),
56
+ title: t('tool error label'),
74
57
  content: block,
75
58
  };
76
59
  }
77
60
 
78
- const title = getToolCaption(lastToolCall?.tool ?? t('tool result label'));
61
+ const title =
62
+ lastToolCall?.tool?.description ?? [t('tool result label'), lastToolCall?.tool?.name].join(' ');
79
63
  lastToolCall = undefined;
80
64
  return {
81
65
  title,
@@ -101,45 +85,52 @@ export const ToolBlock = ({ blocks = [] }: ToolBlockProps) => {
101
85
  .filter(isNonNullable);
102
86
  }, [blocks]);
103
87
 
88
+ const handleChangeOpen = useCallback(() => {
89
+ setTimeout(() => {
90
+ // Measure after animation.
91
+ view?.requestMeasure();
92
+ }, 1_000);
93
+ }, [view]);
94
+
104
95
  if (!items.length) {
105
96
  return null;
106
97
  }
107
98
 
108
- return <ToolContainer items={items} />;
99
+ return <ToolContainer items={items} onChangeOpen={handleChangeOpen} />;
109
100
  };
110
101
 
111
102
  ToolBlock.displayName = 'ToolBlock';
112
103
 
113
- type ToolContainerParams = {
104
+ type ToolContainerProps = {
114
105
  items: { title: string; content: any }[];
115
- };
106
+ } & Pick<ToggleContainerRootProps, 'onChangeOpen'>;
116
107
 
117
- export const ToolContainer = ({ items }: ToolContainerParams) => {
108
+ export const ToolContainer = ({ items, onChangeOpen }: ToolContainerProps) => {
118
109
  const tabsRef = useRef<HTMLDivElement>(null);
119
110
  const [selected, setSelected] = useState(0);
120
111
  const [open, setOpen] = useState(false);
112
+
121
113
  useEffect(() => {
114
+ onChangeOpen?.(open);
122
115
  if (open) {
123
116
  tabsRef.current?.focus();
124
117
  }
125
- }, [open]);
118
+ }, [open, onChangeOpen]);
126
119
 
127
- const handleSelect = (index: number) => {
120
+ const handleSelect = useCallback((index: number) => {
128
121
  setSelected(index);
129
- };
130
-
131
- const data = items[selected]?.content;
122
+ }, []);
132
123
 
133
124
  return (
134
- <ToggleContainer.Root classNames={chatMessagePanel} open={open} onChangeOpen={setOpen}>
135
- <ToggleContainer.Header classNames={chatMessagePanelHeader}>
136
- <TextCrawl key='status-roll' lines={items.map((item) => item.title)} />
125
+ <ToggleContainer.Root classNames='mbs-2 is-full rounded-sm' open={open} onChangeOpen={setOpen}>
126
+ <ToggleContainer.Header classNames='text-sm text-placeholder'>
127
+ <TextCrawl key='status-roll' lines={items.map((item) => item.title)} autoAdvance greedy />
137
128
  </ToggleContainer.Header>
138
- <ToggleContainer.Content classNames={['grid grid-cols-[32px_1fr]', chatMessagePanelContent]}>
129
+ <ToggleContainer.Content classNames='grid grid-cols-[32px_1fr]'>
139
130
  <NumericTabs ref={tabsRef} classNames='p-1' length={items.length} selected={selected} onSelect={handleSelect} />
140
131
  <Json
141
- data={data}
142
- classNames={chatMessageJson}
132
+ data={items[selected]?.content}
133
+ classNames='p-1 text-xs bg-transparent'
143
134
  replacer={{
144
135
  maxDepth: 3,
145
136
  maxArrayLen: 10,
@@ -2,27 +2,25 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
8
7
  import React from 'react';
9
8
 
10
- import { IntentPlugin, SettingsPlugin } from '@dxos/app-framework';
11
9
  import { withPluginManager } from '@dxos/app-framework/testing';
12
- import { capabilities } from '@dxos/assistant-testing';
10
+ import { capabilities } from '@dxos/assistant-toolkit/testing';
13
11
  import { ChessPlugin } from '@dxos/plugin-chess';
14
12
  import { ClientPlugin } from '@dxos/plugin-client';
15
13
  import { MapPlugin } from '@dxos/plugin-map';
16
- import { SpacePlugin } from '@dxos/plugin-space';
17
14
  import { TablePlugin } from '@dxos/plugin-table';
18
- import { withLayout, withTheme } from '@dxos/storybook-utils';
15
+ import { corePlugins } from '@dxos/plugin-testing';
16
+ import { withTheme } from '@dxos/react-ui/testing';
19
17
 
20
18
  import { translations } from '../../translations';
21
19
 
22
20
  import { Toolbox, type ToolboxProps } from './Toolbox';
23
21
 
24
22
  const DefaultStory = (props: ToolboxProps) => {
25
- return <Toolbox {...props} classNames='w-[30rem] h-[15rem] rounded-sm border border-separator py-1' />;
23
+ return <Toolbox {...props} classNames='is-[30rem] bs-[15rem] rounded-sm border border-separator plb-1' />;
26
24
  };
27
25
 
28
26
  const meta = {
@@ -30,24 +28,22 @@ const meta = {
30
28
  component: Toolbox as any,
31
29
  render: DefaultStory,
32
30
  decorators: [
31
+ withTheme,
33
32
  withPluginManager({
34
33
  plugins: [
34
+ ...corePlugins(),
35
35
  ClientPlugin({
36
- onClientInitialized: async ({ client }) => {
37
- await client.halo.createIdentity();
38
- },
36
+ onClientInitialized: ({ client }) =>
37
+ Effect.gen(function* () {
38
+ yield* Effect.promise(() => client.halo.createIdentity());
39
+ }),
39
40
  }),
40
- SpacePlugin(),
41
- SettingsPlugin(),
42
- IntentPlugin(),
43
41
  ChessPlugin(),
44
42
  MapPlugin(),
45
43
  TablePlugin(),
46
44
  ],
47
45
  capabilities,
48
46
  }),
49
- withTheme,
50
- withLayout(),
51
47
  ],
52
48
  parameters: {
53
49
  layout: 'centered',
@@ -5,13 +5,12 @@
5
5
  import React, { type FC, Fragment, useEffect, useState } from 'react';
6
6
 
7
7
  import { type Blueprint } from '@dxos/blueprints';
8
- import { type Ref } from '@dxos/echo';
9
- import { FunctionType } from '@dxos/functions';
8
+ import { type Database, type Ref } from '@dxos/echo';
9
+ import { Function } from '@dxos/functions';
10
10
  import { log } from '@dxos/log';
11
- import { Filter, type Space, useQuery } from '@dxos/react-client/echo';
12
- import { type ThemedClassName } from '@dxos/react-ui';
13
- import { useTranslation } from '@dxos/react-ui';
14
- import { mx } from '@dxos/react-ui-theme';
11
+ import { Filter, useQuery } from '@dxos/react-client/echo';
12
+ import { type ThemedClassName, useTranslation } from '@dxos/react-ui';
13
+ import { mx } from '@dxos/ui-theme';
15
14
 
16
15
  import { meta } from '../../meta';
17
16
  import { type AiChatProcessor } from '../../processor';
@@ -19,9 +18,9 @@ import { ServiceType } from '../../types';
19
18
 
20
19
  export type ToolboxProps = ThemedClassName<{
21
20
  services?: { service: ServiceType }[];
22
- functions?: FunctionType[];
21
+ functions?: Function.Function[];
23
22
  // TODO(burdon): Combine into single array.
24
- blueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];
23
+ blueprints?: readonly Blueprint.Blueprint[];
25
24
  activeBlueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];
26
25
  }>;
27
26
 
@@ -33,10 +32,10 @@ export const Toolbox = ({ classNames, functions, services, blueprints, activeBlu
33
32
  {blueprints && blueprints.length > 0 && (
34
33
  <Section
35
34
  title='Blueprints'
36
- items={blueprints.map(({ target }) => ({
37
- name: target?.name ?? '',
38
- description: target?.description ?? '',
39
- subitems: target?.tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),
35
+ items={blueprints.map(({ name, description, tools }) => ({
36
+ name,
37
+ description,
38
+ subitems: tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),
40
39
  }))}
41
40
  />
42
41
  )}
@@ -77,11 +76,11 @@ const Section: FC<{
77
76
  }> = ({ title, items, striped }) => {
78
77
  const stripeClassNames = 'odd:bg-neutral-50 dark:odd:bg-neutral-800';
79
78
  const gridClassNames = 'grid grid-cols-[8rem_1fr]';
80
- const subGridClassNames = mx('col-span-full grid grid-cols-subgrid text-xs px-2', striped && stripeClassNames);
79
+ const subGridClassNames = mx('col-span-full grid grid-cols-subgrid text-xs pli-2', striped && stripeClassNames);
81
80
 
82
81
  return (
83
82
  <div>
84
- <h1 className='px-2 text-sm'>{title}</h1>
83
+ <h1 className='pli-2 text-sm'>{title}</h1>
85
84
  <div className={gridClassNames}>
86
85
  {items.map(({ name, description, subitems }, i) => (
87
86
  <Fragment key={i}>
@@ -105,13 +104,13 @@ const Section: FC<{
105
104
  };
106
105
 
107
106
  export type ToolboxContainerProps = ThemedClassName<{
108
- space?: Space;
107
+ db?: Database.Database;
109
108
  processor?: AiChatProcessor;
110
109
  }>;
111
110
 
112
- export const ToolboxContainer = ({ classNames, space, processor }: ToolboxContainerProps) => {
111
+ export const ToolboxContainer = ({ classNames, db, processor }: ToolboxContainerProps) => {
113
112
  // Registered services.
114
- const services = useQuery(space, Filter.type(ServiceType));
113
+ const services = useQuery(db, Filter.type(ServiceType));
115
114
  const [serviceTools, setServiceTools] = useState<{ service: ServiceType }[]>([]);
116
115
  useEffect(() => {
117
116
  log('creating service tools...', { services: services.length });
@@ -125,12 +124,12 @@ export const ToolboxContainer = ({ classNames, space, processor }: ToolboxContai
125
124
  }, [services]);
126
125
 
127
126
  // Deployed functions.
128
- const functions = useQuery(space, Filter.type(FunctionType));
127
+ const functions = useQuery(db, Filter.type(Function.Function));
129
128
 
130
129
  return (
131
130
  <Toolbox
132
131
  classNames={classNames}
133
- blueprints={processor?.context.blueprints.value}
132
+ blueprints={processor?.context.getBlueprints()}
134
133
  services={serviceTools}
135
134
  functions={functions}
136
135
  />
@@ -0,0 +1,161 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { type EditorView } from '@codemirror/view';
6
+ import * as LanguageModel from '@effect/ai/LanguageModel';
7
+ import * as Effect from 'effect/Effect';
8
+ import type * as Runtime from 'effect/Runtime';
9
+ import React, { useState } from 'react';
10
+
11
+ import { runInRuntime } from '@dxos/effect';
12
+ import { log } from '@dxos/log';
13
+ import { Button, Icon, Input, ThemeProvider } from '@dxos/react-ui';
14
+
15
+ export interface AssistantToolbarProps {
16
+ view: EditorView;
17
+ from: number;
18
+ to: number;
19
+ runtime: Runtime.Runtime<LanguageModel.LanguageModel>;
20
+ }
21
+
22
+ export const AssistantToolbar = ({ view, from, to, runtime }: AssistantToolbarProps) => {
23
+ const [isProcessing, setIsProcessing] = useState(false);
24
+ const [showPromptInput, setShowPromptInput] = useState(false);
25
+ const [customPrompt, setCustomPrompt] = useState('');
26
+
27
+ const runEffect = async (text: string, prompt: string) => {
28
+ setIsProcessing(true);
29
+ try {
30
+ const newText = await runInRuntime(
31
+ runtime,
32
+ Effect.gen(function* () {
33
+ // Construct meaningful system prompt context
34
+ const response = yield* LanguageModel.generateText({
35
+ prompt: `${prompt}:\n"${text}"`,
36
+ });
37
+ return response.text;
38
+ }),
39
+ );
40
+
41
+ // Apply change - check if selection is still valid/same?
42
+ // For simple demo, we just apply to the passed from/to, but ideally we check current selection.
43
+ // We can just rely on from/to passed as props, assuming the toolbar unmounts if selection changes.
44
+ view.dispatch({
45
+ changes: { from, to, insert: newText },
46
+ });
47
+ } catch (e) {
48
+ log.error('Assistant action failed', { error: e });
49
+ } finally {
50
+ setIsProcessing(false);
51
+ setShowPromptInput(false);
52
+ }
53
+ };
54
+
55
+ const currentText = view.state.sliceDoc(from, to);
56
+
57
+ const handleRegenerate = () => {
58
+ void runEffect(
59
+ currentText,
60
+ 'You are a typewriting agent. Agent only outputs the result; one version; no explanation or formatting. Re-write the following text to be more clear and concise, keep the same meaning.',
61
+ );
62
+ };
63
+
64
+ const handleCasual = () => handleChangeTone('casual');
65
+ const handleFormal = () => handleChangeTone('formal');
66
+
67
+ const handleChangeTone = (tone: 'formal' | 'casual') => {
68
+ void runEffect(
69
+ currentText,
70
+ `You are a typewriting agent. Agent only outputs the result; one version; no explanation or formatting. Rewrite the following text to be more ${tone}`,
71
+ );
72
+ };
73
+
74
+ const handleEditWithPrompt = () => {
75
+ if (!customPrompt) return;
76
+ void runEffect(currentText, customPrompt);
77
+ };
78
+
79
+ return (
80
+ <ThemeProvider>
81
+ {showPromptInput ? (
82
+ <div
83
+ className='flex items-center gap-2 p-1 bg-white/90 dark:bg-neutral-800/90 backdrop-blur-md rounded-full shadow-xl border border-neutral-200 dark:border-neutral-700 animate-in fade-in zoom-in-95 duration-150 mt-2'
84
+ onMouseDown={(e) => e.preventDefault()}
85
+ >
86
+ <Input.Root>
87
+ <Input.TextInput
88
+ placeholder='Instruction...'
89
+ value={customPrompt}
90
+ onChange={(e) => setCustomPrompt(e.target.value)}
91
+ onKeyDown={(e) => {
92
+ if (e.key === 'Enter') handleEditWithPrompt();
93
+ if (e.key === 'Escape') setShowPromptInput(false);
94
+ e.stopPropagation();
95
+ }}
96
+ autoFocus
97
+ classNames='border-none bg-transparent focus-visible:ring-0 p-1 text-sm min-w-[200px]'
98
+ />
99
+ </Input.Root>
100
+ <Button
101
+ variant='ghost'
102
+ classNames='p-1 min-bs-0 bs-6 is-6 rounded-full'
103
+ onClick={handleEditWithPrompt}
104
+ disabled={!customPrompt || isProcessing}
105
+ >
106
+ <Icon icon='ph--arrows-clockwise--regular' classNames={isProcessing ? 'animate-spin' : ''} />
107
+ </Button>
108
+ </div>
109
+ ) : (
110
+ <div
111
+ className='flex items-center gap-1 p-1 bg-white/50 dark:bg-neutral-800/50 backdrop-blur-md rounded-xl shadow-xl border border-neutral-200 dark:border-neutral-700 animate-in fade-in zoom-in-95 duration-150 mt-2'
112
+ onMouseDown={(e) => e.preventDefault()}
113
+ >
114
+ <div className='flex items-center gap-1'>
115
+ <Button
116
+ variant='ghost'
117
+ classNames='flex flex-col items-center gap-1 p-1 h-auto w-auto rounded-lg hover:bg-neutral-100 dark:hover:bg-neutral-700'
118
+ onClick={handleCasual}
119
+ disabled={isProcessing}
120
+ >
121
+ <Icon icon='ph--caret-left--regular' size={4} />
122
+ <span className='text-[10px] leading-none text-neutral-500 font-medium'>Casual</span>
123
+ </Button>
124
+
125
+ <Button
126
+ variant='ghost'
127
+ classNames='flex flex-col items-center gap-1 p-1 h-auto w-auto rounded-lg hover:bg-neutral-100 dark:hover:bg-neutral-700'
128
+ onClick={handleRegenerate}
129
+ disabled={isProcessing}
130
+ >
131
+ <Icon icon='ph--arrows-clockwise--regular' size={4} classNames={isProcessing ? 'animate-spin' : ''} />
132
+ <span className='text-[10px] leading-none text-neutral-500 font-medium'>Different</span>
133
+ </Button>
134
+
135
+ <Button
136
+ variant='ghost'
137
+ classNames='flex flex-col gap-1 p-1 h-auto w-auto rounded-lg hover:bg-neutral-100 dark:hover:bg-neutral-700'
138
+ onClick={handleFormal}
139
+ disabled={isProcessing}
140
+ >
141
+ <Icon icon='ph--caret-right--regular' size={4} />
142
+ <span className='text-[10px] leading-none text-neutral-500 font-medium'>Formal</span>
143
+ </Button>
144
+ </div>
145
+
146
+ <div className='w-px h-8 bg-neutral-200 dark:bg-neutral-700 mx-1' />
147
+
148
+ <Button
149
+ variant='ghost'
150
+ classNames='flex flex-col gap-1 p-1 h-auto w-auto rounded-lg hover:bg-neutral-100 dark:hover:bg-neutral-700'
151
+ onClick={() => setShowPromptInput(true)}
152
+ disabled={isProcessing}
153
+ >
154
+ <Icon icon='ph--keyboard--regular' size={4} />
155
+ <span className='text-[10px] leading-none text-neutral-500 font-medium'>Instruct</span>
156
+ </Button>
157
+ </div>
158
+ )}
159
+ </ThemeProvider>
160
+ );
161
+ };
@@ -0,0 +1,83 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import type * as LanguageModel from '@effect/ai/LanguageModel';
6
+ import type { Meta, StoryObj } from '@storybook/react-vite';
7
+ import * as Layer from 'effect/Layer';
8
+ import * as ManagedRuntime from 'effect/ManagedRuntime';
9
+ import type * as Runtime from 'effect/Runtime';
10
+ import React, { useEffect, useState } from 'react';
11
+
12
+ import { AiService } from '@dxos/ai';
13
+ import { AiServiceTestingPreset } from '@dxos/ai/testing';
14
+
15
+ import { Typewriter } from './Typewriter';
16
+
17
+ const meta: Meta<typeof Typewriter> = {
18
+ title: 'plugins/plugin-assistant/Typewriter',
19
+ component: Typewriter,
20
+ parameters: {
21
+ layout: 'centered',
22
+ },
23
+ };
24
+
25
+ export default meta;
26
+
27
+ type Story = StoryObj<typeof Typewriter>;
28
+
29
+ const sampleText = `# The Future of Artificial Intelligence
30
+
31
+ Artificial Intelligence (AI) has rapidly evolved from a theoretical concept to a transformative force reshaping industries, economies, and daily life. At its core, AI refers to the development of computer systems capable of performing tasks that typically require human intelligence, such as visual perception, speech recognition, decision-making, and language translation.
32
+
33
+ ## Machine Learning and Neural Networks
34
+
35
+ The resurgence of AI in recent years is largely driven by advancements in machine learning (ML) and deep learning. Neural networks, inspired by the human brain's architecture, enable computers to learn from vast amounts of data. This has led to breakthroughs in areas like natural language processing (NLP), allowing models like GPT-4 to generate human-like text and code.
36
+
37
+ ## Ethical Considerations
38
+
39
+ As AI becomes more autonomous, ethical concerns have moved to the forefront. Issues such as algorithmic bias, data privacy, and the potential displacement of jobs are critical topics of debate. Ensuring that AI systems are fair, transparent, and aligned with human values is essential for their sustainable development.
40
+
41
+ ## Conclusion
42
+
43
+ The journey of AI is just beginning. With responsible innovation and global collaboration, AI has the potential to solve some of humanity's most pressing challenges, from climate change to personalized medicine.
44
+
45
+ (try selecting some text to see the AI assistant, or wait for the proofreader to find the typo below)
46
+
47
+ The quick brown fox jumps over teh lazy dog. i think this is cool.
48
+ `;
49
+
50
+ export const Default: Story = {
51
+ render: () => {
52
+ const [rtEffect, setRtEffect] = useState<Runtime.Runtime<LanguageModel.LanguageModel>>();
53
+ useEffect(() => {
54
+ let disposed = false;
55
+ const rt = ManagedRuntime.make(
56
+ AiService.model('@anthropic/claude-haiku-4-5').pipe(
57
+ Layer.provide(AiServiceTestingPreset('edge-remote')),
58
+ Layer.orDie,
59
+ ),
60
+ );
61
+ queueMicrotask(async () => {
62
+ if (disposed) return;
63
+ const x = await rt.runtime();
64
+ if (disposed) return;
65
+ setRtEffect(x);
66
+ });
67
+ return () => {
68
+ disposed = true;
69
+ void rt.dispose();
70
+ };
71
+ }, []);
72
+
73
+ if (!rtEffect) {
74
+ return <div>...Loading</div>;
75
+ }
76
+
77
+ return (
78
+ <div className='w-[800px] p-4'>
79
+ <Typewriter initialContent={sampleText} runtime={rtEffect} />
80
+ </div>
81
+ );
82
+ },
83
+ };
@@ -0,0 +1,54 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { type Extension } from '@codemirror/state';
6
+ import type * as LanguageModel from '@effect/ai/LanguageModel';
7
+ import type * as Runtime from 'effect/Runtime';
8
+ import React, { useMemo, useRef } from 'react';
9
+
10
+ import { DensityProvider, ThemeProvider } from '@dxos/react-ui';
11
+ import { Editor, type EditorController } from '@dxos/react-ui-editor';
12
+ import {
13
+ createBasicExtensions,
14
+ createMarkdownExtensions,
15
+ createThemeExtensions,
16
+ decorateMarkdown,
17
+ } from '@dxos/ui-editor';
18
+
19
+ import { assistant } from './assistant-extension';
20
+
21
+ export type TypewriterProps = {
22
+ initialContent?: string;
23
+ extensions?: Extension[];
24
+ runtime: Runtime.Runtime<LanguageModel.LanguageModel>;
25
+ };
26
+
27
+ export const Typewriter = ({ initialContent = '', extensions = [], runtime }: TypewriterProps) => {
28
+ const editorRef = useRef<EditorController>(null);
29
+ const extension = useMemo(
30
+ () => [
31
+ createBasicExtensions({ scrollPastEnd: true, search: true }),
32
+ createThemeExtensions({ syntaxHighlighting: true }),
33
+ createMarkdownExtensions(),
34
+ decorateMarkdown(),
35
+ assistant(runtime),
36
+ ...extensions,
37
+ ],
38
+ [runtime, extensions],
39
+ );
40
+
41
+ return (
42
+ <ThemeProvider>
43
+ <DensityProvider density='fine'>
44
+ <div className='is-full bs-full grid overflow-hidden'>
45
+ <Editor.Root ref={editorRef}>
46
+ <Editor.Viewport>
47
+ <Editor.Content initialValue={initialContent} extensions={extension} />
48
+ </Editor.Viewport>
49
+ </Editor.Root>
50
+ </div>
51
+ </DensityProvider>
52
+ </ThemeProvider>
53
+ );
54
+ };