Internal shared skill to resolve member names or email addresses to provider user IDs. Not intended for direct user invocation.
Resolve a member name or email to a provider user ID.
Uses the org_members cache populated by resolving-identity.
active_provider must already be determined.org_members must already be populated (caller must trigger resolving-identity Step 2 first).Before running the Resolution Algorithm, check if the query matches a team name rather than a person name:
teamsDatabaseId is available in headless_config:
a. Fetch team names from the Teams database (Name/title property of each row).
b. If the query (case-insensitive) exactly matches any team name, or if any team name contains the query as a substring:
[] with metadata: { "teamMatch": true, "teamName": "<matched team name>" }teamsDatabaseId is not available, skip this check and proceed to the Resolution Algorithm.Given a query string (name or email fragment):
org_members[*].email. Return immediately if exactly one match.org_members[*].name. Return immediately if exactly one match.name contains the query string (case-insensitive). Collect all matches.[]. Do not error — let the caller handle the missing case.[{ id, name, email }].If org_members is empty (provider does not support member listing), fall back to TeamsDB:
teamsDatabaseId is not in headless_config, return empty array [] (no fallback available).teamsDatabaseId from config.Members (people-type) field across all teams.org_members for the session.The caller (delegating-tasks, ingesting-messages, managing-tasks) must:
current_user.id directly from resolving-identity.