import { createRequire } from "node:module" ;
import { getMSTeamsRuntime } from "./runtime.js" ;
let cachedUserAgent: string | undefined;
function resolveTeamsSdkVersion(): string {
try {
const require = createRequire(import .meta.url);
const pkg = require("@microsoft/teams.apps/package.json" ) as { version?: string };
return pkg.version ?? "unknown" ;
} catch {
return "unknown" ;
}
}
function resolveOpenClawVersion(): string {
try {
return getMSTeamsRuntime().version;
} catch {
return "unknown" ;
}
}
/**
* Build a combined User - Agent string that preserves the Teams SDK identity
* and appends the OpenClaw version .
*
* Format : " teams . ts [ apps ] / < sdk - version > OpenClaw / < openclaw - version > "
* Example : " teams . ts [ apps ] / 2 . 0 . 5 OpenClaw / 2026 . 3 . 22 "
*
* This lets the Teams backend track SDK usage while also identifying the
* host application .
*/
/** Reset the cached User-Agent (for testing). */
export function resetUserAgentCache(): void {
cachedUserAgent = undefined;
}
export function buildUserAgent(): string {
if (cachedUserAgent) {
return cachedUserAgent;
}
cachedUserAgent = `teams.ts[apps]/${resolveTeamsSdkVersion()} OpenClaw/${resolveOpenClawVersion()}`;
return cachedUserAgent;
}
export function ensureUserAgentHeader(headers?: HeadersInit): Headers {
const nextHeaders = new Headers(headers);
if (!nextHeaders.has("User-Agent" )) {
nextHeaders.set("User-Agent" , buildUserAgent());
}
return nextHeaders;
}
Messung V0.5 in Prozent C=98 H=97 G=97
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland