mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-15 01:55:13 +02:00
The HTTP wire DTOs and their engine-result -> DTO mappings move from omnigraph-server's api module into a new omnigraph-api-types crate that both server and CLI can depend on (engine must not — DAG: api-types -> engine, never the reverse). The crate holds plain serde/utoipa types only; the transport-coupled error->status mapping stays in the server (lib.rs/ handlers). The one server-runtime coupling (query_catalog_entry, which maps a StoredQuery — not a wire type) stays behind in api.rs, now calling the crate's pub param_descriptor. api.rs becomes a thin `pub use omnigraph_api_types::*` re-export, so every omnigraph_server::api::Foo path (handlers, the OpenApi schema list, CLI imports) resolves unchanged. openapi.json regenerates BYTE-IDENTICAL (the Phase-2 referee: 77 openapi tests green, zero diff). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
24 lines
1.1 KiB
Rust
24 lines
1.1 KiB
Rust
//! HTTP wire DTOs. The types and their engine-result -> DTO mappings live
|
|
//! in the shared `omnigraph-api-types` crate (RFC-009 Phase 2) so the CLI
|
|
//! and server share one definition; re-exported here so every
|
|
//! `omnigraph_server::api::*` path (handlers, the OpenApi schema list,
|
|
//! CLI imports) keeps resolving unchanged. Only `query_catalog_entry`
|
|
//! stays — it maps the server's runtime `StoredQuery` (not a wire type)
|
|
//! into the shared `QueryCatalogEntry` DTO.
|
|
|
|
pub use omnigraph_api_types::*;
|
|
|
|
use crate::queries::StoredQuery;
|
|
|
|
/// Project a loaded stored query into its catalog entry (typed params,
|
|
/// MCP tool name, read/mutate flag, description/instruction).
|
|
pub fn query_catalog_entry(query: &StoredQuery) -> QueryCatalogEntry {
|
|
QueryCatalogEntry {
|
|
name: query.name.clone(),
|
|
tool_name: query.effective_tool_name().to_string(),
|
|
description: query.decl.description.clone(),
|
|
instruction: query.decl.instruction.clone(),
|
|
mutation: query.is_mutation(),
|
|
params: query.decl.params.iter().map(param_descriptor).collect(),
|
|
}
|
|
}
|