@dxos/plugin-automation 0.8.2-main.2f9c567 → 0.8.2-main.30e4dbb

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 (72) hide show
  1. package/dist/lib/browser/{AutomationContainer-3MP23OGQ.mjs → AutomationContainer-PDPL34DX.mjs} +3 -3
  2. package/dist/lib/browser/{AutomationPanel-75HVBBNG.mjs → AutomationPanel-3WG2B7JM.mjs} +3 -3
  3. package/dist/lib/browser/{chunk-N4PTKEWO.mjs → chunk-GUPG3Q72.mjs} +3 -3
  4. package/dist/lib/browser/{chunk-HTVXRMNH.mjs → chunk-QFIPNCNF.mjs} +4 -4
  5. package/dist/lib/browser/{chunk-HTVXRMNH.mjs.map → chunk-QFIPNCNF.mjs.map} +2 -2
  6. package/dist/lib/browser/{chunk-Q2ACSERA.mjs → chunk-W4T2BTH2.mjs} +13 -13
  7. package/dist/lib/browser/chunk-W4T2BTH2.mjs.map +7 -0
  8. package/dist/lib/browser/index.mjs +4 -4
  9. package/dist/lib/browser/{intent-resolver-YH4YPX52.mjs → intent-resolver-TCUIVOEW.mjs} +3 -3
  10. package/dist/lib/browser/{intent-resolver-YH4YPX52.mjs.map → intent-resolver-TCUIVOEW.mjs.map} +3 -3
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/{react-surface-GA67CQBV.mjs → react-surface-P65PEZPN.mjs} +3 -3
  13. package/dist/lib/node/{AutomationContainer-RIDHNHPT.cjs → AutomationContainer-EXTHQ7B3.cjs} +7 -7
  14. package/dist/lib/node/{AutomationPanel-6RLBWAGL.cjs → AutomationPanel-G7R6RL7O.cjs} +8 -8
  15. package/dist/lib/node/{AutomationPanel-6RLBWAGL.cjs.map → AutomationPanel-G7R6RL7O.cjs.map} +2 -2
  16. package/dist/lib/node/{chunk-ESVJ2X6U.cjs → chunk-A4DMUH7U.cjs} +15 -15
  17. package/dist/lib/node/chunk-A4DMUH7U.cjs.map +7 -0
  18. package/dist/lib/node/{chunk-HZTVNN4S.cjs → chunk-B3OL2E3B.cjs} +6 -6
  19. package/dist/lib/node/{chunk-52JFIUOD.cjs → chunk-F74YVA6P.cjs} +8 -8
  20. package/dist/lib/node/{chunk-52JFIUOD.cjs.map → chunk-F74YVA6P.cjs.map} +2 -2
  21. package/dist/lib/node/index.cjs +9 -9
  22. package/dist/lib/node/{intent-resolver-6FJ6PJJI.cjs → intent-resolver-6XS2NYC7.cjs} +6 -6
  23. package/dist/lib/node/{intent-resolver-6FJ6PJJI.cjs.map → intent-resolver-6XS2NYC7.cjs.map} +3 -3
  24. package/dist/lib/node/meta.json +1 -1
  25. package/dist/lib/node/{react-surface-UJDYSHZ5.cjs → react-surface-OYJMJXJI.cjs} +9 -9
  26. package/dist/lib/node-esm/{AutomationContainer-MCUWF267.mjs → AutomationContainer-FSWEGDKP.mjs} +3 -3
  27. package/dist/lib/node-esm/{AutomationPanel-U34H2Q7Z.mjs → AutomationPanel-LIPLJA55.mjs} +3 -3
  28. package/dist/lib/node-esm/{chunk-WYXWQFPK.mjs → chunk-27IHWHDH.mjs} +4 -4
  29. package/dist/lib/node-esm/{chunk-WYXWQFPK.mjs.map → chunk-27IHWHDH.mjs.map} +2 -2
  30. package/dist/lib/node-esm/{chunk-5JC4JVYZ.mjs → chunk-IS3BYE3I.mjs} +13 -13
  31. package/dist/lib/node-esm/chunk-IS3BYE3I.mjs.map +7 -0
  32. package/dist/lib/node-esm/{chunk-RG3M42SO.mjs → chunk-YCNX76NJ.mjs} +3 -3
  33. package/dist/lib/node-esm/index.mjs +4 -4
  34. package/dist/lib/node-esm/{intent-resolver-PVY22PBL.mjs → intent-resolver-CHDYUFFN.mjs} +3 -3
  35. package/dist/lib/node-esm/{intent-resolver-PVY22PBL.mjs.map → intent-resolver-CHDYUFFN.mjs.map} +3 -3
  36. package/dist/lib/node-esm/meta.json +1 -1
  37. package/dist/lib/node-esm/{react-surface-R72A4EHM.mjs → react-surface-FDGQORLY.mjs} +3 -3
  38. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  39. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  40. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  41. package/dist/types/src/components/AutomationContainer.d.ts.map +1 -1
  42. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  43. package/dist/types/src/components/FunctionsContainer.d.ts.map +1 -1
  44. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  45. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +12 -0
  46. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -0
  47. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  48. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  49. package/dist/types/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +26 -26
  51. package/src/capabilities/intent-resolver.ts +2 -2
  52. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +1 -1
  53. package/src/components/AutomationPanel/AutomationPanel.tsx +2 -2
  54. package/src/components/TriggerEditor/{FunctionPayloadEditor.tsx → FunctionInputEditor.tsx} +9 -9
  55. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +2 -2
  56. package/src/components/TriggerEditor/TriggerEditor.tsx +7 -7
  57. package/dist/lib/browser/chunk-Q2ACSERA.mjs.map +0 -7
  58. package/dist/lib/node/chunk-ESVJ2X6U.cjs.map +0 -7
  59. package/dist/lib/node-esm/chunk-5JC4JVYZ.mjs.map +0 -7
  60. package/dist/types/src/components/TriggerEditor/FunctionPayloadEditor.d.ts +0 -12
  61. package/dist/types/src/components/TriggerEditor/FunctionPayloadEditor.d.ts.map +0 -1
  62. /package/dist/lib/browser/{AutomationContainer-3MP23OGQ.mjs.map → AutomationContainer-PDPL34DX.mjs.map} +0 -0
  63. /package/dist/lib/browser/{AutomationPanel-75HVBBNG.mjs.map → AutomationPanel-3WG2B7JM.mjs.map} +0 -0
  64. /package/dist/lib/browser/{chunk-N4PTKEWO.mjs.map → chunk-GUPG3Q72.mjs.map} +0 -0
  65. /package/dist/lib/browser/{react-surface-GA67CQBV.mjs.map → react-surface-P65PEZPN.mjs.map} +0 -0
  66. /package/dist/lib/node/{AutomationContainer-RIDHNHPT.cjs.map → AutomationContainer-EXTHQ7B3.cjs.map} +0 -0
  67. /package/dist/lib/node/{chunk-HZTVNN4S.cjs.map → chunk-B3OL2E3B.cjs.map} +0 -0
  68. /package/dist/lib/node/{react-surface-UJDYSHZ5.cjs.map → react-surface-OYJMJXJI.cjs.map} +0 -0
  69. /package/dist/lib/node-esm/{AutomationContainer-MCUWF267.mjs.map → AutomationContainer-FSWEGDKP.mjs.map} +0 -0
  70. /package/dist/lib/node-esm/{AutomationPanel-U34H2Q7Z.mjs.map → AutomationPanel-LIPLJA55.mjs.map} +0 -0
  71. /package/dist/lib/node-esm/{chunk-RG3M42SO.mjs.map → chunk-YCNX76NJ.mjs.map} +0 -0
  72. /package/dist/lib/node-esm/{react-surface-R72A4EHM.mjs.map → react-surface-FDGQORLY.mjs.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/TriggerEditor/TriggerEditor.tsx", "../../../src/components/TriggerEditor/FunctionPayloadEditor.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 } from '@dxos/echo';\nimport {\n FunctionType,\n FunctionTriggerSchema,\n type FunctionTriggerType,\n type FunctionTrigger,\n ScriptType,\n} from '@dxos/functions';\nimport { Filter, Ref, useQuery, type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { type CustomInputMap, Form, SelectInput, useRefQueryLookupHandler } from '@dxos/react-ui-form';\n\nimport { FunctionPayloadEditor } from './FunctionPayloadEditor';\nimport { SpecSelector } from './SpecSelector';\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type TriggerEditorProps = {\n space: Space;\n trigger: FunctionTriggerType;\n onSave?: (trigger: Omit<FunctionTrigger, 'id'>) => void;\n onCancel?: () => void;\n};\n\nexport const TriggerEditor = ({ space, trigger, onSave, onCancel }: TriggerEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n const functions = useQuery(space, Filter.schema(FunctionType));\n const workflows = useQuery(space, Filter.schema(ComputeGraph));\n const scripts = useQuery(space, Filter.schema(ScriptType));\n\n const handleSave = (values: FunctionTriggerType) => {\n onSave?.(values);\n };\n\n const handleRefQueryLookup = useRefQueryLookupHandler({ space });\n\n const Custom = useMemo(\n (): CustomInputMap => ({\n ['function' satisfies keyof FunctionTriggerType]: (props) => {\n const getValue = useCallback(() => {\n const formValue = props.getValue();\n if (formValue instanceof DXN) {\n return formValue.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('object', ref);\n }\n },\n [props.onValueChange],\n );\n\n return (\n <SelectInput\n {...props}\n getValue={getValue as any}\n onValueChange={handleOnValueChange}\n options={getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))}\n />\n );\n },\n ['spec.type' as const]: SpecSelector,\n ['payload' as const]: (props) => (\n <FunctionPayloadEditor {...props} functions={functions} onQueryRefOptions={handleRefQueryLookup} />\n ),\n }),\n [workflows, scripts, functions, t],\n );\n\n return (\n <div role='none' className='bs-full is-full'>\n <Form\n schema={FunctionTriggerSchema}\n values={trigger}\n onSave={handleSave}\n onCancel={onCancel}\n Custom={Custom}\n onQueryRefOptions={handleRefQueryLookup}\n />\n </div>\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: ScriptType[], functions: FunctionType[]) => {\n const getLabel = (fn: FunctionType) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;\n return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:worker:${fn.name}` }));\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type JsonPath, RefImpl, toEffectSchema } from '@dxos/echo-schema';\nimport { type FunctionType } from '@dxos/functions';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { Form, type FormInputStateProps, type QueryRefOptions, useFormValues } from '@dxos/react-ui-form';\n\nexport type FunctionMetaEditorProps = {\n functions: FunctionType[];\n onQueryRefOptions: QueryRefOptions;\n} & FormInputStateProps;\n\n/**\n * Editor component for function meta parameters.\n */\nexport const FunctionPayloadEditor = ({\n functions,\n getValue,\n onValueChange,\n onQueryRefOptions,\n}: FunctionMetaEditorProps) => {\n const selectedFunctionValue = useFormValues(['function' as JsonPath]);\n const selectedFunctionName = useMemo(() => {\n if (selectedFunctionValue instanceof RefImpl) {\n return selectedFunctionValue.dxn.toString().split('dxn:worker:').at(1);\n }\n }, [selectedFunctionValue]);\n\n const selectedFunction = useMemo(\n () => functions.find((f) => f.name === selectedFunctionName),\n [functions, selectedFunctionName],\n );\n\n useOnTransition(\n // Clear function parameter meta when the function changes.\n selectedFunctionValue,\n (prevValue) => prevValue !== undefined && prevValue !== selectedFunctionValue,\n (currValue) => currValue !== undefined,\n () => onValueChange('object', {}),\n );\n\n const inputSchema = useMemo(() => selectedFunction?.inputSchema, [selectedFunction]);\n const effectSchema = useMemo(() => (inputSchema ? toEffectSchema(inputSchema) : undefined), [inputSchema]);\n const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;\n\n const values = useMemo(() => getValue() ?? {}, [getValue]);\n\n const handleValuesChanged = useCallback(\n (values: any) => {\n onValueChange('object', values);\n },\n [onValueChange],\n );\n\n if (selectedFunction === undefined || effectSchema === undefined || propertyCount === 0) {\n return null;\n }\n\n return (\n <>\n <h3 className='text-md'>Function parameters</h3>\n {/* TODO(ZaymonFC): Try using <FormFields /> internal component for this nesting.\n This would allow errors to flow up to the root context. */}\n <Form\n schema={effectSchema}\n values={values}\n classNames='p-0'\n onValuesChanged={handleValuesChanged}\n onQueryRefOptions={onQueryRefOptions}\n />\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type FunctionTriggerType, TriggerKind, type TriggerType } from '@dxos/functions';\nimport { useTranslation } from '@dxos/react-ui';\nimport { SelectInput, type InputProps, useInputProps } from '@dxos/react-ui-form';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type SpecSelectorProps = InputProps;\n\nexport const SpecSelector = (props: SpecSelectorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const specProps = useInputProps(['spec' satisfies keyof FunctionTriggerType]);\n\n const handleTypeChange = useCallback(\n (_type: any, value: string): TriggerType | undefined => {\n const getDefaultTriggerSpec = (kind: string) => {\n switch (kind) {\n case TriggerKind.Timer:\n return { type: TriggerKind.Timer, cron: '' };\n case TriggerKind.Subscription:\n return { type: TriggerKind.Subscription, filter: {} };\n case TriggerKind.Queue:\n return { type: TriggerKind.Queue, queue: '' };\n case TriggerKind.Email:\n return { type: TriggerKind.Email };\n case TriggerKind.Webhook:\n return { type: TriggerKind.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.type`.\n specProps.onValueChange('object', defaultSpec);\n },\n [specProps],\n );\n\n const options = useMemo(\n () =>\n Object.values(TriggerKind).map((kind) => ({\n value: kind,\n label: t(`trigger type ${kind}`),\n })),\n [t],\n );\n\n return <SelectInput {...props} options={options} onValueChange={handleTypeChange} />;\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_echo", "import_react", "import_react_ui", "import_react_ui_form", "import_functions", "FunctionPayloadEditor", "functions", "getValue", "onValueChange", "onQueryRefOptions", "selectedFunctionValue", "useFormValues", "selectedFunctionName", "useMemo", "RefImpl", "dxn", "toString", "split", "at", "selectedFunction", "find", "f", "name", "useOnTransition", "prevValue", "undefined", "currValue", "inputSchema", "effectSchema", "toEffectSchema", "propertyCount", "properties", "Object", "keys", "length", "values", "handleValuesChanged", "useCallback", "React", "h3", "className", "Form", "schema", "classNames", "onValuesChanged", "SpecSelector", "props", "t", "useTranslation", "AUTOMATION_PLUGIN", "specProps", "useInputProps", "handleTypeChange", "_type", "value", "getDefaultTriggerSpec", "kind", "TriggerKind", "Timer", "type", "cron", "Subscription", "filter", "Queue", "queue", "Email", "Webhook", "defaultSpec", "options", "map", "label", "SelectInput", "TriggerEditor", "space", "trigger", "onSave", "onCancel", "useQuery", "Filter", "FunctionType", "workflows", "ComputeGraph", "scripts", "ScriptType", "handleSave", "handleRefQueryLookup", "useRefQueryLookupHandler", "Custom", "formValue", "DXN", "handleOnValueChange", "dxnString", "parse", "ref", "Ref", "fromDXN", "getWorkflowOptions", "concat", "getFunctionOptions", "div", "role", "FunctionTriggerSchema", "graphs", "graph", "id", "getLabel", "fn", "s", "source", "target"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/TriggerEditor/TriggerEditor.tsx", "../../../src/components/TriggerEditor/FunctionPayloadEditor.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 } from '@dxos/echo';\nimport {\n FunctionType,\n FunctionTriggerSchema,\n type FunctionTriggerType,\n type FunctionTrigger,\n ScriptType,\n} from '@dxos/functions';\nimport { Filter, Ref, useQuery, type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { type CustomInputMap, Form, SelectInput, useRefQueryLookupHandler } from '@dxos/react-ui-form';\n\nimport { FunctionPayloadEditor } from './FunctionPayloadEditor';\nimport { SpecSelector } from './SpecSelector';\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type TriggerEditorProps = {\n space: Space;\n trigger: FunctionTriggerType;\n onSave?: (trigger: Omit<FunctionTrigger, 'id'>) => void;\n onCancel?: () => void;\n};\n\nexport const TriggerEditor = ({ space, trigger, onSave, onCancel }: TriggerEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n const functions = useQuery(space, Filter.schema(FunctionType));\n const workflows = useQuery(space, Filter.schema(ComputeGraph));\n const scripts = useQuery(space, Filter.schema(ScriptType));\n\n const handleSave = (values: FunctionTriggerType) => {\n onSave?.(values);\n };\n\n const handleRefQueryLookup = useRefQueryLookupHandler({ space });\n\n const Custom = useMemo(\n (): CustomInputMap => ({\n ['function' satisfies keyof FunctionTriggerType]: (props) => {\n const getValue = useCallback(() => {\n const formValue = props.getValue();\n if (formValue instanceof DXN) {\n return formValue.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('object', ref);\n }\n },\n [props.onValueChange],\n );\n\n return (\n <SelectInput\n {...props}\n getValue={getValue as any}\n onValueChange={handleOnValueChange}\n options={getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))}\n />\n );\n },\n ['spec.type' as const]: SpecSelector,\n ['payload' as const]: (props) => (\n <FunctionPayloadEditor {...props} functions={functions} onQueryRefOptions={handleRefQueryLookup} />\n ),\n }),\n [workflows, scripts, functions, t],\n );\n\n return (\n <div role='none' className='bs-full is-full'>\n <Form\n schema={FunctionTriggerSchema}\n values={trigger}\n onSave={handleSave}\n onCancel={onCancel}\n Custom={Custom}\n onQueryRefOptions={handleRefQueryLookup}\n />\n </div>\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: ScriptType[], functions: FunctionType[]) => {\n const getLabel = (fn: FunctionType) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;\n return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:worker:${fn.name}` }));\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type JsonPath, RefImpl, toEffectSchema } from '@dxos/echo-schema';\nimport { type FunctionType } from '@dxos/functions';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { Form, type FormInputStateProps, type QueryRefOptions, useFormValues } from '@dxos/react-ui-form';\n\nexport type FunctionMetaEditorProps = {\n functions: FunctionType[];\n onQueryRefOptions: QueryRefOptions;\n} & FormInputStateProps;\n\n/**\n * Editor component for function meta parameters.\n */\nexport const FunctionPayloadEditor = ({\n functions,\n getValue,\n onValueChange,\n onQueryRefOptions,\n}: FunctionMetaEditorProps) => {\n const selectedFunctionValue = useFormValues(['function' as JsonPath]);\n const selectedFunctionName = useMemo(() => {\n if (selectedFunctionValue instanceof RefImpl) {\n return selectedFunctionValue.dxn.toString().split('dxn:worker:').at(1);\n }\n }, [selectedFunctionValue]);\n\n const selectedFunction = useMemo(\n () => functions.find((f) => f.name === selectedFunctionName),\n [functions, selectedFunctionName],\n );\n\n useOnTransition(\n // Clear function parameter meta when the function changes.\n selectedFunctionValue,\n (prevValue) => prevValue !== undefined && prevValue !== selectedFunctionValue,\n (currValue) => currValue !== undefined,\n () => onValueChange('object', {}),\n );\n\n const inputSchema = useMemo(() => selectedFunction?.inputSchema, [selectedFunction]);\n const effectSchema = useMemo(() => (inputSchema ? toEffectSchema(inputSchema) : undefined), [inputSchema]);\n const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;\n\n const values = useMemo(() => getValue() ?? {}, [getValue]);\n\n const handleValuesChanged = useCallback(\n (values: any) => {\n onValueChange('object', values);\n },\n [onValueChange],\n );\n\n if (selectedFunction === undefined || effectSchema === undefined || propertyCount === 0) {\n return null;\n }\n\n return (\n <>\n <h3 className='text-md'>Function parameters</h3>\n {/* TODO(ZaymonFC): Try using <FormFields /> internal component for this nesting.\n This would allow errors to flow up to the root context. */}\n <Form\n schema={effectSchema}\n values={values}\n classNames='p-0'\n onValuesChanged={handleValuesChanged}\n onQueryRefOptions={onQueryRefOptions}\n />\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type FunctionTriggerType, TriggerKind, type TriggerType } from '@dxos/functions';\nimport { useTranslation } from '@dxos/react-ui';\nimport { SelectInput, type InputProps, useInputProps } from '@dxos/react-ui-form';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type SpecSelectorProps = InputProps;\n\nexport const SpecSelector = (props: SpecSelectorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const specProps = useInputProps(['spec' satisfies keyof FunctionTriggerType]);\n\n const handleTypeChange = useCallback(\n (_type: any, value: string): TriggerType | undefined => {\n const getDefaultTriggerSpec = (kind: string) => {\n switch (kind) {\n case TriggerKind.Timer:\n return { type: TriggerKind.Timer, cron: '' };\n case TriggerKind.Subscription:\n return { type: TriggerKind.Subscription, filter: {} };\n case TriggerKind.Queue:\n return { type: TriggerKind.Queue, queue: '' };\n case TriggerKind.Email:\n return { type: TriggerKind.Email };\n case TriggerKind.Webhook:\n return { type: TriggerKind.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.type`.\n specProps.onValueChange('object', defaultSpec);\n },\n [specProps],\n );\n\n const options = useMemo(\n () =>\n Object.values(TriggerKind).map((kind) => ({\n value: kind,\n label: t(`trigger type ${kind}`),\n })),\n [t],\n );\n\n return <SelectInput {...props} options={options} onValueChange={handleTypeChange} />;\n};\n"],
5
- "mappings": ";;;;;;AAIA,OAAOA,UAASC,eAAAA,cAAaC,WAAAA,gBAAe;AAE5C,SAASC,oBAAoB;AAC7B,SAASC,WAAW;AACpB,SACEC,cACAC,uBAGAC,kBACK;AACP,SAASC,QAAQC,KAAKC,gBAA4B;AAClD,SAASC,kBAAAA,uBAAsB;AAC/B,SAA8BC,QAAAA,OAAMC,eAAAA,cAAaC,gCAAgC;;;ACbjF,OAAOC,SAASC,aAAaC,eAAe;AAE5C,SAAwBC,SAASC,sBAAsB;AAEvD,SAASC,uBAAuB;AAChC,SAASC,MAAsDC,qBAAqB;AAU7E,IAAMC,wBAAwB,CAAC,EACpCC,WACAC,UACAC,eACAC,kBAAiB,MACO;AACxB,QAAMC,wBAAwBC,cAAc;IAAC;GAAuB;AACpE,QAAMC,uBAAuBC,QAAQ,MAAA;AACnC,QAAIH,iCAAiCI,SAAS;AAC5C,aAAOJ,sBAAsBK,IAAIC,SAAQ,EAAGC,MAAM,aAAA,EAAeC,GAAG,CAAA;IACtE;EACF,GAAG;IAACR;GAAsB;AAE1B,QAAMS,mBAAmBN,QACvB,MAAMP,UAAUc,KAAK,CAACC,MAAMA,EAAEC,SAASV,oBAAAA,GACvC;IAACN;IAAWM;GAAqB;AAGnCW;;IAEEb;IACA,CAACc,cAAcA,cAAcC,UAAaD,cAAcd;IACxD,CAACgB,cAAcA,cAAcD;IAC7B,MAAMjB,cAAc,UAAU,CAAC,CAAA;EAAA;AAGjC,QAAMmB,cAAcd,QAAQ,MAAMM,kBAAkBQ,aAAa;IAACR;GAAiB;AACnF,QAAMS,eAAef,QAAQ,MAAOc,cAAcE,eAAeF,WAAAA,IAAeF,QAAY;IAACE;GAAY;AACzG,QAAMG,gBAAgBH,aAAaI,aAAaC,OAAOC,KAAKN,YAAYI,UAAU,EAAEG,SAAS;AAE7F,QAAMC,SAAStB,QAAQ,MAAMN,SAAAA,KAAc,CAAC,GAAG;IAACA;GAAS;AAEzD,QAAM6B,sBAAsBC,YAC1B,CAACF,YAAAA;AACC3B,kBAAc,UAAU2B,OAAAA;EAC1B,GACA;IAAC3B;GAAc;AAGjB,MAAIW,qBAAqBM,UAAaG,iBAAiBH,UAAaK,kBAAkB,GAAG;AACvF,WAAO;EACT;AAEA,SACE,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAACQ,MAAAA;IAAGC,WAAU;KAAU,qBAAA,GAGxB,sBAAA,cAACC,MAAAA;IACCC,QAAQb;IACRO;IACAO,YAAW;IACXC,iBAAiBP;IACjB3B;;AAIR;;;ACxEA,OAAOmC,UAASC,eAAAA,cAAaC,WAAAA,gBAAe;AAE5C,SAAmCC,mBAAqC;AACxE,SAASC,sBAAsB;AAC/B,SAASC,aAA8BC,qBAAqB;AAMrD,IAAMC,eAAe,CAACC,UAAAA;AAC3B,QAAM,EAAEC,EAAC,IAAKC,eAAeC,iBAAAA;AAC7B,QAAMC,YAAYC,cAAc;IAAC;GAA2C;AAE5E,QAAMC,mBAAmBC,aACvB,CAACC,OAAYC,UAAAA;AACX,UAAMC,wBAAwB,CAACC,SAAAA;AAC7B,cAAQA,MAAAA;QACN,KAAKC,YAAYC;AACf,iBAAO;YAAEC,MAAMF,YAAYC;YAAOE,MAAM;UAAG;QAC7C,KAAKH,YAAYI;AACf,iBAAO;YAAEF,MAAMF,YAAYI;YAAcC,QAAQ,CAAC;UAAE;QACtD,KAAKL,YAAYM;AACf,iBAAO;YAAEJ,MAAMF,YAAYM;YAAOC,OAAO;UAAG;QAC9C,KAAKP,YAAYQ;AACf,iBAAO;YAAEN,MAAMF,YAAYQ;UAAM;QACnC,KAAKR,YAAYS;AACf,iBAAO;YAAEP,MAAMF,YAAYS;UAAQ;QACrC;AACE,iBAAOC;MACX;IACF;AAEA,UAAMC,cAAcb,sBAAsBD,KAAAA;AAC1C,QAAI,CAACc,aAAa;AAChB;IACF;AAGAnB,cAAUoB,cAAc,UAAUD,WAAAA;EACpC,GACA;IAACnB;GAAU;AAGb,QAAMqB,UAAUC,SACd,MACEC,OAAOC,OAAOhB,WAAAA,EAAaiB,IAAI,CAAClB,UAAU;IACxCF,OAAOE;IACPmB,OAAO7B,EAAE,gBAAgBU,IAAAA,EAAM;EACjC,EAAA,GACF;IAACV;GAAE;AAGL,SAAO,gBAAA8B,OAAA,cAACC,aAAAA;IAAa,GAAGhC;IAAOyB;IAAkBD,eAAelB;;AAClE;;;AF5BO,IAAM2B,gBAAgB,CAAC,EAAEC,OAAOC,SAASC,QAAQC,SAAQ,MAAsB;AACpF,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,iBAAAA;AAE7B,QAAMC,YAAYC,SAASR,OAAOS,OAAOC,OAAOC,YAAAA,CAAAA;AAChD,QAAMC,YAAYJ,SAASR,OAAOS,OAAOC,OAAOG,YAAAA,CAAAA;AAChD,QAAMC,UAAUN,SAASR,OAAOS,OAAOC,OAAOK,UAAAA,CAAAA;AAE9C,QAAMC,aAAa,CAACC,WAAAA;AAClBf,aAASe,MAAAA;EACX;AAEA,QAAMC,uBAAuBC,yBAAyB;IAAEnB;EAAM,CAAA;AAE9D,QAAMoB,SAASC,SACb,OAAuB;IACrB,CAAC,UAAA,GAAiD,CAACC,UAAAA;AACjD,YAAMC,WAAWC,aAAY,MAAA;AAC3B,cAAMC,YAAYH,MAAMC,SAAQ;AAChC,YAAIE,qBAAqBC,KAAK;AAC5B,iBAAOD,UAAUE,SAAQ;QAC3B;AACA,eAAOC;MACT,GAAG;QAACN;OAAM;AAEV,YAAMO,sBAAsBL,aAC1B,CAACM,OAAYC,cAAAA;AACX,cAAMC,MAAMN,IAAIO,MAAMF,SAAAA;AACtB,YAAIC,KAAK;AACP,gBAAME,MAAMC,IAAIC,QAAQJ,GAAAA;AACxBV,gBAAMe,cAAc,UAAUH,GAAAA;QAChC;MACF,GACA;QAACZ,MAAMe;OAAc;AAGvB,aACE,gBAAAC,OAAA,cAACC,cAAAA;QACE,GAAGjB;QACJC;QACAc,eAAeR;QACfW,SAASC,mBAAmB7B,SAAAA,EAAW8B,OAAOC,mBAAmB7B,SAASP,SAAAA,CAAAA;;IAGhF;IACA,CAAC,WAAA,GAAuBqC;IACxB,CAAC,SAAA,GAAqB,CAACtB,UACrB,gBAAAgB,OAAA,cAACO,uBAAAA;MAAuB,GAAGvB;MAAOf;MAAsBuC,mBAAmB5B;;EAE/E,IACA;IAACN;IAAWE;IAASP;IAAWH;GAAE;AAGpC,SACE,gBAAAkC,OAAA,cAACS,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,gBAAAX,OAAA,cAACY,OAAAA;IACCxC,QAAQyC;IACRlC,QAAQhB;IACRC,QAAQc;IACRb;IACAiB;IACA0B,mBAAmB5B;;AAI3B;AAEA,IAAMuB,qBAAqB,CAACW,WAAAA;AAC1B,SAAOA,OAAOC,IAAI,CAACC,WAAW;IAAEC,OAAO,WAAWD,MAAME,EAAE;IAAIC,OAAO,cAAcH,MAAME,EAAE;EAAG,EAAA;AAChG;AAEA,IAAMb,qBAAqB,CAAC7B,SAAuBP,cAAAA;AACjD,QAAMmD,WAAW,CAACC,OAAqB7C,QAAQ8C,KAAK,CAACC,MAAMF,GAAGG,QAAQC,QAAQP,OAAOK,EAAEL,EAAE,GAAGQ,QAAQL,GAAGK;AACvG,SAAOzD,UAAU8C,IAAI,CAACM,QAAQ;IAAEJ,OAAOG,SAASC,EAAAA;IAAKF,OAAO,cAAcE,GAAGK,IAAI;EAAG,EAAA;AACtF;",
6
- "names": ["React", "useCallback", "useMemo", "ComputeGraph", "DXN", "FunctionType", "FunctionTriggerSchema", "ScriptType", "Filter", "Ref", "useQuery", "useTranslation", "Form", "SelectInput", "useRefQueryLookupHandler", "React", "useCallback", "useMemo", "RefImpl", "toEffectSchema", "useOnTransition", "Form", "useFormValues", "FunctionPayloadEditor", "functions", "getValue", "onValueChange", "onQueryRefOptions", "selectedFunctionValue", "useFormValues", "selectedFunctionName", "useMemo", "RefImpl", "dxn", "toString", "split", "at", "selectedFunction", "find", "f", "name", "useOnTransition", "prevValue", "undefined", "currValue", "inputSchema", "effectSchema", "toEffectSchema", "propertyCount", "properties", "Object", "keys", "length", "values", "handleValuesChanged", "useCallback", "h3", "className", "Form", "schema", "classNames", "onValuesChanged", "React", "useCallback", "useMemo", "TriggerKind", "useTranslation", "SelectInput", "useInputProps", "SpecSelector", "props", "t", "useTranslation", "AUTOMATION_PLUGIN", "specProps", "useInputProps", "handleTypeChange", "useCallback", "_type", "value", "getDefaultTriggerSpec", "kind", "TriggerKind", "Timer", "type", "cron", "Subscription", "filter", "Queue", "queue", "Email", "Webhook", "undefined", "defaultSpec", "onValueChange", "options", "useMemo", "Object", "values", "map", "label", "React", "SelectInput", "TriggerEditor", "space", "trigger", "onSave", "onCancel", "t", "useTranslation", "AUTOMATION_PLUGIN", "functions", "useQuery", "Filter", "schema", "FunctionType", "workflows", "ComputeGraph", "scripts", "ScriptType", "handleSave", "values", "handleRefQueryLookup", "useRefQueryLookupHandler", "Custom", "useMemo", "props", "getValue", "useCallback", "formValue", "DXN", "toString", "undefined", "handleOnValueChange", "_type", "dxnString", "dxn", "parse", "ref", "Ref", "fromDXN", "onValueChange", "React", "SelectInput", "options", "getWorkflowOptions", "concat", "getFunctionOptions", "SpecSelector", "FunctionPayloadEditor", "onQueryRefOptions", "div", "role", "className", "Form", "FunctionTriggerSchema", "graphs", "map", "graph", "label", "id", "value", "getLabel", "fn", "find", "s", "source", "target", "name"]
7
- }
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import { type FunctionType } from '@dxos/functions';
3
- import { type FormInputStateProps, type QueryRefOptions } from '@dxos/react-ui-form';
4
- export type FunctionMetaEditorProps = {
5
- functions: FunctionType[];
6
- onQueryRefOptions: QueryRefOptions;
7
- } & FormInputStateProps;
8
- /**
9
- * Editor component for function meta parameters.
10
- */
11
- export declare const FunctionPayloadEditor: ({ functions, getValue, onValueChange, onQueryRefOptions, }: FunctionMetaEditorProps) => React.JSX.Element | null;
12
- //# sourceMappingURL=FunctionPayloadEditor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FunctionPayloadEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/TriggerEditor/FunctionPayloadEditor.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAGpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAQ,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAiB,MAAM,qBAAqB,CAAC;AAE1G,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,iBAAiB,EAAE,eAAe,CAAC;CACpC,GAAG,mBAAmB,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,qBAAqB,+DAK/B,uBAAuB,6BAoDzB,CAAC"}