-
Notifications
You must be signed in to change notification settings - Fork 0
OpenAI tool-format adapter & middleware #55
Copy link
Copy link
Open
Labels
complexity:averageModerate effort, some design neededModerate effort, some design neededphase:executionRouter, driversRouter, driverspriority:highCore functionalityCore functionalitysize:MMedium change, 50 to 200 linesMedium change, 50 to 200 linestype:featureNew functionalityNew functionality
Milestone
Metadata
Metadata
Assignees
Labels
complexity:averageModerate effort, some design neededModerate effort, some design neededphase:executionRouter, driversRouter, driverspriority:highCore functionalityCore functionalitysize:MMedium change, 50 to 200 linesMedium change, 50 to 200 linestype:featureNew functionalityNew functionality
Parent: #40 | Split: OpenAI adapter
Problem
This is part 1 of #40. Developers using OpenAI's API must manually translate between
Capabilityobjects and OpenAI's{type: "function", name, description, parameters}tool schema. This is tedious and blocks adoption.Proposed Change
1. Schema adapter (
src/agent_kernel/adapters/openai.py)2. Middleware class
3. Namespace mapping
Map dot-notation capability IDs to OpenAI namespace format:
billing.list_invoices→ namespacebilling, functionlist_invoices4. No SDK dependency
Adapters work with plain dicts — no dependency on
openaipackage.Acceptance Criteria
Capability→ OpenAI schema →tool_call→CapabilityRequestpreserves all fieldsOpenAIMiddleware.handle_tool_calls()processes through full kernel pipelineintercept_tool_call()andintercept_tool_result()hooks execute correctlyopenaipackageAffected Files
src/agent_kernel/adapters/__init__.py(new)src/agent_kernel/adapters/openai.py(new)tests/test_adapters.py(new)docs/integrations.md(usage examples)