@dxos/plugin-automation 0.8.4-main.e098934 → 0.8.4-main.e8ec1fe

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 (189) hide show
  1. package/dist/lib/browser/AutomationPanel-7OECLR5N.mjs +11 -0
  2. package/dist/lib/browser/AutomationSettings-KCZISXI6.mjs +68 -0
  3. package/dist/lib/browser/AutomationSettings-KCZISXI6.mjs.map +7 -0
  4. package/dist/lib/browser/FunctionsContainer-MIWEISRR.mjs +151 -0
  5. package/dist/lib/browser/FunctionsContainer-MIWEISRR.mjs.map +7 -0
  6. package/dist/lib/browser/{FunctionsPanel-I443Y6KB.mjs → FunctionsPanel-CRW6SJUN.mjs} +3 -3
  7. package/dist/lib/browser/{app-graph-builder-4OFKIRAI.mjs → app-graph-builder-W7LLC6XW.mjs} +12 -11
  8. package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-EPEXQP45.mjs +14 -0
  10. package/dist/lib/browser/chunk-EPEXQP45.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-S4SM663I.mjs → chunk-JW7XSPYW.mjs} +59 -22
  12. package/dist/lib/browser/chunk-JW7XSPYW.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-LZQFZO3B.mjs +17 -0
  14. package/dist/lib/browser/chunk-LZQFZO3B.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-NAPXRXTY.mjs +100 -0
  16. package/dist/lib/browser/chunk-NAPXRXTY.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-4TWQV33E.mjs → chunk-QKFBHAGN.mjs} +66 -25
  18. package/dist/lib/browser/chunk-QKFBHAGN.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-Z5DT4MHW.mjs → chunk-TWWFNOIR.mjs} +30 -15
  20. package/dist/lib/browser/chunk-TWWFNOIR.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-XAKZ4ANY.mjs +15 -0
  22. package/dist/lib/browser/chunk-XAKZ4ANY.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-EIQTHJFZ.mjs +113 -0
  26. package/dist/lib/browser/compute-runtime-EIQTHJFZ.mjs.map +7 -0
  27. package/dist/lib/browser/hooks/index.mjs +13 -0
  28. package/dist/lib/browser/index.mjs +47 -18
  29. package/dist/lib/browser/index.mjs.map +4 -4
  30. package/dist/lib/browser/{intent-resolver-4PSYSQQG.mjs → intent-resolver-5HR7M7T6.mjs} +10 -10
  31. package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs.map +7 -0
  32. package/dist/lib/browser/meta.json +1 -1
  33. package/dist/lib/browser/{react-surface-M52XGLXY.mjs → react-surface-YQW7WCFW.mjs} +20 -20
  34. package/dist/lib/browser/react-surface-YQW7WCFW.mjs.map +7 -0
  35. package/dist/lib/browser/types/index.mjs +2 -2
  36. package/dist/lib/node-esm/{AutomationPanel-MKOLA2FE.mjs → AutomationPanel-HCVFNHGQ.mjs} +4 -4
  37. package/dist/lib/node-esm/AutomationSettings-UUUPVNUJ.mjs +69 -0
  38. package/dist/lib/node-esm/AutomationSettings-UUUPVNUJ.mjs.map +7 -0
  39. package/dist/lib/node-esm/FunctionsContainer-6OB3JN5O.mjs +152 -0
  40. package/dist/lib/node-esm/FunctionsContainer-6OB3JN5O.mjs.map +7 -0
  41. package/dist/lib/node-esm/{FunctionsPanel-ELINCXPW.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-555IHYOB.mjs → app-graph-builder-SLQOO7GH.mjs} +12 -11
  44. package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs.map +7 -0
  45. package/dist/lib/node-esm/{chunk-AONUBWBE.mjs → chunk-6YRKST6M.mjs} +66 -25
  46. package/dist/lib/node-esm/chunk-6YRKST6M.mjs.map +7 -0
  47. package/dist/lib/node-esm/chunk-CEVIVRTY.mjs +19 -0
  48. package/dist/lib/node-esm/chunk-CEVIVRTY.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-CPP35BE6.mjs +16 -0
  50. package/dist/lib/node-esm/chunk-CPP35BE6.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-KB7NFEYY.mjs +16 -0
  54. package/dist/lib/node-esm/chunk-KB7NFEYY.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-PICJ2REN.mjs +101 -0
  56. package/dist/lib/node-esm/chunk-PICJ2REN.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-CX2AILIS.mjs → chunk-RVK52XGK.mjs} +30 -15
  58. package/dist/lib/node-esm/chunk-RVK52XGK.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-ZOJVKPCA.mjs → chunk-W76WUTZY.mjs} +59 -22
  60. package/dist/lib/node-esm/chunk-W76WUTZY.mjs.map +7 -0
  61. package/dist/lib/node-esm/compute-runtime-URROOC34.mjs +114 -0
  62. package/dist/lib/node-esm/compute-runtime-URROOC34.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 +47 -18
  66. package/dist/lib/node-esm/index.mjs.map +4 -4
  67. package/dist/lib/node-esm/{intent-resolver-6ZGBUILG.mjs → intent-resolver-KDRYB5BC.mjs} +10 -10
  68. package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs.map +7 -0
  69. package/dist/lib/node-esm/meta.json +1 -1
  70. package/dist/lib/node-esm/{react-surface-Y6AOXM75.mjs → react-surface-NNHYNBO6.mjs} +20 -20
  71. package/dist/lib/node-esm/react-surface-NNHYNBO6.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.map +1 -1
  76. package/dist/types/src/capabilities/capabilities.d.ts +20 -0
  77. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  78. package/dist/types/src/capabilities/compute-runtime.d.ts +5 -0
  79. package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -0
  80. package/dist/types/src/capabilities/index.d.ts +2 -0
  81. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  83. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +2 -2
  84. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  85. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +5 -1
  86. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  87. package/dist/types/src/components/AutomationSettings.d.ts +5 -0
  88. package/dist/types/src/components/AutomationSettings.d.ts.map +1 -0
  89. package/dist/types/src/components/FunctionsContainer.d.ts.map +1 -1
  90. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  91. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts +8 -0
  92. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -0
  93. package/dist/types/src/components/FunctionsRegistry/index.d.ts +2 -0
  94. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -0
  95. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +2 -2
  96. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  97. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  98. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +7 -5
  99. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  100. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +9 -4
  101. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  102. package/dist/types/src/components/TriggerSettings.d.ts +6 -0
  103. package/dist/types/src/components/TriggerSettings.d.ts.map +1 -0
  104. package/dist/types/src/components/index.d.ts +1 -1
  105. package/dist/types/src/components/index.d.ts.map +1 -1
  106. package/dist/types/src/events.d.ts +4 -0
  107. package/dist/types/src/events.d.ts.map +1 -0
  108. package/dist/types/src/hooks/index.d.ts +3 -0
  109. package/dist/types/src/hooks/index.d.ts.map +1 -0
  110. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +12 -0
  111. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -0
  112. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +11 -0
  113. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -0
  114. package/dist/types/src/index.d.ts +3 -0
  115. package/dist/types/src/index.d.ts.map +1 -1
  116. package/dist/types/src/meta.d.ts +0 -1
  117. package/dist/types/src/meta.d.ts.map +1 -1
  118. package/dist/types/src/translations.d.ts +5 -0
  119. package/dist/types/src/translations.d.ts.map +1 -1
  120. package/dist/types/src/types/schema.d.ts +1 -1
  121. package/dist/types/src/types/schema.d.ts.map +1 -1
  122. package/dist/types/tsconfig.tsbuildinfo +1 -1
  123. package/package.json +61 -38
  124. package/src/AutomationPlugin.tsx +36 -30
  125. package/src/capabilities/app-graph-builder.ts +14 -13
  126. package/src/capabilities/capabilities.ts +41 -0
  127. package/src/capabilities/compute-runtime.ts +127 -0
  128. package/src/capabilities/index.ts +3 -0
  129. package/src/capabilities/intent-resolver.ts +5 -5
  130. package/src/capabilities/react-surface.tsx +15 -15
  131. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +7 -11
  132. package/src/components/AutomationPanel/AutomationPanel.tsx +97 -33
  133. package/src/components/{AutomationContainer.tsx → AutomationSettings.tsx} +8 -6
  134. package/src/components/FunctionsContainer.tsx +11 -4
  135. package/src/components/FunctionsPanel/FunctionsPanel.tsx +35 -16
  136. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +135 -0
  137. package/src/components/FunctionsRegistry/index.ts +5 -0
  138. package/src/components/TriggerEditor/FunctionInputEditor.tsx +10 -4
  139. package/src/components/TriggerEditor/SpecSelector.tsx +14 -8
  140. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +62 -22
  141. package/src/components/TriggerEditor/TriggerEditor.tsx +44 -18
  142. package/src/components/TriggerSettings.tsx +25 -0
  143. package/src/components/index.ts +1 -1
  144. package/src/events.ts +11 -0
  145. package/src/hooks/index.ts +6 -0
  146. package/src/hooks/useComputeRuntimeCallback.ts +68 -0
  147. package/src/hooks/useTriggerRuntimeControls.ts +53 -0
  148. package/src/index.ts +3 -0
  149. package/src/meta.ts +6 -5
  150. package/src/testing/test-functions.ts +1 -1
  151. package/src/translations.ts +7 -0
  152. package/src/types/schema.ts +1 -1
  153. package/dist/lib/browser/AutomationContainer-BRV5AJZ3.mjs +0 -35
  154. package/dist/lib/browser/AutomationContainer-BRV5AJZ3.mjs.map +0 -7
  155. package/dist/lib/browser/AutomationPanel-N5HFJJXW.mjs +0 -11
  156. package/dist/lib/browser/FunctionsContainer-U4HASI4P.mjs +0 -36
  157. package/dist/lib/browser/FunctionsContainer-U4HASI4P.mjs.map +0 -7
  158. package/dist/lib/browser/app-graph-builder-4OFKIRAI.mjs.map +0 -7
  159. package/dist/lib/browser/chunk-4TWQV33E.mjs.map +0 -7
  160. package/dist/lib/browser/chunk-EIY2EUWC.mjs +0 -14
  161. package/dist/lib/browser/chunk-EIY2EUWC.mjs.map +0 -7
  162. package/dist/lib/browser/chunk-GW5U2DGT.mjs +0 -15
  163. package/dist/lib/browser/chunk-GW5U2DGT.mjs.map +0 -7
  164. package/dist/lib/browser/chunk-HN7OHFCB.mjs.map +0 -7
  165. package/dist/lib/browser/chunk-S4SM663I.mjs.map +0 -7
  166. package/dist/lib/browser/chunk-Z5DT4MHW.mjs.map +0 -7
  167. package/dist/lib/browser/intent-resolver-4PSYSQQG.mjs.map +0 -7
  168. package/dist/lib/browser/react-surface-M52XGLXY.mjs.map +0 -7
  169. package/dist/lib/node-esm/AutomationContainer-FYRDTERM.mjs +0 -36
  170. package/dist/lib/node-esm/AutomationContainer-FYRDTERM.mjs.map +0 -7
  171. package/dist/lib/node-esm/FunctionsContainer-VZIVURH6.mjs +0 -37
  172. package/dist/lib/node-esm/FunctionsContainer-VZIVURH6.mjs.map +0 -7
  173. package/dist/lib/node-esm/app-graph-builder-555IHYOB.mjs.map +0 -7
  174. package/dist/lib/node-esm/chunk-AONUBWBE.mjs.map +0 -7
  175. package/dist/lib/node-esm/chunk-CICQ73ZT.mjs +0 -16
  176. package/dist/lib/node-esm/chunk-CICQ73ZT.mjs.map +0 -7
  177. package/dist/lib/node-esm/chunk-CX2AILIS.mjs.map +0 -7
  178. package/dist/lib/node-esm/chunk-NK5N3QKD.mjs +0 -17
  179. package/dist/lib/node-esm/chunk-NK5N3QKD.mjs.map +0 -7
  180. package/dist/lib/node-esm/chunk-OEZNHUL2.mjs.map +0 -7
  181. package/dist/lib/node-esm/chunk-ZOJVKPCA.mjs.map +0 -7
  182. package/dist/lib/node-esm/intent-resolver-6ZGBUILG.mjs.map +0 -7
  183. package/dist/lib/node-esm/react-surface-Y6AOXM75.mjs.map +0 -7
  184. package/dist/types/src/components/AutomationContainer.d.ts +0 -5
  185. package/dist/types/src/components/AutomationContainer.d.ts.map +0 -1
  186. /package/dist/lib/browser/{AutomationPanel-N5HFJJXW.mjs.map → AutomationPanel-7OECLR5N.mjs.map} +0 -0
  187. /package/dist/lib/browser/{FunctionsPanel-I443Y6KB.mjs.map → FunctionsPanel-CRW6SJUN.mjs.map} +0 -0
  188. /package/dist/lib/{node-esm/AutomationPanel-MKOLA2FE.mjs.map → browser/hooks/index.mjs.map} +0 -0
  189. /package/dist/lib/node-esm/{FunctionsPanel-ELINCXPW.mjs.map → AutomationPanel-HCVFNHGQ.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/FunctionsContainer.tsx", "../../../src/components/FunctionsRegistry/FunctionsRegistry.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\n\nimport { FunctionsPanel } from './FunctionsPanel';\nimport { FunctionsRegistry } from './FunctionsRegistry';\n\nexport const FunctionsContainer = ({ space }: { space: Space }) => {\n const { t } = useTranslation(meta.id);\n return (\n <ControlPage>\n <ControlSection\n title={t('functions verbose label', { ns: meta.id })}\n description={t('functions description', { ns: meta.id })}\n >\n <FunctionsPanel space={space} />\n </ControlSection>\n <ControlSection\n title={t('functions registry verbose label', { ns: meta.id })}\n description={t('functions registry description', { ns: meta.id })}\n >\n <FunctionsRegistry space={space} />\n </ControlSection>\n </ControlPage>\n );\n};\n\nexport default FunctionsContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as EffectFunction from 'effect/Function';\nimport * as Order from 'effect/Order';\nimport * as Schema from 'effect/Schema';\nimport { useState } from 'react';\nimport React, { useCallback } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { Function } from '@dxos/functions';\nimport { getDeployedFunctions } from '@dxos/functions-runtime/edge';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, Query, type Space, useQuery } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\nimport { IconButton, useTranslation } from '@dxos/react-ui';\nimport { controlItemClasses } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { meta } from '../../meta';\n\nconst grid = 'grid grid-cols-[1fr_1fr_auto] min-bs-[2.5rem]';\n\ntype FunctionsRegistryProps = {\n space: Space;\n};\n\nexport const FunctionsRegistry = ({ space }: FunctionsRegistryProps) => {\n const client = useClient();\n const [loading, setLoading] = useState(true);\n const [functions, setFunctions] = useState<Function.Function[]>([]);\n const { t } = useTranslation(meta.id);\n\n const dbFunctions = useQuery(space, Filter.type(Function.Function));\n\n const state = (func: Function.Function) => {\n const dbFunction = dbFunctions.find((f) => f.key === func.key);\n if (!dbFunction) {\n return 'import';\n }\n if (dbFunction.version === func.version && dbFunction.updated === func.updated) {\n return 'none';\n }\n return 'update';\n };\n\n useAsyncEffect(async () => {\n setLoading(true);\n const functions = await getDeployedFunctions(client);\n setFunctions(functions);\n setLoading(false);\n }, []);\n\n const dedupedFunctions = EffectFunction.pipe(\n functions,\n Array.filter((_) => _.key !== undefined),\n Array.sort(Order.reverse(Order.mapInput(Order.string, (_: Function.Function) => _.updated ?? ''))),\n Array.dedupeWith((self, that) => self.key === that.key),\n Array.sort(Order.mapInput(Order.string, (_: Function.Function) => _.key ?? '')),\n );\n\n const hanleImportOrUpdate = useCallback(\n async (func: Function.Function) => {\n const {\n objects: [existingFunc],\n } = await space.db.query(Query.type(Function.Function, { key: func.key })).run();\n if (!existingFunc) {\n space.db.add(func);\n return;\n }\n existingFunc.version = func.version;\n existingFunc.updated = func.updated;\n existingFunc.name = func.name;\n existingFunc.description = func.description;\n // TODO(dmaretskyi): A workaround for an ECHO bug.\n existingFunc.inputSchema = JSON.parse(JSON.stringify(func.inputSchema));\n existingFunc.outputSchema = JSON.parse(JSON.stringify(func.outputSchema));\n Obj.getMeta(existingFunc).keys = JSON.parse(JSON.stringify(Obj.getMeta(func).keys));\n },\n [space],\n );\n\n return (\n <div role='none' className={mx(controlItemClasses)}>\n {dedupedFunctions.length > 0 && (\n <List.Root<Function.Function>\n items={dedupedFunctions}\n isItem={Schema.is(Function.Function)}\n getId={(func) => func.id}\n >\n {({ items }) => (\n <div role='list' className='flex flex-col is-full'>\n {items?.map((func) => (\n <List.Item<Function.Function>\n key={func.id}\n item={func}\n classNames={mx(grid, ghostHover, 'items-center', 'pli-2', 'min-bs-[3rem]')}\n >\n <div className='flex flex-col truncate'>\n <List.ItemTitle classNames='truncate'>{func.name}</List.ItemTitle>\n <div className='text-xs text-description truncate'>{func.key}</div>\n </div>\n <div className='flex flex-col truncate'>\n <div className='text-xs text-description truncate'>{func.version}</div>\n <div className='text-xs text-description truncate'>\n {func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : ''}\n </div>\n </div>\n\n <IconButton\n iconOnly\n icon={state(func) === 'update' ? 'ph--arrows-clockwise--regular' : 'ph--download--regular'}\n label={\n state(func) === 'update' ? t('update function button label') : t('import function button label')\n }\n disabled={state(func) === 'none'}\n onClick={() => hanleImportOrUpdate(func)}\n />\n </List.Item>\n ))}\n </div>\n )}\n </List.Root>\n )}\n\n {dedupedFunctions.length === 0 && !loading && (\n <div className='text-center plb-4 text-gray-500'>{t('no functions found')}</div>\n )}\n {loading && <div className='text-center plb-4 text-gray-500'>{t('loading functions')}</div>}\n </div>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useTranslation", "ControlPage", "ControlSection", "Array", "EffectFunction", "Order", "Schema", "useState", "React", "useCallback", "Obj", "Function", "getDeployedFunctions", "useClient", "Filter", "Query", "useQuery", "useAsyncEffect", "IconButton", "useTranslation", "controlItemClasses", "List", "ghostHover", "mx", "grid", "FunctionsRegistry", "space", "client", "useClient", "loading", "setLoading", "useState", "functions", "setFunctions", "t", "useTranslation", "meta", "id", "dbFunctions", "useQuery", "Filter", "type", "Function", "state", "func", "dbFunction", "find", "f", "key", "version", "updated", "useAsyncEffect", "getDeployedFunctions", "dedupedFunctions", "pipe", "filter", "_", "undefined", "sort", "reverse", "mapInput", "string", "dedupeWith", "self", "that", "hanleImportOrUpdate", "useCallback", "objects", "existingFunc", "db", "query", "Query", "run", "add", "name", "description", "inputSchema", "JSON", "parse", "stringify", "outputSchema", "Obj", "getMeta", "keys", "div", "role", "className", "mx", "controlItemClasses", "length", "List", "Root", "items", "isItem", "is", "getId", "map", "Item", "item", "classNames", "ghostHover", "ItemTitle", "Date", "toLocaleString", "IconButton", "iconOnly", "icon", "label", "disabled", "onClick", "FunctionsContainer", "space", "t", "useTranslation", "meta", "id", "React", "ControlPage", "ControlSection", "title", "ns", "description", "FunctionsPanel", "FunctionsRegistry"]
7
+ }
@@ -2,10 +2,10 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  FunctionsPanel,
4
4
  FunctionsPanel_default
5
- } from "./chunk-CX2AILIS.mjs";
6
- import "./chunk-NK5N3QKD.mjs";
5
+ } from "./chunk-RVK52XGK.mjs";
6
+ import "./chunk-CEVIVRTY.mjs";
7
7
  export {
8
8
  FunctionsPanel,
9
9
  FunctionsPanel_default as default
10
10
  };
11
- //# sourceMappingURL=FunctionsPanel-ELINCXPW.mjs.map
11
+ //# sourceMappingURL=FunctionsPanel-RVVCS6VH.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,21 +1,22 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  meta
4
- } from "./chunk-NK5N3QKD.mjs";
4
+ } from "./chunk-CEVIVRTY.mjs";
5
5
 
6
6
  // src/capabilities/app-graph-builder.ts
7
- import { Rx } from "@effect-rx/rx-react";
8
- import { Option, pipe } from "effect";
7
+ import { Atom } from "@effect-atom/atom-react";
8
+ import * as Function from "effect/Function";
9
+ import * as Option from "effect/Option";
9
10
  import { Capabilities, contributes } from "@dxos/app-framework";
10
11
  import { Obj } from "@dxos/echo";
11
- import { ScriptType } from "@dxos/functions";
12
+ import { Script } from "@dxos/functions";
12
13
  import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
13
14
  import { createExtension } from "@dxos/plugin-graph";
14
- import { SPACE_PLUGIN } from "@dxos/plugin-space";
15
- var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
15
+ import { meta as spaceMeta } from "@dxos/plugin-space";
16
+ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphBuilder, [
16
17
  createExtension({
17
18
  id: `${meta.id}/space-settings-automation`,
18
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.type === `${SPACE_PLUGIN}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
19
+ connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === `${spaceMeta.id}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
19
20
  {
20
21
  id: `automation-${node2.id}`,
21
22
  type: `${meta.id}/space-settings-automation`,
@@ -34,7 +35,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
34
35
  }),
35
36
  createExtension({
36
37
  id: `${meta.id}/space-settings-functions`,
37
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.type === `${SPACE_PLUGIN}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
38
+ connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === `${spaceMeta.id}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
38
39
  {
39
40
  id: `functions-${node2.id}`,
40
41
  type: `${meta.id}/space-settings-functions`,
@@ -53,7 +54,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
53
54
  }),
54
55
  createExtension({
55
56
  id: `${meta.id}/script-companion`,
56
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(ScriptType, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
57
+ connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(Script.Script, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
57
58
  {
58
59
  id: [
59
60
  node2.id,
@@ -74,8 +75,8 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
74
75
  }
75
76
  ]), Option.getOrElse(() => [])))
76
77
  })
77
- ]);
78
+ ]));
78
79
  export {
79
80
  app_graph_builder_default as default
80
81
  };
81
- //# sourceMappingURL=app-graph-builder-555IHYOB.mjs.map
82
+ //# sourceMappingURL=app-graph-builder-SLQOO7GH.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { Script } from '@dxos/functions';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension } from '@dxos/plugin-graph';\nimport { meta as spaceMeta } from '@dxos/plugin-space';\n\nimport { meta } from '../meta';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/space-settings-automation`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.type === `${spaceMeta.id}/settings` ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: `automation-${node.id}`,\n type: `${meta.id}/space-settings-automation`,\n data: `${meta.id}/space-settings-automation`,\n properties: {\n label: ['automation panel label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/space-settings-functions`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.type === `${spaceMeta.id}/settings` ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: `functions-${node.id}`,\n type: `${meta.id}/space-settings-functions`,\n data: `${meta.id}/space-settings-functions`,\n properties: {\n label: ['functions panel label', { ns: meta.id }],\n icon: 'ph--function--regular',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/script-companion`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(Script.Script, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'automation'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'automation',\n properties: {\n label: ['script automation label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AAExB,SAASC,cAAkCC,mBAAmB;AAC9D,SAASC,WAAW;AACpB,SAASC,cAAc;AACvB,SAASC,2BAA2BC,4BAA4B;AAChE,SAASC,uBAAuB;AAChC,SAASC,QAAQC,iBAAiB;AAIlC,IAAA,6BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUA,MAAKM,SAAS,GAAGC,UAAUV,EAAE,cAAqBW,YAAKR,KAAAA,IAAeS,YAAI,CAAA,GAC7FC,WAAI,CAACV,UAAS;MACnB;QACEH,IAAI,cAAcG,MAAKH,EAAE;QACzBS,MAAM,GAAGR,KAAKD,EAAE;QAChBc,MAAM,GAAGb,KAAKD,EAAE;QAChBe,YAAY;UACVC,OAAO;YAAC;YAA0B;cAAEC,IAAIhB,KAAKD;YAAG;;UAChDkB,MAAM;QACR;MACF;KACD,GACMC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACApB,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUA,MAAKM,SAAS,GAAGC,UAAUV,EAAE,cAAqBW,YAAKR,KAAAA,IAAeS,YAAI,CAAA,GAC7FC,WAAI,CAACV,UAAS;MACnB;QACEH,IAAI,aAAaG,MAAKH,EAAE;QACxBS,MAAM,GAAGR,KAAKD,EAAE;QAChBc,MAAM,GAAGb,KAAKD,EAAE;QAChBe,YAAY;UACVC,OAAO;YAAC;YAAyB;cAAEC,IAAIhB,KAAKD;YAAG;;UAC/CkB,MAAM;QACR;MACF;KACD,GACMC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACApB,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUiB,IAAIC,WAAWC,OAAOA,QAAQnB,MAAKW,IAAI,IAAWH,YAAKR,KAAAA,IAAeS,YAAI,CAAA,GAC7FC,WAAI,CAACV,UAAS;MACnB;QACEH,IAAI;UAACG,MAAKH;UAAI;UAAcuB,KAAKC,yBAAAA;QACjCf,MAAMgB;QACNX,MAAM;QACNC,YAAY;UACVC,OAAO;YAAC;YAA2B;cAAEC,IAAIhB,KAAKD;YAAG;;UACjDkB,MAAM;UACNQ,aAAa;QACf;MACF;KACD,GACMP,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;CACD;",
6
+ "names": ["Atom", "Function", "Option", "Capabilities", "contributes", "Obj", "Script", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "createExtension", "meta", "spaceMeta", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "connector", "node", "Atom", "make", "get", "pipe", "flatMap", "type", "spaceMeta", "some", "none", "map", "data", "properties", "label", "ns", "icon", "getOrElse", "Obj", "instanceOf", "Script", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "disposition"]
7
+ }
@@ -1,32 +1,52 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  TriggerEditor
4
- } from "./chunk-ZOJVKPCA.mjs";
4
+ } from "./chunk-W76WUTZY.mjs";
5
5
  import {
6
- AUTOMATION_PLUGIN
7
- } from "./chunk-NK5N3QKD.mjs";
6
+ meta
7
+ } from "./chunk-CEVIVRTY.mjs";
8
8
 
9
9
  // src/components/AutomationPanel/AutomationPanel.tsx
10
10
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
11
- import { Schema } from "effect";
12
- import React, { useState } from "react";
13
- import { Filter, Obj } from "@dxos/echo";
14
- import { FunctionTrigger, FunctionType, ScriptType } from "@dxos/functions";
11
+ import * as Array from "effect/Array";
12
+ import * as EFn from "effect/Function";
13
+ import * as Match from "effect/Match";
14
+ import * as Schema from "effect/Schema";
15
+ import React, { useMemo, useState } from "react";
16
+ import { Filter, Obj, Tag } from "@dxos/echo";
17
+ import { Function, Script, Trigger } from "@dxos/functions";
18
+ import { useTypeOptions } from "@dxos/plugin-space";
15
19
  import { useClient } from "@dxos/react-client";
16
20
  import { getSpace, useQuery } from "@dxos/react-client/echo";
17
21
  import { Clipboard, IconButton, Input, Separator, useTranslation } from "@dxos/react-ui";
18
22
  import { ControlItem, controlItemClasses } from "@dxos/react-ui-form";
19
23
  import { List } from "@dxos/react-ui-list";
20
24
  import { ghostHover, mx } from "@dxos/react-ui-theme";
25
+ import { View } from "@dxos/schema";
26
+ import { Project } from "@dxos/types";
21
27
  var grid = "grid grid-cols-[40px_1fr_32px] min-bs-[2.5rem]";
22
28
  var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) => {
23
29
  var _effect = _useSignals();
24
30
  try {
25
- const { t } = useTranslation(AUTOMATION_PLUGIN);
31
+ const { t } = useTranslation(meta.id);
26
32
  const client = useClient();
27
- const triggers = useQuery(space, Filter.type(FunctionTrigger));
28
- const functions = useQuery(space, Filter.type(FunctionType));
29
- const scripts = useQuery(space, Filter.type(ScriptType));
33
+ const functions = useQuery(space, Filter.type(Function.Function));
34
+ const triggers = useQuery(space, Filter.type(Trigger.Trigger));
35
+ const filteredTriggers = useMemo(() => {
36
+ return object ? triggers.filter(triggerMatch(object)) : triggers;
37
+ }, [
38
+ object,
39
+ triggers
40
+ ]);
41
+ const tags = useQuery(space, Filter.type(Tag.Tag));
42
+ const types = useTypeOptions({
43
+ space,
44
+ annotation: [
45
+ "dynamic",
46
+ "limited-static",
47
+ "object-form"
48
+ ]
49
+ });
30
50
  const [trigger, setTrigger] = useState(initialTrigger);
31
51
  const [selected, setSelected] = useState();
32
52
  const handleSelect = (trigger2) => {
@@ -34,7 +54,7 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
34
54
  setSelected(trigger2);
35
55
  };
36
56
  const handleAdd = () => {
37
- setTrigger(Obj.make(FunctionTrigger, {}));
57
+ setTrigger(Trigger.make({}));
38
58
  setSelected(void 0);
39
59
  };
40
60
  const handleDelete = (trigger2) => {
@@ -46,7 +66,7 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
46
66
  if (selected) {
47
67
  Object.assign(selected, trigger2);
48
68
  } else {
49
- space.db.add(Obj.make(FunctionTrigger, trigger2));
69
+ space.db.add(Trigger.make(trigger2));
50
70
  }
51
71
  setTrigger(void 0);
52
72
  setSelected(void 0);
@@ -62,40 +82,43 @@ var AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }) =>
62
82
  }, /* @__PURE__ */ React.createElement(TriggerEditor, {
63
83
  space,
64
84
  trigger,
85
+ readonlySpec: Boolean(object),
86
+ tags,
87
+ types,
65
88
  onSave: handleSave,
66
89
  onCancel: handleCancel
67
90
  }));
68
91
  }
69
92
  return /* @__PURE__ */ React.createElement("div", {
70
93
  className: mx(controlItemClasses, classNames)
71
- }, triggers.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
72
- items: triggers,
73
- isItem: Schema.is(FunctionTrigger),
94
+ }, filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
95
+ items: filteredTriggers,
96
+ isItem: Schema.is(Trigger.Trigger),
74
97
  getId: (field) => field.id
75
- }, ({ items: triggers2 }) => /* @__PURE__ */ React.createElement("div", {
98
+ }, ({ items: filteredTriggers2 }) => /* @__PURE__ */ React.createElement("div", {
76
99
  role: "list",
77
- className: "flex flex-col w-full"
78
- }, triggers2?.map((trigger2) => {
100
+ className: "flex flex-col is-full"
101
+ }, filteredTriggers2?.map((trigger2) => {
79
102
  const copyAction = getCopyAction(client, trigger2);
80
103
  return /* @__PURE__ */ React.createElement(List.Item, {
81
104
  key: trigger2.id,
82
105
  item: trigger2,
83
- classNames: mx(grid, ghostHover, "items-center", "px-2")
106
+ classNames: mx(grid, ghostHover, "items-center", "pli-2")
84
107
  }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
85
108
  checked: trigger2.enabled,
86
109
  onCheckedChange: (checked) => trigger2.enabled = checked
87
110
  })), /* @__PURE__ */ React.createElement("div", {
88
111
  className: "flex"
89
112
  }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
90
- classNames: "px-1 cursor-pointer w-0 shrink truncate",
113
+ classNames: "pli-1 cursor-pointer is-0 shrink truncate",
91
114
  onClick: () => handleSelect(trigger2)
92
- }, getFunctionName(scripts, functions, trigger2) ?? "\u2205"), copyAction && /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
115
+ }, getFunctionName(functions, trigger2) ?? "\u2205"), copyAction && /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
93
116
  label: t(copyAction.translationKey),
94
117
  value: copyAction.contentProvider()
95
118
  })), /* @__PURE__ */ React.createElement(List.ItemDeleteButton, {
96
119
  onClick: () => handleDelete(trigger2)
97
120
  }));
98
- }))), triggers.length > 0 && /* @__PURE__ */ React.createElement(Separator, {
121
+ }))), filteredTriggers.length > 0 && /* @__PURE__ */ React.createElement(Separator, {
99
122
  classNames: "mlb-4"
100
123
  }), /* @__PURE__ */ React.createElement(IconButton, {
101
124
  icon: "ph--plus--regular",
@@ -128,11 +151,29 @@ var getWebhookUrl = (client, trigger) => {
128
151
  edgeUrl.protocol = isSecure ? "https" : "http";
129
152
  return new URL(`/webhook/${spaceId}:${trigger.id}`, edgeUrl).toString();
130
153
  };
131
- var getFunctionName = (scripts, functions, trigger) => {
154
+ var getFunctionName = (functions, trigger) => {
132
155
  const shortId = trigger.function && `${trigger.function.dxn.toString().slice(0, 16)}\u2026`;
133
156
  const functionObject = functions.find((fn) => fn === trigger.function?.target);
134
157
  return functionObject?.name ?? shortId;
135
158
  };
159
+ var scriptMatch = (script) => (trigger) => {
160
+ const fn = trigger.function?.target;
161
+ if (!Obj.instanceOf(Function.Function, fn)) {
162
+ return false;
163
+ }
164
+ return fn.source?.target === script;
165
+ };
166
+ var projectMatch = (project) => {
167
+ const viewQueries = EFn.pipe(project.collections, Array.map((collection) => collection.target), Array.filter(Schema.is(View.View)), Array.map((view) => Obj.getSnapshot(view).query.ast), Array.map((ast) => JSON.stringify(ast)));
168
+ return (trigger) => {
169
+ const spec = Obj.getSnapshot(trigger).spec;
170
+ if (spec?.kind !== "subscription") {
171
+ return false;
172
+ }
173
+ return viewQueries.some((query) => JSON.stringify(spec.query) === query);
174
+ };
175
+ };
176
+ var triggerMatch = Match.type().pipe(Match.withReturnType(), Match.when((obj) => Obj.instanceOf(Script.Script, obj), (obj) => scriptMatch(obj)), Match.when((obj) => Obj.instanceOf(Project.Project, obj), (obj) => projectMatch(obj)), Match.orElse((_obj) => () => true));
136
177
 
137
178
  // src/components/AutomationPanel/index.ts
138
179
  var AutomationPanel_default = AutomationPanel;
@@ -141,4 +182,4 @@ export {
141
182
  AutomationPanel,
142
183
  AutomationPanel_default
143
184
  };
144
- //# sourceMappingURL=chunk-AONUBWBE.mjs.map
185
+ //# sourceMappingURL=chunk-6YRKST6M.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AutomationPanel/AutomationPanel.tsx", "../../../src/components/AutomationPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as EFn from 'effect/Function';\nimport * as Match from 'effect/Match';\nimport * as Schema from 'effect/Schema';\nimport React, { useMemo, useState } from 'react';\n\nimport { Filter, Obj, Tag } from '@dxos/echo';\nimport { Function, Script, Trigger } from '@dxos/functions';\nimport { useTypeOptions } from '@dxos/plugin-space';\nimport { type Client, useClient } from '@dxos/react-client';\nimport { type Space, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, IconButton, Input, Separator, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { ControlItem, controlItemClasses } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\nimport { View } from '@dxos/schema';\nimport { Project } from '@dxos/types';\n\nimport { meta } from '../../meta';\nimport { TriggerEditor, type TriggerEditorProps } from '../TriggerEditor';\n\nconst grid = 'grid grid-cols-[40px_1fr_32px] min-bs-[2.5rem]';\n\nexport type AutomationPanelProps = ThemedClassName<{\n space: Space;\n object?: Obj.Any;\n initialTrigger?: Trigger.Trigger;\n onDone?: () => void;\n}>;\n\n// TODO(burdon): Factor out common layout with ViewEditor.\nexport const AutomationPanel = ({ classNames, space, object, initialTrigger, onDone }: AutomationPanelProps) => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n const functions = useQuery(space, Filter.type(Function.Function));\n const triggers = useQuery(space, Filter.type(Trigger.Trigger));\n const filteredTriggers = useMemo(() => {\n return object ? triggers.filter(triggerMatch(object)) : triggers;\n }, [object, triggers]);\n const tags = useQuery(space, Filter.type(Tag.Tag));\n const types = useTypeOptions({ space, annotation: ['dynamic', 'limited-static', 'object-form'] });\n\n const [trigger, setTrigger] = useState<Trigger.Trigger | undefined>(initialTrigger);\n const [selected, setSelected] = useState<Trigger.Trigger>();\n\n const handleSelect = (trigger: Trigger.Trigger) => {\n setTrigger(trigger);\n setSelected(trigger);\n };\n\n const handleAdd = () => {\n setTrigger(Trigger.make({}));\n setSelected(undefined);\n };\n\n const handleDelete = (trigger: Trigger.Trigger) => {\n space.db.remove(trigger);\n setTrigger(undefined);\n setSelected(undefined);\n };\n\n const handleSave: TriggerEditorProps['onSave'] = (trigger) => {\n if (selected) {\n Object.assign(selected, trigger);\n } else {\n space.db.add(Trigger.make(trigger));\n }\n\n setTrigger(undefined);\n setSelected(undefined);\n onDone?.();\n };\n\n const handleCancel: TriggerEditorProps['onCancel'] = () => {\n setTrigger(undefined);\n onDone?.();\n };\n\n if (trigger) {\n return (\n <ControlItem title={t('trigger editor title')}>\n <TriggerEditor\n space={space}\n trigger={trigger}\n readonlySpec={Boolean(object)}\n tags={tags}\n types={types}\n onSave={handleSave}\n onCancel={handleCancel}\n />\n </ControlItem>\n );\n }\n\n return (\n <div className={mx(controlItemClasses, classNames)}>\n {filteredTriggers.length > 0 && (\n <List.Root<Trigger.Trigger>\n items={filteredTriggers}\n isItem={Schema.is(Trigger.Trigger)}\n getId={(field) => field.id}\n >\n {({ items: filteredTriggers }) => (\n <div role='list' className='flex flex-col is-full'>\n {filteredTriggers?.map((trigger) => {\n const copyAction = getCopyAction(client, trigger);\n return (\n <List.Item<Trigger.Trigger>\n key={trigger.id}\n item={trigger}\n classNames={mx(grid, ghostHover, 'items-center', 'pli-2')}\n >\n <Input.Root>\n <Input.Switch\n checked={trigger.enabled}\n onCheckedChange={(checked) => (trigger.enabled = checked)}\n />\n </Input.Root>\n\n <div className={'flex'}>\n <List.ItemTitle\n classNames='pli-1 cursor-pointer is-0 shrink truncate'\n onClick={() => handleSelect(trigger)}\n >\n {getFunctionName(functions, trigger) ?? '∅'}\n </List.ItemTitle>\n\n {/* TODO: a better way to expose copy action */}\n {copyAction && (\n <Clipboard.IconButton\n label={t(copyAction.translationKey)}\n value={copyAction.contentProvider()}\n />\n )}\n </div>\n\n <List.ItemDeleteButton onClick={() => handleDelete(trigger)} />\n </List.Item>\n );\n })}\n </div>\n )}\n </List.Root>\n )}\n {filteredTriggers.length > 0 && <Separator classNames='mlb-4' />}\n <IconButton icon='ph--plus--regular' label={t('new trigger label')} onClick={handleAdd} />\n </div>\n );\n};\n\nconst getCopyAction = (client: Client, trigger: Trigger.Trigger | undefined) => {\n if (trigger?.spec?.kind === 'email') {\n return { translationKey: 'trigger copy email', contentProvider: () => `${getSpace(trigger)!.id}@dxos.network` };\n }\n\n if (trigger?.spec?.kind === 'webhook') {\n return { translationKey: 'trigger copy url', contentProvider: () => getWebhookUrl(client, trigger) };\n }\n\n return undefined;\n};\n\nconst getWebhookUrl = (client: Client, trigger: Trigger.Trigger) => {\n const spaceId = getSpace(trigger)!.id;\n const edgeUrl = new URL(client.config.values.runtime!.services!.edge!.url!);\n const isSecure = edgeUrl.protocol.startsWith('https') || edgeUrl.protocol.startsWith('wss');\n edgeUrl.protocol = isSecure ? 'https' : 'http';\n return new URL(`/webhook/${spaceId}:${trigger.id}`, edgeUrl).toString();\n};\n\nconst getFunctionName = (functions: Function.Function[], trigger: Trigger.Trigger) => {\n // TODO(wittjosiah): Truncation should be done in the UI.\n // Warning that the List component is currently a can of worms.\n const shortId = trigger.function && `${trigger.function.dxn.toString().slice(0, 16)}…`;\n const functionObject = functions.find((fn) => fn === trigger.function?.target);\n return functionObject?.name ?? shortId;\n};\n\nconst scriptMatch = (script: Script.Script) => (trigger: Trigger.Trigger) => {\n const fn = trigger.function?.target;\n if (!Obj.instanceOf(Function.Function, fn)) {\n return false;\n }\n\n return fn.source?.target === script;\n};\n\nconst projectMatch = (project: Project.Project) => {\n const viewQueries = EFn.pipe(\n project.collections,\n Array.map((collection) => collection.target),\n Array.filter(Schema.is(View.View)),\n Array.map((view) => Obj.getSnapshot(view).query.ast),\n Array.map((ast) => JSON.stringify(ast)),\n );\n\n return (trigger: Trigger.Trigger) => {\n const spec = Obj.getSnapshot(trigger).spec;\n if (spec?.kind !== 'subscription') {\n return false;\n }\n\n // TODO(wittjosiah): Implement better way of comparing query ASTs.\n return viewQueries.some((query) => JSON.stringify(spec.query) === query);\n };\n};\n\nconst triggerMatch = Match.type<Obj.Any>().pipe(\n Match.withReturnType<(trigger: Trigger.Trigger) => boolean>(),\n Match.when(\n (obj) => Obj.instanceOf(Script.Script, obj),\n (obj) => scriptMatch(obj),\n ),\n Match.when(\n (obj) => Obj.instanceOf(Project.Project, obj),\n (obj) => projectMatch(obj),\n ),\n Match.orElse((_obj) => () => true),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { AutomationPanel } from './AutomationPanel';\n\nexport * from './AutomationPanel';\n\nexport default AutomationPanel;\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,SAAS;AACrB,YAAYC,WAAW;AACvB,YAAYC,YAAY;AACxB,OAAOC,SAASC,SAASC,gBAAgB;AAEzC,SAASC,QAAQC,KAAKC,WAAW;AACjC,SAASC,UAAUC,QAAQC,eAAe;AAC1C,SAASC,sBAAsB;AAC/B,SAAsBC,iBAAiB;AACvC,SAAqBC,UAAUC,gBAAgB;AAC/C,SAASC,WAAWC,YAAYC,OAAOC,WAAiCC,sBAAsB;AAC9F,SAASC,aAAaC,0BAA0B;AAChD,SAASC,YAAY;AACrB,SAASC,YAAYC,UAAU;AAC/B,SAASC,YAAY;AACrB,SAASC,eAAe;AAKxB,IAAMC,OAAO;AAUN,IAAMC,kBAAkB,CAAC,EAAEC,YAAYC,OAAOC,QAAQC,gBAAgBC,OAAM,MAAwB;;;AACzG,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,SAASC,UAAAA;AACf,UAAMC,YAAYC,SAASX,OAAOY,OAAOC,KAAKC,SAASA,QAAQ,CAAA;AAC/D,UAAMC,WAAWJ,SAASX,OAAOY,OAAOC,KAAKG,QAAQA,OAAO,CAAA;AAC5D,UAAMC,mBAAmBC,QAAQ,MAAA;AAC/B,aAAOjB,SAASc,SAASI,OAAOC,aAAanB,MAAAA,CAAAA,IAAWc;IAC1D,GAAG;MAACd;MAAQc;KAAS;AACrB,UAAMM,OAAOV,SAASX,OAAOY,OAAOC,KAAKS,IAAIA,GAAG,CAAA;AAChD,UAAMC,QAAQC,eAAe;MAAExB;MAAOyB,YAAY;QAAC;QAAW;QAAkB;;IAAe,CAAA;AAE/F,UAAM,CAACC,SAASC,UAAAA,IAAcC,SAAsC1B,cAAAA;AACpE,UAAM,CAAC2B,UAAUC,WAAAA,IAAeF,SAAAA;AAEhC,UAAMG,eAAe,CAACL,aAAAA;AACpBC,iBAAWD,QAAAA;AACXI,kBAAYJ,QAAAA;IACd;AAEA,UAAMM,YAAY,MAAA;AAChBL,iBAAWX,QAAQiB,KAAK,CAAC,CAAA,CAAA;AACzBH,kBAAYI,MAAAA;IACd;AAEA,UAAMC,eAAe,CAACT,aAAAA;AACpB1B,YAAMoC,GAAGC,OAAOX,QAAAA;AAChBC,iBAAWO,MAAAA;AACXJ,kBAAYI,MAAAA;IACd;AAEA,UAAMI,aAA2C,CAACZ,aAAAA;AAChD,UAAIG,UAAU;AACZU,eAAOC,OAAOX,UAAUH,QAAAA;MAC1B,OAAO;AACL1B,cAAMoC,GAAGK,IAAIzB,QAAQiB,KAAKP,QAAAA,CAAAA;MAC5B;AAEAC,iBAAWO,MAAAA;AACXJ,kBAAYI,MAAAA;AACZ/B,eAAAA;IACF;AAEA,UAAMuC,eAA+C,MAAA;AACnDf,iBAAWO,MAAAA;AACX/B,eAAAA;IACF;AAEA,QAAIuB,SAAS;AACX,aACE,sBAAA,cAACiB,aAAAA;QAAYC,OAAOxC,EAAE,sBAAA;SACpB,sBAAA,cAACyC,eAAAA;QACC7C;QACA0B;QACAoB,cAAcC,QAAQ9C,MAAAA;QACtBoB;QACAE;QACAyB,QAAQV;QACRW,UAAUP;;IAIlB;AAEA,WACE,sBAAA,cAACQ,OAAAA;MAAIC,WAAWC,GAAGC,oBAAoBtD,UAAAA;OACpCkB,iBAAiBqC,SAAS,KACzB,sBAAA,cAACC,KAAKC,MAAI;MACRC,OAAOxC;MACPyC,QAAeC,UAAG3C,QAAQA,OAAO;MACjC4C,OAAO,CAACC,UAAUA,MAAMtD;OAEvB,CAAC,EAAEkD,OAAOxC,kBAAgB,MACzB,sBAAA,cAACiC,OAAAA;MAAIY,MAAK;MAAOX,WAAU;OACxBlC,mBAAkB8C,IAAI,CAACrC,aAAAA;AACtB,YAAMsC,aAAaC,cAAczD,QAAQkB,QAAAA;AACzC,aACE,sBAAA,cAAC6B,KAAKW,MAAI;QACRC,KAAKzC,SAAQnB;QACb6D,MAAM1C;QACN3B,YAAYqD,GAAGvD,MAAMwE,YAAY,gBAAgB,OAAA;SAEjD,sBAAA,cAACC,MAAMd,MAAI,MACT,sBAAA,cAACc,MAAMC,QAAM;QACXC,SAAS9C,SAAQ+C;QACjBC,iBAAiB,CAACF,YAAa9C,SAAQ+C,UAAUD;WAIrD,sBAAA,cAACtB,OAAAA;QAAIC,WAAW;SACd,sBAAA,cAACI,KAAKoB,WAAS;QACb5E,YAAW;QACX6E,SAAS,MAAM7C,aAAaL,QAAAA;SAE3BmD,gBAAgBnE,WAAWgB,QAAAA,KAAY,QAAA,GAIzCsC,cACC,sBAAA,cAACc,UAAUC,YAAU;QACnBC,OAAO5E,EAAE4D,WAAWiB,cAAc;QAClCC,OAAOlB,WAAWmB,gBAAe;WAKvC,sBAAA,cAAC5B,KAAK6B,kBAAgB;QAACR,SAAS,MAAMzC,aAAaT,QAAAA;;IAGzD,CAAA,CAAA,CAAA,GAKPT,iBAAiBqC,SAAS,KAAK,sBAAA,cAAC+B,WAAAA;MAAUtF,YAAW;QACtD,sBAAA,cAACgF,YAAAA;MAAWO,MAAK;MAAoBN,OAAO5E,EAAE,mBAAA;MAAsBwE,SAAS5C;;;;;AAGnF;AAEA,IAAMiC,gBAAgB,CAACzD,QAAgBkB,YAAAA;AACrC,MAAIA,SAAS6D,MAAMC,SAAS,SAAS;AACnC,WAAO;MAAEP,gBAAgB;MAAsBE,iBAAiB,MAAM,GAAGM,SAAS/D,OAAAA,EAAUnB,EAAE;IAAgB;EAChH;AAEA,MAAImB,SAAS6D,MAAMC,SAAS,WAAW;AACrC,WAAO;MAAEP,gBAAgB;MAAoBE,iBAAiB,MAAMO,cAAclF,QAAQkB,OAAAA;IAAS;EACrG;AAEA,SAAOQ;AACT;AAEA,IAAMwD,gBAAgB,CAAClF,QAAgBkB,YAAAA;AACrC,QAAMiE,UAAUF,SAAS/D,OAAAA,EAAUnB;AACnC,QAAMqF,UAAU,IAAIC,IAAIrF,OAAOsF,OAAOC,OAAOC,QAASC,SAAUC,KAAMC,GAAG;AACzE,QAAMC,WAAWR,QAAQS,SAASC,WAAW,OAAA,KAAYV,QAAQS,SAASC,WAAW,KAAA;AACrFV,UAAQS,WAAWD,WAAW,UAAU;AACxC,SAAO,IAAIP,IAAI,YAAYF,OAAAA,IAAWjE,QAAQnB,EAAE,IAAIqF,OAAAA,EAASW,SAAQ;AACvE;AAEA,IAAM1B,kBAAkB,CAACnE,WAAgCgB,YAAAA;AAGvD,QAAM8E,UAAU9E,QAAQ+E,YAAY,GAAG/E,QAAQ+E,SAASC,IAAIH,SAAQ,EAAGI,MAAM,GAAG,EAAA,CAAA;AAChF,QAAMC,iBAAiBlG,UAAUmG,KAAK,CAACC,OAAOA,OAAOpF,QAAQ+E,UAAUM,MAAAA;AACvE,SAAOH,gBAAgBI,QAAQR;AACjC;AAEA,IAAMS,cAAc,CAACC,WAA0B,CAACxF,YAAAA;AAC9C,QAAMoF,KAAKpF,QAAQ+E,UAAUM;AAC7B,MAAI,CAACI,IAAIC,WAAWtG,SAASA,UAAUgG,EAAAA,GAAK;AAC1C,WAAO;EACT;AAEA,SAAOA,GAAGO,QAAQN,WAAWG;AAC/B;AAEA,IAAMI,eAAe,CAACC,YAAAA;AACpB,QAAMC,cAAkBC,SACtBF,QAAQG,aACF3D,UAAI,CAAC4D,eAAeA,WAAWZ,MAAM,GACrC5F,aAAcwC,UAAGiE,KAAKA,IAAI,CAAA,GAC1B7D,UAAI,CAAC8D,SAASV,IAAIW,YAAYD,IAAAA,EAAME,MAAMC,GAAG,GAC7CjE,UAAI,CAACiE,QAAQC,KAAKC,UAAUF,GAAAA,CAAAA,CAAAA;AAGpC,SAAO,CAACtG,YAAAA;AACN,UAAM6D,OAAO4B,IAAIW,YAAYpG,OAAAA,EAAS6D;AACtC,QAAIA,MAAMC,SAAS,gBAAgB;AACjC,aAAO;IACT;AAGA,WAAOgC,YAAYW,KAAK,CAACJ,UAAUE,KAAKC,UAAU3C,KAAKwC,KAAK,MAAMA,KAAAA;EACpE;AACF;AAEA,IAAM3G,eAAqBP,WAAI,EAAY4G,KACnCW,qBAAc,GACdC,WACJ,CAACC,QAAQnB,IAAIC,WAAWmB,OAAOA,QAAQD,GAAAA,GACvC,CAACA,QAAQrB,YAAYqB,GAAAA,CAAAA,GAEjBD,WACJ,CAACC,QAAQnB,IAAIC,WAAWoB,QAAQA,SAASF,GAAAA,GACzC,CAACA,QAAQhB,aAAagB,GAAAA,CAAAA,GAElBG,aAAO,CAACC,SAAS,MAAM,IAAA,CAAA;;;ACrN/B,IAAA,0BAAeC;",
6
+ "names": ["Array", "EFn", "Match", "Schema", "React", "useMemo", "useState", "Filter", "Obj", "Tag", "Function", "Script", "Trigger", "useTypeOptions", "useClient", "getSpace", "useQuery", "Clipboard", "IconButton", "Input", "Separator", "useTranslation", "ControlItem", "controlItemClasses", "List", "ghostHover", "mx", "View", "Project", "grid", "AutomationPanel", "classNames", "space", "object", "initialTrigger", "onDone", "t", "useTranslation", "meta", "id", "client", "useClient", "functions", "useQuery", "Filter", "type", "Function", "triggers", "Trigger", "filteredTriggers", "useMemo", "filter", "triggerMatch", "tags", "Tag", "types", "useTypeOptions", "annotation", "trigger", "setTrigger", "useState", "selected", "setSelected", "handleSelect", "handleAdd", "make", "undefined", "handleDelete", "db", "remove", "handleSave", "Object", "assign", "add", "handleCancel", "ControlItem", "title", "TriggerEditor", "readonlySpec", "Boolean", "onSave", "onCancel", "div", "className", "mx", "controlItemClasses", "length", "List", "Root", "items", "isItem", "is", "getId", "field", "role", "map", "copyAction", "getCopyAction", "Item", "key", "item", "ghostHover", "Input", "Switch", "checked", "enabled", "onCheckedChange", "ItemTitle", "onClick", "getFunctionName", "Clipboard", "IconButton", "label", "translationKey", "value", "contentProvider", "ItemDeleteButton", "Separator", "icon", "spec", "kind", "getSpace", "getWebhookUrl", "spaceId", "edgeUrl", "URL", "config", "values", "runtime", "services", "edge", "url", "isSecure", "protocol", "startsWith", "toString", "shortId", "function", "dxn", "slice", "functionObject", "find", "fn", "target", "name", "scriptMatch", "script", "Obj", "instanceOf", "source", "projectMatch", "project", "viewQueries", "pipe", "collections", "collection", "View", "view", "getSnapshot", "query", "ast", "JSON", "stringify", "some", "withReturnType", "when", "obj", "Script", "Project", "orElse", "_obj", "AutomationPanel"]
7
+ }
@@ -0,0 +1,19 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/meta.ts
4
+ import { trim } from "@dxos/util";
5
+ var meta = {
6
+ id: "dxos.org/plugin/automation",
7
+ name: "Automation",
8
+ description: trim`
9
+ Workflow automation engine that triggers custom actions based on object events and conditions.
10
+ Create automated pipelines that respond to changes and streamline repetitive tasks.
11
+ `,
12
+ icon: "ph--robot--regular",
13
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-automation"
14
+ };
15
+
16
+ export {
17
+ meta
18
+ };
19
+ //# sourceMappingURL=chunk-CEVIVRTY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/automation',\n name: 'Automation',\n description: trim`\n Workflow automation engine that triggers custom actions based on object events and conditions.\n Create automated pipelines that respond to changes and streamline repetitive tasks.\n `,\n icon: 'ph--robot--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-automation',\n};\n"],
5
+ "mappings": ";;;AAKA,SAASA,YAAY;AAEd,IAAMC,OAAmB;EAC9BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,QAAQ;AACV;",
6
+ "names": ["trim", "meta", "id", "name", "description", "trim", "icon", "source"]
7
+ }
@@ -0,0 +1,16 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/components/index.ts
4
+ import { lazy } from "react";
5
+ var AutomationPanel = lazy(() => import("./AutomationPanel-HCVFNHGQ.mjs"));
6
+ var AutomationSettings = lazy(() => import("./AutomationSettings-UUUPVNUJ.mjs"));
7
+ var FunctionsContainer = lazy(() => import("./FunctionsContainer-6OB3JN5O.mjs"));
8
+ var FunctionsPanel = lazy(() => import("./FunctionsPanel-RVVCS6VH.mjs"));
9
+
10
+ export {
11
+ AutomationPanel,
12
+ AutomationSettings,
13
+ FunctionsContainer,
14
+ FunctionsPanel
15
+ };
16
+ //# sourceMappingURL=chunk-CPP35BE6.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './TriggerEditor';\n\nexport const AutomationPanel = lazy(() => import('./AutomationPanel'));\nexport const AutomationSettings = lazy(() => import('./AutomationSettings'));\nexport const FunctionsContainer = lazy(() => import('./FunctionsContainer'));\nexport const FunctionsPanel = lazy(() => import('./FunctionsPanel'));\n"],
5
+ "mappings": ";;;AAIA,SAASA,YAAY;AAId,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,gCAAA,CAAA;AAC1C,IAAMC,qBAAqBD,KAAK,MAAM,OAAO,mCAAA,CAAA;AAC7C,IAAME,qBAAqBF,KAAK,MAAM,OAAO,mCAAA,CAAA;AAC7C,IAAMG,iBAAiBH,KAAK,MAAM,OAAO,+BAAA,CAAA;",
6
+ "names": ["lazy", "AutomationPanel", "lazy", "AutomationSettings", "FunctionsContainer", "FunctionsPanel"]
7
+ }
@@ -1,10 +1,10 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  meta
4
- } from "./chunk-NK5N3QKD.mjs";
4
+ } from "./chunk-CEVIVRTY.mjs";
5
5
 
6
6
  // src/types/schema.ts
7
- import { Schema } from "effect";
7
+ import * as Schema from "effect/Schema";
8
8
  import { SpaceSchema } from "@dxos/react-client/echo";
9
9
  var TriggerTemplate = Schema.Union(Schema.Struct({
10
10
  type: Schema.Literal("timer"),
@@ -36,4 +36,4 @@ var AutomationAction;
36
36
  export {
37
37
  AutomationAction
38
38
  };
39
- //# sourceMappingURL=chunk-OEZNHUL2.mjs.map
39
+ //# sourceMappingURL=chunk-ECJKIUBO.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,16 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-CEVIVRTY.mjs";
5
+
6
+ // src/capabilities/capabilities.ts
7
+ import { defineCapability } from "@dxos/app-framework";
8
+ (function(AutomationCapabilities2) {
9
+ AutomationCapabilities2.ComputeRuntime = defineCapability(`${meta.id}/capability/compute-runtime`);
10
+ })(AutomationCapabilities || (AutomationCapabilities = {}));
11
+ var AutomationCapabilities;
12
+
13
+ export {
14
+ AutomationCapabilities
15
+ };
16
+ //# sourceMappingURL=chunk-KB7NFEYY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/capabilities.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as ManagedRuntime from 'effect/ManagedRuntime';\n\nimport { type AiService, type ToolExecutionService, type ToolResolverService } from '@dxos/ai';\nimport { defineCapability } from '@dxos/app-framework';\nimport type { CredentialsService, DatabaseService, FunctionInvocationService, QueueService } from '@dxos/functions';\nimport type { InvocationTracer, TriggerDispatcher, TriggerStateStore } from '@dxos/functions-runtime';\nimport type { SpaceId } from '@dxos/keys';\n\nimport { meta } from '../meta';\n\nexport namespace AutomationCapabilities {\n /**\n * Service stack for executing agents, functions, and triggers.\n */\n export type ComputeServices =\n | TriggerDispatcher\n | AiService.AiService\n | DatabaseService\n | QueueService\n | CredentialsService\n | FunctionInvocationService\n | InvocationTracer\n | TriggerStateStore\n // TODO(dmaretskyi): Those should be provided at AI-chat call site.\n | ToolResolverService\n | ToolExecutionService;\n\n export type ComputeRuntime = ManagedRuntime.ManagedRuntime<AutomationCapabilities.ComputeServices, never>;\n export interface ComputeRuntimeProvider {\n getRuntime(spaceId: SpaceId): ComputeRuntime;\n }\n\n /**\n * Runtime for executing agents, functions, and triggers.\n */\n export const ComputeRuntime = defineCapability<ComputeRuntimeProvider>(`${meta.id}/capability/compute-runtime`);\n}\n"],
5
+ "mappings": ";;;;;;AAOA,SAASA,wBAAwB;UAOhBC,yBAAAA;0BAyBFC,iBAAiBC,iBAAyC,GAAGC,KAAKC,EAAE,6BAA6B;AAChH,GA1BiBJ,2BAAAA,yBAAAA,CAAAA,EAAAA;;",
6
+ "names": ["defineCapability", "AutomationCapabilities", "ComputeRuntime", "defineCapability", "meta", "id"]
7
+ }
@@ -0,0 +1,101 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ AutomationCapabilities
4
+ } from "./chunk-KB7NFEYY.mjs";
5
+
6
+ // src/hooks/useComputeRuntimeCallback.ts
7
+ import * as Cause from "effect/Cause";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Exit from "effect/Exit";
10
+ import { useCallback } from "react";
11
+ import { useCapability } from "@dxos/app-framework/react";
12
+ import { FunctionInvocationService } from "@dxos/functions";
13
+ import { InvocationTracer, TracingServiceExt } from "@dxos/functions-runtime";
14
+ import { log } from "@dxos/log";
15
+
16
+ // src/capabilities/index.ts
17
+ import { lazy } from "@dxos/app-framework";
18
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-SLQOO7GH.mjs"));
19
+ var ComputeRuntime = lazy(() => import("./compute-runtime-URROOC34.mjs"));
20
+ var IntentResolver = lazy(() => import("./intent-resolver-KDRYB5BC.mjs"));
21
+ var ReactSurface = lazy(() => import("./react-surface-NNHYNBO6.mjs"));
22
+
23
+ // src/hooks/useComputeRuntimeCallback.ts
24
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/hooks/useComputeRuntimeCallback.ts";
25
+ var useComputeRuntimeCallback = (space, fn, deps) => {
26
+ const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);
27
+ const runtime = space !== void 0 ? computeRuntime.getRuntime(space.id) : void 0;
28
+ return useCallback(() => {
29
+ if (!runtime) {
30
+ throw new TypeError("Space not provided to useComputeRuntimeCallback");
31
+ }
32
+ return runtime.runPromise(fn());
33
+ }, [
34
+ runtime,
35
+ ...deps ?? []
36
+ ]);
37
+ };
38
+ var invokeFunctionWithTracing = (functionDef, inputData) => Effect.gen(function* () {
39
+ const tracer = yield* InvocationTracer;
40
+ const trace = yield* tracer.traceInvocationStart({
41
+ target: void 0,
42
+ payload: {
43
+ data: {}
44
+ }
45
+ });
46
+ const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)), Effect.exit);
47
+ if (Exit.isFailure(result)) {
48
+ const error = Cause.prettyErrors(result.cause)[0];
49
+ log.error(error.message, error.cause ?? error.stack, {
50
+ F: __dxlog_file,
51
+ L: 58,
52
+ S: this,
53
+ C: (f, a) => f(...a)
54
+ });
55
+ }
56
+ yield* tracer.traceInvocationEnd({
57
+ trace,
58
+ // TODO(dmaretskyi): Might miss errors.
59
+ exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : void 0
60
+ });
61
+ return result;
62
+ });
63
+
64
+ // src/hooks/useTriggerRuntimeControls.ts
65
+ import * as Effect2 from "effect/Effect";
66
+ import { Filter } from "@dxos/echo";
67
+ import { Trigger } from "@dxos/functions";
68
+ import { TriggerDispatcher } from "@dxos/functions-runtime";
69
+ import { useQuery } from "@dxos/react-client/echo";
70
+ import { useAsyncState } from "@dxos/react-ui";
71
+ var useTriggerRuntimeControls = (space) => {
72
+ const triggers = useQuery(space, Filter.type(Trigger.Trigger));
73
+ const [isRunningState, setIsRunningState] = useAsyncState(useComputeRuntimeCallback(space, () => TriggerDispatcher.pipe(Effect2.map((t) => t.running))));
74
+ const start = useComputeRuntimeCallback(space, Effect2.fnUntraced(function* () {
75
+ const dispatcher = yield* TriggerDispatcher;
76
+ yield* dispatcher.start();
77
+ setIsRunningState(true);
78
+ }));
79
+ const stop = useComputeRuntimeCallback(space, Effect2.fnUntraced(function* () {
80
+ const dispatcher = yield* TriggerDispatcher;
81
+ yield* dispatcher.stop();
82
+ setIsRunningState(false);
83
+ }));
84
+ return {
85
+ triggers,
86
+ isRunning: isRunningState ?? false,
87
+ start: () => void start(),
88
+ stop: () => void stop()
89
+ };
90
+ };
91
+
92
+ export {
93
+ useComputeRuntimeCallback,
94
+ invokeFunctionWithTracing,
95
+ useTriggerRuntimeControls,
96
+ AppGraphBuilder,
97
+ ComputeRuntime,
98
+ IntentResolver,
99
+ ReactSurface
100
+ };
101
+ //# sourceMappingURL=chunk-PICJ2REN.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useComputeRuntimeCallback.ts", "../../../src/capabilities/index.ts", "../../../src/hooks/useTriggerRuntimeControls.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport { useCallback } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\nimport { type FunctionDefinition, FunctionInvocationService } from '@dxos/functions';\nimport { InvocationTracer, TracingServiceExt } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\nimport type { Space } from '@dxos/react-client/echo';\n\nimport { AutomationCapabilities } from '../capabilities';\n\n/**\n * Create an effectful function that has access to compute services\n */\n// TODO(burdon): Factor out (figure out cross-plugin capabilities dependencies).\nexport const useComputeRuntimeCallback = <T>(\n space: Space | undefined,\n fn: () => Effect.Effect<T, any, AutomationCapabilities.ComputeServices>,\n deps?: React.DependencyList,\n): (() => Promise<T>) => {\n const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);\n const runtime = space !== undefined ? computeRuntime.getRuntime(space.id) : undefined;\n\n return useCallback(() => {\n if (!runtime) {\n throw new TypeError('Space not provided to useComputeRuntimeCallback');\n }\n\n return runtime.runPromise(fn());\n }, [runtime, ...(deps ?? [])]);\n};\n\n// TODO(wittjosiah): Function invoking should automatically be traced (DX-647).\nexport const invokeFunctionWithTracing = <I, O>(functionDef: FunctionDefinition<I, O>, inputData: I) =>\n Effect.gen(function* () {\n const tracer = yield* InvocationTracer;\n const trace = yield* tracer.traceInvocationStart({\n target: undefined,\n payload: {\n data: {},\n },\n });\n\n // Invoke the function.\n const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(\n Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)),\n Effect.exit,\n );\n\n if (Exit.isFailure(result)) {\n const error = Cause.prettyErrors(result.cause)[0];\n log.error(error.message, error.cause ?? error.stack);\n }\n\n yield* tracer.traceInvocationEnd({\n trace,\n // TODO(dmaretskyi): Might miss errors.\n exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : undefined,\n });\n\n return result;\n });\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const ComputeRuntime = lazy(() => import('./compute-runtime'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n\nexport * from './capabilities';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Filter } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { TriggerDispatcher } from '@dxos/functions-runtime';\nimport { type Space, useQuery } from '@dxos/react-client/echo';\nimport { useAsyncState } from '@dxos/react-ui';\n\nimport { useComputeRuntimeCallback } from './useComputeRuntimeCallback';\n\ninterface TriggerRuntimeControls {\n triggers: Trigger.Trigger[];\n isRunning: boolean;\n start: () => void;\n stop: () => void;\n}\n\nexport const useTriggerRuntimeControls = (space: Space | undefined): TriggerRuntimeControls => {\n const triggers = useQuery(space, Filter.type(Trigger.Trigger));\n\n const [isRunningState, setIsRunningState] = useAsyncState(\n useComputeRuntimeCallback(space, () => TriggerDispatcher.pipe(Effect.map((t) => t.running))),\n );\n\n const start = useComputeRuntimeCallback(\n space,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.start();\n setIsRunningState(true);\n }),\n );\n\n const stop = useComputeRuntimeCallback(\n space,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.stop();\n setIsRunningState(false);\n }),\n );\n\n return {\n triggers,\n isRunning: isRunningState ?? false,\n start: () => void start(),\n stop: () => void stop(),\n };\n};\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,UAAU;AACtB,SAASC,mBAAmB;AAE5B,SAASC,qBAAqB;AAC9B,SAAkCC,iCAAiC;AACnE,SAASC,kBAAkBC,yBAAyB;AACpD,SAASC,WAAW;;;ACRpB,SAASC,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAME,iBAAiBF,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMG,eAAeH,KAAK,MAAM,OAAO,8BAAA,CAAA;;;;ADYvC,IAAMI,4BAA4B,CACvCC,OACAC,IACAC,SAAAA;AAEA,QAAMC,iBAAiBC,cAAcC,uBAAuBC,cAAc;AAC1E,QAAMC,UAAUP,UAAUQ,SAAYL,eAAeM,WAAWT,MAAMU,EAAE,IAAIF;AAE5E,SAAOG,YAAY,MAAA;AACjB,QAAI,CAACJ,SAAS;AACZ,YAAM,IAAIK,UAAU,iDAAA;IACtB;AAEA,WAAOL,QAAQM,WAAWZ,GAAAA,CAAAA;EAC5B,GAAG;IAACM;OAAaL,QAAQ,CAAA;GAAI;AAC/B;AAGO,IAAMY,4BAA4B,CAAOC,aAAuCC,cAC9EC,WAAI,aAAA;AACT,QAAMC,SAAS,OAAOC;AACtB,QAAMC,QAAQ,OAAOF,OAAOG,qBAAqB;IAC/CC,QAAQd;IACRe,SAAS;MACPC,MAAM,CAAC;IACT;EACF,CAAA;AAGA,QAAMC,SAAS,OAAOC,0BAA0BC,eAAeZ,aAAaC,SAAAA,EAAWY,KAC9EC,eAAQC,kBAAkBC,WAAWX,MAAMY,oBAAoB,CAAA,GAC/DC,WAAI;AAGb,MAASC,eAAUT,MAAAA,GAAS;AAC1B,UAAMU,QAAcC,mBAAaX,OAAOY,KAAK,EAAE,CAAA;AAC/CC,QAAIH,MAAMA,MAAMI,SAASJ,MAAME,SAASF,MAAMK,OAAK;;;;;;EACrD;AAEA,SAAOtB,OAAOuB,mBAAmB;IAC/BrB;;IAEAsB,WAAgBR,eAAUT,MAAAA,IAAgBW,mBAAaX,OAAOY,KAAK,EAAE,CAAA,IAAK7B;EAC5E,CAAA;AAEA,SAAOiB;AACT,CAAA;;;AE/DF,YAAYkB,aAAY;AAExB,SAASC,cAAc;AACvB,SAASC,eAAe;AACxB,SAASC,yBAAyB;AAClC,SAAqBC,gBAAgB;AACrC,SAASC,qBAAqB;AAWvB,IAAMC,4BAA4B,CAACC,UAAAA;AACxC,QAAMC,WAAWC,SAASF,OAAOG,OAAOC,KAAKC,QAAQA,OAAO,CAAA;AAE5D,QAAM,CAACC,gBAAgBC,iBAAAA,IAAqBC,cAC1CC,0BAA0BT,OAAO,MAAMU,kBAAkBC,KAAYC,YAAI,CAACC,MAAMA,EAAEC,OAAO,CAAA,CAAA,CAAA;AAG3F,QAAMC,QAAQN,0BACZT,OACOgB,mBAAW,aAAA;AAChB,UAAMC,aAAa,OAAOP;AAC1B,WAAOO,WAAWF,MAAK;AACvBR,sBAAkB,IAAA;EACpB,CAAA,CAAA;AAGF,QAAMW,OAAOT,0BACXT,OACOgB,mBAAW,aAAA;AAChB,UAAMC,aAAa,OAAOP;AAC1B,WAAOO,WAAWC,KAAI;AACtBX,sBAAkB,KAAA;EACpB,CAAA,CAAA;AAGF,SAAO;IACLN;IACAkB,WAAWb,kBAAkB;IAC7BS,OAAO,MAAM,KAAKA,MAAAA;IAClBG,MAAM,MAAM,KAAKA,KAAAA;EACnB;AACF;",
6
+ "names": ["Cause", "Effect", "Exit", "useCallback", "useCapability", "FunctionInvocationService", "InvocationTracer", "TracingServiceExt", "log", "lazy", "AppGraphBuilder", "lazy", "ComputeRuntime", "IntentResolver", "ReactSurface", "useComputeRuntimeCallback", "space", "fn", "deps", "computeRuntime", "useCapability", "AutomationCapabilities", "ComputeRuntime", "runtime", "undefined", "getRuntime", "id", "useCallback", "TypeError", "runPromise", "invokeFunctionWithTracing", "functionDef", "inputData", "gen", "tracer", "InvocationTracer", "trace", "traceInvocationStart", "target", "payload", "data", "result", "FunctionInvocationService", "invokeFunction", "pipe", "provide", "TracingServiceExt", "layerQueue", "invocationTraceQueue", "exit", "isFailure", "error", "prettyErrors", "cause", "log", "message", "stack", "traceInvocationEnd", "exception", "Effect", "Filter", "Trigger", "TriggerDispatcher", "useQuery", "useAsyncState", "useTriggerRuntimeControls", "space", "triggers", "useQuery", "Filter", "type", "Trigger", "isRunningState", "setIsRunningState", "useAsyncState", "useComputeRuntimeCallback", "TriggerDispatcher", "pipe", "map", "t", "running", "start", "fnUntraced", "dispatcher", "stop", "isRunning"]
7
+ }