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. Load more
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 >;