@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/processor/update-name.ts", "../../../src/processor/presets.ts", "../../../src/processor/processor.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport * as Fiber from 'effect/Fiber';\nimport * as Runtime from 'effect/Runtime';\n\nimport { AiService, DEFAULT_EDGE_MODEL, type ModelName } from '@dxos/ai';\nimport { type AiConversation, AiSession } from '@dxos/assistant';\nimport { throwCause } from '@dxos/effect';\nimport { trim } from '@dxos/util';\n\nimport { type Assistant } from '../types';\n\nimport { type AiChatServices } from './processor';\n\n/**\n * Update the current chat's name.\n */\n// TODO(burdon): Convert this into a plugin tool.\nexport const updateName = async (\n runtime: Runtime.Runtime<AiChatServices>,\n conversation: AiConversation,\n chat: Assistant.Chat,\n model: ModelName = DEFAULT_EDGE_MODEL,\n): Promise<void> => {\n const history = await conversation.getHistory();\n const system = trim`\n It is extremely important that you respond only with the title and nothing else.\n If you cannot do this effectively respond with \"New Chat\".\n `;\n const prompt = 'Suggest a name for this chat';\n\n const fiber = Effect.gen(this, function* () {\n const session = new AiSession();\n return yield* session.run({ system, prompt, history });\n }).pipe(\n Effect.provide(AiService.model(model)),\n Effect.tap((messages) => {\n // TODO(burdon): Parse response (should update via tool).\n const message = messages.find((message) => message.sender.role === 'assistant');\n const title = message?.blocks.find((block) => block._tag === 'text')?.text;\n if (title) {\n chat.name = title;\n }\n }),\n Runtime.runFork(runtime), // Run in the background.\n );\n\n const response = await fiber.pipe(Fiber.join, Effect.runPromiseExit);\n if (!Exit.isSuccess(response)) {\n throwCause(response.cause);\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { type ModelName } from '@dxos/ai';\n\nconst ModelProviders = ['dxos-local', 'dxos-remote', 'lm-studio'] as const;\n\nconst ModelProvider = Schema.Literal(...ModelProviders);\ntype ModelProvider = Schema.Schema.Type<typeof ModelProvider>;\n\nexport type AiServicePreset = {\n id: string;\n provider: ModelProvider;\n model: ModelName;\n label?: string;\n};\n\nconst createModelLabel = (model: ModelName) => {\n const parts = model.split('/');\n return parts[parts.length - 1];\n};\n\n// TODO(burdon): Users should be able to create and edit presets.\nexport const AiServicePresets: AiServicePreset[] = [\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-opus-4-0' as const,\n },\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-sonnet-4-0' as const,\n },\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-3-5-haiku-20241022' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@google/gemma-3-27b' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@meta/llama-3.2-3b-instruct' as const,\n },\n {\n model: 'deepseek-r1:latest' as const,\n provider: 'dxos-local' as const,\n },\n].map(\n ({ model, provider }, i) =>\n ({\n id: `preset-${i}`,\n provider,\n model,\n label: createModelLabel(model),\n }) satisfies AiServicePreset,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, Registry } from '@effect-atom/atom-react';\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport * as Fiber from 'effect/Fiber';\nimport * as Option from 'effect/Option';\nimport * as Runtime from 'effect/Runtime';\n\nimport {\n AiService,\n DEFAULT_EDGE_MODEL,\n type ModelName,\n type ModelRegistry,\n type ToolExecutionService,\n type ToolResolverService,\n} from '@dxos/ai';\nimport {\n type AiConversation,\n type AiConversationRunParams,\n ArtifactDiffResolver,\n GenerationObserver,\n createSystemPrompt,\n} from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { Obj } from '@dxos/echo';\nimport { throwCause } from '@dxos/effect';\nimport {\n type CredentialsService,\n type DatabaseService,\n type FunctionInvocationService,\n type QueueService,\n type TracingService,\n} from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { type ContentBlock, Message } from '@dxos/types';\n\nimport { type Assistant } from '../types';\n\nimport { updateName } from './update-name';\n\nexport type AiChatServices =\n | CredentialsService\n | DatabaseService\n | QueueService\n | FunctionInvocationService\n | AiService.AiService\n | ToolExecutionService\n | ToolResolverService\n | TracingService;\n\nexport type AiChatProcessorOptions = {\n model?: ModelName;\n modelRegistry?: ModelRegistry;\n blueprintRegistry?: Blueprint.Registry;\n observableRegistry?: Registry.Registry;\n extensions?: ToolContextExtensions;\n} & Pick<AiConversationRunParams, 'system'>;\n\nconst defaultOptions: Partial<AiChatProcessorOptions> = {\n model: DEFAULT_EDGE_MODEL,\n};\n\n// TODO(burdon): Retry, timeout?\nexport type AiRequestOptions = {};\n\nexport type AiRequest = {\n message: string;\n options?: AiRequestOptions;\n};\n\n/**\n * Handles interactions with the AI service.\n * Handles streaming responses from the conversation.\n */\nexport class AiChatProcessor {\n private readonly _registry: Registry.Registry;\n\n /** External observer. */\n private readonly _observer: GenerationObserver;\n\n /** Currently active request fiber. */\n private _fiber: Fiber.Fiber<void, any> | undefined;\n\n /** Last request (for retries). */\n private _lastRequest: AiRequest | undefined;\n\n /** Pending messages (incl. the current user request). */\n private readonly _pending = Atom.make<Message.Message[]>([]);\n\n /** Currently streaming message (from the AI service). */\n private readonly _streaming = Atom.make<Option.Option<Message.Message>>(Option.none());\n\n /** Streaming state. */\n public readonly streaming = Atom.make<boolean>((get) => Option.isSome(get(this._streaming)));\n\n /** Active state. */\n public readonly active = Atom.make(false);\n\n /** Array of Messages (incl. the current message being streamed). */\n public readonly messages = Atom.make<Message.Message[]>((get) =>\n Option.match(get(this._streaming), {\n onNone: () => get(this._pending),\n onSome: (streaming) => [...get(this._pending), streaming],\n }),\n );\n\n /** Last error. */\n public readonly error = Atom.make<Option.Option<Error>>(Option.none());\n\n constructor(\n private readonly _conversation: AiConversation,\n // TODO(dmaretskyi): Replace this with effect's ManagedRuntime wrapping this layer.\n private readonly _services: () => Promise<Runtime.Runtime<AiChatServices>>,\n private readonly _options: AiChatProcessorOptions = defaultOptions,\n ) {\n // Initialize registries and defaults before using in other logic.\n this._registry = this._options.observableRegistry ?? Registry.make();\n this._observer = GenerationObserver.make({\n onBlock: this._onBlock,\n onMessage: this._onMessage,\n });\n if (this._options.model && !this._options.system) {\n const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};\n this._options.system = createSystemPrompt(capabilities);\n }\n }\n\n get context() {\n return this._conversation.context;\n }\n\n get conversation() {\n return this._conversation;\n }\n\n get blueprintRegistry() {\n return this._options.blueprintRegistry;\n }\n\n /**\n * Initiates a new request.\n */\n async request(requestParam: AiRequest): Promise<void> {\n if (this._fiber) {\n await this.cancel();\n }\n\n try {\n this._lastRequest = requestParam;\n this._registry.set(this.error, Option.none());\n this._registry.set(this.active, true);\n\n // Create request.\n const request = this._conversation.createRequest({\n system: this._options.system,\n prompt: requestParam.message,\n observer: this._observer,\n });\n\n const runtime = await this._services();\n\n // Create fiber.\n this._fiber = request.pipe(\n Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),\n\n // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.\n Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),\n\n Effect.asVoid,\n Runtime.runFork(runtime), // Runs in the background.\n );\n\n // Execute request.\n const response = await this._fiber.pipe(Fiber.join, Effect.runPromiseExit);\n if (!Exit.isSuccess(response) && !Cause.isInterruptedOnly(response.cause)) {\n throwCause(response.cause);\n }\n\n this._registry.set(this.error, Option.none());\n this._lastRequest = undefined;\n this._fiber = undefined;\n } catch (error) {\n log.error('request failed', { error });\n this._registry.set(this.error, Option.some(new Error('AI service error', { cause: error })));\n } finally {\n this._fiber = undefined;\n this._registry.set(this.active, false);\n }\n }\n\n /**\n * Cancels the current request.\n */\n async cancel(): Promise<void> {\n await Effect.runPromise(\n Effect.gen(this, function* () {\n if (this._fiber) {\n yield* this._fiber.pipe(Fiber.interrupt);\n }\n }),\n );\n\n this._fiber = undefined;\n this._registry.set(this.active, false);\n }\n\n /**\n * Retry last failed request.\n */\n async retry(): Promise<void> {\n if (this._lastRequest) {\n return this.request(this._lastRequest);\n }\n }\n\n /**\n * Update the current chat's name.\n */\n async updateName(chat: Assistant.Chat): Promise<void> {\n const runtime = await this._services();\n await updateName(runtime, this._conversation, chat, this._options.model);\n }\n\n // TODO(burdon): Fix/factor out.\n private _artifactDiffResolver: ArtifactDiffResolver.Service = {\n resolve: async (_artifacts) => {\n const versions = new Map();\n // await Promise.all(\n // artifacts.map(async (artifact) => {\n // const {\n // objects: [object],\n // } = await space.db.query(Filter.ids(artifact.id)).run();\n // if (!object) {\n // return;\n // }\n\n // versions.set(artifact.id, {\n // version: getVersion(object),\n // diff: `Current state: ${JSON.stringify(object)}`,\n // });\n // }),\n // );\n\n return versions;\n },\n };\n\n private _onMessage = Effect.fn(\n function* (this: AiChatProcessor, message: Message.Message) {\n this._registry.set(this._streaming, Option.none());\n this._registry.update(this._pending, (pending) => [...pending, message]);\n }.bind(this),\n );\n\n private _onBlock = Effect.fn(\n function* (this: AiChatProcessor, block: ContentBlock.Any) {\n this._registry.update(this._streaming, (streaming) => {\n const blocks = streaming.pipe(\n Option.map((streaming) => streaming.blocks.filter((b: ContentBlock.Any) => !b.pending)),\n Option.getOrElse(() => []),\n );\n\n return Option.some(\n Obj.make(Message.Message, {\n created: new Date().toISOString(),\n sender: { role: 'assistant' },\n blocks: [...blocks, block],\n }),\n );\n });\n }.bind(this),\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Exit", "Fiber", "Runtime", "AiService", "DEFAULT_EDGE_MODEL", "AiSession", "throwCause", "trim", "updateName", "runtime", "conversation", "chat", "model", "DEFAULT_EDGE_MODEL", "history", "getHistory", "system", "trim", "prompt", "fiber", "gen", "session", "AiSession", "run", "pipe", "provide", "AiService", "tap", "messages", "message", "find", "sender", "role", "title", "blocks", "block", "_tag", "text", "name", "runFork", "response", "join", "runPromiseExit", "isSuccess", "throwCause", "cause", "Schema", "ModelProviders", "ModelProvider", "Literal", "createModelLabel", "model", "parts", "split", "length", "AiServicePresets", "provider", "map", "i", "id", "label", "Atom", "Registry", "Cause", "Effect", "Exit", "Fiber", "Option", "Runtime", "AiService", "DEFAULT_EDGE_MODEL", "ArtifactDiffResolver", "GenerationObserver", "createSystemPrompt", "Obj", "throwCause", "log", "Message", "defaultOptions", "model", "DEFAULT_EDGE_MODEL", "AiChatProcessor", "_registry", "_observer", "_fiber", "_lastRequest", "_pending", "Atom", "make", "_streaming", "none", "streaming", "get", "isSome", "active", "messages", "match", "onNone", "onSome", "error", "_conversation", "_services", "_options", "observableRegistry", "Registry", "GenerationObserver", "onBlock", "_onBlock", "onMessage", "_onMessage", "system", "capabilities", "modelRegistry", "getCapabilities", "createSystemPrompt", "context", "conversation", "blueprintRegistry", "request", "requestParam", "cancel", "set", "createRequest", "prompt", "message", "observer", "runtime", "pipe", "provide", "AiService", "provideService", "ArtifactDiffResolver", "_artifactDiffResolver", "asVoid", "runFork", "response", "join", "runPromiseExit", "isSuccess", "isInterruptedOnly", "cause", "throwCause", "undefined", "log", "some", "Error", "runPromise", "gen", "interrupt", "retry", "updateName", "chat", "resolve", "_artifacts", "versions", "Map", "fn", "update", "pending", "bind", "block", "blocks", "map", "filter", "b", "getOrElse", "Obj", "Message", "created", "Date", "toISOString", "sender", "role"]
7
+ }
@@ -1,7 +1,7 @@
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
  import {
6
6
  __export
7
7
  } from "./chunk-HSLMI22Q.mjs";
@@ -11,12 +11,13 @@ var Assistant_exports = {};
11
11
  __export(Assistant_exports, {
12
12
  Chat: () => Chat,
13
13
  CompanionTo: () => CompanionTo,
14
- Settings: () => Settings
14
+ Settings: () => Settings,
15
+ makeChat: () => makeChat
15
16
  });
16
- import { Schema } from "effect";
17
- import { Queue } from "@dxos/client/echo";
18
- import { Type } from "@dxos/echo";
19
- import { LabelAnnotation } from "@dxos/echo-schema";
17
+ import * as Schema from "effect/Schema";
18
+ import { Obj, Ref, Type } from "@dxos/echo";
19
+ import { FormAnnotation, LabelAnnotation } from "@dxos/echo/internal";
20
+ import { Queue } from "@dxos/echo-db";
20
21
 
21
22
  // src/types/defs.ts
22
23
  var LLM_PROVIDERS = [
@@ -27,17 +28,20 @@ var LLM_PROVIDERS = [
27
28
 
28
29
  // src/types/Assistant.ts
29
30
  var Chat = Schema.Struct({
30
- id: Type.ObjectId,
31
- name: Schema.optional(Schema.String),
32
- queue: Type.Ref(Queue),
31
+ name: Schema.String.pipe(Schema.optional),
32
+ queue: Type.Ref(Queue).pipe(FormAnnotation.set(false)),
33
33
  // TODO(dmaretskyi): Eventually this and the message queue will be the same.
34
- traceQueue: Schema.optional(Type.Ref(Queue))
34
+ traceQueue: Type.Ref(Queue).pipe(FormAnnotation.set(false), Schema.optional)
35
35
  }).pipe(Type.Obj({
36
36
  typename: "dxos.org/type/assistant/Chat",
37
37
  version: "0.2.0"
38
38
  }), LabelAnnotation.set([
39
39
  "name"
40
40
  ]));
41
+ var makeChat = ({ name, queue }) => Obj.make(Chat, {
42
+ name,
43
+ queue: Ref.fromDXN(queue.dxn)
44
+ });
41
45
  var CompanionTo = Schema.Struct({
42
46
  id: Type.ObjectId
43
47
  }).pipe(Type.Relation({
@@ -60,19 +64,21 @@ __export(AssistantAction_exports, {
60
64
  BlueprintForm: () => BlueprintForm,
61
65
  CreateBlueprint: () => CreateBlueprint,
62
66
  CreateChat: () => CreateChat,
67
+ CreatePrompt: () => CreatePrompt,
63
68
  CreateSequence: () => CreateSequence,
64
- OnSpaceCreated: () => OnSpaceCreated,
65
- SetCurrentChat: () => SetCurrentChat
69
+ SetCurrentChat: () => SetCurrentChat,
70
+ UpdateChatName: () => UpdateChatName,
71
+ onCreateSpace: () => onCreateSpace
66
72
  });
67
- import { Schema as Schema2 } from "effect";
68
- import { Blueprint } from "@dxos/blueprints";
73
+ import * as Schema2 from "effect/Schema";
74
+ import { Blueprint, Prompt } from "@dxos/blueprints";
69
75
  import { EchoObjectSchema, SpaceSchema } from "@dxos/client/echo";
70
76
  import { Sequence } from "@dxos/conductor";
71
- import { DataType } from "@dxos/schema";
72
- var OnSpaceCreated = class extends Schema2.TaggedClass()(`${meta.id}/on-space-created`, {
77
+ import { Collection } from "@dxos/schema";
78
+ var onCreateSpace = class extends Schema2.TaggedClass()(`${meta.id}/on-space-created`, {
73
79
  input: Schema2.Struct({
74
80
  space: SpaceSchema,
75
- rootCollection: DataType.Collection
81
+ rootCollection: Collection.Collection
76
82
  }),
77
83
  output: Schema2.Void
78
84
  }) {
@@ -87,6 +93,13 @@ var CreateChat = class extends Schema2.TaggedClass()(`${meta.id}/action/create-c
87
93
  })
88
94
  }) {
89
95
  };
96
+ var UpdateChatName = class extends Schema2.TaggedClass()(`${meta.id}/action/update-name`, {
97
+ input: Schema2.Struct({
98
+ chat: Chat
99
+ }),
100
+ output: Schema2.Void
101
+ }) {
102
+ };
90
103
  var BlueprintForm = Schema2.Struct({
91
104
  key: Schema2.String,
92
105
  name: Schema2.String,
@@ -99,6 +112,15 @@ var CreateBlueprint = class extends Schema2.TaggedClass()(`${meta.id}/action/cre
99
112
  })
100
113
  }) {
101
114
  };
115
+ var CreatePrompt = class extends Schema2.TaggedClass()(`${meta.id}/action/create-prompt`, {
116
+ input: Schema2.Struct({
117
+ name: Schema2.optional(Schema2.String)
118
+ }),
119
+ output: Schema2.Struct({
120
+ object: Prompt.Prompt
121
+ })
122
+ }) {
123
+ };
102
124
  var CreateSequence = class extends Schema2.TaggedClass()(`${meta.id}/action/create-sequence`, {
103
125
  input: Schema2.Struct({
104
126
  name: Schema2.optional(Schema2.String)
@@ -111,18 +133,18 @@ var CreateSequence = class extends Schema2.TaggedClass()(`${meta.id}/action/crea
111
133
  var SetCurrentChat = class extends Schema2.TaggedClass()(`${meta.id}/action/set-current-chat`, {
112
134
  input: Schema2.Struct({
113
135
  companionTo: EchoObjectSchema,
114
- chat: Chat
136
+ chat: Chat.pipe(Schema2.optional)
115
137
  }),
116
138
  output: Schema2.Void
117
139
  }) {
118
140
  };
119
141
 
120
142
  // src/types/service.ts
121
- import { Schema as Schema3 } from "effect";
143
+ import * as Schema3 from "effect/Schema";
122
144
  import { ComputeGraph } from "@dxos/conductor";
123
145
  import { Type as Type2 } from "@dxos/echo";
124
- import { TypedObject } from "@dxos/echo-schema";
125
- import { FunctionType } from "@dxos/functions";
146
+ import { TypedObject } from "@dxos/echo/internal";
147
+ import { Function } from "@dxos/functions";
126
148
  var ApiAuthorizationKey = Schema3.Struct({
127
149
  type: Schema3.Literal("api-key"),
128
150
  key: Schema3.String,
@@ -143,7 +165,7 @@ var ApiAuthorizationOauth = Schema3.Struct({
143
165
  var ApiAuthorization = Schema3.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
144
166
  var ServiceInterfaceFunction = Schema3.Struct({
145
167
  kind: Schema3.Literal("function"),
146
- fn: Type2.Ref(FunctionType)
168
+ fn: Type2.Ref(Function.Function)
147
169
  });
148
170
  var ServiceInterfaceWorkflow = Schema3.Struct({
149
171
  kind: Schema3.Literal("workflow"),
@@ -164,7 +186,12 @@ var ServiceInterfaceApi = Schema3.Struct({
164
186
  */
165
187
  authorization: Schema3.optional(ApiAuthorization)
166
188
  });
167
- var ServiceInterface = Schema3.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
189
+ var ServiceInterface = Schema3.Union(
190
+ // Service types.
191
+ ServiceInterfaceFunction,
192
+ ServiceInterfaceWorkflow,
193
+ ServiceInterfaceApi
194
+ );
168
195
  var ServiceType = class extends TypedObject({
169
196
  typename: "dxos.org/type/ServiceType",
170
197
  version: "0.1.0"
@@ -200,4 +227,4 @@ export {
200
227
  ServiceType,
201
228
  categoryIcons
202
229
  };
203
- //# sourceMappingURL=chunk-7YOGZI66.mjs.map
230
+ //# sourceMappingURL=chunk-AB74FOA2.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/Assistant.ts", "../../../src/types/defs.ts", "../../../src/types/AssistantAction.ts", "../../../src/types/service.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Obj, Ref, Type } from '@dxos/echo';\nimport { FormAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { Queue } from '@dxos/echo-db';\n\nimport { LLM_PROVIDERS } from './defs';\n\n/**\n * AI chat.\n */\nexport const Chat = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n queue: Type.Ref(Queue).pipe(FormAnnotation.set(false)),\n // TODO(dmaretskyi): Eventually this and the message queue will be the same.\n traceQueue: Type.Ref(Queue).pipe(FormAnnotation.set(false), Schema.optional),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/assistant/Chat',\n version: '0.2.0',\n }),\n LabelAnnotation.set(['name']),\n);\n\nexport interface Chat extends Schema.Schema.Type<typeof Chat> {}\n\nexport const makeChat = ({ name, queue }: { name?: string; queue: Queue }) =>\n Obj.make(Chat, { name, queue: Ref.fromDXN(queue.dxn) });\n\n/**\n * Relation between a Chat and companion objects (e.g., artifacts).\n */\nexport const CompanionTo = Schema.Struct({\n id: Type.ObjectId,\n}).pipe(\n Type.Relation({\n typename: 'dxos.org/relation/assistant/CompanionTo',\n version: '0.1.0',\n source: Chat,\n target: Type.Expando,\n }),\n);\n\nexport interface CompanionTo extends Schema.Schema.Type<typeof CompanionTo> {}\n\n/**\n * Plugin settings.\n */\nexport const Settings = Schema.mutable(\n Schema.Struct({\n llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),\n edgeModel: Schema.optional(Schema.String),\n ollamaModel: Schema.optional(Schema.String),\n lmstudioModel: Schema.optional(Schema.String),\n customPrompts: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport type Settings = Schema.Schema.Type<typeof Settings>;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const LLM_PROVIDERS = ['edge', 'ollama', 'lmstudio'] as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Blueprint, Prompt } from '@dxos/blueprints';\nimport { EchoObjectSchema, SpaceSchema } from '@dxos/client/echo';\nimport { Sequence } from '@dxos/conductor';\nimport { Collection } from '@dxos/schema';\n\nimport { meta } from '../meta';\n\nimport { Chat } from './Assistant';\n\n// TODO(burdon): Name?\nexport class onCreateSpace extends Schema.TaggedClass<onCreateSpace>()(`${meta.id}/on-space-created`, {\n input: Schema.Struct({\n space: SpaceSchema,\n rootCollection: Collection.Collection,\n }),\n output: Schema.Void,\n}) {}\n\nexport class CreateChat extends Schema.TaggedClass<CreateChat>()(`${meta.id}/action/create-chat`, {\n input: Schema.Struct({\n space: SpaceSchema,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Chat,\n }),\n}) {}\n\nexport class UpdateChatName extends Schema.TaggedClass<UpdateChatName>()(`${meta.id}/action/update-name`, {\n input: Schema.Struct({\n chat: Chat,\n }),\n output: Schema.Void,\n}) {}\n\nexport const BlueprintForm = Schema.Struct({\n key: Schema.String,\n name: Schema.String,\n description: Schema.optional(Schema.String),\n});\n\nexport class CreateBlueprint extends Schema.TaggedClass<CreateBlueprint>()(`${meta.id}/action/create-blueprint`, {\n input: BlueprintForm,\n output: Schema.Struct({\n object: Blueprint.Blueprint,\n }),\n}) {}\n\nexport class CreatePrompt extends Schema.TaggedClass<CreatePrompt>()(`${meta.id}/action/create-prompt`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Prompt.Prompt,\n }),\n}) {}\n\nexport class CreateSequence extends Schema.TaggedClass<CreateSequence>()(`${meta.id}/action/create-sequence`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Sequence,\n }),\n}) {}\n\nexport class SetCurrentChat extends Schema.TaggedClass<SetCurrentChat>()(`${meta.id}/action/set-current-chat`, {\n input: Schema.Struct({\n companionTo: EchoObjectSchema,\n chat: Chat.pipe(Schema.optional),\n }),\n output: Schema.Void,\n}) {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { TypedObject } from '@dxos/echo/internal';\nimport { Function } from '@dxos/functions';\n\n// TODO(burdon): Factor out and reconcile with https://github.com/dxos/dxos/blob/main/packages/plugins/plugin-token-manager/src/defs/presets.ts#L7\n\nconst ApiAuthorizationKey = Schema.Struct({\n type: Schema.Literal('api-key'),\n key: Schema.String,\n placement: Schema.Union(\n Schema.Struct({\n type: Schema.Literal('authorization-header'),\n }),\n Schema.Struct({\n type: Schema.Literal('query'),\n name: Schema.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = Schema.Struct({\n type: Schema.Literal('oauth'),\n clientId: Schema.String,\n clientSecret: Schema.String,\n tokenUrl: Schema.String,\n grantType: Schema.String,\n});\n\nexport const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = Schema.Struct({\n kind: Schema.Literal('function'),\n fn: Type.Ref(Function.Function),\n});\n\nconst ServiceInterfaceWorkflow = Schema.Struct({\n kind: Schema.Literal('workflow'),\n workflow: Type.Ref(ComputeGraph),\n});\n\nconst ServiceInterfaceApi = Schema.Struct({\n kind: Schema.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: Schema.optional(Schema.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: Schema.optional(Schema.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: Schema.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = Schema.Union(\n // Service types.\n ServiceInterfaceFunction,\n ServiceInterfaceWorkflow,\n ServiceInterfaceApi,\n);\n\nexport type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;\n\nexport class ServiceType extends TypedObject({\n typename: 'dxos.org/type/ServiceType',\n version: '0.1.0',\n})({\n serviceId: Schema.String,\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n category: Schema.optional(Schema.String),\n enabled: Schema.optional(Schema.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: Schema.optional(Schema.Array(ServiceInterface)),\n}) {}\n\n//\n// Service Registry\n//\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "Obj", "Ref", "Type", "FormAnnotation", "LabelAnnotation", "Queue", "LLM_PROVIDERS", "Chat", "Struct", "name", "String", "pipe", "optional", "queue", "Type", "Ref", "Queue", "FormAnnotation", "set", "traceQueue", "Obj", "typename", "version", "LabelAnnotation", "makeChat", "make", "fromDXN", "dxn", "CompanionTo", "id", "ObjectId", "Relation", "source", "target", "Expando", "Settings", "mutable", "llmProvider", "Literal", "LLM_PROVIDERS", "edgeModel", "ollamaModel", "lmstudioModel", "customPrompts", "Boolean", "Schema", "Blueprint", "Prompt", "EchoObjectSchema", "SpaceSchema", "Sequence", "Collection", "onCreateSpace", "TaggedClass", "meta", "id", "input", "Struct", "space", "SpaceSchema", "rootCollection", "Collection", "output", "Void", "CreateChat", "name", "optional", "String", "object", "Chat", "UpdateChatName", "chat", "BlueprintForm", "key", "description", "CreateBlueprint", "Blueprint", "CreatePrompt", "Prompt", "CreateSequence", "Sequence", "SetCurrentChat", "companionTo", "EchoObjectSchema", "pipe", "Schema", "ComputeGraph", "Type", "TypedObject", "Function", "ApiAuthorizationKey", "Struct", "type", "Literal", "key", "String", "placement", "Union", "name", "ApiAuthorizationOauth", "clientId", "clientSecret", "tokenUrl", "grantType", "ApiAuthorization", "ServiceInterfaceFunction", "kind", "fn", "Type", "Ref", "Function", "ServiceInterfaceWorkflow", "workflow", "ComputeGraph", "ServiceInterfaceApi", "schemaUrl", "optional", "schema", "Any", "authorization", "ServiceInterface", "ServiceType", "TypedObject", "typename", "version", "serviceId", "description", "category", "enabled", "Boolean", "interfaces", "Array", "categoryIcons", "finance", "health", "geolocation", "education", "entertainment", "shopping", "travel", "utilities", "weather"]
7
+ }
@@ -0,0 +1,336 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-WE6KTH72.mjs";
5
+
6
+ // src/components/TemplateEditor/TemplateEditor.tsx
7
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
8
+ import { defaultHighlightStyle, syntaxHighlighting } from "@codemirror/language";
9
+ import React from "react";
10
+ import { createDocAccessor } from "@dxos/react-client/echo";
11
+ import { useThemeContext, useTranslation } from "@dxos/react-ui";
12
+ import { createBasicExtensions, createDataExtensions, createMarkdownExtensions, createThemeExtensions, decorateMarkdown, useTextEditor } from "@dxos/react-ui-editor";
13
+ import { mx as mx2 } from "@dxos/react-ui-theme";
14
+ import { isNonNullable } from "@dxos/util";
15
+
16
+ // src/components/TemplateEditor/extensions/handlebars-extension.ts
17
+ import { autocompletion, completionKeymap } from "@codemirror/autocomplete";
18
+ import { RangeSetBuilder } from "@codemirror/state";
19
+ import { Decoration, ViewPlugin, WidgetType, keymap } from "@codemirror/view";
20
+ import { Domino } from "@dxos/react-ui";
21
+ import { mx } from "@dxos/react-ui-theme";
22
+ var handlebars = (_ = {}) => {
23
+ return [
24
+ handlebarsHighlightPlugin,
25
+ autocompletion({
26
+ activateOnTyping: true,
27
+ aboveCursor: true,
28
+ closeOnBlur: true,
29
+ override: [
30
+ handlebarsCompletions
31
+ ]
32
+ }),
33
+ keymap.of(completionKeymap)
34
+ ];
35
+ };
36
+ var regex = {
37
+ // {{! comment }}
38
+ comment: /\{\{!\s*[^}]*\}\}/g,
39
+ // {{var}}
40
+ brackets: /\{\{[^}]*\}\}/g,
41
+ // {{#command}} {{/command}}
42
+ command: /\{\{[#/]([^}]+)\}\}/g,
43
+ // {{var}}
44
+ var: /\{\{(?!\s*!)(\w[^}]*)\}\}/g,
45
+ // @dxn:queue:data:xxx
46
+ dxn: /@?dxn:[\w@:]+/g,
47
+ // dxos.org/type/xxx
48
+ url: /[\w.-]+\.[\w.-]+\/[\w/]+/g
49
+ };
50
+ var tagPadding = "mli-0.5 pli-1 rounded-sm";
51
+ var handlebarsHighlightPlugin = ViewPlugin.fromClass(class {
52
+ decorations;
53
+ constructor(view) {
54
+ this.decorations = this.buildDecorations(view);
55
+ }
56
+ update(update) {
57
+ if (update.docChanged || update.viewportChanged || update.selectionSet) {
58
+ this.decorations = this.buildDecorations(update.view);
59
+ }
60
+ }
61
+ // NOTE: Decorations may clash with other extensions (e.g., markdown).
62
+ buildDecorations(view) {
63
+ const selection = view.state.selection.main;
64
+ const decorations = [];
65
+ for (const { from, to } of view.visibleRanges) {
66
+ const text = view.state.doc.sliceString(from, to);
67
+ {
68
+ let match;
69
+ while ((match = regex.dxn.exec(text)) !== null) {
70
+ const start = from + match.index;
71
+ const end = start + match[0].length;
72
+ const overlaps = selection.to > start && selection.from <= end;
73
+ if (!overlaps) {
74
+ decorations.push({
75
+ from: start,
76
+ to: end,
77
+ decoration: Decoration.widget({
78
+ widget: new DXNWidget(match[0])
79
+ })
80
+ });
81
+ }
82
+ }
83
+ }
84
+ {
85
+ let match;
86
+ while ((match = regex.url.exec(text)) !== null) {
87
+ const start = from + match.index;
88
+ const end = start + match[0].length;
89
+ decorations.push({
90
+ from: start,
91
+ to: end,
92
+ decoration: Decoration.mark({
93
+ class: mx("dx-tag--blue", tagPadding)
94
+ })
95
+ });
96
+ }
97
+ }
98
+ {
99
+ let match;
100
+ while ((match = regex.brackets.exec(text)) !== null) {
101
+ const start = from + match.index;
102
+ const end = start + match[0].length;
103
+ decorations.push({
104
+ from: start,
105
+ to: end,
106
+ decoration: Decoration.mark({
107
+ class: "text-subdued"
108
+ })
109
+ });
110
+ }
111
+ }
112
+ {
113
+ let match;
114
+ while ((match = regex.command.exec(text)) !== null) {
115
+ const start = from + match.index + 2;
116
+ let end = start + match[0].length - 4;
117
+ const text2 = view.state.doc.sliceString(start, end);
118
+ const parts = text2.split(/\s+/);
119
+ if (parts.length > 1) {
120
+ const idx = start + parts[0].length;
121
+ decorations.push({
122
+ from: idx,
123
+ to: end,
124
+ decoration: Decoration.mark({
125
+ class: "text-greenText"
126
+ })
127
+ });
128
+ end = idx;
129
+ }
130
+ decorations.push({
131
+ from: start,
132
+ to: end,
133
+ decoration: Decoration.mark({
134
+ class: "text-blueText"
135
+ })
136
+ });
137
+ }
138
+ }
139
+ {
140
+ let match;
141
+ while ((match = regex.var.exec(text)) !== null) {
142
+ const start = from + match.index + 2;
143
+ const end = start + match[0].length - 4;
144
+ decorations.push({
145
+ from: start,
146
+ to: end,
147
+ decoration: Decoration.mark({
148
+ class: "text-greenText"
149
+ })
150
+ });
151
+ }
152
+ }
153
+ }
154
+ decorations.sort((a, b) => a.from - b.from || a.to - b.to);
155
+ const builder = new RangeSetBuilder();
156
+ for (const { from, to, decoration } of decorations) {
157
+ builder.add(from, to, decoration);
158
+ }
159
+ return builder.finish();
160
+ }
161
+ }, {
162
+ decorations: (v) => v.decorations
163
+ });
164
+ var DXNWidget = class extends WidgetType {
165
+ _identifier;
166
+ constructor(_identifier) {
167
+ super(), this._identifier = _identifier;
168
+ }
169
+ ignoreEvent() {
170
+ return false;
171
+ }
172
+ eq(other) {
173
+ return this._identifier === other._identifier;
174
+ }
175
+ toDOM() {
176
+ const text = this._identifier.split(":").map((part) => {
177
+ const len = 16;
178
+ const plen = 4;
179
+ if (part.length > len) {
180
+ return `[${part.slice(0, plen)}\u2026${part.slice(-plen)}]`;
181
+ }
182
+ return part;
183
+ }).join(":");
184
+ return Domino.of("span").classNames([
185
+ "font-mono dx-tag--blue",
186
+ tagPadding
187
+ ]).text(text).build();
188
+ }
189
+ };
190
+ var variables = [
191
+ "this"
192
+ ];
193
+ var commands = [
194
+ "this",
195
+ "each",
196
+ "if",
197
+ "unless",
198
+ "with"
199
+ ];
200
+ function handlebarsCompletions(context) {
201
+ const match = context.matchBefore(/\{\{[^}]*/);
202
+ if (!match || match.from === match.to) {
203
+ return null;
204
+ }
205
+ let type = "variable";
206
+ let text = match.text.slice(2);
207
+ let from = match.from + 2;
208
+ let matches = [];
209
+ if (text.startsWith("#") || text.startsWith("/")) {
210
+ const idx = text.lastIndexOf(" ");
211
+ if (idx !== -1) {
212
+ type = "variable";
213
+ matches = variables;
214
+ text = text.slice(idx + 1);
215
+ from += idx + 1;
216
+ } else {
217
+ type = "command";
218
+ text = text.slice(1);
219
+ matches = commands;
220
+ from += 1;
221
+ }
222
+ } else {
223
+ type = "variable";
224
+ matches = variables;
225
+ }
226
+ const options = matches.filter((name) => name.startsWith(text)).map((name) => ({
227
+ type,
228
+ label: name
229
+ }));
230
+ return {
231
+ from,
232
+ options
233
+ };
234
+ }
235
+
236
+ // src/components/TemplateEditor/extensions/xml-extension.ts
237
+ import { syntaxTree } from "@codemirror/language";
238
+ import { RangeSetBuilder as RangeSetBuilder2 } from "@codemirror/state";
239
+ import { Decoration as Decoration2, ViewPlugin as ViewPlugin2 } from "@codemirror/view";
240
+ var xmlDecorator = (_ = {}) => {
241
+ return [
242
+ xmlDecoratorPlugin
243
+ ];
244
+ };
245
+ var xmlDecoratorPlugin = ViewPlugin2.fromClass(class {
246
+ decorations;
247
+ constructor(view) {
248
+ this.decorations = this.buildDecorations(view);
249
+ }
250
+ update(update) {
251
+ if (update.docChanged || update.viewportChanged) {
252
+ this.decorations = this.buildDecorations(update.view);
253
+ }
254
+ }
255
+ buildDecorations(view) {
256
+ const builder = new RangeSetBuilder2();
257
+ for (const { from, to } of view.visibleRanges) {
258
+ syntaxTree(view.state).iterate({
259
+ from,
260
+ to,
261
+ enter: (node) => {
262
+ if (node.name === "HTMLTag" || node.name === "OpenTag" || node.name === "CloseTag" || node.name === "SelfClosingTag" || node.name === "Element") {
263
+ builder.add(node.from, node.to, Decoration2.mark({
264
+ class: "font-mono text-subdued"
265
+ }));
266
+ }
267
+ }
268
+ });
269
+ }
270
+ return builder.finish();
271
+ }
272
+ }, {
273
+ decorations: (v) => v.decorations
274
+ });
275
+
276
+ // src/components/TemplateEditor/TemplateEditor.tsx
277
+ var TemplateEditor = ({ id, classNames, template, lineNumbers = true }) => {
278
+ var _effect = _useSignals();
279
+ try {
280
+ const { t } = useTranslation(meta.id);
281
+ const { themeMode } = useThemeContext();
282
+ const { parentRef } = useTextEditor(() => {
283
+ const text = template.source?.target;
284
+ if (!text) {
285
+ return {};
286
+ }
287
+ return {
288
+ initialValue: text.content ?? "",
289
+ extensions: [
290
+ createDataExtensions({
291
+ id,
292
+ text: createDocAccessor(text, [
293
+ "content"
294
+ ])
295
+ }),
296
+ createBasicExtensions({
297
+ bracketMatching: false,
298
+ lineNumbers,
299
+ lineWrapping: true,
300
+ placeholder: t("template placeholder")
301
+ }),
302
+ createThemeExtensions({
303
+ themeMode,
304
+ slots: {
305
+ content: {
306
+ className: "!pie-4"
307
+ }
308
+ }
309
+ }),
310
+ createMarkdownExtensions(),
311
+ decorateMarkdown(),
312
+ handlebars(),
313
+ // xml(),
314
+ // NOTE: Since we're using markdown only HTML nodes are parsed.
315
+ xmlDecorator(),
316
+ syntaxHighlighting(defaultHighlightStyle)
317
+ ].filter(isNonNullable)
318
+ };
319
+ }, [
320
+ themeMode,
321
+ template.source?.target,
322
+ lineNumbers
323
+ ]);
324
+ return /* @__PURE__ */ React.createElement("div", {
325
+ ref: parentRef,
326
+ className: mx2("bs-full overflow-hidden", classNames)
327
+ });
328
+ } finally {
329
+ _effect.f();
330
+ }
331
+ };
332
+
333
+ export {
334
+ TemplateEditor
335
+ };
336
+ //# sourceMappingURL=chunk-KJGD4EBJ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/TemplateEditor/TemplateEditor.tsx", "../../../src/components/TemplateEditor/extensions/handlebars-extension.ts", "../../../src/components/TemplateEditor/extensions/xml-extension.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport React from 'react';\n\nimport { type Template } from '@dxos/blueprints';\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nimport { handlebars, xmlDecorator } from './extensions';\n\nexport type TemplateEditorProps = ThemedClassName<{\n id: string;\n template: Template.Template;\n lineNumbers?: boolean;\n}>;\n\nexport const TemplateEditor = ({ id, classNames, template, lineNumbers = true }: TemplateEditorProps) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor(() => {\n const text = template.source?.target;\n if (!text) {\n return {};\n }\n\n return {\n initialValue: text.content ?? '',\n extensions: [\n createDataExtensions({\n id,\n text: createDocAccessor(text, ['content']),\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineNumbers,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({ themeMode, slots: { content: { className: '!pie-4' } } }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n handlebars(),\n // xml(),\n // NOTE: Since we're using markdown only HTML nodes are parsed.\n xmlDecorator(),\n syntaxHighlighting(defaultHighlightStyle),\n ].filter(isNonNullable),\n };\n }, [themeMode, template.source?.target, lineNumbers]);\n\n return <div ref={parentRef} className={mx('bs-full overflow-hidden', classNames)} />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n type CompletionContext,\n type CompletionResult,\n autocompletion,\n completionKeymap,\n} from '@codemirror/autocomplete';\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n type EditorView,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n keymap,\n} from '@codemirror/view';\n\nimport { Domino } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type HandlebarsOptions = {};\n\n/**\n * Simple Handlebars plugin for CodeMirror.\n * Supports:\n * - Comments: {{! comment }}\n * - Commands: {{#command}} {{/command}}\n * - Variables: {{var}}\n * - Commands with variables: {{#each items}} {{/each}}\n */\nexport const handlebars = (_: HandlebarsOptions = {}): Extension => {\n return [\n handlebarsHighlightPlugin,\n autocompletion({\n activateOnTyping: true,\n aboveCursor: true,\n closeOnBlur: true,\n override: [handlebarsCompletions],\n }),\n keymap.of(completionKeymap),\n ];\n};\n\nconst regex = {\n // {{! comment }}\n comment: /\\{\\{!\\s*[^}]*\\}\\}/g,\n\n // {{var}}\n brackets: /\\{\\{[^}]*\\}\\}/g,\n\n // {{#command}} {{/command}}\n command: /\\{\\{[#/]([^}]+)\\}\\}/g,\n\n // {{var}}\n var: /\\{\\{(?!\\s*!)(\\w[^}]*)\\}\\}/g,\n\n // @dxn:queue:data:xxx\n dxn: /@?dxn:[\\w@:]+/g,\n\n // dxos.org/type/xxx\n url: /[\\w.-]+\\.[\\w.-]+\\/[\\w/]+/g,\n};\n\nconst tagPadding = 'mli-0.5 pli-1 rounded-sm';\n\n/**\n * ViewPlugin that decorates Handlebars syntax.\n */\nconst handlebarsHighlightPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged || update.selectionSet) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n // NOTE: Decorations may clash with other extensions (e.g., markdown).\n buildDecorations(view: EditorView) {\n const selection = view.state.selection.main;\n const decorations: Array<{ from: number; to: number; decoration: Decoration }> = [];\n\n for (const { from, to } of view.visibleRanges) {\n const text = view.state.doc.sliceString(from, to);\n\n // Match DXN.\n {\n let match;\n while ((match = regex.dxn.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n // Only show widget if selection doesn't overlap with the match range.\n const overlaps = selection.to > start && selection.from <= end;\n if (!overlaps) {\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.widget({\n widget: new DXNWidget(match[0]),\n }),\n });\n }\n }\n }\n\n // Match URLs.\n {\n let match;\n while ((match = regex.url.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: mx('dx-tag--blue', tagPadding) }),\n });\n }\n }\n\n // Match brackets: {{ and }}.\n {\n let match;\n while ((match = regex.brackets.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-subdued' }),\n });\n }\n }\n\n // Match commands: {{#command}} and {{/command}}.\n {\n let match;\n while ((match = regex.command.exec(text)) !== null) {\n const start = from + match.index + 2;\n let end = start + match[0].length - 4;\n const text = view.state.doc.sliceString(start, end);\n const parts = text.split(/\\s+/);\n if (parts.length > 1) {\n const idx = start + parts[0].length;\n decorations.push({\n from: idx,\n to: end,\n decoration: Decoration.mark({ class: 'text-greenText' }),\n });\n end = idx;\n }\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-blueText' }),\n });\n }\n }\n\n // Match variables: {{var}}.\n {\n let match;\n while ((match = regex.var.exec(text)) !== null) {\n const start = from + match.index + 2;\n const end = start + match[0].length - 4;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-greenText' }),\n });\n }\n }\n }\n\n // Sort decorations by position to satisfy RangeSetBuilder requirements.\n decorations.sort((a, b) => a.from - b.from || a.to - b.to);\n\n // Add sorted decorations to builder.\n const builder = new RangeSetBuilder<Decoration>();\n for (const { from, to, decoration } of decorations) {\n builder.add(from, to, decoration);\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n\nclass DXNWidget extends WidgetType {\n constructor(private readonly _identifier: string) {\n super();\n }\n\n override ignoreEvent() {\n return false;\n }\n\n override eq(other: this) {\n return this._identifier === other._identifier;\n }\n\n override toDOM() {\n const text = this._identifier\n .split(':')\n .map((part) => {\n const len = 16;\n const plen = 4;\n if (part.length > len) {\n return `[${part.slice(0, plen)}…${part.slice(-plen)}]`;\n }\n return part;\n })\n .join(':');\n return Domino.of('span').classNames(['font-mono dx-tag--blue', tagPadding]).text(text).build();\n }\n}\n\n// TODO(burdon): Pass in variables.\nconst variables = ['this'];\nconst commands = ['this', 'each', 'if', 'unless', 'with'];\n\n/**\n * Provides completions for Handlebars variables.\n */\nfunction handlebarsCompletions(context: CompletionContext): CompletionResult | null {\n const match = context.matchBefore(/\\{\\{[^}]*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n let type = 'variable';\n let text = match.text.slice(2);\n let from = match.from + 2;\n let matches = [];\n if (text.startsWith('#') || text.startsWith('/')) {\n const idx = text.lastIndexOf(' ');\n if (idx !== -1) {\n type = 'variable';\n matches = variables;\n text = text.slice(idx + 1);\n from += idx + 1;\n } else {\n type = 'command';\n text = text.slice(1);\n matches = commands;\n from += 1;\n }\n } else {\n type = 'variable';\n matches = variables;\n }\n\n const options = matches.filter((name) => name.startsWith(text)).map((name) => ({ type, label: name }));\n return {\n from,\n options,\n };\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport { Decoration, type DecorationSet, type EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nexport type XmlOptions = {};\n\n/**\n * XML decorator plugin for CodeMirror.\n * Decorates XML tags with monospace font using the XML language grammar.\n */\nexport const xmlDecorator = (_: XmlOptions = {}): Extension => {\n return [xmlDecoratorPlugin];\n};\n\n/**\n * ViewPlugin that decorates XML tags using syntax tree.\n */\nconst xmlDecoratorPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView) {\n const builder = new RangeSetBuilder<Decoration>();\n\n for (const { from, to } of view.visibleRanges) {\n syntaxTree(view.state).iterate({\n from,\n to,\n enter: (node) => {\n // Decorate XML elements (opening tags, closing tags, self-closing tags).\n if (\n node.name === 'HTMLTag' ||\n node.name === 'OpenTag' ||\n node.name === 'CloseTag' ||\n node.name === 'SelfClosingTag' ||\n node.name === 'Element'\n ) {\n builder.add(node.from, node.to, Decoration.mark({ class: 'font-mono text-subdued' }));\n }\n },\n });\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["defaultHighlightStyle", "syntaxHighlighting", "React", "createDocAccessor", "useThemeContext", "useTranslation", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "useTextEditor", "mx", "isNonNullable", "autocompletion", "completionKeymap", "RangeSetBuilder", "Decoration", "ViewPlugin", "WidgetType", "keymap", "Domino", "mx", "handlebars", "_", "handlebarsHighlightPlugin", "autocompletion", "activateOnTyping", "aboveCursor", "closeOnBlur", "override", "handlebarsCompletions", "keymap", "of", "completionKeymap", "regex", "comment", "brackets", "command", "var", "dxn", "url", "tagPadding", "ViewPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "selectionSet", "selection", "state", "main", "from", "to", "visibleRanges", "text", "doc", "sliceString", "match", "exec", "start", "index", "end", "length", "overlaps", "push", "decoration", "Decoration", "widget", "DXNWidget", "mark", "class", "mx", "parts", "split", "idx", "sort", "a", "b", "builder", "RangeSetBuilder", "add", "finish", "v", "WidgetType", "_identifier", "ignoreEvent", "eq", "other", "toDOM", "map", "part", "len", "plen", "slice", "join", "Domino", "classNames", "build", "variables", "commands", "context", "matchBefore", "type", "matches", "startsWith", "lastIndexOf", "options", "filter", "name", "label", "syntaxTree", "RangeSetBuilder", "Decoration", "ViewPlugin", "xmlDecorator", "_", "xmlDecoratorPlugin", "ViewPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "builder", "RangeSetBuilder", "from", "to", "visibleRanges", "syntaxTree", "state", "iterate", "enter", "node", "name", "add", "Decoration", "mark", "class", "finish", "v", "TemplateEditor", "id", "classNames", "template", "lineNumbers", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "text", "source", "target", "initialValue", "content", "extensions", "createDataExtensions", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineWrapping", "placeholder", "createThemeExtensions", "slots", "className", "createMarkdownExtensions", "decorateMarkdown", "handlebars", "xmlDecorator", "syntaxHighlighting", "defaultHighlightStyle", "filter", "isNonNullable", "div", "ref", "mx"]
7
+ }