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;" />

90 lines (88 loc) 3.17 kB
require("reflect-metadata"); const require_runtime = require('../../_virtual/_rolldown/runtime.cjs'); const require_in_memory = require('../../v2/runtime/runner/in-memory.cjs'); const require_telemetry_client = require('../telemetry-client.cjs'); let rxjs = require("rxjs"); let node_crypto = require("node:crypto"); //#region src/lib/runtime/telemetry-agent-runner.ts /** * TelemetryAgentRunner - A wrapper around AgentRunner that adds telemetry * for agent execution streams. * * This captures the following telemetry events: * - oss.runtime.agent_execution_stream_started - when an agent execution starts * - oss.runtime.agent_execution_stream_ended - when an agent execution completes * - oss.runtime.agent_execution_stream_errored - when an agent execution fails */ /** * An AgentRunner wrapper that adds telemetry tracking for agent executions. * * Usage: * ```ts * const runtime = new CopilotRuntime({ * runner: new TelemetryAgentRunner(), * // or with custom runner: * runner: new TelemetryAgentRunner({ runner: customRunner }), * }); * ``` */ var TelemetryAgentRunner = class { constructor(config) { this._runner = config?.runner ?? new require_in_memory.InMemoryAgentRunner(); this.hashedLgcKey = config?.langsmithApiKey ? (0, node_crypto.createHash)("sha256").update(config.langsmithApiKey).digest("hex") : void 0; } /** * Runs an agent with telemetry tracking. * Wraps the underlying runner's Observable stream with telemetry events. */ run(...args) { const streamInfo = { hashedLgcKey: this.hashedLgcKey }; let streamErrored = false; require_telemetry_client.default.capture("oss.runtime.agent_execution_stream_started", { hashedLgcKey: this.hashedLgcKey }); return this._runner.run(...args).pipe((0, rxjs.tap)((event) => { const rawEvent = event.rawEvent; if (rawEvent?.data) { const data = rawEvent.data; if (data?.output?.model) { streamInfo.model = data.output.model; streamInfo.provider = data.output.model; } } if (rawEvent?.metadata) { const metadata = rawEvent.metadata; if (metadata?.langgraph_host) streamInfo.langGraphHost = metadata.langgraph_host; if (metadata?.langgraph_version) streamInfo.langGraphVersion = metadata.langgraph_version; } }), (0, rxjs.catchError)((error) => { streamErrored = true; require_telemetry_client.default.capture("oss.runtime.agent_execution_stream_errored", { ...streamInfo, error: error instanceof Error ? error.message : String(error) }); throw error; }), (0, rxjs.finalize)(() => { if (!streamErrored) require_telemetry_client.default.capture("oss.runtime.agent_execution_stream_ended", streamInfo); })); } /** * Delegates to the underlying runner's connect method */ connect(...args) { return this._runner.connect(...args); } /** * Delegates to the underlying runner's isRunning method */ isRunning(...args) { return this._runner.isRunning(...args); } /** * Delegates to the underlying runner's stop method */ stop(...args) { return this._runner.stop(...args); } }; //#endregion exports.TelemetryAgentRunner = TelemetryAgentRunner; //# sourceMappingURL=telemetry-agent-runner.cjs.map