/** * `src/services/skills/presence-role.ts` * * The role tier of a Peaks-Loop skill: `orchestrator` — a user-facing * workflow that owns the gate transitions — or `bee` — a 1-level sub-role * dispatched by an orchestrator and owning one stage. * * THE LIST IS THE OUTPUT-STYLE DOCUMENT'S. The response contract in * `.claude/output-styles/peaks-skill-swarm.md` names both tiers and the * skills in each; this module is that list in code, so the status header's * `Role` cell is a machine fact read from the presence projection rather * than a tier the model decides for itself. * * THE LIST IS COMPLETE OVER THE SHIPPED SKILLS. Every skill under `skills/` * is in exactly one tier, so the Role cell is never empty for a shipped skill; * one outside the shipped set yields `null`. The guard * `tests/unit/skills/presence-role-coverage.test.ts` holds the two copies together. * * AN UNKNOWN SKILL HAS NO TIER. A skill in neither list yields `null`; the * caller renders `null` rather than falling back to a tier that may be wrong. */ /** The two tiers the Peaks-Loop skill family is built from. */ export type PresenceRoleTier = 'orchestrator' | 'bee'; /** The 1-level skills that own the gate transitions. */ export declare const ORCHESTRATOR_ROLE_SKILLS: readonly string[]; /** The 1-level sub-roles an orchestrator dispatches. */ export declare const BEE_ROLE_SKILLS: readonly string[]; /** * The tier of `skill`, or `null` when the skill is in neither list. * * Never throws and never guesses: a skill the family does not name has no * tier, and the status header renders that as "no tier" instead of inventing * one. */ export declare function presenceRoleTier(skill: string): PresenceRoleTier | null;