@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
@@ -1,30 +1,31 @@
1
1
  import {
2
2
  TriggerEditor
3
- } from "./chunk-QW3EM35H.mjs";
3
+ } from "./chunk-24ZULVVT.mjs";
4
4
  import {
5
5
  meta
6
- } from "./chunk-PZNBEKO5.mjs";
6
+ } from "./chunk-EL64ZPPN.mjs";
7
7
 
8
8
  // src/components/AutomationPanel/AutomationPanel.tsx
9
9
  import * as Array from "effect/Array";
10
10
  import * as EFn from "effect/Function";
11
11
  import * as Match from "effect/Match";
12
12
  import * as Schema from "effect/Schema";
13
- import React, { useMemo, useState } from "react";
13
+ import React, { useCallback, useMemo, useState } from "react";
14
14
  import { Filter, Obj, Tag } from "@dxos/echo";
15
15
  import { Function, Script, Trigger } from "@dxos/functions";
16
+ import { KEY_QUEUE_CURSOR } from "@dxos/functions-runtime";
16
17
  import { FunctionsServiceClient } from "@dxos/functions-runtime/edge";
17
18
  import { useTypeOptions } from "@dxos/plugin-space";
18
19
  import { useClient } from "@dxos/react-client";
19
- import { useQuery } from "@dxos/react-client/echo";
20
+ import { useObject, useQuery } from "@dxos/react-client/echo";
20
21
  import { Clipboard, IconButton, Input, Separator, useTranslation } from "@dxos/react-ui";
21
- import { ControlItem, controlItemClasses } from "@dxos/react-ui-form";
22
+ import { Settings } from "@dxos/react-ui-form";
22
23
  import { List } from "@dxos/react-ui-list";
23
- import { Project } from "@dxos/types";
24
+ import { Pipeline } from "@dxos/types";
24
25
  import { ghostHover, mx } from "@dxos/ui-theme";
25
26
  import { isNonNullable } from "@dxos/util";
26
- var grid = "grid grid-cols-[40px_1fr_32px_32px] min-bs-[2.5rem]";
27
- var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) => {
27
+ var grid = "grid grid-cols-[40px_1fr_32px_32px] min-h-[2.5rem]";
28
+ var AutomationPanel = ({ space, object, initialTrigger, onDone }) => {
28
29
  const { t } = useTranslation(meta.id);
29
30
  const client = useClient();
30
31
  const functionsServiceClient = useMemo(() => FunctionsServiceClient.fromClient(client), [
@@ -48,9 +49,6 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
48
49
  ],
49
50
  kind: [
50
51
  "user"
51
- ],
52
- registered: [
53
- "registered"
54
52
  ]
55
53
  }
56
54
  });
@@ -71,7 +69,9 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
71
69
  };
72
70
  const handleSave = (trigger2) => {
73
71
  if (selected) {
74
- Object.assign(selected, trigger2);
72
+ Obj.change(selected, (mutable) => {
73
+ Object.assign(mutable, trigger2);
74
+ });
75
75
  } else {
76
76
  space.db.add(Trigger.make(trigger2));
77
77
  }
@@ -86,9 +86,18 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
86
86
  const handleForceRunTrigger = async (trigger2) => {
87
87
  await functionsServiceClient.forceRunCronTrigger(space.id, trigger2.id);
88
88
  };
89
+ const handleResetCursor = async (trigger2) => {
90
+ Obj.change(trigger2, (t2) => {
91
+ Obj.deleteKeys(t2, KEY_QUEUE_CURSOR);
92
+ });
93
+ await space.db.flush({
94
+ indexes: true
95
+ });
96
+ };
89
97
  if (trigger) {
90
- return /* @__PURE__ */ React.createElement(ControlItem, {
91
- title: t("trigger editor title")
98
+ return /* @__PURE__ */ React.createElement(Settings.Item, {
99
+ title: t("trigger editor title"),
100
+ description: t("trigger editor description")
92
101
  }, /* @__PURE__ */ React.createElement(TriggerEditor, {
93
102
  db: space.db,
94
103
  trigger,
@@ -99,51 +108,111 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
99
108
  onCancel: handleCancel
100
109
  }));
101
110
  }
102
- return /* @__PURE__ */ React.createElement("div", {
103
- className: mx(controlItemClasses, classNames)
104
- }, filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
111
+ return /* @__PURE__ */ React.createElement(Settings.Container, null, filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
105
112
  items: filteredTriggers,
106
113
  isItem: Schema.is(Trigger.Trigger),
107
114
  getId: (field) => field.id
108
115
  }, ({ items: filteredTriggers2 }) => /* @__PURE__ */ React.createElement("div", {
109
116
  role: "list",
110
- className: "flex flex-col is-full"
111
- }, filteredTriggers2?.map((trigger2) => {
112
- const copyAction = getCopyAction(client, trigger2);
113
- return /* @__PURE__ */ React.createElement(List.Item, {
114
- key: trigger2.id,
115
- item: trigger2,
116
- classNames: mx(grid, ghostHover, "items-center", "pli-2")
117
- }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
118
- checked: trigger2.enabled,
119
- onCheckedChange: (checked) => Obj.change(trigger2, (t2) => {
120
- t2.enabled = checked;
121
- })
122
- })), /* @__PURE__ */ React.createElement("div", {
123
- className: "flex"
124
- }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
125
- classNames: "pli-1 cursor-pointer is-0 shrink truncate",
126
- onClick: () => handleSelect(trigger2)
127
- }, getFunctionName(functions, trigger2) ?? "\u2205"), copyAction && /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
128
- label: t(copyAction.translationKey),
129
- value: copyAction.contentProvider()
130
- })), /* @__PURE__ */ React.createElement(List.ItemButton, {
131
- autoHide: false,
132
- disabled: !trigger2.enabled || trigger2.spec?.kind !== "timer",
133
- icon: "ph--play--regular",
134
- label: "Force run",
135
- onClick: () => handleForceRunTrigger(trigger2)
136
- }), /* @__PURE__ */ React.createElement(List.ItemDeleteButton, {
137
- onClick: () => handleDelete(trigger2)
138
- }));
139
- }))), filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(Separator, {
140
- classNames: "mlb-4"
117
+ className: "flex flex-col w-full"
118
+ }, filteredTriggers2?.map((trigger2) => /* @__PURE__ */ React.createElement(TriggerListItem, {
119
+ key: trigger2.id,
120
+ trigger: trigger2,
121
+ functions,
122
+ onSelect: handleSelect,
123
+ onDelete: handleDelete,
124
+ onResetCursor: handleResetCursor,
125
+ onForceRun: handleForceRunTrigger
126
+ })))), filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(Separator, {
127
+ classNames: "my-4"
141
128
  }), /* @__PURE__ */ React.createElement(IconButton, {
142
129
  icon: "ph--plus--regular",
143
130
  label: t("new trigger label"),
144
131
  onClick: handleAdd
145
132
  }));
146
133
  };
134
+ var TriggerListItem = ({ trigger, functions, onSelect, onDelete, onResetCursor, onForceRun }) => {
135
+ const client = useClient();
136
+ const copyAction = getCopyAction(client, trigger);
137
+ const { t } = useTranslation(meta.id);
138
+ const cursor = Obj.getKeys(trigger, KEY_QUEUE_CURSOR).at(0)?.id;
139
+ const [snapshot, updateTrigger] = useObject(trigger);
140
+ const enabled = snapshot.enabled ?? false;
141
+ const onEnabledChange = (checked) => {
142
+ updateTrigger((trigger2) => {
143
+ trigger2.enabled = checked;
144
+ });
145
+ };
146
+ const handleSelect = useCallback(() => {
147
+ onSelect?.(trigger);
148
+ }, [
149
+ onSelect,
150
+ trigger
151
+ ]);
152
+ const handleDelete = useCallback(() => {
153
+ onDelete?.(trigger);
154
+ }, [
155
+ onDelete,
156
+ trigger
157
+ ]);
158
+ const handleResetCursor = useCallback(() => {
159
+ onResetCursor?.(trigger);
160
+ }, [
161
+ onResetCursor,
162
+ trigger
163
+ ]);
164
+ const handleForceRun = useCallback(() => {
165
+ onForceRun?.(trigger);
166
+ }, [
167
+ onForceRun,
168
+ trigger
169
+ ]);
170
+ const actionProps = useMemo(() => {
171
+ if (trigger.spec?.kind === "timer" && onForceRun) {
172
+ return {
173
+ disabled: !enabled || trigger.spec?.kind !== "timer",
174
+ icon: "ph--play--regular",
175
+ label: "Force run",
176
+ onClick: handleForceRun
177
+ };
178
+ }
179
+ if (trigger.spec?.kind === "queue" && onResetCursor) {
180
+ return {
181
+ disabled: !cursor,
182
+ icon: "ph--arrow-clockwise--regular",
183
+ label: "Reset cursor",
184
+ onClick: handleResetCursor
185
+ };
186
+ }
187
+ }, [
188
+ enabled,
189
+ trigger.spec?.kind,
190
+ handleForceRun
191
+ ]);
192
+ return /* @__PURE__ */ React.createElement(List.Item, {
193
+ key: trigger.id,
194
+ item: snapshot,
195
+ classNames: mx(grid, ghostHover, "items-center", "px-2")
196
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
197
+ checked: enabled,
198
+ onCheckedChange: onEnabledChange
199
+ })), /* @__PURE__ */ React.createElement("div", {
200
+ className: "flex"
201
+ }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
202
+ classNames: "px-1 cursor-pointer w-0 shrink truncate",
203
+ onClick: handleSelect
204
+ }, getFunctionName(functions, trigger) ?? "\u2205", cursor && /* @__PURE__ */ React.createElement("div", {
205
+ className: "text-xs text-description truncate ml-4"
206
+ }, "Position: ", cursor)), copyAction && /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
207
+ label: t(copyAction.translationKey),
208
+ value: copyAction.contentProvider()
209
+ })), actionProps ? /* @__PURE__ */ React.createElement(List.ItemButton, {
210
+ ...actionProps,
211
+ autoHide: false
212
+ }) : /* @__PURE__ */ React.createElement("div", null), onDelete && /* @__PURE__ */ React.createElement(List.ItemDeleteButton, {
213
+ onClick: handleDelete
214
+ }));
215
+ };
147
216
  var getCopyAction = (client, trigger) => {
148
217
  if (trigger?.spec?.kind === "email") {
149
218
  return {
@@ -188,7 +257,7 @@ var projectMatch = (project) => {
188
257
  return viewQueries.some((query) => JSON.stringify(spec.query) === query);
189
258
  };
190
259
  };
191
- var triggerMatch = Match.type().pipe(Match.withReturnType(), Match.when((obj) => Obj.instanceOf(Script.Script, obj), (obj) => scriptMatch(obj)), Match.when((obj) => Obj.instanceOf(Project.Project, obj), (obj) => projectMatch(obj)), Match.orElse((_obj) => () => true));
260
+ var triggerMatch = Match.type().pipe(Match.withReturnType(), Match.when((obj) => Obj.instanceOf(Script.Script, obj), (obj) => scriptMatch(obj)), Match.when((obj) => Obj.instanceOf(Pipeline.Pipeline, obj), (obj) => projectMatch(obj)), Match.orElse((_obj) => () => true));
192
261
 
193
262
  // src/components/AutomationPanel/index.ts
194
263
  var AutomationPanel_default = AutomationPanel;
@@ -197,4 +266,4 @@ export {
197
266
  AutomationPanel,
198
267
  AutomationPanel_default
199
268
  };
200
- //# sourceMappingURL=chunk-YWLEY2FD.mjs.map
269
+ //# sourceMappingURL=chunk-7HT7OLB5.mjs.map
@@ -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, type IconButtonProps, 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-h-[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 },\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')} description={t('trigger editor description')}>\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 w-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='my-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 const actionProps = useMemo<IconButtonProps | undefined>(() => {\n if (trigger.spec?.kind === 'timer' && onForceRun) {\n return {\n disabled: !enabled || trigger.spec?.kind !== 'timer',\n icon: 'ph--play--regular',\n label: 'Force run',\n onClick: handleForceRun,\n };\n }\n\n if (trigger.spec?.kind === 'queue' && onResetCursor) {\n return {\n disabled: !cursor,\n icon: 'ph--arrow-clockwise--regular',\n label: 'Reset cursor',\n onClick: handleResetCursor,\n };\n }\n }, [enabled, trigger.spec?.kind, handleForceRun]);\n\n return (\n <List.Item<Obj.Snapshot<Trigger.Trigger>>\n key={trigger.id}\n item={snapshot}\n classNames={mx(grid, ghostHover, 'items-center', 'px-2')}\n >\n <Input.Root>\n <Input.Switch checked={enabled} onCheckedChange={onEnabledChange} />\n </Input.Root>\n\n <div className={'flex'}>\n <List.ItemTitle classNames='px-1 cursor-pointer w-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 {actionProps ? <List.ItemButton {...actionProps} autoHide={false} /> : <div />}\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": ";;;;;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,SAAS;AACrB,YAAYC,WAAW;AACvB,YAAYC,YAAY;AACxB,OAAOC,SAASC,aAAaC,SAASC,gBAAgB;AAEtD,SAASC,QAAQC,KAAKC,WAAW;AACjC,SAASC,UAAUC,QAAQC,eAAe;AAC1C,SAASC,wBAAwB;AACjC,SAASC,8BAA8B;AACvC,SAASC,sBAAsB;AAC/B,SAAsBC,iBAAiB;AACvC,SAAqBC,WAAWC,gBAAgB;AAChD,SAASC,WAAWC,YAAkCC,OAAOC,WAAWC,sBAAsB;AAC9F,SAASC,gBAAgB;AACzB,SAASC,YAAY;AACrB,SAASC,gBAAgB;AACzB,SAASC,YAAYC,UAAU;AAC/B,SAASC,qBAAqB;AAK9B,IAAMC,OAAO;AAUN,IAAMC,kBAAkB,CAAC,EAAEC,OAAOC,QAAQC,gBAAgBC,OAAM,MAAwB;AAC7F,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,QAAMC,SAASC,UAAAA;AACf,QAAMC,yBAAyBC,QAAQ,MAAMC,uBAAuBC,WAAWL,MAAAA,GAAS;IAACA;GAAO;AAChG,QAAMM,YAAYC,SAASf,MAAMgB,IAAIC,OAAOC,KAAKC,SAASA,QAAQ,CAAA;AAClE,QAAMC,WAAWL,SAASf,MAAMgB,IAAIC,OAAOC,KAAKG,QAAQA,OAAO,CAAA;AAC/D,QAAMC,mBAAmBX,QAAQ,MAAA;AAC/B,WAAOV,SAASmB,SAASG,OAAOC,aAAavB,MAAAA,CAAAA,IAAWmB;EAC1D,GAAG;IAACnB;IAAQmB;GAAS;AACrB,QAAMK,OAAOV,SAASf,MAAMgB,IAAIC,OAAOC,KAAKQ,IAAIA,GAAG,CAAA;AACnD,QAAMC,QAAQC,eAAe;IAC3B5B;IACA6B,YAAY;MACVC,UAAU;QAAC;QAAY;;MACvBC,MAAM;QAAC;;IACT;EACF,CAAA;AAEA,QAAM,CAACC,SAASC,UAAAA,IAAcC,SAAsChC,cAAAA;AACpE,QAAM,CAACiC,UAAUC,WAAAA,IAAeF,SAAAA;AAEhC,QAAMG,eAAe,CAACL,aAAAA;AACpBC,eAAWD,QAAAA;AACXI,gBAAYJ,QAAAA;EACd;AAEA,QAAMM,YAAY,MAAA;AAChBL,eAAWZ,QAAQkB,KAAK,CAAC,CAAA,CAAA;AACzBH,gBAAYI,MAAAA;EACd;AAEA,QAAMC,eAAe,CAACT,aAAAA;AACpBhC,UAAMgB,GAAG0B,OAAOV,QAAAA;AAChBC,eAAWO,MAAAA;AACXJ,gBAAYI,MAAAA;EACd;AAEA,QAAMG,aAA2C,CAACX,aAAAA;AAChD,QAAIG,UAAU;AACZS,UAAIC,OAAOV,UAAU,CAACW,YAAAA;AACpBC,eAAOC,OAAOF,SAASd,QAAAA;MACzB,CAAA;IACF,OAAO;AACLhC,YAAMgB,GAAGiC,IAAI5B,QAAQkB,KAAKP,QAAAA,CAAAA;IAC5B;AAEAC,eAAWO,MAAAA;AACXJ,gBAAYI,MAAAA;AACZrC,aAAAA;EACF;AAEA,QAAM+C,eAA+C,MAAA;AACnDjB,eAAWO,MAAAA;AACXrC,aAAAA;EACF;AAEA,QAAMgD,wBAAwB,OAAOnB,aAAAA;AACnC,UAAMtB,uBAAuB0C,oBAAoBpD,MAAMO,IAAIyB,SAAQzB,EAAE;EACvE;AAEA,QAAM8C,oBAAoB,OAAOrB,aAAAA;AAC/BY,QAAIC,OAAOb,UAAS,CAAC5B,OAAAA;AACnBwC,UAAIU,WAAWlD,IAAGmD,gBAAAA;IACpB,CAAA;AACA,UAAMvD,MAAMgB,GAAGwC,MAAM;MAAEC,SAAS;IAAK,CAAA;EACvC;AAEA,MAAIzB,SAAS;AACX,WACE,sBAAA,cAAC0B,SAASC,MAAI;MAACC,OAAOxD,EAAE,sBAAA;MAAyByD,aAAazD,EAAE,4BAAA;OAC9D,sBAAA,cAAC0D,eAAAA;MACC9C,IAAIhB,MAAMgB;MACVgB;MACA+B,cAAcC,QAAQ/D,MAAAA;MACtBwB;MACAE;MACAsC,QAAQtB;MACRuB,UAAUhB;;EAIlB;AAEA,SACE,sBAAA,cAACQ,SAASS,WAAS,MAChB7C,iBAAiB8C,SAAS,KACzB,sBAAA,cAACC,KAAKC,MAAI;IACRC,OAAOjD;IACPkD,QAAeC,UAAGpD,QAAQA,OAAO;IACjCqD,OAAO,CAACC,UAAUA,MAAMpE;KAEvB,CAAC,EAAEgE,OAAOjD,kBAAgB,MACzB,sBAAA,cAACsD,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACxBxD,mBAAkByD,IAAI,CAAC/C,aACtB,sBAAA,cAACgD,iBAAAA;IACCC,KAAKjD,SAAQzB;IACbyB,SAASA;IACTlB;IACAoE,UAAU7C;IACV8C,UAAU1C;IACV2C,eAAe/B;IACfgC,YAAYlC;SAQvB7B,iBAAiB8C,SAAS,KAAK,sBAAA,cAACkB,WAAAA;IAAUC,YAAW;MACtD,sBAAA,cAACC,YAAAA;IAAWC,MAAK;IAAoBC,OAAOtF,EAAE,mBAAA;IAAsBuF,SAASrD;;AAGnF;AAEA,IAAM0C,kBAAkB,CAAC,EACvBhD,SACAlB,WACAoE,UACAC,UACAC,eACAC,WAAU,MAQX;AACC,QAAM7E,SAASC,UAAAA;AACf,QAAMmF,aAAaC,cAAcrF,QAAQwB,OAAAA;AACzC,QAAM,EAAE5B,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,QAAMuF,SAASlD,IAAImD,QAAQ/D,SAASuB,gBAAAA,EAAkByC,GAAG,CAAA,GAAIzF;AAC7D,QAAM,CAAC0F,UAAUC,aAAAA,IAAiBC,UAAUnE,OAAAA;AAE5C,QAAMoE,UAAUH,SAASG,WAAW;AACpC,QAAMC,kBAAkB,CAACC,YAAAA;AACvBJ,kBAAc,CAAClE,aAAAA;AACbA,MAAAA,SAAQoE,UAAUE;IACpB,CAAA;EACF;AAEA,QAAMjE,eAAekE,YAAY,MAAA;AAC/BrB,eAAWlD,OAAAA;EACb,GAAG;IAACkD;IAAUlD;GAAQ;AAEtB,QAAMS,eAAe8D,YAAY,MAAA;AAC/BpB,eAAWnD,OAAAA;EACb,GAAG;IAACmD;IAAUnD;GAAQ;AAEtB,QAAMqB,oBAAoBkD,YAAY,MAAA;AACpCnB,oBAAgBpD,OAAAA;EAClB,GAAG;IAACoD;IAAepD;GAAQ;AAE3B,QAAMwE,iBAAiBD,YAAY,MAAA;AACjClB,iBAAarD,OAAAA;EACf,GAAG;IAACqD;IAAYrD;GAAQ;AAExB,QAAMyE,cAAc9F,QAAqC,MAAA;AACvD,QAAIqB,QAAQ0E,MAAM3E,SAAS,WAAWsD,YAAY;AAChD,aAAO;QACLsB,UAAU,CAACP,WAAWpE,QAAQ0E,MAAM3E,SAAS;QAC7C0D,MAAM;QACNC,OAAO;QACPC,SAASa;MACX;IACF;AAEA,QAAIxE,QAAQ0E,MAAM3E,SAAS,WAAWqD,eAAe;AACnD,aAAO;QACLuB,UAAU,CAACb;QACXL,MAAM;QACNC,OAAO;QACPC,SAAStC;MACX;IACF;EACF,GAAG;IAAC+C;IAASpE,QAAQ0E,MAAM3E;IAAMyE;GAAe;AAEhD,SACE,sBAAA,cAACnC,KAAKV,MAAI;IACRsB,KAAKjD,QAAQzB;IACbqG,MAAMX;IACNV,YAAYsB,GAAG/G,MAAMgH,YAAY,gBAAgB,MAAA;KAEjD,sBAAA,cAACC,MAAMzC,MAAI,MACT,sBAAA,cAACyC,MAAMC,QAAM;IAACV,SAASF;IAASa,iBAAiBZ;OAGnD,sBAAA,cAACzB,OAAAA;IAAIE,WAAW;KACd,sBAAA,cAACT,KAAK6C,WAAS;IAAC3B,YAAW;IAA0CI,SAAStD;KAC3E8E,gBAAgBrG,WAAWkB,OAAAA,KAAY,UACvC8D,UAAU,sBAAA,cAAClB,OAAAA;IAAIE,WAAU;KAAyC,cAAWgB,MAAAA,CAAAA,GAG/EF,cACC,sBAAA,cAACwB,UAAU5B,YAAU;IAACE,OAAOtF,EAAEwF,WAAWyB,cAAc;IAAGC,OAAO1B,WAAW2B,gBAAe;OAI/Fd,cAAc,sBAAA,cAACpC,KAAKmD,YAAU;IAAE,GAAGf;IAAagB,UAAU;OAAY,sBAAA,cAAC7C,OAAAA,IAAAA,GAEvEO,YAAY,sBAAA,cAACd,KAAKqD,kBAAgB;IAAC/B,SAASlD;;AAGnD;AAEA,IAAMoD,gBAAgB,CAACrF,QAAgBwB,YAAAA;AACrC,MAAIA,SAAS0E,MAAM3E,SAAS,SAAS;AACnC,WAAO;MACLsF,gBAAgB;MAChBE,iBAAiB,MAAM,GAAG3E,IAAI+E,YAAY3F,OAAAA,EAAU4F,OAAO;IAC7D;EACF;AAEA,MAAI5F,SAAS0E,MAAM3E,SAAS,WAAW;AACrC,WAAO;MACLsF,gBAAgB;MAChBE,iBAAiB,MAAMM,cAAcrH,QAAQwB,OAAAA;IAC/C;EACF;AAEA,SAAOQ;AACT;AAEA,IAAMqF,gBAAgB,CAACrH,QAAgBwB,YAAAA;AACrC,QAAM4F,UAAUhF,IAAI+E,YAAY3F,OAAAA,EAAU4F;AAC1C,QAAME,UAAU,IAAIC,IAAIvH,OAAOwH,OAAOC,OAAOC,QAASC,SAAUC,KAAMC,GAAG;AACzE,QAAMC,WAAWR,QAAQS,SAASC,WAAW,OAAA,KAAYV,QAAQS,SAASC,WAAW,KAAA;AACrFV,UAAQS,WAAWD,WAAW,UAAU;AACxC,SAAO,IAAIP,IAAI,YAAYH,OAAAA,IAAW5F,QAAQzB,EAAE,IAAIuH,OAAAA,EAASW,SAAQ;AACvE;AAEA,IAAMtB,kBAAkB,CAACrG,WAAgCkB,YAAAA;AAGvD,QAAM0G,UAAU1G,QAAQ2G,YAAY,GAAG3G,QAAQ2G,SAASC,IAAIH,SAAQ,EAAGI,MAAM,GAAG,EAAA,CAAA;AAChF,QAAMC,iBAAiBhI,UAAUiI,KAAK,CAACC,OAAOA,OAAOhH,QAAQ2G,UAAUM,MAAAA;AACvE,SAAOH,gBAAgBI,QAAQR;AACjC;AAEA,IAAMS,cAAc,CAACC,WAA0B,CAACpH,YAAAA;AAC9C,QAAMgH,KAAKhH,QAAQ2G,UAAUM;AAC7B,MAAI,CAACrG,IAAIyG,WAAWlI,SAASA,UAAU6H,EAAAA,GAAK;AAC1C,WAAO;EACT;AAEA,SAAOA,GAAGM,QAAQL,WAAWG;AAC/B;AAEA,IAAMG,eAAe,CAACC,YAAAA;AACpB,QAAMC,cAAkBC,SACtBF,QAAQG,SACF5E,UAAI,CAAC6E,WAAWA,OAAOC,KAAKZ,MAAM,GAClC1H,aAAOuI,aAAAA,GACP/E,UAAI,CAAC8E,SAASjH,IAAImH,YAAYF,IAAAA,EAAMG,MAAMC,GAAG,GAC7ClF,UAAI,CAACkF,QAAQC,KAAKC,UAAUF,GAAAA,CAAAA,CAAAA;AAGpC,SAAO,CAACjI,YAAAA;AACN,UAAM0E,OAAO9D,IAAImH,YAAY/H,OAAAA,EAAS0E;AACtC,QAAIA,MAAM3E,SAAS,gBAAgB;AACjC,aAAO;IACT;AAGA,WAAO0H,YAAYW,KAAK,CAACJ,UAAUE,KAAKC,UAAUzD,KAAKsD,KAAK,MAAMA,KAAAA;EACpE;AACF;AAEA,IAAMxI,eAAqBN,WAAI,EAAgBwI,KACvCW,qBAAc,GACdC,WACJ,CAACC,QAAQ3H,IAAIyG,WAAWmB,OAAOA,QAAQD,GAAAA,GACvC,CAACA,QAAQpB,YAAYoB,GAAAA,CAAAA,GAEjBD,WACJ,CAACC,QAAQ3H,IAAIyG,WAAWoB,SAASA,UAAUF,GAAAA,GAC3C,CAACA,QAAQhB,aAAagB,GAAAA,CAAAA,GAElBG,aAAO,CAACC,SAAS,MAAM,IAAA,CAAA;;;ACrT/B,IAAA,0BAAeC;",
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", "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", "description", "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", "actionProps", "spec", "disabled", "item", "mx", "ghostHover", "Input", "Switch", "onCheckedChange", "ItemTitle", "getFunctionName", "Clipboard", "translationKey", "value", "contentProvider", "ItemButton", "autoHide", "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,7 +1,7 @@
1
1
  // src/meta.ts
2
2
  import { trim } from "@dxos/util";
3
3
  var meta = {
4
- id: "dxos.org/plugin/automation",
4
+ id: "org.dxos.plugin.automation",
5
5
  name: "Automation",
6
6
  description: trim`
7
7
  Workflow automation engine that triggers custom actions based on object events and conditions.
@@ -14,4 +14,4 @@ var meta = {
14
14
  export {
15
15
  meta
16
16
  };
17
- //# sourceMappingURL=chunk-PZNBEKO5.mjs.map
17
+ //# sourceMappingURL=chunk-EL64ZPPN.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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"],
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: 'org.dxos.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
5
  "mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,QAAQ;AACV;",
6
6
  "names": ["trim", "meta", "id", "name", "description", "trim", "icon", "source"]
7
7
  }
@@ -1,14 +1,6 @@
1
- import {
2
- FunctionsPanel
3
- } from "./chunk-BFUIVUQH.mjs";
4
1
  import {
5
2
  meta
6
- } from "./chunk-PZNBEKO5.mjs";
7
-
8
- // src/components/FunctionsContainer.tsx
9
- import React2 from "react";
10
- import { useTranslation as useTranslation2 } from "@dxos/react-ui";
11
- import { ControlPage, ControlSection } from "@dxos/react-ui-form";
3
+ } from "./chunk-EL64ZPPN.mjs";
12
4
 
13
5
  // src/components/FunctionsRegistry/FunctionsRegistry.tsx
14
6
  import * as Schema from "effect/Schema";
@@ -18,12 +10,11 @@ import { Function } from "@dxos/functions";
18
10
  import { getDeployedFunctions } from "@dxos/functions-runtime/edge";
19
11
  import { useClient } from "@dxos/react-client";
20
12
  import { Filter, Query, useQuery } from "@dxos/react-client/echo";
21
- import { useAsyncEffect } from "@dxos/react-ui";
22
- import { IconButton, useTranslation } from "@dxos/react-ui";
23
- import { controlItemClasses } from "@dxos/react-ui-form";
13
+ import { IconButton, useAsyncEffect, useTranslation } from "@dxos/react-ui";
14
+ import { Settings } from "@dxos/react-ui-form";
24
15
  import { List } from "@dxos/react-ui-list";
25
16
  import { ghostHover, mx } from "@dxos/ui-theme";
26
- var grid = "grid grid-cols-[1fr_1fr_auto] min-bs-[2.5rem]";
17
+ var grid = "grid grid-cols-[1fr_1fr_auto] min-h-[2.5rem]";
27
18
  var FunctionsRegistry = ({ space }) => {
28
19
  const client = useClient();
29
20
  const [loading, setLoading] = useState(true);
@@ -59,20 +50,17 @@ var FunctionsRegistry = ({ space }) => {
59
50
  }, [
60
51
  space
61
52
  ]);
62
- return /* @__PURE__ */ React.createElement("div", {
63
- role: "none",
64
- className: mx(controlItemClasses)
65
- }, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
53
+ return /* @__PURE__ */ React.createElement(Settings.Container, null, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
66
54
  items: functions,
67
55
  isItem: Schema.is(Function.Function),
68
56
  getId: (func) => func.id
69
57
  }, ({ items }) => /* @__PURE__ */ React.createElement("div", {
70
58
  role: "list",
71
- className: "flex flex-col is-full"
59
+ className: "flex flex-col w-full"
72
60
  }, items?.map((func) => /* @__PURE__ */ React.createElement(List.Item, {
73
61
  key: func.id,
74
62
  item: func,
75
- classNames: mx(grid, ghostHover, "items-center", "pli-2", "min-bs-[3rem]")
63
+ classNames: mx(grid, ghostHover, "items-center", "px-2", "min-h-[3rem]")
76
64
  }, /* @__PURE__ */ React.createElement("div", {
77
65
  className: "flex flex-col truncate"
78
66
  }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
@@ -92,38 +80,17 @@ var FunctionsRegistry = ({ space }) => {
92
80
  disabled: state(func) === "none",
93
81
  onClick: () => hanleImportOrUpdate(func)
94
82
  }))))), functions.length === 0 && !loading && /* @__PURE__ */ React.createElement("div", {
95
- className: "text-center plb-4 text-gray-500"
83
+ className: "text-center py-4 text-gray-500"
96
84
  }, t("no functions found")), loading && /* @__PURE__ */ React.createElement("div", {
97
- className: "text-center plb-4 text-gray-500"
85
+ className: "text-center py-4 text-gray-500"
98
86
  }, t("loading functions")));
99
87
  };
100
88
 
101
- // src/components/FunctionsContainer.tsx
102
- var FunctionsContainer = ({ space }) => {
103
- const { t } = useTranslation2(meta.id);
104
- return /* @__PURE__ */ React2.createElement(ControlPage, null, /* @__PURE__ */ React2.createElement(ControlSection, {
105
- title: t("functions verbose label", {
106
- ns: meta.id
107
- }),
108
- description: t("functions description", {
109
- ns: meta.id
110
- })
111
- }, /* @__PURE__ */ React2.createElement(FunctionsPanel, {
112
- space
113
- })), /* @__PURE__ */ React2.createElement(ControlSection, {
114
- title: t("functions registry verbose label", {
115
- ns: meta.id
116
- }),
117
- description: t("functions registry description", {
118
- ns: meta.id
119
- })
120
- }, /* @__PURE__ */ React2.createElement(FunctionsRegistry, {
121
- space
122
- })));
123
- };
124
- var FunctionsContainer_default = FunctionsContainer;
89
+ // src/components/FunctionsRegistry/index.ts
90
+ var FunctionsRegistry_default = FunctionsRegistry;
91
+
125
92
  export {
126
- FunctionsContainer,
127
- FunctionsContainer_default as default
93
+ FunctionsRegistry,
94
+ FunctionsRegistry_default
128
95
  };
129
- //# sourceMappingURL=FunctionsContainer-6QLC7JP4.mjs.map
96
+ //# sourceMappingURL=chunk-FUVAC5EC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/FunctionsRegistry/FunctionsRegistry.tsx", "../../../src/components/FunctionsRegistry/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport { useState } from 'react';\nimport React, { useCallback } from 'react';\n\nimport { Function } from '@dxos/functions';\nimport { getDeployedFunctions } from '@dxos/functions-runtime/edge';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, Query, type Space, useQuery } from '@dxos/react-client/echo';\nimport { IconButton, useAsyncEffect, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\n\nconst grid = 'grid grid-cols-[1fr_1fr_auto] min-h-[2.5rem]';\n\ntype FunctionsRegistryProps = {\n space: Space;\n};\n\nexport const FunctionsRegistry = ({ space }: FunctionsRegistryProps) => {\n const client = useClient();\n const [loading, setLoading] = useState(true);\n const [functions, setFunctions] = useState<Function.Function[]>([]);\n const { t } = useTranslation(meta.id);\n\n const dbFunctions = useQuery(space.db, Filter.type(Function.Function));\n\n const state = (func: Function.Function) => {\n const dbFunction = dbFunctions.find((f) => f.key === func.key);\n if (!dbFunction) {\n return 'import';\n }\n if (dbFunction.version === func.version && dbFunction.updated === func.updated) {\n return 'none';\n }\n return 'update';\n };\n\n useAsyncEffect(async () => {\n setLoading(true);\n const functions = await getDeployedFunctions(client, true);\n setFunctions(functions);\n setLoading(false);\n }, []);\n\n const hanleImportOrUpdate = useCallback(\n async (func: Function.Function) => {\n const functions = await space.db.query(Query.type(Function.Function, { key: func.key })).run();\n const [existingFunc] = functions;\n if (!existingFunc) {\n space.db.add(func);\n return;\n }\n Function.setFrom(existingFunc, func);\n },\n [space],\n );\n\n return (\n <Settings.Container>\n {functions.length > 0 && (\n <List.Root<Function.Function> items={functions} isItem={Schema.is(Function.Function)} getId={(func) => func.id}>\n {({ items }) => (\n <div role='list' className='flex flex-col w-full'>\n {items?.map((func) => (\n <List.Item<Function.Function>\n key={func.id}\n item={func}\n classNames={mx(grid, ghostHover, 'items-center', 'px-2', 'min-h-[3rem]')}\n >\n <div className='flex flex-col truncate'>\n <List.ItemTitle classNames='truncate'>{func.name}</List.ItemTitle>\n <div className='text-xs text-description truncate'>{func.key}</div>\n </div>\n <div className='flex flex-col truncate'>\n <div className='text-xs text-description truncate'>{func.version}</div>\n <div className='text-xs text-description truncate'>\n {func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : ''}\n </div>\n </div>\n\n <IconButton\n iconOnly\n icon={state(func) === 'update' ? 'ph--arrows-clockwise--regular' : 'ph--download--regular'}\n label={\n state(func) === 'update' ? t('update function button label') : t('import function button label')\n }\n disabled={state(func) === 'none'}\n onClick={() => hanleImportOrUpdate(func)}\n />\n </List.Item>\n ))}\n </div>\n )}\n </List.Root>\n )}\n\n {functions.length === 0 && !loading && (\n <div className='text-center py-4 text-gray-500'>{t('no functions found')}</div>\n )}\n {loading && <div className='text-center py-4 text-gray-500'>{t('loading functions')}</div>}\n </Settings.Container>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { FunctionsRegistry } from './FunctionsRegistry';\n\nexport { FunctionsRegistry };\nexport default FunctionsRegistry;\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "useState", "React", "useCallback", "Function", "getDeployedFunctions", "useClient", "Filter", "Query", "useQuery", "IconButton", "useAsyncEffect", "useTranslation", "Settings", "List", "ghostHover", "mx", "grid", "FunctionsRegistry", "space", "client", "useClient", "loading", "setLoading", "useState", "functions", "setFunctions", "t", "useTranslation", "meta", "id", "dbFunctions", "useQuery", "db", "Filter", "type", "Function", "state", "func", "dbFunction", "find", "f", "key", "version", "updated", "useAsyncEffect", "getDeployedFunctions", "hanleImportOrUpdate", "useCallback", "query", "Query", "run", "existingFunc", "add", "setFrom", "Settings", "Container", "length", "List", "Root", "items", "isItem", "is", "getId", "div", "role", "className", "map", "Item", "item", "classNames", "mx", "ghostHover", "ItemTitle", "name", "Date", "toLocaleString", "IconButton", "iconOnly", "icon", "label", "disabled", "onClick", "FunctionsRegistry"]
7
+ }
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-PZNBEKO5.mjs";
3
+ } from "./chunk-EL64ZPPN.mjs";
4
4
 
5
5
  // src/types/capabilities.ts
6
6
  import { Capability } from "@dxos/app-framework";
7
7
  (function(AutomationCapabilities2) {
8
- AutomationCapabilities2.ComputeRuntime = Capability.make(`${meta.id}/capability/compute-runtime`);
8
+ AutomationCapabilities2.ComputeRuntime = Capability.make(`${meta.id}.capability.compute-runtime`);
9
9
  })(AutomationCapabilities || (AutomationCapabilities = {}));
10
10
  var AutomationCapabilities;
11
11
 
12
12
  // src/types/events.ts
13
13
  import { ActivationEvent } from "@dxos/app-framework";
14
14
  (function(AutomationEvents2) {
15
- AutomationEvents2.ComputeRuntimeReady = ActivationEvent.make(`${meta.id}/event/compute-runtime-ready`);
15
+ AutomationEvents2.ComputeRuntimeReady = ActivationEvent.make(`${meta.id}.event.compute-runtime-ready`);
16
16
  })(AutomationEvents || (AutomationEvents = {}));
17
17
  var AutomationEvents;
18
18
 
@@ -29,7 +29,7 @@ var TriggerTemplate = Schema.Union(Schema.Struct({
29
29
  queueDXN: Schema.Any
30
30
  }));
31
31
  (function(AutomationAction2) {
32
- class CreateTriggerFromTemplate extends Schema.TaggedClass()(`${meta.id}/action/create-trigger-from-template`, {
32
+ class CreateTriggerFromTemplate extends Schema.TaggedClass()(`${meta.id}.action.create-trigger-from-template`, {
33
33
  input: Schema.Struct({
34
34
  db: Database.Database,
35
35
  template: TriggerTemplate,
@@ -46,11 +46,11 @@ var TriggerTemplate = Schema.Union(Schema.Struct({
46
46
  }
47
47
  AutomationAction2.CreateTriggerFromTemplate = CreateTriggerFromTemplate;
48
48
  })(AutomationAction || (AutomationAction = {}));
49
- var AUTOMATION_OPERATION = `${meta.id}/operation`;
49
+ var AUTOMATION_OPERATION = `${meta.id}.operation`;
50
50
  (function(AutomationOperation2) {
51
51
  AutomationOperation2.CreateTriggerFromTemplate = Operation.make({
52
52
  meta: {
53
- key: `${AUTOMATION_OPERATION}/create-trigger-from-template`,
53
+ key: `${AUTOMATION_OPERATION}.create-trigger-from-template`,
54
54
  name: "Create Trigger From Template"
55
55
  },
56
56
  services: [
@@ -80,4 +80,4 @@ export {
80
80
  AutomationAction,
81
81
  AutomationOperation
82
82
  };
83
- //# sourceMappingURL=chunk-JOXPQ27I.mjs.map
83
+ //# sourceMappingURL=chunk-GVHAETEQ.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, type Feed } 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 | Feed.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;0BA0BFC,iBAAiBC,WAAWC,KAA6B,GAAGC,KAAKC,EAAE,6BAA6B;AAC/G,GA3BiBL,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,31 @@
1
+ import {
2
+ useTriggerRuntimeControls
3
+ } from "./chunk-OAZ2JYXV.mjs";
4
+ import {
5
+ meta
6
+ } from "./chunk-EL64ZPPN.mjs";
7
+
8
+ // src/containers/TriggerSettings/TriggerSettings.tsx
9
+ import React from "react";
10
+ import { Input, useTranslation } from "@dxos/react-ui";
11
+ import { Settings } from "@dxos/react-ui-form";
12
+ var TriggersSettings = ({ db }) => {
13
+ const { state, start, stop } = useTriggerRuntimeControls(db);
14
+ const isRunning = state?.enabled ?? false;
15
+ const { t } = useTranslation(meta.id);
16
+ return /* @__PURE__ */ React.createElement("div", {
17
+ className: "grid grid-cols-1 md:grid-cols-[1fr_min-content]"
18
+ }, /* @__PURE__ */ React.createElement(Settings.ItemInput, {
19
+ title: t("runtime label"),
20
+ description: t("runtime description")
21
+ }, /* @__PURE__ */ React.createElement(Input.Switch, {
22
+ classNames: "justify-self-end",
23
+ checked: isRunning,
24
+ onCheckedChange: isRunning ? stop : start
25
+ })));
26
+ };
27
+
28
+ export {
29
+ TriggersSettings
30
+ };
31
+ //# sourceMappingURL=chunk-H2MV4XE6.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/TriggerSettings/TriggerSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Database } from '@dxos/echo';\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\n\nimport { useTriggerRuntimeControls } from '../../hooks';\nimport { meta } from '../../meta';\n\nexport const TriggersSettings = ({ db }: { db: Database.Database }) => {\n const { state, start, stop } = useTriggerRuntimeControls(db);\n const isRunning = state?.enabled ?? false;\n const { t } = useTranslation(meta.id);\n\n return (\n <div className='grid grid-cols-1 md:grid-cols-[1fr_min-content]'>\n <Settings.ItemInput title={t('runtime label')} description={t('runtime description')}>\n <Input.Switch classNames='justify-self-end' checked={isRunning} onCheckedChange={isRunning ? stop : start} />\n </Settings.ItemInput>\n </div>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;AAIA,OAAOA,WAAW;AAGlB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,gBAAgB;AAKlB,IAAMC,mBAAmB,CAAC,EAAEC,GAAE,MAA6B;AAChE,QAAM,EAAEC,OAAOC,OAAOC,KAAI,IAAKC,0BAA0BJ,EAAAA;AACzD,QAAMK,YAAYJ,OAAOK,WAAW;AACpC,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,SACE,sBAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACC,SAASC,WAAS;IAACC,OAAOR,EAAE,eAAA;IAAkBS,aAAaT,EAAE,qBAAA;KAC5D,sBAAA,cAACU,MAAMC,QAAM;IAACC,YAAW;IAAmBC,SAASf;IAAWgB,iBAAiBhB,YAAYF,OAAOD;;AAI5G;",
6
+ "names": ["React", "Input", "useTranslation", "Settings", "TriggersSettings", "db", "state", "start", "stop", "useTriggerRuntimeControls", "isRunning", "enabled", "t", "useTranslation", "meta", "id", "div", "className", "Settings", "ItemInput", "title", "description", "Input", "Switch", "classNames", "checked", "onCheckedChange"]
7
+ }
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  AutomationCapabilities
3
- } from "./chunk-JOXPQ27I.mjs";
3
+ } from "./chunk-GVHAETEQ.mjs";
4
4
 
5
5
  // src/hooks/useComputeRuntimeCallback.ts
6
6
  import * as Cause from "effect/Cause";
7
7
  import * as Effect from "effect/Effect";
8
8
  import * as Exit from "effect/Exit";
9
9
  import { useCallback } from "react";
10
- import { useCapability } from "@dxos/app-framework/react";
10
+ import { useCapability } from "@dxos/app-framework/ui";
11
11
  import { FunctionInvocationService, TracingService } from "@dxos/functions";
12
12
  import { log } from "@dxos/log";
13
13
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/hooks/useComputeRuntimeCallback.ts";
@@ -51,28 +51,35 @@ var invokeFunctionWithTracing = (functionDef, inputData) => Effect.gen(function*
51
51
  });
52
52
 
53
53
  // src/hooks/useTriggerRuntimeControls.ts
54
+ import { Atom, useAtomValue } from "@effect-atom/atom-react";
54
55
  import * as Effect2 from "effect/Effect";
56
+ import { useEffect, useState } from "react";
55
57
  import { Filter } from "@dxos/echo";
56
58
  import { Trigger } from "@dxos/functions";
57
59
  import { TriggerDispatcher } from "@dxos/functions-runtime";
58
60
  import { useQuery } from "@dxos/react-client/echo";
59
- import { useAsyncState } from "@dxos/react-ui";
60
61
  var useTriggerRuntimeControls = (db) => {
61
62
  const triggers = useQuery(db, Filter.type(Trigger.Trigger));
62
- const [isRunningState, setIsRunningState] = useAsyncState(useComputeRuntimeCallback(db?.spaceId, () => TriggerDispatcher.pipe(Effect2.map((t) => t.running))));
63
+ const [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));
63
72
  const start = useComputeRuntimeCallback(db?.spaceId, Effect2.fnUntraced(function* () {
64
- const dispatcher = yield* TriggerDispatcher;
65
- yield* dispatcher.start();
66
- setIsRunningState(true);
73
+ const dispatcher2 = yield* TriggerDispatcher;
74
+ yield* dispatcher2.start();
67
75
  }));
68
76
  const stop = useComputeRuntimeCallback(db?.spaceId, Effect2.fnUntraced(function* () {
69
- const dispatcher = yield* TriggerDispatcher;
70
- yield* dispatcher.stop();
71
- setIsRunningState(false);
77
+ const dispatcher2 = yield* TriggerDispatcher;
78
+ yield* dispatcher2.stop();
72
79
  }));
73
80
  return {
74
81
  triggers,
75
- isRunning: isRunningState ?? false,
82
+ state,
76
83
  start: () => void start(),
77
84
  stop: () => void stop()
78
85
  };
@@ -83,4 +90,4 @@ export {
83
90
  invokeFunctionWithTracing,
84
91
  useTriggerRuntimeControls
85
92
  };
86
- //# sourceMappingURL=chunk-RAF2FJST.mjs.map
93
+ //# sourceMappingURL=chunk-OAZ2JYXV.mjs.map