Skip to content

Symfony Package Cheatsheet

Code-verified reference for packages/symfony.

Package Wiring

Composer package: - cognesy/instructor-symfony

Namespace root: - Cognesy\Instructor\Symfony\

Bundle entrypoint: - Cognesy\Instructor\Symfony\InstructorSymfonyBundle

Bundle extension alias: - instructor

Service definitions loaded by InstructorSymfonyExtension: - packages/symfony/resources/config/core.yaml - packages/symfony/resources/config/polyglot.yaml - packages/symfony/resources/config/events.yaml - packages/symfony/resources/config/delivery.yaml - packages/symfony/resources/config/agent_ctrl.yaml - packages/symfony/resources/config/agents.yaml - packages/symfony/resources/config/sessions.yaml - packages/symfony/resources/config/telemetry.yaml - packages/symfony/resources/config/logging.yaml - packages/symfony/resources/config/testing.yaml - packages/symfony/resources/config/messenger.yaml

Config Root

Public Symfony config root: - instructor

Top-level keys accepted by Configuration: - connections - embeddings - extraction - http - events - agent_ctrl - agents - sessions - telemetry - logging - testing - delivery

Config Translation

SymfonyConfigProvider is the framework-facing config adapter and container binding for: - Cognesy\Config\Contracts\CanProvideConfig

Typed config objects created from Symfony config: - Cognesy\Polyglot\Inference\Config\LLMConfig - Cognesy\Polyglot\Embeddings\Config\EmbeddingsConfig - Cognesy\Instructor\Config\StructuredOutputConfig - Cognesy\Http\Config\HttpClientConfig

Useful provider methods: - llm(string $connection = ''): LLMConfig - embeddings(string $connection = ''): EmbeddingsConfig - structuredOutput(): StructuredOutputConfig - httpClient(): HttpClientConfig - get(string $path, mixed $default = null): mixed - has(string $path): bool

Supported lookup shapes: - instructor.connections.default plus named connections under items or connections - flat instructor.connections.<name> connection maps - legacy default fallback for LLM default selection

Container Surface

Public aliases and services available today: - Cognesy\Config\Contracts\CanProvideConfig - Cognesy\Events\Contracts\CanHandleEvents - Cognesy\Http\HttpClient - Cognesy\Http\Contracts\CanSendHttpRequests - Cognesy\Instructor\Symfony\AgentCtrl\SymfonyAgentCtrl - Cognesy\Instructor\Symfony\AgentCtrl\SymfonyAgentCtrlRuntimes - Cognesy\Polyglot\Inference\Contracts\CanCreateInference - Cognesy\Polyglot\Inference\Inference - Cognesy\Polyglot\Embeddings\Contracts\CanCreateEmbeddings - Cognesy\Polyglot\Embeddings\Embeddings - Cognesy\Instructor\Contracts\CanCreateStructuredOutput - Cognesy\Instructor\StructuredOutput

Registered support services: - Cognesy\AgentCtrl\Builder\ClaudeCodeBridgeBuilder - Cognesy\AgentCtrl\Builder\CodexBridgeBuilder - Cognesy\AgentCtrl\Builder\OpenCodeBridgeBuilder - Cognesy\AgentCtrl\Builder\PiBridgeBuilder - Cognesy\AgentCtrl\Builder\GeminiBridgeBuilder - Cognesy\Instructor\Symfony\Support\SymfonyConfigProvider - Cognesy\Instructor\Symfony\Support\SymfonyEventBusFactory - Cognesy\Instructor\Symfony\Support\SymfonyHttpTransportFactory - Cognesy\Events\Dispatchers\SymfonyEventDispatcher - Cognesy\Events\Dispatchers\EventDispatcher - Cognesy\Polyglot\Inference\InferenceRuntime - Cognesy\Polyglot\Embeddings\EmbeddingsRuntime - Cognesy\Instructor\StructuredOutputRuntime - Cognesy\Instructor\Symfony\Delivery\Progress\ProgressEventDispatcher - Cognesy\Instructor\Symfony\Delivery\Progress\Contracts\CanHandleProgressUpdates - Cognesy\Instructor\Symfony\Delivery\Cli\SymfonyCliObservationFormatter - Cognesy\Instructor\Symfony\Delivery\Cli\SymfonyCliObservationPrinter - Cognesy\Telemetry\Application\Telemetry - Cognesy\Telemetry\Domain\Contract\CanExportObservations - Cognesy\Instructor\Symfony\Telemetry\NullTelemetryExporter - Cognesy\Instructor\Symfony\Support\SymfonyLoggingFactory

Event Wiring

The bundle owns CanHandleEvents through a package-local event bus: - Cognesy\Events\Contracts\CanHandleEvents -> Cognesy\Events\Dispatchers\EventDispatcher

Bridge behavior: - the package creates a Cognesy\Events\Dispatchers\SymfonyEventDispatcher bridge around Symfony's event_dispatcher when available - the package event bus uses that bridge as its parent when instructor.events.dispatch_to_symfony is truthy - legacy instructor.events.bridge_to_symfony is still honored as a fallback key - if neither key is set, bridging defaults to true

HTTP Transport

The bundle owns CanSendHttpRequests through Cognesy\Http\HttpClient.

Transport rules implemented by SymfonyHttpTransportFactory: - instructor.http.driver: symfony uses Symfony's http_client service when it is available - instructor.http.driver: framework and instructor.http.driver: http_client are normalized to symfony - if the Symfony client service is missing, or the configured driver is not symfony, the package falls back to the standard HttpClientBuilder driver resolution path

Runtime Services

AgentCtrl: - Cognesy\Instructor\Symfony\AgentCtrl\SymfonyAgentCtrl is the package-owned container entrypoint for CLI code-agent builders - Cognesy\Instructor\Symfony\AgentCtrl\SymfonyAgentCtrlRuntimes is the package-owned registry for context-specific AgentCtrl execution adapters - backend builder services are public and non-shared for ClaudeCodeBridgeBuilder, CodexBridgeBuilder, OpenCodeBridgeBuilder, PiBridgeBuilder, and GeminiBridgeBuilder - named service IDs exist for instructor.agent_ctrl, instructor.agent_ctrl.builder.default, and instructor.agent_ctrl.builder.<backend> - backend builders inherit shared defaults from instructor.agent_ctrl.defaults and per-backend overrides from instructor.agent_ctrl.backends.<backend> - builder access is guarded by instructor.agent_ctrl.enabled - runtime service IDs exist for instructor.agent_ctrl.runtimes, instructor.agent_ctrl.runtime.cli, instructor.agent_ctrl.runtime.http, and instructor.agent_ctrl.runtime.messenger - runtime adapters expose explicit policy for cli, http, and messenger entrypoints so Symfony applications can check whether inline execution is allowed or should be handed off to Messenger - runtime adapters also expose continuation seams through continuationPolicy(), continuation(), continueLast(), resumeSession(), and handoff(AgentResponse) - continue_last references are same-context only; use handoff() / resumeSession() when handing work from HTTP or CLI into Messenger

Inference: - Cognesy\Polyglot\Inference\InferenceRuntime is created from LLMConfig, CanHandleEvents, and CanSendHttpRequests - Cognesy\Polyglot\Inference\Contracts\CanCreateInference aliases that runtime - Cognesy\Polyglot\Inference\Inference is registered as a public service

Embeddings: - Cognesy\Polyglot\Embeddings\EmbeddingsRuntime is created from EmbeddingsConfig, CanHandleEvents, and CanSendHttpRequests - Cognesy\Polyglot\Embeddings\Contracts\CanCreateEmbeddings aliases that runtime - Cognesy\Polyglot\Embeddings\Embeddings is registered as a public service

Structured output: - Cognesy\Instructor\StructuredOutputRuntime is created from LLMConfig, StructuredOutputConfig, CanHandleEvents, and CanSendHttpRequests - Cognesy\Instructor\Contracts\CanCreateStructuredOutput aliases that runtime - Cognesy\Instructor\StructuredOutput is registered as a public service

Service File Status

Service files that are currently placeholder-only: - packages/symfony/resources/config/agents.yaml - packages/symfony/resources/config/sessions.yaml - packages/symfony/resources/config/testing.yaml

Service files that now back real package behavior: - packages/symfony/resources/config/core.yaml - packages/symfony/resources/config/polyglot.yaml - packages/symfony/resources/config/events.yaml - packages/symfony/resources/config/delivery.yaml - packages/symfony/resources/config/agent_ctrl.yaml - packages/symfony/resources/config/telemetry.yaml - packages/symfony/resources/config/logging.yaml - packages/symfony/resources/config/messenger.yaml

That means the current implemented Symfony surface includes: - bundle registration - config tree and config translation - AgentCtrl container entrypoints and runtime adapters - core event wiring - HTTP transport wiring - public inference, embeddings, and structured output services - native-agent registry and session-store seams - telemetry services and lifecycle hooks - logging services and presets - progress projection, CLI observation, and Messenger delivery seams - repository-local testing helpers and documented override patterns

Still intentionally repository-local or not yet published as public runtime API: - classes under packages/symfony/tests/Support - split-package publication bootstrap and Packagist registration

Documentation

Reference docs: - packages/symfony/README.md - packages/symfony/docs/overview.md - packages/symfony/docs/configuration.md - packages/symfony/docs/quickstart.md - packages/symfony/docs/runtime-surfaces.md - packages/symfony/docs/sessions.md - packages/symfony/docs/testing.md - packages/symfony/docs/telemetry.md - packages/symfony/docs/logging.md - packages/symfony/docs/delivery.md - packages/symfony/docs/operations.md - packages/symfony/docs/migration.md