@dxos/plugin-automation 0.8.4-main.fffef41 → 0.9.0
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.
- package/LICENSE +102 -5
- package/PLUGIN.mdl +428 -0
- package/README.md +1 -1
- package/dist/lib/neutral/AutomationArticle-GN36NUX2.mjs +17 -0
- package/dist/lib/neutral/AutomationCompanion-M26WR6VP.mjs +165 -0
- package/dist/lib/neutral/AutomationCompanion-M26WR6VP.mjs.map +7 -0
- package/dist/lib/neutral/AutomationPlugin.mjs +10 -0
- package/dist/lib/neutral/AutomationPlugin.node.mjs +1132 -0
- package/dist/lib/neutral/AutomationPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/AutomationPlugin.workerd.mjs +36 -0
- package/dist/lib/neutral/AutomationPlugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/AutomationSettings-YXUJDRQA.mjs +27 -0
- package/dist/lib/neutral/AutomationSettings-YXUJDRQA.mjs.map +7 -0
- package/dist/lib/neutral/TriggerSettings-XCHIZPOR.mjs +9 -0
- package/dist/lib/neutral/app-graph-builder-BTTHS4VK.mjs +102 -0
- package/dist/lib/neutral/app-graph-builder-BTTHS4VK.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +25 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/node.mjs +19 -0
- package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
- package/dist/lib/neutral/chunk-24JKY6NU.mjs +21 -0
- package/dist/lib/neutral/chunk-24JKY6NU.mjs.map +7 -0
- package/dist/lib/neutral/chunk-2JP77CMN.mjs +42 -0
- package/dist/lib/neutral/chunk-2JP77CMN.mjs.map +7 -0
- package/dist/lib/neutral/chunk-DUGOIM7G.mjs +36 -0
- package/dist/lib/neutral/chunk-DUGOIM7G.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FE7YFBX7.mjs +486 -0
- package/dist/lib/neutral/chunk-FE7YFBX7.mjs.map +7 -0
- package/dist/lib/neutral/chunk-GARB7S5R.mjs +157 -0
- package/dist/lib/neutral/chunk-GARB7S5R.mjs.map +7 -0
- package/dist/lib/neutral/chunk-HPUHQ3L6.mjs +64 -0
- package/dist/lib/neutral/chunk-HPUHQ3L6.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/neutral/chunk-SONGOJRB.mjs +8 -0
- package/dist/lib/neutral/chunk-SONGOJRB.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +48 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +15 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/create-automation-OE3TNXYE.mjs +41 -0
- package/dist/lib/neutral/create-automation-OE3TNXYE.mjs.map +7 -0
- package/dist/lib/neutral/create-object-MEJOWGMH.mjs +25 -0
- package/dist/lib/neutral/create-object-MEJOWGMH.mjs.map +7 -0
- package/dist/lib/neutral/create-trigger-from-template-TERHKWJM.mjs +68 -0
- package/dist/lib/neutral/create-trigger-from-template-TERHKWJM.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +47 -0
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +22 -0
- package/dist/lib/neutral/layer-specs-G6GCH7BE.mjs +137 -0
- package/dist/lib/neutral/layer-specs-G6GCH7BE.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/navigation-resolver-I3L5FHJO.mjs +14 -0
- package/dist/lib/neutral/navigation-resolver-I3L5FHJO.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-YXGYH5W5.mjs +13 -0
- package/dist/lib/neutral/operation-handler-YXGYH5W5.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-IBRWUKPC.mjs +54 -0
- package/dist/lib/neutral/react-surface-IBRWUKPC.mjs.map +7 -0
- package/dist/lib/neutral/registry-sync-G6TKKZGK.mjs +86 -0
- package/dist/lib/neutral/registry-sync-G6TKKZGK.mjs.map +7 -0
- package/dist/lib/neutral/templates-ETXVD3VE.mjs +16 -0
- package/dist/lib/neutral/templates-ETXVD3VE.mjs.map +7 -0
- package/dist/lib/neutral/testing.mjs +8 -0
- package/dist/lib/neutral/translations.mjs +64 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/trigger-runtime-controller-BOEJYGWC.mjs +77 -0
- package/dist/lib/neutral/trigger-runtime-controller-BOEJYGWC.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +18 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/types/src/AutomationPlugin.d.ts +3 -1
- package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
- package/dist/types/src/AutomationPlugin.node.d.ts +4 -0
- package/dist/types/src/AutomationPlugin.node.d.ts.map +1 -0
- package/dist/types/src/AutomationPlugin.test.d.ts +2 -0
- package/dist/types/src/AutomationPlugin.test.d.ts.map +1 -0
- package/dist/types/src/AutomationPlugin.workerd.d.ts +4 -0
- package/dist/types/src/AutomationPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/create-object.d.ts +11 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.test.d.ts +2 -0
- package/dist/types/src/capabilities/create-object.test.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +16 -5
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/layer-specs.d.ts +6 -0
- package/dist/types/src/capabilities/layer-specs.d.ts.map +1 -0
- package/dist/types/src/capabilities/navigation-resolver.d.ts +6 -0
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/node.d.ts +9 -0
- package/dist/types/src/capabilities/node.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +3 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/registry-sync.d.ts +21 -0
- package/dist/types/src/capabilities/registry-sync.d.ts.map +1 -0
- package/dist/types/src/capabilities/templates.d.ts +6 -0
- package/dist/types/src/capabilities/templates.d.ts.map +1 -0
- package/dist/types/src/capabilities/trigger-runtime-controller.d.ts +5 -0
- package/dist/types/src/capabilities/trigger-runtime-controller.d.ts.map +1 -0
- package/dist/types/src/capabilities/trigger-runtime-controller.test.d.ts +2 -0
- package/dist/types/src/capabilities/trigger-runtime-controller.test.d.ts.map +1 -0
- package/dist/types/src/commands/index.d.ts +2 -0
- package/dist/types/src/commands/index.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/create/index.d.ts +25 -0
- package/dist/types/src/commands/trigger/create/index.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/create/queue.d.ts +13 -0
- package/dist/types/src/commands/trigger/create/queue.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/create/subscription.d.ts +15 -0
- package/dist/types/src/commands/trigger/create/subscription.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/create/timer.d.ts +13 -0
- package/dist/types/src/commands/trigger/create/timer.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/index.d.ts +57 -0
- package/dist/types/src/commands/trigger/index.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/list.d.ts +7 -0
- package/dist/types/src/commands/trigger/list.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/options.d.ts +10 -0
- package/dist/types/src/commands/trigger/options.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/remove.d.ts +8 -0
- package/dist/types/src/commands/trigger/remove.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/update/index.d.ts +28 -0
- package/dist/types/src/commands/trigger/update/index.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/update/queue.d.ts +11 -0
- package/dist/types/src/commands/trigger/update/queue.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/update/subscription.d.ts +13 -0
- package/dist/types/src/commands/trigger/update/subscription.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/update/timer.d.ts +11 -0
- package/dist/types/src/commands/trigger/update/timer.d.ts.map +1 -0
- package/dist/types/src/commands/trigger/util.d.ts +85 -0
- package/dist/types/src/commands/trigger/util.d.ts.map +1 -0
- package/dist/types/src/components/CreateAutomationPanel/CreateAutomationPanel.d.ts +14 -0
- package/dist/types/src/components/CreateAutomationPanel/CreateAutomationPanel.d.ts.map +1 -0
- package/dist/types/src/components/CreateAutomationPanel/index.d.ts +2 -0
- package/dist/types/src/components/CreateAutomationPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -7
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/AutomationArticle/AutomationArticle.d.ts +35 -0
- package/dist/types/src/containers/AutomationArticle/AutomationArticle.d.ts.map +1 -0
- package/dist/types/src/containers/AutomationArticle/index.d.ts +3 -0
- package/dist/types/src/containers/AutomationArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/AutomationCompanion/AutomationCompanion.d.ts +13 -0
- package/dist/types/src/containers/AutomationCompanion/AutomationCompanion.d.ts.map +1 -0
- package/dist/types/src/containers/AutomationCompanion/index.d.ts +3 -0
- package/dist/types/src/containers/AutomationCompanion/index.d.ts.map +1 -0
- package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts +10 -0
- package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts.map +1 -0
- package/dist/types/src/containers/AutomationSettings/index.d.ts +2 -0
- package/dist/types/src/containers/AutomationSettings/index.d.ts.map +1 -0
- package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts.map +1 -0
- package/dist/types/src/containers/TriggerSettings/index.d.ts +3 -0
- package/dist/types/src/containers/TriggerSettings/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +6 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +0 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +5 -4
- package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -5
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/create-automation.d.ts +5 -0
- package/dist/types/src/operations/create-automation.d.ts.map +1 -0
- package/dist/types/src/operations/create-trigger-from-template.d.ts +5 -0
- package/dist/types/src/operations/create-trigger-from-template.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +3 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/paths.d.ts +3 -0
- package/dist/types/src/paths.d.ts.map +1 -0
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/templates/index.d.ts +10 -0
- package/dist/types/src/templates/index.d.ts.map +1 -0
- package/dist/types/src/testing/test-functions.d.ts +318 -3
- package/dist/types/src/testing/test-functions.d.ts.map +1 -1
- package/dist/types/src/testing.d.ts +2 -0
- package/dist/types/src/testing.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +90 -31
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Automation.d.ts +41 -0
- package/dist/types/src/types/Automation.d.ts.map +1 -0
- package/dist/types/src/types/Automation.test.d.ts +2 -0
- package/dist/types/src/types/Automation.test.d.ts.map +1 -0
- package/dist/types/src/types/AutomationCapabilities.d.ts +42 -0
- package/dist/types/src/types/AutomationCapabilities.d.ts.map +1 -0
- package/dist/types/src/types/AutomationOperation.d.ts +31 -0
- package/dist/types/src/types/AutomationOperation.d.ts.map +1 -0
- package/dist/types/src/types/Runnable.d.ts +14 -0
- package/dist/types/src/types/Runnable.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +4 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +13 -5
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/util/automations-for-object.d.ts +20 -0
- package/dist/types/src/util/automations-for-object.d.ts.map +1 -0
- package/dist/types/src/util/automations-for-object.test.d.ts +2 -0
- package/dist/types/src/util/automations-for-object.test.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +136 -71
- package/src/AutomationPlugin.node.ts +48 -0
- package/src/AutomationPlugin.test.ts +27 -0
- package/src/AutomationPlugin.tsx +47 -35
- package/src/AutomationPlugin.workerd.ts +24 -0
- package/src/capabilities/app-graph-builder.ts +81 -78
- package/src/capabilities/create-object.test.ts +18 -0
- package/src/capabilities/create-object.ts +26 -0
- package/src/capabilities/index.ts +17 -7
- package/src/capabilities/layer-specs.ts +196 -0
- package/src/capabilities/navigation-resolver.ts +19 -0
- package/src/capabilities/node.ts +19 -0
- package/src/capabilities/operation-handler.ts +16 -0
- package/src/capabilities/react-surface.tsx +45 -46
- package/src/capabilities/registry-sync.ts +114 -0
- package/src/capabilities/templates.ts +17 -0
- package/src/capabilities/trigger-runtime-controller.test.ts +107 -0
- package/src/capabilities/trigger-runtime-controller.ts +126 -0
- package/src/commands/index.ts +5 -0
- package/src/commands/trigger/create/index.ts +14 -0
- package/src/commands/trigger/create/queue.ts +87 -0
- package/src/commands/trigger/create/subscription.ts +126 -0
- package/src/commands/trigger/create/timer.ts +90 -0
- package/src/commands/trigger/index.ts +16 -0
- package/src/commands/trigger/list.ts +69 -0
- package/src/commands/trigger/options.ts +47 -0
- package/src/commands/trigger/remove.ts +45 -0
- package/src/commands/trigger/update/index.ts +14 -0
- package/src/commands/trigger/update/queue.ts +191 -0
- package/src/commands/trigger/update/subscription.ts +279 -0
- package/src/commands/trigger/update/timer.ts +195 -0
- package/src/commands/trigger/util.ts +410 -0
- package/src/components/CreateAutomationPanel/CreateAutomationPanel.tsx +68 -0
- package/src/components/CreateAutomationPanel/index.ts +5 -0
- package/src/components/index.ts +1 -8
- package/src/containers/AutomationArticle/AutomationArticle.tsx +586 -0
- package/src/containers/AutomationArticle/index.ts +6 -0
- package/src/containers/AutomationCompanion/AutomationCompanion.tsx +183 -0
- package/src/containers/AutomationCompanion/index.ts +6 -0
- package/src/containers/AutomationSettings/AutomationSettings.tsx +34 -0
- package/src/containers/AutomationSettings/index.ts +5 -0
- package/src/containers/TriggerSettings/TriggerSettings.tsx +48 -0
- package/src/containers/TriggerSettings/index.ts +6 -0
- package/src/containers/index.ts +10 -0
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useTriggerRuntimeControls.ts +38 -19
- package/src/index.ts +1 -6
- package/src/meta.ts +23 -7
- package/src/operations/create-automation.ts +38 -0
- package/src/operations/create-trigger-from-template.ts +70 -0
- package/src/operations/index.ts +10 -0
- package/src/paths.ts +13 -0
- package/src/plugin.ts +11 -0
- package/src/templates/index.ts +22 -0
- package/src/testing/test-functions.ts +43 -9
- package/src/testing.ts +7 -0
- package/src/translations.ts +49 -33
- package/src/types/Automation.test.ts +37 -0
- package/src/types/Automation.ts +45 -0
- package/src/types/AutomationCapabilities.ts +52 -0
- package/src/types/AutomationOperation.ts +61 -0
- package/src/types/Runnable.ts +14 -0
- package/src/types/index.ts +5 -0
- package/src/types/schema.ts +6 -6
- package/src/util/automations-for-object.test.ts +86 -0
- package/src/util/automations-for-object.ts +72 -0
- package/src/vite-env.d.ts +10 -0
- package/dist/lib/browser/AutomationPanel-7OECLR5N.mjs +0 -11
- package/dist/lib/browser/AutomationSettings-KCZISXI6.mjs +0 -68
- package/dist/lib/browser/AutomationSettings-KCZISXI6.mjs.map +0 -7
- package/dist/lib/browser/FunctionsContainer-MIWEISRR.mjs +0 -151
- package/dist/lib/browser/FunctionsContainer-MIWEISRR.mjs.map +0 -7
- package/dist/lib/browser/FunctionsPanel-CRW6SJUN.mjs +0 -10
- package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs +0 -81
- package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs.map +0 -7
- package/dist/lib/browser/chunk-EPEXQP45.mjs +0 -14
- package/dist/lib/browser/chunk-EPEXQP45.mjs.map +0 -7
- package/dist/lib/browser/chunk-JW7XSPYW.mjs +0 -267
- package/dist/lib/browser/chunk-JW7XSPYW.mjs.map +0 -7
- package/dist/lib/browser/chunk-LZQFZO3B.mjs +0 -17
- package/dist/lib/browser/chunk-LZQFZO3B.mjs.map +0 -7
- package/dist/lib/browser/chunk-NAPXRXTY.mjs +0 -100
- package/dist/lib/browser/chunk-NAPXRXTY.mjs.map +0 -7
- package/dist/lib/browser/chunk-QKFBHAGN.mjs +0 -184
- package/dist/lib/browser/chunk-QKFBHAGN.mjs.map +0 -7
- package/dist/lib/browser/chunk-TWWFNOIR.mjs +0 -109
- package/dist/lib/browser/chunk-TWWFNOIR.mjs.map +0 -7
- package/dist/lib/browser/chunk-XAKZ4ANY.mjs +0 -15
- package/dist/lib/browser/chunk-XAKZ4ANY.mjs.map +0 -7
- package/dist/lib/browser/chunk-YBPJCY3F.mjs +0 -38
- package/dist/lib/browser/chunk-YBPJCY3F.mjs.map +0 -7
- package/dist/lib/browser/compute-runtime-EIQTHJFZ.mjs +0 -113
- package/dist/lib/browser/compute-runtime-EIQTHJFZ.mjs.map +0 -7
- package/dist/lib/browser/hooks/index.mjs +0 -13
- package/dist/lib/browser/index.mjs +0 -130
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs +0 -77
- package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/react-surface-YQW7WCFW.mjs +0 -64
- package/dist/lib/browser/react-surface-YQW7WCFW.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -8
- package/dist/lib/node-esm/AutomationPanel-HCVFNHGQ.mjs +0 -12
- package/dist/lib/node-esm/AutomationSettings-UUUPVNUJ.mjs +0 -69
- package/dist/lib/node-esm/AutomationSettings-UUUPVNUJ.mjs.map +0 -7
- package/dist/lib/node-esm/FunctionsContainer-6OB3JN5O.mjs +0 -152
- package/dist/lib/node-esm/FunctionsContainer-6OB3JN5O.mjs.map +0 -7
- package/dist/lib/node-esm/FunctionsPanel-RVVCS6VH.mjs +0 -11
- package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs +0 -82
- package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-6YRKST6M.mjs +0 -185
- package/dist/lib/node-esm/chunk-6YRKST6M.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CEVIVRTY.mjs +0 -19
- package/dist/lib/node-esm/chunk-CEVIVRTY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CPP35BE6.mjs +0 -16
- package/dist/lib/node-esm/chunk-CPP35BE6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ECJKIUBO.mjs +0 -39
- package/dist/lib/node-esm/chunk-ECJKIUBO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KB7NFEYY.mjs +0 -16
- package/dist/lib/node-esm/chunk-KB7NFEYY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PICJ2REN.mjs +0 -101
- package/dist/lib/node-esm/chunk-PICJ2REN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RVK52XGK.mjs +0 -110
- package/dist/lib/node-esm/chunk-RVK52XGK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-W76WUTZY.mjs +0 -268
- package/dist/lib/node-esm/chunk-W76WUTZY.mjs.map +0 -7
- package/dist/lib/node-esm/compute-runtime-URROOC34.mjs +0 -114
- package/dist/lib/node-esm/compute-runtime-URROOC34.mjs.map +0 -7
- package/dist/lib/node-esm/hooks/index.mjs +0 -14
- package/dist/lib/node-esm/index.mjs +0 -131
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs +0 -78
- package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/react-surface-NNHYNBO6.mjs +0 -65
- package/dist/lib/node-esm/react-surface-NNHYNBO6.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -9
- package/dist/types/src/capabilities/capabilities.d.ts +0 -20
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/compute-runtime.d.ts +0 -5
- package/dist/types/src/capabilities/compute-runtime.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +0 -13
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +0 -1
- package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +0 -50
- package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +0 -1
- package/dist/types/src/components/AutomationPanel/index.d.ts +0 -4
- package/dist/types/src/components/AutomationPanel/index.d.ts.map +0 -1
- package/dist/types/src/components/AutomationSettings.d.ts +0 -5
- package/dist/types/src/components/AutomationSettings.d.ts.map +0 -1
- package/dist/types/src/components/FunctionsContainer.d.ts +0 -7
- package/dist/types/src/components/FunctionsContainer.d.ts.map +0 -1
- package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts +0 -7
- package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +0 -1
- package/dist/types/src/components/FunctionsPanel/index.d.ts +0 -4
- package/dist/types/src/components/FunctionsPanel/index.d.ts.map +0 -1
- package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts +0 -8
- package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +0 -1
- package/dist/types/src/components/FunctionsRegistry/index.d.ts +0 -2
- package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +0 -1
- package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +0 -12
- package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +0 -1
- package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +0 -5
- package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +0 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +0 -13
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +0 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +0 -51
- package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +0 -1
- package/dist/types/src/components/TriggerEditor/index.d.ts +0 -2
- package/dist/types/src/components/TriggerEditor/index.d.ts.map +0 -1
- package/dist/types/src/components/TriggerSettings.d.ts.map +0 -1
- package/dist/types/src/events.d.ts +0 -4
- package/dist/types/src/events.d.ts.map +0 -1
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +0 -12
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +0 -1
- package/src/capabilities/capabilities.ts +0 -41
- package/src/capabilities/compute-runtime.ts +0 -127
- package/src/capabilities/intent-resolver.ts +0 -72
- package/src/components/AutomationPanel/AutomationPanel.stories.tsx +0 -56
- package/src/components/AutomationPanel/AutomationPanel.tsx +0 -223
- package/src/components/AutomationPanel/index.ts +0 -9
- package/src/components/AutomationSettings.tsx +0 -30
- package/src/components/FunctionsContainer.tsx +0 -36
- package/src/components/FunctionsPanel/FunctionsPanel.tsx +0 -116
- package/src/components/FunctionsPanel/index.ts +0 -8
- package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +0 -135
- package/src/components/FunctionsRegistry/index.ts +0 -5
- package/src/components/TriggerEditor/FunctionInputEditor.tsx +0 -84
- package/src/components/TriggerEditor/SpecSelector.tsx +0 -65
- package/src/components/TriggerEditor/TriggerEditor.stories.tsx +0 -121
- package/src/components/TriggerEditor/TriggerEditor.tsx +0 -127
- package/src/components/TriggerEditor/index.ts +0 -5
- package/src/components/TriggerSettings.tsx +0 -25
- package/src/events.ts +0 -11
- package/src/hooks/useComputeRuntimeCallback.ts +0 -68
- /package/dist/lib/{browser/AutomationPanel-7OECLR5N.mjs.map → neutral/AutomationArticle-GN36NUX2.mjs.map} +0 -0
- /package/dist/lib/{browser/FunctionsPanel-CRW6SJUN.mjs.map → neutral/AutomationPlugin.mjs.map} +0 -0
- /package/dist/lib/{browser/hooks/index.mjs.map → neutral/TriggerSettings-XCHIZPOR.mjs.map} +0 -0
- /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{node-esm/hooks → neutral}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/AutomationPanel-HCVFNHGQ.mjs.map → neutral/meta.mjs.map} +0 -0
- /package/dist/lib/{node-esm/types → neutral/operations}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/FunctionsPanel-RVVCS6VH.mjs.map → neutral/testing.mjs.map} +0 -0
- /package/dist/types/src/{components → containers/TriggerSettings}/TriggerSettings.d.ts +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AutomationInlineForm
|
|
3
|
+
} from "./chunk-FE7YFBX7.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/containers/AutomationCompanion/AutomationCompanion.tsx
|
|
7
|
+
import React, { useCallback, useMemo, useRef, useState } from "react";
|
|
8
|
+
import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
|
|
9
|
+
import { Filter as Filter2, Obj as Obj2, Type } from "@dxos/echo";
|
|
10
|
+
import { useQuery } from "@dxos/react-client/echo";
|
|
11
|
+
import { DropdownMenu, Icon, Tooltip, useTranslation } from "@dxos/react-ui";
|
|
12
|
+
import { Accordion } from "@dxos/react-ui-list";
|
|
13
|
+
import { meta } from "#meta";
|
|
14
|
+
import { Automation as Automation2, AutomationCapabilities, AutomationOperation } from "#types";
|
|
15
|
+
|
|
16
|
+
// src/util/automations-for-object.ts
|
|
17
|
+
import { Trigger } from "@dxos/compute";
|
|
18
|
+
import { Filter, Obj, Query, Ref } from "@dxos/echo";
|
|
19
|
+
import { Automation } from "#types";
|
|
20
|
+
var connectedAutomationsQuery = (object) => {
|
|
21
|
+
const byInput = Query.select(Filter.id(object.id)).referencedBy(Trigger.Trigger);
|
|
22
|
+
const byFeed = Query.select(Filter.id(object.id)).reference("feed").referencedBy(Trigger.Trigger);
|
|
23
|
+
return Query.all(byInput, byFeed).referencedBy(Automation.Automation, "triggers");
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// src/containers/AutomationCompanion/AutomationCompanion.tsx
|
|
27
|
+
var AutomationCompanion = ({ db, object }) => {
|
|
28
|
+
const { t } = useTranslation(meta.id);
|
|
29
|
+
const templates = useCapabilities(AutomationCapabilities.Template);
|
|
30
|
+
const applicableTemplates = useMemo(() => templates.filter((template) => template.appliesTo?.(object) ?? true), [
|
|
31
|
+
templates,
|
|
32
|
+
object
|
|
33
|
+
]);
|
|
34
|
+
const { items, statusFor, open, setOpen, handleCreate } = useConnectedAutomations(db, object);
|
|
35
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
36
|
+
className: "flex flex-col"
|
|
37
|
+
}, items.length === 0 ? /* @__PURE__ */ React.createElement("p", {
|
|
38
|
+
className: "text-sm text-description p-2"
|
|
39
|
+
}, t("no-automations.message")) : /* @__PURE__ */ React.createElement(Accordion.Root, {
|
|
40
|
+
items,
|
|
41
|
+
value: open,
|
|
42
|
+
onValueChange: setOpen
|
|
43
|
+
}, ({ items: items2 }) => /* @__PURE__ */ React.createElement("div", {
|
|
44
|
+
className: "flex flex-col divide-y divide-separator"
|
|
45
|
+
}, items2.map((automation) => {
|
|
46
|
+
const status = statusFor(automation.id);
|
|
47
|
+
return /* @__PURE__ */ React.createElement(Accordion.Item, {
|
|
48
|
+
key: automation.id,
|
|
49
|
+
item: automation
|
|
50
|
+
}, /* @__PURE__ */ React.createElement(Accordion.ItemHeader, null, /* @__PURE__ */ React.createElement(Icon, {
|
|
51
|
+
icon: "ph--lightning--regular",
|
|
52
|
+
size: 4,
|
|
53
|
+
classNames: "mr-2 shrink-0"
|
|
54
|
+
}), /* @__PURE__ */ React.createElement("span", {
|
|
55
|
+
className: "flex-1 truncate"
|
|
56
|
+
}, Obj2.getLabel(automation) ?? t("object-name.placeholder", {
|
|
57
|
+
ns: Type.getTypename(Automation2.Automation)
|
|
58
|
+
})), status !== "associated" && /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
|
|
59
|
+
asChild: true,
|
|
60
|
+
side: "bottom",
|
|
61
|
+
content: t(status === "pending" ? "automation-not-associated.message" : "automation-detached.message")
|
|
62
|
+
}, /* @__PURE__ */ React.createElement(Icon, {
|
|
63
|
+
icon: "ph--warning--regular",
|
|
64
|
+
size: 4,
|
|
65
|
+
classNames: "text-warning-text shrink-0 mr-2"
|
|
66
|
+
}))), /* @__PURE__ */ React.createElement(Accordion.ItemBody, null, /* @__PURE__ */ React.createElement(AutomationInlineForm, {
|
|
67
|
+
automation,
|
|
68
|
+
db
|
|
69
|
+
})));
|
|
70
|
+
}))), /* @__PURE__ */ React.createElement("div", {
|
|
71
|
+
className: "border-t border-separator"
|
|
72
|
+
}, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
|
|
73
|
+
asChild: true
|
|
74
|
+
}, /* @__PURE__ */ React.createElement("button", {
|
|
75
|
+
type: "button",
|
|
76
|
+
className: "group flex items-center p-2 dx-focus-ring-inset w-full text-start"
|
|
77
|
+
}, /* @__PURE__ */ React.createElement(Icon, {
|
|
78
|
+
icon: "ph--plus--regular",
|
|
79
|
+
size: 4,
|
|
80
|
+
classNames: "mr-2 shrink-0"
|
|
81
|
+
}), /* @__PURE__ */ React.createElement("span", {
|
|
82
|
+
className: "flex-1 truncate"
|
|
83
|
+
}, t("add-object.label", {
|
|
84
|
+
ns: Type.getTypename(Automation2.Automation)
|
|
85
|
+
})))), /* @__PURE__ */ React.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React.createElement(DropdownMenu.Viewport, null, applicableTemplates.map((template) => /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
|
|
86
|
+
key: template.id,
|
|
87
|
+
onClick: () => void handleCreate(template.id)
|
|
88
|
+
}, /* @__PURE__ */ React.createElement(Icon, {
|
|
89
|
+
icon: template.icon ?? "ph--lightning--regular",
|
|
90
|
+
size: 4
|
|
91
|
+
}), /* @__PURE__ */ React.createElement("span", null, template.label)))), /* @__PURE__ */ React.createElement(DropdownMenu.Arrow, null))))));
|
|
92
|
+
};
|
|
93
|
+
var useConnectedAutomations = (db, object) => {
|
|
94
|
+
const { invokePromise } = useOperationInvoker();
|
|
95
|
+
const connected = useQuery(db, connectedAutomationsQuery(object));
|
|
96
|
+
const all = useQuery(db, Filter2.type(Automation2.Automation));
|
|
97
|
+
const connectedIds = useMemo(() => new Set(connected.map((automation) => automation.id)), [
|
|
98
|
+
connected
|
|
99
|
+
]);
|
|
100
|
+
const byId = useMemo(() => new Map(all.map((automation) => [
|
|
101
|
+
automation.id,
|
|
102
|
+
automation
|
|
103
|
+
])), [
|
|
104
|
+
all
|
|
105
|
+
]);
|
|
106
|
+
const seenOrder = useRef([]);
|
|
107
|
+
const everConnected = useRef(/* @__PURE__ */ new Set());
|
|
108
|
+
const [createdIds, setCreatedIds] = useState(() => /* @__PURE__ */ new Set());
|
|
109
|
+
const [open, setOpen] = useState([]);
|
|
110
|
+
for (const id of connectedIds) {
|
|
111
|
+
everConnected.current.add(id);
|
|
112
|
+
}
|
|
113
|
+
for (const id of [
|
|
114
|
+
...connectedIds,
|
|
115
|
+
...createdIds
|
|
116
|
+
]) {
|
|
117
|
+
if (!seenOrder.current.includes(id)) {
|
|
118
|
+
seenOrder.current.push(id);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const items = useMemo(() => seenOrder.current.flatMap((id) => {
|
|
122
|
+
const automation = byId.get(id);
|
|
123
|
+
return automation ? [
|
|
124
|
+
automation
|
|
125
|
+
] : [];
|
|
126
|
+
}), [
|
|
127
|
+
byId,
|
|
128
|
+
connectedIds,
|
|
129
|
+
createdIds
|
|
130
|
+
]);
|
|
131
|
+
const statusFor = useCallback((id) => connectedIds.has(id) ? "associated" : everConnected.current.has(id) ? "detached" : "pending", [
|
|
132
|
+
connectedIds
|
|
133
|
+
]);
|
|
134
|
+
const handleCreate = useCallback(async (templateId) => {
|
|
135
|
+
const { data, error } = await invokePromise(AutomationOperation.CreateAutomation, {
|
|
136
|
+
db,
|
|
137
|
+
templateId,
|
|
138
|
+
subject: object
|
|
139
|
+
});
|
|
140
|
+
if (error || !data) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
setCreatedIds((prev) => new Set(prev).add(data.object.id));
|
|
144
|
+
setOpen((prev) => prev.includes(data.object.id) ? prev : [
|
|
145
|
+
...prev,
|
|
146
|
+
data.object.id
|
|
147
|
+
]);
|
|
148
|
+
}, [
|
|
149
|
+
invokePromise,
|
|
150
|
+
db,
|
|
151
|
+
object
|
|
152
|
+
]);
|
|
153
|
+
return {
|
|
154
|
+
items,
|
|
155
|
+
statusFor,
|
|
156
|
+
open,
|
|
157
|
+
setOpen,
|
|
158
|
+
handleCreate
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
export {
|
|
162
|
+
AutomationCompanion,
|
|
163
|
+
AutomationCompanion as default
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=AutomationCompanion-M26WR6VP.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/AutomationCompanion/AutomationCompanion.tsx", "../../../src/util/automations-for-object.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { type Database, Filter, Obj, Type } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { DropdownMenu, Icon, Tooltip, useTranslation } from '@dxos/react-ui';\nimport { Accordion } from '@dxos/react-ui-list';\n\nimport { meta } from '#meta';\nimport { Automation, AutomationCapabilities, AutomationOperation } from '#types';\n\nimport { AutomationInlineForm } from '../../containers/AutomationArticle';\nimport { connectedAutomationsQuery } from '../../util/automations-for-object';\n\nexport type AutomationCompanionProps = {\n db: Database.Database;\n object: Obj.Unknown;\n};\n\n/** Association state of a row relative to the companion's object. */\ntype Status = 'associated' | 'pending' | 'detached';\n\n/**\n * Renders the automations connected to an object as an accordion (see `useConnectedAutomations` for the\n * session-stable list it draws from), flagging non-associated rows with a warning badge. New automations are\n * created from a template dropdown (no dialog).\n */\nexport const AutomationCompanion = ({ db, object }: AutomationCompanionProps) => {\n const { t } = useTranslation(meta.id);\n const templates = useCapabilities(AutomationCapabilities.Template);\n // Only offer templates applicable to this companion's subject (e.g. a CRM template needs a Mailbox).\n const applicableTemplates = useMemo(\n () => templates.filter((template) => template.appliesTo?.(object) ?? true),\n [templates, object],\n );\n const { items, statusFor, open, setOpen, handleCreate } = useConnectedAutomations(db, object);\n\n return (\n <div className='flex flex-col'>\n {items.length === 0 ? (\n <p className='text-sm text-description p-2'>{t('no-automations.message')}</p>\n ) : (\n <Accordion.Root<Automation.Automation> items={items} value={open} onValueChange={setOpen}>\n {({ items }) => (\n <div className='flex flex-col divide-y divide-separator'>\n {items.map((automation) => {\n const status = statusFor(automation.id);\n return (\n <Accordion.Item key={automation.id} item={automation}>\n <Accordion.ItemHeader>\n <Icon icon='ph--lightning--regular' size={4} classNames='mr-2 shrink-0' />\n <span className='flex-1 truncate'>\n {Obj.getLabel(automation) ??\n t('object-name.placeholder', { ns: Type.getTypename(Automation.Automation) })}\n </span>\n {status !== 'associated' && (\n <Tooltip.Trigger\n asChild\n side='bottom'\n content={t(\n status === 'pending' ? 'automation-not-associated.message' : 'automation-detached.message',\n )}\n >\n <Icon icon='ph--warning--regular' size={4} classNames='text-warning-text shrink-0 mr-2' />\n </Tooltip.Trigger>\n )}\n </Accordion.ItemHeader>\n <Accordion.ItemBody>\n <AutomationInlineForm automation={automation} db={db} />\n </Accordion.ItemBody>\n </Accordion.Item>\n );\n })}\n </div>\n )}\n </Accordion.Root>\n )}\n\n <div className='border-t border-separator'>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n {/* Mirror the accordion item header layout (p-2 + icon mr-2) so the icon aligns with the rows above. */}\n <button type='button' className='group flex items-center p-2 dx-focus-ring-inset w-full text-start'>\n <Icon icon='ph--plus--regular' size={4} classNames='mr-2 shrink-0' />\n <span className='flex-1 truncate'>\n {t('add-object.label', { ns: Type.getTypename(Automation.Automation) })}\n </span>\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n {applicableTemplates.map((template) => (\n <DropdownMenu.Item key={template.id} onClick={() => void handleCreate(template.id)}>\n <Icon icon={template.icon ?? 'ph--lightning--regular'} size={4} />\n <span>{template.label}</span>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </div>\n </div>\n );\n};\n\n//\n// Hooks\n//\n\n/**\n * Owns the companion's session-stable automation list. A reactive reverse-ref query supplies the live\n * connected set, accumulated into an append-only ordering so rows never reorder or disappear while mounted;\n * a row that loses its association (or a freshly-created one not yet connected) is surfaced via `statusFor`\n * rather than dropped. Also holds the accordion open state and a create handler that appends the new\n * automation and auto-expands it for immediate configuration.\n */\nconst useConnectedAutomations = (db: Database.Database, object: Obj.Unknown) => {\n const { invokePromise } = useOperationInvoker();\n\n // Live connected set (reactive reverse-ref query) + a by-id map for resolving rows that have left it.\n const connected = useQuery(db, connectedAutomationsQuery(object));\n const all = useQuery(db, Filter.type(Automation.Automation));\n const connectedIds = useMemo(() => new Set(connected.map((automation) => automation.id)), [connected]);\n const byId = useMemo(() => new Map(all.map((automation) => [automation.id, automation])), [all]);\n\n // Session-stable bookkeeping (held for the component lifetime).\n const seenOrder = useRef<string[]>([]);\n const everConnected = useRef<Set<string>>(new Set());\n const [createdIds, setCreatedIds] = useState<ReadonlySet<string>>(() => new Set());\n const [open, setOpen] = useState<string[]>([]);\n\n // Accumulate first-seen order and \"was ever connected\" — append-only, so rows never reorder or drop.\n for (const id of connectedIds) {\n everConnected.current.add(id);\n }\n for (const id of [...connectedIds, ...createdIds]) {\n if (!seenOrder.current.includes(id)) {\n seenOrder.current.push(id);\n }\n }\n\n // Resolve to live objects in stable order, dropping ids whose object was hard-deleted.\n const items = useMemo(\n () =>\n seenOrder.current.flatMap((id) => {\n const automation = byId.get(id);\n return automation ? [automation] : [];\n }),\n [byId, connectedIds, createdIds],\n );\n\n const statusFor = useCallback(\n (id: string): Status =>\n connectedIds.has(id) ? 'associated' : everConnected.current.has(id) ? 'detached' : 'pending',\n [connectedIds],\n );\n\n const handleCreate = useCallback(\n async (templateId: string) => {\n const { data, error } = await invokePromise(AutomationOperation.CreateAutomation, {\n db,\n templateId,\n subject: object,\n });\n if (error || !data) {\n return;\n }\n\n setCreatedIds((prev) => new Set(prev).add(data.object.id));\n setOpen((prev) => (prev.includes(data.object.id) ? prev : [...prev, data.object.id]));\n },\n [invokePromise, db, object],\n );\n\n return { items, statusFor, open, setOpen, handleCreate };\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Trigger } from '@dxos/compute';\nimport { Filter, Obj, Query, Ref } from '@dxos/echo';\n\nimport { Automation } from '#types';\n\n/**\n * Reactive query for the automations connected to an object O — without a stored association field.\n *\n * Association is derived: an automation is connected when one of its triggers references O, either via a\n * `Ref` anywhere in the trigger's `input` (e.g. a magazine passed into AgentPrompt's input) or via a feed\n * trigger whose `spec.feed` resolves to `O.feed` (feed-annotated hosts like mailboxes). Both are reachable\n * by reverse-reference traversal because ECHO's reverse-ref index is structural — it records every ref in a\n * document regardless of schema path (incl. untyped records and union-nested fields). The traversal is two\n * hops: O ← Trigger ← Automation.\n */\nexport const connectedAutomationsQuery = (object: Obj.Unknown): Query.Query<Automation.Automation> => {\n // Triggers referencing O directly (any path, incl. nested in the untyped `input` record).\n const byInput = Query.select(Filter.id(object.id)).referencedBy(Trigger.Trigger);\n // Triggers referencing O's feed; `.reference('feed')` reads the path structurally and is empty for objects\n // without a feed prop, so this branch contributes nothing for non-feed objects.\n const byFeed = Query.select(Filter.id(object.id)).reference('feed').referencedBy(Trigger.Trigger);\n return Query.all(byInput, byFeed).referencedBy(Automation.Automation, 'triggers');\n};\n\n/**\n * Pure predicate equivalent of {@link connectedAutomationsQuery}, over a pre-queried list of automations.\n * Kept for unit tests (asserting the query and predicate agree) and the deferred quick-association check.\n */\nexport const automationsForObject = (\n object: Obj.Unknown,\n automations: Automation.Automation[],\n): Automation.Automation[] => automations.filter((automation) => automationReferencesObject(automation, object));\n\nexport const automationReferencesObject = (automation: Automation.Automation, object: Obj.Unknown): boolean => {\n const objectFeedId = getFeedId(object);\n return automation.triggers.some((ref) => {\n const trigger = ref.target;\n if (!Obj.instanceOf(Trigger.Trigger, trigger)) {\n return false;\n }\n\n if (trigger.spec?.kind === 'feed' && objectFeedId && trigger.spec.feed?.target?.id === objectFeedId) {\n return true;\n }\n\n return trigger.input != null && referencesId(trigger.input, object.id);\n });\n};\n\n/** The feed id a feed-annotated object points at (e.g. `mailbox.feed`), if any. */\nconst getFeedId = (object: Obj.Unknown): string | undefined => {\n const feedRef = (object as { feed?: Ref.Ref<unknown> }).feed;\n return Ref.isRef(feedRef) ? feedRef.target?.id : undefined;\n};\n\n/** Recursively scan a value for a Ref whose target is the given object id. */\nconst referencesId = (value: unknown, id: string): boolean => {\n if (Ref.isRef(value)) {\n return value.target?.id === id;\n }\n if (Array.isArray(value)) {\n return value.some((entry) => referencesId(entry, id));\n }\n if (value && typeof value === 'object') {\n return Object.values(value).some((entry) => referencesId(entry, id));\n }\n return false;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useCallback", "useMemo", "useRef", "useState", "useCapabilities", "useOperationInvoker", "Filter", "Obj", "Type", "useQuery", "DropdownMenu", "Icon", "Tooltip", "useTranslation", "Accordion", "meta", "Automation", "AutomationCapabilities", "AutomationOperation", "Trigger", "Filter", "Obj", "Query", "Ref", "Automation", "connectedAutomationsQuery", "object", "byInput", "select", "id", "referencedBy", "byFeed", "reference", "all", "AutomationCompanion", "db", "object", "t", "useTranslation", "meta", "id", "templates", "useCapabilities", "AutomationCapabilities", "Template", "applicableTemplates", "useMemo", "filter", "template", "appliesTo", "items", "statusFor", "open", "setOpen", "handleCreate", "useConnectedAutomations", "div", "className", "length", "p", "Accordion", "Root", "value", "onValueChange", "map", "automation", "status", "Item", "key", "item", "ItemHeader", "Icon", "icon", "size", "classNames", "span", "Obj", "getLabel", "ns", "Type", "getTypename", "Automation", "Tooltip", "Trigger", "asChild", "side", "content", "ItemBody", "AutomationInlineForm", "DropdownMenu", "button", "type", "Portal", "Content", "Viewport", "onClick", "label", "Arrow", "invokePromise", "useOperationInvoker", "connected", "useQuery", "connectedAutomationsQuery", "all", "Filter", "connectedIds", "Set", "byId", "Map", "seenOrder", "useRef", "everConnected", "createdIds", "setCreatedIds", "useState", "current", "add", "includes", "push", "flatMap", "get", "useCallback", "has", "templateId", "data", "error", "AutomationOperation", "CreateAutomation", "subject", "prev"]
|
|
7
|
+
}
|