feat/m3-openai-adapter
main
Adds OpenAIAdapter implementing IProviderAdapter, replacing the legacy registerOpenAIProvider() inline registration in ProviderService. - Creates apps/gateway/src/agent/adapters/openai.adapter.ts with: - register(): initialises OpenAI client, registers codex-gpt-5-4 with Pi ModelRegistry using openai-completions API; skips gracefully when OPENAI_API_KEY is absent - listModels(): returns Codex gpt-5.4 ModelInfo (128k context, tools+vision) - healthCheck(): lightweight GET /v1/models to verify API key validity - createCompletion(): streaming completions via openai SDK chat.completions.create({ stream: true }); maps chunks to CompletionEvent - Installs openai SDK (^6.32.0) as a dependency in apps/gateway - Registers OpenAIAdapter in ProviderService alongside OllamaAdapter - Removes legacy registerOpenAIProvider() private method from ProviderService Co-Authored-By: Claude Sonnet 4.6 <[email protected]>