import "./paths-Cmq4jkLW.js";
import { F as shouldLogVerbose, M as logVerbose } from "./utils-CcH8KYHm.js";
import "./pi-embedded-helpers-CUM4EVtq.js";
import "./registry-BvTskRju.js";
import "./subsystem-D5jeWpPI.js";
import "./exec-Drj_Y0q4.js";
import "./agent-scope-B830_s1e.js";
import "./model-selection-Cu-UzQaa.js";
import "./boolean-Wzu0-e0P.js";
import "./env-L9Bekcgw.js";
import "./io-B0vHiKay.js";
import "./manifest-registry-CKXLdOam.js";
import "./config-CPJqIoc0.js";
import { a as runCapability, n as createMediaAttachmentCache, o as isAudioAttachment, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-DB15hets.js";
import "./model-catalog-DpWoHG9o.js";
import "./sandbox-l0BIS2AF.js";
import "./chrome-BHApvxyL.js";
import "./tailscale-C4Vg-KZ-.js";
import "./auth-DIeV2lKw.js";
import "./server-context-bg3lXzeH.js";
import "./frontmatter-CNh1FjpI.js";
import "./skills-CKZwNx6X.js";
import "./routes-CuHfLF5P.js";
import "./redact-D8ZUlwEM.js";
import "./errors-CaeqAr2b.js";
import "./paths-Bd5AWivy.js";
import "./ssrf-CqwYCyyw.js";
import "./image-ops-CgU_RtSG.js";
import "./store-vua1MTJe.js";
import "./ports-_-ibL5BF.js";
import "./trash-DyQphUG9.js";
import "./sessions-CUSpOb-h.js";
import "./message-channel-BZ3Pmru_.js";
import "./plugins-CK8s7WRs.js";
import "./accounts-CqvejUxk.js";
import "./accounts-DBps791j.js";
import "./accounts-D9-52N3f.js";
import "./bindings-Rfu8UC_f.js";
import "./logging-GKUQydLE.js";
import "./paths-DRmXMWHJ.js";
import "./tool-images-BLUAnHRr.js";
import "./tool-display-D_iFHKHp.js";
import "./fetch-guard-DvcUsuQY.js";
import "./api-key-rotation-DZBE6VME.js";
import "./fetch-DNpno7P_.js";

//#region src/media-understanding/audio-preflight.ts
/**
* Transcribes the first audio attachment BEFORE mention checking.
* This allows voice notes to be processed in group chats with requireMention: true.
* Returns the transcript or undefined if transcription fails or no audio is found.
*/
async function transcribeFirstAudio(params) {
	const { ctx, cfg } = params;
	const audioConfig = cfg.tools?.media?.audio;
	if (!audioConfig || audioConfig.enabled === false) return;
	const attachments = normalizeMediaAttachments(ctx);
	if (!attachments || attachments.length === 0) return;
	const firstAudio = attachments.find((att) => att && isAudioAttachment(att) && !att.alreadyTranscribed);
	if (!firstAudio) return;
	if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribing attachment ${firstAudio.index} for mention check`);
	const providerRegistry = buildProviderRegistry(params.providers);
	const cache = createMediaAttachmentCache(attachments);
	try {
		const result = await runCapability({
			capability: "audio",
			cfg,
			ctx,
			attachments: cache,
			media: attachments,
			agentDir: params.agentDir,
			providerRegistry,
			config: audioConfig,
			activeModel: params.activeModel
		});
		if (!result || result.outputs.length === 0) return;
		const audioOutput = result.outputs.find((output) => output.kind === "audio.transcription");
		if (!audioOutput || !audioOutput.text) return;
		firstAudio.alreadyTranscribed = true;
		if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribed ${audioOutput.text.length} chars from attachment ${firstAudio.index}`);
		return audioOutput.text;
	} catch (err) {
		if (shouldLogVerbose()) logVerbose(`audio-preflight: transcription failed: ${String(err)}`);
		return;
	} finally {
		await cache.cleanup();
	}
}

//#endregion
export { transcribeFirstAudio };