import { SupervisorContract } from "../contracts/supervisor/supervisor.contract.mjs"; import { TeamConfig, TeamMemberValue } from "../contracts/team/team-config.type.mjs"; //#region ../ai/src/team/team.d.ts /** * `ai.team(config)` — thin, transparent sugar over `ai.supervisor`. * * Builds a {@link SupervisorConfig} from the team-shaped config and * calls `supervisor(...)`, returning the **unchanged** * `SupervisorContract` — the same object `ai.supervisor` * returns, so `ctx.intents..execute()`, `.asTool()`, * `.resume()`, snapshots, and events all stay intact. `team()` owns no * loop: the manager becomes `route`/`router`, the members become * `intents`, and the `gate` becomes `evaluate`. Everything else passes * through 1:1. * * A `gate: "quality" | "verify"` string selects a pre-built `evaluate` * strategy ({@link buildQualityGate} / {@link buildVerifyGate}); a * function forwards straight to `SupervisorConfig.evaluate` (full * escape hatch). When the gate is a string, the resolved `fixer` (and, * for `"quality"`, the `reviewer`) roles are validated against * `members` at construction — a missing role throws an authoring-style * {@link SupervisorFailedError} (`context: { authoring: true }`) rather * than silently starving until `maxIterations`. * * @example * const codeTeam = ai.team({ * name: "code-team", * goal: "Ship a tested module that passes review.", * manager: techLeadRouter, * members: { builder, reviewer, fixer }, * gate: "quality", * output: v.object({ code: v.string() }), * maxIterations: 6, * }); * * const { data, report } = await codeTeam.execute("Build a debounce utility."); */ declare function team = Record>(config: TeamConfig): SupervisorContract; //#endregion export { team }; //# sourceMappingURL=team.d.mts.map