@copilotkitnext/runtime 0.0.22-alpha.0 → 0.0.22-alpha.2
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.
- package/dist/chunk-PXQQQ6KP.mjs +23 -0
- package/dist/chunk-PXQQQ6KP.mjs.map +1 -0
- package/dist/express.d.mts +1 -1
- package/dist/express.d.ts +1 -1
- package/dist/express.js +366 -1008
- package/dist/express.js.map +1 -1
- package/dist/express.mjs +363 -315
- package/dist/express.mjs.map +1 -1
- package/dist/index.d.mts +5 -64
- package/dist/index.d.ts +5 -64
- package/dist/index.js +22 -1304
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -258
- package/dist/index.mjs.map +1 -1
- package/dist/{runtime-njBGN6lZ.d.mts → runtime-BEcxV64L.d.mts} +1 -29
- package/dist/{runtime-njBGN6lZ.d.ts → runtime-BEcxV64L.d.ts} +1 -29
- package/package.json +7 -7
- package/dist/chunk-LDTC5BLU.mjs +0 -1040
- package/dist/chunk-LDTC5BLU.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runner/agent-runner.ts","../src/runner/base.ts","../src/runner/utils.ts","../src/runner/in-memory-runner.ts","../package.json","../src/runtime.ts","../src/handlers/handle-run.ts","../src/handlers/handle-connect.ts","../src/handlers/handle-stop.ts","../src/handlers/get-runtime-info.ts","../src/handlers/handle-transcribe.ts","../src/middleware.ts","../src/endpoints/single-route-helpers.ts"],"sourcesContent":["import { AbstractAgent, BaseEvent, RunAgentInput } from \"@ag-ui/client\";\nimport { Observable } from \"rxjs\";\n\nexport interface AgentRunnerRunRequest {\n threadId: string;\n agent: AbstractAgent;\n input: RunAgentInput;\n scope?: ResourceScope | null;\n}\n\nexport interface AgentRunnerConnectRequest {\n threadId: string;\n scope?: ResourceScope | null;\n}\n\nexport interface AgentRunnerIsRunningRequest {\n threadId: string;\n}\n\nexport interface AgentRunnerStopRequest {\n threadId: string;\n}\n\nexport abstract class AgentRunner {\n abstract run(request: AgentRunnerRunRequest): Observable<BaseEvent>;\n abstract connect(request: AgentRunnerConnectRequest): Observable<BaseEvent>;\n abstract isRunning(request: AgentRunnerIsRunningRequest): Promise<boolean>;\n abstract stop(request: AgentRunnerStopRequest): Promise<boolean | undefined>;\n\n // Thread APIs\n abstract listThreads(request: AgentRunnerListThreadsRequest): Promise<AgentRunnerListThreadsResponse>;\n abstract getThreadMetadata(threadId: string, scope?: ResourceScope | null): Promise<ThreadMetadata | null>;\n abstract deleteThread(threadId: string, scope?: ResourceScope | null): Promise<void>;\n}\n\n// New thread API types\nexport interface AgentRunnerListThreadsRequest {\n scope?: ResourceScope | null;\n limit?: number;\n offset?: number;\n}\n\nexport interface AgentRunnerListThreadsResponse {\n threads: ThreadMetadata[];\n total: number;\n}\n\nexport interface ResourceScope {\n resourceId: string | string[];\n properties?: Record<string, any>;\n}\n\nexport interface ThreadMetadata {\n threadId: string;\n createdAt: number;\n lastActivityAt: number;\n isRunning: boolean;\n messageCount: number;\n firstMessage?: string;\n resourceId?: string;\n properties?: Record<string, any>;\n}\n","import { Observable, ReplaySubject } from \"rxjs\";\nimport {\n AgentRunner,\n AgentRunnerConnectRequest,\n AgentRunnerIsRunningRequest,\n AgentRunnerListThreadsRequest,\n AgentRunnerListThreadsResponse,\n AgentRunnerRunRequest,\n AgentRunnerStopRequest,\n ResourceScope,\n ThreadMetadata,\n} from \"./agent-runner\";\nimport { AbstractAgent, BaseEvent, EventType, RunStartedEvent, compactEvents, RunAgentInput } from \"@ag-ui/client\";\nimport { finalizeRunEvents } from \"@copilotkitnext/shared\";\nimport { buildHistoricMessageIdIndex, deriveThreadMetadata, sanitizeRunStarted, matchesScope } from \"./utils\";\n\ntype ActiveContext = {\n agent?: AbstractAgent;\n stopRequested: boolean;\n};\n\nexport abstract class AgentRunnerBase extends AgentRunner {\n private active = new Map<string, ActiveContext>();\n private threadScope = new Map<string, ResourceScope | null | undefined>();\n\n constructor() { super(); }\n\n // Protected hooks every backend implements\n protected abstract acquireRun(threadId: string, runId: string): Promise<boolean>;\n protected abstract releaseRun(threadId: string): Promise<void>;\n protected abstract isRunningState(threadId: string): Promise<boolean>;\n\n protected abstract listRuns(threadId: string): Promise<Array<{ runId: string; events: BaseEvent[]; createdAt: number }>>;\n protected abstract saveRun(\n threadId: string,\n runId: string,\n events: BaseEvent[],\n input: RunAgentInput,\n parentRunId: string | null,\n ): Promise<void>;\n protected abstract pageThreads(params: {\n scope?: ResourceScope | null;\n limit?: number;\n offset?: number;\n }): Promise<{ threadIds: string[]; total: number }>;\n protected abstract deleteThreadStorage(threadId: string, scope?: ResourceScope | null): Promise<void>;\n\n protected abstract publishLive(threadId: string, event: BaseEvent): Promise<void> | void;\n protected abstract completeLive(threadId: string): Promise<void> | void;\n protected abstract subscribeLive(threadId: string): Observable<BaseEvent>;\n protected closeLive?(threadId: string): Promise<void> | void;\n\n run(request: AgentRunnerRunRequest): Observable<BaseEvent> {\n const { threadId, input, agent, scope } = request;\n if (scope !== undefined) {\n if (!this.threadScope.has(threadId)) this.threadScope.set(threadId, scope ?? null);\n }\n\n // Synchronous guard to satisfy immediate error expectation when already running\n if (this.active.has(threadId)) {\n throw new Error(\"Thread already running\");\n }\n\n const runSubject = new ReplaySubject<BaseEvent>(Infinity);\n\n void (async () => {\n // Mark active before async acquire to minimize race window\n this.active.set(threadId, { agent, stopRequested: false });\n const acquired = await this.acquireRun(threadId, input.runId);\n if (!acquired) {\n // Revert active and emit error if backend reports already running\n this.active.delete(threadId);\n runSubject.error(new Error(\"Thread already running\"));\n return;\n }\n const currentRunEvents: BaseEvent[] = [];\n\n // Build historic IDs for sanitization\n const priorRuns = await this.listRuns(threadId);\n const historicIds = buildHistoricMessageIdIndex(priorRuns);\n\n const onEvent = (event: BaseEvent) => {\n let processed = event;\n if (event.type === EventType.RUN_STARTED) {\n processed = sanitizeRunStarted(event as RunStartedEvent, input, historicIds);\n }\n runSubject.next(processed);\n currentRunEvents.push(processed);\n this.publishLive(threadId, processed);\n };\n\n try {\n await agent.runAgent(input, {\n onEvent: ({ event }) => onEvent(event),\n onNewMessage: ({ message }) => {\n // no-op, but place-holder to mirror previous semantics\n },\n onRunStartedEvent: () => {\n // no-op; historic dedupe handled already\n },\n });\n\n const ctx = this.active.get(threadId);\n const appended = finalizeRunEvents(currentRunEvents, { stopRequested: ctx?.stopRequested ?? false });\n for (const e of appended) {\n runSubject.next(e);\n this.publishLive(threadId, e);\n }\n\n const parentRunId = priorRuns.at(-1)?.runId ?? null;\n const compacted = compactEvents(currentRunEvents);\n await this.saveRun(threadId, input.runId, compacted, input, parentRunId);\n } catch (error) {\n const ctx = this.active.get(threadId);\n const appended = finalizeRunEvents(currentRunEvents, {\n stopRequested: ctx?.stopRequested ?? false,\n interruptionMessage: error instanceof Error ? error.message : undefined,\n });\n for (const e of appended) {\n runSubject.next(e);\n this.publishLive(threadId, e);\n }\n\n if (currentRunEvents.length > 0) {\n const parentRunId = priorRuns.at(-1)?.runId ?? null;\n const compacted = compactEvents(currentRunEvents);\n await this.saveRun(threadId, input.runId, compacted, input, parentRunId);\n }\n } finally {\n await this.releaseRun(threadId);\n this.active.delete(threadId);\n this.completeLive(threadId);\n runSubject.complete();\n }\n })();\n\n return runSubject.asObservable();\n }\n\n connect(request: AgentRunnerConnectRequest): Observable<BaseEvent> {\n const { threadId } = request;\n const subject = new ReplaySubject<BaseEvent>(Infinity);\n\n void (async () => {\n const priorRuns = await this.listRuns(threadId);\n const allHistoric: BaseEvent[] = [];\n for (const r of priorRuns) allHistoric.push(...r.events);\n const compacted = compactEvents(allHistoric);\n const emittedIds = new Set<string>();\n\n for (const e of compacted) {\n subject.next(e);\n const id = (e as any).messageId;\n if (typeof id === \"string\") emittedIds.add(id);\n }\n\n const running = await this.isRunningState(threadId);\n if (!running) {\n subject.complete();\n return;\n }\n\n const live = this.subscribeLive(threadId);\n let completed = false;\n live.subscribe({\n next: (e) => {\n const id = (e as any).messageId;\n if (typeof id === \"string\" && emittedIds.has(id)) return;\n subject.next(e);\n if (e.type === EventType.RUN_FINISHED || e.type === EventType.RUN_ERROR) {\n if (!completed) {\n completed = true;\n subject.complete();\n }\n }\n },\n error: (err) => subject.error(err),\n complete: () => {\n if (!completed) {\n completed = true;\n subject.complete();\n }\n },\n });\n })();\n\n return subject.asObservable();\n }\n\n async isRunning(request: AgentRunnerIsRunningRequest): Promise<boolean> {\n return this.isRunningState(request.threadId);\n }\n\n async stop(request: AgentRunnerStopRequest): Promise<boolean | undefined> {\n const ctx = this.active.get(request.threadId);\n if (!ctx?.agent) return false;\n if (ctx.stopRequested) return false;\n ctx.stopRequested = true;\n await this.releaseRun(request.threadId);\n try {\n ctx.agent.abortRun();\n return true;\n } catch {\n ctx.stopRequested = false;\n return false;\n }\n }\n\n async listThreads(request: AgentRunnerListThreadsRequest): Promise<AgentRunnerListThreadsResponse> {\n const limit = request.limit ?? 20;\n const offset = request.offset ?? 0;\n\n const page = await this.pageThreads({ scope: request.scope, limit: limit + offset, offset: 0 });\n // If adapter ignores scope, we filter here by deriving metadata and matching scope\n const resultThreads: ThreadMetadata[] = [];\n for (const id of page.threadIds) {\n const md = await this.getThreadMetadata(id, request.scope);\n if (!md) continue;\n if (request.scope ? matchesScope(md, request.scope) : true) {\n resultThreads.push(md);\n }\n }\n // Order by lastActivityAt desc and apply offset/limit\n resultThreads.sort((a, b) => b.lastActivityAt - a.lastActivityAt);\n const sliced = resultThreads.slice(offset, offset + limit);\n return { threads: sliced, total: page.total };\n }\n\n async getThreadMetadata(threadId: string, scope?: ResourceScope | null): Promise<ThreadMetadata | null> {\n const runs = await this.listRuns(threadId);\n if (runs.length === 0) return null;\n const isRunning = await this.isRunningState(threadId);\n const s = this.threadScope.get(threadId) ?? null;\n return deriveThreadMetadata({\n threadId,\n runs,\n isRunning,\n resourceId: (s?.resourceId as string | undefined) ?? undefined,\n properties: s?.properties,\n });\n }\n\n async deleteThread(threadId: string, scope?: ResourceScope | null): Promise<void> {\n const running = await this.isRunningState(threadId);\n if (running) {\n throw new Error(\"Cannot delete a running thread\");\n }\n await this.deleteThreadStorage(threadId, scope);\n if (this.closeLive) {\n await this.closeLive(threadId);\n }\n this.threadScope.delete(threadId);\n }\n}\n","import { BaseEvent, EventType, RunAgentInput, RunStartedEvent } from \"@ag-ui/client\";\n\nexport function buildHistoricMessageIdIndex(runs: Array<{ events: BaseEvent[] }>): Set<string> {\n const ids = new Set<string>();\n for (const run of runs) {\n for (const event of run.events) {\n const msgId = (event as { messageId?: unknown }).messageId;\n if (typeof msgId === \"string\") ids.add(msgId);\n if (event.type === EventType.RUN_STARTED) {\n const e = event as RunStartedEvent;\n for (const m of e.input?.messages ?? []) {\n if (m?.id) ids.add(m.id);\n }\n }\n }\n }\n return ids;\n}\n\nexport function sanitizeRunStarted(\n event: RunStartedEvent,\n input: RunAgentInput,\n historicIds: Set<string>,\n): RunStartedEvent {\n if (event.input) return event;\n const sanitizedMessages = input.messages\n ? input.messages.filter((m) => !historicIds.has(m.id))\n : undefined;\n const updatedInput: RunAgentInput = {\n ...input,\n ...(sanitizedMessages !== undefined ? { messages: sanitizedMessages } : {}),\n };\n return { ...event, input: updatedInput } as RunStartedEvent;\n}\n\nexport function deriveThreadMetadata(params: {\n threadId: string;\n runs: Array<{ runId: string; events: BaseEvent[]; createdAt: number }>;\n isRunning: boolean;\n resourceId?: string;\n properties?: Record<string, any>;\n}): {\n threadId: string;\n createdAt: number;\n lastActivityAt: number;\n isRunning: boolean;\n messageCount: number;\n firstMessage?: string;\n resourceId?: string;\n properties?: Record<string, any>;\n} {\n const { threadId, runs, isRunning, resourceId, properties } = params;\n const createdAt = runs.length > 0 ? Math.min(...runs.map((r) => r.createdAt)) : Date.now();\n const lastActivityAt = runs.length > 0 ? Math.max(...runs.map((r) => r.createdAt)) : createdAt;\n\n let messageCount = 0;\n let firstMessage: string | undefined;\n\n for (const run of runs) {\n for (const event of run.events) {\n if ((event as any).role && typeof (event as any).content === \"string\") {\n // likely a message\n messageCount += 1;\n if (!firstMessage) firstMessage = (event as any).content as string;\n }\n if (event.type === EventType.RUN_STARTED) {\n const e = event as RunStartedEvent;\n for (const m of e.input?.messages ?? []) {\n messageCount += 1;\n if (!firstMessage && typeof m.content === \"string\") {\n firstMessage = m.content;\n }\n }\n }\n }\n }\n\n return {\n threadId,\n createdAt,\n lastActivityAt,\n isRunning,\n messageCount,\n firstMessage,\n resourceId,\n properties,\n };\n}\n\nexport function matchesScope(\n thread: { resourceId?: string; properties?: Record<string, any> },\n scope?: { resourceId: string | string[]; properties?: Record<string, any> } | null,\n): boolean {\n if (!scope) return true;\n const { resourceId, properties } = scope;\n if (resourceId !== undefined) {\n if (Array.isArray(resourceId)) {\n if (!resourceId.includes(thread.resourceId ?? \"\")) return false;\n } else {\n if ((thread.resourceId ?? \"\") !== resourceId) return false;\n }\n }\n if (properties) {\n const t = thread.properties ?? {};\n for (const [k, v] of Object.entries(properties)) {\n if (t[k] !== v) return false;\n }\n }\n return true;\n}\n\n","import { ReplaySubject, type Observable } from \"rxjs\";\nimport { BaseEvent, RunAgentInput } from \"@ag-ui/client\";\nimport { AgentRunnerBase } from \"./base\";\n\n// Adapters in one place (keeps runner self-contained)\ntype HistoricRun = { runId: string; events: BaseEvent[]; createdAt: number };\n\nexport class InMemoryAgentRunner extends AgentRunnerBase {\n private state = new Map<string, { isRunning: boolean; runId?: string | null }>();\n private runs = new Map<string, HistoricRun[]>();\n private channels = new Map<string, ReplaySubject<BaseEvent>>();\n\n constructor() {\n super();\n }\n\n // Live channel helpers\n private ensureChannel(threadId: string): ReplaySubject<BaseEvent> {\n let s = this.channels.get(threadId);\n if (!s || s.closed) {\n s = new ReplaySubject<BaseEvent>(Infinity);\n this.channels.set(threadId, s);\n }\n return s;\n }\n\n // Hooks implementation\n protected async acquireRun(threadId: string, runId: string): Promise<boolean> {\n const entry = this.state.get(threadId) ?? { isRunning: false, runId: null };\n if (entry.isRunning) return false;\n entry.isRunning = true;\n entry.runId = runId;\n this.state.set(threadId, entry);\n return true;\n }\n\n protected async releaseRun(threadId: string): Promise<void> {\n const entry = this.state.get(threadId) ?? { isRunning: false, runId: null };\n entry.isRunning = false;\n this.state.set(threadId, entry);\n }\n\n protected async isRunningState(threadId: string): Promise<boolean> {\n return this.state.get(threadId)?.isRunning ?? false;\n }\n\n protected async listRuns(threadId: string): Promise<HistoricRun[]> {\n return this.runs.get(threadId) ?? [];\n }\n\n protected async saveRun(\n threadId: string,\n runId: string,\n events: BaseEvent[],\n input: RunAgentInput,\n parentRunId: string | null,\n ): Promise<void> {\n const list = this.runs.get(threadId) ?? [];\n list.push({ runId, events, createdAt: Date.now() });\n this.runs.set(threadId, list);\n }\n\n protected async pageThreads(params: { scope?: any; limit?: number; offset?: number }): Promise<{ threadIds: string[]; total: number }>{\n const all: Array<{ id: string; last: number }>= [];\n for (const [id, arr] of this.runs.entries()) {\n const last = arr.length > 0 ? Math.max(...arr.map((r) => r.createdAt)) : 0;\n all.push({ id, last });\n }\n all.sort((a, b) => b.last - a.last);\n const total = all.length;\n const offset = params.offset ?? 0;\n const limit = params.limit ?? 20;\n const ids = all.slice(offset, offset + limit).map((x) => x.id);\n return { threadIds: ids, total };\n }\n\n protected async deleteThreadStorage(threadId: string): Promise<void> {\n this.runs.delete(threadId);\n this.state.delete(threadId);\n }\n\n protected publishLive(threadId: string, event: BaseEvent): void {\n const s = this.ensureChannel(threadId);\n s.next(event);\n }\n\n protected completeLive(threadId: string): void {\n const s = this.ensureChannel(threadId);\n if (!s.closed) s.complete();\n }\n\n protected subscribeLive(threadId: string): Observable<BaseEvent> {\n return this.ensureChannel(threadId).asObservable();\n }\n\n protected async closeLive(threadId: string): Promise<void> {\n const s = this.channels.get(threadId);\n if (s && !s.closed) s.complete();\n this.channels.delete(threadId);\n }\n}\n","{\n \"name\": \"@copilotkitnext/runtime\",\n \"version\": \"0.0.22-alpha.0\",\n \"description\": \"Server-side runtime package for CopilotKit2\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\"\n },\n \"./express\": {\n \"types\": \"./dist/express.d.ts\",\n \"import\": \"./dist/express.mjs\",\n \"require\": \"./dist/express.js\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"prepublishOnly\": \"pnpm run build\",\n \"dev\": \"tsup --watch\",\n \"lint\": \"eslint . --max-warnings 0\",\n \"check-types\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage\"\n },\n \"devDependencies\": {\n \"@copilotkitnext/eslint-config\": \"workspace:*\",\n \"@copilotkitnext/typescript-config\": \"workspace:*\",\n \"@types/cors\": \"^2.8.17\",\n \"@types/express\": \"^4.17.21\",\n \"@types/node\": \"^22.15.3\",\n \"eslint\": \"^9.30.0\",\n \"openai\": \"^5.9.0\",\n \"supertest\": \"^7.1.1\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"5.8.2\",\n \"vitest\": \"^3.0.5\"\n },\n \"dependencies\": {\n \"@ag-ui/client\": \"0.0.40-alpha.11\",\n \"@ag-ui/core\": \"0.0.40-alpha.11\",\n \"@ag-ui/encoder\": \"0.0.40-alpha.11\",\n \"@copilotkitnext/shared\": \"workspace:*\",\n \"cors\": \"^2.8.5\",\n \"express\": \"^4.21.2\",\n \"hono\": \"^4.6.13\",\n \"rxjs\": \"7.8.1\"\n },\n \"peerDependencies\": {\n \"openai\": \"^5.9.0\"\n },\n \"peerDependenciesMeta\": {},\n \"engines\": {\n \"node\": \">=18\"\n }\n}\n","import { MaybePromise, NonEmptyRecord } from \"@copilotkitnext/shared\";\nimport { AbstractAgent } from \"@ag-ui/client\";\nimport pkg from \"../package.json\";\nimport type {\n BeforeRequestMiddleware,\n AfterRequestMiddleware,\n} from \"./middleware\";\nimport { TranscriptionService } from \"./transcription-service/transcription-service\";\nimport { AgentRunner } from \"./runner/agent-runner\";\nimport { InMemoryAgentRunner } from \"./runner/in-memory-runner\";\n\nexport const VERSION = pkg.version;\n\n/**\n * Options used to construct a `CopilotRuntime` instance.\n */\nexport interface CopilotRuntimeOptions {\n /** Map of available agents (loaded lazily is fine). */\n agents: MaybePromise<NonEmptyRecord<Record<string, AbstractAgent>>>;\n /** The runner to use for running agents. */\n runner?: AgentRunner;\n /** Optional transcription service for audio processing. */\n transcriptionService?: TranscriptionService;\n /** Optional *before* middleware – callback function or webhook URL. */\n beforeRequestMiddleware?: BeforeRequestMiddleware;\n /** Optional *after* middleware – callback function or webhook URL. */\n afterRequestMiddleware?: AfterRequestMiddleware;\n}\n\n/**\n * Central runtime object passed to all request handlers.\n */\nexport class CopilotRuntime {\n public agents: CopilotRuntimeOptions[\"agents\"];\n public transcriptionService: CopilotRuntimeOptions[\"transcriptionService\"];\n public beforeRequestMiddleware: CopilotRuntimeOptions[\"beforeRequestMiddleware\"];\n public afterRequestMiddleware: CopilotRuntimeOptions[\"afterRequestMiddleware\"];\n public runner: AgentRunner;\n\n constructor({\n agents,\n transcriptionService,\n beforeRequestMiddleware,\n afterRequestMiddleware,\n runner,\n }: CopilotRuntimeOptions) {\n this.agents = agents;\n this.transcriptionService = transcriptionService;\n this.beforeRequestMiddleware = beforeRequestMiddleware;\n this.afterRequestMiddleware = afterRequestMiddleware;\n this.runner = runner ?? new InMemoryAgentRunner();\n }\n}\n","import {\n AbstractAgent,\n HttpAgent,\n RunAgentInput,\n RunAgentInputSchema,\n} from \"@ag-ui/client\";\nimport { EventEncoder } from \"@ag-ui/encoder\";\nimport { CopilotRuntime } from \"../runtime\";\n\ninterface RunAgentParameters {\n request: Request;\n runtime: CopilotRuntime;\n agentId: string;\n}\n\nexport async function handleRunAgent({\n runtime,\n request,\n agentId,\n}: RunAgentParameters) {\n try {\n const agents = await runtime.agents;\n\n // Check if the requested agent exists\n if (!agents[agentId]) {\n return new Response(\n JSON.stringify({\n error: \"Agent not found\",\n message: `Agent '${agentId}' does not exist`,\n }),\n {\n status: 404,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n\n const registeredAgent = agents[agentId] as AbstractAgent;\n const agent = registeredAgent.clone() as AbstractAgent;\n\n if (agent && \"headers\" in agent) {\n const shouldForward = (headerName: string) => {\n const lower = headerName.toLowerCase();\n return lower === \"authorization\" || lower.startsWith(\"x-\");\n };\n\n const forwardableHeaders: Record<string, string> = {};\n request.headers.forEach((value, key) => {\n if (shouldForward(key)) {\n forwardableHeaders[key] = value;\n }\n });\n\n agent.headers = { \n ...agent.headers as Record<string, string>, \n ...forwardableHeaders \n };\n }\n\n const stream = new TransformStream();\n const writer = stream.writable.getWriter();\n const encoder = new EventEncoder();\n let streamClosed = false;\n\n // Process the request in the background\n (async () => {\n let input: RunAgentInput;\n try {\n const requestBody = await request.json();\n input = RunAgentInputSchema.parse(requestBody);\n } catch {\n return new Response(\n JSON.stringify({\n error: \"Invalid request body\",\n }),\n { status: 400 }\n );\n }\n\n agent.setMessages(input.messages);\n agent.setState(input.state);\n agent.threadId = input.threadId;\n\n runtime.runner\n .run({\n threadId: input.threadId,\n agent,\n input,\n })\n .subscribe({\n next: async (event) => {\n if (!request.signal.aborted && !streamClosed) {\n try {\n await writer.write(encoder.encode(event));\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n streamClosed = true;\n }\n }\n }\n },\n error: async (error) => {\n console.error(\"Error running agent:\", error);\n if (!streamClosed) {\n try {\n await writer.close();\n streamClosed = true;\n } catch {\n // Stream already closed\n }\n }\n },\n complete: async () => {\n if (!streamClosed) {\n try {\n await writer.close();\n streamClosed = true;\n } catch {\n // Stream already closed\n }\n }\n },\n });\n })().catch((error) => {\n console.error(\"Error running agent:\", error);\n console.error(\n \"Error stack:\",\n error instanceof Error ? error.stack : \"No stack trace\"\n );\n console.error(\"Error details:\", {\n name: error instanceof Error ? error.name : \"Unknown\",\n message: error instanceof Error ? error.message : String(error),\n cause: error instanceof Error ? error.cause : undefined,\n });\n if (!streamClosed) {\n try {\n writer.close();\n streamClosed = true;\n } catch {\n // Stream already closed\n }\n }\n });\n\n // Return the SSE response\n return new Response(stream.readable, {\n status: 200,\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n },\n });\n } catch (error) {\n console.error(\"Error running agent:\", error);\n console.error(\n \"Error stack:\",\n error instanceof Error ? error.stack : \"No stack trace\"\n );\n console.error(\"Error details:\", {\n name: error instanceof Error ? error.name : \"Unknown\",\n message: error instanceof Error ? error.message : String(error),\n cause: error instanceof Error ? error.cause : undefined,\n });\n\n return new Response(\n JSON.stringify({\n error: \"Failed to run agent\",\n message: error instanceof Error ? error.message : \"Unknown error\",\n }),\n {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n}\n","import { RunAgentInput, RunAgentInputSchema } from \"@ag-ui/client\";\nimport { EventEncoder } from \"@ag-ui/encoder\";\nimport { CopilotRuntime } from \"../runtime\";\n\ninterface ConnectAgentParameters {\n request: Request;\n runtime: CopilotRuntime;\n agentId: string;\n}\n\nexport async function handleConnectAgent({\n runtime,\n request,\n agentId,\n}: ConnectAgentParameters) {\n try {\n const agents = await runtime.agents;\n\n // Check if the requested agent exists\n if (!agents[agentId]) {\n return new Response(\n JSON.stringify({\n error: \"Agent not found\",\n message: `Agent '${agentId}' does not exist`,\n }),\n {\n status: 404,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n\n const stream = new TransformStream();\n const writer = stream.writable.getWriter();\n const encoder = new EventEncoder();\n let streamClosed = false;\n\n // Process the request in the background\n (async () => {\n let input: RunAgentInput;\n try {\n const requestBody = await request.json();\n input = RunAgentInputSchema.parse(requestBody);\n } catch {\n return new Response(\n JSON.stringify({\n error: \"Invalid request body\",\n }),\n { status: 400 }\n );\n }\n\n runtime.runner\n .connect({\n threadId: input.threadId,\n })\n .subscribe({\n next: async (event) => {\n if (!request.signal.aborted && !streamClosed) {\n try {\n await writer.write(encoder.encode(event));\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n streamClosed = true;\n }\n }\n }\n },\n error: async (error) => {\n console.error(\"Error running agent:\", error);\n if (!streamClosed) {\n try {\n await writer.close();\n streamClosed = true;\n } catch {\n // Stream already closed\n }\n }\n },\n complete: async () => {\n if (!streamClosed) {\n try {\n await writer.close();\n streamClosed = true;\n } catch {\n // Stream already closed\n }\n }\n },\n });\n })().catch((error) => {\n console.error(\"Error running agent:\", error);\n console.error(\n \"Error stack:\",\n error instanceof Error ? error.stack : \"No stack trace\"\n );\n console.error(\"Error details:\", {\n name: error instanceof Error ? error.name : \"Unknown\",\n message: error instanceof Error ? error.message : String(error),\n cause: error instanceof Error ? error.cause : undefined,\n });\n if (!streamClosed) {\n try {\n writer.close();\n streamClosed = true;\n } catch {\n // Stream already closed\n }\n }\n });\n\n // Return the SSE response\n return new Response(stream.readable, {\n status: 200,\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n },\n });\n } catch (error) {\n console.error(\"Error running agent:\", error);\n console.error(\n \"Error stack:\",\n error instanceof Error ? error.stack : \"No stack trace\"\n );\n console.error(\"Error details:\", {\n name: error instanceof Error ? error.name : \"Unknown\",\n message: error instanceof Error ? error.message : String(error),\n cause: error instanceof Error ? error.cause : undefined,\n });\n\n return new Response(\n JSON.stringify({\n error: \"Failed to run agent\",\n message: error instanceof Error ? error.message : \"Unknown error\",\n }),\n {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n}\n","import { CopilotRuntime } from \"../runtime\";\nimport { EventType } from \"@ag-ui/client\";\n\ninterface StopAgentParameters {\n request: Request;\n runtime: CopilotRuntime;\n agentId: string;\n threadId: string;\n}\n\nexport async function handleStopAgent({\n runtime,\n request,\n agentId,\n threadId,\n}: StopAgentParameters) {\n try {\n const agents = await runtime.agents;\n\n if (!agents[agentId]) {\n return new Response(\n JSON.stringify({\n error: \"Agent not found\",\n message: `Agent '${agentId}' does not exist`,\n }),\n {\n status: 404,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n\n const stopped = await runtime.runner.stop({ threadId });\n\n if (!stopped) {\n return new Response(\n JSON.stringify({\n stopped: false,\n message: `No active run for thread '${threadId}'.`,\n }),\n {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n\n return new Response(\n JSON.stringify({\n stopped: true,\n interrupt: {\n type: EventType.RUN_ERROR,\n message: \"Run stopped by user\",\n code: \"STOPPED\",\n },\n }),\n {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n } catch (error) {\n console.error(\"Error stopping agent run:\", error);\n\n return new Response(\n JSON.stringify({\n error: \"Failed to stop agent\",\n message: error instanceof Error ? error.message : \"Unknown error\",\n }),\n {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n}\n","import { CopilotRuntime } from \"../runtime\";\nimport { AgentDescription, RuntimeInfo } from \"@copilotkitnext/shared\";\nimport { VERSION } from \"../runtime\";\n\ninterface HandleGetRuntimeInfoParameters {\n runtime: CopilotRuntime;\n request: Request;\n}\n\nexport async function handleGetRuntimeInfo({\n runtime,\n}: HandleGetRuntimeInfoParameters) {\n try {\n const agents = await runtime.agents;\n\n const agentsDict = Object.entries(agents).reduce(\n (acc, [name, agent]) => {\n acc[name] = {\n name,\n description: agent.description,\n className: agent.constructor.name,\n };\n return acc;\n },\n {} as Record<string, AgentDescription>\n );\n\n const runtimeInfo: RuntimeInfo = {\n version: VERSION,\n agents: agentsDict,\n audioFileTranscriptionEnabled: !!runtime.transcriptionService,\n };\n\n return new Response(JSON.stringify(runtimeInfo), {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n });\n } catch (error) {\n return new Response(\n JSON.stringify({\n error: \"Failed to retrieve runtime information\",\n message: error instanceof Error ? error.message : \"Unknown error\",\n }),\n {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n}\n","import { CopilotRuntime } from \"../runtime\";\n\ninterface HandleTranscribeParameters {\n runtime: CopilotRuntime;\n request: Request;\n}\n\nexport async function handleTranscribe({\n runtime,\n request,\n}: HandleTranscribeParameters) {\n try {\n // Check if transcription service is configured\n if (!runtime.transcriptionService) {\n return new Response(\n JSON.stringify({\n error: \"Transcription service not configured\",\n message:\n \"No transcription service has been configured in the runtime\",\n }),\n {\n status: 503,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n\n // Check if request has form data\n const contentType = request.headers.get(\"content-type\");\n if (!contentType || !contentType.includes(\"multipart/form-data\")) {\n return new Response(\n JSON.stringify({\n error: \"Invalid content type\",\n message:\n \"Request must contain multipart/form-data with an audio file\",\n }),\n {\n status: 400,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n\n // Extract form data\n const formData = await request.formData();\n const audioFile = formData.get(\"audio\") as File | null;\n\n if (!audioFile || !(audioFile instanceof File)) {\n return new Response(\n JSON.stringify({\n error: \"Missing audio file\",\n message:\n \"No audio file found in form data. Please include an 'audio' field.\",\n }),\n {\n status: 400,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n\n // Validate file type (basic check)\n const validAudioTypes = [\n \"audio/mpeg\",\n \"audio/mp3\",\n \"audio/mp4\",\n \"audio/wav\",\n \"audio/webm\",\n \"audio/ogg\",\n \"audio/flac\",\n \"audio/aac\",\n ];\n\n // Allow empty types and application/octet-stream (common fallback for unknown types)\n const isValidType =\n validAudioTypes.includes(audioFile.type) ||\n audioFile.type === \"\" ||\n audioFile.type === \"application/octet-stream\";\n\n if (!isValidType) {\n return new Response(\n JSON.stringify({\n error: \"Invalid file type\",\n message: `Unsupported audio file type: ${audioFile.type}. Supported types: ${validAudioTypes.join(\", \")}, or files with unknown/empty types`,\n }),\n {\n status: 400,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n\n // Transcribe the audio file with options\n const transcription = await runtime.transcriptionService.transcribeFile({\n audioFile,\n mimeType: audioFile.type,\n size: audioFile.size,\n });\n\n return new Response(\n JSON.stringify({\n text: transcription,\n size: audioFile.size,\n type: audioFile.type,\n }),\n {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n } catch (error) {\n return new Response(\n JSON.stringify({\n error: \"Transcription failed\",\n message:\n error instanceof Error\n ? error.message\n : \"Unknown error occurred during transcription\",\n }),\n {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n }\n}\n","/**\n * Middleware support for CopilotKit Runtime.\n *\n * A middleware hook can be provided as either:\n * 1. A **callback function** executed in-process.\n * 2. A **webhook URL** (http/https). The runtime will `POST` a JSON payload\n * to the URL and, for *before* hooks, accept an optional modified\n * `Request` object in the response body.\n *\n * Two lifecycle hooks are available:\n * • `BEFORE_REQUEST` – runs *before* the request handler.\n * • `AFTER_REQUEST` – runs *after* the handler returns a `Response`.\n */\n\nimport type { CopilotRuntime } from \"./runtime\";\nimport type { MaybePromise } from \"@copilotkitnext/shared\";\nimport { logger } from \"@copilotkitnext/shared\";\n\n/* ------------------------------------------------------------------------------------------------\n * Public types\n * --------------------------------------------------------------------------------------------- */\n\nexport interface BeforeRequestMiddlewareParameters {\n runtime: CopilotRuntime;\n request: Request;\n path: string;\n}\nexport interface AfterRequestMiddlewareParameters {\n runtime: CopilotRuntime;\n response: Response;\n path: string;\n}\n\nexport type BeforeRequestMiddlewareFn = (\n params: BeforeRequestMiddlewareParameters\n) => MaybePromise<Request | void>;\nexport type AfterRequestMiddlewareFn = (\n params: AfterRequestMiddlewareParameters\n) => MaybePromise<void>;\n\n/**\n * A middleware value can be either a callback function or a webhook URL.\n */\nexport type BeforeRequestMiddleware = BeforeRequestMiddlewareFn;\nexport type AfterRequestMiddleware = AfterRequestMiddlewareFn;\n\n/** Lifecycle events emitted to webhook middleware. */\nexport enum CopilotKitMiddlewareEvent {\n BeforeRequest = \"BEFORE_REQUEST\",\n AfterRequest = \"AFTER_REQUEST\",\n}\n\n/** Stages used by the Middleware Webhook Protocol */\n/** Stages used by the CopilotKit webhook protocol */\nexport enum WebhookStage {\n BeforeRequest = \"before_request\",\n AfterRequest = \"after_request\",\n}\n\n/* ------------------------------------------------------------------------------------------------\n * Internal helpers – (de)serialisation\n * --------------------------------------------------------------------------------------------- */\n\nexport async function callBeforeRequestMiddleware({\n runtime,\n request,\n path,\n}: BeforeRequestMiddlewareParameters): Promise<Request | void> {\n const mw = runtime.beforeRequestMiddleware;\n if (!mw) return;\n\n // Function-based middleware (in-process)\n if (typeof mw === \"function\") {\n return (mw as BeforeRequestMiddlewareFn)({ runtime, request, path });\n }\n\n logger.warn({ mw }, \"Unsupported beforeRequestMiddleware value – skipped\");\n return;\n}\n\nexport async function callAfterRequestMiddleware({\n runtime,\n response,\n path,\n}: AfterRequestMiddlewareParameters): Promise<void> {\n const mw = runtime.afterRequestMiddleware;\n if (!mw) return;\n\n if (typeof mw === \"function\") {\n return (mw as AfterRequestMiddlewareFn)({ runtime, response, path });\n }\n\n logger.warn({ mw }, \"Unsupported afterRequestMiddleware value – skipped\");\n}\n","const METHOD_NAMES = [\n \"agent/run\",\n \"agent/connect\",\n \"agent/stop\",\n \"info\",\n \"transcribe\",\n] as const;\n\nexport type EndpointMethod = (typeof METHOD_NAMES)[number];\n\ninterface JsonEnvelope {\n method?: string;\n params?: Record<string, unknown>;\n body?: unknown;\n}\n\nexport interface MethodCall {\n method: EndpointMethod;\n params?: Record<string, unknown>;\n body?: unknown;\n}\n\nexport async function parseMethodCall(request: Request): Promise<MethodCall> {\n const contentType = request.headers.get(\"content-type\") || \"\";\n\n if (!contentType.includes(\"application/json\")) {\n throw createResponseError(\"Single-route endpoint expects JSON payloads\", 415);\n }\n\n let jsonEnvelope: JsonEnvelope;\n try {\n jsonEnvelope = (await request.clone().json()) as JsonEnvelope;\n } catch (error) {\n throw createResponseError(\"Invalid JSON payload\", 400);\n }\n\n const method = validateMethod(jsonEnvelope.method);\n\n return {\n method,\n params: jsonEnvelope.params,\n body: jsonEnvelope.body,\n };\n}\n\nexport function expectString(params: Record<string, unknown> | undefined, key: string): string {\n const value = params?.[key];\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value;\n }\n\n throw createResponseError(`Missing or invalid parameter '${key}'`, 400);\n}\n\nexport function createJsonRequest(base: Request, body: unknown): Request {\n if (body === undefined || body === null) {\n throw createResponseError(\"Missing request body for JSON handler\", 400);\n }\n\n const headers = new Headers(base.headers);\n headers.set(\"content-type\", \"application/json\");\n headers.delete(\"content-length\");\n\n const serializedBody = serializeJsonBody(body);\n\n return new Request(base.url, {\n method: \"POST\",\n headers,\n body: serializedBody,\n signal: base.signal,\n });\n}\n\nexport function createResponseError(message: string, status: number): Response {\n return new Response(\n JSON.stringify({\n error: \"invalid_request\",\n message,\n }),\n {\n status,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n );\n}\n\nfunction validateMethod(method: string | undefined): EndpointMethod {\n if (!method) {\n throw createResponseError(\"Missing method field\", 400);\n }\n\n if ((METHOD_NAMES as readonly string[]).includes(method)) {\n return method as EndpointMethod;\n }\n\n throw createResponseError(`Unsupported method '${method}'`, 400);\n}\n\nfunction serializeJsonBody(body: unknown): BodyInit {\n if (typeof body === \"string\") {\n return body;\n }\n\n if (body instanceof Blob || body instanceof ArrayBuffer || body instanceof Uint8Array) {\n return body;\n }\n\n if (body instanceof FormData || body instanceof URLSearchParams) {\n return body;\n }\n\n return JSON.stringify(body);\n}\n"],"mappings":"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","names":["EventType","EventType","ReplaySubject","ReplaySubject","RunAgentInputSchema","EventEncoder","EventType"]}
|