Interface AgencyLaunchOptions

agencies on an agent: whether it may launch temporary teams, and every launch's bounds.

interface AgencyLaunchOptions {
    launch?: boolean;
    maxDepth?: number;
    maxSeats?: number;
    maxConcurrent?: number;
    budgetShare?: number;
    maxLaunchTokens?: number;
    maxLaunchCostUSD?: number;
    defaultDeadlineMs?: number;
    maxDeadlineMs?: number;
    members?: Record<string, Agent>;
    hitl?: HitlConfig;
}

Properties

launch?: boolean

Registers launch_agency on the agent's tool table. Default false. On gmi(), a launched team's manager, synthesizers and temporary seats run on the provider and model the agent's first call resolved: those its options name, else the environment's pair at that call, whatever the environment names later. A call that names its own provider or model runs on that pair alone; a team it launches runs on the agent's. A temporary seat also takes the agent's other route and completion settings, its onBeforeGeneration and onAfterGeneration hooks and, of its controls, controls.maxDurationMs alone: a cap the agent's calls take from controls.maxTotalTokens does not reach a seat's calls, which the launch's budget bounds. Every seat's tool calls run the onBeforeToolExecution hooks of the turn that launched the team, a member's before its own. The manager and synthesizers, which agency() builds on agent(), take that pair with the agent's key and base URL alone: none of its hooks and no request timeout reach their calls, which the launch's deadline and budget bound. A seat whose call fails rejects with its error's name and code alone, so a provider's or a handler's message reaches no model of the team and not the result; the error itself goes to the agent's on.error, under launch_agency seat <role> (the console without one), as do the launch's other failures, a failed run apart: the team reports its run once, under launch:<agencyId>, with the error it rejected with. A seat's name holds its role and not its team, so two teams' seats of one role report under one name. A callback that throws or rejects fails no launch.

maxDepth?: number

The deepest team level a launch tree reaches: an integer from 1 to 4, default 2.

maxSeats?: number

The most seats one launch names: an integer from 1 to 12, default 5.

maxConcurrent?: number

Launches in flight at once per scope (a session at the root, a team below it): an integer from 1 to 4, default 1.

budgetShare?: number

The share of what the launching turn's budget has left that one launch may spend: above 0, at most 1, default 0.5.

maxLaunchTokens?: number

The token ceiling of all the root launches of one parent turn, their nested launches included: at least 2,000, default 200,000. gmi() warns at construction when it cannot cover one call of the agent's route (2,000 for the prompt and the call's output estimate), since every launch is then refused budget_unavailable.

maxLaunchCostUSD?: number

Their dollar ceiling, counted where a price row or a provider-reported cost exists; a number above 0. Default: none.

defaultDeadlineMs?: number

The deadline of a launch that names none, in ms: default 120,000 (at most maxDeadlineMs).

maxDeadlineMs?: number

The longest deadline a launch may name, in ms: from 1,000 to 3,600,000, default 600,000.

members?: Record<string, Agent>

gmi() only: the persistent members a launch may seat by agentKey, each a gmi() handle. The record is read once, when the agent is built: a member put in it afterwards, under a new key or an old one, is never seated.

hitl?: HitlConfig

The approval policy of the team a root launch builds, asked after the gate the launching turn carries. A nested launch passes that team's gate on, so beforeTool covers the seats of every team below it, each tool call asked once. beforeAgent and beforeReturn are asked in the root team alone: no nested team's seat or answer waits for them.