Skip to main content

clawedcode_api/
lib.rs

1use clawedcode_mcp::McpServerConfig;
2use clawedcode_tools::ToolSpec;
3use serde::Serialize;
4use std::collections::BTreeMap;
5
6#[derive(Debug, Clone)]
7pub struct CompletionRequest {
8    pub model: String,
9    pub prompt_pack: String,
10    pub system_prompt_name: String,
11    pub system_prompt_body: String,
12    pub prompt: String,
13    pub tools: Vec<ToolSpec>,
14    pub skill_count: usize,
15    pub mcp_servers: BTreeMap<String, McpServerConfig>,
16}
17
18#[derive(Debug, Clone, Serialize)]
19pub struct CompletionResponse {
20    pub system_prompt: String,
21    pub response: String,
22    pub tool_count: usize,
23    pub skill_count: usize,
24    pub mcp_server_count: usize,
25}
26
27pub trait ApiClient {
28    fn complete(&self, request: &CompletionRequest) -> CompletionResponse;
29}
30
31#[derive(Debug, Default, Clone)]
32pub struct MockApiClient;
33
34impl ApiClient for MockApiClient {
35    fn complete(&self, request: &CompletionRequest) -> CompletionResponse {
36        let response = format!(
37            "Model: {}\nPrompt pack: {}\nSystem prompt: {}\nTools: {}\nSkills discovered: {}\nMCP servers discovered: {}\n\nRequest queued for the execution loop.\n\nNext priorities:\n1. Parse instructions into an explicit task graph.\n2. Resolve tool approvals before execution.\n3. Stream structured updates into the terminal UI.",
38            request.model,
39            request.prompt_pack,
40            request.system_prompt_name,
41            request
42                .tools
43                .iter()
44                .map(|tool| tool.name)
45                .collect::<Vec<_>>()
46                .join(", "),
47            request.skill_count,
48            request.mcp_servers.len(),
49        );
50
51        CompletionResponse {
52            system_prompt: request.system_prompt_name.clone(),
53            response,
54            tool_count: request.tools.len(),
55            skill_count: request.skill_count,
56            mcp_server_count: request.mcp_servers.len(),
57        }
58    }
59}