@dxos/plugin-assistant 0.8.4-main.c4373fc → 0.8.4-main.c85a9c8dae

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 (681) hide show
  1. package/dist/lib/browser/AssistantSettings-2LFAG5OQ.mjs +93 -0
  2. package/dist/lib/browser/AssistantSettings-2LFAG5OQ.mjs.map +7 -0
  3. package/dist/lib/browser/BlueprintArticle-CCS25MNW.mjs +36 -0
  4. package/dist/lib/browser/BlueprintArticle-CCS25MNW.mjs.map +7 -0
  5. package/dist/lib/browser/ChatCompanion-UGD4V34A.mjs +202 -0
  6. package/dist/lib/browser/ChatCompanion-UGD4V34A.mjs.map +7 -0
  7. package/dist/lib/browser/ChatContainer-ZGRSZ5EU.mjs +12 -0
  8. package/dist/lib/browser/ChatDialog-AET7GVIB.mjs +85 -0
  9. package/dist/lib/browser/ChatDialog-AET7GVIB.mjs.map +7 -0
  10. package/dist/lib/browser/ProjectArticle-QDBTIFNE.mjs +91 -0
  11. package/dist/lib/browser/ProjectArticle-QDBTIFNE.mjs.map +7 -0
  12. package/dist/lib/browser/ProjectSettings-R6RRARLO.mjs +194 -0
  13. package/dist/lib/browser/ProjectSettings-R6RRARLO.mjs.map +7 -0
  14. package/dist/lib/browser/PromptArticle-USQO4WX6.mjs +71 -0
  15. package/dist/lib/browser/PromptArticle-USQO4WX6.mjs.map +7 -0
  16. package/dist/lib/browser/TriggerStatus-65X3EUSN.mjs +122 -0
  17. package/dist/lib/browser/TriggerStatus-65X3EUSN.mjs.map +7 -0
  18. package/dist/lib/browser/ai-service-CY2BYPH6.mjs +22 -0
  19. package/dist/lib/browser/ai-service-CY2BYPH6.mjs.map +7 -0
  20. package/dist/lib/browser/app-graph-builder-SFYYUKTT.mjs +234 -0
  21. package/dist/lib/browser/app-graph-builder-SFYYUKTT.mjs.map +7 -0
  22. package/dist/lib/browser/blueprint-definition-RB5RHZZM.mjs +34 -0
  23. package/dist/lib/browser/blueprint-definition-RB5RHZZM.mjs.map +7 -0
  24. package/dist/lib/browser/blueprints/index.mjs +8 -0
  25. package/dist/lib/browser/chunk-7DXYAXLZ.mjs +230 -0
  26. package/dist/lib/browser/chunk-7DXYAXLZ.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-EXVT7D4B.mjs +23 -0
  28. package/dist/lib/browser/chunk-EXVT7D4B.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-JYY5AD65.mjs +286 -0
  30. package/dist/lib/browser/chunk-JYY5AD65.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-LEXIQDXZ.mjs +26 -0
  32. package/dist/lib/browser/chunk-LEXIQDXZ.mjs.map +7 -0
  33. package/dist/lib/browser/chunk-RU4G5NY4.mjs +69 -0
  34. package/dist/lib/browser/chunk-RU4G5NY4.mjs.map +7 -0
  35. package/dist/lib/browser/chunk-UUA6GNGG.mjs +2125 -0
  36. package/dist/lib/browser/chunk-UUA6GNGG.mjs.map +7 -0
  37. package/dist/lib/browser/edge-model-resolver-YTMFQEN5.mjs +21 -0
  38. package/dist/lib/browser/edge-model-resolver-YTMFQEN5.mjs.map +7 -0
  39. package/dist/lib/browser/index.mjs +271 -226
  40. package/dist/lib/browser/index.mjs.map +4 -4
  41. package/dist/lib/browser/local-model-resolver-CGRQH37T.mjs +20 -0
  42. package/dist/lib/browser/local-model-resolver-CGRQH37T.mjs.map +7 -0
  43. package/dist/lib/browser/meta.json +1 -1
  44. package/dist/lib/browser/operation-resolver-ELXDQZEG.mjs +136 -0
  45. package/dist/lib/browser/operation-resolver-ELXDQZEG.mjs.map +7 -0
  46. package/dist/lib/browser/react-surface-KYQSZO2I.mjs +144 -0
  47. package/dist/lib/browser/react-surface-KYQSZO2I.mjs.map +7 -0
  48. package/dist/lib/browser/repair-ZFZWZALX.mjs +52 -0
  49. package/dist/lib/browser/repair-ZFZWZALX.mjs.map +7 -0
  50. package/dist/lib/browser/settings-YREVQAZ5.mjs +33 -0
  51. package/dist/lib/browser/settings-YREVQAZ5.mjs.map +7 -0
  52. package/dist/lib/browser/state-MPG42ZO4.mjs +26 -0
  53. package/dist/lib/browser/state-MPG42ZO4.mjs.map +7 -0
  54. package/dist/lib/browser/toolkit-XRSBBB3L.mjs +16 -0
  55. package/dist/lib/browser/toolkit-XRSBBB3L.mjs.map +7 -0
  56. package/dist/lib/browser/types/index.mjs +8 -4
  57. package/dist/lib/node-esm/AssistantSettings-QWFEMJG7.mjs +94 -0
  58. package/dist/lib/node-esm/AssistantSettings-QWFEMJG7.mjs.map +7 -0
  59. package/dist/lib/node-esm/BlueprintArticle-SNEN6LOY.mjs +37 -0
  60. package/dist/lib/node-esm/BlueprintArticle-SNEN6LOY.mjs.map +7 -0
  61. package/dist/lib/node-esm/ChatCompanion-NP4R5BFE.mjs +203 -0
  62. package/dist/lib/node-esm/ChatCompanion-NP4R5BFE.mjs.map +7 -0
  63. package/dist/lib/node-esm/ChatContainer-IFHDIFJH.mjs +13 -0
  64. package/dist/lib/node-esm/ChatContainer-IFHDIFJH.mjs.map +7 -0
  65. package/dist/lib/node-esm/ChatDialog-UZNQBTKZ.mjs +86 -0
  66. package/dist/lib/node-esm/ChatDialog-UZNQBTKZ.mjs.map +7 -0
  67. package/dist/lib/node-esm/ProjectArticle-BCIBESJN.mjs +92 -0
  68. package/dist/lib/node-esm/ProjectArticle-BCIBESJN.mjs.map +7 -0
  69. package/dist/lib/node-esm/ProjectSettings-Q5QY6BYS.mjs +195 -0
  70. package/dist/lib/node-esm/ProjectSettings-Q5QY6BYS.mjs.map +7 -0
  71. package/dist/lib/node-esm/PromptArticle-PGMJMQK7.mjs +72 -0
  72. package/dist/lib/node-esm/PromptArticle-PGMJMQK7.mjs.map +7 -0
  73. package/dist/lib/node-esm/TriggerStatus-UR5S7PXJ.mjs +123 -0
  74. package/dist/lib/node-esm/TriggerStatus-UR5S7PXJ.mjs.map +7 -0
  75. package/dist/lib/node-esm/ai-service-ZI3A6RVG.mjs +23 -0
  76. package/dist/lib/node-esm/ai-service-ZI3A6RVG.mjs.map +7 -0
  77. package/dist/lib/node-esm/app-graph-builder-E25JXI34.mjs +235 -0
  78. package/dist/lib/node-esm/app-graph-builder-E25JXI34.mjs.map +7 -0
  79. package/dist/lib/node-esm/blueprint-definition-L7XKRYIW.mjs +35 -0
  80. package/dist/lib/node-esm/blueprint-definition-L7XKRYIW.mjs.map +7 -0
  81. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  82. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-3QBVFAYO.mjs +28 -0
  84. package/dist/lib/node-esm/chunk-3QBVFAYO.mjs.map +7 -0
  85. package/dist/lib/node-esm/chunk-6NCLKQCL.mjs +70 -0
  86. package/dist/lib/node-esm/chunk-6NCLKQCL.mjs.map +7 -0
  87. package/dist/lib/node-esm/chunk-GZ4ERNT2.mjs +2126 -0
  88. package/dist/lib/node-esm/chunk-GZ4ERNT2.mjs.map +7 -0
  89. package/dist/lib/node-esm/chunk-JMBYVUD6.mjs +288 -0
  90. package/dist/lib/node-esm/chunk-JMBYVUD6.mjs.map +7 -0
  91. package/dist/lib/node-esm/chunk-MWYYLALM.mjs +231 -0
  92. package/dist/lib/node-esm/chunk-MWYYLALM.mjs.map +7 -0
  93. package/dist/lib/node-esm/{chunk-73ABYRYX.mjs → chunk-POWB2BPC.mjs} +7 -2
  94. package/dist/lib/node-esm/chunk-POWB2BPC.mjs.map +7 -0
  95. package/dist/lib/node-esm/edge-model-resolver-CMJ3KNLQ.mjs +22 -0
  96. package/dist/lib/node-esm/edge-model-resolver-CMJ3KNLQ.mjs.map +7 -0
  97. package/dist/lib/node-esm/index.mjs +271 -226
  98. package/dist/lib/node-esm/index.mjs.map +4 -4
  99. package/dist/lib/node-esm/local-model-resolver-FFDAKOXN.mjs +21 -0
  100. package/dist/lib/node-esm/local-model-resolver-FFDAKOXN.mjs.map +7 -0
  101. package/dist/lib/node-esm/meta.json +1 -1
  102. package/dist/lib/node-esm/operation-resolver-Q5GNP2GH.mjs +137 -0
  103. package/dist/lib/node-esm/operation-resolver-Q5GNP2GH.mjs.map +7 -0
  104. package/dist/lib/node-esm/react-surface-JJRGVGKD.mjs +145 -0
  105. package/dist/lib/node-esm/react-surface-JJRGVGKD.mjs.map +7 -0
  106. package/dist/lib/node-esm/repair-LXFVOK4B.mjs +53 -0
  107. package/dist/lib/node-esm/repair-LXFVOK4B.mjs.map +7 -0
  108. package/dist/lib/node-esm/settings-N452OW6Y.mjs +34 -0
  109. package/dist/lib/node-esm/settings-N452OW6Y.mjs.map +7 -0
  110. package/dist/lib/node-esm/state-WHZFKIEL.mjs +27 -0
  111. package/dist/lib/node-esm/state-WHZFKIEL.mjs.map +7 -0
  112. package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs +17 -0
  113. package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs.map +7 -0
  114. package/dist/lib/node-esm/types/index.mjs +8 -4
  115. package/dist/types/src/AssistantPlugin.d.ts +2 -1
  116. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  117. package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
  118. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
  119. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +2 -0
  120. package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +1 -0
  121. package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
  122. package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
  123. package/dist/types/src/blueprints/index.d.ts +2 -0
  124. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/ai-service/ai-service.d.ts +6 -0
  126. package/dist/types/src/capabilities/ai-service/ai-service.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/ai-service/index.d.ts +3 -0
  128. package/dist/types/src/capabilities/ai-service/index.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  130. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  132. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  133. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +6 -0
  134. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  135. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  136. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  137. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts +7 -0
  138. package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +1 -0
  139. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts +3 -0
  140. package/dist/types/src/capabilities/edge-model-resolver/index.d.ts.map +1 -0
  141. package/dist/types/src/capabilities/index.d.ts +10 -11
  142. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  143. package/dist/types/src/capabilities/local-model-resolver/index.d.ts +3 -0
  144. package/dist/types/src/capabilities/local-model-resolver/index.d.ts.map +1 -0
  145. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +13 -0
  146. package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +1 -0
  147. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  148. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  149. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  150. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  151. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  152. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  153. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  154. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  156. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  157. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  158. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  159. package/dist/types/src/capabilities/settings/index.d.ts +15 -0
  160. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/settings/settings.d.ts +18 -0
  162. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  163. package/dist/types/src/capabilities/state/index.d.ts +11 -0
  164. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  165. package/dist/types/src/capabilities/state/state.d.ts +13 -0
  166. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  167. package/dist/types/src/capabilities/toolkit/index.d.ts +3 -0
  168. package/dist/types/src/capabilities/toolkit/index.d.ts.map +1 -0
  169. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +6 -0
  170. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +1 -0
  171. package/dist/types/src/components/Chat/Chat.d.ts +28 -14
  172. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  173. package/dist/types/src/components/Chat/events.d.ts +5 -1
  174. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  175. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +2 -2
  176. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  177. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  178. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +3 -3
  179. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  180. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +3 -3
  181. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  182. package/dist/types/src/components/ChatThread/ChatThread.d.ts +7 -8
  183. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  184. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +250 -76
  185. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  186. package/dist/types/src/components/ChatThread/registry.d.ts +1 -1
  187. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  188. package/dist/types/src/components/ChatThread/sync.d.ts +12 -6
  189. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  190. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  191. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  192. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +234 -65
  193. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  194. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +11 -1
  195. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  196. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +235 -66
  197. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  198. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  199. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  200. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  201. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  202. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  203. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +10 -8
  204. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  205. package/dist/types/src/components/Toolbox/Toolbox.d.ts +6 -7
  206. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  207. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +234 -64
  208. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  209. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +12 -0
  210. package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +1 -0
  211. package/dist/types/src/components/Typewriter/Typewriter.d.ts +11 -0
  212. package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +1 -0
  213. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts +7 -0
  214. package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +1 -0
  215. package/dist/types/src/components/Typewriter/assistant-extension.d.ts +5 -0
  216. package/dist/types/src/components/Typewriter/assistant-extension.d.ts.map +1 -0
  217. package/dist/types/src/components/Typewriter/index.d.ts +2 -0
  218. package/dist/types/src/components/Typewriter/index.d.ts.map +1 -0
  219. package/dist/types/src/components/index.d.ts +0 -11
  220. package/dist/types/src/components/index.d.ts.map +1 -1
  221. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts +8 -0
  222. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +1 -0
  223. package/dist/types/src/containers/AssistantSettings/index.d.ts +3 -0
  224. package/dist/types/src/containers/AssistantSettings/index.d.ts.map +1 -0
  225. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +6 -0
  226. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
  227. package/dist/types/src/containers/BlueprintArticle/index.d.ts +3 -0
  228. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
  229. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +12 -0
  230. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
  231. package/dist/types/src/containers/ChatCompanion/index.d.ts +3 -0
  232. package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
  233. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +18 -0
  234. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
  235. package/dist/types/src/containers/ChatContainer/index.d.ts +3 -0
  236. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
  237. package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +2 -3
  238. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
  239. package/dist/types/src/containers/ChatDialog/index.d.ts +3 -0
  240. package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
  241. package/dist/types/src/containers/Project/ProjectArticle.d.ts +7 -0
  242. package/dist/types/src/containers/Project/ProjectArticle.d.ts.map +1 -0
  243. package/dist/types/src/containers/Project/ProjectSettings.d.ts +6 -0
  244. package/dist/types/src/containers/Project/ProjectSettings.d.ts.map +1 -0
  245. package/dist/types/src/containers/Project/index.d.ts +7 -0
  246. package/dist/types/src/containers/Project/index.d.ts.map +1 -0
  247. package/dist/types/src/containers/Project/triggers.d.ts +6 -0
  248. package/dist/types/src/containers/Project/triggers.d.ts.map +1 -0
  249. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +6 -0
  250. package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +1 -0
  251. package/dist/types/src/containers/PromptArticle/index.d.ts +3 -0
  252. package/dist/types/src/containers/PromptArticle/index.d.ts.map +1 -0
  253. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +4 -0
  254. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -0
  255. package/dist/types/src/containers/TriggerStatus/index.d.ts +3 -0
  256. package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
  257. package/dist/types/src/containers/index.d.ts +10 -0
  258. package/dist/types/src/containers/index.d.ts.map +1 -0
  259. package/dist/types/src/hooks/index.d.ts +2 -1
  260. package/dist/types/src/hooks/index.d.ts.map +1 -1
  261. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +5 -5
  262. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  263. package/dist/types/src/hooks/useChatProcessor.d.ts +5 -2
  264. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  265. package/dist/types/src/hooks/useChatServices.d.ts +5 -5
  266. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  267. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  268. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  269. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  270. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  271. package/dist/types/src/hooks/useContextObjects.d.ts +7 -7
  272. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
  273. package/dist/types/src/hooks/useFilteredTypes.d.ts +3 -0
  274. package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -0
  275. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  276. package/dist/types/src/index.d.ts +3 -1
  277. package/dist/types/src/index.d.ts.map +1 -1
  278. package/dist/types/src/meta.d.ts +2 -2
  279. package/dist/types/src/meta.d.ts.map +1 -1
  280. package/dist/types/src/processor/index.d.ts +1 -0
  281. package/dist/types/src/processor/index.d.ts.map +1 -1
  282. package/dist/types/src/processor/processor.d.ts +24 -19
  283. package/dist/types/src/processor/processor.d.ts.map +1 -1
  284. package/dist/types/src/processor/update-name.d.ts +10 -0
  285. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  286. package/dist/types/src/queue-logger.d.ts.map +1 -1
  287. package/dist/types/src/testing/index.d.ts +0 -2
  288. package/dist/types/src/testing/index.d.ts.map +1 -1
  289. package/dist/types/src/testing/test-generator.d.ts +5 -4
  290. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  291. package/dist/types/src/testing/test-services.d.ts +2 -2
  292. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  293. package/dist/types/src/translations.d.ts +359 -27
  294. package/dist/types/src/translations.d.ts.map +1 -1
  295. package/dist/types/src/types/Assistant.d.ts +7 -29
  296. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  297. package/dist/types/src/types/AssistantAction.d.ts +86 -100
  298. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  299. package/dist/types/src/types/capabilities.d.ts +33 -0
  300. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  301. package/dist/types/src/types/events.d.ts +5 -0
  302. package/dist/types/src/types/events.d.ts.map +1 -0
  303. package/dist/types/src/types/index.d.ts +4 -1
  304. package/dist/types/src/types/index.d.ts.map +1 -1
  305. package/dist/types/src/types/service.d.ts +13 -215
  306. package/dist/types/src/types/service.d.ts.map +1 -1
  307. package/dist/types/tsconfig.tsbuildinfo +1 -1
  308. package/package.json +120 -112
  309. package/src/AssistantPlugin.tsx +117 -112
  310. package/src/blueprints/assistant/blueprint.conversations.json +1 -0
  311. package/src/blueprints/assistant/blueprint.test.ts +48 -0
  312. package/src/blueprints/assistant/blueprint.ts +27 -0
  313. package/src/blueprints/assistant/index.ts +5 -0
  314. package/src/{components/Toolbar → blueprints}/index.ts +1 -1
  315. package/src/capabilities/ai-service/ai-service.ts +30 -0
  316. package/src/capabilities/ai-service/index.ts +7 -0
  317. package/src/capabilities/app-graph-builder/app-graph-builder.ts +198 -0
  318. package/src/capabilities/app-graph-builder/index.ts +7 -0
  319. package/src/capabilities/blueprint-definition/blueprint-definition.ts +48 -0
  320. package/src/capabilities/blueprint-definition/index.ts +7 -0
  321. package/src/capabilities/edge-model-resolver/edge-model-resolver.ts +33 -0
  322. package/src/capabilities/edge-model-resolver/index.ts +7 -0
  323. package/src/capabilities/index.ts +10 -14
  324. package/src/capabilities/local-model-resolver/index.ts +7 -0
  325. package/src/capabilities/local-model-resolver/local-model-resolver.ts +38 -0
  326. package/src/capabilities/operation-resolver/index.ts +7 -0
  327. package/src/capabilities/operation-resolver/operation-resolver.ts +121 -0
  328. package/src/capabilities/react-surface/index.ts +7 -0
  329. package/src/capabilities/react-surface/react-surface.tsx +121 -0
  330. package/src/capabilities/repair/index.ts +7 -0
  331. package/src/capabilities/repair/repair.ts +69 -0
  332. package/src/capabilities/settings/index.ts +7 -0
  333. package/src/capabilities/settings/settings.ts +31 -0
  334. package/src/capabilities/state/index.ts +7 -0
  335. package/src/capabilities/state/state.ts +27 -0
  336. package/src/capabilities/toolkit/index.ts +7 -0
  337. package/src/capabilities/toolkit/toolkit.ts +15 -0
  338. package/src/components/Chat/Chat.tsx +229 -153
  339. package/src/components/Chat/events.ts +7 -1
  340. package/src/components/ChatProgress/ChatProgress.tsx +6 -20
  341. package/src/components/ChatPrompt/ChatActions.tsx +12 -6
  342. package/src/components/ChatPrompt/ChatOptions.tsx +119 -86
  343. package/src/components/ChatPrompt/ChatReferences.tsx +19 -10
  344. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
  345. package/src/components/ChatThread/ChatThread.stories.tsx +59 -38
  346. package/src/components/ChatThread/ChatThread.tsx +40 -37
  347. package/src/components/ChatThread/Link.tsx +4 -4
  348. package/src/components/ChatThread/registry.tsx +72 -49
  349. package/src/components/ChatThread/sync.test.ts +35 -17
  350. package/src/components/ChatThread/sync.ts +61 -14
  351. package/src/components/ChatThread/testing/thread.md +37 -0
  352. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +17 -7
  353. package/src/components/TemplateEditor/TemplateEditor.tsx +25 -13
  354. package/src/components/TemplateEditor/TemplateForm.stories.tsx +17 -9
  355. package/src/components/TemplateEditor/TemplateForm.tsx +80 -34
  356. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +274 -0
  357. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  358. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  359. package/src/components/ToolBlock/ToolBlock.tsx +39 -48
  360. package/src/components/Toolbox/Toolbox.stories.tsx +11 -12
  361. package/src/components/Toolbox/Toolbox.tsx +52 -54
  362. package/src/components/Typewriter/AssistantToolbar.tsx +161 -0
  363. package/src/components/Typewriter/Typewriter.stories.tsx +86 -0
  364. package/src/components/Typewriter/Typewriter.tsx +54 -0
  365. package/src/components/Typewriter/assistant-extension.tsx +142 -0
  366. package/src/components/Typewriter/index.ts +5 -0
  367. package/src/components/index.ts +0 -12
  368. package/src/{components → containers}/AssistantSettings/AssistantSettings.tsx +28 -20
  369. package/src/containers/AssistantSettings/index.ts +7 -0
  370. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +30 -0
  371. package/src/containers/BlueprintArticle/index.ts +7 -0
  372. package/src/containers/ChatCompanion/ChatCompanion.tsx +225 -0
  373. package/src/containers/ChatCompanion/index.ts +7 -0
  374. package/src/containers/ChatContainer/ChatContainer.tsx +69 -0
  375. package/src/containers/ChatContainer/index.ts +7 -0
  376. package/src/{components → containers/ChatDialog}/ChatDialog.tsx +18 -14
  377. package/src/containers/ChatDialog/index.ts +7 -0
  378. package/src/containers/Project/ProjectArticle.tsx +117 -0
  379. package/src/containers/Project/ProjectSettings.tsx +118 -0
  380. package/src/containers/Project/index.ts +16 -0
  381. package/src/containers/Project/triggers.ts +131 -0
  382. package/src/containers/PromptArticle/PromptArticle.tsx +59 -0
  383. package/src/containers/PromptArticle/index.ts +7 -0
  384. package/src/containers/TriggerStatus/TriggerStatus.tsx +150 -0
  385. package/src/containers/TriggerStatus/index.ts +7 -0
  386. package/src/containers/index.ts +15 -0
  387. package/src/hooks/index.ts +2 -1
  388. package/src/hooks/useBlueprintRegistry.ts +35 -21
  389. package/src/hooks/useChatProcessor.ts +26 -14
  390. package/src/hooks/useChatServices.ts +16 -18
  391. package/src/hooks/useChatToolbarActions.ts +122 -0
  392. package/src/hooks/useContextBinder.ts +21 -7
  393. package/src/hooks/useContextObjects.ts +13 -25
  394. package/src/hooks/useFilteredTypes.ts +37 -0
  395. package/src/hooks/useReferencesProvider.ts +5 -8
  396. package/src/index.ts +3 -1
  397. package/src/meta.ts +8 -3
  398. package/src/processor/index.ts +1 -0
  399. package/src/processor/presets.ts +1 -1
  400. package/src/processor/processor.test.ts +19 -27
  401. package/src/processor/processor.ts +83 -90
  402. package/src/processor/update-name.ts +58 -0
  403. package/src/queue-logger.ts +8 -9
  404. package/src/testing/index.ts +0 -2
  405. package/src/testing/test-generator.ts +14 -13
  406. package/src/testing/test-sequence.ts +3 -3
  407. package/src/testing/test-services.ts +10 -14
  408. package/src/translations.ts +52 -19
  409. package/src/types/Assistant.ts +4 -37
  410. package/src/types/AssistantAction.ts +67 -53
  411. package/src/types/capabilities.ts +27 -0
  412. package/src/types/events.ts +11 -0
  413. package/src/types/index.ts +6 -1
  414. package/src/types/service.ts +26 -15
  415. package/dist/lib/browser/BlueprintContainer-TO35YXHT.mjs +0 -29
  416. package/dist/lib/browser/BlueprintContainer-TO35YXHT.mjs.map +0 -7
  417. package/dist/lib/browser/ChatCompanion-ZIKNUUSU.mjs +0 -127
  418. package/dist/lib/browser/ChatCompanion-ZIKNUUSU.mjs.map +0 -7
  419. package/dist/lib/browser/ChatContainer-MA5BVDGH.mjs +0 -73
  420. package/dist/lib/browser/ChatContainer-MA5BVDGH.mjs.map +0 -7
  421. package/dist/lib/browser/ChatDialog-7OXLIWZI.mjs +0 -86
  422. package/dist/lib/browser/ChatDialog-7OXLIWZI.mjs.map +0 -7
  423. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs +0 -150
  424. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs.map +0 -7
  425. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +0 -19
  426. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +0 -7
  427. package/dist/lib/browser/app-graph-builder-VKFRYY2N.mjs +0 -154
  428. package/dist/lib/browser/app-graph-builder-VKFRYY2N.mjs.map +0 -7
  429. package/dist/lib/browser/blueprint-definition-NSJARW5U.mjs +0 -12
  430. package/dist/lib/browser/chunk-2CE2KPKZ.mjs +0 -175
  431. package/dist/lib/browser/chunk-2CE2KPKZ.mjs.map +0 -7
  432. package/dist/lib/browser/chunk-43I2LR6O.mjs +0 -216
  433. package/dist/lib/browser/chunk-43I2LR6O.mjs.map +0 -7
  434. package/dist/lib/browser/chunk-5EGXHCAZ.mjs +0 -16
  435. package/dist/lib/browser/chunk-5EGXHCAZ.mjs.map +0 -7
  436. package/dist/lib/browser/chunk-5RICKAMN.mjs +0 -18
  437. package/dist/lib/browser/chunk-5RICKAMN.mjs.map +0 -7
  438. package/dist/lib/browser/chunk-B2RCJXEO.mjs +0 -202
  439. package/dist/lib/browser/chunk-B2RCJXEO.mjs.map +0 -7
  440. package/dist/lib/browser/chunk-BRJMNZOS.mjs +0 -169
  441. package/dist/lib/browser/chunk-BRJMNZOS.mjs.map +0 -7
  442. package/dist/lib/browser/chunk-P5P7QXBS.mjs +0 -296
  443. package/dist/lib/browser/chunk-P5P7QXBS.mjs.map +0 -7
  444. package/dist/lib/browser/chunk-UDH4MR7H.mjs +0 -1744
  445. package/dist/lib/browser/chunk-UDH4MR7H.mjs.map +0 -7
  446. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +0 -18
  447. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +0 -7
  448. package/dist/lib/browser/intent-resolver-5LB25ZRN.mjs +0 -112
  449. package/dist/lib/browser/intent-resolver-5LB25ZRN.mjs.map +0 -7
  450. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +0 -17
  451. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +0 -7
  452. package/dist/lib/browser/react-surface-WQZXU624.mjs +0 -107
  453. package/dist/lib/browser/react-surface-WQZXU624.mjs.map +0 -7
  454. package/dist/lib/browser/settings-4B2NA4CE.mjs +0 -23
  455. package/dist/lib/browser/settings-4B2NA4CE.mjs.map +0 -7
  456. package/dist/lib/browser/state-LXTS54DI.mjs +0 -21
  457. package/dist/lib/browser/state-LXTS54DI.mjs.map +0 -7
  458. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs +0 -199
  459. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs.map +0 -7
  460. package/dist/lib/node-esm/BlueprintContainer-J664LTU3.mjs +0 -30
  461. package/dist/lib/node-esm/BlueprintContainer-J664LTU3.mjs.map +0 -7
  462. package/dist/lib/node-esm/ChatCompanion-YDXJIVCF.mjs +0 -128
  463. package/dist/lib/node-esm/ChatCompanion-YDXJIVCF.mjs.map +0 -7
  464. package/dist/lib/node-esm/ChatContainer-WLTOQLHH.mjs +0 -74
  465. package/dist/lib/node-esm/ChatContainer-WLTOQLHH.mjs.map +0 -7
  466. package/dist/lib/node-esm/ChatDialog-ADKF62SY.mjs +0 -87
  467. package/dist/lib/node-esm/ChatDialog-ADKF62SY.mjs.map +0 -7
  468. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs +0 -151
  469. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs.map +0 -7
  470. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +0 -20
  471. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +0 -7
  472. package/dist/lib/node-esm/app-graph-builder-K6AYO4YM.mjs +0 -155
  473. package/dist/lib/node-esm/app-graph-builder-K6AYO4YM.mjs.map +0 -7
  474. package/dist/lib/node-esm/blueprint-definition-WD2IVMAI.mjs +0 -13
  475. package/dist/lib/node-esm/chunk-73ABYRYX.mjs.map +0 -7
  476. package/dist/lib/node-esm/chunk-DBDKOC3I.mjs +0 -203
  477. package/dist/lib/node-esm/chunk-DBDKOC3I.mjs.map +0 -7
  478. package/dist/lib/node-esm/chunk-DSE2IILK.mjs +0 -217
  479. package/dist/lib/node-esm/chunk-DSE2IILK.mjs.map +0 -7
  480. package/dist/lib/node-esm/chunk-I7BZMIAG.mjs +0 -170
  481. package/dist/lib/node-esm/chunk-I7BZMIAG.mjs.map +0 -7
  482. package/dist/lib/node-esm/chunk-TBQOICXZ.mjs +0 -297
  483. package/dist/lib/node-esm/chunk-TBQOICXZ.mjs.map +0 -7
  484. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs +0 -177
  485. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs.map +0 -7
  486. package/dist/lib/node-esm/chunk-UPPSDTOJ.mjs +0 -1745
  487. package/dist/lib/node-esm/chunk-UPPSDTOJ.mjs.map +0 -7
  488. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs +0 -17
  489. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs.map +0 -7
  490. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +0 -19
  491. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +0 -7
  492. package/dist/lib/node-esm/intent-resolver-I64MNI4C.mjs +0 -113
  493. package/dist/lib/node-esm/intent-resolver-I64MNI4C.mjs.map +0 -7
  494. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +0 -18
  495. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +0 -7
  496. package/dist/lib/node-esm/react-surface-TVVVRIR3.mjs +0 -108
  497. package/dist/lib/node-esm/react-surface-TVVVRIR3.mjs.map +0 -7
  498. package/dist/lib/node-esm/settings-7Y3CRASE.mjs +0 -24
  499. package/dist/lib/node-esm/settings-7Y3CRASE.mjs.map +0 -7
  500. package/dist/lib/node-esm/state-BO6GUFLB.mjs +0 -22
  501. package/dist/lib/node-esm/state-BO6GUFLB.mjs.map +0 -7
  502. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs +0 -200
  503. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs.map +0 -7
  504. package/dist/types/src/capabilities/ai-service.d.ts +0 -4
  505. package/dist/types/src/capabilities/ai-service.d.ts.map +0 -1
  506. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  507. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  508. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -7
  509. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  510. package/dist/types/src/capabilities/capabilities.d.ts +0 -11
  511. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  512. package/dist/types/src/capabilities/edge-model-resolver.d.ts +0 -4
  513. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +0 -1
  514. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  515. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  516. package/dist/types/src/capabilities/local-model-resolver.d.ts +0 -10
  517. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +0 -1
  518. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  519. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  520. package/dist/types/src/capabilities/settings.d.ts +0 -4
  521. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  522. package/dist/types/src/capabilities/state.d.ts +0 -4
  523. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  524. package/dist/types/src/capabilities/toolkit.d.ts +0 -4
  525. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  526. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +0 -6
  527. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +0 -1
  528. package/dist/types/src/components/AssistantSettings/index.d.ts +0 -2
  529. package/dist/types/src/components/AssistantSettings/index.d.ts.map +0 -1
  530. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  531. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  532. package/dist/types/src/components/ChatCompanion.d.ts +0 -13
  533. package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
  534. package/dist/types/src/components/ChatContainer.d.ts +0 -11
  535. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  536. package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
  537. package/dist/types/src/components/ChatThread/reducers.d.ts +0 -40
  538. package/dist/types/src/components/ChatThread/reducers.d.ts.map +0 -1
  539. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  540. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  541. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  542. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  543. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  544. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  545. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -269
  546. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  547. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  548. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  549. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  550. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -5
  551. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  552. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  553. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  554. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  555. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  556. package/dist/types/src/events.d.ts +0 -4
  557. package/dist/types/src/events.d.ts.map +0 -1
  558. package/dist/types/src/functions/analysis.d.ts +0 -5
  559. package/dist/types/src/functions/analysis.d.ts.map +0 -1
  560. package/dist/types/src/functions/index.d.ts +0 -4
  561. package/dist/types/src/functions/index.d.ts.map +0 -1
  562. package/dist/types/src/functions/list.d.ts +0 -10
  563. package/dist/types/src/functions/list.d.ts.map +0 -1
  564. package/dist/types/src/functions/load.d.ts +0 -8
  565. package/dist/types/src/functions/load.d.ts.map +0 -1
  566. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  567. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  568. package/dist/types/src/stories/Chat.stories.d.ts +0 -32
  569. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  570. package/dist/types/src/stories/QueryEditor.stories.d.ts +0 -7
  571. package/dist/types/src/stories/QueryEditor.stories.d.ts.map +0 -1
  572. package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -4
  573. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
  574. package/dist/types/src/stories/components/ChatContainer.d.ts +0 -4
  575. package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
  576. package/dist/types/src/stories/components/ChessContainer.d.ts +0 -4
  577. package/dist/types/src/stories/components/ChessContainer.d.ts.map +0 -1
  578. package/dist/types/src/stories/components/CommentsContainer.d.ts +0 -4
  579. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +0 -1
  580. package/dist/types/src/stories/components/DebugCard.d.ts +0 -8
  581. package/dist/types/src/stories/components/DebugCard.d.ts.map +0 -1
  582. package/dist/types/src/stories/components/ExecutionGraphContainer.d.ts +0 -7
  583. package/dist/types/src/stories/components/ExecutionGraphContainer.d.ts.map +0 -1
  584. package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
  585. package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
  586. package/dist/types/src/stories/components/InvocationsContainer.d.ts +0 -4
  587. package/dist/types/src/stories/components/InvocationsContainer.d.ts.map +0 -1
  588. package/dist/types/src/stories/components/MessageContainer.d.ts +0 -4
  589. package/dist/types/src/stories/components/MessageContainer.d.ts.map +0 -1
  590. package/dist/types/src/stories/components/ProjectContainer.d.ts +0 -4
  591. package/dist/types/src/stories/components/ProjectContainer.d.ts.map +0 -1
  592. package/dist/types/src/stories/components/PromptContainer.d.ts +0 -6
  593. package/dist/types/src/stories/components/PromptContainer.d.ts.map +0 -1
  594. package/dist/types/src/stories/components/ResearchInputStack.d.ts +0 -4
  595. package/dist/types/src/stories/components/ResearchInputStack.d.ts.map +0 -1
  596. package/dist/types/src/stories/components/ResearchOutputStack.d.ts +0 -4
  597. package/dist/types/src/stories/components/ResearchOutputStack.d.ts.map +0 -1
  598. package/dist/types/src/stories/components/ScriptContainer.d.ts +0 -4
  599. package/dist/types/src/stories/components/ScriptContainer.d.ts.map +0 -1
  600. package/dist/types/src/stories/components/TasksContainer.d.ts +0 -4
  601. package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
  602. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +0 -3
  603. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +0 -1
  604. package/dist/types/src/stories/components/TriggersContainer.d.ts +0 -3
  605. package/dist/types/src/stories/components/TriggersContainer.d.ts.map +0 -1
  606. package/dist/types/src/stories/components/index.d.ts +0 -18
  607. package/dist/types/src/stories/components/index.d.ts.map +0 -1
  608. package/dist/types/src/stories/components/types.d.ts +0 -7
  609. package/dist/types/src/stories/components/types.d.ts.map +0 -1
  610. package/dist/types/src/stories/testing/data.d.ts +0 -9
  611. package/dist/types/src/stories/testing/data.d.ts.map +0 -1
  612. package/dist/types/src/stories/testing/index.d.ts +0 -3
  613. package/dist/types/src/stories/testing/index.d.ts.map +0 -1
  614. package/dist/types/src/stories/testing/schema.d.ts +0 -7
  615. package/dist/types/src/stories/testing/schema.d.ts.map +0 -1
  616. package/dist/types/src/stories/testing/testing.d.ts +0 -51
  617. package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
  618. package/dist/types/src/testing/test-data.d.ts +0 -14
  619. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  620. package/dist/types/src/testing/test-functions.d.ts +0 -6
  621. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  622. package/src/capabilities/ai-service.ts +0 -27
  623. package/src/capabilities/app-graph-builder.ts +0 -163
  624. package/src/capabilities/blueprint-definition.ts +0 -64
  625. package/src/capabilities/capabilities.ts +0 -18
  626. package/src/capabilities/edge-model-resolver.ts +0 -25
  627. package/src/capabilities/intent-resolver.ts +0 -94
  628. package/src/capabilities/local-model-resolver.ts +0 -30
  629. package/src/capabilities/react-surface.tsx +0 -91
  630. package/src/capabilities/settings.ts +0 -19
  631. package/src/capabilities/state.ts +0 -20
  632. package/src/capabilities/toolkit.ts +0 -168
  633. package/src/components/AssistantSettings/index.ts +0 -5
  634. package/src/components/BlueprintContainer.tsx +0 -24
  635. package/src/components/ChatCompanion.tsx +0 -114
  636. package/src/components/ChatContainer.tsx +0 -51
  637. package/src/components/ChatThread/reducers.ts +0 -151
  638. package/src/components/PromptSettings.tsx +0 -90
  639. package/src/components/SequenceContainer.tsx +0 -131
  640. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -35
  641. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  642. package/src/components/SequenceEditor/index.ts +0 -5
  643. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  644. package/src/components/Toolbar/Toolbar.tsx +0 -21
  645. package/src/components/Toolbar/useChatToolbarActions.ts +0 -126
  646. package/src/events.ts +0 -11
  647. package/src/functions/analysis.ts +0 -22
  648. package/src/functions/index.ts +0 -7
  649. package/src/functions/list.ts +0 -48
  650. package/src/functions/load.ts +0 -46
  651. package/src/hooks/useItemTypes.ts +0 -37
  652. package/src/stories/Chat.stories.tsx +0 -882
  653. package/src/stories/QueryEditor.stories.tsx +0 -114
  654. package/src/stories/components/BlueprintContainer.tsx +0 -34
  655. package/src/stories/components/ChatContainer.tsx +0 -74
  656. package/src/stories/components/ChessContainer.tsx +0 -17
  657. package/src/stories/components/CommentsContainer.tsx +0 -25
  658. package/src/stories/components/DebugCard.tsx +0 -61
  659. package/src/stories/components/ExecutionGraphContainer.tsx +0 -30
  660. package/src/stories/components/GraphContainer.tsx +0 -106
  661. package/src/stories/components/InvocationsContainer.tsx +0 -17
  662. package/src/stories/components/MessageContainer.tsx +0 -22
  663. package/src/stories/components/ProjectContainer.tsx +0 -17
  664. package/src/stories/components/PromptContainer.tsx +0 -52
  665. package/src/stories/components/ResearchInputStack.tsx +0 -30
  666. package/src/stories/components/ResearchOutputStack.tsx +0 -29
  667. package/src/stories/components/ScriptContainer.tsx +0 -28
  668. package/src/stories/components/TasksContainer.tsx +0 -47
  669. package/src/stories/components/TokenManagerContainer.tsx +0 -14
  670. package/src/stories/components/TriggersContainer.tsx +0 -12
  671. package/src/stories/components/index.ts +0 -22
  672. package/src/stories/components/types.ts +0 -11
  673. package/src/stories/testing/data.ts +0 -135
  674. package/src/stories/testing/index.ts +0 -6
  675. package/src/stories/testing/schema.ts +0 -17
  676. package/src/stories/testing/testing.tsx +0 -291
  677. package/src/testing/test-data.ts +0 -248
  678. package/src/testing/test-functions.ts +0 -16
  679. /package/dist/lib/browser/{blueprint-definition-NSJARW5U.mjs.map → ChatContainer-ZGRSZ5EU.mjs.map} +0 -0
  680. /package/dist/lib/{node-esm/blueprint-definition-WD2IVMAI.mjs.map → browser/blueprints/index.mjs.map} +0 -0
  681. /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/hooks/useBlueprintRegistry.ts", "../../../src/hooks/useChatProcessor.ts", "../../../src/hooks/useChatServices.ts", "../../../src/hooks/useChatToolbarActions.ts", "../../../src/components/Chat/Chat.tsx", "../../../src/hooks/useContextBinder.ts", "../../../src/hooks/useContextObjects.ts", "../../../src/hooks/useFilteredTypes.ts", "../../../src/hooks/useFlush.ts", "../../../src/hooks/useOnline.ts", "../../../src/hooks/usePresets.ts", "../../../src/hooks/useReferencesProvider.ts", "../../../src/components/ChatPrompt/ChatActions.tsx", "../../../src/components/ChatPrompt/ChatOptions.tsx", "../../../src/components/ChatPrompt/ChatPresets.tsx", "../../../src/components/ChatPrompt/ChatReferences.tsx", "../../../src/components/ChatPrompt/ChatStatusIndicator.tsx", "../../../src/components/ChatThread/ChatThread.tsx", "../../../src/components/ChatThread/registry.tsx", "../../../src/components/ToolBlock/ToolBlock.tsx", "../../../src/components/ChatThread/sync.ts", "../../../src/components/TemplateEditor/TemplateEditor.tsx", "../../../src/components/TemplateEditor/extensions/handlebars-extension.ts", "../../../src/components/TemplateEditor/extensions/xml-extension.ts", "../../../src/components/Toolbox/Toolbox.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type Database, Filter, Obj, Ref } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { distinctBy } from '@dxos/util';\n\n/**\n * Provide a registry of blueprints from plugins.\n */\n// TODO(burdon): Reconcile with eventual public registry.\nexport const useBlueprintRegistry = () => {\n const blueprintDefinitions = useCapabilities(AppCapabilities.BlueprintDefinition);\n return useMemo(\n () => new Blueprint.Registry(blueprintDefinitions.map((blueprint) => blueprint.make())),\n [blueprintDefinitions],\n );\n};\n\nexport const useBlueprints = ({\n blueprintRegistry,\n db,\n}: {\n blueprintRegistry?: Blueprint.Registry;\n db?: Database.Database;\n}) => {\n const staticBlueprints = useMemo(() => blueprintRegistry?.query() ?? [], [blueprintRegistry]);\n const spaceBlueprints = useQuery(db, Filter.type(Blueprint.Blueprint));\n return useMemo(() => {\n const blueprints = distinctBy([...staticBlueprints, ...spaceBlueprints], (b) => b.key);\n blueprints.sort(({ name: a }, { name: b }) => a.localeCompare(b));\n return blueprints;\n }, [staticBlueprints, spaceBlueprints]);\n};\n\n/**\n * Create reactive map of active blueprints (by key).\n */\nexport const useActiveBlueprints = ({ context }: { context?: AiContextBinder }) => {\n const [active, setActive] = useState<Map<string, Blueprint.Blueprint>>(new Map());\n\n useEffect(() => {\n if (!context) {\n setActive(new Map());\n return;\n }\n\n const updateActive = () => {\n const blueprints = context.getBlueprints();\n setActive(new Map(blueprints.map((blueprint) => [blueprint.key, blueprint])));\n };\n\n // Set initial value.\n updateActive();\n\n // Subscribe to changes.\n return context.subscribeBlueprints(updateActive);\n }, [context]);\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useBlueprintHandlers = ({\n db,\n context,\n blueprintRegistry,\n}: {\n db: Database.Database;\n context?: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n}) => {\n const onUpdateBlueprint = useCallback(\n async (key: string, checked: boolean) => {\n if (!context || !blueprintRegistry) {\n return;\n }\n\n // Find existing cloned blueprint.\n const objects = await db.query(Filter.type(Blueprint.Blueprint)).run();\n let storedBlueprint = objects.find((blueprint) => blueprint.key === key);\n if (checked) {\n if (!storedBlueprint) {\n const blueprint = blueprintRegistry.getByKey(key);\n if (!blueprint) {\n return;\n }\n\n // NOTE: Possible race condition with other peers.\n storedBlueprint = db.add(Obj.clone(blueprint));\n }\n await context.bind({ blueprints: [Ref.make(storedBlueprint)] });\n } else if (storedBlueprint) {\n await context.unbind({ blueprints: [Ref.make(storedBlueprint)] });\n }\n },\n [db, context, blueprintRegistry],\n );\n\n return { onUpdateBlueprint };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport type * as Runtime from 'effect/Runtime';\nimport { useContext, useMemo, useState } from 'react';\n\nimport { AiConversation } from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { log } from '@dxos/log';\nimport { type Queue, type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { AiChatProcessor, type AiChatServices, type AiServicePreset } from '../processor';\nimport { type Assistant } from '../types';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Chat.Chat;\n preset?: AiServicePreset;\n services?: () => Promise<Runtime.Runtime<AiChatServices>>;\n blueprintRegistry?: Blueprint.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n services,\n blueprintRegistry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n // Create conversation from chat queue.\n const [conversation, setConversation] = useState<AiConversation>();\n useAsyncEffect(async () => {\n if (!space || !chat) {\n return;\n }\n\n // NOTE: Passing in space and getting queue from space rather than resolving the reference.\n // This is because if the chat isn't in a space yet, the reference will not be resolvable.\n const queue = space.queues.get(chat.queue.dxn);\n const conversation = new AiConversation({\n queue: queue as Queue<any>,\n registry: observableRegistry as Registry.Registry,\n });\n await conversation.open();\n setConversation(conversation);\n return () => {\n void conversation.close();\n setConversation(undefined);\n };\n }, [space, chat?.queue.dxn.toString()]);\n\n // Create processor.\n const processor = useMemo(() => {\n if (!services || !conversation) {\n return undefined;\n }\n\n log('creating processor', { preset, model: preset?.model, settings });\n return new AiChatProcessor(conversation, services, {\n observableRegistry,\n blueprintRegistry,\n model: preset?.model,\n });\n }, [services, conversation, blueprintRegistry, preset]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport type * as Runtime from 'effect/Runtime';\nimport { useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { type Key } from '@dxos/echo';\nimport { TracingService } from '@dxos/functions';\nimport { TracingServiceExt } from '@dxos/functions-runtime';\nimport { AutomationCapabilities } from '@dxos/plugin-automation';\nimport { useClient } from '@dxos/react-client';\n\nimport { type AiChatServices } from '../processor';\n\nexport type UseChatServicesProps = {\n id?: Key.SpaceId;\n chat?: Chat.Chat;\n};\n\n/**\n * Construct service layer.\n */\n// TODO(dmaretskyi): Better return type.\nexport const useChatServices = ({\n id,\n chat,\n}: UseChatServicesProps): (() => Promise<Runtime.Runtime<AiChatServices>>) | undefined => {\n const client = useClient();\n id ??= client.spaces.default.id;\n\n const runtimeResolver = useCapability(AutomationCapabilities.ComputeRuntime);\n return useMemo(() => {\n const runtime = runtimeResolver.getRuntime(id);\n return () =>\n runtime.runPromise(\n Effect.runtime<AiChatServices>().pipe(\n Effect.provide(\n chat?.traceQueue?.target ? TracingServiceExt.layerQueue(chat.traceQueue?.target) : TracingService.layerNoop,\n ),\n ),\n );\n }, [id, chat?.traceQueue?.target]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { MenuBuilder, useMenuActions } from '@dxos/react-ui-menu';\n\nimport { useChatContext } from '../components';\nimport { meta } from '../meta';\nimport { AssistantOperation } from '../types';\n\nexport type ChatToolbarActionsProps = {\n chat?: Chat.Chat;\n companionTo?: Obj.Unknown;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo }: ChatToolbarActionsProps) => {\n const { invoke } = useOperationInvoker();\n const { db } = useChatContext('useChatToolbarActions');\n const query = companionTo\n ? Query.select(Filter.id(companionTo.id)).targetOf(Chat.CompanionTo).source()\n : Query.select(Filter.nothing());\n\n // TODO(wittjosiah): Query in react vs query in atom?\n const chats = useQuery(db, query);\n\n // Create stable reference for dependency array to avoid circular reference issues.\n return useMenuActions(\n useMemo(() => {\n return Atom.make(() => {\n const builder = MenuBuilder.make()\n .root({\n label: ['chat toolbar title', { ns: meta.id }],\n })\n .action(\n 'new',\n {\n label: ['new thread button', { ns: meta.id }],\n icon: 'ph--plus--regular',\n type: 'new',\n disabled: !companionTo,\n },\n () => {\n invariant(companionTo);\n return invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat: undefined,\n }).pipe(runAndForwardErrors);\n },\n )\n .action(\n 'rename',\n {\n label: ['rename thread button', { ns: meta.id }],\n icon: 'ph--magic-wand--regular',\n type: 'rename',\n disabled: !chat,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.UpdateChatName, { chat });\n }).pipe(runAndForwardErrors),\n )\n .action(\n 'branch',\n {\n label: ['button branch thread', { ns: meta.id }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: true,\n },\n () => {},\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat history label', { ns: meta.id }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object name placeholder', { ns: Chat.Chat.typename }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }).pipe(runAndForwardErrors),\n );\n });\n },\n );\n }\n\n return builder.build();\n });\n }, [chats.length, db?.spaceId, companionTo?.id, chat?.id, invoke]),\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport * as Array from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport React, {\n type ComponentPropsWithoutRef,\n type PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { type Chat as ChatModule } from '@dxos/assistant-toolkit';\nimport { Event } from '@dxos/async';\nimport { type Database, Filter, Obj } from '@dxos/echo';\nimport { useVoiceInput } from '@dxos/plugin-transcription';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Input, type ThemedClassName, useDynamicRef, useTranslation } from '@dxos/react-ui';\nimport { ChatEditor, type ChatEditorController, type ChatEditorProps } from '@dxos/react-ui-chat';\nimport { type MarkdownStreamController } from '@dxos/react-ui-components';\nimport { Menu } from '@dxos/react-ui-menu';\nimport { Message } from '@dxos/types';\nimport { mx } from '@dxos/ui-theme';\nimport { isTruthy } from '@dxos/util';\n\nimport { useChatToolbarActions } from '../../hooks';\nimport { meta } from '../../meta';\nimport { type AiChatProcessor } from '../../processor';\nimport {\n ChatActions,\n type ChatActionsProps,\n ChatOptions,\n type ChatPresetsProps,\n ChatReferences,\n ChatStatusIndicator,\n} from '../ChatPrompt';\nimport { ChatThread as NaturalChatThread, type ChatThreadProps as NaturalChatThreadProps } from '../ChatThread';\n\nimport { type ChatEvent } from './events';\n\n//\n// Context\n// NOTE: The context should not be exported. It is only used internally.\n// Components outside of this Radix-style group shuld define their own APIs.\n//\n\ntype ChatContextValue = {\n debug?: boolean;\n event: Event<ChatEvent>;\n db?: Database.Database;\n chat?: ChatModule.Chat;\n messages: Message.Message[];\n processor: AiChatProcessor;\n};\n\nexport const [ChatContextProvider, useChatContext] = createContext<ChatContextValue>('Chat');\n\n//\n// Root\n//\n\ntype ChatRootProps = PropsWithChildren<\n Pick<ChatContextValue, 'db' | 'chat' | 'processor'> & {\n onEvent?: (event: ChatEvent) => void;\n }\n>;\n\nconst ChatRoot = ({ children, chat, processor, onEvent, ...props }: ChatRootProps) => {\n const [debug, setDebug] = useState(false);\n const pending = useAtomValue(processor.messages);\n const streaming = useAtomValue(processor.streaming);\n const lastPrompt = useRef<string | undefined>(undefined);\n\n // Messages.\n const storedMessages = useQuery(chat?.queue?.target, Filter.type(Message.Message));\n const messages = useMemo(() => {\n return Array.dedupeWith([...storedMessages, ...pending], ({ id: a }, { id: b }) => a === b);\n }, [storedMessages, pending]);\n\n // Events.\n const event = useMemo(() => new Event<ChatEvent>(), []);\n useEffect(() => {\n return event.on((ev) => {\n switch (ev.type) {\n case 'toggle-debug': {\n setDebug((debug) => !debug);\n\n // Dump state to console.\n queueMicrotask(async () => {\n const objects = processor.context.getObjects();\n const blueprints = processor.context.getBlueprints();\n const tools = await processor.getTools();\n const system = await processor.getSystemPrompt();\n // eslint-disable-next-line no-console\n console.log('Chat processor state:', { objects, blueprints });\n // eslint-disable-next-line no-console\n console.log(`\n ==== System Prompt ====\n ${system}\n ==== Tools ====\n ${Object.values(tools)\n .map((tool) => JSON.stringify(tool, null, 2))\n .join('\\n')}\n `);\n });\n break;\n }\n\n case 'submit': {\n const text = ev.text.trim();\n if (!streaming && text.length) {\n lastPrompt.current = ev.text;\n void processor.request({ message: text });\n }\n break;\n }\n\n case 'retry': {\n if (!streaming) {\n void processor.retry();\n }\n break;\n }\n\n case 'cancel': {\n if (streaming) {\n void processor.cancel();\n if (lastPrompt.current) {\n event.emit({ type: 'update-prompt', text: lastPrompt.current });\n }\n }\n break;\n }\n }\n\n onEvent?.(ev);\n });\n }, [event, processor, streaming, onEvent]);\n\n const db = props.db ?? (chat && Obj.getDatabase(chat));\n\n return (\n <ChatContextProvider\n debug={debug}\n event={event}\n db={db}\n chat={chat}\n messages={messages}\n processor={processor}\n {...props}\n >\n {children}\n </ChatContextProvider>\n );\n};\n\nChatRoot.displayName = 'Chat.Root';\n\n//\n// Viewport\n//\n\nconst CHAT_VIEWPORT_NAME = 'Chat.Viewport';\n\ntype ChatViewportProps = ThemedClassName<PropsWithChildren<ComponentPropsWithoutRef<'div'>>>;\n\nconst ChatViewport = ({ classNames, children, ...props }: ChatViewportProps) => {\n return (\n <div role='none' {...props} className={mx('flex flex-col h-full w-full', classNames)}>\n {children}\n </div>\n );\n};\n\nChatViewport.displayName = CHAT_VIEWPORT_NAME;\n\n//\n// Thread\n//\n\nconst CHAT_THREAD_NAME = 'Chat.Thread';\n\ntype ChatThreadProps = Omit<NaturalChatThreadProps, 'identity' | 'messages' | 'tools'>;\n\nconst ChatThread = (props: ChatThreadProps) => {\n const { debug, event, messages, processor } = useChatContext(CHAT_THREAD_NAME);\n const identity = useIdentity();\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n\n const controllerRef = useRef<MarkdownStreamController | null>(null);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'submit':\n case 'scroll-to-bottom':\n controllerRef.current?.scrollToBottom();\n break;\n case 'nav-previous':\n controllerRef.current?.navigatePrevious();\n break;\n case 'nav-next':\n controllerRef.current?.navigateNext();\n break;\n }\n });\n }, [event]);\n\n const handleEvent = useCallback<NonNullable<NaturalChatThreadProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n if (!identity) {\n return null;\n }\n\n return (\n <NaturalChatThread\n {...props}\n identity={identity}\n messages={messages}\n error={error}\n debug={debug}\n onEvent={handleEvent}\n ref={controllerRef}\n />\n );\n};\n\nChatThread.displayName = CHAT_THREAD_NAME;\n\n//\n// Prompt\n//\n\nconst CHAT_PROMPT_NAME = 'Chat.Prompt';\n\ntype ChatPromptProps = ThemedClassName<\n {\n outline?: boolean;\n settings?: boolean;\n } & Pick<ChatEditorProps, 'placeholder'> &\n Omit<ChatPresetsProps, 'onChange'> & {\n expandable?: boolean;\n online?: boolean;\n onOnlineChange?: (online: boolean) => void;\n onPresetChange?: ChatPresetsProps['onChange'];\n }\n>;\n\nconst ChatPrompt = ({\n classNames,\n outline,\n settings = true,\n placeholder,\n expandable,\n online,\n presets,\n preset,\n onPresetChange,\n onOnlineChange,\n}: ChatPromptProps) => {\n const { t } = useTranslation(meta.id);\n const { db, processor, event } = useChatContext(CHAT_PROMPT_NAME);\n\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n const streaming = useAtomValue(processor.streaming);\n const active = useAtomValue(processor.active);\n const activeRef = useDynamicRef(active);\n\n const editorRef = useRef<ChatEditorController>(null);\n const [recordingState, setRecordingState] = useState(false);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'update-prompt':\n if (!editorRef.current?.getText()?.length) {\n editorRef.current?.setText(event.text);\n editorRef.current?.focus();\n }\n break;\n case 'record-start':\n setRecordingState(true);\n break;\n case 'record-stop':\n setRecordingState(false);\n break;\n }\n });\n }, [event]);\n\n // TODO(burdon): Configure capability in TranscriptionPlugin.\n const { recording } = useVoiceInput({\n active: recordingState,\n onUpdate: (text) => {\n editorRef.current?.setText(text);\n editorRef.current?.focus();\n },\n });\n\n const extensions = useMemo<Extension[]>(() => {\n return [\n Prec.highest(\n keymap.of([\n {\n key: 'Mod-d',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'toggle-debug' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-previous' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-next' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isTruthy);\n }, [event, expandable]);\n\n const handleSubmit = useCallback<NonNullable<ChatEditorProps['onSubmit']>>(\n (text) => {\n if (!activeRef.current) {\n event.emit({ type: 'submit', text });\n return true;\n }\n },\n [event],\n );\n\n const handleEvent = useCallback<NonNullable<ChatActionsProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n return (\n <div\n role='group'\n className={mx(\n 'flex flex-col w-full dx-density-fine',\n outline &&\n 'bg-group-surface border border-subdued-separator transition transition-border [&:has(.cm-content:focus)]:border-separator rounded-sm',\n classNames,\n )}\n >\n <div role='none' className='flex p-2 gap-2'>\n <ChatStatusIndicator classNames='p-1' preset={preset} error={error} processing={streaming} />\n <ChatEditor\n ref={editorRef}\n autoFocus\n lineWrapping\n classNames='col-span-2 pt-0.5'\n placeholder={placeholder ?? t('prompt placeholder')}\n extensions={extensions}\n onSubmit={handleSubmit}\n />\n </div>\n\n {db && settings && (\n <div role='none' className='flex items-center overflow-hidden'>\n <ChatOptions\n db={db}\n blueprintRegistry={processor.blueprintRegistry}\n context={processor.context}\n preset={preset}\n presets={presets}\n onPresetChange={onPresetChange}\n />\n\n <div role='none' className='flex grow overflow-x-auto scrollbar-none'>\n <ChatReferences db={db} context={processor.context} />\n </div>\n\n <ChatActions\n classNames='col-span-2'\n microphone={true}\n recording={recording}\n processing={streaming}\n onEvent={handleEvent}\n >\n {/* TODO(burdon): Move offline switch into dialog. */}\n {online !== undefined && (\n <Input.Root>\n <Input.Label srOnly>{t('online switch label')}</Input.Label>\n <Input.Switch classNames='mx-2' checked={online} onCheckedChange={onOnlineChange} />\n </Input.Root>\n )}\n </ChatActions>\n </div>\n )}\n </div>\n );\n};\n\nChatPrompt.displayName = CHAT_PROMPT_NAME;\n\n//\n// Toolbar\n//\n\nconst CHAT_TOOLBAR_NAME = 'Chat.Toolbar';\n\ntype ChatToolbarProps = ThemedClassName<{ companionTo?: Obj.Unknown } & ComponentPropsWithoutRef<typeof Menu.Root>>;\n\nconst ChatToolbar = ({ classNames, companionTo, ...props }: ChatToolbarProps) => {\n const { chat } = useChatContext(CHAT_TOOLBAR_NAME);\n const menu = useChatToolbarActions({ chat, companionTo });\n\n return (\n <Menu.Root\n {...props}\n {...menu}\n attendableId={companionTo ? Obj.getDXN(companionTo).toString() : chat ? Obj.getDXN(chat).toString() : ''}\n >\n <Menu.Toolbar classNames={classNames} textBlockWidth />\n </Menu.Root>\n );\n};\n\nChatToolbar.displayName = CHAT_TOOLBAR_NAME;\n\n//\n// Chat\n//\n\nexport const Chat = {\n Root: ChatRoot,\n Viewport: ChatViewport,\n Thread: ChatThread,\n Prompt: ChatPrompt,\n Toolbar: ChatToolbar,\n};\n\nexport type { ChatRootProps, ChatViewportProps, ChatThreadProps, ChatPromptProps, ChatToolbarProps, ChatEvent };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport { useContext, useState } from 'react';\n\nimport { AiContextBinder } from '@dxos/assistant';\nimport { type Queue } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\n// NOTE: This takes a queue rather than a chat because the chat may not be in a space yet.\nexport const useContextBinder = (queue: Queue | undefined): AiContextBinder | undefined => {\n const registry = useContext(RegistryContext) as Registry.Registry;\n const [binder, setBinder] = useState<AiContextBinder>();\n\n useAsyncEffect(async () => {\n if (!queue) {\n return;\n }\n\n const binder = new AiContextBinder({ queue, registry });\n await binder.open();\n setBinder(binder);\n\n return () => {\n void binder.close();\n };\n }, [queue]);\n\n return binder;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type DXN, type Database, type Obj, Ref } from '@dxos/echo';\n\nexport type UseContextObjectsProps = {\n db?: Database.Database;\n context?: AiContextBinder;\n};\n\nexport type UseContextObjects = {\n objects: Obj.Unknown[];\n onUpdateObject: (dxn: DXN, checked: boolean) => Promise<void>;\n};\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({ db, context }: UseContextObjectsProps): UseContextObjects => {\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: DXN, checked: boolean) => {\n if (!db || !context) {\n return;\n }\n\n // Load the object by DXN from the current space.\n const ref = Ref.fromDXN(dxn);\n await ref.load();\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [db, context],\n );\n\n return {\n objects: context?.getObjects() ?? [],\n onUpdateObject: handleUpdateObject,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, type Type } from '@dxos/echo';\nimport { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from '@dxos/echo/internal';\n\n// TODO(burdon): Pass in filter.\n// TODO(wittjosiah): Factor out.\nexport const useFilteredTypes = (db?: Database.Database): Type.AnyEntity[] => {\n const [types, setTypes] = useState<Type.AnyEntity[]>([]);\n useEffect(() => {\n if (!db) {\n return;\n }\n\n return db.schemaRegistry.query({ location: ['database', 'runtime'] }).subscribe(\n (query) => {\n const types = Array.from(\n new Set(\n query.results\n .filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation)\n .filter((schema) => SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false))),\n ),\n );\n\n setTypes(types);\n },\n { fire: true },\n );\n }, [db]);\n\n return types;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nexport const useFlush = (space?: Space) => {\n const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');\n const resetTimer = useRef<NodeJS.Timeout | null>(null);\n\n const handleFlush = useCallback(() => {\n if (!space) {\n return;\n }\n\n queueMicrotask(async () => {\n if (resetTimer.current) {\n clearTimeout(resetTimer.current);\n }\n\n setState('flushing');\n await space.db.flush();\n setState('flushed');\n\n resetTimer.current = setTimeout(() => {\n setState('idle');\n resetTimer.current = null;\n }, 1_000);\n });\n }, [space]);\n\n return { state, handleFlush };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Dispatch, type SetStateAction, useState } from 'react';\n\nexport const useOnline = (): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const [online, setOnline] = useState(true);\n return [online, setOnline];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type ChatPromptProps } from '../components';\nimport { type AiServicePreset, AiServicePresets } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPromptProps, 'presets' | 'onPresetChange'>;\n\nexport const usePresets = (online: boolean): UsePresets => {\n // TODO(burdon): Memo preset for provider.\n const [preset, setPreset] = useState<AiServicePreset>();\n const presets = useMemo(\n () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),\n [online],\n );\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n useEffect(() => {\n setPreset(presets[0]);\n }, [presets]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPromptProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset: preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = blueprints.map((blueprint) => blueprint.schema).flat();\n // const objects = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const objects = await space.db.query(Filter.everything()).run();\n\n return (\n objects\n // TODO(burdon): Remove cast ??? (+ two instances below).\n // .map((object) => {\n // log.info('object', { object, label: Obj.getLabel(object as any) });\n // return object;\n // })\n .filter((object) => stringMatch(query, Obj.getLabel(object as any) ?? ''))\n // TODO(dmaretskyi): `Type.getDXN` (at the point of writing) didn't work here as it was schema-only.\n .filter((object) => !!Obj.getDXN(object as Obj.Unknown))\n .map((object) => ({\n uri: Obj.getDXN(object as any).toString(),\n label: Obj.getLabel(object as any) ?? '',\n }))\n );\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.id(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\nimport { type ChatEvent } from '../Chat';\n\nexport type ChatActionsProps = ThemedClassName<\n PropsWithChildren<{\n microphone?: boolean;\n recording?: boolean;\n processing?: boolean;\n onEvent?: (event: ChatEvent) => void;\n }>\n>;\n\nexport const ChatActions = ({ classNames, children, microphone, recording, processing, onEvent }: ChatActionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className={mx('flex items-center me-1', classNames)}>\n {children}\n\n <IconButton\n disabled={!processing}\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('cancel processing button')}\n onClick={() => onEvent?.({ type: 'cancel' })}\n />\n\n {microphone && (\n <IconButton\n disabled={!processing}\n classNames={mx(recording && 'bg-primary-500')}\n variant='ghost'\n icon='ph--microphone--regular'\n iconOnly\n noTooltip\n label={t('microphone button')}\n onMouseDown={() => onEvent?.({ type: 'record-start' })}\n onMouseUp={() => onEvent?.({ type: 'record-stop' })}\n onTouchStart={() => onEvent?.({ type: 'record-start' })}\n onTouchEnd={() => onEvent?.({ type: 'record-stop' })}\n />\n )}\n\n <IconButton\n variant='ghost'\n icon='ph--wrench--regular'\n iconOnly\n label={t('debug button')}\n onClick={() => onEvent?.({ type: 'toggle-debug' })}\n />\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { type JSX, useMemo, useState } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { type Database, Filter, Obj, Type } from '@dxos/echo';\nimport { Annotation } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { IconButton, Popover, Select, useTranslation } from '@dxos/react-ui';\nimport { Listbox, SearchList, useSearchListResults } from '@dxos/react-ui-searchlist';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { getStyles, mx } from '@dxos/ui-theme';\n\nimport {\n useActiveBlueprints,\n useBlueprintHandlers,\n useBlueprints,\n useContextObjects,\n useFilteredTypes,\n} from '../../hooks';\nimport { meta } from '../../meta';\n\nconst panelClassNames = 'w-[calc(100dvw-.5rem)] sm:w-max md:w-72 max-w-text-content';\n\nexport type ChatOptionsProps = {\n db: Database.Database;\n context: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n presets?: { id: string; label: string }[];\n preset?: string;\n onPresetChange?: (id: string) => void;\n};\n\n/**\n * Manages the runtime context for the chat.\n */\nexport const ChatOptions = ({ db, context, blueprintRegistry, presets, preset, onPresetChange }: ChatOptionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div role='none' className='flex p-2'>\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton variant='ghost' icon='ph--plus--regular' iconOnly label={t('context objects button')} />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={panelClassNames}>\n <Popover.Viewport>\n <ObjectsPanel db={db} context={context} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--sliders-horizontal--regular'\n iconOnly\n label={t('context settings button')}\n />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={panelClassNames}>\n <Popover.Viewport>\n <Tabs.Root orientation='horizontal' defaultValue='blueprints' defaultActivePart='list' tabIndex={-1}>\n <Tabs.Viewport\n classNames={mx(\n 'max-h-(--radix-popover-content-available-height) grid grid-rows-[1fr_min-content]',\n '[&_[cmdk-root]]:contents [&_[role=\"tabpanel\"]]:grid [&_[role=\"tabpanel\"]]:grid-rows-[1fr_min-content]',\n '[&_[role=\"listbox\"]]:min-h-0 [&_[role=\"listbox\"]]:overflow-y-auto',\n '[&_[role=\"tabpanel\"]]:min-h-0 [&_[role=\"tabpanel\"]]:px-form-chrome [&_[role=\"tabpanel\"][data-state=\"active\"]]:order-first [&_[role=\"tabpanel\"][data-state=\"inactive\"]]:hidden',\n )}\n >\n <Tabs.Tabpanel value='blueprints' tabIndex={-1} classNames='dx-focus-ring-inset'>\n <BlueprintsPanel blueprintRegistry={blueprintRegistry} db={db} context={context} />\n </Tabs.Tabpanel>\n <Tabs.Tabpanel value='model' tabIndex={-1} classNames='dx-focus-ring-inset px-0!'>\n <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />\n </Tabs.Tabpanel>\n <Tabs.Tablist classNames='sm:overflow-x-hidden justify-center p-form-chrome border-y border-subdued-separator order-last'>\n <Tabs.IconTab\n value='blueprints'\n icon='ph--blueprint--regular'\n label={t('blueprints in context title')}\n />\n <Tabs.IconTab value='model' label={t('chat model title')} icon='ph--cpu--regular' />\n </Tabs.Tablist>\n </Tabs.Viewport>\n </Tabs.Root>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n};\n\nconst BlueprintsPanel = ({\n blueprintRegistry,\n db,\n context,\n}: Pick<ChatOptionsProps, 'blueprintRegistry' | 'db' | 'context'>) => {\n const { t } = useTranslation(meta.id);\n\n const blueprints = useBlueprints({ blueprintRegistry, db });\n const activeBlueprints = useActiveBlueprints({ context });\n const { onUpdateBlueprint } = useBlueprintHandlers({ db, context, blueprintRegistry });\n\n const { results, handleSearch } = useSearchListResults({\n items: blueprints,\n extract: (blueprint) => blueprint.name,\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Content classNames='py-form-chrome'>\n <SearchList.Viewport>\n {results.map((blueprint) => {\n const isActive = activeBlueprints.has(blueprint.key);\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={blueprint.key}\n value={blueprint.key}\n label={blueprint.name}\n checked={isActive}\n onSelect={() => onUpdateBlueprint?.(blueprint.key, !isActive)}\n />\n );\n })}\n </SearchList.Viewport>\n </SearchList.Content>\n <SearchList.Input placeholder={t('search placeholder')} classNames='mb-form-chrome' autoFocus />\n </SearchList.Root>\n );\n};\n\nconst ModelsPanel = ({\n presets,\n preset,\n onPresetChange,\n}: Pick<ChatOptionsProps, 'presets' | 'preset' | 'onPresetChange'>) => {\n return (\n <Listbox.Root value={preset} onValueChange={onPresetChange} autoFocus>\n {presets?.map(({ id, label }) => {\n return (\n <Listbox.Option key={id} value={id}>\n <Listbox.OptionLabel>{label}</Listbox.OptionLabel>\n <Listbox.OptionIndicator />\n </Listbox.Option>\n );\n })}\n </Listbox.Root>\n );\n};\n\nconst ANY = '__any__';\n\nconst ObjectsPanel = ({ db, context }: Pick<ChatOptionsProps, 'db' | 'context'>): JSX.Element => {\n const { t } = useTranslation(meta.id);\n\n // Item types sorted by label.\n const types = useFilteredTypes(db);\n const typenames = useMemo(() => {\n const typenames = types.map((type) => {\n const typename = Type.getTypename(type);\n return {\n typename,\n label: t('typename label', { ns: typename, defaultValue: typename }),\n };\n });\n\n typenames.sort((a, b) => a.label.localeCompare(b.label));\n return typenames;\n }, [types]);\n\n // Current type and filter.\n const [typename, setTypename] = useState<string>(ANY);\n const anyFilter = useMemo(\n () => Filter.or(...typenames.map(({ typename }) => Filter.typename(typename))),\n [typenames],\n );\n\n // Context objects.\n const objects = useQuery(db, typename === ANY ? anyFilter : Filter.typename(typename));\n const { objects: contextObjects, onUpdateObject } = useContextObjects({ db, context });\n\n const { results, handleSearch } = useSearchListResults({\n items: objects,\n extract: (object) => Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id,\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Content classNames='p-form-chrome [&:has([cmdk-list-sizer]:empty)]:py-0'>\n <SearchList.Viewport>\n {results.length ? (\n results.map((object) => {\n const isActive = contextObjects.findIndex((obj) => obj.id === object.id) !== -1;\n const { icon, hue } = Option.fromNullable(Obj.getSchema(object)).pipe(\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.getOrElse(() => ({ icon: DEFAULT_OBJECT_ICON, hue: undefined as string | undefined })),\n );\n const styles = hue ? getStyles(hue) : undefined;\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={object.id}\n value={object.id}\n icon={icon}\n iconClassNames={styles?.surfaceText}\n label={Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id}\n checked={isActive}\n onSelect={() => onUpdateObject?.(Obj.getDXN(object), !isActive)}\n />\n );\n })\n ) : (\n <SearchList.Item value='__empty__' label={t('no results')} />\n )}\n </SearchList.Viewport>\n </SearchList.Content>\n\n <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 px-form-chrome mb-form-chrome'>\n <Select.Root value={typename === ANY ? undefined : typename} onValueChange={setTypename}>\n <Select.TriggerButton density='fine' placeholder={t('type filter placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.ScrollUpButton />\n <Select.Viewport>\n <Select.Option value={ANY}>{t('any type filter label')}</Select.Option>\n {typenames.map(({ typename, label }) => (\n <Select.Option key={typename} value={typename}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.ScrollDownButton />\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n <SearchList.Input placeholder={t('search placeholder')} classNames='mb-0' autoFocus />\n </div>\n </SearchList.Root>\n );\n};\n\n// TODO(dmaretskyi): Extract those somewhere else.\nconst DEFAULT_OBJECT_ICON = 'ph--cube--regular';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Select } from '@dxos/react-ui';\n\nexport type ChatPresetsProps = {\n presets?: { id: string; label: string }[];\n preset?: string;\n onChange?: (id: string) => void;\n};\n\nexport const ChatPresets = ({ presets, preset, onChange }: ChatPresetsProps) => {\n return (\n <Select.Root value={preset} onValueChange={onChange}>\n <Select.TriggerButton classNames='text-sm' />\n <Select.Content>\n {presets?.map(({ id, label }) => (\n <Select.Option key={id} value={id} classNames='text-sm'>\n {label}\n </Select.Option>\n ))}\n <Select.Arrow />\n </Select.Content>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Annotation, type Database, Obj } from '@dxos/echo';\nimport { Icon, IconButton, type Label, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { getStyles, mx } from '@dxos/ui-theme';\n\nimport { useContextObjects } from '../../hooks';\nimport { meta } from '../../meta';\n\nexport type ChatReferencesProps = ThemedClassName<{\n context: AiContextBinder;\n db: Database.Database;\n}>;\n\nexport const ChatReferences = ({ classNames, context, db }: ChatReferencesProps) => {\n const { t } = useTranslation(meta.id);\n const { objects, onUpdateObject } = useContextObjects({ db, context });\n\n return (\n <ul className={mx('flex', classNames)}>\n {objects.map((obj) => {\n const dxn = Obj.getDXN(obj);\n const typename = Obj.getTypename(obj);\n const label: Label = Obj.getLabel(obj) ?? (typename ? ['object name placeholder', { ns: typename }] : obj.id);\n const { icon, hue } = Option.fromNullable(Obj.getSchema(obj)).pipe(\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.getOrElse(() => ({ icon: DEFAULT_OBJECT_ICON, hue: undefined as string | undefined })),\n );\n const styles = hue ? getStyles(hue) : undefined;\n return (\n <li key={dxn.toString()} className='dx-tag py-0 ps-2 flex items-center gap-1' data-hue='neutral'>\n <Icon icon={icon} size={4} classNames={styles?.surfaceText} />\n {toLocalizedString(label, t)}\n <IconButton\n icon='ph--x--bold'\n iconOnly\n variant='ghost'\n label={t('remove object in context label')}\n classNames='p-0 hover:bg-transparent'\n size={3}\n onClick={() => onUpdateObject?.(dxn, false)}\n />\n </li>\n );\n })}\n </ul>\n );\n};\n\n// TODO(dmaretskyi): Extract those somewhere else.\nconst DEFAULT_OBJECT_ICON = 'ph--cube--regular';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { type ThemedClassName, Tooltip, useTimeout } from '@dxos/react-ui';\nimport { Spinner, type SpinnerProps } from '@dxos/react-ui-sfx';\nimport { mx } from '@dxos/ui-theme';\n\nconst period = 3_000;\n\nexport type ChatStatusIndicatorProps = ThemedClassName<\n {\n preset?: string;\n processing?: boolean;\n error?: Error;\n } & Pick<SpinnerProps, 'size' | 'onClick'>\n>;\n\nexport const ChatStatusIndicator = ({ classNames, preset, processing, error, ...props }: ChatStatusIndicatorProps) => {\n const [init, setInit] = useState(false);\n useEffect(() => setInit(false), [preset]);\n useTimeout(\n async () => {\n setInit(true);\n },\n period / 2,\n [preset],\n );\n\n return (\n <div role='none' className={mx('relative flex', classNames)}>\n <Spinner duration={period} state={!init ? 'flash' : error ? 'error' : processing ? 'spin' : 'pulse'} {...props} />\n {error && (\n <Tooltip.Trigger asChild content={error.message}>\n <div className='absolute inset-0' />\n </Tooltip.Trigger>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type CSSProperties, forwardRef, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { PublicKey } from '@dxos/keys';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type ThemedClassName, useForwardedRef } from '@dxos/react-ui';\nimport { MarkdownStream, type MarkdownStreamController, type MarkdownStreamProps } from '@dxos/react-ui-components';\nimport { type Message } from '@dxos/types';\nimport { mx } from '@dxos/ui-theme';\nimport { keyToFallback } from '@dxos/util';\n\nimport { type ChatEvent } from '../Chat';\n\nimport { blockToMarkdown, componentRegistry } from './registry';\nimport { MessageSyncer } from './sync';\n\nexport type ChatThreadProps = ThemedClassName<\n {\n identity?: Identity;\n messages?: Message.Message[];\n error?: Error;\n onEvent?: (event: ChatEvent) => void;\n } & Pick<MarkdownStreamProps, 'cursor' | 'fadeIn' | 'debug'>\n>;\n\n// TODO(burdon): Memo thread position.\nexport const ChatThread = forwardRef<MarkdownStreamController | null, ChatThreadProps>(\n (\n { classNames, identity, messages = [], error, cursor = false, fadeIn = true, debug = false, onEvent },\n forwardedRef,\n ) => {\n const controllerRef = useForwardedRef(forwardedRef);\n const [controller, setController] = useState<MarkdownStreamController | null>(null);\n\n // Callback ref to capture when MarkdownStream is mounted and trigger re-render.\n const refCallback = useCallback(\n (node: MarkdownStreamController | null) => {\n controllerRef.current = node;\n setController(node);\n },\n [controllerRef],\n );\n\n const userHue = useMemo(\n () => identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue,\n [identity],\n );\n\n // Show error.\n useEffect(() => {\n controller?.scrollToBottom();\n }, [controller, error]);\n\n // Update document.\n const syncer = useMemo(() => controller && new MessageSyncer(controller, blockToMarkdown), [controller]);\n useEffect(() => {\n const reset = syncer?.append(messages, true);\n if (reset) {\n controller?.scrollToBottom('instant');\n }\n }, [syncer, messages]);\n\n // Event adapter.\n const handleEvent = useCallback<NonNullable<MarkdownStreamProps['onEvent']>>(\n ({ type, value }) => {\n switch (type) {\n case 'submit': {\n value && onEvent?.({ type, text: value });\n break;\n }\n }\n },\n [onEvent],\n );\n\n return (\n <div\n role='none'\n className={mx('flex h-full w-full justify-center overflow-hidden', classNames)}\n style={{ '--user-fill': `var(--color-${userHue}-fill)` } as CSSProperties}\n >\n <MarkdownStream\n ref={refCallback}\n registry={componentRegistry}\n cursor={cursor}\n fadeIn={fadeIn}\n debug={debug}\n onEvent={handleEvent}\n />\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { log } from '@dxos/log';\nimport { ToggleContainer } from '@dxos/react-ui-components';\nimport {\n PromptWidget,\n ReasoningWidget,\n ReferenceWidget,\n SelectWidget,\n SuggestionWidget,\n SummaryWidget,\n} from '@dxos/react-ui-components';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { ContentBlock, type Message } from '@dxos/types';\nimport { type XmlWidgetProps, type XmlWidgetRegistry, getXmlTextChild } from '@dxos/ui-editor';\n\nimport { ToolBlock } from '../ToolBlock';\n\nimport { type BlockRenderer, type MessageThreadContext } from './sync';\n\nconst Fallback = ({ _tag, ...props }: XmlWidgetProps<MessageThreadContext>) => {\n return (\n <ToggleContainer.Root classNames='rounded-xs'>\n <ToggleContainer.Header classNames='bg-group-surface'>{_tag}</ToggleContainer.Header>\n <ToggleContainer.Content classNames='bg-modal-surface'>\n <Json classNames='p-2! text-sm' data={props} />\n </ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n\nconst Summary = ({ text }: { text: string }) => {\n return (\n <ToggleContainer.Root classNames='rounded-sm'>\n <ToggleContainer.Header classNames='bg-group-surface'>Conversation summarized</ToggleContainer.Header>\n <ToggleContainer.Content classNames='bg-modal-surface'>{text}</ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n\n/**\n * Custom XML tags registry.\n */\nexport const componentRegistry: XmlWidgetRegistry = {\n //\n // Widgets\n //\n\n prompt: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new PromptWidget(text) : null;\n },\n },\n reasoning: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new ReasoningWidget(text) : null;\n },\n },\n reference: {\n block: false,\n factory: ({ children, ref }) => {\n const text = getXmlTextChild(children);\n return text && ref ? new ReferenceWidget(text, ref) : null;\n },\n },\n select: {\n block: true,\n factory: ({ children }) => {\n const options = children\n ?.map((option: any) => option._tag === 'option' && getXmlTextChild(option.children))\n .filter(Boolean);\n return options?.length ? new SelectWidget(options) : null;\n },\n },\n suggestion: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new SuggestionWidget(text) : null;\n },\n },\n stats: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new SummaryWidget(text) : null;\n },\n },\n\n //\n // React\n //\n\n toolCall: {\n block: true,\n Component: ToolBlock,\n },\n toolResult: {\n block: true,\n Component: Fallback,\n },\n toolkit: {\n block: true,\n Component: Fallback,\n },\n summary: {\n block: true,\n Component: Summary,\n },\n\n //\n // Fallback\n //\n\n json: {\n block: true,\n Component: Fallback,\n },\n};\n\n/**\n * Convert block to markdown.\n */\nexport const blockToMarkdown: BlockRenderer = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => {\n let str = blockToMarkdownImpl(context, message, block);\n if (str && !block.pending) {\n return (str += '\\n');\n }\n\n return str;\n};\n\nconst blockToMarkdownImpl = (context: MessageThreadContext, message: Message.Message, block: ContentBlock.Any) => {\n log('blockToMarkdown', { block: JSON.stringify(block) });\n switch (block._tag) {\n case 'text': {\n if (message.sender.role === 'user') {\n return `<prompt>${block.text}</prompt>`;\n } else {\n const text = block.text.trim();\n if (text.length > 0) {\n return text;\n }\n }\n break;\n }\n case 'reference': {\n const dxn = block.reference.dxn;\n return `<reference ref=\"${dxn.toString()}\">${context.getObjectLabel(dxn)}</reference>`;\n }\n case 'suggestion': {\n if (block.pending) {\n return;\n }\n return `<suggestion>${block.text}</suggestion>`;\n }\n case 'select': {\n if (block.pending || block.options.length === 0) {\n return;\n }\n return `<select>${block.options.map((option) => `<option>${option}</option>`).join('')}</select>`;\n }\n case 'toolCall': {\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, {\n blocks: [block],\n });\n return `<toolCall id=\"${block.toolCallId}\" />`;\n }\n case 'toolResult': {\n // TODO(dmaretskyi): the parameter could be undefined, perhaps tool blocks are not arriving in order.\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, ({ blocks = [] } = { blocks: [] }) => ({\n blocks: [...blocks, block],\n }));\n break;\n }\n case 'stats': {\n return `<stats>${ContentBlock.createStatsMessage(block)}</stats>`;\n }\n case 'reasoning': {\n const text = block.reasoningText ?? block.redactedText;\n if (!text) {\n return;\n }\n // TODO(dmaretskyi): The mixed Markdown/XML parser does not support parsing multi-line XML tags.\n return `<reasoning>${text.replace(/\\n/g, ' ').trim()}</reasoning>`;\n }\n case 'summary': {\n return `<summary>${block.content}</summary>`;\n }\n default: {\n // TODO(burdon): Needs stable ID.\n return `<json id=\"${message.id}\">\\n${JSON.stringify(block)}\\n</json>`;\n }\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Tool from '@effect/ai/Tool';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { NumericTabs, TextCrawl, ToggleContainer, type ToggleContainerRootProps } from '@dxos/react-ui-components';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type XmlWidgetProps } from '@dxos/ui-editor';\nimport { isNonNullable, safeParseJson } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nexport const isToolMessage = (message: Message.Message) => {\n return message.blocks.some((block: ContentBlock.Any) => block._tag === 'toolCall' || block._tag === 'toolResult');\n};\n\nexport type ToolBlockProps = XmlWidgetProps<{\n blocks: ContentBlock.Any[];\n}>;\n\nexport const ToolBlock = ({ view, blocks = [] }: ToolBlockProps) => {\n const { t } = useTranslation(meta.id);\n\n const items = useMemo<ToolContainerProps['items']>(() => {\n let lastToolCall: { tool: Tool.Any | undefined; block: ContentBlock.ToolCall } | undefined;\n // TODO(burdon): Get from context?\n const tools: Tool.Any[] = []; //processor.conversation.toolkit?.tools ?? [];\n return blocks\n .filter((block) => block._tag === 'toolCall' || block._tag === 'toolResult' || block._tag === 'stats')\n .map((block) => {\n switch (block._tag) {\n case 'toolCall': {\n if (block.pending && lastToolCall?.block.toolCallId === block.toolCallId) {\n return null;\n }\n\n const tool = tools.find((tool) => tool.name === block.name);\n lastToolCall = { tool, block };\n return {\n title: tool?.description ?? [t('tool call label'), tool?.name].join(' '),\n content: {\n ...block,\n input: safeParseJson(block.input),\n },\n };\n }\n\n case 'toolResult': {\n // TODO(burdon): Parse error type.\n if (block.error) {\n return {\n title: t('tool error label'),\n content: block,\n };\n }\n\n const title =\n lastToolCall?.tool?.description ?? [t('tool result label'), lastToolCall?.tool?.name].join(' ');\n lastToolCall = undefined;\n return {\n title,\n content: {\n ...block,\n result: safeParseJson(block.result),\n },\n };\n }\n\n case 'stats': {\n if (!lastToolCall) {\n return null;\n }\n\n return {\n title: t('stats label'),\n content: block,\n };\n }\n }\n })\n .filter(isNonNullable);\n }, [blocks]);\n\n const handleChangeOpen = useCallback(() => {\n setTimeout(() => {\n // Measure after animation.\n view?.requestMeasure();\n }, 1_000);\n }, [view]);\n\n if (!items.length) {\n return null;\n }\n\n return <ToolContainer items={items} onChangeOpen={handleChangeOpen} />;\n};\n\nToolBlock.displayName = 'ToolBlock';\n\ntype ToolContainerProps = {\n items: { title: string; content: any }[];\n} & Pick<ToggleContainerRootProps, 'onChangeOpen'>;\n\nexport const ToolContainer = ({ items, onChangeOpen }: ToolContainerProps) => {\n const tabsRef = useRef<HTMLDivElement>(null);\n const [selected, setSelected] = useState(0);\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n onChangeOpen?.(open);\n if (open) {\n tabsRef.current?.focus();\n }\n }, [open, onChangeOpen]);\n\n const handleSelect = useCallback((index: number) => {\n setSelected(index);\n }, []);\n\n return (\n <ToggleContainer.Root classNames='mt-2 w-full rounded-xs' open={open} onChangeOpen={setOpen}>\n <ToggleContainer.Header classNames='text-sm text-placeholder'>\n <TextCrawl key='status-roll' lines={items.map((item) => item.title)} autoAdvance greedy />\n </ToggleContainer.Header>\n <ToggleContainer.Content classNames='grid grid-cols-[32px_1fr]'>\n <NumericTabs ref={tabsRef} classNames='p-1' length={items.length} selected={selected} onSelect={handleSelect} />\n <Json\n data={items[selected]?.content}\n classNames='p-1 text-xs bg-transparent'\n replacer={{\n maxDepth: 3,\n maxArrayLen: 10,\n maxStringLen: 128,\n }}\n />\n </ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type DXN } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { type MarkdownStreamController } from '@dxos/react-ui-components';\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type StateDispatch, type XmlWidgetStateManager } from '@dxos/ui-editor';\n\n/**\n * Update document.\n */\nexport type TextModel = Pick<MarkdownStreamController, 'view' | 'reset' | 'append' | 'updateWidget'>;\n\n/**\n * Thread context passed to renderer.\n */\nexport class MessageThreadContext implements Pick<MarkdownStreamController, 'updateWidget'> {\n constructor(private readonly _widgetState?: XmlWidgetStateManager) {}\n\n updateWidget<T>(id: string, value: StateDispatch<T>) {\n this._widgetState?.updateWidget(id, value);\n }\n\n // TODO(burdon): Resolve from hypergraph.\n getObjectLabel(_id: DXN) {\n return 'Object';\n }\n}\n\n/**\n * Renders a block to markdown.\n */\nexport type BlockRenderer = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => string | undefined;\n\n/**\n * Syncs messages with the editor.\n */\nexport class MessageSyncer {\n private _initialMessageId?: string;\n private _currentMessageIndex = 0;\n private _currentBlockIndex = 0;\n private _currentBlockContent?: string;\n\n private readonly _context: MessageThreadContext;\n\n constructor(\n private readonly _model: TextModel,\n private readonly _blockRenderer: BlockRenderer,\n ) {\n this._context = new MessageThreadContext(this._model);\n }\n\n get context() {\n return this._context;\n }\n\n reset() {\n log('reset');\n this._initialMessageId = undefined;\n this._currentMessageIndex = 0;\n this._currentBlockIndex = 0;\n this._currentBlockContent = undefined;\n void this._model.reset('');\n }\n\n /**\n * Syncs messages with the editor.\n */\n append(messages: Message.Message[], flush = false): boolean {\n // TODO(dmaretskyi): MarkdownStream currently does not support streaming XML tags, so we need to remove pending non-text blocks.\n messages = messages.map((message) => ({\n ...message,\n blocks: message.blocks.filter((block) => !block.pending || block._tag === 'text'),\n }));\n\n // Check if new set of messages.\n if (this._initialMessageId !== messages[0]?.id) {\n this.reset();\n this._initialMessageId = messages[0]?.id;\n }\n\n if (flush && this._model.view?.state.doc.length === 0) {\n const buffer: string[] = [];\n this.process(messages, (content) => {\n buffer.push(content);\n });\n\n const content = buffer.join('');\n this._model.view?.dispatch({\n changes: [\n {\n from: 0,\n to: this._model.view?.state.doc.length ?? 0,\n insert: content,\n },\n ],\n selection: { anchor: content.length },\n });\n\n return true;\n } else {\n this.process(messages, (content) => {\n void this._model.append(content);\n });\n\n return false;\n }\n }\n\n private process(messages: Message.Message[], append: (content: string) => void) {\n // console.log('sync', {\n // doc: this._model.view?.state.doc.length,\n // messages: messages.map((message) => message.blocks.length),\n // currentMessageIndex: this._currentMessageIndex,\n // currentBlockIndex: this._currentBlockIndex,\n // currentBlockContent: this._currentBlockContent,\n // });\n\n let i = this._currentMessageIndex;\n for (const message of messages.slice(this._currentMessageIndex)) {\n if (i > this._currentMessageIndex) {\n this._currentBlockIndex = 0;\n }\n\n this._currentMessageIndex = i;\n let j = this._currentBlockIndex;\n for (const block of message.blocks.slice(this._currentBlockIndex)) {\n this._currentBlockIndex = j;\n const currentBlockContent = this._blockRenderer(this._context, message, block);\n if (currentBlockContent) {\n let content: string = '';\n if (this._currentBlockContent && currentBlockContent.startsWith(this._currentBlockContent)) {\n content = currentBlockContent.slice(this._currentBlockContent.length);\n } else {\n content = currentBlockContent;\n }\n\n // console.log('append', { message: i, block: j, content });\n this._currentBlockContent = currentBlockContent;\n append(content);\n }\n\n if (block.pending) {\n return;\n } else {\n this._currentBlockContent = undefined;\n this._currentBlockIndex++;\n }\n j++;\n }\n i++;\n }\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport React from 'react';\n\nimport { type Template } from '@dxos/blueprints';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { useTextEditor } from '@dxos/react-ui-editor';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n} from '@dxos/ui-editor';\nimport { mx } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nimport { handlebars, xmlDecorator } from './extensions';\n\nexport type TemplateEditorProps = ThemedClassName<{\n id: string;\n template: Template.Template;\n lineNumbers?: boolean;\n}>;\n\nexport const TemplateEditor = ({ id, classNames, template, lineNumbers = true }: TemplateEditorProps) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor(() => {\n const text = template.source?.target;\n if (!text) {\n return {};\n }\n\n return {\n initialValue: text.content ?? '',\n extensions: [\n createDataExtensions({\n id,\n text: createDocAccessor(text, ['content']),\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineNumbers,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({\n themeMode,\n slots: { content: { className: '!pe-4' } },\n }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n handlebars(),\n // xml(),\n // NOTE: Since we're using markdown only HTML nodes are parsed.\n xmlDecorator(),\n syntaxHighlighting(defaultHighlightStyle),\n ].filter(isNonNullable),\n };\n }, [themeMode, template.source?.target, lineNumbers]);\n\n return <div ref={parentRef} className={mx('h-full overflow-hidden', classNames)} />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n type CompletionContext,\n type CompletionResult,\n autocompletion,\n completionKeymap,\n} from '@codemirror/autocomplete';\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n type EditorView,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n keymap,\n} from '@codemirror/view';\n\nimport { Domino, mx } from '@dxos/ui';\n\nexport type HandlebarsOptions = {};\n\n/**\n * Simple Handlebars plugin for CodeMirror.\n * Supports:\n * - Comments: {{! comment }}\n * - Commands: {{#command}} {{/command}}\n * - Variables: {{var}}\n * - Commands with variables: {{#each items}} {{/each}}\n */\nexport const handlebars = (_: HandlebarsOptions = {}): Extension => {\n return [\n handlebarsHighlightPlugin,\n autocompletion({\n activateOnTyping: true,\n aboveCursor: true,\n closeOnBlur: true,\n override: [handlebarsCompletions],\n }),\n keymap.of(completionKeymap),\n ];\n};\n\nconst regex = {\n // {{! comment }}\n comment: /\\{\\{!\\s*[^}]*\\}\\}/g,\n\n // {{var}}\n brackets: /\\{\\{[^}]*\\}\\}/g,\n\n // {{#command}} {{/command}}\n command: /\\{\\{[#/]([^}]+)\\}\\}/g,\n\n // {{var}}\n var: /\\{\\{(?!\\s*!)(\\w[^}]*)\\}\\}/g,\n\n // @dxn:queue:data:xxx\n dxn: /@?dxn:[\\w@:]+/g,\n\n // dxos.org/type/xxx\n url: /[\\w.-]+\\.[\\w.-]+\\/[\\w/]+/g,\n};\n\nconst tagPadding = 'mx-0.5 px-1 rounded-xs';\n\n/**\n * ViewPlugin that decorates Handlebars syntax.\n */\nconst handlebarsHighlightPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged || update.selectionSet) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n // NOTE: Decorations may clash with other extensions (e.g., markdown).\n buildDecorations(view: EditorView) {\n const selection = view.state.selection.main;\n const decorations: Array<{\n from: number;\n to: number;\n decoration: Decoration;\n }> = [];\n\n for (const { from, to } of view.visibleRanges) {\n const text = view.state.doc.sliceString(from, to);\n\n // Match DXN.\n {\n let match;\n while ((match = regex.dxn.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n // Only show widget if selection doesn't overlap with the match range.\n const overlaps = selection.to > start && selection.from <= end;\n if (!overlaps) {\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.widget({\n widget: new DXNWidget(match[0]),\n }),\n });\n }\n }\n }\n\n // Match URLs.\n {\n let match;\n while ((match = regex.url.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({\n class: mx('dx-tag--blue', tagPadding),\n }),\n });\n }\n }\n\n // Match brackets: {{ and }}.\n {\n let match;\n while ((match = regex.brackets.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-subdued' }),\n });\n }\n }\n\n // Match commands: {{#command}} and {{/command}}.\n {\n let match;\n while ((match = regex.command.exec(text)) !== null) {\n const start = from + match.index + 2;\n let end = start + match[0].length - 4;\n const text = view.state.doc.sliceString(start, end);\n const parts = text.split(/\\s+/);\n if (parts.length > 1) {\n const idx = start + parts[0].length;\n decorations.push({\n from: idx,\n to: end,\n decoration: Decoration.mark({ class: 'text-green-text' }),\n });\n end = idx;\n }\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-blue-text' }),\n });\n }\n }\n\n // Match variables: {{var}}.\n {\n let match;\n while ((match = regex.var.exec(text)) !== null) {\n const start = from + match.index + 2;\n const end = start + match[0].length - 4;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-green-text' }),\n });\n }\n }\n }\n\n // Sort decorations by position to satisfy RangeSetBuilder requirements.\n decorations.sort((a, b) => a.from - b.from || a.to - b.to);\n\n // Add sorted decorations to builder.\n const builder = new RangeSetBuilder<Decoration>();\n for (const { from, to, decoration } of decorations) {\n builder.add(from, to, decoration);\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n\nclass DXNWidget extends WidgetType {\n constructor(private readonly _identifier: string) {\n super();\n }\n\n override ignoreEvent() {\n return false;\n }\n\n override eq(other: this) {\n return this._identifier === other._identifier;\n }\n\n override toDOM() {\n const text = this._identifier\n .split(':')\n .map((part) => {\n const len = 16;\n const plen = 4;\n if (part.length > len) {\n return `[${part.slice(0, plen)}…${part.slice(-plen)}]`;\n }\n return part;\n })\n .join(':');\n return Domino.of('span').classNames(mx('font-mono dx-tag--blue', tagPadding)).text(text).root;\n }\n}\n\n// TODO(burdon): Pass in variables.\nconst variables = ['this'];\nconst commands = ['this', 'each', 'if', 'unless', 'with'];\n\n/**\n * Provides completions for Handlebars variables.\n */\nfunction handlebarsCompletions(context: CompletionContext): CompletionResult | null {\n const match = context.matchBefore(/\\{\\{[^}]*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n let type = 'variable';\n let text = match.text.slice(2);\n let from = match.from + 2;\n let matches = [];\n if (text.startsWith('#') || text.startsWith('/')) {\n const idx = text.lastIndexOf(' ');\n if (idx !== -1) {\n type = 'variable';\n matches = variables;\n text = text.slice(idx + 1);\n from += idx + 1;\n } else {\n type = 'command';\n text = text.slice(1);\n matches = commands;\n from += 1;\n }\n } else {\n type = 'variable';\n matches = variables;\n }\n\n const options = matches.filter((name) => name.startsWith(text)).map((name) => ({ type, label: name }));\n return {\n from,\n options,\n };\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport { Decoration, type DecorationSet, type EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nexport type XmlOptions = {};\n\n/**\n * XML decorator plugin for CodeMirror.\n * Decorates XML tags with monospace font using the XML language grammar.\n */\nexport const xmlDecorator = (_: XmlOptions = {}): Extension => {\n return [xmlDecoratorPlugin];\n};\n\n/**\n * ViewPlugin that decorates XML tags using syntax tree.\n */\nconst xmlDecoratorPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView) {\n const builder = new RangeSetBuilder<Decoration>();\n\n for (const { from, to } of view.visibleRanges) {\n syntaxTree(view.state).iterate({\n from,\n to,\n enter: (node) => {\n // Decorate XML elements (opening tags, closing tags, self-closing tags).\n if (\n node.name === 'HTMLTag' ||\n node.name === 'OpenTag' ||\n node.name === 'CloseTag' ||\n node.name === 'SelfClosingTag' ||\n node.name === 'Element'\n ) {\n builder.add(node.from, node.to, Decoration.mark({ class: 'font-mono text-subdued' }));\n }\n },\n });\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, Fragment, useEffect, useState } from 'react';\n\nimport { type Blueprint } from '@dxos/blueprints';\nimport { type Database, type Ref } from '@dxos/echo';\nimport { Function } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { Filter, useQuery } from '@dxos/react-client/echo';\nimport { ScrollArea, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nimport { type AiChatProcessor } from '../../processor';\nimport { ServiceType } from '../../types';\n\nexport type ToolboxProps = ThemedClassName<{\n services?: { service: ServiceType }[];\n functions?: Function.Function[];\n // TODO(burdon): Combine into single array.\n blueprints?: readonly Blueprint.Blueprint[];\n activeBlueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];\n}>;\n\nexport const Toolbox = ({ classNames, functions, services, blueprints, activeBlueprints }: ToolboxProps) => {\n return (\n <ScrollArea.Root thin orientation='vertical'>\n <ScrollArea.Viewport classNames={classNames}>\n {blueprints && blueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={blueprints.map(({ name, description, tools }) => ({\n name,\n description,\n subitems: tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {activeBlueprints && activeBlueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={activeBlueprints.map(({ target }) => ({\n name: target?.name ?? '',\n description: target?.description ?? '',\n subitems: target?.tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {services && services.length > 0 && (\n <Section\n title='Services'\n items={services.map(({ service: { serviceId, name, description } }) => ({\n name: name ?? serviceId,\n description,\n // subitems: tools.map(({ name, description }) => ({ name: `∙ ${name}`, description })),\n }))}\n />\n )}\n\n {functions && functions.length > 0 && (\n <Section title='Functions' items={functions.map(({ name, description }) => ({ name, description }))} />\n )}\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n};\n\nconst Section: FC<{\n title: string;\n items: { name: string; description?: string; subitems?: { name: string; description?: string }[] }[];\n striped?: boolean;\n}> = ({ title, items, striped }) => {\n const stripeClassNames = 'odd:bg-neutral-50 dark:odd:bg-neutral-800';\n const gridClassNames = 'grid grid-cols-[8rem_1fr]';\n const subGridClassNames = mx('col-span-full grid grid-cols-subgrid text-xs px-2', striped && stripeClassNames);\n\n return (\n <div>\n <h1 className='px-2 text-sm'>{title}</h1>\n <div className={gridClassNames}>\n {items.map(({ name, description, subitems }, i) => (\n <Fragment key={i}>\n {name && (\n <div className={subGridClassNames}>\n <div className='truncate text-primary-500'>{name}</div>\n <div className='line-clamp-2'>{description}</div>\n </div>\n )}\n {subitems?.map(({ name, description }, i) => (\n <div key={i} className={mx(subGridClassNames, striped && stripeClassNames)}>\n <div className='truncate'>{name}</div>\n <div className='line-clamp-3 text-subdued'>{description}</div>\n </div>\n ))}\n </Fragment>\n ))}\n </div>\n </div>\n );\n};\n\nexport type ToolboxContainerProps = ThemedClassName<{\n db?: Database.Database;\n processor?: AiChatProcessor;\n}>;\n\nexport const ToolboxContainer = ({ classNames, db, processor }: ToolboxContainerProps) => {\n // Registered services.\n const services = useQuery(db, Filter.type(ServiceType));\n const [serviceTools, setServiceTools] = useState<{ service: ServiceType }[]>([]);\n useEffect(() => {\n log('creating service tools...', { services: services.length });\n queueMicrotask(async () => {\n // TODO(burdon): Fix.\n // const tools = await Promise.all(\n // services.map(async (service) => ({ service, tools: await createToolsFromService(service) })),\n // );\n // setServiceTools(tools);\n });\n }, [services]);\n\n // Deployed functions.\n const functions = useQuery(db, Filter.type(Function.Function));\n\n return (\n <Toolbox\n classNames={classNames}\n blueprints={processor?.context.getBlueprints()}\n services={serviceTools}\n functions={functions}\n />\n );\n};\n\nconst safeToolId = (name: string) => {\n return name.split('_').pop();\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["useCallback", "useEffect", "useMemo", "useState", "useCapabilities", "AppCapabilities", "Blueprint", "Filter", "Obj", "Ref", "useQuery", "distinctBy", "useBlueprintRegistry", "blueprintDefinitions", "useCapabilities", "AppCapabilities", "BlueprintDefinition", "useMemo", "Blueprint", "Registry", "map", "blueprint", "make", "useBlueprints", "blueprintRegistry", "db", "staticBlueprints", "query", "spaceBlueprints", "useQuery", "Filter", "type", "blueprints", "distinctBy", "b", "key", "sort", "name", "a", "localeCompare", "useActiveBlueprints", "context", "active", "setActive", "useState", "Map", "useEffect", "updateActive", "getBlueprints", "subscribeBlueprints", "useBlueprintHandlers", "onUpdateBlueprint", "useCallback", "checked", "objects", "run", "storedBlueprint", "find", "getByKey", "add", "Obj", "clone", "bind", "Ref", "unbind", "RegistryContext", "useContext", "useMemo", "useState", "AiConversation", "log", "useAsyncEffect", "useChatProcessor", "space", "chat", "preset", "services", "blueprintRegistry", "settings", "observableRegistry", "useContext", "RegistryContext", "conversation", "setConversation", "useState", "useAsyncEffect", "queue", "queues", "get", "dxn", "AiConversation", "registry", "open", "close", "undefined", "toString", "processor", "useMemo", "log", "model", "AiChatProcessor", "Effect", "useMemo", "useCapability", "TracingService", "TracingServiceExt", "AutomationCapabilities", "useClient", "useChatServices", "id", "chat", "client", "useClient", "spaces", "default", "runtimeResolver", "useCapability", "AutomationCapabilities", "ComputeRuntime", "useMemo", "runtime", "getRuntime", "runPromise", "pipe", "provide", "traceQueue", "target", "TracingServiceExt", "layerQueue", "TracingService", "layerNoop", "Atom", "Effect", "useMemo", "useOperationInvoker", "Chat", "Filter", "Obj", "Query", "runAndForwardErrors", "invariant", "useQuery", "MenuBuilder", "useMenuActions", "Prec", "keymap", "useAtomValue", "createContext", "Array", "Option", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Event", "Filter", "Obj", "useVoiceInput", "useQuery", "useIdentity", "Input", "useDynamicRef", "useTranslation", "ChatEditor", "Menu", "Message", "mx", "isTruthy", "RegistryContext", "useContext", "useState", "AiContextBinder", "useAsyncEffect", "useContextBinder", "queue", "registry", "useContext", "RegistryContext", "binder", "setBinder", "useState", "useAsyncEffect", "AiContextBinder", "open", "close", "useCallback", "Ref", "useContextObjects", "db", "context", "handleUpdateObject", "useCallback", "dxn", "checked", "ref", "Ref", "fromDXN", "load", "bind", "objects", "unbind", "getObjects", "onUpdateObject", "Option", "useEffect", "useState", "EntityKind", "SystemTypeAnnotation", "getTypeAnnotation", "useFilteredTypes", "db", "types", "setTypes", "useState", "useEffect", "schemaRegistry", "query", "location", "subscribe", "Array", "from", "Set", "results", "filter", "schema", "getTypeAnnotation", "kind", "EntityKind", "Relation", "SystemTypeAnnotation", "get", "pipe", "getOrElse", "fire", "useCallback", "useRef", "useState", "useFlush", "space", "state", "setState", "useState", "resetTimer", "useRef", "handleFlush", "useCallback", "queueMicrotask", "current", "clearTimeout", "db", "flush", "setTimeout", "useState", "useOnline", "online", "setOnline", "useState", "useCallback", "useEffect", "useMemo", "useState", "usePresets", "online", "preset", "setPreset", "useState", "presets", "useMemo", "AiServicePresets", "filter", "provider", "presetOptions", "map", "id", "model", "label", "useEffect", "handlePresetChange", "useCallback", "find", "onPresetChange", "useMemo", "Filter", "Obj", "useReferencesProvider", "space", "useMemo", "undefined", "getReferences", "query", "objects", "db", "Filter", "everything", "run", "filter", "object", "stringMatch", "Obj", "getLabel", "getDXN", "map", "uri", "toString", "label", "resolveReference", "id", "first", "toLowerCase", "startsWith", "React", "IconButton", "useTranslation", "mx", "ChatActions", "classNames", "children", "microphone", "recording", "processing", "onEvent", "t", "useTranslation", "meta", "id", "div", "className", "mx", "IconButton", "disabled", "variant", "icon", "iconOnly", "label", "onClick", "type", "noTooltip", "onMouseDown", "onMouseUp", "onTouchStart", "onTouchEnd", "Option", "React", "useMemo", "useState", "Filter", "Obj", "Type", "Annotation", "useQuery", "IconButton", "Popover", "Select", "useTranslation", "Listbox", "SearchList", "useSearchListResults", "Tabs", "getStyles", "mx", "panelClassNames", "ChatOptions", "db", "context", "blueprintRegistry", "presets", "preset", "onPresetChange", "t", "useTranslation", "meta", "id", "React", "div", "role", "className", "Popover", "Root", "Trigger", "asChild", "IconButton", "variant", "icon", "iconOnly", "label", "Portal", "Content", "side", "classNames", "Viewport", "ObjectsPanel", "Arrow", "Tabs", "orientation", "defaultValue", "defaultActivePart", "tabIndex", "mx", "Tabpanel", "value", "BlueprintsPanel", "ModelsPanel", "Tablist", "IconTab", "blueprints", "useBlueprints", "activeBlueprints", "useActiveBlueprints", "onUpdateBlueprint", "useBlueprintHandlers", "results", "handleSearch", "useSearchListResults", "items", "extract", "blueprint", "name", "SearchList", "onSearch", "map", "isActive", "has", "key", "Item", "checked", "onSelect", "Input", "placeholder", "autoFocus", "Listbox", "onValueChange", "Option", "OptionLabel", "OptionIndicator", "ANY", "types", "useFilteredTypes", "typenames", "useMemo", "type", "typename", "Type", "getTypename", "ns", "sort", "a", "b", "localeCompare", "setTypename", "useState", "anyFilter", "Filter", "or", "objects", "useQuery", "contextObjects", "onUpdateObject", "useContextObjects", "object", "Obj", "getLabel", "length", "findIndex", "obj", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "Annotation", "IconAnnotation", "get", "getOrElse", "DEFAULT_OBJECT_ICON", "undefined", "styles", "getStyles", "iconClassNames", "surfaceText", "getDXN", "Select", "TriggerButton", "density", "ScrollUpButton", "ScrollDownButton", "React", "Select", "Option", "React", "Annotation", "Obj", "Icon", "IconButton", "toLocalizedString", "useTranslation", "getStyles", "mx", "ChatReferences", "classNames", "context", "db", "t", "useTranslation", "meta", "id", "objects", "onUpdateObject", "useContextObjects", "React", "ul", "className", "mx", "map", "obj", "dxn", "Obj", "getDXN", "typename", "getTypename", "label", "getLabel", "ns", "icon", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "Annotation", "IconAnnotation", "get", "getOrElse", "DEFAULT_OBJECT_ICON", "undefined", "styles", "getStyles", "li", "key", "toString", "data-hue", "Icon", "size", "surfaceText", "toLocalizedString", "IconButton", "iconOnly", "variant", "onClick", "React", "useEffect", "useState", "Tooltip", "useTimeout", "Spinner", "mx", "period", "ChatStatusIndicator", "classNames", "preset", "processing", "error", "props", "init", "setInit", "useState", "useEffect", "useTimeout", "React", "div", "role", "className", "mx", "Spinner", "duration", "state", "Tooltip", "Trigger", "asChild", "content", "message", "React", "forwardRef", "useCallback", "useEffect", "useMemo", "useState", "PublicKey", "useForwardedRef", "MarkdownStream", "mx", "keyToFallback", "React", "log", "ToggleContainer", "PromptWidget", "ReasoningWidget", "ReferenceWidget", "SelectWidget", "SuggestionWidget", "SummaryWidget", "Json", "ContentBlock", "getXmlTextChild", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useTranslation", "NumericTabs", "TextCrawl", "ToggleContainer", "Json", "isNonNullable", "safeParseJson", "ToolBlock", "view", "blocks", "t", "useTranslation", "meta", "id", "items", "useMemo", "lastToolCall", "tools", "filter", "block", "_tag", "map", "pending", "toolCallId", "tool", "find", "name", "title", "description", "join", "content", "input", "safeParseJson", "error", "undefined", "result", "isNonNullable", "handleChangeOpen", "useCallback", "setTimeout", "requestMeasure", "length", "React", "ToolContainer", "onChangeOpen", "displayName", "tabsRef", "useRef", "selected", "setSelected", "useState", "open", "setOpen", "useEffect", "current", "focus", "handleSelect", "index", "ToggleContainer", "Root", "classNames", "Header", "TextCrawl", "key", "lines", "item", "autoAdvance", "greedy", "Content", "NumericTabs", "ref", "onSelect", "Json", "data", "replacer", "maxDepth", "maxArrayLen", "maxStringLen", "Fallback", "_tag", "props", "React", "ToggleContainer", "Root", "classNames", "Header", "Content", "Json", "data", "Summary", "text", "componentRegistry", "prompt", "block", "factory", "children", "getXmlTextChild", "PromptWidget", "reasoning", "ReasoningWidget", "reference", "ref", "ReferenceWidget", "select", "options", "map", "option", "filter", "Boolean", "length", "SelectWidget", "suggestion", "SuggestionWidget", "stats", "SummaryWidget", "toolCall", "Component", "ToolBlock", "toolResult", "toolkit", "summary", "json", "blockToMarkdown", "context", "message", "str", "blockToMarkdownImpl", "pending", "log", "JSON", "stringify", "sender", "role", "trim", "dxn", "toString", "getObjectLabel", "join", "updateWidget", "toolCallId", "blocks", "ContentBlock", "createStatsMessage", "reasoningText", "redactedText", "replace", "content", "id", "log", "MessageThreadContext", "_widgetState", "updateWidget", "id", "value", "getObjectLabel", "_id", "MessageSyncer", "_initialMessageId", "_currentMessageIndex", "_currentBlockIndex", "_currentBlockContent", "_context", "_model", "_blockRenderer", "context", "reset", "undefined", "append", "messages", "flush", "map", "message", "blocks", "filter", "block", "pending", "_tag", "view", "state", "doc", "length", "buffer", "process", "content", "push", "join", "dispatch", "changes", "from", "to", "insert", "selection", "anchor", "i", "slice", "j", "currentBlockContent", "startsWith", "ChatThread", "forwardRef", "classNames", "identity", "messages", "error", "cursor", "fadeIn", "debug", "onEvent", "forwardedRef", "controllerRef", "useForwardedRef", "controller", "setController", "useState", "refCallback", "useCallback", "node", "current", "userHue", "useMemo", "profile", "data", "hue", "keyToFallback", "identityKey", "PublicKey", "random", "useEffect", "scrollToBottom", "syncer", "MessageSyncer", "blockToMarkdown", "reset", "append", "handleEvent", "type", "value", "text", "React", "div", "role", "className", "mx", "style", "MarkdownStream", "ref", "registry", "componentRegistry", "ChatContextProvider", "useChatContext", "createContext", "ChatRoot", "children", "chat", "processor", "onEvent", "props", "debug", "setDebug", "useState", "pending", "useAtomValue", "messages", "streaming", "lastPrompt", "useRef", "undefined", "storedMessages", "useQuery", "queue", "target", "Filter", "type", "Message", "useMemo", "dedupeWith", "id", "a", "b", "event", "Event", "useEffect", "on", "ev", "queueMicrotask", "objects", "context", "getObjects", "blueprints", "getBlueprints", "tools", "getTools", "system", "getSystemPrompt", "console", "log", "Object", "values", "map", "tool", "JSON", "stringify", "join", "text", "trim", "length", "current", "request", "message", "retry", "cancel", "emit", "db", "Obj", "getDatabase", "React", "displayName", "CHAT_VIEWPORT_NAME", "ChatViewport", "classNames", "div", "role", "className", "mx", "CHAT_THREAD_NAME", "ChatThread", "identity", "useIdentity", "error", "pipe", "getOrUndefined", "controllerRef", "scrollToBottom", "navigatePrevious", "navigateNext", "handleEvent", "useCallback", "NaturalChatThread", "ref", "CHAT_PROMPT_NAME", "ChatPrompt", "outline", "settings", "placeholder", "expandable", "online", "presets", "preset", "onPresetChange", "onOnlineChange", "t", "useTranslation", "meta", "active", "activeRef", "useDynamicRef", "editorRef", "recordingState", "setRecordingState", "getText", "setText", "focus", "recording", "useVoiceInput", "onUpdate", "extensions", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "shift", "filter", "isTruthy", "handleSubmit", "ChatStatusIndicator", "processing", "ChatEditor", "autoFocus", "lineWrapping", "onSubmit", "ChatOptions", "blueprintRegistry", "ChatReferences", "ChatActions", "microphone", "Input", "Root", "Label", "srOnly", "Switch", "checked", "onCheckedChange", "CHAT_TOOLBAR_NAME", "ChatToolbar", "companionTo", "menu", "useChatToolbarActions", "Menu", "attendableId", "getDXN", "toString", "Toolbar", "textBlockWidth", "Chat", "Viewport", "Thread", "Prompt", "defaultHighlightStyle", "syntaxHighlighting", "React", "createDocAccessor", "useThemeContext", "useTranslation", "useTextEditor", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "mx", "isNonNullable", "autocompletion", "completionKeymap", "RangeSetBuilder", "Decoration", "ViewPlugin", "WidgetType", "keymap", "Domino", "mx", "handlebars", "_", "handlebarsHighlightPlugin", "autocompletion", "activateOnTyping", "aboveCursor", "closeOnBlur", "override", "handlebarsCompletions", "keymap", "of", "completionKeymap", "regex", "comment", "brackets", "command", "var", "dxn", "url", "tagPadding", "ViewPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "selectionSet", "selection", "state", "main", "from", "to", "visibleRanges", "text", "doc", "sliceString", "match", "exec", "start", "index", "end", "length", "overlaps", "push", "decoration", "Decoration", "widget", "DXNWidget", "mark", "class", "mx", "parts", "split", "idx", "sort", "a", "b", "builder", "RangeSetBuilder", "add", "finish", "v", "WidgetType", "_identifier", "ignoreEvent", "eq", "other", "toDOM", "map", "part", "len", "plen", "slice", "join", "Domino", "classNames", "root", "variables", "commands", "context", "matchBefore", "type", "matches", "startsWith", "lastIndexOf", "options", "filter", "name", "label", "syntaxTree", "RangeSetBuilder", "Decoration", "ViewPlugin", "xmlDecorator", "_", "xmlDecoratorPlugin", "ViewPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "builder", "RangeSetBuilder", "from", "to", "visibleRanges", "syntaxTree", "state", "iterate", "enter", "node", "name", "add", "Decoration", "mark", "class", "finish", "v", "TemplateEditor", "id", "classNames", "template", "lineNumbers", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "text", "source", "target", "initialValue", "content", "extensions", "createDataExtensions", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineWrapping", "placeholder", "createThemeExtensions", "slots", "className", "createMarkdownExtensions", "decorateMarkdown", "handlebars", "xmlDecorator", "syntaxHighlighting", "defaultHighlightStyle", "filter", "isNonNullable", "React", "div", "ref", "mx", "React", "Fragment", "useEffect", "useState", "Function", "log", "Filter", "useQuery", "ScrollArea", "mx", "Toolbox", "classNames", "functions", "services", "blueprints", "activeBlueprints", "React", "ScrollArea", "Root", "thin", "orientation", "Viewport", "length", "Section", "title", "items", "map", "name", "description", "tools", "subitems", "toolId", "safeToolId", "target", "service", "serviceId", "striped", "stripeClassNames", "gridClassNames", "subGridClassNames", "mx", "div", "h1", "className", "i", "Fragment", "key", "ToolboxContainer", "db", "processor", "useQuery", "Filter", "type", "ServiceType", "serviceTools", "setServiceTools", "useState", "useEffect", "log", "queueMicrotask", "Function", "context", "getBlueprints", "split", "pop", "useChatToolbarActions", "chat", "companionTo", "invoke", "useOperationInvoker", "db", "useChatContext", "query", "Query", "select", "Filter", "id", "targetOf", "Chat", "CompanionTo", "source", "nothing", "chats", "useQuery", "useMenuActions", "useMemo", "Atom", "make", "builder", "MenuBuilder", "root", "label", "ns", "meta", "action", "icon", "type", "disabled", "invariant", "AssistantOperation", "SetCurrentChat", "undefined", "pipe", "runAndForwardErrors", "gen", "UpdateChatName", "length", "group", "selectCardinality", "variant", "toSorted", "a", "b", "localeCompare", "forEach", "Obj", "getLabel", "typename", "build", "spaceId"]
7
+ }
@@ -0,0 +1,21 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/edge-model-resolver/edge-model-resolver.ts
4
+ import * as AnthropicClient from "@effect/ai-anthropic/AnthropicClient";
5
+ import * as FetchHttpClient from "@effect/platform/FetchHttpClient";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Layer from "effect/Layer";
8
+ import { AnthropicResolver } from "@dxos/ai/resolvers";
9
+ import { Capability } from "@dxos/app-framework";
10
+ import { AppCapabilities } from "@dxos/app-toolkit";
11
+ var edgeModelResolver = Capability.makeModule(() => Effect.succeed([
12
+ Capability.contributes(AppCapabilities.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-YTMFQEN5.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 } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\n\nexport type EdgeModelResolverCapabilities = [Capability.Capability<typeof AppCapabilities.AiModelResolver>];\n\nconst edgeModelResolver = Capability.makeModule<[], EdgeModelResolverCapabilities>(() =>\n Effect.succeed([\n Capability.contributes(\n AppCapabilities.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,kBAAkB;AAC3B,SAASC,uBAAuB;AAIhC,IAAMC,oBAAoBC,WAAWC,WAA8C,MAC1EC,eAAQ;EACbF,WAAWG,YACTC,gBAAgBC,iBAChBC,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", "AppCapabilities", "edgeModelResolver", "Capability", "makeModule", "succeed", "contributes", "AppCapabilities", "AiModelResolver", "AnthropicResolver", "make", "pipe", "provide", "layer", "apiUrl"]
7
+ }