@dxos/plugin-automation 0.8.4-main.2e9d522 → 0.8.4-main.3c1ae3b

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 (200) hide show
  1. package/dist/lib/browser/AutomationPanel-WVLTR65T.mjs +11 -0
  2. package/dist/lib/browser/AutomationSettings-LOCSJ4XL.mjs +68 -0
  3. package/dist/lib/browser/AutomationSettings-LOCSJ4XL.mjs.map +7 -0
  4. package/dist/lib/browser/FunctionsContainer-CQRS5IQN.mjs +145 -0
  5. package/dist/lib/browser/FunctionsContainer-CQRS5IQN.mjs.map +7 -0
  6. package/dist/lib/browser/{FunctionsPanel-56ZKRVM5.mjs → FunctionsPanel-CRW6SJUN.mjs} +3 -3
  7. package/dist/lib/browser/{app-graph-builder-ZTAUTFI4.mjs → app-graph-builder-W7LLC6XW.mjs} +13 -12
  8. package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-5Q2XVI36.mjs +100 -0
  10. package/dist/lib/browser/chunk-5Q2XVI36.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-6FCNJOBO.mjs +15 -0
  12. package/dist/lib/browser/chunk-6FCNJOBO.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-ABZVRMU7.mjs +14 -0
  14. package/dist/lib/browser/chunk-ABZVRMU7.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-BPRH3NBB.mjs +204 -0
  16. package/dist/lib/browser/chunk-BPRH3NBB.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-LZQFZO3B.mjs +17 -0
  18. package/dist/lib/browser/chunk-LZQFZO3B.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-LYJVTIVD.mjs → chunk-TWWFNOIR.mjs} +30 -15
  20. package/dist/lib/browser/chunk-TWWFNOIR.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-WAZEZHJI.mjs +270 -0
  22. package/dist/lib/browser/chunk-WAZEZHJI.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-HN7OHFCB.mjs → chunk-YBPJCY3F.mjs} +3 -3
  24. package/dist/lib/browser/chunk-YBPJCY3F.mjs.map +7 -0
  25. package/dist/lib/browser/compute-runtime-GPT45IDG.mjs +115 -0
  26. package/dist/lib/browser/compute-runtime-GPT45IDG.mjs.map +7 -0
  27. package/dist/lib/browser/hooks/index.mjs +13 -0
  28. package/dist/lib/browser/index.mjs +49 -19
  29. package/dist/lib/browser/index.mjs.map +4 -4
  30. package/dist/lib/browser/{intent-resolver-U3ZAQEFW.mjs → intent-resolver-MJ7IDWCD.mjs} +17 -14
  31. package/dist/lib/browser/intent-resolver-MJ7IDWCD.mjs.map +7 -0
  32. package/dist/lib/browser/meta.json +1 -1
  33. package/dist/lib/browser/{react-surface-4DFSM7OX.mjs → react-surface-FF5YP324.mjs} +20 -20
  34. package/dist/lib/browser/react-surface-FF5YP324.mjs.map +7 -0
  35. package/dist/lib/browser/types/index.mjs +2 -2
  36. package/dist/lib/node-esm/{AutomationPanel-YYUMSK2W.mjs → AutomationPanel-PKWGKR7X.mjs} +4 -4
  37. package/dist/lib/node-esm/AutomationSettings-V5GZEOOQ.mjs +69 -0
  38. package/dist/lib/node-esm/AutomationSettings-V5GZEOOQ.mjs.map +7 -0
  39. package/dist/lib/node-esm/FunctionsContainer-5BBSN6IG.mjs +146 -0
  40. package/dist/lib/node-esm/FunctionsContainer-5BBSN6IG.mjs.map +7 -0
  41. package/dist/lib/node-esm/{FunctionsPanel-KGIOZSPZ.mjs → FunctionsPanel-RVVCS6VH.mjs} +3 -3
  42. package/dist/lib/node-esm/FunctionsPanel-RVVCS6VH.mjs.map +7 -0
  43. package/dist/lib/node-esm/{app-graph-builder-3FP63ZSG.mjs → app-graph-builder-SLQOO7GH.mjs} +13 -12
  44. package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-267XBACB.mjs +101 -0
  46. package/dist/lib/node-esm/chunk-267XBACB.mjs.map +7 -0
  47. package/dist/lib/node-esm/chunk-6RH5OXPG.mjs +16 -0
  48. package/dist/lib/node-esm/chunk-6RH5OXPG.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-CEVIVRTY.mjs +19 -0
  50. package/dist/lib/node-esm/chunk-CEVIVRTY.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-OEZNHUL2.mjs → chunk-ECJKIUBO.mjs} +3 -3
  52. package/dist/lib/node-esm/chunk-ECJKIUBO.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-FOK5AUNF.mjs +16 -0
  54. package/dist/lib/node-esm/chunk-FOK5AUNF.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-JVPWGVIV.mjs +205 -0
  56. package/dist/lib/node-esm/chunk-JVPWGVIV.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-AZH66CED.mjs → chunk-Q7KY3LVQ.mjs} +104 -64
  58. package/dist/lib/node-esm/chunk-Q7KY3LVQ.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-ZGPUV5VS.mjs → chunk-RVK52XGK.mjs} +30 -15
  60. package/dist/lib/node-esm/chunk-RVK52XGK.mjs.map +7 -0
  61. package/dist/lib/node-esm/compute-runtime-SODV3TDU.mjs +116 -0
  62. package/dist/lib/node-esm/compute-runtime-SODV3TDU.mjs.map +7 -0
  63. package/dist/lib/node-esm/hooks/index.mjs +14 -0
  64. package/dist/lib/node-esm/hooks/index.mjs.map +7 -0
  65. package/dist/lib/node-esm/index.mjs +49 -19
  66. package/dist/lib/node-esm/index.mjs.map +4 -4
  67. package/dist/lib/node-esm/{intent-resolver-3QWXEBPX.mjs → intent-resolver-NOBCKCF6.mjs} +17 -14
  68. package/dist/lib/node-esm/intent-resolver-NOBCKCF6.mjs.map +7 -0
  69. package/dist/lib/node-esm/meta.json +1 -1
  70. package/dist/lib/node-esm/{react-surface-3PNW7NDW.mjs → react-surface-OQIMKKTP.mjs} +20 -20
  71. package/dist/lib/node-esm/react-surface-OQIMKKTP.mjs.map +7 -0
  72. package/dist/lib/node-esm/types/index.mjs +2 -2
  73. package/dist/types/src/AutomationPlugin.d.ts +1 -1
  74. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  76. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  77. package/dist/types/src/capabilities/capabilities.d.ts +21 -0
  78. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/compute-runtime.d.ts +5 -0
  80. package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -0
  81. package/dist/types/src/capabilities/index.d.ts +5 -3
  82. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  84. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  86. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  87. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +6 -5
  88. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  89. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +49 -4
  90. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  91. package/dist/types/src/components/AutomationSettings.d.ts +5 -0
  92. package/dist/types/src/components/AutomationSettings.d.ts.map +1 -0
  93. package/dist/types/src/components/FunctionsContainer.d.ts.map +1 -1
  94. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  95. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts +8 -0
  96. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -0
  97. package/dist/types/src/components/FunctionsRegistry/index.d.ts +2 -0
  98. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -0
  99. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +10 -8
  100. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  101. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +6 -3
  102. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  103. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +9 -6
  104. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  105. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +117 -4
  106. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/TriggerSettings.d.ts +6 -0
  108. package/dist/types/src/components/TriggerSettings.d.ts.map +1 -0
  109. package/dist/types/src/components/index.d.ts +2 -2
  110. package/dist/types/src/components/index.d.ts.map +1 -1
  111. package/dist/types/src/events.d.ts +4 -0
  112. package/dist/types/src/events.d.ts.map +1 -0
  113. package/dist/types/src/hooks/index.d.ts +3 -0
  114. package/dist/types/src/hooks/index.d.ts.map +1 -0
  115. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +13 -0
  116. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -0
  117. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +11 -0
  118. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -0
  119. package/dist/types/src/index.d.ts +3 -0
  120. package/dist/types/src/index.d.ts.map +1 -1
  121. package/dist/types/src/meta.d.ts +0 -1
  122. package/dist/types/src/meta.d.ts.map +1 -1
  123. package/dist/types/src/testing/test-functions.d.ts +2 -3
  124. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  125. package/dist/types/src/translations.d.ts +6 -0
  126. package/dist/types/src/translations.d.ts.map +1 -1
  127. package/dist/types/src/types/schema.d.ts +1 -1
  128. package/dist/types/src/types/schema.d.ts.map +1 -1
  129. package/dist/types/tsconfig.tsbuildinfo +1 -1
  130. package/package.json +63 -38
  131. package/src/AutomationPlugin.tsx +37 -31
  132. package/src/capabilities/app-graph-builder.ts +16 -15
  133. package/src/capabilities/capabilities.ts +42 -0
  134. package/src/capabilities/compute-runtime.ts +129 -0
  135. package/src/capabilities/index.ts +3 -0
  136. package/src/capabilities/intent-resolver.ts +20 -15
  137. package/src/capabilities/react-surface.tsx +15 -15
  138. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +16 -17
  139. package/src/components/AutomationPanel/AutomationPanel.tsx +127 -54
  140. package/src/components/AutomationSettings.tsx +30 -0
  141. package/src/components/FunctionsContainer.tsx +18 -13
  142. package/src/components/FunctionsPanel/FunctionsPanel.tsx +35 -16
  143. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +126 -0
  144. package/src/components/FunctionsRegistry/index.ts +5 -0
  145. package/src/components/TriggerEditor/FunctionInputEditor.tsx +40 -24
  146. package/src/components/TriggerEditor/SpecSelector.tsx +29 -21
  147. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +78 -32
  148. package/src/components/TriggerEditor/TriggerEditor.tsx +86 -41
  149. package/src/components/TriggerSettings.tsx +25 -0
  150. package/src/components/index.ts +1 -1
  151. package/src/events.ts +11 -0
  152. package/src/hooks/index.ts +6 -0
  153. package/src/hooks/useComputeRuntimeCallback.ts +68 -0
  154. package/src/hooks/useTriggerRuntimeControls.ts +53 -0
  155. package/src/index.ts +3 -0
  156. package/src/meta.ts +6 -5
  157. package/src/testing/test-functions.ts +3 -3
  158. package/src/translations.ts +9 -0
  159. package/src/types/schema.ts +1 -1
  160. package/dist/lib/browser/AutomationContainer-VZNV2ZQF.mjs +0 -38
  161. package/dist/lib/browser/AutomationContainer-VZNV2ZQF.mjs.map +0 -7
  162. package/dist/lib/browser/AutomationPanel-ZWA6GOFY.mjs +0 -11
  163. package/dist/lib/browser/FunctionsContainer-IOB333TX.mjs +0 -39
  164. package/dist/lib/browser/FunctionsContainer-IOB333TX.mjs.map +0 -7
  165. package/dist/lib/browser/app-graph-builder-ZTAUTFI4.mjs.map +0 -7
  166. package/dist/lib/browser/chunk-ECSTS2UI.mjs +0 -14
  167. package/dist/lib/browser/chunk-ECSTS2UI.mjs.map +0 -7
  168. package/dist/lib/browser/chunk-ERTIGJYE.mjs +0 -147
  169. package/dist/lib/browser/chunk-ERTIGJYE.mjs.map +0 -7
  170. package/dist/lib/browser/chunk-FSJZXTS2.mjs +0 -230
  171. package/dist/lib/browser/chunk-FSJZXTS2.mjs.map +0 -7
  172. package/dist/lib/browser/chunk-GW5U2DGT.mjs +0 -15
  173. package/dist/lib/browser/chunk-GW5U2DGT.mjs.map +0 -7
  174. package/dist/lib/browser/chunk-HN7OHFCB.mjs.map +0 -7
  175. package/dist/lib/browser/chunk-LYJVTIVD.mjs.map +0 -7
  176. package/dist/lib/browser/intent-resolver-U3ZAQEFW.mjs.map +0 -7
  177. package/dist/lib/browser/react-surface-4DFSM7OX.mjs.map +0 -7
  178. package/dist/lib/node-esm/AutomationContainer-WMIH3F4V.mjs +0 -39
  179. package/dist/lib/node-esm/AutomationContainer-WMIH3F4V.mjs.map +0 -7
  180. package/dist/lib/node-esm/FunctionsContainer-DJWB6WFH.mjs +0 -40
  181. package/dist/lib/node-esm/FunctionsContainer-DJWB6WFH.mjs.map +0 -7
  182. package/dist/lib/node-esm/app-graph-builder-3FP63ZSG.mjs.map +0 -7
  183. package/dist/lib/node-esm/chunk-AZH66CED.mjs.map +0 -7
  184. package/dist/lib/node-esm/chunk-HIMYPGHF.mjs +0 -148
  185. package/dist/lib/node-esm/chunk-HIMYPGHF.mjs.map +0 -7
  186. package/dist/lib/node-esm/chunk-NK5N3QKD.mjs +0 -17
  187. package/dist/lib/node-esm/chunk-NK5N3QKD.mjs.map +0 -7
  188. package/dist/lib/node-esm/chunk-OEZNHUL2.mjs.map +0 -7
  189. package/dist/lib/node-esm/chunk-SGZPTJ47.mjs +0 -16
  190. package/dist/lib/node-esm/chunk-SGZPTJ47.mjs.map +0 -7
  191. package/dist/lib/node-esm/chunk-ZGPUV5VS.mjs.map +0 -7
  192. package/dist/lib/node-esm/intent-resolver-3QWXEBPX.mjs.map +0 -7
  193. package/dist/lib/node-esm/react-surface-3PNW7NDW.mjs.map +0 -7
  194. package/dist/types/src/components/AutomationContainer.d.ts +0 -5
  195. package/dist/types/src/components/AutomationContainer.d.ts.map +0 -1
  196. package/src/components/AutomationContainer.tsx +0 -30
  197. /package/dist/lib/browser/{AutomationPanel-ZWA6GOFY.mjs.map → AutomationPanel-WVLTR65T.mjs.map} +0 -0
  198. /package/dist/lib/browser/{FunctionsPanel-56ZKRVM5.mjs.map → FunctionsPanel-CRW6SJUN.mjs.map} +0 -0
  199. /package/dist/lib/{node-esm/AutomationPanel-YYUMSK2W.mjs.map → browser/hooks/index.mjs.map} +0 -0
  200. /package/dist/lib/node-esm/{FunctionsPanel-KGIOZSPZ.mjs.map → AutomationPanel-PKWGKR7X.mjs.map} +0 -0
@@ -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 Query } from '@dxos/echo';\nimport { Function, Script, Trigger } from '@dxos/functions';\nimport { Filter, Ref, type Space, 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 useRefQueryOptions,\n} from '@dxos/react-ui-form';\n\nimport { FunctionInputEditor, type FunctionInputEditorProps } from './FunctionInputEditor';\nimport { SpecSelector } from './SpecSelector';\n\ntype TriggerFormSchema = ExcludeId<typeof Trigger.Trigger>;\n\nexport type TriggerEditorProps = {\n space: Space;\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 = ({ space, types, tags, readonlySpec, trigger, ...formProps }: TriggerEditorProps) => {\n const handleQueryRefOptions = useRefQueryOptions({ space });\n const fieldMap = useCustomInputs({\n space,\n types,\n tags,\n readonlySpec,\n onQueryRefOptions: handleQueryRefOptions,\n });\n\n return (\n <Form.Root<TriggerFormSchema>\n {...formProps}\n schema={omitId(Trigger.Trigger)}\n values={trigger}\n fieldMap={fieldMap}\n onQueryRefOptions={handleQueryRefOptions}\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 space: Space;\n readonlySpec?: boolean;\n onQueryRefOptions: FunctionInputEditorProps['onQueryRefOptions'];\n} & Pick<QueryFormProps, 'types' | 'tags'>;\n\nconst useCustomInputs = ({\n space,\n readonlySpec,\n types,\n tags,\n onQueryRefOptions,\n}: UseCustomInputsProps): FormFieldMap => {\n const functions = useQuery(space, Filter.type(Function.Function));\n const workflows = useQuery(space, Filter.type(ComputeGraph));\n const scripts = useQuery(space, Filter.type(Script.Script));\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' as const]: (props) => <SpecSelector {...props} readonly={readonlySpec} />,\n\n // TODO(wittjosiah): Copied from ViewEditor.\n // Query input editor.\n ['spec.query' as const]: (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' as const]: (props) => (\n <FunctionInputEditor {...props} functions={functions} onQueryRefOptions={onQueryRefOptions} />\n ),\n }),\n [workflows, scripts, functions, 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", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as SchemaAST from 'effect/SchemaAST';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Ref, Type } from '@dxos/echo';\nimport { type JsonPath } from '@dxos/echo/internal';\nimport { type Function } from '@dxos/functions';\nimport { useOnTransition, useTranslation } from '@dxos/react-ui';\nimport {\n Form,\n type FormFieldStateProps,\n type FormRootProps,\n type QueryRefOptions,\n omitId,\n useFormValues,\n} from '@dxos/react-ui-form';\n\nimport { meta } from '../../meta';\n\nexport type FunctionInputEditorProps = {\n type: SchemaAST.AST;\n functions: Function.Function[];\n onQueryRefOptions: QueryRefOptions;\n} & FormFieldStateProps;\n\nexport const FunctionInputEditor = ({\n type,\n functions,\n getValue,\n onValueChange,\n onQueryRefOptions,\n}: 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 ? Type.toEffectSchema(inputSchema) : undefined), [inputSchema]);\n const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;\n const values = useMemo(() => getValue() ?? {}, [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 schema={omitId(effectSchema)}\n values={values}\n onValuesChanged={handleValuesChanged}\n onQueryRefOptions={onQueryRefOptions}\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:' };\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", "Function", "Script", "Trigger", "Filter", "Ref", "useQuery", "Input", "QueryForm", "Form", "FormFieldLabel", "SelectField", "omitId", "useRefQueryOptions", "React", "useCallback", "useMemo", "Ref", "Type", "useOnTransition", "useTranslation", "Form", "omitId", "useFormValues", "FunctionInputEditor", "type", "functions", "getValue", "onValueChange", "onQueryRefOptions", "t", "useTranslation", "meta", "id", "selectedFunctionValue", "useFormValues", "displayName", "selectedFunctionId", "useMemo", "Ref", "isRef", "dxn", "toString", "split", "at", "selectedFunction", "find", "fn", "useOnTransition", "prevValue", "currValue", "undefined", "inputSchema", "effectSchema", "Type", "toEffectSchema", "propertyCount", "properties", "Object", "keys", "length", "values", "handleValuesChanged", "useCallback", "Form", "Label", "label", "asChild", "Root", "schema", "omitId", "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", "space", "types", "tags", "readonlySpec", "trigger", "formProps", "handleQueryRefOptions", "useRefQueryOptions", "fieldMap", "useCustomInputs", "onQueryRefOptions", "React", "Form", "Root", "schema", "omitId", "Trigger", "values", "Viewport", "Content", "FieldSet", "Actions", "functions", "useQuery", "Filter", "type", "Function", "workflows", "ComputeGraph", "scripts", "Script", "useMemo", "props", "getValue", "useCallback", "formValue", "Ref", "isRef", "dxn", "toString", "undefined", "handleOnValueChange", "_type", "dxnString", "DXN", "parse", "ref", "fromDXN", "onValueChange", "SelectField", "options", "getWorkflowOptions", "concat", "getFunctionOptions", "SpecSelector", "readonly", "handleChange", "query", "ast", "Input", "FormFieldLabel", "label", "asChild", "QueryForm", "initialQuery", "onChange", "FunctionInputEditor", "graphs", "map", "graph", "id", "value", "getLabel", "fn", "find", "s", "source", "target", "name"]
7
+ }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-GW5U2DGT.mjs";
3
+ } from "./chunk-LZQFZO3B.mjs";
4
4
 
5
5
  // src/types/schema.ts
6
- import { Schema } from "effect";
6
+ import * as Schema from "effect/Schema";
7
7
  import { SpaceSchema } from "@dxos/react-client/echo";
8
8
  var TriggerTemplate = Schema.Union(Schema.Struct({
9
9
  type: Schema.Literal("timer"),
@@ -35,4 +35,4 @@ var AutomationAction;
35
35
  export {
36
36
  AutomationAction
37
37
  };
38
- //# sourceMappingURL=chunk-HN7OHFCB.mjs.map
38
+ //# sourceMappingURL=chunk-YBPJCY3F.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/schema.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { SpaceSchema } from '@dxos/react-client/echo';\n\nimport { meta } from '../meta';\n\nconst TriggerTemplate = Schema.Union(\n Schema.Struct({ type: Schema.Literal('timer'), cron: Schema.String }),\n Schema.Struct({ type: Schema.Literal('queue'), queueDXN: Schema.Any }),\n);\n\nexport namespace AutomationAction {\n export class CreateTriggerFromTemplate extends Schema.TaggedClass<CreateTriggerFromTemplate>()(\n `${meta.id}/action/create-trigger-from-template`,\n {\n input: Schema.Struct({\n space: SpaceSchema,\n template: TriggerTemplate,\n enabled: Schema.optional(Schema.Boolean),\n // TODO(wittjosiah): Improve how this lookup is done.\n scriptName: Schema.optional(Schema.String),\n input: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n }),\n output: Schema.Void,\n },\n ) {}\n}\n"],
5
+ "mappings": ";;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,mBAAmB;AAI5B,IAAMC,kBAAyBC,aACtBC,cAAO;EAAEC,MAAaC,eAAQ,OAAA;EAAUC,MAAaC;AAAO,CAAA,GAC5DJ,cAAO;EAAEC,MAAaC,eAAQ,OAAA;EAAUG,UAAiBC;AAAI,CAAA,CAAA;UAGrDC,mBAAAA;EACR,MAAMC,kCAAyCC,mBAAW,EAC/D,GAAGC,KAAKC,EAAE,wCACV;IACEC,OAAcZ,cAAO;MACnBa,OAAOC;MACPC,UAAUjB;MACVkB,SAAgBC,gBAAgBC,cAAO;;MAEvCC,YAAmBF,gBAAgBb,aAAM;MACzCQ,OAAcK,gBAAgBG,cAAO;QAAEC,KAAYjB;QAAQkB,OAAchB;MAAI,CAAA,CAAA;IAC/E,CAAA;IACAiB,QAAeC;EACjB,CAAA,EAAA;EACC;oBAbUhB,4BAAAA;AAcf,GAfiBD,qBAAAA,mBAAAA,CAAAA,EAAAA;;",
6
+ "names": ["Schema", "SpaceSchema", "TriggerTemplate", "Union", "Struct", "type", "Literal", "cron", "String", "queueDXN", "Any", "AutomationAction", "CreateTriggerFromTemplate", "TaggedClass", "meta", "id", "input", "space", "SpaceSchema", "template", "enabled", "optional", "Boolean", "scriptName", "Record", "key", "value", "output", "Void"]
7
+ }
@@ -0,0 +1,115 @@
1
+ import {
2
+ AutomationCapabilities
3
+ } from "./chunk-6FCNJOBO.mjs";
4
+ import "./chunk-LZQFZO3B.mjs";
5
+
6
+ // src/capabilities/compute-runtime.ts
7
+ import * as BrowserKeyValueStore from "@effect/platform-browser/BrowserKeyValueStore";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Layer from "effect/Layer";
10
+ import * as ManagedRuntime from "effect/ManagedRuntime";
11
+ import { Capabilities, contributes } from "@dxos/app-framework";
12
+ import { GenericToolkit, makeToolExecutionServiceFromFunctions, makeToolResolverFromFunctions } from "@dxos/assistant";
13
+ import { Resource } from "@dxos/context";
14
+ import { Query, Ref } from "@dxos/echo";
15
+ import { Database } from "@dxos/echo";
16
+ import { CredentialsService, QueueService } from "@dxos/functions";
17
+ import { FunctionImplementationResolver, FunctionInvocationServiceLayerWithLocalLoopbackExecutor, InvocationTracer, RemoteFunctionExecutionService, TriggerDispatcher } from "@dxos/functions-runtime";
18
+ import { TriggerStateStore } from "@dxos/functions-runtime";
19
+ import { invariant } from "@dxos/invariant";
20
+ import { ClientCapabilities } from "@dxos/plugin-client";
21
+ import { SpaceProperties } from "@dxos/react-client/echo";
22
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/capabilities/compute-runtime.ts";
23
+ var compute_runtime_default = (async (context) => {
24
+ const provider = await new ComputeRuntimeProviderImpl(context).open();
25
+ return contributes(AutomationCapabilities.ComputeRuntime, provider, async () => {
26
+ await provider.close();
27
+ });
28
+ });
29
+ var ComputeRuntimeProviderImpl = class extends Resource {
30
+ #runtimes = /* @__PURE__ */ new Map();
31
+ #context;
32
+ constructor(context) {
33
+ super();
34
+ this.#context = context;
35
+ }
36
+ async _open() {
37
+ }
38
+ async _close() {
39
+ await Promise.all(Array.from(this.#runtimes.values()).map((rt) => rt.dispose()));
40
+ this.#runtimes.clear();
41
+ }
42
+ getRuntime(spaceId) {
43
+ if (this.#runtimes.has(spaceId)) {
44
+ return this.#runtimes.get(spaceId);
45
+ }
46
+ const layer = Layer.unwrapEffect(Effect.gen(this, function* () {
47
+ const client = this.#context.getCapability(ClientCapabilities.Client);
48
+ const serviceLayer = this.#context.getCapability(Capabilities.AiServiceLayer) ?? Layer.die("AiService not found");
49
+ const functions = this.#context.getCapabilities(Capabilities.Functions).flat();
50
+ const toolkits = this.#context.getCapabilities(Capabilities.Toolkit);
51
+ const mergedToolkit = GenericToolkit.merge(...toolkits);
52
+ const toolkit = mergedToolkit.toolkit;
53
+ const toolkitLayer = mergedToolkit.layer;
54
+ const space = client.spaces.get(spaceId);
55
+ invariant(space, void 0, {
56
+ F: __dxlog_file,
57
+ L: 73,
58
+ S: this,
59
+ A: [
60
+ "space",
61
+ ""
62
+ ]
63
+ });
64
+ yield* Effect.promise(() => space.waitUntilReady());
65
+ return Layer.mergeAll(TriggerDispatcher.layer({
66
+ timeControl: "natural"
67
+ })).pipe(Layer.provideMerge(Layer.mergeAll(InvocationTracerLive, TriggerStateStore.layerKv.pipe(Layer.provide(BrowserKeyValueStore.layerLocalStorage)), makeToolResolverFromFunctions(functions, toolkit), makeToolExecutionServiceFromFunctions(toolkit, toolkitLayer))), Layer.provideMerge(Layer.mergeAll(FunctionInvocationServiceLayerWithLocalLoopbackExecutor.pipe(Layer.provideMerge(FunctionImplementationResolver.layerTest({
68
+ functions
69
+ })), Layer.provideMerge(RemoteFunctionExecutionService.fromClient(
70
+ client,
71
+ // If agent is not enabled do not provide spaceId because space context will be unavailable on EDGE.
72
+ client.config.get("runtime.client.edgeFeatures.agents") ? spaceId : void 0
73
+ )), Layer.provideMerge(serviceLayer), Layer.provideMerge(CredentialsService.layerFromDatabase()), Layer.provideMerge(space ? Database.Service.layer(space.db) : Database.Service.notAvailable), Layer.provideMerge(space ? QueueService.layer(space.queues) : QueueService.notAvailable)))));
74
+ }));
75
+ const runtime = ManagedRuntime.make(layer);
76
+ this.#runtimes.set(spaceId, runtime);
77
+ return runtime;
78
+ }
79
+ };
80
+ var InvocationTracerLive = Layer.unwrapEffect(Effect.gen(function* () {
81
+ const objects = yield* Database.Service.runQuery(Query.type(SpaceProperties));
82
+ const [properties] = objects;
83
+ invariant(properties, void 0, {
84
+ F: __dxlog_file,
85
+ L: 118,
86
+ S: this,
87
+ A: [
88
+ "properties",
89
+ ""
90
+ ]
91
+ });
92
+ if (!properties.invocationTraceQueue || !properties.invocationTraceQueue.target) {
93
+ const queue2 = yield* QueueService.createQueue({
94
+ subspaceTag: "trace"
95
+ });
96
+ properties.invocationTraceQueue = Ref.fromDXN(queue2.dxn);
97
+ }
98
+ const queue = properties.invocationTraceQueue.target;
99
+ invariant(queue, void 0, {
100
+ F: __dxlog_file,
101
+ L: 126,
102
+ S: this,
103
+ A: [
104
+ "queue",
105
+ ""
106
+ ]
107
+ });
108
+ return InvocationTracer.layerLive({
109
+ invocationTraceQueue: queue
110
+ });
111
+ }));
112
+ export {
113
+ compute_runtime_default as default
114
+ };
115
+ //# sourceMappingURL=compute-runtime-GPT45IDG.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/compute-runtime.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as BrowserKeyValueStore from '@effect/platform-browser/BrowserKeyValueStore';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as ManagedRuntime from 'effect/ManagedRuntime';\n\nimport { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';\nimport { GenericToolkit, makeToolExecutionServiceFromFunctions, makeToolResolverFromFunctions } from '@dxos/assistant';\nimport { Resource } from '@dxos/context';\nimport { Query, Ref } from '@dxos/echo';\nimport { Database } from '@dxos/echo';\nimport { CredentialsService, QueueService } from '@dxos/functions';\nimport {\n FunctionImplementationResolver,\n FunctionInvocationServiceLayerWithLocalLoopbackExecutor,\n InvocationTracer,\n RemoteFunctionExecutionService,\n TriggerDispatcher,\n} from '@dxos/functions-runtime';\nimport { TriggerStateStore } from '@dxos/functions-runtime';\nimport { invariant } from '@dxos/invariant';\nimport { type SpaceId } from '@dxos/keys';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { SpaceProperties } from '@dxos/react-client/echo';\n\nimport { AutomationCapabilities } from './capabilities';\n\nexport default async (context: PluginContext) => {\n const provider = await new ComputeRuntimeProviderImpl(context).open();\n return contributes(AutomationCapabilities.ComputeRuntime, provider, async () => {\n await provider.close();\n });\n};\n\nclass ComputeRuntimeProviderImpl extends Resource implements AutomationCapabilities.ComputeRuntimeProvider {\n readonly #runtimes = new Map<SpaceId, AutomationCapabilities.ComputeRuntime>();\n readonly #context: PluginContext;\n\n constructor(context: PluginContext) {\n super();\n this.#context = context;\n }\n\n protected override async _open() {}\n\n protected override async _close() {\n await Promise.all(Array.from(this.#runtimes.values()).map((rt) => rt.dispose()));\n this.#runtimes.clear();\n }\n\n getRuntime(spaceId: SpaceId): AutomationCapabilities.ComputeRuntime {\n if (this.#runtimes.has(spaceId)) {\n return this.#runtimes.get(spaceId)!;\n }\n\n const layer = Layer.unwrapEffect(\n Effect.gen(this, function* () {\n const client = this.#context.getCapability(ClientCapabilities.Client);\n const serviceLayer =\n this.#context.getCapability(Capabilities.AiServiceLayer) ?? Layer.die('AiService not found');\n\n // TODO(dmaretskyi): Make these reactive.\n const functions = this.#context.getCapabilities(Capabilities.Functions).flat();\n const toolkits = this.#context.getCapabilities(Capabilities.Toolkit);\n const mergedToolkit = GenericToolkit.merge(...toolkits);\n const toolkit = mergedToolkit.toolkit;\n const toolkitLayer = mergedToolkit.layer;\n\n const space = client.spaces.get(spaceId);\n invariant(space);\n yield* Effect.promise(() => space.waitUntilReady());\n\n return Layer.mergeAll(TriggerDispatcher.layer({ timeControl: 'natural' })).pipe(\n Layer.provideMerge(\n Layer.mergeAll(\n InvocationTracerLive,\n TriggerStateStore.layerKv.pipe(Layer.provide(BrowserKeyValueStore.layerLocalStorage)),\n makeToolResolverFromFunctions(functions, toolkit),\n makeToolExecutionServiceFromFunctions(toolkit, toolkitLayer),\n ),\n ),\n Layer.provideMerge(\n Layer.mergeAll(\n FunctionInvocationServiceLayerWithLocalLoopbackExecutor.pipe(\n Layer.provideMerge(FunctionImplementationResolver.layerTest({ functions })),\n Layer.provideMerge(\n RemoteFunctionExecutionService.fromClient(\n client,\n // If agent is not enabled do not provide spaceId because space context will be unavailable on EDGE.\n client.config.get('runtime.client.edgeFeatures.agents') ? spaceId : undefined,\n ),\n ),\n Layer.provideMerge(serviceLayer),\n Layer.provideMerge(CredentialsService.layerFromDatabase()),\n Layer.provideMerge(space ? Database.Service.layer(space.db) : Database.Service.notAvailable),\n Layer.provideMerge(space ? QueueService.layer(space.queues) : QueueService.notAvailable),\n ),\n ),\n ),\n );\n }),\n );\n\n const runtime = ManagedRuntime.make(layer);\n this.#runtimes.set(spaceId, runtime);\n\n return runtime;\n }\n}\n\nconst InvocationTracerLive = Layer.unwrapEffect(\n Effect.gen(function* () {\n const objects = yield* Database.Service.runQuery(Query.type(SpaceProperties));\n const [properties] = objects;\n invariant(properties);\n // TODO(burdon): Check ref target has loaded?\n if (!properties.invocationTraceQueue || !properties.invocationTraceQueue.target) {\n const queue = yield* QueueService.createQueue({ subspaceTag: 'trace' });\n properties.invocationTraceQueue = Ref.fromDXN(queue.dxn);\n }\n\n const queue = properties.invocationTraceQueue.target;\n invariant(queue);\n return InvocationTracer.layerLive({ invocationTraceQueue: queue });\n }),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["BrowserKeyValueStore", "Effect", "Layer", "ManagedRuntime", "Capabilities", "contributes", "GenericToolkit", "makeToolExecutionServiceFromFunctions", "makeToolResolverFromFunctions", "Resource", "Query", "Ref", "Database", "CredentialsService", "QueueService", "FunctionImplementationResolver", "FunctionInvocationServiceLayerWithLocalLoopbackExecutor", "InvocationTracer", "RemoteFunctionExecutionService", "TriggerDispatcher", "TriggerStateStore", "invariant", "ClientCapabilities", "SpaceProperties", "context", "provider", "ComputeRuntimeProviderImpl", "open", "contributes", "AutomationCapabilities", "ComputeRuntime", "close", "Resource", "Map", "_open", "_close", "Promise", "all", "Array", "from", "values", "map", "rt", "dispose", "clear", "getRuntime", "spaceId", "has", "get", "layer", "unwrapEffect", "gen", "client", "getCapability", "ClientCapabilities", "Client", "serviceLayer", "Capabilities", "AiServiceLayer", "die", "functions", "getCapabilities", "Functions", "flat", "toolkits", "Toolkit", "mergedToolkit", "GenericToolkit", "merge", "toolkit", "toolkitLayer", "space", "spaces", "invariant", "promise", "waitUntilReady", "mergeAll", "TriggerDispatcher", "timeControl", "pipe", "provideMerge", "InvocationTracerLive", "TriggerStateStore", "layerKv", "provide", "layerLocalStorage", "makeToolResolverFromFunctions", "makeToolExecutionServiceFromFunctions", "FunctionInvocationServiceLayerWithLocalLoopbackExecutor", "FunctionImplementationResolver", "layerTest", "RemoteFunctionExecutionService", "fromClient", "config", "undefined", "CredentialsService", "layerFromDatabase", "Database", "Service", "db", "notAvailable", "QueueService", "queues", "runtime", "make", "set", "objects", "runQuery", "Query", "type", "SpaceProperties", "properties", "invocationTraceQueue", "target", "queue", "createQueue", "subspaceTag", "Ref", "fromDXN", "dxn", "InvocationTracer", "layerLive"]
7
+ }
@@ -0,0 +1,13 @@
1
+ import {
2
+ invokeFunctionWithTracing,
3
+ useComputeRuntimeCallback,
4
+ useTriggerRuntimeControls
5
+ } from "../chunk-5Q2XVI36.mjs";
6
+ import "../chunk-6FCNJOBO.mjs";
7
+ import "../chunk-LZQFZO3B.mjs";
8
+ export {
9
+ invokeFunctionWithTracing,
10
+ useComputeRuntimeCallback,
11
+ useTriggerRuntimeControls
12
+ };
13
+ //# sourceMappingURL=index.mjs.map
@@ -1,28 +1,40 @@
1
1
  import {
2
- AutomationContainer,
3
2
  AutomationPanel,
3
+ AutomationSettings,
4
4
  FunctionsContainer,
5
5
  FunctionsPanel
6
- } from "./chunk-ECSTS2UI.mjs";
6
+ } from "./chunk-ABZVRMU7.mjs";
7
+ import {
8
+ AppGraphBuilder,
9
+ ComputeRuntime,
10
+ IntentResolver,
11
+ ReactSurface,
12
+ invokeFunctionWithTracing,
13
+ useComputeRuntimeCallback,
14
+ useTriggerRuntimeControls
15
+ } from "./chunk-5Q2XVI36.mjs";
16
+ import {
17
+ AutomationCapabilities
18
+ } from "./chunk-6FCNJOBO.mjs";
7
19
  import {
8
20
  TriggerEditor
9
- } from "./chunk-FSJZXTS2.mjs";
21
+ } from "./chunk-WAZEZHJI.mjs";
10
22
  import {
11
- AUTOMATION_PLUGIN,
12
23
  meta
13
- } from "./chunk-GW5U2DGT.mjs";
24
+ } from "./chunk-LZQFZO3B.mjs";
25
+
26
+ // src/events.ts
27
+ import { defineEvent } from "@dxos/app-framework";
28
+ (function(AutomationEvents2) {
29
+ AutomationEvents2.ComputeRuntimeReady = defineEvent(`${meta.id}/event/compute-runtime-ready`);
30
+ })(AutomationEvents || (AutomationEvents = {}));
31
+ var AutomationEvents;
14
32
 
15
33
  // src/AutomationPlugin.tsx
16
- import { Capabilities, contributes, defineModule, definePlugin, Events } from "@dxos/app-framework";
17
- import { FunctionType, FunctionTrigger } from "@dxos/functions";
34
+ import { Capabilities, Events, contributes, defineModule, definePlugin } from "@dxos/app-framework";
35
+ import { Function, Trigger } from "@dxos/functions";
18
36
  import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
19
37
 
20
- // src/capabilities/index.ts
21
- import { lazy } from "@dxos/app-framework";
22
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-ZTAUTFI4.mjs"));
23
- var IntentResolver = lazy(() => import("./intent-resolver-U3ZAQEFW.mjs"));
24
- var ReactSurface = lazy(() => import("./react-surface-4DFSM7OX.mjs"));
25
-
26
38
  // src/translations.ts
27
39
  var translations = [
28
40
  {
@@ -33,12 +45,18 @@ var translations = [
33
45
  "script automation label": "Automation",
34
46
  "automation verbose label": "Manage automations",
35
47
  "automation description": "You can manage all the triggers which automate your space here.",
48
+ "runtime label": "Enable Local Runtime",
49
+ "runtime description": "This will start a trigger dispatcher locally for this space to run triggers on your device while Composer is running.",
36
50
  "functions panel label": "Functions",
37
51
  "functions verbose label": "Manage deployed functions",
52
+ "functions registry verbose label": "Functions registry",
53
+ "functions registry description": "Import functions from the registry",
38
54
  "functions description": "You can manage all the functions deployed from your space on EDGE here.",
39
55
  "function copy id": "Copy Function ID",
40
56
  "no functions found": "No functions found",
41
57
  "go to function source button label": "Show function source",
58
+ "delete function button label": "Delete function",
59
+ "function parameters label": "Function parameters",
42
60
  "trigger editor title": "Configure Trigger",
43
61
  "new trigger label": "Add Trigger",
44
62
  "trigger type timer": "Timer",
@@ -58,7 +76,7 @@ var translations = [
58
76
  ];
59
77
 
60
78
  // src/AutomationPlugin.tsx
61
- var AutomationPlugin = () => definePlugin(meta, [
79
+ var AutomationPlugin = definePlugin(meta, () => [
62
80
  defineModule({
63
81
  id: `${meta.id}/module/translations`,
64
82
  activatesOn: Events.SetupTranslations,
@@ -68,8 +86,8 @@ var AutomationPlugin = () => definePlugin(meta, [
68
86
  id: `${meta.id}/module/schema`,
69
87
  activatesOn: ClientEvents.SetupSchema,
70
88
  activate: () => contributes(ClientCapabilities.Schema, [
71
- FunctionType,
72
- FunctionTrigger
89
+ Function.Function,
90
+ Trigger.Trigger
73
91
  ])
74
92
  }),
75
93
  defineModule({
@@ -86,16 +104,28 @@ var AutomationPlugin = () => definePlugin(meta, [
86
104
  id: `${meta.id}/module/react-surface`,
87
105
  activatesOn: Events.SetupReactSurface,
88
106
  activate: ReactSurface
107
+ }),
108
+ defineModule({
109
+ id: `${meta.id}/module/compute-runtime`,
110
+ activatesOn: ClientEvents.ClientReady,
111
+ activatesAfter: [
112
+ AutomationEvents.ComputeRuntimeReady
113
+ ],
114
+ activate: ComputeRuntime
89
115
  })
90
116
  ]);
91
117
  export {
92
- AUTOMATION_PLUGIN,
93
- AutomationContainer,
118
+ AutomationCapabilities,
119
+ AutomationEvents,
94
120
  AutomationPanel,
95
121
  AutomationPlugin,
122
+ AutomationSettings,
96
123
  FunctionsContainer,
97
124
  FunctionsPanel,
98
125
  TriggerEditor,
99
- meta
126
+ invokeFunctionWithTracing,
127
+ meta,
128
+ useComputeRuntimeCallback,
129
+ useTriggerRuntimeControls
100
130
  };
101
131
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/AutomationPlugin.tsx", "../../../src/capabilities/index.ts", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { FunctionType, FunctionTrigger } from '@dxos/functions';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\n\nimport { AppGraphBuilder, IntentResolver, ReactSurface } from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\n\nexport const AutomationPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [FunctionType, FunctionTrigger]),\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\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 IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.id]: {\n 'plugin name': 'Automation',\n 'automation panel label': 'Automations',\n 'script automation label': 'Automation',\n 'automation verbose label': 'Manage automations',\n 'automation description': 'You can manage all the triggers which automate your space here.',\n\n 'functions panel label': 'Functions',\n 'functions verbose label': 'Manage deployed functions',\n 'functions description': 'You can manage all the functions deployed from your space on EDGE here.',\n 'function copy id': 'Copy Function ID',\n 'no functions found': 'No functions found',\n 'go to function source button label': 'Show function source',\n\n 'trigger editor title': 'Configure Trigger',\n 'new trigger label': 'Add Trigger',\n 'trigger type timer': 'Timer',\n 'trigger type webhook': 'Webhook',\n 'trigger type websocket': 'Websocket',\n 'trigger type subscription': 'Subscription',\n 'trigger type email': 'Email',\n 'trigger type queue': 'Queue',\n\n 'trigger copy url': 'Copy URL',\n 'trigger copy email': 'Copy Email',\n\n 'trigger payload add': 'Add',\n 'trigger payload remove': 'Remove',\n 'trigger payload prop name placeholder': 'New payload property name',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
- "mappings": ";;;;;;;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,cAAcC,cAAcC,cAAc;AAC9E,SAASC,cAAcC,uBAAuB;AAC9C,SAASC,oBAAoBC,oBAAoB;;;ACFjD,SAASC,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAME,eAAeF,KAAK,MAAM,OAAO,8BAAA,CAAA;;;ACAvC,IAAMG,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,0BAA0B;QAC1B,2BAA2B;QAC3B,4BAA4B;QAC5B,0BAA0B;QAE1B,yBAAyB;QACzB,2BAA2B;QAC3B,yBAAyB;QACzB,oBAAoB;QACpB,sBAAsB;QACtB,sCAAsC;QAEtC,wBAAwB;QACxB,qBAAqB;QACrB,sBAAsB;QACtB,wBAAwB;QACxB,0BAA0B;QAC1B,6BAA6B;QAC7B,sBAAsB;QACtB,sBAAsB;QAEtB,oBAAoB;QACpB,sBAAsB;QAEtB,uBAAuB;QACvB,0BAA0B;QAC1B,yCAAyC;MAC3C;IACF;EACF;;;;AF9BK,IAAMC,mBAAmB,MAC9BC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,YAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaQ,aAAaC;IAC1BN,UAAU,MAAMC,YAAYM,mBAAmBC,QAAQ;MAACC;MAAcC;KAAgB;EACxF,CAAA;EACAf,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOa;IACpBX,UAAUY;EACZ,CAAA;EACAjB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOe;IACpBb,UAAUc;EACZ,CAAA;EACAnB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOiB;IACpBf,UAAUgB;EACZ,CAAA;CACD;",
6
- "names": ["Capabilities", "contributes", "defineModule", "definePlugin", "Events", "FunctionType", "FunctionTrigger", "ClientCapabilities", "ClientEvents", "lazy", "AppGraphBuilder", "lazy", "IntentResolver", "ReactSurface", "translations", "meta", "id", "AutomationPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "ClientEvents", "SetupSchema", "ClientCapabilities", "Schema", "FunctionType", "FunctionTrigger", "SetupAppGraph", "AppGraphBuilder", "SetupIntentResolver", "IntentResolver", "SetupReactSurface", "ReactSurface"]
3
+ "sources": ["../../../src/events.ts", "../../../src/AutomationPlugin.tsx", "../../../src/translations.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineEvent } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport namespace AutomationEvents {\n export const ComputeRuntimeReady = defineEvent(`${meta.id}/event/compute-runtime-ready`);\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, defineModule, definePlugin } from '@dxos/app-framework';\nimport { Function, Trigger } from '@dxos/functions';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\n\nimport { AppGraphBuilder, ComputeRuntime, IntentResolver, ReactSurface } from './capabilities';\nimport { AutomationEvents } from './events';\nimport { meta } from './meta';\nimport { translations } from './translations';\n\nexport const AutomationPlugin = definePlugin(meta, () => [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [Function.Function, Trigger.Trigger]),\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/compute-runtime`,\n activatesOn: ClientEvents.ClientReady,\n activatesAfter: [AutomationEvents.ComputeRuntimeReady],\n activate: ComputeRuntime,\n }),\n]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.id]: {\n 'plugin name': 'Automation',\n 'automation panel label': 'Automations',\n 'script automation label': 'Automation',\n 'automation verbose label': 'Manage automations',\n 'automation description': 'You can manage all the triggers which automate your space here.',\n\n 'runtime label': 'Enable Local Runtime',\n 'runtime description':\n 'This will start a trigger dispatcher locally for this space to run triggers on your device while Composer is running.',\n\n 'functions panel label': 'Functions',\n 'functions verbose label': 'Manage deployed functions',\n 'functions registry verbose label': 'Functions registry',\n 'functions registry description': 'Import functions from the registry',\n 'functions description': 'You can manage all the functions deployed from your space on EDGE here.',\n 'function copy id': 'Copy Function ID',\n 'no functions found': 'No functions found',\n 'go to function source button label': 'Show function source',\n 'delete function button label': 'Delete function',\n\n 'function parameters label': 'Function parameters',\n\n 'trigger editor title': 'Configure Trigger',\n 'new trigger label': 'Add Trigger',\n 'trigger type timer': 'Timer',\n 'trigger type webhook': 'Webhook',\n 'trigger type websocket': 'Websocket',\n 'trigger type subscription': 'Subscription',\n 'trigger type email': 'Email',\n 'trigger type queue': 'Queue',\n\n 'trigger copy url': 'Copy URL',\n 'trigger copy email': 'Copy Email',\n\n 'trigger payload add': 'Add',\n 'trigger payload remove': 'Remove',\n 'trigger payload prop name placeholder': 'New payload property name',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,mBAAmB;UAIXC,mBAAAA;oBACFC,sBAAsBC,YAAY,GAAGC,KAAKC,EAAE,8BAA8B;AACzF,GAFiBJ,qBAAAA,mBAAAA,CAAAA,EAAAA;;;;ACJjB,SAASK,cAAcC,QAAQC,aAAaC,cAAcC,oBAAoB;AAC9E,SAASC,UAAUC,eAAe;AAClC,SAASC,oBAAoBC,oBAAoB;;;ACE1C,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,0BAA0B;QAC1B,2BAA2B;QAC3B,4BAA4B;QAC5B,0BAA0B;QAE1B,iBAAiB;QACjB,uBACE;QAEF,yBAAyB;QACzB,2BAA2B;QAC3B,oCAAoC;QACpC,kCAAkC;QAClC,yBAAyB;QACzB,oBAAoB;QACpB,sBAAsB;QACtB,sCAAsC;QACtC,gCAAgC;QAEhC,6BAA6B;QAE7B,wBAAwB;QACxB,qBAAqB;QACrB,sBAAsB;QACtB,wBAAwB;QACxB,0BAA0B;QAC1B,6BAA6B;QAC7B,sBAAsB;QACtB,sBAAsB;QAEtB,oBAAoB;QACpB,sBAAsB;QAEtB,uBAAuB;QACvB,0BAA0B;QAC1B,yCAAyC;MAC3C;IACF;EACF;;;;ADtCK,IAAMC,mBAAmBC,aAAaC,MAAM,MAAM;EACvDC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,YAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaQ,aAAaC;IAC1BN,UAAU,MAAMC,YAAYM,mBAAmBC,QAAQ;MAACC,SAASA;MAAUC,QAAQA;KAAQ;EAC7F,CAAA;EACAf,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOa;IACpBX,UAAUY;EACZ,CAAA;EACAjB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOe;IACpBb,UAAUc;EACZ,CAAA;EACAnB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOiB;IACpBf,UAAUgB;EACZ,CAAA;EACArB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaQ,aAAaY;IAC1BC,gBAAgB;MAACC,iBAAiBC;;IAClCpB,UAAUqB;EACZ,CAAA;CACD;",
6
+ "names": ["defineEvent", "AutomationEvents", "ComputeRuntimeReady", "defineEvent", "meta", "id", "Capabilities", "Events", "contributes", "defineModule", "definePlugin", "Function", "Trigger", "ClientCapabilities", "ClientEvents", "translations", "meta", "id", "AutomationPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "ClientEvents", "SetupSchema", "ClientCapabilities", "Schema", "Function", "Trigger", "SetupAppGraph", "AppGraphBuilder", "SetupIntentResolver", "IntentResolver", "SetupReactSurface", "ReactSurface", "ClientReady", "activatesAfter", "AutomationEvents", "ComputeRuntimeReady", "ComputeRuntime"]
7
7
  }
@@ -1,31 +1,33 @@
1
1
  import {
2
2
  AutomationAction
3
- } from "./chunk-HN7OHFCB.mjs";
4
- import "./chunk-GW5U2DGT.mjs";
3
+ } from "./chunk-YBPJCY3F.mjs";
4
+ import "./chunk-LZQFZO3B.mjs";
5
5
 
6
6
  // src/capabilities/intent-resolver.ts
7
- import { contributes, Capabilities, createResolver, createIntent, LayoutAction } from "@dxos/app-framework";
8
- import { Obj, Ref } from "@dxos/echo";
9
- import { FunctionTrigger, FunctionType, ScriptType, TriggerKind } from "@dxos/functions";
7
+ import { Capabilities, LayoutAction, contributes, createIntent, createResolver } from "@dxos/app-framework";
8
+ import { Ref } from "@dxos/echo";
9
+ import { Function, Script, Trigger } from "@dxos/functions";
10
10
  import { ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
11
11
  import { SpaceAction } from "@dxos/plugin-space/types";
12
12
  import { Filter } from "@dxos/react-client/echo";
13
- var intent_resolver_default = (context) => contributes(Capabilities.IntentResolver, [
13
+ var intent_resolver_default = ((context) => contributes(Capabilities.IntentResolver, [
14
14
  createResolver({
15
15
  intent: AutomationAction.CreateTriggerFromTemplate,
16
16
  resolve: async ({ space, template, enabled = false, scriptName, input }) => {
17
- const trigger = Obj.make(FunctionTrigger, {
17
+ const trigger = Trigger.make({
18
18
  enabled,
19
19
  input
20
20
  });
21
21
  if (scriptName) {
22
- const { objects: [script] } = await space.db.query(Filter.type(ScriptType, {
22
+ const scripts = await space.db.query(Filter.type(Script.Script, {
23
23
  name: scriptName
24
24
  })).run();
25
+ const [script] = scripts;
25
26
  if (script) {
26
- const { objects: [fn] } = await space.db.query(Filter.type(FunctionType, {
27
+ const functions = await space.db.query(Filter.type(Function.Function, {
27
28
  source: Ref.make(script)
28
29
  })).run();
30
+ const [fn] = functions;
29
31
  if (fn) {
30
32
  trigger.function = Ref.make(fn);
31
33
  }
@@ -34,14 +36,14 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
34
36
  switch (template.type) {
35
37
  case "timer": {
36
38
  trigger.spec = {
37
- kind: TriggerKind.Timer,
39
+ kind: "timer",
38
40
  cron: template.cron
39
41
  };
40
42
  break;
41
43
  }
42
44
  case "queue": {
43
45
  trigger.spec = {
44
- kind: TriggerKind.Queue,
46
+ kind: "queue",
45
47
  queue: template.queueDXN.toString()
46
48
  };
47
49
  break;
@@ -54,7 +56,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
54
56
  intents: [
55
57
  createIntent(SpaceAction.AddObject, {
56
58
  object: trigger,
57
- target: space
59
+ target: space,
60
+ hidden: true
58
61
  }),
59
62
  createIntent(LayoutAction.Open, {
60
63
  part: "main",
@@ -69,8 +72,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
69
72
  };
70
73
  }
71
74
  })
72
- ]);
75
+ ]));
73
76
  export {
74
77
  intent_resolver_default as default
75
78
  };
76
- //# sourceMappingURL=intent-resolver-U3ZAQEFW.mjs.map
79
+ //# sourceMappingURL=intent-resolver-MJ7IDWCD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n LayoutAction,\n type PluginContext,\n contributes,\n createIntent,\n createResolver,\n} from '@dxos/app-framework';\nimport { Ref } from '@dxos/echo';\nimport { Function, Script, Trigger } from '@dxos/functions';\nimport { type DXN } from '@dxos/keys';\nimport { ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Filter } from '@dxos/react-client/echo';\n\nimport { AutomationAction } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: AutomationAction.CreateTriggerFromTemplate,\n resolve: async ({ space, template, enabled = false, scriptName, input }) => {\n const trigger = Trigger.make({ enabled, input });\n\n // TODO(wittjosiah): Factor out function lookup by script name?\n if (scriptName) {\n const scripts = await space.db.query(Filter.type(Script.Script, { name: scriptName })).run();\n const [script] = scripts;\n if (script) {\n const functions = await space.db.query(Filter.type(Function.Function, { source: Ref.make(script) })).run();\n const [fn] = functions;\n if (fn) {\n trigger.function = Ref.make(fn);\n }\n }\n }\n\n switch (template.type) {\n case 'timer': {\n trigger.spec = { kind: 'timer', cron: template.cron };\n break;\n }\n case 'queue': {\n trigger.spec = {\n kind: 'queue',\n queue: (template.queueDXN as DXN).toString(),\n };\n break;\n }\n default: {\n break;\n }\n }\n\n return {\n intents: [\n createIntent(SpaceAction.AddObject, {\n object: trigger,\n target: space,\n hidden: true,\n }),\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [`automation-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`],\n options: {\n workspace: space.id,\n },\n }),\n ],\n };\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;AAIA,SACEA,cACAC,cAEAC,aACAC,cACAC,sBACK;AACP,SAASC,WAAW;AACpB,SAASC,UAAUC,QAAQC,eAAe;AAE1C,SAASC,iCAAiC;AAC1C,SAASC,mBAAmB;AAC5B,SAASC,cAAc;AAIvB,IAAA,2BAAe,CAACC,YACdC,YAAYC,aAAaC,gBAAgB;EACvCC,eAAe;IACbC,QAAQC,iBAAiBC;IACzBC,SAAS,OAAO,EAAEC,OAAOC,UAAUC,UAAU,OAAOC,YAAYC,MAAK,MAAE;AACrE,YAAMC,UAAUC,QAAQC,KAAK;QAAEL;QAASE;MAAM,CAAA;AAG9C,UAAID,YAAY;AACd,cAAMK,UAAU,MAAMR,MAAMS,GAAGC,MAAMC,OAAOC,KAAKC,OAAOA,QAAQ;UAAEC,MAAMX;QAAW,CAAA,CAAA,EAAIY,IAAG;AAC1F,cAAM,CAACC,MAAAA,IAAUR;AACjB,YAAIQ,QAAQ;AACV,gBAAMC,YAAY,MAAMjB,MAAMS,GAAGC,MAAMC,OAAOC,KAAKM,SAASA,UAAU;YAAEC,QAAQC,IAAIb,KAAKS,MAAAA;UAAQ,CAAA,CAAA,EAAID,IAAG;AACxG,gBAAM,CAACM,EAAAA,IAAMJ;AACb,cAAII,IAAI;AACNhB,oBAAQiB,WAAWF,IAAIb,KAAKc,EAAAA;UAC9B;QACF;MACF;AAEA,cAAQpB,SAASW,MAAI;QACnB,KAAK,SAAS;AACZP,kBAAQkB,OAAO;YAAEC,MAAM;YAASC,MAAMxB,SAASwB;UAAK;AACpD;QACF;QACA,KAAK,SAAS;AACZpB,kBAAQkB,OAAO;YACbC,MAAM;YACNE,OAAQzB,SAAS0B,SAAiBC,SAAQ;UAC5C;AACA;QACF;QACA,SAAS;AACP;QACF;MACF;AAEA,aAAO;QACLC,SAAS;UACPC,aAAaC,YAAYC,WAAW;YAClCC,QAAQ5B;YACR6B,QAAQlC;YACRmC,QAAQ;UACV,CAAA;UACAL,aAAaM,aAAaC,MAAM;YAC9BC,MAAM;YACNC,SAAS;cAAC,sBAAsBC,yBAAAA,GAA4BxC,MAAMyC,EAAE;;YACpEC,SAAS;cACPC,WAAW3C,MAAMyC;YACnB;UACF,CAAA;;MAEJ;IACF;EACF,CAAA;CACD;",
6
+ "names": ["Capabilities", "LayoutAction", "contributes", "createIntent", "createResolver", "Ref", "Function", "Script", "Trigger", "ATTENDABLE_PATH_SEPARATOR", "SpaceAction", "Filter", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "AutomationAction", "CreateTriggerFromTemplate", "resolve", "space", "template", "enabled", "scriptName", "input", "trigger", "Trigger", "make", "scripts", "db", "query", "Filter", "type", "Script", "name", "run", "script", "functions", "Function", "source", "Ref", "fn", "function", "spec", "kind", "cron", "queue", "queueDXN", "toString", "intents", "createIntent", "SpaceAction", "AddObject", "object", "target", "hidden", "LayoutAction", "Open", "part", "subject", "ATTENDABLE_PATH_SEPARATOR", "id", "options", "workspace"]
7
+ }