Files
clawdbot/src/browser/target-id.ts
2025-12-13 18:17:01 +00:00

25 lines
855 B
TypeScript

export type TargetIdResolution =
| { ok: true; targetId: string }
| { ok: false; reason: "not_found" | "ambiguous"; matches?: string[] };
export function resolveTargetIdFromTabs(
input: string,
tabs: Array<{ targetId: string }>,
): TargetIdResolution {
const needle = input.trim();
if (!needle) return { ok: false, reason: "not_found" };
const exact = tabs.find((t) => t.targetId === needle);
if (exact) return { ok: true, targetId: exact.targetId };
const lower = needle.toLowerCase();
const matches = tabs
.map((t) => t.targetId)
.filter((id) => id.toLowerCase().startsWith(lower));
const only = matches.length === 1 ? matches[0] : undefined;
if (only) return { ok: true, targetId: only };
if (matches.length === 0) return { ok: false, reason: "not_found" };
return { ok: false, reason: "ambiguous", matches };
}