@dxos/plugin-automation 0.8.4-main.7ace549 → 0.8.4-main.937b3ca

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 (273) hide show
  1. package/dist/lib/browser/AutomationPanel-FAS6ADCW.mjs +11 -0
  2. package/dist/lib/browser/AutomationSettings-XN2OIYWL.mjs +56 -0
  3. package/dist/lib/browser/AutomationSettings-XN2OIYWL.mjs.map +7 -0
  4. package/dist/lib/browser/FunctionsContainer-6QLC7JP4.mjs +129 -0
  5. package/dist/lib/browser/FunctionsContainer-6QLC7JP4.mjs.map +7 -0
  6. package/dist/lib/browser/{FunctionsPanel-CRW6SJUN.mjs → FunctionsPanel-ZX4J75UM.mjs} +3 -3
  7. package/dist/lib/browser/app-graph-builder-LAQMEBMH.mjs +84 -0
  8. package/dist/lib/browser/app-graph-builder-LAQMEBMH.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-CZVA5NMD.mjs → chunk-54PANILA.mjs} +5 -5
  10. package/dist/lib/browser/chunk-BFUIVUQH.mjs +102 -0
  11. package/dist/lib/browser/chunk-BFUIVUQH.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-BKFQBKYO.mjs +8 -0
  13. package/dist/lib/browser/chunk-BKFQBKYO.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-JOXPQ27I.mjs +83 -0
  15. package/dist/lib/browser/chunk-JOXPQ27I.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-LZQFZO3B.mjs → chunk-PZNBEKO5.mjs} +1 -1
  17. package/dist/lib/browser/chunk-PZNBEKO5.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-QW3EM35H.mjs +248 -0
  19. package/dist/lib/browser/chunk-QW3EM35H.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-4MBM6C6A.mjs → chunk-RAF2FJST.mjs} +14 -28
  21. package/dist/lib/browser/chunk-RAF2FJST.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-YWLEY2FD.mjs +200 -0
  23. package/dist/lib/browser/chunk-YWLEY2FD.mjs.map +7 -0
  24. package/dist/lib/browser/cli/index.mjs +1107 -0
  25. package/dist/lib/browser/cli/index.mjs.map +7 -0
  26. package/dist/lib/browser/compute-runtime-WTWLQ67J.mjs +114 -0
  27. package/dist/lib/browser/compute-runtime-WTWLQ67J.mjs.map +7 -0
  28. package/dist/lib/browser/hooks/index.mjs +3 -3
  29. package/dist/lib/browser/index.mjs +49 -57
  30. package/dist/lib/browser/index.mjs.map +4 -4
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/operation-resolver-Q3MWOR7K.mjs +82 -0
  33. package/dist/lib/browser/operation-resolver-Q3MWOR7K.mjs.map +7 -0
  34. package/dist/lib/browser/{react-surface-TKU2EQ5A.mjs → react-surface-EV3AC62F.mjs} +12 -11
  35. package/dist/lib/browser/react-surface-EV3AC62F.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +10 -4
  37. package/dist/lib/node-esm/{AutomationPanel-F5CTC6AT.mjs → AutomationPanel-B7NAGDFA.mjs} +4 -4
  38. package/dist/lib/node-esm/AutomationSettings-M5PMZJ6P.mjs +57 -0
  39. package/dist/lib/node-esm/AutomationSettings-M5PMZJ6P.mjs.map +7 -0
  40. package/dist/lib/node-esm/FunctionsContainer-J4O2ULWR.mjs +130 -0
  41. package/dist/lib/node-esm/FunctionsContainer-J4O2ULWR.mjs.map +7 -0
  42. package/dist/lib/node-esm/{FunctionsPanel-RVVCS6VH.mjs → FunctionsPanel-SS6GIVNU.mjs} +3 -3
  43. package/dist/lib/node-esm/app-graph-builder-4UCMXHYY.mjs +85 -0
  44. package/dist/lib/node-esm/app-graph-builder-4UCMXHYY.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-2CKVH7JC.mjs +201 -0
  46. package/dist/lib/node-esm/chunk-2CKVH7JC.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-CEVIVRTY.mjs → chunk-5FXNN3MV.mjs} +1 -1
  48. package/dist/lib/node-esm/chunk-5FXNN3MV.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-3IYSC75Z.mjs → chunk-7QRUPEHH.mjs} +5 -5
  50. package/dist/lib/node-esm/{chunk-7B6NAAI6.mjs → chunk-HQLVREIX.mjs} +14 -28
  51. package/dist/lib/node-esm/chunk-HQLVREIX.mjs.map +7 -0
  52. package/dist/lib/node-esm/chunk-K7GCM342.mjs +10 -0
  53. package/dist/lib/node-esm/chunk-K7GCM342.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-KWKWOGS5.mjs +103 -0
  55. package/dist/lib/node-esm/chunk-KWKWOGS5.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-LJAXQ6CX.mjs +249 -0
  57. package/dist/lib/node-esm/chunk-LJAXQ6CX.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-RX52VKI2.mjs +84 -0
  59. package/dist/lib/node-esm/chunk-RX52VKI2.mjs.map +7 -0
  60. package/dist/lib/node-esm/cli/index.mjs +1108 -0
  61. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  62. package/dist/lib/node-esm/compute-runtime-ZHROOBLY.mjs +115 -0
  63. package/dist/lib/node-esm/compute-runtime-ZHROOBLY.mjs.map +7 -0
  64. package/dist/lib/node-esm/hooks/index.mjs +3 -3
  65. package/dist/lib/node-esm/index.mjs +49 -57
  66. package/dist/lib/node-esm/index.mjs.map +4 -4
  67. package/dist/lib/node-esm/meta.json +1 -1
  68. package/dist/lib/node-esm/operation-resolver-R5GA4YNO.mjs +83 -0
  69. package/dist/lib/node-esm/operation-resolver-R5GA4YNO.mjs.map +7 -0
  70. package/dist/lib/node-esm/{react-surface-7QROSEGH.mjs → react-surface-S6VZJCEZ.mjs} +12 -11
  71. package/dist/lib/node-esm/react-surface-S6VZJCEZ.mjs.map +7 -0
  72. package/dist/lib/node-esm/types/index.mjs +10 -4
  73. package/dist/types/src/AutomationPlugin.d.ts +2 -1
  74. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  76. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  77. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  78. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts +6 -0
  80. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts.map +1 -0
  81. package/dist/types/src/capabilities/compute-runtime/index.d.ts +3 -0
  82. package/dist/types/src/capabilities/compute-runtime/index.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/index.d.ts +4 -5
  84. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  86. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  87. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  88. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  90. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  92. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  93. package/dist/types/src/cli/commands/index.d.ts +2 -0
  94. package/dist/types/src/cli/commands/index.d.ts.map +1 -0
  95. package/dist/types/src/cli/commands/trigger/create/index.d.ts +25 -0
  96. package/dist/types/src/cli/commands/trigger/create/index.d.ts.map +1 -0
  97. package/dist/types/src/cli/commands/trigger/create/queue.d.ts +13 -0
  98. package/dist/types/src/cli/commands/trigger/create/queue.d.ts.map +1 -0
  99. package/dist/types/src/cli/commands/trigger/create/subscription.d.ts +15 -0
  100. package/dist/types/src/cli/commands/trigger/create/subscription.d.ts.map +1 -0
  101. package/dist/types/src/cli/commands/trigger/create/timer.d.ts +13 -0
  102. package/dist/types/src/cli/commands/trigger/create/timer.d.ts.map +1 -0
  103. package/dist/types/src/cli/commands/trigger/index.d.ts +57 -0
  104. package/dist/types/src/cli/commands/trigger/index.d.ts.map +1 -0
  105. package/dist/types/src/cli/commands/trigger/list.d.ts +7 -0
  106. package/dist/types/src/cli/commands/trigger/list.d.ts.map +1 -0
  107. package/dist/types/src/cli/commands/trigger/options.d.ts +11 -0
  108. package/dist/types/src/cli/commands/trigger/options.d.ts.map +1 -0
  109. package/dist/types/src/cli/commands/trigger/remove.d.ts +8 -0
  110. package/dist/types/src/cli/commands/trigger/remove.d.ts.map +1 -0
  111. package/dist/types/src/cli/commands/trigger/update/index.d.ts +28 -0
  112. package/dist/types/src/cli/commands/trigger/update/index.d.ts.map +1 -0
  113. package/dist/types/src/cli/commands/trigger/update/queue.d.ts +12 -0
  114. package/dist/types/src/cli/commands/trigger/update/queue.d.ts.map +1 -0
  115. package/dist/types/src/cli/commands/trigger/update/subscription.d.ts +13 -0
  116. package/dist/types/src/cli/commands/trigger/update/subscription.d.ts.map +1 -0
  117. package/dist/types/src/cli/commands/trigger/update/timer.d.ts +11 -0
  118. package/dist/types/src/cli/commands/trigger/update/timer.d.ts.map +1 -0
  119. package/dist/types/src/cli/commands/trigger/util.d.ts +46 -0
  120. package/dist/types/src/cli/commands/trigger/util.d.ts.map +1 -0
  121. package/dist/types/src/cli/index.d.ts +2 -0
  122. package/dist/types/src/cli/index.d.ts.map +1 -0
  123. package/dist/types/src/cli/plugin.d.ts +3 -0
  124. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  125. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +1 -1
  126. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  127. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +1 -0
  128. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  130. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -1
  131. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +10 -7
  132. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  133. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +6 -3
  134. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  135. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +7 -6
  136. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  137. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +70 -2
  138. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/TriggerSettings.d.ts +3 -3
  140. package/dist/types/src/components/TriggerSettings.d.ts.map +1 -1
  141. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +6 -6
  142. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -1
  143. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +2 -2
  144. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  145. package/dist/types/src/index.d.ts +1 -2
  146. package/dist/types/src/index.d.ts.map +1 -1
  147. package/dist/types/src/meta.d.ts +2 -2
  148. package/dist/types/src/meta.d.ts.map +1 -1
  149. package/dist/types/src/translations.d.ts +1 -0
  150. package/dist/types/src/translations.d.ts.map +1 -1
  151. package/dist/types/src/types/capabilities.d.ts +22 -0
  152. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  153. package/dist/types/src/types/events.d.ts +5 -0
  154. package/dist/types/src/types/events.d.ts.map +1 -0
  155. package/dist/types/src/types/index.d.ts +2 -0
  156. package/dist/types/src/types/index.d.ts.map +1 -1
  157. package/dist/types/src/types/schema.d.ts +30 -1
  158. package/dist/types/src/types/schema.d.ts.map +1 -1
  159. package/dist/types/tsconfig.tsbuildinfo +1 -1
  160. package/package.json +61 -49
  161. package/src/AutomationPlugin.tsx +13 -33
  162. package/src/capabilities/app-graph-builder/app-graph-builder.ts +71 -0
  163. package/src/capabilities/app-graph-builder/index.ts +7 -0
  164. package/src/capabilities/{compute-runtime.ts → compute-runtime/compute-runtime.ts} +48 -44
  165. package/src/capabilities/compute-runtime/index.ts +7 -0
  166. package/src/capabilities/index.ts +4 -8
  167. package/src/capabilities/operation-resolver/index.ts +7 -0
  168. package/src/capabilities/operation-resolver/operation-resolver.ts +79 -0
  169. package/src/capabilities/react-surface/index.ts +7 -0
  170. package/src/capabilities/react-surface/react-surface.tsx +60 -0
  171. package/src/cli/commands/index.ts +5 -0
  172. package/src/cli/commands/trigger/create/index.ts +14 -0
  173. package/src/cli/commands/trigger/create/queue.ts +89 -0
  174. package/src/cli/commands/trigger/create/subscription.ts +128 -0
  175. package/src/cli/commands/trigger/create/timer.ts +93 -0
  176. package/src/cli/commands/trigger/index.ts +16 -0
  177. package/src/cli/commands/trigger/list.ts +67 -0
  178. package/src/cli/commands/trigger/options.ts +59 -0
  179. package/src/cli/commands/trigger/remove.ts +45 -0
  180. package/src/cli/commands/trigger/update/index.ts +14 -0
  181. package/src/cli/commands/trigger/update/queue.ts +195 -0
  182. package/src/cli/commands/trigger/update/subscription.ts +278 -0
  183. package/src/cli/commands/trigger/update/timer.ts +193 -0
  184. package/src/cli/commands/trigger/util.ts +395 -0
  185. package/src/cli/index.ts +5 -0
  186. package/src/cli/plugin.ts +23 -0
  187. package/src/components/AutomationPanel/AutomationPanel.tsx +33 -12
  188. package/src/components/AutomationSettings.tsx +1 -1
  189. package/src/components/FunctionsPanel/FunctionsPanel.tsx +11 -16
  190. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +8 -24
  191. package/src/components/TriggerEditor/FunctionInputEditor.tsx +23 -31
  192. package/src/components/TriggerEditor/SpecSelector.tsx +8 -6
  193. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +27 -24
  194. package/src/components/TriggerEditor/TriggerEditor.tsx +55 -42
  195. package/src/components/TriggerSettings.tsx +3 -3
  196. package/src/hooks/useComputeRuntimeCallback.ts +9 -10
  197. package/src/hooks/useTriggerRuntimeControls.ts +7 -7
  198. package/src/index.ts +1 -2
  199. package/src/meta.ts +2 -2
  200. package/src/translations.ts +2 -0
  201. package/src/{capabilities → types}/capabilities.ts +8 -7
  202. package/src/types/events.ts +11 -0
  203. package/src/types/index.ts +2 -0
  204. package/src/types/schema.ts +23 -2
  205. package/dist/lib/browser/AutomationPanel-M4M77L4V.mjs +0 -11
  206. package/dist/lib/browser/AutomationSettings-4HCI6KJR.mjs +0 -68
  207. package/dist/lib/browser/AutomationSettings-4HCI6KJR.mjs.map +0 -7
  208. package/dist/lib/browser/FunctionsContainer-CDVBRQCT.mjs +0 -144
  209. package/dist/lib/browser/FunctionsContainer-CDVBRQCT.mjs.map +0 -7
  210. package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs +0 -81
  211. package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs.map +0 -7
  212. package/dist/lib/browser/chunk-4MBM6C6A.mjs.map +0 -7
  213. package/dist/lib/browser/chunk-7W6QMY3L.mjs +0 -267
  214. package/dist/lib/browser/chunk-7W6QMY3L.mjs.map +0 -7
  215. package/dist/lib/browser/chunk-LZQFZO3B.mjs.map +0 -7
  216. package/dist/lib/browser/chunk-T6ZESHDY.mjs +0 -191
  217. package/dist/lib/browser/chunk-T6ZESHDY.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-TWWFNOIR.mjs +0 -109
  219. package/dist/lib/browser/chunk-TWWFNOIR.mjs.map +0 -7
  220. package/dist/lib/browser/chunk-XAKZ4ANY.mjs +0 -15
  221. package/dist/lib/browser/chunk-XAKZ4ANY.mjs.map +0 -7
  222. package/dist/lib/browser/chunk-YBPJCY3F.mjs +0 -38
  223. package/dist/lib/browser/chunk-YBPJCY3F.mjs.map +0 -7
  224. package/dist/lib/browser/compute-runtime-B4XJVY4Y.mjs +0 -113
  225. package/dist/lib/browser/compute-runtime-B4XJVY4Y.mjs.map +0 -7
  226. package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs +0 -77
  227. package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs.map +0 -7
  228. package/dist/lib/browser/react-surface-TKU2EQ5A.mjs.map +0 -7
  229. package/dist/lib/node-esm/AutomationSettings-BQLJIFRT.mjs +0 -69
  230. package/dist/lib/node-esm/AutomationSettings-BQLJIFRT.mjs.map +0 -7
  231. package/dist/lib/node-esm/FunctionsContainer-ZHHJPQAZ.mjs +0 -145
  232. package/dist/lib/node-esm/FunctionsContainer-ZHHJPQAZ.mjs.map +0 -7
  233. package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs +0 -82
  234. package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs.map +0 -7
  235. package/dist/lib/node-esm/chunk-7B6NAAI6.mjs.map +0 -7
  236. package/dist/lib/node-esm/chunk-CEVIVRTY.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-CF2SWXPW.mjs +0 -268
  238. package/dist/lib/node-esm/chunk-CF2SWXPW.mjs.map +0 -7
  239. package/dist/lib/node-esm/chunk-ECJKIUBO.mjs +0 -39
  240. package/dist/lib/node-esm/chunk-ECJKIUBO.mjs.map +0 -7
  241. package/dist/lib/node-esm/chunk-F76XVENA.mjs +0 -192
  242. package/dist/lib/node-esm/chunk-F76XVENA.mjs.map +0 -7
  243. package/dist/lib/node-esm/chunk-KB7NFEYY.mjs +0 -16
  244. package/dist/lib/node-esm/chunk-KB7NFEYY.mjs.map +0 -7
  245. package/dist/lib/node-esm/chunk-RVK52XGK.mjs +0 -110
  246. package/dist/lib/node-esm/chunk-RVK52XGK.mjs.map +0 -7
  247. package/dist/lib/node-esm/compute-runtime-JUWTQXOV.mjs +0 -114
  248. package/dist/lib/node-esm/compute-runtime-JUWTQXOV.mjs.map +0 -7
  249. package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs +0 -78
  250. package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs.map +0 -7
  251. package/dist/lib/node-esm/react-surface-7QROSEGH.mjs.map +0 -7
  252. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  253. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  254. package/dist/types/src/capabilities/capabilities.d.ts +0 -20
  255. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  256. package/dist/types/src/capabilities/compute-runtime.d.ts +0 -5
  257. package/dist/types/src/capabilities/compute-runtime.d.ts.map +0 -1
  258. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  259. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  260. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  261. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  262. package/dist/types/src/events.d.ts +0 -4
  263. package/dist/types/src/events.d.ts.map +0 -1
  264. package/src/capabilities/app-graph-builder.ts +0 -87
  265. package/src/capabilities/intent-resolver.ts +0 -72
  266. package/src/capabilities/react-surface.tsx +0 -56
  267. package/src/events.ts +0 -11
  268. /package/dist/lib/browser/{AutomationPanel-M4M77L4V.mjs.map → AutomationPanel-FAS6ADCW.mjs.map} +0 -0
  269. /package/dist/lib/browser/{FunctionsPanel-CRW6SJUN.mjs.map → FunctionsPanel-ZX4J75UM.mjs.map} +0 -0
  270. /package/dist/lib/browser/{chunk-CZVA5NMD.mjs.map → chunk-54PANILA.mjs.map} +0 -0
  271. /package/dist/lib/node-esm/{AutomationPanel-F5CTC6AT.mjs.map → AutomationPanel-B7NAGDFA.mjs.map} +0 -0
  272. /package/dist/lib/node-esm/{FunctionsPanel-RVVCS6VH.mjs.map → FunctionsPanel-SS6GIVNU.mjs.map} +0 -0
  273. /package/dist/lib/node-esm/{chunk-3IYSC75Z.mjs.map → chunk-7QRUPEHH.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'dxos.org/plugin/automation',\n name: 'Automation',\n description: trim`\n Workflow automation engine that triggers custom actions based on object events and conditions.\n Create automated pipelines that respond to changes and streamline repetitive tasks.\n `,\n icon: 'ph--robot--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-automation',\n};\n"],
5
+ "mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,QAAQ;AACV;",
6
+ "names": ["trim", "meta", "id", "name", "description", "trim", "icon", "source"]
7
+ }
@@ -0,0 +1,248 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-PZNBEKO5.mjs";
4
+
5
+ // src/components/TriggerEditor/TriggerEditor.tsx
6
+ import React3, { useCallback as useCallback3, useMemo as useMemo3 } from "react";
7
+ import { ComputeGraph } from "@dxos/conductor";
8
+ import { DXN } from "@dxos/echo";
9
+ import { Function, Script, Trigger as Trigger2 } from "@dxos/functions";
10
+ import { Filter as Filter2, Ref as Ref2, useQuery } from "@dxos/react-client/echo";
11
+ import { Input } from "@dxos/react-ui";
12
+ import { QueryForm } from "@dxos/react-ui-components";
13
+ import { Form as Form2, FormFieldLabel, SelectField as SelectField2, omitId } from "@dxos/react-ui-form";
14
+
15
+ // src/components/TriggerEditor/FunctionInputEditor.tsx
16
+ import React, { useCallback, useMemo } from "react";
17
+ import { Ref, Type } from "@dxos/echo";
18
+ import { useOnTransition, useTranslation } from "@dxos/react-ui";
19
+ import { Form, useFormValues } from "@dxos/react-ui-form";
20
+ var FunctionInputEditor = ({ type, functions, db, getValue, onValueChange }) => {
21
+ const { t } = useTranslation(meta.id);
22
+ const selectedFunctionValue = useFormValues(FunctionInputEditor.displayName, [
23
+ "function"
24
+ ]);
25
+ const selectedFunctionId = useMemo(() => {
26
+ if (Ref.isRef(selectedFunctionValue)) {
27
+ return selectedFunctionValue.dxn.toString().split("dxn:echo:@:").at(1);
28
+ }
29
+ }, [
30
+ selectedFunctionValue
31
+ ]);
32
+ const selectedFunction = useMemo(() => functions.find((fn) => fn.id === selectedFunctionId), [
33
+ functions,
34
+ selectedFunctionId
35
+ ]);
36
+ useOnTransition(
37
+ // Clear function parameter input when the function changes.
38
+ selectedFunctionValue,
39
+ (prevValue) => {
40
+ if (!Ref.isRef(prevValue) || !Ref.isRef(selectedFunctionValue)) {
41
+ return false;
42
+ }
43
+ return prevValue.dxn.toString() !== selectedFunctionValue.dxn.toString();
44
+ },
45
+ (currValue) => currValue !== void 0,
46
+ () => onValueChange(type, {})
47
+ );
48
+ const inputSchema = useMemo(() => selectedFunction?.inputSchema, [
49
+ selectedFunction
50
+ ]);
51
+ const effectSchema = useMemo(() => inputSchema ? Type.toEffectSchema(inputSchema) : void 0, [
52
+ inputSchema
53
+ ]);
54
+ const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;
55
+ const values = useMemo(() => getValue() ?? {}, [
56
+ getValue
57
+ ]);
58
+ const handleValuesChanged = useCallback((values2) => {
59
+ onValueChange(type, values2);
60
+ }, [
61
+ type,
62
+ onValueChange
63
+ ]);
64
+ if (selectedFunction === void 0 || effectSchema === void 0 || propertyCount === 0) {
65
+ return null;
66
+ }
67
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Form.Label, {
68
+ label: t("function parameters label"),
69
+ asChild: true
70
+ }), /* @__PURE__ */ React.createElement(Form.Root, {
71
+ schema: effectSchema,
72
+ values,
73
+ db,
74
+ onValuesChanged: handleValuesChanged
75
+ }, /* @__PURE__ */ React.createElement(Form.FieldSet, null)));
76
+ };
77
+ FunctionInputEditor.displayName = "AutomationTrigger.FunctionInputEditor";
78
+
79
+ // src/components/TriggerEditor/SpecSelector.tsx
80
+ import React2, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
81
+ import { Filter, Query } from "@dxos/echo";
82
+ import { Trigger } from "@dxos/functions";
83
+ import { useTranslation as useTranslation2 } from "@dxos/react-ui";
84
+ import { SelectField, useFormFieldState } from "@dxos/react-ui-form";
85
+ var SpecSelector = (props) => {
86
+ const { t } = useTranslation2(meta.id);
87
+ const specProps = useFormFieldState(SpecSelector.displayName, [
88
+ "spec"
89
+ ]);
90
+ const handleTypeChange = useCallback2((_type, value) => {
91
+ const getDefaultTriggerSpec = (kind) => {
92
+ switch (kind) {
93
+ case "timer":
94
+ return {
95
+ kind: "timer",
96
+ cron: ""
97
+ };
98
+ case "subscription":
99
+ return {
100
+ kind: "subscription",
101
+ query: {
102
+ ast: Query.select(Filter.nothing()).ast
103
+ }
104
+ };
105
+ case "queue":
106
+ return {
107
+ kind: "queue",
108
+ queue: "dxn:"
109
+ };
110
+ case "email":
111
+ return {
112
+ kind: "email"
113
+ };
114
+ case "webhook":
115
+ return {
116
+ kind: "webhook"
117
+ };
118
+ default:
119
+ return void 0;
120
+ }
121
+ };
122
+ const defaultSpec = getDefaultTriggerSpec(value);
123
+ if (!defaultSpec) {
124
+ return;
125
+ }
126
+ specProps.onValueChange(props.type, defaultSpec);
127
+ }, [
128
+ props.type,
129
+ specProps
130
+ ]);
131
+ const options = useMemo2(() => Trigger.Kinds.map((kind) => ({
132
+ value: kind,
133
+ label: t(`trigger type ${kind}`)
134
+ })), [
135
+ t
136
+ ]);
137
+ return /* @__PURE__ */ React2.createElement(SelectField, {
138
+ ...props,
139
+ options,
140
+ onValueChange: handleTypeChange
141
+ });
142
+ };
143
+ SpecSelector.displayName = "Form.SpecSelector";
144
+
145
+ // src/components/TriggerEditor/TriggerEditor.tsx
146
+ var TriggerEditor = ({ db, types, tags, readonlySpec, trigger, ...formProps }) => {
147
+ const fieldMap = useCustomInputs({
148
+ db,
149
+ types,
150
+ tags,
151
+ readonlySpec
152
+ });
153
+ return /* @__PURE__ */ React3.createElement(Form2.Root, {
154
+ ...formProps,
155
+ schema: omitId(Trigger2.Trigger),
156
+ values: trigger,
157
+ db,
158
+ fieldMap
159
+ }, /* @__PURE__ */ React3.createElement(Form2.Viewport, null, /* @__PURE__ */ React3.createElement(Form2.Content, null, /* @__PURE__ */ React3.createElement(Form2.FieldSet, null), /* @__PURE__ */ React3.createElement(Form2.Actions, null))));
160
+ };
161
+ var useCustomInputs = ({ db, readonlySpec, types, tags }) => {
162
+ const functions = useQuery(db, Filter2.type(Function.Function));
163
+ const workflows = useQuery(db, Filter2.type(ComputeGraph));
164
+ const scripts = useQuery(db, Filter2.type(Script.Script));
165
+ return useMemo3(() => ({
166
+ // Function selector.
167
+ ["function"]: (props) => {
168
+ const getValue = useCallback3(() => {
169
+ const formValue = props.getValue();
170
+ if (Ref2.isRef(formValue)) {
171
+ return formValue.dxn.toString();
172
+ }
173
+ return void 0;
174
+ }, [
175
+ props
176
+ ]);
177
+ const handleOnValueChange = useCallback3((_type, dxnString) => {
178
+ const dxn = DXN.parse(dxnString);
179
+ if (dxn) {
180
+ const ref = Ref2.fromDXN(dxn);
181
+ props.onValueChange(props.type, ref);
182
+ }
183
+ }, [
184
+ props.type,
185
+ props.onValueChange
186
+ ]);
187
+ return /* @__PURE__ */ React3.createElement(SelectField2, {
188
+ ...props,
189
+ getValue,
190
+ onValueChange: handleOnValueChange,
191
+ options: getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))
192
+ });
193
+ },
194
+ // Spec selector.
195
+ ["spec.kind"]: (props) => /* @__PURE__ */ React3.createElement(SpecSelector, {
196
+ ...props,
197
+ readonly: readonlySpec
198
+ }),
199
+ // TODO(wittjosiah): Copied from ViewEditor.
200
+ // Query input editor.
201
+ ["spec.query"]: (props) => {
202
+ const handleChange = useCallback3((query) => props.onValueChange(props.type, {
203
+ ast: query.ast
204
+ }), [
205
+ props.type,
206
+ props.onValueChange
207
+ ]);
208
+ return /* @__PURE__ */ React3.createElement(Input.Root, null, /* @__PURE__ */ React3.createElement(FormFieldLabel, {
209
+ label: props.label,
210
+ asChild: true
211
+ }), /* @__PURE__ */ React3.createElement(QueryForm, {
212
+ initialQuery: props.getValue().ast,
213
+ types,
214
+ tags,
215
+ onChange: handleChange
216
+ }));
217
+ },
218
+ // Function input editor.
219
+ ["input"]: (props) => /* @__PURE__ */ React3.createElement(FunctionInputEditor, {
220
+ ...props,
221
+ functions,
222
+ db
223
+ })
224
+ }), [
225
+ workflows,
226
+ scripts,
227
+ functions,
228
+ readonlySpec
229
+ ]);
230
+ };
231
+ var getWorkflowOptions = (graphs) => {
232
+ return graphs.map((graph) => ({
233
+ label: `compute-${graph.id}`,
234
+ value: `dxn:echo:@:${graph.id}`
235
+ }));
236
+ };
237
+ var getFunctionOptions = (scripts, functions) => {
238
+ const getLabel = (fn) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
239
+ return functions.map((fn) => ({
240
+ label: getLabel(fn),
241
+ value: `dxn:echo:@:${fn.id}`
242
+ }));
243
+ };
244
+
245
+ export {
246
+ TriggerEditor
247
+ };
248
+ //# sourceMappingURL=chunk-QW3EM35H.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/TriggerEditor/TriggerEditor.tsx", "../../../src/components/TriggerEditor/FunctionInputEditor.tsx", "../../../src/components/TriggerEditor/SpecSelector.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { DXN, type Database, type Query } from '@dxos/echo';\nimport { Function, Script, Trigger } from '@dxos/functions';\nimport { Filter, Ref, useQuery } from '@dxos/react-client/echo';\nimport { Input } from '@dxos/react-ui';\nimport { QueryForm, type QueryFormProps } from '@dxos/react-ui-components';\nimport {\n type ExcludeId,\n Form,\n FormFieldLabel,\n type FormFieldMap,\n type FormRootProps,\n SelectField,\n omitId,\n} from '@dxos/react-ui-form';\n\nimport { FunctionInputEditor } from './FunctionInputEditor';\nimport { SpecSelector } from './SpecSelector';\n\ntype TriggerFormSchema = ExcludeId<typeof Trigger.Trigger>;\n\nexport type TriggerEditorProps = {\n db: Database.Database;\n trigger: Trigger.Trigger;\n // TODO(wittjosiah): This needs to apply to whole spec but currently only applies to spec.kind & spec.query.\n readonlySpec?: boolean;\n} &\n // prettier-ignore\n Pick<QueryFormProps, 'types' | 'tags'> &\n Pick<FormRootProps<TriggerFormSchema>, 'onSave' | 'onCancel'>;\n\nexport const TriggerEditor = ({ db, types, tags, readonlySpec, trigger, ...formProps }: TriggerEditorProps) => {\n const fieldMap = useCustomInputs({\n db,\n types,\n tags,\n readonlySpec,\n });\n\n return (\n <Form.Root<TriggerFormSchema>\n {...formProps}\n schema={omitId(Trigger.Trigger)}\n values={trigger}\n db={db}\n fieldMap={fieldMap}\n >\n <Form.Viewport>\n <Form.Content>\n <Form.FieldSet />\n <Form.Actions />\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n );\n};\n\ntype UseCustomInputsProps = {\n db: Database.Database;\n readonlySpec?: boolean;\n} & Pick<QueryFormProps, 'types' | 'tags'>;\n\nconst useCustomInputs = ({ db, readonlySpec, types, tags }: UseCustomInputsProps): FormFieldMap => {\n const functions = useQuery(db, Filter.type(Function.Function));\n const workflows = useQuery(db, Filter.type(ComputeGraph));\n const scripts = useQuery(db, Filter.type(Script.Script));\n\n return useMemo(\n (): FormFieldMap => ({\n // Function selector.\n ['function' satisfies keyof Trigger.Trigger]: (props) => {\n const getValue = useCallback(() => {\n const formValue = props.getValue();\n if (Ref.isRef(formValue)) {\n return formValue.dxn.toString() as string;\n }\n return undefined;\n }, [props]);\n\n const handleOnValueChange = useCallback(\n (_type: any, dxnString: string) => {\n const dxn = DXN.parse(dxnString);\n if (dxn) {\n const ref = Ref.fromDXN(dxn);\n props.onValueChange(props.type, ref);\n }\n },\n [props.type, props.onValueChange],\n );\n\n return (\n <SelectField\n {...props}\n getValue={getValue as any}\n onValueChange={handleOnValueChange}\n options={getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))}\n />\n );\n },\n\n // Spec selector.\n ['spec.kind' as const]: (props) => <SpecSelector {...props} readonly={readonlySpec} />,\n\n // TODO(wittjosiah): Copied from ViewEditor.\n // Query input editor.\n ['spec.query' as const]: (props) => {\n const handleChange = useCallback(\n (query: Query.Any) => props.onValueChange(props.type, { ast: query.ast }),\n [props.type, props.onValueChange],\n );\n\n return (\n <Input.Root>\n <FormFieldLabel label={props.label} asChild />\n <QueryForm initialQuery={(props.getValue() as any).ast} types={types} tags={tags} onChange={handleChange} />\n </Input.Root>\n );\n },\n\n // Function input editor.\n ['input' as const]: (props) => <FunctionInputEditor {...props} functions={functions} db={db} />,\n }),\n [workflows, scripts, functions, readonlySpec],\n );\n};\n\nconst getWorkflowOptions = (graphs: ComputeGraph[]) => {\n return graphs.map((graph) => ({ label: `compute-${graph.id}`, value: `dxn:echo:@:${graph.id}` }));\n};\n\nconst getFunctionOptions = (scripts: Script.Script[], functions: Function.Function[]) => {\n const getLabel = (fn: Function.Function) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;\n return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:echo:@:${fn.id}` }));\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as SchemaAST from 'effect/SchemaAST';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type Database, Ref, Type } from '@dxos/echo';\nimport { type JsonPath } from '@dxos/echo/internal';\nimport { type Function } from '@dxos/functions';\nimport { useOnTransition, useTranslation } from '@dxos/react-ui';\nimport { Form, type FormFieldStateProps, type FormRootProps, useFormValues } from '@dxos/react-ui-form';\n\nimport { meta } from '../../meta';\n\nexport type FunctionInputEditorProps = {\n type: SchemaAST.AST;\n functions: Function.Function[];\n db?: Database.Database;\n} & FormFieldStateProps;\n\nexport const FunctionInputEditor = ({ type, functions, db, getValue, onValueChange }: FunctionInputEditorProps) => {\n const { t } = useTranslation(meta.id);\n const selectedFunctionValue = useFormValues(FunctionInputEditor.displayName, ['function' as JsonPath]);\n const selectedFunctionId = useMemo(() => {\n if (Ref.isRef(selectedFunctionValue)) {\n return selectedFunctionValue.dxn.toString().split('dxn:echo:@:').at(1);\n }\n }, [selectedFunctionValue]);\n\n const selectedFunction = useMemo(\n () => functions.find((fn) => fn.id === selectedFunctionId),\n [functions, selectedFunctionId],\n );\n\n useOnTransition(\n // Clear function parameter input when the function changes.\n selectedFunctionValue,\n (prevValue) => {\n if (!Ref.isRef(prevValue) || !Ref.isRef(selectedFunctionValue)) {\n return false;\n }\n\n return prevValue.dxn.toString() !== selectedFunctionValue.dxn.toString();\n },\n (currValue) => currValue !== undefined,\n () => onValueChange(type, {}),\n );\n\n const inputSchema = useMemo(() => selectedFunction?.inputSchema, [selectedFunction]);\n const effectSchema = useMemo(() => (inputSchema ? Type.toEffectSchema(inputSchema) : undefined), [inputSchema]);\n const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;\n const values = useMemo(() => getValue() ?? {}, [getValue]);\n\n const handleValuesChanged = useCallback<NonNullable<FormRootProps['onValuesChanged']>>(\n (values) => {\n onValueChange(type, values);\n },\n [type, onValueChange],\n );\n\n if (selectedFunction === undefined || effectSchema === undefined || propertyCount === 0) {\n return null;\n }\n\n return (\n <>\n <Form.Label label={t('function parameters label')} asChild />\n <Form.Root schema={effectSchema} values={values} db={db} onValuesChanged={handleValuesChanged}>\n <Form.FieldSet />\n </Form.Root>\n </>\n );\n};\n\nFunctionInputEditor.displayName = 'AutomationTrigger.FunctionInputEditor';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Filter, Query } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { useTranslation } from '@dxos/react-ui';\nimport { type FormFieldComponentProps, SelectField, useFormFieldState } from '@dxos/react-ui-form';\n\nimport { meta } from '../../meta';\n\nexport type SpecSelectorProps = FormFieldComponentProps;\n\nexport const SpecSelector = (props: SpecSelectorProps) => {\n const { t } = useTranslation(meta.id);\n const specProps = useFormFieldState(SpecSelector.displayName, ['spec' satisfies keyof Trigger.Trigger]);\n\n const handleTypeChange = useCallback(\n (_type: any, value: string): Trigger.Spec | undefined => {\n const getDefaultTriggerSpec = (kind: string) => {\n switch (kind) {\n case 'timer':\n return { kind: 'timer', cron: '' };\n case 'subscription':\n return {\n kind: 'subscription',\n query: {\n ast: Query.select(Filter.nothing()).ast,\n },\n };\n case 'queue':\n return { kind: 'queue', queue: 'dxn:' };\n case 'email':\n return { kind: 'email' };\n case 'webhook':\n return { kind: 'webhook' };\n default:\n return undefined;\n }\n };\n\n const defaultSpec = getDefaultTriggerSpec(value);\n if (!defaultSpec) {\n return;\n }\n\n // Update the entire spec object, not just the `spec.kind`.\n specProps.onValueChange(props.type, defaultSpec);\n },\n [props.type, specProps],\n );\n\n const options = useMemo(\n () =>\n Trigger.Kinds.map((kind) => ({\n value: kind,\n label: t(`trigger type ${kind}`),\n })),\n [t],\n );\n\n return <SelectField {...props} options={options} onValueChange={handleTypeChange} />;\n};\n\nSpecSelector.displayName = 'Form.SpecSelector';\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useMemo", "ComputeGraph", "DXN", "Function", "Script", "Trigger", "Filter", "Ref", "useQuery", "Input", "QueryForm", "Form", "FormFieldLabel", "SelectField", "omitId", "React", "useCallback", "useMemo", "Ref", "Type", "useOnTransition", "useTranslation", "Form", "useFormValues", "FunctionInputEditor", "type", "functions", "db", "getValue", "onValueChange", "t", "useTranslation", "meta", "id", "selectedFunctionValue", "useFormValues", "displayName", "selectedFunctionId", "useMemo", "Ref", "isRef", "dxn", "toString", "split", "at", "selectedFunction", "find", "fn", "useOnTransition", "prevValue", "currValue", "undefined", "inputSchema", "effectSchema", "Type", "toEffectSchema", "propertyCount", "properties", "Object", "keys", "length", "values", "handleValuesChanged", "useCallback", "Form", "Label", "label", "asChild", "Root", "schema", "onValuesChanged", "FieldSet", "React", "useCallback", "useMemo", "Filter", "Query", "Trigger", "useTranslation", "SelectField", "useFormFieldState", "SpecSelector", "props", "t", "useTranslation", "meta", "id", "specProps", "useFormFieldState", "displayName", "handleTypeChange", "useCallback", "_type", "value", "getDefaultTriggerSpec", "kind", "cron", "query", "ast", "Query", "select", "Filter", "nothing", "queue", "undefined", "defaultSpec", "onValueChange", "type", "options", "useMemo", "Trigger", "Kinds", "map", "label", "React", "SelectField", "TriggerEditor", "db", "types", "tags", "readonlySpec", "trigger", "formProps", "fieldMap", "useCustomInputs", "React", "Form", "Root", "schema", "omitId", "Trigger", "values", "Viewport", "Content", "FieldSet", "Actions", "functions", "useQuery", "Filter", "type", "Function", "workflows", "ComputeGraph", "scripts", "Script", "useMemo", "props", "getValue", "useCallback", "formValue", "Ref", "isRef", "dxn", "toString", "undefined", "handleOnValueChange", "_type", "dxnString", "DXN", "parse", "ref", "fromDXN", "onValueChange", "SelectField", "options", "getWorkflowOptions", "concat", "getFunctionOptions", "SpecSelector", "readonly", "handleChange", "query", "ast", "Input", "FormFieldLabel", "label", "asChild", "QueryForm", "initialQuery", "onChange", "FunctionInputEditor", "graphs", "map", "graph", "id", "value", "getLabel", "fn", "find", "s", "source", "target", "name"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AutomationCapabilities
3
- } from "./chunk-XAKZ4ANY.mjs";
3
+ } from "./chunk-JOXPQ27I.mjs";
4
4
 
5
5
  // src/hooks/useComputeRuntimeCallback.ts
6
6
  import * as Cause from "effect/Cause";
@@ -8,22 +8,12 @@ import * as Effect from "effect/Effect";
8
8
  import * as Exit from "effect/Exit";
9
9
  import { useCallback } from "react";
10
10
  import { useCapability } from "@dxos/app-framework/react";
11
- import { FunctionInvocationService } from "@dxos/functions";
12
- import { InvocationTracer, TracingServiceExt } from "@dxos/functions-runtime";
11
+ import { FunctionInvocationService, TracingService } from "@dxos/functions";
13
12
  import { log } from "@dxos/log";
14
-
15
- // src/capabilities/index.ts
16
- import { lazy } from "@dxos/app-framework";
17
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-W7LLC6XW.mjs"));
18
- var ComputeRuntime = lazy(() => import("./compute-runtime-B4XJVY4Y.mjs"));
19
- var IntentResolver = lazy(() => import("./intent-resolver-5HR7M7T6.mjs"));
20
- var ReactSurface = lazy(() => import("./react-surface-TKU2EQ5A.mjs"));
21
-
22
- // src/hooks/useComputeRuntimeCallback.ts
23
13
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/hooks/useComputeRuntimeCallback.ts";
24
- var useComputeRuntimeCallback = (space, fn, deps) => {
14
+ var useComputeRuntimeCallback = (id, fn, deps) => {
25
15
  const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);
26
- const runtime = space !== void 0 ? computeRuntime.getRuntime(space.id) : void 0;
16
+ const runtime = id !== void 0 ? computeRuntime.getRuntime(id) : void 0;
27
17
  return useCallback(() => {
28
18
  if (!runtime) {
29
19
  throw new TypeError("Space not provided to useComputeRuntimeCallback");
@@ -35,19 +25,19 @@ var useComputeRuntimeCallback = (space, fn, deps) => {
35
25
  ]);
36
26
  };
37
27
  var invokeFunctionWithTracing = (functionDef, inputData) => Effect.gen(function* () {
38
- const tracer = yield* InvocationTracer;
28
+ const tracer = yield* TracingService;
39
29
  const trace = yield* tracer.traceInvocationStart({
40
30
  target: void 0,
41
31
  payload: {
42
32
  data: {}
43
33
  }
44
34
  });
45
- const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)), Effect.exit);
35
+ const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(Effect.provide(trace.invocationTraceQueue ? TracingService.layerInvocation(trace) : TracingService.layerNoop), Effect.exit);
46
36
  if (Exit.isFailure(result)) {
47
37
  const error = Cause.prettyErrors(result.cause)[0];
48
38
  log.error(error.message, error.cause ?? error.stack, {
49
39
  F: __dxlog_file,
50
- L: 58,
40
+ L: 57,
51
41
  S: this,
52
42
  C: (f, a) => f(...a)
53
43
  });
@@ -67,15 +57,15 @@ import { Trigger } from "@dxos/functions";
67
57
  import { TriggerDispatcher } from "@dxos/functions-runtime";
68
58
  import { useQuery } from "@dxos/react-client/echo";
69
59
  import { useAsyncState } from "@dxos/react-ui";
70
- var useTriggerRuntimeControls = (space) => {
71
- const triggers = useQuery(space, Filter.type(Trigger.Trigger));
72
- const [isRunningState, setIsRunningState] = useAsyncState(useComputeRuntimeCallback(space, () => TriggerDispatcher.pipe(Effect2.map((t) => t.running))));
73
- const start = useComputeRuntimeCallback(space, Effect2.fnUntraced(function* () {
60
+ var useTriggerRuntimeControls = (db) => {
61
+ const triggers = useQuery(db, Filter.type(Trigger.Trigger));
62
+ const [isRunningState, setIsRunningState] = useAsyncState(useComputeRuntimeCallback(db?.spaceId, () => TriggerDispatcher.pipe(Effect2.map((t) => t.running))));
63
+ const start = useComputeRuntimeCallback(db?.spaceId, Effect2.fnUntraced(function* () {
74
64
  const dispatcher = yield* TriggerDispatcher;
75
65
  yield* dispatcher.start();
76
66
  setIsRunningState(true);
77
67
  }));
78
- const stop = useComputeRuntimeCallback(space, Effect2.fnUntraced(function* () {
68
+ const stop = useComputeRuntimeCallback(db?.spaceId, Effect2.fnUntraced(function* () {
79
69
  const dispatcher = yield* TriggerDispatcher;
80
70
  yield* dispatcher.stop();
81
71
  setIsRunningState(false);
@@ -91,10 +81,6 @@ var useTriggerRuntimeControls = (space) => {
91
81
  export {
92
82
  useComputeRuntimeCallback,
93
83
  invokeFunctionWithTracing,
94
- useTriggerRuntimeControls,
95
- AppGraphBuilder,
96
- ComputeRuntime,
97
- IntentResolver,
98
- ReactSurface
84
+ useTriggerRuntimeControls
99
85
  };
100
- //# sourceMappingURL=chunk-4MBM6C6A.mjs.map
86
+ //# sourceMappingURL=chunk-RAF2FJST.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useComputeRuntimeCallback.ts", "../../../src/hooks/useTriggerRuntimeControls.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport { type DependencyList, useCallback } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\nimport { type Key } from '@dxos/echo';\nimport { type FunctionDefinition, FunctionInvocationService, TracingService } from '@dxos/functions';\nimport { log } from '@dxos/log';\n\nimport { AutomationCapabilities } from '../types';\n\n/**\n * Create an effectful function that has access to compute services\n */\n// TODO(burdon): Factor out (figure out cross-plugin capabilities dependencies).\nexport const useComputeRuntimeCallback = <T>(\n id: Key.SpaceId | undefined,\n fn: () => Effect.Effect<T, any, AutomationCapabilities.ComputeServices>,\n deps?: DependencyList,\n): (() => Promise<T>) => {\n const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);\n const runtime = id !== undefined ? computeRuntime.getRuntime(id) : undefined;\n\n return useCallback(() => {\n if (!runtime) {\n throw new TypeError('Space not provided to useComputeRuntimeCallback');\n }\n\n return runtime.runPromise(fn());\n }, [runtime, ...(deps ?? [])]);\n};\n\n// TODO(wittjosiah): Function invoking should automatically be traced (DX-647).\nexport const invokeFunctionWithTracing = <I, O>(functionDef: FunctionDefinition<I, O>, inputData: I) =>\n Effect.gen(function* () {\n const tracer = yield* TracingService;\n const trace = yield* tracer.traceInvocationStart({\n target: undefined,\n payload: {\n data: {},\n },\n });\n\n // Invoke the function.\n const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(\n Effect.provide(trace.invocationTraceQueue ? TracingService.layerInvocation(trace) : TracingService.layerNoop),\n Effect.exit,\n );\n\n if (Exit.isFailure(result)) {\n const error = Cause.prettyErrors(result.cause)[0];\n log.error(error.message, error.cause ?? error.stack);\n }\n\n yield* tracer.traceInvocationEnd({\n trace,\n // TODO(dmaretskyi): Might miss errors.\n exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : undefined,\n });\n\n return result;\n });\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { type Database, Filter } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { TriggerDispatcher } from '@dxos/functions-runtime';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { useAsyncState } from '@dxos/react-ui';\n\nimport { useComputeRuntimeCallback } from './useComputeRuntimeCallback';\n\ninterface TriggerRuntimeControls {\n triggers: Trigger.Trigger[];\n isRunning: boolean;\n start: () => void;\n stop: () => void;\n}\n\nexport const useTriggerRuntimeControls = (db: Database.Database | undefined): TriggerRuntimeControls => {\n const triggers = useQuery(db, Filter.type(Trigger.Trigger));\n\n const [isRunningState, setIsRunningState] = useAsyncState(\n useComputeRuntimeCallback(db?.spaceId, () => TriggerDispatcher.pipe(Effect.map((t) => t.running))),\n );\n\n const start = useComputeRuntimeCallback(\n db?.spaceId,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.start();\n setIsRunningState(true);\n }),\n );\n\n const stop = useComputeRuntimeCallback(\n db?.spaceId,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.stop();\n setIsRunningState(false);\n }),\n );\n\n return {\n triggers,\n isRunning: isRunningState ?? false,\n start: () => void start(),\n stop: () => void stop(),\n };\n};\n"],
5
+ "mappings": ";;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,UAAU;AACtB,SAA8BC,mBAAmB;AAEjD,SAASC,qBAAqB;AAE9B,SAAkCC,2BAA2BC,sBAAsB;AACnF,SAASC,WAAW;;AAQb,IAAMC,4BAA4B,CACvCC,IACAC,IACAC,SAAAA;AAEA,QAAMC,iBAAiBC,cAAcC,uBAAuBC,cAAc;AAC1E,QAAMC,UAAUP,OAAOQ,SAAYL,eAAeM,WAAWT,EAAAA,IAAMQ;AAEnE,SAAOE,YAAY,MAAA;AACjB,QAAI,CAACH,SAAS;AACZ,YAAM,IAAII,UAAU,iDAAA;IACtB;AAEA,WAAOJ,QAAQK,WAAWX,GAAAA,CAAAA;EAC5B,GAAG;IAACM;OAAaL,QAAQ,CAAA;GAAI;AAC/B;AAGO,IAAMW,4BAA4B,CAAOC,aAAuCC,cAC9EC,WAAI,aAAA;AACT,QAAMC,SAAS,OAAOC;AACtB,QAAMC,QAAQ,OAAOF,OAAOG,qBAAqB;IAC/CC,QAAQb;IACRc,SAAS;MACPC,MAAM,CAAC;IACT;EACF,CAAA;AAGA,QAAMC,SAAS,OAAOC,0BAA0BC,eAAeZ,aAAaC,SAAAA,EAAWY,KAC9EC,eAAQT,MAAMU,uBAAuBX,eAAeY,gBAAgBX,KAAAA,IAASD,eAAea,SAAS,GACrGC,WAAI;AAGb,MAASC,eAAUT,MAAAA,GAAS;AAC1B,UAAMU,QAAcC,mBAAaX,OAAOY,KAAK,EAAE,CAAA;AAC/CC,QAAIH,MAAMA,MAAMI,SAASJ,MAAME,SAASF,MAAMK,OAAK;;;;;;EACrD;AAEA,SAAOtB,OAAOuB,mBAAmB;IAC/BrB;;IAEAsB,WAAgBR,eAAUT,MAAAA,IAAgBW,mBAAaX,OAAOY,KAAK,EAAE,CAAA,IAAK5B;EAC5E,CAAA;AAEA,SAAOgB;AACT,CAAA;;;AC9DF,YAAYkB,aAAY;AAExB,SAAwBC,cAAc;AACtC,SAASC,eAAe;AACxB,SAASC,yBAAyB;AAClC,SAASC,gBAAgB;AACzB,SAASC,qBAAqB;AAWvB,IAAMC,4BAA4B,CAACC,OAAAA;AACxC,QAAMC,WAAWC,SAASF,IAAIG,OAAOC,KAAKC,QAAQA,OAAO,CAAA;AAEzD,QAAM,CAACC,gBAAgBC,iBAAAA,IAAqBC,cAC1CC,0BAA0BT,IAAIU,SAAS,MAAMC,kBAAkBC,KAAYC,YAAI,CAACC,MAAMA,EAAEC,OAAO,CAAA,CAAA,CAAA;AAGjG,QAAMC,QAAQP,0BACZT,IAAIU,SACGO,mBAAW,aAAA;AAChB,UAAMC,aAAa,OAAOP;AAC1B,WAAOO,WAAWF,MAAK;AACvBT,sBAAkB,IAAA;EACpB,CAAA,CAAA;AAGF,QAAMY,OAAOV,0BACXT,IAAIU,SACGO,mBAAW,aAAA;AAChB,UAAMC,aAAa,OAAOP;AAC1B,WAAOO,WAAWC,KAAI;AACtBZ,sBAAkB,KAAA;EACpB,CAAA,CAAA;AAGF,SAAO;IACLN;IACAmB,WAAWd,kBAAkB;IAC7BU,OAAO,MAAM,KAAKA,MAAAA;IAClBG,MAAM,MAAM,KAAKA,KAAAA;EACnB;AACF;",
6
+ "names": ["Cause", "Effect", "Exit", "useCallback", "useCapability", "FunctionInvocationService", "TracingService", "log", "useComputeRuntimeCallback", "id", "fn", "deps", "computeRuntime", "useCapability", "AutomationCapabilities", "ComputeRuntime", "runtime", "undefined", "getRuntime", "useCallback", "TypeError", "runPromise", "invokeFunctionWithTracing", "functionDef", "inputData", "gen", "tracer", "TracingService", "trace", "traceInvocationStart", "target", "payload", "data", "result", "FunctionInvocationService", "invokeFunction", "pipe", "provide", "invocationTraceQueue", "layerInvocation", "layerNoop", "exit", "isFailure", "error", "prettyErrors", "cause", "log", "message", "stack", "traceInvocationEnd", "exception", "Effect", "Filter", "Trigger", "TriggerDispatcher", "useQuery", "useAsyncState", "useTriggerRuntimeControls", "db", "triggers", "useQuery", "Filter", "type", "Trigger", "isRunningState", "setIsRunningState", "useAsyncState", "useComputeRuntimeCallback", "spaceId", "TriggerDispatcher", "pipe", "map", "t", "running", "start", "fnUntraced", "dispatcher", "stop", "isRunning"]
7
+ }
@@ -0,0 +1,200 @@
1
+ import {
2
+ TriggerEditor
3
+ } from "./chunk-QW3EM35H.mjs";
4
+ import {
5
+ meta
6
+ } from "./chunk-PZNBEKO5.mjs";
7
+
8
+ // src/components/AutomationPanel/AutomationPanel.tsx
9
+ import * as Array from "effect/Array";
10
+ import * as EFn from "effect/Function";
11
+ import * as Match from "effect/Match";
12
+ import * as Schema from "effect/Schema";
13
+ import React, { useMemo, useState } from "react";
14
+ import { Filter, Obj, Tag } from "@dxos/echo";
15
+ import { Function, Script, Trigger } from "@dxos/functions";
16
+ import { FunctionsServiceClient } from "@dxos/functions-runtime/edge";
17
+ import { useTypeOptions } from "@dxos/plugin-space";
18
+ import { useClient } from "@dxos/react-client";
19
+ import { useQuery } from "@dxos/react-client/echo";
20
+ import { Clipboard, IconButton, Input, Separator, useTranslation } from "@dxos/react-ui";
21
+ import { ControlItem, controlItemClasses } from "@dxos/react-ui-form";
22
+ import { List } from "@dxos/react-ui-list";
23
+ import { Project } from "@dxos/types";
24
+ import { ghostHover, mx } from "@dxos/ui-theme";
25
+ import { isNonNullable } from "@dxos/util";
26
+ var grid = "grid grid-cols-[40px_1fr_32px_32px] min-bs-[2.5rem]";
27
+ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) => {
28
+ const { t } = useTranslation(meta.id);
29
+ const client = useClient();
30
+ const functionsServiceClient = useMemo(() => FunctionsServiceClient.fromClient(client), [
31
+ client
32
+ ]);
33
+ const functions = useQuery(space.db, Filter.type(Function.Function));
34
+ const triggers = useQuery(space.db, Filter.type(Trigger.Trigger));
35
+ const filteredTriggers = useMemo(() => {
36
+ return object ? triggers.filter(triggerMatch(object)) : triggers;
37
+ }, [
38
+ object,
39
+ triggers
40
+ ]);
41
+ const tags = useQuery(space.db, Filter.type(Tag.Tag));
42
+ const types = useTypeOptions({
43
+ space,
44
+ annotation: {
45
+ location: [
46
+ "database",
47
+ "runtime"
48
+ ],
49
+ kind: [
50
+ "user"
51
+ ],
52
+ registered: [
53
+ "registered"
54
+ ]
55
+ }
56
+ });
57
+ const [trigger, setTrigger] = useState(initialTrigger);
58
+ const [selected, setSelected] = useState();
59
+ const handleSelect = (trigger2) => {
60
+ setTrigger(trigger2);
61
+ setSelected(trigger2);
62
+ };
63
+ const handleAdd = () => {
64
+ setTrigger(Trigger.make({}));
65
+ setSelected(void 0);
66
+ };
67
+ const handleDelete = (trigger2) => {
68
+ space.db.remove(trigger2);
69
+ setTrigger(void 0);
70
+ setSelected(void 0);
71
+ };
72
+ const handleSave = (trigger2) => {
73
+ if (selected) {
74
+ Object.assign(selected, trigger2);
75
+ } else {
76
+ space.db.add(Trigger.make(trigger2));
77
+ }
78
+ setTrigger(void 0);
79
+ setSelected(void 0);
80
+ onDone?.();
81
+ };
82
+ const handleCancel = () => {
83
+ setTrigger(void 0);
84
+ onDone?.();
85
+ };
86
+ const handleForceRunTrigger = async (trigger2) => {
87
+ await functionsServiceClient.forceRunCronTrigger(space.id, trigger2.id);
88
+ };
89
+ if (trigger) {
90
+ return /* @__PURE__ */ React.createElement(ControlItem, {
91
+ title: t("trigger editor title")
92
+ }, /* @__PURE__ */ React.createElement(TriggerEditor, {
93
+ db: space.db,
94
+ trigger,
95
+ readonlySpec: Boolean(object),
96
+ tags,
97
+ types,
98
+ onSave: handleSave,
99
+ onCancel: handleCancel
100
+ }));
101
+ }
102
+ return /* @__PURE__ */ React.createElement("div", {
103
+ className: mx(controlItemClasses, classNames)
104
+ }, filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
105
+ items: filteredTriggers,
106
+ isItem: Schema.is(Trigger.Trigger),
107
+ getId: (field) => field.id
108
+ }, ({ items: filteredTriggers2 }) => /* @__PURE__ */ React.createElement("div", {
109
+ role: "list",
110
+ className: "flex flex-col is-full"
111
+ }, filteredTriggers2?.map((trigger2) => {
112
+ const copyAction = getCopyAction(client, trigger2);
113
+ return /* @__PURE__ */ React.createElement(List.Item, {
114
+ key: trigger2.id,
115
+ item: trigger2,
116
+ classNames: mx(grid, ghostHover, "items-center", "pli-2")
117
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
118
+ checked: trigger2.enabled,
119
+ onCheckedChange: (checked) => Obj.change(trigger2, (t2) => {
120
+ t2.enabled = checked;
121
+ })
122
+ })), /* @__PURE__ */ React.createElement("div", {
123
+ className: "flex"
124
+ }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
125
+ classNames: "pli-1 cursor-pointer is-0 shrink truncate",
126
+ onClick: () => handleSelect(trigger2)
127
+ }, getFunctionName(functions, trigger2) ?? "\u2205"), copyAction && /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
128
+ label: t(copyAction.translationKey),
129
+ value: copyAction.contentProvider()
130
+ })), /* @__PURE__ */ React.createElement(List.ItemButton, {
131
+ autoHide: false,
132
+ disabled: !trigger2.enabled || trigger2.spec?.kind !== "timer",
133
+ icon: "ph--play--regular",
134
+ label: "Force run",
135
+ onClick: () => handleForceRunTrigger(trigger2)
136
+ }), /* @__PURE__ */ React.createElement(List.ItemDeleteButton, {
137
+ onClick: () => handleDelete(trigger2)
138
+ }));
139
+ }))), filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(Separator, {
140
+ classNames: "mlb-4"
141
+ }), /* @__PURE__ */ React.createElement(IconButton, {
142
+ icon: "ph--plus--regular",
143
+ label: t("new trigger label"),
144
+ onClick: handleAdd
145
+ }));
146
+ };
147
+ var getCopyAction = (client, trigger) => {
148
+ if (trigger?.spec?.kind === "email") {
149
+ return {
150
+ translationKey: "trigger copy email",
151
+ contentProvider: () => `${Obj.getDatabase(trigger).spaceId}@dxos.network`
152
+ };
153
+ }
154
+ if (trigger?.spec?.kind === "webhook") {
155
+ return {
156
+ translationKey: "trigger copy url",
157
+ contentProvider: () => getWebhookUrl(client, trigger)
158
+ };
159
+ }
160
+ return void 0;
161
+ };
162
+ var getWebhookUrl = (client, trigger) => {
163
+ const spaceId = Obj.getDatabase(trigger).spaceId;
164
+ const edgeUrl = new URL(client.config.values.runtime.services.edge.url);
165
+ const isSecure = edgeUrl.protocol.startsWith("https") || edgeUrl.protocol.startsWith("wss");
166
+ edgeUrl.protocol = isSecure ? "https" : "http";
167
+ return new URL(`/webhook/${spaceId}:${trigger.id}`, edgeUrl).toString();
168
+ };
169
+ var getFunctionName = (functions, trigger) => {
170
+ const shortId = trigger.function && `${trigger.function.dxn.toString().slice(0, 16)}\u2026`;
171
+ const functionObject = functions.find((fn) => fn === trigger.function?.target);
172
+ return functionObject?.name ?? shortId;
173
+ };
174
+ var scriptMatch = (script) => (trigger) => {
175
+ const fn = trigger.function?.target;
176
+ if (!Obj.instanceOf(Function.Function, fn)) {
177
+ return false;
178
+ }
179
+ return fn.source?.target === script;
180
+ };
181
+ var projectMatch = (project) => {
182
+ const viewQueries = EFn.pipe(project.columns, Array.map((column) => column.view.target), Array.filter(isNonNullable), Array.map((view) => Obj.getSnapshot(view).query.ast), Array.map((ast) => JSON.stringify(ast)));
183
+ return (trigger) => {
184
+ const spec = Obj.getSnapshot(trigger).spec;
185
+ if (spec?.kind !== "subscription") {
186
+ return false;
187
+ }
188
+ return viewQueries.some((query) => JSON.stringify(spec.query) === query);
189
+ };
190
+ };
191
+ var triggerMatch = Match.type().pipe(Match.withReturnType(), Match.when((obj) => Obj.instanceOf(Script.Script, obj), (obj) => scriptMatch(obj)), Match.when((obj) => Obj.instanceOf(Project.Project, obj), (obj) => projectMatch(obj)), Match.orElse((_obj) => () => true));
192
+
193
+ // src/components/AutomationPanel/index.ts
194
+ var AutomationPanel_default = AutomationPanel;
195
+
196
+ export {
197
+ AutomationPanel,
198
+ AutomationPanel_default
199
+ };
200
+ //# sourceMappingURL=chunk-YWLEY2FD.mjs.map