@dxos/plugin-assistant 0.8.4-main.1f223c7 → 0.8.4-main.2c6827d

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 (465) hide show
  1. package/dist/lib/browser/BlueprintArticle-IMCR3642.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-IMCR3642.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-4MS4NMZY.mjs +158 -0
  4. package/dist/lib/browser/ChatCompanion-4MS4NMZY.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-XIVJTCC2.mjs → ChatContainer-GJZN3SIJ.mjs} +22 -20
  6. package/dist/lib/browser/ChatContainer-GJZN3SIJ.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-EJJMK3WL.mjs → ChatDialog-E2X6DTDX.mjs} +8 -6
  8. package/dist/lib/browser/ChatDialog-E2X6DTDX.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-45QX25Y5.mjs +59 -0
  10. package/dist/lib/browser/PromptArticle-45QX25Y5.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-ERTZBTP3.mjs +19 -0
  12. package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +7 -0
  13. package/dist/lib/browser/{app-graph-builder-3C43MLCD.mjs → app-graph-builder-VZEXMDTY.mjs} +67 -21
  14. package/dist/lib/browser/app-graph-builder-VZEXMDTY.mjs.map +7 -0
  15. package/dist/lib/browser/{blueprint-definition-VHFSRTEJ.mjs → blueprint-definition-5FT5JGPY.mjs} +4 -4
  16. package/dist/lib/browser/chunk-2BOE3OTW.mjs +262 -0
  17. package/dist/lib/browser/chunk-2BOE3OTW.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-SMIVXXAI.mjs → chunk-BNTPFZ7O.mjs} +51 -24
  19. package/dist/lib/browser/chunk-BNTPFZ7O.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs +335 -0
  21. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-GLWD66TA.mjs → chunk-IXIIS4QA.mjs} +53 -38
  23. package/dist/lib/browser/chunk-IXIIS4QA.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-EZUSNS2J.mjs → chunk-LRE4VEZV.mjs} +2 -5
  25. package/dist/lib/browser/chunk-LRE4VEZV.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-TCAQJ26D.mjs +1929 -0
  27. package/dist/lib/browser/chunk-TCAQJ26D.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-WBG5PTSX.mjs +23 -0
  29. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +7 -0
  30. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
  31. package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
  32. package/dist/lib/browser/index.mjs +117 -82
  33. package/dist/lib/browser/index.mjs.map +4 -4
  34. package/dist/lib/browser/{intent-resolver-I6M3ZDAS.mjs → intent-resolver-AK5O4GUW.mjs} +55 -24
  35. package/dist/lib/browser/intent-resolver-AK5O4GUW.mjs.map +7 -0
  36. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs +17 -0
  37. package/dist/lib/browser/local-model-resolver-34MVHRKD.mjs.map +7 -0
  38. package/dist/lib/browser/meta.json +1 -1
  39. package/dist/lib/browser/{react-surface-E4NAGB6R.mjs → react-surface-XWAR5ZVL.mjs} +24 -35
  40. package/dist/lib/browser/react-surface-XWAR5ZVL.mjs.map +7 -0
  41. package/dist/lib/browser/{settings-36V3VUMW.mjs → settings-NYJGNQ5I.mjs} +5 -5
  42. package/dist/lib/browser/{settings-36V3VUMW.mjs.map → settings-NYJGNQ5I.mjs.map} +1 -1
  43. package/dist/lib/browser/{state-AINRYS5W.mjs → state-GG7Z3NB7.mjs} +9 -5
  44. package/dist/lib/browser/{state-AINRYS5W.mjs.map → state-GG7Z3NB7.mjs.map} +3 -3
  45. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  46. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  47. package/dist/lib/browser/types/index.mjs +2 -2
  48. package/dist/lib/node-esm/BlueprintArticle-OL2HUY6Q.mjs +37 -0
  49. package/dist/lib/node-esm/BlueprintArticle-OL2HUY6Q.mjs.map +7 -0
  50. package/dist/lib/node-esm/ChatCompanion-TYRR7BXD.mjs +159 -0
  51. package/dist/lib/node-esm/ChatCompanion-TYRR7BXD.mjs.map +7 -0
  52. package/dist/lib/node-esm/{ChatContainer-LMMMQD4K.mjs → ChatContainer-MT4INE7Z.mjs} +22 -20
  53. package/dist/lib/node-esm/ChatContainer-MT4INE7Z.mjs.map +7 -0
  54. package/dist/lib/node-esm/{ChatDialog-UUE3F7BT.mjs → ChatDialog-G4EWBIJM.mjs} +8 -6
  55. package/dist/lib/node-esm/ChatDialog-G4EWBIJM.mjs.map +7 -0
  56. package/dist/lib/node-esm/PromptArticle-OUKFSJQV.mjs +60 -0
  57. package/dist/lib/node-esm/PromptArticle-OUKFSJQV.mjs.map +7 -0
  58. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
  59. package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
  60. package/dist/lib/node-esm/{app-graph-builder-NM3JDLQ2.mjs → app-graph-builder-VRN6ESRR.mjs} +67 -21
  61. package/dist/lib/node-esm/app-graph-builder-VRN6ESRR.mjs.map +7 -0
  62. package/dist/lib/node-esm/{blueprint-definition-4E6XTLVN.mjs → blueprint-definition-XW6QQVLV.mjs} +4 -4
  63. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs +264 -0
  64. package/dist/lib/node-esm/chunk-3Q22TTXW.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-7YOGZI66.mjs → chunk-AB74FOA2.mjs} +51 -24
  66. package/dist/lib/node-esm/chunk-AB74FOA2.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs +336 -0
  68. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-KM24SYPM.mjs +1930 -0
  70. package/dist/lib/node-esm/chunk-KM24SYPM.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-QG2KT3AT.mjs → chunk-UXTUHH24.mjs} +53 -38
  72. package/dist/lib/node-esm/chunk-UXTUHH24.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-WE6KTH72.mjs +25 -0
  74. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-XD4CDA4R.mjs → chunk-YWFWT57N.mjs} +2 -5
  76. package/dist/lib/node-esm/chunk-YWFWT57N.mjs.map +7 -0
  77. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
  78. package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
  79. package/dist/lib/node-esm/index.mjs +117 -82
  80. package/dist/lib/node-esm/index.mjs.map +4 -4
  81. package/dist/lib/node-esm/{intent-resolver-VIINHFMT.mjs → intent-resolver-L2F3N45L.mjs} +55 -24
  82. package/dist/lib/node-esm/intent-resolver-L2F3N45L.mjs.map +7 -0
  83. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs +18 -0
  84. package/dist/lib/node-esm/local-model-resolver-TP2NTSAX.mjs.map +7 -0
  85. package/dist/lib/node-esm/meta.json +1 -1
  86. package/dist/lib/node-esm/{react-surface-5WQLRTCH.mjs → react-surface-JXB7Q6QR.mjs} +24 -35
  87. package/dist/lib/node-esm/react-surface-JXB7Q6QR.mjs.map +7 -0
  88. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs → settings-RRHYI5KO.mjs} +5 -5
  89. package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs.map → settings-RRHYI5KO.mjs.map} +1 -1
  90. package/dist/lib/node-esm/{state-EQS5KP6M.mjs → state-FSUHFMDM.mjs} +9 -5
  91. package/dist/lib/node-esm/{state-EQS5KP6M.mjs.map → state-FSUHFMDM.mjs.map} +3 -3
  92. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  93. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs.map +7 -0
  94. package/dist/lib/node-esm/types/index.mjs +2 -2
  95. package/dist/types/src/AssistantPlugin.d.ts +1 -1
  96. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/ai-service.d.ts +2 -3
  98. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -1
  101. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +2 -24
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/index.d.ts +0 -1
  106. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/toolkit.d.ts +1 -1
  112. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  113. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  114. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  115. package/dist/types/src/components/Chat/Chat.d.ts +20 -9
  116. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  117. package/dist/types/src/components/Chat/events.d.ts +4 -0
  118. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  119. package/dist/types/src/components/ChatCompanion.d.ts +2 -2
  120. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
  121. package/dist/types/src/components/ChatContainer.d.ts +7 -4
  122. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  123. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  124. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
  125. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  126. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  127. package/dist/types/src/components/ChatThread/ChatThread.d.ts +6 -7
  128. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  129. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +124 -71
  130. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/ChatThread/reducers.d.ts +5 -5
  132. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -1
  133. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  134. package/dist/types/src/components/ChatThread/sync.d.ts +12 -6
  135. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  136. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  137. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  138. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  139. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  140. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +111 -61
  141. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  142. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -1
  143. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  144. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +111 -61
  145. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  146. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  147. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  148. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  149. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  150. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  151. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +9 -7
  152. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  153. package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -2
  154. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  155. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +111 -61
  156. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  157. package/dist/types/src/components/index.d.ts +4 -9
  158. package/dist/types/src/components/index.d.ts.map +1 -1
  159. package/dist/types/src/functions/analysis.d.ts +1 -1
  160. package/dist/types/src/functions/analysis.d.ts.map +1 -1
  161. package/dist/types/src/functions/index.d.ts +2 -2
  162. package/dist/types/src/functions/index.d.ts.map +1 -1
  163. package/dist/types/src/functions/{list.d.ts → object-list.d.ts} +2 -2
  164. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  165. package/dist/types/src/functions/{load.d.ts → object-load.d.ts} +2 -2
  166. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  167. package/dist/types/src/hooks/index.d.ts +1 -2
  168. package/dist/types/src/hooks/index.d.ts.map +1 -1
  169. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +2 -1
  170. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  171. package/dist/types/src/hooks/useChatProcessor.d.ts +4 -2
  172. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  173. package/dist/types/src/hooks/useChatServices.d.ts +1 -1
  174. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  175. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  176. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  177. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  178. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  179. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  180. package/dist/types/src/index.d.ts +2 -0
  181. package/dist/types/src/index.d.ts.map +1 -1
  182. package/dist/types/src/meta.d.ts +1 -2
  183. package/dist/types/src/meta.d.ts.map +1 -1
  184. package/dist/types/src/processor/index.d.ts +1 -0
  185. package/dist/types/src/processor/index.d.ts.map +1 -1
  186. package/dist/types/src/processor/presets.d.ts +1 -1
  187. package/dist/types/src/processor/presets.d.ts.map +1 -1
  188. package/dist/types/src/processor/processor.d.ts +11 -10
  189. package/dist/types/src/processor/processor.d.ts.map +1 -1
  190. package/dist/types/src/processor/update-name.d.ts +10 -0
  191. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  192. package/dist/types/src/queue-logger.d.ts.map +1 -1
  193. package/dist/types/src/testing/index.d.ts +0 -2
  194. package/dist/types/src/testing/index.d.ts.map +1 -1
  195. package/dist/types/src/testing/test-generator.d.ts +3 -3
  196. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  197. package/dist/types/src/testing/test-services.d.ts +2 -2
  198. package/dist/types/src/testing/test-services.d.ts.map +1 -1
  199. package/dist/types/src/translations.d.ts +239 -26
  200. package/dist/types/src/translations.d.ts.map +1 -1
  201. package/dist/types/src/types/Assistant.d.ts +15 -9
  202. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  203. package/dist/types/src/types/AssistantAction.d.ts +33 -8
  204. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  205. package/dist/types/src/types/service.d.ts +24 -18
  206. package/dist/types/src/types/service.d.ts.map +1 -1
  207. package/dist/types/tsconfig.tsbuildinfo +1 -1
  208. package/package.json +94 -113
  209. package/src/AssistantPlugin.tsx +154 -138
  210. package/src/capabilities/ai-service.ts +6 -7
  211. package/src/capabilities/app-graph-builder.ts +69 -21
  212. package/src/capabilities/blueprint-definition.ts +38 -30
  213. package/src/capabilities/capabilities.ts +2 -56
  214. package/src/capabilities/edge-model-resolver.ts +5 -7
  215. package/src/capabilities/index.ts +0 -1
  216. package/src/capabilities/intent-resolver.ts +69 -16
  217. package/src/capabilities/local-model-resolver.ts +7 -9
  218. package/src/capabilities/react-surface.tsx +16 -20
  219. package/src/capabilities/state.ts +2 -0
  220. package/src/capabilities/toolkit.ts +9 -155
  221. package/src/components/BlueprintArticle.tsx +29 -0
  222. package/src/components/Chat/Chat.tsx +155 -113
  223. package/src/components/Chat/events.ts +6 -0
  224. package/src/components/ChatCompanion.tsx +93 -49
  225. package/src/components/ChatContainer.tsx +27 -17
  226. package/src/components/ChatDialog.tsx +9 -2
  227. package/src/components/ChatProgress/ChatProgress.tsx +2 -3
  228. package/src/components/ChatPrompt/ChatActions.tsx +2 -4
  229. package/src/components/ChatPrompt/ChatOptions.tsx +40 -45
  230. package/src/components/ChatPrompt/ChatReferences.tsx +2 -2
  231. package/src/components/ChatThread/ChatThread.stories.tsx +52 -34
  232. package/src/components/ChatThread/ChatThread.tsx +28 -34
  233. package/src/components/ChatThread/reducers.ts +6 -6
  234. package/src/components/ChatThread/registry.tsx +25 -40
  235. package/src/components/ChatThread/sync.test.ts +21 -13
  236. package/src/components/ChatThread/sync.ts +48 -13
  237. package/src/components/ChatThread/testing/thread.md +37 -0
  238. package/src/components/PromptArticle.tsx +51 -0
  239. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +15 -7
  240. package/src/components/TemplateEditor/TemplateEditor.tsx +19 -10
  241. package/src/components/TemplateEditor/TemplateForm.stories.tsx +4 -6
  242. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  243. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  244. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  245. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  246. package/src/components/ToolBlock/ToolBlock.tsx +37 -46
  247. package/src/components/Toolbox/Toolbox.stories.tsx +5 -8
  248. package/src/components/Toolbox/Toolbox.tsx +5 -5
  249. package/src/components/index.ts +2 -5
  250. package/src/functions/analysis.ts +5 -3
  251. package/src/functions/index.ts +2 -2
  252. package/src/functions/{list.ts → object-list.ts} +6 -4
  253. package/src/functions/{load.ts → object-load.ts} +8 -5
  254. package/src/hooks/index.ts +1 -2
  255. package/src/hooks/useBlueprintRegistry.ts +19 -4
  256. package/src/hooks/useChatProcessor.ts +22 -14
  257. package/src/hooks/useChatServices.ts +10 -7
  258. package/src/hooks/useChatToolbarActions.ts +122 -0
  259. package/src/hooks/useContextBinder.ts +19 -7
  260. package/src/hooks/useItemTypes.ts +1 -1
  261. package/src/hooks/useReferencesProvider.ts +2 -1
  262. package/src/index.ts +2 -0
  263. package/src/meta.ts +9 -6
  264. package/src/processor/index.ts +1 -0
  265. package/src/processor/presets.ts +2 -2
  266. package/src/processor/processor.test.ts +18 -24
  267. package/src/processor/processor.ts +35 -60
  268. package/src/processor/update-name.ts +56 -0
  269. package/src/queue-logger.ts +4 -8
  270. package/src/testing/index.ts +0 -2
  271. package/src/testing/test-generator.ts +15 -11
  272. package/src/testing/test-services.ts +2 -8
  273. package/src/translations.ts +24 -16
  274. package/src/types/Assistant.ts +10 -8
  275. package/src/types/AssistantAction.ts +23 -6
  276. package/src/types/service.ts +17 -9
  277. package/dist/lib/browser/BlueprintContainer-BFNN6K46.mjs +0 -29
  278. package/dist/lib/browser/BlueprintContainer-BFNN6K46.mjs.map +0 -7
  279. package/dist/lib/browser/ChatCompanion-DOVN34C7.mjs +0 -126
  280. package/dist/lib/browser/ChatCompanion-DOVN34C7.mjs.map +0 -7
  281. package/dist/lib/browser/ChatContainer-XIVJTCC2.mjs.map +0 -7
  282. package/dist/lib/browser/ChatDialog-EJJMK3WL.mjs.map +0 -7
  283. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs +0 -150
  284. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +0 -7
  285. package/dist/lib/browser/ai-service-YC2EQPHA.mjs +0 -22
  286. package/dist/lib/browser/ai-service-YC2EQPHA.mjs.map +0 -7
  287. package/dist/lib/browser/app-graph-builder-3C43MLCD.mjs.map +0 -7
  288. package/dist/lib/browser/chunk-C4Q2RYQM.mjs +0 -1974
  289. package/dist/lib/browser/chunk-C4Q2RYQM.mjs.map +0 -7
  290. package/dist/lib/browser/chunk-EZUSNS2J.mjs.map +0 -7
  291. package/dist/lib/browser/chunk-GLWD66TA.mjs.map +0 -7
  292. package/dist/lib/browser/chunk-O4LUJEDV.mjs +0 -20
  293. package/dist/lib/browser/chunk-O4LUJEDV.mjs.map +0 -7
  294. package/dist/lib/browser/chunk-PQI3MGDN.mjs +0 -169
  295. package/dist/lib/browser/chunk-PQI3MGDN.mjs.map +0 -7
  296. package/dist/lib/browser/chunk-QD4UUISH.mjs +0 -299
  297. package/dist/lib/browser/chunk-QD4UUISH.mjs.map +0 -7
  298. package/dist/lib/browser/chunk-R6LRGW3I.mjs +0 -216
  299. package/dist/lib/browser/chunk-R6LRGW3I.mjs.map +0 -7
  300. package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +0 -7
  301. package/dist/lib/browser/compute-runtime-X6IREJN3.mjs +0 -155
  302. package/dist/lib/browser/compute-runtime-X6IREJN3.mjs.map +0 -7
  303. package/dist/lib/browser/edge-model-resolver-JNEB355N.mjs +0 -22
  304. package/dist/lib/browser/edge-model-resolver-JNEB355N.mjs.map +0 -7
  305. package/dist/lib/browser/intent-resolver-I6M3ZDAS.mjs.map +0 -7
  306. package/dist/lib/browser/local-model-resolver-EUXSRZ7X.mjs +0 -21
  307. package/dist/lib/browser/local-model-resolver-EUXSRZ7X.mjs.map +0 -7
  308. package/dist/lib/browser/react-surface-E4NAGB6R.mjs.map +0 -7
  309. package/dist/lib/browser/toolkit-MPUS3U64.mjs +0 -191
  310. package/dist/lib/browser/toolkit-MPUS3U64.mjs.map +0 -7
  311. package/dist/lib/node-esm/BlueprintContainer-X4MRBKDR.mjs +0 -30
  312. package/dist/lib/node-esm/BlueprintContainer-X4MRBKDR.mjs.map +0 -7
  313. package/dist/lib/node-esm/ChatCompanion-ICWYVPRD.mjs +0 -127
  314. package/dist/lib/node-esm/ChatCompanion-ICWYVPRD.mjs.map +0 -7
  315. package/dist/lib/node-esm/ChatContainer-LMMMQD4K.mjs.map +0 -7
  316. package/dist/lib/node-esm/ChatDialog-UUE3F7BT.mjs.map +0 -7
  317. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs +0 -151
  318. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +0 -7
  319. package/dist/lib/node-esm/ai-service-XUMZVFCK.mjs +0 -23
  320. package/dist/lib/node-esm/ai-service-XUMZVFCK.mjs.map +0 -7
  321. package/dist/lib/node-esm/app-graph-builder-NM3JDLQ2.mjs.map +0 -7
  322. package/dist/lib/node-esm/chunk-4WLFSXZG.mjs +0 -170
  323. package/dist/lib/node-esm/chunk-4WLFSXZG.mjs.map +0 -7
  324. package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +0 -7
  325. package/dist/lib/node-esm/chunk-LVTG5JTW.mjs +0 -217
  326. package/dist/lib/node-esm/chunk-LVTG5JTW.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-QG2KT3AT.mjs.map +0 -7
  328. package/dist/lib/node-esm/chunk-V44ZG7CU.mjs +0 -1975
  329. package/dist/lib/node-esm/chunk-V44ZG7CU.mjs.map +0 -7
  330. package/dist/lib/node-esm/chunk-VFY2JG62.mjs +0 -22
  331. package/dist/lib/node-esm/chunk-VFY2JG62.mjs.map +0 -7
  332. package/dist/lib/node-esm/chunk-XD4CDA4R.mjs.map +0 -7
  333. package/dist/lib/node-esm/chunk-YU62ZWJN.mjs +0 -300
  334. package/dist/lib/node-esm/chunk-YU62ZWJN.mjs.map +0 -7
  335. package/dist/lib/node-esm/compute-runtime-NRHLLTSC.mjs +0 -156
  336. package/dist/lib/node-esm/compute-runtime-NRHLLTSC.mjs.map +0 -7
  337. package/dist/lib/node-esm/edge-model-resolver-UE5TLLJZ.mjs +0 -23
  338. package/dist/lib/node-esm/edge-model-resolver-UE5TLLJZ.mjs.map +0 -7
  339. package/dist/lib/node-esm/intent-resolver-VIINHFMT.mjs.map +0 -7
  340. package/dist/lib/node-esm/local-model-resolver-JBEFVVZA.mjs +0 -22
  341. package/dist/lib/node-esm/local-model-resolver-JBEFVVZA.mjs.map +0 -7
  342. package/dist/lib/node-esm/react-surface-5WQLRTCH.mjs.map +0 -7
  343. package/dist/lib/node-esm/toolkit-PKVYDZ4H.mjs +0 -192
  344. package/dist/lib/node-esm/toolkit-PKVYDZ4H.mjs.map +0 -7
  345. package/dist/types/src/capabilities/compute-runtime.d.ts +0 -5
  346. package/dist/types/src/capabilities/compute-runtime.d.ts.map +0 -1
  347. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  348. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  349. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  350. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  351. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  352. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  353. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  354. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  355. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -267
  356. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  357. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  358. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  359. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  360. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -5
  361. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  362. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  363. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  364. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  365. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  366. package/dist/types/src/execution-graph/execution-graph.d.ts +0 -21
  367. package/dist/types/src/execution-graph/execution-graph.d.ts.map +0 -1
  368. package/dist/types/src/execution-graph/index.d.ts +0 -2
  369. package/dist/types/src/execution-graph/index.d.ts.map +0 -1
  370. package/dist/types/src/functions/list.d.ts.map +0 -1
  371. package/dist/types/src/functions/load.d.ts.map +0 -1
  372. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +0 -8
  373. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +0 -1
  374. package/dist/types/src/hooks/useExecutionGraph.d.ts +0 -6
  375. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +0 -1
  376. package/dist/types/src/stories/Chat.stories.d.ts +0 -30
  377. package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
  378. package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -4
  379. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
  380. package/dist/types/src/stories/components/ChatContainer.d.ts +0 -4
  381. package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
  382. package/dist/types/src/stories/components/ChessContainer.d.ts +0 -4
  383. package/dist/types/src/stories/components/ChessContainer.d.ts.map +0 -1
  384. package/dist/types/src/stories/components/CommentsContainer.d.ts +0 -4
  385. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +0 -1
  386. package/dist/types/src/stories/components/DebugCard.d.ts +0 -8
  387. package/dist/types/src/stories/components/DebugCard.d.ts.map +0 -1
  388. package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
  389. package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
  390. package/dist/types/src/stories/components/InvocationsContainer.d.ts +0 -4
  391. package/dist/types/src/stories/components/InvocationsContainer.d.ts.map +0 -1
  392. package/dist/types/src/stories/components/LoggingContainer.d.ts +0 -7
  393. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +0 -1
  394. package/dist/types/src/stories/components/MessageContainer.d.ts +0 -4
  395. package/dist/types/src/stories/components/MessageContainer.d.ts.map +0 -1
  396. package/dist/types/src/stories/components/PromptContainer.d.ts +0 -6
  397. package/dist/types/src/stories/components/PromptContainer.d.ts.map +0 -1
  398. package/dist/types/src/stories/components/ResearchInputStack.d.ts +0 -4
  399. package/dist/types/src/stories/components/ResearchInputStack.d.ts.map +0 -1
  400. package/dist/types/src/stories/components/ResearchOutputStack.d.ts +0 -4
  401. package/dist/types/src/stories/components/ResearchOutputStack.d.ts.map +0 -1
  402. package/dist/types/src/stories/components/TasksContainer.d.ts +0 -4
  403. package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
  404. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +0 -3
  405. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +0 -1
  406. package/dist/types/src/stories/components/TriggersContainer.d.ts +0 -14
  407. package/dist/types/src/stories/components/TriggersContainer.d.ts.map +0 -1
  408. package/dist/types/src/stories/components/index.d.ts +0 -16
  409. package/dist/types/src/stories/components/index.d.ts.map +0 -1
  410. package/dist/types/src/stories/components/types.d.ts +0 -7
  411. package/dist/types/src/stories/components/types.d.ts.map +0 -1
  412. package/dist/types/src/stories/testing/data.d.ts +0 -9
  413. package/dist/types/src/stories/testing/data.d.ts.map +0 -1
  414. package/dist/types/src/stories/testing/index.d.ts +0 -3
  415. package/dist/types/src/stories/testing/index.d.ts.map +0 -1
  416. package/dist/types/src/stories/testing/schema.d.ts +0 -7
  417. package/dist/types/src/stories/testing/schema.d.ts.map +0 -1
  418. package/dist/types/src/stories/testing/testing.d.ts +0 -48
  419. package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
  420. package/dist/types/src/testing/test-data.d.ts +0 -14
  421. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  422. package/dist/types/src/testing/test-functions.d.ts +0 -6
  423. package/dist/types/src/testing/test-functions.d.ts.map +0 -1
  424. package/src/capabilities/compute-runtime.ts +0 -124
  425. package/src/components/BlueprintContainer.tsx +0 -24
  426. package/src/components/PromptSettings.tsx +0 -90
  427. package/src/components/SequenceContainer.tsx +0 -131
  428. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -33
  429. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  430. package/src/components/SequenceEditor/index.ts +0 -5
  431. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  432. package/src/components/Toolbar/Toolbar.tsx +0 -21
  433. package/src/components/Toolbar/index.ts +0 -5
  434. package/src/components/Toolbar/useChatToolbarActions.ts +0 -126
  435. package/src/execution-graph/execution-graph.ts +0 -211
  436. package/src/execution-graph/index.ts +0 -5
  437. package/src/hooks/useComputeRuntimeCallback.ts +0 -25
  438. package/src/hooks/useExecutionGraph.ts +0 -20
  439. package/src/stories/Chat.stories.tsx +0 -657
  440. package/src/stories/components/BlueprintContainer.tsx +0 -34
  441. package/src/stories/components/ChatContainer.tsx +0 -74
  442. package/src/stories/components/ChessContainer.tsx +0 -17
  443. package/src/stories/components/CommentsContainer.tsx +0 -25
  444. package/src/stories/components/DebugCard.tsx +0 -61
  445. package/src/stories/components/GraphContainer.tsx +0 -119
  446. package/src/stories/components/InvocationsContainer.tsx +0 -17
  447. package/src/stories/components/LoggingContainer.tsx +0 -33
  448. package/src/stories/components/MessageContainer.tsx +0 -22
  449. package/src/stories/components/PromptContainer.tsx +0 -52
  450. package/src/stories/components/ResearchInputStack.tsx +0 -30
  451. package/src/stories/components/ResearchOutputStack.tsx +0 -29
  452. package/src/stories/components/TasksContainer.tsx +0 -49
  453. package/src/stories/components/TokenManagerContainer.tsx +0 -14
  454. package/src/stories/components/TriggersContainer.tsx +0 -75
  455. package/src/stories/components/index.ts +0 -20
  456. package/src/stories/components/types.ts +0 -11
  457. package/src/stories/testing/data.ts +0 -142
  458. package/src/stories/testing/index.ts +0 -6
  459. package/src/stories/testing/schema.ts +0 -17
  460. package/src/stories/testing/testing.tsx +0 -279
  461. package/src/testing/test-data.ts +0 -245
  462. package/src/testing/test-functions.ts +0 -16
  463. /package/dist/lib/browser/{blueprint-definition-VHFSRTEJ.mjs.map → blueprint-definition-5FT5JGPY.mjs.map} +0 -0
  464. /package/dist/lib/node-esm/{blueprint-definition-4E6XTLVN.mjs.map → blueprint-definition-XW6QQVLV.mjs.map} +0 -0
  465. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AssistantSettings/AssistantSettings.tsx", "../../../src/hooks/useBlueprintRegistry.ts", "../../../src/hooks/useChatProcessor.ts", "../../../src/hooks/useChatServices.ts", "../../../src/hooks/useChatToolbarActions.ts", "../../../src/components/index.ts", "../../../src/components/Chat/Chat.tsx", "../../../src/hooks/useContextBinder.ts", "../../../src/hooks/useContextObjects.ts", "../../../src/hooks/useFlush.ts", "../../../src/hooks/useItemTypes.ts", "../../../src/hooks/useOnline.ts", "../../../src/hooks/usePresets.ts", "../../../src/hooks/useReferencesProvider.ts", "../../../src/components/ChatPrompt/ChatActions.tsx", "../../../src/components/ChatPrompt/ChatOptions.tsx", "../../../src/components/ChatPrompt/ChatPresets.tsx", "../../../src/components/ChatPrompt/ChatReferences.tsx", "../../../src/components/ChatPrompt/ChatStatusIndicator.tsx", "../../../src/components/ChatThread/ChatThread.tsx", "../../../src/components/ChatThread/registry.tsx", "../../../src/components/ToolBlock/ToolBlock.tsx", "../../../src/components/ChatThread/sync.ts", "../../../src/components/Toolbox/Toolbox.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from '@dxos/ai';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../../meta';\nimport { type Assistant, LLM_PROVIDERS } from '../../types';\n\n// TODO(burdon): Factor out default Selector.\nconst DEFAULT_VALUE = '__default';\n\nconst LLM_PROVIDER_LABELS = {\n edge: 'DXOS',\n ollama: 'Ollama',\n lmstudio: 'LM Studio',\n} as const;\n\nexport const AssistantSettings = ({ settings }: { settings: Assistant.Settings }) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <ControlPage>\n <ControlSection title={t('settings title', { ns: meta.id })}>\n <ControlGroup>\n <ControlItemInput title={t('settings custom prompts label')}>\n <Input.Switch\n checked={!!settings.customPrompts}\n onCheckedChange={(checked) => (settings.customPrompts = checked)}\n />\n </ControlItemInput>\n\n <ControlItemInput title={t('settings llm provider label')}>\n <Select.Root\n value={settings.llmProvider ?? 'edge'}\n onValueChange={(value) => {\n settings.llmProvider = value === DEFAULT_VALUE ? undefined : (value as any);\n }}\n >\n <Select.TriggerButton placeholder={t('settings llm provider label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {LLM_PROVIDERS.map((model) => (\n <Select.Option key={model} value={model}>\n {LLM_PROVIDER_LABELS[model]}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </ControlItemInput>\n\n <ControlItemInput title={t('settings edge llm model label')}>\n <Select.Root\n value={settings.edgeModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.edgeModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_EDGE_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </ControlItemInput>\n\n <ControlItemInput title={t('settings ollama llm model label')}>\n <Select.Root\n value={settings.ollamaModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.ollamaModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_OLLAMA_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </ControlItemInput>\n </ControlGroup>\n </ControlSection>\n </ControlPage>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useSignalEffect } from '@preact/signals-react';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapabilities } from '@dxos/app-framework/react';\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { distinctBy, isNonNullable } from '@dxos/util';\n\n/**\n * Provide a registry of blueprints from plugins.\n */\n// TODO(burdon): Reconcile with eventual public registry.\nexport const useBlueprintRegistry = () => {\n const blueprints = useCapabilities(Capabilities.BlueprintDefinition);\n return useMemo(() => new Blueprint.Registry(blueprints), [blueprints]);\n};\n\nexport const useBlueprints = ({\n blueprintRegistry,\n space,\n}: {\n blueprintRegistry?: Blueprint.Registry;\n space?: Space;\n}) => {\n const staticBlueprints = useMemo(() => blueprintRegistry?.query() ?? [], [blueprintRegistry]);\n const spaceBlueprints = useQuery(space, Filter.type(Blueprint.Blueprint));\n return useMemo(() => {\n const blueprints = distinctBy([...staticBlueprints, ...spaceBlueprints], (b) => b.key);\n blueprints.sort(({ name: a }, { name: b }) => a.localeCompare(b));\n return blueprints;\n }, [staticBlueprints, spaceBlueprints]);\n};\n\n/**\n * Create reactive map of active blueprints (by key).\n */\nexport const useActiveBlueprints = ({ context }: { context?: AiContextBinder }) => {\n const [active, setActive] = useState<Map<string, Blueprint.Blueprint>>(new Map());\n\n useSignalEffect(() => {\n const refs = [...(context?.blueprints.value ?? [])];\n const blueprints = refs.map((ref) => ref.target).filter(isNonNullable);\n setActive(new Map(blueprints.map((blueprint) => [blueprint.key, blueprint])));\n });\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useBlueprintHandlers = ({\n space,\n context,\n blueprintRegistry,\n}: {\n space: Space;\n context?: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n}) => {\n const onUpdateBlueprint = useCallback(\n async (key: string, checked: boolean) => {\n if (!context || !blueprintRegistry) {\n return;\n }\n\n // Find existing cloned blueprint.\n const { objects } = await space.db.query(Filter.type(Blueprint.Blueprint)).run();\n let storedBlueprint = objects.find((blueprint) => blueprint.key === key);\n if (checked) {\n if (!storedBlueprint) {\n const blueprint = blueprintRegistry.getByKey(key);\n if (!blueprint) {\n return;\n }\n\n // NOTE: Possible race condition with other peers.\n storedBlueprint = space.db.add(Obj.clone(blueprint));\n }\n await context.bind({ blueprints: [Ref.make(storedBlueprint)] });\n } else if (storedBlueprint) {\n await context.unbind({ blueprints: [Ref.make(storedBlueprint)] });\n }\n },\n [space, context, blueprintRegistry],\n );\n\n return { onUpdateBlueprint };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport type * as Runtime from 'effect/Runtime';\nimport { useContext, useMemo, useState } from 'react';\n\nimport { AiConversation } from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { log } from '@dxos/log';\nimport { type Queue, type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { AiChatProcessor, type AiChatServices, type AiServicePreset } from '../processor';\nimport { type Assistant } from '../types';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Assistant.Chat;\n preset?: AiServicePreset;\n services?: () => Promise<Runtime.Runtime<AiChatServices>>;\n blueprintRegistry?: Blueprint.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n services,\n blueprintRegistry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n // Create conversation from chat queue.\n const [conversation, setConversation] = useState<AiConversation>();\n useAsyncEffect(async () => {\n if (!space || !chat) {\n return;\n }\n\n // NOTE: Passing in space and getting queue from space rather than resolving the reference.\n // This is because if the chat isn't in a space yet, the reference will not be resolvable.\n const queue = space.queues.get(chat.queue.dxn);\n const conversation = new AiConversation(queue as Queue<any>);\n await conversation.open();\n setConversation(conversation);\n return () => {\n void conversation.close();\n setConversation(undefined);\n };\n }, [space, chat?.queue.dxn.toString()]);\n\n // Create processor.\n const processor = useMemo(() => {\n if (!services || !conversation) {\n return undefined;\n }\n\n log('creating processor', { preset, model: preset?.model, settings });\n return new AiChatProcessor(conversation, services, {\n observableRegistry,\n blueprintRegistry,\n model: preset?.model,\n });\n }, [services, conversation, blueprintRegistry, preset]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport type * as Runtime from 'effect/Runtime';\nimport { useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\nimport { type Space } from '@dxos/client/echo';\nimport { TracingService } from '@dxos/functions';\nimport { TracingServiceExt } from '@dxos/functions-runtime';\nimport { AutomationCapabilities } from '@dxos/plugin-automation';\nimport { useClient } from '@dxos/react-client';\n\nimport { type AiChatServices } from '../processor';\nimport { type Assistant } from '../types';\n\nexport type UseChatServicesProps = {\n space?: Space;\n chat?: Assistant.Chat;\n};\n\n/**\n * Construct service layer.\n */\n// TODO(dmaretskyi): Better return type.\nexport const useChatServices = ({\n space,\n chat,\n}: UseChatServicesProps): (() => Promise<Runtime.Runtime<AiChatServices>>) | undefined => {\n const client = useClient();\n space ??= client.spaces.default;\n\n const runtimeResolver = useCapability(AutomationCapabilities.ComputeRuntime);\n return useMemo(() => {\n const runtime = runtimeResolver.getRuntime(space.id);\n return () =>\n runtime.runPromise(\n Effect.gen(function* () {\n return yield* Effect.runtime<AiChatServices>().pipe(\n Effect.provide(\n chat?.traceQueue?.target\n ? TracingServiceExt.layerQueue(chat.traceQueue?.target)\n : TracingService.layerNoop,\n ),\n );\n }),\n );\n }, [space, chat?.traceQueue?.target]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useMemo } from 'react';\n\nimport { createIntent } from '@dxos/app-framework';\nimport { useIntentDispatcher } from '@dxos/app-framework/react';\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { MenuBuilder, useMenuActions } from '@dxos/react-ui-menu';\n\nimport { useChatContext } from '../components';\nimport { meta } from '../meta';\nimport { Assistant, AssistantAction } from '../types';\n\nexport type ChatToolbarActionsProps = {\n chat?: Assistant.Chat;\n companionTo?: Obj.Any;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo }: ChatToolbarActionsProps) => {\n const { dispatch } = useIntentDispatcher();\n const { space } = useChatContext('useChatToolbarActions');\n const query = companionTo\n ? Query.select(Filter.ids(companionTo.id)).targetOf(Assistant.CompanionTo).source()\n : Query.select(Filter.nothing());\n\n // TODO(wittjosiah): Query in react vs query in atom?\n const chats = useQuery(space, query);\n\n // Create stable reference for dependency array to avoid circular reference issues.\n return useMenuActions(\n useMemo(() => {\n return Atom.make(() => {\n const builder = MenuBuilder.make()\n .root({\n label: ['chat toolbar title', { ns: meta.id }],\n })\n .action(\n 'new',\n {\n label: ['new thread button', { ns: meta.id }],\n icon: 'ph--plus--regular',\n type: 'new',\n },\n () =>\n dispatch(\n createIntent(AssistantAction.SetCurrentChat, {\n companionTo,\n chat: undefined,\n }),\n ).pipe(Effect.runPromise),\n )\n .action(\n 'rename',\n {\n label: ['rename thread button', { ns: meta.id }],\n icon: 'ph--magic-wand--regular',\n type: 'rename',\n disabled: !chat,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* dispatch(createIntent(AssistantAction.UpdateChatName, { chat }));\n }).pipe(Effect.runPromise),\n )\n .action(\n 'branch',\n {\n label: ['button branch thread', { ns: meta.id }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: true,\n },\n () => {},\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat history label', { ns: meta.id }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object name placeholder', { ns: Assistant.Chat.typename }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* dispatch(\n createIntent(AssistantAction.SetCurrentChat, {\n companionTo,\n chat,\n }),\n );\n }).pipe(Effect.runPromise),\n );\n });\n },\n );\n }\n\n return builder.build();\n });\n }, [chats.length, space?.id, companionTo?.id, chat?.id, dispatch]),\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AssistantSettings';\nexport * from './Chat';\nexport * from './TemplateEditor';\nexport * from './Toolbox';\n\nexport const BlueprintArticle = lazy(() => import('./BlueprintArticle'));\nexport const ChatCompanion = lazy(() => import('./ChatCompanion'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\nexport const ChatDialog = lazy(() => import('./ChatDialog'));\nexport const PromptArticle = lazy(() => import('./PromptArticle'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport * as Array from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport React, { type PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Event } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { useVoiceInput } from '@dxos/plugin-transcription';\nimport { type Space, getSpace, useQueue } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Input, type ThemedClassName, useDynamicRef, useTranslation } from '@dxos/react-ui';\nimport { ChatEditor, type ChatEditorController, type ChatEditorProps } from '@dxos/react-ui-chat';\nimport { type MarkdownStreamController } from '@dxos/react-ui-components';\nimport { MenuProvider, ToolbarMenu } from '@dxos/react-ui-menu';\nimport { mx } from '@dxos/react-ui-theme';\nimport { Message } from '@dxos/types';\nimport { isTruthy } from '@dxos/util';\n\nimport { useChatToolbarActions } from '../../hooks';\nimport { meta } from '../../meta';\nimport { type AiChatProcessor } from '../../processor';\nimport { type Assistant } from '../../types';\nimport {\n ChatActions,\n type ChatActionsProps,\n ChatOptions,\n type ChatPresetsProps,\n ChatReferences,\n ChatStatusIndicator,\n} from '../ChatPrompt';\nimport { ChatThread as NaturalChatThread, type ChatThreadProps as NaturalChatThreadProps } from '../ChatThread';\n\nimport { type ChatEvent } from './events';\n\n//\n// Context\n// NOTE: The context should not be exported. It is only used internally.\n// Components outside of this Radix-style group shuld define their own APIs.\n//\n\ntype ChatContextValue = {\n debug?: boolean;\n event: Event<ChatEvent>;\n space?: Space;\n chat?: Assistant.Chat;\n messages: Message.Message[];\n processor: AiChatProcessor;\n};\n\nexport const [ChatContextProvider, useChatContext] = createContext<ChatContextValue>('Chat');\n\n//\n// Root\n//\n\ntype ChatRootProps = PropsWithChildren<\n Pick<ChatContextValue, 'space' | 'chat' | 'processor'> & {\n onEvent?: (event: ChatEvent) => void;\n }\n>;\n\nconst ChatRoot = ({ children, chat, processor, onEvent, ...props }: ChatRootProps) => {\n const [debug, setDebug] = useState(false);\n const pending = useAtomValue(processor.messages);\n const streaming = useAtomValue(processor.streaming);\n const lastPrompt = useRef<string | undefined>(undefined);\n\n // Messages.\n const queue = useQueue<Message.Message>(chat?.queue.dxn);\n const messages = useMemo(() => {\n const queueMessages = queue?.objects?.filter(Obj.instanceOf(Message.Message)) ?? [];\n return Array.dedupeWith([...queueMessages, ...pending], ({ id: a }, { id: b }) => a === b);\n }, [queue?.objects, pending]);\n\n // Events.\n const event = useMemo(() => new Event<ChatEvent>(), []);\n useEffect(() => {\n return event.on((ev) => {\n switch (ev.type) {\n case 'toggle-debug': {\n setDebug((current) => !current);\n break;\n }\n\n case 'submit': {\n const text = ev.text.trim();\n if (!streaming && text.length) {\n lastPrompt.current = ev.text;\n void processor.request({ message: text });\n }\n break;\n }\n\n case 'retry': {\n if (!streaming) {\n void processor.retry();\n }\n break;\n }\n\n case 'cancel': {\n if (streaming) {\n void processor.cancel();\n if (lastPrompt.current) {\n event.emit({ type: 'update-prompt', text: lastPrompt.current });\n }\n }\n break;\n }\n }\n\n onEvent?.(ev);\n });\n }, [event, processor, streaming, onEvent]);\n\n const space = props.space ?? getSpace(chat);\n\n return (\n <ChatContextProvider\n debug={debug}\n event={event}\n space={space}\n chat={chat}\n messages={messages}\n processor={processor}\n {...props}\n >\n {children}\n </ChatContextProvider>\n );\n};\n\nChatRoot.displayName = 'Chat.Root';\n\n//\n// Viewport\n//\n\ntype ChatViewportProps = ThemedClassName<PropsWithChildren>;\n\nconst ChatViewport = ({ classNames, children }: ChatViewportProps) => {\n return (\n <div role='none' className={mx('flex flex-col bs-full is-full', classNames)}>\n {children}\n </div>\n );\n};\n\n//\n// Prompt\n//\n\ntype ChatPromptProps = ThemedClassName<\n {\n outline?: boolean;\n settings?: boolean;\n } & Pick<ChatEditorProps, 'placeholder'> &\n Omit<ChatPresetsProps, 'onChange'> & {\n expandable?: boolean;\n online?: boolean;\n onOnlineChange?: (online: boolean) => void;\n onPresetChange?: ChatPresetsProps['onChange'];\n }\n>;\n\nconst ChatPrompt = ({\n classNames,\n outline,\n settings = true,\n placeholder,\n expandable,\n online,\n presets,\n preset,\n onPresetChange,\n onOnlineChange,\n}: ChatPromptProps) => {\n const { t } = useTranslation(meta.id);\n const { space, processor, event } = useChatContext(ChatPrompt.displayName);\n\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n const streaming = useAtomValue(processor.streaming);\n const active = useAtomValue(processor.active);\n const activeRef = useDynamicRef(active);\n\n const editorRef = useRef<ChatEditorController>(null);\n const [recordingState, setRecordingState] = useState(false);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'update-prompt':\n if (!editorRef.current?.getText()?.length) {\n editorRef.current?.setText(event.text);\n editorRef.current?.focus();\n }\n break;\n case 'record-start':\n setRecordingState(true);\n break;\n case 'record-stop':\n setRecordingState(false);\n break;\n }\n });\n }, [event]);\n\n // TODO(burdon): Configure capability in TranscriptionPlugin.\n const { recording } = useVoiceInput({\n active: recordingState,\n onUpdate: (text) => {\n editorRef.current?.setText(text);\n editorRef.current?.focus();\n },\n });\n\n const extensions = useMemo<Extension[]>(() => {\n return [\n Prec.highest(\n keymap.of([\n {\n key: 'Mod-d',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'toggle-debug' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-previous' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-next' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isTruthy);\n }, [event, expandable]);\n\n const handleSubmit = useCallback<NonNullable<ChatEditorProps['onSubmit']>>(\n (text) => {\n if (!activeRef.current) {\n event.emit({ type: 'submit', text });\n return true;\n }\n },\n [event],\n );\n\n const handleEvent = useCallback<NonNullable<ChatActionsProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n return (\n <div\n role='group'\n className={mx(\n 'flex flex-col is-full density-fine',\n outline &&\n 'bg-groupSurface border border-subduedSeparator transition transition-border [&:has(.cm-content:focus)]:border-separator rounded',\n classNames,\n )}\n >\n <div role='none' className='flex p-2 gap-2'>\n <ChatStatusIndicator classNames='p-1' preset={preset} error={error} processing={streaming} />\n <ChatEditor\n ref={editorRef}\n autoFocus\n lineWrapping\n classNames='col-span-2 pbs-0.5'\n placeholder={placeholder ?? t('prompt placeholder')}\n extensions={extensions}\n onSubmit={handleSubmit}\n />\n </div>\n\n {space && settings && (\n <div role='none' className='flex items-center overflow-hidden'>\n <ChatOptions\n space={space}\n blueprintRegistry={processor.blueprintRegistry}\n context={processor.context}\n preset={preset}\n presets={presets}\n onPresetChange={onPresetChange}\n />\n\n <div role='none' className='flex grow overflow-x-auto scrollbar-none'>\n <ChatReferences space={space} context={processor.context} />\n </div>\n\n <ChatActions\n classNames='col-span-2'\n microphone={true}\n recording={recording}\n processing={streaming}\n onEvent={handleEvent}\n >\n {/* TODO(burdon): Move offline switch into dialog. */}\n {online !== undefined && (\n <Input.Root>\n <Input.Label srOnly>{t('online switch label')}</Input.Label>\n <Input.Switch classNames='mli-2' checked={online} onCheckedChange={onOnlineChange} />\n </Input.Root>\n )}\n </ChatActions>\n </div>\n )}\n </div>\n );\n};\n\nChatPrompt.displayName = 'Chat.Prompt';\n\n//\n// Thread\n//\n\ntype ChatThreadProps = Omit<NaturalChatThreadProps, 'identity' | 'messages' | 'tools'>;\n\nconst ChatThread = (props: ChatThreadProps) => {\n const { debug, event, messages, processor } = useChatContext(ChatThread.displayName);\n const identity = useIdentity();\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n\n const controllerRef = useRef<MarkdownStreamController | null>(null);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'submit':\n case 'scroll-to-bottom':\n controllerRef.current?.scrollToBottom();\n break;\n case 'nav-previous':\n controllerRef.current?.navigatePrevious();\n break;\n case 'nav-next':\n controllerRef.current?.navigateNext();\n break;\n }\n });\n }, [event]);\n\n const handleEvent = useCallback<NonNullable<NaturalChatThreadProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n if (!identity) {\n return null;\n }\n\n return (\n <NaturalChatThread\n {...props}\n identity={identity}\n messages={messages}\n error={error}\n debug={debug}\n onEvent={handleEvent}\n ref={controllerRef}\n />\n );\n};\n\nChatThread.displayName = 'Chat.Thread';\n\n//\n// Toolbar\n//\n\ntype ChatToolbarProps = ThemedClassName<{ companionTo?: Obj.Any }>;\n\nconst ChatToolbar = ({ classNames, companionTo }: ChatToolbarProps) => {\n const { chat } = useChatContext(ChatToolbar.displayName);\n const menu = useChatToolbarActions({ chat, companionTo });\n\n return (\n <MenuProvider\n {...menu}\n attendableId={companionTo ? Obj.getDXN(companionTo).toString() : chat ? Obj.getDXN(chat).toString() : ''}\n >\n <ToolbarMenu classNames={classNames} textBlockWidth />\n </MenuProvider>\n );\n};\n\nChatToolbar.displayName = 'Chat.Toolbar';\n\n//\n// Chat\n//\n\nexport const Chat = {\n Root: ChatRoot,\n Viewport: ChatViewport,\n Prompt: ChatPrompt,\n Thread: ChatThread,\n Toolbar: ChatToolbar,\n};\n\nexport type { ChatRootProps, ChatViewportProps, ChatThreadProps, ChatPromptProps, ChatToolbarProps, ChatEvent };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useState } from 'react';\n\nimport { AiContextBinder } from '@dxos/assistant';\nimport { type Queue } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\n// NOTE: This takes a queue rather than a chat because the chat may not be in a space yet.\nexport const useContextBinder = (queue: Queue | undefined): AiContextBinder | undefined => {\n const [binder, setBinder] = useState<AiContextBinder>();\n\n useAsyncEffect(async () => {\n if (!queue) {\n return;\n }\n\n const binder = new AiContextBinder(queue);\n await binder.open();\n setBinder(binder);\n\n return () => {\n void binder.close();\n };\n }, [queue]);\n\n return binder;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type DXN, type Obj, Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\nimport { isNonNullable } from '@dxos/util';\n\nexport type UseContextObjects = {\n objects: Obj.Any[];\n onUpdateObject: (dxn: DXN, checked: boolean) => Promise<void>;\n};\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({\n space,\n context,\n}: {\n space?: Space;\n context?: AiContextBinder;\n}): UseContextObjects => {\n const objects = context?.objects.value.map((ref) => ref.target).filter(isNonNullable) ?? [];\n\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: DXN, checked: boolean) => {\n if (!space || !context) {\n return;\n }\n\n // Load the object by DXN/id from the current space.\n const id = dxn.asEchoDXN();\n const object = id && (await space.db.getObjectById(id.echoId));\n if (!object) {\n log.warn('Object not found', { dxn, id });\n return;\n }\n\n const ref = Ref.fromDXN(dxn);\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [space, context],\n );\n\n return {\n objects,\n onUpdateObject: handleUpdateObject,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nexport const useFlush = (space?: Space) => {\n const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');\n const resetTimer = useRef<NodeJS.Timeout | null>(null);\n\n const handleFlush = useCallback(() => {\n if (!space) {\n return;\n }\n\n queueMicrotask(async () => {\n if (resetTimer.current) {\n clearTimeout(resetTimer.current);\n }\n\n setState('flushing');\n await space.db.flush();\n setState('flushed');\n\n resetTimer.current = setTimeout(() => {\n setState('idle');\n resetTimer.current = null;\n }, 1_000);\n });\n }, [space]);\n\n return { state, handleFlush };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useEffect, useState } from 'react';\n\nimport { type Type } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\nimport { ItemAnnotation } from '@dxos/schema';\n\n// TODO(burdon): Pass in filter.\nexport const useItemTypes = (space?: Space): Type.Obj.Any[] => {\n const [types, setTypes] = useState<Type.Obj.Any[]>([]);\n useEffect(() => {\n if (!space) {\n return;\n }\n\n return space.db.schemaRegistry.query().subscribe(\n (query) => {\n const types = Array.from(\n new Set(\n [...space.db.graph.schemaRegistry.schemas, ...query.results].filter((type) =>\n Option.isSome(ItemAnnotation.get(type)),\n ),\n ),\n );\n\n setTypes(types);\n },\n { fire: true },\n );\n }, [space]);\n\n return types;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Dispatch, type SetStateAction, useState } from 'react';\n\nexport const useOnline = (): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const [online, setOnline] = useState(true);\n return [online, setOnline];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type ChatPromptProps } from '../components';\nimport { type AiServicePreset, AiServicePresets } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPromptProps, 'presets' | 'onPresetChange'>;\n\nexport const usePresets = (online: boolean): UsePresets => {\n // TODO(burdon): Memo preset for provider.\n const [preset, setPreset] = useState<AiServicePreset>();\n const presets = useMemo(\n () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),\n [online],\n );\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n useEffect(() => {\n setPreset(presets[0]);\n }, [presets]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPromptProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset: preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapabilities } from '@dxos/app-framework/react';\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n const blueprints = useCapabilities(Capabilities.BlueprintDefinition);\n\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = blueprints.map((blueprint) => blueprint.schema).flat();\n // const { objects } = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const { objects } = await space.db.query(Filter.everything()).run();\n\n return (\n objects\n // TODO(burdon): Remove cast ??? (+ two instances below).\n // .map((object) => {\n // log.info('object', { object, label: Obj.getLabel(object as any) });\n // return object;\n // })\n .filter((object) => stringMatch(query, Obj.getLabel(object as any) ?? ''))\n // TODO(dmaretskyi): `Type.getDXN` (at the point of writing) didn't work here as it was schema-only.\n .filter((object) => !!Obj.getDXN(object as Obj.Any))\n .map((object) => ({\n uri: Obj.getDXN(object as any).toString(),\n label: Obj.getLabel(object as any) ?? '',\n }))\n );\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.ids(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space, blueprints]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { meta } from '../../meta';\nimport { type ChatEvent } from '../Chat';\n\nexport type ChatActionsProps = ThemedClassName<\n PropsWithChildren<{\n microphone?: boolean;\n recording?: boolean;\n processing?: boolean;\n onEvent?: (event: ChatEvent) => void;\n }>\n>;\n\nexport const ChatActions = ({ classNames, children, microphone, recording, processing, onEvent }: ChatActionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className={mx('flex items-center mie-1', classNames)}>\n {children}\n\n <IconButton\n disabled={!processing}\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('cancel processing button')}\n onClick={() => onEvent?.({ type: 'cancel' })}\n />\n\n {microphone && (\n <IconButton\n disabled={!processing}\n classNames={mx(recording && 'bg-primary-500')}\n variant='ghost'\n icon='ph--microphone--regular'\n iconOnly\n noTooltip\n label={t('microphone button')}\n onMouseDown={() => onEvent?.({ type: 'record-start' })}\n onMouseUp={() => onEvent?.({ type: 'record-stop' })}\n onTouchStart={() => onEvent?.({ type: 'record-start' })}\n onTouchEnd={() => onEvent?.({ type: 'record-stop' })}\n />\n )}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type JSX, useMemo, useState } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { Filter, Obj, Type } from '@dxos/echo';\nimport { type Space, useQuery } from '@dxos/react-client/echo';\nimport { Icon, IconButton, Popover, Select, useTranslation } from '@dxos/react-ui';\nimport { Listbox, SearchList } from '@dxos/react-ui-searchlist';\nimport { Tabs } from '@dxos/react-ui-tabs';\n\nimport { useActiveBlueprints, useBlueprintHandlers, useBlueprints, useContextObjects, useItemTypes } from '../../hooks';\nimport { meta } from '../../meta';\n\nconst panelClassNames = 'is-[calc(100dvw-.5rem)] sm:is-max md:is-72 max-is-[--text-content]';\n\nexport type ChatOptionsProps = {\n space: Space;\n context: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n presets?: { id: string; label: string }[];\n preset?: string;\n onPresetChange?: (id: string) => void;\n};\n\n/**\n * Manages the runtime context for the chat.\n */\nexport const ChatOptions = ({\n space,\n context,\n blueprintRegistry,\n presets,\n preset,\n onPresetChange,\n}: ChatOptionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div role='none' className='flex p-2'>\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton variant='ghost' icon='ph--plus--regular' iconOnly label={t('context objects button')} />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={panelClassNames}>\n <Popover.Viewport>\n <ObjectsPanel space={space} context={context} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--sliders-horizontal--regular'\n iconOnly\n label={t('context settings button')}\n />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={panelClassNames}>\n <Popover.Viewport>\n <Tabs.Root orientation='horizontal' defaultValue='blueprints' defaultActivePart='list' tabIndex={-1}>\n <Tabs.Viewport 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'>\n <Tabs.Tabpanel value='blueprints' tabIndex={-1} classNames='dx-focus-ring-inset'>\n <BlueprintsPanel blueprintRegistry={blueprintRegistry} space={space} context={context} />\n </Tabs.Tabpanel>\n <Tabs.Tabpanel value='model' tabIndex={-1} classNames='dx-focus-ring-inset !pli-0'>\n <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />\n </Tabs.Tabpanel>\n <Tabs.Tablist classNames='sm:overflow-x-hidden justify-center p-[--dx-cardSpacingChrome] border-bs border-subduedSeparator order-last'>\n <Tabs.IconTab\n value='blueprints'\n icon='ph--blueprint--regular'\n label={t('blueprints in context title')}\n />\n <Tabs.IconTab value='model' label={t('chat model title')} icon='ph--cpu--regular' />\n </Tabs.Tablist>\n </Tabs.Viewport>\n </Tabs.Root>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n};\n\nconst BlueprintsPanel = ({\n blueprintRegistry,\n space,\n context,\n}: Pick<ChatOptionsProps, 'blueprintRegistry' | 'space' | 'context'>) => {\n const { t } = useTranslation(meta.id);\n\n const blueprints = useBlueprints({ blueprintRegistry, space });\n const activeBlueprints = useActiveBlueprints({ context });\n const { onUpdateBlueprint } = useBlueprintHandlers({ space, context, blueprintRegistry });\n\n return (\n <SearchList.Root>\n <SearchList.Content classNames='plb-cardSpacingChrome'>\n {blueprints.map((blueprint) => {\n const isActive = activeBlueprints.has(blueprint.key);\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={blueprint.key}\n value={blueprint.name}\n onSelect={() => onUpdateBlueprint?.(blueprint.key, !isActive)}\n >\n <div className='grow truncate'>{blueprint.name}</div>\n <Icon icon='ph--check--regular' classNames={[!isActive && 'invisible']} />\n </SearchList.Item>\n );\n })}\n </SearchList.Content>\n <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-cardSpacingChrome' autoFocus />\n </SearchList.Root>\n );\n};\n\nconst ModelsPanel = ({\n presets,\n preset,\n onPresetChange,\n}: Pick<ChatOptionsProps, 'presets' | 'preset' | 'onPresetChange'>) => {\n return (\n <Listbox.Root value={preset} onValueChange={onPresetChange} autoFocus>\n {presets?.map(({ id, label }) => {\n return (\n <Listbox.Option key={id} value={id}>\n <Listbox.OptionLabel>{label}</Listbox.OptionLabel>\n <Listbox.OptionIndicator />\n </Listbox.Option>\n );\n })}\n </Listbox.Root>\n );\n};\n\nconst ANY = '__any__';\n\nconst ObjectsPanel = ({ space, context }: Pick<ChatOptionsProps, 'space' | 'context'>): JSX.Element => {\n const { t } = useTranslation(meta.id);\n\n // Item types sorted by label.\n const types = useItemTypes(space);\n const typenames = useMemo(() => {\n const typenames = types.map((type) => {\n const typename = Type.getTypename(type);\n return {\n typename,\n label: t('typename label', { ns: typename, defaultValue: typename }),\n };\n });\n\n typenames.sort((a, b) => a.label.localeCompare(b.label));\n return typenames;\n }, [types]);\n\n // Current type and filter.\n const [typename, setTypename] = useState<string>(ANY);\n const anyFilter = useMemo(\n () => Filter.or(...typenames.map(({ typename }) => Filter.typename(typename))),\n [typenames],\n );\n\n // Context objects.\n const objects = useQuery(space, typename === ANY ? anyFilter : Filter.typename(typename));\n const { objects: contextObjects, onUpdateObject } = useContextObjects({ space, context });\n\n return (\n <SearchList.Root>\n <SearchList.Content classNames='p-cardSpacingChrome [&:has([cmdk-list-sizer]:empty)]:plb-0'>\n {objects.length ? (\n objects.map((object) => {\n const label = Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id;\n const isActive = contextObjects.findIndex((obj) => obj.id === object.id) !== -1;\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={object.id}\n value={object.id}\n onSelect={() => onUpdateObject?.(Obj.getDXN(object), !isActive)}\n >\n <div className='grow truncate'>{label}</div>\n <Icon icon='ph--check--regular' classNames={[!isActive && 'invisible']} />\n </SearchList.Item>\n );\n })\n ) : (\n <SearchList.Item>{t('no results')}</SearchList.Item>\n )}\n </SearchList.Content>\n\n <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 pli-cardSpacingChrome mbe-cardSpacingChrome'>\n <Select.Root value={typename === ANY ? undefined : typename} onValueChange={setTypename}>\n <Select.TriggerButton density='fine' placeholder={t('type filter placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.ScrollUpButton />\n <Select.Viewport>\n <Select.Option value={ANY}>{t('any type filter label')}</Select.Option>\n {typenames.map(({ typename, label }) => (\n <Select.Option key={typename} value={typename}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.ScrollDownButton />\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-0' autoFocus />\n </div>\n </SearchList.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Select } from '@dxos/react-ui';\n\nexport type ChatPresetsProps = {\n presets?: { id: string; label: string }[];\n preset?: string;\n onChange?: (id: string) => void;\n};\n\nexport const ChatPresets = ({ presets, preset, onChange }: ChatPresetsProps) => {\n return (\n <Select.Root value={preset} onValueChange={onChange}>\n <Select.TriggerButton classNames='text-sm' />\n <Select.Content>\n {presets?.map(({ id, label }) => (\n <Select.Option key={id} value={id} classNames='text-sm'>\n {label}\n </Select.Option>\n ))}\n <Select.Arrow />\n </Select.Content>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\nimport { IconButton, type Label, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useContextObjects } from '../../hooks';\nimport { meta } from '../../meta';\n\nexport type ChatReferencesProps = ThemedClassName<{\n context: AiContextBinder;\n space: Space;\n}>;\n\nexport const ChatReferences = ({ classNames, context, space }: ChatReferencesProps) => {\n const { t } = useTranslation(meta.id);\n const { objects, onUpdateObject } = useContextObjects({ space, context });\n\n return (\n <ul className={mx('flex', classNames)}>\n {objects.map((obj) => {\n const dxn = Obj.getDXN(obj);\n const typename = Obj.getTypename(obj);\n const label: Label = Obj.getLabel(obj) ?? (typename ? ['object name placeholder', { ns: typename }] : obj.id);\n return (\n <li key={dxn.toString()} className='dx-tag plb-0 pis-2 flex items-center' data-hue='neutral'>\n {toLocalizedString(label, t)}\n <IconButton\n icon='ph--x--bold'\n iconOnly\n variant='ghost'\n label={t('remove object in context label')}\n classNames='p-0 hover:bg-transparent'\n size={3}\n onClick={() => onUpdateObject?.(dxn, false)}\n />\n </li>\n );\n })}\n </ul>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { type ThemedClassName, Tooltip, useTimeout } from '@dxos/react-ui';\nimport { Spinner, type SpinnerProps } from '@dxos/react-ui-sfx';\nimport { mx } from '@dxos/react-ui-theme';\n\nconst period = 3_000;\n\nexport type ChatStatusIndicatorProps = ThemedClassName<\n {\n preset?: string;\n processing?: boolean;\n error?: Error;\n } & Pick<SpinnerProps, 'size' | 'onClick'>\n>;\n\nexport const ChatStatusIndicator = ({ classNames, preset, processing, error, ...props }: ChatStatusIndicatorProps) => {\n const [init, setInit] = useState(false);\n useEffect(() => setInit(false), [preset]);\n useTimeout(\n async () => {\n setInit(true);\n },\n period / 2,\n [preset],\n );\n\n return (\n <div role='none' className={mx('relative flex', classNames)}>\n <Spinner duration={period} state={!init ? 'flash' : error ? 'error' : processing ? 'spin' : 'pulse'} {...props} />\n {error && (\n <Tooltip.Trigger asChild content={error.message}>\n <div className='absolute inset-0' />\n </Tooltip.Trigger>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type CSSProperties, forwardRef, useCallback, useEffect, useMemo } from 'react';\n\nimport { PublicKey } from '@dxos/keys';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type ThemedClassName, useForwardedRef } from '@dxos/react-ui';\nimport { MarkdownStream, type MarkdownStreamController, type MarkdownStreamProps } from '@dxos/react-ui-components';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type Message } from '@dxos/types';\nimport { keyToFallback } from '@dxos/util';\n\nimport { type ChatEvent } from '../Chat';\n\nimport { blockToMarkdown, componentRegistry } from './registry';\nimport { MessageSyncer } from './sync';\n\nexport type ChatThreadProps = ThemedClassName<\n {\n identity?: Identity;\n messages?: Message.Message[];\n error?: Error;\n onEvent?: (event: ChatEvent) => void;\n } & Pick<MarkdownStreamProps, 'cursor' | 'fadeIn' | 'debug'>\n>;\n\n// TODO(burdon): Memo thread position.\nexport const ChatThread = forwardRef<MarkdownStreamController, ChatThreadProps>(\n (\n { classNames, identity, messages = [], error, cursor = false, fadeIn = true, debug = false, onEvent },\n forwardedRef,\n ) => {\n const controllerRef = useForwardedRef(forwardedRef);\n const controller = controllerRef.current;\n\n const userHue = useMemo(\n () => identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue,\n [identity],\n );\n\n // Show error.\n useEffect(() => {\n controller?.scrollToBottom();\n }, [controller, error]);\n\n // Update document.\n const syncer = useMemo(() => controller && new MessageSyncer(controller, blockToMarkdown), [controller]);\n useEffect(() => {\n const reset = syncer?.append(messages, true);\n if (reset) {\n controller?.scrollToBottom('instant');\n }\n }, [syncer, messages]);\n\n // Event adapter.\n const handleEvent = useCallback<NonNullable<MarkdownStreamProps['onEvent']>>(\n ({ type, value }) => {\n switch (type) {\n case 'submit': {\n value && onEvent?.({ type, text: value });\n break;\n }\n }\n },\n [onEvent],\n );\n\n return (\n <div\n role='none'\n className={mx('flex bs-full is-full justify-center overflow-hidden', classNames)}\n style={{ '--user-fill': `var(--dx-${userHue}Fill)` } as CSSProperties}\n >\n <MarkdownStream\n ref={controllerRef}\n registry={componentRegistry}\n cursor={cursor}\n fadeIn={fadeIn}\n debug={debug}\n onEvent={handleEvent}\n />\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { log } from '@dxos/log';\nimport {\n PromptWidget,\n ReferenceWidget,\n SelectWidget,\n SuggestionWidget,\n SummaryWidget,\n ToggleContainer,\n} from '@dxos/react-ui-components';\nimport { type XmlWidgetProps, type XmlWidgetRegistry, getXmlTextChild } from '@dxos/react-ui-editor';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { ContentBlock, type Message } from '@dxos/types';\n\nimport { ToolBlock } from '../ToolBlock';\n\nimport { type BlockRenderer, type MessageThreadContext } from './sync';\n\nconst Fallback = ({ _tag, ...props }: XmlWidgetProps<MessageThreadContext>) => {\n return (\n <ToggleContainer.Root classNames='rounded-sm'>\n <ToggleContainer.Header classNames='bg-groupSurface'>{_tag}</ToggleContainer.Header>\n <ToggleContainer.Content classNames='bg-modalSurface'>\n <Json classNames='!p-2 text-sm' data={props} />\n </ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n\n/**\n * Custom XML tags registry.\n */\nexport const componentRegistry: XmlWidgetRegistry = {\n //\n // Widgets\n //\n\n ['prompt' as const]: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new PromptWidget(text) : null;\n },\n },\n ['reference' as const]: {\n block: false,\n factory: ({ children, ref }) => {\n const text = getXmlTextChild(children);\n return text && ref ? new ReferenceWidget(text, ref) : null;\n },\n },\n ['select' as const]: {\n block: true,\n factory: ({ children }) => {\n const options = children\n ?.map((option: any) => option._tag === 'option' && getXmlTextChild(option.children))\n .filter(Boolean);\n return options?.length ? new SelectWidget(options) : null;\n },\n },\n ['suggestion' as const]: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new SuggestionWidget(text) : null;\n },\n },\n ['summary' as const]: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new SummaryWidget(text) : null;\n },\n },\n\n //\n // React\n //\n\n ['toolCall' as const]: {\n block: true,\n Component: ToolBlock,\n },\n ['toolResult' as const]: {\n block: true,\n Component: Fallback,\n },\n ['toolkit' as const]: {\n block: true,\n Component: Fallback,\n },\n\n //\n // Fallback\n //\n\n ['json' as const]: {\n block: true,\n Component: Fallback,\n },\n};\n\n/**\n * Convert block to markdown.\n */\nexport const blockToMarkdown: BlockRenderer = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => {\n let str = blockToMarkdownImpl(context, message, block);\n if (str && !block.pending) {\n return (str += '\\n');\n }\n\n return str;\n};\n\nconst blockToMarkdownImpl = (context: MessageThreadContext, message: Message.Message, block: ContentBlock.Any) => {\n log('blockToMarkdown', { block: JSON.stringify(block) });\n switch (block._tag) {\n case 'text': {\n if (message.sender.role === 'user') {\n return `<prompt>${block.text}</prompt>`;\n } else {\n const text = block.text.trim();\n if (text.length > 0) {\n return text;\n }\n }\n break;\n }\n case 'reference': {\n const dxn = block.reference.dxn;\n return `<reference ref=\"${dxn.toString()}\">${context.getObjectLabel(dxn)}</reference>`;\n }\n case 'suggestion': {\n if (block.pending) {\n return;\n }\n return `<suggestion>${block.text}</suggestion>`;\n }\n case 'select': {\n if (block.pending || block.options.length === 0) {\n return;\n }\n return `<select>${block.options.map((option) => `<option>${option}</option>`).join('')}</select>`;\n }\n case 'toolCall': {\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, {\n blocks: [block],\n });\n return `<toolCall id=\"${block.toolCallId}\" />`;\n }\n case 'toolResult': {\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, ({ blocks = [] }) => ({\n blocks: [...blocks, block],\n }));\n break;\n }\n case 'summary': {\n return `<summary>${ContentBlock.createSummaryMessage(block)}</summary>`;\n }\n default: {\n // TODO(burdon): Needs stable ID.\n return `<json id=\"${message.id}\">\\n${JSON.stringify(block)}\\n</json>`;\n }\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Tool from '@effect/ai/Tool';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { NumericTabs, TextCrawl, ToggleContainer, type ToggleContainerRootProps } from '@dxos/react-ui-components';\nimport { type XmlWidgetProps } from '@dxos/react-ui-editor';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { isNonNullable, safeParseJson } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nexport const isToolMessage = (message: Message.Message) => {\n return message.blocks.some((block: ContentBlock.Any) => block._tag === 'toolCall' || block._tag === 'toolResult');\n};\n\nexport type ToolBlockProps = XmlWidgetProps<{\n blocks: ContentBlock.Any[];\n}>;\n\nexport const ToolBlock = ({ view, blocks = [] }: ToolBlockProps) => {\n const { t } = useTranslation(meta.id);\n\n const items = useMemo<ToolContainerParams['items']>(() => {\n let lastToolCall: { tool: Tool.Any | undefined; block: ContentBlock.ToolCall } | undefined;\n // TODO(burdon): Get from context?\n const tools: Tool.Any[] = []; //processor.conversation.toolkit?.tools ?? [];\n return blocks\n .filter((block) => block._tag === 'toolCall' || block._tag === 'toolResult' || block._tag === 'summary')\n .map((block) => {\n switch (block._tag) {\n case 'toolCall': {\n if (block.pending && lastToolCall?.block.toolCallId === block.toolCallId) {\n return null;\n }\n\n const tool = tools.find((tool) => tool.name === block.name);\n lastToolCall = { tool, block };\n return {\n title: tool?.description ?? [t('tool call label'), tool?.name].join(' '),\n content: {\n ...block,\n input: safeParseJson(block.input),\n },\n };\n }\n\n case 'toolResult': {\n // TODO(burdon): Parse error type.\n if (block.error) {\n return {\n title: t('tool error label'),\n content: block,\n };\n }\n\n const title =\n lastToolCall?.tool?.description ?? [t('tool result label'), lastToolCall?.tool?.name].join(' ');\n lastToolCall = undefined;\n return {\n title,\n content: {\n ...block,\n result: safeParseJson(block.result),\n },\n };\n }\n\n case 'summary': {\n if (!lastToolCall) {\n return null;\n }\n\n return {\n title: t('summary label'),\n content: block,\n };\n }\n }\n })\n .filter(isNonNullable);\n }, [blocks]);\n\n const handleChangeOpen = useCallback(() => {\n setTimeout(() => {\n // Measure after animation.\n view?.requestMeasure();\n }, 1_000);\n }, [view]);\n\n if (!items.length) {\n return null;\n }\n\n return <ToolContainer items={items} onChangeOpen={handleChangeOpen} />;\n};\n\nToolBlock.displayName = 'ToolBlock';\n\ntype ToolContainerParams = {\n items: { title: string; content: any }[];\n} & Pick<ToggleContainerRootProps, 'onChangeOpen'>;\n\nexport const ToolContainer = ({ items, onChangeOpen }: ToolContainerParams) => {\n const tabsRef = useRef<HTMLDivElement>(null);\n const [selected, setSelected] = useState(0);\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n onChangeOpen?.(open);\n if (open) {\n tabsRef.current?.focus();\n }\n }, [open, onChangeOpen]);\n\n const handleSelect = (index: number) => {\n setSelected(index);\n };\n\n return (\n <ToggleContainer.Root classNames='mbs-2 is-full rounded-sm' open={open} onChangeOpen={setOpen}>\n <ToggleContainer.Header classNames='text-sm text-placeholder'>\n <TextCrawl key='status-roll' lines={items.map((item) => item.title)} autoAdvance greedy />\n </ToggleContainer.Header>\n <ToggleContainer.Content classNames='grid grid-cols-[32px_1fr]'>\n <NumericTabs ref={tabsRef} classNames='p-1' length={items.length} selected={selected} onSelect={handleSelect} />\n <Json\n data={items[selected]?.content}\n classNames='p-1 text-xs bg-transparent'\n replacer={{\n maxDepth: 3,\n maxArrayLen: 10,\n maxStringLen: 128,\n }}\n />\n </ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type DXN } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { type MarkdownStreamController } from '@dxos/react-ui-components';\nimport { type StateDispatch, type XmlWidgetStateManager } from '@dxos/react-ui-editor';\nimport { type ContentBlock, type Message } from '@dxos/types';\n\n/**\n * Update document.\n */\nexport type TextModel = Pick<MarkdownStreamController, 'view' | 'reset' | 'append' | 'updateWidget'>;\n\n/**\n * Thread context passed to renderer.\n */\nexport class MessageThreadContext implements Pick<MarkdownStreamController, 'updateWidget'> {\n constructor(private readonly _widgetState?: XmlWidgetStateManager) {}\n\n updateWidget<T>(id: string, value: StateDispatch<T>) {\n this._widgetState?.updateWidget(id, value);\n }\n\n // TODO(burdon): Resolve from hypergraph.\n getObjectLabel(_id: DXN) {\n return 'Object';\n }\n}\n\n/**\n * Renders a block to markdown.\n */\nexport type BlockRenderer = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => string | undefined;\n\n/**\n * Syncs messages with the editor.\n */\nexport class MessageSyncer {\n private _initialMessageId?: string;\n private _currentMessageIndex = 0;\n private _currentBlockIndex = 0;\n private _currentBlockContent?: string;\n\n private readonly _context: MessageThreadContext;\n\n constructor(\n private readonly _model: TextModel,\n private readonly _blockRenderer: BlockRenderer,\n ) {\n this._context = new MessageThreadContext(this._model);\n }\n\n get context() {\n return this._context;\n }\n\n reset() {\n log('reset');\n this._initialMessageId = undefined;\n this._currentMessageIndex = 0;\n this._currentBlockIndex = 0;\n this._currentBlockContent = undefined;\n void this._model.reset('');\n }\n\n /**\n * Syncs messages with the editor.\n */\n append(messages: Message.Message[], flush = false): boolean {\n // Check if new set of messages.\n if (this._initialMessageId !== messages[0]?.id) {\n this.reset();\n this._initialMessageId = messages[0]?.id;\n }\n\n if (flush && this._model.view?.state.doc.length === 0) {\n const buffer: string[] = [];\n this.process(messages, (content) => {\n buffer.push(content);\n });\n\n const content = buffer.join('');\n this._model.view?.dispatch({\n changes: [{ from: 0, to: this._model.view?.state.doc.length ?? 0, insert: content }],\n selection: { anchor: content.length },\n });\n\n return true;\n } else {\n this.process(messages, (content) => {\n void this._model.append(content);\n });\n\n return false;\n }\n }\n\n private process(messages: Message.Message[], append: (content: string) => void) {\n log('sync', {\n doc: this._model.view?.state.doc.length,\n messages: messages.map((message) => message.blocks.length),\n currentMessageIndex: this._currentMessageIndex,\n currentBlockIndex: this._currentBlockIndex,\n currentBlockContent: this._currentBlockContent,\n });\n\n let i = this._currentMessageIndex;\n for (const message of messages.slice(this._currentMessageIndex)) {\n if (i > this._currentMessageIndex) {\n this._currentBlockIndex = 0;\n }\n\n this._currentMessageIndex = i;\n let j = this._currentBlockIndex;\n for (const block of message.blocks.slice(this._currentBlockIndex)) {\n this._currentBlockIndex = j;\n const currentBlockContent = this._blockRenderer(this._context, message, block);\n if (currentBlockContent) {\n let content: string = '';\n if (this._currentBlockContent && currentBlockContent.startsWith(this._currentBlockContent)) {\n content = currentBlockContent.slice(this._currentBlockContent.length);\n } else {\n content = currentBlockContent;\n }\n\n log('append', { message: i, block: j, content });\n this._currentBlockContent = currentBlockContent;\n append(content);\n }\n\n if (block.pending) {\n return;\n } else {\n this._currentBlockContent = undefined;\n this._currentBlockIndex++;\n }\n j++;\n }\n i++;\n }\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, Fragment, useEffect, useState } from 'react';\n\nimport { type Blueprint } from '@dxos/blueprints';\nimport { type Ref } from '@dxos/echo';\nimport { Function } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { meta } from '../../meta';\nimport { type AiChatProcessor } from '../../processor';\nimport { ServiceType } from '../../types';\n\nexport type ToolboxProps = ThemedClassName<{\n services?: { service: ServiceType }[];\n functions?: Function.Function[];\n // TODO(burdon): Combine into single array.\n blueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];\n activeBlueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];\n}>;\n\nexport const Toolbox = ({ classNames, functions, services, blueprints, activeBlueprints }: ToolboxProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className={mx('flex flex-col overflow-y-auto box-content', classNames)}>\n {blueprints && blueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={blueprints.map(({ target }) => ({\n name: target?.name ?? '',\n description: target?.description ?? '',\n subitems: target?.tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {activeBlueprints && activeBlueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={activeBlueprints.map(({ target }) => ({\n name: target?.name ?? '',\n description: target?.description ?? '',\n subitems: target?.tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {services && services.length > 0 && (\n <Section\n title='Services'\n items={services.map(({ service: { serviceId, name, description } }) => ({\n name: name ?? serviceId,\n description,\n // subitems: tools.map(({ name, description }) => ({ name: `∙ ${name}`, description })),\n }))}\n />\n )}\n\n {functions && functions.length > 0 && (\n <Section title='Functions' items={functions.map(({ name, description }) => ({ name, description }))} />\n )}\n </div>\n );\n};\n\nconst Section: FC<{\n title: string;\n items: { name: string; description?: string; subitems?: { name: string; description?: string }[] }[];\n striped?: boolean;\n}> = ({ title, items, striped }) => {\n const stripeClassNames = 'odd:bg-neutral-50 dark:odd:bg-neutral-800';\n const gridClassNames = 'grid grid-cols-[8rem_1fr]';\n const subGridClassNames = mx('col-span-full grid grid-cols-subgrid text-xs pli-2', striped && stripeClassNames);\n\n return (\n <div>\n <h1 className='pli-2 text-sm'>{title}</h1>\n <div className={gridClassNames}>\n {items.map(({ name, description, subitems }, i) => (\n <Fragment key={i}>\n {name && (\n <div className={subGridClassNames}>\n <div className='truncate text-primary-500'>{name}</div>\n <div className='line-clamp-2'>{description}</div>\n </div>\n )}\n {subitems?.map(({ name, description }, i) => (\n <div key={i} className={mx(subGridClassNames, striped && stripeClassNames)}>\n <div className='truncate'>{name}</div>\n <div className='line-clamp-3 text-subdued'>{description}</div>\n </div>\n ))}\n </Fragment>\n ))}\n </div>\n </div>\n );\n};\n\nexport type ToolboxContainerProps = ThemedClassName<{\n space?: Space;\n processor?: AiChatProcessor;\n}>;\n\nexport const ToolboxContainer = ({ classNames, space, processor }: ToolboxContainerProps) => {\n // Registered services.\n const services = useQuery(space, Filter.type(ServiceType));\n const [serviceTools, setServiceTools] = useState<{ service: ServiceType }[]>([]);\n useEffect(() => {\n log('creating service tools...', { services: services.length });\n queueMicrotask(async () => {\n // TODO(burdon): Fix.\n // const tools = await Promise.all(\n // services.map(async (service) => ({ service, tools: await createToolsFromService(service) })),\n // );\n // setServiceTools(tools);\n });\n }, [services]);\n\n // Deployed functions.\n const functions = useQuery(space, Filter.type(Function.Function));\n\n return (\n <Toolbox\n classNames={classNames}\n blueprints={processor?.context.blueprints.value}\n services={serviceTools}\n functions={functions}\n />\n );\n};\n\nconst safeToolId = (name: string) => {\n return name.split('_').pop();\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,qBAAqBC,6BAA6B;AAC3D,SAASC,OAAOC,QAAQC,sBAAsB;AAC9C,SAASC,cAAcC,kBAAkBC,aAAaC,sBAAsB;AAM5E,IAAMC,gBAAgB;AAEtB,IAAMC,sBAAsB;EAC1BC,MAAM;EACNC,QAAQ;EACRC,UAAU;AACZ;AAEO,IAAMC,oBAAoB,CAAC,EAAEC,SAAQ,MAAoC;;;AAC9E,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,WACE,sBAAA,cAACC,aAAAA,MACC,sBAAA,cAACC,gBAAAA;MAAeC,OAAON,EAAE,kBAAkB;QAAEO,IAAIL,KAAKC;MAAG,CAAA;OACvD,sBAAA,cAACK,cAAAA,MACC,sBAAA,cAACC,kBAAAA;MAAiBH,OAAON,EAAE,+BAAA;OACzB,sBAAA,cAACU,MAAMC,QAAM;MACXC,SAAS,CAAC,CAACb,SAASc;MACpBC,iBAAiB,CAACF,YAAab,SAASc,gBAAgBD;SAI5D,sBAAA,cAACH,kBAAAA;MAAiBH,OAAON,EAAE,6BAAA;OACzB,sBAAA,cAACe,OAAOC,MAAI;MACVC,OAAOlB,SAASmB,eAAe;MAC/BC,eAAe,CAACF,UAAAA;AACdlB,iBAASmB,cAAcD,UAAUxB,gBAAgB2B,SAAaH;MAChE;OAEA,sBAAA,cAACF,OAAOM,eAAa;MAACC,aAAatB,EAAE,6BAAA;QACrC,sBAAA,cAACe,OAAOQ,QAAM,MACZ,sBAAA,cAACR,OAAOS,SAAO,MACb,sBAAA,cAACT,OAAOU,UAAQ,MACd,sBAAA,cAACV,OAAOW,QAAM;MAACT,OAAOxB;OAAgBO,EAAE,wBAAA,CAAA,GACvC2B,cAAcC,IAAI,CAACC,UAClB,sBAAA,cAACd,OAAOW,QAAM;MAACI,KAAKD;MAAOZ,OAAOY;OAC/BnC,oBAAoBmC,KAAAA,CAAM,CAAA,CAAA,GAIjC,sBAAA,cAACd,OAAOgB,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA,GAMrB,sBAAA,cAACtB,kBAAAA;MAAiBH,OAAON,EAAE,+BAAA;OACzB,sBAAA,cAACe,OAAOC,MAAI;MACVC,OAAOlB,SAASiC,aAAavC;MAC7B0B,eAAe,CAACF,UAAAA;AACdlB,iBAASiC,YAAYf,UAAUxB,gBAAgB2B,SAAYH;MAC7D;OAEA,sBAAA,cAACF,OAAOM,eAAa;MAACC,aAAatB,EAAE,kCAAA;QACrC,sBAAA,cAACe,OAAOQ,QAAM,MACZ,sBAAA,cAACR,OAAOS,SAAO,MACb,sBAAA,cAACT,OAAOU,UAAQ,MACd,sBAAA,cAACV,OAAOW,QAAM;MAACT,OAAOxB;OAAgBO,EAAE,wBAAA,CAAA,GACvCiC,oBAAoBL,IAAI,CAACC,UACxB,sBAAA,cAACd,OAAOW,QAAM;MAACI,KAAKD;MAAOZ,OAAOY;OAC/BA,KAAAA,CAAAA,CAAAA,GAIP,sBAAA,cAACd,OAAOgB,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA,GAMrB,sBAAA,cAACtB,kBAAAA;MAAiBH,OAAON,EAAE,iCAAA;OACzB,sBAAA,cAACe,OAAOC,MAAI;MACVC,OAAOlB,SAASmC,eAAezC;MAC/B0B,eAAe,CAACF,UAAAA;AACdlB,iBAASmC,cAAcjB,UAAUxB,gBAAgB2B,SAAYH;MAC/D;OAEA,sBAAA,cAACF,OAAOM,eAAa;MAACC,aAAatB,EAAE,kCAAA;QACrC,sBAAA,cAACe,OAAOQ,QAAM,MACZ,sBAAA,cAACR,OAAOS,SAAO,MACb,sBAAA,cAACT,OAAOU,UAAQ,MACd,sBAAA,cAACV,OAAOW,QAAM;MAACT,OAAOxB;OAAgBO,EAAE,wBAAA,CAAA,GACvCmC,sBAAsBP,IAAI,CAACC,UAC1B,sBAAA,cAACd,OAAOW,QAAM;MAACI,KAAKD;MAAOZ,OAAOY;OAC/BA,KAAAA,CAAAA,CAAAA,GAIP,sBAAA,cAACd,OAAOgB,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;AAS/B;;;;AC3GA,SAASK,uBAAuB;AAChC,SAASC,aAAaC,SAASC,gBAAgB;AAE/C,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAEhC,SAASC,iBAAiB;AAE1B,SAASC,QAAQC,KAAKC,WAAW;AACjC,SAASC,gBAAgB;AACzB,SAASC,YAAYC,qBAAqB;AAMnC,IAAMC,uBAAuB,MAAA;AAClC,QAAMC,aAAaC,gBAAgBC,aAAaC,mBAAmB;AACnE,SAAOC,QAAQ,MAAM,IAAIC,UAAUC,SAASN,UAAAA,GAAa;IAACA;GAAW;AACvE;AAEO,IAAMO,gBAAgB,CAAC,EAC5BC,mBACAC,MAAK,MAIN;AACC,QAAMC,mBAAmBN,QAAQ,MAAMI,mBAAmBG,MAAAA,KAAW,CAAA,GAAI;IAACH;GAAkB;AAC5F,QAAMI,kBAAkBC,SAASJ,OAAOK,OAAOC,KAAKV,UAAUA,SAAS,CAAA;AACvE,SAAOD,QAAQ,MAAA;AACb,UAAMJ,aAAagB,WAAW;SAAIN;SAAqBE;OAAkB,CAACK,MAAMA,EAAEC,GAAG;AACrFlB,eAAWmB,KAAK,CAAC,EAAEC,MAAMC,EAAC,GAAI,EAAED,MAAMH,EAAC,MAAOI,EAAEC,cAAcL,CAAAA,CAAAA;AAC9D,WAAOjB;EACT,GAAG;IAACU;IAAkBE;GAAgB;AACxC;AAKO,IAAMW,sBAAsB,CAAC,EAAEC,QAAO,MAAiC;;;AAC5E,UAAM,CAACC,QAAQC,SAAAA,IAAaC,SAA2C,oBAAIC,IAAAA,CAAAA;AAE3EC,oBAAgB,MAAA;AACd,YAAMC,OAAO;WAAKN,SAASxB,WAAW+B,SAAS,CAAA;;AAC/C,YAAM/B,aAAa8B,KAAKE,IAAI,CAACC,QAAQA,IAAIC,MAAM,EAAEC,OAAOC,aAAAA;AACxDV,gBAAU,IAAIE,IAAI5B,WAAWgC,IAAI,CAACK,cAAc;QAACA,UAAUnB;QAAKmB;OAAU,CAAA,CAAA;IAC5E,CAAA;AAEA,WAAOZ;;;;AACT;AAGO,IAAMa,uBAAuB,CAAC,EACnC7B,OACAe,SACAhB,kBAAiB,MAKlB;AACC,QAAM+B,oBAAoBC,YACxB,OAAOtB,KAAauB,YAAAA;AAClB,QAAI,CAACjB,WAAW,CAAChB,mBAAmB;AAClC;IACF;AAGA,UAAM,EAAEkC,QAAO,IAAK,MAAMjC,MAAMkC,GAAGhC,MAAMG,OAAOC,KAAKV,UAAUA,SAAS,CAAA,EAAGuC,IAAG;AAC9E,QAAIC,kBAAkBH,QAAQI,KAAK,CAACT,cAAcA,UAAUnB,QAAQA,GAAAA;AACpE,QAAIuB,SAAS;AACX,UAAI,CAACI,iBAAiB;AACpB,cAAMR,YAAY7B,kBAAkBuC,SAAS7B,GAAAA;AAC7C,YAAI,CAACmB,WAAW;AACd;QACF;AAGAQ,0BAAkBpC,MAAMkC,GAAGK,IAAIC,IAAIC,MAAMb,SAAAA,CAAAA;MAC3C;AACA,YAAMb,QAAQ2B,KAAK;QAAEnD,YAAY;UAACoD,IAAIC,KAAKR,eAAAA;;MAAkB,CAAA;IAC/D,WAAWA,iBAAiB;AAC1B,YAAMrB,QAAQ8B,OAAO;QAAEtD,YAAY;UAACoD,IAAIC,KAAKR,eAAAA;;MAAkB,CAAA;IACjE;EACF,GACA;IAACpC;IAAOe;IAAShB;GAAkB;AAGrC,SAAO;IAAE+B;EAAkB;AAC7B;;;AC1FA,SAASgB,uBAAuB;AAEhC,SAASC,YAAYC,WAAAA,UAASC,YAAAA,iBAAgB;AAE9C,SAASC,sBAAsB;AAE/B,SAASC,WAAW;AAEpB,SAASC,sBAAsB;;AAiBxB,IAAMC,mBAAmB,CAAC,EAC/BC,OACAC,MACAC,QACAC,UACAC,mBACAC,SAAQ,MACc;AACtB,QAAMC,qBAAqBC,WAAWC,eAAAA;AAGtC,QAAM,CAACC,cAAcC,eAAAA,IAAmBC,UAAAA;AACxCC,iBAAe,YAAA;AACb,QAAI,CAACZ,SAAS,CAACC,MAAM;AACnB;IACF;AAIA,UAAMY,QAAQb,MAAMc,OAAOC,IAAId,KAAKY,MAAMG,GAAG;AAC7C,UAAMP,gBAAe,IAAIQ,eAAeJ,KAAAA;AACxC,UAAMJ,cAAaS,KAAI;AACvBR,oBAAgBD,aAAAA;AAChB,WAAO,MAAA;AACL,WAAKA,cAAaU,MAAK;AACvBT,sBAAgBU,MAAAA;IAClB;EACF,GAAG;IAACpB;IAAOC,MAAMY,MAAMG,IAAIK,SAAAA;GAAW;AAGtC,QAAMC,YAAYC,SAAQ,MAAA;AACxB,QAAI,CAACpB,YAAY,CAACM,cAAc;AAC9B,aAAOW;IACT;AAEAI,QAAI,sBAAsB;MAAEtB;MAAQuB,OAAOvB,QAAQuB;MAAOpB;IAAS,GAAA;;;;;;AACnE,WAAO,IAAIqB,gBAAgBjB,cAAcN,UAAU;MACjDG;MACAF;MACAqB,OAAOvB,QAAQuB;IACjB,CAAA;EACF,GAAG;IAACtB;IAAUM;IAAcL;IAAmBF;GAAO;AAEtD,SAAOoB;AACT;;;ACrEA,YAAYK,YAAY;AAExB,SAASC,WAAAA,gBAAe;AAExB,SAASC,qBAAqB;AAE9B,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAClC,SAASC,8BAA8B;AACvC,SAASC,iBAAiB;AAcnB,IAAMC,kBAAkB,CAAC,EAC9BC,OACAC,KAAI,MACiB;AACrB,QAAMC,SAASC,UAAAA;AACfH,YAAUE,OAAOE,OAAOC;AAExB,QAAMC,kBAAkBC,cAAcC,uBAAuBC,cAAc;AAC3E,SAAOC,SAAQ,MAAA;AACb,UAAMC,WAAUL,gBAAgBM,WAAWZ,MAAMa,EAAE;AACnD,WAAO,MACLF,SAAQG,WACCC,WAAI,aAAA;AACT,aAAO,OAAcJ,eAAO,EAAmBK,KACtCC,eACLhB,MAAMiB,YAAYC,SACdC,kBAAkBC,WAAWpB,KAAKiB,YAAYC,MAAAA,IAC9CG,eAAeC,SAAS,CAAA;IAGlC,CAAA,CAAA;EAEN,GAAG;IAACvB;IAAOC,MAAMiB,YAAYC;GAAO;AACtC;;;AC9CA,SAASK,YAAY;AACrB,YAAYC,aAAY;AACxB,SAASC,WAAAA,iBAAe;AAExB,SAASC,oBAAoB;AAC7B,SAASC,2BAA2B;AACpC,SAASC,UAAAA,SAAQC,OAAAA,MAAKC,aAAa;AACnC,SAASC,iBAAiB;AAC1B,SAASC,YAAAA,iBAAgB;AACzB,SAASC,aAAaC,sBAAsB;;;ACT5C,SAASC,YAAY;;;;ACArB,SAAyBC,YAAY;AACrC,SAASC,cAAc;AACvB,SAASC,oBAAoB;AAC7B,SAASC,qBAAqB;AAC9B,YAAYC,YAAW;AACvB,YAAYC,aAAY;AACxB,OAAOC,WAAiCC,eAAAA,cAAaC,aAAAA,YAAWC,WAAAA,UAASC,UAAAA,SAAQC,YAAAA,kBAAgB;AAEjG,SAASC,aAAa;AACtB,SAASC,OAAAA,YAAW;AACpB,SAASC,qBAAqB;AAC9B,SAAqBC,UAAUC,gBAAgB;AAC/C,SAASC,mBAAmB;AAC5B,SAASC,SAAAA,QAA6BC,eAAeC,kBAAAA,uBAAsB;AAC3E,SAASC,kBAAmE;AAE5E,SAASC,cAAcC,mBAAmB;AAC1C,SAASC,MAAAA,WAAU;AACnB,SAASC,eAAe;AACxB,SAASC,gBAAgB;;;ACnBzB,SAASC,YAAAA,iBAAgB;AAEzB,SAASC,uBAAuB;AAEhC,SAASC,kBAAAA,uBAAsB;AAGxB,IAAMC,mBAAmB,CAACC,UAAAA;AAC/B,QAAM,CAACC,QAAQC,SAAAA,IAAaC,UAAAA;AAE5BC,EAAAA,gBAAe,YAAA;AACb,QAAI,CAACJ,OAAO;AACV;IACF;AAEA,UAAMC,UAAS,IAAII,gBAAgBL,KAAAA;AACnC,UAAMC,QAAOK,KAAI;AACjBJ,cAAUD,OAAAA;AAEV,WAAO,MAAA;AACL,WAAKA,QAAOM,MAAK;IACnB;EACF,GAAG;IAACP;GAAM;AAEV,SAAOC;AACT;;;;ACzBA,SAASO,eAAAA,oBAAmB;AAG5B,SAA6BC,OAAAA,YAAW;AACxC,SAASC,OAAAA,YAAW;AAEpB,SAASC,iBAAAA,sBAAqB;;AAUvB,IAAMC,oBAAoB,CAAC,EAChCC,OACAC,QAAO,MAIR;;;AACC,UAAMC,UAAUD,SAASC,QAAQC,MAAMC,IAAI,CAACC,QAAQA,IAAIC,MAAM,EAAEC,OAAOT,cAAAA,KAAkB,CAAA;AAEzF,UAAMU,qBAAqBb,aACzB,OAAOc,KAAUC,YAAAA;AACf,UAAI,CAACV,SAAS,CAACC,SAAS;AACtB;MACF;AAGA,YAAMU,KAAKF,IAAIG,UAAS;AACxB,YAAMC,SAASF,MAAO,MAAMX,MAAMc,GAAGC,cAAcJ,GAAGK,MAAM;AAC5D,UAAI,CAACH,QAAQ;AACXhB,QAAAA,KAAIoB,KAAK,oBAAoB;UAAER;UAAKE;QAAG,GAAA;;;;;;AACvC;MACF;AAEA,YAAMN,MAAMT,KAAIsB,QAAQT,GAAAA;AACxB,UAAIC,SAAS;AACX,cAAMT,QAAQkB,KAAK;UAAEjB,SAAS;YAACG;;QAAK,CAAA;MACtC,OAAO;AACL,cAAMJ,QAAQmB,OAAO;UAAElB,SAAS;YAACG;;QAAK,CAAA;MACxC;IACF,GACA;MAACL;MAAOC;KAAQ;AAGlB,WAAO;MACLC;MACAmB,gBAAgBb;IAClB;;;;AACF;;;ACrDA,SAASc,eAAAA,cAAaC,QAAQC,YAAAA,iBAAgB;AAIvC,IAAMC,WAAW,CAACC,UAAAA;AACvB,QAAM,CAACC,OAAOC,QAAAA,IAAYC,UAA0C,MAAA;AACpE,QAAMC,aAAaC,OAA8B,IAAA;AAEjD,QAAMC,cAAcC,aAAY,MAAA;AAC9B,QAAI,CAACP,OAAO;AACV;IACF;AAEAQ,mBAAe,YAAA;AACb,UAAIJ,WAAWK,SAAS;AACtBC,qBAAaN,WAAWK,OAAO;MACjC;AAEAP,eAAS,UAAA;AACT,YAAMF,MAAMW,GAAGC,MAAK;AACpBV,eAAS,SAAA;AAETE,iBAAWK,UAAUI,WAAW,MAAA;AAC9BX,iBAAS,MAAA;AACTE,mBAAWK,UAAU;MACvB,GAAG,GAAA;IACL,CAAA;EACF,GAAG;IAACT;GAAM;AAEV,SAAO;IAAEC;IAAOK;EAAY;AAC9B;;;AC9BA,YAAYQ,YAAY;AACxB,SAASC,WAAWC,YAAAA,iBAAgB;AAIpC,SAASC,sBAAsB;AAGxB,IAAMC,eAAe,CAACC,UAAAA;AAC3B,QAAM,CAACC,OAAOC,QAAAA,IAAYC,UAAyB,CAAA,CAAE;AACrDC,YAAU,MAAA;AACR,QAAI,CAACJ,OAAO;AACV;IACF;AAEA,WAAOA,MAAMK,GAAGC,eAAeC,MAAK,EAAGC,UACrC,CAACD,UAAAA;AACC,YAAMN,SAAQQ,MAAMC,KAClB,IAAIC,IACF;WAAIX,MAAMK,GAAGO,MAAMN,eAAeO;WAAYN,MAAMO;QAASC,OAAO,CAACC,SAC5DC,cAAOC,eAAeC,IAAIH,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAKvCd,eAASD,MAAAA;IACX,GACA;MAAEmB,MAAM;IAAK,CAAA;EAEjB,GAAG;IAACpB;GAAM;AAEV,SAAOC;AACT;;;AChCA,SAA6CoB,YAAAA,iBAAgB;AAEtD,IAAMC,YAAY,MAAA;AACvB,QAAM,CAACC,QAAQC,SAAAA,IAAaC,UAAS,IAAA;AACrC,SAAO;IAACF;IAAQC;;AAClB;;;ACLA,SAASE,eAAAA,cAAaC,aAAAA,YAAWC,WAAAA,UAASC,YAAAA,iBAAgB;AASnD,IAAMC,aAAa,CAACC,WAAAA;AAEzB,QAAM,CAACC,QAAQC,SAAAA,IAAaC,UAAAA;AAC5B,QAAMC,UAAUC,SACd,MAAMC,iBAAiBC,OAAO,CAACN,YAAWD,YAAYC,QAAOO,aAAa,cAAY,GACtF;IAACR;GAAO;AAEV,QAAMS,gBAAgBJ,SACpB,MAAMD,QAAQM,IAAI,CAAC,EAAEC,IAAIC,OAAOC,MAAK,OAAQ;IAAEF;IAAIE,OAAOA,SAASD;EAAM,EAAA,GACzE;IAACR;GAAQ;AAEXU,EAAAA,WAAU,MAAA;AACRZ,cAAUE,QAAQ,CAAA,CAAE;EACtB,GAAG;IAACA;GAAQ;AAEZ,QAAMW,qBAAqBC,aACzB,CAACL,OAAAA;AACC,UAAMV,UAASG,QAAQa,KAAK,CAAChB,YAAWA,QAAOU,OAAOA,EAAAA;AACtD,QAAIV,SAAQ;AACVC,gBAAUD,OAAAA;IACZ;EACF,GACA;IAACG;GAAQ;AAGX,SAAO;IACLH;IACAG,SAASK;IACTS,gBAAgBH;EAClB;AACF;;;ACvCA,SAASI,WAAAA,gBAAe;AAExB,SAASC,gBAAAA,qBAAoB;AAC7B,SAASC,mBAAAA,wBAAuB;AAEhC,SAASC,UAAAA,SAAQC,OAAAA,YAAW;AAMrB,IAAMC,wBAAwB,CAACC,UAAAA;AACpC,QAAMC,aAAaC,iBAAgBC,cAAaC,mBAAmB;AAEnE,SAAOC,SAAwC,MAAA;AAC7C,QAAI,CAACL,OAAO;AACV,aAAOM;IACT;AAEA,WAAO;MACLC,eAAe,OAAO,EAAEC,MAAK,MAAE;AAO7B,cAAM,EAAEC,QAAO,IAAK,MAAMT,MAAMU,GAAGF,MAAMG,QAAOC,WAAU,CAAA,EAAIC,IAAG;AAEjE,eACEJ,QAMGK,OAAO,CAACC,WAAWC,YAAYR,OAAOS,KAAIC,SAASH,MAAAA,KAAkB,EAAA,CAAA,EAErED,OAAO,CAACC,WAAW,CAAC,CAACE,KAAIE,OAAOJ,MAAAA,CAAAA,EAChCK,IAAI,CAACL,YAAY;UAChBM,KAAKJ,KAAIE,OAAOJ,MAAAA,EAAeO,SAAQ;UACvCC,OAAON,KAAIC,SAASH,MAAAA,KAAkB;QACxC,EAAA;MAEN;MACAS,kBAAkB,OAAO,EAAEH,IAAG,MAAE;AAC9B,cAAMN,SAAS,MAAMf,MAAMU,GAAGF,MAAMG,QAAOc,IAAIJ,GAAAA,CAAAA,EAAMK,MAAK;AAC1D,eAAO;UAAEL;UAAKE,OAAON,KAAIC,SAASH,MAAAA,KAAW;QAAG;MAClD;IACF;EACF,GAAG;IAACf;IAAOC;GAAW;AACxB;AAEA,IAAMe,cAAc,CAACR,OAAee,UAAkBA,MAAMI,YAAW,EAAGC,WAAWpB,MAAMmB,YAAW,CAAA;;;;ACrDtG,OAAOE,YAAuC;AAE9C,SAASC,YAAkCC,kBAAAA,uBAAsB;AACjE,SAASC,UAAU;AAcZ,IAAMC,cAAc,CAAC,EAAEC,YAAYC,UAAUC,YAAYC,WAAWC,YAAYC,QAAO,MAAoB;;;AAChH,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AAEpC,WACE,gBAAAC,OAAA,cAACC,OAAAA;MAAIC,WAAWC,GAAG,2BAA2Bb,UAAAA;OAC3CC,UAED,gBAAAS,OAAA,cAACI,YAAAA;MACCC,UAAU,CAACX;MACXY,SAAQ;MACRC,MAAK;MACLC,UAAAA;MACAC,OAAOb,EAAE,0BAAA;MACTc,SAAS,MAAMf,UAAU;QAAEgB,MAAM;MAAS,CAAA;QAG3CnB,cACC,gBAAAQ,OAAA,cAACI,YAAAA;MACCC,UAAU,CAACX;MACXJ,YAAYa,GAAGV,aAAa,gBAAA;MAC5Ba,SAAQ;MACRC,MAAK;MACLC,UAAAA;MACAI,WAAAA;MACAH,OAAOb,EAAE,mBAAA;MACTiB,aAAa,MAAMlB,UAAU;QAAEgB,MAAM;MAAe,CAAA;MACpDG,WAAW,MAAMnB,UAAU;QAAEgB,MAAM;MAAc,CAAA;MACjDI,cAAc,MAAMpB,UAAU;QAAEgB,MAAM;MAAe,CAAA;MACrDK,YAAY,MAAMrB,UAAU;QAAEgB,MAAM;MAAc,CAAA;;;;;AAK5D;;;;AClDA,OAAOM,UAAmBC,WAAAA,UAASC,YAAAA,iBAAgB;AAInD,SAASC,UAAAA,SAAQC,OAAAA,MAAKC,YAAY;AAClC,SAAqBC,YAAAA,iBAAgB;AACrC,SAASC,MAAMC,cAAAA,aAAYC,SAASC,UAAAA,SAAQC,kBAAAA,uBAAsB;AAClE,SAASC,SAASC,kBAAkB;AACpC,SAASC,YAAY;AAKrB,IAAMC,kBAAkB;AAcjB,IAAMC,cAAc,CAAC,EAC1BC,OACAC,SACAC,mBACAC,SACAC,QACAC,eAAc,MACG;;;AACjB,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AAEpC,WACE,gBAAAC,OAAA,cAACC,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAH,OAAA,cAACI,QAAQC,MAAI,MACX,gBAAAL,OAAA,cAACI,QAAQE,SAAO;MAACC,SAAAA;OACf,gBAAAP,OAAA,cAACQ,aAAAA;MAAWC,SAAQ;MAAQC,MAAK;MAAoBC,UAAAA;MAASC,OAAOhB,EAAE,wBAAA;SAEzE,gBAAAI,OAAA,cAACI,QAAQS,QAAM,MACb,gBAAAb,OAAA,cAACI,QAAQU,SAAO;MAACC,MAAK;MAAMC,YAAY5B;OACtC,gBAAAY,OAAA,cAACI,QAAQa,UAAQ,MACf,gBAAAjB,OAAA,cAACkB,cAAAA;MAAa5B;MAAcC;SAE9B,gBAAAS,OAAA,cAACI,QAAQe,OAAK,IAAA,CAAA,CAAA,CAAA,GAKpB,gBAAAnB,OAAA,cAACI,QAAQC,MAAI,MACX,gBAAAL,OAAA,cAACI,QAAQE,SAAO;MAACC,SAAAA;OACf,gBAAAP,OAAA,cAACQ,aAAAA;MACCC,SAAQ;MACRC,MAAK;MACLC,UAAAA;MACAC,OAAOhB,EAAE,yBAAA;SAGb,gBAAAI,OAAA,cAACI,QAAQS,QAAM,MACb,gBAAAb,OAAA,cAACI,QAAQU,SAAO;MAACC,MAAK;MAAMC,YAAY5B;OACtC,gBAAAY,OAAA,cAACI,QAAQa,UAAQ,MACf,gBAAAjB,OAAA,cAACoB,KAAKf,MAAI;MAACgB,aAAY;MAAaC,cAAa;MAAaC,mBAAkB;MAAOC,UAAU;OAC/F,gBAAAxB,OAAA,cAACoB,KAAKH,UAAQ;MAACD,YAAW;OACxB,gBAAAhB,OAAA,cAACoB,KAAKK,UAAQ;MAACC,OAAM;MAAaF,UAAU;MAAIR,YAAW;OACzD,gBAAAhB,OAAA,cAAC2B,iBAAAA;MAAgBnC;MAAsCF;MAAcC;SAEvE,gBAAAS,OAAA,cAACoB,KAAKK,UAAQ;MAACC,OAAM;MAAQF,UAAU;MAAIR,YAAW;OACpD,gBAAAhB,OAAA,cAAC4B,aAAAA;MAAYnC;MAAkBC;MAAgBC;SAEjD,gBAAAK,OAAA,cAACoB,KAAKS,SAAO;MAACb,YAAW;OACvB,gBAAAhB,OAAA,cAACoB,KAAKU,SAAO;MACXJ,OAAM;MACNhB,MAAK;MACLE,OAAOhB,EAAE,6BAAA;QAEX,gBAAAI,OAAA,cAACoB,KAAKU,SAAO;MAACJ,OAAM;MAAQd,OAAOhB,EAAE,kBAAA;MAAqBc,MAAK;YAKvE,gBAAAV,OAAA,cAACI,QAAQe,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA;;;;AAM1B;AAEA,IAAMQ,kBAAkB,CAAC,EACvBnC,mBACAF,OACAC,QAAO,MAC2D;;;AAClE,UAAM,EAAEK,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AAEpC,UAAMgC,aAAaC,cAAc;MAAExC;MAAmBF;IAAM,CAAA;AAC5D,UAAM2C,mBAAmBC,oBAAoB;MAAE3C;IAAQ,CAAA;AACvD,UAAM,EAAE4C,kBAAiB,IAAKC,qBAAqB;MAAE9C;MAAOC;MAASC;IAAkB,CAAA;AAEvF,WACE,gBAAAQ,OAAA,cAACqC,WAAWhC,MAAI,MACd,gBAAAL,OAAA,cAACqC,WAAWvB,SAAO;MAACE,YAAW;OAC5Be,WAAWO,IAAI,CAACC,cAAAA;AACf,YAAMC,WAAWP,iBAAiBQ,IAAIF,UAAUG,GAAG;AACnD,aACE,gBAAA1C,OAAA,cAACqC,WAAWM,MAAI;QACd3B,YAAW;QACX0B,KAAKH,UAAUG;QACfhB,OAAOa,UAAUK;QACjBC,UAAU,MAAMV,oBAAoBI,UAAUG,KAAK,CAACF,QAAAA;SAEpD,gBAAAxC,OAAA,cAACC,OAAAA;QAAIE,WAAU;SAAiBoC,UAAUK,IAAI,GAC9C,gBAAA5C,OAAA,cAAC8C,MAAAA;QAAKpC,MAAK;QAAqBM,YAAY;UAAC,CAACwB,YAAY;;;IAGhE,CAAA,CAAA,GAEF,gBAAAxC,OAAA,cAACqC,WAAWU,OAAK;MAACC,aAAapD,EAAE,oBAAA;MAAuBoB,YAAW;MAAwBiC,WAAAA;;;;;AAGjG;AAEA,IAAMrB,cAAc,CAAC,EACnBnC,SACAC,QACAC,eAAc,MACkD;;;AAChE,WACE,gBAAAK,OAAA,cAACkD,QAAQ7C,MAAI;MAACqB,OAAOhC;MAAQyD,eAAexD;MAAgBsD,WAAAA;OACzDxD,SAAS6C,IAAI,CAAC,EAAEvC,IAAIa,MAAK,MAAE;AAC1B,aACE,gBAAAZ,OAAA,cAACkD,QAAQE,QAAM;QAACV,KAAK3C;QAAI2B,OAAO3B;SAC9B,gBAAAC,OAAA,cAACkD,QAAQG,aAAW,MAAEzC,KAAAA,GACtB,gBAAAZ,OAAA,cAACkD,QAAQI,iBAAe,IAAA,CAAA;IAG9B,CAAA,CAAA;;;;AAGN;AAEA,IAAMC,MAAM;AAEZ,IAAMrC,eAAe,CAAC,EAAE5B,OAAOC,QAAO,MAA+C;;;AACnF,UAAM,EAAEK,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AAGpC,UAAMyD,QAAQC,aAAanE,KAAAA;AAC3B,UAAMoE,YAAYC,SAAQ,MAAA;AACxB,YAAMD,aAAYF,MAAMlB,IAAI,CAACsB,SAAAA;AAC3B,cAAMC,YAAWC,KAAKC,YAAYH,IAAAA;AAClC,eAAO;UACLC,UAAAA;UACAjD,OAAOhB,EAAE,kBAAkB;YAAEoE,IAAIH;YAAUvC,cAAcuC;UAAS,CAAA;QACpE;MACF,CAAA;AAEAH,MAAAA,WAAUO,KAAK,CAACC,GAAGC,MAAMD,EAAEtD,MAAMwD,cAAcD,EAAEvD,KAAK,CAAA;AACtD,aAAO8C;IACT,GAAG;MAACF;KAAM;AAGV,UAAM,CAACK,UAAUQ,WAAAA,IAAeC,UAAiBf,GAAAA;AACjD,UAAMgB,YAAYZ,SAChB,MAAMa,QAAOC,GAAE,GAAIf,UAAUpB,IAAI,CAAC,EAAEuB,UAAAA,UAAQ,MAAOW,QAAOX,SAASA,SAAAA,CAAAA,CAAAA,GACnE;MAACH;KAAU;AAIb,UAAMgB,UAAUC,UAASrF,OAAOuE,aAAaN,MAAMgB,YAAYC,QAAOX,SAASA,QAAAA,CAAAA;AAC/E,UAAM,EAAEa,SAASE,gBAAgBC,eAAc,IAAKC,kBAAkB;MAAExF;MAAOC;IAAQ,CAAA;AAEvF,WACE,gBAAAS,OAAA,cAACqC,WAAWhC,MAAI,MACd,gBAAAL,OAAA,cAACqC,WAAWvB,SAAO;MAACE,YAAW;OAC5B0D,QAAQK,SACPL,QAAQpC,IAAI,CAAC0C,WAAAA;AACX,YAAMpE,QAAQqE,KAAIC,SAASF,MAAAA,KAAWC,KAAIlB,YAAYiB,MAAAA,KAAWA,OAAOjF;AACxE,YAAMyC,WAAWoC,eAAeO,UAAU,CAACC,QAAQA,IAAIrF,OAAOiF,OAAOjF,EAAE,MAAM;AAC7E,aACE,gBAAAC,OAAA,cAACqC,WAAWM,MAAI;QACd3B,YAAW;QACX0B,KAAKsC,OAAOjF;QACZ2B,OAAOsD,OAAOjF;QACd8C,UAAU,MAAMgC,iBAAiBI,KAAII,OAAOL,MAAAA,GAAS,CAACxC,QAAAA;SAEtD,gBAAAxC,OAAA,cAACC,OAAAA;QAAIE,WAAU;SAAiBS,KAAAA,GAChC,gBAAAZ,OAAA,cAAC8C,MAAAA;QAAKpC,MAAK;QAAqBM,YAAY;UAAC,CAACwB,YAAY;;;IAGhE,CAAA,IAEA,gBAAAxC,OAAA,cAACqC,WAAWM,MAAI,MAAE/C,EAAE,YAAA,CAAA,CAAA,GAIxB,gBAAAI,OAAA,cAACC,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAH,OAAA,cAACsF,QAAOjF,MAAI;MAACqB,OAAOmC,aAAaN,MAAMgC,SAAY1B;MAAUV,eAAekB;OAC1E,gBAAArE,OAAA,cAACsF,QAAOE,eAAa;MAACC,SAAQ;MAAOzC,aAAapD,EAAE,yBAAA;QACpD,gBAAAI,OAAA,cAACsF,QAAOzE,QAAM,MACZ,gBAAAb,OAAA,cAACsF,QAAOxE,SAAO,MACb,gBAAAd,OAAA,cAACsF,QAAOI,gBAAc,IAAA,GACtB,gBAAA1F,OAAA,cAACsF,QAAOrE,UAAQ,MACd,gBAAAjB,OAAA,cAACsF,QAAOlC,QAAM;MAAC1B,OAAO6B;OAAM3D,EAAE,uBAAA,CAAA,GAC7B8D,UAAUpB,IAAI,CAAC,EAAEuB,UAAAA,WAAUjD,MAAK,MAC/B,gBAAAZ,OAAA,cAACsF,QAAOlC,QAAM;MAACV,KAAKmB;MAAUnC,OAAOmC;OAClCjD,KAAAA,CAAAA,CAAAA,GAIP,gBAAAZ,OAAA,cAACsF,QAAOK,kBAAgB,IAAA,GACxB,gBAAA3F,OAAA,cAACsF,QAAOnE,OAAK,IAAA,CAAA,CAAA,CAAA,GAInB,gBAAAnB,OAAA,cAACqC,WAAWU,OAAK;MAACC,aAAapD,EAAE,oBAAA;MAAuBoB,YAAW;MAAQiC,WAAAA;;;;;AAInF;;;;AC/NA,OAAO2C,YAAW;AAElB,SAASC,UAAAA,eAAc;;;;ACFvB,OAAOC,YAAW;AAGlB,SAASC,OAAAA,YAAW;AAEpB,SAASC,cAAAA,aAA8CC,mBAAmBC,kBAAAA,uBAAsB;AAChG,SAASC,MAAAA,WAAU;AAUZ,IAAMC,iBAAiB,CAAC,EAAEC,YAAYC,SAASC,MAAK,MAAuB;;;AAChF,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,UAAM,EAAEC,SAASC,eAAc,IAAKC,kBAAkB;MAAEP;MAAOD;IAAQ,CAAA;AAEvE,WACE,gBAAAS,OAAA,cAACC,MAAAA;MAAGC,WAAWC,IAAG,QAAQb,UAAAA;OACvBO,QAAQO,IAAI,CAACC,QAAAA;AACZ,YAAMC,MAAMC,KAAIC,OAAOH,GAAAA;AACvB,YAAMI,WAAWF,KAAIG,YAAYL,GAAAA;AACjC,YAAMM,QAAeJ,KAAIK,SAASP,GAAAA,MAASI,WAAW;QAAC;QAA2B;UAAEI,IAAIJ;QAAS;UAAKJ,IAAIT;AAC1G,aACE,gBAAAI,OAAA,cAACc,MAAAA;QAAGC,KAAKT,IAAIU,SAAQ;QAAId,WAAU;QAAuCe,YAAS;SAChFC,kBAAkBP,OAAOlB,CAAAA,GAC1B,gBAAAO,OAAA,cAACmB,aAAAA;QACCC,MAAK;QACLC,UAAAA;QACAC,SAAQ;QACRX,OAAOlB,EAAE,gCAAA;QACTH,YAAW;QACXiC,MAAM;QACNC,SAAS,MAAM1B,iBAAiBQ,KAAK,KAAA;;IAI7C,CAAA,CAAA;;;;AAGN;;;;AC3CA,OAAOmB,UAASC,aAAAA,YAAWC,YAAAA,iBAAgB;AAE3C,SAA+BC,SAASC,kBAAkB;AAC1D,SAASC,eAAkC;AAC3C,SAASC,MAAAA,WAAU;AAEnB,IAAMC,SAAS;AAUR,IAAMC,sBAAsB,CAAC,EAAEC,YAAYC,QAAQC,YAAYC,OAAO,GAAGC,MAAAA,MAAiC;;;AAC/G,UAAM,CAACC,MAAMC,OAAAA,IAAWC,UAAS,KAAA;AACjCC,IAAAA,WAAU,MAAMF,QAAQ,KAAA,GAAQ;MAACL;KAAO;AACxCQ,eACE,YAAA;AACEH,cAAQ,IAAA;IACV,GACAR,SAAS,GACT;MAACG;KAAO;AAGV,WACE,gBAAAS,OAAA,cAACC,OAAAA;MAAIC,MAAK;MAAOC,WAAWC,IAAG,iBAAiBd,UAAAA;OAC9C,gBAAAU,OAAA,cAACK,SAAAA;MAAQC,UAAUlB;MAAQmB,OAAO,CAACZ,OAAO,UAAUF,QAAQ,UAAUD,aAAa,SAAS;MAAU,GAAGE;QACxGD,SACC,gBAAAO,OAAA,cAACQ,QAAQC,SAAO;MAACC,SAAAA;MAAQC,SAASlB,MAAMmB;OACtC,gBAAAZ,OAAA,cAACC,OAAAA;MAAIE,WAAU;;;;;AAKzB;;;;ACrCA,OAAOU,UAA6BC,YAAYC,eAAAA,cAAaC,aAAAA,YAAWC,WAAAA,gBAAe;AAEvF,SAASC,iBAAiB;AAE1B,SAA+BC,uBAAuB;AACtD,SAASC,sBAA+E;AACxF,SAASC,MAAAA,WAAU;AAEnB,SAASC,qBAAqB;;;;ACR9B,OAAOC,YAAW;AAElB,SAASC,OAAAA,YAAW;AACpB,SACEC,cACAC,iBACAC,cACAC,kBACAC,eACAC,mBAAAA,wBACK;AACP,SAAsDC,uBAAuB;AAC7E,SAASC,QAAAA,aAAY;AACrB,SAASC,oBAAkC;;;;ACZ3C,OAAOC,UAASC,eAAAA,cAAaC,aAAAA,YAAWC,WAAAA,UAASC,UAAAA,SAAQC,YAAAA,kBAAgB;AAEzE,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,aAAaC,WAAWC,uBAAsD;AAEvF,SAASC,YAAY;AAErB,SAASC,iBAAAA,gBAAeC,qBAAqB;AAYtC,IAAMC,YAAY,CAAC,EAAEC,MAAMC,SAAS,CAAA,EAAE,MAAkB;;;AAC7D,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AAEpC,UAAMC,QAAQC,SAAsC,MAAA;AAClD,UAAIC;AAEJ,YAAMC,QAAoB,CAAA;AAC1B,aAAOR,OACJS,OAAO,CAACC,UAAUA,MAAMC,SAAS,cAAcD,MAAMC,SAAS,gBAAgBD,MAAMC,SAAS,SAAA,EAC7FC,IAAI,CAACF,UAAAA;AACJ,gBAAQA,MAAMC,MAAI;UAChB,KAAK,YAAY;AACf,gBAAID,MAAMG,WAAWN,cAAcG,MAAMI,eAAeJ,MAAMI,YAAY;AACxE,qBAAO;YACT;AAEA,kBAAMC,OAAOP,MAAMQ,KAAK,CAACD,UAASA,MAAKE,SAASP,MAAMO,IAAI;AAC1DV,2BAAe;cAAEQ;cAAML;YAAM;AAC7B,mBAAO;cACLQ,OAAOH,MAAMI,eAAe;gBAAClB,EAAE,iBAAA;gBAAoBc,MAAME;gBAAMG,KAAK,GAAA;cACpEC,SAAS;gBACP,GAAGX;gBACHY,OAAOC,cAAcb,MAAMY,KAAK;cAClC;YACF;UACF;UAEA,KAAK,cAAc;AAEjB,gBAAIZ,MAAMc,OAAO;AACf,qBAAO;gBACLN,OAAOjB,EAAE,kBAAA;gBACToB,SAASX;cACX;YACF;AAEA,kBAAMQ,QACJX,cAAcQ,MAAMI,eAAe;cAAClB,EAAE,mBAAA;cAAsBM,cAAcQ,MAAME;cAAMG,KAAK,GAAA;AAC7Fb,2BAAekB;AACf,mBAAO;cACLP;cACAG,SAAS;gBACP,GAAGX;gBACHgB,QAAQH,cAAcb,MAAMgB,MAAM;cACpC;YACF;UACF;UAEA,KAAK,WAAW;AACd,gBAAI,CAACnB,cAAc;AACjB,qBAAO;YACT;AAEA,mBAAO;cACLW,OAAOjB,EAAE,eAAA;cACToB,SAASX;YACX;UACF;QACF;MACF,CAAA,EACCD,OAAOkB,cAAAA;IACZ,GAAG;MAAC3B;KAAO;AAEX,UAAM4B,mBAAmBC,aAAY,MAAA;AACnCC,iBAAW,MAAA;AAET/B,cAAMgC,eAAAA;MACR,GAAG,GAAA;IACL,GAAG;MAAChC;KAAK;AAET,QAAI,CAACM,MAAM2B,QAAQ;AACjB,aAAO;IACT;AAEA,WAAO,gBAAAC,OAAA,cAACC,eAAAA;MAAc7B;MAAc8B,cAAcP;;;;;AACpD;AAEA9B,UAAUsC,cAAc;AAMjB,IAAMF,gBAAgB,CAAC,EAAE7B,OAAO8B,aAAY,MAAuB;;;AACxE,UAAME,UAAUC,QAAuB,IAAA;AACvC,UAAM,CAACC,UAAUC,WAAAA,IAAeC,WAAS,CAAA;AACzC,UAAM,CAACC,MAAMC,OAAAA,IAAWF,WAAS,KAAA;AAEjCG,IAAAA,WAAU,MAAA;AACRT,qBAAeO,IAAAA;AACf,UAAIA,MAAM;AACRL,gBAAQQ,SAASC,MAAAA;MACnB;IACF,GAAG;MAACJ;MAAMP;KAAa;AAEvB,UAAMY,eAAe,CAACC,UAAAA;AACpBR,kBAAYQ,KAAAA;IACd;AAEA,WACE,gBAAAf,OAAA,cAACgB,gBAAgBC,MAAI;MAACC,YAAW;MAA2BT;MAAYP,cAAcQ;OACpF,gBAAAV,OAAA,cAACgB,gBAAgBG,QAAM;MAACD,YAAW;OACjC,gBAAAlB,OAAA,cAACoB,WAAAA;MAAUC,KAAI;MAAcC,OAAOlD,MAAMO,IAAI,CAAC4C,SAASA,KAAKtC,KAAK;MAAGuC,aAAAA;MAAYC,QAAAA;SAEnF,gBAAAzB,OAAA,cAACgB,gBAAgBU,SAAO;MAACR,YAAW;OAClC,gBAAAlB,OAAA,cAAC2B,aAAAA;MAAYC,KAAKxB;MAASc,YAAW;MAAMnB,QAAQ3B,MAAM2B;MAAQO;MAAoBuB,UAAUf;QAChG,gBAAAd,OAAA,cAAC8B,MAAAA;MACCC,MAAM3D,MAAMkC,QAAAA,GAAWlB;MACvB8B,YAAW;MACXc,UAAU;QACRC,UAAU;QACVC,aAAa;QACbC,cAAc;MAChB;;;;;AAKV;;;;ADvHA,IAAMC,WAAW,CAAC,EAAEC,MAAM,GAAGC,MAAAA,MAA6C;;;AACxE,WACE,gBAAAC,OAAA,cAACC,iBAAgBC,MAAI;MAACC,YAAW;OAC/B,gBAAAH,OAAA,cAACC,iBAAgBG,QAAM;MAACD,YAAW;OAAmBL,IAAAA,GACtD,gBAAAE,OAAA,cAACC,iBAAgBI,SAAO;MAACF,YAAW;OAClC,gBAAAH,OAAA,cAACM,OAAAA;MAAKH,YAAW;MAAeI,MAAMR;;;;;AAI9C;AAKO,IAAMS,oBAAuC;;;;EAKlD,CAAC,QAAA,GAAoB;IACnBC,OAAO;IACPC,SAAS,CAAC,EAAEC,SAAQ,MAAE;AACpB,YAAMC,OAAOC,gBAAgBF,QAAAA;AAC7B,aAAOC,OAAO,IAAIE,aAAaF,IAAAA,IAAQ;IACzC;EACF;EACA,CAAC,WAAA,GAAuB;IACtBH,OAAO;IACPC,SAAS,CAAC,EAAEC,UAAUI,IAAG,MAAE;AACzB,YAAMH,OAAOC,gBAAgBF,QAAAA;AAC7B,aAAOC,QAAQG,MAAM,IAAIC,gBAAgBJ,MAAMG,GAAAA,IAAO;IACxD;EACF;EACA,CAAC,QAAA,GAAoB;IACnBN,OAAO;IACPC,SAAS,CAAC,EAAEC,SAAQ,MAAE;AACpB,YAAMM,UAAUN,UACZO,IAAI,CAACC,WAAgBA,OAAOrB,SAAS,YAAYe,gBAAgBM,OAAOR,QAAQ,CAAA,EACjFS,OAAOC,OAAAA;AACV,aAAOJ,SAASK,SAAS,IAAIC,aAAaN,OAAAA,IAAW;IACvD;EACF;EACA,CAAC,YAAA,GAAwB;IACvBR,OAAO;IACPC,SAAS,CAAC,EAAEC,SAAQ,MAAE;AACpB,YAAMC,OAAOC,gBAAgBF,QAAAA;AAC7B,aAAOC,OAAO,IAAIY,iBAAiBZ,IAAAA,IAAQ;IAC7C;EACF;EACA,CAAC,SAAA,GAAqB;IACpBH,OAAO;IACPC,SAAS,CAAC,EAAEC,SAAQ,MAAE;AACpB,YAAMC,OAAOC,gBAAgBF,QAAAA;AAC7B,aAAOC,OAAO,IAAIa,cAAcb,IAAAA,IAAQ;IAC1C;EACF;;;;EAMA,CAAC,UAAA,GAAsB;IACrBH,OAAO;IACPiB,WAAWC;EACb;EACA,CAAC,YAAA,GAAwB;IACvBlB,OAAO;IACPiB,WAAW7B;EACb;EACA,CAAC,SAAA,GAAqB;IACpBY,OAAO;IACPiB,WAAW7B;EACb;;;;EAMA,CAAC,MAAA,GAAkB;IACjBY,OAAO;IACPiB,WAAW7B;EACb;AACF;AAKO,IAAM+B,kBAAiC,CAC5CC,SACAC,SACArB,UAAAA;AAEA,MAAIsB,MAAMC,oBAAoBH,SAASC,SAASrB,KAAAA;AAChD,MAAIsB,OAAO,CAACtB,MAAMwB,SAAS;AACzB,WAAQF,OAAO;EACjB;AAEA,SAAOA;AACT;AAEA,IAAMC,sBAAsB,CAACH,SAA+BC,SAA0BrB,UAAAA;AACpFyB,EAAAA,KAAI,mBAAmB;IAAEzB,OAAO0B,KAAKC,UAAU3B,KAAAA;EAAO,GAAA;;;;;;AACtD,UAAQA,MAAMX,MAAI;IAChB,KAAK,QAAQ;AACX,UAAIgC,QAAQO,OAAOC,SAAS,QAAQ;AAClC,eAAO,WAAW7B,MAAMG,IAAI;MAC9B,OAAO;AACL,cAAMA,OAAOH,MAAMG,KAAK2B,KAAI;AAC5B,YAAI3B,KAAKU,SAAS,GAAG;AACnB,iBAAOV;QACT;MACF;AACA;IACF;IACA,KAAK,aAAa;AAChB,YAAM4B,MAAM/B,MAAMgC,UAAUD;AAC5B,aAAO,mBAAmBA,IAAIE,SAAQ,CAAA,KAAOb,QAAQc,eAAeH,GAAAA,CAAAA;IACtE;IACA,KAAK,cAAc;AACjB,UAAI/B,MAAMwB,SAAS;AACjB;MACF;AACA,aAAO,eAAexB,MAAMG,IAAI;IAClC;IACA,KAAK,UAAU;AACb,UAAIH,MAAMwB,WAAWxB,MAAMQ,QAAQK,WAAW,GAAG;AAC/C;MACF;AACA,aAAO,WAAWb,MAAMQ,QAAQC,IAAI,CAACC,WAAW,WAAWA,MAAAA,WAAiB,EAAEyB,KAAK,EAAA,CAAA;IACrF;IACA,KAAK,YAAY;AACff,cAAQgB,aAA6CpC,MAAMqC,YAAY;QACrEC,QAAQ;UAACtC;;MACX,CAAA;AACA,aAAO,iBAAiBA,MAAMqC,UAAU;IAC1C;IACA,KAAK,cAAc;AACjBjB,cAAQgB,aAA6CpC,MAAMqC,YAAY,CAAC,EAAEC,SAAS,CAAA,EAAE,OAAQ;QAC3FA,QAAQ;aAAIA;UAAQtC;;MACtB,EAAA;AACA;IACF;IACA,KAAK,WAAW;AACd,aAAO,YAAYuC,aAAaC,qBAAqBxC,KAAAA,CAAAA;IACvD;IACA,SAAS;AAEP,aAAO,aAAaqB,QAAQoB,EAAE;EAAOf,KAAKC,UAAU3B,KAAAA,CAAAA;;IACtD;EACF;AACF;;;AExKA,SAAS0C,OAAAA,YAAW;;AAab,IAAMC,uBAAN,MAAMA;;EACX,YAA6BC,cAAsC;SAAtCA,eAAAA;EAAuC;EAEpEC,aAAgBC,IAAYC,OAAyB;AACnD,SAAKH,cAAcC,aAAaC,IAAIC,KAAAA;EACtC;;EAGAC,eAAeC,KAAU;AACvB,WAAO;EACT;AACF;AAcO,IAAMC,gBAAN,MAAMA;;;EACHC;EACAC,uBAAuB;EACvBC,qBAAqB;EACrBC;EAESC;EAEjB,YACmBC,QACAC,gBACjB;SAFiBD,SAAAA;SACAC,iBAAAA;AAEjB,SAAKF,WAAW,IAAIZ,qBAAqB,KAAKa,MAAM;EACtD;EAEA,IAAIE,UAAU;AACZ,WAAO,KAAKH;EACd;EAEAI,QAAQ;AACNjB,IAAAA,KAAI,SAAA,QAAA;;;;;;AACJ,SAAKS,oBAAoBS;AACzB,SAAKR,uBAAuB;AAC5B,SAAKC,qBAAqB;AAC1B,SAAKC,uBAAuBM;AAC5B,SAAK,KAAKJ,OAAOG,MAAM,EAAA;EACzB;;;;EAKAE,OAAOC,UAA6BC,QAAQ,OAAgB;AAE1D,QAAI,KAAKZ,sBAAsBW,SAAS,CAAA,GAAIhB,IAAI;AAC9C,WAAKa,MAAK;AACV,WAAKR,oBAAoBW,SAAS,CAAA,GAAIhB;IACxC;AAEA,QAAIiB,SAAS,KAAKP,OAAOQ,MAAMC,MAAMC,IAAIC,WAAW,GAAG;AACrD,YAAMC,SAAmB,CAAA;AACzB,WAAKC,QAAQP,UAAU,CAACQ,aAAAA;AACtBF,eAAOG,KAAKD,QAAAA;MACd,CAAA;AAEA,YAAMA,UAAUF,OAAOI,KAAK,EAAA;AAC5B,WAAKhB,OAAOQ,MAAMS,SAAS;QACzBC,SAAS;UAAC;YAAEC,MAAM;YAAGC,IAAI,KAAKpB,OAAOQ,MAAMC,MAAMC,IAAIC,UAAU;YAAGU,QAAQP;UAAQ;;QAClFQ,WAAW;UAAEC,QAAQT,QAAQH;QAAO;MACtC,CAAA;AAEA,aAAO;IACT,OAAO;AACL,WAAKE,QAAQP,UAAU,CAACQ,YAAAA;AACtB,aAAK,KAAKd,OAAOK,OAAOS,OAAAA;MAC1B,CAAA;AAEA,aAAO;IACT;EACF;EAEQD,QAAQP,UAA6BD,QAAmC;AAC9EnB,IAAAA,KAAI,QAAQ;MACVwB,KAAK,KAAKV,OAAOQ,MAAMC,MAAMC,IAAIC;MACjCL,UAAUA,SAASkB,IAAI,CAACC,YAAYA,QAAQC,OAAOf,MAAM;MACzDgB,qBAAqB,KAAK/B;MAC1BgC,mBAAmB,KAAK/B;MACxBgC,qBAAqB,KAAK/B;IAC5B,GAAA;;;;;;AAEA,QAAIgC,IAAI,KAAKlC;AACb,eAAW6B,WAAWnB,SAASyB,MAAM,KAAKnC,oBAAoB,GAAG;AAC/D,UAAIkC,IAAI,KAAKlC,sBAAsB;AACjC,aAAKC,qBAAqB;MAC5B;AAEA,WAAKD,uBAAuBkC;AAC5B,UAAIE,IAAI,KAAKnC;AACb,iBAAWoC,SAASR,QAAQC,OAAOK,MAAM,KAAKlC,kBAAkB,GAAG;AACjE,aAAKA,qBAAqBmC;AAC1B,cAAMH,sBAAsB,KAAK5B,eAAe,KAAKF,UAAU0B,SAASQ,KAAAA;AACxE,YAAIJ,qBAAqB;AACvB,cAAIf,UAAkB;AACtB,cAAI,KAAKhB,wBAAwB+B,oBAAoBK,WAAW,KAAKpC,oBAAoB,GAAG;AAC1FgB,sBAAUe,oBAAoBE,MAAM,KAAKjC,qBAAqBa,MAAM;UACtE,OAAO;AACLG,sBAAUe;UACZ;AAEA3C,UAAAA,KAAI,UAAU;YAAEuC,SAASK;YAAGG,OAAOD;YAAGlB;UAAQ,GAAA;;;;;;AAC9C,eAAKhB,uBAAuB+B;AAC5BxB,iBAAOS,OAAAA;QACT;AAEA,YAAImB,MAAME,SAAS;AACjB;QACF,OAAO;AACL,eAAKrC,uBAAuBM;AAC5B,eAAKP;QACP;AACAmC;MACF;AACAF;IACF;EACF;AACF;;;AHtHO,IAAMM,aAAaC,2BACxB,CACE,EAAEC,YAAYC,UAAUC,WAAW,CAAA,GAAIC,OAAOC,SAAS,OAAOC,SAAS,MAAMC,QAAQ,OAAOC,QAAO,GACnGC,iBAAAA;;;AAEA,UAAMC,gBAAgBC,gBAAgBF,YAAAA;AACtC,UAAMG,aAAaF,cAAcG;AAEjC,UAAMC,UAAUC,SACd,MAAMb,UAAUc,SAASC,MAAMC,OAAOC,cAAcjB,UAAUkB,eAAeC,UAAUC,OAAM,CAAA,EAAIJ,KACjG;MAAChB;KAAS;AAIZqB,IAAAA,WAAU,MAAA;AACRX,kBAAYY,eAAAA;IACd,GAAG;MAACZ;MAAYR;KAAM;AAGtB,UAAMqB,SAASV,SAAQ,MAAMH,cAAc,IAAIc,cAAcd,YAAYe,eAAAA,GAAkB;MAACf;KAAW;AACvGW,IAAAA,WAAU,MAAA;AACR,YAAMK,QAAQH,QAAQI,OAAO1B,UAAU,IAAA;AACvC,UAAIyB,OAAO;AACThB,oBAAYY,eAAe,SAAA;MAC7B;IACF,GAAG;MAACC;MAAQtB;KAAS;AAGrB,UAAM2B,cAAcC,aAClB,CAAC,EAAEC,MAAMC,MAAK,MAAE;AACd,cAAQD,MAAAA;QACN,KAAK,UAAU;AACbC,mBAASzB,UAAU;YAAEwB;YAAME,MAAMD;UAAM,CAAA;AACvC;QACF;MACF;IACF,GACA;MAACzB;KAAQ;AAGX,WACE,gBAAA2B,OAAA,cAACC,OAAAA;MACCC,MAAK;MACLC,WAAWC,IAAG,uDAAuDtC,UAAAA;MACrEuC,OAAO;QAAE,eAAe,YAAY1B,OAAAA;MAAe;OAEnD,gBAAAqB,OAAA,cAACM,gBAAAA;MACCC,KAAKhC;MACLiC,UAAUC;MACVvC;MACAC;MACAC;MACAC,SAASsB;;;;;AAIjB,CAAA;;;Ab7BK,IAAM,CAACe,qBAAqBC,cAAAA,IAAkBC,cAAgC,MAAA;AAYrF,IAAMC,WAAW,CAAC,EAAEC,UAAUC,MAAMC,WAAWC,SAAS,GAAGC,MAAAA,MAAsB;;;AAC/E,UAAM,CAACC,OAAOC,QAAAA,IAAYC,WAAS,KAAA;AACnC,UAAMC,UAAUC,aAAaP,UAAUQ,QAAQ;AAC/C,UAAMC,YAAYF,aAAaP,UAAUS,SAAS;AAClD,UAAMC,aAAaC,QAA2BC,MAAAA;AAG9C,UAAMC,QAAQC,SAA0Bf,MAAMc,MAAME,GAAAA;AACpD,UAAMP,WAAWQ,SAAQ,MAAA;AACvB,YAAMC,gBAAgBJ,OAAOK,SAASC,OAAOC,KAAIC,WAAWC,QAAQA,OAAO,CAAA,KAAM,CAAA;AACjF,aAAaC,kBAAW;WAAIN;WAAkBX;SAAU,CAAC,EAAEkB,IAAIC,EAAC,GAAI,EAAED,IAAIE,EAAC,MAAOD,MAAMC,CAAAA;IAC1F,GAAG;MAACb,OAAOK;MAASZ;KAAQ;AAG5B,UAAMqB,QAAQX,SAAQ,MAAM,IAAIY,MAAAA,GAAoB,CAAA,CAAE;AACtDC,IAAAA,WAAU,MAAA;AACR,aAAOF,MAAMG,GAAG,CAACC,OAAAA;AACf,gBAAQA,GAAGC,MAAI;UACb,KAAK,gBAAgB;AACnB5B,qBAAS,CAAC6B,YAAY,CAACA,OAAAA;AACvB;UACF;UAEA,KAAK,UAAU;AACb,kBAAMC,OAAOH,GAAGG,KAAKC,KAAI;AACzB,gBAAI,CAAC1B,aAAayB,KAAKE,QAAQ;AAC7B1B,yBAAWuB,UAAUF,GAAGG;AACxB,mBAAKlC,UAAUqC,QAAQ;gBAAEC,SAASJ;cAAK,CAAA;YACzC;AACA;UACF;UAEA,KAAK,SAAS;AACZ,gBAAI,CAACzB,WAAW;AACd,mBAAKT,UAAUuC,MAAK;YACtB;AACA;UACF;UAEA,KAAK,UAAU;AACb,gBAAI9B,WAAW;AACb,mBAAKT,UAAUwC,OAAM;AACrB,kBAAI9B,WAAWuB,SAAS;AACtBN,sBAAMc,KAAK;kBAAET,MAAM;kBAAiBE,MAAMxB,WAAWuB;gBAAQ,CAAA;cAC/D;YACF;AACA;UACF;QACF;AAEAhC,kBAAU8B,EAAAA;MACZ,CAAA;IACF,GAAG;MAACJ;MAAO3B;MAAWS;MAAWR;KAAQ;AAEzC,UAAMyC,QAAQxC,MAAMwC,SAASC,SAAS5C,IAAAA;AAEtC,WACE,gBAAA6C,QAAA,cAAClD,qBAAAA;MACCS;MACAwB;MACAe;MACA3C;MACAS;MACAR;MACC,GAAGE;OAEHJ,QAAAA;;;;AAGP;AAEAD,SAASgD,cAAc;AAQvB,IAAMC,eAAe,CAAC,EAAEC,YAAYjD,SAAQ,MAAqB;;;AAC/D,WACE,gBAAA8C,QAAA,cAACI,OAAAA;MAAIC,MAAK;MAAOC,WAAWC,IAAG,iCAAiCJ,UAAAA;OAC7DjD,QAAAA;;;;AAGP;AAmBA,IAAMsD,aAAa,CAAC,EAClBL,YACAM,SACAC,WAAW,MACXC,aACAC,YACAC,QACAC,SACAC,QACAC,gBACAC,eAAc,MACE;;;AAChB,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKxC,EAAE;AACpC,UAAM,EAAEkB,OAAO1C,WAAW2B,MAAK,IAAKhC,eAAeyD,WAAWP,WAAW;AAEzE,UAAMoB,QAAQ1D,aAAaP,UAAUiE,KAAK,EAAEC,KAAYC,sBAAc;AACtE,UAAM1D,YAAYF,aAAaP,UAAUS,SAAS;AAClD,UAAM2D,SAAS7D,aAAaP,UAAUoE,MAAM;AAC5C,UAAMC,YAAYC,cAAcF,MAAAA;AAEhC,UAAMG,YAAY5D,QAA6B,IAAA;AAC/C,UAAM,CAAC6D,gBAAgBC,iBAAAA,IAAqBpE,WAAS,KAAA;AACrDwB,IAAAA,WAAU,MAAA;AACR,aAAOF,MAAMG,GAAG,CAACH,WAAAA;AACf,gBAAQA,OAAMK,MAAI;UAChB,KAAK;AACH,gBAAI,CAACuC,UAAUtC,SAASyC,QAAAA,GAAWtC,QAAQ;AACzCmC,wBAAUtC,SAAS0C,QAAQhD,OAAMO,IAAI;AACrCqC,wBAAUtC,SAAS2C,MAAAA;YACrB;AACA;UACF,KAAK;AACHH,8BAAkB,IAAA;AAClB;UACF,KAAK;AACHA,8BAAkB,KAAA;AAClB;QACJ;MACF,CAAA;IACF,GAAG;MAAC9C;KAAM;AAGV,UAAM,EAAEkD,UAAS,IAAKC,cAAc;MAClCV,QAAQI;MACRO,UAAU,CAAC7C,SAAAA;AACTqC,kBAAUtC,SAAS0C,QAAQzC,IAAAA;AAC3BqC,kBAAUtC,SAAS2C,MAAAA;MACrB;IACF,CAAA;AAEA,UAAMI,aAAahE,SAAqB,MAAA;AACtC,aAAO;QACLiE,KAAKC,QACHC,OAAOC,GAAG;UACR;YACEC,KAAK;YACLC,gBAAgB;YAChBC,KAAK,MAAA;AACH5D,oBAAMc,KAAK;gBAAET,MAAM;cAAe,CAAA;AAClC,qBAAO;YACT;UACF;UACA;YACEqD,KAAK;YACLC,gBAAgB;YAChBC,KAAK,MAAA;AACH5D,oBAAMc,KAAK;gBAAET,MAAM;cAAe,CAAA;AAClC,qBAAO;YACT;YACAwD,OAAO,MAAA;AACL7D,oBAAMc,KAAK;gBAAET,MAAM;cAAc,CAAA;AACjC,qBAAO;YACT;UACF;UACA;YACEqD,KAAK;YACLC,gBAAgB;YAChBC,KAAK,MAAA;AACH5D,oBAAMc,KAAK;gBAAET,MAAM;cAAW,CAAA;AAC9B,qBAAO;YACT;YACAwD,OAAO,MAAA;AACL7D,oBAAMc,KAAK;gBAAET,MAAM;cAAe,CAAA;AAClC,qBAAO;YACT;UACF;SACD,CAAA;QAEHb,OAAOsE,QAAAA;IACX,GAAG;MAAC9D;MAAO6B;KAAW;AAEtB,UAAMkC,eAAeC,aACnB,CAACzD,SAAAA;AACC,UAAI,CAACmC,UAAUpC,SAAS;AACtBN,cAAMc,KAAK;UAAET,MAAM;UAAUE;QAAK,CAAA;AAClC,eAAO;MACT;IACF,GACA;MAACP;KAAM;AAGT,UAAMiE,cAAcD,aAClB,CAAC5D,OAAAA;AACCJ,YAAMc,KAAKV,EAAAA;IACb,GACA;MAACJ;KAAM;AAGT,WACE,gBAAAiB,QAAA,cAACI,OAAAA;MACCC,MAAK;MACLC,WAAWC,IACT,sCACAE,WACE,mIACFN,UAAAA;OAGF,gBAAAH,QAAA,cAACI,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAN,QAAA,cAACiD,qBAAAA;MAAoB9C,YAAW;MAAMY;MAAgBM;MAAc6B,YAAYrF;QAChF,gBAAAmC,QAAA,cAACmD,YAAAA;MACCC,KAAKzB;MACL0B,WAAAA;MACAC,cAAAA;MACAnD,YAAW;MACXQ,aAAaA,eAAeO,EAAE,oBAAA;MAC9BkB;MACAmB,UAAUT;SAIbhD,SAASY,YACR,gBAAAV,QAAA,cAACI,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAN,QAAA,cAACwD,aAAAA;MACC1D;MACA2D,mBAAmBrG,UAAUqG;MAC7BC,SAAStG,UAAUsG;MACnB3C;MACAD;MACAE;QAGF,gBAAAhB,QAAA,cAACI,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAN,QAAA,cAAC2D,gBAAAA;MAAe7D;MAAc4D,SAAStG,UAAUsG;SAGnD,gBAAA1D,QAAA,cAAC4D,aAAAA;MACCzD,YAAW;MACX0D,YAAY;MACZ5B;MACAiB,YAAYrF;MACZR,SAAS2F;OAGRnC,WAAW7C,UACV,gBAAAgC,QAAA,cAAC8D,OAAMC,MAAI,MACT,gBAAA/D,QAAA,cAAC8D,OAAME,OAAK;MAACC,QAAAA;OAAQ/C,EAAE,qBAAA,CAAA,GACvB,gBAAAlB,QAAA,cAAC8D,OAAMI,QAAM;MAAC/D,YAAW;MAAQgE,SAAStD;MAAQuD,iBAAiBnD;;;;;AAQnF;AAEAT,WAAWP,cAAc;AAQzB,IAAMoE,cAAa,CAAC/G,UAAAA;;;AAClB,UAAM,EAAEC,OAAOwB,OAAOnB,UAAUR,UAAS,IAAKL,eAAesH,YAAWpE,WAAW;AACnF,UAAMqE,WAAWC,YAAAA;AACjB,UAAMlD,QAAQ1D,aAAaP,UAAUiE,KAAK,EAAEC,KAAYC,sBAAc;AAEtE,UAAMiD,gBAAgBzG,QAAwC,IAAA;AAC9DkB,IAAAA,WAAU,MAAA;AACR,aAAOF,MAAMG,GAAG,CAACH,WAAAA;AACf,gBAAQA,OAAMK,MAAI;UAChB,KAAK;UACL,KAAK;AACHoF,0BAAcnF,SAASoF,eAAAA;AACvB;UACF,KAAK;AACHD,0BAAcnF,SAASqF,iBAAAA;AACvB;UACF,KAAK;AACHF,0BAAcnF,SAASsF,aAAAA;AACvB;QACJ;MACF,CAAA;IACF,GAAG;MAAC5F;KAAM;AAEV,UAAMiE,cAAcD,aAClB,CAAC5D,OAAAA;AACCJ,YAAMc,KAAKV,EAAAA;IACb,GACA;MAACJ;KAAM;AAGT,QAAI,CAACuF,UAAU;AACb,aAAO;IACT;AAEA,WACE,gBAAAtE,QAAA,cAAC4E,YAAAA;MACE,GAAGtH;MACJgH;MACA1G;MACAyD;MACA9D;MACAF,SAAS2F;MACTI,KAAKoB;;;;;AAGX;AAEAH,YAAWpE,cAAc;AAQzB,IAAM4E,cAAc,CAAC,EAAE1E,YAAY2E,YAAW,MAAoB;;;AAChE,UAAM,EAAE3H,KAAI,IAAKJ,eAAe8H,YAAY5E,WAAW;AACvD,UAAM8E,OAAOC,sBAAsB;MAAE7H;MAAM2H;IAAY,CAAA;AAEvD,WACE,gBAAA9E,QAAA,cAACiF,cAAAA;MACE,GAAGF;MACJG,cAAcJ,cAActG,KAAI2G,OAAOL,WAAAA,EAAaM,SAAQ,IAAKjI,OAAOqB,KAAI2G,OAAOhI,IAAAA,EAAMiI,SAAQ,IAAK;OAEtG,gBAAApF,QAAA,cAACqF,aAAAA;MAAYlF;MAAwBmF,gBAAAA;;;;;AAG3C;AAEAT,YAAY5E,cAAc;AAMnB,IAAMsF,OAAO;EAClBxB,MAAM9G;EACNuI,UAAUtF;EACVuF,QAAQjF;EACRkF,QAAQrB;EACRsB,SAASd;AACX;;;;AiBxaA,OAAOe,WAAkBC,UAAUC,aAAAA,YAAWC,YAAAA,kBAAgB;AAI9D,SAASC,gBAAgB;AACzB,SAASC,OAAAA,YAAW;AACpB,SAASC,UAAAA,SAAoBC,YAAAA,iBAAgB;AAE7C,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,MAAAA,WAAU;;AAcZ,IAAMC,UAAU,CAAC,EAAEC,YAAYC,WAAWC,UAAUC,YAAYC,iBAAgB,MAAgB;;;AACrG,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AAEpC,WACE,gBAAAC,QAAA,cAACC,OAAAA;MAAIC,WAAWC,IAAG,6CAA6CZ,UAAAA;OAC7DG,cAAcA,WAAWU,SAAS,KACjC,gBAAAJ,QAAA,cAACK,SAAAA;MACCC,OAAM;MACNC,OAAOb,WAAWc,IAAI,CAAC,EAAEC,OAAM,OAAQ;QACrCC,MAAMD,QAAQC,QAAQ;QACtBC,aAAaF,QAAQE,eAAe;QACpCC,UAAUH,QAAQI,MAAML,IAAI,CAACM,YAAY;UAAEJ,MAAM,UAAKK,WAAWD,MAAAA,CAAAA;QAAU,EAAA;MAC7E,EAAA;QAIHnB,oBAAoBA,iBAAiBS,SAAS,KAC7C,gBAAAJ,QAAA,cAACK,SAAAA;MACCC,OAAM;MACNC,OAAOZ,iBAAiBa,IAAI,CAAC,EAAEC,OAAM,OAAQ;QAC3CC,MAAMD,QAAQC,QAAQ;QACtBC,aAAaF,QAAQE,eAAe;QACpCC,UAAUH,QAAQI,MAAML,IAAI,CAACM,YAAY;UAAEJ,MAAM,UAAKK,WAAWD,MAAAA,CAAAA;QAAU,EAAA;MAC7E,EAAA;QAIHrB,YAAYA,SAASW,SAAS,KAC7B,gBAAAJ,QAAA,cAACK,SAAAA;MACCC,OAAM;MACNC,OAAOd,SAASe,IAAI,CAAC,EAAEQ,SAAS,EAAEC,WAAWP,MAAMC,YAAW,EAAE,OAAQ;QACtED,MAAMA,QAAQO;QACdN;MAEF,EAAA;QAIHnB,aAAaA,UAAUY,SAAS,KAC/B,gBAAAJ,QAAA,cAACK,SAAAA;MAAQC,OAAM;MAAYC,OAAOf,UAAUgB,IAAI,CAAC,EAAEE,MAAMC,YAAW,OAAQ;QAAED;QAAMC;MAAY,EAAA;;;;;AAIxG;AAEA,IAAMN,UAID,CAAC,EAAEC,OAAOC,OAAOW,QAAO,MAAE;;;AAC7B,UAAMC,mBAAmB;AACzB,UAAMC,iBAAiB;AACvB,UAAMC,oBAAoBlB,IAAG,sDAAsDe,WAAWC,gBAAAA;AAE9F,WACE,gBAAAnB,QAAA,cAACC,OAAAA,MACC,gBAAAD,QAAA,cAACsB,MAAAA;MAAGpB,WAAU;OAAiBI,KAAAA,GAC/B,gBAAAN,QAAA,cAACC,OAAAA;MAAIC,WAAWkB;OACbb,MAAMC,IAAI,CAAC,EAAEE,MAAMC,aAAaC,SAAQ,GAAIW,MAC3C,gBAAAvB,QAAA,cAACwB,UAAAA;MAASC,KAAKF;OACZb,QACC,gBAAAV,QAAA,cAACC,OAAAA;MAAIC,WAAWmB;OACd,gBAAArB,QAAA,cAACC,OAAAA;MAAIC,WAAU;OAA6BQ,IAAAA,GAC5C,gBAAAV,QAAA,cAACC,OAAAA;MAAIC,WAAU;OAAgBS,WAAAA,CAAAA,GAGlCC,UAAUJ,IAAI,CAAC,EAAEE,MAAAA,OAAMC,aAAAA,aAAW,GAAIY,OACrC,gBAAAvB,QAAA,cAACC,OAAAA;MAAIwB,KAAKF;MAAGrB,WAAWC,IAAGkB,mBAAmBH,WAAWC,gBAAAA;OACvD,gBAAAnB,QAAA,cAACC,OAAAA;MAAIC,WAAU;OAAYQ,KAAAA,GAC3B,gBAAAV,QAAA,cAACC,OAAAA;MAAIC,WAAU;OAA6BS,YAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;;;AAQ5D;AAOO,IAAMe,mBAAmB,CAAC,EAAEnC,YAAYoC,OAAOC,UAAS,MAAyB;;;AAEtF,UAAMnC,WAAWoC,UAASF,OAAOG,QAAOC,KAAKC,WAAAA,CAAAA;AAC7C,UAAM,CAACC,cAAcC,eAAAA,IAAmBC,WAAqC,CAAA,CAAE;AAC/EC,IAAAA,WAAU,MAAA;AACRC,MAAAA,KAAI,6BAA6B;QAAE5C,UAAUA,SAASW;MAAO,GAAA;;;;;;AAC7DkC,qBAAe,YAAA;MAMf,CAAA;IACF,GAAG;MAAC7C;KAAS;AAGb,UAAMD,YAAYqC,UAASF,OAAOG,QAAOC,KAAKQ,SAASA,QAAQ,CAAA;AAE/D,WACE,gBAAAvC,QAAA,cAACV,SAAAA;MACCC;MACAG,YAAYkC,WAAWY,QAAQ9C,WAAW+C;MAC1ChD,UAAUwC;MACVzC;;;;;AAGN;AAEA,IAAMuB,aAAa,CAACL,SAAAA;AAClB,SAAOA,KAAKgC,MAAM,GAAA,EAAKC,IAAG;AAC5B;;;AlBlIO,IAAMC,mBAAmBC,KAAK,MAAM,OAAO,iCAAA,CAAA;AAC3C,IAAMC,gBAAgBD,KAAK,MAAM,OAAO,8BAAA,CAAA;AACxC,IAAME,gBAAgBF,KAAK,MAAM,OAAO,8BAAA,CAAA;AACxC,IAAMG,aAAaH,KAAK,MAAM,OAAO,2BAAA,CAAA;AACrC,IAAMI,gBAAgBJ,KAAK,MAAM,OAAO,8BAAA,CAAA;;;;ADSxC,IAAMK,wBAAwB,CAAC,EAAEC,MAAMC,YAAW,MAA2B;AAClF,QAAM,EAAEC,SAAQ,IAAKC,oBAAAA;AACrB,QAAM,EAAEC,MAAK,IAAKC,eAAe,uBAAA;AACjC,QAAMC,QAAQL,cACVM,MAAMC,OAAOC,QAAOC,IAAIT,YAAYU,EAAE,CAAA,EAAGC,SAASC,kBAAUC,WAAW,EAAEC,OAAM,IAC/ER,MAAMC,OAAOC,QAAOO,QAAO,CAAA;AAG/B,QAAMC,QAAQC,UAASd,OAAOE,KAAAA;AAG9B,SAAOa,eACLC,UAAQ,MAAA;AACN,WAAOC,KAAKC,KAAK,MAAA;AACf,YAAMC,UAAUC,YAAYF,KAAI,EAC7BG,KAAK;QACJC,OAAO;UAAC;UAAsB;YAAEC,IAAIC,KAAKjB;UAAG;;MAC9C,CAAA,EACCkB,OACC,OACA;QACEH,OAAO;UAAC;UAAqB;YAAEC,IAAIC,KAAKjB;UAAG;;QAC3CmB,MAAM;QACNC,MAAM;MACR,GACA,MACE7B,SACE8B,aAAaC,wBAAgBC,gBAAgB;QAC3CjC;QACAD,MAAMmC;MACR,CAAA,CAAA,EACAC,KAAYC,kBAAU,CAAA,EAE3BR,OACC,UACA;QACEH,OAAO;UAAC;UAAwB;YAAEC,IAAIC,KAAKjB;UAAG;;QAC9CmB,MAAM;QACNC,MAAM;QACNO,UAAU,CAACtC;MACb,GACA,MACSuC,YAAI,aAAA;AACTC,kBAAUxC,MAAAA,QAAAA;;;;;;;;;AACV,eAAOE,SAAS8B,aAAaC,wBAAgBQ,gBAAgB;UAAEzC;QAAK,CAAA,CAAA;MACtE,CAAA,EAAGoC,KAAYC,kBAAU,CAAA,EAE5BR,OACC,UACA;QACEH,OAAO;UAAC;UAAwB;YAAEC,IAAIC,KAAKjB;UAAG;;QAC9CmB,MAAM;QACNC,MAAM;QACNO,UAAU;MACZ,GACA,MAAA;MAAO,CAAA;AAGX,UAAIrB,MAAMyB,SAAS,GAAG;AACpBnB,gBAAQoB,MACN,SACA;UACEjB,OAAO;YAAC;YAAsB;cAAEC,IAAIC,KAAKjB;YAAG;;UAC5CmB,MAAM;UACNc,mBAAmB;UACnBC,SAAS;QACX,GACA,CAACtB,aAAAA;AACCN,gBAEG6B,SAAS,CAACC,GAAGC,MAAMD,EAAEpC,GAAGsC,cAAcD,EAAErC,EAAE,CAAA,EAC1CuC,QAAQ,CAAClD,UAAAA;AACRuB,YAAAA,SAAQM,OACN7B,MAAKW,IACL;cACEe,OAAOyB,KAAIC,SAASpD,KAAAA,KAAS;gBAAC;gBAA2B;kBAAE2B,IAAId,kBAAUwC,KAAKC;gBAAS;;YACzF,GACA,MACSf,YAAI,aAAA;AACTC,wBAAUvC,aAAAA,QAAAA;;;;;;;;;AACV,qBAAOC,SACL8B,aAAaC,wBAAgBC,gBAAgB;gBAC3CjC;gBACAD,MAAAA;cACF,CAAA,CAAA;YAEJ,CAAA,EAAGoC,KAAYC,kBAAU,CAAA;UAE/B,CAAA;QACJ,CAAA;MAEJ;AAEA,aAAOd,QAAQgC,MAAK;IACtB,CAAA;EACF,GAAG;IAACtC,MAAMyB;IAAQtC,OAAOO;IAAIV,aAAaU;IAAIX,MAAMW;IAAIT;GAAS,CAAA;AAErE;",
6
+ "names": ["React", "DEFAULT_EDGE_MODELS", "DEFAULT_OLLAMA_MODELS", "Input", "Select", "useTranslation", "ControlGroup", "ControlItemInput", "ControlPage", "ControlSection", "DEFAULT_VALUE", "LLM_PROVIDER_LABELS", "edge", "ollama", "lmstudio", "AssistantSettings", "settings", "t", "useTranslation", "meta", "id", "ControlPage", "ControlSection", "title", "ns", "ControlGroup", "ControlItemInput", "Input", "Switch", "checked", "customPrompts", "onCheckedChange", "Select", "Root", "value", "llmProvider", "onValueChange", "undefined", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "Option", "LLM_PROVIDERS", "map", "model", "key", "Arrow", "edgeModel", "DEFAULT_EDGE_MODELS", "ollamaModel", "DEFAULT_OLLAMA_MODELS", "useSignalEffect", "useCallback", "useMemo", "useState", "Capabilities", "useCapabilities", "Blueprint", "Filter", "Obj", "Ref", "useQuery", "distinctBy", "isNonNullable", "useBlueprintRegistry", "blueprints", "useCapabilities", "Capabilities", "BlueprintDefinition", "useMemo", "Blueprint", "Registry", "useBlueprints", "blueprintRegistry", "space", "staticBlueprints", "query", "spaceBlueprints", "useQuery", "Filter", "type", "distinctBy", "b", "key", "sort", "name", "a", "localeCompare", "useActiveBlueprints", "context", "active", "setActive", "useState", "Map", "useSignalEffect", "refs", "value", "map", "ref", "target", "filter", "isNonNullable", "blueprint", "useBlueprintHandlers", "onUpdateBlueprint", "useCallback", "checked", "objects", "db", "run", "storedBlueprint", "find", "getByKey", "add", "Obj", "clone", "bind", "Ref", "make", "unbind", "RegistryContext", "useContext", "useMemo", "useState", "AiConversation", "log", "useAsyncEffect", "useChatProcessor", "space", "chat", "preset", "services", "blueprintRegistry", "settings", "observableRegistry", "useContext", "RegistryContext", "conversation", "setConversation", "useState", "useAsyncEffect", "queue", "queues", "get", "dxn", "AiConversation", "open", "close", "undefined", "toString", "processor", "useMemo", "log", "model", "AiChatProcessor", "Effect", "useMemo", "useCapability", "TracingService", "TracingServiceExt", "AutomationCapabilities", "useClient", "useChatServices", "space", "chat", "client", "useClient", "spaces", "default", "runtimeResolver", "useCapability", "AutomationCapabilities", "ComputeRuntime", "useMemo", "runtime", "getRuntime", "id", "runPromise", "gen", "pipe", "provide", "traceQueue", "target", "TracingServiceExt", "layerQueue", "TracingService", "layerNoop", "Atom", "Effect", "useMemo", "createIntent", "useIntentDispatcher", "Filter", "Obj", "Query", "invariant", "useQuery", "MenuBuilder", "useMenuActions", "lazy", "Prec", "keymap", "useAtomValue", "createContext", "Array", "Option", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Event", "Obj", "useVoiceInput", "getSpace", "useQueue", "useIdentity", "Input", "useDynamicRef", "useTranslation", "ChatEditor", "MenuProvider", "ToolbarMenu", "mx", "Message", "isTruthy", "useState", "AiContextBinder", "useAsyncEffect", "useContextBinder", "queue", "binder", "setBinder", "useState", "useAsyncEffect", "AiContextBinder", "open", "close", "useCallback", "Ref", "log", "isNonNullable", "useContextObjects", "space", "context", "objects", "value", "map", "ref", "target", "filter", "handleUpdateObject", "dxn", "checked", "id", "asEchoDXN", "object", "db", "getObjectById", "echoId", "warn", "fromDXN", "bind", "unbind", "onUpdateObject", "useCallback", "useRef", "useState", "useFlush", "space", "state", "setState", "useState", "resetTimer", "useRef", "handleFlush", "useCallback", "queueMicrotask", "current", "clearTimeout", "db", "flush", "setTimeout", "Option", "useEffect", "useState", "ItemAnnotation", "useItemTypes", "space", "types", "setTypes", "useState", "useEffect", "db", "schemaRegistry", "query", "subscribe", "Array", "from", "Set", "graph", "schemas", "results", "filter", "type", "isSome", "ItemAnnotation", "get", "fire", "useState", "useOnline", "online", "setOnline", "useState", "useCallback", "useEffect", "useMemo", "useState", "usePresets", "online", "preset", "setPreset", "useState", "presets", "useMemo", "AiServicePresets", "filter", "provider", "presetOptions", "map", "id", "model", "label", "useEffect", "handlePresetChange", "useCallback", "find", "onPresetChange", "useMemo", "Capabilities", "useCapabilities", "Filter", "Obj", "useReferencesProvider", "space", "blueprints", "useCapabilities", "Capabilities", "BlueprintDefinition", "useMemo", "undefined", "getReferences", "query", "objects", "db", "Filter", "everything", "run", "filter", "object", "stringMatch", "Obj", "getLabel", "getDXN", "map", "uri", "toString", "label", "resolveReference", "ids", "first", "toLowerCase", "startsWith", "React", "IconButton", "useTranslation", "mx", "ChatActions", "classNames", "children", "microphone", "recording", "processing", "onEvent", "t", "useTranslation", "meta", "id", "React", "div", "className", "mx", "IconButton", "disabled", "variant", "icon", "iconOnly", "label", "onClick", "type", "noTooltip", "onMouseDown", "onMouseUp", "onTouchStart", "onTouchEnd", "React", "useMemo", "useState", "Filter", "Obj", "Type", "useQuery", "Icon", "IconButton", "Popover", "Select", "useTranslation", "Listbox", "SearchList", "Tabs", "panelClassNames", "ChatOptions", "space", "context", "blueprintRegistry", "presets", "preset", "onPresetChange", "t", "useTranslation", "meta", "id", "React", "div", "role", "className", "Popover", "Root", "Trigger", "asChild", "IconButton", "variant", "icon", "iconOnly", "label", "Portal", "Content", "side", "classNames", "Viewport", "ObjectsPanel", "Arrow", "Tabs", "orientation", "defaultValue", "defaultActivePart", "tabIndex", "Tabpanel", "value", "BlueprintsPanel", "ModelsPanel", "Tablist", "IconTab", "blueprints", "useBlueprints", "activeBlueprints", "useActiveBlueprints", "onUpdateBlueprint", "useBlueprintHandlers", "SearchList", "map", "blueprint", "isActive", "has", "key", "Item", "name", "onSelect", "Icon", "Input", "placeholder", "autoFocus", "Listbox", "onValueChange", "Option", "OptionLabel", "OptionIndicator", "ANY", "types", "useItemTypes", "typenames", "useMemo", "type", "typename", "Type", "getTypename", "ns", "sort", "a", "b", "localeCompare", "setTypename", "useState", "anyFilter", "Filter", "or", "objects", "useQuery", "contextObjects", "onUpdateObject", "useContextObjects", "length", "object", "Obj", "getLabel", "findIndex", "obj", "getDXN", "Select", "undefined", "TriggerButton", "density", "ScrollUpButton", "ScrollDownButton", "React", "Select", "React", "Obj", "IconButton", "toLocalizedString", "useTranslation", "mx", "ChatReferences", "classNames", "context", "space", "t", "useTranslation", "meta", "id", "objects", "onUpdateObject", "useContextObjects", "React", "ul", "className", "mx", "map", "obj", "dxn", "Obj", "getDXN", "typename", "getTypename", "label", "getLabel", "ns", "li", "key", "toString", "data-hue", "toLocalizedString", "IconButton", "icon", "iconOnly", "variant", "size", "onClick", "React", "useEffect", "useState", "Tooltip", "useTimeout", "Spinner", "mx", "period", "ChatStatusIndicator", "classNames", "preset", "processing", "error", "props", "init", "setInit", "useState", "useEffect", "useTimeout", "React", "div", "role", "className", "mx", "Spinner", "duration", "state", "Tooltip", "Trigger", "asChild", "content", "message", "React", "forwardRef", "useCallback", "useEffect", "useMemo", "PublicKey", "useForwardedRef", "MarkdownStream", "mx", "keyToFallback", "React", "log", "PromptWidget", "ReferenceWidget", "SelectWidget", "SuggestionWidget", "SummaryWidget", "ToggleContainer", "getXmlTextChild", "Json", "ContentBlock", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useTranslation", "NumericTabs", "TextCrawl", "ToggleContainer", "Json", "isNonNullable", "safeParseJson", "ToolBlock", "view", "blocks", "t", "useTranslation", "meta", "id", "items", "useMemo", "lastToolCall", "tools", "filter", "block", "_tag", "map", "pending", "toolCallId", "tool", "find", "name", "title", "description", "join", "content", "input", "safeParseJson", "error", "undefined", "result", "isNonNullable", "handleChangeOpen", "useCallback", "setTimeout", "requestMeasure", "length", "React", "ToolContainer", "onChangeOpen", "displayName", "tabsRef", "useRef", "selected", "setSelected", "useState", "open", "setOpen", "useEffect", "current", "focus", "handleSelect", "index", "ToggleContainer", "Root", "classNames", "Header", "TextCrawl", "key", "lines", "item", "autoAdvance", "greedy", "Content", "NumericTabs", "ref", "onSelect", "Json", "data", "replacer", "maxDepth", "maxArrayLen", "maxStringLen", "Fallback", "_tag", "props", "React", "ToggleContainer", "Root", "classNames", "Header", "Content", "Json", "data", "componentRegistry", "block", "factory", "children", "text", "getXmlTextChild", "PromptWidget", "ref", "ReferenceWidget", "options", "map", "option", "filter", "Boolean", "length", "SelectWidget", "SuggestionWidget", "SummaryWidget", "Component", "ToolBlock", "blockToMarkdown", "context", "message", "str", "blockToMarkdownImpl", "pending", "log", "JSON", "stringify", "sender", "role", "trim", "dxn", "reference", "toString", "getObjectLabel", "join", "updateWidget", "toolCallId", "blocks", "ContentBlock", "createSummaryMessage", "id", "log", "MessageThreadContext", "_widgetState", "updateWidget", "id", "value", "getObjectLabel", "_id", "MessageSyncer", "_initialMessageId", "_currentMessageIndex", "_currentBlockIndex", "_currentBlockContent", "_context", "_model", "_blockRenderer", "context", "reset", "undefined", "append", "messages", "flush", "view", "state", "doc", "length", "buffer", "process", "content", "push", "join", "dispatch", "changes", "from", "to", "insert", "selection", "anchor", "map", "message", "blocks", "currentMessageIndex", "currentBlockIndex", "currentBlockContent", "i", "slice", "j", "block", "startsWith", "pending", "ChatThread", "forwardRef", "classNames", "identity", "messages", "error", "cursor", "fadeIn", "debug", "onEvent", "forwardedRef", "controllerRef", "useForwardedRef", "controller", "current", "userHue", "useMemo", "profile", "data", "hue", "keyToFallback", "identityKey", "PublicKey", "random", "useEffect", "scrollToBottom", "syncer", "MessageSyncer", "blockToMarkdown", "reset", "append", "handleEvent", "useCallback", "type", "value", "text", "React", "div", "role", "className", "mx", "style", "MarkdownStream", "ref", "registry", "componentRegistry", "ChatContextProvider", "useChatContext", "createContext", "ChatRoot", "children", "chat", "processor", "onEvent", "props", "debug", "setDebug", "useState", "pending", "useAtomValue", "messages", "streaming", "lastPrompt", "useRef", "undefined", "queue", "useQueue", "dxn", "useMemo", "queueMessages", "objects", "filter", "Obj", "instanceOf", "Message", "dedupeWith", "id", "a", "b", "event", "Event", "useEffect", "on", "ev", "type", "current", "text", "trim", "length", "request", "message", "retry", "cancel", "emit", "space", "getSpace", "React", "displayName", "ChatViewport", "classNames", "div", "role", "className", "mx", "ChatPrompt", "outline", "settings", "placeholder", "expandable", "online", "presets", "preset", "onPresetChange", "onOnlineChange", "t", "useTranslation", "meta", "error", "pipe", "getOrUndefined", "active", "activeRef", "useDynamicRef", "editorRef", "recordingState", "setRecordingState", "getText", "setText", "focus", "recording", "useVoiceInput", "onUpdate", "extensions", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "shift", "isTruthy", "handleSubmit", "useCallback", "handleEvent", "ChatStatusIndicator", "processing", "ChatEditor", "ref", "autoFocus", "lineWrapping", "onSubmit", "ChatOptions", "blueprintRegistry", "context", "ChatReferences", "ChatActions", "microphone", "Input", "Root", "Label", "srOnly", "Switch", "checked", "onCheckedChange", "ChatThread", "identity", "useIdentity", "controllerRef", "scrollToBottom", "navigatePrevious", "navigateNext", "NaturalChatThread", "ChatToolbar", "companionTo", "menu", "useChatToolbarActions", "MenuProvider", "attendableId", "getDXN", "toString", "ToolbarMenu", "textBlockWidth", "Chat", "Viewport", "Prompt", "Thread", "Toolbar", "React", "Fragment", "useEffect", "useState", "Function", "log", "Filter", "useQuery", "useTranslation", "mx", "Toolbox", "classNames", "functions", "services", "blueprints", "activeBlueprints", "t", "useTranslation", "meta", "id", "React", "div", "className", "mx", "length", "Section", "title", "items", "map", "target", "name", "description", "subitems", "tools", "toolId", "safeToolId", "service", "serviceId", "striped", "stripeClassNames", "gridClassNames", "subGridClassNames", "h1", "i", "Fragment", "key", "ToolboxContainer", "space", "processor", "useQuery", "Filter", "type", "ServiceType", "serviceTools", "setServiceTools", "useState", "useEffect", "log", "queueMicrotask", "Function", "context", "value", "split", "pop", "BlueprintArticle", "lazy", "ChatCompanion", "ChatContainer", "ChatDialog", "PromptArticle", "useChatToolbarActions", "chat", "companionTo", "dispatch", "useIntentDispatcher", "space", "useChatContext", "query", "Query", "select", "Filter", "ids", "id", "targetOf", "Assistant", "CompanionTo", "source", "nothing", "chats", "useQuery", "useMenuActions", "useMemo", "Atom", "make", "builder", "MenuBuilder", "root", "label", "ns", "meta", "action", "icon", "type", "createIntent", "AssistantAction", "SetCurrentChat", "undefined", "pipe", "runPromise", "disabled", "gen", "invariant", "UpdateChatName", "length", "group", "selectCardinality", "variant", "toSorted", "a", "b", "localeCompare", "forEach", "Obj", "getLabel", "Chat", "typename", "build"]
7
+ }
@@ -3,16 +3,18 @@ import { createRequire } from 'node:module';const require = createRequire(import
3
3
  // src/capabilities/blueprint-definition.ts
4
4
  import { Capabilities, contributes } from "@dxos/app-framework";
5
5
  import { templates } from "@dxos/assistant";
6
- import { DISCORD_BLUEPRINT, LINEAR_BLUEPRINT, RESEARCH_BLUEPRINT, fetchDiscordMessages, research, syncLinearIssues } from "@dxos/assistant-testing";
6
+ import { Agent, AssistantToolkit, Discord, DiscordBlueprint, EntityExtraction, Linear, LinearBlueprint, Research, ResearchBlueprint, SystemToolkit, WebSearchBlueprint } from "@dxos/assistant-toolkit";
7
7
  import { Blueprint } from "@dxos/blueprints";
8
8
 
9
9
  // src/functions/analysis.ts
10
- import { Effect, Schema } from "effect";
10
+ import * as Effect from "effect/Effect";
11
+ import * as Schema from "effect/Schema";
11
12
  import { defineFunction } from "@dxos/functions";
12
13
  import { log } from "@dxos/log";
13
14
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/functions/analysis.ts";
14
15
  var analysis_default = defineFunction({
15
- name: "dxos.org/function/assistant-analysis",
16
+ key: "dxos.org/function/assistant-analysis",
17
+ name: "Assistant analysis",
16
18
  description: "Enter analysis analysis mode.",
17
19
  inputSchema: Schema.Struct({
18
20
  enable: Schema.Boolean.annotations({
@@ -22,29 +24,30 @@ var analysis_default = defineFunction({
22
24
  outputSchema: Schema.Void,
23
25
  handler: Effect.fn(function* ({ context, data: { enable } }) {
24
26
  log.info("analysis mode", {
25
- space: context.space?.id,
26
27
  enable
27
28
  }, {
28
29
  F: __dxlog_file,
29
- L: 18,
30
+ L: 20,
30
31
  S: this,
31
32
  C: (f, a) => f(...a)
32
33
  });
33
34
  })
34
35
  });
35
36
 
36
- // src/functions/list.ts
37
- import { Effect as Effect2, Schema as Schema2 } from "effect";
37
+ // src/functions/object-list.ts
38
+ import * as Effect2 from "effect/Effect";
39
+ import * as Schema2 from "effect/Schema";
38
40
  import { Filter, Obj, Query } from "@dxos/echo";
39
41
  import { DatabaseService, defineFunction as defineFunction2 } from "@dxos/functions";
40
42
  import { trim } from "@dxos/util";
41
- var list_default = defineFunction2({
42
- name: "dxos.org/function/assistant/list",
43
+ var object_list_default = defineFunction2({
44
+ key: "dxos.org/function/assistant/object-list",
45
+ name: "List objects",
43
46
  description: (
44
47
  // TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.
45
48
  trim`
46
49
  Lists the objects of the given type.
47
- Check the list-schemas tool for available types before calling this function.
50
+ Check the get-schemas tool for available types before calling this function.
48
51
  `
49
52
  ),
50
53
  inputSchema: Schema2.Struct({
@@ -78,13 +81,17 @@ var list_default = defineFunction2({
78
81
  })
79
82
  });
80
83
 
81
- // src/functions/load.ts
82
- import { Effect as Effect3, Option, Schema as Schema3, pipe } from "effect";
84
+ // src/functions/object-load.ts
85
+ import * as Effect3 from "effect/Effect";
86
+ import * as Function from "effect/Function";
87
+ import * as Option from "effect/Option";
88
+ import * as Schema3 from "effect/Schema";
83
89
  import { ArtifactId } from "@dxos/assistant";
84
90
  import { Obj as Obj2 } from "@dxos/echo";
85
91
  import { DatabaseService as DatabaseService2, defineFunction as defineFunction3 } from "@dxos/functions";
86
- var load_default = defineFunction3({
87
- name: "dxos.org/function/assistant/load",
92
+ var object_load_default = defineFunction3({
93
+ key: "dxos.org/function/assistant/object-load",
94
+ name: "Load object",
88
95
  description: "Loads the object.",
89
96
  inputSchema: Schema3.Struct({
90
97
  id: ArtifactId.annotations({
@@ -100,7 +107,7 @@ var load_default = defineFunction3({
100
107
  }),
101
108
  handler: Effect3.fn(function* ({ data: { id, typename } }) {
102
109
  const object = yield* DatabaseService2.resolve(ArtifactId.toDXN(id));
103
- return yield* pipe(Option.fromNullable(object), Option.flatMap((object2) => Obj2.getTypename(object2) === typename ? Option.some(object2) : Option.none()), Option.match({
110
+ return yield* Function.pipe(Option.fromNullable(object), Option.flatMap((object2) => Obj2.getTypename(object2) === typename ? Option.some(object2) : Option.none()), Option.match({
104
111
  onNone: () => Effect3.fail("Object not found."),
105
112
  onSome: (object2) => {
106
113
  return Effect3.succeed({
@@ -112,23 +119,22 @@ var load_default = defineFunction3({
112
119
  });
113
120
 
114
121
  // src/capabilities/blueprint-definition.ts
122
+ var deckTools = [
123
+ "open-item"
124
+ ];
115
125
  var functions = [
116
126
  analysis_default,
117
- list_default,
118
- load_default
127
+ object_list_default,
128
+ object_load_default
119
129
  ];
120
130
  var tools = [
121
- "add-to-context",
122
- // TODO(wittjosiah): Factor out to an ECHO blueprint.
123
- "get-schemas",
124
- "add-schema",
125
- "create-record",
126
- // TODO(wittjosiah): Factor out to a generic app-framework blueprint.
127
- "open-item"
131
+ ...AssistantToolkit.tools,
132
+ ...SystemToolkit.tools,
133
+ ...deckTools
128
134
  ];
129
- var BLUEPRINT_KEY = "dxos.org/blueprint/assistant";
135
+ var ASSISTANT_BLUEPRINT_KEY = "dxos.org/blueprint/assistant";
130
136
  var createBlueprint = () => Blueprint.make({
131
- key: BLUEPRINT_KEY,
137
+ key: ASSISTANT_BLUEPRINT_KEY,
132
138
  name: "Assistant",
133
139
  tools: Blueprint.toolDefinitions({
134
140
  functions,
@@ -137,27 +143,36 @@ var createBlueprint = () => Blueprint.make({
137
143
  instructions: templates.system
138
144
  });
139
145
  var blueprint = createBlueprint();
140
- var blueprint_definition_default = () => [
146
+ var blueprint_definition_default = (() => [
141
147
  contributes(Capabilities.Functions, functions),
148
+ contributes(Capabilities.BlueprintDefinition, blueprint),
149
+ // TODO(burdon): Factor out.
142
150
  contributes(Capabilities.Functions, [
143
- research
151
+ Research.create,
152
+ Research.research
144
153
  ]),
145
- contributes(Capabilities.BlueprintDefinition, blueprint),
146
- contributes(Capabilities.BlueprintDefinition, RESEARCH_BLUEPRINT),
147
- // TODO(burdon): Move out of assistant.
154
+ contributes(Capabilities.BlueprintDefinition, ResearchBlueprint),
155
+ // TODO(burdon): Factor out.
148
156
  contributes(Capabilities.Functions, [
149
- syncLinearIssues
157
+ Agent.prompt,
158
+ EntityExtraction.extract
150
159
  ]),
160
+ contributes(Capabilities.BlueprintDefinition, WebSearchBlueprint),
161
+ // TODO(burdon): Factor out.
151
162
  contributes(Capabilities.Functions, [
152
- fetchDiscordMessages
163
+ Discord.fetch
153
164
  ]),
154
- contributes(Capabilities.BlueprintDefinition, LINEAR_BLUEPRINT),
155
- contributes(Capabilities.BlueprintDefinition, DISCORD_BLUEPRINT)
156
- ];
165
+ contributes(Capabilities.BlueprintDefinition, DiscordBlueprint),
166
+ // TODO(burdon): Factor out.
167
+ contributes(Capabilities.Functions, [
168
+ Linear.sync
169
+ ]),
170
+ contributes(Capabilities.BlueprintDefinition, LinearBlueprint)
171
+ ]);
157
172
 
158
173
  export {
159
- BLUEPRINT_KEY,
174
+ ASSISTANT_BLUEPRINT_KEY,
160
175
  createBlueprint,
161
176
  blueprint_definition_default
162
177
  };
163
- //# sourceMappingURL=chunk-QG2KT3AT.mjs.map
178
+ //# sourceMappingURL=chunk-UXTUHH24.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/analysis.ts", "../../../src/functions/object-list.ts", "../../../src/functions/object-load.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type Capability, contributes } from '@dxos/app-framework';\nimport { templates } from '@dxos/assistant';\nimport {\n Agent,\n AssistantToolkit,\n Discord,\n DiscordBlueprint,\n EntityExtraction,\n Linear,\n LinearBlueprint,\n Research,\n ResearchBlueprint,\n SystemToolkit,\n WebSearchBlueprint,\n} from '@dxos/assistant-toolkit';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\n\nimport { analysis, list, load } from '../functions';\n\n// TODO(burdon): Document plugin structure (blueprint, functions, toolkit.)\n// TODO(burdon): Test framework for developing functions. Error handling.\n// TODO(burdon): Function naming pattern (noun-verb); fully-qualified?\n\n// TODO(wittjosiah): Factor out to a generic app-framework blueprint.\nconst deckTools = ['open-item'];\n\nconst functions: FunctionDefinition[] = [analysis, list, load];\nconst tools = [...AssistantToolkit.tools, ...SystemToolkit.tools, ...deckTools];\n\nexport const ASSISTANT_BLUEPRINT_KEY = 'dxos.org/blueprint/assistant';\n\nexport const createBlueprint = (): Blueprint.Blueprint =>\n Blueprint.make({\n key: ASSISTANT_BLUEPRINT_KEY,\n name: 'Assistant',\n tools: Blueprint.toolDefinitions({ functions, tools }),\n instructions: templates.system,\n });\n\nconst blueprint = createBlueprint();\n\nexport default (): Capability<any>[] => [\n contributes(Capabilities.Functions, functions),\n contributes(Capabilities.BlueprintDefinition, blueprint),\n\n // TODO(burdon): Factor out.\n contributes(Capabilities.Functions, [Research.create, Research.research]),\n contributes(Capabilities.BlueprintDefinition, ResearchBlueprint),\n\n // TODO(burdon): Factor out.\n contributes(Capabilities.Functions, [Agent.prompt, EntityExtraction.extract]),\n contributes(Capabilities.BlueprintDefinition, WebSearchBlueprint),\n\n // TODO(burdon): Factor out.\n contributes(Capabilities.Functions, [Discord.fetch]),\n contributes(Capabilities.BlueprintDefinition, DiscordBlueprint),\n\n // TODO(burdon): Factor out.\n contributes(Capabilities.Functions, [Linear.sync]),\n contributes(Capabilities.BlueprintDefinition, LinearBlueprint),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { defineFunction } from '@dxos/functions';\nimport { log } from '@dxos/log';\n\nexport default defineFunction({\n key: 'dxos.org/function/assistant-analysis',\n name: 'Assistant analysis',\n description: 'Enter analysis analysis mode.',\n inputSchema: Schema.Struct({\n enable: Schema.Boolean.annotations({ description: 'Enable or disable analysis mode.' }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ context, data: { enable } }) {\n log.info('analysis mode', { enable });\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\n// TODO(burdon): Move to toolkit (i.e., tool not function).\nexport default defineFunction({\n key: 'dxos.org/function/assistant/object-list',\n name: 'List objects',\n description:\n // TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.\n trim`\n Lists the objects of the given type.\n Check the get-schemas tool for available types before calling this function.\n `,\n inputSchema: Schema.Struct({\n typename: Schema.String.annotations({\n description: 'The typename of the objects to list.',\n }),\n }),\n outputSchema: Schema.Struct({\n results: Schema.Array(\n Schema.Struct({\n dxn: Schema.String.annotations({ description: 'The DXN of the object.' }),\n label: Schema.optional(Schema.String.annotations({ description: 'The label of the object.' })),\n }),\n ),\n }),\n handler: Effect.fn(function* ({ data: { typename } }) {\n // TODO(wittjosiah): Typename query is not working for dynamic schemas.\n const [schema] = yield* DatabaseService.runSchemaQuery({ typename });\n const filter = schema ? Filter.type(schema) : Filter.typename(typename);\n\n const { objects } = yield* DatabaseService.runQuery(Query.select(filter));\n const results = objects.map((object) => ({\n dxn: Obj.getDXN(object).toString(),\n label: Obj.getLabel(object),\n }));\n\n return { results };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\n\n// TODO(burdon): Move to toolkit (i.e., tool not function).\nexport default defineFunction({\n key: 'dxos.org/function/assistant/object-load',\n name: 'Load object',\n description: 'Loads the object.',\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the object.',\n }),\n typename: Schema.String.annotations({\n description: 'The typename of the object.',\n }),\n }),\n outputSchema: Schema.Struct({\n // TODO(wittjosiah): Type.Obj.Any | Type.Relation.Any\n object: Schema.Any,\n }),\n handler: Effect.fn(function* ({ data: { id, typename } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id));\n return yield* Function.pipe(\n Option.fromNullable(object),\n Option.flatMap((object) => (Obj.getTypename(object) === typename ? Option.some(object) : Option.none())),\n Option.match({\n onNone: () => Effect.fail('Object not found.'),\n onSome: (object) => {\n // log.info('object', { object });\n return Effect.succeed({ object });\n },\n }),\n );\n }),\n});\n"],
5
+ "mappings": ";;;AAIA,SAASA,cAA+BC,mBAAmB;AAC3D,SAASC,iBAAiB;AAC1B,SACEC,OACAC,kBACAC,SACAC,kBACAC,kBACAC,QACAC,iBACAC,UACAC,mBACAC,eACAC,0BACK;AACP,SAASC,iBAAiB;;;ACf1B,YAAYC,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,sBAAsB;AAC/B,SAASC,WAAW;;AAEpB,IAAA,mBAAeD,eAAe;EAC5BE,KAAK;EACLC,MAAM;EACNC,aAAa;EACbC,aAAoBC,cAAO;IACzBC,QAAeC,eAAQC,YAAY;MAAEL,aAAa;IAAmC,CAAA;EACvF,CAAA;EACAM,cAAqBC;EACrBC,SAAgBC,UAAG,WAAW,EAAEC,SAASC,MAAM,EAAER,OAAM,EAAE,GAAE;AACzDN,QAAIe,KAAK,iBAAiB;MAAET;IAAO,GAAA;;;;;;EACrC,CAAA;AACF,CAAA;;;ACjBA,YAAYU,aAAY;AACxB,YAAYC,aAAY;AAExB,SAASC,QAAQC,KAAKC,aAAa;AACnC,SAASC,iBAAiBC,kBAAAA,uBAAsB;AAChD,SAASC,YAAY;AAGrB,IAAA,sBAAeC,gBAAe;EAC5BC,KAAK;EACLC,MAAM;EACNC;;IAEEC;;;;;EAIFC,aAAoBC,eAAO;IACzBC,UAAiBC,eAAOC,YAAY;MAClCN,aAAa;IACf,CAAA;EACF,CAAA;EACAO,cAAqBJ,eAAO;IAC1BK,SAAgBC,cACPN,eAAO;MACZO,KAAYL,eAAOC,YAAY;QAAEN,aAAa;MAAyB,CAAA;MACvEW,OAAcC,iBAAgBP,eAAOC,YAAY;QAAEN,aAAa;MAA2B,CAAA,CAAA;IAC7F,CAAA,CAAA;EAEJ,CAAA;EACAa,SAAgBC,WAAG,WAAW,EAAEC,MAAM,EAAEX,SAAQ,EAAE,GAAE;AAElD,UAAM,CAACY,MAAAA,IAAU,OAAOC,gBAAgBC,eAAe;MAAEd;IAAS,CAAA;AAClE,UAAMe,SAASH,SAASI,OAAOC,KAAKL,MAAAA,IAAUI,OAAOhB,SAASA,QAAAA;AAE9D,UAAM,EAAEkB,QAAO,IAAK,OAAOL,gBAAgBM,SAASC,MAAMC,OAAON,MAAAA,CAAAA;AACjE,UAAMX,UAAUc,QAAQI,IAAI,CAACC,YAAY;MACvCjB,KAAKkB,IAAIC,OAAOF,MAAAA,EAAQG,SAAQ;MAChCnB,OAAOiB,IAAIG,SAASJ,MAAAA;IACtB,EAAA;AAEA,WAAO;MAAEnB;IAAQ;EACnB,CAAA;AACF,CAAA;;;AC3CA,YAAYwB,aAAY;AACxB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AACxB,YAAYC,aAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,OAAAA,YAAW;AACpB,SAASC,mBAAAA,kBAAiBC,kBAAAA,uBAAsB;AAGhD,IAAA,sBAAeC,gBAAe;EAC5BC,KAAK;EACLC,MAAM;EACNC,aAAa;EACbC,aAAoBC,eAAO;IACzBC,IAAIC,WAAWC,YAAY;MACzBL,aAAa;IACf,CAAA;IACAM,UAAiBC,eAAOF,YAAY;MAClCL,aAAa;IACf,CAAA;EACF,CAAA;EACAQ,cAAqBN,eAAO;;IAE1BO,QAAeC;EACjB,CAAA;EACAC,SAAgBC,WAAG,WAAW,EAAEC,MAAM,EAAEV,IAAIG,SAAQ,EAAE,GAAE;AACtD,UAAMG,SAAS,OAAOK,iBAAgBC,QAAQX,WAAWY,MAAMb,EAAAA,CAAAA;AAC/D,WAAO,OAAgBc,cACdC,oBAAaT,MAAAA,GACbU,eAAQ,CAACV,YAAYW,KAAIC,YAAYZ,OAAAA,MAAYH,WAAkBgB,YAAKb,OAAAA,IAAiBc,YAAI,CAAA,GAC7FC,aAAM;MACXC,QAAQ,MAAaC,aAAK,mBAAA;MAC1BC,QAAQ,CAAClB,YAAAA;AAEP,eAAcmB,gBAAQ;UAAEnB,QAAAA;QAAO,CAAA;MACjC;IACF,CAAA,CAAA;EAEJ,CAAA;AACF,CAAA;;;AHfA,IAAMoB,YAAY;EAAC;;AAEnB,IAAMC,YAAkC;EAACC;EAAUC;EAAMC;;AACzD,IAAMC,QAAQ;KAAIC,iBAAiBD;KAAUE,cAAcF;KAAUL;;AAE9D,IAAMQ,0BAA0B;AAEhC,IAAMC,kBAAkB,MAC7BC,UAAUC,KAAK;EACbC,KAAKJ;EACLK,MAAM;EACNR,OAAOK,UAAUI,gBAAgB;IAAEb;IAAWI;EAAM,CAAA;EACpDU,cAAcC,UAAUC;AAC1B,CAAA;AAEF,IAAMC,YAAYT,gBAAAA;AAElB,IAAA,gCAAe,MAAyB;EACtCU,YAAYC,aAAaC,WAAWpB,SAAAA;EACpCkB,YAAYC,aAAaE,qBAAqBJ,SAAAA;;EAG9CC,YAAYC,aAAaC,WAAW;IAACE,SAASC;IAAQD,SAASE;GAAS;EACxEN,YAAYC,aAAaE,qBAAqBI,iBAAAA;;EAG9CP,YAAYC,aAAaC,WAAW;IAACM,MAAMC;IAAQC,iBAAiBC;GAAQ;EAC5EX,YAAYC,aAAaE,qBAAqBS,kBAAAA;;EAG9CZ,YAAYC,aAAaC,WAAW;IAACW,QAAQC;GAAM;EACnDd,YAAYC,aAAaE,qBAAqBY,gBAAAA;;EAG9Cf,YAAYC,aAAaC,WAAW;IAACc,OAAOC;GAAK;EACjDjB,YAAYC,aAAaE,qBAAqBe,eAAAA;;",
6
+ "names": ["Capabilities", "contributes", "templates", "Agent", "AssistantToolkit", "Discord", "DiscordBlueprint", "EntityExtraction", "Linear", "LinearBlueprint", "Research", "ResearchBlueprint", "SystemToolkit", "WebSearchBlueprint", "Blueprint", "Effect", "Schema", "defineFunction", "log", "key", "name", "description", "inputSchema", "Struct", "enable", "Boolean", "annotations", "outputSchema", "Void", "handler", "fn", "context", "data", "info", "Effect", "Schema", "Filter", "Obj", "Query", "DatabaseService", "defineFunction", "trim", "defineFunction", "key", "name", "description", "trim", "inputSchema", "Struct", "typename", "String", "annotations", "outputSchema", "results", "Array", "dxn", "label", "optional", "handler", "fn", "data", "schema", "DatabaseService", "runSchemaQuery", "filter", "Filter", "type", "objects", "runQuery", "Query", "select", "map", "object", "Obj", "getDXN", "toString", "getLabel", "Effect", "Function", "Option", "Schema", "ArtifactId", "Obj", "DatabaseService", "defineFunction", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "id", "ArtifactId", "annotations", "typename", "String", "outputSchema", "object", "Any", "handler", "fn", "data", "DatabaseService", "resolve", "toDXN", "pipe", "fromNullable", "flatMap", "Obj", "getTypename", "some", "none", "match", "onNone", "fail", "onSome", "succeed", "deckTools", "functions", "analysis", "list", "load", "tools", "AssistantToolkit", "SystemToolkit", "ASSISTANT_BLUEPRINT_KEY", "createBlueprint", "Blueprint", "make", "key", "name", "toolDefinitions", "instructions", "templates", "system", "blueprint", "contributes", "Capabilities", "Functions", "BlueprintDefinition", "Research", "create", "research", "ResearchBlueprint", "Agent", "prompt", "EntityExtraction", "extract", "WebSearchBlueprint", "Discord", "fetch", "DiscordBlueprint", "Linear", "sync", "LinearBlueprint"]
7
+ }
@@ -0,0 +1,25 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/meta.ts
4
+ import { trim } from "@dxos/util";
5
+ var meta = {
6
+ id: "dxos.org/plugin/assistant",
7
+ name: "Assistant",
8
+ description: trim`
9
+ Intelligent AI assistant that can analyze and interact with objects across your spaces.
10
+ Chat naturally to get insights, search content, and perform actions using AI-powered context awareness.
11
+ `,
12
+ icon: "ph--atom--regular",
13
+ iconHue: "sky",
14
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant",
15
+ tags: [
16
+ "labs"
17
+ ]
18
+ };
19
+ var ASSISTANT_DIALOG = `${meta.id}/assistant/dialog`;
20
+
21
+ export {
22
+ meta,
23
+ ASSISTANT_DIALOG
24
+ };
25
+ //# sourceMappingURL=chunk-WE6KTH72.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/assistant',\n name: 'Assistant',\n description: trim`\n Intelligent AI assistant that can analyze and interact with objects across your spaces.\n Chat naturally to get insights, search content, and perform actions using AI-powered context awareness.\n `,\n icon: 'ph--atom--regular',\n iconHue: 'sky',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',\n tags: ['labs'],\n};\n\nexport const ASSISTANT_DIALOG = `${meta.id}/assistant/dialog`;\n"],
5
+ "mappings": ";;;AAKA,SAASA,YAAY;AAEd,IAAMC,OAAmB;EAC9BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,MAAM;IAAC;;AACT;AAEO,IAAMC,mBAAmB,GAAGT,KAAKC,EAAE;",
6
+ "names": ["trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "tags", "ASSISTANT_DIALOG"]
7
+ }
@@ -1,20 +1,17 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  meta
4
- } from "./chunk-VFY2JG62.mjs";
4
+ } from "./chunk-WE6KTH72.mjs";
5
5
 
6
6
  // src/capabilities/capabilities.ts
7
7
  import { defineCapability } from "@dxos/app-framework";
8
8
  (function(AssistantCapabilities2) {
9
9
  AssistantCapabilities2.State = defineCapability(`${meta.id}/capability/state`);
10
10
  AssistantCapabilities2.MutableState = defineCapability(`${meta.id}/capability/state`);
11
- AssistantCapabilities2.AiServiceLayer = defineCapability(`${meta.id}/capability/ai-service-factory`);
12
- AssistantCapabilities2.AiModelResolver = defineCapability(`${meta.id}/capability/ai-model-resolver`);
13
- AssistantCapabilities2.ComputeRuntime = defineCapability(`${meta.id}/capability/compute-runtime`);
14
11
  })(AssistantCapabilities || (AssistantCapabilities = {}));
15
12
  var AssistantCapabilities;
16
13
 
17
14
  export {
18
15
  AssistantCapabilities
19
16
  };
20
- //# sourceMappingURL=chunk-XD4CDA4R.mjs.map
17
+ //# sourceMappingURL=chunk-YWFWT57N.mjs.map