1623 lines · 43.0 KB · TypeScript
RawDownload
import * as Effect from "effect/Effect";import * as Option from "effect/Option"; import type { SourceCatalogSyncResult } from "@executor/source-core";import type {  SourceCatalogKind,} from "@executor/source-core";import type { ExecutorEffect } from "./executor-effect";import type { ExecutorScopeContext } from "./scope";import {  type ExecutorScopeConfigSource,  type ExecutorScopeConfig,  type Source as ExecutorSource,  type SecretMaterial,  type SecretMaterialPurpose,  type SecretStore,} from "./schema";import type {  SourceInvokeInput,  SourceInvokeResult,} from "@executor/source-core";import type * as Schema from "effect/Schema";import { runtimeEffectError } from "./runtime/effect-errors";import {  ExecutorStateStore,} from "./runtime/executor-state-store";import {  LocalToolRuntimeLoaderService,} from "./runtime/local-tool-runtime";import {  SecretMaterialDeleterService,  SecretMaterialResolverService,  SecretMaterialStorerService,  SecretMaterialUpdaterService,} from "./runtime/scope/secret-material-providers";import { ScopeConfigStore } from "./runtime/scope/storage"; export type PluginCleanup = {  close: () => void | Promise<void>;}; export type ExecutorSdkPluginHost = ExecutorSourcePluginInternalHost; export type ExecutorSdkPluginContext = {  executor: ExecutorEffect & Record<string, unknown>;  scope: ExecutorScopeContext;  host: ExecutorSdkPluginHost;}; export type ExecutorSdkPluginStartContext<  TExtension extends object = {},> = ExecutorSdkPluginContext & {  extension: TExtension;}; type ExecutorSdkPluginInternals = {  sources?: readonly ExecutorSourceContribution<any>[];  secretStores?: readonly ExecutorSecretStoreContribution<any>[];  managementTools?: readonly ExecutorManagementToolContribution<any, any>[];}; const executorSdkPluginInternalsSymbol = Symbol.for(  "@executor/platform-sdk/plugins/internals",); type ExecutorSdkPluginInternalCarrier = {  [executorSdkPluginInternalsSymbol]?: ExecutorSdkPluginInternals;}; type ExecutorSourcePluginRuntimeServices =  | LocalToolRuntimeLoaderService  | SecretMaterialResolverService  | SecretMaterialStorerService  | SecretMaterialDeleterService  | SecretMaterialUpdaterService; type ExecutorSourceContributionRuntimeServices =  | ScopeConfigStore  | ExecutorSourcePluginRuntimeServices; type ExecutorSecretStorePluginRuntimeServices =  | SecretMaterialResolverService; type ExecutorSecretStoreContributionRuntimeServices =  | ExecutorStateStore  | ExecutorSecretStorePluginRuntimeServices; export type ExecutorSdkPlugin<  TKey extends string = string,  TExtension extends object = {},> = {  key: TKey;  extendExecutor?: (input: ExecutorSdkPluginContext) => TExtension;  start?: (    input: ExecutorSdkPluginStartContext<TExtension>,  ) => Effect.Effect<PluginCleanup | void, Error, any>;} & ExecutorSdkPluginInternalCarrier; export const defineExecutorSdkPlugin = <  const TPlugin extends ExecutorSdkPlugin<any, any>,>(  plugin: TPlugin,): TPlugin => plugin; type ExecutorSourcePluginInternalHost = {  sources: {    create: (input: {      source: Omit<        ExecutorSource,        "id" | "scopeId" | "createdAt" | "updatedAt"      >;    }) => Effect.Effect<ExecutorSource, Error, any>;    get: (sourceId: ExecutorSource["id"]) => Effect.Effect<ExecutorSource, Error, any>;    save: (source: ExecutorSource) => Effect.Effect<ExecutorSource, Error, any>;    refreshCatalog: (      sourceId: ExecutorSource["id"],    ) => Effect.Effect<ExecutorSource, Error, any>;    remove: (sourceId: ExecutorSource["id"]) => Effect.Effect<boolean, Error, any>;  };}; type ExecutorSecretStorePluginInternalHost = {  secretStores: {    create: (input: {      store: Omit<        SecretStore,        "id" | "scopeId" | "createdAt" | "updatedAt"      >;    }) => Effect.Effect<SecretStore, Error, any>;    get: (storeId: SecretStore["id"]) => Effect.Effect<SecretStore, Error, any>;    save: (store: SecretStore) => Effect.Effect<SecretStore, Error, any>;    remove: (storeId: SecretStore["id"]) => Effect.Effect<boolean, Error, any>;  };}; export type ExecutorSourcePluginStorage<TStored> = {  get: (input: {    scopeId: ExecutorSource["scopeId"];    sourceId: ExecutorSource["id"];  }) => Effect.Effect<TStored | null, Error, never>;  put: (input: {    scopeId: ExecutorSource["scopeId"];    sourceId: ExecutorSource["id"];    value: TStored;  }) => Effect.Effect<void, Error, never>;  remove?: (input: {    scopeId: ExecutorSource["scopeId"];    sourceId: ExecutorSource["id"];  }) => Effect.Effect<void, Error, never>;}; export type ExecutorSecretStorePluginStorage<TStored> = {  get: (input: {    scopeId: SecretStore["scopeId"];    storeId: SecretStore["id"];  }) => Effect.Effect<TStored | null, Error, never>;  put: (input: {    scopeId: SecretStore["scopeId"];    storeId: SecretStore["id"];    value: TStored;  }) => Effect.Effect<void, Error, never>;  remove?: (input: {    scopeId: SecretStore["scopeId"];    storeId: SecretStore["id"];  }) => Effect.Effect<void, Error, never>;}; export type ExecutorSourcePluginApi<  TConnectInput,  TSourceConfig,  TUpdateInput extends {    sourceId: string;    config: TSourceConfig;  },> = {  getSource: (    sourceId: ExecutorSource["id"],  ) => Effect.Effect<ExecutorSource, Error, any>;  getSourceConfig: (    sourceId: ExecutorSource["id"],  ) => Effect.Effect<TSourceConfig, Error, any>;  createSource: (    input: TConnectInput,  ) => Effect.Effect<ExecutorSource, Error, any>;  updateSource: (    input: TUpdateInput,  ) => Effect.Effect<ExecutorSource, Error, any>;  refreshSource: (    sourceId: ExecutorSource["id"],  ) => Effect.Effect<ExecutorSource, Error, any>;  removeSource: (    sourceId: ExecutorSource["id"],  ) => Effect.Effect<boolean, Error, any>;}; export type ExecutorSecretStorePluginApi<  TConnectInput,  TStoreConfig,  TUpdateInput extends {    storeId: string;    config: TStoreConfig;  },> = {  getStore: (    storeId: SecretStore["id"],  ) => Effect.Effect<SecretStore, Error, any>;  getStoreConfig: (    storeId: SecretStore["id"],  ) => Effect.Effect<TStoreConfig, Error, any>;  createStore: (    input: TConnectInput,  ) => Effect.Effect<SecretStore, Error, any>;  updateStore: (    input: TUpdateInput,  ) => Effect.Effect<SecretStore, Error, any>;  removeStore: (    storeId: SecretStore["id"],  ) => Effect.Effect<boolean, Error, any>;}; export type ExecutorManagementToolContribution<  TInput = unknown,  TOutput = unknown,> = {  path: `executor.${string}`;  description: string;  inputSchema: Schema.Schema<TInput, any, never>;  outputSchema: Schema.Schema<TOutput, any, never>;  execute: (input: {    args: TInput;    host: ExecutorSdkPluginHost;  }) => Effect.Effect<TOutput, Error, any>;}; export type ExecutorSourcePluginManagementToolDefinition<  TName extends string = string,  TInput = unknown,  TOutput = unknown,  TConnectInput = unknown,  TSourceConfig = unknown,  TUpdateInput extends {    sourceId: string;    config: TSourceConfig;  } = {    sourceId: string;    config: TSourceConfig;  },> = {  name: TName;  description: string;  inputSchema: Schema.Schema<TInput, any, never>;  outputSchema: Schema.Schema<TOutput, any, never>;  execute: (input: {    args: TInput;    source: ExecutorSourcePluginApi<TConnectInput, TSourceConfig, TUpdateInput>;    host: ExecutorSourcePluginInternalHost;  }) => Effect.Effect<TOutput, Error, any>;}; export type ExecutorSourcePluginDefinition<  TAddInput,  TConnectInput,  TSourceConfig,  TStored,  _TUpdateInput extends {    sourceId: string;    config: TSourceConfig;  },> = {  kind: string;  displayName: string;  add: {    inputSchema: Schema.Schema<TAddInput, any, never>;    inputSignatureWidth?: number;    helpText?: readonly string[];    toConnectInput: (input: TAddInput) => TConnectInput;  };  storage: ExecutorSourcePluginStorage<TStored>;  source: {    create: (input: TConnectInput) => {      source: Omit<        ExecutorSource,        "id" | "scopeId" | "createdAt" | "updatedAt"      >;      stored: TStored;    };    update: (input: {      source: ExecutorSource;      config: TSourceConfig;    }) => {      source: ExecutorSource;      stored: TStored;    };    toConfig: (input: {      source: ExecutorSource;      stored: TStored;    }) => TSourceConfig;    remove?: (input: {      source: ExecutorSource;      stored: TStored | null;    }) => Effect.Effect<void, Error, any>;  };  scopeConfig?: {    toConfigSource: (input: {      source: ExecutorSource;      stored: TStored;    }) => ExecutorScopeConfigSource;    recoverStored: (input: {      source: ExecutorSource;      config: ExecutorScopeConfigSource;      loadedConfig: ExecutorScopeConfig | null;    }) => Effect.Effect<TStored, Error, any> | TStored;  };  catalog: {    kind: SourceCatalogKind;    identity?: (input: {      source: ExecutorSource;    }) => Record<string, unknown>;    sync: (input: {      source: ExecutorSource;      stored: TStored | null;    }) => Effect.Effect<      SourceCatalogSyncResult,      Error,      ExecutorSourcePluginRuntimeServices    >;    invoke: (      input: SourceInvokeInput & {        source: ExecutorSource;        stored: TStored | null;      },    ) => Effect.Effect<      SourceInvokeResult,      Error,      ExecutorSourcePluginRuntimeServices    >;  };}; export type ExecutorSecretStorePluginCapabilities = {  canCreateSecrets: boolean;  canUpdateSecrets: boolean;  canDeleteSecrets: boolean;  canBrowseSecrets: boolean;  canImportSecrets: boolean;}; export type ExecutorSecretStoreBrowseEntry = {  key: string;  label: string;  description: string | null;  kind: "group" | "secret";}; export type ExecutorSecretStoreBuiltinDefinition = {  storeId: string;  defaultPriority?: number;  enabled?: () => boolean;  createStore: () => Omit<    SecretStore,    "id" | "scopeId" | "createdAt" | "updatedAt"  >;}; export type ExecutorSecretStorePluginDefinition<  TAddInput,  TConnectInput,  TStoreConfig,  TStored,  TSecretStored,  _TUpdateInput extends {    storeId: string;    config: TStoreConfig;  },> = {  kind: string;  displayName: string;  builtin?: ExecutorSecretStoreBuiltinDefinition;  add?: {    inputSchema: Schema.Schema<TAddInput, any, never>;    inputSignatureWidth?: number;    helpText?: readonly string[];    toConnectInput: (input: TAddInput) => TConnectInput;  };  storage: ExecutorSecretStorePluginStorage<TStored>;  store: {    create: (input: TConnectInput) => {      store: Omit<        SecretStore,        "id" | "scopeId" | "createdAt" | "updatedAt"      >;      stored: TStored;    };    update: (input: {      store: SecretStore;      config: TStoreConfig;    }) => {      store: SecretStore;      stored: TStored;    };    toConfig: (input: {      store: SecretStore;      stored: TStored;    }) => TStoreConfig;    remove?: (input: {      store: SecretStore;      stored: TStored | null;    }) => Effect.Effect<void, Error, any>;    resolveSecret: (input: {      secret: SecretMaterial;      secretStored: TSecretStored;      store: SecretStore;      stored: TStored | null;      context?: {        params?: Readonly<Record<string, string | undefined>>;      };    }) => Effect.Effect<      string,      Error,      ExecutorSecretStorePluginRuntimeServices    >;    createSecret?: (input: {      store: SecretStore;      stored: TStored | null;      purpose: SecretMaterialPurpose;      value: string;      name?: string | null;    }) => Effect.Effect<{      name: string | null;      secretStored: TSecretStored;    }, Error, ExecutorSecretStorePluginRuntimeServices>;    updateSecret?: (input: {      secret: SecretMaterial;      secretStored: TSecretStored;      store: SecretStore;      stored: TStored | null;      name?: string | null;      value?: string;    }) => Effect.Effect<{      name: string | null;      secretStored?: TSecretStored;    }, Error, ExecutorSecretStorePluginRuntimeServices>;    deleteSecret?: (input: {      secret: SecretMaterial;      secretStored: TSecretStored;      store: SecretStore;      stored: TStored | null;    }) => Effect.Effect<      boolean,      Error,      ExecutorSecretStorePluginRuntimeServices    >;    browseSecrets?: (input: {      store: SecretStore;      stored: TStored | null;      parentKey?: string | null;      query?: string | null;    }) => Effect.Effect<{      entries: ReadonlyArray<ExecutorSecretStoreBrowseEntry>;    }, Error, ExecutorSecretStorePluginRuntimeServices>;    importSecret?: (input: {      store: SecretStore;      stored: TStored | null;      selectionKey: string;      purpose: SecretMaterialPurpose;      name?: string | null;    }) => Effect.Effect<{      name: string | null;      secretStored: TSecretStored;    }, Error, ExecutorSecretStorePluginRuntimeServices>;    capabilities?: (input: {      store: SecretStore;      stored: TStored | null;    }) => ExecutorSecretStorePluginCapabilities;  };}; export type ExecutorSourcePluginInput<  TKey extends string = string,  TAddInput = unknown,  TConnectInput = unknown,  TSourceConfig = unknown,  TStored = unknown,  TUpdateInput extends {    sourceId: string;    config: TSourceConfig;  } = {    sourceId: string;    config: TSourceConfig;  },  TExtension extends object = {},> = {  key: TKey;  source: ExecutorSourcePluginDefinition<    TAddInput,    TConnectInput,    TSourceConfig,    TStored,    TUpdateInput  >;

Lines 1–500 of 1623.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t