Forge a new BaseAgentConfig from the supplied spec.
The manager's request: role, instructions, optional model overrides.
Subset of agency-level config the new agent inherits (memory, guardrails, security, etc). Pass through whatever the agency wants its synthesised children to share.
A { ok: true, config } or { ok: false, reason } result.
Never throws — all rejection paths return structured failures so the
caller can surface them back to the manager as tool errors.
Synthesizes BaseAgentConfig instances from manager-supplied specs.
Stateless — safe to share one instance across many agency runs. Validation happens entirely client-side (no LLM call) so a
forge()invocation is cheap and deterministic given the same spec + defaults.