import type { OperatorContractManifest, OperatorMethodContract } from '@pellux/goodvibes-contracts'; import type { OperatorMethodInput, OperatorMethodOutput, OperatorStreamMethodId, OperatorTypedMethodId } from '@pellux/goodvibes-contracts'; import type { HttpTransport } from '@pellux/goodvibes-transport-http'; import { type ContractInvokeOptions, type ContractStreamOptions, type MethodArgs, type WithoutKeys } from '@pellux/goodvibes-transport-http'; /** Per-call options forwarded to the transport's `invokeContractRoute`. */ export interface OperatorRemoteClientInvokeOptions extends ContractInvokeOptions { } /** Per-call options forwarded to the transport's `openContractRouteStream`. */ export interface OperatorRemoteClientStreamOptions extends ContractStreamOptions { } /** Internal options for `createOperatorRemoteClient`. */ export interface OperatorRemoteClientOptions { /** Factory that maps a method id to its Zod response schema, when available. */ readonly getResponseSchema?: ((methodId: string) => ContractInvokeOptions['responseSchema']) | undefined; /** * Applies to JSON request/response methods. Server-sent event stream payloads * are validated by their realtime event schemas at the transport boundary. * * @defaultValue true */ readonly validateResponses?: boolean | undefined; } /** * Argument tuple for a fully-typed `invoke()` call on a given operator method id. * Used internally by the named-method facades (e.g. `sdk.operator.sessions.create`). */ export type KnownMethodArgs = MethodArgs, OperatorRemoteClientInvokeOptions>; /** * Like `KnownMethodArgs` but with some input keys omitted (used for path-parameter * methods whose prefix keys are supplied as positional function arguments). */ export type KnownPathMethodArgs = MethodArgs, TKeys>, OperatorRemoteClientInvokeOptions>; /** * Argument tuple for a fully-typed `stream()` call on a given operator stream method id. */ export type KnownStreamArgs = MethodArgs, OperatorRemoteClientStreamOptions>; /** * Low-level operator remote client. Returned by `createOperatorRemoteClient`. * Prefer `OperatorSdk` (from `createOperatorSdk`) which adds schema validation * and typed method facades. */ export interface OperatorRemoteClient { /** The underlying HTTP transport used to issue all requests. */ readonly transport: HttpTransport; /** The operator contract manifest describing all available methods and events. */ readonly contract: OperatorContractManifest; /** Return all method descriptors in the operator contract. */ listOperations(): readonly OperatorMethodContract[]; /** * Look up a contract method descriptor by its string id. * @throws `GoodVibesSdkError` when the method id is not in the contract. */ getOperation(methodId: string): OperatorMethodContract; invoke(methodId: TMethodId, ...args: KnownMethodArgs): Promise>; invoke(methodId: string, input?: Record, options?: OperatorRemoteClientInvokeOptions): Promise; stream(methodId: TMethodId, ...args: KnownStreamArgs): Promise<() => void>; readonly sessions: { create(...args: KnownMethodArgs<'sessions.create'>): Promise>; get(sessionId: string, ...args: KnownPathMethodArgs<'sessions.get', 'sessionId'>): Promise>; list(...args: KnownMethodArgs<'sessions.list'>): Promise>; messages: { create(sessionId: string, ...args: KnownPathMethodArgs<'sessions.messages.create', 'sessionId'>): Promise>; list(sessionId: string, ...args: KnownPathMethodArgs<'sessions.messages.list', 'sessionId'>): Promise>; }; inputs: { cancel(sessionId: string, inputId: string, ...args: KnownPathMethodArgs<'sessions.inputs.cancel', 'sessionId' | 'inputId'>): Promise>; }; followUp(...args: KnownMethodArgs<'sessions.followUp'>): Promise>; steer(...args: KnownMethodArgs<'sessions.steer'>): Promise>; close(sessionId: string, ...args: KnownPathMethodArgs<'sessions.close', 'sessionId'>): Promise>; reopen(sessionId: string, ...args: KnownPathMethodArgs<'sessions.reopen', 'sessionId'>): Promise>; }; readonly tasks: { create(...args: KnownMethodArgs<'tasks.create'>): Promise>; get(taskId: string, ...args: KnownPathMethodArgs<'tasks.get', 'taskId'>): Promise>; list(...args: KnownMethodArgs<'tasks.list'>): Promise>; status(...args: KnownMethodArgs<'tasks.status'>): Promise>; cancel(taskId: string, ...args: KnownPathMethodArgs<'tasks.cancel', 'taskId'>): Promise>; retry(taskId: string, ...args: KnownPathMethodArgs<'tasks.retry', 'taskId'>): Promise>; }; readonly approvals: { list(...args: KnownMethodArgs<'approvals.list'>): Promise>; claim(approvalId: string, ...args: KnownPathMethodArgs<'approvals.claim', 'approvalId'>): Promise>; approve(approvalId: string, ...args: KnownPathMethodArgs<'approvals.approve', 'approvalId'>): Promise>; deny(approvalId: string, ...args: KnownPathMethodArgs<'approvals.deny', 'approvalId'>): Promise>; cancel(approvalId: string, ...args: KnownPathMethodArgs<'approvals.cancel', 'approvalId'>): Promise>; }; readonly providers: { list(...args: KnownMethodArgs<'providers.list'>): Promise>; get(providerId: string, ...args: KnownPathMethodArgs<'providers.get', 'providerId'>): Promise>; usage(providerId: string, ...args: KnownPathMethodArgs<'providers.usage.get', 'providerId'>): Promise>; }; readonly accounts: { snapshot(...args: KnownMethodArgs<'accounts.snapshot'>): Promise>; }; readonly localAuth: { status(...args: KnownMethodArgs<'local_auth.status'>): Promise>; }; readonly control: { snapshot(...args: KnownMethodArgs<'control.snapshot'>): Promise>; status(...args: KnownMethodArgs<'control.status'>): Promise>; contract(...args: KnownMethodArgs<'control.contract'>): Promise>; methods: { list(...args: KnownMethodArgs<'control.methods.list'>): Promise>; get(methodId: string, ...args: KnownPathMethodArgs<'control.methods.get', 'methodId'>): Promise>; }; auth: { current(...args: KnownMethodArgs<'control.auth.current'>): Promise>; login(...args: KnownMethodArgs<'control.auth.login'>): Promise>; }; events: { catalog(...args: KnownMethodArgs<'control.events.catalog'>): Promise>; stream(...args: KnownStreamArgs<'control.events.stream'>): Promise<() => void>; }; }; readonly telemetry: { snapshot(...args: KnownMethodArgs<'telemetry.snapshot'>): Promise>; events(...args: KnownMethodArgs<'telemetry.events.list'>): Promise>; errors(...args: KnownMethodArgs<'telemetry.errors.list'>): Promise>; traces(...args: KnownMethodArgs<'telemetry.traces.list'>): Promise>; metrics(...args: KnownMethodArgs<'telemetry.metrics.get'>): Promise>; otlp: { traces(...args: KnownMethodArgs<'telemetry.otlp.traces'>): Promise>; logs(...args: KnownMethodArgs<'telemetry.otlp.logs'>): Promise>; metrics(...args: KnownMethodArgs<'telemetry.otlp.metrics'>): Promise>; }; stream(...args: KnownStreamArgs<'telemetry.stream'>): Promise<() => void>; }; } /** * Construct a low-level operator remote client from a transport and contract manifest. * * Typically called by `createOperatorSdk`; use that factory unless you need to * supply a custom contract manifest or a non-standard transport. * * @param transport - The HTTP transport to use for all requests. * @param contract - The operator contract manifest. * @param clientOptions - Optional response validation settings. * @returns An `OperatorRemoteClient` with typed invoke/stream methods. */ export declare function createOperatorRemoteClient(transport: HttpTransport, contract: OperatorContractManifest, clientOptions?: OperatorRemoteClientOptions): OperatorRemoteClient; //# sourceMappingURL=client-core.d.ts.map