@dxos/plugin-automation 0.8.4-main.5ad4a44 → 0.8.4-main.66e292d

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 (164) hide show
  1. package/dist/lib/browser/AutomationPanel-M4M77L4V.mjs +11 -0
  2. package/dist/lib/browser/{AutomationSettings-3LABN6ER.mjs → AutomationSettings-4HCI6KJR.mjs} +6 -7
  3. package/dist/lib/{node-esm/AutomationSettings-XENNIIZM.mjs.map → browser/AutomationSettings-4HCI6KJR.mjs.map} +1 -1
  4. package/dist/lib/browser/FunctionsContainer-CDVBRQCT.mjs +144 -0
  5. package/dist/lib/browser/FunctionsContainer-CDVBRQCT.mjs.map +7 -0
  6. package/dist/lib/browser/{FunctionsPanel-NRIKAPQV.mjs → FunctionsPanel-CRW6SJUN.mjs} +3 -3
  7. package/dist/lib/browser/{app-graph-builder-DV5HMFX4.mjs → app-graph-builder-W7LLC6XW.mjs} +7 -7
  8. package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-4MBM6C6A.mjs +100 -0
  10. package/dist/lib/browser/chunk-4MBM6C6A.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-NIJWEQRD.mjs → chunk-7W6QMY3L.mjs} +26 -42
  12. package/dist/lib/browser/chunk-7W6QMY3L.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-AY67OUDA.mjs → chunk-CZVA5NMD.mjs} +5 -5
  14. package/dist/lib/browser/chunk-LZQFZO3B.mjs +17 -0
  15. package/dist/lib/browser/chunk-LZQFZO3B.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-LC3QQU47.mjs → chunk-T6ZESHDY.mjs} +38 -18
  17. package/dist/lib/browser/chunk-T6ZESHDY.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-DLLE4FKP.mjs → chunk-TWWFNOIR.mjs} +27 -12
  19. package/dist/lib/browser/chunk-TWWFNOIR.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-5ARH77PV.mjs → chunk-XAKZ4ANY.mjs} +2 -2
  21. package/dist/lib/browser/chunk-XAKZ4ANY.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-VGBZKM3O.mjs → chunk-YBPJCY3F.mjs} +2 -2
  23. package/dist/lib/browser/compute-runtime-B4XJVY4Y.mjs +113 -0
  24. package/dist/lib/browser/compute-runtime-B4XJVY4Y.mjs.map +7 -0
  25. package/dist/lib/browser/hooks/index.mjs +5 -4
  26. package/dist/lib/browser/index.mjs +19 -10
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/{intent-resolver-D2OHKQRR.mjs → intent-resolver-5HR7M7T6.mjs} +8 -8
  29. package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs.map +7 -0
  30. package/dist/lib/browser/meta.json +1 -1
  31. package/dist/lib/browser/{react-surface-JXFO46V4.mjs → react-surface-TKU2EQ5A.mjs} +6 -5
  32. package/dist/lib/browser/react-surface-TKU2EQ5A.mjs.map +7 -0
  33. package/dist/lib/browser/types/index.mjs +2 -2
  34. package/dist/lib/node-esm/{AutomationPanel-GHK5UG4K.mjs → AutomationPanel-F5CTC6AT.mjs} +4 -4
  35. package/dist/lib/node-esm/{AutomationSettings-XENNIIZM.mjs → AutomationSettings-BQLJIFRT.mjs} +6 -7
  36. package/dist/lib/node-esm/FunctionsContainer-ZHHJPQAZ.mjs +145 -0
  37. package/dist/lib/node-esm/FunctionsContainer-ZHHJPQAZ.mjs.map +7 -0
  38. package/dist/lib/node-esm/{FunctionsPanel-SAMRTELO.mjs → FunctionsPanel-RVVCS6VH.mjs} +3 -3
  39. package/dist/lib/node-esm/{app-graph-builder-TR2WXPX2.mjs → app-graph-builder-SLQOO7GH.mjs} +7 -7
  40. package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-LWASMQIF.mjs → chunk-3IYSC75Z.mjs} +5 -5
  42. package/dist/lib/node-esm/chunk-7B6NAAI6.mjs +101 -0
  43. package/dist/lib/node-esm/chunk-7B6NAAI6.mjs.map +7 -0
  44. package/dist/lib/node-esm/{chunk-5MQJPJR2.mjs → chunk-CEVIVRTY.mjs} +6 -2
  45. package/dist/lib/node-esm/chunk-CEVIVRTY.mjs.map +7 -0
  46. package/dist/lib/node-esm/{chunk-EX74SIDO.mjs → chunk-CF2SWXPW.mjs} +26 -42
  47. package/dist/lib/node-esm/chunk-CF2SWXPW.mjs.map +7 -0
  48. package/dist/lib/node-esm/{chunk-CJUI6AKX.mjs → chunk-ECJKIUBO.mjs} +2 -2
  49. package/dist/lib/node-esm/{chunk-3EWMZAU6.mjs → chunk-F76XVENA.mjs} +38 -18
  50. package/dist/lib/node-esm/chunk-F76XVENA.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-WHCSOUNN.mjs → chunk-KB7NFEYY.mjs} +2 -2
  52. package/dist/lib/node-esm/chunk-KB7NFEYY.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-YQXW3JXD.mjs → chunk-RVK52XGK.mjs} +27 -12
  54. package/dist/lib/node-esm/chunk-RVK52XGK.mjs.map +7 -0
  55. package/dist/lib/node-esm/compute-runtime-JUWTQXOV.mjs +114 -0
  56. package/dist/lib/node-esm/compute-runtime-JUWTQXOV.mjs.map +7 -0
  57. package/dist/lib/node-esm/hooks/index.mjs +5 -4
  58. package/dist/lib/node-esm/index.mjs +19 -10
  59. package/dist/lib/node-esm/index.mjs.map +3 -3
  60. package/dist/lib/node-esm/{intent-resolver-2LGBVXT5.mjs → intent-resolver-KDRYB5BC.mjs} +8 -8
  61. package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs.map +7 -0
  62. package/dist/lib/node-esm/meta.json +1 -1
  63. package/dist/lib/node-esm/{react-surface-YDJ43B3N.mjs → react-surface-7QROSEGH.mjs} +6 -5
  64. package/dist/lib/node-esm/react-surface-7QROSEGH.mjs.map +7 -0
  65. package/dist/lib/node-esm/types/index.mjs +2 -2
  66. package/dist/types/src/capabilities/capabilities.d.ts +2 -1
  67. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  68. package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  70. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +2 -2
  71. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  72. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +3 -0
  73. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/FunctionsContainer.d.ts.map +1 -1
  75. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  76. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts +8 -0
  77. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -0
  78. package/dist/types/src/components/FunctionsRegistry/index.d.ts +2 -0
  79. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -0
  80. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +2 -2
  81. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  82. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  83. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +6 -5
  84. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  85. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +3 -1
  86. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  87. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +5 -1
  88. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -1
  89. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +2 -2
  90. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  91. package/dist/types/src/index.d.ts +1 -0
  92. package/dist/types/src/index.d.ts.map +1 -1
  93. package/dist/types/src/meta.d.ts.map +1 -1
  94. package/dist/types/src/testing/test-functions.d.ts +2 -3
  95. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  96. package/dist/types/src/translations.d.ts +3 -0
  97. package/dist/types/src/translations.d.ts.map +1 -1
  98. package/dist/types/tsconfig.tsbuildinfo +1 -1
  99. package/package.json +36 -33
  100. package/src/AutomationPlugin.tsx +2 -2
  101. package/src/capabilities/app-graph-builder.ts +6 -6
  102. package/src/capabilities/capabilities.ts +2 -9
  103. package/src/capabilities/compute-runtime.ts +27 -36
  104. package/src/capabilities/intent-resolver.ts +5 -5
  105. package/src/capabilities/react-surface.tsx +2 -1
  106. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +4 -5
  107. package/src/components/AutomationPanel/AutomationPanel.tsx +48 -35
  108. package/src/components/FunctionsContainer.tsx +7 -0
  109. package/src/components/FunctionsPanel/FunctionsPanel.tsx +32 -13
  110. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +127 -0
  111. package/src/components/FunctionsRegistry/index.ts +5 -0
  112. package/src/components/TriggerEditor/FunctionInputEditor.tsx +2 -2
  113. package/src/components/TriggerEditor/SpecSelector.tsx +4 -5
  114. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +37 -16
  115. package/src/components/TriggerEditor/TriggerEditor.tsx +24 -54
  116. package/src/hooks/useComputeRuntimeCallback.ts +40 -2
  117. package/src/hooks/useTriggerRuntimeControls.ts +4 -3
  118. package/src/index.ts +1 -0
  119. package/src/meta.ts +5 -2
  120. package/src/testing/test-functions.ts +2 -2
  121. package/src/translations.ts +3 -0
  122. package/dist/lib/browser/AutomationPanel-PNBH5L5C.mjs +0 -11
  123. package/dist/lib/browser/FunctionsContainer-HHBMPUOD.mjs +0 -36
  124. package/dist/lib/browser/FunctionsContainer-HHBMPUOD.mjs.map +0 -7
  125. package/dist/lib/browser/app-graph-builder-DV5HMFX4.mjs.map +0 -7
  126. package/dist/lib/browser/chunk-5ARH77PV.mjs.map +0 -7
  127. package/dist/lib/browser/chunk-DLLE4FKP.mjs.map +0 -7
  128. package/dist/lib/browser/chunk-LC3QQU47.mjs.map +0 -7
  129. package/dist/lib/browser/chunk-MVPRI3DB.mjs +0 -53
  130. package/dist/lib/browser/chunk-MVPRI3DB.mjs.map +0 -7
  131. package/dist/lib/browser/chunk-NIJWEQRD.mjs.map +0 -7
  132. package/dist/lib/browser/chunk-QT3YWUOT.mjs +0 -14
  133. package/dist/lib/browser/chunk-QT3YWUOT.mjs.map +0 -7
  134. package/dist/lib/browser/chunk-WWURMV25.mjs +0 -13
  135. package/dist/lib/browser/chunk-WWURMV25.mjs.map +0 -7
  136. package/dist/lib/browser/compute-runtime-YJREH6WP.mjs +0 -160
  137. package/dist/lib/browser/compute-runtime-YJREH6WP.mjs.map +0 -7
  138. package/dist/lib/browser/intent-resolver-D2OHKQRR.mjs.map +0 -7
  139. package/dist/lib/browser/react-surface-JXFO46V4.mjs.map +0 -7
  140. package/dist/lib/node-esm/FunctionsContainer-ZKVOBUHV.mjs +0 -37
  141. package/dist/lib/node-esm/FunctionsContainer-ZKVOBUHV.mjs.map +0 -7
  142. package/dist/lib/node-esm/app-graph-builder-TR2WXPX2.mjs.map +0 -7
  143. package/dist/lib/node-esm/chunk-3EWMZAU6.mjs.map +0 -7
  144. package/dist/lib/node-esm/chunk-5MQJPJR2.mjs.map +0 -7
  145. package/dist/lib/node-esm/chunk-EX74SIDO.mjs.map +0 -7
  146. package/dist/lib/node-esm/chunk-QCA543ZR.mjs +0 -54
  147. package/dist/lib/node-esm/chunk-QCA543ZR.mjs.map +0 -7
  148. package/dist/lib/node-esm/chunk-U7LJXQS4.mjs +0 -16
  149. package/dist/lib/node-esm/chunk-U7LJXQS4.mjs.map +0 -7
  150. package/dist/lib/node-esm/chunk-WHCSOUNN.mjs.map +0 -7
  151. package/dist/lib/node-esm/chunk-YQXW3JXD.mjs.map +0 -7
  152. package/dist/lib/node-esm/compute-runtime-CMEPAYND.mjs +0 -161
  153. package/dist/lib/node-esm/compute-runtime-CMEPAYND.mjs.map +0 -7
  154. package/dist/lib/node-esm/intent-resolver-2LGBVXT5.mjs.map +0 -7
  155. package/dist/lib/node-esm/react-surface-YDJ43B3N.mjs.map +0 -7
  156. /package/dist/lib/browser/{AutomationPanel-PNBH5L5C.mjs.map → AutomationPanel-M4M77L4V.mjs.map} +0 -0
  157. /package/dist/lib/browser/{FunctionsPanel-NRIKAPQV.mjs.map → FunctionsPanel-CRW6SJUN.mjs.map} +0 -0
  158. /package/dist/lib/browser/{chunk-AY67OUDA.mjs.map → chunk-CZVA5NMD.mjs.map} +0 -0
  159. /package/dist/lib/browser/{chunk-VGBZKM3O.mjs.map → chunk-YBPJCY3F.mjs.map} +0 -0
  160. /package/dist/lib/node-esm/{AutomationPanel-GHK5UG4K.mjs.map → AutomationPanel-F5CTC6AT.mjs.map} +0 -0
  161. /package/dist/lib/{browser/AutomationSettings-3LABN6ER.mjs.map → node-esm/AutomationSettings-BQLJIFRT.mjs.map} +0 -0
  162. /package/dist/lib/node-esm/{FunctionsPanel-SAMRTELO.mjs.map → FunctionsPanel-RVVCS6VH.mjs.map} +0 -0
  163. /package/dist/lib/node-esm/{chunk-LWASMQIF.mjs.map → chunk-3IYSC75Z.mjs.map} +0 -0
  164. /package/dist/lib/node-esm/{chunk-CJUI6AKX.mjs.map → chunk-ECJKIUBO.mjs.map} +0 -0
@@ -0,0 +1,11 @@
1
+ import {
2
+ AutomationPanel,
3
+ AutomationPanel_default
4
+ } from "./chunk-T6ZESHDY.mjs";
5
+ import "./chunk-7W6QMY3L.mjs";
6
+ import "./chunk-LZQFZO3B.mjs";
7
+ export {
8
+ AutomationPanel,
9
+ AutomationPanel_default as default
10
+ };
11
+ //# sourceMappingURL=AutomationPanel-M4M77L4V.mjs.map
@@ -1,15 +1,14 @@
1
1
  import {
2
2
  useTriggerRuntimeControls
3
- } from "./chunk-MVPRI3DB.mjs";
4
- import "./chunk-QT3YWUOT.mjs";
5
- import "./chunk-5ARH77PV.mjs";
3
+ } from "./chunk-4MBM6C6A.mjs";
4
+ import "./chunk-XAKZ4ANY.mjs";
6
5
  import {
7
6
  AutomationPanel
8
- } from "./chunk-LC3QQU47.mjs";
9
- import "./chunk-NIJWEQRD.mjs";
7
+ } from "./chunk-T6ZESHDY.mjs";
8
+ import "./chunk-7W6QMY3L.mjs";
10
9
  import {
11
10
  meta
12
- } from "./chunk-WWURMV25.mjs";
11
+ } from "./chunk-LZQFZO3B.mjs";
13
12
 
14
13
  // src/components/AutomationSettings.tsx
15
14
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
@@ -66,4 +65,4 @@ export {
66
65
  AutomationSettings,
67
66
  AutomationSettings_default as default
68
67
  };
69
- //# sourceMappingURL=AutomationSettings-3LABN6ER.mjs.map
68
+ //# sourceMappingURL=AutomationSettings-4HCI6KJR.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/AutomationSettings.tsx", "../../../src/components/TriggerSettings.tsx"],
4
4
  "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\n\nimport { AutomationPanel, type AutomationPanelProps } from './AutomationPanel';\nimport { TriggersSettings } from './TriggerSettings';\n\nexport const AutomationSettings = (props: AutomationPanelProps) => {\n const { t } = useTranslation(meta.id);\n return (\n <ControlPage>\n <ControlSection\n title={t('automation verbose label', { ns: meta.id })}\n description={t('automation description', { ns: meta.id })}\n >\n <AutomationPanel {...props} />\n <TriggersSettings space={props.space} />\n </ControlSection>\n </ControlPage>\n );\n};\n\nexport default AutomationSettings;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { ControlItemInput } from '@dxos/react-ui-form';\n\nimport { useTriggerRuntimeControls } from '../hooks';\nimport { meta } from '../meta';\n\nexport const TriggersSettings = ({ space }: { space: Space }) => {\n const { triggers, isRunning, start, stop } = useTriggerRuntimeControls(space);\n const { t } = useTranslation(meta.id);\n\n return (\n <div className='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'>\n <ControlItemInput title={t('runtime label')} description={t('runtime description')}>\n <Input.Switch classNames='justify-self-end' checked={isRunning} onCheckedChange={isRunning ? stop : start} />\n </ControlItemInput>\n </div>\n );\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;AAIA,OAAOA,YAAW;AAElB,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,aAAaC,sBAAsB;;;;ACH5C,OAAOC,WAAW;AAGlB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,wBAAwB;AAK1B,IAAMC,mBAAmB,CAAC,EAAEC,MAAK,MAAoB;;;AAC1D,UAAM,EAAEC,UAAUC,WAAWC,OAAOC,KAAI,IAAKC,0BAA0BL,KAAAA;AACvE,UAAM,EAAEM,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,WACE,sBAAA,cAACC,OAAAA;MAAIC,WAAU;OACb,sBAAA,cAACC,kBAAAA;MAAiBC,OAAOP,EAAE,eAAA;MAAkBQ,aAAaR,EAAE,qBAAA;OAC1D,sBAAA,cAACS,MAAMC,QAAM;MAACC,YAAW;MAAmBC,SAAShB;MAAWiB,iBAAiBjB,YAAYE,OAAOD;;;;;AAI5G;;;ADVO,IAAMiB,qBAAqB,CAACC,UAAAA;;;AACjC,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,WACE,gBAAAC,OAAA,cAACC,aAAAA,MACC,gBAAAD,OAAA,cAACE,gBAAAA;MACCC,OAAOP,EAAE,4BAA4B;QAAEQ,IAAIN,KAAKC;MAAG,CAAA;MACnDM,aAAaT,EAAE,0BAA0B;QAAEQ,IAAIN,KAAKC;MAAG,CAAA;OAEvD,gBAAAC,OAAA,cAACM,iBAAoBX,KAAAA,GACrB,gBAAAK,OAAA,cAACO,kBAAAA;MAAiBC,OAAOb,MAAMa;;;;;AAIvC;AAEA,IAAA,6BAAed;",
5
+ "mappings": ";;;;;;;;;;;;;;AAIA,OAAOA,YAAW;AAElB,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,aAAaC,sBAAsB;;;;ACH5C,OAAOC,WAAW;AAGlB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,wBAAwB;AAK1B,IAAMC,mBAAmB,CAAC,EAAEC,MAAK,MAAoB;;;AAC1D,UAAM,EAAEC,UAAUC,WAAWC,OAAOC,KAAI,IAAKC,0BAA0BL,KAAAA;AACvE,UAAM,EAAEM,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,WACE,sBAAA,cAACC,OAAAA;MAAIC,WAAU;OACb,sBAAA,cAACC,kBAAAA;MAAiBC,OAAOP,EAAE,eAAA;MAAkBQ,aAAaR,EAAE,qBAAA;OAC1D,sBAAA,cAACS,MAAMC,QAAM;MAACC,YAAW;MAAmBC,SAAShB;MAAWiB,iBAAiBjB,YAAYE,OAAOD;;;;;AAI5G;;;ADVO,IAAMiB,qBAAqB,CAACC,UAAAA;;;AACjC,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,WACE,gBAAAC,OAAA,cAACC,aAAAA,MACC,gBAAAD,OAAA,cAACE,gBAAAA;MACCC,OAAOP,EAAE,4BAA4B;QAAEQ,IAAIN,KAAKC;MAAG,CAAA;MACnDM,aAAaT,EAAE,0BAA0B;QAAEQ,IAAIN,KAAKC;MAAG,CAAA;OAEvD,gBAAAC,OAAA,cAACM,iBAAoBX,KAAAA,GACrB,gBAAAK,OAAA,cAACO,kBAAAA;MAAiBC,OAAOb,MAAMa;;;;;AAIvC;AAEA,IAAA,6BAAed;",
6
6
  "names": ["React", "useTranslation", "ControlPage", "ControlSection", "React", "Input", "useTranslation", "ControlItemInput", "TriggersSettings", "space", "triggers", "isRunning", "start", "stop", "useTriggerRuntimeControls", "t", "useTranslation", "meta", "id", "div", "className", "ControlItemInput", "title", "description", "Input", "Switch", "classNames", "checked", "onCheckedChange", "AutomationSettings", "props", "t", "useTranslation", "meta", "id", "React", "ControlPage", "ControlSection", "title", "ns", "description", "AutomationPanel", "TriggersSettings", "space"]
7
7
  }
@@ -0,0 +1,144 @@
1
+ import {
2
+ FunctionsPanel
3
+ } from "./chunk-TWWFNOIR.mjs";
4
+ import {
5
+ meta
6
+ } from "./chunk-LZQFZO3B.mjs";
7
+
8
+ // src/components/FunctionsContainer.tsx
9
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
10
+ import React2 from "react";
11
+ import { useTranslation as useTranslation2 } from "@dxos/react-ui";
12
+ import { ControlPage, ControlSection } from "@dxos/react-ui-form";
13
+
14
+ // src/components/FunctionsRegistry/FunctionsRegistry.tsx
15
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
16
+ import * as Array from "effect/Array";
17
+ import * as EffectFunction from "effect/Function";
18
+ import * as Order from "effect/Order";
19
+ import * as Schema from "effect/Schema";
20
+ import { useState } from "react";
21
+ import React, { useCallback } from "react";
22
+ import { Function } from "@dxos/functions";
23
+ import { getDeployedFunctions } from "@dxos/functions-runtime/edge";
24
+ import { useClient } from "@dxos/react-client";
25
+ import { Filter, Query, useQuery } from "@dxos/react-client/echo";
26
+ import { useAsyncEffect } from "@dxos/react-ui";
27
+ import { IconButton, useTranslation } from "@dxos/react-ui";
28
+ import { controlItemClasses } from "@dxos/react-ui-form";
29
+ import { List } from "@dxos/react-ui-list";
30
+ import { ghostHover, mx } from "@dxos/react-ui-theme";
31
+ var grid = "grid grid-cols-[1fr_1fr_auto] min-bs-[2.5rem]";
32
+ var FunctionsRegistry = ({ space }) => {
33
+ var _effect = _useSignals();
34
+ try {
35
+ const client = useClient();
36
+ const [loading, setLoading] = useState(true);
37
+ const [functions, setFunctions] = useState([]);
38
+ const { t } = useTranslation(meta.id);
39
+ const dbFunctions = useQuery(space, Filter.type(Function.Function));
40
+ const state = (func) => {
41
+ const dbFunction = dbFunctions.find((f) => f.key === func.key);
42
+ if (!dbFunction) {
43
+ return "import";
44
+ }
45
+ if (dbFunction.version === func.version && dbFunction.updated === func.updated) {
46
+ return "none";
47
+ }
48
+ return "update";
49
+ };
50
+ useAsyncEffect(async () => {
51
+ setLoading(true);
52
+ const functions2 = await getDeployedFunctions(client);
53
+ setFunctions(functions2);
54
+ setLoading(false);
55
+ }, []);
56
+ const dedupedFunctions = EffectFunction.pipe(functions, Array.filter((_) => _.key !== void 0), Array.sort(Order.reverse(Order.mapInput(Order.string, (_) => _.updated ?? ""))), Array.dedupeWith((self, that) => self.key === that.key), Array.sort(Order.mapInput(Order.string, (_) => _.key ?? "")));
57
+ const hanleImportOrUpdate = useCallback(async (func) => {
58
+ const { objects: [existingFunc] } = await space.db.query(Query.type(Function.Function, {
59
+ key: func.key
60
+ })).run();
61
+ if (!existingFunc) {
62
+ space.db.add(func);
63
+ return;
64
+ }
65
+ Function.setFrom(existingFunc, func);
66
+ }, [
67
+ space
68
+ ]);
69
+ return /* @__PURE__ */ React.createElement("div", {
70
+ role: "none",
71
+ className: mx(controlItemClasses)
72
+ }, dedupedFunctions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
73
+ items: dedupedFunctions,
74
+ isItem: Schema.is(Function.Function),
75
+ getId: (func) => func.id
76
+ }, ({ items }) => /* @__PURE__ */ React.createElement("div", {
77
+ role: "list",
78
+ className: "flex flex-col is-full"
79
+ }, items?.map((func) => /* @__PURE__ */ React.createElement(List.Item, {
80
+ key: func.id,
81
+ item: func,
82
+ classNames: mx(grid, ghostHover, "items-center", "pli-2", "min-bs-[3rem]")
83
+ }, /* @__PURE__ */ React.createElement("div", {
84
+ className: "flex flex-col truncate"
85
+ }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
86
+ classNames: "truncate"
87
+ }, func.name), /* @__PURE__ */ React.createElement("div", {
88
+ className: "text-xs text-description truncate"
89
+ }, func.key)), /* @__PURE__ */ React.createElement("div", {
90
+ className: "flex flex-col truncate"
91
+ }, /* @__PURE__ */ React.createElement("div", {
92
+ className: "text-xs text-description truncate"
93
+ }, func.version), /* @__PURE__ */ React.createElement("div", {
94
+ className: "text-xs text-description truncate"
95
+ }, func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : "")), /* @__PURE__ */ React.createElement(IconButton, {
96
+ iconOnly: true,
97
+ icon: state(func) === "update" ? "ph--arrows-clockwise--regular" : "ph--download--regular",
98
+ label: state(func) === "update" ? t("update function button label") : t("import function button label"),
99
+ disabled: state(func) === "none",
100
+ onClick: () => hanleImportOrUpdate(func)
101
+ }))))), dedupedFunctions.length === 0 && !loading && /* @__PURE__ */ React.createElement("div", {
102
+ className: "text-center plb-4 text-gray-500"
103
+ }, t("no functions found")), loading && /* @__PURE__ */ React.createElement("div", {
104
+ className: "text-center plb-4 text-gray-500"
105
+ }, t("loading functions")));
106
+ } finally {
107
+ _effect.f();
108
+ }
109
+ };
110
+
111
+ // src/components/FunctionsContainer.tsx
112
+ var FunctionsContainer = ({ space }) => {
113
+ var _effect = _useSignals2();
114
+ try {
115
+ const { t } = useTranslation2(meta.id);
116
+ return /* @__PURE__ */ React2.createElement(ControlPage, null, /* @__PURE__ */ React2.createElement(ControlSection, {
117
+ title: t("functions verbose label", {
118
+ ns: meta.id
119
+ }),
120
+ description: t("functions description", {
121
+ ns: meta.id
122
+ })
123
+ }, /* @__PURE__ */ React2.createElement(FunctionsPanel, {
124
+ space
125
+ })), /* @__PURE__ */ React2.createElement(ControlSection, {
126
+ title: t("functions registry verbose label", {
127
+ ns: meta.id
128
+ }),
129
+ description: t("functions registry description", {
130
+ ns: meta.id
131
+ })
132
+ }, /* @__PURE__ */ React2.createElement(FunctionsRegistry, {
133
+ space
134
+ })));
135
+ } finally {
136
+ _effect.f();
137
+ }
138
+ };
139
+ var FunctionsContainer_default = FunctionsContainer;
140
+ export {
141
+ FunctionsContainer,
142
+ FunctionsContainer_default as default
143
+ };
144
+ //# sourceMappingURL=FunctionsContainer-CDVBRQCT.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/FunctionsContainer.tsx", "../../../src/components/FunctionsRegistry/FunctionsRegistry.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\n\nimport { FunctionsPanel } from './FunctionsPanel';\nimport { FunctionsRegistry } from './FunctionsRegistry';\n\nexport const FunctionsContainer = ({ space }: { space: Space }) => {\n const { t } = useTranslation(meta.id);\n return (\n <ControlPage>\n <ControlSection\n title={t('functions verbose label', { ns: meta.id })}\n description={t('functions description', { ns: meta.id })}\n >\n <FunctionsPanel space={space} />\n </ControlSection>\n <ControlSection\n title={t('functions registry verbose label', { ns: meta.id })}\n description={t('functions registry description', { ns: meta.id })}\n >\n <FunctionsRegistry space={space} />\n </ControlSection>\n </ControlPage>\n );\n};\n\nexport default FunctionsContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as EffectFunction from 'effect/Function';\nimport * as Order from 'effect/Order';\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 { useAsyncEffect } from '@dxos/react-ui';\nimport { IconButton, useTranslation } from '@dxos/react-ui';\nimport { controlItemClasses } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { meta } from '../../meta';\n\nconst grid = 'grid grid-cols-[1fr_1fr_auto] min-bs-[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, 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);\n setFunctions(functions);\n setLoading(false);\n }, []);\n\n const dedupedFunctions = EffectFunction.pipe(\n functions,\n Array.filter((_) => _.key !== undefined),\n Array.sort(Order.reverse(Order.mapInput(Order.string, (_: Function.Function) => _.updated ?? ''))),\n Array.dedupeWith((self, that) => self.key === that.key),\n Array.sort(Order.mapInput(Order.string, (_: Function.Function) => _.key ?? '')),\n );\n\n const hanleImportOrUpdate = useCallback(\n async (func: Function.Function) => {\n const {\n objects: [existingFunc],\n } = await space.db.query(Query.type(Function.Function, { key: func.key })).run();\n if (!existingFunc) {\n space.db.add(func);\n return;\n }\n Function.setFrom(existingFunc, func);\n },\n [space],\n );\n\n return (\n <div role='none' className={mx(controlItemClasses)}>\n {dedupedFunctions.length > 0 && (\n <List.Root<Function.Function>\n items={dedupedFunctions}\n isItem={Schema.is(Function.Function)}\n getId={(func) => func.id}\n >\n {({ items }) => (\n <div role='list' className='flex flex-col is-full'>\n {items?.map((func) => (\n <List.Item<Function.Function>\n key={func.id}\n item={func}\n classNames={mx(grid, ghostHover, 'items-center', 'pli-2', 'min-bs-[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 {dedupedFunctions.length === 0 && !loading && (\n <div className='text-center plb-4 text-gray-500'>{t('no functions found')}</div>\n )}\n {loading && <div className='text-center plb-4 text-gray-500'>{t('loading functions')}</div>}\n </div>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useTranslation", "ControlPage", "ControlSection", "Array", "EffectFunction", "Order", "Schema", "useState", "React", "useCallback", "Function", "getDeployedFunctions", "useClient", "Filter", "Query", "useQuery", "useAsyncEffect", "IconButton", "useTranslation", "controlItemClasses", "List", "ghostHover", "mx", "grid", "FunctionsRegistry", "space", "client", "useClient", "loading", "setLoading", "useState", "functions", "setFunctions", "t", "useTranslation", "meta", "id", "dbFunctions", "useQuery", "Filter", "type", "Function", "state", "func", "dbFunction", "find", "f", "key", "version", "updated", "useAsyncEffect", "getDeployedFunctions", "dedupedFunctions", "pipe", "filter", "_", "undefined", "sort", "reverse", "mapInput", "string", "dedupeWith", "self", "that", "hanleImportOrUpdate", "useCallback", "objects", "existingFunc", "db", "query", "Query", "run", "add", "setFrom", "div", "role", "className", "mx", "controlItemClasses", "length", "List", "Root", "items", "isItem", "is", "getId", "map", "Item", "item", "classNames", "ghostHover", "ItemTitle", "name", "Date", "toLocaleString", "IconButton", "iconOnly", "icon", "label", "disabled", "onClick", "FunctionsContainer", "space", "t", "useTranslation", "meta", "id", "React", "ControlPage", "ControlSection", "title", "ns", "description", "FunctionsPanel", "FunctionsRegistry"]
7
+ }
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  FunctionsPanel,
3
3
  FunctionsPanel_default
4
- } from "./chunk-DLLE4FKP.mjs";
5
- import "./chunk-WWURMV25.mjs";
4
+ } from "./chunk-TWWFNOIR.mjs";
5
+ import "./chunk-LZQFZO3B.mjs";
6
6
  export {
7
7
  FunctionsPanel,
8
8
  FunctionsPanel_default as default
9
9
  };
10
- //# sourceMappingURL=FunctionsPanel-NRIKAPQV.mjs.map
10
+ //# sourceMappingURL=FunctionsPanel-CRW6SJUN.mjs.map
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-WWURMV25.mjs";
3
+ } from "./chunk-LZQFZO3B.mjs";
4
4
 
5
5
  // src/capabilities/app-graph-builder.ts
6
- import { Rx } from "@effect-rx/rx-react";
6
+ import { Atom } from "@effect-atom/atom-react";
7
7
  import * as Function from "effect/Function";
8
8
  import * as Option from "effect/Option";
9
9
  import { Capabilities, contributes } from "@dxos/app-framework";
10
10
  import { Obj } from "@dxos/echo";
11
- import { ScriptType } from "@dxos/functions";
11
+ import { Script } from "@dxos/functions";
12
12
  import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
13
13
  import { createExtension } from "@dxos/plugin-graph";
14
14
  import { meta as spaceMeta } from "@dxos/plugin-space";
15
15
  var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphBuilder, [
16
16
  createExtension({
17
17
  id: `${meta.id}/space-settings-automation`,
18
- connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === `${spaceMeta.id}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
18
+ connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === `${spaceMeta.id}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
19
19
  {
20
20
  id: `automation-${node2.id}`,
21
21
  type: `${meta.id}/space-settings-automation`,
@@ -34,7 +34,7 @@ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphB
34
34
  }),
35
35
  createExtension({
36
36
  id: `${meta.id}/space-settings-functions`,
37
- connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === `${spaceMeta.id}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
37
+ connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === `${spaceMeta.id}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
38
38
  {
39
39
  id: `functions-${node2.id}`,
40
40
  type: `${meta.id}/space-settings-functions`,
@@ -53,7 +53,7 @@ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphB
53
53
  }),
54
54
  createExtension({
55
55
  id: `${meta.id}/script-companion`,
56
- connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(ScriptType, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
56
+ connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(Script.Script, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
57
57
  {
58
58
  id: [
59
59
  node2.id,
@@ -78,4 +78,4 @@ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphB
78
78
  export {
79
79
  app_graph_builder_default as default
80
80
  };
81
- //# sourceMappingURL=app-graph-builder-DV5HMFX4.mjs.map
81
+ //# sourceMappingURL=app-graph-builder-W7LLC6XW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { Script } from '@dxos/functions';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension } from '@dxos/plugin-graph';\nimport { meta as spaceMeta } from '@dxos/plugin-space';\n\nimport { meta } from '../meta';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/space-settings-automation`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.type === `${spaceMeta.id}/settings` ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: `automation-${node.id}`,\n type: `${meta.id}/space-settings-automation`,\n data: `${meta.id}/space-settings-automation`,\n properties: {\n label: ['automation panel label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/space-settings-functions`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.type === `${spaceMeta.id}/settings` ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: `functions-${node.id}`,\n type: `${meta.id}/space-settings-functions`,\n data: `${meta.id}/space-settings-functions`,\n properties: {\n label: ['functions panel label', { ns: meta.id }],\n icon: 'ph--function--regular',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/script-companion`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(Script.Script, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'automation'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'automation',\n properties: {\n label: ['script automation label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AAExB,SAASC,cAAkCC,mBAAmB;AAC9D,SAASC,WAAW;AACpB,SAASC,cAAc;AACvB,SAASC,2BAA2BC,4BAA4B;AAChE,SAASC,uBAAuB;AAChC,SAASC,QAAQC,iBAAiB;AAIlC,IAAA,6BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUA,MAAKM,SAAS,GAAGC,UAAUV,EAAE,cAAqBW,YAAKR,KAAAA,IAAeS,YAAI,CAAA,GAC7FC,WAAI,CAACV,UAAS;MACnB;QACEH,IAAI,cAAcG,MAAKH,EAAE;QACzBS,MAAM,GAAGR,KAAKD,EAAE;QAChBc,MAAM,GAAGb,KAAKD,EAAE;QAChBe,YAAY;UACVC,OAAO;YAAC;YAA0B;cAAEC,IAAIhB,KAAKD;YAAG;;UAChDkB,MAAM;QACR;MACF;KACD,GACMC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACApB,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUA,MAAKM,SAAS,GAAGC,UAAUV,EAAE,cAAqBW,YAAKR,KAAAA,IAAeS,YAAI,CAAA,GAC7FC,WAAI,CAACV,UAAS;MACnB;QACEH,IAAI,aAAaG,MAAKH,EAAE;QACxBS,MAAM,GAAGR,KAAKD,EAAE;QAChBc,MAAM,GAAGb,KAAKD,EAAE;QAChBe,YAAY;UACVC,OAAO;YAAC;YAAyB;cAAEC,IAAIhB,KAAKD;YAAG;;UAC/CkB,MAAM;QACR;MACF;KACD,GACMC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACApB,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUiB,IAAIC,WAAWC,OAAOA,QAAQnB,MAAKW,IAAI,IAAWH,YAAKR,KAAAA,IAAeS,YAAI,CAAA,GAC7FC,WAAI,CAACV,UAAS;MACnB;QACEH,IAAI;UAACG,MAAKH;UAAI;UAAcuB,KAAKC,yBAAAA;QACjCf,MAAMgB;QACNX,MAAM;QACNC,YAAY;UACVC,OAAO;YAAC;YAA2B;cAAEC,IAAIhB,KAAKD;YAAG;;UACjDkB,MAAM;UACNQ,aAAa;QACf;MACF;KACD,GACMP,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;CACD;",
6
+ "names": ["Atom", "Function", "Option", "Capabilities", "contributes", "Obj", "Script", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "createExtension", "meta", "spaceMeta", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "connector", "node", "Atom", "make", "get", "pipe", "flatMap", "type", "spaceMeta", "some", "none", "map", "data", "properties", "label", "ns", "icon", "getOrElse", "Obj", "instanceOf", "Script", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "disposition"]
7
+ }
@@ -0,0 +1,100 @@
1
+ import {
2
+ AutomationCapabilities
3
+ } from "./chunk-XAKZ4ANY.mjs";
4
+
5
+ // src/hooks/useComputeRuntimeCallback.ts
6
+ import * as Cause from "effect/Cause";
7
+ import * as Effect from "effect/Effect";
8
+ import * as Exit from "effect/Exit";
9
+ import { useCallback } from "react";
10
+ import { useCapability } from "@dxos/app-framework/react";
11
+ import { FunctionInvocationService } from "@dxos/functions";
12
+ import { InvocationTracer, TracingServiceExt } from "@dxos/functions-runtime";
13
+ import { log } from "@dxos/log";
14
+
15
+ // src/capabilities/index.ts
16
+ import { lazy } from "@dxos/app-framework";
17
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-W7LLC6XW.mjs"));
18
+ var ComputeRuntime = lazy(() => import("./compute-runtime-B4XJVY4Y.mjs"));
19
+ var IntentResolver = lazy(() => import("./intent-resolver-5HR7M7T6.mjs"));
20
+ var ReactSurface = lazy(() => import("./react-surface-TKU2EQ5A.mjs"));
21
+
22
+ // src/hooks/useComputeRuntimeCallback.ts
23
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/hooks/useComputeRuntimeCallback.ts";
24
+ var useComputeRuntimeCallback = (space, fn, deps) => {
25
+ const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);
26
+ const runtime = space !== void 0 ? computeRuntime.getRuntime(space.id) : void 0;
27
+ return useCallback(() => {
28
+ if (!runtime) {
29
+ throw new TypeError("Space not provided to useComputeRuntimeCallback");
30
+ }
31
+ return runtime.runPromise(fn());
32
+ }, [
33
+ runtime,
34
+ ...deps ?? []
35
+ ]);
36
+ };
37
+ var invokeFunctionWithTracing = (functionDef, inputData) => Effect.gen(function* () {
38
+ const tracer = yield* InvocationTracer;
39
+ const trace = yield* tracer.traceInvocationStart({
40
+ target: void 0,
41
+ payload: {
42
+ data: {}
43
+ }
44
+ });
45
+ const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)), Effect.exit);
46
+ if (Exit.isFailure(result)) {
47
+ const error = Cause.prettyErrors(result.cause)[0];
48
+ log.error(error.message, error.cause ?? error.stack, {
49
+ F: __dxlog_file,
50
+ L: 58,
51
+ S: this,
52
+ C: (f, a) => f(...a)
53
+ });
54
+ }
55
+ yield* tracer.traceInvocationEnd({
56
+ trace,
57
+ // TODO(dmaretskyi): Might miss errors.
58
+ exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : void 0
59
+ });
60
+ return result;
61
+ });
62
+
63
+ // src/hooks/useTriggerRuntimeControls.ts
64
+ import * as Effect2 from "effect/Effect";
65
+ import { Filter } from "@dxos/echo";
66
+ import { Trigger } from "@dxos/functions";
67
+ import { TriggerDispatcher } from "@dxos/functions-runtime";
68
+ import { useQuery } from "@dxos/react-client/echo";
69
+ import { useAsyncState } from "@dxos/react-ui";
70
+ var useTriggerRuntimeControls = (space) => {
71
+ const triggers = useQuery(space, Filter.type(Trigger.Trigger));
72
+ const [isRunningState, setIsRunningState] = useAsyncState(useComputeRuntimeCallback(space, () => TriggerDispatcher.pipe(Effect2.map((t) => t.running))));
73
+ const start = useComputeRuntimeCallback(space, Effect2.fnUntraced(function* () {
74
+ const dispatcher = yield* TriggerDispatcher;
75
+ yield* dispatcher.start();
76
+ setIsRunningState(true);
77
+ }));
78
+ const stop = useComputeRuntimeCallback(space, Effect2.fnUntraced(function* () {
79
+ const dispatcher = yield* TriggerDispatcher;
80
+ yield* dispatcher.stop();
81
+ setIsRunningState(false);
82
+ }));
83
+ return {
84
+ triggers,
85
+ isRunning: isRunningState ?? false,
86
+ start: () => void start(),
87
+ stop: () => void stop()
88
+ };
89
+ };
90
+
91
+ export {
92
+ useComputeRuntimeCallback,
93
+ invokeFunctionWithTracing,
94
+ useTriggerRuntimeControls,
95
+ AppGraphBuilder,
96
+ ComputeRuntime,
97
+ IntentResolver,
98
+ ReactSurface
99
+ };
100
+ //# sourceMappingURL=chunk-4MBM6C6A.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useComputeRuntimeCallback.ts", "../../../src/capabilities/index.ts", "../../../src/hooks/useTriggerRuntimeControls.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport { useCallback } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\nimport { type FunctionDefinition, FunctionInvocationService } from '@dxos/functions';\nimport { InvocationTracer, TracingServiceExt } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\nimport type { Space } from '@dxos/react-client/echo';\n\nimport { AutomationCapabilities } from '../capabilities';\n\n/**\n * Create an effectful function that has access to compute services\n */\n// TODO(burdon): Factor out (figure out cross-plugin capabilities dependencies).\nexport const useComputeRuntimeCallback = <T>(\n space: Space | undefined,\n fn: () => Effect.Effect<T, any, AutomationCapabilities.ComputeServices>,\n deps?: React.DependencyList,\n): (() => Promise<T>) => {\n const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);\n const runtime = space !== undefined ? computeRuntime.getRuntime(space.id) : undefined;\n\n return useCallback(() => {\n if (!runtime) {\n throw new TypeError('Space not provided to useComputeRuntimeCallback');\n }\n\n return runtime.runPromise(fn());\n }, [runtime, ...(deps ?? [])]);\n};\n\n// TODO(wittjosiah): Function invoking should automatically be traced (DX-647).\nexport const invokeFunctionWithTracing = <I, O>(functionDef: FunctionDefinition<I, O>, inputData: I) =>\n Effect.gen(function* () {\n const tracer = yield* InvocationTracer;\n const trace = yield* tracer.traceInvocationStart({\n target: undefined,\n payload: {\n data: {},\n },\n });\n\n // Invoke the function.\n const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(\n Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)),\n Effect.exit,\n );\n\n if (Exit.isFailure(result)) {\n const error = Cause.prettyErrors(result.cause)[0];\n log.error(error.message, error.cause ?? error.stack);\n }\n\n yield* tracer.traceInvocationEnd({\n trace,\n // TODO(dmaretskyi): Might miss errors.\n exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : undefined,\n });\n\n return result;\n });\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const ComputeRuntime = lazy(() => import('./compute-runtime'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n\nexport * from './capabilities';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Filter } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { TriggerDispatcher } from '@dxos/functions-runtime';\nimport { type Space, useQuery } from '@dxos/react-client/echo';\nimport { useAsyncState } from '@dxos/react-ui';\n\nimport { useComputeRuntimeCallback } from './useComputeRuntimeCallback';\n\ninterface TriggerRuntimeControls {\n triggers: Trigger.Trigger[];\n isRunning: boolean;\n start: () => void;\n stop: () => void;\n}\n\nexport const useTriggerRuntimeControls = (space: Space | undefined): TriggerRuntimeControls => {\n const triggers = useQuery(space, Filter.type(Trigger.Trigger));\n\n const [isRunningState, setIsRunningState] = useAsyncState(\n useComputeRuntimeCallback(space, () => TriggerDispatcher.pipe(Effect.map((t) => t.running))),\n );\n\n const start = useComputeRuntimeCallback(\n space,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.start();\n setIsRunningState(true);\n }),\n );\n\n const stop = useComputeRuntimeCallback(\n space,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.stop();\n setIsRunningState(false);\n }),\n );\n\n return {\n triggers,\n isRunning: isRunningState ?? false,\n start: () => void start(),\n stop: () => void stop(),\n };\n};\n"],
5
+ "mappings": ";;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,UAAU;AACtB,SAASC,mBAAmB;AAE5B,SAASC,qBAAqB;AAC9B,SAAkCC,iCAAiC;AACnE,SAASC,kBAAkBC,yBAAyB;AACpD,SAASC,WAAW;;;ACRpB,SAASC,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAME,iBAAiBF,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMG,eAAeH,KAAK,MAAM,OAAO,8BAAA,CAAA;;;;ADYvC,IAAMI,4BAA4B,CACvCC,OACAC,IACAC,SAAAA;AAEA,QAAMC,iBAAiBC,cAAcC,uBAAuBC,cAAc;AAC1E,QAAMC,UAAUP,UAAUQ,SAAYL,eAAeM,WAAWT,MAAMU,EAAE,IAAIF;AAE5E,SAAOG,YAAY,MAAA;AACjB,QAAI,CAACJ,SAAS;AACZ,YAAM,IAAIK,UAAU,iDAAA;IACtB;AAEA,WAAOL,QAAQM,WAAWZ,GAAAA,CAAAA;EAC5B,GAAG;IAACM;OAAaL,QAAQ,CAAA;GAAI;AAC/B;AAGO,IAAMY,4BAA4B,CAAOC,aAAuCC,cAC9EC,WAAI,aAAA;AACT,QAAMC,SAAS,OAAOC;AACtB,QAAMC,QAAQ,OAAOF,OAAOG,qBAAqB;IAC/CC,QAAQd;IACRe,SAAS;MACPC,MAAM,CAAC;IACT;EACF,CAAA;AAGA,QAAMC,SAAS,OAAOC,0BAA0BC,eAAeZ,aAAaC,SAAAA,EAAWY,KAC9EC,eAAQC,kBAAkBC,WAAWX,MAAMY,oBAAoB,CAAA,GAC/DC,WAAI;AAGb,MAASC,eAAUT,MAAAA,GAAS;AAC1B,UAAMU,QAAcC,mBAAaX,OAAOY,KAAK,EAAE,CAAA;AAC/CC,QAAIH,MAAMA,MAAMI,SAASJ,MAAME,SAASF,MAAMK,OAAK;;;;;;EACrD;AAEA,SAAOtB,OAAOuB,mBAAmB;IAC/BrB;;IAEAsB,WAAgBR,eAAUT,MAAAA,IAAgBW,mBAAaX,OAAOY,KAAK,EAAE,CAAA,IAAK7B;EAC5E,CAAA;AAEA,SAAOiB;AACT,CAAA;;;AE/DF,YAAYkB,aAAY;AAExB,SAASC,cAAc;AACvB,SAASC,eAAe;AACxB,SAASC,yBAAyB;AAClC,SAAqBC,gBAAgB;AACrC,SAASC,qBAAqB;AAWvB,IAAMC,4BAA4B,CAACC,UAAAA;AACxC,QAAMC,WAAWC,SAASF,OAAOG,OAAOC,KAAKC,QAAQA,OAAO,CAAA;AAE5D,QAAM,CAACC,gBAAgBC,iBAAAA,IAAqBC,cAC1CC,0BAA0BT,OAAO,MAAMU,kBAAkBC,KAAYC,YAAI,CAACC,MAAMA,EAAEC,OAAO,CAAA,CAAA,CAAA;AAG3F,QAAMC,QAAQN,0BACZT,OACOgB,mBAAW,aAAA;AAChB,UAAMC,aAAa,OAAOP;AAC1B,WAAOO,WAAWF,MAAK;AACvBR,sBAAkB,IAAA;EACpB,CAAA,CAAA;AAGF,QAAMW,OAAOT,0BACXT,OACOgB,mBAAW,aAAA;AAChB,UAAMC,aAAa,OAAOP;AAC1B,WAAOO,WAAWC,KAAI;AACtBX,sBAAkB,KAAA;EACpB,CAAA,CAAA;AAGF,SAAO;IACLN;IACAkB,WAAWb,kBAAkB;IAC7BS,OAAO,MAAM,KAAKA,MAAAA;IAClBG,MAAM,MAAM,KAAKA,KAAAA;EACnB;AACF;",
6
+ "names": ["Cause", "Effect", "Exit", "useCallback", "useCapability", "FunctionInvocationService", "InvocationTracer", "TracingServiceExt", "log", "lazy", "AppGraphBuilder", "lazy", "ComputeRuntime", "IntentResolver", "ReactSurface", "useComputeRuntimeCallback", "space", "fn", "deps", "computeRuntime", "useCapability", "AutomationCapabilities", "ComputeRuntime", "runtime", "undefined", "getRuntime", "id", "useCallback", "TypeError", "runPromise", "invokeFunctionWithTracing", "functionDef", "inputData", "gen", "tracer", "InvocationTracer", "trace", "traceInvocationStart", "target", "payload", "data", "result", "FunctionInvocationService", "invokeFunction", "pipe", "provide", "TracingServiceExt", "layerQueue", "invocationTraceQueue", "exit", "isFailure", "error", "prettyErrors", "cause", "log", "message", "stack", "traceInvocationEnd", "exception", "Effect", "Filter", "Trigger", "TriggerDispatcher", "useQuery", "useAsyncState", "useTriggerRuntimeControls", "space", "triggers", "useQuery", "Filter", "type", "Trigger", "isRunningState", "setIsRunningState", "useAsyncState", "useComputeRuntimeCallback", "TriggerDispatcher", "pipe", "map", "t", "running", "start", "fnUntraced", "dispatcher", "stop", "isRunning"]
7
+ }
@@ -1,18 +1,17 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-WWURMV25.mjs";
3
+ } from "./chunk-LZQFZO3B.mjs";
4
4
 
5
5
  // src/components/TriggerEditor/TriggerEditor.tsx
6
6
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
7
7
  import React3, { useCallback as useCallback3, useMemo as useMemo3 } from "react";
8
8
  import { ComputeGraph } from "@dxos/conductor";
9
- import { Type as Type2 } from "@dxos/echo";
10
- import { FunctionTrigger, FunctionType, ScriptType } from "@dxos/functions";
9
+ import { DXN } from "@dxos/echo";
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
- import { Input, useDensityContext, useElevationContext, useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
13
- import { Editor, createBasicExtensions, createThemeExtensions } from "@dxos/react-ui-editor";
12
+ import { Input } from "@dxos/react-ui";
13
+ import { QueryForm } from "@dxos/react-ui-components";
14
14
  import { Form as Form2, InputHeader, SelectInput as SelectInput2, useRefQueryLookupHandler } from "@dxos/react-ui-form";
15
- import { inputTheme, mx } from "@dxos/react-ui-theme";
16
15
 
17
16
  // src/components/TriggerEditor/FunctionInputEditor.tsx
18
17
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
@@ -85,7 +84,7 @@ var FunctionInputEditor = ({ functions, getValue, onValueChange, onQueryRefOptio
85
84
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
86
85
  import React2, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
87
86
  import { Filter, Query } from "@dxos/echo";
88
- import { TriggerKinds } from "@dxos/functions";
87
+ import { Trigger } from "@dxos/functions";
89
88
  import { useTranslation } from "@dxos/react-ui";
90
89
  import { SelectInput, useInputProps } from "@dxos/react-ui-form";
91
90
  var SpecSelector = (props) => {
@@ -107,7 +106,6 @@ var SpecSelector = (props) => {
107
106
  return {
108
107
  kind: "subscription",
109
108
  query: {
110
- string: "Query.select(Filter.nothing())",
111
109
  ast: Query.select(Filter.nothing()).ast
112
110
  }
113
111
  };
@@ -136,7 +134,7 @@ var SpecSelector = (props) => {
136
134
  }, [
137
135
  specProps
138
136
  ]);
139
- const options = useMemo2(() => TriggerKinds.map((kind) => ({
137
+ const options = useMemo2(() => Trigger.Kinds.map((kind) => ({
140
138
  value: kind,
141
139
  label: t(`trigger type ${kind}`)
142
140
  })), [
@@ -153,10 +151,10 @@ var SpecSelector = (props) => {
153
151
  };
154
152
 
155
153
  // src/components/TriggerEditor/TriggerEditor.tsx
156
- var TriggerEditor = ({ space, trigger, readonlySpec, onSave, onCancel }) => {
154
+ var TriggerEditor = ({ space, trigger, readonlySpec, types, tags, onSave, onCancel }) => {
157
155
  var _effect = _useSignals3();
158
156
  try {
159
- const handleSave = (values) => {
157
+ const handleSave = ({ id: _, ...values }) => {
160
158
  onSave?.(values);
161
159
  };
162
160
  const handleRefQueryLookup = useRefQueryLookupHandler({
@@ -165,12 +163,14 @@ var TriggerEditor = ({ space, trigger, readonlySpec, onSave, onCancel }) => {
165
163
  const Custom = useCustomInputs({
166
164
  space,
167
165
  readonlySpec,
166
+ types,
167
+ tags,
168
168
  onQueryRefOptions: handleRefQueryLookup
169
169
  });
170
170
  return /* @__PURE__ */ React3.createElement(Form2, {
171
171
  outerSpacing: false,
172
172
  Custom,
173
- schema: FunctionTrigger,
173
+ schema: Trigger2.Trigger,
174
174
  values: trigger,
175
175
  onSave: handleSave,
176
176
  onCancel,
@@ -180,11 +180,10 @@ var TriggerEditor = ({ space, trigger, readonlySpec, onSave, onCancel }) => {
180
180
  _effect.f();
181
181
  }
182
182
  };
183
- var useCustomInputs = ({ space, readonlySpec, onQueryRefOptions }) => {
184
- const { t } = useTranslation2(meta.id);
185
- const functions = useQuery(space, Filter2.type(FunctionType));
183
+ var useCustomInputs = ({ space, readonlySpec, types, tags, onQueryRefOptions }) => {
184
+ const functions = useQuery(space, Filter2.type(Function.Function));
186
185
  const workflows = useQuery(space, Filter2.type(ComputeGraph));
187
- const scripts = useQuery(space, Filter2.type(ScriptType));
186
+ const scripts = useQuery(space, Filter2.type(Script.Script));
188
187
  return useMemo3(() => ({
189
188
  // Function selector.
190
189
  ["function"]: (props) => {
@@ -198,7 +197,7 @@ var useCustomInputs = ({ space, readonlySpec, onQueryRefOptions }) => {
198
197
  props
199
198
  ]);
200
199
  const handleOnValueChange = useCallback3((_type, dxnString) => {
201
- const dxn = Type2.DXN.parse(dxnString);
200
+ const dxn = DXN.parse(dxnString);
202
201
  if (dxn) {
203
202
  const ref = Ref2.fromDXN(dxn);
204
203
  props.onValueChange("object", ref);
@@ -221,32 +220,17 @@ var useCustomInputs = ({ space, readonlySpec, onQueryRefOptions }) => {
221
220
  // TODO(wittjosiah): Copied from ViewEditor.
222
221
  // Query input editor.
223
222
  ["spec.query"]: (props) => {
224
- const { themeMode } = useThemeContext();
225
- const density = useDensityContext();
226
- const elevation = useElevationContext();
227
- const value = props.getValue();
228
- const handleChange = useCallback3((text) => props.onValueChange("object", {
229
- ...value,
230
- string: text
231
- }), []);
232
- const extensions = useMemo3(() => [
233
- createBasicExtensions({
234
- readOnly: readonlySpec,
235
- placeholder: t("query placeholder")
236
- }),
237
- createThemeExtensions({
238
- themeMode
239
- })
240
- ], []);
223
+ const handleChange = useCallback3((query) => props.onValueChange("object", {
224
+ ast: query.ast
225
+ }), [
226
+ props.onValueChange
227
+ ]);
241
228
  return /* @__PURE__ */ React3.createElement(Input.Root, null, /* @__PURE__ */ React3.createElement(InputHeader, {
242
229
  label: props.label
243
- }), /* @__PURE__ */ React3.createElement(Editor, {
244
- classNames: mx(inputTheme.input({
245
- density,
246
- elevation
247
- }), "flex items-center", "focus-within:bg-focusSurface focus-within:border-separator focus-within:hover:bg-focusSurface"),
248
- extensions,
249
- value: value.string,
230
+ }), /* @__PURE__ */ React3.createElement(QueryForm, {
231
+ initialQuery: props.getValue().ast,
232
+ types,
233
+ tags,
250
234
  onChange: handleChange
251
235
  }));
252
236
  },
@@ -280,4 +264,4 @@ var getFunctionOptions = (scripts, functions) => {
280
264
  export {
281
265
  TriggerEditor
282
266
  };
283
- //# sourceMappingURL=chunk-NIJWEQRD.mjs.map
267
+ //# sourceMappingURL=chunk-7W6QMY3L.mjs.map