@dxos/plugin-automation 0.7.4 → 0.7.5-labs.401163d

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 (302) hide show
  1. package/dist/lib/browser/AutomationPanel-VW2XIUPU.mjs +8 -0
  2. package/dist/lib/browser/ChatContainer-OLRZNGWK.mjs +12 -0
  3. package/dist/lib/browser/ai-client-5CNY6JBF.mjs +22 -0
  4. package/dist/lib/browser/ai-client-5CNY6JBF.mjs.map +7 -0
  5. package/dist/lib/browser/app-graph-builder-6H7MDCXE.mjs +197 -0
  6. package/dist/lib/browser/app-graph-builder-6H7MDCXE.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-2H2EUYXL.mjs +15 -0
  8. package/dist/lib/browser/chunk-2H2EUYXL.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-ITG6CBKL.mjs +1602 -0
  10. package/dist/lib/browser/chunk-ITG6CBKL.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-MRBC5J4T.mjs +518 -0
  12. package/dist/lib/browser/chunk-MRBC5J4T.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-NQFZ6XRX.mjs +243 -0
  14. package/dist/lib/browser/chunk-NQFZ6XRX.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-Q4IMHYGH.mjs +150 -0
  16. package/dist/lib/browser/chunk-Q4IMHYGH.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-X5KMOH3I.mjs → chunk-R4JH4TLE.mjs} +6 -4
  18. package/dist/lib/browser/chunk-R4JH4TLE.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +157 -252
  20. package/dist/lib/browser/index.mjs.map +4 -4
  21. package/dist/lib/browser/intent-resolver-BWAXKT27.mjs +29 -0
  22. package/dist/lib/browser/intent-resolver-BWAXKT27.mjs.map +7 -0
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/react-surface-O6SHIBCA.mjs +58 -0
  25. package/dist/lib/browser/react-surface-O6SHIBCA.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +12 -3
  27. package/dist/lib/node/{meta.cjs → AutomationPanel-G6EDDYWW.cjs} +7 -11
  28. package/dist/lib/node/AutomationPanel-G6EDDYWW.cjs.map +7 -0
  29. package/dist/lib/node/ChatContainer-GRZDJIG5.cjs +33 -0
  30. package/dist/lib/node/ChatContainer-GRZDJIG5.cjs.map +7 -0
  31. package/dist/lib/node/ai-client-FKLPDELV.cjs +38 -0
  32. package/dist/lib/node/ai-client-FKLPDELV.cjs.map +7 -0
  33. package/dist/lib/node/app-graph-builder-7JMJLZIE.cjs +212 -0
  34. package/dist/lib/node/app-graph-builder-7JMJLZIE.cjs.map +7 -0
  35. package/dist/lib/node/chunk-CFBERLTN.cjs +1586 -0
  36. package/dist/lib/node/chunk-CFBERLTN.cjs.map +7 -0
  37. package/dist/lib/node/{chunk-DTJ7XVO2.cjs → chunk-EQYHOTGG.cjs} +11 -8
  38. package/dist/lib/node/chunk-EQYHOTGG.cjs.map +7 -0
  39. package/dist/lib/node/chunk-FQUY77HT.cjs +527 -0
  40. package/dist/lib/node/chunk-FQUY77HT.cjs.map +7 -0
  41. package/dist/lib/node/chunk-GB7245FH.cjs +173 -0
  42. package/dist/lib/node/chunk-GB7245FH.cjs.map +7 -0
  43. package/dist/lib/node/chunk-QXIHYOMF.cjs +267 -0
  44. package/dist/lib/node/chunk-QXIHYOMF.cjs.map +7 -0
  45. package/dist/lib/node/chunk-U5Z7LFWB.cjs +34 -0
  46. package/dist/lib/node/chunk-U5Z7LFWB.cjs.map +7 -0
  47. package/dist/lib/node/index.cjs +174 -282
  48. package/dist/lib/node/index.cjs.map +4 -4
  49. package/dist/lib/node/intent-resolver-C6OKFVEW.cjs +44 -0
  50. package/dist/lib/node/intent-resolver-C6OKFVEW.cjs.map +7 -0
  51. package/dist/lib/node/meta.json +1 -1
  52. package/dist/lib/node/react-surface-JT6SVCPK.cjs +76 -0
  53. package/dist/lib/node/react-surface-JT6SVCPK.cjs.map +7 -0
  54. package/dist/lib/node/types/index.cjs +16 -7
  55. package/dist/lib/node/types/index.cjs.map +2 -2
  56. package/dist/lib/node-esm/AutomationPanel-V3IWQAMO.mjs +9 -0
  57. package/dist/lib/node-esm/AutomationPanel-V3IWQAMO.mjs.map +7 -0
  58. package/dist/lib/node-esm/ChatContainer-ORVWQPJO.mjs +13 -0
  59. package/dist/lib/node-esm/ChatContainer-ORVWQPJO.mjs.map +7 -0
  60. package/dist/lib/node-esm/ai-client-XGNA6SJ5.mjs +23 -0
  61. package/dist/lib/node-esm/ai-client-XGNA6SJ5.mjs.map +7 -0
  62. package/dist/lib/node-esm/app-graph-builder-C6NUQGCU.mjs +198 -0
  63. package/dist/lib/node-esm/app-graph-builder-C6NUQGCU.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-2OKJZ4ZW.mjs +519 -0
  65. package/dist/lib/node-esm/chunk-2OKJZ4ZW.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-6HLBYDUI.mjs +244 -0
  67. package/dist/lib/node-esm/chunk-6HLBYDUI.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-7VPT3OO3.mjs +1603 -0
  69. package/dist/lib/node-esm/chunk-7VPT3OO3.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-DNCXRGAF.mjs +151 -0
  71. package/dist/lib/node-esm/chunk-DNCXRGAF.mjs.map +7 -0
  72. package/dist/lib/node-esm/{chunk-HNOBZHWK.mjs → chunk-EMVA6QUT.mjs} +6 -4
  73. package/dist/lib/node-esm/chunk-EMVA6QUT.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-IJRTDSKN.mjs +16 -0
  75. package/dist/lib/node-esm/chunk-IJRTDSKN.mjs.map +7 -0
  76. package/dist/lib/node-esm/index.mjs +157 -252
  77. package/dist/lib/node-esm/index.mjs.map +4 -4
  78. package/dist/lib/node-esm/intent-resolver-DCP4ZDBA.mjs +30 -0
  79. package/dist/lib/node-esm/intent-resolver-DCP4ZDBA.mjs.map +7 -0
  80. package/dist/lib/node-esm/meta.json +1 -1
  81. package/dist/lib/node-esm/react-surface-DSVM33SA.mjs +59 -0
  82. package/dist/lib/node-esm/react-surface-DSVM33SA.mjs.map +7 -0
  83. package/dist/lib/node-esm/types/index.mjs +12 -3
  84. package/dist/types/src/AutomationPlugin.d.ts +1 -3
  85. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  86. package/dist/types/src/artifacts.stories.d.ts +16 -0
  87. package/dist/types/src/artifacts.stories.d.ts.map +1 -0
  88. package/dist/types/src/capabilities/ai-client.d.ts +5 -0
  89. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/app-graph-builder.d.ts +181 -0
  91. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  93. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/index.d.ts +182 -0
  95. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  97. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  99. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  100. package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.d.ts +3 -0
  101. package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.d.ts.map +1 -0
  102. package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.stories.d.ts +8 -0
  103. package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.stories.d.ts.map +1 -0
  104. package/dist/types/src/components/AmbientChatDialog/index.d.ts +2 -0
  105. package/dist/types/src/components/AmbientChatDialog/index.d.ts.map +1 -0
  106. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +1 -1
  107. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  108. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/Box/StatusLine.d.ts +11 -0
  110. package/dist/types/src/components/Box/StatusLine.d.ts.map +1 -0
  111. package/dist/types/src/components/Box/StatusLine.stories.d.ts +9 -0
  112. package/dist/types/src/components/Box/StatusLine.stories.d.ts.map +1 -0
  113. package/dist/types/src/components/Box/Tabbed.d.ts +15 -0
  114. package/dist/types/src/components/Box/Tabbed.d.ts.map +1 -0
  115. package/dist/types/src/components/Box/Tabbed.stories.d.ts +8 -0
  116. package/dist/types/src/components/Box/Tabbed.stories.d.ts.map +1 -0
  117. package/dist/types/src/components/Box/ToggleContainer.d.ts +13 -0
  118. package/dist/types/src/components/Box/ToggleContainer.d.ts.map +1 -0
  119. package/dist/types/src/components/Box/ToggleContainer.stories.d.ts +9 -0
  120. package/dist/types/src/components/Box/ToggleContainer.stories.d.ts.map +1 -0
  121. package/dist/types/src/components/Box/index.d.ts +4 -0
  122. package/dist/types/src/components/Box/index.d.ts.map +1 -0
  123. package/dist/types/src/components/ChatContainer/ChatContainer.d.ts +7 -0
  124. package/dist/types/src/components/ChatContainer/ChatContainer.d.ts.map +1 -0
  125. package/dist/types/src/components/ChatContainer/index.d.ts +4 -0
  126. package/dist/types/src/components/ChatContainer/index.d.ts.map +1 -0
  127. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts +14 -0
  128. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts.map +1 -0
  129. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts +8 -0
  130. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts.map +1 -0
  131. package/dist/types/src/components/MarkdownViewer/index.d.ts +2 -0
  132. package/dist/types/src/components/MarkdownViewer/index.d.ts.map +1 -0
  133. package/dist/types/src/components/Prompt/Prompt.d.ts +7 -0
  134. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -0
  135. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +8 -0
  136. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -0
  137. package/dist/types/src/components/Prompt/index.d.ts +2 -0
  138. package/dist/types/src/components/Prompt/index.d.ts.map +1 -0
  139. package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts +20 -0
  140. package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts.map +1 -0
  141. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +6 -0
  142. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +1 -0
  143. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +8 -0
  144. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +1 -0
  145. package/dist/types/src/components/ServiceRegistry/index.d.ts +2 -0
  146. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +1 -0
  147. package/dist/types/src/components/Thread/Thread.d.ts +11 -0
  148. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -0
  149. package/dist/types/src/components/Thread/Thread.stories.d.ts +11 -0
  150. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -0
  151. package/dist/types/src/components/Thread/ThreadMessage.d.ts +12 -0
  152. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -0
  153. package/dist/types/src/components/Thread/index.d.ts +2 -0
  154. package/dist/types/src/components/Thread/index.d.ts.map +1 -0
  155. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +1 -2
  156. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  157. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/index.d.ts +13 -2
  159. package/dist/types/src/components/index.d.ts.map +1 -1
  160. package/dist/types/src/hooks/email.d.ts.map +1 -1
  161. package/dist/types/src/hooks/index.d.ts +4 -0
  162. package/dist/types/src/hooks/index.d.ts.map +1 -1
  163. package/dist/types/src/hooks/invocation-handler.d.ts.map +1 -1
  164. package/dist/types/src/hooks/processor.d.ts +70 -0
  165. package/dist/types/src/hooks/processor.d.ts.map +1 -0
  166. package/dist/types/src/hooks/processor.test.d.ts +2 -0
  167. package/dist/types/src/hooks/processor.test.d.ts.map +1 -0
  168. package/dist/types/src/hooks/useChatProcessor.d.ts +7 -0
  169. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -0
  170. package/dist/types/src/hooks/useMessageQueue.d.ts +41 -0
  171. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -0
  172. package/dist/types/src/hooks/useServices.d.ts +7 -0
  173. package/dist/types/src/hooks/useServices.d.ts.map +1 -0
  174. package/dist/types/src/index.d.ts +1 -2
  175. package/dist/types/src/index.d.ts.map +1 -1
  176. package/dist/types/src/meta.d.ts +2 -2
  177. package/dist/types/src/meta.d.ts.map +1 -1
  178. package/dist/types/src/testing/index.d.ts +2 -1
  179. package/dist/types/src/testing/index.d.ts.map +1 -1
  180. package/dist/types/src/testing/{testing.d.ts → test-functions.d.ts} +3 -1
  181. package/dist/types/src/testing/test-functions.d.ts.map +1 -0
  182. package/dist/types/src/testing/test-services.d.ts +5 -0
  183. package/dist/types/src/testing/test-services.d.ts.map +1 -0
  184. package/dist/types/src/tools/function.d.ts +5 -0
  185. package/dist/types/src/tools/function.d.ts.map +1 -0
  186. package/dist/types/src/tools/index.d.ts +3 -0
  187. package/dist/types/src/tools/index.d.ts.map +1 -0
  188. package/dist/types/src/tools/openapi.d.ts +10 -0
  189. package/dist/types/src/tools/openapi.d.ts.map +1 -0
  190. package/dist/types/src/tools/openapi.test.d.ts +2 -0
  191. package/dist/types/src/tools/openapi.test.d.ts.map +1 -0
  192. package/dist/types/src/translations.d.ts +84 -2
  193. package/dist/types/src/translations.d.ts.map +1 -1
  194. package/dist/types/src/types/index.d.ts +1 -0
  195. package/dist/types/src/types/index.d.ts.map +1 -1
  196. package/dist/types/src/types/registry.d.ts +10 -0
  197. package/dist/types/src/types/registry.d.ts.map +1 -0
  198. package/dist/types/src/types/schema.d.ts +189 -39
  199. package/dist/types/src/types/schema.d.ts.map +1 -1
  200. package/dist/types/src/types/types.d.ts +16 -5
  201. package/dist/types/src/types/types.d.ts.map +1 -1
  202. package/dist/types/tsconfig.tsbuildinfo +1 -0
  203. package/package.json +57 -48
  204. package/src/AutomationPlugin.tsx +77 -194
  205. package/src/artifacts.stories.tsx +241 -0
  206. package/src/capabilities/ai-client.ts +19 -0
  207. package/src/capabilities/app-graph-builder.ts +187 -0
  208. package/src/capabilities/capabilities.ts +12 -0
  209. package/src/capabilities/index.ts +12 -0
  210. package/src/capabilities/intent-resolver.ts +27 -0
  211. package/src/capabilities/react-surface.tsx +42 -0
  212. package/src/components/AmbientChatDialog/AmbientChatDialog.stories.tsx +44 -0
  213. package/src/components/AmbientChatDialog/AmbientChatDialog.tsx +63 -0
  214. package/src/components/AmbientChatDialog/index.ts +5 -0
  215. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +1 -2
  216. package/src/components/AutomationPanel/AutomationPanel.tsx +61 -39
  217. package/src/components/Box/StatusLine.stories.tsx +52 -0
  218. package/src/components/Box/StatusLine.tsx +76 -0
  219. package/src/components/Box/Tabbed.stories.tsx +51 -0
  220. package/src/components/Box/Tabbed.tsx +89 -0
  221. package/src/components/Box/ToggleContainer.stories.tsx +110 -0
  222. package/src/components/Box/ToggleContainer.tsx +108 -0
  223. package/src/components/Box/index.ts +7 -0
  224. package/src/components/ChatContainer/ChatContainer.tsx +52 -0
  225. package/src/components/ChatContainer/index.ts +8 -0
  226. package/src/components/MarkdownViewer/MarkdownViewer.stories.tsx +56 -0
  227. package/src/components/MarkdownViewer/MarkdownViewer.tsx +79 -0
  228. package/src/components/MarkdownViewer/index.ts +5 -0
  229. package/src/components/Prompt/Prompt.stories.tsx +50 -0
  230. package/src/components/Prompt/Prompt.tsx +39 -0
  231. package/src/components/Prompt/index.ts +5 -0
  232. package/src/components/Prompt/prompt-autocomplete.ts +200 -0
  233. package/src/components/PromptEditor/PromptEditor.stories.tsx +6 -6
  234. package/src/components/PromptEditor/PromptEditor.tsx +3 -3
  235. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +49 -0
  236. package/src/components/ServiceRegistry/ServiceRegistry.tsx +76 -0
  237. package/src/components/ServiceRegistry/index.ts +5 -0
  238. package/src/components/Thread/Thread.stories.tsx +197 -0
  239. package/src/components/Thread/Thread.tsx +156 -0
  240. package/src/components/Thread/ThreadMessage.tsx +225 -0
  241. package/src/components/Thread/index.ts +5 -0
  242. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +1 -2
  243. package/src/components/TriggerEditor/TriggerEditor.tsx +86 -16
  244. package/src/components/index.ts +10 -1
  245. package/src/hooks/email.ts +2 -2
  246. package/src/hooks/index.ts +5 -0
  247. package/src/hooks/invocation-handler.ts +2 -2
  248. package/src/hooks/processor.test.ts +15 -0
  249. package/src/hooks/processor.ts +210 -0
  250. package/src/hooks/useChatProcessor.tsx +86 -0
  251. package/src/hooks/useMessageQueue.ts +23 -0
  252. package/src/hooks/useServices.ts +28 -0
  253. package/src/index.ts +1 -4
  254. package/src/meta.ts +5 -2
  255. package/src/testing/index.ts +2 -1
  256. package/src/testing/{testing.ts → test-functions.ts} +9 -2
  257. package/src/testing/test-services.ts +131 -0
  258. package/src/tools/function.ts +47 -0
  259. package/src/tools/index.ts +6 -0
  260. package/src/tools/openapi.test.ts +224 -0
  261. package/src/tools/openapi.ts +331 -0
  262. package/src/translations.ts +18 -2
  263. package/src/types/index.ts +1 -0
  264. package/src/types/registry.ts +26 -0
  265. package/src/types/schema.ts +96 -2
  266. package/src/types/types.ts +15 -21
  267. package/dist/lib/browser/AssistantPanel-N3QSALKY.mjs +0 -341
  268. package/dist/lib/browser/AssistantPanel-N3QSALKY.mjs.map +0 -7
  269. package/dist/lib/browser/AutomationPanel-AQMN2CQR.mjs +0 -153
  270. package/dist/lib/browser/AutomationPanel-AQMN2CQR.mjs.map +0 -7
  271. package/dist/lib/browser/chunk-7KB4UMXO.mjs +0 -49
  272. package/dist/lib/browser/chunk-7KB4UMXO.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-X5KMOH3I.mjs.map +0 -7
  274. package/dist/lib/browser/meta.mjs +0 -9
  275. package/dist/lib/node/AssistantPanel-RIA4TI3B.cjs +0 -361
  276. package/dist/lib/node/AssistantPanel-RIA4TI3B.cjs.map +0 -7
  277. package/dist/lib/node/AutomationPanel-HZS5WKI5.cjs +0 -173
  278. package/dist/lib/node/AutomationPanel-HZS5WKI5.cjs.map +0 -7
  279. package/dist/lib/node/chunk-CUCUWUAF.cjs +0 -73
  280. package/dist/lib/node/chunk-CUCUWUAF.cjs.map +0 -7
  281. package/dist/lib/node/chunk-DTJ7XVO2.cjs.map +0 -7
  282. package/dist/lib/node/meta.cjs.map +0 -7
  283. package/dist/lib/node-esm/AssistantPanel-72YH43CH.mjs +0 -342
  284. package/dist/lib/node-esm/AssistantPanel-72YH43CH.mjs.map +0 -7
  285. package/dist/lib/node-esm/AutomationPanel-JUHOWQWW.mjs +0 -154
  286. package/dist/lib/node-esm/AutomationPanel-JUHOWQWW.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-23LY7DYS.mjs +0 -51
  288. package/dist/lib/node-esm/chunk-23LY7DYS.mjs.map +0 -7
  289. package/dist/lib/node-esm/chunk-HNOBZHWK.mjs.map +0 -7
  290. package/dist/lib/node-esm/meta.mjs +0 -10
  291. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts +0 -8
  292. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts.map +0 -1
  293. package/dist/types/src/components/AssistantPanel/index.d.ts +0 -3
  294. package/dist/types/src/components/AssistantPanel/index.d.ts.map +0 -1
  295. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts +0 -6
  296. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts.map +0 -1
  297. package/dist/types/src/testing/testing.d.ts.map +0 -1
  298. package/src/components/AssistantPanel/AssistantPanel.tsx +0 -230
  299. package/src/components/AssistantPanel/index.ts +0 -7
  300. package/src/components/AssistantPanel/system-instructions.ts +0 -166
  301. /package/dist/lib/browser/{meta.mjs.map → AutomationPanel-VW2XIUPU.mjs.map} +0 -0
  302. /package/dist/lib/{node-esm/meta.mjs.map → browser/ChatContainer-OLRZNGWK.mjs.map} +0 -0
@@ -0,0 +1,527 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var chunk_FQUY77HT_exports = {};
30
+ __export(chunk_FQUY77HT_exports, {
31
+ AmbientChatDialog: () => AmbientChatDialog,
32
+ AutomationPanel: () => AutomationPanel,
33
+ ChatContainer: () => ChatContainer,
34
+ PromptEditor: () => PromptEditor,
35
+ ServiceRegistry: () => ServiceRegistry
36
+ });
37
+ module.exports = __toCommonJS(chunk_FQUY77HT_exports);
38
+ var import_chunk_CFBERLTN = require("./chunk-CFBERLTN.cjs");
39
+ var import_chunk_GB7245FH = require("./chunk-GB7245FH.cjs");
40
+ var import_chunk_EQYHOTGG = require("./chunk-EQYHOTGG.cjs");
41
+ var import_react = __toESM(require("react"));
42
+ var import_react_ui = require("@dxos/react-ui");
43
+ var import_react_ui_dnd = require("@dxos/react-ui-dnd");
44
+ var import_react2 = __toESM(require("react"));
45
+ var import_react_ui2 = require("@dxos/react-ui");
46
+ var import_react_ui_editor = require("@dxos/react-ui-editor");
47
+ var import_react_ui_theme = require("@dxos/react-ui-theme");
48
+ var import_state = require("@codemirror/state");
49
+ var import_view = require("@codemirror/view");
50
+ var import_react3 = __toESM(require("react"));
51
+ var import_echo = require("@dxos/react-client/echo");
52
+ var import_react_ui3 = require("@dxos/react-ui");
53
+ var import_react_ui_editor2 = require("@dxos/react-ui-editor");
54
+ var import_react_ui_theme2 = require("@dxos/react-ui-theme");
55
+ var import_util = require("@dxos/util");
56
+ var import_language = require("@codemirror/language");
57
+ var import_react_ui_editor3 = require("@dxos/react-ui-editor");
58
+ var import_react_ui_theme3 = require("@dxos/react-ui-theme");
59
+ var import_react4 = __toESM(require("react"));
60
+ var import_echo2 = require("@dxos/client/echo");
61
+ var import_echo3 = require("@dxos/react-client/echo");
62
+ var import_react_ui4 = require("@dxos/react-ui");
63
+ var import_react5 = require("react");
64
+ var InlineSuggestionWidget = class extends import_view.WidgetType {
65
+ constructor(suffix) {
66
+ super();
67
+ this.suffix = suffix;
68
+ }
69
+ toDOM() {
70
+ const span = document.createElement("span");
71
+ span.textContent = this.suffix;
72
+ span.className = "cm-inline-suggestion";
73
+ return span;
74
+ }
75
+ eq(other) {
76
+ return other.suffix === this.suffix;
77
+ }
78
+ };
79
+ var createAutocompleteExtension = ({ onEnter, onSuggest }) => {
80
+ const suggestionPlugin = import_view.ViewPlugin.fromClass(class {
81
+ constructor(view) {
82
+ this._currentSuggestion = null;
83
+ this._decorations = this.computeDecorations(view);
84
+ }
85
+ update(update) {
86
+ if (update.docChanged || update.selectionSet) {
87
+ this._decorations = this.computeDecorations(update.view);
88
+ }
89
+ }
90
+ computeDecorations(view) {
91
+ const text = view.state.doc.toString();
92
+ const suggestions = onSuggest?.(text) ?? [];
93
+ if (!suggestions.length) {
94
+ this._currentSuggestion = null;
95
+ return import_view.Decoration.none;
96
+ }
97
+ this._currentSuggestion = suggestions[0];
98
+ const suffix = this._currentSuggestion.slice(text.length);
99
+ if (!suffix) {
100
+ return import_view.Decoration.none;
101
+ }
102
+ return import_view.Decoration.set([
103
+ import_view.Decoration.widget({
104
+ widget: new InlineSuggestionWidget(suffix),
105
+ side: 1
106
+ }).range(view.state.doc.length)
107
+ ]);
108
+ }
109
+ completeSuggestion(view) {
110
+ if (!this._currentSuggestion) {
111
+ return false;
112
+ }
113
+ const text = view.state.doc.toString();
114
+ const suffix = this._currentSuggestion.slice(text.length);
115
+ if (!suffix) {
116
+ return false;
117
+ }
118
+ view.dispatch({
119
+ changes: {
120
+ from: view.state.doc.length,
121
+ insert: suffix
122
+ },
123
+ selection: {
124
+ anchor: view.state.doc.length + suffix.length
125
+ }
126
+ });
127
+ return true;
128
+ }
129
+ }, {
130
+ decorations: (v) => v._decorations
131
+ });
132
+ return [
133
+ suggestionPlugin,
134
+ import_view.EditorView.theme({
135
+ ".cm-inline-suggestion": {
136
+ opacity: 0.4
137
+ }
138
+ }),
139
+ // Accept the current suggestion.
140
+ import_state.Prec.highest(import_view.keymap.of([
141
+ {
142
+ key: "Tab",
143
+ run: (view) => {
144
+ const plugin = view.plugin(suggestionPlugin);
145
+ return plugin?.completeSuggestion(view) ?? false;
146
+ }
147
+ },
148
+ {
149
+ key: "ArrowRight",
150
+ run: (view) => {
151
+ if (view.state.selection.main.head !== view.state.doc.length) {
152
+ return false;
153
+ }
154
+ const plugin = view.plugin(suggestionPlugin);
155
+ return plugin?.completeSuggestion(view) ?? false;
156
+ }
157
+ },
158
+ {
159
+ key: "Enter",
160
+ preventDefault: true,
161
+ run: (view) => {
162
+ const text = view.state.doc.toString();
163
+ if (onEnter) {
164
+ onEnter(text);
165
+ view.dispatch({
166
+ changes: {
167
+ from: 0,
168
+ to: view.state.doc.length,
169
+ insert: ""
170
+ }
171
+ });
172
+ return true;
173
+ }
174
+ return false;
175
+ }
176
+ },
177
+ {
178
+ key: "Shift-Enter",
179
+ run: (view) => {
180
+ view.dispatch({
181
+ changes: {
182
+ from: view.state.selection.main.head,
183
+ insert: "\n"
184
+ }
185
+ });
186
+ return true;
187
+ }
188
+ },
189
+ {
190
+ key: "Escape",
191
+ run: (view) => {
192
+ view.dispatch({
193
+ changes: {
194
+ from: 0,
195
+ to: view.state.doc.length,
196
+ insert: ""
197
+ }
198
+ });
199
+ return true;
200
+ }
201
+ }
202
+ ]))
203
+ ];
204
+ };
205
+ var Prompt = ({ classNames, autoFocus, lineWrapping = false, onEnter, onSuggest }) => {
206
+ const { themeMode } = (0, import_react_ui2.useThemeContext)();
207
+ const { parentRef } = (0, import_react_ui_editor.useTextEditor)({
208
+ autoFocus,
209
+ extensions: [
210
+ (0, import_react_ui_editor.createBasicExtensions)({
211
+ bracketMatching: false,
212
+ lineWrapping,
213
+ placeholder: "Ask a question..."
214
+ }),
215
+ (0, import_react_ui_editor.createThemeExtensions)({
216
+ themeMode
217
+ }),
218
+ createAutocompleteExtension({
219
+ onEnter,
220
+ onSuggest
221
+ })
222
+ ]
223
+ });
224
+ return /* @__PURE__ */ import_react2.default.createElement("div", {
225
+ ref: parentRef,
226
+ className: (0, import_react_ui_theme.mx)(classNames)
227
+ });
228
+ };
229
+ var preventDefault = (event) => event.preventDefault();
230
+ var AmbientChatDialog = ({ children }) => {
231
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_EQYHOTGG.AUTOMATION_PLUGIN);
232
+ const [size, setSize] = (0, import_react.useState)("min-content");
233
+ const [iter, setIter] = (0, import_react.useState)(0);
234
+ return /* @__PURE__ */ import_react.default.createElement("div", {
235
+ role: "none",
236
+ className: "dx-dialog__overlay bg-transparent pointer-events-none",
237
+ "data-block-align": "end"
238
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Dialog.Content, {
239
+ onInteractOutside: preventDefault,
240
+ classNames: "pointer-events-auto relative overflow-hidden is-[500px] max-is-none",
241
+ inOverlayLayout: true,
242
+ ...import_react_ui_dnd.resizeAttributes,
243
+ style: {
244
+ ...(0, import_react_ui_dnd.sizeStyle)(size, "vertical"),
245
+ maxBlockSize: "calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 8rem)"
246
+ }
247
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui_dnd.ResizeHandle, {
248
+ key: iter,
249
+ side: "block-start",
250
+ defaultSize: "min-content",
251
+ minSize: 5,
252
+ fallbackSize: 5,
253
+ iconPosition: "center",
254
+ onSizeChange: setSize
255
+ }), /* @__PURE__ */ import_react.default.createElement("div", {
256
+ className: "flex w-full items-center"
257
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Dialog.Title, {
258
+ classNames: "sr-only"
259
+ }, t("ambient chat dialog title")), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Dialog.Close, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Icon, {
260
+ icon: "ph--x--regular",
261
+ size: 4
262
+ })), /* @__PURE__ */ import_react.default.createElement("div", {
263
+ className: "grow"
264
+ }), /* @__PURE__ */ import_react.default.createElement(import_react_ui.IconButton, {
265
+ variant: "ghost",
266
+ icon: "ph--caret-down--regular",
267
+ iconOnly: true,
268
+ label: "Shrink",
269
+ onClick: () => {
270
+ setIter((iter2) => iter2 + 1);
271
+ setSize("min-content");
272
+ }
273
+ })), /* @__PURE__ */ import_react.default.createElement(Prompt, {
274
+ autoFocus: true,
275
+ lineWrapping: true
276
+ })));
277
+ };
278
+ var nameRegex = /\{([\w-]+)}/;
279
+ var parser = import_language.StreamLanguage.define({
280
+ token: (stream) => {
281
+ if (stream.eatSpace()) {
282
+ return null;
283
+ }
284
+ if (stream.match(/^#.*/)) {
285
+ return "lineComment";
286
+ }
287
+ if (stream.match(/^-+$/)) {
288
+ return "lineComment";
289
+ }
290
+ if (stream.match(nameRegex)) {
291
+ return "variableName";
292
+ }
293
+ stream.next();
294
+ return null;
295
+ }
296
+ });
297
+ var highlightStyles = import_language.HighlightStyle.define([
298
+ {
299
+ tag: import_react_ui_editor3.tags.variableName,
300
+ class: (0, import_react_ui_theme3.mx)("rounded border border-yellow-500 bg-yellow-100 text-black font-mono text-sm")
301
+ }
302
+ ]);
303
+ var promptExtension = [
304
+ parser,
305
+ (0, import_language.syntaxHighlighting)(highlightStyles)
306
+ ];
307
+ var inputTypes = [
308
+ {
309
+ value: import_chunk_GB7245FH.ChainInputType.VALUE,
310
+ label: "Value"
311
+ },
312
+ {
313
+ value: import_chunk_GB7245FH.ChainInputType.PASS_THROUGH,
314
+ label: "Pass through"
315
+ },
316
+ {
317
+ value: import_chunk_GB7245FH.ChainInputType.RETRIEVER,
318
+ label: "Retriever"
319
+ },
320
+ // {
321
+ // value: ChainInputType.FUNCTION,
322
+ // label: 'Function',
323
+ // },
324
+ // {
325
+ // value: ChainInputType.QUERY,
326
+ // label: 'Query',
327
+ // },
328
+ {
329
+ value: import_chunk_GB7245FH.ChainInputType.RESOLVER,
330
+ label: "Resolver"
331
+ },
332
+ {
333
+ value: import_chunk_GB7245FH.ChainInputType.CONTEXT,
334
+ label: "Context"
335
+ },
336
+ {
337
+ value: import_chunk_GB7245FH.ChainInputType.SCHEMA,
338
+ label: "Schema"
339
+ }
340
+ ];
341
+ var getInputType = (type) => inputTypes.find(({ value }) => String(value) === type)?.value;
342
+ var usePromptInputs = (prompt) => {
343
+ (0, import_react3.useEffect)(() => {
344
+ const text = prompt.template ?? "";
345
+ if (!prompt.inputs) {
346
+ prompt.inputs = [];
347
+ }
348
+ const regex = new RegExp(nameRegex, "g");
349
+ const variables = new Set([
350
+ ...text.matchAll(regex)
351
+ ].map((m) => m[1]));
352
+ const unclaimed = new Map(prompt.inputs?.filter(import_util.isNonNullable).map((input) => [
353
+ input.name,
354
+ input
355
+ ]));
356
+ const missing = [];
357
+ Array.from(variables.values()).forEach((name) => {
358
+ if (unclaimed.has(name)) {
359
+ unclaimed.delete(name);
360
+ } else {
361
+ missing.push(name);
362
+ }
363
+ });
364
+ const values = unclaimed.values();
365
+ missing.forEach((name) => {
366
+ const next = values.next().value;
367
+ if (next) {
368
+ next.name = name;
369
+ } else {
370
+ prompt.inputs?.push({
371
+ name
372
+ });
373
+ }
374
+ });
375
+ for (const input of values) {
376
+ prompt.inputs.splice(prompt.inputs.indexOf(input), 1);
377
+ }
378
+ }, [
379
+ prompt.template
380
+ ]);
381
+ };
382
+ var PromptEditor = ({ prompt, commandEditable = true }) => {
383
+ const { t } = (0, import_react_ui3.useTranslation)(import_chunk_EQYHOTGG.AUTOMATION_PLUGIN);
384
+ const { themeMode } = (0, import_react_ui3.useThemeContext)();
385
+ const { parentRef } = (0, import_react_ui_editor2.useTextEditor)(() => ({
386
+ initialValue: prompt.template,
387
+ extensions: [
388
+ (0, import_react_ui_editor2.createDataExtensions)({
389
+ id: prompt.id,
390
+ text: prompt.template !== void 0 ? (0, import_echo.createDocAccessor)(prompt, [
391
+ "template"
392
+ ]) : void 0
393
+ }),
394
+ (0, import_react_ui_editor2.createBasicExtensions)({
395
+ bracketMatching: false,
396
+ lineWrapping: true,
397
+ placeholder: t("template placeholder")
398
+ }),
399
+ (0, import_react_ui_editor2.createThemeExtensions)({
400
+ themeMode,
401
+ slots: {
402
+ content: {
403
+ className: "!p-3"
404
+ }
405
+ }
406
+ }),
407
+ promptExtension
408
+ ]
409
+ }), [
410
+ themeMode,
411
+ prompt
412
+ ]);
413
+ usePromptInputs(prompt);
414
+ return /* @__PURE__ */ import_react3.default.createElement("div", {
415
+ className: (0, import_react_ui_theme2.mx)("flex flex-col w-full overflow-hidden gap-4", import_react_ui_theme2.groupBorder)
416
+ }, commandEditable && /* @__PURE__ */ import_react3.default.createElement("div", {
417
+ className: "flex items-center pl-4"
418
+ }, /* @__PURE__ */ import_react3.default.createElement("span", {
419
+ className: "text-neutral-500"
420
+ }, "/"), /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.TextInput, {
421
+ placeholder: t("command placeholder"),
422
+ classNames: (0, import_react_ui_theme2.mx)("is-full bg-transparent m-2"),
423
+ value: prompt.command ?? "",
424
+ onChange: (event) => {
425
+ prompt.command = event.target.value.replace(/\w/g, "");
426
+ }
427
+ }))), /* @__PURE__ */ import_react3.default.createElement("div", {
428
+ ref: parentRef,
429
+ className: (0, import_react_ui_theme2.mx)(import_react_ui_theme2.attentionSurface, "rounded", "min-h-[120px]")
430
+ }), (prompt.inputs?.length ?? 0) > 0 && /* @__PURE__ */ import_react3.default.createElement("div", {
431
+ className: "flex flex-col"
432
+ }, /* @__PURE__ */ import_react3.default.createElement("table", {
433
+ className: "w-full table-fixed border-collapse my-2"
434
+ }, /* @__PURE__ */ import_react3.default.createElement("tbody", null, prompt.inputs?.filter(import_util.isNonNullable).map((input) => /* @__PURE__ */ import_react3.default.createElement("tr", {
435
+ key: input.name
436
+ }, /* @__PURE__ */ import_react3.default.createElement("td", {
437
+ className: "w-[160px] p-1 font-mono text-sm whitespace-nowrap truncate"
438
+ }, /* @__PURE__ */ import_react3.default.createElement("code", {
439
+ className: "px-2"
440
+ }, input.name)), /* @__PURE__ */ import_react3.default.createElement("td", {
441
+ className: "w-[120px] p-1"
442
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Root, {
443
+ value: String(input.type),
444
+ onValueChange: (type) => {
445
+ input.type = getInputType(type) ?? import_chunk_GB7245FH.ChainInputType.VALUE;
446
+ }
447
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.TriggerButton, {
448
+ placeholder: "Type",
449
+ classNames: "is-full"
450
+ }), /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Viewport, null, inputTypes.map(({ value, label }) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Option, {
451
+ key: value,
452
+ value: String(value)
453
+ }, label)))))))), /* @__PURE__ */ import_react3.default.createElement("td", {
454
+ className: "p-1 pr-2"
455
+ }, input.type !== void 0 && [
456
+ import_chunk_GB7245FH.ChainInputType.VALUE,
457
+ import_chunk_GB7245FH.ChainInputType.CONTEXT,
458
+ import_chunk_GB7245FH.ChainInputType.RESOLVER,
459
+ import_chunk_GB7245FH.ChainInputType.SCHEMA
460
+ ].includes(input.type) && /* @__PURE__ */ import_react3.default.createElement("div", null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.TextInput, {
461
+ placeholder: t("command placeholder"),
462
+ classNames: (0, import_react_ui_theme2.mx)("is-full bg-transparent"),
463
+ value: input.value ?? "",
464
+ onChange: (event) => {
465
+ input.value = event.target.value;
466
+ }
467
+ }))))))))));
468
+ };
469
+ var ServiceRegistry = ({ space }) => {
470
+ const matchingServices = (0, import_chunk_CFBERLTN.useServices)(space);
471
+ const enabledServices = (0, import_echo3.useQuery)(space, import_echo2.Filter.schema(import_chunk_GB7245FH.ServiceType));
472
+ const services = (0, import_react4.useMemo)(() => {
473
+ return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);
474
+ }, [
475
+ matchingServices,
476
+ enabledServices
477
+ ]);
478
+ const handleSetEnabled = (service, enabled) => {
479
+ if (enabled) {
480
+ space.db.add(service);
481
+ } else {
482
+ space.db.remove(service);
483
+ }
484
+ };
485
+ return /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.List, {
486
+ classNames: "h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin"
487
+ }, services.map((service) => /* @__PURE__ */ import_react4.default.createElement(ServiceItem, {
488
+ key: service.serviceId,
489
+ service,
490
+ enabled: service.enabled,
491
+ setEnabled: (enabled) => handleSetEnabled(service, enabled)
492
+ })));
493
+ };
494
+ var ServiceItem = ({ service, enabled, setEnabled }) => {
495
+ return /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.ListItem.Root, {
496
+ classNames: "flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator"
497
+ }, /* @__PURE__ */ import_react4.default.createElement("div", {
498
+ className: "grid grid-cols-[40px_1fr_40px]"
499
+ }, /* @__PURE__ */ import_react4.default.createElement("div", {
500
+ className: "flex gow justify-center items-center"
501
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.Icon, {
502
+ icon: import_chunk_GB7245FH.categoryIcons[service.category ?? "default"] ?? "ph--placeholder--regular",
503
+ size: 6
504
+ })), /* @__PURE__ */ import_react4.default.createElement("div", {
505
+ className: "grow items-center truncate mie-2"
506
+ }, service.name), /* @__PURE__ */ import_react4.default.createElement("div", {
507
+ className: "flex gow justify-center items-center"
508
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.Input.Root, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.Input.Switch, {
509
+ checked: enabled,
510
+ onClick: () => setEnabled?.(!enabled)
511
+ })))), /* @__PURE__ */ import_react4.default.createElement("div", {
512
+ className: "grid grid-cols-[40px_1fr]"
513
+ }, /* @__PURE__ */ import_react4.default.createElement("div", null), /* @__PURE__ */ import_react4.default.createElement("div", {
514
+ className: "text-sm text-subdued line-clamp-2 mie-1"
515
+ }, service.description)));
516
+ };
517
+ var AutomationPanel = (0, import_react5.lazy)(() => import("./AutomationPanel-G6EDDYWW.cjs"));
518
+ var ChatContainer = (0, import_react5.lazy)(() => import("./ChatContainer-GRZDJIG5.cjs"));
519
+ // Annotate the CommonJS export names for ESM import in node:
520
+ 0 && (module.exports = {
521
+ AmbientChatDialog,
522
+ AutomationPanel,
523
+ ChatContainer,
524
+ PromptEditor,
525
+ ServiceRegistry
526
+ });
527
+ //# sourceMappingURL=chunk-FQUY77HT.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AmbientChatDialog/AmbientChatDialog.tsx", "../../../src/components/Prompt/Prompt.tsx", "../../../src/components/Prompt/prompt-autocomplete.ts", "../../../src/components/PromptEditor/PromptEditor.tsx", "../../../src/components/PromptEditor/prompt-extension.ts", "../../../src/components/ServiceRegistry/ServiceRegistry.tsx", "../../../src/components/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useState } from 'react';\n\nimport { Dialog, Icon, IconButton, useTranslation } from '@dxos/react-ui';\nimport { resizeAttributes, ResizeHandle, type Size, sizeStyle } from '@dxos/react-ui-dnd';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { Prompt } from '../Prompt';\n\nconst preventDefault = (event: Event) => event.preventDefault();\n\nexport const AmbientChatDialog = ({ children }: PropsWithChildren) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const [size, setSize] = useState<Size>('min-content');\n const [iter, setIter] = useState(0);\n return (\n <div role='none' className='dx-dialog__overlay bg-transparent pointer-events-none' data-block-align='end'>\n <Dialog.Content\n onInteractOutside={preventDefault}\n classNames='pointer-events-auto relative overflow-hidden is-[500px] max-is-none'\n inOverlayLayout\n {...resizeAttributes}\n style={{\n ...sizeStyle(size, 'vertical'),\n maxBlockSize: 'calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 8rem)',\n }}\n >\n <ResizeHandle\n key={iter}\n side='block-start'\n defaultSize='min-content'\n minSize={5}\n fallbackSize={5}\n iconPosition='center'\n onSizeChange={setSize}\n />\n\n <div className='flex w-full items-center'>\n <Dialog.Title classNames='sr-only'>{t('ambient chat dialog title')}</Dialog.Title>\n <Dialog.Close>\n <Icon icon='ph--x--regular' size={4} />\n </Dialog.Close>\n <div className='grow' />\n <IconButton\n variant='ghost'\n icon='ph--caret-down--regular'\n iconOnly\n label='Shrink'\n onClick={() => {\n setIter((iter) => iter + 1);\n setSize('min-content');\n }}\n />\n </div>\n\n <Prompt autoFocus lineWrapping />\n </Dialog.Content>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport {\n type BasicExtensionsOptions,\n createBasicExtensions,\n createThemeExtensions,\n useTextEditor,\n type UseTextEditorProps,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { createAutocompleteExtension, type AutocompleteOptions } from './prompt-autocomplete';\n\nexport type PromptProps = ThemedClassName<\n AutocompleteOptions & Pick<UseTextEditorProps, 'autoFocus'> & Pick<BasicExtensionsOptions, 'lineWrapping'>\n>;\n\nexport const Prompt = ({ classNames, autoFocus, lineWrapping = false, onEnter, onSuggest }: PromptProps) => {\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor({\n autoFocus,\n extensions: [\n createBasicExtensions({\n bracketMatching: false,\n lineWrapping,\n placeholder: 'Ask a question...',\n }),\n createThemeExtensions({ themeMode }),\n createAutocompleteExtension({ onEnter, onSuggest }),\n ],\n });\n\n return <div ref={parentRef} className={mx(classNames)} />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Prec, type Extension } from '@codemirror/state';\nimport {\n EditorView,\n Decoration,\n ViewPlugin,\n keymap,\n type DecorationSet,\n type ViewUpdate,\n WidgetType,\n} from '@codemirror/view';\n\nexport type AutocompleteOptions = {\n /**\n * Callback triggered when Enter is pressed.\n * @param text The current text in the editor\n */\n onEnter?: (text: string) => void;\n\n /**\n * Function that returns a list of suggestions based on the current text.\n * @param text The current text before the cursor\n * @returns Array of suggestion strings\n */\n onSuggest?: (text: string) => string[];\n};\n\nclass InlineSuggestionWidget extends WidgetType {\n constructor(private suffix: string) {\n super();\n }\n\n override toDOM() {\n const span = document.createElement('span');\n span.textContent = this.suffix;\n span.className = 'cm-inline-suggestion';\n return span;\n }\n\n override eq(other: InlineSuggestionWidget) {\n return other.suffix === this.suffix;\n }\n}\n\n/**\n * Creates an autocomplete extension that shows inline suggestions.\n * Pressing Tab will complete the suggestion.\n */\nexport const createAutocompleteExtension = ({ onEnter, onSuggest }: AutocompleteOptions): Extension => {\n const suggestionPlugin = ViewPlugin.fromClass(\n class {\n _decorations: DecorationSet;\n _currentSuggestion: string | null = null;\n\n constructor(view: EditorView) {\n this._decorations = this.computeDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.selectionSet) {\n this._decorations = this.computeDecorations(update.view);\n }\n }\n\n private computeDecorations(view: EditorView): DecorationSet {\n const text = view.state.doc.toString();\n const suggestions = onSuggest?.(text) ?? [];\n if (!suggestions.length) {\n this._currentSuggestion = null;\n return Decoration.none;\n }\n\n // Get the first suggestion.\n this._currentSuggestion = suggestions[0];\n const suffix = this._currentSuggestion.slice(text.length);\n if (!suffix) {\n return Decoration.none;\n }\n\n // Always show ghost text at the end of the document.\n return Decoration.set([\n Decoration.widget({\n widget: new InlineSuggestionWidget(suffix),\n side: 1,\n }).range(view.state.doc.length),\n ]);\n }\n\n completeSuggestion(view: EditorView): boolean {\n if (!this._currentSuggestion) {\n return false;\n }\n\n const text = view.state.doc.toString();\n const suffix = this._currentSuggestion.slice(text.length);\n if (!suffix) {\n return false;\n }\n\n view.dispatch({\n changes: {\n from: view.state.doc.length,\n insert: suffix,\n },\n selection: {\n anchor: view.state.doc.length + suffix.length,\n },\n });\n\n return true;\n }\n },\n {\n decorations: (v) => v._decorations,\n },\n );\n\n return [\n suggestionPlugin,\n EditorView.theme({\n '.cm-inline-suggestion': {\n opacity: 0.4,\n },\n }),\n\n // Accept the current suggestion.\n Prec.highest(\n keymap.of([\n {\n key: 'Tab',\n run: (view) => {\n const plugin = view.plugin(suggestionPlugin);\n return plugin?.completeSuggestion(view) ?? false;\n },\n },\n {\n key: 'ArrowRight',\n run: (view) => {\n // Only complete if cursor is at the end\n if (view.state.selection.main.head !== view.state.doc.length) {\n return false;\n }\n\n const plugin = view.plugin(suggestionPlugin);\n return plugin?.completeSuggestion(view) ?? false;\n },\n },\n {\n key: 'Enter',\n preventDefault: true,\n run: (view) => {\n const text = view.state.doc.toString();\n if (onEnter) {\n onEnter(text);\n // Clear the document after calling onEnter\n view.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: '',\n },\n });\n return true;\n }\n return false;\n },\n },\n {\n key: 'Shift-Enter',\n run: (view) => {\n view.dispatch({\n changes: {\n from: view.state.selection.main.head,\n insert: '\\n',\n },\n });\n return true;\n },\n },\n {\n key: 'Escape',\n run: (view) => {\n // Clear the entire document.\n view.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: '',\n },\n });\n return true;\n },\n },\n ]),\n ),\n ];\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React, { useEffect } from 'react';\n\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { Input, Select, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createThemeExtensions,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { attentionSurface, groupBorder, mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { nameRegex, promptExtension } from './prompt-extension';\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { type ChainInput, ChainInputType, type ChainPromptType } from '../../types';\n\nconst inputTypes = [\n {\n value: ChainInputType.VALUE,\n label: 'Value',\n },\n {\n value: ChainInputType.PASS_THROUGH,\n label: 'Pass through',\n },\n {\n value: ChainInputType.RETRIEVER,\n label: 'Retriever',\n },\n // {\n // value: ChainInputType.FUNCTION,\n // label: 'Function',\n // },\n // {\n // value: ChainInputType.QUERY,\n // label: 'Query',\n // },\n {\n value: ChainInputType.RESOLVER,\n label: 'Resolver',\n },\n {\n value: ChainInputType.CONTEXT,\n label: 'Context',\n },\n {\n value: ChainInputType.SCHEMA,\n label: 'Schema',\n },\n];\n\nconst getInputType = (type: string) => inputTypes.find(({ value }) => String(value) === type)?.value;\n\nconst usePromptInputs = (prompt: ChainPromptType) => {\n useEffect(() => {\n const text = prompt.template ?? '';\n if (!prompt.inputs) {\n prompt.inputs = []; // TODO(burdon): Required?\n }\n\n const regex = new RegExp(nameRegex, 'g');\n const variables = new Set<string>([...text.matchAll(regex)].map((m) => m[1]));\n\n // Create map of unclaimed inputs.\n const unclaimed = new Map<string, ChainInput>(\n prompt.inputs?.filter(isNonNullable).map((input) => [input.name, input]),\n );\n const missing: string[] = [];\n Array.from(variables.values()).forEach((name) => {\n if (unclaimed.has(name)) {\n unclaimed.delete(name);\n } else {\n missing.push(name);\n }\n });\n\n // Match or create new inputs.\n const values = unclaimed.values();\n missing.forEach((name) => {\n const next = values.next().value;\n if (next) {\n next.name = name;\n } else {\n prompt.inputs?.push({ name });\n }\n });\n\n // Remove unclaimed (deleted) inputs.\n // TODO(burdon): If user types incorrect name value, it will be deleted. Garbage collect?\n for (const input of values) {\n prompt.inputs.splice(prompt.inputs.indexOf(input), 1);\n }\n }, [prompt.template]);\n};\n\nexport type PromptEditorProps = {\n prompt: ChainPromptType;\n commandEditable?: boolean;\n schema?: S.Schema<any, any, any>;\n};\n\nexport const PromptEditor = ({ prompt, commandEditable = true }: PromptEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const { themeMode } = useThemeContext();\n\n const { parentRef } = useTextEditor(\n () => ({\n initialValue: prompt.template,\n extensions: [\n createDataExtensions({\n id: prompt.id,\n text: prompt.template !== undefined ? createDocAccessor(prompt, ['template']) : undefined,\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({\n themeMode,\n slots: {\n content: { className: '!p-3' },\n },\n }),\n promptExtension,\n ],\n }),\n [themeMode, prompt],\n );\n\n usePromptInputs(prompt);\n\n return (\n <div className={mx('flex flex-col w-full overflow-hidden gap-4', groupBorder)}>\n {commandEditable && (\n <div className='flex items-center pl-4'>\n <span className='text-neutral-500'>/</span>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent m-2')}\n value={prompt.command ?? ''}\n onChange={(event) => {\n prompt.command = event.target.value.replace(/\\w/g, '');\n }}\n />\n </Input.Root>\n </div>\n )}\n\n <div ref={parentRef} className={mx(attentionSurface, 'rounded', 'min-h-[120px]')} />\n\n {(prompt.inputs?.length ?? 0) > 0 && (\n <div className='flex flex-col'>\n {/* TODO(zan): Improve layout with grid */}\n <table className='w-full table-fixed border-collapse my-2'>\n <tbody>\n {prompt.inputs?.filter(isNonNullable).map((input) => (\n <tr key={input.name}>\n <td className='w-[160px] p-1 font-mono text-sm whitespace-nowrap truncate'>\n <code className='px-2'>{input.name}</code>\n </td>\n <td className='w-[120px] p-1'>\n <Input.Root>\n <Select.Root\n value={String(input.type)}\n onValueChange={(type) => {\n input.type = getInputType(type) ?? ChainInputType.VALUE;\n }}\n >\n <Select.TriggerButton placeholder='Type' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {inputTypes.map(({ value, label }) => (\n <Select.Option key={value} value={String(value)}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n </td>\n <td className='p-1 pr-2'>\n {input.type !== undefined &&\n [\n ChainInputType.VALUE,\n ChainInputType.CONTEXT,\n ChainInputType.RESOLVER,\n ChainInputType.SCHEMA,\n ].includes(input.type) && (\n <div>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent')}\n value={input.value ?? ''}\n onChange={(event) => {\n input.value = event.target.value;\n }}\n />\n </Input.Root>\n </div>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { HighlightStyle, StreamLanguage, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport const nameRegex = /\\{([\\w-]+)}/;\n\nconst parser = StreamLanguage.define({\n token: (stream) => {\n if (stream.eatSpace()) {\n return null;\n }\n if (stream.match(/^#.*/)) {\n return 'lineComment';\n }\n if (stream.match(/^-+$/)) {\n return 'lineComment';\n }\n if (stream.match(nameRegex)) {\n return 'variableName';\n }\n stream.next();\n return null;\n },\n});\n\n/**\n * https://codemirror.net/examples/styling\n * https://lezer.codemirror.net/docs/ref/#highlight\n */\nconst highlightStyles = HighlightStyle.define([\n {\n tag: tags.variableName,\n class: mx('rounded border border-yellow-500 bg-yellow-100 text-black font-mono text-sm'),\n },\n]);\n\nexport const promptExtension: Extension = [parser, syntaxHighlighting(highlightStyles)];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Icon, Input, List, ListItem } from '@dxos/react-ui';\n\nimport { useServices } from '../../hooks';\nimport { categoryIcons, ServiceType } from '../../types';\n\n// TODO(burdon): Option to show all/enabled/filter.\nexport const ServiceRegistry = ({ space }: { space: Space }) => {\n const matchingServices = useServices(space);\n const enabledServices = useQuery(space, Filter.schema(ServiceType));\n\n // Join matching services with enabled services.\n const services = useMemo(() => {\n return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);\n }, [matchingServices, enabledServices]);\n\n // TODO(burdon): Reaplce with SpacePlugin intent.\n const handleSetEnabled = (service: ServiceType, enabled: boolean) => {\n if (enabled) {\n space.db.add(service);\n } else {\n // TODO(burdon): Remove or disable?\n space.db.remove(service);\n }\n };\n\n return (\n <List classNames='h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin'>\n {services.map((service) => (\n <ServiceItem\n key={service.serviceId}\n service={service}\n enabled={service.enabled}\n setEnabled={(enabled) => handleSetEnabled(service, enabled)}\n />\n ))}\n </List>\n );\n};\n\nconst ServiceItem = ({\n service,\n enabled,\n setEnabled,\n}: {\n service: ServiceType;\n enabled?: boolean;\n setEnabled?: (enabled: boolean) => void;\n}) => {\n return (\n <ListItem.Root classNames='flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator'>\n <div className='grid grid-cols-[40px_1fr_40px]'>\n <div className='flex gow justify-center items-center'>\n <Icon icon={categoryIcons[service.category ?? 'default'] ?? 'ph--placeholder--regular'} size={6} />\n </div>\n <div className='grow items-center truncate mie-2'>{service.name}</div>\n <div className='flex gow justify-center items-center'>\n <Input.Root>\n <Input.Switch checked={enabled} onClick={() => setEnabled?.(!enabled)} />\n </Input.Root>\n </div>\n </div>\n <div className='grid grid-cols-[40px_1fr]'>\n <div />\n <div className='text-sm text-subdued line-clamp-2 mie-1'>{service.description}</div>\n </div>\n </ListItem.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AmbientChatDialog';\nexport * from './AutomationPanel';\nexport * from './ChatContainer';\nexport * from './MarkdownViewer';\nexport * from './PromptEditor';\nexport * from './ServiceRegistry';\nexport * from './Thread';\nexport * from './TriggerEditor';\n\nexport const AutomationPanel = lazy(() => import('./AutomationPanel'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_react_ui", "import_react_ui_editor", "import_react_ui_theme", "import_echo", "InlineSuggestionWidget", "WidgetType", "constructor", "suffix", "toDOM", "span", "document", "createElement", "textContent", "className", "eq", "other", "createAutocompleteExtension", "onEnter", "onSuggest", "suggestionPlugin", "ViewPlugin", "fromClass", "view", "_currentSuggestion", "_decorations", "computeDecorations", "update", "docChanged", "selectionSet", "text", "state", "doc", "toString", "suggestions", "length", "Decoration", "none", "slice", "set", "widget", "side", "range", "completeSuggestion", "dispatch", "changes", "from", "insert", "selection", "anchor", "decorations", "v", "EditorView", "theme", "opacity", "Prec", "highest", "keymap", "of", "key", "run", "plugin", "main", "head", "preventDefault", "to", "Prompt", "classNames", "autoFocus", "lineWrapping", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "extensions", "createBasicExtensions", "bracketMatching", "placeholder", "createThemeExtensions", "React", "div", "ref", "mx", "event", "AmbientChatDialog", "children", "t", "useTranslation", "AUTOMATION_PLUGIN", "size", "setSize", "useState", "iter", "setIter", "role", "data-block-align", "Dialog", "Content", "onInteractOutside", "inOverlayLayout", "resizeAttributes", "style", "sizeStyle", "maxBlockSize", "ResizeHandle", "defaultSize", "minSize", "fallbackSize", "iconPosition", "onSizeChange", "Title", "Close", "Icon", "icon", "IconButton", "variant", "iconOnly", "label", "onClick", "nameRegex", "parser", "StreamLanguage", "define", "token", "stream", "eatSpace", "match", "next", "highlightStyles", "HighlightStyle", "tag", "tags", "variableName", "class", "promptExtension", "syntaxHighlighting", "inputTypes", "value", "ChainInputType", "VALUE", "PASS_THROUGH", "RETRIEVER", "RESOLVER", "CONTEXT", "SCHEMA", "getInputType", "type", "find", "String", "usePromptInputs", "prompt", "useEffect", "template", "inputs", "regex", "RegExp", "variables", "Set", "matchAll", "map", "m", "unclaimed", "Map", "filter", "isNonNullable", "input", "name", "missing", "Array", "values", "forEach", "has", "delete", "push", "splice", "indexOf", "PromptEditor", "commandEditable", "initialValue", "createDataExtensions", "id", "undefined", "createDocAccessor", "slots", "content", "groupBorder", "Input", "Root", "TextInput", "command", "onChange", "target", "replace", "attentionSurface", "table", "tbody", "tr", "td", "code", "Select", "onValueChange", "TriggerButton", "Portal", "Viewport", "Option", "includes", "ServiceRegistry", "space", "matchingServices", "useServices", "enabledServices", "useQuery", "Filter", "schema", "ServiceType", "services", "useMemo", "service", "s", "serviceId", "handleSetEnabled", "enabled", "db", "add", "remove", "List", "ServiceItem", "setEnabled", "ListItem", "categoryIcons", "category", "Switch", "checked", "description", "AutomationPanel", "lazy", "ChatContainer"]
7
+ }