@dxos/plugin-automation 0.8.4-main.c85a9c8dae → 0.8.4-main.d05673bc65

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 (130) hide show
  1. package/dist/lib/browser/AutomationPanel-IGLIQY2N.mjs +11 -0
  2. package/dist/lib/browser/{AutomationSettings-TJYG77L6.mjs → AutomationSettings-EDO3N5WI.mjs} +7 -7
  3. package/dist/lib/browser/{AutomationSettings-TJYG77L6.mjs.map → AutomationSettings-EDO3N5WI.mjs.map} +1 -1
  4. package/dist/lib/browser/{FunctionsContainer-XHEQSNNO.mjs → FunctionsContainer-R4ZMYSFJ.mjs} +4 -4
  5. package/dist/lib/browser/{FunctionsPanel-5WPUZGRB.mjs → FunctionsPanel-NMA4RYJL.mjs} +3 -3
  6. package/dist/lib/browser/{FunctionsRegistry-XRXIZRLL.mjs → FunctionsRegistry-TMKAEG5E.mjs} +3 -3
  7. package/dist/lib/browser/TriggerSettings-56AIMOEC.mjs +11 -0
  8. package/dist/lib/browser/{app-graph-builder-HLARI3VW.mjs → app-graph-builder-74ILZP25.mjs} +16 -18
  9. package/dist/lib/browser/app-graph-builder-74ILZP25.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-U55ZXRYM.mjs → chunk-75XLBFAG.mjs} +4 -5
  11. package/dist/lib/browser/chunk-75XLBFAG.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-ZNI2CGQP.mjs → chunk-BWEKRPFJ.mjs} +29 -5
  13. package/dist/lib/browser/chunk-BWEKRPFJ.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-PZNBEKO5.mjs → chunk-EL64ZPPN.mjs} +2 -2
  15. package/dist/lib/browser/{chunk-PZNBEKO5.mjs.map → chunk-EL64ZPPN.mjs.map} +1 -1
  16. package/dist/lib/browser/{chunk-XFXYU645.mjs → chunk-FUVAC5EC.mjs} +2 -2
  17. package/dist/lib/browser/{chunk-WOBCY2FQ.mjs → chunk-GVHAETEQ.mjs} +7 -7
  18. package/dist/lib/browser/{chunk-WOBCY2FQ.mjs.map → chunk-GVHAETEQ.mjs.map} +1 -1
  19. package/dist/lib/browser/{chunk-SEG5OCGB.mjs → chunk-H2MV4XE6.mjs} +3 -3
  20. package/dist/lib/browser/{chunk-4EY2KMCM.mjs → chunk-O23LHDEX.mjs} +4 -7
  21. package/dist/lib/browser/chunk-O23LHDEX.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-QPG3AKFX.mjs → chunk-OAZ2JYXV.mjs} +2 -2
  23. package/dist/lib/browser/{chunk-3P4R5WNC.mjs → chunk-Z7F7X2C5.mjs} +2 -2
  24. package/dist/lib/browser/cli/index.mjs +21 -14
  25. package/dist/lib/browser/cli/index.mjs.map +3 -3
  26. package/dist/lib/browser/{compute-runtime-L2RVWXY2.mjs → compute-runtime-F3UMRKCL.mjs} +3 -3
  27. package/dist/lib/browser/hooks/index.mjs +3 -3
  28. package/dist/lib/browser/index.mjs +11 -11
  29. package/dist/lib/browser/meta.json +1 -1
  30. package/dist/lib/browser/{operation-resolver-2U6ZQVXR.mjs → operation-resolver-IRC2DZU7.mjs} +8 -7
  31. package/dist/lib/browser/operation-resolver-IRC2DZU7.mjs.map +7 -0
  32. package/dist/lib/browser/{react-surface-U6FAYV42.mjs → react-surface-5MFPVWIN.mjs} +14 -18
  33. package/dist/lib/browser/react-surface-5MFPVWIN.mjs.map +7 -0
  34. package/dist/lib/browser/types/index.mjs +2 -2
  35. package/dist/lib/node-esm/{AutomationPanel-F7MPUR7U.mjs → AutomationPanel-O2BCQA7P.mjs} +4 -4
  36. package/dist/lib/node-esm/{AutomationSettings-5AHJMILI.mjs → AutomationSettings-LJNRQUX7.mjs} +7 -7
  37. package/dist/lib/node-esm/{AutomationSettings-5AHJMILI.mjs.map → AutomationSettings-LJNRQUX7.mjs.map} +1 -1
  38. package/dist/lib/node-esm/{FunctionsContainer-U5UVRKVT.mjs → FunctionsContainer-GYRPQZM7.mjs} +4 -4
  39. package/dist/lib/node-esm/{FunctionsPanel-UFL5LT2R.mjs → FunctionsPanel-DCXXLSVP.mjs} +3 -3
  40. package/dist/lib/node-esm/{FunctionsRegistry-574OBZ5T.mjs → FunctionsRegistry-7WCHC64E.mjs} +3 -3
  41. package/dist/lib/node-esm/FunctionsRegistry-7WCHC64E.mjs.map +7 -0
  42. package/dist/lib/node-esm/TriggerSettings-ONY5ZUKW.mjs +12 -0
  43. package/dist/lib/node-esm/TriggerSettings-ONY5ZUKW.mjs.map +7 -0
  44. package/dist/lib/node-esm/{app-graph-builder-Z2TMQHVX.mjs → app-graph-builder-VDXPOWCH.mjs} +16 -18
  45. package/dist/lib/node-esm/app-graph-builder-VDXPOWCH.mjs.map +7 -0
  46. package/dist/lib/node-esm/{chunk-QNPYY3XZ.mjs → chunk-2UF55HSG.mjs} +2 -2
  47. package/dist/lib/node-esm/{chunk-4DK33JDH.mjs → chunk-6B4WZRVH.mjs} +7 -7
  48. package/dist/lib/node-esm/{chunk-4DK33JDH.mjs.map → chunk-6B4WZRVH.mjs.map} +1 -1
  49. package/dist/lib/node-esm/{chunk-RTEXGGBX.mjs → chunk-6JVB3IHW.mjs} +2 -2
  50. package/dist/lib/node-esm/{chunk-7AIKTEAX.mjs → chunk-FPXVLTEY.mjs} +4 -7
  51. package/dist/lib/node-esm/chunk-FPXVLTEY.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-34HGM46Z.mjs → chunk-JVUE5PMI.mjs} +3 -3
  53. package/dist/lib/node-esm/{chunk-GXFQR3KI.mjs → chunk-K7T2MVB7.mjs} +4 -5
  54. package/dist/lib/node-esm/chunk-K7T2MVB7.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-CMZ4NKSK.mjs → chunk-Q5JSKD6Z.mjs} +29 -5
  56. package/dist/lib/node-esm/chunk-Q5JSKD6Z.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-2X564LII.mjs → chunk-R5YEWJCG.mjs} +2 -2
  58. package/dist/lib/node-esm/{chunk-5FXNN3MV.mjs → chunk-WC5AT7B3.mjs} +2 -2
  59. package/dist/lib/node-esm/{chunk-5FXNN3MV.mjs.map → chunk-WC5AT7B3.mjs.map} +1 -1
  60. package/dist/lib/node-esm/cli/index.mjs +21 -14
  61. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  62. package/dist/lib/node-esm/{compute-runtime-XD6A5Q7Q.mjs → compute-runtime-AMFVJMF2.mjs} +3 -3
  63. package/dist/lib/node-esm/hooks/index.mjs +3 -3
  64. package/dist/lib/node-esm/index.mjs +11 -11
  65. package/dist/lib/node-esm/meta.json +1 -1
  66. package/dist/lib/node-esm/{operation-resolver-XWJGBHJZ.mjs → operation-resolver-CBLQHL4N.mjs} +8 -7
  67. package/dist/lib/node-esm/operation-resolver-CBLQHL4N.mjs.map +7 -0
  68. package/dist/lib/node-esm/{react-surface-BVNHCWQ7.mjs → react-surface-Z74AHU4T.mjs} +14 -18
  69. package/dist/lib/node-esm/react-surface-Z74AHU4T.mjs.map +7 -0
  70. package/dist/lib/node-esm/types/index.mjs +2 -2
  71. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  72. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  73. package/dist/types/src/cli/commands/trigger/util.d.ts +2 -2
  74. package/dist/types/src/cli/commands/trigger/util.d.ts.map +1 -1
  75. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  76. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  77. package/dist/types/src/containers/TriggerSettings/index.d.ts +2 -2
  78. package/dist/types/src/containers/TriggerSettings/index.d.ts.map +1 -1
  79. package/dist/types/src/types/schema.d.ts +3 -3
  80. package/dist/types/tsconfig.tsbuildinfo +1 -1
  81. package/package.json +39 -39
  82. package/src/capabilities/app-graph-builder/app-graph-builder.ts +14 -13
  83. package/src/capabilities/operation-resolver/operation-resolver.ts +4 -4
  84. package/src/capabilities/react-surface/react-surface.tsx +9 -13
  85. package/src/cli/commands/trigger/util.ts +27 -18
  86. package/src/components/AutomationPanel/AutomationPanel.tsx +1 -2
  87. package/src/components/FunctionsPanel/FunctionsPanel.tsx +2 -2
  88. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +2 -2
  89. package/src/components/TriggerEditor/TriggerEditor.tsx +21 -4
  90. package/src/containers/AutomationSettings/AutomationSettings.tsx +1 -1
  91. package/src/containers/TriggerSettings/index.ts +2 -3
  92. package/src/meta.ts +1 -1
  93. package/src/types/capabilities.ts +1 -1
  94. package/src/types/events.ts +1 -1
  95. package/src/types/schema.ts +3 -3
  96. package/dist/lib/browser/AutomationPanel-EHRSV2DL.mjs +0 -11
  97. package/dist/lib/browser/TriggerSettings-HUQT53SV.mjs +0 -13
  98. package/dist/lib/browser/TriggerSettings-HUQT53SV.mjs.map +0 -7
  99. package/dist/lib/browser/app-graph-builder-HLARI3VW.mjs.map +0 -7
  100. package/dist/lib/browser/chunk-4EY2KMCM.mjs.map +0 -7
  101. package/dist/lib/browser/chunk-U55ZXRYM.mjs.map +0 -7
  102. package/dist/lib/browser/chunk-ZNI2CGQP.mjs.map +0 -7
  103. package/dist/lib/browser/operation-resolver-2U6ZQVXR.mjs.map +0 -7
  104. package/dist/lib/browser/react-surface-U6FAYV42.mjs.map +0 -7
  105. package/dist/lib/node-esm/TriggerSettings-RDIJHUKK.mjs +0 -14
  106. package/dist/lib/node-esm/TriggerSettings-RDIJHUKK.mjs.map +0 -7
  107. package/dist/lib/node-esm/app-graph-builder-Z2TMQHVX.mjs.map +0 -7
  108. package/dist/lib/node-esm/chunk-7AIKTEAX.mjs.map +0 -7
  109. package/dist/lib/node-esm/chunk-CMZ4NKSK.mjs.map +0 -7
  110. package/dist/lib/node-esm/chunk-GXFQR3KI.mjs.map +0 -7
  111. package/dist/lib/node-esm/operation-resolver-XWJGBHJZ.mjs.map +0 -7
  112. package/dist/lib/node-esm/react-surface-BVNHCWQ7.mjs.map +0 -7
  113. /package/dist/lib/browser/{AutomationPanel-EHRSV2DL.mjs.map → AutomationPanel-IGLIQY2N.mjs.map} +0 -0
  114. /package/dist/lib/browser/{FunctionsContainer-XHEQSNNO.mjs.map → FunctionsContainer-R4ZMYSFJ.mjs.map} +0 -0
  115. /package/dist/lib/browser/{FunctionsPanel-5WPUZGRB.mjs.map → FunctionsPanel-NMA4RYJL.mjs.map} +0 -0
  116. /package/dist/lib/browser/{FunctionsRegistry-XRXIZRLL.mjs.map → FunctionsRegistry-TMKAEG5E.mjs.map} +0 -0
  117. /package/dist/lib/{node-esm/AutomationPanel-F7MPUR7U.mjs.map → browser/TriggerSettings-56AIMOEC.mjs.map} +0 -0
  118. /package/dist/lib/browser/{chunk-XFXYU645.mjs.map → chunk-FUVAC5EC.mjs.map} +0 -0
  119. /package/dist/lib/browser/{chunk-SEG5OCGB.mjs.map → chunk-H2MV4XE6.mjs.map} +0 -0
  120. /package/dist/lib/browser/{chunk-QPG3AKFX.mjs.map → chunk-OAZ2JYXV.mjs.map} +0 -0
  121. /package/dist/lib/browser/{chunk-3P4R5WNC.mjs.map → chunk-Z7F7X2C5.mjs.map} +0 -0
  122. /package/dist/lib/browser/{compute-runtime-L2RVWXY2.mjs.map → compute-runtime-F3UMRKCL.mjs.map} +0 -0
  123. /package/dist/lib/node-esm/{FunctionsPanel-UFL5LT2R.mjs.map → AutomationPanel-O2BCQA7P.mjs.map} +0 -0
  124. /package/dist/lib/node-esm/{FunctionsContainer-U5UVRKVT.mjs.map → FunctionsContainer-GYRPQZM7.mjs.map} +0 -0
  125. /package/dist/lib/node-esm/{FunctionsRegistry-574OBZ5T.mjs.map → FunctionsPanel-DCXXLSVP.mjs.map} +0 -0
  126. /package/dist/lib/node-esm/{chunk-QNPYY3XZ.mjs.map → chunk-2UF55HSG.mjs.map} +0 -0
  127. /package/dist/lib/node-esm/{chunk-RTEXGGBX.mjs.map → chunk-6JVB3IHW.mjs.map} +0 -0
  128. /package/dist/lib/node-esm/{chunk-34HGM46Z.mjs.map → chunk-JVUE5PMI.mjs.map} +0 -0
  129. /package/dist/lib/node-esm/{chunk-2X564LII.mjs.map → chunk-R5YEWJCG.mjs.map} +0 -0
  130. /package/dist/lib/node-esm/{compute-runtime-XD6A5Q7Q.mjs.map → compute-runtime-AMFVJMF2.mjs.map} +0 -0
@@ -1,14 +1,13 @@
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
9
  import { useOperationInvoker } from "@dxos/app-framework/ui";
10
- import { LayoutOperation } from "@dxos/app-toolkit";
11
- import { Obj } from "@dxos/echo";
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";
@@ -45,7 +44,7 @@ var FunctionsPanel = ({ space }) => {
45
44
  if (script) {
46
45
  void invokePromise(LayoutOperation.Open, {
47
46
  subject: [
48
- Obj.getDXN(script).toString()
47
+ getObjectPathFromObject(script)
49
48
  ]
50
49
  });
51
50
  }
@@ -96,4 +95,4 @@ export {
96
95
  FunctionsPanel,
97
96
  FunctionsPanel_default
98
97
  };
99
- //# sourceMappingURL=chunk-GXFQR3KI.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, Obj as Obj2 } 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";
@@ -166,6 +166,7 @@ var TriggerEditor = ({ db, types, tags, readonlySpec, trigger, ...formProps }) =
166
166
  }, [
167
167
  trigger
168
168
  ]);
169
+ const triggerSchema = useMemo3(() => omitId(Trigger2.Trigger), []);
169
170
  const defaultValues = useMemo3(() => {
170
171
  const { id: _, ...values } = trigger;
171
172
  return values;
@@ -174,9 +175,9 @@ var TriggerEditor = ({ db, types, tags, readonlySpec, trigger, ...formProps }) =
174
175
  ]);
175
176
  return /* @__PURE__ */ React3.createElement(Form2.Root, {
176
177
  ...formProps,
177
- schema: omitId(Trigger2.Trigger),
178
- defaultValues,
179
178
  db,
179
+ schema: triggerSchema,
180
+ defaultValues,
180
181
  fieldMap,
181
182
  onValuesChanged: handleValuesChanged
182
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))));
@@ -185,6 +186,7 @@ var useCustomInputs = ({ db, readonlySpec, types, tags }) => {
185
186
  const functions = useQuery(db, Filter2.type(Function.Function));
186
187
  const workflows = useQuery(db, Filter2.type(ComputeGraph));
187
188
  const scripts = useQuery(db, Filter2.type(Script.Script));
189
+ const feeds = useQuery(db, Filter2.type(Feed.Feed));
188
190
  return useMemo3(() => ({
189
191
  // Function selector.
190
192
  ["function"]: (props) => {
@@ -219,6 +221,11 @@ var useCustomInputs = ({ db, readonlySpec, types, tags }) => {
219
221
  ...props,
220
222
  readonly: readonlySpec
221
223
  }),
224
+ // Queue feed selector with parent labels.
225
+ "spec.queue": (props) => /* @__PURE__ */ React3.createElement(SelectField2, {
226
+ ...props,
227
+ options: getFeedQueueOptions(feeds)
228
+ }),
222
229
  // TODO(wittjosiah): Copied from ViewEditor.
223
230
  // Query input editor.
224
231
  "spec.query": (props) => {
@@ -248,6 +255,7 @@ var useCustomInputs = ({ db, readonlySpec, types, tags }) => {
248
255
  workflows,
249
256
  scripts,
250
257
  functions,
258
+ feeds,
251
259
  readonlySpec
252
260
  ]);
253
261
  };
@@ -264,8 +272,24 @@ var getFunctionOptions = (scripts, functions) => {
264
272
  value: `dxn:echo:@:${fn.id}`
265
273
  }));
266
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
+ };
267
291
 
268
292
  export {
269
293
  TriggerEditor
270
294
  };
271
- //# sourceMappingURL=chunk-CMZ4NKSK.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-XD6A5Q7Q.mjs"));
5
+ var ComputeRuntime = Capability.lazy("ComputeRuntime", () => import("./compute-runtime-AMFVJMF2.mjs"));
6
6
 
7
7
  export {
8
8
  ComputeRuntime
9
9
  };
10
- //# sourceMappingURL=chunk-2X564LII.mjs.map
10
+ //# sourceMappingURL=chunk-R5YEWJCG.mjs.map
@@ -3,7 +3,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
3
3
  // src/meta.ts
4
4
  import { trim } from "@dxos/util";
5
5
  var meta = {
6
- id: "dxos.org/plugin/automation",
6
+ id: "org.dxos.plugin.automation",
7
7
  name: "Automation",
8
8
  description: trim`
9
9
  Workflow automation engine that triggers custom actions based on object events and conditions.
@@ -16,4 +16,4 @@ var meta = {
16
16
  export {
17
17
  meta
18
18
  };
19
- //# sourceMappingURL=chunk-5FXNN3MV.mjs.map
19
+ //# sourceMappingURL=chunk-WC5AT7B3.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'dxos.org/plugin/automation',\n name: 'Automation',\n description: trim`\n Workflow automation engine that triggers custom actions based on object events and conditions.\n Create automated pipelines that respond to changes and streamline repetitive tasks.\n `,\n icon: 'ph--robot--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-automation',\n};\n"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.automation',\n name: 'Automation',\n description: trim`\n Workflow automation engine that triggers custom actions based on object events and conditions.\n Create automated pipelines that respond to changes and streamline repetitive tasks.\n `,\n icon: 'ph--robot--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-automation',\n};\n"],
5
5
  "mappings": ";;;AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,QAAQ;AACV;",
6
6
  "names": ["trim", "meta", "id", "name", "description", "trim", "icon", "source"]
7
7
  }
@@ -1,13 +1,13 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ComputeRuntime
4
- } from "../chunk-2X564LII.mjs";
4
+ } from "../chunk-R5YEWJCG.mjs";
5
5
  import {
6
6
  AutomationEvents
7
- } from "../chunk-4DK33JDH.mjs";
7
+ } from "../chunk-6B4WZRVH.mjs";
8
8
  import {
9
9
  meta
10
- } from "../chunk-5FXNN3MV.mjs";
10
+ } from "../chunk-WC5AT7B3.mjs";
11
11
 
12
12
  // src/cli/plugin.ts
13
13
  import { Plugin } from "@dxos/app-framework";
@@ -64,10 +64,10 @@ import * as Match from "effect/Match";
64
64
  import * as Option from "effect/Option";
65
65
  import * as SchemaAST from "effect/SchemaAST";
66
66
  import { FormBuilder } from "@dxos/cli-util";
67
- import { Annotation, Database, Entity, Filter, Obj, Ref, Type } from "@dxos/echo";
67
+ import { Annotation, Database, Entity, Feed, Filter, Obj, Ref, Type } from "@dxos/echo";
68
68
  import { getProperties } from "@dxos/effect";
69
69
  import { Function, Trigger } from "@dxos/functions";
70
- import { QueueAnnotation } from "@dxos/schema";
70
+ import { FeedAnnotation } from "@dxos/schema";
71
71
  var getTriggerRemoteStatus = (trigger2, remoteCronIds) => {
72
72
  if (trigger2.spec?.kind !== "timer") {
73
73
  return "n/a";
@@ -274,29 +274,36 @@ var selectQueue = Effect.fn(function* () {
274
274
  "runtime"
275
275
  ]
276
276
  });
277
- const queueSchemas = schemas.filter((schema) => {
278
- const annotation = QueueAnnotation.get(schema);
277
+ const feedSchemas = schemas.filter((schema) => {
278
+ const annotation = FeedAnnotation.get(schema);
279
279
  return Option.isSome(annotation) && annotation.value === true;
280
280
  });
281
- if (queueSchemas.length === 0) {
282
- return yield* Effect.fail(new Error("No schemas with Queue annotation found"));
281
+ if (feedSchemas.length === 0) {
282
+ return yield* Effect.fail(new Error("No schemas with Feed annotation found"));
283
283
  }
284
284
  const queueChoices = [];
285
- for (const schema of queueSchemas) {
285
+ for (const schema of feedSchemas) {
286
286
  yield* Effect.gen(function* () {
287
287
  const typename = Type.getTypename(schema);
288
288
  const objects = yield* Database.runQuery(Filter.type(typename));
289
289
  for (const obj of objects) {
290
- const queueRef = obj.queue;
291
- if (!queueRef) {
290
+ const feedRef = obj.feed;
291
+ if (!feedRef) {
292
+ continue;
293
+ }
294
+ const feedObj = yield* Effect.promise(() => feedRef.tryLoad());
295
+ if (!feedObj || !Obj.instanceOf(Feed.Feed, feedObj)) {
296
+ continue;
297
+ }
298
+ const queueDxn = Feed.getQueueDxn(feedObj);
299
+ if (!queueDxn) {
292
300
  continue;
293
301
  }
294
- const queueDxn = queueRef.dxn.toString();
295
302
  const label = Obj.getLabel(obj) ?? obj.id;
296
303
  const description = Obj.getTypename(obj);
297
304
  queueChoices.push({
298
305
  title: label,
299
- value: queueDxn,
306
+ value: queueDxn.toString(),
300
307
  description
301
308
  });
302
309
  }