Add API usage tracking and dynamic task reloading
Features: - Usage tracking system (usage_tracker.py) - Tracks input/output tokens per API call - Calculates costs with support for cache pricing - Stores data in usage_data.json (gitignored) - Integrated into llm_interface.py - Dynamic task scheduler reloading - Auto-detects YAML changes every 60s - No restart needed for new tasks - reload_tasks() method for manual refresh - Example cost tracking scheduled task - Daily API usage report - Budget tracking ($5/month target) - Disabled by default in scheduled_tasks.yaml Improvements: - Fixed tool_use/tool_result pair splitting bug (CRITICAL) - Added thread safety to agent.chat() - Fixed N+1 query problem in hybrid search - Optimized database batch queries - Added conversation history pruning (50 messages max) Updated .gitignore: - Exclude user profiles (memory_workspace/users/*.md) - Exclude usage data (usage_data.json) - Exclude vector index (vectors.usearch) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -84,8 +84,20 @@ class AdapterRuntime:
|
||||
self._postprocessors.append(postprocessor)
|
||||
|
||||
def _on_message_received(self, message: InboundMessage) -> None:
|
||||
"""Handle incoming message from an adapter."""
|
||||
asyncio.create_task(self._message_queue.put(message))
|
||||
"""Handle incoming message from an adapter.
|
||||
|
||||
This may be called from different event loop contexts (e.g.,
|
||||
python-telegram-bot's internal loop vs. our main asyncio loop),
|
||||
so we use loop-safe scheduling instead of create_task().
|
||||
"""
|
||||
try:
|
||||
loop = asyncio.get_running_loop()
|
||||
loop.call_soon_threadsafe(self._message_queue.put_nowait, message)
|
||||
except RuntimeError:
|
||||
# No running loop - should not happen in normal operation
|
||||
# but handle gracefully
|
||||
print("[Runtime] Warning: No event loop for message dispatch")
|
||||
self._message_queue.put_nowait(message)
|
||||
|
||||
async def _process_message_queue(self) -> None:
|
||||
"""Background task to process incoming messages."""
|
||||
|
||||
Reference in New Issue
Block a user