@executor-js/plugin-graphql 0.0.1 → 0.1.0

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sdk/errors.ts","../src/sdk/introspect.ts","../src/sdk/types.ts","../src/sdk/extract.ts","../src/sdk/invoke.ts","../src/sdk/kv-operation-store.ts","../src/sdk/stored-source.ts","../src/sdk/plugin.ts"],"sourcesContent":["import { Data, Schema } from \"effect\";\nimport type { Option } from \"effect\";\n\nexport class GraphqlIntrospectionError extends Schema.TaggedError<GraphqlIntrospectionError>()(\n \"GraphqlIntrospectionError\",\n {\n message: Schema.String,\n },\n) {}\n\nexport class GraphqlExtractionError extends Schema.TaggedError<GraphqlExtractionError>()(\n \"GraphqlExtractionError\",\n {\n message: Schema.String,\n },\n) {}\n\nexport class GraphqlInvocationError extends Data.TaggedError(\"GraphqlInvocationError\")<{\n readonly message: string;\n readonly statusCode: Option.Option<number>;\n readonly cause?: unknown;\n}> {}\n","import { Effect } from \"effect\";\nimport { HttpClient, HttpClientRequest } from \"@effect/platform\";\n\nimport { GraphqlIntrospectionError } from \"./errors\";\n\n// ---------------------------------------------------------------------------\n// Introspection query — standard GraphQL introspection\n// ---------------------------------------------------------------------------\n\nconst INTROSPECTION_QUERY = `\n query IntrospectionQuery {\n __schema {\n queryType { name }\n mutationType { name }\n types {\n kind\n name\n description\n fields(includeDeprecated: false) {\n name\n description\n args {\n name\n description\n type {\n ...TypeRef\n }\n defaultValue\n }\n type {\n ...TypeRef\n }\n }\n inputFields {\n name\n description\n type {\n ...TypeRef\n }\n defaultValue\n }\n enumValues(includeDeprecated: false) {\n name\n description\n }\n }\n }\n }\n\n fragment TypeRef on __Type {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Introspection result types\n// ---------------------------------------------------------------------------\n\nexport interface IntrospectionTypeRef {\n readonly kind: string;\n readonly name: string | null;\n readonly ofType: IntrospectionTypeRef | null;\n}\n\nexport interface IntrospectionInputValue {\n readonly name: string;\n readonly description: string | null;\n readonly type: IntrospectionTypeRef;\n readonly defaultValue: string | null;\n}\n\nexport interface IntrospectionField {\n readonly name: string;\n readonly description: string | null;\n readonly args: readonly IntrospectionInputValue[];\n readonly type: IntrospectionTypeRef;\n}\n\nexport interface IntrospectionEnumValue {\n readonly name: string;\n readonly description: string | null;\n}\n\nexport interface IntrospectionType {\n readonly kind: string;\n readonly name: string;\n readonly description: string | null;\n readonly fields: readonly IntrospectionField[] | null;\n readonly inputFields: readonly IntrospectionInputValue[] | null;\n readonly enumValues: readonly IntrospectionEnumValue[] | null;\n}\n\nexport interface IntrospectionSchema {\n readonly queryType: { readonly name: string } | null;\n readonly mutationType: { readonly name: string } | null;\n readonly types: readonly IntrospectionType[];\n}\n\nexport interface IntrospectionResult {\n readonly __schema: IntrospectionSchema;\n}\n\n// ---------------------------------------------------------------------------\n// Introspect a GraphQL endpoint\n// ---------------------------------------------------------------------------\n\nexport const introspect = Effect.fn(\"GraphQL.introspect\")(function* (\n endpoint: string,\n headers?: Record<string, string>,\n) {\n const client = yield* HttpClient.HttpClient;\n\n let request = HttpClientRequest.post(endpoint).pipe(\n HttpClientRequest.setHeader(\"Content-Type\", \"application/json\"),\n HttpClientRequest.bodyUnsafeJson({\n query: INTROSPECTION_QUERY,\n }),\n );\n\n if (headers) {\n for (const [k, v] of Object.entries(headers)) {\n request = HttpClientRequest.setHeader(request, k, v);\n }\n }\n\n const response = yield* client.execute(request).pipe(\n Effect.tapErrorCause((cause) => Effect.logError(\"graphql introspection request failed\", cause)),\n Effect.mapError(\n (err) =>\n new GraphqlIntrospectionError({\n message: `Failed to reach GraphQL endpoint: ${err.message}`,\n }),\n ),\n );\n\n if (response.status !== 200) {\n return yield* new GraphqlIntrospectionError({\n message: `Introspection failed with status ${response.status}`,\n });\n }\n\n const raw = yield* response.json.pipe(\n Effect.tapErrorCause((cause) =>\n Effect.logError(\"graphql introspection JSON parse failed\", cause),\n ),\n Effect.mapError(\n () =>\n new GraphqlIntrospectionError({\n message: `Failed to parse introspection response as JSON`,\n }),\n ),\n );\n\n const json = raw as { data?: IntrospectionResult; errors?: unknown[] };\n\n if (json.errors && Array.isArray(json.errors) && json.errors.length > 0) {\n return yield* new GraphqlIntrospectionError({\n message: `Introspection returned ${json.errors.length} error(s)`,\n });\n }\n\n if (!json.data?.__schema) {\n return yield* new GraphqlIntrospectionError({\n message: \"Introspection response missing __schema\",\n });\n }\n\n return json.data;\n});\n\n// ---------------------------------------------------------------------------\n// Parse an introspection result from a JSON string (for offline/text input)\n// ---------------------------------------------------------------------------\n\nexport const parseIntrospectionJson = (\n text: string,\n): Effect.Effect<IntrospectionResult, GraphqlIntrospectionError> =>\n Effect.try({\n try: () => {\n const parsed = JSON.parse(text);\n // Accept both { data: { __schema } } and { __schema } formats\n const result = parsed.data ?? parsed;\n if (!result.__schema) {\n throw new Error(\"Missing __schema in introspection JSON\");\n }\n return result as IntrospectionResult;\n },\n catch: (err) =>\n new GraphqlIntrospectionError({\n message: `Failed to parse introspection JSON: ${err instanceof Error ? err.message : String(err)}`,\n }),\n });\n","import { Schema } from \"effect\";\n\n// ---------------------------------------------------------------------------\n// GraphQL operation kind\n// ---------------------------------------------------------------------------\n\nexport const GraphqlOperationKind = Schema.Literal(\"query\", \"mutation\");\nexport type GraphqlOperationKind = typeof GraphqlOperationKind.Type;\n\n// ---------------------------------------------------------------------------\n// Extracted field (becomes a tool)\n// ---------------------------------------------------------------------------\n\nexport class GraphqlArgument extends Schema.Class<GraphqlArgument>(\"GraphqlArgument\")({\n name: Schema.String,\n typeName: Schema.String,\n required: Schema.Boolean,\n description: Schema.optionalWith(Schema.String, { as: \"Option\" }),\n}) {}\n\nexport class ExtractedField extends Schema.Class<ExtractedField>(\"ExtractedField\")({\n /** e.g. \"user\", \"createUser\" */\n fieldName: Schema.String,\n /** \"query\" or \"mutation\" */\n kind: GraphqlOperationKind,\n description: Schema.optionalWith(Schema.String, { as: \"Option\" }),\n arguments: Schema.Array(GraphqlArgument),\n /** JSON Schema for the input (built from arguments) */\n inputSchema: Schema.optionalWith(Schema.Unknown, { as: \"Option\" }),\n /** The return type name for documentation */\n returnTypeName: Schema.String,\n}) {}\n\nexport class ExtractionResult extends Schema.Class<ExtractionResult>(\"ExtractionResult\")({\n /** Schema name from introspection */\n schemaName: Schema.optionalWith(Schema.String, { as: \"Option\" }),\n fields: Schema.Array(ExtractedField),\n}) {}\n\n// ---------------------------------------------------------------------------\n// Operation binding — minimal data needed to invoke\n// ---------------------------------------------------------------------------\n\nexport class OperationBinding extends Schema.Class<OperationBinding>(\"OperationBinding\")({\n kind: GraphqlOperationKind,\n fieldName: Schema.String,\n /** The full GraphQL query/mutation string */\n operationString: Schema.String,\n /** Ordered variable names for mapping */\n variableNames: Schema.Array(Schema.String),\n}) {}\n\n// ---------------------------------------------------------------------------\n// Invocation\n// ---------------------------------------------------------------------------\n\nexport const HeaderValue = Schema.Union(\n Schema.String,\n Schema.Struct({\n secretId: Schema.String,\n prefix: Schema.optional(Schema.String),\n }),\n);\nexport type HeaderValue = typeof HeaderValue.Type;\n\nexport class InvocationConfig extends Schema.Class<InvocationConfig>(\"InvocationConfig\")({\n /** The GraphQL endpoint URL */\n endpoint: Schema.String,\n /** Headers applied to every request. Values can reference secrets. */\n headers: Schema.optionalWith(Schema.Record({ key: Schema.String, value: HeaderValue }), {\n default: () => ({}),\n }),\n}) {}\n\nexport class InvocationResult extends Schema.Class<InvocationResult>(\"InvocationResult\")({\n status: Schema.Number,\n data: Schema.NullOr(Schema.Unknown),\n errors: Schema.NullOr(Schema.Unknown),\n}) {}\n","import { Effect, Option } from \"effect\";\n\nimport { GraphqlExtractionError } from \"./errors\";\nimport type {\n IntrospectionResult,\n IntrospectionSchema,\n IntrospectionType,\n IntrospectionTypeRef,\n IntrospectionInputValue,\n} from \"./introspect\";\nimport {\n ExtractedField,\n ExtractionResult,\n GraphqlArgument,\n type GraphqlOperationKind,\n} from \"./types\";\n\n// ---------------------------------------------------------------------------\n// Type ref helpers\n// ---------------------------------------------------------------------------\n\n/** Unwrap NON_NULL / LIST wrappers to get the leaf type name */\nconst unwrapTypeName = (ref: IntrospectionTypeRef): string => {\n if (ref.name) return ref.name;\n if (ref.ofType) return unwrapTypeName(ref.ofType);\n return \"Unknown\";\n};\n\n/** Check if a type ref is non-null (required) */\nconst isNonNull = (ref: IntrospectionTypeRef): boolean => ref.kind === \"NON_NULL\";\n\n// ---------------------------------------------------------------------------\n// Build shared definitions from all INPUT_OBJECT and ENUM types\n// ---------------------------------------------------------------------------\n\nconst buildDefinitions = (\n types: ReadonlyMap<string, IntrospectionType>,\n): Record<string, unknown> => {\n const defs: Record<string, unknown> = {};\n\n for (const [name, type] of types) {\n // Skip internal types\n if (name.startsWith(\"__\")) continue;\n\n if (type.kind === \"INPUT_OBJECT\" && type.inputFields) {\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n\n for (const field of type.inputFields) {\n const schema = typeRefToJsonSchema(field.type, types);\n if (field.description) {\n (schema as Record<string, unknown>).description = field.description;\n }\n properties[field.name] = schema;\n if (isNonNull(field.type)) {\n required.push(field.name);\n }\n }\n\n const def: Record<string, unknown> = { type: \"object\", properties };\n if (required.length > 0) def.required = required;\n if (type.description) def.description = type.description;\n defs[name] = def;\n }\n\n if (type.kind === \"ENUM\" && type.enumValues) {\n defs[name] = {\n type: \"string\",\n enum: type.enumValues.map((v) => v.name),\n ...(type.description ? { description: type.description } : {}),\n };\n }\n }\n\n return defs;\n};\n\n// ---------------------------------------------------------------------------\n// Convert a type ref to JSON Schema using $ref for complex types\n// ---------------------------------------------------------------------------\n\nconst typeRefToJsonSchema = (\n ref: IntrospectionTypeRef,\n // oxlint-disable-next-line only-used-in-recursion\n types: ReadonlyMap<string, IntrospectionType>,\n): Record<string, unknown> => {\n switch (ref.kind) {\n case \"NON_NULL\":\n return ref.ofType ? typeRefToJsonSchema(ref.ofType, types) : {};\n\n case \"LIST\":\n return {\n type: \"array\",\n items: ref.ofType ? typeRefToJsonSchema(ref.ofType, types) : {},\n };\n\n case \"SCALAR\":\n return scalarToJsonSchema(ref.name ?? \"String\");\n\n case \"ENUM\":\n // Reference the shared definition\n return ref.name ? { $ref: `#/$defs/${ref.name}` } : { type: \"string\" };\n\n case \"INPUT_OBJECT\":\n // Reference the shared definition — no recursive expansion needed\n return ref.name ? { $ref: `#/$defs/${ref.name}` } : { type: \"object\" };\n\n case \"OBJECT\":\n case \"INTERFACE\":\n case \"UNION\":\n return { type: \"object\" };\n\n default:\n return {};\n }\n};\n\nconst scalarToJsonSchema = (name: string): Record<string, unknown> => {\n switch (name) {\n case \"String\":\n case \"ID\":\n return { type: \"string\" };\n case \"Int\":\n return { type: \"integer\" };\n case \"Float\":\n return { type: \"number\" };\n case \"Boolean\":\n return { type: \"boolean\" };\n default:\n return { type: \"string\", description: `Custom scalar: ${name}` };\n }\n};\n\n// ---------------------------------------------------------------------------\n// Build input JSON Schema from field arguments\n// ---------------------------------------------------------------------------\n\nconst buildInputSchema = (\n args: readonly IntrospectionInputValue[],\n types: ReadonlyMap<string, IntrospectionType>,\n): Record<string, unknown> | undefined => {\n if (args.length === 0) return undefined;\n\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n\n for (const arg of args) {\n const schema = typeRefToJsonSchema(arg.type, types);\n if (arg.description) {\n (schema as Record<string, unknown>).description = arg.description;\n }\n properties[arg.name] = schema;\n if (isNonNull(arg.type)) {\n required.push(arg.name);\n }\n }\n\n const inputSchema: Record<string, unknown> = {\n type: \"object\",\n properties,\n };\n if (required.length > 0) inputSchema.required = required;\n return inputSchema;\n};\n\n/** Format a type ref back to GraphQL type notation (e.g. \"[String!]!\") */\nconst formatTypeRef = (ref: IntrospectionTypeRef): string => {\n switch (ref.kind) {\n case \"NON_NULL\":\n return ref.ofType ? `${formatTypeRef(ref.ofType)}!` : \"Unknown!\";\n case \"LIST\":\n return ref.ofType ? `[${formatTypeRef(ref.ofType)}]` : \"[Unknown]\";\n default:\n return ref.name ?? \"Unknown\";\n }\n};\n\n// ---------------------------------------------------------------------------\n// Extract fields from schema\n// ---------------------------------------------------------------------------\n\nconst extractFields = (\n _schema: IntrospectionSchema,\n kind: GraphqlOperationKind,\n typeName: string | null | undefined,\n types: ReadonlyMap<string, IntrospectionType>,\n): ExtractedField[] => {\n if (!typeName) return [];\n\n const type = types.get(typeName);\n if (!type?.fields) return [];\n\n return type.fields\n .filter((f) => !f.name.startsWith(\"__\"))\n .map((field) => {\n const args = field.args.map(\n (arg) =>\n new GraphqlArgument({\n name: arg.name,\n typeName: formatTypeRef(arg.type),\n required: isNonNull(arg.type),\n description: arg.description ? Option.some(arg.description) : Option.none(),\n }),\n );\n\n const inputSchema = buildInputSchema(field.args, types);\n\n return new ExtractedField({\n fieldName: field.name,\n kind,\n description: field.description ? Option.some(field.description) : Option.none(),\n arguments: args,\n inputSchema: inputSchema ? Option.some(inputSchema) : Option.none(),\n returnTypeName: unwrapTypeName(field.type),\n });\n });\n};\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\nexport interface ExtractionOutput {\n readonly result: ExtractionResult;\n /** Shared JSON Schema definitions for INPUT_OBJECT and ENUM types.\n * Tool input schemas use `$ref` pointers into these. */\n readonly definitions: Record<string, unknown>;\n}\n\nexport const extract = (\n introspection: IntrospectionResult,\n): Effect.Effect<ExtractionOutput, GraphqlExtractionError> =>\n Effect.try({\n try: () => {\n const schema = introspection.__schema;\n const typeMap = new Map<string, IntrospectionType>();\n for (const t of schema.types) {\n typeMap.set(t.name, t);\n }\n\n const definitions = buildDefinitions(typeMap);\n\n const queryFields = extractFields(schema, \"query\", schema.queryType?.name, typeMap);\n const mutationFields = extractFields(schema, \"mutation\", schema.mutationType?.name, typeMap);\n\n return {\n result: new ExtractionResult({\n schemaName: Option.none(),\n fields: [...queryFields, ...mutationFields],\n }),\n definitions,\n };\n },\n catch: (err) =>\n new GraphqlExtractionError({\n message: `Failed to extract GraphQL schema: ${err instanceof Error ? err.message : String(err)}`,\n }),\n });\n","import { Effect, Layer, Option } from \"effect\";\nimport { HttpClient, HttpClientRequest } from \"@effect/platform\";\n\nimport {\n type ToolId,\n type ToolInvoker,\n ToolInvocationResult,\n ToolInvocationError,\n type ScopeId,\n type SecretId,\n} from \"@executor/sdk\";\n\nimport { GraphqlInvocationError } from \"./errors\";\nimport type { GraphqlOperationStore } from \"./operation-store\";\nimport {\n type HeaderValue,\n type OperationBinding,\n InvocationConfig,\n InvocationResult,\n} from \"./types\";\n\n// ---------------------------------------------------------------------------\n// Header resolution — resolves secret refs at invocation time\n// ---------------------------------------------------------------------------\n\nconst resolveHeaders = (\n headers: Record<string, HeaderValue>,\n secrets: {\n readonly resolve: (secretId: SecretId, scopeId: ScopeId) => Effect.Effect<string, unknown>;\n },\n scopeId: ScopeId,\n): Effect.Effect<Record<string, string>, ToolInvocationError> =>\n Effect.gen(function* () {\n const resolved: Record<string, string> = {};\n for (const [name, value] of Object.entries(headers)) {\n if (typeof value === \"string\") {\n resolved[name] = value;\n } else {\n const secret = yield* secrets.resolve(value.secretId as SecretId, scopeId).pipe(\n Effect.mapError(\n () =>\n new ToolInvocationError({\n toolId: \"\" as ToolId,\n message: `Failed to resolve secret \"${value.secretId}\" for header \"${name}\"`,\n cause: undefined,\n }),\n ),\n );\n resolved[name] = value.prefix ? `${value.prefix}${secret}` : secret;\n }\n }\n return resolved;\n });\n\n// ---------------------------------------------------------------------------\n// Response helpers\n// ---------------------------------------------------------------------------\n\nconst isJsonContentType = (ct: string | null | undefined): boolean => {\n if (!ct) return false;\n const normalized = ct.split(\";\")[0]?.trim().toLowerCase() ?? \"\";\n return (\n normalized === \"application/json\" || normalized.includes(\"+json\") || normalized.includes(\"json\")\n );\n};\n\n// ---------------------------------------------------------------------------\n// Public API — execute a GraphQL operation\n// ---------------------------------------------------------------------------\n\nexport const invoke = Effect.fn(\"GraphQL.invoke\")(function* (\n operation: OperationBinding,\n args: Record<string, unknown>,\n config: InvocationConfig,\n resolvedHeaders?: Record<string, string>,\n) {\n const client = yield* HttpClient.HttpClient;\n\n // Build the GraphQL request body\n const variables: Record<string, unknown> = {};\n for (const varName of operation.variableNames) {\n if (args[varName] !== undefined) {\n variables[varName] = args[varName];\n }\n }\n\n // Also pick up any variables from a \"variables\" container\n if (typeof args.variables === \"object\" && args.variables !== null) {\n Object.assign(variables, args.variables);\n }\n\n let request = HttpClientRequest.post(config.endpoint).pipe(\n HttpClientRequest.setHeader(\"Content-Type\", \"application/json\"),\n HttpClientRequest.bodyUnsafeJson({\n query: operation.operationString,\n variables: Object.keys(variables).length > 0 ? variables : undefined,\n }),\n );\n\n // Apply resolved headers\n if (resolvedHeaders) {\n for (const [name, value] of Object.entries(resolvedHeaders)) {\n request = HttpClientRequest.setHeader(request, name, value);\n }\n }\n\n const response = yield* client.execute(request).pipe(\n Effect.mapError(\n (err) =>\n new GraphqlInvocationError({\n message: `GraphQL request failed: ${err.message}`,\n statusCode: Option.none(),\n cause: err,\n }),\n ),\n );\n\n const status = response.status;\n const contentType = response.headers[\"content-type\"] ?? null;\n\n const body: unknown = isJsonContentType(contentType)\n ? yield* response.json.pipe(Effect.catchAll(() => response.text))\n : yield* response.text;\n\n // GraphQL responses are always 200 with { data, errors }\n const gqlBody = body as { data?: unknown; errors?: unknown[] } | null;\n const hasErrors = Array.isArray(gqlBody?.errors) && gqlBody.errors.length > 0;\n\n return new InvocationResult({\n status,\n data: gqlBody?.data ?? null,\n errors: hasErrors ? gqlBody!.errors : null,\n });\n});\n\n// ---------------------------------------------------------------------------\n// ToolInvoker — bridges operation store + HTTP client into SDK invoker\n// ---------------------------------------------------------------------------\n\nexport const makeGraphqlInvoker = (opts: {\n readonly operationStore: GraphqlOperationStore;\n readonly httpClientLayer: Layer.Layer<HttpClient.HttpClient>;\n readonly secrets: {\n readonly resolve: (secretId: SecretId, scopeId: ScopeId) => Effect.Effect<string, unknown>;\n };\n readonly scopeId: ScopeId;\n}): ToolInvoker => ({\n resolveAnnotations: (toolId: ToolId) =>\n Effect.gen(function* () {\n const entry = yield* opts.operationStore.get(toolId);\n if (!entry) return undefined;\n // Mutations require approval, queries don't\n if (entry.binding.kind === \"mutation\") {\n return {\n requiresApproval: true,\n approvalDescription: `mutation ${entry.binding.fieldName}`,\n };\n }\n return {};\n }),\n\n invoke: (toolId: ToolId, args: unknown) =>\n Effect.gen(function* () {\n const entry = yield* opts.operationStore.get(toolId);\n if (!entry) {\n return yield* new ToolInvocationError({\n toolId,\n message: `No GraphQL operation found for tool \"${toolId}\"`,\n cause: undefined,\n });\n }\n\n const source = yield* opts.operationStore.getSource(entry.namespace);\n if (!source) {\n return yield* new ToolInvocationError({\n toolId,\n message: `No source found for namespace \"${entry.namespace}\"`,\n cause: undefined,\n });\n }\n\n const { binding } = entry;\n const { invocationConfig: config } = source;\n\n // Resolve secret-backed headers\n const resolvedHeaders = yield* resolveHeaders(config.headers, opts.secrets, opts.scopeId);\n\n const result = yield* invoke(\n binding,\n (args ?? {}) as Record<string, unknown>,\n config,\n resolvedHeaders,\n ).pipe(Effect.provide(opts.httpClientLayer));\n\n return new ToolInvocationResult({\n data: result.data,\n error: result.errors,\n status: result.status,\n });\n }).pipe(\n Effect.catchAll((err) => {\n if (\n typeof err === \"object\" &&\n err !== null &&\n \"_tag\" in err &&\n (err as { _tag: string })._tag === \"ToolInvocationError\"\n ) {\n return Effect.fail(err as ToolInvocationError);\n }\n return Effect.fail(\n new ToolInvocationError({\n toolId,\n message: `GraphQL invocation failed: ${err instanceof Error ? err.message : String(err)}`,\n cause: err,\n }),\n );\n }),\n ),\n});\n","// ---------------------------------------------------------------------------\n// KV-backed GraphqlOperationStore\n// ---------------------------------------------------------------------------\n\nimport { Effect, Schema } from \"effect\";\nimport { scopeKv, makeInMemoryScopedKv, type Kv, type ToolId, type ScopedKv } from \"@executor/sdk\";\n\nimport type { GraphqlOperationStore, StoredSource } from \"./operation-store\";\nimport { InvocationConfig, OperationBinding } from \"./types\";\nimport { StoredSourceSchema } from \"./stored-source\";\n\n// ---------------------------------------------------------------------------\n// Stored schemas\n// ---------------------------------------------------------------------------\n\nclass StoredEntry extends Schema.Class<StoredEntry>(\"StoredEntry\")({\n namespace: Schema.String,\n binding: OperationBinding,\n}) {}\n\nconst encodeEntry = Schema.encodeSync(Schema.parseJson(StoredEntry));\nconst decodeEntry = Schema.decodeUnknownSync(Schema.parseJson(StoredEntry));\n\nconst encodeSource = Schema.encodeSync(Schema.parseJson(StoredSourceSchema));\nconst decodeSource = Schema.decodeUnknownSync(Schema.parseJson(StoredSourceSchema));\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\n// TODO(migration): remove DecodedSource + rehydrate once all source rows\n// have been migrated to carry invocationConfig. For GraphQL the endpoint\n// is always user-provided in SourceConfig, so rehydration is lossless.\ntype DecodedSource = Omit<StoredSource, \"invocationConfig\"> & {\n invocationConfig?: InvocationConfig;\n};\n\nconst rehydrate = (source: DecodedSource): StoredSource =>\n source.invocationConfig\n ? (source as StoredSource)\n : {\n ...source,\n invocationConfig: new InvocationConfig({\n endpoint: source.config.endpoint,\n headers: source.config.headers ?? {},\n }),\n };\n\nconst makeStore = (bindings: ScopedKv, sources: ScopedKv): GraphqlOperationStore => ({\n get: (toolId) =>\n Effect.gen(function* () {\n const raw = yield* bindings.get(toolId);\n if (!raw) return null;\n const entry = decodeEntry(raw);\n return { binding: entry.binding, namespace: entry.namespace };\n }),\n\n put: (toolId, namespace, binding) =>\n bindings.set([\n { key: toolId, value: encodeEntry(new StoredEntry({ namespace, binding })) },\n ]),\n\n remove: (toolId) => bindings.delete([toolId]).pipe(Effect.asVoid),\n\n listByNamespace: (namespace) =>\n Effect.gen(function* () {\n const entries = yield* bindings.list();\n const ids: ToolId[] = [];\n for (const e of entries) {\n const entry = decodeEntry(e.value);\n if (entry.namespace === namespace) ids.push(e.key as ToolId);\n }\n return ids;\n }),\n\n removeByNamespace: (namespace) =>\n Effect.gen(function* () {\n const entries = yield* bindings.list();\n const ids: ToolId[] = [];\n for (const e of entries) {\n const entry = decodeEntry(e.value);\n if (entry.namespace === namespace) ids.push(e.key as ToolId);\n }\n if (ids.length > 0) yield* bindings.delete(ids);\n return ids;\n }),\n\n putSource: (source) => sources.set([{ key: source.namespace, value: encodeSource(source) }]),\n\n removeSource: (namespace) => sources.delete([namespace]).pipe(Effect.asVoid),\n\n listSources: () =>\n Effect.gen(function* () {\n const entries = yield* sources.list();\n // TODO(migration): rehydrate in memory only — avoid N writes per list.\n return entries.map((e) => rehydrate(decodeSource(e.value) as DecodedSource));\n }),\n\n getSource: (namespace) =>\n Effect.gen(function* () {\n const raw = yield* sources.get(namespace);\n if (!raw) return null;\n const source = decodeSource(raw) as DecodedSource;\n if (source.invocationConfig) return source as StoredSource;\n // TODO(migration): self-heal — rehydrate and write back once.\n const healed = rehydrate(source);\n yield* sources.set([{ key: namespace, value: encodeSource(healed) }]);\n return healed;\n }),\n\n getSourceConfig: (namespace) =>\n Effect.gen(function* () {\n const raw = yield* sources.get(namespace);\n if (!raw) return null;\n const source = decodeSource(raw) as StoredSource;\n return source.config;\n }),\n});\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport const makeKvOperationStore = (kv: Kv, namespace: string): GraphqlOperationStore =>\n makeStore(scopeKv(kv, `${namespace}.bindings`), scopeKv(kv, `${namespace}.sources`));\n\nexport const makeInMemoryOperationStore = (): GraphqlOperationStore =>\n makeStore(makeInMemoryScopedKv(), makeInMemoryScopedKv());\n","import { Schema } from \"effect\";\n\nimport { HeaderValue, InvocationConfig } from \"./types\";\n\n// ---------------------------------------------------------------------------\n// Stored source — the shape persisted by the operation store and exposed\n// via the getSource HTTP endpoint.\n// ---------------------------------------------------------------------------\n\nexport class StoredSourceSchema extends Schema.Class<StoredSourceSchema>(\"GraphqlStoredSource\")({\n namespace: Schema.String,\n name: Schema.String,\n config: Schema.Struct({\n endpoint: Schema.String,\n introspectionJson: Schema.optional(Schema.String),\n namespace: Schema.optional(Schema.String),\n headers: Schema.optional(Schema.Record({ key: Schema.String, value: HeaderValue })),\n }),\n // TODO(migration): make required once all rows have been migrated to\n // carry invocationConfig. Left optional for decode compat with rows\n // written before the source-level invocationConfig refactor.\n invocationConfig: Schema.optional(InvocationConfig),\n}) {}\n\nexport type StoredSourceSchemaType = typeof StoredSourceSchema.Type;\n","import { Effect, Option, Schema } from \"effect\";\nimport { FetchHttpClient, HttpClient } from \"@effect/platform\";\nimport type { Layer } from \"effect\";\n\nimport {\n Source,\n SourceDetectionResult,\n definePlugin,\n registerRuntimeTools,\n runtimeTool,\n type ExecutorPlugin,\n type PluginContext,\n ToolId,\n type SecretId,\n type ToolRegistration,\n} from \"@executor/sdk\";\n\nimport {\n introspect,\n parseIntrospectionJson,\n type IntrospectionResult,\n type IntrospectionType,\n type IntrospectionField,\n} from \"./introspect\";\nimport { extract } from \"./extract\";\nimport { GraphqlExtractionError } from \"./errors\";\nimport { makeGraphqlInvoker } from \"./invoke\";\nimport type { GraphqlOperationStore, StoredSource } from \"./operation-store\";\nimport { makeInMemoryOperationStore } from \"./kv-operation-store\";\nimport {\n ExtractedField,\n HeaderValue as HeaderValueSchema,\n InvocationConfig,\n OperationBinding,\n type HeaderValue as HeaderValueValue,\n type GraphqlOperationKind,\n} from \"./types\";\n\n// ---------------------------------------------------------------------------\n// Plugin config\n// ---------------------------------------------------------------------------\n\nexport type HeaderValue = HeaderValueValue;\n\nexport interface GraphqlSourceConfig {\n /** The GraphQL endpoint URL */\n readonly endpoint: string;\n /** Display name for the source. Falls back to namespace if not provided. */\n readonly name?: string;\n /** Optional: introspection JSON text (if endpoint doesn't support introspection) */\n readonly introspectionJson?: string;\n /** Namespace for the tools (derived from endpoint if not provided) */\n readonly namespace?: string;\n /** Headers applied to every request. Values can reference secrets. */\n readonly headers?: Record<string, HeaderValue>;\n}\n\n// ---------------------------------------------------------------------------\n// Plugin extension\n// ---------------------------------------------------------------------------\n\nexport interface GraphqlUpdateSourceInput {\n readonly name?: string;\n readonly endpoint?: string;\n readonly headers?: Record<string, HeaderValue>;\n}\n\nexport interface GraphqlPluginExtension {\n /** Add a GraphQL endpoint and register its operations as tools */\n readonly addSource: (\n config: GraphqlSourceConfig,\n ) => Effect.Effect<{ readonly toolCount: number }, Error>;\n\n /** Remove all tools from a previously added GraphQL source by namespace */\n readonly removeSource: (namespace: string) => Effect.Effect<void>;\n\n /** Fetch the full stored source by namespace (or null if missing) */\n readonly getSource: (namespace: string) => Effect.Effect<StoredSource | null>;\n\n /** Update config (endpoint, headers) for an existing GraphQL source */\n readonly updateSource: (\n namespace: string,\n input: GraphqlUpdateSourceInput,\n ) => Effect.Effect<void>;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nconst AddSourceInputSchema = Schema.Struct({\n endpoint: Schema.String,\n name: Schema.optional(Schema.String),\n introspectionJson: Schema.optional(Schema.String),\n namespace: Schema.optional(Schema.String),\n headers: Schema.optional(Schema.Record({ key: Schema.String, value: HeaderValueSchema })),\n});\ntype AddSourceInput = typeof AddSourceInputSchema.Type;\n\nconst AddSourceOutputSchema = Schema.Struct({\n sourceId: Schema.String,\n toolCount: Schema.Number,\n});\n\n/** Derive a namespace from an endpoint URL */\nconst namespaceFromEndpoint = (endpoint: string): string => {\n try {\n const url = new URL(endpoint);\n return url.hostname.replace(/[^a-z0-9]+/gi, \"_\").toLowerCase();\n } catch {\n return \"graphql\";\n }\n};\n\nconst buildOperationStringForField = (\n kind: GraphqlOperationKind,\n field: IntrospectionField,\n types: ReadonlyMap<string, IntrospectionType>,\n): string => {\n const opType = kind === \"query\" ? \"query\" : \"mutation\";\n\n const varDefs = field.args.map((arg) => {\n const typeName = formatTypeRef(arg.type);\n return `$${arg.name}: ${typeName}`;\n });\n\n const argPasses = field.args.map((arg) => `${arg.name}: $${arg.name}`);\n const selectionSet = buildSelectionSet(field.type, types, 0, new Set());\n\n const varDefsStr = varDefs.length > 0 ? `(${varDefs.join(\", \")})` : \"\";\n const argPassStr = argPasses.length > 0 ? `(${argPasses.join(\", \")})` : \"\";\n\n return `${opType}${varDefsStr} { ${field.name}${argPassStr}${selectionSet ? ` ${selectionSet}` : \"\"} }`;\n};\n\nimport type { IntrospectionTypeRef } from \"./introspect\";\n\nconst formatTypeRef = (ref: IntrospectionTypeRef): string => {\n switch (ref.kind) {\n case \"NON_NULL\":\n return ref.ofType ? `${formatTypeRef(ref.ofType)}!` : \"Unknown!\";\n case \"LIST\":\n return ref.ofType ? `[${formatTypeRef(ref.ofType)}]` : \"[Unknown]\";\n default:\n return ref.name ?? \"Unknown\";\n }\n};\n\nconst unwrapTypeName = (ref: IntrospectionTypeRef): string => {\n if (ref.name) return ref.name;\n if (ref.ofType) return unwrapTypeName(ref.ofType);\n return \"Unknown\";\n};\n\nconst buildSelectionSet = (\n ref: IntrospectionTypeRef,\n types: ReadonlyMap<string, IntrospectionType>,\n depth: number,\n seen: Set<string>,\n): string => {\n if (depth > 2) return \"\";\n\n const leafName = unwrapTypeName(ref);\n if (seen.has(leafName)) return \"\";\n\n const objectType = types.get(leafName);\n if (!objectType?.fields) return \"\";\n\n const kind = objectType.kind;\n if (kind === \"SCALAR\" || kind === \"ENUM\") return \"\";\n\n seen.add(leafName);\n\n const subFields = objectType.fields\n .filter((f) => !f.name.startsWith(\"__\"))\n .slice(0, 12)\n .map((f) => {\n const sub = buildSelectionSet(f.type, types, depth + 1, seen);\n return sub ? `${f.name} ${sub}` : f.name;\n });\n\n seen.delete(leafName);\n\n return subFields.length > 0 ? `{ ${subFields.join(\" \")} }` : \"\";\n};\n\nconst toRegistration = (field: ExtractedField, namespace: string): ToolRegistration => {\n const prefix = field.kind === \"mutation\" ? \"mutation\" : \"query\";\n const toolPath = `${prefix}.${field.fieldName}`;\n const description = Option.getOrElse(\n field.description,\n () => `GraphQL ${field.kind}: ${field.fieldName} -> ${field.returnTypeName}`,\n );\n\n return {\n id: ToolId.make(`${namespace}.${toolPath}`),\n pluginKey: \"graphql\",\n sourceId: namespace,\n name: toolPath,\n description,\n inputSchema: Option.getOrUndefined(field.inputSchema),\n outputSchema: undefined,\n };\n};\n\n// ---------------------------------------------------------------------------\n// Plugin factory\n// ---------------------------------------------------------------------------\n\nexport const graphqlPlugin = (options?: {\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>;\n readonly operationStore?: GraphqlOperationStore;\n}): ExecutorPlugin<\"graphql\", GraphqlPluginExtension> => {\n const httpClientLayer = options?.httpClientLayer ?? FetchHttpClient.layer;\n const operationStore = options?.operationStore ?? makeInMemoryOperationStore();\n\n return definePlugin({\n key: \"graphql\",\n init: (ctx: PluginContext) =>\n Effect.gen(function* () {\n yield* ctx.tools.registerInvoker(\n \"graphql\",\n makeGraphqlInvoker({\n operationStore,\n httpClientLayer,\n secrets: ctx.secrets,\n scopeId: ctx.scope.id,\n }),\n );\n\n yield* ctx.sources.addManager({\n kind: \"graphql\",\n\n list: () =>\n operationStore.listSources().pipe(\n Effect.map((metas) =>\n metas.map(\n (s) =>\n new Source({\n id: s.namespace,\n name: s.name,\n kind: \"graphql\",\n url: s.config.endpoint,\n runtime: false,\n canRemove: true,\n canRefresh: false,\n canEdit: true,\n }),\n ),\n ),\n ),\n\n remove: (sourceId: string) =>\n Effect.gen(function* () {\n yield* operationStore.removeByNamespace(sourceId);\n yield* operationStore.removeSource(sourceId);\n yield* ctx.tools.unregisterBySource(sourceId);\n }),\n\n detect: (url: string) =>\n Effect.gen(function* () {\n const trimmed = url.trim();\n if (!trimmed) return null;\n const parsed = yield* Effect.try(() => new URL(trimmed)).pipe(Effect.option);\n if (parsed._tag === \"None\") return null;\n\n const ok = yield* introspect(trimmed).pipe(\n Effect.provide(httpClientLayer),\n Effect.map(() => true),\n Effect.catchAll(() => Effect.succeed(false)),\n );\n\n if (!ok) return null;\n\n const name = namespaceFromEndpoint(trimmed);\n return new SourceDetectionResult({\n kind: \"graphql\",\n confidence: \"high\",\n endpoint: trimmed,\n name,\n namespace: name,\n });\n }),\n });\n\n const addSourceInternal = (config: GraphqlSourceConfig) =>\n Effect.gen(function* () {\n // Get introspection result — either by querying the endpoint or parsing provided JSON\n let introspectionResult: IntrospectionResult;\n if (config.introspectionJson) {\n introspectionResult = yield* parseIntrospectionJson(config.introspectionJson);\n } else {\n // Resolve all headers (including secret refs) for introspection\n const resolvedHeaders: Record<string, string> = {};\n if (config.headers) {\n for (const [name, value] of Object.entries(config.headers)) {\n if (typeof value === \"string\") {\n resolvedHeaders[name] = value;\n } else {\n const secret = yield* ctx.secrets\n .resolve(value.secretId as SecretId, ctx.scope.id)\n .pipe(Effect.catchAll(() => Effect.succeed(\"\")));\n if (secret) {\n resolvedHeaders[name] = value.prefix ? `${value.prefix}${secret}` : secret;\n }\n }\n }\n }\n\n introspectionResult = yield* introspect(\n config.endpoint,\n Object.keys(resolvedHeaders).length > 0 ? resolvedHeaders : undefined,\n ).pipe(Effect.provide(httpClientLayer));\n }\n\n const { result, definitions } = yield* extract(introspectionResult);\n const namespace = config.namespace ?? namespaceFromEndpoint(config.endpoint);\n\n // Register shared JSON Schema definitions ($ref targets)\n if (Object.keys(definitions).length > 0) {\n yield* ctx.tools.registerDefinitions(definitions);\n }\n\n const invocationConfig = new InvocationConfig({\n endpoint: config.endpoint,\n headers: config.headers ?? {},\n });\n\n // Build type map for operation string generation\n const typeMap = new Map<string, IntrospectionType>();\n for (const t of introspectionResult.__schema.types) {\n typeMap.set(t.name, t);\n }\n\n // Build field map for operation strings\n const fieldMap = new Map<\n string,\n { kind: GraphqlOperationKind; field: IntrospectionField }\n >();\n const schema = introspectionResult.__schema;\n\n for (const rootKind of [\"query\", \"mutation\"] as const) {\n const typeName =\n rootKind === \"query\" ? schema.queryType?.name : schema.mutationType?.name;\n if (!typeName) continue;\n const rootType = typeMap.get(typeName);\n if (!rootType?.fields) continue;\n for (const f of rootType.fields) {\n if (!f.name.startsWith(\"__\")) {\n fieldMap.set(`${rootKind}.${f.name}`, { kind: rootKind, field: f });\n }\n }\n }\n\n const registrations: ToolRegistration[] = [];\n\n yield* Effect.forEach(\n result.fields,\n (extractedField) => {\n const reg = toRegistration(extractedField, namespace);\n registrations.push(reg);\n\n const key = `${extractedField.kind}.${extractedField.fieldName}`;\n const entry = fieldMap.get(key);\n\n const operationString = entry\n ? buildOperationStringForField(entry.kind, entry.field, typeMap)\n : `${extractedField.kind} { ${extractedField.fieldName} }`;\n\n const binding = new OperationBinding({\n kind: extractedField.kind,\n fieldName: extractedField.fieldName,\n operationString,\n variableNames: extractedField.arguments.map((a) => a.name),\n });\n\n return operationStore.put(reg.id, namespace, binding);\n },\n { discard: true },\n );\n\n yield* ctx.tools.register(registrations);\n\n yield* operationStore.putSource({\n namespace,\n name: config.name?.trim() || namespace,\n config: {\n endpoint: config.endpoint,\n introspectionJson: config.introspectionJson,\n namespace: config.namespace,\n headers: config.headers,\n },\n invocationConfig,\n });\n\n return { sourceId: namespace, toolCount: registrations.length };\n });\n\n const runtimeTools = yield* registerRuntimeTools({\n registry: ctx.tools,\n sources: ctx.sources,\n pluginKey: \"graphql\",\n source: {\n id: \"built-in\",\n name: \"Built In\",\n kind: \"built-in\",\n },\n tools: [\n runtimeTool({\n id: \"graphql.addSource\",\n name: \"graphql.addSource\",\n description: \"Add a GraphQL endpoint and register its operations as tools\",\n inputSchema: AddSourceInputSchema,\n outputSchema: AddSourceOutputSchema,\n handler: (input: AddSourceInput) => addSourceInternal(input),\n }),\n ],\n });\n\n return {\n extension: {\n addSource: (config: GraphqlSourceConfig) =>\n addSourceInternal(config).pipe(\n Effect.map(({ toolCount }) => ({ toolCount })),\n Effect.mapError(\n (err) =>\n new GraphqlExtractionError({\n message: err instanceof Error ? err.message : String(err),\n }),\n ),\n ),\n\n removeSource: (namespace: string) =>\n Effect.gen(function* () {\n const toolIds = yield* operationStore.removeByNamespace(namespace);\n if (toolIds.length > 0) {\n yield* ctx.tools.unregister(toolIds);\n }\n yield* operationStore.removeSource(namespace);\n }),\n\n getSource: (namespace: string) => operationStore.getSource(namespace),\n\n updateSource: (namespace: string, input: GraphqlUpdateSourceInput) =>\n Effect.gen(function* () {\n const existing = yield* operationStore.getSource(namespace);\n if (!existing) return;\n\n const updatedConfig = {\n ...existing.config,\n ...(input.endpoint !== undefined ? { endpoint: input.endpoint } : {}),\n ...(input.headers !== undefined\n ? { headers: input.headers as Record<string, HeaderValueValue> }\n : {}),\n };\n\n const newInvocationConfig = new InvocationConfig({\n endpoint: updatedConfig.endpoint,\n headers: (updatedConfig.headers ?? {}) as Record<string, HeaderValueValue>,\n });\n\n yield* operationStore.putSource({\n namespace,\n name: input.name?.trim() || existing.name,\n config: updatedConfig,\n invocationConfig: newInvocationConfig,\n });\n }),\n },\n\n close: () => runtimeTools.close(),\n };\n }),\n });\n};\n"],"mappings":"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","names":["Schema","Effect","Effect","Effect","Option","HttpClient","HttpClientRequest","Effect","HttpClient","HttpClientRequest","Option","Effect","Schema","Schema","Schema","Schema","Effect","Effect","Option","Schema","Schema","formatTypeRef","unwrapTypeName","Option","Effect"]}
package/dist/promise.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export type { GraphqlSourceConfig } from "./sdk/plugin";
2
- export type { HeaderValue } from "./sdk/types";
3
- export type { GraphqlOperationStore } from "./sdk/operation-store";
4
- export interface GraphqlPluginOptions {
5
- readonly operationStore?: import("./sdk/operation-store").GraphqlOperationStore;
6
- }
7
- export declare const graphqlPlugin: (options?: GraphqlPluginOptions) => import("@executor-js/sdk").ExecutorPlugin<"graphql", import("./sdk").GraphqlPluginExtension>;
@@ -1,10 +0,0 @@
1
- /**
2
- * Config-file wrapper for GraphqlOperationStore.
3
- *
4
- * Decorates an underlying store so that `putSource` and `removeSource` also
5
- * write to executor.jsonc.
6
- */
7
- import { FileSystem } from "@effect/platform";
8
- import type { Layer } from "effect";
9
- import type { GraphqlOperationStore } from "./operation-store";
10
- export declare const withConfigFile: (inner: GraphqlOperationStore, configPath: string, fsLayer: Layer.Layer<FileSystem.FileSystem>) => GraphqlOperationStore;
@@ -1 +0,0 @@
1
- export {};
@@ -1,4 +0,0 @@
1
- import { type Kv } from "@executor-js/sdk";
2
- import type { GraphqlOperationStore } from "./operation-store";
3
- export declare const makeKvOperationStore: (kv: Kv, namespace: string) => GraphqlOperationStore;
4
- export declare const makeInMemoryOperationStore: () => GraphqlOperationStore;
@@ -1,31 +0,0 @@
1
- import type { Effect } from "effect";
2
- import type { ToolId } from "@executor-js/sdk";
3
- import type { OperationBinding, InvocationConfig, HeaderValue } from "./types";
4
- export interface SourceConfig {
5
- readonly endpoint: string;
6
- readonly introspectionJson?: string;
7
- readonly namespace?: string;
8
- readonly headers?: Record<string, HeaderValue>;
9
- }
10
- export interface StoredSource {
11
- readonly namespace: string;
12
- readonly name: string;
13
- readonly config: SourceConfig;
14
- /** Pre-resolved runtime invocation config (endpoint, headers). */
15
- readonly invocationConfig: InvocationConfig;
16
- }
17
- export interface GraphqlOperationStore {
18
- readonly get: (toolId: ToolId) => Effect.Effect<{
19
- binding: OperationBinding;
20
- namespace: string;
21
- } | null>;
22
- readonly put: (toolId: ToolId, namespace: string, binding: OperationBinding) => Effect.Effect<void>;
23
- readonly remove: (toolId: ToolId) => Effect.Effect<void>;
24
- readonly listByNamespace: (namespace: string) => Effect.Effect<readonly ToolId[]>;
25
- readonly removeByNamespace: (namespace: string) => Effect.Effect<readonly ToolId[]>;
26
- readonly putSource: (source: StoredSource) => Effect.Effect<void>;
27
- readonly removeSource: (namespace: string) => Effect.Effect<void>;
28
- readonly listSources: () => Effect.Effect<readonly StoredSource[]>;
29
- readonly getSource: (namespace: string) => Effect.Effect<StoredSource | null>;
30
- readonly getSourceConfig: (namespace: string) => Effect.Effect<SourceConfig | null>;
31
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,51 +0,0 @@
1
- import { Schema } from "effect";
2
- import { InvocationConfig } from "./types";
3
- declare const StoredSourceSchema_base: Schema.Class<StoredSourceSchema, {
4
- namespace: typeof Schema.String;
5
- name: typeof Schema.String;
6
- config: Schema.Struct<{
7
- endpoint: typeof Schema.String;
8
- introspectionJson: Schema.optional<typeof Schema.String>;
9
- namespace: Schema.optional<typeof Schema.String>;
10
- headers: Schema.optional<Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.Struct<{
11
- secretId: typeof Schema.String;
12
- prefix: Schema.optional<typeof Schema.String>;
13
- }>]>>>;
14
- }>;
15
- invocationConfig: Schema.optional<typeof InvocationConfig>;
16
- }, Schema.Struct.Encoded<{
17
- namespace: typeof Schema.String;
18
- name: typeof Schema.String;
19
- config: Schema.Struct<{
20
- endpoint: typeof Schema.String;
21
- introspectionJson: Schema.optional<typeof Schema.String>;
22
- namespace: Schema.optional<typeof Schema.String>;
23
- headers: Schema.optional<Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.Struct<{
24
- secretId: typeof Schema.String;
25
- prefix: Schema.optional<typeof Schema.String>;
26
- }>]>>>;
27
- }>;
28
- invocationConfig: Schema.optional<typeof InvocationConfig>;
29
- }>, never, {
30
- readonly name: string;
31
- } & {
32
- readonly namespace: string;
33
- } & {
34
- readonly invocationConfig?: InvocationConfig | undefined;
35
- } & {
36
- readonly config: {
37
- readonly endpoint: string;
38
- readonly namespace?: string | undefined;
39
- readonly headers?: {
40
- readonly [x: string]: string | {
41
- readonly secretId: string;
42
- readonly prefix?: string | undefined;
43
- };
44
- } | undefined;
45
- readonly introspectionJson?: string | undefined;
46
- };
47
- }, {}, {}>;
48
- export declare class StoredSourceSchema extends StoredSourceSchema_base {
49
- }
50
- export type StoredSourceSchemaType = typeof StoredSourceSchema.Type;
51
- export {};