@dxos/plugin-assistant 0.8.4-main.406dc2a → 0.8.4-main.4a85c3132b

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 (596) 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-5LQNBZON.mjs +35 -0
  23. package/dist/lib/browser/blueprint-definition-5LQNBZON.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 +244 -224
  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-CMJWGGJO.mjs +36 -0
  80. package/dist/lib/node-esm/blueprint-definition-CMJWGGJO.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 +244 -224
  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 +27 -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 -10
  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 -77
  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 +1 -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/test-generator.d.ts +5 -4
  288. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  289. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  290. package/dist/types/src/translations.d.ts +359 -27
  291. package/dist/types/src/translations.d.ts.map +1 -1
  292. package/dist/types/src/types/Assistant.d.ts +7 -38
  293. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  294. package/dist/types/src/types/AssistantAction.d.ts +86 -100
  295. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  296. package/dist/types/src/types/capabilities.d.ts +33 -0
  297. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  298. package/dist/types/src/types/events.d.ts +5 -0
  299. package/dist/types/src/types/events.d.ts.map +1 -0
  300. package/dist/types/src/types/index.d.ts +4 -1
  301. package/dist/types/src/types/index.d.ts.map +1 -1
  302. package/dist/types/src/types/service.d.ts +10 -212
  303. package/dist/types/src/types/service.d.ts.map +1 -1
  304. package/dist/types/tsconfig.tsbuildinfo +1 -1
  305. package/package.json +120 -91
  306. package/src/AssistantPlugin.tsx +117 -112
  307. package/src/blueprints/assistant/blueprint.conversations.json +1 -0
  308. package/src/blueprints/assistant/blueprint.test.ts +48 -0
  309. package/src/blueprints/assistant/blueprint.ts +27 -0
  310. package/src/blueprints/assistant/index.ts +5 -0
  311. package/src/{components/Toolbar → blueprints}/index.ts +1 -1
  312. package/src/capabilities/ai-service/ai-service.ts +30 -0
  313. package/src/capabilities/ai-service/index.ts +7 -0
  314. package/src/capabilities/app-graph-builder/app-graph-builder.ts +198 -0
  315. package/src/capabilities/app-graph-builder/index.ts +7 -0
  316. package/src/capabilities/blueprint-definition/blueprint-definition.ts +50 -0
  317. package/src/capabilities/blueprint-definition/index.ts +7 -0
  318. package/src/capabilities/edge-model-resolver/edge-model-resolver.ts +33 -0
  319. package/src/capabilities/edge-model-resolver/index.ts +7 -0
  320. package/src/capabilities/index.ts +10 -14
  321. package/src/capabilities/local-model-resolver/index.ts +7 -0
  322. package/src/capabilities/local-model-resolver/local-model-resolver.ts +38 -0
  323. package/src/capabilities/operation-resolver/index.ts +7 -0
  324. package/src/capabilities/operation-resolver/operation-resolver.ts +121 -0
  325. package/src/capabilities/react-surface/index.ts +7 -0
  326. package/src/capabilities/react-surface/react-surface.tsx +121 -0
  327. package/src/capabilities/repair/index.ts +7 -0
  328. package/src/capabilities/repair/repair.ts +69 -0
  329. package/src/capabilities/settings/index.ts +7 -0
  330. package/src/capabilities/settings/settings.ts +31 -0
  331. package/src/capabilities/state/index.ts +7 -0
  332. package/src/capabilities/state/state.ts +27 -0
  333. package/src/capabilities/toolkit/index.ts +7 -0
  334. package/src/capabilities/toolkit/toolkit.ts +15 -0
  335. package/src/components/Chat/Chat.tsx +203 -131
  336. package/src/components/Chat/events.ts +7 -1
  337. package/src/components/ChatProgress/ChatProgress.tsx +6 -20
  338. package/src/components/ChatPrompt/ChatActions.tsx +12 -6
  339. package/src/components/ChatPrompt/ChatOptions.tsx +119 -86
  340. package/src/components/ChatPrompt/ChatReferences.tsx +19 -10
  341. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
  342. package/src/components/ChatThread/ChatThread.stories.tsx +59 -38
  343. package/src/components/ChatThread/ChatThread.tsx +37 -38
  344. package/src/components/ChatThread/Link.tsx +4 -4
  345. package/src/components/ChatThread/registry.tsx +72 -49
  346. package/src/components/ChatThread/sync.test.ts +35 -17
  347. package/src/components/ChatThread/sync.ts +61 -14
  348. package/src/components/ChatThread/testing/thread.md +37 -0
  349. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +17 -7
  350. package/src/components/TemplateEditor/TemplateEditor.tsx +25 -13
  351. package/src/components/TemplateEditor/TemplateForm.stories.tsx +17 -9
  352. package/src/components/TemplateEditor/TemplateForm.tsx +80 -34
  353. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +274 -0
  354. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  355. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  356. package/src/components/ToolBlock/ToolBlock.tsx +39 -48
  357. package/src/components/Toolbox/Toolbox.stories.tsx +11 -12
  358. package/src/components/Toolbox/Toolbox.tsx +52 -54
  359. package/src/components/Typewriter/AssistantToolbar.tsx +161 -0
  360. package/src/components/Typewriter/Typewriter.stories.tsx +86 -0
  361. package/src/components/Typewriter/Typewriter.tsx +54 -0
  362. package/src/components/Typewriter/assistant-extension.tsx +142 -0
  363. package/src/components/Typewriter/index.ts +5 -0
  364. package/src/components/index.ts +0 -12
  365. package/src/{components → containers}/AssistantSettings/AssistantSettings.tsx +28 -20
  366. package/src/containers/AssistantSettings/index.ts +7 -0
  367. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +30 -0
  368. package/src/containers/BlueprintArticle/index.ts +7 -0
  369. package/src/containers/ChatCompanion/ChatCompanion.tsx +225 -0
  370. package/src/containers/ChatCompanion/index.ts +7 -0
  371. package/src/containers/ChatContainer/ChatContainer.tsx +69 -0
  372. package/src/containers/ChatContainer/index.ts +7 -0
  373. package/src/{components → containers/ChatDialog}/ChatDialog.tsx +18 -14
  374. package/src/containers/ChatDialog/index.ts +7 -0
  375. package/src/containers/Project/ProjectArticle.tsx +117 -0
  376. package/src/containers/Project/ProjectSettings.tsx +118 -0
  377. package/src/containers/Project/index.ts +16 -0
  378. package/src/containers/Project/triggers.ts +131 -0
  379. package/src/containers/PromptArticle/PromptArticle.tsx +59 -0
  380. package/src/containers/PromptArticle/index.ts +7 -0
  381. package/src/containers/TriggerStatus/TriggerStatus.tsx +150 -0
  382. package/src/containers/TriggerStatus/index.ts +7 -0
  383. package/src/containers/index.ts +15 -0
  384. package/src/hooks/index.ts +2 -1
  385. package/src/hooks/useBlueprintRegistry.ts +35 -21
  386. package/src/hooks/useChatProcessor.ts +17 -13
  387. package/src/hooks/useChatServices.ts +16 -18
  388. package/src/hooks/useChatToolbarActions.ts +122 -0
  389. package/src/hooks/useContextBinder.ts +9 -7
  390. package/src/hooks/useContextObjects.ts +13 -25
  391. package/src/hooks/useFilteredTypes.ts +37 -0
  392. package/src/hooks/useReferencesProvider.ts +5 -8
  393. package/src/index.ts +1 -1
  394. package/src/meta.ts +8 -3
  395. package/src/processor/index.ts +1 -0
  396. package/src/processor/presets.ts +1 -1
  397. package/src/processor/processor.test.ts +17 -25
  398. package/src/processor/processor.ts +83 -89
  399. package/src/processor/update-name.ts +58 -0
  400. package/src/queue-logger.ts +8 -9
  401. package/src/testing/test-generator.ts +14 -13
  402. package/src/testing/test-sequence.ts +3 -3
  403. package/src/testing/test-services.ts +8 -6
  404. package/src/translations.ts +52 -19
  405. package/src/types/Assistant.ts +4 -40
  406. package/src/types/AssistantAction.ts +67 -53
  407. package/src/types/capabilities.ts +27 -0
  408. package/src/types/events.ts +11 -0
  409. package/src/types/index.ts +6 -1
  410. package/src/types/service.ts +14 -11
  411. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs +0 -28
  412. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs.map +0 -7
  413. package/dist/lib/browser/ChatCompanion-BDZ55ZRF.mjs +0 -150
  414. package/dist/lib/browser/ChatCompanion-BDZ55ZRF.mjs.map +0 -7
  415. package/dist/lib/browser/ChatContainer-RYGNN73X.mjs +0 -73
  416. package/dist/lib/browser/ChatContainer-RYGNN73X.mjs.map +0 -7
  417. package/dist/lib/browser/ChatDialog-MVHH2U66.mjs +0 -86
  418. package/dist/lib/browser/ChatDialog-MVHH2U66.mjs.map +0 -7
  419. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs +0 -150
  420. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs.map +0 -7
  421. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +0 -19
  422. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +0 -7
  423. package/dist/lib/browser/app-graph-builder-2U7SLCRX.mjs +0 -154
  424. package/dist/lib/browser/app-graph-builder-2U7SLCRX.mjs.map +0 -7
  425. package/dist/lib/browser/blueprint-definition-NSJARW5U.mjs +0 -12
  426. package/dist/lib/browser/chunk-2CE2KPKZ.mjs +0 -175
  427. package/dist/lib/browser/chunk-2CE2KPKZ.mjs.map +0 -7
  428. package/dist/lib/browser/chunk-43I2LR6O.mjs +0 -216
  429. package/dist/lib/browser/chunk-43I2LR6O.mjs.map +0 -7
  430. package/dist/lib/browser/chunk-5EGXHCAZ.mjs +0 -16
  431. package/dist/lib/browser/chunk-5EGXHCAZ.mjs.map +0 -7
  432. package/dist/lib/browser/chunk-5RICKAMN.mjs +0 -18
  433. package/dist/lib/browser/chunk-5RICKAMN.mjs.map +0 -7
  434. package/dist/lib/browser/chunk-CQ7UHYTT.mjs +0 -296
  435. package/dist/lib/browser/chunk-CQ7UHYTT.mjs.map +0 -7
  436. package/dist/lib/browser/chunk-FP56WB24.mjs +0 -212
  437. package/dist/lib/browser/chunk-FP56WB24.mjs.map +0 -7
  438. package/dist/lib/browser/chunk-JZRZVB2A.mjs +0 -170
  439. package/dist/lib/browser/chunk-JZRZVB2A.mjs.map +0 -7
  440. package/dist/lib/browser/chunk-WRJGOT5P.mjs +0 -1794
  441. package/dist/lib/browser/chunk-WRJGOT5P.mjs.map +0 -7
  442. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +0 -18
  443. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +0 -7
  444. package/dist/lib/browser/intent-resolver-3GOJMBXJ.mjs +0 -114
  445. package/dist/lib/browser/intent-resolver-3GOJMBXJ.mjs.map +0 -7
  446. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +0 -17
  447. package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +0 -7
  448. package/dist/lib/browser/react-surface-FTKCE6GG.mjs +0 -107
  449. package/dist/lib/browser/react-surface-FTKCE6GG.mjs.map +0 -7
  450. package/dist/lib/browser/settings-HBF32KV6.mjs +0 -23
  451. package/dist/lib/browser/settings-HBF32KV6.mjs.map +0 -7
  452. package/dist/lib/browser/state-LXTS54DI.mjs +0 -21
  453. package/dist/lib/browser/state-LXTS54DI.mjs.map +0 -7
  454. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs +0 -199
  455. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs.map +0 -7
  456. package/dist/lib/node-esm/BlueprintContainer-4MKN6ZRB.mjs +0 -29
  457. package/dist/lib/node-esm/BlueprintContainer-4MKN6ZRB.mjs.map +0 -7
  458. package/dist/lib/node-esm/ChatCompanion-XFNXVZIP.mjs +0 -151
  459. package/dist/lib/node-esm/ChatCompanion-XFNXVZIP.mjs.map +0 -7
  460. package/dist/lib/node-esm/ChatContainer-UTJGCQXF.mjs +0 -74
  461. package/dist/lib/node-esm/ChatContainer-UTJGCQXF.mjs.map +0 -7
  462. package/dist/lib/node-esm/ChatDialog-QEYZ4IOV.mjs +0 -87
  463. package/dist/lib/node-esm/ChatDialog-QEYZ4IOV.mjs.map +0 -7
  464. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs +0 -151
  465. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs.map +0 -7
  466. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +0 -20
  467. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +0 -7
  468. package/dist/lib/node-esm/app-graph-builder-OKNLR7H2.mjs +0 -155
  469. package/dist/lib/node-esm/app-graph-builder-OKNLR7H2.mjs.map +0 -7
  470. package/dist/lib/node-esm/blueprint-definition-WD2IVMAI.mjs +0 -13
  471. package/dist/lib/node-esm/chunk-73ABYRYX.mjs.map +0 -7
  472. package/dist/lib/node-esm/chunk-DSE2IILK.mjs +0 -217
  473. package/dist/lib/node-esm/chunk-DSE2IILK.mjs.map +0 -7
  474. package/dist/lib/node-esm/chunk-E2WXZND7.mjs +0 -297
  475. package/dist/lib/node-esm/chunk-E2WXZND7.mjs.map +0 -7
  476. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs +0 -171
  477. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs.map +0 -7
  478. package/dist/lib/node-esm/chunk-TNR46C3L.mjs +0 -213
  479. package/dist/lib/node-esm/chunk-TNR46C3L.mjs.map +0 -7
  480. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs +0 -177
  481. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs.map +0 -7
  482. package/dist/lib/node-esm/chunk-UFKLCEAE.mjs +0 -1795
  483. package/dist/lib/node-esm/chunk-UFKLCEAE.mjs.map +0 -7
  484. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs +0 -17
  485. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs.map +0 -7
  486. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +0 -19
  487. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +0 -7
  488. package/dist/lib/node-esm/intent-resolver-6XLVTRDJ.mjs +0 -115
  489. package/dist/lib/node-esm/intent-resolver-6XLVTRDJ.mjs.map +0 -7
  490. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +0 -18
  491. package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +0 -7
  492. package/dist/lib/node-esm/react-surface-K7ZXQLAP.mjs +0 -108
  493. package/dist/lib/node-esm/react-surface-K7ZXQLAP.mjs.map +0 -7
  494. package/dist/lib/node-esm/settings-CWP6MTWP.mjs +0 -24
  495. package/dist/lib/node-esm/settings-CWP6MTWP.mjs.map +0 -7
  496. package/dist/lib/node-esm/state-BO6GUFLB.mjs +0 -22
  497. package/dist/lib/node-esm/state-BO6GUFLB.mjs.map +0 -7
  498. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs +0 -200
  499. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs.map +0 -7
  500. package/dist/types/src/capabilities/ai-service.d.ts +0 -4
  501. package/dist/types/src/capabilities/ai-service.d.ts.map +0 -1
  502. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  503. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  504. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -7
  505. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  506. package/dist/types/src/capabilities/capabilities.d.ts +0 -11
  507. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  508. package/dist/types/src/capabilities/edge-model-resolver.d.ts +0 -4
  509. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +0 -1
  510. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  511. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  512. package/dist/types/src/capabilities/local-model-resolver.d.ts +0 -10
  513. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +0 -1
  514. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  515. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  516. package/dist/types/src/capabilities/settings.d.ts +0 -4
  517. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  518. package/dist/types/src/capabilities/state.d.ts +0 -4
  519. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  520. package/dist/types/src/capabilities/toolkit.d.ts +0 -4
  521. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  522. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +0 -6
  523. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +0 -1
  524. package/dist/types/src/components/AssistantSettings/index.d.ts +0 -2
  525. package/dist/types/src/components/AssistantSettings/index.d.ts.map +0 -1
  526. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  527. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  528. package/dist/types/src/components/ChatCompanion.d.ts +0 -13
  529. package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
  530. package/dist/types/src/components/ChatContainer.d.ts +0 -11
  531. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  532. package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
  533. package/dist/types/src/components/ChatThread/reducers.d.ts +0 -40
  534. package/dist/types/src/components/ChatThread/reducers.d.ts.map +0 -1
  535. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  536. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  537. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  538. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  539. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  540. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  541. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -269
  542. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  543. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  544. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  545. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  546. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -5
  547. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  548. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  549. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  550. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  551. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  552. package/dist/types/src/events.d.ts +0 -4
  553. package/dist/types/src/events.d.ts.map +0 -1
  554. package/dist/types/src/functions/analysis.d.ts +0 -5
  555. package/dist/types/src/functions/analysis.d.ts.map +0 -1
  556. package/dist/types/src/functions/index.d.ts +0 -4
  557. package/dist/types/src/functions/index.d.ts.map +0 -1
  558. package/dist/types/src/functions/list.d.ts +0 -10
  559. package/dist/types/src/functions/list.d.ts.map +0 -1
  560. package/dist/types/src/functions/load.d.ts +0 -8
  561. package/dist/types/src/functions/load.d.ts.map +0 -1
  562. package/dist/types/src/hooks/useItemTypes.d.ts +0 -4
  563. package/dist/types/src/hooks/useItemTypes.d.ts.map +0 -1
  564. package/src/capabilities/ai-service.ts +0 -27
  565. package/src/capabilities/app-graph-builder.ts +0 -163
  566. package/src/capabilities/blueprint-definition.ts +0 -64
  567. package/src/capabilities/capabilities.ts +0 -18
  568. package/src/capabilities/edge-model-resolver.ts +0 -25
  569. package/src/capabilities/intent-resolver.ts +0 -96
  570. package/src/capabilities/local-model-resolver.ts +0 -30
  571. package/src/capabilities/react-surface.tsx +0 -91
  572. package/src/capabilities/settings.ts +0 -19
  573. package/src/capabilities/state.ts +0 -20
  574. package/src/capabilities/toolkit.ts +0 -168
  575. package/src/components/AssistantSettings/index.ts +0 -5
  576. package/src/components/BlueprintContainer.tsx +0 -24
  577. package/src/components/ChatCompanion.tsx +0 -136
  578. package/src/components/ChatContainer.tsx +0 -51
  579. package/src/components/ChatThread/reducers.ts +0 -151
  580. package/src/components/PromptSettings.tsx +0 -90
  581. package/src/components/SequenceContainer.tsx +0 -131
  582. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -35
  583. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  584. package/src/components/SequenceEditor/index.ts +0 -5
  585. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  586. package/src/components/Toolbar/Toolbar.tsx +0 -21
  587. package/src/components/Toolbar/useChatToolbarActions.ts +0 -126
  588. package/src/events.ts +0 -11
  589. package/src/functions/analysis.ts +0 -22
  590. package/src/functions/index.ts +0 -7
  591. package/src/functions/list.ts +0 -48
  592. package/src/functions/load.ts +0 -46
  593. package/src/hooks/useItemTypes.ts +0 -37
  594. /package/dist/lib/browser/{blueprint-definition-NSJARW5U.mjs.map → ChatContainer-ZGRSZ5EU.mjs.map} +0 -0
  595. /package/dist/lib/{node-esm/blueprint-definition-WD2IVMAI.mjs.map → browser/blueprints/index.mjs.map} +0 -0
  596. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -1,1794 +0,0 @@
1
- import {
2
- meta
3
- } from "./chunk-5RICKAMN.mjs";
4
-
5
- // src/hooks/useBlueprintRegistry.ts
6
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
7
- import { useSignalEffect } from "@preact/signals-react";
8
- import { useCallback, useMemo, useState } from "react";
9
- import { Capabilities, useCapabilities } from "@dxos/app-framework";
10
- import { Blueprint } from "@dxos/blueprints";
11
- import { Filter, Obj, Ref } from "@dxos/echo";
12
- import { useQuery } from "@dxos/react-client/echo";
13
- import { distinctBy, isNonNullable } from "@dxos/util";
14
- var useBlueprintRegistry = () => {
15
- const blueprints = useCapabilities(Capabilities.BlueprintDefinition);
16
- return useMemo(() => new Blueprint.Registry(blueprints), [
17
- blueprints
18
- ]);
19
- };
20
- var useBlueprints = ({ blueprintRegistry, space }) => {
21
- const staticBlueprints = useMemo(() => blueprintRegistry?.query() ?? [], [
22
- blueprintRegistry
23
- ]);
24
- const spaceBlueprints = useQuery(space, Filter.type(Blueprint.Blueprint));
25
- return useMemo(() => {
26
- const blueprints = distinctBy([
27
- ...staticBlueprints,
28
- ...spaceBlueprints
29
- ], (b) => b.key);
30
- blueprints.sort(({ name: a }, { name: b }) => a.localeCompare(b));
31
- return blueprints;
32
- }, [
33
- staticBlueprints,
34
- spaceBlueprints
35
- ]);
36
- };
37
- var useActiveBlueprints = ({ context }) => {
38
- var _effect = _useSignals();
39
- try {
40
- const [active, setActive] = useState(/* @__PURE__ */ new Map());
41
- useSignalEffect(() => {
42
- const refs = [
43
- ...context?.blueprints.value ?? []
44
- ];
45
- const blueprints = refs.map((ref) => ref.target).filter(isNonNullable);
46
- setActive(new Map(blueprints.map((blueprint) => [
47
- blueprint.key,
48
- blueprint
49
- ])));
50
- });
51
- return active;
52
- } finally {
53
- _effect.f();
54
- }
55
- };
56
- var useBlueprintHandlers = ({ space, context, blueprintRegistry }) => {
57
- const onUpdateBlueprint = useCallback(async (key, checked) => {
58
- if (!context || !blueprintRegistry) {
59
- return;
60
- }
61
- const { objects } = await space.db.query(Filter.type(Blueprint.Blueprint)).run();
62
- let storedBlueprint = objects.find((blueprint) => blueprint.key === key);
63
- if (checked) {
64
- if (!storedBlueprint) {
65
- const blueprint = blueprintRegistry.getByKey(key);
66
- if (!blueprint) {
67
- return;
68
- }
69
- storedBlueprint = space.db.add(Obj.clone(blueprint));
70
- }
71
- await context.bind({
72
- blueprints: [
73
- Ref.make(storedBlueprint)
74
- ]
75
- });
76
- } else if (storedBlueprint) {
77
- await context.unbind({
78
- blueprints: [
79
- Ref.make(storedBlueprint)
80
- ]
81
- });
82
- }
83
- }, [
84
- space,
85
- context,
86
- blueprintRegistry
87
- ]);
88
- return {
89
- onUpdateBlueprint
90
- };
91
- };
92
-
93
- // src/hooks/useChatProcessor.ts
94
- import { RegistryContext } from "@effect-rx/rx-react";
95
- import { useContext, useMemo as useMemo2, useState as useState2 } from "react";
96
- import { AiConversation } from "@dxos/assistant";
97
- import { log as log2 } from "@dxos/log";
98
- import { useAsyncEffect } from "@dxos/react-ui";
99
-
100
- // src/processor/presets.ts
101
- import * as Schema from "effect/Schema";
102
- var ModelProviders = [
103
- "dxos-local",
104
- "dxos-remote",
105
- "lm-studio"
106
- ];
107
- var ModelProvider = Schema.Literal(...ModelProviders);
108
- var createModelLabel = (model) => {
109
- const parts = model.split("/");
110
- return parts[parts.length - 1];
111
- };
112
- var AiServicePresets = [
113
- {
114
- provider: "dxos-remote",
115
- model: "@anthropic/claude-opus-4-0"
116
- },
117
- {
118
- provider: "dxos-remote",
119
- model: "@anthropic/claude-sonnet-4-0"
120
- },
121
- {
122
- provider: "dxos-remote",
123
- model: "@anthropic/claude-3-5-haiku-20241022"
124
- },
125
- {
126
- provider: "lm-studio",
127
- model: "@google/gemma-3-27b"
128
- },
129
- {
130
- provider: "lm-studio",
131
- model: "@mlx-community/llama-3.2-3b-instruct"
132
- },
133
- {
134
- model: "deepseek-r1:latest",
135
- provider: "dxos-local"
136
- }
137
- ].map(({ model, provider }, i) => ({
138
- id: `preset-${i}`,
139
- provider,
140
- model,
141
- label: createModelLabel(model)
142
- }));
143
-
144
- // src/processor/processor.ts
145
- import { Registry, Rx } from "@effect-rx/rx-react";
146
- import * as Cause from "effect/Cause";
147
- import * as Effect from "effect/Effect";
148
- import * as Exit from "effect/Exit";
149
- import * as Fiber from "effect/Fiber";
150
- import * as Option from "effect/Option";
151
- import * as Runtime from "effect/Runtime";
152
- import { AiService, DEFAULT_EDGE_MODEL } from "@dxos/ai";
153
- import { AiSession, ArtifactDiffResolver, GenerationObserver, createSystemPrompt } from "@dxos/assistant";
154
- import { Obj as Obj2 } from "@dxos/echo";
155
- import { throwCause } from "@dxos/effect";
156
- import { log } from "@dxos/log";
157
- import { DataType } from "@dxos/schema";
158
- import { trim } from "@dxos/util";
159
- function _define_property(obj, key, value) {
160
- if (key in obj) {
161
- Object.defineProperty(obj, key, {
162
- value,
163
- enumerable: true,
164
- configurable: true,
165
- writable: true
166
- });
167
- } else {
168
- obj[key] = value;
169
- }
170
- return obj;
171
- }
172
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/processor/processor.ts";
173
- var defaultOptions = {
174
- model: DEFAULT_EDGE_MODEL
175
- };
176
- var AiChatProcessor = class {
177
- get context() {
178
- return this._conversation.context;
179
- }
180
- get conversation() {
181
- return this._conversation;
182
- }
183
- get blueprintRegistry() {
184
- return this._options.blueprintRegistry;
185
- }
186
- /**
187
- * Initiates a new request.
188
- */
189
- async request(requestParam) {
190
- if (this._fiber) {
191
- await this.cancel();
192
- }
193
- try {
194
- this._lastRequest = requestParam;
195
- this._rx.set(this.error, Option.none());
196
- this._rx.set(this.active, true);
197
- const request = this._conversation.createRequest({
198
- system: this._options.system,
199
- prompt: requestParam.message,
200
- observer: this._observer
201
- });
202
- const runtime2 = await this._services();
203
- this._fiber = request.pipe(
204
- Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),
205
- // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.
206
- Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),
207
- Effect.asVoid,
208
- Runtime.runFork(runtime2)
209
- );
210
- const response = await this._fiber.pipe(Fiber.join, Effect.runPromiseExit);
211
- if (!Exit.isSuccess(response) && !Cause.isInterruptedOnly(response.cause)) {
212
- throwCause(response.cause);
213
- }
214
- this._rx.set(this.error, Option.none());
215
- this._lastRequest = void 0;
216
- this._fiber = void 0;
217
- } catch (error) {
218
- log.error("request failed", {
219
- error
220
- }, {
221
- F: __dxlog_file,
222
- L: 187,
223
- S: this,
224
- C: (f, a) => f(...a)
225
- });
226
- this._rx.set(this.error, Option.some(new Error("AI service error", {
227
- cause: error
228
- })));
229
- } finally {
230
- this._fiber = void 0;
231
- this._rx.set(this.active, false);
232
- }
233
- }
234
- /**
235
- * Cancels the current request.
236
- */
237
- async cancel() {
238
- await Effect.runPromise(Effect.gen(this, function* () {
239
- if (this._fiber) {
240
- yield* this._fiber.pipe(Fiber.interrupt);
241
- }
242
- }));
243
- this._fiber = void 0;
244
- this._rx.set(this.active, false);
245
- }
246
- /**
247
- * Retry last failed request.
248
- */
249
- async retry() {
250
- if (this._lastRequest) {
251
- return this.request(this._lastRequest);
252
- }
253
- }
254
- /**
255
- * Update the current chat's name.
256
- */
257
- async updateName(chat) {
258
- const runtime2 = await this._services();
259
- const system = trim`
260
- It is extremely important that you respond only with the title and nothing else.
261
- If you cannot do this effectively respond with "New Chat".
262
- `;
263
- const history = await this._conversation.getHistory();
264
- const fiber = Effect.gen(this, function* () {
265
- const session = new AiSession();
266
- return yield* session.run({
267
- system,
268
- prompt: "Suggest a name for this chat",
269
- history
270
- });
271
- }).pipe(
272
- // TODO(burdon): Use simpler model.
273
- Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),
274
- Effect.tap((messages) => {
275
- const message = messages.find((message2) => message2.sender.role === "assistant");
276
- const title = message?.blocks.find((b) => b._tag === "text")?.text;
277
- if (title) {
278
- chat.name = title;
279
- }
280
- }),
281
- Runtime.runFork(runtime2)
282
- );
283
- const response = await fiber.pipe(Fiber.join, Effect.runPromiseExit);
284
- if (!Exit.isSuccess(response)) {
285
- throwCause(response.cause);
286
- }
287
- }
288
- constructor(_conversation, _services, _options = defaultOptions) {
289
- _define_property(this, "_conversation", void 0);
290
- _define_property(this, "_services", void 0);
291
- _define_property(this, "_options", void 0);
292
- _define_property(this, "_rx", void 0);
293
- _define_property(this, "_observer", void 0);
294
- _define_property(this, "_fiber", void 0);
295
- _define_property(this, "_lastRequest", void 0);
296
- _define_property(this, "_pending", void 0);
297
- _define_property(this, "_streaming", void 0);
298
- _define_property(this, "streaming", void 0);
299
- _define_property(this, "active", void 0);
300
- _define_property(this, "messages", void 0);
301
- _define_property(this, "error", void 0);
302
- _define_property(this, "_artifactDiffResolver", void 0);
303
- _define_property(this, "_onMessage", void 0);
304
- _define_property(this, "_onBlock", void 0);
305
- this._conversation = _conversation;
306
- this._services = _services;
307
- this._options = _options;
308
- this._pending = Rx.make([]);
309
- this._streaming = Rx.make(Option.none());
310
- this.streaming = Rx.make((get) => Option.isSome(get(this._streaming)));
311
- this.active = Rx.make(false);
312
- this.messages = Rx.make((get) => Option.match(get(this._streaming), {
313
- onNone: () => get(this._pending),
314
- onSome: (streaming) => [
315
- ...get(this._pending),
316
- streaming
317
- ]
318
- }));
319
- this.error = Rx.make(Option.none());
320
- this._artifactDiffResolver = {
321
- resolve: async (_artifacts) => {
322
- const versions = /* @__PURE__ */ new Map();
323
- return versions;
324
- }
325
- };
326
- this._onMessage = Effect.fn((function* (message) {
327
- this._rx.set(this._streaming, Option.none());
328
- this._rx.update(this._pending, (pending) => [
329
- ...pending,
330
- message
331
- ]);
332
- }).bind(this));
333
- this._onBlock = Effect.fn((function* (block) {
334
- this._rx.update(this._streaming, (streaming) => {
335
- const blocks = streaming.pipe(Option.map((streaming2) => streaming2.blocks.filter((b) => !b.pending)), Option.getOrElse(() => []));
336
- return Option.some(Obj2.make(DataType.Message, {
337
- created: (/* @__PURE__ */ new Date()).toISOString(),
338
- sender: {
339
- role: "assistant"
340
- },
341
- blocks: [
342
- ...blocks,
343
- block
344
- ]
345
- }));
346
- });
347
- }).bind(this));
348
- this._rx = this._options.observableRegistry ?? Registry.make();
349
- this._observer = GenerationObserver.make({
350
- onBlock: this._onBlock,
351
- onMessage: this._onMessage
352
- });
353
- if (this._options.model && !this._options.system) {
354
- const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};
355
- this._options.system = createSystemPrompt(capabilities);
356
- }
357
- }
358
- };
359
-
360
- // src/hooks/useChatProcessor.ts
361
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.ts";
362
- var useChatProcessor = ({ chat, preset, services, blueprintRegistry, settings }) => {
363
- const observableRegistry = useContext(RegistryContext);
364
- const [conversation, setConversation] = useState2();
365
- useAsyncEffect(async () => {
366
- if (!chat?.queue.target) {
367
- return;
368
- }
369
- const conversation2 = new AiConversation({
370
- queue: chat.queue.target
371
- });
372
- await conversation2.open();
373
- setConversation(conversation2);
374
- return () => {
375
- void conversation2.close();
376
- };
377
- }, [
378
- chat?.queue.target
379
- ]);
380
- const processor = useMemo2(() => {
381
- if (!services || !conversation) {
382
- return void 0;
383
- }
384
- log2("creating processor", {
385
- preset,
386
- model: preset?.model,
387
- settings
388
- }, {
389
- F: __dxlog_file2,
390
- L: 60,
391
- S: void 0,
392
- C: (f, a) => f(...a)
393
- });
394
- return new AiChatProcessor(conversation, services, {
395
- observableRegistry,
396
- blueprintRegistry,
397
- model: preset?.model
398
- });
399
- }, [
400
- services,
401
- conversation,
402
- blueprintRegistry,
403
- preset
404
- ]);
405
- return processor;
406
- };
407
-
408
- // src/hooks/useChatServices.ts
409
- import * as Effect2 from "effect/Effect";
410
- import { useMemo as useMemo3 } from "react";
411
- import { useCapability } from "@dxos/app-framework";
412
- import { TracingService } from "@dxos/functions";
413
- import { AutomationCapabilities } from "@dxos/plugin-automation";
414
- import { useClient } from "@dxos/react-client";
415
- var useChatServices = ({ space, chat }) => {
416
- const client = useClient();
417
- space ?? (space = client.spaces.default);
418
- const computeRuntimeResolver = useCapability(AutomationCapabilities.ComputeRuntime);
419
- return useMemo3(() => {
420
- const runtime2 = computeRuntimeResolver.getRuntime(space.id);
421
- return () => runtime2.runPromise(Effect2.gen(function* () {
422
- return yield* Effect2.runtime().pipe(Effect2.provide(chat?.traceQueue?.target ? TracingService.layerQueue(chat.traceQueue?.target) : TracingService.layerNoop));
423
- }));
424
- }, [
425
- space,
426
- chat?.traceQueue?.target
427
- ]);
428
- };
429
-
430
- // src/hooks/useContextBinder.ts
431
- import { useState as useState3 } from "react";
432
- import { AiContextBinder } from "@dxos/assistant";
433
- import { useAsyncEffect as useAsyncEffect2 } from "@dxos/react-ui";
434
- var useContextBinder = (chat) => {
435
- const [binder, setBinder] = useState3();
436
- useAsyncEffect2(async () => {
437
- if (!chat?.queue.target) {
438
- return;
439
- }
440
- const binder2 = new AiContextBinder(chat.queue.target);
441
- await binder2.open();
442
- setBinder(binder2);
443
- return () => {
444
- void binder2.close();
445
- };
446
- }, [
447
- chat?.queue.target
448
- ]);
449
- return binder;
450
- };
451
-
452
- // src/hooks/useContextObjects.ts
453
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
454
- import { useCallback as useCallback2 } from "react";
455
- import { Ref as Ref2 } from "@dxos/echo";
456
- import { log as log3 } from "@dxos/log";
457
- import { isNonNullable as isNonNullable2 } from "@dxos/util";
458
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useContextObjects.ts";
459
- var useContextObjects = ({ space, context }) => {
460
- var _effect = _useSignals2();
461
- try {
462
- const objects = context?.objects.value.map((ref) => ref.target).filter(isNonNullable2) ?? [];
463
- const handleUpdateObject = useCallback2(async (dxn, checked) => {
464
- if (!space || !context) {
465
- return;
466
- }
467
- const id = dxn.asEchoDXN();
468
- const object = id && await space.db.getObjectById(id.echoId);
469
- if (!object) {
470
- log3.warn("Object not found", {
471
- dxn,
472
- id
473
- }, {
474
- F: __dxlog_file3,
475
- L: 40,
476
- S: void 0,
477
- C: (f, a) => f(...a)
478
- });
479
- return;
480
- }
481
- const ref = Ref2.fromDXN(dxn);
482
- if (checked) {
483
- await context.bind({
484
- objects: [
485
- ref
486
- ]
487
- });
488
- } else {
489
- await context.unbind({
490
- objects: [
491
- ref
492
- ]
493
- });
494
- }
495
- }, [
496
- space,
497
- context
498
- ]);
499
- return {
500
- objects,
501
- onUpdateObject: handleUpdateObject
502
- };
503
- } finally {
504
- _effect.f();
505
- }
506
- };
507
-
508
- // src/hooks/useFlush.ts
509
- import { useCallback as useCallback3, useRef, useState as useState4 } from "react";
510
- var useFlush = (space) => {
511
- const [state, setState] = useState4("idle");
512
- const resetTimer = useRef(null);
513
- const handleFlush = useCallback3(() => {
514
- if (!space) {
515
- return;
516
- }
517
- queueMicrotask(async () => {
518
- if (resetTimer.current) {
519
- clearTimeout(resetTimer.current);
520
- }
521
- setState("flushing");
522
- await space.db.flush();
523
- setState("flushed");
524
- resetTimer.current = setTimeout(() => {
525
- setState("idle");
526
- resetTimer.current = null;
527
- }, 1e3);
528
- });
529
- }, [
530
- space
531
- ]);
532
- return {
533
- state,
534
- handleFlush
535
- };
536
- };
537
-
538
- // src/hooks/useItemTypes.ts
539
- import * as Option2 from "effect/Option";
540
- import { useEffect, useState as useState5 } from "react";
541
- import { ItemAnnotation } from "@dxos/schema";
542
- var useItemTypes = (space) => {
543
- const [types, setTypes] = useState5([]);
544
- useEffect(() => {
545
- if (!space) {
546
- return;
547
- }
548
- return space.db.schemaRegistry.query().subscribe((query) => {
549
- const types2 = Array.from(new Set([
550
- ...space.db.graph.schemaRegistry.schemas,
551
- ...query.results
552
- ].filter((type) => Option2.isSome(ItemAnnotation.get(type)))));
553
- setTypes(types2);
554
- }, {
555
- fire: true
556
- });
557
- }, [
558
- space
559
- ]);
560
- return types;
561
- };
562
-
563
- // src/hooks/useOnline.ts
564
- import { useState as useState6 } from "react";
565
- var useOnline = () => {
566
- const [online, setOnline] = useState6(true);
567
- return [
568
- online,
569
- setOnline
570
- ];
571
- };
572
-
573
- // src/hooks/usePresets.ts
574
- import { useCallback as useCallback4, useEffect as useEffect2, useMemo as useMemo4, useState as useState7 } from "react";
575
- var usePresets = (online) => {
576
- const [preset, setPreset] = useState7();
577
- const presets = useMemo4(() => AiServicePresets.filter((preset2) => online === (preset2.provider === "dxos-remote")), [
578
- online
579
- ]);
580
- const presetOptions = useMemo4(() => presets.map(({ id, model, label }) => ({
581
- id,
582
- label: label ?? model
583
- })), [
584
- presets
585
- ]);
586
- useEffect2(() => {
587
- setPreset(presets[0]);
588
- }, [
589
- presets
590
- ]);
591
- const handlePresetChange = useCallback4((id) => {
592
- const preset2 = presets.find((preset3) => preset3.id === id);
593
- if (preset2) {
594
- setPreset(preset2);
595
- }
596
- }, [
597
- presets
598
- ]);
599
- return {
600
- preset,
601
- presets: presetOptions,
602
- onPresetChange: handlePresetChange
603
- };
604
- };
605
-
606
- // src/hooks/useReferencesProvider.ts
607
- import { useMemo as useMemo5 } from "react";
608
- import { Capabilities as Capabilities2, useCapabilities as useCapabilities2 } from "@dxos/app-framework";
609
- import { Filter as Filter2, Obj as Obj3 } from "@dxos/echo";
610
- var useReferencesProvider = (space) => {
611
- const blueprints = useCapabilities2(Capabilities2.BlueprintDefinition);
612
- return useMemo5(() => {
613
- if (!space) {
614
- return void 0;
615
- }
616
- return {
617
- getReferences: async ({ query }) => {
618
- const { objects } = await space.db.query(Filter2.everything()).run();
619
- return objects.filter((object) => stringMatch(query, Obj3.getLabel(object) ?? "")).filter((object) => !!Obj3.getDXN(object)).map((object) => ({
620
- uri: Obj3.getDXN(object).toString(),
621
- label: Obj3.getLabel(object) ?? ""
622
- }));
623
- },
624
- resolveReference: async ({ uri }) => {
625
- const object = await space.db.query(Filter2.ids(uri)).first();
626
- return {
627
- uri,
628
- label: Obj3.getLabel(object) ?? ""
629
- };
630
- }
631
- };
632
- }, [
633
- space,
634
- blueprints
635
- ]);
636
- };
637
- var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
638
-
639
- // src/components/Chat/Chat.tsx
640
- import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
641
- import { Prec } from "@codemirror/state";
642
- import { keymap } from "@codemirror/view";
643
- import { useRxValue } from "@effect-rx/rx-react";
644
- import { createContext } from "@radix-ui/react-context";
645
- import * as Array2 from "effect/Array";
646
- import * as Option3 from "effect/Option";
647
- import React9, { useCallback as useCallback6, useEffect as useEffect6, useMemo as useMemo9, useRef as useRef3, useState as useState12 } from "react";
648
- import { Event } from "@dxos/async";
649
- import { Obj as Obj6 } from "@dxos/echo";
650
- import { useVoiceInput } from "@dxos/plugin-transcription";
651
- import { getSpace, useQueue } from "@dxos/react-client/echo";
652
- import { useIdentity } from "@dxos/react-client/halo";
653
- import { Input, useDynamicRef, useTranslation as useTranslation5 } from "@dxos/react-ui";
654
- import { ChatEditor, references } from "@dxos/react-ui-chat";
655
- import { mx as mx5 } from "@dxos/react-ui-theme";
656
- import { DataType as DataType2 } from "@dxos/schema";
657
- import { isTruthy } from "@dxos/util";
658
-
659
- // src/components/ChatPrompt/ChatActions.tsx
660
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
661
- import React from "react";
662
- import { IconButton, useTranslation } from "@dxos/react-ui";
663
- import { mx } from "@dxos/react-ui-theme";
664
- var ChatActions = ({ classNames, children, microphone, recording, processing, onEvent }) => {
665
- var _effect = _useSignals3();
666
- try {
667
- const { t } = useTranslation(meta.id);
668
- return /* @__PURE__ */ React.createElement("div", {
669
- className: mx("flex items-center mie-1", classNames)
670
- }, children, /* @__PURE__ */ React.createElement(IconButton, {
671
- disabled: !processing,
672
- variant: "ghost",
673
- size: 5,
674
- icon: "ph--x--regular",
675
- iconOnly: true,
676
- label: t("button cancel processing"),
677
- onClick: () => onEvent?.({
678
- type: "cancel"
679
- })
680
- }), microphone && /* @__PURE__ */ React.createElement(IconButton, {
681
- disabled: !processing,
682
- classNames: mx(recording && "bg-primary-500"),
683
- variant: "ghost",
684
- size: 5,
685
- icon: "ph--microphone--regular",
686
- iconOnly: true,
687
- noTooltip: true,
688
- label: t("button microphone"),
689
- onMouseDown: () => onEvent?.({
690
- type: "record-start"
691
- }),
692
- onMouseUp: () => onEvent?.({
693
- type: "record-stop"
694
- }),
695
- onTouchStart: () => onEvent?.({
696
- type: "record-start"
697
- }),
698
- onTouchEnd: () => onEvent?.({
699
- type: "record-stop"
700
- })
701
- }));
702
- } finally {
703
- _effect.f();
704
- }
705
- };
706
-
707
- // src/components/ChatPrompt/ChatOptions.tsx
708
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
709
- import React2, { useMemo as useMemo6, useState as useState8 } from "react";
710
- import { Filter as Filter3, Obj as Obj4, Type } from "@dxos/echo";
711
- import { useQuery as useQuery2 } from "@dxos/react-client/echo";
712
- import { Icon, IconButton as IconButton2, Popover, Select, useTranslation as useTranslation2 } from "@dxos/react-ui";
713
- import { Listbox, SearchList } from "@dxos/react-ui-searchlist";
714
- import { Tabs } from "@dxos/react-ui-tabs";
715
- var panelClassNames = "is-[calc(100dvw-.5rem)] sm:is-max md:is-72 max-is-[--text-content]";
716
- var ChatOptions = ({ space, context, blueprintRegistry, presets, preset, onPresetChange }) => {
717
- var _effect = _useSignals4();
718
- try {
719
- const { t } = useTranslation2(meta.id);
720
- return /* @__PURE__ */ React2.createElement("div", {
721
- role: "none",
722
- className: "flex gap-0.5"
723
- }, /* @__PURE__ */ React2.createElement(Popover.Root, null, /* @__PURE__ */ React2.createElement(Popover.Trigger, {
724
- asChild: true
725
- }, /* @__PURE__ */ React2.createElement(IconButton2, {
726
- variant: "ghost",
727
- icon: "ph--plus--regular",
728
- iconOnly: true,
729
- size: 5,
730
- label: t("button context objects")
731
- })), /* @__PURE__ */ React2.createElement(Popover.Portal, null, /* @__PURE__ */ React2.createElement(Popover.Content, {
732
- side: "top",
733
- classNames: panelClassNames
734
- }, /* @__PURE__ */ React2.createElement(ObjectsPanel, {
735
- space,
736
- context
737
- }), /* @__PURE__ */ React2.createElement(Popover.Arrow, null)))), /* @__PURE__ */ React2.createElement(Popover.Root, null, /* @__PURE__ */ React2.createElement(Popover.Trigger, {
738
- asChild: true
739
- }, /* @__PURE__ */ React2.createElement(IconButton2, {
740
- variant: "ghost",
741
- icon: "ph--sliders-horizontal--regular",
742
- iconOnly: true,
743
- size: 5,
744
- label: t("button context settings")
745
- })), /* @__PURE__ */ React2.createElement(Popover.Portal, null, /* @__PURE__ */ React2.createElement(Popover.Content, {
746
- side: "top",
747
- classNames: panelClassNames
748
- }, /* @__PURE__ */ React2.createElement(Tabs.Root, {
749
- orientation: "horizontal",
750
- defaultValue: "blueprints",
751
- defaultActivePart: "list",
752
- tabIndex: -1
753
- }, /* @__PURE__ */ React2.createElement(Tabs.Viewport, {
754
- classNames: 'max-bs-[--radix-popover-content-available-height] grid grid-rows-[1fr_min-content] [&_[cmdk-root]]:contents [&_[role="tabpanel"]]:grid [&_[role="tabpanel"]]:grid-rows-[1fr_min-content] [&_[role="listbox"]]:min-bs-0 [&_[role="listbox"]]:overflow-y-auto [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:pli-cardSpacingChrome [&_[role="tabpanel"][data-state="active"]]:order-first [&_[role="tabpanel"][data-state="inactive"]]:hidden'
755
- }, /* @__PURE__ */ React2.createElement(Tabs.Tabpanel, {
756
- value: "blueprints",
757
- tabIndex: -1,
758
- classNames: "dx-focus-ring-inset"
759
- }, /* @__PURE__ */ React2.createElement(BlueprintsPanel, {
760
- blueprintRegistry,
761
- space,
762
- context
763
- })), /* @__PURE__ */ React2.createElement(Tabs.Tabpanel, {
764
- value: "model",
765
- tabIndex: -1,
766
- classNames: "dx-focus-ring-inset !pli-0"
767
- }, /* @__PURE__ */ React2.createElement(ModelsPanel, {
768
- presets,
769
- preset,
770
- onPresetChange
771
- })), /* @__PURE__ */ React2.createElement(Tabs.Tablist, {
772
- classNames: "sm:overflow-x-hidden justify-center p-[--dx-cardSpacingChrome] border-bs border-subduedSeparator order-last"
773
- }, /* @__PURE__ */ React2.createElement(Tabs.IconTab, {
774
- value: "blueprints",
775
- icon: "ph--blueprint--regular",
776
- label: t("blueprints in context title")
777
- }), /* @__PURE__ */ React2.createElement(Tabs.IconTab, {
778
- value: "model",
779
- label: t("chat model title"),
780
- icon: "ph--cpu--regular"
781
- })))), /* @__PURE__ */ React2.createElement(Popover.Arrow, null)))));
782
- } finally {
783
- _effect.f();
784
- }
785
- };
786
- var BlueprintsPanel = ({ blueprintRegistry, space, context }) => {
787
- var _effect = _useSignals4();
788
- try {
789
- const { t } = useTranslation2(meta.id);
790
- const blueprints = useBlueprints({
791
- blueprintRegistry,
792
- space
793
- });
794
- const activeBlueprints = useActiveBlueprints({
795
- context
796
- });
797
- const { onUpdateBlueprint } = useBlueprintHandlers({
798
- space,
799
- context,
800
- blueprintRegistry
801
- });
802
- return /* @__PURE__ */ React2.createElement(SearchList.Root, null, /* @__PURE__ */ React2.createElement(SearchList.Content, {
803
- classNames: "plb-cardSpacingChrome"
804
- }, blueprints.map((blueprint) => {
805
- const isActive = activeBlueprints.has(blueprint.key);
806
- return /* @__PURE__ */ React2.createElement(SearchList.Item, {
807
- classNames: "flex items-center overflow-hidden",
808
- key: blueprint.key,
809
- value: blueprint.name,
810
- onSelect: () => onUpdateBlueprint?.(blueprint.key, !isActive)
811
- }, /* @__PURE__ */ React2.createElement("div", {
812
- className: "grow truncate"
813
- }, blueprint.name), /* @__PURE__ */ React2.createElement(Icon, {
814
- icon: "ph--check--regular",
815
- classNames: [
816
- !isActive && "invisible"
817
- ]
818
- }));
819
- })), /* @__PURE__ */ React2.createElement(SearchList.Input, {
820
- placeholder: t("search placeholder"),
821
- classNames: "mbe-cardSpacingChrome",
822
- autoFocus: true
823
- }));
824
- } finally {
825
- _effect.f();
826
- }
827
- };
828
- var ModelsPanel = ({ presets, preset, onPresetChange }) => {
829
- var _effect = _useSignals4();
830
- try {
831
- return /* @__PURE__ */ React2.createElement(Listbox.Root, {
832
- value: preset,
833
- onValueChange: onPresetChange,
834
- autoFocus: true
835
- }, presets?.map(({ id, label }) => {
836
- return /* @__PURE__ */ React2.createElement(Listbox.Option, {
837
- key: id,
838
- value: id
839
- }, /* @__PURE__ */ React2.createElement(Listbox.OptionLabel, null, label), /* @__PURE__ */ React2.createElement(Listbox.OptionIndicator, null));
840
- }));
841
- } finally {
842
- _effect.f();
843
- }
844
- };
845
- var ANY = "__any__";
846
- var ObjectsPanel = ({ space, context }) => {
847
- var _effect = _useSignals4();
848
- try {
849
- const { t } = useTranslation2(meta.id);
850
- const types = useItemTypes(space);
851
- const typenames = useMemo6(() => {
852
- const typenames2 = types.map((type) => {
853
- const typename2 = Type.getTypename(type);
854
- return {
855
- typename: typename2,
856
- label: t("typename label", {
857
- ns: typename2,
858
- defaultValue: typename2
859
- })
860
- };
861
- });
862
- typenames2.sort((a, b) => a.label.localeCompare(b.label));
863
- return typenames2;
864
- }, [
865
- types
866
- ]);
867
- const [typename, setTypename] = useState8(ANY);
868
- const anyFilter = useMemo6(() => Filter3.or(...typenames.map(({ typename: typename2 }) => Filter3.typename(typename2))), [
869
- typenames
870
- ]);
871
- const objects = useQuery2(space, typename === ANY ? anyFilter : Filter3.typename(typename));
872
- const { objects: contextObjects, onUpdateObject } = useContextObjects({
873
- space,
874
- context
875
- });
876
- return /* @__PURE__ */ React2.createElement(SearchList.Root, null, /* @__PURE__ */ React2.createElement(SearchList.Content, {
877
- classNames: "p-cardSpacingChrome [&:has([cmdk-list-sizer]:empty)]:plb-0"
878
- }, objects.length ? objects.map((object) => {
879
- const label = Obj4.getLabel(object) ?? Obj4.getTypename(object) ?? object.id;
880
- const isActive = contextObjects.findIndex((obj) => obj.id === object.id) !== -1;
881
- return /* @__PURE__ */ React2.createElement(SearchList.Item, {
882
- classNames: "flex items-center overflow-hidden",
883
- key: object.id,
884
- value: object.id,
885
- onSelect: () => onUpdateObject?.(Obj4.getDXN(object), !isActive)
886
- }, /* @__PURE__ */ React2.createElement("div", {
887
- className: "grow truncate"
888
- }, label), /* @__PURE__ */ React2.createElement(Icon, {
889
- icon: "ph--check--regular",
890
- classNames: [
891
- !isActive && "invisible"
892
- ]
893
- }));
894
- }) : /* @__PURE__ */ React2.createElement(SearchList.Item, null, t("no results"))), /* @__PURE__ */ React2.createElement("div", {
895
- role: "none",
896
- className: "grid grid-cols-[min-content_1fr] gap-2 pli-cardSpacingChrome mbe-cardSpacingChrome"
897
- }, /* @__PURE__ */ React2.createElement(Select.Root, {
898
- value: typename === ANY ? void 0 : typename,
899
- onValueChange: setTypename
900
- }, /* @__PURE__ */ React2.createElement(Select.TriggerButton, {
901
- density: "fine",
902
- placeholder: t("type filter placeholder")
903
- }), /* @__PURE__ */ React2.createElement(Select.Portal, null, /* @__PURE__ */ React2.createElement(Select.Content, null, /* @__PURE__ */ React2.createElement(Select.ScrollUpButton, null), /* @__PURE__ */ React2.createElement(Select.Viewport, null, /* @__PURE__ */ React2.createElement(Select.Option, {
904
- value: ANY
905
- }, t("any type filter label")), typenames.map(({ typename: typename2, label }) => /* @__PURE__ */ React2.createElement(Select.Option, {
906
- key: typename2,
907
- value: typename2
908
- }, label))), /* @__PURE__ */ React2.createElement(Select.ScrollDownButton, null), /* @__PURE__ */ React2.createElement(Select.Arrow, null)))), /* @__PURE__ */ React2.createElement(SearchList.Input, {
909
- placeholder: t("search placeholder"),
910
- classNames: "mbe-0",
911
- autoFocus: true
912
- })));
913
- } finally {
914
- _effect.f();
915
- }
916
- };
917
-
918
- // src/components/ChatPrompt/ChatPresets.tsx
919
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
920
- import React3 from "react";
921
- import { Select as Select2 } from "@dxos/react-ui";
922
-
923
- // src/components/ChatPrompt/ChatReferences.tsx
924
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
925
- import React4 from "react";
926
- import { Obj as Obj5 } from "@dxos/echo";
927
- import { IconButton as IconButton3, toLocalizedString, useTranslation as useTranslation3 } from "@dxos/react-ui";
928
- import { mx as mx2 } from "@dxos/react-ui-theme";
929
- var ChatReferences = ({ classNames, context, space }) => {
930
- var _effect = _useSignals6();
931
- try {
932
- const { t } = useTranslation3(meta.id);
933
- const { objects, onUpdateObject } = useContextObjects({
934
- space,
935
- context
936
- });
937
- return /* @__PURE__ */ React4.createElement("ul", {
938
- className: mx2("flex flex-wrap", classNames)
939
- }, objects.map((obj) => {
940
- const dxn = Obj5.getDXN(obj);
941
- const typename = Obj5.getTypename(obj);
942
- const label = Obj5.getLabel(obj) ?? (typename ? [
943
- "object name placeholder",
944
- {
945
- ns: typename
946
- }
947
- ] : obj.id);
948
- return /* @__PURE__ */ React4.createElement("li", {
949
- key: dxn.toString(),
950
- className: "dx-tag plb-0 pis-2 flex items-center",
951
- "data-hue": "neutral"
952
- }, toLocalizedString(label, t), /* @__PURE__ */ React4.createElement(IconButton3, {
953
- iconOnly: true,
954
- variant: "ghost",
955
- label: t("remove object in context label"),
956
- classNames: "p-0 hover:bg-transparent",
957
- size: 3,
958
- icon: "ph--x--bold",
959
- onClick: () => onUpdateObject?.(dxn, false)
960
- }));
961
- }));
962
- } finally {
963
- _effect.f();
964
- }
965
- };
966
-
967
- // src/components/ChatPrompt/ChatStatusIndicator.tsx
968
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
969
- import React5, { useEffect as useEffect3, useState as useState9 } from "react";
970
- import { Tooltip, useTimeout } from "@dxos/react-ui";
971
- import { Spinner } from "@dxos/react-ui-sfx";
972
- import { mx as mx3 } from "@dxos/react-ui-theme";
973
- var period = 3e3;
974
- var ChatStatusIndicator = ({ classNames, preset, processing, error, ...props }) => {
975
- var _effect = _useSignals7();
976
- try {
977
- const [init, setInit] = useState9(false);
978
- useEffect3(() => setInit(false), [
979
- preset
980
- ]);
981
- useTimeout(async () => {
982
- setInit(true);
983
- }, period / 2, [
984
- preset
985
- ]);
986
- return /* @__PURE__ */ React5.createElement("div", {
987
- role: "none",
988
- className: mx3("relative flex", classNames)
989
- }, /* @__PURE__ */ React5.createElement(Spinner, {
990
- duration: period,
991
- state: !init ? "flash" : error ? "error" : processing ? "spin" : "pulse",
992
- ...props
993
- }), error && /* @__PURE__ */ React5.createElement(Tooltip.Trigger, {
994
- asChild: true,
995
- content: error.message
996
- }, /* @__PURE__ */ React5.createElement("div", {
997
- className: "absolute inset-0"
998
- })));
999
- } finally {
1000
- _effect.f();
1001
- }
1002
- };
1003
-
1004
- // src/components/ChatThread/ChatThread.tsx
1005
- import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
1006
- import React8, { forwardRef, useCallback as useCallback5, useEffect as useEffect5, useImperativeHandle, useMemo as useMemo8, useState as useState11 } from "react";
1007
- import { PublicKey } from "@dxos/keys";
1008
- import { MarkdownStream } from "@dxos/react-ui-components";
1009
- import { mx as mx4 } from "@dxos/react-ui-theme";
1010
- import { keyToFallback } from "@dxos/util";
1011
-
1012
- // src/components/ChatThread/registry.tsx
1013
- import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
1014
- import React7 from "react";
1015
- import { log as log4 } from "@dxos/log";
1016
- import { PromptWidget, ReferenceWidget, SelectWidget, SuggestionWidget, SummaryWidget, ToggleContainer as ToggleContainer2 } from "@dxos/react-ui-components";
1017
- import { getXmlTextChild } from "@dxos/react-ui-editor";
1018
- import { Json as Json2 } from "@dxos/react-ui-syntax-highlighter";
1019
- import { ContentBlock } from "@dxos/schema";
1020
-
1021
- // src/components/ToolBlock/ToolBlock.tsx
1022
- import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
1023
- import React6, { useEffect as useEffect4, useMemo as useMemo7, useRef as useRef2, useState as useState10 } from "react";
1024
- import { useTranslation as useTranslation4 } from "@dxos/react-ui";
1025
- import { NumericTabs, TextCrawl, ToggleContainer, chatMessageJson, chatMessagePanel, chatMessagePanelContent, chatMessagePanelHeader } from "@dxos/react-ui-components";
1026
- import { Json } from "@dxos/react-ui-syntax-highlighter";
1027
- import { isNonNullable as isNonNullable3, safeParseJson } from "@dxos/util";
1028
- var ToolBlock = ({ blocks = [] }) => {
1029
- var _effect = _useSignals8();
1030
- try {
1031
- const { t } = useTranslation4(meta.id);
1032
- const getToolCaption = (tool, status) => {
1033
- if (!tool) {
1034
- return t("calling tool label");
1035
- }
1036
- return status?.message ?? tool.description ?? [
1037
- t("calling label"),
1038
- tool.name
1039
- ].join(" ");
1040
- };
1041
- const items = useMemo7(() => {
1042
- let lastToolCall;
1043
- const tools = [];
1044
- return blocks.filter((block) => block._tag === "toolCall" || block._tag === "toolResult" || block._tag === "summary").map((block) => {
1045
- switch (block._tag) {
1046
- case "toolCall": {
1047
- if (block.pending && lastToolCall?.block.toolCallId === block.toolCallId) {
1048
- return null;
1049
- }
1050
- const tool = tools.find((tool2) => tool2.name === block.name);
1051
- lastToolCall = {
1052
- tool,
1053
- block
1054
- };
1055
- return {
1056
- title: getToolCaption(lastToolCall?.tool),
1057
- content: {
1058
- ...block,
1059
- input: safeParseJson(block.input)
1060
- }
1061
- };
1062
- }
1063
- case "toolResult": {
1064
- if (block.error) {
1065
- return {
1066
- title: t("error label"),
1067
- content: block
1068
- };
1069
- }
1070
- const title = getToolCaption(lastToolCall?.tool ?? t("tool result label"));
1071
- lastToolCall = void 0;
1072
- return {
1073
- title,
1074
- content: {
1075
- ...block,
1076
- result: safeParseJson(block.result)
1077
- }
1078
- };
1079
- }
1080
- case "summary": {
1081
- if (!lastToolCall) {
1082
- return null;
1083
- }
1084
- return {
1085
- title: t("summary label"),
1086
- content: block
1087
- };
1088
- }
1089
- }
1090
- }).filter(isNonNullable3);
1091
- }, [
1092
- blocks
1093
- ]);
1094
- if (!items.length) {
1095
- return null;
1096
- }
1097
- return /* @__PURE__ */ React6.createElement(ToolContainer, {
1098
- items
1099
- });
1100
- } finally {
1101
- _effect.f();
1102
- }
1103
- };
1104
- ToolBlock.displayName = "ToolBlock";
1105
- var ToolContainer = ({ items }) => {
1106
- var _effect = _useSignals8();
1107
- try {
1108
- const tabsRef = useRef2(null);
1109
- const [selected, setSelected] = useState10(0);
1110
- const [open, setOpen] = useState10(false);
1111
- useEffect4(() => {
1112
- if (open) {
1113
- tabsRef.current?.focus();
1114
- }
1115
- }, [
1116
- open
1117
- ]);
1118
- const handleSelect = (index) => {
1119
- setSelected(index);
1120
- };
1121
- const data = items[selected]?.content;
1122
- return /* @__PURE__ */ React6.createElement(ToggleContainer.Root, {
1123
- classNames: chatMessagePanel,
1124
- open,
1125
- onChangeOpen: setOpen
1126
- }, /* @__PURE__ */ React6.createElement(ToggleContainer.Header, {
1127
- classNames: chatMessagePanelHeader
1128
- }, /* @__PURE__ */ React6.createElement(TextCrawl, {
1129
- key: "status-roll",
1130
- lines: items.map((item) => item.title)
1131
- })), /* @__PURE__ */ React6.createElement(ToggleContainer.Content, {
1132
- classNames: [
1133
- "grid grid-cols-[32px_1fr]",
1134
- chatMessagePanelContent
1135
- ]
1136
- }, /* @__PURE__ */ React6.createElement(NumericTabs, {
1137
- ref: tabsRef,
1138
- classNames: "p-1",
1139
- length: items.length,
1140
- selected,
1141
- onSelect: handleSelect
1142
- }), /* @__PURE__ */ React6.createElement(Json, {
1143
- data,
1144
- classNames: chatMessageJson,
1145
- replacer: {
1146
- maxDepth: 3,
1147
- maxArrayLen: 10,
1148
- maxStringLen: 128
1149
- }
1150
- })));
1151
- } finally {
1152
- _effect.f();
1153
- }
1154
- };
1155
-
1156
- // src/components/ChatThread/registry.tsx
1157
- var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/components/ChatThread/registry.tsx";
1158
- var Fallback = ({ _tag, ...props }) => {
1159
- var _effect = _useSignals9();
1160
- try {
1161
- return /* @__PURE__ */ React7.createElement(ToggleContainer2.Root, {
1162
- classNames: "rounded-sm"
1163
- }, /* @__PURE__ */ React7.createElement(ToggleContainer2.Header, {
1164
- classNames: "bg-groupSurface"
1165
- }, _tag), /* @__PURE__ */ React7.createElement(ToggleContainer2.Content, {
1166
- classNames: "bg-modalSurface"
1167
- }, /* @__PURE__ */ React7.createElement(Json2, {
1168
- classNames: "!p-2 text-sm",
1169
- data: props
1170
- })));
1171
- } finally {
1172
- _effect.f();
1173
- }
1174
- };
1175
- var componentRegistry = {
1176
- //
1177
- // Widgets
1178
- //
1179
- ["prompt"]: {
1180
- block: true,
1181
- factory: (props) => {
1182
- const text = getXmlTextChild(props.children);
1183
- return text ? new PromptWidget(text) : null;
1184
- }
1185
- },
1186
- ["reference"]: {
1187
- block: false,
1188
- factory: (props) => {
1189
- const text = getXmlTextChild(props.children);
1190
- return text && props.ref ? new ReferenceWidget(text, props.ref) : null;
1191
- }
1192
- },
1193
- ["select"]: {
1194
- block: true,
1195
- factory: (props) => {
1196
- const options = props.children?.map((option) => option._tag === "option" && getXmlTextChild(option.children)).filter(Boolean);
1197
- return options?.length ? new SelectWidget(options) : null;
1198
- }
1199
- },
1200
- ["suggestion"]: {
1201
- block: true,
1202
- factory: (props) => {
1203
- const text = getXmlTextChild(props.children);
1204
- return text ? new SuggestionWidget(text) : null;
1205
- }
1206
- },
1207
- ["summary"]: {
1208
- block: true,
1209
- factory: (props) => {
1210
- const text = getXmlTextChild(props.children);
1211
- return text ? new SummaryWidget(text) : null;
1212
- }
1213
- },
1214
- //
1215
- // React
1216
- //
1217
- ["toolCall"]: {
1218
- block: true,
1219
- Component: ToolBlock
1220
- },
1221
- ["toolResult"]: {
1222
- block: true,
1223
- Component: Fallback
1224
- },
1225
- ["toolkit"]: {
1226
- block: true,
1227
- Component: Fallback
1228
- },
1229
- //
1230
- // Fallback
1231
- //
1232
- ["json"]: {
1233
- block: true,
1234
- Component: Fallback
1235
- }
1236
- };
1237
- var blockToMarkdown = (context, message, block) => {
1238
- let str = _blockToMarkdown(context, message, block);
1239
- if (str && !block.pending) {
1240
- return str += "\n";
1241
- }
1242
- return str;
1243
- };
1244
- var _blockToMarkdown = (context, message, block) => {
1245
- log4("blockToMarkdown", {
1246
- block: JSON.stringify(block)
1247
- }, {
1248
- F: __dxlog_file4,
1249
- L: 125,
1250
- S: void 0,
1251
- C: (f, a) => f(...a)
1252
- });
1253
- switch (block._tag) {
1254
- case "text": {
1255
- if (message.sender.role === "user") {
1256
- return `
1257
- <prompt>${block.text}</prompt>
1258
- `;
1259
- } else {
1260
- const text = block.text.trim();
1261
- if (text.length > 0) {
1262
- return text;
1263
- }
1264
- }
1265
- break;
1266
- }
1267
- case "suggestion": {
1268
- if (block.pending) {
1269
- return;
1270
- }
1271
- return `<suggestion>${block.text}</suggestion>`;
1272
- }
1273
- case "select": {
1274
- if (block.pending || block.options.length === 0) {
1275
- return;
1276
- }
1277
- return `<select>${block.options.map((option) => `<option>${option}</option>`).join("")}</select>`;
1278
- }
1279
- // TODO(burdon): Need label.
1280
- case "reference": {
1281
- return `<reference ref="${block.reference.dxn.toString()}">Ref</reference>`;
1282
- }
1283
- // case 'toolkit': {
1284
- // return `<toolkit />`;
1285
- // }
1286
- case "toolCall": {
1287
- context.updateWidget(block.toolCallId, {
1288
- blocks: [
1289
- block
1290
- ]
1291
- });
1292
- return `<toolCall id="${block.toolCallId}" />`;
1293
- }
1294
- case "toolResult": {
1295
- context.updateWidget(block.toolCallId, ({ blocks = [] }) => ({
1296
- blocks: [
1297
- ...blocks,
1298
- block
1299
- ]
1300
- }));
1301
- break;
1302
- }
1303
- case "summary": {
1304
- return `<summary>${ContentBlock.createSummaryMessage(block)}</summary>`;
1305
- }
1306
- // TODO(burdon): Need stable ID.
1307
- default: {
1308
- return `<json id="${message.id}">
1309
- ${JSON.stringify(block)}
1310
- </json>`;
1311
- }
1312
- }
1313
- };
1314
-
1315
- // src/components/ChatThread/sync.ts
1316
- import { log as log5 } from "@dxos/log";
1317
- function _define_property2(obj, key, value) {
1318
- if (key in obj) {
1319
- Object.defineProperty(obj, key, {
1320
- value,
1321
- enumerable: true,
1322
- configurable: true,
1323
- writable: true
1324
- });
1325
- } else {
1326
- obj[key] = value;
1327
- }
1328
- return obj;
1329
- }
1330
- var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/components/ChatThread/sync.ts";
1331
- var MessageThreadContext = class {
1332
- updateWidget(id, value) {
1333
- this._widgetState?.updateWidget(id, value);
1334
- }
1335
- constructor(_widgetState) {
1336
- _define_property2(this, "_widgetState", void 0);
1337
- this._widgetState = _widgetState;
1338
- }
1339
- };
1340
- var MessageSyncer = class {
1341
- get context() {
1342
- return this._context;
1343
- }
1344
- reset() {
1345
- log5("reset", void 0, {
1346
- F: __dxlog_file5,
1347
- L: 58,
1348
- S: this,
1349
- C: (f, a) => f(...a)
1350
- });
1351
- this._initialMessageId = void 0;
1352
- this._currentMessageIndex = 0;
1353
- this._currentBlockIndex = 0;
1354
- this._currentBlockContent = void 0;
1355
- void this._model.reset("");
1356
- }
1357
- sync(messages) {
1358
- log5("sync", {
1359
- messages: messages.map((message) => message.blocks.length),
1360
- currentMessageIndex: this._currentMessageIndex,
1361
- currentBlockIndex: this._currentBlockIndex,
1362
- currentBlockContent: this._currentBlockContent
1363
- }, {
1364
- F: __dxlog_file5,
1365
- L: 67,
1366
- S: this,
1367
- C: (f, a) => f(...a)
1368
- });
1369
- if (this._initialMessageId !== messages[0]?.id) {
1370
- this.reset();
1371
- this._initialMessageId = messages[0]?.id;
1372
- }
1373
- let i = this._currentMessageIndex;
1374
- for (const message of messages.slice(this._currentMessageIndex)) {
1375
- if (i > this._currentMessageIndex) {
1376
- this._currentBlockIndex = 0;
1377
- }
1378
- this._currentMessageIndex = i;
1379
- let j = this._currentBlockIndex;
1380
- for (const block of message.blocks.slice(this._currentBlockIndex)) {
1381
- this._currentBlockIndex = j;
1382
- const currentBlockContent = this._blockRenderer(this._context, message, block);
1383
- if (currentBlockContent) {
1384
- let content = "";
1385
- if (this._currentBlockContent && currentBlockContent.startsWith(this._currentBlockContent)) {
1386
- content = currentBlockContent.slice(this._currentBlockContent.length);
1387
- } else {
1388
- content = currentBlockContent;
1389
- }
1390
- void this._model.append(content);
1391
- this._currentBlockContent = currentBlockContent;
1392
- log5("append", {
1393
- message: i,
1394
- block: j,
1395
- content
1396
- }, {
1397
- F: __dxlog_file5,
1398
- L: 99,
1399
- S: this,
1400
- C: (f, a) => f(...a)
1401
- });
1402
- }
1403
- if (block.pending) {
1404
- return;
1405
- } else {
1406
- this._currentBlockContent = void 0;
1407
- this._currentBlockIndex++;
1408
- }
1409
- j++;
1410
- }
1411
- i++;
1412
- }
1413
- }
1414
- constructor(_model, _blockRenderer) {
1415
- _define_property2(this, "_model", void 0);
1416
- _define_property2(this, "_blockRenderer", void 0);
1417
- _define_property2(this, "_initialMessageId", void 0);
1418
- _define_property2(this, "_currentMessageIndex", void 0);
1419
- _define_property2(this, "_currentBlockIndex", void 0);
1420
- _define_property2(this, "_currentBlockContent", void 0);
1421
- _define_property2(this, "_context", void 0);
1422
- this._model = _model;
1423
- this._blockRenderer = _blockRenderer;
1424
- this._currentMessageIndex = 0;
1425
- this._currentBlockIndex = 0;
1426
- this._context = new MessageThreadContext(this._model);
1427
- }
1428
- };
1429
-
1430
- // src/components/ChatThread/ChatThread.tsx
1431
- var ChatThread = /* @__PURE__ */ forwardRef(({ classNames, identity, messages = [], error, cursor = false, fadeIn = true, overscroll, onEvent }, forwardedRef) => {
1432
- var _effect = _useSignals10();
1433
- try {
1434
- const userHue = useMemo8(() => {
1435
- return identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue;
1436
- }, [
1437
- identity
1438
- ]);
1439
- const [controller, setController] = useState11(null);
1440
- useImperativeHandle(forwardedRef, () => controller ? controller : null, [
1441
- controller
1442
- ]);
1443
- useEffect5(() => {
1444
- controller?.scrollToBottom();
1445
- }, [
1446
- controller,
1447
- error
1448
- ]);
1449
- const syncer = useMemo8(() => controller && new MessageSyncer(controller, blockToMarkdown), [
1450
- controller
1451
- ]);
1452
- useEffect5(() => {
1453
- syncer?.sync(messages);
1454
- }, [
1455
- syncer,
1456
- messages
1457
- ]);
1458
- const handleEvent = useCallback5((ev) => {
1459
- switch (ev.type) {
1460
- case "submit": {
1461
- ev.value && onEvent?.({
1462
- type: "submit",
1463
- text: ev.value
1464
- });
1465
- break;
1466
- }
1467
- }
1468
- }, [
1469
- onEvent
1470
- ]);
1471
- return /* @__PURE__ */ React8.createElement("div", {
1472
- className: mx4("flex bs-full is-full justify-center overflow-hidden", classNames),
1473
- style: {
1474
- "--user-fill": `var(--dx-${userHue}Fill)`
1475
- }
1476
- }, /* @__PURE__ */ React8.createElement(MarkdownStream, {
1477
- ref: setController,
1478
- registry: componentRegistry,
1479
- cursor,
1480
- fadeIn,
1481
- overscroll,
1482
- onEvent: handleEvent
1483
- }));
1484
- } finally {
1485
- _effect.f();
1486
- }
1487
- });
1488
-
1489
- // src/components/Chat/Chat.tsx
1490
- var [ChatContextProvider, useChatContext] = createContext("Chat");
1491
- var ChatRoot = ({ classNames, children, chat, processor, onEvent, ...props }) => {
1492
- var _effect = _useSignals11();
1493
- try {
1494
- const [debug, setDebug] = useState12(false);
1495
- const space = getSpace(chat);
1496
- const queue = useQueue(chat?.queue.dxn);
1497
- const pending = useRxValue(processor.messages);
1498
- const streaming = useRxValue(processor.streaming);
1499
- const lastPrompt = useRef3(void 0);
1500
- const messages = useMemo9(() => {
1501
- const queueMessages = queue?.objects?.filter(Obj6.instanceOf(DataType2.Message)) ?? [];
1502
- return Array2.dedupeWith([
1503
- ...queueMessages,
1504
- ...pending
1505
- ], (a, b) => a.id === b.id);
1506
- }, [
1507
- queue?.objects,
1508
- pending
1509
- ]);
1510
- const event = useMemo9(() => new Event(), []);
1511
- useEffect6(() => {
1512
- return event.on((ev) => {
1513
- switch (ev.type) {
1514
- case "toggle-debug": {
1515
- setDebug((current) => !current);
1516
- break;
1517
- }
1518
- case "submit": {
1519
- const text = ev.text.trim();
1520
- if (!streaming && text.length) {
1521
- lastPrompt.current = ev.text;
1522
- void processor.request({
1523
- message: text
1524
- });
1525
- }
1526
- break;
1527
- }
1528
- case "retry": {
1529
- if (!streaming) {
1530
- void processor.retry();
1531
- }
1532
- break;
1533
- }
1534
- case "cancel": {
1535
- if (streaming) {
1536
- void processor.cancel();
1537
- if (lastPrompt.current) {
1538
- event.emit({
1539
- type: "update-prompt",
1540
- text: lastPrompt.current
1541
- });
1542
- }
1543
- }
1544
- break;
1545
- }
1546
- default: {
1547
- onEvent?.(ev);
1548
- }
1549
- }
1550
- });
1551
- }, [
1552
- event,
1553
- processor,
1554
- streaming,
1555
- onEvent
1556
- ]);
1557
- if (!space) {
1558
- return null;
1559
- }
1560
- return /* @__PURE__ */ React9.createElement(ChatContextProvider, {
1561
- debug,
1562
- event,
1563
- chat,
1564
- space,
1565
- messages,
1566
- processor,
1567
- ...props
1568
- }, /* @__PURE__ */ React9.createElement("div", {
1569
- role: "none",
1570
- className: mx5("flex flex-col bs-full is-full", classNames)
1571
- }, children));
1572
- } finally {
1573
- _effect.f();
1574
- }
1575
- };
1576
- ChatRoot.displayName = "Chat.Root";
1577
- var ChatPrompt = ({ classNames, outline, settings = true, placeholder, expandable, online, presets, preset, onPresetChange, onOnlineChange }) => {
1578
- var _effect = _useSignals11();
1579
- try {
1580
- const { t } = useTranslation5(meta.id);
1581
- const { space, event, processor } = useChatContext(ChatPrompt.displayName);
1582
- const error = useRxValue(processor.error).pipe(Option3.getOrUndefined);
1583
- const streaming = useRxValue(processor.streaming);
1584
- const active = useRxValue(processor.active);
1585
- const activeRef = useDynamicRef(active);
1586
- const editorRef = useRef3(null);
1587
- const [recordingState, setRecordingState] = useState12(false);
1588
- useEffect6(() => {
1589
- return event.on((event2) => {
1590
- switch (event2.type) {
1591
- case "update-prompt":
1592
- if (!editorRef.current?.getText()?.length) {
1593
- editorRef.current?.setText(event2.text);
1594
- editorRef.current?.focus();
1595
- }
1596
- break;
1597
- case "record-start":
1598
- setRecordingState(true);
1599
- break;
1600
- case "record-stop":
1601
- setRecordingState(false);
1602
- break;
1603
- }
1604
- });
1605
- }, [
1606
- event
1607
- ]);
1608
- const { recording } = useVoiceInput({
1609
- active: recordingState,
1610
- onUpdate: (text) => {
1611
- editorRef.current?.setText(text);
1612
- editorRef.current?.focus();
1613
- }
1614
- });
1615
- const referencesProvider = useReferencesProvider(space);
1616
- const extensions = useMemo9(() => {
1617
- return [
1618
- referencesProvider && references({
1619
- provider: referencesProvider
1620
- }),
1621
- Prec.highest(keymap.of([
1622
- {
1623
- key: "cmd-d",
1624
- preventDefault: true,
1625
- run: () => {
1626
- event.emit({
1627
- type: "toggle-debug"
1628
- });
1629
- return true;
1630
- }
1631
- },
1632
- expandable && {
1633
- key: "cmd-ArrowUp",
1634
- preventDefault: true,
1635
- run: () => {
1636
- event.emit({
1637
- type: "thread-open"
1638
- });
1639
- return true;
1640
- }
1641
- },
1642
- expandable && {
1643
- key: "cmd-ArrowDown",
1644
- preventDefault: true,
1645
- run: () => {
1646
- event.emit({
1647
- type: "thread-close"
1648
- });
1649
- return true;
1650
- }
1651
- }
1652
- ].filter(isTruthy)))
1653
- ].filter(isTruthy);
1654
- }, [
1655
- event,
1656
- expandable,
1657
- referencesProvider
1658
- ]);
1659
- const handleSubmit = useCallback6((text) => {
1660
- if (!activeRef.current) {
1661
- event.emit({
1662
- type: "submit",
1663
- text
1664
- });
1665
- return true;
1666
- }
1667
- }, [
1668
- event
1669
- ]);
1670
- const handleEvent = useCallback6((ev) => {
1671
- event.emit(ev);
1672
- }, [
1673
- event
1674
- ]);
1675
- return /* @__PURE__ */ React9.createElement("div", {
1676
- role: "group",
1677
- className: mx5("flex flex-col is-full density-fine", outline && [
1678
- "p-2 bg-groupSurface border border-subduedSeparator transition transition-border [&:has(.cm-content:focus)]:border-separator rounded"
1679
- ], classNames)
1680
- }, /* @__PURE__ */ React9.createElement("div", {
1681
- role: "none",
1682
- className: "flex gap-2"
1683
- }, /* @__PURE__ */ React9.createElement(ChatStatusIndicator, {
1684
- classNames: "p-1",
1685
- preset,
1686
- error,
1687
- processing: streaming
1688
- }), /* @__PURE__ */ React9.createElement(ChatEditor, {
1689
- ref: editorRef,
1690
- autoFocus: true,
1691
- lineWrapping: true,
1692
- classNames: "col-span-2 pbs-0.5",
1693
- placeholder: placeholder ?? t("prompt placeholder"),
1694
- extensions,
1695
- onSubmit: handleSubmit
1696
- })), settings && /* @__PURE__ */ React9.createElement("div", {
1697
- role: "none",
1698
- className: "flex pbs-2 items-center"
1699
- }, /* @__PURE__ */ React9.createElement(ChatOptions, {
1700
- space,
1701
- blueprintRegistry: processor.blueprintRegistry,
1702
- context: processor.context,
1703
- preset,
1704
- presets,
1705
- onPresetChange
1706
- }), /* @__PURE__ */ React9.createElement("div", {
1707
- role: "none",
1708
- className: "pli-cardSpacingChrome grow"
1709
- }, /* @__PURE__ */ React9.createElement(ChatReferences, {
1710
- space,
1711
- context: processor.context
1712
- })), /* @__PURE__ */ React9.createElement(ChatActions, {
1713
- classNames: "col-span-2",
1714
- microphone: true,
1715
- recording,
1716
- processing: streaming,
1717
- onEvent: handleEvent
1718
- }, online !== void 0 && /* @__PURE__ */ React9.createElement(Input.Root, null, /* @__PURE__ */ React9.createElement(Input.Label, {
1719
- srOnly: true
1720
- }, t("online switch label")), /* @__PURE__ */ React9.createElement(Input.Switch, {
1721
- classNames: "mis-2 mie-2",
1722
- checked: online,
1723
- onCheckedChange: onOnlineChange
1724
- })))));
1725
- } finally {
1726
- _effect.f();
1727
- }
1728
- };
1729
- ChatPrompt.displayName = "Chat.Prompt";
1730
- var ChatThread2 = (props) => {
1731
- var _effect = _useSignals11();
1732
- try {
1733
- const { event, messages, processor } = useChatContext(ChatThread2.displayName);
1734
- const identity = useIdentity();
1735
- const error = useRxValue(processor.error).pipe(Option3.getOrUndefined);
1736
- const scrollerRef = useRef3(null);
1737
- useEffect6(() => {
1738
- return event.on((event2) => {
1739
- switch (event2.type) {
1740
- case "submit":
1741
- case "scroll-to-bottom":
1742
- scrollerRef.current?.scrollToBottom();
1743
- break;
1744
- }
1745
- });
1746
- }, [
1747
- event
1748
- ]);
1749
- const handleEvent = useCallback6((ev) => {
1750
- event.emit(ev);
1751
- }, [
1752
- event
1753
- ]);
1754
- if (!identity) {
1755
- return null;
1756
- }
1757
- return /* @__PURE__ */ React9.createElement(ChatThread, {
1758
- ...props,
1759
- ref: scrollerRef,
1760
- identity,
1761
- messages,
1762
- error,
1763
- onEvent: handleEvent
1764
- });
1765
- } finally {
1766
- _effect.f();
1767
- }
1768
- };
1769
- ChatThread2.displayName = "Chat.Thread";
1770
- var Chat = {
1771
- Root: ChatRoot,
1772
- Prompt: ChatPrompt,
1773
- Thread: ChatThread2
1774
- };
1775
-
1776
- export {
1777
- useBlueprintRegistry,
1778
- useBlueprints,
1779
- useActiveBlueprints,
1780
- useBlueprintHandlers,
1781
- useChatProcessor,
1782
- useChatServices,
1783
- useContextBinder,
1784
- useContextObjects,
1785
- useFlush,
1786
- useItemTypes,
1787
- useOnline,
1788
- usePresets,
1789
- useReferencesProvider,
1790
- ChatContextProvider,
1791
- useChatContext,
1792
- Chat
1793
- };
1794
- //# sourceMappingURL=chunk-WRJGOT5P.mjs.map