timestamp sanitization, CoT logging, reasoning field fix, persistent queue
- store/types.rs: sanitize timestamps on capnp load — old records had raw offsets instead of unix epoch, breaking sort-by-timestamp queries - agents/api.rs: drain reasoning tokens from UI channel into LLM logs so we can see Qwen's chain-of-thought in agent output - agents/daemon.rs: persistent task queue (pending-tasks.jsonl) — tasks survive daemon restarts. Push before spawn, remove on completion, recover on startup. - api/openai.rs: only send reasoning field when explicitly configured, not on every request (fixes vllm warning) - api/mod.rs: add 600s total request timeout as backstop for hung connections - Cargo.toml: enable tokio-console feature for task introspection Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
869a2fbc38
commit
34937932ab
7 changed files with 477 additions and 30 deletions
|
|
@ -35,8 +35,8 @@ pub async fn call_api_with_tools(
|
|||
) -> Result<String, String> {
|
||||
let client = get_client()?;
|
||||
|
||||
// Set up a minimal UI channel (we just collect messages, no TUI)
|
||||
let (ui_tx, _ui_rx) = poc_agent::ui_channel::channel();
|
||||
// Set up a UI channel — we drain reasoning tokens into the log
|
||||
let (ui_tx, mut ui_rx) = poc_agent::ui_channel::channel();
|
||||
|
||||
// Build tool definitions — memory tools for graph operations
|
||||
let all_defs = tools::definitions();
|
||||
|
|
@ -66,6 +66,19 @@ pub async fn call_api_with_tools(
|
|||
u.prompt_tokens, u.completion_tokens));
|
||||
}
|
||||
|
||||
// Drain reasoning tokens from the UI channel into the log
|
||||
{
|
||||
let mut reasoning_buf = String::new();
|
||||
while let Ok(ui_msg) = ui_rx.try_recv() {
|
||||
if let poc_agent::ui_channel::UiMessage::Reasoning(r) = ui_msg {
|
||||
reasoning_buf.push_str(&r);
|
||||
}
|
||||
}
|
||||
if !reasoning_buf.is_empty() {
|
||||
log(&format!("<think>\n{}\n</think>", reasoning_buf.trim()));
|
||||
}
|
||||
}
|
||||
|
||||
let has_content = msg.content.is_some();
|
||||
let has_tools = msg.tool_calls.as_ref().is_some_and(|tc| !tc.is_empty());
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue