{ "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 } }