@dxos/plugin-automation 0.8.4-main.406dc2a → 0.8.4-main.52d7546f51

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 (293) hide show
  1. package/dist/lib/browser/AutomationPanel-C6MZ22CB.mjs +11 -0
  2. package/dist/lib/browser/AutomationSettings-D7UO5V3Q.mjs +57 -0
  3. package/dist/lib/browser/AutomationSettings-D7UO5V3Q.mjs.map +7 -0
  4. package/dist/lib/browser/FunctionsContainer-5NHAAP5H.mjs +125 -0
  5. package/dist/lib/browser/FunctionsContainer-5NHAAP5H.mjs.map +7 -0
  6. package/dist/lib/browser/{FunctionsPanel-NRIKAPQV.mjs → FunctionsPanel-RD22LYMR.mjs} +3 -3
  7. package/dist/lib/browser/app-graph-builder-HLARI3VW.mjs +85 -0
  8. package/dist/lib/browser/app-graph-builder-HLARI3VW.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-C273ZYLE.mjs +258 -0
  10. package/dist/lib/browser/chunk-C273ZYLE.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-DK7BLEKU.mjs → chunk-JFBUK3WR.mjs} +5 -5
  12. package/dist/lib/browser/chunk-JN7QRQQX.mjs +256 -0
  13. package/dist/lib/browser/chunk-JN7QRQQX.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-O5Y2F33G.mjs +8 -0
  17. package/dist/lib/browser/chunk-O5Y2F33G.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-P5AEO35Y.mjs +93 -0
  19. package/dist/lib/browser/chunk-P5AEO35Y.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-PZNBEKO5.mjs +17 -0
  21. package/dist/lib/browser/chunk-PZNBEKO5.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-QNEQ23BF.mjs +98 -0
  23. package/dist/lib/browser/chunk-QNEQ23BF.mjs.map +7 -0
  24. package/dist/lib/browser/cli/index.mjs +1108 -0
  25. package/dist/lib/browser/cli/index.mjs.map +7 -0
  26. package/dist/lib/browser/compute-runtime-BUBHYS4Y.mjs +119 -0
  27. package/dist/lib/browser/compute-runtime-BUBHYS4Y.mjs.map +7 -0
  28. package/dist/lib/browser/hooks/index.mjs +5 -4
  29. package/dist/lib/browser/index.mjs +61 -59
  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-IN2FRGOT.mjs +83 -0
  33. package/dist/lib/browser/operation-resolver-IN2FRGOT.mjs.map +7 -0
  34. package/dist/lib/browser/{react-surface-G7CG7BML.mjs → react-surface-246NXXJR.mjs} +14 -11
  35. package/dist/lib/browser/react-surface-246NXXJR.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +10 -4
  37. package/dist/lib/node-esm/{AutomationPanel-EETYIR35.mjs → AutomationPanel-RTBY7YFM.mjs} +4 -4
  38. package/dist/lib/node-esm/AutomationSettings-GK4RLSDN.mjs +58 -0
  39. package/dist/lib/node-esm/AutomationSettings-GK4RLSDN.mjs.map +7 -0
  40. package/dist/lib/node-esm/FunctionsContainer-AHHZODM5.mjs +126 -0
  41. package/dist/lib/node-esm/FunctionsContainer-AHHZODM5.mjs.map +7 -0
  42. package/dist/lib/node-esm/{FunctionsPanel-SAMRTELO.mjs → FunctionsPanel-V2DKWYMU.mjs} +3 -3
  43. package/dist/lib/node-esm/app-graph-builder-Z2TMQHVX.mjs +86 -0
  44. package/dist/lib/node-esm/app-graph-builder-Z2TMQHVX.mjs.map +7 -0
  45. package/dist/lib/node-esm/{chunk-5MQJPJR2.mjs → chunk-5FXNN3MV.mjs} +6 -2
  46. package/dist/lib/node-esm/chunk-5FXNN3MV.mjs.map +7 -0
  47. package/dist/lib/node-esm/chunk-AENSLAVD.mjs +99 -0
  48. package/dist/lib/node-esm/chunk-AENSLAVD.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-EJPZWAGR.mjs +257 -0
  50. package/dist/lib/node-esm/chunk-EJPZWAGR.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-B7N3H45O.mjs → chunk-K5Z4UGIO.mjs} +5 -5
  52. package/dist/lib/node-esm/chunk-M3UPTGXF.mjs +10 -0
  53. package/dist/lib/node-esm/chunk-M3UPTGXF.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-OJEFRZEV.mjs +259 -0
  55. package/dist/lib/node-esm/chunk-OJEFRZEV.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-Q7EMIPMW.mjs +94 -0
  57. package/dist/lib/node-esm/chunk-Q7EMIPMW.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 +1109 -0
  61. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  62. package/dist/lib/node-esm/compute-runtime-6UEDBN76.mjs +120 -0
  63. package/dist/lib/node-esm/compute-runtime-6UEDBN76.mjs.map +7 -0
  64. package/dist/lib/node-esm/hooks/index.mjs +5 -4
  65. package/dist/lib/node-esm/index.mjs +61 -59
  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-67CEAKXP.mjs +84 -0
  69. package/dist/lib/node-esm/operation-resolver-67CEAKXP.mjs.map +7 -0
  70. package/dist/lib/node-esm/{react-surface-OMZSBDHS.mjs → react-surface-U6762KPI.mjs} +14 -11
  71. package/dist/lib/node-esm/react-surface-U6762KPI.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 +6 -7
  126. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  127. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +4 -0
  128. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/FunctionsContainer.d.ts.map +1 -1
  130. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  131. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts +8 -0
  132. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -0
  133. package/dist/types/src/components/FunctionsRegistry/index.d.ts +2 -0
  134. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -0
  135. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +12 -9
  136. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  137. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +6 -3
  138. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  139. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +9 -8
  140. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  141. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +72 -2
  142. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/TriggerSettings.d.ts +3 -3
  144. package/dist/types/src/components/TriggerSettings.d.ts.map +1 -1
  145. package/dist/types/src/components/index.d.ts +1 -1
  146. package/dist/types/src/components/index.d.ts.map +1 -1
  147. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +8 -4
  148. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +6 -5
  150. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  151. package/dist/types/src/index.d.ts +2 -2
  152. package/dist/types/src/index.d.ts.map +1 -1
  153. package/dist/types/src/meta.d.ts +2 -2
  154. package/dist/types/src/meta.d.ts.map +1 -1
  155. package/dist/types/src/testing/test-functions.d.ts +202 -3
  156. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  157. package/dist/types/src/translations.d.ts +4 -0
  158. package/dist/types/src/translations.d.ts.map +1 -1
  159. package/dist/types/src/types/capabilities.d.ts +22 -0
  160. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  161. package/dist/types/src/types/events.d.ts +5 -0
  162. package/dist/types/src/types/events.d.ts.map +1 -0
  163. package/dist/types/src/types/index.d.ts +2 -0
  164. package/dist/types/src/types/index.d.ts.map +1 -1
  165. package/dist/types/src/types/schema.d.ts +30 -1
  166. package/dist/types/src/types/schema.d.ts.map +1 -1
  167. package/dist/types/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +64 -47
  169. package/src/AutomationPlugin.tsx +15 -34
  170. package/src/capabilities/app-graph-builder/app-graph-builder.ts +72 -0
  171. package/src/capabilities/app-graph-builder/index.ts +7 -0
  172. package/src/capabilities/compute-runtime/compute-runtime.ts +140 -0
  173. package/src/capabilities/compute-runtime/index.ts +7 -0
  174. package/src/capabilities/index.ts +4 -8
  175. package/src/capabilities/operation-resolver/index.ts +7 -0
  176. package/src/capabilities/operation-resolver/operation-resolver.ts +80 -0
  177. package/src/capabilities/react-surface/index.ts +7 -0
  178. package/src/capabilities/react-surface/react-surface.tsx +61 -0
  179. package/src/cli/commands/index.ts +5 -0
  180. package/src/cli/commands/trigger/create/index.ts +14 -0
  181. package/src/cli/commands/trigger/create/queue.ts +89 -0
  182. package/src/cli/commands/trigger/create/subscription.ts +128 -0
  183. package/src/cli/commands/trigger/create/timer.ts +93 -0
  184. package/src/cli/commands/trigger/index.ts +16 -0
  185. package/src/cli/commands/trigger/list.ts +67 -0
  186. package/src/cli/commands/trigger/options.ts +59 -0
  187. package/src/cli/commands/trigger/remove.ts +45 -0
  188. package/src/cli/commands/trigger/update/index.ts +14 -0
  189. package/src/cli/commands/trigger/update/queue.ts +195 -0
  190. package/src/cli/commands/trigger/update/subscription.ts +278 -0
  191. package/src/cli/commands/trigger/update/timer.ts +193 -0
  192. package/src/cli/commands/trigger/util.ts +395 -0
  193. package/src/cli/index.ts +5 -0
  194. package/src/cli/plugin.ts +24 -0
  195. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +5 -6
  196. package/src/components/AutomationPanel/AutomationPanel.tsx +182 -87
  197. package/src/components/AutomationSettings.tsx +6 -6
  198. package/src/components/FunctionsContainer.tsx +12 -5
  199. package/src/components/FunctionsPanel/FunctionsPanel.tsx +38 -23
  200. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +110 -0
  201. package/src/components/FunctionsRegistry/index.ts +5 -0
  202. package/src/components/TriggerEditor/FunctionInputEditor.tsx +33 -32
  203. package/src/components/TriggerEditor/SpecSelector.tsx +11 -9
  204. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +39 -35
  205. package/src/components/TriggerEditor/TriggerEditor.tsx +61 -48
  206. package/src/components/TriggerSettings.tsx +7 -6
  207. package/src/hooks/useComputeRuntimeCallback.ts +45 -8
  208. package/src/hooks/useTriggerRuntimeControls.ts +30 -15
  209. package/src/index.ts +2 -2
  210. package/src/meta.ts +7 -4
  211. package/src/testing/test-functions.ts +2 -2
  212. package/src/translations.ts +5 -0
  213. package/src/{capabilities → types}/capabilities.ts +8 -14
  214. package/src/types/events.ts +11 -0
  215. package/src/types/index.ts +2 -0
  216. package/src/types/schema.ts +23 -2
  217. package/dist/lib/browser/AutomationPanel-3PHA5FTJ.mjs +0 -11
  218. package/dist/lib/browser/AutomationSettings-3EYSPFKB.mjs +0 -69
  219. package/dist/lib/browser/AutomationSettings-3EYSPFKB.mjs.map +0 -7
  220. package/dist/lib/browser/FunctionsContainer-HHBMPUOD.mjs +0 -36
  221. package/dist/lib/browser/FunctionsContainer-HHBMPUOD.mjs.map +0 -7
  222. package/dist/lib/browser/app-graph-builder-DV5HMFX4.mjs +0 -81
  223. package/dist/lib/browser/app-graph-builder-DV5HMFX4.mjs.map +0 -7
  224. package/dist/lib/browser/chunk-5ARH77PV.mjs +0 -15
  225. package/dist/lib/browser/chunk-5ARH77PV.mjs.map +0 -7
  226. package/dist/lib/browser/chunk-6TUZQIEN.mjs +0 -14
  227. package/dist/lib/browser/chunk-6TUZQIEN.mjs.map +0 -7
  228. package/dist/lib/browser/chunk-DLLE4FKP.mjs +0 -94
  229. package/dist/lib/browser/chunk-DLLE4FKP.mjs.map +0 -7
  230. package/dist/lib/browser/chunk-MVPRI3DB.mjs +0 -53
  231. package/dist/lib/browser/chunk-MVPRI3DB.mjs.map +0 -7
  232. package/dist/lib/browser/chunk-SUKAEYF3.mjs +0 -267
  233. package/dist/lib/browser/chunk-SUKAEYF3.mjs.map +0 -7
  234. package/dist/lib/browser/chunk-VGBZKM3O.mjs +0 -38
  235. package/dist/lib/browser/chunk-VGBZKM3O.mjs.map +0 -7
  236. package/dist/lib/browser/chunk-VL3KSDVL.mjs +0 -183
  237. package/dist/lib/browser/chunk-VL3KSDVL.mjs.map +0 -7
  238. package/dist/lib/browser/chunk-WWURMV25.mjs +0 -13
  239. package/dist/lib/browser/chunk-WWURMV25.mjs.map +0 -7
  240. package/dist/lib/browser/compute-runtime-YJREH6WP.mjs +0 -160
  241. package/dist/lib/browser/compute-runtime-YJREH6WP.mjs.map +0 -7
  242. package/dist/lib/browser/intent-resolver-D2OHKQRR.mjs +0 -77
  243. package/dist/lib/browser/intent-resolver-D2OHKQRR.mjs.map +0 -7
  244. package/dist/lib/browser/react-surface-G7CG7BML.mjs.map +0 -7
  245. package/dist/lib/node-esm/AutomationSettings-WKSMWITV.mjs +0 -70
  246. package/dist/lib/node-esm/AutomationSettings-WKSMWITV.mjs.map +0 -7
  247. package/dist/lib/node-esm/FunctionsContainer-ZKVOBUHV.mjs +0 -37
  248. package/dist/lib/node-esm/FunctionsContainer-ZKVOBUHV.mjs.map +0 -7
  249. package/dist/lib/node-esm/app-graph-builder-TR2WXPX2.mjs +0 -82
  250. package/dist/lib/node-esm/app-graph-builder-TR2WXPX2.mjs.map +0 -7
  251. package/dist/lib/node-esm/chunk-2EWXIFEK.mjs +0 -16
  252. package/dist/lib/node-esm/chunk-2EWXIFEK.mjs.map +0 -7
  253. package/dist/lib/node-esm/chunk-5MQJPJR2.mjs.map +0 -7
  254. package/dist/lib/node-esm/chunk-AKHETVIQ.mjs +0 -184
  255. package/dist/lib/node-esm/chunk-AKHETVIQ.mjs.map +0 -7
  256. package/dist/lib/node-esm/chunk-CJUI6AKX.mjs +0 -39
  257. package/dist/lib/node-esm/chunk-CJUI6AKX.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-J3XEBEIE.mjs +0 -268
  259. package/dist/lib/node-esm/chunk-J3XEBEIE.mjs.map +0 -7
  260. package/dist/lib/node-esm/chunk-QCA543ZR.mjs +0 -54
  261. package/dist/lib/node-esm/chunk-QCA543ZR.mjs.map +0 -7
  262. package/dist/lib/node-esm/chunk-WHCSOUNN.mjs +0 -16
  263. package/dist/lib/node-esm/chunk-WHCSOUNN.mjs.map +0 -7
  264. package/dist/lib/node-esm/chunk-YQXW3JXD.mjs +0 -95
  265. package/dist/lib/node-esm/chunk-YQXW3JXD.mjs.map +0 -7
  266. package/dist/lib/node-esm/compute-runtime-CMEPAYND.mjs +0 -161
  267. package/dist/lib/node-esm/compute-runtime-CMEPAYND.mjs.map +0 -7
  268. package/dist/lib/node-esm/intent-resolver-2LGBVXT5.mjs +0 -78
  269. package/dist/lib/node-esm/intent-resolver-2LGBVXT5.mjs.map +0 -7
  270. package/dist/lib/node-esm/react-surface-OMZSBDHS.mjs.map +0 -7
  271. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  272. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  273. package/dist/types/src/capabilities/capabilities.d.ts +0 -19
  274. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  275. package/dist/types/src/capabilities/compute-runtime.d.ts +0 -5
  276. package/dist/types/src/capabilities/compute-runtime.d.ts.map +0 -1
  277. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  278. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  279. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  280. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  281. package/dist/types/src/events.d.ts +0 -4
  282. package/dist/types/src/events.d.ts.map +0 -1
  283. package/src/capabilities/app-graph-builder.ts +0 -87
  284. package/src/capabilities/compute-runtime.ts +0 -138
  285. package/src/capabilities/intent-resolver.ts +0 -72
  286. package/src/capabilities/react-surface.tsx +0 -55
  287. package/src/events.ts +0 -11
  288. /package/dist/lib/browser/{AutomationPanel-3PHA5FTJ.mjs.map → AutomationPanel-C6MZ22CB.mjs.map} +0 -0
  289. /package/dist/lib/browser/{FunctionsPanel-NRIKAPQV.mjs.map → FunctionsPanel-RD22LYMR.mjs.map} +0 -0
  290. /package/dist/lib/browser/{chunk-DK7BLEKU.mjs.map → chunk-JFBUK3WR.mjs.map} +0 -0
  291. /package/dist/lib/node-esm/{AutomationPanel-EETYIR35.mjs.map → AutomationPanel-RTBY7YFM.mjs.map} +0 -0
  292. /package/dist/lib/node-esm/{FunctionsPanel-SAMRTELO.mjs.map → FunctionsPanel-V2DKWYMU.mjs.map} +0 -0
  293. /package/dist/lib/node-esm/{chunk-B7N3H45O.mjs.map → chunk-K5Z4UGIO.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AutomationPanel/AutomationPanel.tsx", "../../../src/components/AutomationPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as EFn from 'effect/Function';\nimport * as Match from 'effect/Match';\nimport * as Schema from 'effect/Schema';\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { Filter, Obj, Tag } from '@dxos/echo';\nimport { Function, Script, Trigger } from '@dxos/functions';\nimport { KEY_QUEUE_CURSOR } from '@dxos/functions-runtime';\nimport { FunctionsServiceClient } from '@dxos/functions-runtime/edge';\nimport { useTypeOptions } from '@dxos/plugin-space';\nimport { type Client, useClient } from '@dxos/react-client';\nimport { type Space, useObject, useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, IconButton, Input, Separator, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { Pipeline } from '@dxos/types';\nimport { ghostHover, mx } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { TriggerEditor, type TriggerEditorProps } from '../TriggerEditor';\n\nconst grid = 'grid grid-cols-[40px_1fr_32px_32px] min-bs-[2.5rem]';\n\nexport type AutomationPanelProps = {\n space: Space;\n object?: Obj.Unknown;\n initialTrigger?: Trigger.Trigger;\n onDone?: () => void;\n};\n\n// TODO(burdon): Factor out common layout with ViewEditor.\nexport const AutomationPanel = ({ space, object, initialTrigger, onDone }: AutomationPanelProps) => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n const functionsServiceClient = useMemo(() => FunctionsServiceClient.fromClient(client), [client]);\n const functions = useQuery(space.db, Filter.type(Function.Function));\n const triggers = useQuery(space.db, Filter.type(Trigger.Trigger));\n const filteredTriggers = useMemo(() => {\n return object ? triggers.filter(triggerMatch(object)) : triggers;\n }, [object, triggers]);\n const tags = useQuery(space.db, Filter.type(Tag.Tag));\n const types = useTypeOptions({\n space,\n annotation: {\n location: ['database', 'runtime'],\n kind: ['user'],\n registered: ['registered'],\n },\n });\n\n const [trigger, setTrigger] = useState<Trigger.Trigger | undefined>(initialTrigger);\n const [selected, setSelected] = useState<Trigger.Trigger>();\n\n const handleSelect = (trigger: Trigger.Trigger) => {\n setTrigger(trigger);\n setSelected(trigger);\n };\n\n const handleAdd = () => {\n setTrigger(Trigger.make({}));\n setSelected(undefined);\n };\n\n const handleDelete = (trigger: Trigger.Trigger) => {\n space.db.remove(trigger);\n setTrigger(undefined);\n setSelected(undefined);\n };\n\n const handleSave: TriggerEditorProps['onSave'] = (trigger) => {\n if (selected) {\n Obj.change(selected, (mutable) => {\n Object.assign(mutable, trigger);\n });\n } else {\n space.db.add(Trigger.make(trigger));\n }\n\n setTrigger(undefined);\n setSelected(undefined);\n onDone?.();\n };\n\n const handleCancel: TriggerEditorProps['onCancel'] = () => {\n setTrigger(undefined);\n onDone?.();\n };\n\n const handleForceRunTrigger = async (trigger: Trigger.Trigger) => {\n await functionsServiceClient.forceRunCronTrigger(space.id, trigger.id);\n };\n\n const handleResetCursor = async (trigger: Trigger.Trigger) => {\n Obj.change(trigger, (t) => {\n Obj.deleteKeys(t, KEY_QUEUE_CURSOR);\n });\n await space.db.flush({ indexes: true });\n };\n\n if (trigger) {\n return (\n <Settings.Item title={t('trigger editor title')}>\n <TriggerEditor\n db={space.db}\n trigger={trigger}\n readonlySpec={Boolean(object)}\n tags={tags}\n types={types}\n onSave={handleSave}\n onCancel={handleCancel}\n />\n </Settings.Item>\n );\n }\n\n return (\n <Settings.Container>\n {filteredTriggers.length > 0 && (\n <List.Root<Trigger.Trigger>\n items={filteredTriggers}\n isItem={Schema.is(Trigger.Trigger)}\n getId={(field) => field.id}\n >\n {({ items: filteredTriggers }) => (\n <div role='list' className='flex flex-col is-full'>\n {filteredTriggers?.map((trigger) => (\n <TriggerListItem\n key={trigger.id}\n trigger={trigger}\n functions={functions}\n onSelect={handleSelect}\n onDelete={handleDelete}\n onResetCursor={handleResetCursor}\n onForceRun={handleForceRunTrigger}\n />\n ))}\n </div>\n )}\n </List.Root>\n )}\n\n {filteredTriggers.length > 0 && <Separator classNames='mlb-4' />}\n <IconButton icon='ph--plus--regular' label={t('new trigger label')} onClick={handleAdd} />\n </Settings.Container>\n );\n};\n\nconst TriggerListItem = ({\n trigger,\n functions,\n onSelect,\n onDelete,\n onResetCursor,\n onForceRun,\n}: {\n trigger: Trigger.Trigger;\n functions: Function.Function[];\n onSelect?: (trigger: Trigger.Trigger) => void;\n onDelete?: (trigger: Trigger.Trigger) => void;\n onResetCursor?: (trigger: Trigger.Trigger) => void;\n onForceRun?: (trigger: Trigger.Trigger) => void;\n}) => {\n const client = useClient();\n const copyAction = getCopyAction(client, trigger);\n const { t } = useTranslation(meta.id);\n const cursor = Obj.getKeys(trigger, KEY_QUEUE_CURSOR).at(0)?.id;\n const [snapshot, updateTrigger] = useObject(trigger);\n\n const enabled = snapshot.enabled ?? false;\n const onEnabledChange = (checked: boolean) => {\n updateTrigger((trigger) => {\n trigger.enabled = checked;\n });\n };\n\n const handleSelect = useCallback(() => {\n onSelect?.(trigger);\n }, [onSelect, trigger]);\n\n const handleDelete = useCallback(() => {\n onDelete?.(trigger);\n }, [onDelete, trigger]);\n\n const handleResetCursor = useCallback(() => {\n onResetCursor?.(trigger);\n }, [onResetCursor, trigger]);\n\n const handleForceRun = useCallback(() => {\n onForceRun?.(trigger);\n }, [onForceRun, trigger]);\n\n return (\n <List.Item<Obj.Snapshot<Trigger.Trigger>>\n key={trigger.id}\n item={snapshot}\n classNames={mx(grid, ghostHover, 'items-center', 'pli-2')}\n >\n <Input.Root>\n <Input.Switch checked={enabled} onCheckedChange={onEnabledChange} />\n </Input.Root>\n\n <div className={'flex'}>\n <List.ItemTitle classNames='pli-1 cursor-pointer is-0 shrink truncate' onClick={handleSelect}>\n {getFunctionName(functions, trigger) ?? '∅'}\n {cursor && <div className='text-xs text-description truncate ml-4'>Position: {cursor}</div>}\n </List.ItemTitle>\n\n {copyAction && (\n <Clipboard.IconButton label={t(copyAction.translationKey)} value={copyAction.contentProvider()} />\n )}\n </div>\n\n {trigger.spec?.kind === 'timer' && onForceRun && (\n <List.ItemButton\n autoHide={false}\n disabled={!enabled || trigger.spec?.kind !== 'timer'}\n icon='ph--play--regular'\n label='Force run'\n onClick={handleForceRun}\n />\n )}\n {trigger.spec?.kind === 'queue' && onResetCursor && (\n <List.ItemButton\n autoHide={false}\n disabled={!cursor}\n icon='ph--arrow-clockwise--regular'\n label='Reset cursor'\n onClick={handleResetCursor}\n />\n )}\n\n {onDelete && <List.ItemDeleteButton onClick={handleDelete} />}\n </List.Item>\n );\n};\n\nconst getCopyAction = (client: Client, trigger: Trigger.Trigger | undefined) => {\n if (trigger?.spec?.kind === 'email') {\n return {\n translationKey: 'trigger copy email' as const,\n contentProvider: () => `${Obj.getDatabase(trigger)!.spaceId}@dxos.network`,\n };\n }\n\n if (trigger?.spec?.kind === 'webhook') {\n return {\n translationKey: 'trigger copy url' as const,\n contentProvider: () => getWebhookUrl(client, trigger!),\n };\n }\n\n return undefined;\n};\n\nconst getWebhookUrl = (client: Client, trigger: Trigger.Trigger) => {\n const spaceId = Obj.getDatabase(trigger)!.spaceId;\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 = (functions: Function.Function[], trigger: Trigger.Trigger) => {\n // TODO(wittjosiah): Truncation should be done in the UI.\n // Warning that the List component is currently a can of worms.\n const shortId = trigger.function && `${trigger.function.dxn.toString().slice(0, 16)}…`;\n const functionObject = functions.find((fn) => fn === trigger.function?.target);\n return functionObject?.name ?? shortId;\n};\n\nconst scriptMatch = (script: Script.Script) => (trigger: Trigger.Trigger) => {\n const fn = trigger.function?.target;\n if (!Obj.instanceOf(Function.Function, fn)) {\n return false;\n }\n\n return fn.source?.target === script;\n};\n\nconst projectMatch = (project: Pipeline.Pipeline) => {\n const viewQueries = EFn.pipe(\n project.columns,\n Array.map((column) => column.view.target),\n Array.filter(isNonNullable),\n Array.map((view) => Obj.getSnapshot(view).query.ast),\n Array.map((ast) => JSON.stringify(ast)),\n );\n\n return (trigger: Trigger.Trigger) => {\n const spec = Obj.getSnapshot(trigger).spec;\n if (spec?.kind !== 'subscription') {\n return false;\n }\n\n // TODO(wittjosiah): Implement better way of comparing query ASTs.\n return viewQueries.some((query) => JSON.stringify(spec.query) === query);\n };\n};\n\nconst triggerMatch = Match.type<Obj.Unknown>().pipe(\n Match.withReturnType<(trigger: Trigger.Trigger) => boolean>(),\n Match.when(\n (obj) => Obj.instanceOf(Script.Script, obj),\n (obj) => scriptMatch(obj),\n ),\n Match.when(\n (obj) => Obj.instanceOf(Pipeline.Pipeline, obj),\n (obj) => projectMatch(obj),\n ),\n Match.orElse((_obj) => () => true),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { AutomationPanel } from './AutomationPanel';\n\nexport * from './AutomationPanel';\n\nexport default AutomationPanel;\n"],
5
+ "mappings": "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",
6
+ "names": ["Array", "EFn", "Match", "Schema", "React", "useCallback", "useMemo", "useState", "Filter", "Obj", "Tag", "Function", "Script", "Trigger", "KEY_QUEUE_CURSOR", "FunctionsServiceClient", "useTypeOptions", "useClient", "useObject", "useQuery", "Clipboard", "IconButton", "Input", "Separator", "useTranslation", "Settings", "List", "Pipeline", "ghostHover", "mx", "isNonNullable", "grid", "AutomationPanel", "space", "object", "initialTrigger", "onDone", "t", "useTranslation", "meta", "id", "client", "useClient", "functionsServiceClient", "useMemo", "FunctionsServiceClient", "fromClient", "functions", "useQuery", "db", "Filter", "type", "Function", "triggers", "Trigger", "filteredTriggers", "filter", "triggerMatch", "tags", "Tag", "types", "useTypeOptions", "annotation", "location", "kind", "registered", "trigger", "setTrigger", "useState", "selected", "setSelected", "handleSelect", "handleAdd", "make", "undefined", "handleDelete", "remove", "handleSave", "Obj", "change", "mutable", "Object", "assign", "add", "handleCancel", "handleForceRunTrigger", "forceRunCronTrigger", "handleResetCursor", "deleteKeys", "KEY_QUEUE_CURSOR", "flush", "indexes", "Settings", "Item", "title", "TriggerEditor", "readonlySpec", "Boolean", "onSave", "onCancel", "Container", "length", "List", "Root", "items", "isItem", "is", "getId", "field", "div", "role", "className", "map", "TriggerListItem", "key", "onSelect", "onDelete", "onResetCursor", "onForceRun", "Separator", "classNames", "IconButton", "icon", "label", "onClick", "copyAction", "getCopyAction", "cursor", "getKeys", "at", "snapshot", "updateTrigger", "useObject", "enabled", "onEnabledChange", "checked", "useCallback", "handleForceRun", "item", "mx", "ghostHover", "Input", "Switch", "onCheckedChange", "ItemTitle", "getFunctionName", "Clipboard", "translationKey", "value", "contentProvider", "spec", "ItemButton", "autoHide", "disabled", "ItemDeleteButton", "getDatabase", "spaceId", "getWebhookUrl", "edgeUrl", "URL", "config", "values", "runtime", "services", "edge", "url", "isSecure", "protocol", "startsWith", "toString", "shortId", "function", "dxn", "slice", "functionObject", "find", "fn", "target", "name", "scriptMatch", "script", "instanceOf", "source", "projectMatch", "project", "viewQueries", "pipe", "columns", "column", "view", "isNonNullable", "getSnapshot", "query", "ast", "JSON", "stringify", "some", "withReturnType", "when", "obj", "Script", "Pipeline", "orElse", "_obj", "AutomationPanel"]
7
+ }
@@ -1,9 +1,9 @@
1
1
  // src/components/index.ts
2
2
  import { lazy } from "react";
3
- var AutomationPanel = lazy(() => import("./AutomationPanel-3PHA5FTJ.mjs"));
4
- var AutomationSettings = lazy(() => import("./AutomationSettings-3EYSPFKB.mjs"));
5
- var FunctionsContainer = lazy(() => import("./FunctionsContainer-HHBMPUOD.mjs"));
6
- var FunctionsPanel = lazy(() => import("./FunctionsPanel-NRIKAPQV.mjs"));
3
+ var AutomationPanel = lazy(() => import("./AutomationPanel-C6MZ22CB.mjs"));
4
+ var AutomationSettings = lazy(() => import("./AutomationSettings-D7UO5V3Q.mjs"));
5
+ var FunctionsContainer = lazy(() => import("./FunctionsContainer-5NHAAP5H.mjs"));
6
+ var FunctionsPanel = lazy(() => import("./FunctionsPanel-RD22LYMR.mjs"));
7
7
 
8
8
  export {
9
9
  AutomationPanel,
@@ -11,4 +11,4 @@ export {
11
11
  FunctionsContainer,
12
12
  FunctionsPanel
13
13
  };
14
- //# sourceMappingURL=chunk-DK7BLEKU.mjs.map
14
+ //# sourceMappingURL=chunk-JFBUK3WR.mjs.map
@@ -0,0 +1,256 @@
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 { Obj, 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 defaultValues = useMemo(() => {
56
+ const raw = getValue() ?? {};
57
+ return Obj.isObject(raw) ? {
58
+ ...Obj.getSnapshot(raw)
59
+ } : {
60
+ ...raw
61
+ };
62
+ }, [
63
+ getValue
64
+ ]);
65
+ const handleValuesChanged = useCallback((values) => {
66
+ onValueChange(type, values);
67
+ }, [
68
+ type,
69
+ onValueChange
70
+ ]);
71
+ if (selectedFunction === void 0 || effectSchema === void 0 || propertyCount === 0) {
72
+ return null;
73
+ }
74
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Form.Label, {
75
+ label: t("function parameters label"),
76
+ asChild: true
77
+ }), /* @__PURE__ */ React.createElement(Form.Root, {
78
+ key: selectedFunction.id,
79
+ schema: effectSchema,
80
+ defaultValues,
81
+ db,
82
+ onValuesChanged: handleValuesChanged
83
+ }, /* @__PURE__ */ React.createElement(Form.FieldSet, null)));
84
+ };
85
+ FunctionInputEditor.displayName = "AutomationTrigger.FunctionInputEditor";
86
+
87
+ // src/components/TriggerEditor/SpecSelector.tsx
88
+ import React2, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
89
+ import { Filter, Query } from "@dxos/echo";
90
+ import { Trigger } from "@dxos/functions";
91
+ import { useTranslation as useTranslation2 } from "@dxos/react-ui";
92
+ import { SelectField, useFormFieldState } from "@dxos/react-ui-form";
93
+ var SpecSelector = (props) => {
94
+ const { t } = useTranslation2(meta.id);
95
+ const specProps = useFormFieldState(SpecSelector.displayName, [
96
+ "spec"
97
+ ]);
98
+ const handleTypeChange = useCallback2((_type, value) => {
99
+ const getDefaultTriggerSpec = (kind) => {
100
+ switch (kind) {
101
+ case "timer":
102
+ return {
103
+ kind: "timer",
104
+ cron: ""
105
+ };
106
+ case "subscription":
107
+ return {
108
+ kind: "subscription",
109
+ query: {
110
+ ast: Query.select(Filter.nothing()).ast
111
+ }
112
+ };
113
+ case "queue":
114
+ return {
115
+ kind: "queue",
116
+ queue: "dxn:"
117
+ };
118
+ case "email":
119
+ return {
120
+ kind: "email"
121
+ };
122
+ case "webhook":
123
+ return {
124
+ kind: "webhook"
125
+ };
126
+ default:
127
+ return void 0;
128
+ }
129
+ };
130
+ const defaultSpec = getDefaultTriggerSpec(value);
131
+ if (!defaultSpec) {
132
+ return;
133
+ }
134
+ specProps.onValueChange(props.type, defaultSpec);
135
+ }, [
136
+ props.type,
137
+ specProps
138
+ ]);
139
+ const options = useMemo2(() => Trigger.Kinds.map((kind) => ({
140
+ value: kind,
141
+ label: t(`trigger type ${kind}`)
142
+ })), [
143
+ t
144
+ ]);
145
+ return /* @__PURE__ */ React2.createElement(SelectField, {
146
+ ...props,
147
+ options,
148
+ onValueChange: handleTypeChange
149
+ });
150
+ };
151
+ SpecSelector.displayName = "Form.SpecSelector";
152
+
153
+ // src/components/TriggerEditor/TriggerEditor.tsx
154
+ var TriggerEditor = ({ db, types, tags, readonlySpec, trigger, ...formProps }) => {
155
+ const fieldMap = useCustomInputs({
156
+ db,
157
+ types,
158
+ tags,
159
+ readonlySpec
160
+ });
161
+ return /* @__PURE__ */ React3.createElement(Form2.Root, {
162
+ ...formProps,
163
+ schema: omitId(Trigger2.Trigger),
164
+ values: trigger,
165
+ db,
166
+ fieldMap
167
+ }, /* @__PURE__ */ React3.createElement(Form2.Viewport, null, /* @__PURE__ */ React3.createElement(Form2.Content, null, /* @__PURE__ */ React3.createElement(Form2.FieldSet, null), /* @__PURE__ */ React3.createElement(Form2.Actions, null))));
168
+ };
169
+ var useCustomInputs = ({ db, readonlySpec, types, tags }) => {
170
+ const functions = useQuery(db, Filter2.type(Function.Function));
171
+ const workflows = useQuery(db, Filter2.type(ComputeGraph));
172
+ const scripts = useQuery(db, Filter2.type(Script.Script));
173
+ return useMemo3(() => ({
174
+ // Function selector.
175
+ ["function"]: (props) => {
176
+ const getValue = useCallback3(() => {
177
+ const formValue = props.getValue();
178
+ if (Ref2.isRef(formValue)) {
179
+ return formValue.dxn.toString();
180
+ }
181
+ return void 0;
182
+ }, [
183
+ props
184
+ ]);
185
+ const handleOnValueChange = useCallback3((_type, dxnString) => {
186
+ const dxn = DXN.parse(dxnString);
187
+ if (dxn) {
188
+ const ref = Ref2.fromDXN(dxn);
189
+ props.onValueChange(props.type, ref);
190
+ }
191
+ }, [
192
+ props.type,
193
+ props.onValueChange
194
+ ]);
195
+ return /* @__PURE__ */ React3.createElement(SelectField2, {
196
+ ...props,
197
+ getValue,
198
+ onValueChange: handleOnValueChange,
199
+ options: getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))
200
+ });
201
+ },
202
+ // Spec selector.
203
+ ["spec.kind"]: (props) => /* @__PURE__ */ React3.createElement(SpecSelector, {
204
+ ...props,
205
+ readonly: readonlySpec
206
+ }),
207
+ // TODO(wittjosiah): Copied from ViewEditor.
208
+ // Query input editor.
209
+ ["spec.query"]: (props) => {
210
+ const handleChange = useCallback3((query) => props.onValueChange(props.type, {
211
+ ast: query.ast
212
+ }), [
213
+ props.type,
214
+ props.onValueChange
215
+ ]);
216
+ return /* @__PURE__ */ React3.createElement(Input.Root, null, /* @__PURE__ */ React3.createElement(FormFieldLabel, {
217
+ label: props.label,
218
+ asChild: true
219
+ }), /* @__PURE__ */ React3.createElement(QueryForm, {
220
+ initialQuery: props.getValue().ast,
221
+ types,
222
+ tags,
223
+ onChange: handleChange
224
+ }));
225
+ },
226
+ // Function input editor.
227
+ ["input"]: (props) => /* @__PURE__ */ React3.createElement(FunctionInputEditor, {
228
+ ...props,
229
+ functions,
230
+ db
231
+ })
232
+ }), [
233
+ workflows,
234
+ scripts,
235
+ functions,
236
+ readonlySpec
237
+ ]);
238
+ };
239
+ var getWorkflowOptions = (graphs) => {
240
+ return graphs.map((graph) => ({
241
+ label: `compute-${graph.id}`,
242
+ value: `dxn:echo:@:${graph.id}`
243
+ }));
244
+ };
245
+ var getFunctionOptions = (scripts, functions) => {
246
+ const getLabel = (fn) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
247
+ return functions.map((fn) => ({
248
+ label: getLabel(fn),
249
+ value: `dxn:echo:@:${fn.id}`
250
+ }));
251
+ };
252
+
253
+ export {
254
+ TriggerEditor
255
+ };
256
+ //# sourceMappingURL=chunk-JN7QRQQX.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, Obj, 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 defaultValues = useMemo(() => {\n const raw = getValue() ?? {};\n return Obj.isObject(raw) ? { ...Obj.getSnapshot(raw) } : { ...raw };\n }, [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\n key={selectedFunction.id}\n schema={effectSchema}\n defaultValues={defaultValues}\n db={db}\n onValuesChanged={handleValuesChanged}\n >\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", "Obj", "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", "defaultValues", "raw", "Obj", "isObject", "getSnapshot", "handleValuesChanged", "useCallback", "values", "Form", "Label", "label", "asChild", "Root", "key", "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
+ }
@@ -0,0 +1,83 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-PZNBEKO5.mjs";
4
+
5
+ // src/types/capabilities.ts
6
+ import { Capability } from "@dxos/app-framework";
7
+ (function(AutomationCapabilities2) {
8
+ AutomationCapabilities2.ComputeRuntime = Capability.make(`${meta.id}/capability/compute-runtime`);
9
+ })(AutomationCapabilities || (AutomationCapabilities = {}));
10
+ var AutomationCapabilities;
11
+
12
+ // src/types/events.ts
13
+ import { ActivationEvent } from "@dxos/app-framework";
14
+ (function(AutomationEvents2) {
15
+ AutomationEvents2.ComputeRuntimeReady = ActivationEvent.make(`${meta.id}/event/compute-runtime-ready`);
16
+ })(AutomationEvents || (AutomationEvents = {}));
17
+ var AutomationEvents;
18
+
19
+ // src/types/schema.ts
20
+ import * as Schema from "effect/Schema";
21
+ import { Capability as Capability2 } from "@dxos/app-framework";
22
+ import { Database } from "@dxos/echo";
23
+ import { Operation } from "@dxos/operation";
24
+ var TriggerTemplate = Schema.Union(Schema.Struct({
25
+ type: Schema.Literal("timer"),
26
+ cron: Schema.String
27
+ }), Schema.Struct({
28
+ type: Schema.Literal("queue"),
29
+ queueDXN: Schema.Any
30
+ }));
31
+ (function(AutomationAction2) {
32
+ class CreateTriggerFromTemplate extends Schema.TaggedClass()(`${meta.id}/action/create-trigger-from-template`, {
33
+ input: Schema.Struct({
34
+ db: Database.Database,
35
+ template: TriggerTemplate,
36
+ enabled: Schema.optional(Schema.Boolean),
37
+ // TODO(wittjosiah): Improve how this lookup is done.
38
+ scriptName: Schema.optional(Schema.String),
39
+ input: Schema.optional(Schema.Record({
40
+ key: Schema.String,
41
+ value: Schema.Any
42
+ }))
43
+ }),
44
+ output: Schema.Void
45
+ }) {
46
+ }
47
+ AutomationAction2.CreateTriggerFromTemplate = CreateTriggerFromTemplate;
48
+ })(AutomationAction || (AutomationAction = {}));
49
+ var AUTOMATION_OPERATION = `${meta.id}/operation`;
50
+ (function(AutomationOperation2) {
51
+ AutomationOperation2.CreateTriggerFromTemplate = Operation.make({
52
+ meta: {
53
+ key: `${AUTOMATION_OPERATION}/create-trigger-from-template`,
54
+ name: "Create Trigger From Template"
55
+ },
56
+ services: [
57
+ Capability2.Service
58
+ ],
59
+ schema: {
60
+ input: Schema.Struct({
61
+ db: Database.Database,
62
+ template: TriggerTemplate,
63
+ enabled: Schema.optional(Schema.Boolean),
64
+ scriptName: Schema.optional(Schema.String),
65
+ input: Schema.optional(Schema.Record({
66
+ key: Schema.String,
67
+ value: Schema.Any
68
+ }))
69
+ }),
70
+ output: Schema.Void
71
+ }
72
+ });
73
+ })(AutomationOperation || (AutomationOperation = {}));
74
+ var AutomationAction;
75
+ var AutomationOperation;
76
+
77
+ export {
78
+ AutomationCapabilities,
79
+ AutomationEvents,
80
+ AutomationAction,
81
+ AutomationOperation
82
+ };
83
+ //# sourceMappingURL=chunk-JOXPQ27I.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/capabilities.ts", "../../../src/types/events.ts", "../../../src/types/schema.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as ManagedRuntime from 'effect/ManagedRuntime';\n\nimport { type AiService, type ToolExecutionService, type ToolResolverService } from '@dxos/ai';\nimport { Capability } from '@dxos/app-framework';\nimport { type Database } from '@dxos/echo';\nimport type { CredentialsService, FunctionInvocationService, QueueService, TracingService } from '@dxos/functions';\nimport type { TriggerDispatcher, TriggerStateStore } from '@dxos/functions-runtime';\nimport type { SpaceId } from '@dxos/keys';\n\nimport { meta } from '../meta';\n\nexport namespace AutomationCapabilities {\n /**\n * Service stack for executing agents, functions, and triggers.\n */\n export type ComputeServices =\n | TriggerDispatcher\n | TriggerStateStore\n | AiService.AiService\n | Database.Service\n | QueueService\n | CredentialsService\n | FunctionInvocationService\n | TracingService\n // TODO(dmaretskyi): Those should be provided at AI-chat call site.\n | ToolResolverService\n | ToolExecutionService;\n\n export type ComputeRuntime = ManagedRuntime.ManagedRuntime<AutomationCapabilities.ComputeServices, never>;\n export interface ComputeRuntimeProvider {\n getRuntime(spaceId: SpaceId): ComputeRuntime;\n }\n\n /**\n * Runtime for executing agents, functions, and triggers.\n */\n export const ComputeRuntime = Capability.make<ComputeRuntimeProvider>(`${meta.id}/capability/compute-runtime`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ActivationEvent } from '@dxos/app-framework';\n\nimport { meta } from '../meta';\n\nexport namespace AutomationEvents {\n export const ComputeRuntimeReady = ActivationEvent.make(`${meta.id}/event/compute-runtime-ready`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Database } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\n\nimport { meta } from '../meta';\n\nconst TriggerTemplate = Schema.Union(\n Schema.Struct({ type: Schema.Literal('timer'), cron: Schema.String }),\n Schema.Struct({ type: Schema.Literal('queue'), queueDXN: Schema.Any }),\n);\n\nexport namespace AutomationAction {\n export class CreateTriggerFromTemplate extends Schema.TaggedClass<CreateTriggerFromTemplate>()(\n `${meta.id}/action/create-trigger-from-template`,\n {\n input: Schema.Struct({\n db: Database.Database,\n template: TriggerTemplate,\n enabled: Schema.optional(Schema.Boolean),\n // TODO(wittjosiah): Improve how this lookup is done.\n scriptName: Schema.optional(Schema.String),\n input: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n }),\n output: Schema.Void,\n },\n ) {}\n}\n\nconst AUTOMATION_OPERATION = `${meta.id}/operation`;\n\nexport namespace AutomationOperation {\n export const CreateTriggerFromTemplate = Operation.make({\n meta: { key: `${AUTOMATION_OPERATION}/create-trigger-from-template`, name: 'Create Trigger From Template' },\n services: [Capability.Service],\n schema: {\n input: Schema.Struct({\n db: Database.Database,\n template: TriggerTemplate,\n enabled: Schema.optional(Schema.Boolean),\n scriptName: Schema.optional(Schema.String),\n input: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n }),\n output: Schema.Void,\n },\n });\n}\n"],
5
+ "mappings": ";;;;;AAOA,SAASA,kBAAkB;UAQVC,yBAAAA;0BAyBFC,iBAAiBC,WAAWC,KAA6B,GAAGC,KAAKC,EAAE,6BAA6B;AAC/G,GA1BiBL,2BAAAA,yBAAAA,CAAAA,EAAAA;;;;ACXjB,SAASM,uBAAuB;UAIfC,mBAAAA;oBACFC,sBAAsBC,gBAAgBC,KAAK,GAAGC,KAAKC,EAAE,8BAA8B;AAClG,GAFiBL,qBAAAA,mBAAAA,CAAAA,EAAAA;;;;ACJjB,YAAYM,YAAY;AAExB,SAASC,cAAAA,mBAAkB;AAC3B,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAI1B,IAAMC,kBAAyBC,aACtBC,cAAO;EAAEC,MAAaC,eAAQ,OAAA;EAAUC,MAAaC;AAAO,CAAA,GAC5DJ,cAAO;EAAEC,MAAaC,eAAQ,OAAA;EAAUG,UAAiBC;AAAI,CAAA,CAAA;UAGrDC,mBAAAA;EACR,MAAMC,kCAAyCC,mBAAW,EAC/D,GAAGC,KAAKC,EAAE,wCACV;IACEC,OAAcZ,cAAO;MACnBa,IAAIC,SAASA;MACbC,UAAUjB;MACVkB,SAAgBC,gBAAgBC,cAAO;;MAEvCC,YAAmBF,gBAAgBb,aAAM;MACzCQ,OAAcK,gBAAgBG,cAAO;QAAEC,KAAYjB;QAAQkB,OAAchB;MAAI,CAAA,CAAA;IAC/E,CAAA;IACAiB,QAAeC;EACjB,CAAA,EAAA;EACC;oBAbUhB,4BAAAA;AAcf,GAfiBD,qBAAAA,mBAAAA,CAAAA,EAAAA;AAiBjB,IAAMkB,uBAAuB,GAAGf,KAAKC,EAAE;UAEtBe,sBAAAA;uBACFlB,4BAA4BmB,UAAUC,KAAK;IACtDlB,MAAM;MAAEW,KAAK,GAAGI,oBAAAA;MAAqDI,MAAM;IAA+B;IAC1GC,UAAU;MAACC,YAAWC;;IACtBC,QAAQ;MACNrB,OAAcZ,cAAO;QACnBa,IAAIC,SAASA;QACbC,UAAUjB;QACVkB,SAAgBC,gBAAgBC,cAAO;QACvCC,YAAmBF,gBAAgBb,aAAM;QACzCQ,OAAcK,gBAAgBG,cAAO;UAAEC,KAAYjB;UAAQkB,OAAchB;QAAI,CAAA,CAAA;MAC/E,CAAA;MACAiB,QAAeC;IACjB;EACF,CAAA;AACF,GAfiBE,wBAAAA,sBAAAA,CAAAA,EAAAA;;;",
6
+ "names": ["Capability", "AutomationCapabilities", "ComputeRuntime", "Capability", "make", "meta", "id", "ActivationEvent", "AutomationEvents", "ComputeRuntimeReady", "ActivationEvent", "make", "meta", "id", "Schema", "Capability", "Database", "Operation", "TriggerTemplate", "Union", "Struct", "type", "Literal", "cron", "String", "queueDXN", "Any", "AutomationAction", "CreateTriggerFromTemplate", "TaggedClass", "meta", "id", "input", "db", "Database", "template", "enabled", "optional", "Boolean", "scriptName", "Record", "key", "value", "output", "Void", "AUTOMATION_OPERATION", "AutomationOperation", "Operation", "make", "name", "services", "Capability", "Service", "schema"]
7
+ }
@@ -0,0 +1,8 @@
1
+ // src/capabilities/compute-runtime/index.ts
2
+ import { Capability } from "@dxos/app-framework";
3
+ var ComputeRuntime = Capability.lazy("ComputeRuntime", () => import("./compute-runtime-BUBHYS4Y.mjs"));
4
+
5
+ export {
6
+ ComputeRuntime
7
+ };
8
+ //# sourceMappingURL=chunk-O5Y2F33G.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/compute-runtime/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ComputeRuntime = Capability.lazy('ComputeRuntime', () => import('./compute-runtime'));\n"],
5
+ "mappings": ";AAIA,SAASA,kBAAkB;AAEpB,IAAMC,iBAAiBC,WAAWC,KAAK,kBAAkB,MAAM,OAAO,gCAAA,CAAA;",
6
+ "names": ["Capability", "ComputeRuntime", "Capability", "lazy"]
7
+ }
@@ -0,0 +1,93 @@
1
+ import {
2
+ AutomationCapabilities
3
+ } from "./chunk-JOXPQ27I.mjs";
4
+
5
+ // src/hooks/useComputeRuntimeCallback.ts
6
+ import * as Cause from "effect/Cause";
7
+ import * as Effect from "effect/Effect";
8
+ import * as Exit from "effect/Exit";
9
+ import { useCallback } from "react";
10
+ import { useCapability } from "@dxos/app-framework/ui";
11
+ import { FunctionInvocationService, TracingService } from "@dxos/functions";
12
+ import { log } from "@dxos/log";
13
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/hooks/useComputeRuntimeCallback.ts";
14
+ var useComputeRuntimeCallback = (id, fn, deps) => {
15
+ const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);
16
+ const runtime = id !== void 0 ? computeRuntime.getRuntime(id) : void 0;
17
+ return useCallback(() => {
18
+ if (!runtime) {
19
+ throw new TypeError("Space not provided to useComputeRuntimeCallback");
20
+ }
21
+ return runtime.runPromise(fn());
22
+ }, [
23
+ runtime,
24
+ ...deps ?? []
25
+ ]);
26
+ };
27
+ var invokeFunctionWithTracing = (functionDef, inputData) => Effect.gen(function* () {
28
+ const tracer = yield* TracingService;
29
+ const trace = yield* tracer.traceInvocationStart({
30
+ target: void 0,
31
+ payload: {
32
+ data: {}
33
+ }
34
+ });
35
+ const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(Effect.provide(trace.invocationTraceQueue ? TracingService.layerInvocation(trace) : TracingService.layerNoop), Effect.exit);
36
+ if (Exit.isFailure(result)) {
37
+ const error = Cause.prettyErrors(result.cause)[0];
38
+ log.error(error.message, error.cause ?? error.stack, {
39
+ F: __dxlog_file,
40
+ L: 57,
41
+ S: this,
42
+ C: (f, a) => f(...a)
43
+ });
44
+ }
45
+ yield* tracer.traceInvocationEnd({
46
+ trace,
47
+ // TODO(dmaretskyi): Might miss errors.
48
+ exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : void 0
49
+ });
50
+ return result;
51
+ });
52
+
53
+ // src/hooks/useTriggerRuntimeControls.ts
54
+ import { Atom, useAtomValue } from "@effect-atom/atom-react";
55
+ import * as Effect2 from "effect/Effect";
56
+ import { useEffect, useState } from "react";
57
+ import { Filter } from "@dxos/echo";
58
+ import { Trigger } from "@dxos/functions";
59
+ import { TriggerDispatcher } from "@dxos/functions-runtime";
60
+ import { useQuery } from "@dxos/react-client/echo";
61
+ var useTriggerRuntimeControls = (db) => {
62
+ const triggers = useQuery(db, Filter.type(Trigger.Trigger));
63
+ const [dispatcher, setDispatcher] = useState(void 0);
64
+ const init = useComputeRuntimeCallback(db?.spaceId, Effect2.fnUntraced(function* () {
65
+ const dispatcher2 = yield* TriggerDispatcher;
66
+ setDispatcher(dispatcher2);
67
+ }));
68
+ useEffect(() => {
69
+ void init();
70
+ }, []);
71
+ const state = useAtomValue(dispatcher?.state ?? Atom.make(void 0));
72
+ const start = useComputeRuntimeCallback(db?.spaceId, Effect2.fnUntraced(function* () {
73
+ const dispatcher2 = yield* TriggerDispatcher;
74
+ yield* dispatcher2.start();
75
+ }));
76
+ const stop = useComputeRuntimeCallback(db?.spaceId, Effect2.fnUntraced(function* () {
77
+ const dispatcher2 = yield* TriggerDispatcher;
78
+ yield* dispatcher2.stop();
79
+ }));
80
+ return {
81
+ triggers,
82
+ state,
83
+ start: () => void start(),
84
+ stop: () => void stop()
85
+ };
86
+ };
87
+
88
+ export {
89
+ useComputeRuntimeCallback,
90
+ invokeFunctionWithTracing,
91
+ useTriggerRuntimeControls
92
+ };
93
+ //# sourceMappingURL=chunk-P5AEO35Y.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/ui';\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 { Atom, useAtomValue } from '@effect-atom/atom-react';\nimport type * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, Filter } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { TriggerDispatcher, type TriggerDispatcherState } from '@dxos/functions-runtime';\nimport { useQuery } from '@dxos/react-client/echo';\n\nimport { useComputeRuntimeCallback } from './useComputeRuntimeCallback';\n\ninterface TriggerRuntimeControls {\n triggers: Trigger.Trigger[];\n\n state: TriggerDispatcherState | undefined;\n\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 [dispatcher, setDispatcher] = useState<Context.Tag.Service<TriggerDispatcher> | undefined>(undefined);\n\n const init = useComputeRuntimeCallback(\n db?.spaceId,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n setDispatcher(dispatcher);\n }),\n );\n\n useEffect(() => {\n void init();\n }, []);\n\n const state = useAtomValue(dispatcher?.state ?? Atom.make(undefined));\n\n const start = useComputeRuntimeCallback(\n db?.spaceId,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.start();\n }),\n );\n\n const stop = useComputeRuntimeCallback(\n db?.spaceId,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.stop();\n }),\n );\n\n return {\n triggers,\n state,\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,SAASkB,MAAMC,oBAAoB;AAEnC,YAAYC,aAAY;AACxB,SAASC,WAAWC,gBAAgB;AAEpC,SAAwBC,cAAc;AACtC,SAASC,eAAe;AACxB,SAASC,yBAAsD;AAC/D,SAASC,gBAAgB;AAalB,IAAMC,4BAA4B,CAACC,OAAAA;AACxC,QAAMC,WAAWC,SAASF,IAAIG,OAAOC,KAAKC,QAAQA,OAAO,CAAA;AAEzD,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAA6DC,MAAAA;AAEjG,QAAMC,OAAOC,0BACXX,IAAIY,SACGC,mBAAW,aAAA;AAChB,UAAMP,cAAa,OAAOQ;AAC1BP,kBAAcD,WAAAA;EAChB,CAAA,CAAA;AAGFS,YAAU,MAAA;AACR,SAAKL,KAAAA;EACP,GAAG,CAAA,CAAE;AAEL,QAAMM,QAAQC,aAAaX,YAAYU,SAASE,KAAKC,KAAKV,MAAAA,CAAAA;AAE1D,QAAMW,QAAQT,0BACZX,IAAIY,SACGC,mBAAW,aAAA;AAChB,UAAMP,cAAa,OAAOQ;AAC1B,WAAOR,YAAWc,MAAK;EACzB,CAAA,CAAA;AAGF,QAAMC,OAAOV,0BACXX,IAAIY,SACGC,mBAAW,aAAA;AAChB,UAAMP,cAAa,OAAOQ;AAC1B,WAAOR,YAAWe,KAAI;EACxB,CAAA,CAAA;AAGF,SAAO;IACLpB;IACAe;IACAI,OAAO,MAAM,KAAKA,MAAAA;IAClBC,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", "Atom", "useAtomValue", "Effect", "useEffect", "useState", "Filter", "Trigger", "TriggerDispatcher", "useQuery", "useTriggerRuntimeControls", "db", "triggers", "useQuery", "Filter", "type", "Trigger", "dispatcher", "setDispatcher", "useState", "undefined", "init", "useComputeRuntimeCallback", "spaceId", "fnUntraced", "TriggerDispatcher", "useEffect", "state", "useAtomValue", "Atom", "make", "start", "stop"]
7
+ }
@@ -0,0 +1,17 @@
1
+ // src/meta.ts
2
+ import { trim } from "@dxos/util";
3
+ var meta = {
4
+ id: "dxos.org/plugin/automation",
5
+ name: "Automation",
6
+ description: trim`
7
+ Workflow automation engine that triggers custom actions based on object events and conditions.
8
+ Create automated pipelines that respond to changes and streamline repetitive tasks.
9
+ `,
10
+ icon: "ph--robot--regular",
11
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-automation"
12
+ };
13
+
14
+ export {
15
+ meta
16
+ };
17
+ //# sourceMappingURL=chunk-PZNBEKO5.mjs.map
@@ -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
+ }