60 lines · 1.8 KB · TypeScript
RawDownload
// ---------------------------------------------------------------------------// Cloud executor — stateless, per-request, from Postgres// --------------------------------------------------------------------------- import { Effect } from "effect"; import { createExecutor } from "@executor/sdk";import { makePgConfig, makePgKv } from "@executor/storage-postgres";import {  openApiPlugin,  makeKvOperationStore,} from "@executor/plugin-openapi";import {  mcpPlugin,  makeKvBindingStore,} from "@executor/plugin-mcp";import {  googleDiscoveryPlugin,  makeKvBindingStore as makeKvGoogleDiscoveryBindingStore,} from "@executor/plugin-google-discovery";import {  graphqlPlugin,  makeKvOperationStore as makeKvGraphqlOperationStore,} from "@executor/plugin-graphql";import { DbService } from "./db"; // ---------------------------------------------------------------------------// Create a fresh executor for a team (stateless, per-request)// --------------------------------------------------------------------------- export const createTeamExecutor = (  teamId: string,  teamName: string,  encryptionKey: string,) =>  Effect.gen(function* () {    const db = yield* DbService;    const kv = makePgKv(db, teamId);    const config = makePgConfig(db, {      teamId,      teamName,      encryptionKey,      plugins: [        openApiPlugin({          operationStore: makeKvOperationStore(kv, "openapi"),        }),        mcpPlugin({          bindingStore: makeKvBindingStore(kv, "mcp"),        }),        googleDiscoveryPlugin({          bindingStore: makeKvGoogleDiscoveryBindingStore(kv, "google-discovery"),        }),        graphqlPlugin({          operationStore: makeKvGraphqlOperationStore(kv, "graphql"),        }),      ] as const,    });     return yield* createExecutor(config);  });