import { createAtomCommandScheduler, createRuntimeCommand, } from "@t3tools/client-runtime/state/runtime"; import { connectionAtomRuntime } from "../connection/runtime"; import { linkPrimaryEnvironmentToCloud, type CloudLinkMode, type CloudLinkTarget, unlinkPrimaryEnvironmentFromCloud, updatePrimaryCloudPreferences, } from "./linkEnvironment"; const cloudLinkScheduler = createAtomCommandScheduler(); const cloudLinkConcurrency = { mode: "serial" as const, key: (input: { readonly target: CloudLinkTarget }) => input.target.environmentId, }; export const linkPrimaryEnvironment = createRuntimeCommand(connectionAtomRuntime, { label: "web:cloud:link-primary-environment", scheduler: cloudLinkScheduler, concurrency: cloudLinkConcurrency, execute: (input: { readonly target: CloudLinkTarget; readonly clerkToken: string; readonly mode?: CloudLinkMode; }) => linkPrimaryEnvironmentToCloud(input), }); export const unlinkPrimaryEnvironment = createRuntimeCommand(connectionAtomRuntime, { label: "web:cloud:unlink-primary-environment", scheduler: cloudLinkScheduler, concurrency: cloudLinkConcurrency, execute: (input: { readonly target: CloudLinkTarget; readonly clerkToken: string | null }) => unlinkPrimaryEnvironmentFromCloud(input), }); export const updatePrimaryEnvironmentPreferences = createRuntimeCommand(connectionAtomRuntime, { label: "web:cloud:update-primary-environment-preferences", scheduler: cloudLinkScheduler, concurrency: cloudLinkConcurrency, execute: (input: { readonly target: CloudLinkTarget; readonly publishAgentActivity: boolean }) => updatePrimaryCloudPreferences(input), });