@copilotkit/runtime
Version:
<div align="center"> <a href="https://copilotkit.ai" target="_blank"> <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/banner.png" alt="CopilotKit Logo"> </a>
64 lines (55 loc) • 2.35 kB
text/typescript
import { TelemetryClient } from "@copilotkit/shared";
import { EndpointType, LangGraphPlatformEndpoint } from "./runtime/remote-actions";
import { createHash } from "node:crypto";
import { CopilotRuntime, resolveEndpointType } from "./runtime/copilot-runtime";
import { RuntimeInstanceCreatedInfo } from "@copilotkit/shared/src/telemetry/events";
import { CreateCopilotRuntimeServerOptions } from "./integrations/shared";
const packageJson = require("../../package.json");
const telemetryClient = new TelemetryClient({
packageName: packageJson.name,
packageVersion: packageJson.version,
});
export function getRuntimeInstanceTelemetryInfo(
options: CreateCopilotRuntimeServerOptions,
): RuntimeInstanceCreatedInfo {
const runtime = options.runtime;
const endpointsInfo = runtime.remoteEndpointDefinitions.reduce(
(acc, endpoint) => {
let info = { ...acc };
const endpointType = resolveEndpointType(endpoint);
if (!info.endpointTypes.includes(endpointType)) {
info = {
...info,
endpointTypes: [...info.endpointTypes, endpointType],
};
}
if (endpointType === EndpointType.LangGraphPlatform) {
// When type is resolved, recreating a const with casting of type
const ep = endpoint as LangGraphPlatformEndpoint;
info = {
...info,
agentsAmount: ep.agents.length,
hashedKey: ep.langsmithApiKey
? createHash("sha256").update(ep.langsmithApiKey).digest("hex")
: null,
};
}
return info;
},
{ endpointTypes: [], agentsAmount: null, hashedKey: null },
);
// Get public API key from options.cloud.publicApiKey
const publicApiKey = options.cloud?.publicApiKey;
const apiKeyProvided = !!publicApiKey && publicApiKey.trim().length > 0;
return {
actionsAmount: runtime.actions.length,
endpointsAmount: runtime.remoteEndpointDefinitions.length,
endpointTypes: endpointsInfo.endpointTypes,
agentsAmount: endpointsInfo.agentsAmount,
hashedLgcKey: endpointsInfo.hashedKey,
"cloud.api_key_provided": apiKeyProvided,
...(apiKeyProvided ? { "cloud.public_api_key": publicApiKey } : {}),
...(options.cloud?.baseUrl ? { "cloud.base_url": options.cloud.baseUrl } : {}),
} as RuntimeInstanceCreatedInfo;
}
export default telemetryClient;