50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import { createRequire } from "node:module";
|
|
import { resolveStateDir } from "../../config/paths.js";
|
|
import { transcribeAudioFile } from "../../media-understanding/transcribe-audio.js";
|
|
import { textToSpeechTelephony } from "../../tts/tts.js";
|
|
import { createRuntimeChannel } from "./runtime-channel.js";
|
|
import { createRuntimeConfig } from "./runtime-config.js";
|
|
import { createRuntimeEvents } from "./runtime-events.js";
|
|
import { createRuntimeLogging } from "./runtime-logging.js";
|
|
import { createRuntimeMedia } from "./runtime-media.js";
|
|
import { createRuntimeSystem } from "./runtime-system.js";
|
|
import { createRuntimeTools } from "./runtime-tools.js";
|
|
import type { PluginRuntime } from "./types.js";
|
|
|
|
let cachedVersion: string | null = null;
|
|
|
|
function resolveVersion(): string {
|
|
if (cachedVersion) {
|
|
return cachedVersion;
|
|
}
|
|
try {
|
|
const require = createRequire(import.meta.url);
|
|
const pkg = require("../../../package.json") as { version?: string };
|
|
cachedVersion = pkg.version ?? "unknown";
|
|
return cachedVersion;
|
|
} catch {
|
|
cachedVersion = "unknown";
|
|
return cachedVersion;
|
|
}
|
|
}
|
|
|
|
export function createPluginRuntime(): PluginRuntime {
|
|
const runtime = {
|
|
version: resolveVersion(),
|
|
config: createRuntimeConfig(),
|
|
system: createRuntimeSystem(),
|
|
media: createRuntimeMedia(),
|
|
tts: { textToSpeechTelephony },
|
|
stt: { transcribeAudioFile },
|
|
tools: createRuntimeTools(),
|
|
channel: createRuntimeChannel(),
|
|
events: createRuntimeEvents(),
|
|
logging: createRuntimeLogging(),
|
|
state: { resolveStateDir },
|
|
} satisfies PluginRuntime;
|
|
|
|
return runtime;
|
|
}
|
|
|
|
export type { PluginRuntime } from "./types.js";
|