use anyhow::Result;
use tracing::info;
use crate::providers::OpenAIProvider;
use crate::stages::CrateContext;
#[derive(Debug, Clone)]
pub struct ConceptualizationStage {
openai_provider: OpenAIProvider,
}
impl ConceptualizationStage {
#[must_use]
pub fn new(openai_provider: OpenAIProvider) -> Self {
Self { openai_provider }
}
#[must_use]
pub fn openai_provider(&self) -> &OpenAIProvider {
&self.openai_provider
}
}
#[derive(Debug, Clone)]
pub struct Conceptualizer {
openai_provider: OpenAIProvider,
}
impl Conceptualizer {
#[must_use]
pub fn new(openai_provider: OpenAIProvider) -> Self {
Self { openai_provider }
}
#[must_use]
pub fn openai_provider(&self) -> &OpenAIProvider {
&self.openai_provider
}
pub async fn execute(
&self,
mut context: CrateContext,
enhanced_context: &str,
) -> Result<CrateContext> {
info!(
"Executing conceptualization stage for: {}",
context.crate_name
);
context.stage_outputs.insert(
"conceptualization".to_string(),
serde_json::json!({
"status": "completed",
"concepts_identified": ["core", "api", "data"],
"enhanced_context": enhanced_context
}),
);
Ok(context)
}
}