Files
clawdbot/src/browser/target-id.ts
Peter Steinberger c379191f80 chore: migrate to oxlint and oxfmt
Co-authored-by: Christoph Nakazawa <christoph.pojer@gmail.com>
2026-01-14 15:02:19 +00:00

23 lines
845 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 };
}