mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-26 23:50:17 +00:00
fix(engine): all 177 tests pass with Python orchestrator
- Increment step_count and track tokens in __emit_event__("step_completed")
so thread bookkeeping matches the old Rust loop behavior
- Remove double-counting of tokens in bootstrap (orchestrator handles it)
- Match nudge text to existing TOOL_INTENT_NUDGE constant
- Fix FINAL result propagation (use stored final_result, not VM return)
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
This commit is contained in:
@@ -181,8 +181,8 @@ def run_loop(context, goal, actions, state, config):
|
||||
if nudge_enabled and nudge_count < max_nudges and signals_tool_intent(text):
|
||||
nudge_count += 1
|
||||
__add_message__("user",
|
||||
"You described what you'd do but didn't write code. "
|
||||
"Please write a ```repl code block to execute your plan.")
|
||||
"You expressed intent to use a tool but didn't make an action call. "
|
||||
"Please go ahead and call the appropriate action.")
|
||||
continue
|
||||
|
||||
# Plain text response - done
|
||||
|
||||
@@ -282,8 +282,10 @@ impl ExecutionLoop {
|
||||
// Post-cleanup: persist final state
|
||||
match result {
|
||||
Ok(orch_result) => {
|
||||
self.thread.total_tokens_used += orch_result.tokens_used.total();
|
||||
self.thread.total_cost_usd += orch_result.tokens_used.cost_usd;
|
||||
// Token tracking is handled by __emit_event__("step_completed")
|
||||
// and __llm_complete__ within the orchestrator, so no need to
|
||||
// add orch_result.tokens_used here (would double-count).
|
||||
let _ = &orch_result.tokens_used; // acknowledge field
|
||||
self.clear_runtime_checkpoint();
|
||||
self.persist_runtime_state(None, &mut persisted_event_count)
|
||||
.await?;
|
||||
|
||||
@@ -597,6 +597,10 @@ fn handle_emit_event(
|
||||
"step_completed" => {
|
||||
let input = extract_u64_kwarg(kwargs, "input_tokens").unwrap_or(0);
|
||||
let output = extract_u64_kwarg(kwargs, "output_tokens").unwrap_or(0);
|
||||
// Increment step count (mirrors the old Rust loop's step_count += 1)
|
||||
thread.step_count += 1;
|
||||
// Track token usage
|
||||
thread.total_tokens_used += input + output;
|
||||
EventKind::StepCompleted {
|
||||
step_id: StepId::new(),
|
||||
tokens: TokenUsage {
|
||||
|
||||
Reference in New Issue
Block a user