@dxos/plugin-automation 0.8.4-main.a4bbb77 → 0.8.4-main.abd8ff62ef

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 (287) hide show
  1. package/dist/lib/browser/chunk-CHUTFU3D.mjs +54 -0
  2. package/dist/lib/browser/chunk-CHUTFU3D.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  4. package/dist/lib/browser/chunk-RE64VLSV.mjs +44 -0
  5. package/dist/lib/browser/chunk-RE64VLSV.mjs.map +7 -0
  6. package/dist/lib/browser/create-trigger-from-template-JLBSJRVB.mjs +70 -0
  7. package/dist/lib/browser/create-trigger-from-template-JLBSJRVB.mjs.map +7 -0
  8. package/dist/lib/browser/hooks/index.mjs +123 -6
  9. package/dist/lib/browser/hooks/index.mjs.map +4 -4
  10. package/dist/lib/browser/index.mjs +17 -102
  11. package/dist/lib/browser/index.mjs.map +4 -4
  12. package/dist/lib/browser/meta.json +1 -1
  13. package/dist/lib/browser/operations/index.mjs +14 -0
  14. package/dist/lib/browser/operations/index.mjs.map +7 -0
  15. package/dist/lib/browser/translations.mjs +47 -0
  16. package/dist/lib/browser/translations.mjs.map +7 -0
  17. package/dist/lib/browser/types/index.mjs +10 -4
  18. package/dist/lib/node-esm/chunk-HHIHREME.mjs +45 -0
  19. package/dist/lib/node-esm/chunk-HHIHREME.mjs.map +7 -0
  20. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  21. package/dist/lib/node-esm/chunk-NWQMBY32.mjs +56 -0
  22. package/dist/lib/node-esm/chunk-NWQMBY32.mjs.map +7 -0
  23. package/dist/lib/node-esm/create-trigger-from-template-FUQ3LUIF.mjs +71 -0
  24. package/dist/lib/node-esm/create-trigger-from-template-FUQ3LUIF.mjs.map +7 -0
  25. package/dist/lib/node-esm/hooks/index.mjs +123 -6
  26. package/dist/lib/node-esm/hooks/index.mjs.map +4 -4
  27. package/dist/lib/node-esm/index.mjs +17 -102
  28. package/dist/lib/node-esm/index.mjs.map +4 -4
  29. package/dist/lib/node-esm/meta.json +1 -1
  30. package/dist/lib/node-esm/operations/index.mjs +15 -0
  31. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  32. package/dist/lib/node-esm/translations.mjs +48 -0
  33. package/dist/lib/node-esm/translations.mjs.map +7 -0
  34. package/dist/lib/node-esm/types/index.mjs +10 -4
  35. package/dist/types/src/AutomationPlugin.d.ts +3 -1
  36. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  37. package/dist/types/src/AutomationPlugin.node.d.ts +4 -0
  38. package/dist/types/src/AutomationPlugin.node.d.ts.map +1 -0
  39. package/dist/types/src/AutomationPlugin.test.d.ts +2 -0
  40. package/dist/types/src/AutomationPlugin.test.d.ts.map +1 -0
  41. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  42. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  43. package/dist/types/src/capabilities/compute-runtime.d.ts +12 -3
  44. package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -1
  45. package/dist/types/src/capabilities/index.d.ts +6 -5
  46. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/node.d.ts +6 -0
  48. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  49. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  50. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  51. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  52. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  53. package/dist/types/src/commands/index.d.ts +2 -0
  54. package/dist/types/src/commands/index.d.ts.map +1 -0
  55. package/dist/types/src/commands/trigger/create/index.d.ts +25 -0
  56. package/dist/types/src/commands/trigger/create/index.d.ts.map +1 -0
  57. package/dist/types/src/commands/trigger/create/queue.d.ts +13 -0
  58. package/dist/types/src/commands/trigger/create/queue.d.ts.map +1 -0
  59. package/dist/types/src/commands/trigger/create/subscription.d.ts +15 -0
  60. package/dist/types/src/commands/trigger/create/subscription.d.ts.map +1 -0
  61. package/dist/types/src/commands/trigger/create/timer.d.ts +13 -0
  62. package/dist/types/src/commands/trigger/create/timer.d.ts.map +1 -0
  63. package/dist/types/src/commands/trigger/index.d.ts +57 -0
  64. package/dist/types/src/commands/trigger/index.d.ts.map +1 -0
  65. package/dist/types/src/commands/trigger/list.d.ts +7 -0
  66. package/dist/types/src/commands/trigger/list.d.ts.map +1 -0
  67. package/dist/types/src/commands/trigger/options.d.ts +11 -0
  68. package/dist/types/src/commands/trigger/options.d.ts.map +1 -0
  69. package/dist/types/src/commands/trigger/remove.d.ts +8 -0
  70. package/dist/types/src/commands/trigger/remove.d.ts.map +1 -0
  71. package/dist/types/src/commands/trigger/update/index.d.ts +28 -0
  72. package/dist/types/src/commands/trigger/update/index.d.ts.map +1 -0
  73. package/dist/types/src/commands/trigger/update/queue.d.ts +12 -0
  74. package/dist/types/src/commands/trigger/update/queue.d.ts.map +1 -0
  75. package/dist/types/src/commands/trigger/update/subscription.d.ts +13 -0
  76. package/dist/types/src/commands/trigger/update/subscription.d.ts.map +1 -0
  77. package/dist/types/src/commands/trigger/update/timer.d.ts +11 -0
  78. package/dist/types/src/commands/trigger/update/timer.d.ts.map +1 -0
  79. package/dist/types/src/commands/trigger/util.d.ts +46 -0
  80. package/dist/types/src/commands/trigger/util.d.ts.map +1 -0
  81. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +6 -7
  82. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  83. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +32 -27
  84. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/AutomationPanel/index.d.ts.map +1 -1
  86. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  87. package/dist/types/src/components/FunctionsPanel/index.d.ts.map +1 -1
  88. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts +8 -0
  89. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -0
  90. package/dist/types/src/components/FunctionsRegistry/index.d.ts +4 -0
  91. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -0
  92. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +12 -9
  93. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  94. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +6 -3
  95. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  96. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +11 -8
  97. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  98. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +106 -30
  99. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  100. package/dist/types/src/components/index.d.ts +3 -4
  101. package/dist/types/src/components/index.d.ts.map +1 -1
  102. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts +6 -0
  103. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts.map +1 -0
  104. package/dist/types/src/containers/AutomationSettings/index.d.ts +2 -0
  105. package/dist/types/src/containers/AutomationSettings/index.d.ts.map +1 -0
  106. package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts +4 -0
  107. package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts.map +1 -0
  108. package/dist/types/src/containers/FunctionsContainer/index.d.ts +2 -0
  109. package/dist/types/src/containers/FunctionsContainer/index.d.ts.map +1 -0
  110. package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts.map +1 -0
  111. package/dist/types/src/containers/TriggerSettings/index.d.ts +3 -0
  112. package/dist/types/src/containers/TriggerSettings/index.d.ts.map +1 -0
  113. package/dist/types/src/containers/index.d.ts +5 -0
  114. package/dist/types/src/containers/index.d.ts.map +1 -0
  115. package/dist/types/src/hooks/index.d.ts +2 -0
  116. package/dist/types/src/hooks/index.d.ts.map +1 -1
  117. package/dist/types/src/hooks/useComputeRuntime.d.ts +8 -0
  118. package/dist/types/src/hooks/useComputeRuntime.d.ts.map +1 -0
  119. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +5 -4
  120. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -1
  121. package/dist/types/src/hooks/useComputeRuntimeService.d.ts +17 -0
  122. package/dist/types/src/hooks/useComputeRuntimeService.d.ts.map +1 -0
  123. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +6 -5
  124. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  125. package/dist/types/src/index.d.ts +3 -4
  126. package/dist/types/src/index.d.ts.map +1 -1
  127. package/dist/types/src/meta.d.ts +2 -2
  128. package/dist/types/src/meta.d.ts.map +1 -1
  129. package/dist/types/src/operations/create-trigger-from-template.d.ts +5 -0
  130. package/dist/types/src/operations/create-trigger-from-template.d.ts.map +1 -0
  131. package/dist/types/src/operations/definitions.d.ts +19 -0
  132. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  133. package/dist/types/src/operations/index.d.ts +4 -0
  134. package/dist/types/src/operations/index.d.ts.map +1 -0
  135. package/dist/types/src/testing/test-functions.d.ts +204 -3
  136. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  137. package/dist/types/src/translations.d.ts +32 -28
  138. package/dist/types/src/translations.d.ts.map +1 -1
  139. package/dist/types/src/types/capabilities.d.ts +24 -0
  140. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  141. package/dist/types/src/types/events.d.ts +5 -0
  142. package/dist/types/src/types/events.d.ts.map +1 -0
  143. package/dist/types/src/types/index.d.ts +2 -0
  144. package/dist/types/src/types/index.d.ts.map +1 -1
  145. package/dist/types/src/types/schema.d.ts +12 -4
  146. package/dist/types/src/types/schema.d.ts.map +1 -1
  147. package/dist/types/tsconfig.tsbuildinfo +1 -1
  148. package/package.json +99 -56
  149. package/src/AutomationPlugin.node.ts +29 -0
  150. package/src/AutomationPlugin.test.ts +27 -0
  151. package/src/AutomationPlugin.tsx +20 -35
  152. package/src/capabilities/app-graph-builder.ts +59 -79
  153. package/src/capabilities/compute-runtime.ts +272 -83
  154. package/src/capabilities/index.ts +9 -7
  155. package/src/capabilities/node.ts +13 -0
  156. package/src/capabilities/operation-handler.ts +16 -0
  157. package/src/capabilities/react-surface.tsx +49 -46
  158. package/src/commands/index.ts +5 -0
  159. package/src/commands/trigger/create/index.ts +14 -0
  160. package/src/commands/trigger/create/queue.ts +86 -0
  161. package/src/commands/trigger/create/subscription.ts +125 -0
  162. package/src/commands/trigger/create/timer.ts +90 -0
  163. package/src/commands/trigger/index.ts +16 -0
  164. package/src/commands/trigger/list.ts +70 -0
  165. package/src/commands/trigger/options.ts +59 -0
  166. package/src/commands/trigger/remove.ts +45 -0
  167. package/src/commands/trigger/update/index.ts +14 -0
  168. package/src/commands/trigger/update/queue.ts +194 -0
  169. package/src/commands/trigger/update/subscription.ts +278 -0
  170. package/src/commands/trigger/update/timer.ts +193 -0
  171. package/src/commands/trigger/util.ts +410 -0
  172. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +7 -7
  173. package/src/components/AutomationPanel/AutomationPanel.tsx +249 -81
  174. package/src/components/FunctionsPanel/FunctionsPanel.tsx +50 -31
  175. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +114 -0
  176. package/src/components/FunctionsRegistry/index.ts +8 -0
  177. package/src/components/TriggerEditor/FunctionInputEditor.tsx +42 -35
  178. package/src/components/TriggerEditor/SpecSelector.tsx +28 -16
  179. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +116 -29
  180. package/src/components/TriggerEditor/TriggerEditor.tsx +109 -42
  181. package/src/components/index.ts +1 -2
  182. package/src/containers/AutomationSettings/AutomationSettings.tsx +31 -0
  183. package/src/containers/AutomationSettings/index.ts +5 -0
  184. package/src/containers/FunctionsContainer/FunctionsContainer.tsx +33 -0
  185. package/src/containers/FunctionsContainer/index.ts +5 -0
  186. package/src/containers/TriggerSettings/TriggerSettings.tsx +48 -0
  187. package/src/containers/TriggerSettings/index.ts +6 -0
  188. package/src/containers/index.ts +9 -0
  189. package/src/hooks/index.ts +3 -0
  190. package/src/hooks/useComputeRuntime.ts +30 -0
  191. package/src/hooks/useComputeRuntimeCallback.ts +11 -9
  192. package/src/hooks/useComputeRuntimeService.ts +64 -0
  193. package/src/hooks/useTriggerRuntimeControls.ts +34 -16
  194. package/src/index.ts +5 -4
  195. package/src/meta.ts +9 -6
  196. package/src/operations/create-trigger-from-template.ts +71 -0
  197. package/src/operations/definitions.ts +28 -0
  198. package/src/operations/index.ts +9 -0
  199. package/src/testing/test-functions.ts +10 -7
  200. package/src/translations.ts +39 -33
  201. package/src/types/capabilities.ts +47 -0
  202. package/src/types/events.ts +11 -0
  203. package/src/types/index.ts +2 -0
  204. package/src/types/schema.ts +6 -6
  205. package/dist/lib/browser/AutomationPanel-4QA5G3ZY.mjs +0 -11
  206. package/dist/lib/browser/AutomationSettings-6XLG2PCK.mjs +0 -69
  207. package/dist/lib/browser/AutomationSettings-6XLG2PCK.mjs.map +0 -7
  208. package/dist/lib/browser/FunctionsContainer-BQ6VBDIG.mjs +0 -36
  209. package/dist/lib/browser/FunctionsContainer-BQ6VBDIG.mjs.map +0 -7
  210. package/dist/lib/browser/FunctionsPanel-QBTOFFNU.mjs +0 -10
  211. package/dist/lib/browser/app-graph-builder-6TP6ZNYG.mjs +0 -80
  212. package/dist/lib/browser/app-graph-builder-6TP6ZNYG.mjs.map +0 -7
  213. package/dist/lib/browser/chunk-BDJPBZGC.mjs +0 -14
  214. package/dist/lib/browser/chunk-BDJPBZGC.mjs.map +0 -7
  215. package/dist/lib/browser/chunk-EAQL33PI.mjs +0 -94
  216. package/dist/lib/browser/chunk-EAQL33PI.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-F4K5EMWL.mjs +0 -38
  218. package/dist/lib/browser/chunk-F4K5EMWL.mjs.map +0 -7
  219. package/dist/lib/browser/chunk-IN2YC7NY.mjs +0 -230
  220. package/dist/lib/browser/chunk-IN2YC7NY.mjs.map +0 -7
  221. package/dist/lib/browser/chunk-LNMCGQC2.mjs +0 -143
  222. package/dist/lib/browser/chunk-LNMCGQC2.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-M2WQCY2T.mjs +0 -53
  224. package/dist/lib/browser/chunk-M2WQCY2T.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-U66KBK53.mjs +0 -14
  226. package/dist/lib/browser/chunk-U66KBK53.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-WWURMV25.mjs +0 -13
  228. package/dist/lib/browser/chunk-WWURMV25.mjs.map +0 -7
  229. package/dist/lib/browser/chunk-ZTXBAXUT.mjs +0 -15
  230. package/dist/lib/browser/chunk-ZTXBAXUT.mjs.map +0 -7
  231. package/dist/lib/browser/compute-runtime-OFQPXD5I.mjs +0 -158
  232. package/dist/lib/browser/compute-runtime-OFQPXD5I.mjs.map +0 -7
  233. package/dist/lib/browser/intent-resolver-JXVWRAAH.mjs +0 -77
  234. package/dist/lib/browser/intent-resolver-JXVWRAAH.mjs.map +0 -7
  235. package/dist/lib/browser/react-surface-NG3MJCDH.mjs +0 -64
  236. package/dist/lib/browser/react-surface-NG3MJCDH.mjs.map +0 -7
  237. package/dist/lib/node-esm/AutomationPanel-WMVR3IST.mjs +0 -12
  238. package/dist/lib/node-esm/AutomationPanel-WMVR3IST.mjs.map +0 -7
  239. package/dist/lib/node-esm/AutomationSettings-4IW7RGMN.mjs +0 -70
  240. package/dist/lib/node-esm/AutomationSettings-4IW7RGMN.mjs.map +0 -7
  241. package/dist/lib/node-esm/FunctionsContainer-LHUUOLA5.mjs +0 -37
  242. package/dist/lib/node-esm/FunctionsContainer-LHUUOLA5.mjs.map +0 -7
  243. package/dist/lib/node-esm/FunctionsPanel-SHTQIMDV.mjs +0 -11
  244. package/dist/lib/node-esm/FunctionsPanel-SHTQIMDV.mjs.map +0 -7
  245. package/dist/lib/node-esm/app-graph-builder-3A2NIPR5.mjs +0 -81
  246. package/dist/lib/node-esm/app-graph-builder-3A2NIPR5.mjs.map +0 -7
  247. package/dist/lib/node-esm/chunk-2L2X4JMP.mjs +0 -16
  248. package/dist/lib/node-esm/chunk-2L2X4JMP.mjs.map +0 -7
  249. package/dist/lib/node-esm/chunk-5MQJPJR2.mjs +0 -15
  250. package/dist/lib/node-esm/chunk-5MQJPJR2.mjs.map +0 -7
  251. package/dist/lib/node-esm/chunk-B6O6UBS7.mjs +0 -16
  252. package/dist/lib/node-esm/chunk-B6O6UBS7.mjs.map +0 -7
  253. package/dist/lib/node-esm/chunk-CEWZ2CDM.mjs +0 -39
  254. package/dist/lib/node-esm/chunk-CEWZ2CDM.mjs.map +0 -7
  255. package/dist/lib/node-esm/chunk-DSEZPWSO.mjs +0 -54
  256. package/dist/lib/node-esm/chunk-DSEZPWSO.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-MN5S5J4O.mjs +0 -144
  258. package/dist/lib/node-esm/chunk-MN5S5J4O.mjs.map +0 -7
  259. package/dist/lib/node-esm/chunk-N7NES6SZ.mjs +0 -231
  260. package/dist/lib/node-esm/chunk-N7NES6SZ.mjs.map +0 -7
  261. package/dist/lib/node-esm/chunk-PBULJE4B.mjs +0 -95
  262. package/dist/lib/node-esm/chunk-PBULJE4B.mjs.map +0 -7
  263. package/dist/lib/node-esm/chunk-UTZIMYCX.mjs +0 -16
  264. package/dist/lib/node-esm/chunk-UTZIMYCX.mjs.map +0 -7
  265. package/dist/lib/node-esm/compute-runtime-W5UJNSQY.mjs +0 -159
  266. package/dist/lib/node-esm/compute-runtime-W5UJNSQY.mjs.map +0 -7
  267. package/dist/lib/node-esm/intent-resolver-ROEBZXSS.mjs +0 -78
  268. package/dist/lib/node-esm/intent-resolver-ROEBZXSS.mjs.map +0 -7
  269. package/dist/lib/node-esm/react-surface-A4KTYX6Z.mjs +0 -65
  270. package/dist/lib/node-esm/react-surface-A4KTYX6Z.mjs.map +0 -7
  271. package/dist/types/src/capabilities/capabilities.d.ts +0 -18
  272. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  273. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  274. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  275. package/dist/types/src/components/AutomationSettings.d.ts +0 -5
  276. package/dist/types/src/components/AutomationSettings.d.ts.map +0 -1
  277. package/dist/types/src/components/FunctionsContainer.d.ts +0 -7
  278. package/dist/types/src/components/FunctionsContainer.d.ts.map +0 -1
  279. package/dist/types/src/components/TriggerSettings.d.ts.map +0 -1
  280. package/src/capabilities/capabilities.ts +0 -47
  281. package/src/capabilities/intent-resolver.ts +0 -72
  282. package/src/components/AutomationSettings.tsx +0 -30
  283. package/src/components/FunctionsContainer.tsx +0 -29
  284. package/src/components/TriggerSettings.tsx +0 -25
  285. /package/dist/lib/browser/{AutomationPanel-4QA5G3ZY.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  286. /package/dist/lib/{browser/FunctionsPanel-QBTOFFNU.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
  287. /package/dist/types/src/{components → containers/TriggerSettings}/TriggerSettings.d.ts +0 -0
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export { FunctionsContainer as default } from './FunctionsContainer';
@@ -0,0 +1,48 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { type ComputeEnvironment } from '@dxos/client-protocol';
8
+ import { useObject } from '@dxos/echo-react';
9
+ import { type Space } from '@dxos/react-client/echo';
10
+ import { DropdownMenu, IconButton, useTranslation } from '@dxos/react-ui';
11
+ import { Settings } from '@dxos/react-ui-form';
12
+
13
+ import { meta } from '#meta';
14
+
15
+ export const TriggersSettings = ({ space }: { space: Space }) => {
16
+ const { t } = useTranslation(meta.id);
17
+ const [properties, changeProperties] = useObject(space.properties);
18
+ const selected = properties.computeEnvironment ?? 'local';
19
+
20
+ const handleUpdate = (option: ComputeEnvironment) => {
21
+ changeProperties((draft) => {
22
+ draft.computeEnvironment = option;
23
+ });
24
+ };
25
+
26
+ return (
27
+ <div className='grid grid-cols-1 md:grid-cols-[1fr_min-content]'>
28
+ <Settings.Item title={t('runtime.label')} description={t('runtime.description')}>
29
+ <DropdownMenu.Root>
30
+ <DropdownMenu.Trigger asChild>
31
+ <IconButton iconEnd icon='ph--caret-down--regular' size={4} label={t(`runtime.${selected}.label`)} />
32
+ </DropdownMenu.Trigger>
33
+ <DropdownMenu.Portal>
34
+ <DropdownMenu.Content side='bottom'>
35
+ <DropdownMenu.Viewport>
36
+ <DropdownMenu.Item onClick={() => handleUpdate('disabled')}>
37
+ {t(`runtime.disabled.label`)}
38
+ </DropdownMenu.Item>
39
+ <DropdownMenu.Item onClick={() => handleUpdate('local')}>{t(`runtime.local.label`)}</DropdownMenu.Item>
40
+ <DropdownMenu.Item onClick={() => handleUpdate('edge')}>{t(`runtime.edge.label`)}</DropdownMenu.Item>
41
+ </DropdownMenu.Viewport>
42
+ </DropdownMenu.Content>
43
+ </DropdownMenu.Portal>
44
+ </DropdownMenu.Root>
45
+ </Settings.Item>
46
+ </div>
47
+ );
48
+ };
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export { TriggersSettings } from './TriggerSettings';
6
+ export { TriggersSettings as default } from './TriggerSettings';
@@ -0,0 +1,9 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type ComponentType, lazy } from 'react';
6
+
7
+ export const AutomationSettings: ComponentType<any> = lazy(() => import('./AutomationSettings'));
8
+ export const FunctionsContainer: ComponentType<any> = lazy(() => import('./FunctionsContainer'));
9
+ export const TriggerSettings: ComponentType<any> = lazy(() => import('./TriggerSettings'));
@@ -2,5 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ // TODO(wittjosiah): Factor out.
5
6
  export * from './useComputeRuntimeCallback';
6
7
  export * from './useTriggerRuntimeControls';
8
+ export * from './useComputeRuntime';
9
+ export * from './useComputeRuntimeService';
@@ -0,0 +1,30 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useEffect } from 'react';
6
+
7
+ import { useCapabilities } from '@dxos/app-framework/ui';
8
+ import { SpaceId } from '@dxos/keys';
9
+ import { log } from '@dxos/log';
10
+
11
+ import { AutomationCapabilities } from '../types';
12
+
13
+ /**
14
+ * Resolves the compute runtime for a space.
15
+ * Returns undefined if the AutomationPlugin is not loaded or spaceId is not provided.
16
+ */
17
+ export const useComputeRuntime = (id: SpaceId | undefined): AutomationCapabilities.ComputeRuntime | undefined => {
18
+ const [computeRuntime] = useCapabilities(AutomationCapabilities.ComputeRuntime);
19
+ // One log per change of (capability availability, spaceId) so we can see when
20
+ // the React subscription actually observes the contributed runtime.
21
+ useEffect(() => {
22
+ log('useComputeRuntime', { hasCapability: !!computeRuntime, spaceId: id });
23
+ }, [!!computeRuntime, id]);
24
+
25
+ if (!computeRuntime || id === undefined) {
26
+ return undefined;
27
+ }
28
+
29
+ return computeRuntime.getRuntime(id);
30
+ };
@@ -2,29 +2,31 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import type { Effect } from 'effect';
6
- import { useCallback } from 'react';
5
+ import * as Effect from 'effect/Effect';
6
+ import { type DependencyList, useCallback } from 'react';
7
7
 
8
- import { useCapability } from '@dxos/app-framework';
9
- import type { Space } from '@dxos/react-client/echo';
8
+ import { type Key } from '@dxos/echo';
10
9
 
11
- import { AutomationCapabilities } from '../capabilities';
10
+ import { AutomationCapabilities } from '#types';
11
+
12
+ import { useComputeRuntime } from './useComputeRuntime';
12
13
 
13
14
  /**
14
15
  * Create an effectful function that has access to compute services
15
16
  */
17
+ // TODO(burdon): Factor out (figure out cross-plugin capabilities dependencies).
16
18
  export const useComputeRuntimeCallback = <T>(
17
- space: Space | undefined,
19
+ id: Key.SpaceId | undefined,
18
20
  fn: () => Effect.Effect<T, any, AutomationCapabilities.ComputeServices>,
19
- deps?: React.DependencyList,
21
+ deps?: DependencyList,
20
22
  ): (() => Promise<T>) => {
21
- const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);
22
- const runtime = space !== undefined ? computeRuntime.getRuntime(space.id) : undefined;
23
+ const runtime = useComputeRuntime(id);
23
24
 
24
25
  return useCallback(() => {
25
26
  if (!runtime) {
26
27
  throw new TypeError('Space not provided to useComputeRuntimeCallback');
27
28
  }
29
+
28
30
  return runtime.runPromise(fn());
29
31
  }, [runtime, ...(deps ?? [])]);
30
32
  };
@@ -0,0 +1,64 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import * as Context from 'effect/Context';
6
+ import * as Effect from 'effect/Effect';
7
+ import * as Exit from 'effect/Exit';
8
+ import { useEffect, useState } from 'react';
9
+
10
+ import { SpaceId } from '@dxos/keys';
11
+ import { log } from '@dxos/log';
12
+
13
+ import { useComputeRuntime } from './useComputeRuntime';
14
+
15
+ type ResolvedService<T extends Context.Tag<any, any>> = Context.Tag.Service<T> | undefined;
16
+
17
+ /**
18
+ * Resolves a service from the compute runtime for a given space.
19
+ *
20
+ * NOTE: Previously implemented via `use(useMemo(() => runtime.runPromiseExit(...)))`.
21
+ * React's `use()` is weird and unreliable in production builds — the Suspense
22
+ * boundary can stay pending indefinitely without the promise ever resolving
23
+ * from React's perspective (the runtime is built lazily on first invocation
24
+ * and one of its `acquire` steps can block). This `useState` + `useEffect`
25
+ * flavour avoids suspension entirely: the hook returns `undefined` while the
26
+ * service is being acquired or if acquisition fails / times out.
27
+ */
28
+ export const useComputeRuntimeService = <T extends Context.Tag<any, any>>(
29
+ tag: T,
30
+ spaceId?: SpaceId,
31
+ ): ResolvedService<T> => {
32
+ const runtime = useComputeRuntime(spaceId);
33
+ const [service, setService] = useState<ResolvedService<T>>(undefined);
34
+
35
+ useEffect(() => {
36
+ setService(undefined);
37
+ if (!runtime) {
38
+ return;
39
+ }
40
+ let cancelled = false;
41
+ void (async () => {
42
+ try {
43
+ const exit = await runtime.runPromiseExit(tag.pipe(Effect.timeout('30 seconds')));
44
+ if (cancelled) {
45
+ return;
46
+ }
47
+ if (Exit.isSuccess(exit)) {
48
+ setService(exit.value);
49
+ } else {
50
+ log.warn('useComputeRuntimeService: failed to acquire service', { cause: exit.cause });
51
+ }
52
+ } catch (error) {
53
+ if (!cancelled) {
54
+ log.catch(error);
55
+ }
56
+ }
57
+ })();
58
+ return () => {
59
+ cancelled = true;
60
+ };
61
+ }, [runtime, tag]);
62
+
63
+ return service;
64
+ };
@@ -2,50 +2,68 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Effect } from 'effect';
5
+ import { Atom, useAtomValue } from '@effect-atom/atom-react';
6
+ import type * as Context from 'effect/Context';
7
+ import * as Effect from 'effect/Effect';
8
+ import { useEffect, useState } from 'react';
6
9
 
7
- import { Filter } from '@dxos/echo';
8
- import { FunctionTrigger, TriggerDispatcher } from '@dxos/functions';
9
- import { type Space, useQuery } from '@dxos/react-client/echo';
10
- import { useAsyncState } from '@dxos/react-ui';
10
+ import { Trigger } from '@dxos/compute';
11
+ import { type Database, Filter, Query } from '@dxos/echo';
12
+ import { TriggerDispatcher, type TriggerDispatcherState } from '@dxos/functions-runtime';
13
+ import { useQuery } from '@dxos/react-client/echo';
11
14
 
12
15
  import { useComputeRuntimeCallback } from './useComputeRuntimeCallback';
13
16
 
14
17
  interface TriggerRuntimeControls {
15
- triggers: FunctionTrigger[];
16
- isRunning: boolean;
18
+ triggers: Trigger.Trigger[];
19
+
20
+ state: TriggerDispatcherState | undefined;
21
+
17
22
  start: () => void;
18
23
  stop: () => void;
19
24
  }
20
25
 
21
- export const useTriggerRuntimeControls = (space: Space | undefined): TriggerRuntimeControls => {
22
- const triggers = useQuery(space, Filter.type(FunctionTrigger));
26
+ export const useTriggerRuntimeControls = (db: Database.Database | undefined): TriggerRuntimeControls => {
27
+ const triggers = useQuery(
28
+ db,
29
+ Query.select(Filter.type(Trigger.Trigger)).debugLabel('plugin-automation.useTriggerRuntimeControls'),
30
+ );
23
31
 
24
- const [isRunningState, setIsRunningState] = useAsyncState(
25
- useComputeRuntimeCallback(space, () => TriggerDispatcher.pipe(Effect.map((t) => t.running))),
32
+ const [dispatcher, setDispatcher] = useState<Context.Tag.Service<TriggerDispatcher> | undefined>(undefined);
33
+
34
+ const init = useComputeRuntimeCallback(
35
+ db?.spaceId,
36
+ Effect.fnUntraced(function* () {
37
+ const dispatcher = yield* TriggerDispatcher;
38
+ setDispatcher(dispatcher);
39
+ }),
26
40
  );
27
41
 
42
+ useEffect(() => {
43
+ void init();
44
+ }, []);
45
+
46
+ const state = useAtomValue(dispatcher?.state ?? Atom.make(undefined));
47
+
28
48
  const start = useComputeRuntimeCallback(
29
- space,
49
+ db?.spaceId,
30
50
  Effect.fnUntraced(function* () {
31
51
  const dispatcher = yield* TriggerDispatcher;
32
52
  yield* dispatcher.start();
33
- setIsRunningState(true);
34
53
  }),
35
54
  );
36
55
 
37
56
  const stop = useComputeRuntimeCallback(
38
- space,
57
+ db?.spaceId,
39
58
  Effect.fnUntraced(function* () {
40
59
  const dispatcher = yield* TriggerDispatcher;
41
60
  yield* dispatcher.stop();
42
- setIsRunningState(false);
43
61
  }),
44
62
  );
45
63
 
46
64
  return {
47
65
  triggers,
48
- isRunning: isRunningState ?? false,
66
+ state,
49
67
  start: () => void start(),
50
68
  stop: () => void stop(),
51
69
  };
package/src/index.ts CHANGED
@@ -2,8 +2,9 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export { AutomationCapabilities } from './capabilities';
6
- export * from './components';
7
- export * from './meta';
5
+ import { Plugin } from '@dxos/app-framework';
8
6
 
9
- export * from './AutomationPlugin';
7
+ import { meta } from './meta';
8
+
9
+ export const AutomationPlugin = Plugin.lazy(meta, () => import('#plugin'));
10
+ export { meta } from './meta';
package/src/meta.ts CHANGED
@@ -2,13 +2,16 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type PluginMeta } from '@dxos/app-framework';
5
+ import { type Plugin } from '@dxos/app-framework';
6
+ import { trim } from '@dxos/util';
6
7
 
7
- export const meta: PluginMeta = {
8
- id: 'dxos.org/plugin/automation',
8
+ export const meta: Plugin.Meta = {
9
+ id: 'org.dxos.plugin.automation',
9
10
  name: 'Automation',
10
- description:
11
- 'The Automation tab allows you to trigger pre-defined workflows related to the element you are interacting with inside of Composer.',
12
- icon: 'ph--robot--regular',
11
+ description: trim`
12
+ Workflow automation engine that triggers custom actions based on object events and conditions.
13
+ Create automated pipelines that respond to changes and streamline repetitive tasks.
14
+ `,
15
+ icon: 'ph--atom--regular',
13
16
  source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-automation',
14
17
  };
@@ -0,0 +1,71 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';
8
+ import { Operation, Script, Trigger } from '@dxos/compute';
9
+ import { Obj, Ref } from '@dxos/echo';
10
+ import { type DXN } from '@dxos/keys';
11
+ import { SpaceOperation } from '@dxos/plugin-space/operations';
12
+ import { Filter } from '@dxos/react-client/echo';
13
+
14
+ import { meta } from '#meta';
15
+
16
+ import { CreateTriggerFromTemplate } from './definitions';
17
+
18
+ const handler: Operation.WithHandler<typeof CreateTriggerFromTemplate> = CreateTriggerFromTemplate.pipe(
19
+ Operation.withHandler(
20
+ Effect.fnUntraced(function* ({ db, template, enabled = false, scriptName, input }) {
21
+ const trigger = Trigger.make({ enabled, input });
22
+
23
+ // TODO(wittjosiah): Factor out function lookup by script name?
24
+ if (scriptName) {
25
+ const scripts = yield* Effect.promise(() => db.query(Filter.type(Script.Script, { name: scriptName })).run());
26
+ const [script] = scripts;
27
+ if (script) {
28
+ const functions = yield* Effect.promise(() =>
29
+ db.query(Filter.type(Operation.PersistentOperation, { source: Ref.make(script) })).run(),
30
+ );
31
+ const [fn] = functions;
32
+ if (fn) {
33
+ Obj.update(trigger, (trigger) => {
34
+ trigger.function = Ref.make(fn);
35
+ });
36
+ }
37
+ }
38
+ }
39
+
40
+ switch (template.type) {
41
+ case 'timer': {
42
+ Obj.update(trigger, (trigger) => {
43
+ trigger.spec = Trigger.specTimer(template.cron);
44
+ });
45
+ break;
46
+ }
47
+ case 'queue': {
48
+ Obj.update(trigger, (trigger) => {
49
+ trigger.spec = Trigger.specQueue((template.queueDXN as DXN).toString());
50
+ });
51
+ break;
52
+ }
53
+ default: {
54
+ break;
55
+ }
56
+ }
57
+
58
+ yield* Operation.invoke(SpaceOperation.AddObject, {
59
+ object: trigger,
60
+ target: db,
61
+ hidden: true,
62
+ });
63
+ yield* Operation.invoke(LayoutOperation.Open, {
64
+ subject: [`${getSpacePath(db.spaceId)}/settings/${meta.id}.automations`],
65
+ workspace: getSpacePath(db.spaceId),
66
+ });
67
+ }),
68
+ ),
69
+ );
70
+
71
+ export default handler;
@@ -0,0 +1,28 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Schema from 'effect/Schema';
6
+
7
+ import { Capability } from '@dxos/app-framework';
8
+ import { Operation } from '@dxos/compute';
9
+ import { Database } from '@dxos/echo';
10
+
11
+ import { meta } from '#meta';
12
+
13
+ import { TriggerTemplate } from '../types';
14
+
15
+ const AUTOMATION_OPERATION = `${meta.id}.operation`;
16
+
17
+ export const CreateTriggerFromTemplate = Operation.make({
18
+ meta: { key: `${AUTOMATION_OPERATION}.create-trigger-from-template`, name: 'Create Trigger From Template' },
19
+ services: [Capability.Service],
20
+ input: Schema.Struct({
21
+ db: Database.Database,
22
+ template: TriggerTemplate,
23
+ enabled: Schema.optional(Schema.Boolean),
24
+ scriptName: Schema.optional(Schema.String),
25
+ input: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),
26
+ }),
27
+ output: Schema.Void,
28
+ });
@@ -0,0 +1,9 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { OperationHandlerSet } from '@dxos/compute';
6
+
7
+ export * as AutomationOperation from './definitions';
8
+
9
+ export const AutomationOperationHandlerSet = OperationHandlerSet.lazy(() => import('./create-trigger-from-template'));
@@ -2,16 +2,17 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
- import { ContactType } from '@dxos/client/testing';
8
- import { Type } from '@dxos/echo';
7
+ import { TestSchema } from '@dxos/client/testing';
8
+ import { JsonSchema, Ref } from '@dxos/echo';
9
9
 
10
10
  export const functions = [
11
11
  {
12
+ key: 'example.com/function/chess',
12
13
  name: 'example.com/function/chess',
13
14
  version: '0.1.0',
14
- inputSchema: Type.toJsonSchema(
15
+ inputSchema: JsonSchema.toJsonSchema(
15
16
  Schema.Struct({
16
17
  level: Schema.Number.annotations({
17
18
  title: 'Level',
@@ -20,10 +21,11 @@ export const functions = [
20
21
  ),
21
22
  },
22
23
  {
24
+ key: 'example.com/function/forex',
23
25
  name: 'example.com/function/forex',
24
26
  version: '0.1.0',
25
27
  binding: 'FOREX',
26
- inputSchema: Type.toJsonSchema(
28
+ inputSchema: JsonSchema.toJsonSchema(
27
29
  Schema.Struct({
28
30
  from: Schema.String.annotations({ title: 'Currency from' }),
29
31
  to: Schema.String.annotations({ title: 'Currency to' }),
@@ -31,11 +33,12 @@ export const functions = [
31
33
  ),
32
34
  },
33
35
  {
36
+ key: 'example.com/function/ping-contact',
34
37
  name: 'example.com/function/ping-contact',
35
38
  version: '0.0.1',
36
- inputSchema: Type.toJsonSchema(
39
+ inputSchema: JsonSchema.toJsonSchema(
37
40
  Schema.Struct({
38
- contact: Type.Ref(ContactType).annotations({ title: 'Contact' }),
41
+ contact: Ref.Ref(TestSchema.ContactType).annotations({ title: 'Contact' }),
39
42
  }),
40
43
  ),
41
44
  },
@@ -4,44 +4,50 @@
4
4
 
5
5
  import { type Resource } from '@dxos/react-ui';
6
6
 
7
- import { meta } from './meta';
7
+ import { meta } from '#meta';
8
8
 
9
9
  export const translations = [
10
10
  {
11
11
  'en-US': {
12
12
  [meta.id]: {
13
- 'plugin name': 'Automation',
14
- 'automation panel label': 'Automations',
15
- 'script automation label': 'Automation',
16
- 'automation verbose label': 'Manage automations',
17
- 'automation description': 'You can manage all the triggers which automate your space here.',
18
-
19
- 'runtime label': 'Enable Local Runtime',
20
- 'runtime description':
21
- 'This will start a trigger dispatcher locally for this space to run triggers on your device while Composer is running.',
22
-
23
- 'functions panel label': 'Functions',
24
- 'functions verbose label': 'Manage deployed functions',
25
- 'functions description': 'You can manage all the functions deployed from your space on EDGE here.',
26
- 'function copy id': 'Copy Function ID',
27
- 'no functions found': 'No functions found',
28
- 'go to function source button label': 'Show function source',
29
-
30
- 'trigger editor title': 'Configure Trigger',
31
- 'new trigger label': 'Add Trigger',
32
- 'trigger type timer': 'Timer',
33
- 'trigger type webhook': 'Webhook',
34
- 'trigger type websocket': 'Websocket',
35
- 'trigger type subscription': 'Subscription',
36
- 'trigger type email': 'Email',
37
- 'trigger type queue': 'Queue',
38
-
39
- 'trigger copy url': 'Copy URL',
40
- 'trigger copy email': 'Copy Email',
41
-
42
- 'trigger payload add': 'Add',
43
- 'trigger payload remove': 'Remove',
44
- 'trigger payload prop name placeholder': 'New payload property name',
13
+ 'plugin.name': 'Automation',
14
+ 'automation-panel.label': 'Automations',
15
+ 'script-automation.label': 'Automation',
16
+ 'automation-verbose.label': 'Manage automations',
17
+ 'automation.description': 'Triggers that automate this space.',
18
+
19
+ 'runtime.label': 'Trigger runtime location',
20
+ 'runtime.description': 'Determines where the triggers in this space will execute.',
21
+ 'runtime.disabled.label': 'Triggers disabled',
22
+ 'runtime.local.label': 'Local',
23
+ 'runtime.edge.label': 'EDGE (experimental)',
24
+
25
+ 'functions-panel.label': 'Functions',
26
+ 'functions-verbose.label': 'Manage deployed functions',
27
+ 'functions-registry-verbose.label': 'Functions registry',
28
+ 'functions-registry.description': 'Import functions from the registry',
29
+ 'functions.description': 'Functions deployed from this space on EDGE.',
30
+ 'show-source-button.label': 'Show source',
31
+ 'delete-function-button.label': 'Delete function',
32
+
33
+ 'function-parameters.label': 'Function parameters',
34
+
35
+ 'trigger-editor.title': 'Configure Trigger',
36
+ 'trigger-editor.description':
37
+ 'Triggers are used to run functions at specific times or when specific events occur.',
38
+ 'new-trigger.label': 'Add Trigger',
39
+
40
+ 'trigger-type.timer.label': 'Timer',
41
+ 'trigger-type.webhook.label': 'Webhook',
42
+ 'trigger-type.websocket.label': 'Websocket',
43
+ 'trigger-type.subscription.label': 'Subscription',
44
+ 'trigger-type.email.label': 'Email',
45
+ 'trigger-type.queue.label': 'Feed',
46
+
47
+ 'trigger-payload-prop-name.placeholder': 'New payload property name',
48
+ 'import-function-button.label': 'Loading...',
49
+ 'update-function-button.label': 'Update',
50
+ 'loading-functions.message': 'Loading functions...',
45
51
  },
46
52
  },
47
53
  },
@@ -0,0 +1,47 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import type * as ManagedRuntime from 'effect/ManagedRuntime';
6
+
7
+ import { type AiService, type OpaqueToolkit } from '@dxos/ai';
8
+ import { Capability } from '@dxos/app-framework';
9
+ import type { Blueprint, Credential, Operation, OperationRegistry, Process } from '@dxos/compute';
10
+ import { type Database, type Feed } from '@dxos/echo';
11
+ import type { QueueService } from '@dxos/functions';
12
+ import { AgentService } from '@dxos/functions-runtime';
13
+ import type { ProcessManager, TriggerDispatcher, TriggerStateStore } from '@dxos/functions-runtime';
14
+ import type { SpaceId } from '@dxos/keys';
15
+
16
+ import { meta } from '#meta';
17
+
18
+ export namespace AutomationCapabilities {
19
+ /**
20
+ * Service stack for executing agents, functions, and triggers.
21
+ */
22
+ export type ComputeServices =
23
+ | TriggerDispatcher
24
+ | TriggerStateStore
25
+ | AiService.AiService
26
+ | Database.Service
27
+ | Feed.FeedService
28
+ | QueueService
29
+ | Credential.CredentialsService
30
+ | Blueprint.RegistryService
31
+ | AgentService.AgentService
32
+ | Process.ProcessMonitorService
33
+ | ProcessManager.Service
34
+ | Operation.Service
35
+ | OperationRegistry.Service
36
+ | OpaqueToolkit.OpaqueToolkitProvider;
37
+
38
+ export type ComputeRuntime = ManagedRuntime.ManagedRuntime<AutomationCapabilities.ComputeServices, never>;
39
+ export interface ComputeRuntimeProvider {
40
+ getRuntime(spaceId: SpaceId): ComputeRuntime;
41
+ }
42
+
43
+ /**
44
+ * Runtime for executing agents, functions, and triggers.
45
+ */
46
+ export const ComputeRuntime = Capability.make<ComputeRuntimeProvider>(`${meta.id}.capability.compute-runtime`);
47
+ }
@@ -0,0 +1,11 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { ActivationEvent } from '@dxos/app-framework';
6
+
7
+ import { meta } from '#meta';
8
+
9
+ export namespace AutomationEvents {
10
+ export const ComputeRuntimeReady = ActivationEvent.make(`${meta.id}.event.compute-runtime-ready`);
11
+ }
@@ -2,4 +2,6 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ export * from './capabilities';
6
+ export * from './events';
5
7
  export * from './schema';