@dxos/plugin-automation 0.7.5-main.9d26e3a → 0.7.5-main.b19bfc8

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 (364) hide show
  1. package/dist/lib/browser/AssistantDialog-V67OWLRP.mjs +116 -0
  2. package/dist/lib/browser/AssistantDialog-V67OWLRP.mjs.map +7 -0
  3. package/dist/lib/browser/AutomationPanel-NCKK3CFN.mjs +8 -0
  4. package/dist/lib/browser/ChatContainer-5BS6THNV.mjs +33 -0
  5. package/dist/lib/browser/ChatContainer-5BS6THNV.mjs.map +7 -0
  6. package/dist/lib/browser/TemplateContainer-HJJV44CE.mjs +23 -0
  7. package/dist/lib/browser/TemplateContainer-HJJV44CE.mjs.map +7 -0
  8. package/dist/lib/browser/ai-client-T2PBJISL.mjs +22 -0
  9. package/dist/lib/browser/ai-client-T2PBJISL.mjs.map +7 -0
  10. package/dist/lib/browser/app-graph-builder-IR3CGVM6.mjs +110 -0
  11. package/dist/lib/browser/app-graph-builder-IR3CGVM6.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-62E2AEXF.mjs +162 -0
  13. package/dist/lib/browser/chunk-62E2AEXF.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-67KDIIM6.mjs +15 -0
  15. package/dist/lib/browser/chunk-67KDIIM6.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-BQ4WHY4D.mjs +1818 -0
  17. package/dist/lib/browser/chunk-BQ4WHY4D.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-X5KMOH3I.mjs → chunk-HZSTXZWK.mjs} +6 -4
  19. package/dist/lib/browser/chunk-HZSTXZWK.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-LJ7F4KDM.mjs +243 -0
  21. package/dist/lib/browser/chunk-LJ7F4KDM.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-QH5E22EL.mjs +108 -0
  23. package/dist/lib/browser/chunk-QH5E22EL.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-XAIWETH6.mjs +81 -0
  25. package/dist/lib/browser/chunk-XAIWETH6.mjs.map +7 -0
  26. package/dist/lib/browser/index.mjs +210 -467
  27. package/dist/lib/browser/index.mjs.map +4 -4
  28. package/dist/lib/browser/intent-resolver-ICLE6FSI.mjs +44 -0
  29. package/dist/lib/browser/intent-resolver-ICLE6FSI.mjs.map +7 -0
  30. package/dist/lib/browser/meta.json +1 -1
  31. package/dist/lib/browser/react-surface-KEKVLCPQ.mjs +80 -0
  32. package/dist/lib/browser/react-surface-KEKVLCPQ.mjs.map +7 -0
  33. package/dist/lib/browser/settings-FE5DDWOE.mjs +22 -0
  34. package/dist/lib/browser/settings-FE5DDWOE.mjs.map +7 -0
  35. package/dist/lib/browser/types/index.mjs +18 -9
  36. package/dist/lib/node/AssistantDialog-E62O72KI.cjs +140 -0
  37. package/dist/lib/node/AssistantDialog-E62O72KI.cjs.map +7 -0
  38. package/dist/lib/node/{meta.cjs → AutomationPanel-6COLKRIB.cjs} +7 -11
  39. package/dist/lib/node/AutomationPanel-6COLKRIB.cjs.map +7 -0
  40. package/dist/lib/node/ChatContainer-4QTLL7TH.cjs +61 -0
  41. package/dist/lib/node/ChatContainer-4QTLL7TH.cjs.map +7 -0
  42. package/dist/lib/node/TemplateContainer-3YCM6XPU.cjs +53 -0
  43. package/dist/lib/node/TemplateContainer-3YCM6XPU.cjs.map +7 -0
  44. package/dist/lib/node/ai-client-L5GUSAER.cjs +38 -0
  45. package/dist/lib/node/ai-client-L5GUSAER.cjs.map +7 -0
  46. package/dist/lib/node/app-graph-builder-ECNVGTRT.cjs +122 -0
  47. package/dist/lib/node/app-graph-builder-ECNVGTRT.cjs.map +7 -0
  48. package/dist/lib/node/chunk-3QSK6IPK.cjs +133 -0
  49. package/dist/lib/node/chunk-3QSK6IPK.cjs.map +7 -0
  50. package/dist/lib/node/chunk-76F5BCJE.cjs +111 -0
  51. package/dist/lib/node/chunk-76F5BCJE.cjs.map +7 -0
  52. package/dist/lib/node/chunk-B37JIAOP.cjs +1795 -0
  53. package/dist/lib/node/chunk-B37JIAOP.cjs.map +7 -0
  54. package/dist/lib/node/{chunk-DTJ7XVO2.cjs → chunk-BAQRBGOJ.cjs} +11 -8
  55. package/dist/lib/node/chunk-BAQRBGOJ.cjs.map +7 -0
  56. package/dist/lib/node/chunk-UVWK2XJE.cjs +183 -0
  57. package/dist/lib/node/chunk-UVWK2XJE.cjs.map +7 -0
  58. package/dist/lib/node/chunk-V4L7LTWM.cjs +267 -0
  59. package/dist/lib/node/chunk-V4L7LTWM.cjs.map +7 -0
  60. package/dist/lib/node/chunk-VNBYGJ4K.cjs +34 -0
  61. package/dist/lib/node/chunk-VNBYGJ4K.cjs.map +7 -0
  62. package/dist/lib/node/index.cjs +201 -473
  63. package/dist/lib/node/index.cjs.map +4 -4
  64. package/dist/lib/node/intent-resolver-4MQZULXW.cjs +58 -0
  65. package/dist/lib/node/intent-resolver-4MQZULXW.cjs.map +7 -0
  66. package/dist/lib/node/meta.json +1 -1
  67. package/dist/lib/node/react-surface-4RVHY6WI.cjs +95 -0
  68. package/dist/lib/node/react-surface-4RVHY6WI.cjs.map +7 -0
  69. package/dist/lib/node/settings-GOIB2WJQ.cjs +36 -0
  70. package/dist/lib/node/settings-GOIB2WJQ.cjs.map +7 -0
  71. package/dist/lib/node/types/index.cjs +19 -10
  72. package/dist/lib/node/types/index.cjs.map +2 -2
  73. package/dist/lib/node-esm/AssistantDialog-IPRBJKWA.mjs +117 -0
  74. package/dist/lib/node-esm/AssistantDialog-IPRBJKWA.mjs.map +7 -0
  75. package/dist/lib/node-esm/AutomationPanel-3MPIAO7R.mjs +9 -0
  76. package/dist/lib/node-esm/ChatContainer-4IWUGMGM.mjs +34 -0
  77. package/dist/lib/node-esm/ChatContainer-4IWUGMGM.mjs.map +7 -0
  78. package/dist/lib/node-esm/TemplateContainer-YJIXR24Z.mjs +24 -0
  79. package/dist/lib/node-esm/TemplateContainer-YJIXR24Z.mjs.map +7 -0
  80. package/dist/lib/node-esm/ai-client-45LZLW7V.mjs +23 -0
  81. package/dist/lib/node-esm/ai-client-45LZLW7V.mjs.map +7 -0
  82. package/dist/lib/node-esm/app-graph-builder-HMRKSZ2X.mjs +111 -0
  83. package/dist/lib/node-esm/app-graph-builder-HMRKSZ2X.mjs.map +7 -0
  84. package/dist/lib/node-esm/chunk-5BKKHYO5.mjs +163 -0
  85. package/dist/lib/node-esm/chunk-5BKKHYO5.mjs.map +7 -0
  86. package/dist/lib/node-esm/chunk-AWAU4BHR.mjs +244 -0
  87. package/dist/lib/node-esm/chunk-AWAU4BHR.mjs.map +7 -0
  88. package/dist/lib/node-esm/chunk-CAWPHOY4.mjs +82 -0
  89. package/dist/lib/node-esm/chunk-CAWPHOY4.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-I32H7MCF.mjs +109 -0
  91. package/dist/lib/node-esm/chunk-I32H7MCF.mjs.map +7 -0
  92. package/dist/lib/node-esm/{chunk-HNOBZHWK.mjs → chunk-IG4GSWZN.mjs} +6 -4
  93. package/dist/lib/node-esm/chunk-IG4GSWZN.mjs.map +7 -0
  94. package/dist/lib/node-esm/chunk-QHKP5HT2.mjs +1819 -0
  95. package/dist/lib/node-esm/chunk-QHKP5HT2.mjs.map +7 -0
  96. package/dist/lib/node-esm/chunk-SS7U6GCX.mjs +16 -0
  97. package/dist/lib/node-esm/chunk-SS7U6GCX.mjs.map +7 -0
  98. package/dist/lib/node-esm/index.mjs +210 -467
  99. package/dist/lib/node-esm/index.mjs.map +4 -4
  100. package/dist/lib/node-esm/intent-resolver-ZS7XTYLG.mjs +45 -0
  101. package/dist/lib/node-esm/intent-resolver-ZS7XTYLG.mjs.map +7 -0
  102. package/dist/lib/node-esm/meta.json +1 -1
  103. package/dist/lib/node-esm/react-surface-5ILD642V.mjs +81 -0
  104. package/dist/lib/node-esm/react-surface-5ILD642V.mjs.map +7 -0
  105. package/dist/lib/node-esm/settings-ANNQPPRY.mjs +23 -0
  106. package/dist/lib/node-esm/settings-ANNQPPRY.mjs.map +7 -0
  107. package/dist/lib/node-esm/types/index.mjs +18 -9
  108. package/dist/types/src/AutomationPlugin.d.ts +1 -3
  109. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/ai-client.d.ts +5 -0
  111. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/app-graph-builder.d.ts +181 -0
  113. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  115. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/index.d.ts +183 -0
  117. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  118. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  119. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  121. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/settings.d.ts +4 -0
  123. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  124. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +7 -0
  125. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -0
  126. package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts +8 -0
  127. package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts.map +1 -0
  128. package/dist/types/src/components/AmbientDialog/index.d.ts +2 -0
  129. package/dist/types/src/components/AmbientDialog/index.d.ts.map +1 -0
  130. package/dist/types/src/components/AssistantDialog.d.ts +7 -0
  131. package/dist/types/src/components/AssistantDialog.d.ts.map +1 -0
  132. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +1 -2
  133. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  134. package/dist/types/src/components/AutomationSettings/AutomationSettings.d.ts +5 -0
  135. package/dist/types/src/components/AutomationSettings/AutomationSettings.d.ts.map +1 -0
  136. package/dist/types/src/components/AutomationSettings/index.d.ts +2 -0
  137. package/dist/types/src/components/AutomationSettings/index.d.ts.map +1 -0
  138. package/dist/types/src/components/ChatContainer.d.ts +7 -0
  139. package/dist/types/src/components/ChatContainer.d.ts.map +1 -0
  140. package/dist/types/src/components/Prompt/Prompt.d.ts +17 -0
  141. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -0
  142. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +9 -0
  143. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -0
  144. package/dist/types/src/components/Prompt/PromptBar.d.ts +10 -0
  145. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -0
  146. package/dist/types/src/components/Prompt/autocomplete.d.ts +21 -0
  147. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -0
  148. package/dist/types/src/components/Prompt/index.d.ts +3 -0
  149. package/dist/types/src/components/Prompt/index.d.ts.map +1 -0
  150. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +5 -0
  151. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +1 -0
  152. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +8 -0
  153. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +1 -0
  154. package/dist/types/src/components/ServiceRegistry/index.d.ts +2 -0
  155. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +1 -0
  156. package/dist/types/src/components/TemplateContainer.d.ts +7 -0
  157. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -0
  158. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +12 -0
  159. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -0
  160. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +8 -0
  161. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -0
  162. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +10 -0
  163. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -0
  164. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +8 -0
  165. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -0
  166. package/dist/types/src/components/TemplateEditor/index.d.ts +2 -0
  167. package/dist/types/src/components/TemplateEditor/index.d.ts.map +1 -0
  168. package/dist/types/src/components/TemplateEditor/types.d.ts.map +1 -0
  169. package/dist/types/src/components/Thread/Thread.d.ts +17 -0
  170. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -0
  171. package/dist/types/src/components/Thread/Thread.stories.d.ts +11 -0
  172. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -0
  173. package/dist/types/src/components/Thread/ThreadContainer.d.ts +10 -0
  174. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -0
  175. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +15 -0
  176. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -0
  177. package/dist/types/src/components/Thread/ThreadMessage.d.ts +13 -0
  178. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -0
  179. package/dist/types/src/components/Thread/ToolInvocations.d.ts +13 -0
  180. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -0
  181. package/dist/types/src/components/Thread/index.d.ts +3 -0
  182. package/dist/types/src/components/Thread/index.d.ts.map +1 -0
  183. package/dist/types/src/components/Thread/reducer.d.ts +12 -0
  184. package/dist/types/src/components/Thread/reducer.d.ts.map +1 -0
  185. package/dist/types/src/components/Toolbox/Toolbox.d.ts +19 -0
  186. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -0
  187. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +8 -0
  188. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -0
  189. package/dist/types/src/components/Toolbox/index.d.ts +2 -0
  190. package/dist/types/src/components/Toolbox/index.d.ts.map +1 -0
  191. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +1 -3
  192. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  193. package/dist/types/src/components/index.d.ts +19 -2
  194. package/dist/types/src/components/index.d.ts.map +1 -1
  195. package/dist/types/src/hooks/index.d.ts +5 -0
  196. package/dist/types/src/hooks/index.d.ts.map +1 -1
  197. package/dist/types/src/hooks/processor.d.ts +75 -0
  198. package/dist/types/src/hooks/processor.d.ts.map +1 -0
  199. package/dist/types/src/hooks/processor.test.d.ts +2 -0
  200. package/dist/types/src/hooks/processor.test.d.ts.map +1 -0
  201. package/dist/types/src/hooks/useChatProcessor.d.ts +8 -0
  202. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -0
  203. package/dist/types/src/hooks/useMessageQueue.d.ts +41 -0
  204. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -0
  205. package/dist/types/src/hooks/useServices.d.ts +7 -0
  206. package/dist/types/src/hooks/useServices.d.ts.map +1 -0
  207. package/dist/types/src/hooks/useTextInputEvents.d.ts +13 -0
  208. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -0
  209. package/dist/types/src/index.d.ts +2 -4
  210. package/dist/types/src/index.d.ts.map +1 -1
  211. package/dist/types/src/meta.d.ts +2 -2
  212. package/dist/types/src/meta.d.ts.map +1 -1
  213. package/dist/types/src/testing/index.d.ts +2 -1
  214. package/dist/types/src/testing/index.d.ts.map +1 -1
  215. package/dist/types/src/testing/{testing.d.ts → test-functions.d.ts} +3 -1
  216. package/dist/types/src/testing/test-functions.d.ts.map +1 -0
  217. package/dist/types/src/testing/test-services.d.ts +5 -0
  218. package/dist/types/src/testing/test-services.d.ts.map +1 -0
  219. package/dist/types/src/tools/function.d.ts +5 -0
  220. package/dist/types/src/tools/function.d.ts.map +1 -0
  221. package/dist/types/src/tools/index.d.ts +3 -0
  222. package/dist/types/src/tools/index.d.ts.map +1 -0
  223. package/dist/types/src/tools/openapi.d.ts +10 -0
  224. package/dist/types/src/tools/openapi.d.ts.map +1 -0
  225. package/dist/types/src/tools/openapi.test.d.ts +2 -0
  226. package/dist/types/src/tools/openapi.test.d.ts.map +1 -0
  227. package/dist/types/src/translations.d.ts +117 -2
  228. package/dist/types/src/translations.d.ts.map +1 -1
  229. package/dist/types/src/types/chat.d.ts +12 -0
  230. package/dist/types/src/types/chat.d.ts.map +1 -0
  231. package/dist/types/src/types/index.d.ts +3 -1
  232. package/dist/types/src/types/index.d.ts.map +1 -1
  233. package/dist/types/src/types/service.d.ts +160 -0
  234. package/dist/types/src/types/service.d.ts.map +1 -0
  235. package/dist/types/src/types/template.d.ts +40 -0
  236. package/dist/types/src/types/template.d.ts.map +1 -0
  237. package/dist/types/src/types/types.d.ts +35 -5
  238. package/dist/types/src/types/types.d.ts.map +1 -1
  239. package/dist/types/tsconfig.tsbuildinfo +1 -1
  240. package/package.json +62 -48
  241. package/src/AutomationPlugin.tsx +102 -193
  242. package/src/capabilities/ai-client.ts +19 -0
  243. package/src/capabilities/app-graph-builder.ts +99 -0
  244. package/src/capabilities/capabilities.ts +12 -0
  245. package/src/capabilities/index.ts +13 -0
  246. package/src/capabilities/intent-resolver.ts +38 -0
  247. package/src/capabilities/react-surface.tsx +63 -0
  248. package/src/capabilities/settings.ts +19 -0
  249. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +81 -0
  250. package/src/components/AmbientDialog/AmbientDialog.tsx +103 -0
  251. package/src/components/AmbientDialog/index.ts +5 -0
  252. package/src/components/AssistantDialog.tsx +33 -0
  253. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +2 -2
  254. package/src/components/AutomationPanel/AutomationPanel.tsx +54 -37
  255. package/src/components/AutomationSettings/AutomationSettings.tsx +49 -0
  256. package/src/components/AutomationSettings/index.ts +5 -0
  257. package/src/components/ChatContainer.tsx +29 -0
  258. package/src/components/Prompt/Prompt.stories.tsx +79 -0
  259. package/src/components/Prompt/Prompt.tsx +100 -0
  260. package/src/components/Prompt/PromptBar.tsx +100 -0
  261. package/src/components/Prompt/autocomplete.ts +212 -0
  262. package/src/components/Prompt/index.ts +6 -0
  263. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +49 -0
  264. package/src/components/ServiceRegistry/ServiceRegistry.tsx +76 -0
  265. package/src/components/ServiceRegistry/index.ts +5 -0
  266. package/src/components/TemplateContainer.tsx +21 -0
  267. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +72 -0
  268. package/src/components/TemplateEditor/TemplateEditor.tsx +76 -0
  269. package/src/components/TemplateEditor/TemplateForm.stories.tsx +65 -0
  270. package/src/components/TemplateEditor/TemplateForm.tsx +184 -0
  271. package/src/components/{PromptEditor → TemplateEditor}/index.ts +1 -1
  272. package/src/components/Thread/Thread.stories.tsx +212 -0
  273. package/src/components/Thread/Thread.tsx +97 -0
  274. package/src/components/Thread/ThreadContainer.stories.tsx +258 -0
  275. package/src/components/Thread/ThreadContainer.tsx +78 -0
  276. package/src/components/Thread/ThreadMessage.tsx +187 -0
  277. package/src/components/Thread/ToolInvocations.tsx +93 -0
  278. package/src/components/Thread/index.ts +6 -0
  279. package/src/components/Thread/reducer.ts +52 -0
  280. package/src/components/Toolbox/Toolbox.stories.tsx +65 -0
  281. package/src/components/Toolbox/Toolbox.tsx +117 -0
  282. package/src/components/Toolbox/index.ts +5 -0
  283. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +2 -2
  284. package/src/components/TriggerEditor/TriggerEditor.tsx +78 -14
  285. package/src/components/index.ts +11 -1
  286. package/src/hooks/index.ts +6 -0
  287. package/src/hooks/processor.test.ts +15 -0
  288. package/src/hooks/processor.ts +219 -0
  289. package/src/hooks/useChatProcessor.tsx +77 -0
  290. package/src/hooks/useMessageQueue.ts +23 -0
  291. package/src/hooks/useServices.ts +28 -0
  292. package/src/hooks/useTextInputEvents.ts +49 -0
  293. package/src/index.ts +3 -6
  294. package/src/meta.ts +5 -2
  295. package/src/testing/index.ts +2 -1
  296. package/src/testing/{testing.ts → test-functions.ts} +9 -2
  297. package/src/testing/test-services.ts +131 -0
  298. package/src/tools/function.ts +47 -0
  299. package/src/tools/index.ts +6 -0
  300. package/src/tools/openapi.test.ts +224 -0
  301. package/src/tools/openapi.ts +331 -0
  302. package/src/translations.ts +36 -2
  303. package/src/types/chat.ts +11 -0
  304. package/src/types/index.ts +3 -1
  305. package/src/types/service.ts +102 -0
  306. package/src/types/template.ts +34 -0
  307. package/src/types/types.ts +34 -20
  308. package/src/typings.d.ts +9 -0
  309. package/dist/lib/browser/AssistantPanel-32FH2RA6.mjs +0 -339
  310. package/dist/lib/browser/AssistantPanel-32FH2RA6.mjs.map +0 -7
  311. package/dist/lib/browser/AutomationPanel-ABGPG5LE.mjs +0 -151
  312. package/dist/lib/browser/AutomationPanel-ABGPG5LE.mjs.map +0 -7
  313. package/dist/lib/browser/chunk-DN5M2QL5.mjs +0 -49
  314. package/dist/lib/browser/chunk-DN5M2QL5.mjs.map +0 -7
  315. package/dist/lib/browser/chunk-X5KMOH3I.mjs.map +0 -7
  316. package/dist/lib/browser/meta.mjs +0 -9
  317. package/dist/lib/node/AssistantPanel-XANI7YNV.cjs +0 -359
  318. package/dist/lib/node/AssistantPanel-XANI7YNV.cjs.map +0 -7
  319. package/dist/lib/node/AutomationPanel-VADY3HMP.cjs +0 -171
  320. package/dist/lib/node/AutomationPanel-VADY3HMP.cjs.map +0 -7
  321. package/dist/lib/node/chunk-DTJ7XVO2.cjs.map +0 -7
  322. package/dist/lib/node/chunk-NIL4TP6U.cjs +0 -73
  323. package/dist/lib/node/chunk-NIL4TP6U.cjs.map +0 -7
  324. package/dist/lib/node/meta.cjs.map +0 -7
  325. package/dist/lib/node-esm/AssistantPanel-5M6O6JV7.mjs +0 -340
  326. package/dist/lib/node-esm/AssistantPanel-5M6O6JV7.mjs.map +0 -7
  327. package/dist/lib/node-esm/AutomationPanel-EETYIDPA.mjs +0 -152
  328. package/dist/lib/node-esm/AutomationPanel-EETYIDPA.mjs.map +0 -7
  329. package/dist/lib/node-esm/chunk-GCHXTXVT.mjs +0 -51
  330. package/dist/lib/node-esm/chunk-GCHXTXVT.mjs.map +0 -7
  331. package/dist/lib/node-esm/chunk-HNOBZHWK.mjs.map +0 -7
  332. package/dist/lib/node-esm/meta.mjs +0 -10
  333. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts +0 -8
  334. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts.map +0 -1
  335. package/dist/types/src/components/AssistantPanel/index.d.ts +0 -3
  336. package/dist/types/src/components/AssistantPanel/index.d.ts.map +0 -1
  337. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts +0 -6
  338. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts.map +0 -1
  339. package/dist/types/src/components/PromptEditor/PromptEditor.d.ts +0 -10
  340. package/dist/types/src/components/PromptEditor/PromptEditor.d.ts.map +0 -1
  341. package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts +0 -6
  342. package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts.map +0 -1
  343. package/dist/types/src/components/PromptEditor/index.d.ts +0 -2
  344. package/dist/types/src/components/PromptEditor/index.d.ts.map +0 -1
  345. package/dist/types/src/components/PromptEditor/prompt-extension.d.ts +0 -4
  346. package/dist/types/src/components/PromptEditor/prompt-extension.d.ts.map +0 -1
  347. package/dist/types/src/components/PromptEditor/types.d.ts.map +0 -1
  348. package/dist/types/src/presets.d.ts +0 -9
  349. package/dist/types/src/presets.d.ts.map +0 -1
  350. package/dist/types/src/testing/testing.d.ts.map +0 -1
  351. package/dist/types/src/types/schema.d.ts +0 -63
  352. package/dist/types/src/types/schema.d.ts.map +0 -1
  353. package/src/components/AssistantPanel/AssistantPanel.tsx +0 -230
  354. package/src/components/AssistantPanel/index.ts +0 -7
  355. package/src/components/AssistantPanel/system-instructions.ts +0 -166
  356. package/src/components/PromptEditor/PromptEditor.stories.tsx +0 -64
  357. package/src/components/PromptEditor/PromptEditor.tsx +0 -222
  358. package/src/components/PromptEditor/prompt-extension.ts +0 -43
  359. package/src/presets.ts +0 -248
  360. package/src/types/schema.ts +0 -38
  361. /package/dist/lib/browser/{meta.mjs.map → AutomationPanel-NCKK3CFN.mjs.map} +0 -0
  362. /package/dist/lib/node-esm/{meta.mjs.map → AutomationPanel-3MPIAO7R.mjs.map} +0 -0
  363. /package/dist/types/src/components/{PromptEditor → TemplateEditor}/types.d.ts +0 -0
  364. /package/src/components/{PromptEditor → TemplateEditor}/types.tsx +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const AUTOMATION_PLUGIN = 'dxos.org/plugin/automation';\n\nexport default {\n id: AUTOMATION_PLUGIN,\n name: 'Automation',\n description: 'Automation workflows.',\n icon: 'ph--magic-wand--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-automation',\n tags: ['experimental'],\n} satisfies PluginMeta;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,oBAAoB;AAEjC,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;AACT;",
6
- "names": ["AUTOMATION_PLUGIN", "id", "name", "description", "icon", "source", "tags"]
7
- }
@@ -1,73 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_NIL4TP6U_exports = {};
20
- __export(chunk_NIL4TP6U_exports, {
21
- AutomationAction: () => AutomationAction,
22
- ChainInputSchema: () => ChainInputSchema,
23
- ChainInputType: () => ChainInputType,
24
- ChainPromptType: () => ChainPromptType,
25
- ChainType: () => ChainType
26
- });
27
- module.exports = __toCommonJS(chunk_NIL4TP6U_exports);
28
- var import_echo_schema = require("@dxos/echo-schema");
29
- var ChainInputType;
30
- (function(ChainInputType2) {
31
- ChainInputType2[ChainInputType2["VALUE"] = 0] = "VALUE";
32
- ChainInputType2[ChainInputType2["PASS_THROUGH"] = 1] = "PASS_THROUGH";
33
- ChainInputType2[ChainInputType2["RETRIEVER"] = 2] = "RETRIEVER";
34
- ChainInputType2[ChainInputType2["FUNCTION"] = 3] = "FUNCTION";
35
- ChainInputType2[ChainInputType2["QUERY"] = 4] = "QUERY";
36
- ChainInputType2[ChainInputType2["RESOLVER"] = 5] = "RESOLVER";
37
- ChainInputType2[ChainInputType2["CONTEXT"] = 6] = "CONTEXT";
38
- ChainInputType2[ChainInputType2["SCHEMA"] = 7] = "SCHEMA";
39
- })(ChainInputType || (ChainInputType = {}));
40
- var ChainInputSchema = import_echo_schema.S.mutable(import_echo_schema.S.Struct({
41
- name: import_echo_schema.S.String,
42
- type: import_echo_schema.S.optional(import_echo_schema.S.Enums(ChainInputType)),
43
- value: import_echo_schema.S.optional(import_echo_schema.S.String)
44
- }));
45
- var ChainPromptType = class extends (0, import_echo_schema.TypedObject)({
46
- typename: "dxos.org/type/ChainPrompt",
47
- version: "0.1.0"
48
- })({
49
- command: import_echo_schema.S.optional(import_echo_schema.S.String),
50
- template: import_echo_schema.S.String,
51
- inputs: import_echo_schema.S.optional(import_echo_schema.S.mutable(import_echo_schema.S.Array(ChainInputSchema)))
52
- }) {
53
- };
54
- var ChainType = class extends (0, import_echo_schema.TypedObject)({
55
- typename: "dxos.org/type/Chain",
56
- version: "0.1.0"
57
- })({
58
- name: import_echo_schema.S.optional(import_echo_schema.S.String),
59
- prompts: import_echo_schema.S.optional(import_echo_schema.S.mutable(import_echo_schema.S.Array((0, import_echo_schema.Ref)(ChainPromptType))))
60
- }) {
61
- };
62
- var AutomationAction;
63
- /* @__PURE__ */ (function(AutomationAction2) {
64
- })(AutomationAction || (AutomationAction = {}));
65
- // Annotate the CommonJS export names for ESM import in node:
66
- 0 && (module.exports = {
67
- AutomationAction,
68
- ChainInputSchema,
69
- ChainInputType,
70
- ChainPromptType,
71
- ChainType
72
- });
73
- //# sourceMappingURL=chunk-NIL4TP6U.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Ref, S, TypedObject } from '@dxos/echo-schema';\n\n// TODO(burdon): Change to S.Literal (and discriminated union).\nexport enum ChainInputType {\n VALUE = 0,\n PASS_THROUGH = 1,\n RETRIEVER = 2,\n FUNCTION = 3,\n QUERY = 4,\n RESOLVER = 5,\n CONTEXT = 6,\n SCHEMA = 7,\n}\n\nexport const ChainInputSchema = S.mutable(\n S.Struct({\n name: S.String,\n type: S.optional(S.Enums(ChainInputType)),\n value: S.optional(S.String),\n }),\n);\n\nexport type ChainInput = S.Schema.Type<typeof ChainInputSchema>;\n\nexport class ChainPromptType extends TypedObject({ typename: 'dxos.org/type/ChainPrompt', version: '0.1.0' })({\n command: S.optional(S.String),\n template: S.String,\n inputs: S.optional(S.mutable(S.Array(ChainInputSchema))),\n}) {}\n\nexport class ChainType extends TypedObject({ typename: 'dxos.org/type/Chain', version: '0.1.0' })({\n name: S.optional(S.String),\n prompts: S.optional(S.mutable(S.Array(Ref(ChainPromptType)))),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { type PanelProvides } from '@dxos/plugin-deck/types';\nimport { type SchemaProvides } from '@dxos/plugin-space';\n\n// import { AUTOMATION_PLUGIN } from '../meta';\n\n// const AUTOMATION_ACTION = `${AUTOMATION_PLUGIN}/action`;\n\nexport enum AutomationAction {}\n\nexport type AutomationPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n MetadataRecordsProvides &\n TranslationsProvides &\n GraphBuilderProvides &\n SchemaProvides &\n PanelProvides;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAoC;;UAGxBA,iBAAAA;;;;;;;;;GAAAA,mBAAAA,iBAAAA,CAAAA,EAAAA;AAWL,IAAMC,mBAAmBC,qBAAEC,QAChCD,qBAAEE,OAAO;EACPC,MAAMH,qBAAEI;EACRC,MAAML,qBAAEM,SAASN,qBAAEO,MAAMT,cAAAA,CAAAA;EACzBU,OAAOR,qBAAEM,SAASN,qBAAEI,MAAM;AAC5B,CAAA,CAAA;AAKK,IAAMK,kBAAN,kBAA8BC,gCAAY;EAAEC,UAAU;EAA6BC,SAAS;AAAQ,CAAA,EAAG;EAC5GC,SAASb,qBAAEM,SAASN,qBAAEI,MAAM;EAC5BU,UAAUd,qBAAEI;EACZW,QAAQf,qBAAEM,SAASN,qBAAEC,QAAQD,qBAAEgB,MAAMjB,gBAAAA,CAAAA,CAAAA;AACvC,CAAA,EAAA;AAAI;AAEG,IAAMkB,YAAN,kBAAwBP,gCAAY;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,EAAG;EAChGT,MAAMH,qBAAEM,SAASN,qBAAEI,MAAM;EACzBc,SAASlB,qBAAEM,SAASN,qBAAEC,QAAQD,qBAAEgB,UAAMG,wBAAIV,eAAAA,CAAAA,CAAAA,CAAAA;AAC5C,CAAA,EAAA;AAAI;;0BCnBQW,mBAAAA;AAAAA,GAAAA,qBAAAA,mBAAAA,CAAAA,EAAAA;",
6
- "names": ["ChainInputType", "ChainInputSchema", "S", "mutable", "Struct", "name", "String", "type", "optional", "Enums", "value", "ChainPromptType", "TypedObject", "typename", "version", "command", "template", "inputs", "Array", "ChainType", "prompts", "Ref", "AutomationAction"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["meta.cjs"],
4
- "sourcesContent": ["import {\n AUTOMATION_PLUGIN,\n meta_default\n} from \"./chunk-DTJ7XVO2.cjs\";\nexport {\n AUTOMATION_PLUGIN,\n meta_default as default\n};\n//# sourceMappingURL=meta.cjs.map\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;",
6
- "names": []
7
- }
@@ -1,340 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- AUTOMATION_PLUGIN
4
- } from "./chunk-HNOBZHWK.mjs";
5
-
6
- // packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/AssistantPanel.tsx
7
- import React, { useEffect, useRef, useState } from "react";
8
- import { AIServiceClientImpl, ObjectId } from "@dxos/assistant";
9
- import { SpaceId } from "@dxos/keys";
10
- import { useClient, useConfig } from "@dxos/react-client";
11
- import { ContextMenu } from "@dxos/react-ui";
12
- import { Icon, Input, Toolbar, useTranslation } from "@dxos/react-ui";
13
- import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
14
- import { mx } from "@dxos/react-ui-theme";
15
-
16
- // packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/system-instructions.ts
17
- import { asyncTimeout } from "@dxos/async";
18
- import { getTypename } from "@dxos/echo-schema";
19
- import { log } from "@dxos/log";
20
- import { Filter, getSpace, ResultFormat } from "@dxos/react-client/echo";
21
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/system-instructions.ts";
22
- var createSystemInstructions = async (context) => {
23
- let instructions = `
24
- <instructions>
25
- Before replying always think step-by-step on how to proceed.
26
- Print your thoughts inside <cot> tags.
27
-
28
- <example>
29
- <cot>To answer the question I need to ...</cot>
30
- </example>
31
- </instructions>
32
-
33
- <current_time>${(/* @__PURE__ */ new Date()).toLocaleString()}</current_time>
34
- `;
35
- if (context.subject) {
36
- instructions += `
37
- <user_attention>
38
- The user is currently interacting with an object in Composer application:
39
-
40
- ${await formatContextObject(context.subject)}
41
- </user_attention>
42
- `;
43
- }
44
- return looseFormatXml(instructions);
45
- };
46
- var formatContextObject = async (object) => {
47
- let data;
48
- try {
49
- data = await asyncTimeout(preprocessContextObject(object), CONTEXT_OBJECT_QUERY_TIMEOUT);
50
- } catch (err) {
51
- log.error("Failed to preprocess context object:", {
52
- err
53
- }, {
54
- F: __dxlog_file,
55
- L: 48,
56
- S: void 0,
57
- C: (f, a) => f(...a)
58
- });
59
- data = object;
60
- }
61
- if (typeof data === "string") {
62
- return data;
63
- } else {
64
- return `
65
- <object>
66
- <type>${getTypename(object)}</type>
67
- <id>${object.id}</id>
68
- ${formatObjectAsXMLTags(data)}
69
- </object>
70
- `;
71
- }
72
- };
73
- var preprocessContextObject = async (object) => {
74
- const space = getSpace(object);
75
- if (!space) {
76
- return {
77
- ...object
78
- };
79
- }
80
- switch (getTypename(object)) {
81
- // TODO(dmaretskyi): Reference types somehow without plugin-automation depending on other plugins.
82
- case "dxos.org/type/Document": {
83
- const data = space.db.query({
84
- id: object.id
85
- }, {
86
- format: ResultFormat.Plain,
87
- include: {
88
- content: true
89
- }
90
- }).first() ?? {
91
- content: {
92
- content: ""
93
- }
94
- };
95
- return {
96
- ...data,
97
- threads: void 0
98
- };
99
- }
100
- case "dxos.org/type/Table": {
101
- const schema = object.view ? space?.db.schemaRegistry.getSchema(object.view.query.type) : void 0;
102
- const { objects: rows } = (schema && await space.db.query(Filter.schema(schema), {
103
- format: ResultFormat.Plain,
104
- limit: TABLE_ROWS_LIMIT
105
- }).run()) ?? {};
106
- return `
107
- <object>
108
- <id>${object.id}</id>
109
- <type>${getTypename(object)}</type>
110
- ${formatObjectAsXMLTags(object)}
111
-
112
- <rows>
113
- <!-- Limited to first ${TABLE_ROWS_LIMIT} rows. -->
114
- ${rows?.map((row) => `<row>
115
- ${formatObjectAsXMLTags(row)}
116
- </row>`).join("\n")}
117
- </rows>
118
-
119
- `;
120
- }
121
- default:
122
- return {
123
- ...object
124
- };
125
- }
126
- };
127
- var formatObjectAsXMLTags = (object, depth = 1) => {
128
- return Object.entries(object).filter(([key, value]) => [
129
- "string",
130
- "number",
131
- "boolean",
132
- "object"
133
- ].includes(typeof value)).map(([key, value]) => {
134
- if (typeof value === "object" && value !== null) {
135
- if (depth === 0) {
136
- return "";
137
- } else {
138
- return `<${key}>
139
- ${formatObjectAsXMLTags(value, depth - 1)}
140
- </${key}>`;
141
- }
142
- }
143
- return `<${key}>${value}</${key}>`;
144
- }).join("\n");
145
- };
146
- var CONTEXT_OBJECT_QUERY_TIMEOUT = 5e3;
147
- var TABLE_ROWS_LIMIT = 10;
148
- var looseFormatXml = (xml) => {
149
- let currentIndent = 0;
150
- return xml.split("\n").map((line) => {
151
- if (line.match(RE_CLOSE_TAG_LINE)) {
152
- currentIndent--;
153
- }
154
- const indent = currentIndent;
155
- if (line.match(RE_OPEN_TAG_LINE)) {
156
- currentIndent++;
157
- }
158
- return " ".repeat(indent * 2) + line.trimStart();
159
- }).join("\n");
160
- };
161
- var RE_OPEN_TAG_LINE = /^[ ]*<[a-zA-Z0-9\-_]+>[ ]*$/;
162
- var RE_CLOSE_TAG_LINE = /^[ ]*<\/[a-zA-Z0-9\-_]+>[ ]*$/;
163
-
164
- // packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/AssistantPanel.tsx
165
- var PROPERTIES_ASSISTANT_KEY = "dxos.assistant.beta.properties";
166
- var AssistantPanel = ({ subject, classNames }) => {
167
- const { t } = useTranslation(AUTOMATION_PLUGIN);
168
- const config = useConfig();
169
- const client = useClient();
170
- const aiClient = useRef();
171
- const [contextSpaceId, setContextSpaceId] = useState();
172
- const [threadId, setThreadId] = useState();
173
- const [history, setHistory] = useState([]);
174
- const [input, setInput] = useState("");
175
- useEffect(() => {
176
- if (!aiClient.current) {
177
- const endpoint = config.values.runtime?.services?.ai?.server;
178
- if (!endpoint) {
179
- throw new Error("AI service endpoint is not configured");
180
- }
181
- aiClient.current = new AIServiceClientImpl({
182
- endpoint
183
- });
184
- }
185
- queueMicrotask(async () => {
186
- const properties = client.spaces.default.properties;
187
- properties[PROPERTIES_ASSISTANT_KEY] ??= {};
188
- properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId ??= SpaceId.random();
189
- properties[PROPERTIES_ASSISTANT_KEY].threadId ??= ObjectId.random();
190
- const contextSpaceId2 = properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId;
191
- const threadId2 = properties[PROPERTIES_ASSISTANT_KEY].threadId;
192
- setContextSpaceId(contextSpaceId2);
193
- setThreadId(threadId2);
194
- const messages = await aiClient.current.getMessagesInThread(contextSpaceId2, threadId2);
195
- setHistory(messages);
196
- });
197
- }, []);
198
- const handleRequest = async (input2) => {
199
- if (input2 === "") {
200
- return;
201
- }
202
- setInput("");
203
- const userMessage = {
204
- id: ObjectId.random(),
205
- spaceId: contextSpaceId,
206
- threadId,
207
- role: "user",
208
- content: [
209
- {
210
- type: "text",
211
- text: input2
212
- }
213
- ]
214
- };
215
- await aiClient.current.insertMessages([
216
- userMessage
217
- ]);
218
- setHistory([
219
- ...history,
220
- userMessage
221
- ]);
222
- const generationStream = await aiClient.current.generate({
223
- model: "@anthropic/claude-3-5-sonnet-20241022",
224
- spaceId: contextSpaceId,
225
- threadId,
226
- tools: [],
227
- systemPrompt: await getSystemPrompt()
228
- });
229
- const historyBefore = [
230
- ...history,
231
- userMessage
232
- ];
233
- for await (const _event of generationStream) {
234
- setHistory([
235
- ...historyBefore,
236
- ...generationStream.accumulatedMessages
237
- ]);
238
- }
239
- await aiClient.current.insertMessages(await generationStream.complete());
240
- };
241
- const getSystemPrompt = async () => {
242
- return createSystemInstructions({
243
- subject
244
- });
245
- };
246
- const clearThread = async () => {
247
- const properties = client.spaces.default.properties;
248
- properties[PROPERTIES_ASSISTANT_KEY] ??= {};
249
- properties[PROPERTIES_ASSISTANT_KEY].threadId = ObjectId.random();
250
- const threadId2 = properties[PROPERTIES_ASSISTANT_KEY].threadId;
251
- setThreadId(threadId2);
252
- const messages = await aiClient.current.getMessagesInThread(contextSpaceId, threadId2);
253
- setHistory(messages);
254
- };
255
- return /* @__PURE__ */ React.createElement("div", {
256
- className: mx("flex flex-col h-full overflow-hidden", classNames)
257
- }, history.length > 0 && /* @__PURE__ */ React.createElement("div", {
258
- className: "flex flex-col gap-6 h-full p-2 overflow-x-hidden overflow-y-auto"
259
- }, history.map((message) => /* @__PURE__ */ React.createElement(MessageItem, {
260
- key: message.id,
261
- message
262
- }))), /* @__PURE__ */ React.createElement(Toolbar.Root, {
263
- classNames: "p-1"
264
- }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
265
- autoFocus: true,
266
- placeholder: t("ask me anything"),
267
- value: input,
268
- onChange: (ev) => setInput(ev.target.value),
269
- onKeyDown: (ev) => ev.key === "Enter" && handleRequest(input)
270
- })), /* @__PURE__ */ React.createElement(ContextMenu.Root, null, /* @__PURE__ */ React.createElement(ContextMenu.Trigger, {
271
- asChild: true
272
- }, /* @__PURE__ */ React.createElement(Toolbar.Button, {
273
- onClick: () => handleRequest(input)
274
- }, /* @__PURE__ */ React.createElement(Icon, {
275
- icon: "ph--play--regular",
276
- size: 4
277
- }))), /* @__PURE__ */ React.createElement(ContextMenu.Portal, null, /* @__PURE__ */ React.createElement(ContextMenu.Content, null, /* @__PURE__ */ React.createElement(ContextMenu.Viewport, null, /* @__PURE__ */ React.createElement(ContextMenu.Item, {
278
- onClick: clearThread
279
- }, "Clear thread"), /* @__PURE__ */ React.createElement(ContextMenu.Item, {
280
- onClick: async () => console.log(await getSystemPrompt())
281
- }, "Print instructions to console")))))));
282
- };
283
- var MessageItem = ({ classNames, message }) => {
284
- const { id: _, role, content } = message;
285
- const styleContainer = "flex flex-col overflow-x-hidden overflow-y-auto rounded-md gap-2 divide-y divide-separator";
286
- return /* @__PURE__ */ React.createElement("div", {
287
- className: mx("flex", role === "user" ? "ml-[1rem] justify-end" : "mr-[1rem]", classNames)
288
- }, content.map((content2, i) => {
289
- switch (content2.type) {
290
- case "text": {
291
- const { cot, message: message2 } = parseMessage(content2.text);
292
- return /* @__PURE__ */ React.createElement("div", {
293
- key: i,
294
- role: "none",
295
- className: mx(styleContainer, role === "user" ? "bg-primary-400 dark:bg-primary-600" : "bg-hoverSurface")
296
- }, cot && /* @__PURE__ */ React.createElement("div", {
297
- className: "p-2 whitespace-pre-wrap text-xs text-subdued"
298
- }, cot), /* @__PURE__ */ React.createElement("div", {
299
- className: "p-2 whitespace-pre-wrap"
300
- }, message2));
301
- }
302
- case "tool_use": {
303
- return /* @__PURE__ */ React.createElement("div", {
304
- key: i,
305
- className: mx(styleContainer, "text-xs")
306
- }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("span", {
307
- className: "p-2 text-primary"
308
- }, "Tool use"), ": ", content2.name, " ", content2.id), /* @__PURE__ */ React.createElement(SyntaxHighlighter, {
309
- language: "json"
310
- }, content2.inputJson));
311
- }
312
- case "tool_result": {
313
- return /* @__PURE__ */ React.createElement("div", {
314
- key: i,
315
- className: mx(styleContainer, "text-xs", content2.isError && "text-error")
316
- }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("span", {
317
- className: "p-2 text-primary"
318
- }, "Tool result"), ": ", content2.toolUseId), /* @__PURE__ */ React.createElement(SyntaxHighlighter, {
319
- language: "json"
320
- }, content2.content));
321
- }
322
- }
323
- return null;
324
- }));
325
- };
326
- var parseMessage = (text) => {
327
- const regex = /<cot>([\s\S]*?)<\/cot>\s*([\s\S]*)/;
328
- const match = text.match(regex);
329
- return {
330
- cot: match?.[1].trim(),
331
- message: match?.[2] ?? text ?? "\xD8"
332
- };
333
- };
334
-
335
- // packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/index.ts
336
- var AssistantPanel_default = AssistantPanel;
337
- export {
338
- AssistantPanel_default as default
339
- };
340
- //# sourceMappingURL=AssistantPanel-5M6O6JV7.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/AssistantPanel/AssistantPanel.tsx", "../../../src/components/AssistantPanel/system-instructions.ts", "../../../src/components/AssistantPanel/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { type AIServiceClient, AIServiceClientImpl, ObjectId, type Message } from '@dxos/assistant';\nimport type { ReactiveEchoObject } from '@dxos/echo-db';\nimport { SpaceId } from '@dxos/keys';\nimport { useClient, useConfig } from '@dxos/react-client';\nimport { ContextMenu, type ThemedClassName } from '@dxos/react-ui';\nimport { Icon, Input, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { createSystemInstructions } from './system-instructions';\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nconst PROPERTIES_ASSISTANT_KEY = 'dxos.assistant.beta.properties';\n\nexport type AssistantPanelProps = ThemedClassName<{\n subject?: ReactiveEchoObject<any>;\n}>;\n\nexport const AssistantPanel = ({ subject, classNames }: AssistantPanelProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const config = useConfig();\n const client = useClient();\n const aiClient = useRef<AIServiceClient>();\n const [contextSpaceId, setContextSpaceId] = useState<SpaceId | undefined>();\n const [threadId, setThreadId] = useState<ObjectId | undefined>();\n const [history, setHistory] = useState<Message[]>([]);\n const [input, setInput] = useState('');\n\n useEffect(() => {\n if (!aiClient.current) {\n const endpoint = config.values.runtime?.services?.ai?.server;\n if (!endpoint) {\n throw new Error('AI service endpoint is not configured');\n }\n aiClient.current = new AIServiceClientImpl({\n endpoint,\n });\n }\n\n queueMicrotask(async () => {\n const properties = client.spaces.default.properties;\n\n properties[PROPERTIES_ASSISTANT_KEY] ??= {};\n properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId ??= SpaceId.random();\n properties[PROPERTIES_ASSISTANT_KEY].threadId ??= ObjectId.random();\n\n const contextSpaceId = properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId;\n const threadId = properties[PROPERTIES_ASSISTANT_KEY].threadId;\n\n setContextSpaceId(contextSpaceId);\n setThreadId(threadId);\n\n const messages = await aiClient.current!.getMessagesInThread(contextSpaceId, threadId);\n setHistory(messages);\n });\n }, []);\n\n const handleRequest = async (input: string) => {\n if (input === '') {\n return;\n }\n\n setInput('');\n\n // TODO(dmaretskyi): Can we call `create(Message, { ... })` here?\n const userMessage: Message = {\n id: ObjectId.random(),\n spaceId: contextSpaceId!,\n threadId: threadId!,\n role: 'user',\n content: [{ type: 'text', text: input }],\n };\n await aiClient.current!.insertMessages([userMessage]);\n setHistory([...history, userMessage]);\n\n const generationStream = await aiClient.current!.generate({\n model: '@anthropic/claude-3-5-sonnet-20241022',\n spaceId: contextSpaceId!,\n threadId: threadId!,\n tools: [],\n systemPrompt: await getSystemPrompt(),\n });\n\n const historyBefore = [...history, userMessage];\n for await (const _event of generationStream) {\n setHistory([...historyBefore, ...generationStream.accumulatedMessages]);\n }\n\n await aiClient.current!.insertMessages(await generationStream.complete());\n };\n\n const getSystemPrompt = async () => {\n return createSystemInstructions({ subject });\n };\n\n const clearThread = async () => {\n const properties = client.spaces.default.properties;\n\n properties[PROPERTIES_ASSISTANT_KEY] ??= {};\n // properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId ??= SpaceId.random();\n properties[PROPERTIES_ASSISTANT_KEY].threadId = ObjectId.random();\n\n // const contextSpaceId = properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId;\n const threadId = properties[PROPERTIES_ASSISTANT_KEY].threadId;\n\n // setContextSpaceId(contextSpaceId);\n setThreadId(threadId);\n\n const messages = await aiClient.current!.getMessagesInThread(contextSpaceId!, threadId);\n setHistory(messages);\n };\n\n // TODO(burdon): Factor out with script plugin.\n return (\n <div className={mx('flex flex-col h-full overflow-hidden', classNames)}>\n {history.length > 0 && (\n <div className='flex flex-col gap-6 h-full p-2 overflow-x-hidden overflow-y-auto'>\n {history.map((message) => (\n <MessageItem key={message.id} message={message} />\n ))}\n </div>\n )}\n\n <Toolbar.Root classNames='p-1'>\n <Input.Root>\n <Input.TextInput\n autoFocus\n placeholder={t('ask me anything')}\n value={input}\n onChange={(ev) => setInput(ev.target.value)}\n onKeyDown={(ev) => ev.key === 'Enter' && handleRequest(input)}\n />\n </Input.Root>\n <ContextMenu.Root>\n <ContextMenu.Trigger asChild>\n <Toolbar.Button onClick={() => handleRequest(input)}>\n <Icon icon='ph--play--regular' size={4} />\n </Toolbar.Button>\n </ContextMenu.Trigger>\n <ContextMenu.Portal>\n <ContextMenu.Content>\n <ContextMenu.Viewport>\n <ContextMenu.Item onClick={clearThread}>Clear thread</ContextMenu.Item>\n <ContextMenu.Item onClick={async () => console.log(await getSystemPrompt())}>\n Print instructions to console\n </ContextMenu.Item>\n </ContextMenu.Viewport>\n </ContextMenu.Content>\n </ContextMenu.Portal>\n </ContextMenu.Root>\n\n {/* <Toolbar.Button onClick={() => (state ? handleStop() : handleClear())}>\n <Icon icon={state ? 'ph--stop--regular' : 'ph--trash--regular'} size={4} />\n </Toolbar.Button> */}\n </Toolbar.Root>\n </div>\n );\n};\n\nconst MessageItem = ({ classNames, message }: ThemedClassName<{ message: Message }>) => {\n const { id: _, role, content } = message;\n const styleContainer = 'flex flex-col overflow-x-hidden overflow-y-auto rounded-md gap-2 divide-y divide-separator';\n\n return (\n <div className={mx('flex', role === 'user' ? 'ml-[1rem] justify-end' : 'mr-[1rem]', classNames)}>\n {content.map((content, i) => {\n switch (content.type) {\n case 'text': {\n const { cot, message } = parseMessage(content.text);\n return (\n <div\n key={i}\n role='none'\n className={mx(\n styleContainer,\n role === 'user' ? 'bg-primary-400 dark:bg-primary-600' : 'bg-hoverSurface',\n )}\n >\n {cot && <div className='p-2 whitespace-pre-wrap text-xs text-subdued'>{cot}</div>}\n <div className='p-2 whitespace-pre-wrap'>{message}</div>\n </div>\n );\n }\n\n case 'tool_use': {\n return (\n <div key={i} className={mx(styleContainer, 'text-xs')}>\n <div>\n <span className='p-2 text-primary'>Tool use</span>: {content.name} {content.id}\n </div>\n <SyntaxHighlighter language='json'>{content.inputJson}</SyntaxHighlighter>\n </div>\n );\n }\n\n case 'tool_result': {\n return (\n <div key={i} className={mx(styleContainer, 'text-xs', content.isError && 'text-error')}>\n <div>\n <span className='p-2 text-primary'>Tool result</span>: {content.toolUseId}\n </div>\n <SyntaxHighlighter language='json'>{content.content}</SyntaxHighlighter>\n </div>\n );\n }\n }\n\n return null;\n })}\n </div>\n );\n};\n\n// TODO(burdon): Move to server-side parsing.\nconst parseMessage = (text: string): { cot?: string; message: string } => {\n const regex = /<cot>([\\s\\S]*?)<\\/cot>\\s*([\\s\\S]*)/;\n const match = text.match(regex);\n return {\n cot: match?.[1].trim(),\n message: match?.[2] ?? text ?? '\\u00D8',\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { asyncTimeout } from '@dxos/async';\nimport type { ReactiveEchoObject } from '@dxos/echo-db';\nimport { getTypename } from '@dxos/echo-schema';\nimport { log } from '@dxos/log';\nimport { Filter, getSpace, ResultFormat } from '@dxos/react-client/echo';\n\n// TODO(burdon): Move into assistant-protocol.\nexport type ThreadContext = {\n subject?: ReactiveEchoObject<any>;\n};\n\nexport const createSystemInstructions = async (context: ThreadContext): Promise<string> => {\n let instructions = `\n <instructions>\n Before replying always think step-by-step on how to proceed.\n Print your thoughts inside <cot> tags.\n\n <example>\n <cot>To answer the question I need to ...</cot>\n </example>\n </instructions>\n\n <current_time>${new Date().toLocaleString()}</current_time>\n `;\n\n if (context.subject) {\n instructions += `\n <user_attention>\n The user is currently interacting with an object in Composer application:\n\n ${await formatContextObject(context.subject)}\n </user_attention>\n `;\n }\n\n return looseFormatXml(instructions);\n};\n\nconst formatContextObject = async (object: ReactiveEchoObject<any>): Promise<string> => {\n let data;\n try {\n data = await asyncTimeout(preprocessContextObject(object), CONTEXT_OBJECT_QUERY_TIMEOUT);\n } catch (err: any) {\n log.error('Failed to preprocess context object:', { err });\n data = object;\n }\n\n if (typeof data === 'string') {\n return data;\n } else {\n return `\n <object>\n <type>${getTypename(object)}</type>\n <id>${object.id}</id>\n ${formatObjectAsXMLTags(data)}\n </object>\n `;\n }\n};\n\nconst preprocessContextObject = async (object: ReactiveEchoObject<any>): Promise<Record<string, any> | string> => {\n const space = getSpace(object);\n if (!space) {\n return { ...object };\n }\n\n // TODO(dmaretskyi): Serialize based on schema annotations.\n switch (getTypename(object)) {\n // TODO(dmaretskyi): Reference types somehow without plugin-automation depending on other plugins.\n case 'dxos.org/type/Document': {\n const data = space.db\n .query({ id: object.id }, { format: ResultFormat.Plain, include: { content: true } })\n .first() ?? { content: { content: '' } };\n\n return {\n ...data,\n threads: undefined,\n };\n }\n\n case 'dxos.org/type/Table': {\n // TODO(dmaretskyi): Load references.\n const schema = object.view ? space?.db.schemaRegistry.getSchema(object.view.query.type) : undefined;\n const { objects: rows } =\n (schema &&\n (await space.db\n .query(Filter.schema(schema), { format: ResultFormat.Plain, limit: TABLE_ROWS_LIMIT })\n .run())) ??\n {};\n\n // TODO(dmaretskyi): Format table schema.\n return `\n <object>\n <id>${object.id}</id>\n <type>${getTypename(object)}</type>\n ${formatObjectAsXMLTags(object)}\n\n <rows>\n <!-- Limited to first ${TABLE_ROWS_LIMIT} rows. -->\n ${rows\n ?.map(\n (row: any) => `<row>\n ${formatObjectAsXMLTags(row)}\n </row>`,\n )\n .join('\\n')}\n </rows>\n\n `;\n }\n\n default:\n return { ...object };\n }\n};\n\nconst formatObjectAsXMLTags = (object: any, depth = 1): string => {\n return Object.entries(object)\n .filter(([key, value]) => ['string', 'number', 'boolean', 'object'].includes(typeof value))\n .map(([key, value]) => {\n if (typeof value === 'object' && value !== null) {\n if (depth === 0) {\n return '';\n } else {\n return `<${key}>\n ${formatObjectAsXMLTags(value, depth - 1)}\n </${key}>`;\n }\n }\n\n return `<${key}>${value}</${key}>`;\n })\n .join('\\n');\n};\n\nconst CONTEXT_OBJECT_QUERY_TIMEOUT = 5_000;\n\nconst TABLE_ROWS_LIMIT = 10;\n\n/**\n * Formats XML indentation for instructions so they are easier to read during debugging.\n */\nconst looseFormatXml = (xml: string): string => {\n let currentIndent = 0;\n\n return xml\n .split('\\n')\n .map((line) => {\n if (line.match(RE_CLOSE_TAG_LINE)) {\n currentIndent--;\n }\n const indent = currentIndent;\n if (line.match(RE_OPEN_TAG_LINE)) {\n currentIndent++;\n }\n return ' '.repeat(indent * 2) + line.trimStart();\n })\n .join('\\n');\n};\n\nconst RE_OPEN_TAG_LINE = /^[ ]*<[a-zA-Z0-9\\-_]+>[ ]*$/;\nconst RE_CLOSE_TAG_LINE = /^[ ]*<\\/[a-zA-Z0-9\\-_]+>[ ]*$/;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { AssistantPanel } from './AssistantPanel';\n\nexport default AssistantPanel;\n"],
5
- "mappings": "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",
6
- "names": ["React", "useEffect", "useRef", "useState", "AIServiceClientImpl", "ObjectId", "SpaceId", "useClient", "useConfig", "ContextMenu", "Icon", "Input", "Toolbar", "useTranslation", "SyntaxHighlighter", "mx", "asyncTimeout", "getTypename", "log", "Filter", "getSpace", "ResultFormat", "createSystemInstructions", "context", "instructions", "Date", "toLocaleString", "subject", "formatContextObject", "looseFormatXml", "object", "data", "preprocessContextObject", "CONTEXT_OBJECT_QUERY_TIMEOUT", "err", "error", "id", "formatObjectAsXMLTags", "space", "db", "query", "format", "Plain", "include", "content", "first", "threads", "undefined", "schema", "view", "schemaRegistry", "getSchema", "type", "objects", "rows", "limit", "TABLE_ROWS_LIMIT", "run", "map", "row", "join", "depth", "Object", "entries", "filter", "key", "value", "includes", "xml", "currentIndent", "split", "line", "match", "RE_CLOSE_TAG_LINE", "indent", "RE_OPEN_TAG_LINE", "repeat", "trimStart", "PROPERTIES_ASSISTANT_KEY", "AssistantPanel", "subject", "classNames", "t", "useTranslation", "AUTOMATION_PLUGIN", "config", "useConfig", "client", "useClient", "aiClient", "useRef", "contextSpaceId", "setContextSpaceId", "useState", "threadId", "setThreadId", "history", "setHistory", "input", "setInput", "useEffect", "current", "endpoint", "values", "runtime", "services", "ai", "server", "Error", "AIServiceClientImpl", "queueMicrotask", "properties", "spaces", "default", "SpaceId", "random", "ObjectId", "messages", "getMessagesInThread", "handleRequest", "userMessage", "id", "spaceId", "role", "content", "type", "text", "insertMessages", "generationStream", "generate", "model", "tools", "systemPrompt", "getSystemPrompt", "historyBefore", "_event", "accumulatedMessages", "complete", "createSystemInstructions", "clearThread", "div", "className", "mx", "length", "map", "message", "MessageItem", "key", "Toolbar", "Root", "Input", "TextInput", "autoFocus", "placeholder", "value", "onChange", "ev", "target", "onKeyDown", "ContextMenu", "Trigger", "asChild", "Button", "onClick", "Icon", "icon", "size", "Portal", "Content", "Viewport", "Item", "console", "log", "_", "styleContainer", "i", "cot", "parseMessage", "span", "name", "SyntaxHighlighter", "language", "inputJson", "isError", "toolUseId", "regex", "match", "trim", "AssistantPanel"]
7
- }
@@ -1,152 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- AUTOMATION_PLUGIN
4
- } from "./chunk-HNOBZHWK.mjs";
5
-
6
- // packages/plugins/experimental/plugin-automation/src/components/AutomationPanel/AutomationPanel.tsx
7
- import React2, { useState } from "react";
8
- import { S } from "@dxos/echo-schema";
9
- import { FunctionType as FunctionType2, FunctionTrigger, FunctionTriggerSchema as FunctionTriggerSchema2, ScriptType as ScriptType2 } from "@dxos/functions";
10
- import { useClient } from "@dxos/react-client";
11
- import { create, Filter as Filter2, useQuery as useQuery2, getSpace } from "@dxos/react-client/echo";
12
- import { IconButton, Input, useTranslation as useTranslation2, Button } from "@dxos/react-ui";
13
- import { List } from "@dxos/react-ui-list";
14
- import { ghostHover, mx } from "@dxos/react-ui-theme";
15
-
16
- // packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/TriggerEditor.tsx
17
- import React from "react";
18
- import { FunctionType, FunctionTriggerSchema, ScriptType, TriggerKind } from "@dxos/functions";
19
- import { Filter, useQuery } from "@dxos/react-client/echo";
20
- import { useTranslation } from "@dxos/react-ui";
21
- import { Form, SelectInput } from "@dxos/react-ui-form";
22
- var TriggerEditor = ({ space, trigger, onSave, onCancel, storedTrigger }) => {
23
- const { t } = useTranslation(AUTOMATION_PLUGIN);
24
- const functions = useQuery(space, Filter.schema(FunctionType));
25
- const scripts = useQuery(space, Filter.schema(ScriptType));
26
- const handleSave = (values) => {
27
- onSave?.(values);
28
- };
29
- return /* @__PURE__ */ React.createElement(Form, {
30
- schema: FunctionTriggerSchema,
31
- values: trigger,
32
- filter: (props) => props.filter((p) => p.name !== "meta"),
33
- onSave: handleSave,
34
- onCancel,
35
- Custom: {
36
- ["function"]: (props) => /* @__PURE__ */ React.createElement(SelectInput, {
37
- ...props,
38
- options: functions.map((fn) => ({
39
- value: fn.name,
40
- label: getFunctionName(scripts, fn)
41
- }))
42
- }),
43
- ["spec.type"]: (props) => /* @__PURE__ */ React.createElement(SelectInput, {
44
- ...props,
45
- options: Object.values(TriggerKind).map((kind) => ({
46
- value: kind,
47
- label: t(`trigger type ${kind}`)
48
- }))
49
- })
50
- }
51
- });
52
- };
53
- var getFunctionName = (scripts, fn) => {
54
- return scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
55
- };
56
-
57
- // packages/plugins/experimental/plugin-automation/src/components/AutomationPanel/AutomationPanel.tsx
58
- var grid = "grid grid-cols-[40px_1fr_32px] min-bs-[2.5rem]";
59
- var AutomationPanel = ({ space }) => {
60
- const { t } = useTranslation2(AUTOMATION_PLUGIN);
61
- const client = useClient();
62
- const triggers = useQuery2(space, Filter2.schema(FunctionTrigger));
63
- const functions = useQuery2(space, Filter2.schema(FunctionType2));
64
- const scripts = useQuery2(space, Filter2.schema(ScriptType2));
65
- const [trigger, setTrigger] = useState();
66
- const [selected, setSelected] = useState();
67
- const handleSelect = (trigger2) => {
68
- const { id: _, ...values } = trigger2;
69
- setTrigger(values);
70
- setSelected(trigger2);
71
- };
72
- const handleAdd = () => {
73
- setTrigger(create(FunctionTriggerSchema2, {}));
74
- setSelected(void 0);
75
- };
76
- const handleDelete = (trigger2) => {
77
- space.db.remove(trigger2);
78
- setTrigger(void 0);
79
- setSelected(void 0);
80
- };
81
- const handleSave = (trigger2) => {
82
- if (selected) {
83
- Object.assign(selected, trigger2);
84
- } else {
85
- space.db.add(create(FunctionTrigger, trigger2));
86
- }
87
- setTrigger(void 0);
88
- setSelected(void 0);
89
- };
90
- const handleCancel = () => {
91
- setTrigger(void 0);
92
- };
93
- return /* @__PURE__ */ React2.createElement("div", {
94
- className: "flex flex-col w-full divide-y divide-separator overflow-y-auto"
95
- }, /* @__PURE__ */ React2.createElement(List.Root, {
96
- items: triggers,
97
- isItem: S.is(FunctionTrigger),
98
- getId: (field) => field.id
99
- }, ({ items: triggers2 }) => /* @__PURE__ */ React2.createElement("div", {
100
- role: "list",
101
- className: "flex flex-col w-full"
102
- }, triggers2?.map((trigger2) => /* @__PURE__ */ React2.createElement(List.Item, {
103
- key: trigger2.id,
104
- item: trigger2,
105
- classNames: mx(grid, ghostHover, "items-center")
106
- }, /* @__PURE__ */ React2.createElement(Input.Root, null, /* @__PURE__ */ React2.createElement(Input.Switch, {
107
- checked: trigger2.enabled,
108
- onCheckedChange: (checked) => trigger2.enabled = checked
109
- })), /* @__PURE__ */ React2.createElement("div", {
110
- className: "flex"
111
- }, /* @__PURE__ */ React2.createElement(List.ItemTitle, {
112
- classNames: "px-2 cursor-pointer w-0 shrink",
113
- onClick: () => handleSelect(trigger2)
114
- }, getFunctionName2(scripts, functions, trigger2)), /* @__PURE__ */ React2.createElement(Button, {
115
- onClick: () => navigator.clipboard.writeText(getWebhookUrl(client, trigger2))
116
- }, "Copy URL")), /* @__PURE__ */ React2.createElement(List.ItemDeleteButton, {
117
- onClick: () => handleDelete(trigger2)
118
- }))))), trigger && /* @__PURE__ */ React2.createElement(TriggerEditor, {
119
- space,
120
- storedTrigger: selected,
121
- trigger,
122
- onSave: handleSave,
123
- onCancel: handleCancel
124
- }), !trigger && /* @__PURE__ */ React2.createElement("div", {
125
- className: "flex p-2 justify-center"
126
- }, /* @__PURE__ */ React2.createElement(IconButton, {
127
- icon: "ph--plus--regular",
128
- label: t("new trigger"),
129
- onClick: handleAdd
130
- })));
131
- };
132
- var getWebhookUrl = (client, trigger) => {
133
- const spaceId = getSpace(trigger).id;
134
- const edgeUrl = new URL(client.config.values.runtime.services.edge.url);
135
- const isSecure = edgeUrl.protocol.startsWith("https") || edgeUrl.protocol.startsWith("wss");
136
- edgeUrl.protocol = isSecure ? "https" : "http";
137
- return new URL(`/webhook/${spaceId}:${trigger.id}`, edgeUrl).toString();
138
- };
139
- var getFunctionName2 = (scripts, functions, trigger) => {
140
- const functionObject = functions.find((fn) => fn.name === trigger.function);
141
- if (!functionObject) {
142
- return trigger.function;
143
- }
144
- return scripts.find((s) => functionObject.source?.target?.id === s.id)?.name ?? functionObject.name;
145
- };
146
-
147
- // packages/plugins/experimental/plugin-automation/src/components/AutomationPanel/index.ts
148
- var AutomationPanel_default = AutomationPanel;
149
- export {
150
- AutomationPanel_default as default
151
- };
152
- //# sourceMappingURL=AutomationPanel-EETYIDPA.mjs.map