@dxos/plugin-automation 0.8.4-main.f5c0578 → 0.8.4-main.fcc0d83b33
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/dist/lib/browser/chunk-3JLJBF5C.mjs +54 -0
- package/dist/lib/browser/chunk-3JLJBF5C.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-SZIGF7TB.mjs +44 -0
- package/dist/lib/browser/chunk-SZIGF7TB.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +1107 -0
- package/dist/lib/browser/cli/index.mjs.map +7 -0
- package/dist/lib/browser/create-trigger-from-template-RSZIPHIG.mjs +71 -0
- package/dist/lib/browser/create-trigger-from-template-RSZIPHIG.mjs.map +7 -0
- package/dist/lib/browser/hooks/index.mjs +129 -0
- package/dist/lib/browser/hooks/index.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +44 -94
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operations/index.mjs +14 -0
- package/dist/lib/browser/operations/index.mjs.map +7 -0
- package/dist/lib/browser/translations.mjs +47 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +10 -4
- package/dist/lib/node-esm/chunk-7I6EPBJI.mjs +56 -0
- package/dist/lib/node-esm/chunk-7I6EPBJI.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-TR5BMZG5.mjs +45 -0
- package/dist/lib/node-esm/chunk-TR5BMZG5.mjs.map +7 -0
- package/dist/lib/node-esm/cli/index.mjs +1108 -0
- package/dist/lib/node-esm/cli/index.mjs.map +7 -0
- package/dist/lib/node-esm/create-trigger-from-template-GE76I6FE.mjs +72 -0
- package/dist/lib/node-esm/create-trigger-from-template-GE76I6FE.mjs.map +7 -0
- package/dist/lib/node-esm/hooks/index.mjs +130 -0
- package/dist/lib/node-esm/hooks/index.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +44 -94
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/operations/index.mjs +15 -0
- package/dist/lib/node-esm/operations/index.mjs.map +7 -0
- package/dist/lib/node-esm/translations.mjs +48 -0
- package/dist/lib/node-esm/translations.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +10 -4
- package/dist/types/src/AutomationPlugin.d.ts +2 -1
- package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
- 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/compute-runtime.d.ts +14 -0
- package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +6 -3
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/node.d.ts +3 -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/cli/commands/index.d.ts +2 -0
- package/dist/types/src/cli/commands/index.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/create/index.d.ts +25 -0
- package/dist/types/src/cli/commands/trigger/create/index.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/create/queue.d.ts +13 -0
- package/dist/types/src/cli/commands/trigger/create/queue.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/create/subscription.d.ts +15 -0
- package/dist/types/src/cli/commands/trigger/create/subscription.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/create/timer.d.ts +13 -0
- package/dist/types/src/cli/commands/trigger/create/timer.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/index.d.ts +57 -0
- package/dist/types/src/cli/commands/trigger/index.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/list.d.ts +7 -0
- package/dist/types/src/cli/commands/trigger/list.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/options.d.ts +11 -0
- package/dist/types/src/cli/commands/trigger/options.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/remove.d.ts +8 -0
- package/dist/types/src/cli/commands/trigger/remove.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/update/index.d.ts +28 -0
- package/dist/types/src/cli/commands/trigger/update/index.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/update/queue.d.ts +12 -0
- package/dist/types/src/cli/commands/trigger/update/queue.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/update/subscription.d.ts +13 -0
- package/dist/types/src/cli/commands/trigger/update/subscription.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/update/timer.d.ts +11 -0
- package/dist/types/src/cli/commands/trigger/update/timer.d.ts.map +1 -0
- package/dist/types/src/cli/commands/trigger/util.d.ts +46 -0
- package/dist/types/src/cli/commands/trigger/util.d.ts.map +1 -0
- package/dist/types/src/cli/index.d.ts +2 -0
- package/dist/types/src/cli/index.d.ts.map +1 -0
- package/dist/types/src/cli/plugin.d.ts +3 -0
- package/dist/types/src/cli/plugin.d.ts.map +1 -0
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +3 -3
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
- package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +50 -4
- package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
- package/dist/types/src/components/AutomationPanel/index.d.ts.map +1 -1
- package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
- package/dist/types/src/components/FunctionsPanel/index.d.ts.map +1 -1
- package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts +8 -0
- package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -0
- package/dist/types/src/components/FunctionsRegistry/index.d.ts +4 -0
- package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -0
- package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +12 -9
- package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +6 -3
- package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +11 -8
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +121 -4
- package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -3
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts +6 -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/FunctionsContainer/FunctionsContainer.d.ts +4 -0
- package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts.map +1 -0
- package/dist/types/src/containers/FunctionsContainer/index.d.ts +2 -0
- package/dist/types/src/containers/FunctionsContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts +6 -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 +5 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +5 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -0
- package/dist/types/src/hooks/useComputeRuntime.d.ts +8 -0
- package/dist/types/src/hooks/useComputeRuntime.d.ts.map +1 -0
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +9 -0
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -0
- package/dist/types/src/hooks/useComputeRuntimeService.d.ts +17 -0
- package/dist/types/src/hooks/useComputeRuntimeService.d.ts.map +1 -0
- package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +12 -0
- package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +2 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -3
- package/dist/types/src/meta.d.ts.map +1 -1
- 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/definitions.d.ts +19 -0
- package/dist/types/src/operations/definitions.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +4 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/testing/test-functions.d.ts +204 -3
- package/dist/types/src/testing/test-functions.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +32 -26
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts +25 -0
- package/dist/types/src/types/capabilities.d.ts.map +1 -0
- package/dist/types/src/types/events.d.ts +5 -0
- package/dist/types/src/types/events.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +12 -4
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +105 -43
- package/src/AutomationPlugin.tsx +22 -34
- package/src/capabilities/app-graph-builder.ts +56 -79
- package/src/capabilities/compute-runtime.ts +320 -0
- package/src/capabilities/index.ts +9 -4
- package/src/capabilities/node.ts +7 -0
- package/src/capabilities/operation-handler.ts +16 -0
- package/src/capabilities/react-surface.tsx +49 -46
- package/src/cli/commands/index.ts +5 -0
- package/src/cli/commands/trigger/create/index.ts +14 -0
- package/src/cli/commands/trigger/create/queue.ts +87 -0
- package/src/cli/commands/trigger/create/subscription.ts +126 -0
- package/src/cli/commands/trigger/create/timer.ts +91 -0
- package/src/cli/commands/trigger/index.ts +16 -0
- package/src/cli/commands/trigger/list.ts +70 -0
- package/src/cli/commands/trigger/options.ts +59 -0
- package/src/cli/commands/trigger/remove.ts +45 -0
- package/src/cli/commands/trigger/update/index.ts +14 -0
- package/src/cli/commands/trigger/update/queue.ts +195 -0
- package/src/cli/commands/trigger/update/subscription.ts +279 -0
- package/src/cli/commands/trigger/update/timer.ts +194 -0
- package/src/cli/commands/trigger/util.ts +411 -0
- package/src/cli/index.ts +5 -0
- package/src/cli/plugin.ts +23 -0
- package/src/components/AutomationPanel/AutomationPanel.stories.tsx +17 -17
- package/src/components/AutomationPanel/AutomationPanel.tsx +250 -94
- package/src/components/FunctionsPanel/FunctionsPanel.tsx +52 -32
- package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +114 -0
- package/src/components/FunctionsRegistry/index.ts +8 -0
- package/src/components/TriggerEditor/FunctionInputEditor.tsx +42 -35
- package/src/components/TriggerEditor/SpecSelector.tsx +34 -22
- package/src/components/TriggerEditor/TriggerEditor.stories.tsx +124 -36
- package/src/components/TriggerEditor/TriggerEditor.tsx +110 -48
- package/src/components/index.ts +1 -2
- package/src/containers/AutomationSettings/AutomationSettings.tsx +31 -0
- package/src/containers/AutomationSettings/index.ts +5 -0
- package/src/containers/FunctionsContainer/FunctionsContainer.tsx +33 -0
- package/src/containers/FunctionsContainer/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 +9 -0
- package/src/hooks/index.ts +9 -0
- package/src/hooks/useComputeRuntime.ts +30 -0
- package/src/hooks/useComputeRuntimeCallback.ts +32 -0
- package/src/hooks/useComputeRuntimeService.ts +64 -0
- package/src/hooks/useTriggerRuntimeControls.ts +70 -0
- package/src/index.ts +2 -4
- package/src/meta.ts +9 -8
- package/src/operations/create-trigger-from-template.ts +72 -0
- package/src/operations/definitions.ts +28 -0
- package/src/operations/index.ts +9 -0
- package/src/testing/test-functions.ts +10 -7
- package/src/translations.ts +39 -29
- package/src/types/capabilities.ts +48 -0
- package/src/types/events.ts +11 -0
- package/src/types/index.ts +2 -0
- package/src/types/schema.ts +6 -6
- package/dist/lib/browser/AutomationContainer-5UYKI7EG.mjs +0 -38
- package/dist/lib/browser/AutomationContainer-5UYKI7EG.mjs.map +0 -7
- package/dist/lib/browser/AutomationPanel-YYERBNYJ.mjs +0 -11
- package/dist/lib/browser/FunctionsContainer-VOGKIPHA.mjs +0 -39
- package/dist/lib/browser/FunctionsContainer-VOGKIPHA.mjs.map +0 -7
- package/dist/lib/browser/FunctionsPanel-I443Y6KB.mjs +0 -10
- package/dist/lib/browser/app-graph-builder-4OFKIRAI.mjs +0 -80
- package/dist/lib/browser/app-graph-builder-4OFKIRAI.mjs.map +0 -7
- package/dist/lib/browser/chunk-7EE4SA6M.mjs +0 -230
- package/dist/lib/browser/chunk-7EE4SA6M.mjs.map +0 -7
- package/dist/lib/browser/chunk-CHENFUQ6.mjs +0 -14
- package/dist/lib/browser/chunk-CHENFUQ6.mjs.map +0 -7
- package/dist/lib/browser/chunk-GW5U2DGT.mjs +0 -15
- package/dist/lib/browser/chunk-GW5U2DGT.mjs.map +0 -7
- package/dist/lib/browser/chunk-HN7OHFCB.mjs +0 -38
- package/dist/lib/browser/chunk-HN7OHFCB.mjs.map +0 -7
- package/dist/lib/browser/chunk-OX6OW6XP.mjs +0 -147
- package/dist/lib/browser/chunk-OX6OW6XP.mjs.map +0 -7
- package/dist/lib/browser/chunk-Z5DT4MHW.mjs +0 -94
- package/dist/lib/browser/chunk-Z5DT4MHW.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-YZP6RKTR.mjs +0 -76
- package/dist/lib/browser/intent-resolver-YZP6RKTR.mjs.map +0 -7
- package/dist/lib/browser/react-surface-WNOIIT4O.mjs +0 -64
- package/dist/lib/browser/react-surface-WNOIIT4O.mjs.map +0 -7
- package/dist/lib/node-esm/AutomationContainer-EZMY6DTD.mjs +0 -39
- package/dist/lib/node-esm/AutomationContainer-EZMY6DTD.mjs.map +0 -7
- package/dist/lib/node-esm/AutomationPanel-5EQQF5S2.mjs +0 -12
- package/dist/lib/node-esm/AutomationPanel-5EQQF5S2.mjs.map +0 -7
- package/dist/lib/node-esm/FunctionsContainer-IHLMLXHH.mjs +0 -40
- package/dist/lib/node-esm/FunctionsContainer-IHLMLXHH.mjs.map +0 -7
- package/dist/lib/node-esm/FunctionsPanel-ELINCXPW.mjs +0 -11
- package/dist/lib/node-esm/FunctionsPanel-ELINCXPW.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-555IHYOB.mjs +0 -81
- package/dist/lib/node-esm/app-graph-builder-555IHYOB.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CX2AILIS.mjs +0 -95
- package/dist/lib/node-esm/chunk-CX2AILIS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-D4VWZD53.mjs +0 -16
- package/dist/lib/node-esm/chunk-D4VWZD53.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GHRG4NQV.mjs +0 -148
- package/dist/lib/node-esm/chunk-GHRG4NQV.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NK5N3QKD.mjs +0 -17
- package/dist/lib/node-esm/chunk-NK5N3QKD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OEZNHUL2.mjs +0 -39
- package/dist/lib/node-esm/chunk-OEZNHUL2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YPUO4IVX.mjs +0 -231
- package/dist/lib/node-esm/chunk-YPUO4IVX.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-TSLQE27W.mjs +0 -77
- package/dist/lib/node-esm/intent-resolver-TSLQE27W.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-K6MQFIAS.mjs +0 -65
- package/dist/lib/node-esm/react-surface-K6MQFIAS.mjs.map +0 -7
- 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/AutomationContainer.d.ts +0 -5
- package/dist/types/src/components/AutomationContainer.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/src/capabilities/intent-resolver.ts +0 -72
- package/src/components/AutomationContainer.tsx +0 -31
- package/src/components/FunctionsContainer.tsx +0 -32
- /package/dist/lib/browser/{AutomationPanel-YYERBNYJ.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{browser/FunctionsPanel-I443Y6KB.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/cli/plugin.ts", "../../../../src/cli/commands/trigger/index.ts", "../../../../src/cli/commands/trigger/create/index.ts", "../../../../src/cli/commands/trigger/create/queue.ts", "../../../../src/cli/commands/trigger/options.ts", "../../../../src/cli/commands/trigger/util.ts", "../../../../src/cli/commands/trigger/create/subscription.ts", "../../../../src/cli/commands/trigger/create/timer.ts", "../../../../src/cli/commands/trigger/list.ts", "../../../../src/cli/commands/trigger/remove.ts", "../../../../src/cli/commands/trigger/update/index.ts", "../../../../src/cli/commands/trigger/update/queue.ts", "../../../../src/cli/commands/trigger/update/subscription.ts", "../../../../src/cli/commands/trigger/update/timer.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { ClientEvents } from '@dxos/plugin-client/types';\n\nimport { ComputeRuntime } from '#capabilities';\nimport { meta } from '#meta';\nimport { AutomationEvents } from '#types';\n\nimport { trigger } from './commands';\n\nexport const AutomationPlugin = Plugin.define(meta).pipe(\n AppPlugin.addCommandModule({ commands: [trigger] }),\n Plugin.addModule({\n activatesOn: ClientEvents.ClientReady,\n firesAfterActivation: [AutomationEvents.ComputeRuntimeReady],\n activate: ComputeRuntime,\n }),\n Plugin.make,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { create } from './create';\nimport { list } from './list';\nimport { remove } from './remove';\nimport { update } from './update';\n\n// TODO(wittjosiah): Rename to automation to align with Composer?\nexport const trigger = Command.make('trigger').pipe(\n Command.withDescription('Manage EDGE triggers.'),\n Command.withSubcommands([create, list, remove, update]),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { queue } from './queue';\nimport { subscription } from './subscription';\nimport { timer } from './timer';\n\nexport const create = Command.make('create').pipe(\n Command.withDescription('Create a trigger.'),\n Command.withSubcommands([subscription, timer, queue]),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as HashMap from 'effect/HashMap';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { Database, Filter, JsonSchema, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\n\nimport { Enabled, Input, Queue } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction, selectQueue } from '../util';\n\nexport const queue = Command.make(\n 'queue',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n queue: Queue.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const functionId = yield* Option.match(options.functionId, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const fn = functions.find((fn) => fn.id === functionId);\n if (!fn) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n\n const queueDxn = yield* Option.match(options.queue, {\n onNone: () => selectQueue(),\n onSome: (dxn) => Effect.succeed(dxn.toString()),\n });\n\n const input = yield* Option.match(options.input, {\n onNone: () => promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined),\n onSome: (value) => Effect.succeed(Object.fromEntries(HashMap.toEntries(value))),\n });\n\n // Always prompt for enabled if functionId is not provided.\n const enabled = yield* Option.match(options.functionId, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: true,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(options.enabled),\n });\n\n const trigger = Trigger.make({\n function: Ref.make(fn),\n enabled,\n spec: Trigger.specQueue(queueDxn),\n input,\n });\n\n yield* Database.add(trigger);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Create a queue trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Options from '@effect/cli/Options';\nimport * as Schema from 'effect/Schema';\n\nimport { DXN } from '@dxos/keys';\n\nexport const TriggerId = Options.text('id').pipe(Options.withDescription('The id of the trigger.'));\n\nexport const Enabled = Options.boolean('enabled', { ifPresent: true }).pipe(\n Options.withDescription('Whether the trigger is enabled.'),\n);\n\nexport const Input = Options.keyValueMap('input').pipe(\n Options.withDescription(\"Input data to pass to the function. Must match the function's input schema.\"),\n);\n\n//\n// Subscription\n//\n\nexport const Typename = Options.text('typename').pipe(\n Options.withDescription('The type name to query for the subscription trigger.'),\n);\n\nexport const Deep = Options.boolean('deep', { ifPresent: true }).pipe(\n Options.withDescription('Watch changes to nested properties (not just creation).'),\n);\n\nexport const Delay = Options.integer('delay').pipe(\n Options.withDescription('Debounce changes with a delay in milliseconds.'),\n);\n\n//\n// Timer\n//\n\nexport const Cron = Options.text('cron').pipe(\n Options.withDescription('The cron expression to use for the timer trigger.'),\n);\n\n//\n// Queue\n//\n\n// TODO(dmaretskyi): Extract\nconst DXNSchema = Schema.String.pipe(\n Schema.transform(Schema.instanceOf(DXN), {\n decode: (value: string) => DXN.parse(value),\n encode: (value: DXN) => value.toString(),\n }),\n);\n\nexport const Queue = Options.text('queue').pipe(\n Options.withDescription('The DXN of the queue for the queue trigger.'),\n Options.withSchema(DXNSchema),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Ansi from '@effect/printer-ansi/Ansi';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { FormBuilder } from '@dxos/cli-util';\nimport { Annotation, Database, Entity, Feed, Filter, Obj, Query, Ref, Type } from '@dxos/echo';\nimport { getProperties } from '@dxos/effect';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\nimport { FeedAnnotation } from '@dxos/schema';\n\nexport type TriggerRemoteStatus = 'available' | 'not available' | 'n/a';\n\n/**\n * Determines the remote status of a trigger.\n * Only timer/cron triggers can be checked for remote availability.\n */\nexport const getTriggerRemoteStatus = (trigger: Trigger.Trigger, remoteCronIds: string[]): TriggerRemoteStatus => {\n if (trigger.spec?.kind !== 'timer') {\n return 'n/a';\n }\n return remoteCronIds.includes(trigger.id) ? 'available' : 'not available';\n};\n\n/**\n * Pretty prints a trigger with ANSI colors.\n */\nexport const printTrigger = Effect.fn(function* (trigger: Trigger.Trigger, remoteStatus?: TriggerRemoteStatus) {\n const fn = trigger.function && (yield* Database.load(trigger.function));\n\n return FormBuilder.make({\n title: trigger.id,\n }).pipe(\n FormBuilder.set(\n 'status',\n trigger.enabled ? 'enabled' : 'disabled',\n trigger.enabled ? Ansi.green : Ansi.blackBright,\n ),\n FormBuilder.option('kind', Option.fromNullable(trigger.spec?.kind)),\n FormBuilder.option(\n 'remote',\n Option.fromNullable(remoteStatus),\n Match.type<TriggerRemoteStatus>().pipe(\n Match.withReturnType<Ansi.Ansi>(),\n Match.when('available', () => Ansi.green),\n Match.when('not available', () => Ansi.yellow),\n Match.when('n/a', () => Ansi.blackBright),\n Match.exhaustive,\n ),\n ),\n FormBuilder.when(\n fn,\n FormBuilder.nest(\n 'function',\n FormBuilder.make().pipe(\n FormBuilder.set('key', (fn as Operation.PersistentOperation).key),\n FormBuilder.set('dxn', Obj.getDXN(fn as Obj.Unknown).toString()),\n ),\n ),\n ),\n FormBuilder.nestedOption('spec', Option.fromNullable(trigger.spec).pipe(Option.map(printSpec))),\n FormBuilder.build,\n );\n});\n\nconst printSpec = <T extends Trigger.Spec>(spec: T): FormBuilder.FormBuilder => {\n switch (spec.kind) {\n case 'timer':\n return printTimer(spec);\n case 'subscription':\n return printSubscription(spec);\n case 'webhook':\n return printWebhook(spec);\n case 'queue':\n return printQueue(spec);\n default:\n return FormBuilder.make({}).pipe(FormBuilder.set('unknown', 'Unknown spec type'));\n }\n};\n\nconst printTimer = (spec: Trigger.TimerSpec) => FormBuilder.make({}).pipe(FormBuilder.set('cron', spec.cron));\n\nconst printSubscription = (spec: Trigger.SubscriptionSpec) =>\n FormBuilder.make({}).pipe(FormBuilder.set('query', spec.query?.raw ?? '[Query AST]'));\n\nconst printWebhook = (spec: Trigger.WebhookSpec) =>\n FormBuilder.make({}).pipe(FormBuilder.set('method', spec.method), FormBuilder.set('port', spec.port));\n\nconst printQueue = (spec: Trigger.QueueSpec) => FormBuilder.make({}).pipe(FormBuilder.set('queue', spec.queue));\n\n/**\n * Prompts for input values based on an Effect schema.\n * First shows a multi-select to choose which properties to specify,\n * then prompts for values of the selected properties.\n * Required properties are automatically included and cannot be unselected.\n * @param schema - The Effect schema to prompt for\n * @param defaults - Optional default values to use as initial values and pre-select optional properties\n */\nexport const promptForSchemaInput = Effect.fn(function* (\n schema: Schema.Schema.AnyNoContext | undefined,\n defaults?: Record<string, any> | undefined,\n) {\n if (!schema) {\n return {};\n }\n\n const ast = schema.ast;\n\n // Check if it's a struct/object type\n if (!SchemaAST.isTypeLiteral(ast)) {\n return {};\n }\n\n const properties = getProperties(ast);\n if (properties.length === 0) {\n return {};\n }\n\n // Separate required and optional properties\n const requiredProperties: typeof properties = [];\n const optionalProperties: typeof properties = [];\n\n for (const prop of properties) {\n if (prop.isOptional) {\n optionalProperties.push(prop);\n } else {\n requiredProperties.push(prop);\n }\n }\n\n // Build property info\n const propertyInfo = properties.map((prop) => {\n const key = prop.name.toString();\n return {\n prop,\n key,\n isRequired: !prop.isOptional,\n };\n });\n\n // Multi-select: show all properties and let user select which optional ones to include\n const selectedKeys = new Set<string>();\n\n // Required properties are automatically selected\n for (const info of propertyInfo) {\n if (info.isRequired) {\n selectedKeys.add(info.key);\n }\n }\n\n // Show required properties that will be automatically included\n if (requiredProperties.length > 0) {\n const requiredNames = requiredProperties.map((p) => {\n const info = propertyInfo.find((i) => i.prop === p);\n return info?.key ?? p.name.toString();\n });\n yield* Console.log(`Required properties (will be included): ${requiredNames.join(', ')}`);\n }\n\n // For optional properties, use multi-select to choose which ones to include\n if (optionalProperties.length > 0) {\n const optionalInfo = propertyInfo.filter((info) => !info.isRequired);\n const choices = optionalInfo.map((info) => {\n const hasDefault = defaults?.[info.key] !== undefined;\n const defaultText = hasDefault ? ` (current: ${JSON.stringify(defaults[info.key])})` : '';\n return {\n title: `${info.key}${defaultText}`,\n value: info.key,\n description: hasDefault ? 'Has default value' : undefined,\n };\n });\n\n const selected = yield* Prompt.multiSelect({\n message: 'Select optional properties to include:',\n choices,\n });\n\n // Add selected optional properties to selectedKeys\n for (const key of selected) {\n selectedKeys.add(String(key));\n }\n }\n\n // If no properties selected (shouldn't happen if there are required ones), return empty\n if (selectedKeys.size === 0) {\n return {};\n }\n\n // Prompt for values of selected properties\n const inputObj: Record<string, any> = {};\n\n for (const info of propertyInfo) {\n if (!selectedKeys.has(info.key)) {\n continue;\n }\n\n const key = info.key;\n const propType = info.prop.type;\n const schemaDefault = Option.getOrUndefined(SchemaAST.getDefaultAnnotation(propType));\n const defaultValue = defaults?.[key] ?? schemaDefault;\n\n if (SchemaAST.isBooleanKeyword(propType)) {\n const initialValue =\n typeof defaultValue === 'boolean' ? defaultValue : typeof schemaDefault === 'boolean' ? schemaDefault : false;\n const value = yield* Prompt.confirm({\n message: `${info.key}${defaults?.[key] !== undefined ? ` (current: ${defaults[key]})` : ''}:`,\n initial: initialValue,\n });\n inputObj[key] = value;\n } else if (SchemaAST.isNumberKeyword(propType)) {\n const currentValue = typeof defaultValue === 'number' ? String(defaultValue) : '';\n const valueStr = yield* Prompt.text({\n message: `${info.key}${currentValue ? ` (current: ${currentValue}, press Enter to keep)` : ''}:`,\n }).pipe(Prompt.run);\n inputObj[key] = valueStr === '' && defaultValue !== undefined ? defaultValue : parseFloat(valueStr) || 0;\n } else if (SchemaAST.isStringKeyword(propType)) {\n const currentValue = typeof defaultValue === 'string' ? defaultValue : '';\n const valueStr = yield* Prompt.text({\n message: `${info.key}${currentValue ? ` (current: ${currentValue}, press Enter to keep)` : ''}:`,\n }).pipe(Prompt.run);\n inputObj[key] = valueStr === '' && defaultValue !== undefined ? defaultValue : valueStr;\n } else if (Ref.isRefType(propType)) {\n const isDefaultTemplate =\n typeof defaultValue === 'string' && defaultValue.startsWith('{{') && defaultValue.endsWith('}}');\n const useTemplate = yield* Prompt.confirm({\n message: `Use a template to specify ${info.key}?${isDefaultTemplate ? ' (current: template)' : ''}`,\n initial: isDefaultTemplate,\n });\n if (useTemplate) {\n const currentValue = typeof defaultValue === 'string' ? defaultValue : '';\n const templateStr = yield* Prompt.text({\n message: `${info.key} template${currentValue ? ` (current: ${currentValue}, press Enter to keep)` : ''}:`,\n }).pipe(Prompt.run);\n inputObj[key] = templateStr === '' && defaultValue !== undefined ? defaultValue : templateStr;\n } else {\n const annotation = Annotation.ReferenceAnnotation.getFromAst(propType).pipe(Option.getOrThrow);\n const objects = yield* Database.runQuery(Filter.typename(annotation.typename));\n if (objects.length === 0) {\n inputObj[key] = undefined;\n } else {\n const selected = yield* Prompt.select({\n message: `Select ${info.key}:`,\n choices: objects.map((obj: Entity.Any) => ({\n title: Entity.getLabel(obj) ?? obj.id,\n value: Ref.make(obj),\n description: Entity.getDescription(obj),\n })),\n });\n inputObj[key] = selected;\n }\n }\n } else {\n // For other types, prompt as string and let validation handle it\n const currentValue = defaultValue !== undefined ? String(defaultValue) : '';\n const valueStr = yield* Prompt.text({\n message: `${info.key}${currentValue ? ` (current: ${currentValue}, press Enter to keep)` : ''}:`,\n }).pipe(Prompt.run);\n inputObj[key] = valueStr === '' && defaultValue !== undefined ? defaultValue : valueStr;\n }\n }\n\n return inputObj;\n});\n\n/**\n * Selects a function interactively from available functions in the database.\n * Queries the database for functions and prompts the user to select one.\n */\nexport const selectFunction = Effect.fn(function* () {\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n\n if (functions.length === 0) {\n return yield* Effect.fail(new Error('No functions available'));\n }\n\n const selected = yield* Prompt.select({\n message: 'Select a function:',\n choices: functions.map((fn: Operation.PersistentOperation) => ({\n title: fn.name ?? fn.id,\n value: fn.id,\n description: fn.description,\n })),\n });\n\n return String(selected);\n});\n\n/**\n * Selects a trigger interactively from available triggers.\n * If kind is provided, filters triggers by that kind.\n * Queries the database for triggers and prompts the user to select one.\n */\nexport const selectTrigger = Effect.fn(function* (kind?: Trigger.Kind) {\n const triggers = yield* Database.runQuery(\n Query.select(Filter.type(Trigger.Trigger)).debugLabel('cli.trigger.selectTrigger'),\n );\n const filteredTriggers = kind ? triggers.filter((trigger) => trigger.spec?.kind === kind) : triggers;\n\n if (filteredTriggers.length === 0) {\n return yield* Effect.fail(new Error(kind ? `No ${kind} triggers available` : 'No triggers available'));\n }\n\n const choices = yield* Effect.all(\n filteredTriggers.map((trigger) =>\n Effect.gen(function* () {\n const fn = trigger.function ? yield* Database.load(trigger.function) : undefined;\n const functionName =\n fn && Obj.instanceOf(Operation.PersistentOperation, fn) ? (fn.name ?? fn.key ?? fn.id) : undefined;\n const title = functionName ?? trigger.id;\n const description = `${trigger.enabled ? 'enabled' : 'disabled'} - ${trigger.spec?.kind ?? 'unknown'}`;\n\n return {\n title,\n value: trigger.id,\n description,\n };\n }),\n ),\n );\n\n const selected = yield* Prompt.select({\n message: kind ? `Select a ${kind} trigger:` : 'Select a trigger:',\n choices,\n });\n\n return String(selected);\n});\n\n/**\n * Selects a queue interactively from available queues in the database.\n * Queries schemas with FeedAnnotation, then queries objects of those types,\n * and extracts queue DXNs from the objects' feed properties.\n */\nexport const selectQueue = Effect.fn(function* () {\n // Query schema registry for schemas with FeedAnnotation.\n const schemas = yield* Database.runSchemaQuery({ location: ['database', 'runtime'] });\n\n // Filter schemas that have FeedAnnotation.\n const feedSchemas = schemas.filter((schema) => {\n const annotation = FeedAnnotation.get(schema);\n return Option.isSome(annotation) && annotation.value === true;\n });\n\n if (feedSchemas.length === 0) {\n return yield* Effect.fail(new Error('No schemas with Feed annotation found'));\n }\n\n // Collect all objects with queues.\n const queueChoices: Array<{ title: string; value: string; description?: string }> = [];\n\n // Process each feed schema, loading the Feed object to extract queue DXN.\n for (const schema of feedSchemas) {\n yield* Effect.gen(function* () {\n const typename = Type.getTypename(schema);\n const objects = yield* Database.runQuery(Filter.type(typename));\n\n for (const obj of objects) {\n // Access the feed property (which is a Ref<Feed>).\n const feedRef = (obj as any).feed as Ref.Ref<any> | undefined;\n if (!feedRef) {\n continue;\n }\n\n const feedObj = yield* Effect.promise(() => feedRef.tryLoad());\n if (!feedObj || !Obj.instanceOf(Feed.Feed, feedObj)) {\n continue;\n }\n\n const queueDxn = Feed.getQueueDxn(feedObj);\n if (!queueDxn) {\n continue;\n }\n\n const label = Obj.getLabel(obj) ?? obj.id;\n const description = Obj.getTypename(obj);\n\n queueChoices.push({\n title: label,\n value: queueDxn.toString(),\n description,\n });\n }\n }).pipe(Effect.catchAll(() => Effect.void));\n }\n\n if (queueChoices.length === 0) {\n return yield* Effect.fail(new Error('No objects with queue properties found'));\n }\n\n const selected = yield* Prompt.select({\n message: 'Select a queue:',\n choices: queueChoices,\n });\n\n return String(selected);\n});\n\n/**\n * Pretty prints trigger removal result with ANSI colors.\n */\nexport const printTriggerRemoved = (id: string) =>\n FormBuilder.make({ title: 'Trigger removed' }).pipe(FormBuilder.set('id', id), FormBuilder.build);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as HashMap from 'effect/HashMap';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { Database, Filter, JsonSchema, Query, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\n\nimport { Deep, Delay, Enabled, Input, Typename } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction } from '../util';\n\nexport const subscription = Command.make(\n 'subscription',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n typename: Typename.pipe(Options.optional),\n deep: Deep.pipe(Options.optional),\n delay: Delay.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const functionId = yield* Option.match(options.functionId, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const fn = functions.find((fn) => fn.id === functionId);\n if (!fn) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n\n const typename = yield* Option.match(options.typename, {\n onNone: () =>\n Prompt.text({\n message: 'Enter type name:',\n }).pipe(Prompt.run),\n onSome: (value) => Effect.succeed(value),\n });\n const subscriptionQuery = Query.select(Filter.type(typename));\n\n const deepOption = yield* Option.match(options.deep, {\n onNone: () =>\n Prompt.confirm({\n message: 'Watch changes to nested properties (deep)?',\n initial: false,\n }).pipe(\n Prompt.run,\n Effect.map((value) => (value ? Option.some(value) : Option.none())),\n ),\n onSome: () => Effect.succeed(Option.some(true)),\n });\n\n const delayOption = yield* Option.match(options.delay, {\n onNone: () =>\n Effect.gen(function* () {\n const delayStr = yield* Prompt.text({\n message: 'Debounce delay in milliseconds (optional, press Enter to skip):',\n }).pipe(Prompt.run);\n return delayStr === '' ? Option.none<number>() : Option.some(parseInt(delayStr, 10));\n }),\n onSome: (value) => Effect.succeed(Option.some(value)),\n });\n\n const subscriptionOptions: { deep?: boolean; delay?: number } = {};\n if (Option.isSome(deepOption)) {\n subscriptionOptions.deep = deepOption.value;\n }\n if (Option.isSome(delayOption)) {\n subscriptionOptions.delay = delayOption.value;\n }\n\n const input = yield* Option.match(options.input, {\n onNone: () => promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined),\n onSome: (value) => Effect.succeed(Object.fromEntries(HashMap.toEntries(value))),\n });\n\n // Always prompt for enabled if functionId is not provided.\n const enabled = yield* Option.match(options.functionId, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: true,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(options.enabled),\n });\n\n const trigger = Trigger.make({\n function: Ref.make(fn),\n enabled,\n spec: Trigger.specSubscription(\n subscriptionQuery,\n Object.keys(subscriptionOptions).length > 0 ? subscriptionOptions : undefined,\n ),\n input,\n });\n yield* Database.add(trigger);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Create a subscription trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as HashMap from 'effect/HashMap';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { Database, Filter, JsonSchema, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\n\nimport { Cron, Enabled, Input } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction } from '../util';\n\n// trigger create timer --cron \"0 0 * * *\" --functionId <functionId>\nexport const timer = Command.make(\n 'timer',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n cron: Cron.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const functionId = yield* Option.match(options.functionId, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const fn = functions.find((fn) => fn.id === functionId);\n if (!fn) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n\n const cron = yield* Option.match(options.cron, {\n onNone: () =>\n Prompt.text({\n message: 'Enter cron expression:',\n }).pipe(Prompt.run),\n onSome: (value) => Effect.succeed(value),\n });\n\n const input = yield* Option.match(options.input, {\n onNone: () => promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined),\n onSome: (value) => Effect.succeed(Object.fromEntries(HashMap.toEntries(value))),\n });\n\n // Always prompt for enabled if functionId is not provided.\n const enabled = yield* Option.match(options.functionId, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: true,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(options.enabled),\n });\n\n const trigger = Trigger.make({\n function: Ref.make(fn),\n enabled,\n spec: Trigger.specTimer(cron),\n input,\n });\n\n yield* Database.add(trigger);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Create a timer trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\n\nimport { CommandConfig, Common, printList, spaceIdWithDefault, spaceLayer } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { Context } from '@dxos/context';\nimport { Database, Filter, Query } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\n\nimport { getTriggerRemoteStatus, printTrigger } from './util';\n\nexport const list = Command.make(\n 'list',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n },\n Effect.fn(function* ({ spaceId: spaceIdOption }) {\n const { json } = yield* CommandConfig;\n\n // Fetch local triggers\n const triggers = yield* Database.runQuery(\n Query.select(Filter.type(Trigger.Trigger)).debugLabel('cli.trigger.list'),\n );\n\n // Fetch remote cron triggers to check availability\n const remoteCronIds = yield* Effect.gen(function* () {\n const client = yield* ClientService;\n const spaceId = yield* spaceIdWithDefault(spaceIdOption);\n const result = yield* Effect.promise(() => client.edge.http.getCronTriggers(Context.default(), spaceId)).pipe(\n Effect.catchAll(() => Effect.succeed({ cronIds: [] })),\n );\n return result.cronIds;\n });\n\n // Determine remote status for each trigger\n const triggersWithStatus = triggers.map((trigger) => ({\n trigger,\n remoteStatus: getTriggerRemoteStatus(trigger, remoteCronIds),\n }));\n\n // Print triggers\n if (json) {\n yield* Console.log(\n JSON.stringify(\n triggersWithStatus.map(({ trigger, remoteStatus }) => ({ ...trigger, remoteStatus })),\n null,\n 2,\n ),\n );\n } else {\n if (triggersWithStatus.length === 0) {\n yield* Console.log('No triggers found.');\n } else {\n const items = yield* Effect.all(\n triggersWithStatus.map(({ trigger, remoteStatus }) => printTrigger(trigger, remoteStatus)),\n );\n yield* Console.log(printList(items));\n }\n }\n }),\n).pipe(\n Command.withDescription('List triggers configured on EDGE.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig, Common, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { DXN } from '@dxos/echo';\nimport { Database } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\n\nimport { TriggerId } from './options';\nimport { printTriggerRemoved, selectTrigger } from './util';\n\nexport const remove = Command.make(\n 'remove',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n id: TriggerId.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n const triggerId = yield* Option.match(options.id, {\n onNone: () => selectTrigger(),\n onSome: (id) => Effect.succeed(id),\n });\n const dxn = DXN.fromLocalObjectId(triggerId);\n const trigger = yield* Database.resolve(dxn, Trigger.Trigger);\n yield* Database.remove(trigger);\n if (json) {\n yield* Console.log(JSON.stringify({ id: trigger.id, removed: true }, null, 2));\n } else {\n yield* Console.log(print(printTriggerRemoved(trigger.id)));\n }\n }),\n).pipe(\n Command.withDescription('Remove a trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Trigger.Trigger)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { queue } from './queue';\nimport { subscription } from './subscription';\nimport { timer } from './timer';\n\nexport const update = Command.make('update').pipe(\n Command.withDescription('Update a trigger.'),\n Command.withSubcommands([subscription, timer, queue]),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { DXN, Database, Filter, JsonSchema, Obj, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\n\nimport { Enabled, Input, Queue, TriggerId } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction, selectQueue, selectTrigger } from '../util';\n\nexport const queue = Command.make(\n 'queue',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n id: TriggerId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n queue: Queue.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n const triggerId = yield* Option.match(options.id, {\n onNone: () => selectTrigger('queue'),\n onSome: (id) => Effect.succeed(id),\n });\n const dxn = DXN.fromLocalObjectId(triggerId);\n const trigger = yield* Database.resolve(dxn, Trigger.Trigger);\n if (trigger.spec?.kind !== 'queue') {\n return yield* Effect.fail(new Error(`Invalid trigger type: ${trigger.spec?.kind}`));\n }\n\n const currentFn = yield* updateFunction(trigger, options.functionId);\n yield* updateQueue(trigger, options.queue);\n yield* updateInput(trigger, currentFn, options.input);\n yield* updateEnabled(trigger, options.id, options.enabled);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Update a queue trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n\n/**\n * Handles updating the function for a trigger.\n * Prompts for confirmation if functionId is not provided, then updates the function if confirmed.\n * @returns The current function (either original or newly assigned)\n */\nconst updateFunction = Effect.fn(function* (trigger: Trigger.Trigger, functionIdOption: Option.Option<string>) {\n let currentFn: Operation.PersistentOperation | undefined = trigger.function\n ? yield* Database.load(trigger.function) as any\n : undefined;\n if (currentFn && !Obj.instanceOf(Operation.PersistentOperation, currentFn)) {\n currentFn = undefined;\n }\n const currentFunctionName = currentFn ? (currentFn.name ?? currentFn.id) : undefined;\n const shouldChangeFunction = yield* Option.match(functionIdOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the function${currentFunctionName ? ` (current: ${currentFunctionName})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeFunction) {\n const functionId = yield* Option.match(functionIdOption, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const foundFn = functions.find((fn) => fn.id === functionId);\n if (!foundFn || !Obj.instanceOf(Operation.PersistentOperation, foundFn)) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n Obj.update(trigger, (trigger) => {\n trigger.function = Ref.make(foundFn);\n });\n currentFn = foundFn;\n }\n\n if (!currentFn) {\n const functionId = trigger.function?.dxn.asEchoDXN()?.echoId ?? 'unknown';\n return yield* Effect.fail(new Error(`Invalid reference for ${functionId}`));\n }\n\n return currentFn;\n});\n\n/**\n * Handles updating the queue DXN for a queue trigger.\n * Prompts for confirmation if queue is not provided, then updates the queue if confirmed.\n */\nconst updateQueue = Effect.fn(function* (trigger: Trigger.Trigger, queueOption: Option.Option<DXN>) {\n const currentQueue = trigger.spec?.kind === 'queue' ? trigger.spec.queue : undefined;\n const currentQueueStr = currentQueue\n ? typeof currentQueue === 'string'\n ? currentQueue\n : String(currentQueue)\n : undefined;\n const shouldChangeQueue = yield* Option.match(queueOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the queue${currentQueueStr ? ` (current: ${currentQueueStr})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeQueue) {\n const queueDxn = yield* Option.match(queueOption, {\n onNone: () => selectQueue(),\n onSome: (dxn) => Effect.succeed(dxn.toString()),\n });\n Obj.update(trigger, (trigger) => {\n if (trigger.spec?.kind === 'queue') {\n trigger.spec.queue = queueDxn;\n }\n });\n }\n});\n\n/**\n * Handles updating the input for a trigger.\n * Prompts for confirmation if input is not provided, then updates the input if confirmed.\n */\nconst updateInput = Effect.fn(function* (\n trigger: Trigger.Trigger,\n fn: Operation.PersistentOperation,\n inputOption: Option.Option<Record<string, any>>,\n) {\n const currentInput = trigger.input as Record<string, any> | undefined;\n const currentInputStr = currentInput ? JSON.stringify(currentInput) : 'none';\n const shouldChangeInput = yield* Option.match(inputOption, {\n onNone: () =>\n Effect.gen(function* () {\n yield* Console.log(`Current input: ${currentInputStr}`);\n return yield* Prompt.confirm({\n message: 'Change input?',\n initial: false,\n }).pipe(Prompt.run);\n }),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeInput) {\n const inputObj = yield* Option.match(inputOption, {\n onNone: () =>\n promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined, currentInput),\n onSome: (value) => Effect.succeed(value as Record<string, any>),\n });\n Obj.update(trigger, (trigger) => {\n trigger.input = inputObj;\n });\n }\n});\n\n/**\n * Handles updating the enabled status for a trigger.\n * Prompts for enabled if id is not provided.\n */\nconst updateEnabled = Effect.fn(function* (\n trigger: Trigger.Trigger,\n idOption: Option.Option<string>,\n enabled: boolean,\n) {\n const enabledValue = yield* Option.match(idOption, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: trigger.enabled,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(enabled),\n });\n Obj.update(trigger, (trigger) => {\n trigger.enabled = enabledValue;\n });\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { DXN, Database, Filter, JsonSchema, Obj, Query, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\n\nimport { Deep, Delay, Enabled, Input, TriggerId, Typename } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction, selectTrigger } from '../util';\n\nexport const subscription = Command.make(\n 'subscription',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n id: TriggerId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n typename: Typename.pipe(Options.optional),\n deep: Deep.pipe(Options.optional),\n delay: Delay.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const triggerId = yield* Option.match(options.id, {\n onNone: () => selectTrigger('subscription'),\n onSome: (id) => Effect.succeed(id),\n });\n const dxn = DXN.fromLocalObjectId(triggerId);\n const trigger = yield* Database.resolve(dxn, Trigger.Trigger);\n if (trigger.spec?.kind !== 'subscription') {\n return yield* Effect.fail(new Error(`Invalid trigger type: ${trigger.spec?.kind}`));\n }\n\n const currentFn = yield* updateFunction(trigger, options.functionId);\n yield* updateSpec(trigger, options.typename, options.deep, options.delay);\n yield* updateInput(trigger, currentFn, options.input);\n yield* updateEnabled(trigger, options.id, options.enabled);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Update a subscription trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n\n/**\n * Extracts the current typename from a subscription trigger's query AST.\n */\nconst extractCurrentTypename = (spec: Trigger.SubscriptionSpec | undefined): Option.Option<string> => {\n if (!spec?.query?.ast) {\n return Option.none();\n }\n return Match.value(spec.query.ast).pipe(\n Match.withReturnType<Option.Option<string>>(),\n Match.when({ type: 'select' }, (q) =>\n Match.value(q.filter).pipe(\n Match.withReturnType<Option.Option<string>>(),\n Match.when({ type: 'object' }, (f) =>\n Option.fromNullable(f.typename).pipe(\n Option.flatMap((dxn) => Option.fromNullable(DXN.tryParse(dxn))),\n Option.flatMap((dxn) => Option.fromNullable(dxn.asTypeDXN()?.type)),\n ),\n ),\n Match.orElse(() => Option.none()),\n ),\n ),\n Match.orElse(() => Option.none()),\n );\n};\n\n/**\n * Handles updating the function for a trigger.\n * Prompts for confirmation if functionId is not provided, then updates the function if confirmed.\n * @returns The current function (either original or newly assigned)\n */\nconst updateFunction = Effect.fn(function* (trigger: Trigger.Trigger, functionIdOption: Option.Option<string>) {\n let currentFn: Operation.PersistentOperation | undefined = trigger.function\n ? yield* Database.load(trigger.function) as any\n : undefined;\n if (currentFn && !Obj.instanceOf(Operation.PersistentOperation, currentFn)) {\n currentFn = undefined;\n }\n const currentFunctionName = currentFn ? (currentFn.name ?? currentFn.id) : undefined;\n const shouldChangeFunction = yield* Option.match(functionIdOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the function${currentFunctionName ? ` (current: ${currentFunctionName})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeFunction) {\n const functionId = yield* Option.match(functionIdOption, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const foundFn = functions.find((fn) => fn.id === functionId);\n if (!foundFn || !Obj.instanceOf(Operation.PersistentOperation, foundFn)) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n Obj.update(trigger, (trigger) => {\n trigger.function = Ref.make(foundFn);\n });\n currentFn = foundFn;\n }\n\n if (!currentFn) {\n const functionId = trigger.function?.dxn.asEchoDXN()?.echoId ?? 'unknown';\n return yield* Effect.fail(new Error(`Invalid reference for ${functionId}`));\n }\n\n return currentFn;\n});\n\n/**\n * Handles updating the subscription trigger spec (typename, deep, delay).\n * Prompts for confirmation if no spec options are provided, then updates the spec if confirmed.\n */\nconst updateSpec = Effect.fn(function* (\n trigger: Trigger.Trigger,\n typenameOption: Option.Option<string>,\n deepOption: Option.Option<boolean>,\n delayOption: Option.Option<number>,\n) {\n const currentSpec = trigger.spec?.kind === 'subscription' ? trigger.spec : undefined;\n const currentTypename = extractCurrentTypename(currentSpec);\n const currentTypenameStr = Option.getOrUndefined(currentTypename);\n const currentDeep = currentSpec?.options?.deep;\n const currentDelay = currentSpec?.options?.delay;\n const specParts: string[] = [];\n if (currentTypenameStr) {\n specParts.push(`typename: ${currentTypenameStr}`);\n }\n if (currentDeep !== undefined) {\n specParts.push(`deep: ${currentDeep}`);\n }\n if (currentDelay !== undefined) {\n specParts.push(`delay: ${currentDelay}`);\n }\n const currentSpecStr = specParts.length > 0 ? specParts.join(', ') : 'none';\n\n const hasSpecOption = Option.isSome(typenameOption) || Option.isSome(deepOption) || Option.isSome(delayOption);\n const shouldChangeSpec = yield* hasSpecOption\n ? Effect.succeed(true)\n : Prompt.confirm({\n message: `Change the trigger spec (current: ${currentSpecStr})?`,\n initial: false,\n }).pipe(Prompt.run);\n if (shouldChangeSpec) {\n const typename = yield* Option.match(typenameOption, {\n onNone: () =>\n Prompt.text({\n message: `Enter type name${currentTypenameStr ? ` (current: ${currentTypenameStr})` : ''}:`,\n }).pipe(Prompt.run),\n onSome: (value) => Effect.succeed(value),\n });\n const queryAst = Query.select(Filter.type(typename)).ast;\n\n const deepOptionValue = yield* Option.match(deepOption, {\n onNone: () =>\n Prompt.confirm({\n message: 'Watch changes to nested properties (deep)?',\n initial: currentSpec?.options?.deep ?? false,\n }).pipe(\n Prompt.run,\n Effect.map((value) => (value ? Option.some(value) : Option.none())),\n ),\n onSome: () => Effect.succeed(Option.some(true)),\n });\n\n const delayOptionValue = yield* Option.match(delayOption, {\n onNone: () =>\n Effect.gen(function* () {\n const currentDelay = currentSpec?.options?.delay;\n const delayStr = yield* Prompt.text({\n message: `Debounce delay in milliseconds (optional, press Enter to skip)${currentDelay ? ` (current: ${currentDelay})` : ''}:`,\n }).pipe(Prompt.run);\n return delayStr === '' ? Option.none<number>() : Option.some(parseInt(delayStr, 10));\n }),\n onSome: (value) => Effect.succeed(Option.some(value)),\n });\n\n const subscriptionOptions: { deep?: boolean; delay?: number } = {};\n if (Option.isSome(deepOptionValue)) {\n subscriptionOptions.deep = deepOptionValue.value;\n }\n if (Option.isSome(delayOptionValue)) {\n subscriptionOptions.delay = delayOptionValue.value;\n }\n\n Obj.update(trigger, (trigger) => {\n const spec = trigger.spec;\n if (spec?.kind === 'subscription') {\n // Cast needed because QueryAST types are deeply readonly but spec.query expects mutable.\n spec.query = { ast: queryAst } as NonNullable<typeof spec.query>;\n spec.options = Object.keys(subscriptionOptions).length > 0 ? subscriptionOptions : undefined;\n }\n });\n }\n});\n\n/**\n * Handles updating the input for a trigger.\n * Prompts for confirmation if input is not provided, then updates the input if confirmed.\n */\nconst updateInput = Effect.fn(function* (\n trigger: Trigger.Trigger,\n fn: Operation.PersistentOperation,\n inputOption: Option.Option<Record<string, any>>,\n) {\n const currentInput = trigger.input as Record<string, any> | undefined;\n const currentInputStr = currentInput ? JSON.stringify(currentInput) : 'none';\n const shouldChangeInput = yield* Option.match(inputOption, {\n onNone: () =>\n Effect.gen(function* () {\n yield* Console.log(`Current input: ${currentInputStr}`);\n return yield* Prompt.confirm({\n message: 'Change input?',\n initial: false,\n }).pipe(Prompt.run);\n }),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeInput) {\n const inputObj = yield* Option.match(inputOption, {\n onNone: () =>\n promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined, currentInput),\n onSome: (value) => Effect.succeed(value as Record<string, any>),\n });\n Obj.update(trigger, (trigger) => {\n trigger.input = inputObj;\n });\n }\n});\n\n/**\n * Handles updating the enabled status for a trigger.\n * Prompts for enabled if id is not provided.\n */\nconst updateEnabled = Effect.fn(function* (\n trigger: Trigger.Trigger,\n idOption: Option.Option<string>,\n enabled: boolean,\n) {\n const enabledValue = yield* Option.match(idOption, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: trigger.enabled,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(enabled),\n });\n Obj.update(trigger, (trigger) => {\n trigger.enabled = enabledValue;\n });\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { DXN, Database, Filter, JsonSchema, Obj, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\n\nimport { Cron, Enabled, Input, TriggerId } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction, selectTrigger } from '../util';\n\nexport const timer = Command.make(\n 'timer',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n id: TriggerId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n cron: Cron.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const triggerId = yield* Option.match(options.id, {\n onNone: () => selectTrigger('timer'),\n onSome: (id) => Effect.succeed(id),\n });\n const dxn = DXN.fromLocalObjectId(triggerId);\n const trigger = yield* Database.resolve(dxn, Trigger.Trigger);\n if (!trigger.spec || trigger.spec?.kind !== 'timer') {\n return yield* Effect.fail(new Error(`Invalid trigger type: ${trigger.spec?.kind}`));\n }\n\n const currentFn = yield* updateFunction(trigger, options.functionId);\n yield* updateCron(trigger, options.cron);\n yield* updateInput(trigger, currentFn, options.input);\n yield* updateEnabled(trigger, options.id, options.enabled);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Update a timer trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n\n/**\n * Handles updating the function for a trigger.\n * Prompts for confirmation if functionId is not provided, then updates the function if confirmed.\n * @returns The current function (either original or newly assigned)\n */\nconst updateFunction = Effect.fn(function* (trigger: Trigger.Trigger, functionIdOption: Option.Option<string>) {\n let currentFn: Operation.PersistentOperation | undefined = trigger.function\n ? yield* Database.load(trigger.function) as any\n : undefined;\n if (currentFn && !Obj.instanceOf(Operation.PersistentOperation, currentFn)) {\n currentFn = undefined;\n }\n const currentFunctionName = currentFn ? (currentFn.name ?? currentFn.id) : undefined;\n const shouldChangeFunction = yield* Option.match(functionIdOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the function${currentFunctionName ? ` (current: ${currentFunctionName})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeFunction) {\n const functionId = yield* Option.match(functionIdOption, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const foundFn = functions.find((fn) => fn.id === functionId);\n if (!foundFn || !Obj.instanceOf(Operation.PersistentOperation, foundFn)) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n Obj.update(trigger, (trigger) => {\n trigger.function = Ref.make(foundFn);\n });\n currentFn = foundFn;\n }\n\n if (!currentFn) {\n const functionId = trigger.function?.dxn.asEchoDXN()?.echoId ?? 'unknown';\n return yield* Effect.fail(new Error(`Invalid reference for ${functionId}`));\n }\n\n return currentFn;\n});\n\n/**\n * Handles updating the cron expression for a timer trigger.\n * Prompts for confirmation if cron is not provided, then updates the cron if confirmed.\n */\nconst updateCron = Effect.fn(function* (trigger: Trigger.Trigger, cronOption: Option.Option<string>) {\n const currentCron = trigger.spec?.kind === 'timer' ? trigger.spec.cron : undefined;\n const shouldChangeCron = yield* Option.match(cronOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the cron expression${currentCron ? ` (current: ${currentCron})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeCron) {\n const cron = yield* Option.match(cronOption, {\n onNone: () =>\n Prompt.text({\n message: `Enter cron expression${currentCron ? ` (current: ${currentCron})` : ''}:`,\n }).pipe(Prompt.run),\n onSome: (value) => Effect.succeed(value),\n });\n Obj.update(trigger, (trigger) => {\n if (trigger.spec?.kind === 'timer') {\n trigger.spec.cron = cron;\n }\n });\n }\n});\n\n/**\n * Handles updating the input for a trigger.\n * Prompts for confirmation if input is not provided, then updates the input if confirmed.\n */\nconst updateInput = Effect.fn(function* (\n trigger: Trigger.Trigger,\n fn: Operation.PersistentOperation,\n inputOption: Option.Option<Record<string, any>>,\n) {\n const currentInput = trigger.input as Record<string, any> | undefined;\n const currentInputStr = currentInput ? JSON.stringify(currentInput) : 'none';\n const shouldChangeInput = yield* Option.match(inputOption, {\n onNone: () =>\n Effect.gen(function* () {\n yield* Console.log(`Current input: ${currentInputStr}`);\n return yield* Prompt.confirm({\n message: 'Change input?',\n initial: false,\n }).pipe(Prompt.run);\n }),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeInput) {\n const inputObj = yield* Option.match(inputOption, {\n onNone: () =>\n promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined, currentInput),\n onSome: (value) => Effect.succeed(value as Record<string, any>),\n });\n Obj.update(trigger, (trigger) => {\n trigger.input = inputObj;\n });\n }\n});\n\n/**\n * Handles updating the enabled status for a trigger.\n * Prompts for enabled if id is not provided.\n */\nconst updateEnabled = Effect.fn(function* (\n trigger: Trigger.Trigger,\n idOption: Option.Option<string>,\n enabled: boolean,\n) {\n const enabledValue = yield* Option.match(idOption, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: trigger.enabled,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(enabled),\n });\n Obj.update(trigger, (trigger) => {\n trigger.enabled = enabledValue;\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "ClientEvents", "ComputeRuntime", "meta", "AutomationEvents", "Command", "Command", "Command", "Options", "Prompt", "Console", "Effect", "HashMap", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Database", "Filter", "JsonSchema", "Ref", "Trigger", "Operation", "Options", "Schema", "DXN", "TriggerId", "text", "pipe", "withDescription", "Enabled", "boolean", "ifPresent", "Input", "keyValueMap", "Typename", "Deep", "Delay", "integer", "Cron", "DXNSchema", "String", "transform", "instanceOf", "decode", "value", "parse", "encode", "toString", "Queue", "withSchema", "Prompt", "Ansi", "Console", "Effect", "Match", "Option", "SchemaAST", "FormBuilder", "Annotation", "Database", "Entity", "Feed", "Filter", "Obj", "Query", "Ref", "Type", "getProperties", "Trigger", "Operation", "FeedAnnotation", "getTriggerRemoteStatus", "trigger", "remoteCronIds", "spec", "kind", "includes", "id", "printTrigger", "fn", "remoteStatus", "function", "load", "make", "title", "pipe", "set", "enabled", "green", "blackBright", "option", "fromNullable", "type", "withReturnType", "when", "yellow", "exhaustive", "nest", "key", "getDXN", "toString", "nestedOption", "map", "printSpec", "build", "printTimer", "printSubscription", "printWebhook", "printQueue", "cron", "query", "raw", "method", "port", "queue", "promptForSchemaInput", "schema", "defaults", "ast", "isTypeLiteral", "properties", "length", "requiredProperties", "optionalProperties", "prop", "isOptional", "push", "propertyInfo", "name", "isRequired", "selectedKeys", "Set", "info", "add", "requiredNames", "p", "find", "i", "log", "join", "optionalInfo", "filter", "choices", "hasDefault", "undefined", "defaultText", "JSON", "stringify", "value", "description", "selected", "multiSelect", "message", "String", "size", "inputObj", "has", "propType", "schemaDefault", "getOrUndefined", "getDefaultAnnotation", "defaultValue", "isBooleanKeyword", "initialValue", "confirm", "initial", "isNumberKeyword", "currentValue", "valueStr", "text", "run", "parseFloat", "isStringKeyword", "isRefType", "isDefaultTemplate", "startsWith", "endsWith", "useTemplate", "templateStr", "annotation", "ReferenceAnnotation", "getFromAst", "getOrThrow", "objects", "runQuery", "typename", "select", "obj", "getLabel", "getDescription", "selectFunction", "functions", "PersistentOperation", "fail", "Error", "selectTrigger", "triggers", "debugLabel", "filteredTriggers", "all", "gen", "functionName", "instanceOf", "selectQueue", "schemas", "runSchemaQuery", "location", "feedSchemas", "get", "isSome", "queueChoices", "getTypename", "feedRef", "feed", "feedObj", "promise", "tryLoad", "queueDxn", "getQueueDxn", "label", "catchAll", "void", "printTriggerRemoved", "queue", "make", "spaceId", "Common", "pipe", "optional", "enabled", "Enabled", "functionId", "Queue", "input", "Input", "options", "gen", "json", "CommandConfig", "match", "onNone", "selectFunction", "onSome", "id", "succeed", "functions", "Database", "runQuery", "Filter", "type", "Operation", "PersistentOperation", "fn", "find", "fail", "Error", "queueDxn", "selectQueue", "dxn", "toString", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "undefined", "value", "Object", "fromEntries", "toEntries", "confirm", "message", "initial", "run", "trigger", "Trigger", "function", "Ref", "spec", "specQueue", "add", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Command", "Options", "Prompt", "Console", "Effect", "HashMap", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Database", "Filter", "JsonSchema", "Query", "Ref", "Trigger", "Operation", "subscription", "make", "spaceId", "Common", "pipe", "optional", "enabled", "Enabled", "functionId", "typename", "Typename", "deep", "Deep", "delay", "Delay", "input", "Input", "options", "gen", "json", "CommandConfig", "match", "onNone", "selectFunction", "onSome", "id", "succeed", "functions", "Database", "runQuery", "Filter", "type", "Operation", "PersistentOperation", "fn", "find", "fail", "Error", "text", "message", "run", "value", "subscriptionQuery", "Query", "select", "deepOption", "confirm", "initial", "map", "some", "none", "delayOption", "delayStr", "parseInt", "subscriptionOptions", "isSome", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "undefined", "Object", "fromEntries", "toEntries", "trigger", "Trigger", "function", "Ref", "spec", "specSubscription", "keys", "length", "add", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Command", "Options", "Prompt", "Console", "Effect", "HashMap", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Database", "Filter", "JsonSchema", "Ref", "Trigger", "Operation", "timer", "make", "spaceId", "Common", "pipe", "optional", "enabled", "Enabled", "functionId", "cron", "Cron", "input", "Input", "options", "gen", "json", "CommandConfig", "match", "onNone", "selectFunction", "onSome", "id", "succeed", "functions", "Database", "runQuery", "Filter", "type", "Operation", "PersistentOperation", "fn", "find", "fail", "Error", "text", "message", "run", "value", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "undefined", "Object", "fromEntries", "toEntries", "confirm", "initial", "trigger", "Trigger", "function", "Ref", "spec", "specTimer", "add", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "create", "make", "pipe", "withDescription", "withSubcommands", "subscription", "timer", "queue", "Command", "Options", "Console", "Effect", "CommandConfig", "Common", "printList", "spaceIdWithDefault", "spaceLayer", "ClientService", "Context", "Database", "Filter", "Query", "Trigger", "list", "Effect", "spaceId", "spaceIdOption", "json", "CommandConfig", "triggers", "Database", "remoteCronIds", "Query", "Filter", "Trigger", "spaceIdWithDefault", "result", "cronIds", "getTriggerRemoteStatus", "trigger", "remoteStatus", "triggersWithStatus", "Command", "Options", "Console", "Effect", "Option", "CommandConfig", "Common", "print", "spaceLayer", "withTypes", "DXN", "Database", "Trigger", "remove", "make", "spaceId", "Common", "pipe", "optional", "id", "TriggerId", "options", "gen", "json", "CommandConfig", "triggerId", "match", "onNone", "selectTrigger", "onSome", "succeed", "dxn", "DXN", "fromLocalObjectId", "trigger", "Database", "resolve", "Trigger", "log", "JSON", "stringify", "removed", "print", "printTriggerRemoved", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Command", "Command", "Options", "Prompt", "Console", "Effect", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "DXN", "Database", "Filter", "JsonSchema", "Obj", "Ref", "Trigger", "Operation", "queue", "make", "spaceId", "Common", "pipe", "optional", "id", "TriggerId", "enabled", "Enabled", "functionId", "Queue", "input", "Input", "options", "gen", "json", "CommandConfig", "triggerId", "match", "onNone", "selectTrigger", "onSome", "succeed", "dxn", "DXN", "fromLocalObjectId", "trigger", "Database", "resolve", "Trigger", "spec", "kind", "fail", "Error", "currentFn", "updateFunction", "updateQueue", "updateInput", "updateEnabled", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Operation", "PersistentOperation", "fn", "functionIdOption", "function", "load", "undefined", "Obj", "instanceOf", "currentFunctionName", "name", "shouldChangeFunction", "confirm", "message", "initial", "run", "selectFunction", "functions", "runQuery", "Filter", "type", "foundFn", "find", "update", "Ref", "asEchoDXN", "echoId", "queueOption", "currentQueue", "currentQueueStr", "String", "shouldChangeQueue", "queueDxn", "selectQueue", "toString", "inputOption", "currentInput", "currentInputStr", "shouldChangeInput", "inputObj", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "value", "idOption", "enabledValue", "Command", "Options", "Prompt", "Console", "Effect", "Match", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "DXN", "Database", "Filter", "JsonSchema", "Obj", "Query", "Ref", "Trigger", "Operation", "subscription", "make", "spaceId", "Common", "pipe", "optional", "id", "TriggerId", "enabled", "Enabled", "functionId", "typename", "Typename", "deep", "Deep", "delay", "Delay", "input", "Input", "options", "gen", "json", "CommandConfig", "triggerId", "match", "onNone", "selectTrigger", "onSome", "succeed", "dxn", "DXN", "fromLocalObjectId", "trigger", "Database", "resolve", "Trigger", "spec", "kind", "fail", "Error", "currentFn", "updateFunction", "updateSpec", "updateInput", "updateEnabled", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Operation", "PersistentOperation", "extractCurrentTypename", "query", "ast", "none", "value", "withReturnType", "when", "type", "q", "filter", "f", "fromNullable", "flatMap", "tryParse", "asTypeDXN", "orElse", "fn", "functionIdOption", "function", "load", "undefined", "Obj", "instanceOf", "currentFunctionName", "name", "shouldChangeFunction", "confirm", "message", "initial", "run", "selectFunction", "functions", "runQuery", "Filter", "foundFn", "find", "update", "Ref", "asEchoDXN", "echoId", "typenameOption", "deepOption", "delayOption", "currentSpec", "currentTypename", "currentTypenameStr", "getOrUndefined", "currentDeep", "currentDelay", "specParts", "push", "currentSpecStr", "length", "join", "hasSpecOption", "isSome", "shouldChangeSpec", "text", "queryAst", "Query", "select", "deepOptionValue", "map", "some", "delayOptionValue", "delayStr", "parseInt", "subscriptionOptions", "Object", "keys", "inputOption", "currentInput", "currentInputStr", "shouldChangeInput", "inputObj", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "idOption", "enabledValue", "Command", "Options", "Prompt", "Console", "Effect", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "DXN", "Database", "Filter", "JsonSchema", "Obj", "Ref", "Trigger", "Operation", "timer", "make", "spaceId", "Common", "pipe", "optional", "id", "TriggerId", "enabled", "Enabled", "functionId", "cron", "Cron", "input", "Input", "options", "gen", "json", "CommandConfig", "triggerId", "match", "onNone", "selectTrigger", "onSome", "succeed", "dxn", "DXN", "fromLocalObjectId", "trigger", "Database", "resolve", "Trigger", "spec", "kind", "fail", "Error", "currentFn", "updateFunction", "updateCron", "updateInput", "updateEnabled", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Operation", "PersistentOperation", "fn", "functionIdOption", "function", "load", "undefined", "Obj", "instanceOf", "currentFunctionName", "name", "shouldChangeFunction", "confirm", "message", "initial", "run", "selectFunction", "functions", "runQuery", "Filter", "type", "foundFn", "find", "update", "Ref", "asEchoDXN", "echoId", "cronOption", "currentCron", "shouldChangeCron", "text", "value", "inputOption", "currentInput", "currentInputStr", "shouldChangeInput", "inputObj", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "idOption", "enabledValue", "update", "make", "pipe", "withDescription", "withSubcommands", "subscription", "timer", "queue", "trigger", "make", "pipe", "withDescription", "withSubcommands", "create", "list", "remove", "update", "AutomationPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addCommandModule", "commands", "trigger", "addModule", "activatesOn", "ClientEvents", "ClientReady", "firesAfterActivation", "AutomationEvents", "ComputeRuntimeReady", "activate", "ComputeRuntime", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
CreateTriggerFromTemplate
|
|
4
|
+
} from "./chunk-TR5BMZG5.mjs";
|
|
5
|
+
import "./chunk-7I6EPBJI.mjs";
|
|
6
|
+
import "./chunk-HSLMI22Q.mjs";
|
|
7
|
+
|
|
8
|
+
// src/operations/create-trigger-from-template.ts
|
|
9
|
+
import * as Effect from "effect/Effect";
|
|
10
|
+
import { LayoutOperation, getSpacePath } from "@dxos/app-toolkit";
|
|
11
|
+
import { Obj, Ref } from "@dxos/echo";
|
|
12
|
+
import { Script, Trigger } from "@dxos/functions";
|
|
13
|
+
import { Operation } from "@dxos/operation";
|
|
14
|
+
import { SpaceOperation } from "@dxos/plugin-space/operations";
|
|
15
|
+
import { Filter } from "@dxos/react-client/echo";
|
|
16
|
+
import { meta } from "#meta";
|
|
17
|
+
var handler = CreateTriggerFromTemplate.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ db, template, enabled = false, scriptName, input }) {
|
|
18
|
+
const trigger = Trigger.make({
|
|
19
|
+
enabled,
|
|
20
|
+
input
|
|
21
|
+
});
|
|
22
|
+
if (scriptName) {
|
|
23
|
+
const scripts = yield* Effect.promise(() => db.query(Filter.type(Script.Script, {
|
|
24
|
+
name: scriptName
|
|
25
|
+
})).run());
|
|
26
|
+
const [script] = scripts;
|
|
27
|
+
if (script) {
|
|
28
|
+
const functions = yield* Effect.promise(() => db.query(Filter.type(Operation.PersistentOperation, {
|
|
29
|
+
source: Ref.make(script)
|
|
30
|
+
})).run());
|
|
31
|
+
const [fn] = functions;
|
|
32
|
+
if (fn) {
|
|
33
|
+
Obj.update(trigger, (trigger2) => {
|
|
34
|
+
trigger2.function = Ref.make(fn);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
switch (template.type) {
|
|
40
|
+
case "timer": {
|
|
41
|
+
Obj.update(trigger, (trigger2) => {
|
|
42
|
+
trigger2.spec = Trigger.specTimer(template.cron);
|
|
43
|
+
});
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
case "queue": {
|
|
47
|
+
Obj.update(trigger, (trigger2) => {
|
|
48
|
+
trigger2.spec = Trigger.specQueue(template.queueDXN.toString());
|
|
49
|
+
});
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
default: {
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
57
|
+
object: trigger,
|
|
58
|
+
target: db,
|
|
59
|
+
hidden: true
|
|
60
|
+
});
|
|
61
|
+
yield* Operation.invoke(LayoutOperation.Open, {
|
|
62
|
+
subject: [
|
|
63
|
+
`${getSpacePath(db.spaceId)}/settings/${meta.id}.automations`
|
|
64
|
+
],
|
|
65
|
+
workspace: getSpacePath(db.spaceId)
|
|
66
|
+
});
|
|
67
|
+
})));
|
|
68
|
+
var create_trigger_from_template_default = handler;
|
|
69
|
+
export {
|
|
70
|
+
create_trigger_from_template_default as default
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=create-trigger-from-template-GE76I6FE.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/create-trigger-from-template.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';\nimport { Obj, Ref } from '@dxos/echo';\nimport { Script, Trigger } from '@dxos/functions';\nimport { type DXN } from '@dxos/keys';\nimport { Operation } from '@dxos/operation';\nimport { SpaceOperation } from '@dxos/plugin-space/operations';\nimport { Filter } from '@dxos/react-client/echo';\n\nimport { meta } from '#meta';\n\nimport { CreateTriggerFromTemplate } from './definitions';\n\nconst handler: Operation.WithHandler<typeof CreateTriggerFromTemplate> = CreateTriggerFromTemplate.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ db, template, enabled = false, scriptName, input }) {\n const trigger = Trigger.make({ enabled, input });\n\n // TODO(wittjosiah): Factor out function lookup by script name?\n if (scriptName) {\n const scripts = yield* Effect.promise(() => db.query(Filter.type(Script.Script, { name: scriptName })).run());\n const [script] = scripts;\n if (script) {\n const functions = yield* Effect.promise(() =>\n db.query(Filter.type(Operation.PersistentOperation, { source: Ref.make(script) })).run(),\n );\n const [fn] = functions;\n if (fn) {\n Obj.update(trigger, (trigger) => {\n trigger.function = Ref.make(fn);\n });\n }\n }\n }\n\n switch (template.type) {\n case 'timer': {\n Obj.update(trigger, (trigger) => {\n trigger.spec = Trigger.specTimer(template.cron);\n });\n break;\n }\n case 'queue': {\n Obj.update(trigger, (trigger) => {\n trigger.spec = Trigger.specQueue((template.queueDXN as DXN).toString());\n });\n break;\n }\n default: {\n break;\n }\n }\n\n yield* Operation.invoke(SpaceOperation.AddObject, {\n object: trigger,\n target: db,\n hidden: true,\n });\n yield* Operation.invoke(LayoutOperation.Open, {\n subject: [`${getSpacePath(db.spaceId)}/settings/${meta.id}.automations`],\n workspace: getSpacePath(db.spaceId),\n });\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiBC,oBAAoB;AAC9C,SAASC,KAAKC,WAAW;AACzB,SAASC,QAAQC,eAAe;AAEhC,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,cAAc;AAEvB,SAASC,YAAY;AAIrB,IAAMC,UAAmEC,0BAA0BC,KACjGC,UAAUC,YACDC,kBAAW,WAAW,EAAEC,IAAIC,UAAUC,UAAU,OAAOC,YAAYC,MAAK,GAAE;AAC/E,QAAMC,UAAUC,QAAQC,KAAK;IAAEL;IAASE;EAAM,CAAA;AAG9C,MAAID,YAAY;AACd,UAAMK,UAAU,OAAcC,eAAQ,MAAMT,GAAGU,MAAMC,OAAOC,KAAKC,OAAOA,QAAQ;MAAEC,MAAMX;IAAW,CAAA,CAAA,EAAIY,IAAG,CAAA;AAC1G,UAAM,CAACC,MAAAA,IAAUR;AACjB,QAAIQ,QAAQ;AACV,YAAMC,YAAY,OAAcR,eAAQ,MACtCT,GAAGU,MAAMC,OAAOC,KAAKf,UAAUqB,qBAAqB;QAAEC,QAAQC,IAAIb,KAAKS,MAAAA;MAAQ,CAAA,CAAA,EAAID,IAAG,CAAA;AAExF,YAAM,CAACM,EAAAA,IAAMJ;AACb,UAAII,IAAI;AACNC,YAAIC,OAAOlB,SAAS,CAACA,aAAAA;AACnBA,UAAAA,SAAQmB,WAAWJ,IAAIb,KAAKc,EAAAA;QAC9B,CAAA;MACF;IACF;EACF;AAEA,UAAQpB,SAASW,MAAI;IACnB,KAAK,SAAS;AACZU,UAAIC,OAAOlB,SAAS,CAACA,aAAAA;AACnBA,QAAAA,SAAQoB,OAAOnB,QAAQoB,UAAUzB,SAAS0B,IAAI;MAChD,CAAA;AACA;IACF;IACA,KAAK,SAAS;AACZL,UAAIC,OAAOlB,SAAS,CAACA,aAAAA;AACnBA,QAAAA,SAAQoB,OAAOnB,QAAQsB,UAAW3B,SAAS4B,SAAiBC,SAAQ,CAAA;MACtE,CAAA;AACA;IACF;IACA,SAAS;AACP;IACF;EACF;AAEA,SAAOjC,UAAUkC,OAAOC,eAAeC,WAAW;IAChDC,QAAQ7B;IACR8B,QAAQnC;IACRoC,QAAQ;EACV,CAAA;AACA,SAAOvC,UAAUkC,OAAOM,gBAAgBC,MAAM;IAC5CC,SAAS;MAAC,GAAGC,aAAaxC,GAAGyC,OAAO,CAAA,aAAcC,KAAKC,EAAE;;IACzDC,WAAWJ,aAAaxC,GAAGyC,OAAO;EACpC,CAAA;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,uCAAe/C;",
|
|
6
|
+
"names": ["Effect", "LayoutOperation", "getSpacePath", "Obj", "Ref", "Script", "Trigger", "Operation", "SpaceOperation", "Filter", "meta", "handler", "CreateTriggerFromTemplate", "pipe", "Operation", "withHandler", "fnUntraced", "db", "template", "enabled", "scriptName", "input", "trigger", "Trigger", "make", "scripts", "promise", "query", "Filter", "type", "Script", "name", "run", "script", "functions", "PersistentOperation", "source", "Ref", "fn", "Obj", "update", "function", "spec", "specTimer", "cron", "specQueue", "queueDXN", "toString", "invoke", "SpaceOperation", "AddObject", "object", "target", "hidden", "LayoutOperation", "Open", "subject", "getSpacePath", "spaceId", "meta", "id", "workspace"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
AutomationCapabilities
|
|
4
|
+
} from "../chunk-7I6EPBJI.mjs";
|
|
5
|
+
import "../chunk-HSLMI22Q.mjs";
|
|
6
|
+
|
|
7
|
+
// src/hooks/useComputeRuntimeCallback.ts
|
|
8
|
+
import { useCallback } from "react";
|
|
9
|
+
|
|
10
|
+
// src/hooks/useComputeRuntime.ts
|
|
11
|
+
import { useEffect } from "react";
|
|
12
|
+
import { useCapabilities } from "@dxos/app-framework/ui";
|
|
13
|
+
import { log } from "@dxos/log";
|
|
14
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/hooks/useComputeRuntime.ts";
|
|
15
|
+
var useComputeRuntime = (id) => {
|
|
16
|
+
const [computeRuntime] = useCapabilities(AutomationCapabilities.ComputeRuntime);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
log("useComputeRuntime", {
|
|
19
|
+
hasCapability: !!computeRuntime,
|
|
20
|
+
spaceId: id
|
|
21
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 16, S: void 0 });
|
|
22
|
+
}, [
|
|
23
|
+
!!computeRuntime,
|
|
24
|
+
id
|
|
25
|
+
]);
|
|
26
|
+
if (!computeRuntime || id === void 0) {
|
|
27
|
+
return void 0;
|
|
28
|
+
}
|
|
29
|
+
return computeRuntime.getRuntime(id);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// src/hooks/useComputeRuntimeCallback.ts
|
|
33
|
+
var useComputeRuntimeCallback = (id, fn, deps) => {
|
|
34
|
+
const runtime = useComputeRuntime(id);
|
|
35
|
+
return useCallback(() => {
|
|
36
|
+
if (!runtime) {
|
|
37
|
+
throw new TypeError("Space not provided to useComputeRuntimeCallback");
|
|
38
|
+
}
|
|
39
|
+
return runtime.runPromise(fn());
|
|
40
|
+
}, [
|
|
41
|
+
runtime,
|
|
42
|
+
...deps ?? []
|
|
43
|
+
]);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// src/hooks/useTriggerRuntimeControls.ts
|
|
47
|
+
import { Atom, useAtomValue } from "@effect-atom/atom-react";
|
|
48
|
+
import * as Effect from "effect/Effect";
|
|
49
|
+
import { useEffect as useEffect2, useState } from "react";
|
|
50
|
+
import { Filter, Query } from "@dxos/echo";
|
|
51
|
+
import { Trigger } from "@dxos/functions";
|
|
52
|
+
import { TriggerDispatcher } from "@dxos/functions-runtime";
|
|
53
|
+
import { useQuery } from "@dxos/react-client/echo";
|
|
54
|
+
var useTriggerRuntimeControls = (db) => {
|
|
55
|
+
const triggers = useQuery(db, Query.select(Filter.type(Trigger.Trigger)).debugLabel("plugin-automation.useTriggerRuntimeControls"));
|
|
56
|
+
const [dispatcher, setDispatcher] = useState(void 0);
|
|
57
|
+
const init = useComputeRuntimeCallback(db?.spaceId, Effect.fnUntraced(function* () {
|
|
58
|
+
const dispatcher2 = yield* TriggerDispatcher;
|
|
59
|
+
setDispatcher(dispatcher2);
|
|
60
|
+
}));
|
|
61
|
+
useEffect2(() => {
|
|
62
|
+
void init();
|
|
63
|
+
}, []);
|
|
64
|
+
const state = useAtomValue(dispatcher?.state ?? Atom.make(void 0));
|
|
65
|
+
const start = useComputeRuntimeCallback(db?.spaceId, Effect.fnUntraced(function* () {
|
|
66
|
+
const dispatcher2 = yield* TriggerDispatcher;
|
|
67
|
+
yield* dispatcher2.start();
|
|
68
|
+
}));
|
|
69
|
+
const stop = useComputeRuntimeCallback(db?.spaceId, Effect.fnUntraced(function* () {
|
|
70
|
+
const dispatcher2 = yield* TriggerDispatcher;
|
|
71
|
+
yield* dispatcher2.stop();
|
|
72
|
+
}));
|
|
73
|
+
return {
|
|
74
|
+
triggers,
|
|
75
|
+
state,
|
|
76
|
+
start: () => void start(),
|
|
77
|
+
stop: () => void stop()
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// src/hooks/useComputeRuntimeService.ts
|
|
82
|
+
import * as Effect2 from "effect/Effect";
|
|
83
|
+
import * as Exit from "effect/Exit";
|
|
84
|
+
import { useEffect as useEffect3, useState as useState2 } from "react";
|
|
85
|
+
import { log as log2 } from "@dxos/log";
|
|
86
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/hooks/useComputeRuntimeService.ts";
|
|
87
|
+
var useComputeRuntimeService = (tag, spaceId) => {
|
|
88
|
+
const runtime = useComputeRuntime(spaceId);
|
|
89
|
+
const [service, setService] = useState2(void 0);
|
|
90
|
+
useEffect3(() => {
|
|
91
|
+
setService(void 0);
|
|
92
|
+
if (!runtime) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
let cancelled = false;
|
|
96
|
+
void (async () => {
|
|
97
|
+
try {
|
|
98
|
+
const exit = await runtime.runPromiseExit(tag.pipe(Effect2.timeout("30 seconds")));
|
|
99
|
+
if (cancelled) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (Exit.isSuccess(exit)) {
|
|
103
|
+
setService(exit.value);
|
|
104
|
+
} else {
|
|
105
|
+
log2.warn("useComputeRuntimeService: failed to acquire service", {
|
|
106
|
+
cause: exit.cause
|
|
107
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 37, S: void 0 });
|
|
108
|
+
}
|
|
109
|
+
} catch (error) {
|
|
110
|
+
if (!cancelled) {
|
|
111
|
+
log2.catch(error, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 43, S: void 0 });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
})();
|
|
115
|
+
return () => {
|
|
116
|
+
cancelled = true;
|
|
117
|
+
};
|
|
118
|
+
}, [
|
|
119
|
+
runtime,
|
|
120
|
+
tag
|
|
121
|
+
]);
|
|
122
|
+
return service;
|
|
123
|
+
};
|
|
124
|
+
export {
|
|
125
|
+
useComputeRuntime,
|
|
126
|
+
useComputeRuntimeCallback,
|
|
127
|
+
useComputeRuntimeService,
|
|
128
|
+
useTriggerRuntimeControls
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/hooks/useComputeRuntimeCallback.ts", "../../../../src/hooks/useComputeRuntime.ts", "../../../../src/hooks/useTriggerRuntimeControls.ts", "../../../../src/hooks/useComputeRuntimeService.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport { type DependencyList, useCallback } from 'react';\n\nimport { type Key } from '@dxos/echo';\n\nimport { AutomationCapabilities } from '#types';\n\nimport { useComputeRuntime } from './useComputeRuntime';\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 id: Key.SpaceId | undefined,\n fn: () => Effect.Effect<T, any, AutomationCapabilities.ComputeServices>,\n deps?: DependencyList,\n): (() => Promise<T>) => {\n const runtime = useComputeRuntime(id);\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// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { AutomationCapabilities } from '../types';\n\n/**\n * Resolves the compute runtime for a space.\n * Returns undefined if the AutomationPlugin is not loaded or spaceId is not provided.\n */\nexport const useComputeRuntime = (id: SpaceId | undefined): AutomationCapabilities.ComputeRuntime | undefined => {\n const [computeRuntime] = useCapabilities(AutomationCapabilities.ComputeRuntime);\n // One log per change of (capability availability, spaceId) so we can see when\n // the React subscription actually observes the contributed runtime.\n useEffect(() => {\n log('useComputeRuntime', { hasCapability: !!computeRuntime, spaceId: id });\n }, [!!computeRuntime, id]);\n\n if (!computeRuntime || id === undefined) {\n return undefined;\n }\n\n return computeRuntime.getRuntime(id);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, useAtomValue } from '@effect-atom/atom-react';\nimport type * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, Filter, Query } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { TriggerDispatcher, type TriggerDispatcherState } from '@dxos/functions-runtime';\nimport { useQuery } from '@dxos/react-client/echo';\n\nimport { useComputeRuntimeCallback } from './useComputeRuntimeCallback';\n\ninterface TriggerRuntimeControls {\n triggers: Trigger.Trigger[];\n\n state: TriggerDispatcherState | undefined;\n\n start: () => void;\n stop: () => void;\n}\n\nexport const useTriggerRuntimeControls = (db: Database.Database | undefined): TriggerRuntimeControls => {\n const triggers = useQuery(\n db,\n Query.select(Filter.type(Trigger.Trigger)).debugLabel('plugin-automation.useTriggerRuntimeControls'),\n );\n\n const [dispatcher, setDispatcher] = useState<Context.Tag.Service<TriggerDispatcher> | undefined>(undefined);\n\n const init = useComputeRuntimeCallback(\n db?.spaceId,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n setDispatcher(dispatcher);\n }),\n );\n\n useEffect(() => {\n void init();\n }, []);\n\n const state = useAtomValue(dispatcher?.state ?? Atom.make(undefined));\n\n const start = useComputeRuntimeCallback(\n db?.spaceId,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.start();\n }),\n );\n\n const stop = useComputeRuntimeCallback(\n db?.spaceId,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.stop();\n }),\n );\n\n return {\n triggers,\n state,\n start: () => void start(),\n stop: () => void stop(),\n };\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport { useEffect, useState } from 'react';\n\nimport { SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { useComputeRuntime } from './useComputeRuntime';\n\ntype ResolvedService<T extends Context.Tag<any, any>> = Context.Tag.Service<T> | undefined;\n\n/**\n * Resolves a service from the compute runtime for a given space.\n *\n * NOTE: Previously implemented via `use(useMemo(() => runtime.runPromiseExit(...)))`.\n * React's `use()` is weird and unreliable in production builds — the Suspense\n * boundary can stay pending indefinitely without the promise ever resolving\n * from React's perspective (the runtime is built lazily on first invocation\n * and one of its `acquire` steps can block). This `useState` + `useEffect`\n * flavour avoids suspension entirely: the hook returns `undefined` while the\n * service is being acquired or if acquisition fails / times out.\n */\nexport const useComputeRuntimeService = <T extends Context.Tag<any, any>>(\n tag: T,\n spaceId?: SpaceId,\n): ResolvedService<T> => {\n const runtime = useComputeRuntime(spaceId);\n const [service, setService] = useState<ResolvedService<T>>(undefined);\n\n useEffect(() => {\n setService(undefined);\n if (!runtime) {\n return;\n }\n let cancelled = false;\n void (async () => {\n try {\n const exit = await runtime.runPromiseExit(tag.pipe(Effect.timeout('30 seconds')));\n if (cancelled) {\n return;\n }\n if (Exit.isSuccess(exit)) {\n setService(exit.value);\n } else {\n log.warn('useComputeRuntimeService: failed to acquire service', { cause: exit.cause });\n }\n } catch (error) {\n if (!cancelled) {\n log.catch(error);\n }\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [runtime, tag]);\n\n return service;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useCallback", "useEffect", "useCapabilities", "log", "hasCapability", "spaceId", "id", "computeRuntime", "useComputeRuntimeCallback", "id", "fn", "deps", "runtime", "useComputeRuntime", "useCallback", "TypeError", "runPromise", "Atom", "useAtomValue", "Effect", "useEffect", "useState", "Filter", "Query", "Trigger", "TriggerDispatcher", "useQuery", "useTriggerRuntimeControls", "db", "triggers", "useQuery", "Query", "select", "Filter", "type", "Trigger", "debugLabel", "dispatcher", "setDispatcher", "useState", "undefined", "init", "useComputeRuntimeCallback", "spaceId", "fnUntraced", "TriggerDispatcher", "useEffect", "state", "useAtomValue", "Atom", "make", "start", "stop", "Effect", "Exit", "useEffect", "useState", "log", "__dxlog_file", "service", "undefined", "useEffect", "setService", "runtime", "cancelled", "exit", "Exit", "log", "error", "catch"]
|
|
7
|
+
}
|