@dxos/plugin-automation 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8

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-IGLIQY2N.mjs +11 -0
  2. package/dist/lib/browser/AutomationSettings-XGJGVBDD.mjs +37 -0
  3. package/dist/lib/browser/AutomationSettings-XGJGVBDD.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-GW5OEM2G.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-JOXPQ27I.mjs → chunk-5WMYSXEH.mjs} +7 -7
  12. package/dist/lib/browser/chunk-5WMYSXEH.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-QW3EM35H.mjs → chunk-BWEKRPFJ.mjs} +62 -16
  16. package/dist/lib/browser/chunk-BWEKRPFJ.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-BKFQBKYO.mjs → chunk-LHJEQVX5.mjs} +2 -2
  22. package/dist/lib/browser/{chunk-YWLEY2FD.mjs → chunk-O23LHDEX.mjs} +119 -50
  23. package/dist/lib/browser/chunk-O23LHDEX.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-PUYY7B5F.mjs +31 -0
  25. package/dist/lib/browser/chunk-PUYY7B5F.mjs.map +7 -0
  26. package/dist/lib/browser/{chunk-RAF2FJST.mjs → chunk-ZBEMNWNY.mjs} +19 -12
  27. package/dist/lib/browser/chunk-ZBEMNWNY.mjs.map +7 -0
  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-I3I2BIRE.mjs} +36 -20
  31. package/dist/lib/browser/compute-runtime-I3I2BIRE.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-NGN4BEWN.mjs} +11 -9
  37. package/dist/lib/browser/operation-resolver-NGN4BEWN.mjs.map +7 -0
  38. package/dist/lib/browser/react-surface-SXDIM3RM.mjs +65 -0
  39. package/dist/lib/browser/react-surface-SXDIM3RM.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +2 -2
  41. package/dist/lib/node-esm/{AutomationPanel-B7NAGDFA.mjs → AutomationPanel-O2BCQA7P.mjs} +4 -4
  42. package/dist/lib/node-esm/AutomationPanel-O2BCQA7P.mjs.map +7 -0
  43. package/dist/lib/node-esm/AutomationSettings-W52ZO2XI.mjs +38 -0
  44. package/dist/lib/node-esm/AutomationSettings-W52ZO2XI.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-2GKFPECW.mjs +12 -0
  52. package/dist/lib/node-esm/TriggerSettings-2GKFPECW.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/{FunctionsContainer-J4O2ULWR.mjs → chunk-6JVB3IHW.mjs} +15 -48
  56. package/dist/lib/node-esm/chunk-6JVB3IHW.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-BNWZ2NNI.mjs +32 -0
  58. package/dist/lib/node-esm/chunk-BNWZ2NNI.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-2CKVH7JC.mjs → chunk-FPXVLTEY.mjs} +119 -50
  60. package/dist/lib/node-esm/chunk-FPXVLTEY.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-KWKWOGS5.mjs → chunk-K7T2MVB7.mjs} +11 -16
  62. package/dist/lib/node-esm/chunk-K7T2MVB7.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-LJAXQ6CX.mjs → chunk-Q5JSKD6Z.mjs} +62 -16
  64. package/dist/lib/node-esm/chunk-Q5JSKD6Z.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-K7GCM342.mjs → chunk-V3VUE2NR.mjs} +2 -2
  66. package/dist/lib/node-esm/{chunk-5FXNN3MV.mjs → chunk-WC5AT7B3.mjs} +2 -2
  67. package/dist/lib/node-esm/{chunk-5FXNN3MV.mjs.map → chunk-WC5AT7B3.mjs.map} +1 -1
  68. package/dist/lib/node-esm/{chunk-RX52VKI2.mjs → chunk-XCFO2IXT.mjs} +7 -7
  69. package/dist/lib/node-esm/chunk-XCFO2IXT.mjs.map +7 -0
  70. package/dist/lib/node-esm/{chunk-HQLVREIX.mjs → chunk-XQO3HK62.mjs} +19 -12
  71. package/dist/lib/node-esm/chunk-XQO3HK62.mjs.map +7 -0
  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-7HCSIYFG.mjs} +36 -20
  75. package/dist/lib/node-esm/compute-runtime-7HCSIYFG.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-ANGACQZG.mjs} +11 -9
  81. package/dist/lib/node-esm/operation-resolver-ANGACQZG.mjs.map +7 -0
  82. package/dist/lib/node-esm/{react-surface-S6VZJCEZ.mjs → react-surface-QVLVDEVW.mjs} +25 -25
  83. package/dist/lib/node-esm/react-surface-QVLVDEVW.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 +3 -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 +51 -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 +36 -14
  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 +39 -7
  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 +5 -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-IGLIQY2N.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-GW5OEM2G.mjs.map} +0 -0
  217. /package/dist/lib/browser/{chunk-BKFQBKYO.mjs.map → chunk-LHJEQVX5.mjs.map} +0 -0
  218. /package/dist/lib/node-esm/{chunk-K7GCM342.mjs.map → chunk-V3VUE2NR.mjs.map} +0 -0
  219. /package/dist/types/src/{components → containers/TriggerSettings}/TriggerSettings.d.ts +0 -0
@@ -1,31 +1,32 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  TriggerEditor
4
- } from "./chunk-LJAXQ6CX.mjs";
4
+ } from "./chunk-Q5JSKD6Z.mjs";
5
5
  import {
6
6
  meta
7
- } from "./chunk-5FXNN3MV.mjs";
7
+ } from "./chunk-WC5AT7B3.mjs";
8
8
 
9
9
  // src/components/AutomationPanel/AutomationPanel.tsx
10
10
  import * as Array from "effect/Array";
11
11
  import * as EFn from "effect/Function";
12
12
  import * as Match from "effect/Match";
13
13
  import * as Schema from "effect/Schema";
14
- import React, { useMemo, useState } from "react";
14
+ import React, { useCallback, useMemo, useState } from "react";
15
15
  import { Filter, Obj, Tag } from "@dxos/echo";
16
16
  import { Function, Script, Trigger } from "@dxos/functions";
17
+ import { KEY_QUEUE_CURSOR } from "@dxos/functions-runtime";
17
18
  import { FunctionsServiceClient } from "@dxos/functions-runtime/edge";
18
19
  import { useTypeOptions } from "@dxos/plugin-space";
19
20
  import { useClient } from "@dxos/react-client";
20
- import { useQuery } from "@dxos/react-client/echo";
21
+ import { useObject, useQuery } from "@dxos/react-client/echo";
21
22
  import { Clipboard, IconButton, Input, Separator, useTranslation } from "@dxos/react-ui";
22
- import { ControlItem, controlItemClasses } from "@dxos/react-ui-form";
23
+ import { Settings } from "@dxos/react-ui-form";
23
24
  import { List } from "@dxos/react-ui-list";
24
- import { Project } from "@dxos/types";
25
+ import { Pipeline } from "@dxos/types";
25
26
  import { ghostHover, mx } from "@dxos/ui-theme";
26
27
  import { isNonNullable } from "@dxos/util";
27
- var grid = "grid grid-cols-[40px_1fr_32px_32px] min-bs-[2.5rem]";
28
- var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) => {
28
+ var grid = "grid grid-cols-[40px_1fr_32px_32px] min-h-[2.5rem]";
29
+ var AutomationPanel = ({ space, object, initialTrigger, onDone }) => {
29
30
  const { t } = useTranslation(meta.id);
30
31
  const client = useClient();
31
32
  const functionsServiceClient = useMemo(() => FunctionsServiceClient.fromClient(client), [
@@ -49,9 +50,6 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
49
50
  ],
50
51
  kind: [
51
52
  "user"
52
- ],
53
- registered: [
54
- "registered"
55
53
  ]
56
54
  }
57
55
  });
@@ -72,7 +70,9 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
72
70
  };
73
71
  const handleSave = (trigger2) => {
74
72
  if (selected) {
75
- Object.assign(selected, trigger2);
73
+ Obj.change(selected, (mutable) => {
74
+ Object.assign(mutable, trigger2);
75
+ });
76
76
  } else {
77
77
  space.db.add(Trigger.make(trigger2));
78
78
  }
@@ -87,9 +87,18 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
87
87
  const handleForceRunTrigger = async (trigger2) => {
88
88
  await functionsServiceClient.forceRunCronTrigger(space.id, trigger2.id);
89
89
  };
90
+ const handleResetCursor = async (trigger2) => {
91
+ Obj.change(trigger2, (t2) => {
92
+ Obj.deleteKeys(t2, KEY_QUEUE_CURSOR);
93
+ });
94
+ await space.db.flush({
95
+ indexes: true
96
+ });
97
+ };
90
98
  if (trigger) {
91
- return /* @__PURE__ */ React.createElement(ControlItem, {
92
- title: t("trigger editor title")
99
+ return /* @__PURE__ */ React.createElement(Settings.Item, {
100
+ title: t("trigger editor title"),
101
+ description: t("trigger editor description")
93
102
  }, /* @__PURE__ */ React.createElement(TriggerEditor, {
94
103
  db: space.db,
95
104
  trigger,
@@ -100,51 +109,111 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
100
109
  onCancel: handleCancel
101
110
  }));
102
111
  }
103
- return /* @__PURE__ */ React.createElement("div", {
104
- className: mx(controlItemClasses, classNames)
105
- }, filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
112
+ return /* @__PURE__ */ React.createElement(Settings.Container, null, filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
106
113
  items: filteredTriggers,
107
114
  isItem: Schema.is(Trigger.Trigger),
108
115
  getId: (field) => field.id
109
116
  }, ({ items: filteredTriggers2 }) => /* @__PURE__ */ React.createElement("div", {
110
117
  role: "list",
111
- className: "flex flex-col is-full"
112
- }, filteredTriggers2?.map((trigger2) => {
113
- const copyAction = getCopyAction(client, trigger2);
114
- return /* @__PURE__ */ React.createElement(List.Item, {
115
- key: trigger2.id,
116
- item: trigger2,
117
- classNames: mx(grid, ghostHover, "items-center", "pli-2")
118
- }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
119
- checked: trigger2.enabled,
120
- onCheckedChange: (checked) => Obj.change(trigger2, (t2) => {
121
- t2.enabled = checked;
122
- })
123
- })), /* @__PURE__ */ React.createElement("div", {
124
- className: "flex"
125
- }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
126
- classNames: "pli-1 cursor-pointer is-0 shrink truncate",
127
- onClick: () => handleSelect(trigger2)
128
- }, getFunctionName(functions, trigger2) ?? "\u2205"), copyAction && /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
129
- label: t(copyAction.translationKey),
130
- value: copyAction.contentProvider()
131
- })), /* @__PURE__ */ React.createElement(List.ItemButton, {
132
- autoHide: false,
133
- disabled: !trigger2.enabled || trigger2.spec?.kind !== "timer",
134
- icon: "ph--play--regular",
135
- label: "Force run",
136
- onClick: () => handleForceRunTrigger(trigger2)
137
- }), /* @__PURE__ */ React.createElement(List.ItemDeleteButton, {
138
- onClick: () => handleDelete(trigger2)
139
- }));
140
- }))), filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(Separator, {
141
- classNames: "mlb-4"
118
+ className: "flex flex-col w-full"
119
+ }, filteredTriggers2?.map((trigger2) => /* @__PURE__ */ React.createElement(TriggerListItem, {
120
+ key: trigger2.id,
121
+ trigger: trigger2,
122
+ functions,
123
+ onSelect: handleSelect,
124
+ onDelete: handleDelete,
125
+ onResetCursor: handleResetCursor,
126
+ onForceRun: handleForceRunTrigger
127
+ })))), filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(Separator, {
128
+ classNames: "my-4"
142
129
  }), /* @__PURE__ */ React.createElement(IconButton, {
143
130
  icon: "ph--plus--regular",
144
131
  label: t("new trigger label"),
145
132
  onClick: handleAdd
146
133
  }));
147
134
  };
135
+ var TriggerListItem = ({ trigger, functions, onSelect, onDelete, onResetCursor, onForceRun }) => {
136
+ const client = useClient();
137
+ const copyAction = getCopyAction(client, trigger);
138
+ const { t } = useTranslation(meta.id);
139
+ const cursor = Obj.getKeys(trigger, KEY_QUEUE_CURSOR).at(0)?.id;
140
+ const [snapshot, updateTrigger] = useObject(trigger);
141
+ const enabled = snapshot.enabled ?? false;
142
+ const onEnabledChange = (checked) => {
143
+ updateTrigger((trigger2) => {
144
+ trigger2.enabled = checked;
145
+ });
146
+ };
147
+ const handleSelect = useCallback(() => {
148
+ onSelect?.(trigger);
149
+ }, [
150
+ onSelect,
151
+ trigger
152
+ ]);
153
+ const handleDelete = useCallback(() => {
154
+ onDelete?.(trigger);
155
+ }, [
156
+ onDelete,
157
+ trigger
158
+ ]);
159
+ const handleResetCursor = useCallback(() => {
160
+ onResetCursor?.(trigger);
161
+ }, [
162
+ onResetCursor,
163
+ trigger
164
+ ]);
165
+ const handleForceRun = useCallback(() => {
166
+ onForceRun?.(trigger);
167
+ }, [
168
+ onForceRun,
169
+ trigger
170
+ ]);
171
+ const actionProps = useMemo(() => {
172
+ if (trigger.spec?.kind === "timer" && onForceRun) {
173
+ return {
174
+ disabled: !enabled || trigger.spec?.kind !== "timer",
175
+ icon: "ph--play--regular",
176
+ label: "Force run",
177
+ onClick: handleForceRun
178
+ };
179
+ }
180
+ if (trigger.spec?.kind === "queue" && onResetCursor) {
181
+ return {
182
+ disabled: !cursor,
183
+ icon: "ph--arrow-clockwise--regular",
184
+ label: "Reset cursor",
185
+ onClick: handleResetCursor
186
+ };
187
+ }
188
+ }, [
189
+ enabled,
190
+ trigger.spec?.kind,
191
+ handleForceRun
192
+ ]);
193
+ return /* @__PURE__ */ React.createElement(List.Item, {
194
+ key: trigger.id,
195
+ item: snapshot,
196
+ classNames: mx(grid, ghostHover, "items-center", "px-2")
197
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
198
+ checked: enabled,
199
+ onCheckedChange: onEnabledChange
200
+ })), /* @__PURE__ */ React.createElement("div", {
201
+ className: "flex"
202
+ }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
203
+ classNames: "px-1 cursor-pointer w-0 shrink truncate",
204
+ onClick: handleSelect
205
+ }, getFunctionName(functions, trigger) ?? "\u2205", cursor && /* @__PURE__ */ React.createElement("div", {
206
+ className: "text-xs text-description truncate ml-4"
207
+ }, "Position: ", cursor)), copyAction && /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
208
+ label: t(copyAction.translationKey),
209
+ value: copyAction.contentProvider()
210
+ })), actionProps ? /* @__PURE__ */ React.createElement(List.ItemIconButton, {
211
+ ...actionProps,
212
+ autoHide: false
213
+ }) : /* @__PURE__ */ React.createElement("div", null), onDelete && /* @__PURE__ */ React.createElement(List.ItemDeleteButton, {
214
+ onClick: handleDelete
215
+ }));
216
+ };
148
217
  var getCopyAction = (client, trigger) => {
149
218
  if (trigger?.spec?.kind === "email") {
150
219
  return {
@@ -189,7 +258,7 @@ var projectMatch = (project) => {
189
258
  return viewQueries.some((query) => JSON.stringify(spec.query) === query);
190
259
  };
191
260
  };
192
- 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));
261
+ 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));
193
262
 
194
263
  // src/components/AutomationPanel/index.ts
195
264
  var AutomationPanel_default = AutomationPanel;
@@ -198,4 +267,4 @@ export {
198
267
  AutomationPanel,
199
268
  AutomationPanel_default
200
269
  };
201
- //# sourceMappingURL=chunk-2CKVH7JC.mjs.map
270
+ //# sourceMappingURL=chunk-FPXVLTEY.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.ItemIconButton {...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": "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",
6
+ "names": ["Array", "EFn", "Match", "Schema", "React", "useCallback", "useMemo", "useState", "Filter", "Obj", "Tag", "Function", "Script", "Trigger", "KEY_QUEUE_CURSOR", "FunctionsServiceClient", "useTypeOptions", "useClient", "useObject", "useQuery", "Clipboard", "IconButton", "Input", "Separator", "useTranslation", "Settings", "List", "Pipeline", "ghostHover", "mx", "isNonNullable", "grid", "AutomationPanel", "space", "object", "initialTrigger", "onDone", "t", "useTranslation", "meta", "id", "client", "useClient", "functionsServiceClient", "useMemo", "FunctionsServiceClient", "fromClient", "functions", "useQuery", "db", "Filter", "type", "Function", "triggers", "Trigger", "filteredTriggers", "filter", "triggerMatch", "tags", "Tag", "types", "useTypeOptions", "annotation", "location", "kind", "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", "ItemIconButton", "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,22 +1,20 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  meta
4
- } from "./chunk-5FXNN3MV.mjs";
4
+ } from "./chunk-WC5AT7B3.mjs";
5
5
 
6
6
  // src/components/FunctionsPanel/FunctionsPanel.tsx
7
7
  import * as Schema from "effect/Schema";
8
8
  import React, { useCallback, useMemo } from "react";
9
- import { Common } from "@dxos/app-framework";
10
- import { useOperationInvoker } from "@dxos/app-framework/react";
11
- import { Obj } from "@dxos/echo";
9
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
10
+ import { LayoutOperation, getObjectPathFromObject } from "@dxos/app-toolkit";
12
11
  import { Function, Script } from "@dxos/functions";
13
12
  import { SpaceOperation } from "@dxos/plugin-space/types";
14
13
  import { Filter, useQuery } from "@dxos/react-client/echo";
15
14
  import { Button, IconButton, useTranslation } from "@dxos/react-ui";
16
- import { controlItemClasses } from "@dxos/react-ui-form";
15
+ import { Settings } from "@dxos/react-ui-form";
17
16
  import { List } from "@dxos/react-ui-list";
18
17
  import { ghostHover, mx } from "@dxos/ui-theme";
19
- var grid = "grid grid-cols-[1fr_auto] min-bs-[2.5rem]";
20
18
  var FunctionsPanel = ({ space }) => {
21
19
  const { t } = useTranslation(meta.id);
22
20
  const functions = useQuery(space.db, Filter.type(Function.Function));
@@ -44,9 +42,9 @@ var FunctionsPanel = ({ space }) => {
44
42
  const handleGoToScript = useCallback((func) => {
45
43
  const script = functionToScriptMap[func.id];
46
44
  if (script) {
47
- void invokePromise(Common.LayoutOperation.Open, {
45
+ void invokePromise(LayoutOperation.Open, {
48
46
  subject: [
49
- Obj.getDXN(script).toString()
47
+ getObjectPathFromObject(script)
50
48
  ]
51
49
  });
52
50
  }
@@ -61,20 +59,17 @@ var FunctionsPanel = ({ space }) => {
61
59
  }), [
62
60
  invokePromise
63
61
  ]);
64
- return /* @__PURE__ */ React.createElement("div", {
65
- role: "none",
66
- className: mx(controlItemClasses)
67
- }, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
62
+ return /* @__PURE__ */ React.createElement(Settings.Container, null, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
68
63
  items: functions,
69
64
  isItem: Schema.is(Function.Function),
70
65
  getId: (func) => func.id
71
66
  }, ({ items }) => /* @__PURE__ */ React.createElement("div", {
72
67
  role: "list",
73
- className: "flex flex-col is-full"
68
+ className: "flex flex-col w-full"
74
69
  }, items?.map((func) => /* @__PURE__ */ React.createElement(List.Item, {
75
70
  key: func.id,
76
71
  item: func,
77
- classNames: mx(grid, ghostHover, "items-center", "pli-2", "min-bs-[3rem]")
72
+ classNames: mx("grid grid-cols-[1fr_auto] min-h-[2.5rem] min-h-[3rem] px-2 items-center", ghostHover)
78
73
  }, /* @__PURE__ */ React.createElement("div", {
79
74
  className: "flex flex-col truncate"
80
75
  }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
@@ -89,7 +84,7 @@ var FunctionsPanel = ({ space }) => {
89
84
  label: t("delete function button label"),
90
85
  onClick: () => handleDelete(func)
91
86
  }))))), functions.length === 0 && /* @__PURE__ */ React.createElement("div", {
92
- className: "text-center plb-4 text-gray-500"
87
+ className: "text-center py-4 text-description"
93
88
  }, t("no functions found")));
94
89
  };
95
90
 
@@ -100,4 +95,4 @@ export {
100
95
  FunctionsPanel,
101
96
  FunctionsPanel_default
102
97
  };
103
- //# sourceMappingURL=chunk-KWKWOGS5.mjs.map
98
+ //# sourceMappingURL=chunk-K7T2MVB7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/FunctionsPanel/FunctionsPanel.tsx", "../../../src/components/FunctionsPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation, getObjectPathFromObject } from '@dxos/app-toolkit';\nimport { Obj } from '@dxos/echo';\nimport { Function, Script } from '@dxos/functions';\nimport { SpaceOperation } from '@dxos/plugin-space/types';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\nimport { Button, IconButton, 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\nexport type FunctionsPanelProps = {\n space: Space;\n};\n\nexport const FunctionsPanel = ({ space }: FunctionsPanelProps) => {\n const { t } = useTranslation(meta.id);\n const functions = useQuery(space.db, Filter.type(Function.Function));\n const scripts = useQuery(space.db, Filter.type(Script.Script));\n const { invokePromise } = useOperationInvoker();\n\n const functionToScriptMap = useMemo(\n () =>\n functions.reduce(\n (map, func) => {\n const scriptId = func.source?.target?.id;\n if (scriptId) {\n const script = scripts.find((s) => s.id === scriptId);\n if (script) {\n map[func.id] = script;\n }\n }\n return map;\n },\n {} as Record<string, Script.Script>,\n ),\n [functions, scripts],\n );\n\n const getScriptName = useCallback(\n (func: Function.Function) => {\n const script = functionToScriptMap[func.id];\n return script?.name;\n },\n [functionToScriptMap],\n );\n\n const handleGoToScript = useCallback(\n (func: Function.Function) => {\n const script = functionToScriptMap[func.id];\n if (script) {\n void invokePromise(LayoutOperation.Open, { subject: [getObjectPathFromObject(script)] });\n }\n },\n [functionToScriptMap, invokePromise],\n );\n\n const handleDelete = useCallback(\n (func: Function.Function) => invokePromise(SpaceOperation.RemoveObjects, { objects: [func] }),\n [invokePromise],\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 grid-cols-[1fr_auto] min-h-[2.5rem] min-h-[3rem] px-2 items-center', ghostHover)}\n >\n <div className='flex flex-col truncate'>\n <List.ItemTitle classNames='truncate'>{func.name}</List.ItemTitle>\n {getScriptName(func) && (\n <div className='text-xs text-description truncate'>{getScriptName(func)}</div>\n )}\n </div>\n {functionToScriptMap[func.id] && (\n <Button onClick={() => handleGoToScript(func)}>{t('go to function source button label')}</Button>\n )}\n <IconButton\n iconOnly\n icon='ph--trash--regular'\n label={t('delete function button label')}\n onClick={() => handleDelete(func)}\n />\n </List.Item>\n ))}\n </div>\n )}\n </List.Root>\n )}\n\n {functions.length === 0 && <div className='text-center py-4 text-description'>{t('no functions found')}</div>}\n </Settings.Container>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { FunctionsPanel } from './FunctionsPanel';\n\nexport * from './FunctionsPanel';\nexport default FunctionsPanel;\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "React", "useCallback", "useMemo", "useOperationInvoker", "LayoutOperation", "getObjectPathFromObject", "Function", "Script", "SpaceOperation", "Filter", "useQuery", "Button", "IconButton", "useTranslation", "Settings", "List", "ghostHover", "mx", "FunctionsPanel", "space", "t", "useTranslation", "meta", "id", "functions", "useQuery", "db", "Filter", "type", "Function", "scripts", "Script", "invokePromise", "useOperationInvoker", "functionToScriptMap", "useMemo", "reduce", "map", "func", "scriptId", "source", "target", "script", "find", "s", "getScriptName", "useCallback", "name", "handleGoToScript", "LayoutOperation", "Open", "subject", "getObjectPathFromObject", "handleDelete", "SpaceOperation", "RemoveObjects", "objects", "Settings", "Container", "length", "List", "Root", "items", "isItem", "is", "getId", "div", "role", "className", "Item", "key", "item", "classNames", "mx", "ghostHover", "ItemTitle", "Button", "onClick", "IconButton", "iconOnly", "icon", "label", "FunctionsPanel"]
7
+ }
@@ -1,12 +1,12 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  meta
4
- } from "./chunk-5FXNN3MV.mjs";
4
+ } from "./chunk-WC5AT7B3.mjs";
5
5
 
6
6
  // src/components/TriggerEditor/TriggerEditor.tsx
7
7
  import React3, { useCallback as useCallback3, useMemo as useMemo3 } from "react";
8
8
  import { ComputeGraph } from "@dxos/conductor";
9
- import { DXN } from "@dxos/echo";
9
+ import { DXN, Entity, Feed, Obj as Obj2 } from "@dxos/echo";
10
10
  import { Function, Script, Trigger as Trigger2 } from "@dxos/functions";
11
11
  import { Filter as Filter2, Ref as Ref2, useQuery } from "@dxos/react-client/echo";
12
12
  import { Input } from "@dxos/react-ui";
@@ -15,7 +15,7 @@ import { Form as Form2, FormFieldLabel, SelectField as SelectField2, omitId } fr
15
15
 
16
16
  // src/components/TriggerEditor/FunctionInputEditor.tsx
17
17
  import React, { useCallback, useMemo } from "react";
18
- import { Ref, Type } from "@dxos/echo";
18
+ import { JsonSchema, Obj, Ref } from "@dxos/echo";
19
19
  import { useOnTransition, useTranslation } from "@dxos/react-ui";
20
20
  import { Form, useFormValues } from "@dxos/react-ui-form";
21
21
  var FunctionInputEditor = ({ type, functions, db, getValue, onValueChange }) => {
@@ -49,15 +49,22 @@ var FunctionInputEditor = ({ type, functions, db, getValue, onValueChange }) =>
49
49
  const inputSchema = useMemo(() => selectedFunction?.inputSchema, [
50
50
  selectedFunction
51
51
  ]);
52
- const effectSchema = useMemo(() => inputSchema ? Type.toEffectSchema(inputSchema) : void 0, [
52
+ const effectSchema = useMemo(() => inputSchema ? JsonSchema.toEffectSchema(inputSchema) : void 0, [
53
53
  inputSchema
54
54
  ]);
55
55
  const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;
56
- const values = useMemo(() => getValue() ?? {}, [
56
+ const defaultValues = useMemo(() => {
57
+ const raw = getValue() ?? {};
58
+ return Obj.isObject(raw) ? {
59
+ ...Obj.getSnapshot(raw)
60
+ } : {
61
+ ...raw
62
+ };
63
+ }, [
57
64
  getValue
58
65
  ]);
59
- const handleValuesChanged = useCallback((values2) => {
60
- onValueChange(type, values2);
66
+ const handleValuesChanged = useCallback((values) => {
67
+ onValueChange(type, values);
61
68
  }, [
62
69
  type,
63
70
  onValueChange
@@ -69,8 +76,9 @@ var FunctionInputEditor = ({ type, functions, db, getValue, onValueChange }) =>
69
76
  label: t("function parameters label"),
70
77
  asChild: true
71
78
  }), /* @__PURE__ */ React.createElement(Form.Root, {
79
+ key: selectedFunction.id,
72
80
  schema: effectSchema,
73
- values,
81
+ defaultValues,
74
82
  db,
75
83
  onValuesChanged: handleValuesChanged
76
84
  }, /* @__PURE__ */ React.createElement(Form.FieldSet, null)));
@@ -106,7 +114,7 @@ var SpecSelector = (props) => {
106
114
  case "queue":
107
115
  return {
108
116
  kind: "queue",
109
- queue: "dxn:"
117
+ queue: "dxn:queue:default"
110
118
  };
111
119
  case "email":
112
120
  return {
@@ -151,18 +159,34 @@ var TriggerEditor = ({ db, types, tags, readonlySpec, trigger, ...formProps }) =
151
159
  tags,
152
160
  readonlySpec
153
161
  });
162
+ const handleValuesChanged = useCallback3((newValues) => {
163
+ Obj2.change(trigger, (t) => {
164
+ Object.assign(t, newValues);
165
+ });
166
+ }, [
167
+ trigger
168
+ ]);
169
+ const triggerSchema = useMemo3(() => omitId(Trigger2.Trigger), []);
170
+ const defaultValues = useMemo3(() => {
171
+ const { id: _, ...values } = trigger;
172
+ return values;
173
+ }, [
174
+ trigger
175
+ ]);
154
176
  return /* @__PURE__ */ React3.createElement(Form2.Root, {
155
177
  ...formProps,
156
- schema: omitId(Trigger2.Trigger),
157
- values: trigger,
158
178
  db,
159
- fieldMap
179
+ schema: triggerSchema,
180
+ defaultValues,
181
+ fieldMap,
182
+ onValuesChanged: handleValuesChanged
160
183
  }, /* @__PURE__ */ React3.createElement(Form2.Viewport, null, /* @__PURE__ */ React3.createElement(Form2.Content, null, /* @__PURE__ */ React3.createElement(Form2.FieldSet, null), /* @__PURE__ */ React3.createElement(Form2.Actions, null))));
161
184
  };
162
185
  var useCustomInputs = ({ db, readonlySpec, types, tags }) => {
163
186
  const functions = useQuery(db, Filter2.type(Function.Function));
164
187
  const workflows = useQuery(db, Filter2.type(ComputeGraph));
165
188
  const scripts = useQuery(db, Filter2.type(Script.Script));
189
+ const feeds = useQuery(db, Filter2.type(Feed.Feed));
166
190
  return useMemo3(() => ({
167
191
  // Function selector.
168
192
  ["function"]: (props) => {
@@ -193,13 +217,18 @@ var useCustomInputs = ({ db, readonlySpec, types, tags }) => {
193
217
  });
194
218
  },
195
219
  // Spec selector.
196
- ["spec.kind"]: (props) => /* @__PURE__ */ React3.createElement(SpecSelector, {
220
+ "spec.kind": (props) => /* @__PURE__ */ React3.createElement(SpecSelector, {
197
221
  ...props,
198
222
  readonly: readonlySpec
199
223
  }),
224
+ // Queue feed selector with parent labels.
225
+ "spec.queue": (props) => /* @__PURE__ */ React3.createElement(SelectField2, {
226
+ ...props,
227
+ options: getFeedQueueOptions(feeds)
228
+ }),
200
229
  // TODO(wittjosiah): Copied from ViewEditor.
201
230
  // Query input editor.
202
- ["spec.query"]: (props) => {
231
+ "spec.query": (props) => {
203
232
  const handleChange = useCallback3((query) => props.onValueChange(props.type, {
204
233
  ast: query.ast
205
234
  }), [
@@ -217,7 +246,7 @@ var useCustomInputs = ({ db, readonlySpec, types, tags }) => {
217
246
  }));
218
247
  },
219
248
  // Function input editor.
220
- ["input"]: (props) => /* @__PURE__ */ React3.createElement(FunctionInputEditor, {
249
+ input: (props) => /* @__PURE__ */ React3.createElement(FunctionInputEditor, {
221
250
  ...props,
222
251
  functions,
223
252
  db
@@ -226,6 +255,7 @@ var useCustomInputs = ({ db, readonlySpec, types, tags }) => {
226
255
  workflows,
227
256
  scripts,
228
257
  functions,
258
+ feeds,
229
259
  readonlySpec
230
260
  ]);
231
261
  };
@@ -242,8 +272,24 @@ var getFunctionOptions = (scripts, functions) => {
242
272
  value: `dxn:echo:@:${fn.id}`
243
273
  }));
244
274
  };
275
+ var getFeedQueueOptions = (feeds) => {
276
+ return feeds.flatMap((feed) => {
277
+ const queueDxn = Feed.getQueueDxn(feed);
278
+ if (!queueDxn) {
279
+ return [];
280
+ }
281
+ const parent = Obj2.getParent(feed);
282
+ const label = parent ? Entity.getLabel(parent) : Entity.getLabel(feed);
283
+ return [
284
+ {
285
+ label: label ?? feed.id,
286
+ value: queueDxn.toString()
287
+ }
288
+ ];
289
+ });
290
+ };
245
291
 
246
292
  export {
247
293
  TriggerEditor
248
294
  };
249
- //# sourceMappingURL=chunk-LJAXQ6CX.mjs.map
295
+ //# sourceMappingURL=chunk-Q5JSKD6Z.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/TriggerEditor/TriggerEditor.tsx", "../../../src/components/TriggerEditor/FunctionInputEditor.tsx", "../../../src/components/TriggerEditor/SpecSelector.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { DXN, type Database, Entity, Feed, Obj, type Query } from '@dxos/echo';\nimport { Function, Script, Trigger } from '@dxos/functions';\nimport { Filter, Ref, useQuery } from '@dxos/react-client/echo';\nimport { Input } from '@dxos/react-ui';\nimport { QueryForm, type QueryFormProps } from '@dxos/react-ui-components';\nimport {\n type ExcludeId,\n Form,\n FormFieldLabel,\n type FormFieldMap,\n type FormRootProps,\n SelectField,\n omitId,\n} from '@dxos/react-ui-form';\n\nimport { FunctionInputEditor } from './FunctionInputEditor';\nimport { SpecSelector } from './SpecSelector';\n\ntype TriggerFormSchema = ExcludeId<typeof Trigger.Trigger>;\n\nexport type TriggerEditorProps = {\n db: Database.Database;\n trigger: Trigger.Trigger;\n // TODO(wittjosiah): This needs to apply to whole spec but currently only applies to spec.kind & spec.query.\n readonlySpec?: boolean;\n} &\n // prettier-ignore\n Pick<QueryFormProps, 'types' | 'tags'> &\n Pick<FormRootProps<TriggerFormSchema>, 'onSave' | 'onCancel'>;\n\nexport const TriggerEditor = ({ db, types, tags, readonlySpec, trigger, ...formProps }: TriggerEditorProps) => {\n const fieldMap = useCustomInputs({\n db,\n types,\n tags,\n readonlySpec,\n });\n\n const handleValuesChanged = useCallback(\n (newValues: Partial<TriggerFormSchema>) => {\n Obj.change(trigger, (t) => {\n Object.assign(t, newValues);\n });\n },\n [trigger],\n );\n\n const triggerSchema = useMemo(() => omitId(Trigger.Trigger), []);\n const defaultValues = useMemo(() => {\n const { id: _, ...values } = trigger;\n return values;\n }, [trigger]);\n\n return (\n <Form.Root<TriggerFormSchema>\n {...formProps}\n db={db}\n schema={triggerSchema}\n defaultValues={defaultValues}\n fieldMap={fieldMap}\n onValuesChanged={handleValuesChanged}\n >\n <Form.Viewport>\n <Form.Content>\n <Form.FieldSet />\n <Form.Actions />\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n );\n};\n\ntype UseCustomInputsProps = {\n db: Database.Database;\n readonlySpec?: boolean;\n} & Pick<QueryFormProps, 'types' | 'tags'>;\n\nconst useCustomInputs = ({ db, readonlySpec, types, tags }: UseCustomInputsProps): FormFieldMap => {\n const functions = useQuery(db, Filter.type(Function.Function));\n const workflows = useQuery(db, Filter.type(ComputeGraph));\n const scripts = useQuery(db, Filter.type(Script.Script));\n const feeds = useQuery(db, Filter.type(Feed.Feed));\n\n return useMemo(\n (): FormFieldMap => ({\n // Function selector.\n ['function' satisfies keyof Trigger.Trigger]: (props) => {\n const getValue = useCallback(() => {\n const formValue = props.getValue();\n if (Ref.isRef(formValue)) {\n return formValue.dxn.toString() as string;\n }\n return undefined;\n }, [props]);\n\n const handleOnValueChange = useCallback(\n (_type: any, dxnString: string) => {\n const dxn = DXN.parse(dxnString);\n if (dxn) {\n const ref = Ref.fromDXN(dxn);\n props.onValueChange(props.type, ref);\n }\n },\n [props.type, props.onValueChange],\n );\n\n return (\n <SelectField\n {...props}\n getValue={getValue as any}\n onValueChange={handleOnValueChange}\n options={getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))}\n />\n );\n },\n\n // Spec selector.\n 'spec.kind': (props) => <SpecSelector {...props} readonly={readonlySpec} />,\n\n // Queue feed selector with parent labels.\n 'spec.queue': (props) => <SelectField {...props} options={getFeedQueueOptions(feeds)} />,\n\n // TODO(wittjosiah): Copied from ViewEditor.\n // Query input editor.\n 'spec.query': (props) => {\n const handleChange = useCallback(\n (query: Query.Any) => props.onValueChange(props.type, { ast: query.ast }),\n [props.type, props.onValueChange],\n );\n\n return (\n <Input.Root>\n <FormFieldLabel label={props.label} asChild />\n <QueryForm initialQuery={(props.getValue() as any).ast} types={types} tags={tags} onChange={handleChange} />\n </Input.Root>\n );\n },\n\n // Function input editor.\n input: (props) => <FunctionInputEditor {...props} functions={functions} db={db} />,\n }),\n [workflows, scripts, functions, feeds, readonlySpec],\n );\n};\n\nconst getWorkflowOptions = (graphs: ComputeGraph[]) => {\n return graphs.map((graph) => ({ label: `compute-${graph.id}`, value: `dxn:echo:@:${graph.id}` }));\n};\n\nconst getFunctionOptions = (scripts: Script.Script[], functions: Function.Function[]) => {\n const getLabel = (fn: Function.Function) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;\n return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:echo:@:${fn.id}` }));\n};\n\nconst getFeedQueueOptions = (feeds: Feed.Feed[]) => {\n return feeds.flatMap((feed) => {\n const queueDxn = Feed.getQueueDxn(feed);\n if (!queueDxn) {\n return [];\n }\n const parent = Obj.getParent(feed);\n const label = parent ? Entity.getLabel(parent) : Entity.getLabel(feed);\n return [{ label: label ?? feed.id, value: queueDxn.toString() }];\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as SchemaAST from 'effect/SchemaAST';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type Database, JsonSchema, Obj, Ref } from '@dxos/echo';\nimport { type JsonPath } from '@dxos/echo/internal';\nimport { type Function } from '@dxos/functions';\nimport { useOnTransition, useTranslation } from '@dxos/react-ui';\nimport { Form, type FormFieldStateProps, type FormRootProps, useFormValues } from '@dxos/react-ui-form';\n\nimport { meta } from '../../meta';\n\nexport type FunctionInputEditorProps = {\n type: SchemaAST.AST;\n functions: Function.Function[];\n db?: Database.Database;\n} & FormFieldStateProps;\n\nexport const FunctionInputEditor = ({ type, functions, db, getValue, onValueChange }: FunctionInputEditorProps) => {\n const { t } = useTranslation(meta.id);\n const selectedFunctionValue = useFormValues(FunctionInputEditor.displayName, ['function' as JsonPath]);\n const selectedFunctionId = useMemo(() => {\n if (Ref.isRef(selectedFunctionValue)) {\n return selectedFunctionValue.dxn.toString().split('dxn:echo:@:').at(1);\n }\n }, [selectedFunctionValue]);\n\n const selectedFunction = useMemo(\n () => functions.find((fn) => fn.id === selectedFunctionId),\n [functions, selectedFunctionId],\n );\n\n useOnTransition(\n // Clear function parameter input when the function changes.\n selectedFunctionValue,\n (prevValue) => {\n if (!Ref.isRef(prevValue) || !Ref.isRef(selectedFunctionValue)) {\n return false;\n }\n\n return prevValue.dxn.toString() !== selectedFunctionValue.dxn.toString();\n },\n (currValue) => currValue !== undefined,\n () => onValueChange(type, {}),\n );\n\n const inputSchema = useMemo(() => selectedFunction?.inputSchema, [selectedFunction]);\n const effectSchema = useMemo(() => (inputSchema ? JsonSchema.toEffectSchema(inputSchema) : undefined), [inputSchema]);\n const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;\n const defaultValues = useMemo(() => {\n const raw = getValue() ?? {};\n return Obj.isObject(raw) ? { ...Obj.getSnapshot(raw) } : { ...raw };\n }, [getValue]);\n\n const handleValuesChanged = useCallback<NonNullable<FormRootProps['onValuesChanged']>>(\n (values) => {\n onValueChange(type, values);\n },\n [type, onValueChange],\n );\n\n if (selectedFunction === undefined || effectSchema === undefined || propertyCount === 0) {\n return null;\n }\n\n return (\n <>\n <Form.Label label={t('function parameters label')} asChild />\n <Form.Root\n key={selectedFunction.id}\n schema={effectSchema}\n defaultValues={defaultValues}\n db={db}\n onValuesChanged={handleValuesChanged}\n >\n <Form.FieldSet />\n </Form.Root>\n </>\n );\n};\n\nFunctionInputEditor.displayName = 'AutomationTrigger.FunctionInputEditor';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Filter, Query } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { useTranslation } from '@dxos/react-ui';\nimport { type FormFieldComponentProps, SelectField, useFormFieldState } from '@dxos/react-ui-form';\n\nimport { meta } from '../../meta';\n\nexport type SpecSelectorProps = FormFieldComponentProps;\n\nexport const SpecSelector = (props: SpecSelectorProps) => {\n const { t } = useTranslation(meta.id);\n const specProps = useFormFieldState(SpecSelector.displayName, ['spec' satisfies keyof Trigger.Trigger]);\n\n const handleTypeChange = useCallback(\n (_type: any, value: string): Trigger.Spec | undefined => {\n const getDefaultTriggerSpec = (kind: string) => {\n switch (kind) {\n case 'timer':\n return { kind: 'timer', cron: '' };\n case 'subscription':\n return {\n kind: 'subscription',\n query: {\n ast: Query.select(Filter.nothing()).ast,\n },\n };\n case 'queue':\n return { kind: 'queue', queue: 'dxn:queue:default' };\n case 'email':\n return { kind: 'email' };\n case 'webhook':\n return { kind: 'webhook' };\n default:\n return undefined;\n }\n };\n\n const defaultSpec = getDefaultTriggerSpec(value);\n if (!defaultSpec) {\n return;\n }\n\n // Update the entire spec object, not just the `spec.kind`.\n specProps.onValueChange(props.type, defaultSpec);\n },\n [props.type, specProps],\n );\n\n const options = useMemo(\n () =>\n Trigger.Kinds.map((kind) => ({\n value: kind,\n label: t(`trigger type ${kind}`),\n })),\n [t],\n );\n\n return <SelectField {...props} options={options} onValueChange={handleTypeChange} />;\n};\n\nSpecSelector.displayName = 'Form.SpecSelector';\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useMemo", "ComputeGraph", "DXN", "Entity", "Feed", "Obj", "Function", "Script", "Trigger", "Filter", "Ref", "useQuery", "Input", "QueryForm", "Form", "FormFieldLabel", "SelectField", "omitId", "React", "useCallback", "useMemo", "JsonSchema", "Obj", "Ref", "useOnTransition", "useTranslation", "Form", "useFormValues", "FunctionInputEditor", "type", "functions", "db", "getValue", "onValueChange", "t", "useTranslation", "meta", "id", "selectedFunctionValue", "useFormValues", "displayName", "selectedFunctionId", "useMemo", "Ref", "isRef", "dxn", "toString", "split", "at", "selectedFunction", "find", "fn", "useOnTransition", "prevValue", "currValue", "undefined", "inputSchema", "effectSchema", "JsonSchema", "toEffectSchema", "propertyCount", "properties", "Object", "keys", "length", "defaultValues", "raw", "Obj", "isObject", "getSnapshot", "handleValuesChanged", "useCallback", "values", "Form", "Label", "label", "asChild", "Root", "key", "schema", "onValuesChanged", "FieldSet", "React", "useCallback", "useMemo", "Filter", "Query", "Trigger", "useTranslation", "SelectField", "useFormFieldState", "SpecSelector", "props", "t", "useTranslation", "meta", "id", "specProps", "useFormFieldState", "displayName", "handleTypeChange", "useCallback", "_type", "value", "getDefaultTriggerSpec", "kind", "cron", "query", "ast", "Query", "select", "Filter", "nothing", "queue", "undefined", "defaultSpec", "onValueChange", "type", "options", "useMemo", "Trigger", "Kinds", "map", "label", "React", "SelectField", "TriggerEditor", "db", "types", "tags", "readonlySpec", "trigger", "formProps", "fieldMap", "useCustomInputs", "handleValuesChanged", "useCallback", "newValues", "Obj", "change", "t", "Object", "assign", "triggerSchema", "useMemo", "omitId", "Trigger", "defaultValues", "id", "_", "values", "React", "Form", "Root", "schema", "onValuesChanged", "Viewport", "Content", "FieldSet", "Actions", "functions", "useQuery", "Filter", "type", "Function", "workflows", "ComputeGraph", "scripts", "Script", "feeds", "Feed", "props", "getValue", "formValue", "Ref", "isRef", "dxn", "toString", "undefined", "handleOnValueChange", "_type", "dxnString", "DXN", "parse", "ref", "fromDXN", "onValueChange", "SelectField", "options", "getWorkflowOptions", "concat", "getFunctionOptions", "SpecSelector", "readonly", "getFeedQueueOptions", "handleChange", "query", "ast", "Input", "FormFieldLabel", "label", "asChild", "QueryForm", "initialQuery", "onChange", "input", "FunctionInputEditor", "graphs", "map", "graph", "value", "getLabel", "fn", "find", "s", "source", "target", "name", "flatMap", "feed", "queueDxn", "getQueueDxn", "parent", "getParent", "Entity"]
7
+ }
@@ -2,9 +2,9 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
 
3
3
  // src/capabilities/compute-runtime/index.ts
4
4
  import { Capability } from "@dxos/app-framework";
5
- var ComputeRuntime = Capability.lazy("ComputeRuntime", () => import("./compute-runtime-ZHROOBLY.mjs"));
5
+ var ComputeRuntime = Capability.lazy("ComputeRuntime", () => import("./compute-runtime-7HCSIYFG.mjs"));
6
6
 
7
7
  export {
8
8
  ComputeRuntime
9
9
  };
10
- //# sourceMappingURL=chunk-K7GCM342.mjs.map
10
+ //# sourceMappingURL=chunk-V3VUE2NR.mjs.map