UNPKG

@copilotkit/runtime

Version:

<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />

436 lines 15.8 kB
import "reflect-metadata"; //#region src/v2/runtime/intelligence-platform/client.d.ts /** * Client for the CopilotKit Intelligence Platform REST API. * * Construct the client once and pass it to any consumers that need it * (e.g. `CopilotRuntime`, `IntelligenceAgentRunner`): * * ```ts * import { CopilotKitIntelligence, CopilotRuntime } from "@copilotkit/runtime"; * * const intelligence = new CopilotKitIntelligence({ * apiUrl: "https://api.copilotkit.ai", * wsUrl: "wss://api.copilotkit.ai", * apiKey: process.env.COPILOTKIT_API_KEY!, * }); * * const runtime = new CopilotRuntime({ * agents, * intelligence, * }); * ``` */ /** Payload passed to `onThreadDeleted` listeners. */ interface ThreadDeletedPayload { threadId: string; userId: string; agentId: string; } interface CopilotKitIntelligenceConfig { /** Base URL of the intelligence platform API, e.g. "https://api.copilotkit.ai" */ apiUrl: string; /** Intelligence websocket base URL. Runner and client socket URLs are derived from this. */ wsUrl: string; /** API key for authenticating with the intelligence platform */ apiKey: string; /** * Enable the Intelligence platform's MCP server (bash + thread tools) on * every `BuiltInAgent` run that resolves a user. The auto-attach is * implemented in `configureAgentForRequest`: when this flag is `true` * AND the runtime's `identifyUser` callback has placed a user-id onto * the agent's forwarded headers AND the user has not already configured * an MCP server pointing at the same URL, the server is appended to the * agent's effective MCP server list for that run. * * Defaults to `false` — opt-in. Existing intelligence setups continue to * work without the bash MCP server unless they flip this flag. */ mcpServer?: boolean; /** * Initial listener invoked after a thread is created. * Prefer {@link CopilotKitIntelligence.onThreadCreated} for multiple listeners. */ onThreadCreated?: (thread: ThreadSummary) => void; /** * Initial listener invoked after a thread is updated. * Prefer {@link CopilotKitIntelligence.onThreadUpdated} for multiple listeners. */ onThreadUpdated?: (thread: ThreadSummary) => void; /** * Initial listener invoked after a thread is deleted. * Prefer {@link CopilotKitIntelligence.onThreadDeleted} for multiple listeners. */ onThreadDeleted?: (params: ThreadDeletedPayload) => void; } /** * Summary metadata for a single thread returned by the platform. * * This is the shape returned by list, get, create, and update operations. * It does not include the thread's message history — use * {@link CopilotKitIntelligence.getThreadMessages} for that. */ interface ThreadSummary { /** Platform-assigned unique identifier. */ id: string; /** Human-readable display name, or `null` if the thread has not been named. */ name: string | null; /** ISO-8601 timestamp of the most recent agent run on this thread. */ lastRunAt?: string; /** ISO-8601 timestamp of the most recent metadata update. */ lastUpdatedAt?: string; /** ISO-8601 timestamp when the thread was created. */ createdAt?: string; /** ISO-8601 timestamp when the thread was last updated. */ updatedAt?: string; /** Whether the thread has been archived. Archived threads are excluded from default list results. */ archived?: boolean; /** The agent that owns this thread. */ agentId?: string; /** The user who created this thread. */ createdById?: string; /** The organization this thread belongs to. */ organizationId?: string; } /** Response from listing threads for a user/agent pair. */ interface ListThreadsResponse { /** The matching threads, sorted by the platform's default ordering. */ threads: ThreadSummary[]; /** Join code for subscribing to realtime metadata updates for these threads. */ joinCode: string; /** Short-lived token for authenticating the realtime subscription. */ joinToken?: string; /** Opaque cursor for fetching the next page. `null` or absent when there are no more pages. */ nextCursor?: string | null; } /** * Fields that can be updated on a thread via {@link CopilotKitIntelligence.updateThread}. * * Additional platform-specific fields can be passed as extra keys and will be * forwarded to the PATCH request body. */ interface UpdateThreadRequest { /** New human-readable display name for the thread. */ name?: string; [key: string]: unknown; } /** Parameters for creating a new thread via {@link CopilotKitIntelligence.createThread}. */ interface CreateThreadRequest { /** Client-generated unique identifier for the new thread. */ threadId: string; /** The user creating the thread. Used for authorization and scoping. */ userId: string; /** The agent this thread belongs to. */ agentId: string; /** Optional initial display name. If omitted, the thread is unnamed until explicitly renamed. */ name?: string; } /** Credentials returned when locking or joining a thread's realtime channel. */ interface ThreadConnectionResponse { /** Canonical platform thread identifier for the run or connection. */ threadId: string; /** Canonical platform run identifier for an active run lock. */ runId?: string; /** Short-lived token for authenticating the Phoenix channel join. */ joinToken: string; /** Lock metadata echoed back by the platform. */ lock?: ThreadLockInfo; } interface SubscribeToThreadsRequest { userId: string; } interface SubscribeToThreadsResponse { joinToken: string; } type ConnectThreadResponse = ThreadConnectionResponse | null; interface AcquireThreadLockResponse extends ThreadConnectionResponse { /** Canonical platform run identifier for the acquired lock. */ runId: string; } /** A single message within a thread's persisted history. */ interface ThreadMessage { /** Unique identifier for this message. */ id: string; /** Message role, e.g. `"user"`, `"assistant"`, `"tool"`. */ role: string; /** Text content of the message. May be absent for tool-call-only messages. */ content?: string; /** Tool calls initiated by this message (assistant role only). */ toolCalls?: Array<{ id: string; name: string; /** JSON-encoded arguments passed to the tool. */ args: string; }>; /** For tool-result messages, the ID of the tool call this message responds to. */ toolCallId?: string; } /** Response from {@link CopilotKitIntelligence.getThreadMessages}. */ interface ThreadMessagesResponse { messages: ThreadMessage[]; } /** * Persisted AG-UI event for the inspector's debugging views. The platform * stores raw events keyed by run; the `_inspect` route returns them in * replay order (oldest first) across every run that targeted the thread. */ interface ThreadInspectEvent { type: string; [key: string]: unknown; } /** * Response from {@link CopilotKitIntelligence.getThreadEvents}. Mirrors the * `ThreadEventsResult` shape returned by the platform's * `GET /api/_inspect/threads/:id/events` endpoint. */ interface ThreadEventsResponse { events: ThreadInspectEvent[]; /** Row IDs the platform failed to decode (raw column corrupted). */ decodeErrorRowIds: string[]; /** True when the platform hit its per-thread event cap. */ truncated: boolean; } /** * Response from {@link CopilotKitIntelligence.getThreadState}. Mirrors the * discriminated `ThreadStateResult` returned by the platform's * `GET /api/_inspect/threads/:id/state` endpoint, which folds RFC 6902 * STATE_DELTA events on top of the latest STATE_SNAPSHOT. */ type ThreadStateResponse = { kind: "no-snapshot"; } | { kind: "snapshot-decode-error"; } | { kind: "snapshot"; state: unknown; skippedDeltas: number; }; interface AcquireThreadLockRequest { threadId: string; runId: string; userId: string; agentId: string; /** Custom Redis key prefix for the lock (default: "thread"). */ lockKeyPrefix?: string; /** Lock TTL in seconds. When set, the lock auto-expires after this duration. */ ttlSeconds?: number; } interface RenewThreadLockRequest { threadId: string; runId: string; /** New TTL to set on the lock in seconds. */ ttlSeconds: number; /** Must match the prefix used when acquiring. */ lockKeyPrefix?: string; } interface CleanupThreadLockRequest { threadId: string; runId: string; } interface RenewThreadLockResponse { ttlSeconds: number; } interface ThreadLockInfo { key: string; ttlSeconds: number | null; } declare class CopilotKitIntelligence { #private; constructor(config: CopilotKitIntelligenceConfig); /** * Register a listener invoked whenever a thread is created. * * Multiple listeners can be registered. Each call returns an unsubscribe * function that removes the listener when called. * * @param callback - Receives the newly created {@link ThreadSummary}. * @returns A function that removes this listener when called. * * @example * ```ts * const unsubscribe = intelligence.onThreadCreated((thread) => { * console.log("Thread created:", thread.id); * }); * // later… * unsubscribe(); * ``` */ onThreadCreated(callback: (thread: ThreadSummary) => void): () => void; /** * Register a listener invoked whenever a thread is updated (including archive). * * Multiple listeners can be registered. Each call returns an unsubscribe * function that removes the listener when called. * * @param callback - Receives the updated {@link ThreadSummary}. * @returns A function that removes this listener when called. */ onThreadUpdated(callback: (thread: ThreadSummary) => void): () => void; /** * Register a listener invoked whenever a thread is deleted. * * Multiple listeners can be registered. Each call returns an unsubscribe * function that removes the listener when called. * * @param callback - Receives the {@link ThreadDeletedPayload} identifying * the deleted thread. * @returns A function that removes this listener when called. */ onThreadDeleted(callback: (params: ThreadDeletedPayload) => void): () => void; ɵgetApiUrl(): string; ɵgetRunnerWsUrl(): string; ɵgetClientWsUrl(): string; ɵgetRunnerAuthToken(): string; /** @internal Used by the runtime's auto-attach to populate `Authorization`. */ ɵgetApiKey(): string; /** @internal Used by the runtime's auto-attach to gate MCP attachment. */ ɵisMcpServerEnabled(): boolean; /** * List all non-archived threads for a given user and agent. * * @param params.userId - User whose threads to list. * @param params.agentId - Agent whose threads to list. * @returns The thread list along with realtime subscription credentials. * @throws {@link PlatformRequestError} on non-2xx responses. */ listThreads(params: { userId: string; agentId: string; includeArchived?: boolean; limit?: number; cursor?: string; }): Promise<ListThreadsResponse>; ɵsubscribeToThreads(params: SubscribeToThreadsRequest): Promise<SubscribeToThreadsResponse>; /** * Update thread metadata (e.g. name). * * Triggers the `onThreadUpdated` lifecycle callback on success. * * @returns The updated thread summary. * @throws {@link PlatformRequestError} on non-2xx responses. */ updateThread(params: { threadId: string; userId: string; agentId: string; updates: UpdateThreadRequest; }): Promise<ThreadSummary>; /** * Create a new thread on the platform. * * Triggers the `onThreadCreated` lifecycle callback on success. * * @returns The newly created thread summary. * @throws {@link PlatformRequestError} with status 409 if a thread with the * same `threadId` already exists. */ createThread(params: CreateThreadRequest): Promise<ThreadSummary>; /** * Fetch a single thread by ID. * * @returns The thread summary. * @throws {@link PlatformRequestError} with status 404 if the thread does * not exist. */ getThread(params: { threadId: string; }): Promise<ThreadSummary>; /** * Get an existing thread or create it if it does not exist. * * Handles the race where a concurrent request creates the thread between * the initial 404 and the subsequent `createThread` call by catching the * 409 Conflict and retrying the get. * * Triggers the `onThreadCreated` lifecycle callback when a new thread is * created. * * @returns An object containing the thread and a `created` flag indicating * whether the thread was newly created (`true`) or already existed (`false`). * @throws {@link PlatformRequestError} on non-2xx responses other than * 404 (get) and 409 (create race). */ getOrCreateThread(params: CreateThreadRequest): Promise<{ thread: ThreadSummary; created: boolean; }>; /** * Fetch the full message history for a thread. * * @returns All persisted messages in chronological order. * @throws {@link PlatformRequestError} on non-2xx responses. */ getThreadMessages(params: { threadId: string; }): Promise<ThreadMessagesResponse>; /** * Fetch the persisted AG-UI event stream for a thread. * * Backed by the platform's `GET /api/_inspect/threads/:id/events` * introspection endpoint (see Intelligence PR #144). Events are returned * in replay order across every run that targeted the thread. The * `_inspect/` prefix flags this as debug-only — production code paths * must not depend on it. * * @throws {@link PlatformRequestError} on non-2xx responses. */ getThreadEvents(params: { threadId: string; }): Promise<ThreadEventsResponse>; /** * Fetch the current agent state for a thread. * * Backed by the platform's `GET /api/_inspect/threads/:id/state` * introspection endpoint (see Intelligence PR #144). The platform folds * RFC 6902 STATE_DELTA events on top of the latest STATE_SNAPSHOT, so * the returned state reflects the thread's current state — not just the * last snapshot. The discriminated response distinguishes "no snapshot * persisted yet" from "snapshot present" so consumers can render the * correct empty state. * * @throws {@link PlatformRequestError} on non-2xx responses. */ getThreadState(params: { threadId: string; }): Promise<ThreadStateResponse>; /** * Mark a thread as archived. * * Archived threads are excluded from {@link listThreads} results. * Triggers the `onThreadUpdated` lifecycle callback on success. * * @throws {@link PlatformRequestError} on non-2xx responses. */ archiveThread(params: { threadId: string; userId: string; agentId: string; }): Promise<void>; /** * Permanently delete a thread and its message history. * * This is irreversible. Triggers the `onThreadDeleted` lifecycle callback * on success. * * @throws {@link PlatformRequestError} on non-2xx responses. */ deleteThread(params: { threadId: string; userId: string; agentId: string; }): Promise<void>; ɵacquireThreadLock(params: AcquireThreadLockRequest): Promise<AcquireThreadLockResponse>; ɵcleanupThreadLock(params: CleanupThreadLockRequest): Promise<void>; ɵrenewThreadLock(params: RenewThreadLockRequest): Promise<RenewThreadLockResponse>; ɵgetActiveJoinCode(params: { threadId: string; userId: string; }): Promise<ThreadConnectionResponse>; ɵconnectThread(params: { threadId: string; userId: string; agentId: string; }): Promise<ConnectThreadResponse>; } //#endregion export { CopilotKitIntelligence, CopilotKitIntelligenceConfig, CreateThreadRequest, ListThreadsResponse, SubscribeToThreadsRequest, SubscribeToThreadsResponse, ThreadSummary, UpdateThreadRequest }; //# sourceMappingURL=client.d.mts.map