openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
29 lines (28 loc) • 1.6 kB
JavaScript
import { c as normalizeOptionalString } from "./string-coerce-mnp54Vah.js";
import { n as getSessionBindingService, s as normalizeConversationRef } from "./session-binding-service-cfUL2BWM.js";
import { r as resolveConversationBindingContextFromAcpCommand } from "./conversation-binding-input-DT_BtDDW.js";
import { l as stopWithText } from "./shared-jeYHliLc.js";
//#region src/auto-reply/reply/commands-subagents/action-unfocus.ts
async function handleSubagentsUnfocusAction(ctx) {
const { params } = ctx;
const bindingService = getSessionBindingService();
const bindingContext = resolveConversationBindingContextFromAcpCommand(params);
if (!bindingContext) return stopWithText("⚠️ /unfocus must be run inside a focused conversation.");
const binding = bindingService.resolveByConversation(normalizeConversationRef({
channel: bindingContext.channel,
accountId: bindingContext.accountId,
conversationId: bindingContext.conversationId,
parentConversationId: bindingContext.parentConversationId
}));
if (!binding) return stopWithText("ℹ️ This conversation is not currently focused.");
const senderId = normalizeOptionalString(params.command.senderId) ?? "";
const boundBy = normalizeOptionalString(binding.metadata?.boundBy) ?? "";
if (boundBy && boundBy !== "system" && senderId && senderId !== boundBy) return stopWithText(`⚠️ Only ${boundBy} can unfocus this conversation.`);
await bindingService.unbind({
bindingId: binding.bindingId,
reason: "manual"
});
return stopWithText("✅ Conversation unfocused.");
}
//#endregion
export { handleSubagentsUnfocusAction };