1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//! Teammate routing form (`<Name>@<Team>`): the name+team index over subagent metas.
use *;
/// The teammate transcript ids under `session_jsonl` whose `meta.json` declares
/// `taskKind:"in_process_teammate"` with EXACTLY this `name` and `teamName`.
///
/// Both halves compare byte-exactly, case included: Claude Code interpolates the requested
/// name and the raw team name into the routing id and folds no case anywhere on that path, so
/// a case-differing token names a DIFFERENT teammate and must miss rather than match.
///
/// The result is a set, not a single id: the routing form can name more than one live
/// teammate (the spawn de-duplicates only the name-to-id registry key), so the caller decides
/// what an ambiguity means instead of this index silently picking one.
/// The routing id `<Name>@<Team>` for a teammate node, or `None` when the meta carried only
/// one half (a teammate without a `teamName` has no routing form to print - fabricating one
/// would name a teammate that cannot be addressed).