36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
export type ParsedAgentSessionKey = {
|
|
agentId: string;
|
|
rest: string;
|
|
};
|
|
|
|
export function parseAgentSessionKey(
|
|
sessionKey: string | undefined | null,
|
|
): ParsedAgentSessionKey | null {
|
|
const raw = (sessionKey ?? "").trim();
|
|
if (!raw) return null;
|
|
const parts = raw.split(":").filter(Boolean);
|
|
if (parts.length < 3) return null;
|
|
if (parts[0] !== "agent") return null;
|
|
const agentId = parts[1]?.trim();
|
|
const rest = parts.slice(2).join(":");
|
|
if (!agentId || !rest) return null;
|
|
return { agentId, rest };
|
|
}
|
|
|
|
export function isSubagentSessionKey(sessionKey: string | undefined | null): boolean {
|
|
const raw = (sessionKey ?? "").trim();
|
|
if (!raw) return false;
|
|
if (raw.toLowerCase().startsWith("subagent:")) return true;
|
|
const parsed = parseAgentSessionKey(raw);
|
|
return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("subagent:"));
|
|
}
|
|
|
|
export function isAcpSessionKey(sessionKey: string | undefined | null): boolean {
|
|
const raw = (sessionKey ?? "").trim();
|
|
if (!raw) return false;
|
|
const normalized = raw.toLowerCase();
|
|
if (normalized.startsWith("acp:")) return true;
|
|
const parsed = parseAgentSessionKey(raw);
|
|
return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("acp:"));
|
|
}
|