@dxos/plugin-automation 0.8.4-main.69d29f4 → 0.8.4-main.6fa680abb7

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 (219) hide show
  1. package/dist/lib/browser/AutomationPanel-GH5TMGD6.mjs +11 -0
  2. package/dist/lib/browser/AutomationSettings-M6VFFEWK.mjs +37 -0
  3. package/dist/lib/browser/AutomationSettings-M6VFFEWK.mjs.map +7 -0
  4. package/dist/lib/browser/FunctionsContainer-R4ZMYSFJ.mjs +43 -0
  5. package/dist/lib/browser/FunctionsContainer-R4ZMYSFJ.mjs.map +7 -0
  6. package/dist/lib/browser/{FunctionsPanel-ZX4J75UM.mjs → FunctionsPanel-NMA4RYJL.mjs} +3 -3
  7. package/dist/lib/browser/FunctionsRegistry-TMKAEG5E.mjs +10 -0
  8. package/dist/lib/browser/TriggerSettings-56AIMOEC.mjs +11 -0
  9. package/dist/lib/browser/{app-graph-builder-LAQMEBMH.mjs → app-graph-builder-74ILZP25.mjs} +19 -20
  10. package/dist/lib/browser/app-graph-builder-74ILZP25.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-QW3EM35H.mjs → chunk-24ZULVVT.mjs} +60 -15
  12. package/dist/lib/browser/chunk-24ZULVVT.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-BFUIVUQH.mjs → chunk-75XLBFAG.mjs} +11 -16
  14. package/dist/lib/browser/chunk-75XLBFAG.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-YWLEY2FD.mjs → chunk-7HT7OLB5.mjs} +119 -50
  16. package/dist/lib/browser/chunk-7HT7OLB5.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-PZNBEKO5.mjs → chunk-EL64ZPPN.mjs} +2 -2
  18. package/dist/lib/browser/{chunk-PZNBEKO5.mjs.map → chunk-EL64ZPPN.mjs.map} +1 -1
  19. package/dist/lib/browser/{FunctionsContainer-6QLC7JP4.mjs → chunk-FUVAC5EC.mjs} +15 -48
  20. package/dist/lib/browser/chunk-FUVAC5EC.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-JOXPQ27I.mjs → chunk-GVHAETEQ.mjs} +7 -7
  22. package/dist/lib/browser/chunk-GVHAETEQ.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-H2MV4XE6.mjs +31 -0
  24. package/dist/lib/browser/chunk-H2MV4XE6.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-RAF2FJST.mjs → chunk-OAZ2JYXV.mjs} +19 -12
  26. package/dist/lib/browser/chunk-OAZ2JYXV.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-BKFQBKYO.mjs → chunk-Z7F7X2C5.mjs} +2 -2
  28. package/dist/lib/browser/cli/index.mjs +62 -54
  29. package/dist/lib/browser/cli/index.mjs.map +3 -3
  30. package/dist/lib/browser/{compute-runtime-WTWLQ67J.mjs → compute-runtime-F3UMRKCL.mjs} +28 -18
  31. package/dist/lib/browser/compute-runtime-F3UMRKCL.mjs.map +7 -0
  32. package/dist/lib/browser/hooks/index.mjs +3 -3
  33. package/dist/lib/browser/index.mjs +26 -25
  34. package/dist/lib/browser/index.mjs.map +4 -4
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/{operation-resolver-Q3MWOR7K.mjs → operation-resolver-IRC2DZU7.mjs} +11 -9
  37. package/dist/lib/browser/operation-resolver-IRC2DZU7.mjs.map +7 -0
  38. package/dist/lib/browser/react-surface-RCVPEK2V.mjs +65 -0
  39. package/dist/lib/browser/react-surface-RCVPEK2V.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +2 -2
  41. package/dist/lib/node-esm/{AutomationPanel-B7NAGDFA.mjs → AutomationPanel-7LW44A5O.mjs} +4 -4
  42. package/dist/lib/node-esm/AutomationPanel-7LW44A5O.mjs.map +7 -0
  43. package/dist/lib/node-esm/AutomationSettings-EYJ4YLYT.mjs +38 -0
  44. package/dist/lib/node-esm/AutomationSettings-EYJ4YLYT.mjs.map +7 -0
  45. package/dist/lib/node-esm/FunctionsContainer-GYRPQZM7.mjs +44 -0
  46. package/dist/lib/node-esm/FunctionsContainer-GYRPQZM7.mjs.map +7 -0
  47. package/dist/lib/node-esm/{FunctionsPanel-SS6GIVNU.mjs → FunctionsPanel-DCXXLSVP.mjs} +3 -3
  48. package/dist/lib/node-esm/FunctionsPanel-DCXXLSVP.mjs.map +7 -0
  49. package/dist/lib/node-esm/FunctionsRegistry-7WCHC64E.mjs +11 -0
  50. package/dist/lib/node-esm/FunctionsRegistry-7WCHC64E.mjs.map +7 -0
  51. package/dist/lib/node-esm/TriggerSettings-ONY5ZUKW.mjs +12 -0
  52. package/dist/lib/node-esm/TriggerSettings-ONY5ZUKW.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-builder-4UCMXHYY.mjs → app-graph-builder-VDXPOWCH.mjs} +19 -20
  54. package/dist/lib/node-esm/app-graph-builder-VDXPOWCH.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-HQLVREIX.mjs → chunk-2UF55HSG.mjs} +19 -12
  56. package/dist/lib/node-esm/chunk-2UF55HSG.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-2CKVH7JC.mjs → chunk-37CFAD4Y.mjs} +119 -50
  58. package/dist/lib/node-esm/chunk-37CFAD4Y.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-RX52VKI2.mjs → chunk-6B4WZRVH.mjs} +7 -7
  60. package/dist/lib/node-esm/chunk-6B4WZRVH.mjs.map +7 -0
  61. package/dist/lib/node-esm/{FunctionsContainer-J4O2ULWR.mjs → chunk-6JVB3IHW.mjs} +15 -48
  62. package/dist/lib/node-esm/chunk-6JVB3IHW.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-JVUE5PMI.mjs +32 -0
  64. package/dist/lib/node-esm/chunk-JVUE5PMI.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-KWKWOGS5.mjs → chunk-K7T2MVB7.mjs} +11 -16
  66. package/dist/lib/node-esm/chunk-K7T2MVB7.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-LJAXQ6CX.mjs → chunk-QUJ4MTMR.mjs} +60 -15
  68. package/dist/lib/node-esm/chunk-QUJ4MTMR.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-K7GCM342.mjs → chunk-R5YEWJCG.mjs} +2 -2
  70. package/dist/lib/node-esm/{chunk-5FXNN3MV.mjs → chunk-WC5AT7B3.mjs} +2 -2
  71. package/dist/lib/node-esm/{chunk-5FXNN3MV.mjs.map → chunk-WC5AT7B3.mjs.map} +1 -1
  72. package/dist/lib/node-esm/cli/index.mjs +62 -54
  73. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  74. package/dist/lib/node-esm/{compute-runtime-ZHROOBLY.mjs → compute-runtime-AMFVJMF2.mjs} +28 -18
  75. package/dist/lib/node-esm/compute-runtime-AMFVJMF2.mjs.map +7 -0
  76. package/dist/lib/node-esm/hooks/index.mjs +3 -3
  77. package/dist/lib/node-esm/index.mjs +26 -25
  78. package/dist/lib/node-esm/index.mjs.map +4 -4
  79. package/dist/lib/node-esm/meta.json +1 -1
  80. package/dist/lib/node-esm/{operation-resolver-R5GA4YNO.mjs → operation-resolver-CBLQHL4N.mjs} +11 -9
  81. package/dist/lib/node-esm/operation-resolver-CBLQHL4N.mjs.map +7 -0
  82. package/dist/lib/node-esm/{react-surface-S6VZJCEZ.mjs → react-surface-X4ZKOBC3.mjs} +25 -25
  83. package/dist/lib/node-esm/react-surface-X4ZKOBC3.mjs.map +7 -0
  84. package/dist/lib/node-esm/types/index.mjs +2 -2
  85. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  87. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts +1 -1
  89. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  91. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  93. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  95. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  97. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  98. package/dist/types/src/cli/commands/trigger/update/queue.d.ts.map +1 -1
  99. package/dist/types/src/cli/commands/trigger/util.d.ts +2 -2
  100. package/dist/types/src/cli/commands/trigger/util.d.ts.map +1 -1
  101. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  102. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +3 -4
  103. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  104. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +1 -0
  105. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  107. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -1
  108. package/dist/types/src/components/FunctionsRegistry/index.d.ts +3 -1
  109. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -1
  110. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  111. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  112. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +2 -0
  113. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  114. package/dist/types/src/components/index.d.ts +3 -4
  115. package/dist/types/src/components/index.d.ts.map +1 -1
  116. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts +4 -0
  117. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts.map +1 -0
  118. package/dist/types/src/containers/AutomationSettings/index.d.ts +3 -0
  119. package/dist/types/src/containers/AutomationSettings/index.d.ts.map +1 -0
  120. package/dist/types/src/{components → containers/FunctionsContainer}/FunctionsContainer.d.ts +0 -1
  121. package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts.map +1 -0
  122. package/dist/types/src/containers/FunctionsContainer/index.d.ts +3 -0
  123. package/dist/types/src/containers/FunctionsContainer/index.d.ts.map +1 -0
  124. package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts.map +1 -0
  125. package/dist/types/src/containers/TriggerSettings/index.d.ts +3 -0
  126. package/dist/types/src/containers/TriggerSettings/index.d.ts.map +1 -0
  127. package/dist/types/src/containers/index.d.ts +5 -0
  128. package/dist/types/src/containers/index.d.ts.map +1 -0
  129. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +2 -1
  130. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  131. package/dist/types/src/translations.d.ts +1 -0
  132. package/dist/types/src/translations.d.ts.map +1 -1
  133. package/dist/types/src/types/capabilities.d.ts +2 -2
  134. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  135. package/dist/types/src/types/schema.d.ts +3 -3
  136. package/dist/types/tsconfig.tsbuildinfo +1 -1
  137. package/package.json +50 -46
  138. package/src/AutomationPlugin.tsx +7 -6
  139. package/src/capabilities/app-graph-builder/app-graph-builder.ts +17 -15
  140. package/src/capabilities/compute-runtime/compute-runtime.ts +26 -13
  141. package/src/capabilities/operation-resolver/operation-resolver.ts +7 -6
  142. package/src/capabilities/react-surface/react-surface.tsx +16 -19
  143. package/src/cli/commands/trigger/create/queue.ts +4 -4
  144. package/src/cli/commands/trigger/create/subscription.ts +4 -4
  145. package/src/cli/commands/trigger/create/timer.ts +4 -4
  146. package/src/cli/commands/trigger/list.ts +2 -2
  147. package/src/cli/commands/trigger/remove.ts +2 -2
  148. package/src/cli/commands/trigger/update/queue.ts +5 -5
  149. package/src/cli/commands/trigger/update/subscription.ts +5 -5
  150. package/src/cli/commands/trigger/update/timer.ts +5 -5
  151. package/src/cli/commands/trigger/util.ts +34 -25
  152. package/src/cli/plugin.ts +3 -2
  153. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +3 -3
  154. package/src/components/AutomationPanel/AutomationPanel.tsx +137 -69
  155. package/src/components/FunctionsPanel/FunctionsPanel.tsx +9 -11
  156. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +9 -10
  157. package/src/components/FunctionsRegistry/index.ts +4 -1
  158. package/src/components/TriggerEditor/FunctionInputEditor.tsx +13 -4
  159. package/src/components/TriggerEditor/SpecSelector.tsx +1 -1
  160. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +46 -4
  161. package/src/components/TriggerEditor/TriggerEditor.tsx +37 -6
  162. package/src/components/index.ts +1 -2
  163. package/src/{components → containers/AutomationSettings}/AutomationSettings.tsx +8 -11
  164. package/src/containers/AutomationSettings/index.ts +7 -0
  165. package/src/{components → containers/FunctionsContainer}/FunctionsContainer.tsx +10 -13
  166. package/src/containers/FunctionsContainer/index.ts +7 -0
  167. package/src/containers/TriggerSettings/TriggerSettings.tsx +26 -0
  168. package/src/containers/TriggerSettings/index.ts +6 -0
  169. package/src/containers/index.ts +9 -0
  170. package/src/hooks/useComputeRuntimeCallback.ts +1 -1
  171. package/src/hooks/useTriggerRuntimeControls.ts +22 -8
  172. package/src/meta.ts +1 -1
  173. package/src/testing/test-functions.ts +5 -5
  174. package/src/translations.ts +2 -0
  175. package/src/types/capabilities.ts +3 -2
  176. package/src/types/events.ts +1 -1
  177. package/src/types/schema.ts +3 -3
  178. package/dist/lib/browser/AutomationPanel-FAS6ADCW.mjs +0 -11
  179. package/dist/lib/browser/AutomationSettings-XN2OIYWL.mjs +0 -56
  180. package/dist/lib/browser/AutomationSettings-XN2OIYWL.mjs.map +0 -7
  181. package/dist/lib/browser/FunctionsContainer-6QLC7JP4.mjs.map +0 -7
  182. package/dist/lib/browser/app-graph-builder-LAQMEBMH.mjs.map +0 -7
  183. package/dist/lib/browser/chunk-54PANILA.mjs +0 -14
  184. package/dist/lib/browser/chunk-54PANILA.mjs.map +0 -7
  185. package/dist/lib/browser/chunk-BFUIVUQH.mjs.map +0 -7
  186. package/dist/lib/browser/chunk-JOXPQ27I.mjs.map +0 -7
  187. package/dist/lib/browser/chunk-QW3EM35H.mjs.map +0 -7
  188. package/dist/lib/browser/chunk-RAF2FJST.mjs.map +0 -7
  189. package/dist/lib/browser/chunk-YWLEY2FD.mjs.map +0 -7
  190. package/dist/lib/browser/compute-runtime-WTWLQ67J.mjs.map +0 -7
  191. package/dist/lib/browser/operation-resolver-Q3MWOR7K.mjs.map +0 -7
  192. package/dist/lib/browser/react-surface-EV3AC62F.mjs +0 -65
  193. package/dist/lib/browser/react-surface-EV3AC62F.mjs.map +0 -7
  194. package/dist/lib/node-esm/AutomationSettings-M5PMZJ6P.mjs +0 -57
  195. package/dist/lib/node-esm/AutomationSettings-M5PMZJ6P.mjs.map +0 -7
  196. package/dist/lib/node-esm/FunctionsContainer-J4O2ULWR.mjs.map +0 -7
  197. package/dist/lib/node-esm/app-graph-builder-4UCMXHYY.mjs.map +0 -7
  198. package/dist/lib/node-esm/chunk-2CKVH7JC.mjs.map +0 -7
  199. package/dist/lib/node-esm/chunk-7QRUPEHH.mjs +0 -16
  200. package/dist/lib/node-esm/chunk-7QRUPEHH.mjs.map +0 -7
  201. package/dist/lib/node-esm/chunk-HQLVREIX.mjs.map +0 -7
  202. package/dist/lib/node-esm/chunk-KWKWOGS5.mjs.map +0 -7
  203. package/dist/lib/node-esm/chunk-LJAXQ6CX.mjs.map +0 -7
  204. package/dist/lib/node-esm/chunk-RX52VKI2.mjs.map +0 -7
  205. package/dist/lib/node-esm/compute-runtime-ZHROOBLY.mjs.map +0 -7
  206. package/dist/lib/node-esm/operation-resolver-R5GA4YNO.mjs.map +0 -7
  207. package/dist/lib/node-esm/react-surface-S6VZJCEZ.mjs.map +0 -7
  208. package/dist/types/src/components/AutomationSettings.d.ts +0 -5
  209. package/dist/types/src/components/AutomationSettings.d.ts.map +0 -1
  210. package/dist/types/src/components/FunctionsContainer.d.ts.map +0 -1
  211. package/dist/types/src/components/TriggerSettings.d.ts.map +0 -1
  212. package/src/components/TriggerSettings.tsx +0 -25
  213. /package/dist/lib/browser/{AutomationPanel-FAS6ADCW.mjs.map → AutomationPanel-GH5TMGD6.mjs.map} +0 -0
  214. /package/dist/lib/browser/{FunctionsPanel-ZX4J75UM.mjs.map → FunctionsPanel-NMA4RYJL.mjs.map} +0 -0
  215. /package/dist/lib/{node-esm/AutomationPanel-B7NAGDFA.mjs.map → browser/FunctionsRegistry-TMKAEG5E.mjs.map} +0 -0
  216. /package/dist/lib/{node-esm/FunctionsPanel-SS6GIVNU.mjs.map → browser/TriggerSettings-56AIMOEC.mjs.map} +0 -0
  217. /package/dist/lib/browser/{chunk-BKFQBKYO.mjs.map → chunk-Z7F7X2C5.mjs.map} +0 -0
  218. /package/dist/lib/node-esm/{chunk-K7GCM342.mjs.map → chunk-R5YEWJCG.mjs.map} +0 -0
  219. /package/dist/types/src/{components → containers/TriggerSettings}/TriggerSettings.d.ts +0 -0
@@ -10,15 +10,14 @@ import { Function } from '@dxos/functions';
10
10
  import { getDeployedFunctions } from '@dxos/functions-runtime/edge';
11
11
  import { useClient } from '@dxos/react-client';
12
12
  import { Filter, Query, type Space, useQuery } from '@dxos/react-client/echo';
13
- import { useAsyncEffect } from '@dxos/react-ui';
14
- import { IconButton, useTranslation } from '@dxos/react-ui';
15
- import { controlItemClasses } from '@dxos/react-ui-form';
13
+ import { IconButton, useAsyncEffect, useTranslation } from '@dxos/react-ui';
14
+ import { Settings } from '@dxos/react-ui-form';
16
15
  import { List } from '@dxos/react-ui-list';
17
16
  import { ghostHover, mx } from '@dxos/ui-theme';
18
17
 
19
18
  import { meta } from '../../meta';
20
19
 
21
- const grid = 'grid grid-cols-[1fr_1fr_auto] min-bs-[2.5rem]';
20
+ const grid = 'grid grid-cols-[1fr_1fr_auto] min-h-[2.5rem]';
22
21
 
23
22
  type FunctionsRegistryProps = {
24
23
  space: Space;
@@ -64,16 +63,16 @@ export const FunctionsRegistry = ({ space }: FunctionsRegistryProps) => {
64
63
  );
65
64
 
66
65
  return (
67
- <div role='none' className={mx(controlItemClasses)}>
66
+ <Settings.Container>
68
67
  {functions.length > 0 && (
69
68
  <List.Root<Function.Function> items={functions} isItem={Schema.is(Function.Function)} getId={(func) => func.id}>
70
69
  {({ items }) => (
71
- <div role='list' className='flex flex-col is-full'>
70
+ <div role='list' className='flex flex-col w-full'>
72
71
  {items?.map((func) => (
73
72
  <List.Item<Function.Function>
74
73
  key={func.id}
75
74
  item={func}
76
- classNames={mx(grid, ghostHover, 'items-center', 'pli-2', 'min-bs-[3rem]')}
75
+ classNames={mx(grid, ghostHover, 'items-center', 'px-2', 'min-h-[3rem]')}
77
76
  >
78
77
  <div className='flex flex-col truncate'>
79
78
  <List.ItemTitle classNames='truncate'>{func.name}</List.ItemTitle>
@@ -103,9 +102,9 @@ export const FunctionsRegistry = ({ space }: FunctionsRegistryProps) => {
103
102
  )}
104
103
 
105
104
  {functions.length === 0 && !loading && (
106
- <div className='text-center plb-4 text-gray-500'>{t('no functions found')}</div>
105
+ <div className='text-center py-4 text-gray-500'>{t('no functions found')}</div>
107
106
  )}
108
- {loading && <div className='text-center plb-4 text-gray-500'>{t('loading functions')}</div>}
109
- </div>
107
+ {loading && <div className='text-center py-4 text-gray-500'>{t('loading functions')}</div>}
108
+ </Settings.Container>
110
109
  );
111
110
  };
@@ -2,4 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export { FunctionsRegistry } from './FunctionsRegistry';
5
+ import { FunctionsRegistry } from './FunctionsRegistry';
6
+
7
+ export { FunctionsRegistry };
8
+ export default FunctionsRegistry;
@@ -5,7 +5,7 @@
5
5
  import type * as SchemaAST from 'effect/SchemaAST';
6
6
  import React, { useCallback, useMemo } from 'react';
7
7
 
8
- import { type Database, Ref, Type } from '@dxos/echo';
8
+ import { type Database, JsonSchema, Obj, Ref } from '@dxos/echo';
9
9
  import { type JsonPath } from '@dxos/echo/internal';
10
10
  import { type Function } from '@dxos/functions';
11
11
  import { useOnTransition, useTranslation } from '@dxos/react-ui';
@@ -48,9 +48,12 @@ export const FunctionInputEditor = ({ type, functions, db, getValue, onValueChan
48
48
  );
49
49
 
50
50
  const inputSchema = useMemo(() => selectedFunction?.inputSchema, [selectedFunction]);
51
- const effectSchema = useMemo(() => (inputSchema ? Type.toEffectSchema(inputSchema) : undefined), [inputSchema]);
51
+ const effectSchema = useMemo(() => (inputSchema ? JsonSchema.toEffectSchema(inputSchema) : undefined), [inputSchema]);
52
52
  const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;
53
- const values = useMemo(() => getValue() ?? {}, [getValue]);
53
+ const defaultValues = useMemo(() => {
54
+ const raw = getValue() ?? {};
55
+ return Obj.isObject(raw) ? { ...Obj.getSnapshot(raw) } : { ...raw };
56
+ }, [getValue]);
54
57
 
55
58
  const handleValuesChanged = useCallback<NonNullable<FormRootProps['onValuesChanged']>>(
56
59
  (values) => {
@@ -66,7 +69,13 @@ export const FunctionInputEditor = ({ type, functions, db, getValue, onValueChan
66
69
  return (
67
70
  <>
68
71
  <Form.Label label={t('function parameters label')} asChild />
69
- <Form.Root schema={effectSchema} values={values} db={db} onValuesChanged={handleValuesChanged}>
72
+ <Form.Root
73
+ key={selectedFunction.id}
74
+ schema={effectSchema}
75
+ defaultValues={defaultValues}
76
+ db={db}
77
+ onValuesChanged={handleValuesChanged}
78
+ >
70
79
  <Form.FieldSet />
71
80
  </Form.Root>
72
81
  </>
@@ -31,7 +31,7 @@ export const SpecSelector = (props: SpecSelectorProps) => {
31
31
  },
32
32
  };
33
33
  case 'queue':
34
- return { kind: 'queue', queue: 'dxn:' };
34
+ return { kind: 'queue', queue: 'dxn:queue:default' };
35
35
  case 'email':
36
36
  return { kind: 'email' };
37
37
  case 'webhook':
@@ -4,6 +4,7 @@
4
4
 
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React, { useState } from 'react';
7
+ import { expect, userEvent, within } from 'storybook/test';
7
8
 
8
9
  import { Filter, Obj, Ref, Tag, Type } from '@dxos/echo';
9
10
  import { Function, Trigger } from '@dxos/functions';
@@ -14,7 +15,7 @@ import { TestSchema, useClientStory, withClientProvider } from '@dxos/react-clie
14
15
  import { useAsyncEffect } from '@dxos/react-ui';
15
16
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
16
17
  import { translations as formTranslations } from '@dxos/react-ui-form';
17
- import { Employer, Organization, Person, Project } from '@dxos/types';
18
+ import { Employer, Organization, Person, Pipeline } from '@dxos/types';
18
19
 
19
20
  import { functions } from '../../testing';
20
21
  import { translations } from '../../translations';
@@ -25,7 +26,7 @@ const types = [
25
26
  // TODO(burdon): Get label from annotation.
26
27
  { value: Organization.Organization.typename, label: 'Organization' },
27
28
  { value: Person.Person.typename, label: 'Person' },
28
- { value: Type.getTypename(Project.Project), label: 'Project' },
29
+ { value: Type.getTypename(Pipeline.Pipeline), label: 'Project' },
29
30
  { value: Employer.Employer.typename, label: 'Employer' },
30
31
  ];
31
32
 
@@ -72,11 +73,11 @@ const DefaultStory = (props: Partial<TriggerEditorProps>) => {
72
73
  };
73
74
 
74
75
  const meta = {
75
- title: 'plugins/plugin-automation/TriggerEditor',
76
+ title: 'plugins/plugin-automation/components/TriggerEditor',
76
77
  component: TriggerEditor as any,
77
78
  render: DefaultStory,
78
79
  decorators: [
79
- withTheme,
80
+ withTheme(),
80
81
  withLayout({ layout: 'column' }),
81
82
  withClientProvider({
82
83
  createIdentity: true,
@@ -122,3 +123,44 @@ export const ReadonlySpec: Story = {
122
123
  readonlySpec: true,
123
124
  },
124
125
  };
126
+
127
+ export const Spec: Story = {
128
+ play: async ({ canvasElement }) => {
129
+ const canvas = within(canvasElement);
130
+ const webhookText = await canvas.findByText('Webhook', {}, { timeout: 10_000 });
131
+ const combobox = webhookText.closest('[role="combobox"]') as HTMLElement;
132
+ await expect(combobox).not.toBeDisabled();
133
+
134
+ // Helper to switch to a kind via keyboard.
135
+ // TODO(wittjosiah): Radix Select in popper mode doesn't close on click.
136
+ // Use keyboard navigation: open, type first letter to jump, Enter to select.
137
+ const selectKind = async (combobox: HTMLElement, firstLetter: string) => {
138
+ combobox.focus();
139
+ await userEvent.keyboard('{Enter}');
140
+ await userEvent.keyboard(firstLetter);
141
+ await userEvent.keyboard('{Enter}');
142
+ };
143
+
144
+ // Timer — should show "Cron" field.
145
+ await selectKind(combobox, 't');
146
+ await expect(canvas.findByLabelText('Cron')).resolves.toBeInTheDocument();
147
+
148
+ // Email — no extra fields; Cron should be gone.
149
+ await selectKind(combobox, 'e');
150
+ await expect(combobox).not.toBeDisabled();
151
+ await expect(canvas.queryByLabelText('Cron')).not.toBeInTheDocument();
152
+
153
+ // Webhook — should show "Method" field.
154
+ await selectKind(combobox, 'w');
155
+ await expect(canvas.findByLabelText('Method')).resolves.toBeInTheDocument();
156
+
157
+ // Subscription — should show query editor.
158
+ await selectKind(combobox, 's');
159
+ await expect(combobox).not.toBeDisabled();
160
+ await expect(canvas.queryByLabelText('Method')).not.toBeInTheDocument();
161
+
162
+ // Queue — should show DXN field (the queue address). DXN is a combobox, not an input, so use getByText.
163
+ await selectKind(combobox, 'q');
164
+ await expect(canvas.findByText('DXN')).resolves.toBeInTheDocument();
165
+ },
166
+ };
@@ -5,7 +5,7 @@
5
5
  import React, { useCallback, useMemo } from 'react';
6
6
 
7
7
  import { ComputeGraph } from '@dxos/conductor';
8
- import { DXN, type Database, type Query } from '@dxos/echo';
8
+ import { DXN, type Database, Entity, Feed, Obj, type Query } from '@dxos/echo';
9
9
  import { Function, Script, Trigger } from '@dxos/functions';
10
10
  import { Filter, Ref, useQuery } from '@dxos/react-client/echo';
11
11
  import { Input } from '@dxos/react-ui';
@@ -43,13 +43,28 @@ export const TriggerEditor = ({ db, types, tags, readonlySpec, trigger, ...formP
43
43
  readonlySpec,
44
44
  });
45
45
 
46
+ const handleValuesChanged = useCallback(
47
+ (newValues: Partial<TriggerFormSchema>) => {
48
+ Obj.change(trigger, (t) => {
49
+ Object.assign(t, newValues);
50
+ });
51
+ },
52
+ [trigger],
53
+ );
54
+
55
+ const defaultValues = useMemo(() => {
56
+ const { id: _, ...values } = trigger;
57
+ return values;
58
+ }, [trigger]);
59
+
46
60
  return (
47
61
  <Form.Root<TriggerFormSchema>
48
62
  {...formProps}
49
63
  schema={omitId(Trigger.Trigger)}
50
- values={trigger}
64
+ defaultValues={defaultValues}
51
65
  db={db}
52
66
  fieldMap={fieldMap}
67
+ onValuesChanged={handleValuesChanged}
53
68
  >
54
69
  <Form.Viewport>
55
70
  <Form.Content>
@@ -70,6 +85,7 @@ const useCustomInputs = ({ db, readonlySpec, types, tags }: UseCustomInputsProps
70
85
  const functions = useQuery(db, Filter.type(Function.Function));
71
86
  const workflows = useQuery(db, Filter.type(ComputeGraph));
72
87
  const scripts = useQuery(db, Filter.type(Script.Script));
88
+ const feeds = useQuery(db, Filter.type(Feed.Feed));
73
89
 
74
90
  return useMemo(
75
91
  (): FormFieldMap => ({
@@ -105,11 +121,14 @@ const useCustomInputs = ({ db, readonlySpec, types, tags }: UseCustomInputsProps
105
121
  },
106
122
 
107
123
  // Spec selector.
108
- ['spec.kind' as const]: (props) => <SpecSelector {...props} readonly={readonlySpec} />,
124
+ 'spec.kind': (props) => <SpecSelector {...props} readonly={readonlySpec} />,
125
+
126
+ // Queue feed selector with parent labels.
127
+ 'spec.queue': (props) => <SelectField {...props} options={getFeedQueueOptions(feeds)} />,
109
128
 
110
129
  // TODO(wittjosiah): Copied from ViewEditor.
111
130
  // Query input editor.
112
- ['spec.query' as const]: (props) => {
131
+ 'spec.query': (props) => {
113
132
  const handleChange = useCallback(
114
133
  (query: Query.Any) => props.onValueChange(props.type, { ast: query.ast }),
115
134
  [props.type, props.onValueChange],
@@ -124,9 +143,9 @@ const useCustomInputs = ({ db, readonlySpec, types, tags }: UseCustomInputsProps
124
143
  },
125
144
 
126
145
  // Function input editor.
127
- ['input' as const]: (props) => <FunctionInputEditor {...props} functions={functions} db={db} />,
146
+ input: (props) => <FunctionInputEditor {...props} functions={functions} db={db} />,
128
147
  }),
129
- [workflows, scripts, functions, readonlySpec],
148
+ [workflows, scripts, functions, feeds, readonlySpec],
130
149
  );
131
150
  };
132
151
 
@@ -138,3 +157,15 @@ const getFunctionOptions = (scripts: Script.Script[], functions: Function.Functi
138
157
  const getLabel = (fn: Function.Function) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
139
158
  return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:echo:@:${fn.id}` }));
140
159
  };
160
+
161
+ const getFeedQueueOptions = (feeds: Feed.Feed[]) => {
162
+ return feeds.flatMap((feed) => {
163
+ const queueDxn = Feed.getQueueDxn(feed);
164
+ if (!queueDxn) {
165
+ return [];
166
+ }
167
+ const parent = Obj.getParent(feed);
168
+ const label = parent ? Entity.getLabel(parent) : Entity.getLabel(feed);
169
+ return [{ label: label ?? feed.id, value: queueDxn.toString() }];
170
+ });
171
+ };
@@ -7,6 +7,5 @@ import { lazy } from 'react';
7
7
  export * from './TriggerEditor';
8
8
 
9
9
  export const AutomationPanel = lazy(() => import('./AutomationPanel'));
10
- export const AutomationSettings = lazy(() => import('./AutomationSettings'));
11
- export const FunctionsContainer = lazy(() => import('./FunctionsContainer'));
12
10
  export const FunctionsPanel = lazy(() => import('./FunctionsPanel'));
11
+ export const FunctionsRegistry = lazy(() => import('./FunctionsRegistry'));
@@ -5,26 +5,23 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { useTranslation } from '@dxos/react-ui';
8
- import { ControlPage, ControlSection } from '@dxos/react-ui-form';
8
+ import { Settings } from '@dxos/react-ui-form';
9
9
 
10
- import { meta } from '../meta';
11
-
12
- import { AutomationPanel, type AutomationPanelProps } from './AutomationPanel';
13
- import { TriggersSettings } from './TriggerSettings';
10
+ import { AutomationPanel, type AutomationPanelProps } from '../../components/AutomationPanel';
11
+ import { meta } from '../../meta';
12
+ import { TriggersSettings } from '../TriggerSettings';
14
13
 
15
14
  export const AutomationSettings = (props: AutomationPanelProps) => {
16
15
  const { t } = useTranslation(meta.id);
17
16
  return (
18
- <ControlPage>
19
- <ControlSection
17
+ <Settings.Root>
18
+ <Settings.Section
20
19
  title={t('automation verbose label', { ns: meta.id })}
21
20
  description={t('automation description', { ns: meta.id })}
22
21
  >
23
22
  <AutomationPanel {...props} />
24
23
  <TriggersSettings db={props.space.db} />
25
- </ControlSection>
26
- </ControlPage>
24
+ </Settings.Section>
25
+ </Settings.Root>
27
26
  );
28
27
  };
29
-
30
- export default AutomationSettings;
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { AutomationSettings } from './AutomationSettings';
6
+
7
+ export default AutomationSettings;
@@ -6,31 +6,28 @@ import React from 'react';
6
6
 
7
7
  import { type Space } from '@dxos/react-client/echo';
8
8
  import { useTranslation } from '@dxos/react-ui';
9
- import { ControlPage, ControlSection } from '@dxos/react-ui-form';
9
+ import { Settings } from '@dxos/react-ui-form';
10
10
 
11
- import { meta } from '../meta';
12
-
13
- import { FunctionsPanel } from './FunctionsPanel';
14
- import { FunctionsRegistry } from './FunctionsRegistry';
11
+ import { FunctionsPanel } from '../../components/FunctionsPanel';
12
+ import { FunctionsRegistry } from '../../components/FunctionsRegistry';
13
+ import { meta } from '../../meta';
15
14
 
16
15
  export const FunctionsContainer = ({ space }: { space: Space }) => {
17
16
  const { t } = useTranslation(meta.id);
18
17
  return (
19
- <ControlPage>
20
- <ControlSection
18
+ <Settings.Root>
19
+ <Settings.Section
21
20
  title={t('functions verbose label', { ns: meta.id })}
22
21
  description={t('functions description', { ns: meta.id })}
23
22
  >
24
23
  <FunctionsPanel space={space} />
25
- </ControlSection>
26
- <ControlSection
24
+ </Settings.Section>
25
+ <Settings.Section
27
26
  title={t('functions registry verbose label', { ns: meta.id })}
28
27
  description={t('functions registry description', { ns: meta.id })}
29
28
  >
30
29
  <FunctionsRegistry space={space} />
31
- </ControlSection>
32
- </ControlPage>
30
+ </Settings.Section>
31
+ </Settings.Root>
33
32
  );
34
33
  };
35
-
36
- export default FunctionsContainer;
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { FunctionsContainer } from './FunctionsContainer';
6
+
7
+ export default FunctionsContainer;
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { type Database } from '@dxos/echo';
8
+ import { Input, useTranslation } from '@dxos/react-ui';
9
+ import { Settings } from '@dxos/react-ui-form';
10
+
11
+ import { useTriggerRuntimeControls } from '../../hooks';
12
+ import { meta } from '../../meta';
13
+
14
+ export const TriggersSettings = ({ db }: { db: Database.Database }) => {
15
+ const { state, start, stop } = useTriggerRuntimeControls(db);
16
+ const isRunning = state?.enabled ?? false;
17
+ const { t } = useTranslation(meta.id);
18
+
19
+ return (
20
+ <div className='grid grid-cols-1 md:grid-cols-[1fr_min-content]'>
21
+ <Settings.ItemInput title={t('runtime label')} description={t('runtime description')}>
22
+ <Input.Switch classNames='justify-self-end' checked={isRunning} onCheckedChange={isRunning ? stop : start} />
23
+ </Settings.ItemInput>
24
+ </div>
25
+ );
26
+ };
@@ -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'));
@@ -7,7 +7,7 @@ import * as Effect from 'effect/Effect';
7
7
  import * as Exit from 'effect/Exit';
8
8
  import { type DependencyList, useCallback } from 'react';
9
9
 
10
- import { useCapability } from '@dxos/app-framework/react';
10
+ import { useCapability } from '@dxos/app-framework/ui';
11
11
  import { type Key } from '@dxos/echo';
12
12
  import { type FunctionDefinition, FunctionInvocationService, TracingService } from '@dxos/functions';
13
13
  import { log } from '@dxos/log';
@@ -2,19 +2,23 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { Atom, useAtomValue } from '@effect-atom/atom-react';
6
+ import type * as Context from 'effect/Context';
5
7
  import * as Effect from 'effect/Effect';
8
+ import { useEffect, useState } from 'react';
6
9
 
7
10
  import { type Database, Filter } from '@dxos/echo';
8
11
  import { Trigger } from '@dxos/functions';
9
- import { TriggerDispatcher } from '@dxos/functions-runtime';
12
+ import { TriggerDispatcher, type TriggerDispatcherState } from '@dxos/functions-runtime';
10
13
  import { useQuery } from '@dxos/react-client/echo';
11
- import { useAsyncState } from '@dxos/react-ui';
12
14
 
13
15
  import { useComputeRuntimeCallback } from './useComputeRuntimeCallback';
14
16
 
15
17
  interface TriggerRuntimeControls {
16
18
  triggers: Trigger.Trigger[];
17
- isRunning: boolean;
19
+
20
+ state: TriggerDispatcherState | undefined;
21
+
18
22
  start: () => void;
19
23
  stop: () => void;
20
24
  }
@@ -22,16 +26,27 @@ interface TriggerRuntimeControls {
22
26
  export const useTriggerRuntimeControls = (db: Database.Database | undefined): TriggerRuntimeControls => {
23
27
  const triggers = useQuery(db, Filter.type(Trigger.Trigger));
24
28
 
25
- const [isRunningState, setIsRunningState] = useAsyncState(
26
- useComputeRuntimeCallback(db?.spaceId, () => TriggerDispatcher.pipe(Effect.map((t) => t.running))),
29
+ const [dispatcher, setDispatcher] = useState<Context.Tag.Service<TriggerDispatcher> | undefined>(undefined);
30
+
31
+ const init = useComputeRuntimeCallback(
32
+ db?.spaceId,
33
+ Effect.fnUntraced(function* () {
34
+ const dispatcher = yield* TriggerDispatcher;
35
+ setDispatcher(dispatcher);
36
+ }),
27
37
  );
28
38
 
39
+ useEffect(() => {
40
+ void init();
41
+ }, []);
42
+
43
+ const state = useAtomValue(dispatcher?.state ?? Atom.make(undefined));
44
+
29
45
  const start = useComputeRuntimeCallback(
30
46
  db?.spaceId,
31
47
  Effect.fnUntraced(function* () {
32
48
  const dispatcher = yield* TriggerDispatcher;
33
49
  yield* dispatcher.start();
34
- setIsRunningState(true);
35
50
  }),
36
51
  );
37
52
 
@@ -40,13 +55,12 @@ export const useTriggerRuntimeControls = (db: Database.Database | undefined): Tr
40
55
  Effect.fnUntraced(function* () {
41
56
  const dispatcher = yield* TriggerDispatcher;
42
57
  yield* dispatcher.stop();
43
- setIsRunningState(false);
44
58
  }),
45
59
  );
46
60
 
47
61
  return {
48
62
  triggers,
49
- isRunning: isRunningState ?? false,
63
+ state,
50
64
  start: () => void start(),
51
65
  stop: () => void stop(),
52
66
  };
package/src/meta.ts CHANGED
@@ -6,7 +6,7 @@ import { type Plugin } from '@dxos/app-framework';
6
6
  import { trim } from '@dxos/util';
7
7
 
8
8
  export const meta: Plugin.Meta = {
9
- id: 'dxos.org/plugin/automation',
9
+ id: 'org.dxos.plugin.automation',
10
10
  name: 'Automation',
11
11
  description: trim`
12
12
  Workflow automation engine that triggers custom actions based on object events and conditions.
@@ -5,13 +5,13 @@
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { TestSchema } from '@dxos/client/testing';
8
- import { Type } from '@dxos/echo';
8
+ import { JsonSchema, Ref } from '@dxos/echo';
9
9
 
10
10
  export const functions = [
11
11
  {
12
12
  name: 'example.com/function/chess',
13
13
  version: '0.1.0',
14
- inputSchema: Type.toJsonSchema(
14
+ inputSchema: JsonSchema.toJsonSchema(
15
15
  Schema.Struct({
16
16
  level: Schema.Number.annotations({
17
17
  title: 'Level',
@@ -23,7 +23,7 @@ export const functions = [
23
23
  name: 'example.com/function/forex',
24
24
  version: '0.1.0',
25
25
  binding: 'FOREX',
26
- inputSchema: Type.toJsonSchema(
26
+ inputSchema: JsonSchema.toJsonSchema(
27
27
  Schema.Struct({
28
28
  from: Schema.String.annotations({ title: 'Currency from' }),
29
29
  to: Schema.String.annotations({ title: 'Currency to' }),
@@ -33,9 +33,9 @@ export const functions = [
33
33
  {
34
34
  name: 'example.com/function/ping-contact',
35
35
  version: '0.0.1',
36
- inputSchema: Type.toJsonSchema(
36
+ inputSchema: JsonSchema.toJsonSchema(
37
37
  Schema.Struct({
38
- contact: Type.Ref(TestSchema.ContactType).annotations({ title: 'Contact' }),
38
+ contact: Ref.Ref(TestSchema.ContactType).annotations({ title: 'Contact' }),
39
39
  }),
40
40
  ),
41
41
  },
@@ -33,6 +33,8 @@ export const translations = [
33
33
  'function parameters label': 'Function parameters',
34
34
 
35
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.',
36
38
  'new trigger label': 'Add Trigger',
37
39
  'trigger type timer': 'Timer',
38
40
  'trigger type webhook': 'Webhook',
@@ -6,7 +6,7 @@ import type * as ManagedRuntime from 'effect/ManagedRuntime';
6
6
 
7
7
  import { type AiService, type ToolExecutionService, type ToolResolverService } from '@dxos/ai';
8
8
  import { Capability } from '@dxos/app-framework';
9
- import { type Database } from '@dxos/echo';
9
+ import { type Database, type Feed } from '@dxos/echo';
10
10
  import type { CredentialsService, FunctionInvocationService, QueueService, TracingService } from '@dxos/functions';
11
11
  import type { TriggerDispatcher, TriggerStateStore } from '@dxos/functions-runtime';
12
12
  import type { SpaceId } from '@dxos/keys';
@@ -22,6 +22,7 @@ export namespace AutomationCapabilities {
22
22
  | TriggerStateStore
23
23
  | AiService.AiService
24
24
  | Database.Service
25
+ | Feed.Service
25
26
  | QueueService
26
27
  | CredentialsService
27
28
  | FunctionInvocationService
@@ -38,5 +39,5 @@ export namespace AutomationCapabilities {
38
39
  /**
39
40
  * Runtime for executing agents, functions, and triggers.
40
41
  */
41
- export const ComputeRuntime = Capability.make<ComputeRuntimeProvider>(`${meta.id}/capability/compute-runtime`);
42
+ export const ComputeRuntime = Capability.make<ComputeRuntimeProvider>(`${meta.id}.capability.compute-runtime`);
42
43
  }
@@ -7,5 +7,5 @@ import { ActivationEvent } from '@dxos/app-framework';
7
7
  import { meta } from '../meta';
8
8
 
9
9
  export namespace AutomationEvents {
10
- export const ComputeRuntimeReady = ActivationEvent.make(`${meta.id}/event/compute-runtime-ready`);
10
+ export const ComputeRuntimeReady = ActivationEvent.make(`${meta.id}.event.compute-runtime-ready`);
11
11
  }
@@ -17,7 +17,7 @@ const TriggerTemplate = Schema.Union(
17
17
 
18
18
  export namespace AutomationAction {
19
19
  export class CreateTriggerFromTemplate extends Schema.TaggedClass<CreateTriggerFromTemplate>()(
20
- `${meta.id}/action/create-trigger-from-template`,
20
+ `${meta.id}.action.create-trigger-from-template`,
21
21
  {
22
22
  input: Schema.Struct({
23
23
  db: Database.Database,
@@ -32,11 +32,11 @@ export namespace AutomationAction {
32
32
  ) {}
33
33
  }
34
34
 
35
- const AUTOMATION_OPERATION = `${meta.id}/operation`;
35
+ const AUTOMATION_OPERATION = `${meta.id}.operation`;
36
36
 
37
37
  export namespace AutomationOperation {
38
38
  export const CreateTriggerFromTemplate = Operation.make({
39
- meta: { key: `${AUTOMATION_OPERATION}/create-trigger-from-template`, name: 'Create Trigger From Template' },
39
+ meta: { key: `${AUTOMATION_OPERATION}.create-trigger-from-template`, name: 'Create Trigger From Template' },
40
40
  services: [Capability.Service],
41
41
  schema: {
42
42
  input: Schema.Struct({
@@ -1,11 +0,0 @@
1
- import {
2
- AutomationPanel,
3
- AutomationPanel_default
4
- } from "./chunk-YWLEY2FD.mjs";
5
- import "./chunk-QW3EM35H.mjs";
6
- import "./chunk-PZNBEKO5.mjs";
7
- export {
8
- AutomationPanel,
9
- AutomationPanel_default as default
10
- };
11
- //# sourceMappingURL=AutomationPanel-FAS6ADCW.mjs.map