Context
The feat/unified-tools-parameter PR (#191) introduced tool calling support across the codebase, including a new architectural layer: modalities/{modality}/protocols/{protocol}/ (Layer 5). Templates need to be updated to stay in sync.
Templates are enforced by unit tests (test_provider_api_templates.py), so keeping them current matters.
What needs updating
1. Modality parameters template — add ToolDefinition import
File: templates/modalities/{modality_slug}/parameters.py.template
The template shows commented # tools: list[ToolDefinition] but doesn't show the import. Add:
# from celeste.tools import ToolDefinition
2. Protocol parameters template — add ToolsMapper pattern
File: templates/protocols/{protocol_slug}/parameters.py.template
Has 3 patterns (simple, nested, response format) but no ToolsMapper pattern. Both chatcompletions/parameters.py and openresponses/parameters.py have ToolsMapper with dispatch logic. Add a PATTERN 4 showing ToolsMapper with TOOL_MAPPERS dispatch.
3. Create Layer 5 templates (modality+protocol)
New directory: templates/modalities/{modality_slug}/protocols/{protocol_slug}/
3 new files based on existing implementations at src/celeste/modalities/text/protocols/chatcompletions/:
__init__.py.template — re-exports {Protocol}{Modality}Client and {Protocol}{Modality}Stream
client.py.template — protocol text client base class combining protocol mixin + modality client, with generate(), analyze(), _init_request() (using serialize_messages()), _parse_tool_calls(), _stream_class()
parameters.py.template — wraps protocol-level mappers with name = {Modality}Parameter.X, exports {PROTOCOL}_PARAMETER_MAPPERS list
Reference implementations
src/celeste/modalities/text/protocols/chatcompletions/ (client.py, parameters.py)
src/celeste/modalities/text/protocols/openresponses/ (client.py, parameters.py)
Related issues
Context
The
feat/unified-tools-parameterPR (#191) introduced tool calling support across the codebase, including a new architectural layer:modalities/{modality}/protocols/{protocol}/(Layer 5). Templates need to be updated to stay in sync.Templates are enforced by unit tests (
test_provider_api_templates.py), so keeping them current matters.What needs updating
1. Modality parameters template — add
ToolDefinitionimportFile:
templates/modalities/{modality_slug}/parameters.py.templateThe template shows commented
# tools: list[ToolDefinition]but doesn't show the import. Add:# from celeste.tools import ToolDefinition2. Protocol parameters template — add ToolsMapper pattern
File:
templates/protocols/{protocol_slug}/parameters.py.templateHas 3 patterns (simple, nested, response format) but no ToolsMapper pattern. Both
chatcompletions/parameters.pyandopenresponses/parameters.pyhave ToolsMapper with dispatch logic. Add a PATTERN 4 showing ToolsMapper withTOOL_MAPPERSdispatch.3. Create Layer 5 templates (modality+protocol)
New directory:
templates/modalities/{modality_slug}/protocols/{protocol_slug}/3 new files based on existing implementations at
src/celeste/modalities/text/protocols/chatcompletions/:__init__.py.template— re-exports{Protocol}{Modality}Clientand{Protocol}{Modality}Streamclient.py.template— protocol text client base class combining protocol mixin + modality client, withgenerate(),analyze(),_init_request()(usingserialize_messages()),_parse_tool_calls(),_stream_class()parameters.py.template— wraps protocol-level mappers withname = {Modality}Parameter.X, exports{PROTOCOL}_PARAMETER_MAPPERSlistReference implementations
src/celeste/modalities/text/protocols/chatcompletions/(client.py, parameters.py)src/celeste/modalities/text/protocols/openresponses/(client.py, parameters.py)Related issues
protocol=parameter for generic protocol-based server access