494 lines
14 KiB
JSON
494 lines
14 KiB
JSON
{
|
|
"run_meta": {
|
|
"run_timestamp": "2026-04-04T14:29:21.419470+00:00",
|
|
"base_url": "http://127.0.0.1:8485",
|
|
"config": "tests/results/20260404T140545Z/runtime_test_genesis.jsonc",
|
|
"binary": "didactyl_static_x86_64_debug",
|
|
"test_count": 43
|
|
},
|
|
"results": [
|
|
{
|
|
"suite": "test_conversation",
|
|
"name": "simple_greeting",
|
|
"status": "pass",
|
|
"message": "greeting response ok",
|
|
"duration_seconds": 4.245289196027443,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"response": "Hello! I'm a test agent built on the Didactyl platform. I don't have a specific personal name, but you can think of me as your Didactyl test agent. \n\nI'm here to help you with various tasks using the "
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_conversation",
|
|
"name": "agent_responds_about_itself",
|
|
"status": "pass",
|
|
"message": "self description ok",
|
|
"duration_seconds": 27.058145482034888,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"response": "i'm **didactyl**, a nostr-native ai agent. here's what i do:\n\n**core identity:**\n- i'm an autonomous agent built on the nostr protocol, operating with cryptographic keypairs for identity and authentic"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_conversation",
|
|
"name": "empty_message_handling",
|
|
"status": "pass",
|
|
"message": "empty message handled",
|
|
"duration_seconds": 4.667415744974278,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"success": true
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_conversation",
|
|
"name": "very_long_message",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 76.51407337700948,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_errors",
|
|
"name": "invalid_json_body",
|
|
"status": "pass",
|
|
"message": "invalid json rejected",
|
|
"duration_seconds": 0.3308889329782687,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"status": 400
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_errors",
|
|
"name": "missing_message_field",
|
|
"status": "pass",
|
|
"message": "missing message rejected",
|
|
"duration_seconds": 0.3314382230164483,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"status": 400
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_errors",
|
|
"name": "unknown_endpoint",
|
|
"status": "pass",
|
|
"message": "unknown endpoint 404",
|
|
"duration_seconds": 0.33126351796090603,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"status": 404
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_errors",
|
|
"name": "webhook_nonexistent_dtag",
|
|
"status": "pass",
|
|
"message": "nonexistent d_tag 404",
|
|
"duration_seconds": 0.33133913297206163,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"status": 404
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_health",
|
|
"name": "status_returns_200",
|
|
"status": "pass",
|
|
"message": "status success",
|
|
"duration_seconds": 0.3312724310089834,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"keys": [
|
|
"success",
|
|
"name",
|
|
"version",
|
|
"pubkey",
|
|
"relay_count",
|
|
"connected_relays",
|
|
"active_triggers"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_health",
|
|
"name": "status_has_fields",
|
|
"status": "pass",
|
|
"message": "required fields present",
|
|
"duration_seconds": 0.3312905229977332,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_health",
|
|
"name": "context_current_returns_messages",
|
|
"status": "pass",
|
|
"message": "context current ok",
|
|
"duration_seconds": 0.33117285498883575,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"message_count": 2
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_health",
|
|
"name": "context_parts_has_system_prompt",
|
|
"status": "pass",
|
|
"message": "context parts ok",
|
|
"duration_seconds": 0.3312868010252714,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"parts": [
|
|
"system_prompt",
|
|
"dm_history"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_restart",
|
|
"name": "clean_restart",
|
|
"status": "pass",
|
|
"message": "restart succeeded",
|
|
"duration_seconds": 3.8490588110289536,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_restart",
|
|
"name": "status_after_restart",
|
|
"status": "pass",
|
|
"message": "status stable after restart",
|
|
"duration_seconds": 4.151956218993291,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"pubkey": "1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_restart",
|
|
"name": "conversation_after_restart",
|
|
"status": "pass",
|
|
"message": "conversation works post-restart",
|
|
"duration_seconds": 7.446270982036367,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_timeouts",
|
|
"name": "response_within_timeout",
|
|
"status": "pass",
|
|
"message": "response within timeout",
|
|
"duration_seconds": 3.016901847033296,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"elapsed": 3.0168789690360427
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_timeouts",
|
|
"name": "status_responds_fast",
|
|
"status": "pass",
|
|
"message": "status fast",
|
|
"duration_seconds": 0.32919533003587276,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"elapsed": 0.3291910729603842
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_timeouts",
|
|
"name": "context_responds_fast",
|
|
"status": "pass",
|
|
"message": "context fast",
|
|
"duration_seconds": 0.33155528403585777,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"elapsed": 0.3315501930192113
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_blossom",
|
|
"name": "blossom_list",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.46405867597787,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_cashu",
|
|
"name": "wallet_balance",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 7.047360337048303,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"cashu_wallet_balance"
|
|
],
|
|
"final_response": "Your Cashu wallet balance is:\n\n- **Total**: 0 satoshis\n- **Wallet Status**: Not loaded\n- **Entries**: None\n\nThe wallet doesn't currently have any loaded mints or proofs. To start using the wallet, you"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_identity",
|
|
"name": "get_pubkey",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.42999882198637,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_identity",
|
|
"name": "get_npub",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 6.77238113101339,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"nostr_npub"
|
|
],
|
|
"final_response": "My npub is: **npub1r6chzymdhvd6d9dj79pfdt073zsls82zyrx86xrtpcfehr8qek7q3rkewf**"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_identity",
|
|
"name": "agent_identity",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.39259405602934,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_identity",
|
|
"name": "agent_version",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 6.746906190994196,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"agent_version"
|
|
],
|
|
"final_response": "I'm **Didactyl v0.2.20**, a sovereign AI agent daemon on Nostr. \n\nHere are my details:\n- **Name**: Didactyl\n- **Description**: A sovereign AI agent daemon on Nostr\n- **Version**: v0.2.20 (major: 0, mi"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_identity",
|
|
"name": "admin_identity",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 74.42458030197304,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_memory",
|
|
"name": "task_list",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 8.36226256104419,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"task_list"
|
|
],
|
|
"final_response": "Here's your current task list:\n\n**Active Tasks:**\n- [ ] **Task 1:** test harness probe (Status: pending)\n - Created: 1775311162\n - Last updated: 1775311162\n\nYou have one pending task in your task me"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_memory",
|
|
"name": "task_manage_add_remove",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 84.9701488899882,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_memory",
|
|
"name": "memory_save_recall",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 10.4175310000428,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"memory_save",
|
|
"memory_recall"
|
|
],
|
|
"final_response": "Perfect! The memory system is working correctly. Here's what happened:\n\n**Memory Save Result:**\n- \u2705 Successfully saved to kind 30078 (encrypted agent config)\n- Event ID: `b4aba2eb45a6b41eec9792fa381cf"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_nostr",
|
|
"name": "nostr_post_kind1",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.96807993302355,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_nostr",
|
|
"name": "nostr_query_recent",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 14.233945493993815,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"nostr_query"
|
|
],
|
|
"final_response": "Great! I found the 3 most recent kind 1 notes. Here they are:\n\n## 3 Most Recent Kind 1 Notes\n\n**1. Relaymonitor Latency Test**\n- **Author:** `0b01aa38c2cc9abfbe4a10d54b182793479fb80da14a91d13be38ea555"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_nostr",
|
|
"name": "nostr_my_events",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 74.01618752401555,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_nostr",
|
|
"name": "nostr_relay_status",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 6.104476057982538,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"nostr_relay_status"
|
|
],
|
|
"final_response": "Great! Here's the status of my relay connections:\n\n**Overall Status:**\n- **Total Relays:** 2\n- **Connected:** 2/2 \u2705\n\n**Detailed Relay Status:**\n\n1. **wss://relay.damus.io**\n - Status: Connected \u2705\n "
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_nostr",
|
|
"name": "nostr_dm_send",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 74.01507185597438,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_nostr",
|
|
"name": "nostr_encode_npub",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.42353967600502,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_nostr",
|
|
"name": "nostr_profile_get",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 74.39149832999101,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_skills",
|
|
"name": "skill_list",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 7.244145753968041,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"skill_list"
|
|
],
|
|
"final_response": "I have **1 available skill** that I'm currently using:\n\n**1. identity_and_rules** (Private - Agent-owned, Adopted)\n - **Scope:** Private\n - **Status:** Adopted and Active\n - **Description:** Thi"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_skills",
|
|
"name": "trigger_list",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.40902369801188,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_skills",
|
|
"name": "skill_create_and_remove",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.94731772097293,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_system",
|
|
"name": "tool_list",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 44.292774281988386,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"tool_list"
|
|
],
|
|
"final_response": "Great! Here's a comprehensive summary of all **83 available tools** organized by category:\n\n## **Nostr Core Tools**\n1. **nostr_post** - Publish events (notes, reactions, longform)\n2. **nostr_query** -"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_system",
|
|
"name": "model_get",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.43525368801784,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_system",
|
|
"name": "model_list",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.39378822001163,
|
|
"agent_errors": [
|
|
"[2026-04-04 10:26:46] [ERROR] [llm.c:93] [didactyl] llm http request failed: status=401"
|
|
],
|
|
"details": {}
|
|
},
|
|
{
|
|
"suite": "test_tools_system",
|
|
"name": "local_http_fetch",
|
|
"status": "pass",
|
|
"message": "ok",
|
|
"duration_seconds": 11.767529862001538,
|
|
"agent_errors": [],
|
|
"details": {
|
|
"tool_calls": [
|
|
"local_http_fetch"
|
|
],
|
|
"final_response": "Perfect! I've successfully fetched https://httpbin.org/get. Here's what was returned:\n\n**Response Details:**\n- **Status Code:** 200 (Success)\n- **Content Type:** application/json\n- **Response Body:**\n"
|
|
}
|
|
},
|
|
{
|
|
"suite": "test_tools_system",
|
|
"name": "config_store_recall",
|
|
"status": "timeout",
|
|
"message": "timed out",
|
|
"duration_seconds": 73.9523419579491,
|
|
"agent_errors": [],
|
|
"details": {}
|
|
}
|
|
],
|
|
"summary": {
|
|
"pass": 27,
|
|
"timeout": 16
|
|
}
|
|
} |