@dxos/plugin-automation 0.7.5-main.9d2a38b → 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 (370) 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/AutomationPanel-NCKK3CFN.mjs.map +7 -0
  5. package/dist/lib/browser/ChatContainer-5BS6THNV.mjs +33 -0
  6. package/dist/lib/browser/ChatContainer-5BS6THNV.mjs.map +7 -0
  7. package/dist/lib/browser/TemplateContainer-HJJV44CE.mjs +23 -0
  8. package/dist/lib/browser/TemplateContainer-HJJV44CE.mjs.map +7 -0
  9. package/dist/lib/browser/ai-client-T2PBJISL.mjs +22 -0
  10. package/dist/lib/browser/ai-client-T2PBJISL.mjs.map +7 -0
  11. package/dist/lib/browser/app-graph-builder-IR3CGVM6.mjs +110 -0
  12. package/dist/lib/browser/app-graph-builder-IR3CGVM6.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-62E2AEXF.mjs +162 -0
  14. package/dist/lib/browser/chunk-62E2AEXF.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-67KDIIM6.mjs +15 -0
  16. package/dist/lib/browser/chunk-67KDIIM6.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-BQ4WHY4D.mjs +1818 -0
  18. package/dist/lib/browser/chunk-BQ4WHY4D.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-HKX3D3ZP.mjs → chunk-HZSTXZWK.mjs} +4 -2
  20. package/dist/lib/browser/chunk-HZSTXZWK.mjs.map +7 -0
  21. package/dist/lib/{node-esm/AutomationPanel-R3D6CRF5.mjs → browser/chunk-LJ7F4KDM.mjs} +31 -21
  22. package/dist/lib/browser/chunk-LJ7F4KDM.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-QH5E22EL.mjs +108 -0
  24. package/dist/lib/browser/chunk-QH5E22EL.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-XAIWETH6.mjs +81 -0
  26. package/dist/lib/browser/chunk-XAIWETH6.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +163 -273
  28. package/dist/lib/browser/index.mjs.map +4 -4
  29. package/dist/lib/browser/intent-resolver-ICLE6FSI.mjs +44 -0
  30. package/dist/lib/browser/intent-resolver-ICLE6FSI.mjs.map +7 -0
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/react-surface-KEKVLCPQ.mjs +80 -0
  33. package/dist/lib/browser/react-surface-KEKVLCPQ.mjs.map +7 -0
  34. package/dist/lib/browser/settings-FE5DDWOE.mjs +22 -0
  35. package/dist/lib/browser/settings-FE5DDWOE.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +20 -9
  37. package/dist/lib/node/AssistantDialog-E62O72KI.cjs +140 -0
  38. package/dist/lib/node/AssistantDialog-E62O72KI.cjs.map +7 -0
  39. package/dist/lib/node/AutomationPanel-6COLKRIB.cjs +26 -0
  40. package/dist/lib/node/AutomationPanel-6COLKRIB.cjs.map +7 -0
  41. package/dist/lib/node/{react-surface-DVAU4MGD.cjs → ChatContainer-4QTLL7TH.cjs} +30 -26
  42. package/dist/lib/node/ChatContainer-4QTLL7TH.cjs.map +7 -0
  43. package/dist/lib/node/{chunk-25AQIF3L.cjs → TemplateContainer-3YCM6XPU.cjs} +21 -11
  44. package/dist/lib/node/TemplateContainer-3YCM6XPU.cjs.map +7 -0
  45. package/dist/lib/node/ai-client-L5GUSAER.cjs +38 -0
  46. package/dist/lib/node/ai-client-L5GUSAER.cjs.map +7 -0
  47. package/dist/lib/node/app-graph-builder-ECNVGTRT.cjs +122 -0
  48. package/dist/lib/node/app-graph-builder-ECNVGTRT.cjs.map +7 -0
  49. package/dist/lib/node/chunk-3QSK6IPK.cjs +133 -0
  50. package/dist/lib/node/chunk-3QSK6IPK.cjs.map +7 -0
  51. package/dist/lib/node/chunk-76F5BCJE.cjs +111 -0
  52. package/dist/lib/node/chunk-76F5BCJE.cjs.map +7 -0
  53. package/dist/lib/node/chunk-B37JIAOP.cjs +1795 -0
  54. package/dist/lib/node/chunk-B37JIAOP.cjs.map +7 -0
  55. package/dist/lib/node/{chunk-5VF5JKUN.cjs → chunk-BAQRBGOJ.cjs} +8 -5
  56. package/dist/lib/node/chunk-BAQRBGOJ.cjs.map +7 -0
  57. package/dist/lib/node/chunk-UVWK2XJE.cjs +183 -0
  58. package/dist/lib/node/chunk-UVWK2XJE.cjs.map +7 -0
  59. package/dist/lib/node/{AutomationPanel-PPODB5XA.cjs → chunk-V4L7LTWM.cjs} +39 -24
  60. package/dist/lib/node/chunk-V4L7LTWM.cjs.map +7 -0
  61. package/dist/lib/node/chunk-VNBYGJ4K.cjs +34 -0
  62. package/dist/lib/node/chunk-VNBYGJ4K.cjs.map +7 -0
  63. package/dist/lib/node/index.cjs +166 -292
  64. package/dist/lib/node/index.cjs.map +4 -4
  65. package/dist/lib/node/intent-resolver-4MQZULXW.cjs +58 -0
  66. package/dist/lib/node/intent-resolver-4MQZULXW.cjs.map +7 -0
  67. package/dist/lib/node/meta.json +1 -1
  68. package/dist/lib/node/react-surface-4RVHY6WI.cjs +95 -0
  69. package/dist/lib/node/react-surface-4RVHY6WI.cjs.map +7 -0
  70. package/dist/lib/node/settings-GOIB2WJQ.cjs +36 -0
  71. package/dist/lib/node/settings-GOIB2WJQ.cjs.map +7 -0
  72. package/dist/lib/node/types/index.cjs +20 -9
  73. package/dist/lib/node/types/index.cjs.map +2 -2
  74. package/dist/lib/node-esm/AssistantDialog-IPRBJKWA.mjs +117 -0
  75. package/dist/lib/node-esm/AssistantDialog-IPRBJKWA.mjs.map +7 -0
  76. package/dist/lib/node-esm/AutomationPanel-3MPIAO7R.mjs +9 -0
  77. package/dist/lib/node-esm/AutomationPanel-3MPIAO7R.mjs.map +7 -0
  78. package/dist/lib/node-esm/ChatContainer-4IWUGMGM.mjs +34 -0
  79. package/dist/lib/node-esm/ChatContainer-4IWUGMGM.mjs.map +7 -0
  80. package/dist/lib/node-esm/TemplateContainer-YJIXR24Z.mjs +24 -0
  81. package/dist/lib/node-esm/TemplateContainer-YJIXR24Z.mjs.map +7 -0
  82. package/dist/lib/node-esm/ai-client-45LZLW7V.mjs +23 -0
  83. package/dist/lib/node-esm/ai-client-45LZLW7V.mjs.map +7 -0
  84. package/dist/lib/node-esm/app-graph-builder-HMRKSZ2X.mjs +111 -0
  85. package/dist/lib/node-esm/app-graph-builder-HMRKSZ2X.mjs.map +7 -0
  86. package/dist/lib/node-esm/chunk-5BKKHYO5.mjs +163 -0
  87. package/dist/lib/node-esm/chunk-5BKKHYO5.mjs.map +7 -0
  88. package/dist/lib/{browser/AutomationPanel-IHZ4JKVS.mjs → node-esm/chunk-AWAU4BHR.mjs} +32 -20
  89. package/dist/lib/node-esm/chunk-AWAU4BHR.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-CAWPHOY4.mjs +82 -0
  91. package/dist/lib/node-esm/chunk-CAWPHOY4.mjs.map +7 -0
  92. package/dist/lib/node-esm/chunk-I32H7MCF.mjs +109 -0
  93. package/dist/lib/node-esm/chunk-I32H7MCF.mjs.map +7 -0
  94. package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs → chunk-IG4GSWZN.mjs} +4 -2
  95. package/dist/lib/node-esm/chunk-IG4GSWZN.mjs.map +7 -0
  96. package/dist/lib/node-esm/chunk-QHKP5HT2.mjs +1819 -0
  97. package/dist/lib/node-esm/chunk-QHKP5HT2.mjs.map +7 -0
  98. package/dist/lib/node-esm/chunk-SS7U6GCX.mjs +16 -0
  99. package/dist/lib/node-esm/chunk-SS7U6GCX.mjs.map +7 -0
  100. package/dist/lib/node-esm/index.mjs +163 -273
  101. package/dist/lib/node-esm/index.mjs.map +4 -4
  102. package/dist/lib/node-esm/intent-resolver-ZS7XTYLG.mjs +45 -0
  103. package/dist/lib/node-esm/intent-resolver-ZS7XTYLG.mjs.map +7 -0
  104. package/dist/lib/node-esm/meta.json +1 -1
  105. package/dist/lib/node-esm/react-surface-5ILD642V.mjs +81 -0
  106. package/dist/lib/node-esm/react-surface-5ILD642V.mjs.map +7 -0
  107. package/dist/lib/node-esm/settings-ANNQPPRY.mjs +23 -0
  108. package/dist/lib/node-esm/settings-ANNQPPRY.mjs.map +7 -0
  109. package/dist/lib/node-esm/types/index.mjs +20 -9
  110. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/ai-client.d.ts +5 -0
  112. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/app-graph-builder.d.ts +111 -110
  114. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  116. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/index.d.ts +117 -113
  118. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  120. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  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 -2
  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 +1 -2
  210. package/dist/types/src/index.d.ts.map +1 -1
  211. package/dist/types/src/meta.d.ts +1 -0
  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 +110 -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 +4 -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 +37 -0
  238. package/dist/types/src/types/types.d.ts.map +1 -0
  239. package/package.json +62 -40
  240. package/src/AutomationPlugin.tsx +68 -21
  241. package/src/capabilities/ai-client.ts +19 -0
  242. package/src/capabilities/app-graph-builder.ts +82 -110
  243. package/src/capabilities/capabilities.ts +12 -0
  244. package/src/capabilities/index.ts +5 -0
  245. package/src/capabilities/intent-resolver.ts +38 -0
  246. package/src/capabilities/react-surface.tsx +42 -6
  247. package/src/capabilities/settings.ts +19 -0
  248. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +81 -0
  249. package/src/components/AmbientDialog/AmbientDialog.tsx +103 -0
  250. package/src/components/AmbientDialog/index.ts +5 -0
  251. package/src/components/AssistantDialog.tsx +33 -0
  252. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +2 -2
  253. package/src/components/AutomationSettings/AutomationSettings.tsx +49 -0
  254. package/src/components/AutomationSettings/index.ts +5 -0
  255. package/src/components/ChatContainer.tsx +29 -0
  256. package/src/components/Prompt/Prompt.stories.tsx +79 -0
  257. package/src/components/Prompt/Prompt.tsx +100 -0
  258. package/src/components/Prompt/PromptBar.tsx +100 -0
  259. package/src/components/Prompt/autocomplete.ts +212 -0
  260. package/src/components/Prompt/index.ts +6 -0
  261. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +49 -0
  262. package/src/components/ServiceRegistry/ServiceRegistry.tsx +76 -0
  263. package/src/components/ServiceRegistry/index.ts +5 -0
  264. package/src/components/TemplateContainer.tsx +21 -0
  265. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +72 -0
  266. package/src/components/TemplateEditor/TemplateEditor.tsx +76 -0
  267. package/src/components/TemplateEditor/TemplateForm.stories.tsx +65 -0
  268. package/src/components/TemplateEditor/TemplateForm.tsx +184 -0
  269. package/src/components/{PromptEditor → TemplateEditor}/index.ts +1 -1
  270. package/src/components/Thread/Thread.stories.tsx +212 -0
  271. package/src/components/Thread/Thread.tsx +97 -0
  272. package/src/components/Thread/ThreadContainer.stories.tsx +258 -0
  273. package/src/components/Thread/ThreadContainer.tsx +78 -0
  274. package/src/components/Thread/ThreadMessage.tsx +187 -0
  275. package/src/components/Thread/ToolInvocations.tsx +93 -0
  276. package/src/components/Thread/index.ts +6 -0
  277. package/src/components/Thread/reducer.ts +52 -0
  278. package/src/components/Toolbox/Toolbox.stories.tsx +65 -0
  279. package/src/components/Toolbox/Toolbox.tsx +117 -0
  280. package/src/components/Toolbox/index.ts +5 -0
  281. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +2 -2
  282. package/src/components/TriggerEditor/TriggerEditor.tsx +25 -18
  283. package/src/components/index.ts +11 -1
  284. package/src/hooks/index.ts +6 -0
  285. package/src/hooks/processor.test.ts +15 -0
  286. package/src/hooks/processor.ts +219 -0
  287. package/src/hooks/useChatProcessor.tsx +77 -0
  288. package/src/hooks/useMessageQueue.ts +23 -0
  289. package/src/hooks/useServices.ts +28 -0
  290. package/src/hooks/useTextInputEvents.ts +49 -0
  291. package/src/index.ts +2 -2
  292. package/src/meta.ts +4 -1
  293. package/src/testing/index.ts +2 -1
  294. package/src/testing/{testing.ts → test-functions.ts} +9 -2
  295. package/src/testing/test-services.ts +131 -0
  296. package/src/tools/function.ts +47 -0
  297. package/src/tools/index.ts +6 -0
  298. package/src/tools/openapi.test.ts +224 -0
  299. package/src/tools/openapi.ts +331 -0
  300. package/src/translations.ts +27 -2
  301. package/src/types/chat.ts +11 -0
  302. package/src/types/index.ts +4 -1
  303. package/src/types/service.ts +102 -0
  304. package/src/types/template.ts +34 -0
  305. package/src/types/types.ts +41 -0
  306. package/src/typings.d.ts +9 -0
  307. package/dist/lib/browser/AssistantPanel-N276BTPV.mjs +0 -339
  308. package/dist/lib/browser/AssistantPanel-N276BTPV.mjs.map +0 -7
  309. package/dist/lib/browser/AutomationPanel-IHZ4JKVS.mjs.map +0 -7
  310. package/dist/lib/browser/app-graph-builder-IJTTULDP.mjs +0 -131
  311. package/dist/lib/browser/app-graph-builder-IJTTULDP.mjs.map +0 -7
  312. package/dist/lib/browser/chunk-4AIMDHKY.mjs +0 -10
  313. package/dist/lib/browser/chunk-4AIMDHKY.mjs.map +0 -7
  314. package/dist/lib/browser/chunk-DL6LB2NI.mjs +0 -43
  315. package/dist/lib/browser/chunk-DL6LB2NI.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-HKX3D3ZP.mjs.map +0 -7
  317. package/dist/lib/browser/react-surface-LL72F3F4.mjs +0 -34
  318. package/dist/lib/browser/react-surface-LL72F3F4.mjs.map +0 -7
  319. package/dist/lib/node/AssistantPanel-Z4GVHUF3.cjs +0 -359
  320. package/dist/lib/node/AssistantPanel-Z4GVHUF3.cjs.map +0 -7
  321. package/dist/lib/node/AutomationPanel-PPODB5XA.cjs.map +0 -7
  322. package/dist/lib/node/app-graph-builder-MF5M4QRS.cjs +0 -147
  323. package/dist/lib/node/app-graph-builder-MF5M4QRS.cjs.map +0 -7
  324. package/dist/lib/node/chunk-25AQIF3L.cjs.map +0 -7
  325. package/dist/lib/node/chunk-5VF5JKUN.cjs.map +0 -7
  326. package/dist/lib/node/chunk-JNDMZQH7.cjs +0 -68
  327. package/dist/lib/node/chunk-JNDMZQH7.cjs.map +0 -7
  328. package/dist/lib/node/react-surface-DVAU4MGD.cjs.map +0 -7
  329. package/dist/lib/node-esm/AssistantPanel-DDCQHBJX.mjs +0 -340
  330. package/dist/lib/node-esm/AssistantPanel-DDCQHBJX.mjs.map +0 -7
  331. package/dist/lib/node-esm/AutomationPanel-R3D6CRF5.mjs.map +0 -7
  332. package/dist/lib/node-esm/app-graph-builder-5N7OK23B.mjs +0 -132
  333. package/dist/lib/node-esm/app-graph-builder-5N7OK23B.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-GIAYUM5I.mjs +0 -45
  335. package/dist/lib/node-esm/chunk-GIAYUM5I.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-X3LPRWIL.mjs.map +0 -7
  337. package/dist/lib/node-esm/chunk-XW7TEQA3.mjs +0 -12
  338. package/dist/lib/node-esm/chunk-XW7TEQA3.mjs.map +0 -7
  339. package/dist/lib/node-esm/react-surface-4BED2PZ4.mjs +0 -35
  340. package/dist/lib/node-esm/react-surface-4BED2PZ4.mjs.map +0 -7
  341. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts +0 -8
  342. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts.map +0 -1
  343. package/dist/types/src/components/AssistantPanel/index.d.ts +0 -3
  344. package/dist/types/src/components/AssistantPanel/index.d.ts.map +0 -1
  345. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts +0 -6
  346. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts.map +0 -1
  347. package/dist/types/src/components/PromptEditor/PromptEditor.d.ts +0 -10
  348. package/dist/types/src/components/PromptEditor/PromptEditor.d.ts.map +0 -1
  349. package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts +0 -6
  350. package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts.map +0 -1
  351. package/dist/types/src/components/PromptEditor/index.d.ts +0 -2
  352. package/dist/types/src/components/PromptEditor/index.d.ts.map +0 -1
  353. package/dist/types/src/components/PromptEditor/prompt-extension.d.ts +0 -4
  354. package/dist/types/src/components/PromptEditor/prompt-extension.d.ts.map +0 -1
  355. package/dist/types/src/components/PromptEditor/types.d.ts.map +0 -1
  356. package/dist/types/src/presets.d.ts +0 -9
  357. package/dist/types/src/presets.d.ts.map +0 -1
  358. package/dist/types/src/testing/testing.d.ts.map +0 -1
  359. package/dist/types/src/types/schema.d.ts +0 -63
  360. package/dist/types/src/types/schema.d.ts.map +0 -1
  361. package/src/components/AssistantPanel/AssistantPanel.tsx +0 -230
  362. package/src/components/AssistantPanel/index.ts +0 -7
  363. package/src/components/AssistantPanel/system-instructions.ts +0 -166
  364. package/src/components/PromptEditor/PromptEditor.stories.tsx +0 -64
  365. package/src/components/PromptEditor/PromptEditor.tsx +0 -222
  366. package/src/components/PromptEditor/prompt-extension.ts +0 -43
  367. package/src/presets.ts +0 -248
  368. package/src/types/schema.ts +0 -38
  369. /package/dist/types/src/components/{PromptEditor → TemplateEditor}/types.d.ts +0 -0
  370. /package/src/components/{PromptEditor → TemplateEditor}/types.tsx +0 -0
@@ -1,43 +0,0 @@
1
- // packages/plugins/experimental/plugin-automation/src/types/schema.ts
2
- import { Ref, S, TypedObject } from "@dxos/echo-schema";
3
- var ChainInputType;
4
- (function(ChainInputType2) {
5
- ChainInputType2[ChainInputType2["VALUE"] = 0] = "VALUE";
6
- ChainInputType2[ChainInputType2["PASS_THROUGH"] = 1] = "PASS_THROUGH";
7
- ChainInputType2[ChainInputType2["RETRIEVER"] = 2] = "RETRIEVER";
8
- ChainInputType2[ChainInputType2["FUNCTION"] = 3] = "FUNCTION";
9
- ChainInputType2[ChainInputType2["QUERY"] = 4] = "QUERY";
10
- ChainInputType2[ChainInputType2["RESOLVER"] = 5] = "RESOLVER";
11
- ChainInputType2[ChainInputType2["CONTEXT"] = 6] = "CONTEXT";
12
- ChainInputType2[ChainInputType2["SCHEMA"] = 7] = "SCHEMA";
13
- })(ChainInputType || (ChainInputType = {}));
14
- var ChainInputSchema = S.mutable(S.Struct({
15
- name: S.String,
16
- type: S.optional(S.Enums(ChainInputType)),
17
- value: S.optional(S.String)
18
- }));
19
- var ChainPromptType = class extends TypedObject({
20
- typename: "dxos.org/type/ChainPrompt",
21
- version: "0.1.0"
22
- })({
23
- command: S.optional(S.String),
24
- template: S.String,
25
- inputs: S.optional(S.mutable(S.Array(ChainInputSchema)))
26
- }) {
27
- };
28
- var ChainType = class extends TypedObject({
29
- typename: "dxos.org/type/Chain",
30
- version: "0.1.0"
31
- })({
32
- name: S.optional(S.String),
33
- prompts: S.optional(S.mutable(S.Array(Ref(ChainPromptType))))
34
- }) {
35
- };
36
-
37
- export {
38
- ChainInputType,
39
- ChainInputSchema,
40
- ChainPromptType,
41
- ChainType
42
- };
43
- //# sourceMappingURL=chunk-DL6LB2NI.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/schema.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"],
5
- "mappings": ";AAIA,SAASA,KAAKC,GAAGC,mBAAmB;;UAGxBC,iBAAAA;;;;;;;;;GAAAA,mBAAAA,iBAAAA,CAAAA,EAAAA;AAWL,IAAMC,mBAAmBC,EAAEC,QAChCD,EAAEE,OAAO;EACPC,MAAMH,EAAEI;EACRC,MAAML,EAAEM,SAASN,EAAEO,MAAMT,cAAAA,CAAAA;EACzBU,OAAOR,EAAEM,SAASN,EAAEI,MAAM;AAC5B,CAAA,CAAA;AAKK,IAAMK,kBAAN,cAA8BC,YAAY;EAAEC,UAAU;EAA6BC,SAAS;AAAQ,CAAA,EAAG;EAC5GC,SAASb,EAAEM,SAASN,EAAEI,MAAM;EAC5BU,UAAUd,EAAEI;EACZW,QAAQf,EAAEM,SAASN,EAAEC,QAAQD,EAAEgB,MAAMjB,gBAAAA,CAAAA,CAAAA;AACvC,CAAA,EAAA;AAAI;AAEG,IAAMkB,YAAN,cAAwBP,YAAY;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,EAAG;EAChGT,MAAMH,EAAEM,SAASN,EAAEI,MAAM;EACzBc,SAASlB,EAAEM,SAASN,EAAEC,QAAQD,EAAEgB,MAAMG,IAAIV,eAAAA,CAAAA,CAAAA,CAAAA;AAC5C,CAAA,EAAA;AAAI;",
6
- "names": ["Ref", "S", "TypedObject", "ChainInputType", "ChainInputSchema", "S", "mutable", "Struct", "name", "String", "type", "optional", "Enums", "value", "ChainPromptType", "TypedObject", "typename", "version", "command", "template", "inputs", "Array", "ChainType", "prompts", "Ref"]
7
- }
@@ -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 const meta = {\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;AAE1B,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;AACT;",
6
- "names": ["AUTOMATION_PLUGIN", "meta", "id", "name", "description", "icon", "source", "tags"]
7
- }
@@ -1,34 +0,0 @@
1
- import {
2
- AssistantPanel,
3
- AutomationPanel
4
- } from "./chunk-4AIMDHKY.mjs";
5
- import {
6
- AUTOMATION_PLUGIN
7
- } from "./chunk-HKX3D3ZP.mjs";
8
-
9
- // packages/plugins/experimental/plugin-automation/src/capabilities/react-surface.tsx
10
- import React from "react";
11
- import { Capabilities, contributes, createSurface } from "@dxos/app-framework";
12
- import { getSpace, isEchoObject } from "@dxos/react-client/echo";
13
- var react_surface_default = () => contributes(Capabilities.ReactSurface, [
14
- createSurface({
15
- id: `${AUTOMATION_PLUGIN}/assistant`,
16
- role: "complementary--assistant",
17
- component: ({ data }) => /* @__PURE__ */ React.createElement(AssistantPanel, {
18
- subject: data.subject
19
- })
20
- }),
21
- createSurface({
22
- id: `${AUTOMATION_PLUGIN}/automation`,
23
- role: "complementary--automation",
24
- filter: (data) => isEchoObject(data.subject) && !!getSpace(data.subject),
25
- component: ({ data }) => /* @__PURE__ */ React.createElement(AutomationPanel, {
26
- space: getSpace(data.subject),
27
- object: data.subject
28
- })
29
- })
30
- ]);
31
- export {
32
- react_surface_default as default
33
- };
34
- //# sourceMappingURL=react-surface-LL72F3F4.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface } from '@dxos/app-framework';\nimport { getSpace, isEchoObject, type ReactiveEchoObject } from '@dxos/react-client/echo';\n\nimport { AssistantPanel, AutomationPanel } from '../components';\nimport { AUTOMATION_PLUGIN } from '../meta';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${AUTOMATION_PLUGIN}/assistant`,\n role: 'complementary--assistant',\n component: ({ data }) => <AssistantPanel subject={data.subject} />,\n }),\n createSurface({\n id: `${AUTOMATION_PLUGIN}/automation`,\n role: 'complementary--automation',\n filter: (data): data is { subject: ReactiveEchoObject<any> } =>\n isEchoObject(data.subject) && !!getSpace(data.subject),\n component: ({ data }) => <AutomationPanel space={getSpace(data.subject)!} object={data.subject} />,\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,qBAAqB;AACzD,SAASC,UAAUC,oBAA6C;AAKhE,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,iBAAAA;IACPC,MAAM;IACNC,WAAW,CAAC,EAAEC,KAAI,MAAO,sBAAA,cAACC,gBAAAA;MAAeC,SAASF,KAAKE;;EACzD,CAAA;EACAP,cAAc;IACZC,IAAI,GAAGC,iBAAAA;IACPC,MAAM;IACNK,QAAQ,CAACH,SACPI,aAAaJ,KAAKE,OAAO,KAAK,CAAC,CAACG,SAASL,KAAKE,OAAO;IACvDH,WAAW,CAAC,EAAEC,KAAI,MAAO,sBAAA,cAACM,iBAAAA;MAAgBC,OAAOF,SAASL,KAAKE,OAAO;MAAIM,QAAQR,KAAKE;;EACzF,CAAA;CACD;",
6
- "names": ["React", "Capabilities", "contributes", "createSurface", "getSpace", "isEchoObject", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "AUTOMATION_PLUGIN", "role", "component", "data", "AssistantPanel", "subject", "filter", "isEchoObject", "getSpace", "AutomationPanel", "space", "object"]
7
- }
@@ -1,359 +0,0 @@
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 AssistantPanel_Z4GVHUF3_exports = {};
30
- __export(AssistantPanel_Z4GVHUF3_exports, {
31
- default: () => AssistantPanel_default
32
- });
33
- module.exports = __toCommonJS(AssistantPanel_Z4GVHUF3_exports);
34
- var import_chunk_5VF5JKUN = require("./chunk-5VF5JKUN.cjs");
35
- var import_react = __toESM(require("react"));
36
- var import_assistant = require("@dxos/assistant");
37
- var import_keys = require("@dxos/keys");
38
- var import_react_client = require("@dxos/react-client");
39
- var import_react_ui = require("@dxos/react-ui");
40
- var import_react_ui2 = require("@dxos/react-ui");
41
- var import_react_ui_syntax_highlighter = require("@dxos/react-ui-syntax-highlighter");
42
- var import_react_ui_theme = require("@dxos/react-ui-theme");
43
- var import_async = require("@dxos/async");
44
- var import_echo_schema = require("@dxos/echo-schema");
45
- var import_log = require("@dxos/log");
46
- var import_echo = require("@dxos/react-client/echo");
47
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/system-instructions.ts";
48
- var createSystemInstructions = async (context) => {
49
- let instructions = `
50
- <instructions>
51
- Before replying always think step-by-step on how to proceed.
52
- Print your thoughts inside <cot> tags.
53
-
54
- <example>
55
- <cot>To answer the question I need to ...</cot>
56
- </example>
57
- </instructions>
58
-
59
- <current_time>${(/* @__PURE__ */ new Date()).toLocaleString()}</current_time>
60
- `;
61
- if (context.subject) {
62
- instructions += `
63
- <user_attention>
64
- The user is currently interacting with an object in Composer application:
65
-
66
- ${await formatContextObject(context.subject)}
67
- </user_attention>
68
- `;
69
- }
70
- return looseFormatXml(instructions);
71
- };
72
- var formatContextObject = async (object) => {
73
- let data;
74
- try {
75
- data = await (0, import_async.asyncTimeout)(preprocessContextObject(object), CONTEXT_OBJECT_QUERY_TIMEOUT);
76
- } catch (err) {
77
- import_log.log.error("Failed to preprocess context object:", {
78
- err
79
- }, {
80
- F: __dxlog_file,
81
- L: 48,
82
- S: void 0,
83
- C: (f, a) => f(...a)
84
- });
85
- data = object;
86
- }
87
- if (typeof data === "string") {
88
- return data;
89
- } else {
90
- return `
91
- <object>
92
- <type>${(0, import_echo_schema.getTypename)(object)}</type>
93
- <id>${object.id}</id>
94
- ${formatObjectAsXMLTags(data)}
95
- </object>
96
- `;
97
- }
98
- };
99
- var preprocessContextObject = async (object) => {
100
- const space = (0, import_echo.getSpace)(object);
101
- if (!space) {
102
- return {
103
- ...object
104
- };
105
- }
106
- switch ((0, import_echo_schema.getTypename)(object)) {
107
- // TODO(dmaretskyi): Reference types somehow without plugin-automation depending on other plugins.
108
- case "dxos.org/type/Document": {
109
- const data = space.db.query({
110
- id: object.id
111
- }, {
112
- format: import_echo.ResultFormat.Plain,
113
- include: {
114
- content: true
115
- }
116
- }).first() ?? {
117
- content: {
118
- content: ""
119
- }
120
- };
121
- return {
122
- ...data,
123
- threads: void 0
124
- };
125
- }
126
- case "dxos.org/type/Table": {
127
- const schema = object.view ? space?.db.schemaRegistry.getSchema(object.view.query.type) : void 0;
128
- const { objects: rows } = (schema && await space.db.query(import_echo.Filter.schema(schema), {
129
- format: import_echo.ResultFormat.Plain,
130
- limit: TABLE_ROWS_LIMIT
131
- }).run()) ?? {};
132
- return `
133
- <object>
134
- <id>${object.id}</id>
135
- <type>${(0, import_echo_schema.getTypename)(object)}</type>
136
- ${formatObjectAsXMLTags(object)}
137
-
138
- <rows>
139
- <!-- Limited to first ${TABLE_ROWS_LIMIT} rows. -->
140
- ${rows?.map((row) => `<row>
141
- ${formatObjectAsXMLTags(row)}
142
- </row>`).join("\n")}
143
- </rows>
144
-
145
- `;
146
- }
147
- default:
148
- return {
149
- ...object
150
- };
151
- }
152
- };
153
- var formatObjectAsXMLTags = (object, depth = 1) => {
154
- return Object.entries(object).filter(([key, value]) => [
155
- "string",
156
- "number",
157
- "boolean",
158
- "object"
159
- ].includes(typeof value)).map(([key, value]) => {
160
- if (typeof value === "object" && value !== null) {
161
- if (depth === 0) {
162
- return "";
163
- } else {
164
- return `<${key}>
165
- ${formatObjectAsXMLTags(value, depth - 1)}
166
- </${key}>`;
167
- }
168
- }
169
- return `<${key}>${value}</${key}>`;
170
- }).join("\n");
171
- };
172
- var CONTEXT_OBJECT_QUERY_TIMEOUT = 5e3;
173
- var TABLE_ROWS_LIMIT = 10;
174
- var looseFormatXml = (xml) => {
175
- let currentIndent = 0;
176
- return xml.split("\n").map((line) => {
177
- if (line.match(RE_CLOSE_TAG_LINE)) {
178
- currentIndent--;
179
- }
180
- const indent = currentIndent;
181
- if (line.match(RE_OPEN_TAG_LINE)) {
182
- currentIndent++;
183
- }
184
- return " ".repeat(indent * 2) + line.trimStart();
185
- }).join("\n");
186
- };
187
- var RE_OPEN_TAG_LINE = /^[ ]*<[a-zA-Z0-9\-_]+>[ ]*$/;
188
- var RE_CLOSE_TAG_LINE = /^[ ]*<\/[a-zA-Z0-9\-_]+>[ ]*$/;
189
- var PROPERTIES_ASSISTANT_KEY = "dxos.assistant.beta.properties";
190
- var AssistantPanel = ({ subject, classNames }) => {
191
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_5VF5JKUN.AUTOMATION_PLUGIN);
192
- const config = (0, import_react_client.useConfig)();
193
- const client = (0, import_react_client.useClient)();
194
- const aiClient = (0, import_react.useRef)();
195
- const [contextSpaceId, setContextSpaceId] = (0, import_react.useState)();
196
- const [threadId, setThreadId] = (0, import_react.useState)();
197
- const [history, setHistory] = (0, import_react.useState)([]);
198
- const [input, setInput] = (0, import_react.useState)("");
199
- (0, import_react.useEffect)(() => {
200
- if (!aiClient.current) {
201
- const endpoint = config.values.runtime?.services?.ai?.server;
202
- if (!endpoint) {
203
- throw new Error("AI service endpoint is not configured");
204
- }
205
- aiClient.current = new import_assistant.AIServiceClientImpl({
206
- endpoint
207
- });
208
- }
209
- queueMicrotask(async () => {
210
- const properties = client.spaces.default.properties;
211
- properties[PROPERTIES_ASSISTANT_KEY] ??= {};
212
- properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId ??= import_keys.SpaceId.random();
213
- properties[PROPERTIES_ASSISTANT_KEY].threadId ??= import_assistant.ObjectId.random();
214
- const contextSpaceId2 = properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId;
215
- const threadId2 = properties[PROPERTIES_ASSISTANT_KEY].threadId;
216
- setContextSpaceId(contextSpaceId2);
217
- setThreadId(threadId2);
218
- const messages = await aiClient.current.getMessagesInThread(contextSpaceId2, threadId2);
219
- setHistory(messages);
220
- });
221
- }, []);
222
- const handleRequest = async (input2) => {
223
- if (input2 === "") {
224
- return;
225
- }
226
- setInput("");
227
- const userMessage = {
228
- id: import_assistant.ObjectId.random(),
229
- spaceId: contextSpaceId,
230
- threadId,
231
- role: "user",
232
- content: [
233
- {
234
- type: "text",
235
- text: input2
236
- }
237
- ]
238
- };
239
- await aiClient.current.insertMessages([
240
- userMessage
241
- ]);
242
- setHistory([
243
- ...history,
244
- userMessage
245
- ]);
246
- const generationStream = await aiClient.current.generate({
247
- model: "@anthropic/claude-3-5-sonnet-20241022",
248
- spaceId: contextSpaceId,
249
- threadId,
250
- tools: [],
251
- systemPrompt: await getSystemPrompt()
252
- });
253
- const historyBefore = [
254
- ...history,
255
- userMessage
256
- ];
257
- for await (const _event of generationStream) {
258
- setHistory([
259
- ...historyBefore,
260
- ...generationStream.accumulatedMessages
261
- ]);
262
- }
263
- await aiClient.current.insertMessages(await generationStream.complete());
264
- };
265
- const getSystemPrompt = async () => {
266
- return createSystemInstructions({
267
- subject
268
- });
269
- };
270
- const clearThread = async () => {
271
- const properties = client.spaces.default.properties;
272
- properties[PROPERTIES_ASSISTANT_KEY] ??= {};
273
- properties[PROPERTIES_ASSISTANT_KEY].threadId = import_assistant.ObjectId.random();
274
- const threadId2 = properties[PROPERTIES_ASSISTANT_KEY].threadId;
275
- setThreadId(threadId2);
276
- const messages = await aiClient.current.getMessagesInThread(contextSpaceId, threadId2);
277
- setHistory(messages);
278
- };
279
- return /* @__PURE__ */ import_react.default.createElement("div", {
280
- className: (0, import_react_ui_theme.mx)("flex flex-col h-full overflow-hidden", classNames)
281
- }, history.length > 0 && /* @__PURE__ */ import_react.default.createElement("div", {
282
- className: "flex flex-col gap-6 h-full p-2 overflow-x-hidden overflow-y-auto"
283
- }, history.map((message) => /* @__PURE__ */ import_react.default.createElement(MessageItem, {
284
- key: message.id,
285
- message
286
- }))), /* @__PURE__ */ import_react.default.createElement(import_react_ui2.Toolbar.Root, {
287
- classNames: "p-1"
288
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui2.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui2.Input.TextInput, {
289
- autoFocus: true,
290
- placeholder: t("ask me anything"),
291
- value: input,
292
- onChange: (ev) => setInput(ev.target.value),
293
- onKeyDown: (ev) => ev.key === "Enter" && handleRequest(input)
294
- })), /* @__PURE__ */ import_react.default.createElement(import_react_ui.ContextMenu.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ContextMenu.Trigger, {
295
- asChild: true
296
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui2.Toolbar.Button, {
297
- onClick: () => handleRequest(input)
298
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui2.Icon, {
299
- icon: "ph--play--regular",
300
- size: 4
301
- }))), /* @__PURE__ */ import_react.default.createElement(import_react_ui.ContextMenu.Portal, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ContextMenu.Content, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ContextMenu.Viewport, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ContextMenu.Item, {
302
- onClick: clearThread
303
- }, "Clear thread"), /* @__PURE__ */ import_react.default.createElement(import_react_ui.ContextMenu.Item, {
304
- onClick: async () => console.log(await getSystemPrompt())
305
- }, "Print instructions to console")))))));
306
- };
307
- var MessageItem = ({ classNames, message }) => {
308
- const { id: _, role, content } = message;
309
- const styleContainer = "flex flex-col overflow-x-hidden overflow-y-auto rounded-md gap-2 divide-y divide-separator";
310
- return /* @__PURE__ */ import_react.default.createElement("div", {
311
- className: (0, import_react_ui_theme.mx)("flex", role === "user" ? "ml-[1rem] justify-end" : "mr-[1rem]", classNames)
312
- }, content.map((content2, i) => {
313
- switch (content2.type) {
314
- case "text": {
315
- const { cot, message: message2 } = parseMessage(content2.text);
316
- return /* @__PURE__ */ import_react.default.createElement("div", {
317
- key: i,
318
- role: "none",
319
- className: (0, import_react_ui_theme.mx)(styleContainer, role === "user" ? "bg-primary-400 dark:bg-primary-600" : "bg-hoverSurface")
320
- }, cot && /* @__PURE__ */ import_react.default.createElement("div", {
321
- className: "p-2 whitespace-pre-wrap text-xs text-subdued"
322
- }, cot), /* @__PURE__ */ import_react.default.createElement("div", {
323
- className: "p-2 whitespace-pre-wrap"
324
- }, message2));
325
- }
326
- case "tool_use": {
327
- return /* @__PURE__ */ import_react.default.createElement("div", {
328
- key: i,
329
- className: (0, import_react_ui_theme.mx)(styleContainer, "text-xs")
330
- }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("span", {
331
- className: "p-2 text-primary"
332
- }, "Tool use"), ": ", content2.name, " ", content2.id), /* @__PURE__ */ import_react.default.createElement(import_react_ui_syntax_highlighter.SyntaxHighlighter, {
333
- language: "json"
334
- }, content2.inputJson));
335
- }
336
- case "tool_result": {
337
- return /* @__PURE__ */ import_react.default.createElement("div", {
338
- key: i,
339
- className: (0, import_react_ui_theme.mx)(styleContainer, "text-xs", content2.isError && "text-error")
340
- }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("span", {
341
- className: "p-2 text-primary"
342
- }, "Tool result"), ": ", content2.toolUseId), /* @__PURE__ */ import_react.default.createElement(import_react_ui_syntax_highlighter.SyntaxHighlighter, {
343
- language: "json"
344
- }, content2.content));
345
- }
346
- }
347
- return null;
348
- }));
349
- };
350
- var parseMessage = (text) => {
351
- const regex = /<cot>([\s\S]*?)<\/cot>\s*([\s\S]*)/;
352
- const match = text.match(regex);
353
- return {
354
- cot: match?.[1].trim(),
355
- message: match?.[2] ?? text ?? "\xD8"
356
- };
357
- };
358
- var AssistantPanel_default = AssistantPanel;
359
- //# sourceMappingURL=AssistantPanel-Z4GVHUF3.cjs.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": ["import_react_ui", "createSystemInstructions", "context", "instructions", "Date", "toLocaleString", "subject", "formatContextObject", "looseFormatXml", "object", "data", "asyncTimeout", "preprocessContextObject", "CONTEXT_OBJECT_QUERY_TIMEOUT", "err", "log", "error", "getTypename", "id", "formatObjectAsXMLTags", "space", "getSpace", "db", "query", "format", "ResultFormat", "Plain", "include", "content", "first", "threads", "undefined", "schema", "view", "schemaRegistry", "getSchema", "type", "objects", "rows", "Filter", "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", "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", "spaceId", "role", "text", "insertMessages", "generationStream", "generate", "model", "tools", "systemPrompt", "getSystemPrompt", "historyBefore", "_event", "accumulatedMessages", "complete", "clearThread", "React", "div", "className", "mx", "length", "message", "MessageItem", "Toolbar", "Root", "Input", "TextInput", "autoFocus", "placeholder", "onChange", "ev", "target", "onKeyDown", "ContextMenu", "Trigger", "asChild", "Button", "onClick", "Icon", "icon", "size", "Portal", "Content", "Viewport", "Item", "console", "_", "styleContainer", "i", "cot", "parseMessage", "span", "name", "SyntaxHighlighter", "language", "inputJson", "isError", "toolUseId", "regex", "trim"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/AutomationPanel/AutomationPanel.tsx", "../../../src/components/TriggerEditor/TriggerEditor.tsx", "../../../src/components/AutomationPanel/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { S } from '@dxos/echo-schema';\nimport {\n FunctionType,\n FunctionTrigger,\n FunctionTriggerSchema,\n TriggerKind,\n type FunctionTriggerType,\n ScriptType,\n} from '@dxos/functions';\nimport { type Client, useClient } from '@dxos/react-client';\nimport { create, Filter, useQuery, type Space, type ReactiveObject, getSpace } from '@dxos/react-client/echo';\nimport { IconButton, Input, useTranslation, Button } from '@dxos/react-ui';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { TriggerEditor, type TriggerEditorProps } from '../TriggerEditor';\n\nconst grid = 'grid grid-cols-[40px_1fr_32px] min-bs-[2.5rem]';\n\nexport type AutomationPanelProps = {\n space: Space;\n object?: ReactiveObject<any>;\n};\n\n// TODO(burdon): Factor out common layout with ViewEditor.\nexport const AutomationPanel = ({ space, object }: AutomationPanelProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const client = useClient();\n const triggers = useQuery(space, Filter.schema(FunctionTrigger));\n const functions = useQuery(space, Filter.schema(FunctionType));\n const scripts = useQuery(space, Filter.schema(ScriptType));\n\n const [trigger, setTrigger] = useState<FunctionTriggerType>();\n const [selected, setSelected] = useState<FunctionTrigger>();\n\n const handleSelect = (trigger: FunctionTrigger) => {\n const { id: _, ...values } = trigger;\n setTrigger(values);\n setSelected(trigger);\n };\n\n const handleAdd = () => {\n setTrigger(create(FunctionTriggerSchema, { meta: {} }));\n setSelected(undefined);\n };\n\n const handleDelete = (trigger: FunctionTrigger) => {\n space.db.remove(trigger);\n setTrigger(undefined);\n setSelected(undefined);\n };\n\n const handleSave: TriggerEditorProps['onSave'] = (trigger) => {\n if (selected) {\n Object.assign(selected, trigger);\n } else {\n space.db.add(create(FunctionTrigger, trigger));\n }\n\n setTrigger(undefined);\n setSelected(undefined);\n };\n\n const handleCancel: TriggerEditorProps['onCancel'] = () => {\n setTrigger(undefined);\n };\n\n return (\n <div className='flex flex-col w-full divide-y divide-separator overflow-y-auto'>\n <List.Root<FunctionTrigger> items={triggers} isItem={S.is(FunctionTrigger)} getId={(field) => field.id}>\n {({ items: triggers }) => (\n <div role='list' className='flex flex-col w-full'>\n {triggers?.map((trigger) => {\n const copyAction = getCopyAction(client, trigger);\n return (\n <List.Item<FunctionTrigger>\n key={trigger.id}\n item={trigger}\n classNames={mx(grid, ghostHover, 'items-center', 'px-2')}\n >\n <Input.Root>\n <Input.Switch\n checked={trigger.enabled}\n onCheckedChange={(checked) => (trigger.enabled = checked)}\n />\n </Input.Root>\n\n <div className={'flex'}>\n <List.ItemTitle\n classNames='px-1 cursor-pointer w-0 shrink truncate'\n onClick={() => handleSelect(trigger)}\n >\n {getFunctionName(scripts, functions, trigger) ?? '∅'}\n </List.ItemTitle>\n\n {/* TODO: a better way to expose copy action */}\n {copyAction && (\n <Button onClick={() => navigator.clipboard.writeText(copyAction.contentProvider())}>\n {t(copyAction.translationKey)}\n </Button>\n )}\n </div>\n\n <List.ItemDeleteButton onClick={() => handleDelete(trigger)} />\n </List.Item>\n );\n })}\n </div>\n )}\n </List.Root>\n\n {trigger && <TriggerEditor space={space} trigger={trigger} onSave={handleSave} onCancel={handleCancel} />}\n\n {!trigger && (\n <div className='flex p-2 justify-center'>\n <IconButton icon='ph--plus--regular' label={t('new trigger')} onClick={handleAdd} />\n </div>\n )}\n </div>\n );\n};\n\nconst getCopyAction = (client: Client, trigger: FunctionTrigger | undefined) => {\n if (trigger?.spec?.type === TriggerKind.Email) {\n return { translationKey: 'trigger copy email', contentProvider: () => `${getSpace(trigger)!.id}@dxos.network` };\n }\n\n if (trigger?.spec?.type === TriggerKind.Webhook) {\n return { translationKey: 'trigger copy url', contentProvider: () => getWebhookUrl(client, trigger) };\n }\n\n return undefined;\n};\n\nconst getWebhookUrl = (client: Client, trigger: FunctionTrigger) => {\n const spaceId = getSpace(trigger)!.id;\n const edgeUrl = new URL(client.config.values.runtime!.services!.edge!.url!);\n const isSecure = edgeUrl.protocol.startsWith('https') || edgeUrl.protocol.startsWith('wss');\n edgeUrl.protocol = isSecure ? 'https' : 'http';\n return new URL(`/webhook/${spaceId}:${trigger.id}`, edgeUrl).toString();\n};\n\nconst getFunctionName = (scripts: ScriptType[], functions: FunctionType[], trigger: FunctionTriggerType) => {\n const shortId = trigger.function && `${trigger.function?.slice(0, 16)}…`;\n const functionObject = functions.find((fn) => fn.name === trigger.function);\n if (!functionObject) {\n return shortId;\n }\n return scripts.find((s) => functionObject.source?.target?.id === s.id)?.name ?? shortId;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport {\n FunctionType,\n FunctionTriggerSchema,\n type FunctionTriggerType,\n type FunctionTrigger,\n ScriptType,\n TriggerKind,\n} from '@dxos/functions';\nimport { Filter, useQuery, type Space } from '@dxos/react-client/echo';\nimport { IconButton, Input, useTranslation } from '@dxos/react-ui';\nimport { Form, SelectInput, TextInput } from '@dxos/react-ui-form';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type TriggerEditorProps = {\n space: Space;\n trigger: FunctionTriggerType;\n onSave?: (trigger: Omit<FunctionTrigger, 'id'>) => void;\n onCancel?: () => void;\n};\n\nexport const TriggerEditor = ({ space, trigger, onSave, onCancel }: TriggerEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n const functions = useQuery(space, Filter.schema(FunctionType));\n const scripts = useQuery(space, Filter.schema(ScriptType));\n\n const handleSave = (values: FunctionTriggerType) => {\n onSave?.(values);\n };\n\n return (\n <Form<FunctionTriggerType>\n schema={FunctionTriggerSchema}\n values={trigger}\n onSave={handleSave}\n onCancel={onCancel}\n Custom={{\n ['function' satisfies keyof FunctionTriggerType]: (props) => (\n <SelectInput<FunctionTriggerType>\n {...props}\n options={functions.map((fn) => ({\n value: fn.name,\n label: getFunctionName(scripts, fn),\n }))}\n />\n ),\n ['spec.type' as const]: (props) => (\n <SelectInput<FunctionTriggerType>\n {...props}\n options={Object.values(TriggerKind).map((kind) => ({\n value: kind,\n label: t(`trigger type ${kind}`),\n }))}\n />\n ),\n ['meta' as const]: (props) => {\n const meta = props.getValue('meta')!;\n\n const [newMetaFieldName, setNewMetaFieldName] = useState('');\n\n React.useEffect(() => props.onValueChange('meta', 'object', { ...meta }), []);\n\n return (\n <>\n <div>{props.label}</div>\n {[...Object.keys(meta)].map((key) => {\n const compositeKey: any = `meta.${key}`;\n return (\n <div key={compositeKey} role='none' className='flex items-center mt-2 gap-1'>\n <div role='none' className='flex-1'>\n <TextInput {...props} property={compositeKey} type={'string'} label={key} />\n </div>\n <IconButton\n icon='ph--trash--regular'\n iconOnly\n classNames={'mt-6'}\n label={t('trigger meta remove')}\n onClick={() => {\n const newValues: any = { ...props.getValue('meta') };\n delete newValues[key];\n props.onValueChange('meta', 'object', newValues);\n }}\n />\n </div>\n );\n })}\n <div role='none' className='flex items-center mt-2 gap-1 plb-1'>\n <div role='none' className='flex-1'>\n <Input.Root>\n <Input.TextInput\n placeholder={t('trigger meta prop name placeholder')}\n value={newMetaFieldName}\n onChange={(event) => setNewMetaFieldName(event.target.value)}\n />\n </Input.Root>\n </div>\n <IconButton\n icon='ph--plus--regular'\n iconOnly\n label={t('trigger meta add')}\n onClick={() => {\n if (newMetaFieldName.length) {\n const meta = props.getValue('meta') ?? {};\n const metaWithNewProp = { ...meta, [newMetaFieldName]: '' };\n setNewMetaFieldName('');\n props.onValueChange('meta', 'object', metaWithNewProp);\n }\n }}\n />\n </div>\n </>\n );\n },\n }}\n />\n );\n};\n\nconst getFunctionName = (scripts: ScriptType[], fn: FunctionType) => {\n return scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { AutomationPanel } from './AutomationPanel';\n\nexport default AutomationPanel;\n"],
5
- "mappings": "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",
6
- "names": ["import_react", "import_functions", "import_echo", "import_react_ui", "TriggerEditor", "space", "trigger", "onSave", "onCancel", "t", "useTranslation", "AUTOMATION_PLUGIN", "functions", "useQuery", "Filter", "schema", "FunctionType", "scripts", "ScriptType", "handleSave", "values", "React", "Form", "FunctionTriggerSchema", "Custom", "props", "SelectInput", "options", "map", "fn", "value", "name", "label", "getFunctionName", "Object", "TriggerKind", "kind", "meta", "getValue", "newMetaFieldName", "setNewMetaFieldName", "useState", "useEffect", "onValueChange", "div", "keys", "key", "compositeKey", "role", "className", "TextInput", "property", "type", "IconButton", "icon", "iconOnly", "classNames", "onClick", "newValues", "Input", "Root", "placeholder", "onChange", "event", "target", "length", "metaWithNewProp", "find", "s", "source", "id", "grid", "AutomationPanel", "object", "client", "useClient", "triggers", "FunctionTrigger", "setTrigger", "selected", "setSelected", "handleSelect", "_", "handleAdd", "create", "undefined", "handleDelete", "db", "remove", "assign", "add", "handleCancel", "List", "items", "isItem", "S", "is", "getId", "field", "copyAction", "getCopyAction", "Item", "item", "mx", "ghostHover", "Switch", "checked", "enabled", "onCheckedChange", "ItemTitle", "Button", "navigator", "clipboard", "writeText", "contentProvider", "translationKey", "ItemDeleteButton", "spec", "Email", "getSpace", "Webhook", "getWebhookUrl", "spaceId", "edgeUrl", "URL", "config", "runtime", "services", "edge", "url", "isSecure", "protocol", "startsWith", "toString", "shortId", "function", "slice", "functionObject"]
7
- }