mirror of
https://github.com/stablyai/orca.git
synced 2026-11-14 01:47:24 +00:00
* fix(agents): tell Codex subagent rows apart by task name instead of role A Codex subagent's task name only reached the sidebar when one early read of its rollout succeeded; otherwise every child fell back to its role, so two workers both read "worker". The child poll now re-reads an unnamed child's own rollout, the first-line read allows the existing 256 KiB line cap, and a child with no task name or nickname carries the tail of its id, as Codex's own agent list does. Labels keep the path below the root so nested children with the same leaf stay distinct. * fix(agents): retry an unnamed Codex child's own rollout without a parent transcript A relay restart can leave a child hook as the only evidence, sent before the child's rollout was readable. Keep that path as pending identity work and retry it through the existing transcript poll, which now stays scheduled while a child still owes its name. * fix(agents): carry the id tail to every child-row surface and bound identity retries - Full-mode sidebar rows and dashboard subagent cards use the same suffixed label as compact rows. - A role a host publishes as the name (Claude's subagent_type) no longer counts as a name. - A final identity miss no longer re-arms polling; retries take turns, eight children per poll. - Replace an error cast with a type guard. * fix(agents): keep every identity read inside the per-poll budget The parent-rollout poll now queues an unnamed child for the bounded, rotating identity retries instead of reading it directly, and full-mode rows keep the id tail for a child with no name or role. * fix(agents): keep plain names on task-only rosters and guard the queued rollout path A host that publishes only a task roster carries no role, so its names can't be told from roles and get no id tail. Update the sidebar lineage test for a role-only child's id tail. * fix(agents): tell role-named tasks apart on task-only rosters A host that publishes only a task roster sends Claude's subagent_type as the task name, so two such tasks read identically. A named agent task with no description now carries its id tail; an unnamed one keeps its kind label. * fix(agents): a task path found meanwhile wins over a queued header read Placeholder labels (e.g. unknown) count as unnamed when queueing, and a child the parent rollout named before its turn drops its pending read instead of being overwritten by the header's nickname.
13 lines
626 B
TypeScript
13 lines
626 B
TypeScript
export function codexSubagentPathSegments(agentPath: string | null): string[] {
|
|
return agentPath === null ? [] : agentPath.split('/').filter((part) => part.length > 0)
|
|
}
|
|
|
|
/** The path below the root agent: nested children keep their parents so siblings with the same leaf stay distinct. */
|
|
export function codexSubagentPathLabel(agentPath: string | null): string | null {
|
|
const segments = codexSubagentPathSegments(agentPath).map((part) => part.trim())
|
|
const label = (segments[0] === 'root' ? segments.slice(1) : segments)
|
|
.filter((part) => part.length > 0)
|
|
.join('/')
|
|
return label.length > 0 ? label : null
|
|
}
|