Updated README.md and added test scripts to code
This commit is contained in:
84
server/smoke_test_live.py
Normal file
84
server/smoke_test_live.py
Normal file
@@ -0,0 +1,84 @@
|
||||
"""
|
||||
smoke_test_live.py — Phase 1 live test. Requires a real API key in .env.
|
||||
|
||||
Tests the full agent loop end-to-end with EchoTool:
|
||||
1. Agent calls EchoTool in response to a user message
|
||||
2. Receives tool result and produces a final text response
|
||||
3. All events are logged
|
||||
|
||||
Run: python smoke_test_live.py
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
|
||||
|
||||
async def run():
|
||||
print("=" * 60)
|
||||
print("aide — Phase 1 Live Agent Test")
|
||||
print("=" * 60)
|
||||
|
||||
from server.database import init_db
|
||||
init_db()
|
||||
|
||||
from server.agent.tool_registry import ToolRegistry
|
||||
from server.tools.mock import EchoTool, ConfirmTool
|
||||
from server.agent.agent import Agent, run_and_collect, DoneEvent, ErrorEvent, ToolStartEvent, ToolDoneEvent
|
||||
|
||||
registry = ToolRegistry()
|
||||
registry.register(EchoTool())
|
||||
registry.register(ConfirmTool())
|
||||
|
||||
agent = Agent(registry=registry)
|
||||
|
||||
print("\n[Test 1] Echo tool call")
|
||||
print("-" * 40)
|
||||
message = 'Please use the echo tool to echo back the phrase "Phase 1 works!"'
|
||||
|
||||
text, calls, usage, events = await run_and_collect(
|
||||
agent=agent,
|
||||
message=message,
|
||||
session_id="live-test-1",
|
||||
)
|
||||
|
||||
print(f"Events received: {len(events)}")
|
||||
for event in events:
|
||||
if isinstance(event, ToolStartEvent):
|
||||
print(f" → Tool call: {event.tool_name}({event.arguments})")
|
||||
elif isinstance(event, ToolDoneEvent):
|
||||
print(f" ← Tool done: success={event.success}, result={event.result_summary!r}")
|
||||
elif isinstance(event, ErrorEvent):
|
||||
print(f" ✗ Error: {event.message}")
|
||||
|
||||
print(f"\nFinal text:\n{text}")
|
||||
print(f"Tool calls made: {calls}")
|
||||
print(f"Tokens: {usage.input_tokens} in / {usage.output_tokens} out")
|
||||
|
||||
if calls == 0:
|
||||
print("\nWARNING: No tool calls were made. The model may not have used the tool.")
|
||||
elif not isinstance(events[-1], ErrorEvent):
|
||||
print("\n✓ Live agent test passed")
|
||||
else:
|
||||
print("\n✗ Live agent test failed — see error above")
|
||||
sys.exit(1)
|
||||
|
||||
print("\n[Test 2] Kill switch")
|
||||
print("-" * 40)
|
||||
from server.database import credential_store
|
||||
credential_store.set("system:paused", "1")
|
||||
_, _, _, events = await run_and_collect(agent=agent, message="hello")
|
||||
assert any(isinstance(e, ErrorEvent) for e in events), "Kill switch did not block agent"
|
||||
credential_store.delete("system:paused")
|
||||
print("✓ Kill switch blocks agent when paused")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("Live tests complete ✓")
|
||||
print("=" * 60)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(run())
|
||||
Reference in New Issue
Block a user