Files
didactyl/tests/results/20260404T140236Z/agent_debug.log

396 lines
55 KiB
Plaintext

[2026-04-04 10:04:51] [INFO ] [main.c:1016] Didactyl v0.2.20 starting
[2026-04-04 10:04:51] [INFO ] [nostr_handler.c:2207] [didactyl] initializing relay pool with 2 relays
[2026-04-04 10:04:51] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.damus.io
[2026-04-04 10:04:51] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.primal.net
[2026-04-04 10:04:51] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_1_1775311491", {
"kinds": [10000],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 1
}]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_1_1775311491", {
"kinds": [10000],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 1
}]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_1_1775311491"]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_1_1775311491"]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_1_1775311491"]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_1_1775311491"]
[2026-04-04 10:04:52] [INFO ] [main.c:248] [didactyl] startup checklist [01] Relay connectivity: begin
[2026-04-04 10:04:52] [INFO ] [main.c:255] [didactyl] startup checklist [01] Relay connectivity: ok (connected relays: 2/2)
[2026-04-04 10:04:52] [INFO ] [main.c:248] [didactyl] startup checklist [02] Recover runtime config from Nostr: begin
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_2_1775311492", {
"kinds": [30078],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"#d": ["agent_config"],
"limit": 1
}]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_2_1775311492", {
"kinds": [30078],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"#d": ["agent_config"],
"limit": 1
}]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=702>
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_2_1775311492"]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_2_1775311492"]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_2_1775311492"]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_2_1775311492"]
[2026-04-04 10:04:52] [INFO ] [main.c:258] [didactyl] startup checklist [02] Recover runtime config from Nostr: ok
[2026-04-04 10:04:52] [INFO ] [main.c:248] [didactyl] startup checklist [03] Validate LLM config: begin
[2026-04-04 10:04:52] [INFO ] [main.c:258] [didactyl] startup checklist [03] Validate LLM config: ok
[2026-04-04 10:04:52] [INFO ] [main.c:248] [didactyl] startup checklist [04] Validate admin config: begin
[2026-04-04 10:04:52] [INFO ] [main.c:258] [didactyl] startup checklist [04] Validate admin config: ok
[2026-04-04 10:04:52] [INFO ] [main.c:248] [didactyl] startup checklist [05] Initialize LLM client: begin
[2026-04-04 10:04:52] [INFO ] [main.c:258] [didactyl] startup checklist [05] Initialize LLM client: ok
[2026-04-04 10:04:52] [INFO ] [main.c:248] [didactyl] startup checklist [06] Detect first run via kind 10002: begin
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_3_1775311492", {
"kinds": [10002],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 1
}]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_3_1775311492", {
"kinds": [10002],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 1
}]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_3_1775311492"]
[2026-04-04 10:04:52] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_3_1775311492"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_3_1775311492"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_3_1775311492"]
[2026-04-04 10:04:53] [INFO ] [main.c:1245] [didactyl] startup phase: first-run detection via kind 10002 => subsequent-run
[2026-04-04 10:04:53] [INFO ] [main.c:255] [didactyl] startup checklist [06] Detect first run via kind 10002: ok (subsequent-run)
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [07] Reconcile/persist startup state: begin
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_4_1775311493", {
"kinds": [1],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 1
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_4_1775311493", {
"kinds": [1],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 1
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_4_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_4_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_4_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_4_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=480>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 0 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=474>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10002 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=621>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 31124 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=553>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10123 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=482>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 0 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=476>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10002 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=623>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 31124 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=555>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10123 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=0 (profile) -> wss://relay.damus.io, wss://relay.primal.net
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=10002 (relay_list) -> wss://relay.damus.io, wss://relay.primal.net
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=31124 (skill) -> wss://relay.damus.io, wss://relay.primal.net
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=10123 (adoption_list) -> wss://relay.damus.io, wss://relay.primal.net
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:3297] [didactyl] startup publish summary: 4/4 event(s) published to at least one relay; relays used=2/2
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:906] [didactyl] publish kind event target relays (2):
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:908] [didactyl] -> wss://relay.damus.io
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:908] [didactyl] -> wss://relay.primal.net
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=800>
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=802>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.damus.io (async, reason=manual_publish)
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.primal.net (async, reason=manual_publish)
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:3012] [didactyl] published kind 30078 event via 2 connected relay(s)
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:906] [didactyl] publish kind event target relays (2):
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:908] [didactyl] -> wss://relay.damus.io
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:908] [didactyl] -> wss://relay.primal.net
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=714>
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=716>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.damus.io (async, reason=manual_publish)
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.primal.net (async, reason=manual_publish)
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:3012] [didactyl] published kind 30078 event via 2 connected relay(s)
[2026-04-04 10:04:53] [INFO ] [main.c:1267] [didactyl] startup phase: persisted encrypted runtime config to Nostr
[2026-04-04 10:04:53] [INFO ] [main.c:258] [didactyl] startup checklist [07] Reconcile/persist startup state: ok
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [08] Initialize agent: begin
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_5_1775311493", {
"kinds": [30078],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"#d": ["memory"],
"limit": 1
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_5_1775311493", {
"kinds": [30078],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"#d": ["memory"],
"limit": 1
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","7fb5e7e09092254b700df2e7a8473fdca42ee09e3a32b86d262ad2403807f920",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","7fb5e7e09092254b700df2e7a8473fdca42ee09e3a32b86d262ad2403807f920",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","98b892b33ce3731cbeb82d791f5e41c7deade4bb61756ed600a14f3aeaa7d45e",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","98b892b33ce3731cbeb82d791f5e41c7deade4bb61756ed600a14f3aeaa7d45e",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","952130858723506c1eac58e94f253c8b35e137c056dcedf0619ab63348f43caa",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","952130858723506c1eac58e94f253c8b35e137c056dcedf0619ab63348f43caa",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","b3095dd390e3a08ff24404195292ed302711334687a7de5ca0b433d9fe66a92e",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","b3095dd390e3a08ff24404195292ed302711334687a7de5ca0b433d9fe66a92e",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=656>
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_5_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_5_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_5_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_5_1775311493"]
[2026-04-04 10:04:53] [INFO ] [main.c:258] [didactyl] startup checklist [08] Initialize agent: ok
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [09] Initialize trigger manager: begin
[2026-04-04 10:04:53] [INFO ] [trigger_manager.c:814] [didactyl] trigger manager initialized (capacity=16)
[2026-04-04 10:04:53] [INFO ] [main.c:258] [didactyl] startup checklist [09] Initialize trigger manager: ok
[2026-04-04 10:04:53] [INFO ] [main.c:1308] [didactyl] startup phase: deferred trigger load will run after self-skill EOSE
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [10] Load startup triggers: begin
[2026-04-04 10:04:53] [INFO ] [main.c:1311] [didactyl] startup phase: startup-config trigger load begin
[2026-04-04 10:04:53] [INFO ] [trigger_manager.c:1138] [didactyl] trigger added d_tag=identity_and_rules action=0 enabled=1
[2026-04-04 10:04:53] [INFO ] [trigger_manager.c:1021] [didactyl] startup trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-04-04 10:04:53] [INFO ] [trigger_manager.c:1029] [didactyl] trigger manager loaded 1 trigger(s) from startup config (considered=1)
[2026-04-04 10:04:53] [INFO ] [main.c:1315] [didactyl] startup phase: startup-config trigger load end
[2026-04-04 10:04:53] [INFO ] [main.c:258] [didactyl] startup checklist [10] Load startup triggers: ok
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [11] Discover self relay list via kind 10002: begin
[2026-04-04 10:04:53] [INFO ] [main.c:327] [didactyl] kind10002 query begin: timeout_ms=5000 author=1eb171136dbb1ba6... relay_count=2
[2026-04-04 10:04:53] [INFO ] [main.c:334] [didactyl] kind10002 query relay snapshot: {"relay_count":2,"connected_count":2,"relays":[{"url":"wss://relay.damus.io","status":"connected","events_received":0,"events_published":6,"events_published_ok":4,"events_published_failed":0,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1775311491,"last_event_time":1775311493},{"url":"wss://relay.primal.net","status":"connected","events_received":3,"events_published":6,"events_published_ok":4,"events_published_failed":0,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1775311491,"last_event_time":1775311493}]}
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_6_1775311493", {
"kinds": [10002],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 16
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_6_1775311493", {
"kinds": [10002],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 16
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","e94ea27dc06a8f4f1e70e7e96d1d3e7f328016ff1bbbc3a50723268f14277fb1",false,"rate-limited: you are noting too much"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","cfe5aafd9e84b8a7c6caf1842ce51a502a156b5706ecddadaee73b106796bc6c",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","cfe5aafd9e84b8a7c6caf1842ce51a502a156b5706ecddadaee73b106796bc6c",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","e94ea27dc06a8f4f1e70e7e96d1d3e7f328016ff1bbbc3a50723268f14277fb1",true,""]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_6_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_6_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_6_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_6_1775311493"]
[2026-04-04 10:04:53] [INFO ] [main.c:354] [didactyl] kind10002 query received event_count=1
[2026-04-04 10:04:53] [INFO ] [main.c:451] [didactyl] kind10002 query extracted relays=["wss://relay.damus.io","wss://relay.primal.net"]
[2026-04-04 10:04:53] [INFO ] [main.c:556] [didactyl] kind10002 wait success: relay_count=2
[2026-04-04 10:04:53] [INFO ] [main.c:558] [didactyl] kind10002 relay[0]=wss://relay.damus.io
[2026-04-04 10:04:53] [INFO ] [main.c:558] [didactyl] kind10002 relay[1]=wss://relay.primal.net
[2026-04-04 10:04:53] [INFO ] [main.c:562] [didactyl] kind10002 wait success relay snapshot: {"relay_count":2,"connected_count":2,"relays":[{"url":"wss://relay.damus.io","status":"connected","events_received":0,"events_published":6,"events_published_ok":5,"events_published_failed":1,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1775311491,"last_event_time":1775311493,"last_publish_error":"rate-limited: you are noting too much"},{"url":"wss://relay.primal.net","status":"connected","events_received":4,"events_published":6,"events_published_ok":6,"events_published_failed":0,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1775311491,"last_event_time":1775311493}]}
[2026-04-04 10:04:53] [INFO ] [main.c:255] [didactyl] startup checklist [11] Discover self relay list via kind 10002: ok (kind10002=2 added=0 connected=2/2)
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [12] Subscribe admin context: begin
[2026-04-04 10:04:53] [INFO ] [main.c:1366] [didactyl] startup phase: subscribe admin context begin
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_7_1775311493", {
"kinds": [0, 3, 10002],
"authors": ["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
"limit": 32
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_7_1775311493", {
"kinds": [0, 3, 10002],
"authors": ["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
"limit": 32
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_8_1775311493", {
"kinds": [1],
"authors": ["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
"limit": 10
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_8_1775311493", {
"kinds": [1],
"authors": ["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
"limit": 10
}]
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2352] [didactyl] admin context subscriptions active for admin 254d7a7f68b4443f...
[2026-04-04 10:04:53] [INFO ] [main.c:1370] [didactyl] startup phase: subscribe admin context end
[2026-04-04 10:04:53] [INFO ] [main.c:258] [didactyl] startup checklist [12] Subscribe admin context: ok
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [13] Subscribe agent self context: begin
[2026-04-04 10:04:53] [INFO ] [main.c:1374] [didactyl] startup phase: subscribe agent self context begin
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_9_1775311493", {
"kinds": [0, 3, 10002],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 64
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_9_1775311493", {
"kinds": [0, 3, 10002],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 64
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_10_1775311493", {
"kinds": [1],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 10
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_10_1775311493", {
"kinds": [1],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 10
}]
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2440] [didactyl] agent self-context subscriptions active for pubkey 1eb171136dbb1ba6...
[2026-04-04 10:04:53] [INFO ] [main.c:1378] [didactyl] startup phase: subscribe agent self context end
[2026-04-04 10:04:53] [INFO ] [main.c:258] [didactyl] startup checklist [13] Subscribe agent self context: ok
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [14] Subscribe self-skill cache: begin
[2026-04-04 10:04:53] [INFO ] [main.c:1382] [didactyl] startup phase: subscribe self skill cache begin
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_11_1775311493", {
"kinds": [31123, 31124, 10123],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 300
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_11_1775311493", {
"kinds": [31123, 31124, 10123],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 300
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_12_1775311493", {
"kinds": [31123],
"authors": ["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
"limit": 150
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_12_1775311493", {
"kinds": [31123],
"authors": ["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
"limit": 150
}]
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2532] [didactyl] self/admin skill subscriptions active (self=1eb171136dbb1ba6..., admin=254d7a7f68b4443f...)
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_7_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_7_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_8_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_8_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=469>
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=471>
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_9_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_9_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_10_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_10_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=602>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=31124 d_tag=identity_and_rules id=b3095dd390e3a08ff24404195292ed302711334687a7de5ca0b433d9fe66a92e created_at=1775311493 via wss://relay.damus.io
[2026-04-04 10:04:53] [INFO ] [trigger_manager.c:1364] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:1207] [didactyl] live self-skill trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=604>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=31124 d_tag=identity_and_rules id=b3095dd390e3a08ff24404195292ed302711334687a7de5ca0b433d9fe66a92e created_at=1775311493 via wss://relay.primal.net
[2026-04-04 10:04:53] [INFO ] [trigger_manager.c:1364] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:1207] [didactyl] live self-skill trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=538>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=10123 d_tag=- id=952130858723506c1eac58e94f253c8b35e137c056dcedf0619ab63348f43caa created_at=1775311493 via wss://relay.damus.io
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=540>
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=10123 d_tag=- id=952130858723506c1eac58e94f253c8b35e137c056dcedf0619ab63348f43caa created_at=1775311493 via wss://relay.primal.net
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_11_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_11_1775311493"]
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:1725] [didactyl] self-skill EOSE received: cached skill events=0
[2026-04-04 10:04:53] [INFO ] [main.c:44] [didactyl] deferred trigger load begin after self-skill EOSE (event_count=0)
[2026-04-04 10:04:53] [INFO ] [trigger_manager.c:1364] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-04-04 10:04:53] [INFO ] [trigger_manager.c:918] [didactyl] trigger manager loaded 1 trigger(s) from self skills (considered=1)
[2026-04-04 10:04:53] [INFO ] [main.c:54] [didactyl] deferred trigger load status: {"success":true,"count":1,"active":1,"triggers":[{"skill_d_tag":"identity_and_rules","filter_json":"{\"from\":\"admin\"}","type":"dm","action":"llm","enabled":true,"subscribed":false,"llm":"","tools":"","has_max_tokens":false,"has_temperature":false,"has_seed":false,"last_fired":0,"last_seen_created_at":0}]}
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2757] [didactyl] self-skill cache event: kind=31124 d_tag=identity_and_rules id=b3095dd390e3a08ff24404195292ed302711334687a7de5ca0b433d9fe66a92e created_at=1775311493
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2757] [didactyl] self-skill cache event: kind=10123 d_tag=- id=952130858723506c1eac58e94f253c8b35e137c056dcedf0619ab63348f43caa created_at=1775311493
[2026-04-04 10:04:53] [INFO ] [main.c:1449] [didactyl] startup phase: subscribe self skill cache end
[2026-04-04 10:04:53] [INFO ] [main.c:255] [didactyl] startup checklist [14] Subscribe self-skill cache: ok (skills=1 adoptions=1)
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [15] Subscribe DMs: begin
[2026-04-04 10:04:53] [INFO ] [main.c:1453] [didactyl] startup phase: subscribe DMs begin
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_13_1775311493", {
"kinds": [4],
"#p": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"since": 1775311491,
"limit": 100
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_13_1775311493", {
"kinds": [4],
"#p": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"since": 1775311491,
"limit": 100
}]
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2643] [didactyl] DM subscription active for pubkey 1eb171136dbb1ba6...
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:2644] [didactyl] DEBUG DM subscription g_start_time=1775311491 now=1775311493 delta=2 relay_count=2
[2026-04-04 10:04:53] [INFO ] [main.c:1468] [didactyl] startup phase: subscribe DMs end
[2026-04-04 10:04:53] [INFO ] [main.c:258] [didactyl] startup checklist [15] Subscribe DMs: ok
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [16] Subscribe wallet events: begin
[2026-04-04 10:04:53] [INFO ] [main.c:1472] [didactyl] startup phase: subscribe wallet events begin
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_14_1775311493", {
"kinds": [17375, 7375, 5],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"since": 1775311491,
"limit": 500
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_14_1775311493", {
"kinds": [17375, 7375, 5],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"since": 1775311491,
"limit": 500
}]
[2026-04-04 10:04:53] [INFO ] [nostr_handler.c:2696] [didactyl] wallet event subscription active for pubkey 1eb171136dbb1ba6...
[2026-04-04 10:04:53] [INFO ] [main.c:1476] [didactyl] startup phase: subscribe wallet events end
[2026-04-04 10:04:53] [INFO ] [main.c:258] [didactyl] startup checklist [16] Subscribe wallet events: ok
[2026-04-04 10:04:53] [INFO ] [main.c:248] [didactyl] startup checklist [17] Initialize cashu wallet: begin
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_15_1775311493", {
"kinds": [17375, 7375],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"]
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_15_1775311493", {
"kinds": [17375, 7375],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"]
}]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_12_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_12_1775311493"]
[2026-04-04 10:04:53] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_13_1775311493"]
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_13_1775311493"]
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_14_1775311493"]
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_14_1775311493"]
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_15_1775311493"]
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_15_1775311493"]
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_15_1775311493"]
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_15_1775311493"]
[2026-04-04 10:04:54] [WARN ] [main.c:1492] [didactyl] startup phase: cashu wallet load/create deferred to first tool call
[2026-04-04 10:04:54] [INFO ] [main.c:255] [didactyl] startup checklist [17] Initialize cashu wallet: ok (initialized; load/create deferred)
[2026-04-04 10:04:54] [INFO ] [http_api.c:1570] [didactyl] http api listening on http://127.0.0.1:8485
[2026-04-04 10:04:54] [INFO ] [main.c:1532] [didactyl] HTTP API listening at http://127.0.0.1:8485
[2026-04-04 10:04:54] [INFO ] [main.c:1535] [didactyl] HTTP API endpoints: http://127.0.0.1:8485/api/context/current http://127.0.0.1:8485/api/context/parts
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:1499] [didactyl] sending plaintext DM content: Didactyl Test Agent has started up and is online at 2026-04-04 10:04:54 (version v0.2.20, connected relays: 2/2).
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:1491] [didactyl] sending encrypted DM event: {"pubkey":"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc","created_at":1775311494,"kind":4,"tags":[["p","254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"]],"content":"jW17RpM/0GksuCPaI3kIdas95grzicaXf5xODF31xSY896PZQuQWRa9VFX3+TPRQuDmv2xLbRw32sox/BAhXasZZe2RFLKPjsHyFoeNBbQB4tRn9fGum/0djr/WL8nK+ppT64wLUPut/2vRFnM+sqv1pZ/nRQe/FFxy8K/VE1eM=?iv=g0c6X4mBxWM04miChtqXTA==","id":"73a9a8e4e3688d46cefb02643ead141fdb7397c632fdd9e6f336c0d31d9ad59c","sig":"08c739b14c9c8482b47dda28f82903eb60ef7fdfd6290b0804f8e4b1c5c7da59b9c82294773bc7394d0adba6474dac7530d36868e65c66f66b9c6e6bda1b6057"}
[2026-04-04 10:04:54] [INFO ] [nostr_handler.c:906] [didactyl] publish DM target relays (2):
[2026-04-04 10:04:54] [INFO ] [nostr_handler.c:908] [didactyl] -> wss://relay.damus.io
[2026-04-04 10:04:54] [INFO ] [nostr_handler.c:908] [didactyl] -> wss://relay.primal.net
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=681>
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=683>
[2026-04-04 10:04:54] [INFO ] [nostr_handler.c:2843] [didactyl] kind 4 event published to wss://relay.damus.io (async)
[2026-04-04 10:04:54] [INFO ] [nostr_handler.c:2843] [didactyl] kind 4 event published to wss://relay.primal.net (async)
[2026-04-04 10:04:54] [INFO ] [nostr_handler.c:2852] [didactyl] sent DM 73a9a8e4e3688d46... to 254d7a7f68b4443f... via 2 connected relay(s)
[2026-04-04 10:04:54] [INFO ] [main.c:255] [didactyl] startup checklist [18] READY: ok (agent online; entering main poll loop)
[2026-04-04 10:04:54] [INFO ] [main.c:1571] [didactyl] entering main poll loop
[2026-04-04 10:04:54] [INFO ] [main.c:1572] [didactyl] running with pubkey 1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","73a9a8e4e3688d46cefb02643ead141fdb7397c632fdd9e6f336c0d31d9ad59c",true,""]
[2026-04-04 10:04:54] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","73a9a8e4e3688d46cefb02643ead141fdb7397c632fdd9e6f336c0d31d9ad59c",false,"rate-limited: you are noting too much"]
[2026-04-04 10:04:54] [INFO ] [llm.c:76] [didactyl] llm request: method=POST url=https://api.ppq.ai/chat/completions body_bytes=27553 body_preview={"model":"claude-haiku-4.5","max_tokens":10000,"temperature":0.7,"messages":[{"role":"system","content":"# Didactyl Agent\n\n## Test Agent\n\nYou are a test agent. Respond to requests and use tools when needed."},{"role":"user","content":"Look up your own Nostr profile"},{"role":"user","content":"Look up your own Nostr profile","_ts":1775311494}],"tools":[{"type":"function","function":{"name":"nostr_post","description":"Publish a Nostr event to connected relays","parameters":{"type":"object","properties":{"kind":{"type":"integer","description":"Nostr event kind number (for example 1 for note, 7 for reaction, 30023 for longform)"},"content":{"type":"string","description":"Event content/body text to publish"},"tags":{"type":"array","description":"Optional Nostr tags array, e.g. [[\"d\",\"my-skill\"],[\"t\",\"nostr\"]]","items":{"type":"array","items":{"type":"string"}}}},"required":["kind","content"]}}},{"type":"function","function":{"name":"nostr_query","description":"Query events from relays using a Nostr filter","parameters":{"type":"object","properties":{"filter":{"type":"object","description":"Nostr filter object (authors, kinds, ids, since, until, limit, and tag filters)"},"timeout_ms":{"type":"integer","description":"Optional query timeout in milliseconds"}},"required":["filter"]}}},{"type":"function","function":{"name":"local_shell_exec","description":"Execute a shell command and return stdout/stderr","parameters":{"type":"object","properties":{"command":{"type":"string","description":"Shell command to execute in the configured working directory"}},"required":["command"]}}},{"type":"function","function":{"name":"local_file_read","description":"Read a local file as text from the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to read (relative to configured working directory)"},"max_bytes":{"type":"integer","description":"Optional maximum bytes to return"}},"required":["path"]}}},{"type":"function","function":{"name":"local_file_write","description":"Write text content to a local file in the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to write (relative to configured working directory)"},"content":{"type":"string","description":"Text content to write"},"append":{"type":"boolean","description":"When true, append to file instead of overwriting"}},"required":["path","content"]}}},{"type":"function","function":{"name":"nostr_post_readme","description":"Publish README.md as kind 30023 with deterministic d tag readme.md","parameters":{"type":"object","properties":{},"required":[]}}},{"type":"function","function":{"name":"nostr_delete","description":"Request deletion of one or more previously published events (NIP-09 kind 5)","parameters":{"type":"object","properties":{"event_ids":{"type":"array","description":"Event IDs to request deletion for","items":{"type":"string"}},"kinds":{"type":"array","description":"Optional kinds corresponding to event_ids entries","items":{"type":"integer"}},"reason":{"type":"string","description":"Optional human-readable reason"}},"required":["event_ids"]}}},{"type":"function","function":{"name":"nostr_react","description":"React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)","parameters":{"type":"object","properties":{"event_id":{"type":"string","description":"Target event ID to react to"},"event_pubkey":{"type":"string","description":"Author pubkey of target event"},"event_kind":{"type":"integer","description":"Optional kind of target event"},"reaction":{"type":"string","description":"Reaction content such as +, -, ❤️, or emoji"}},"required":["event_id","event_pubkey"]}}},{"type":"function","function":{"name":"nostr_profile_get","description":"Look up a Nostr profile (kind 0 metadata) by pubkey","parameters":{"type":"object","properties":{"pubkey":{"type":"string","description":"Hex pubkey of the profile to fetch"}},"require...
[2026-04-04 10:04:58] [INFO ] [llm.c:76] [didactyl] llm request: method=POST url=https://api.ppq.ai/chat/completions body_bytes=28078 body_preview={"model":"claude-haiku-4.5","max_tokens":10000,"temperature":0.7,"messages":[{"role":"system","content":"# Didactyl Agent\n\n## Test Agent\n\nYou are a test agent. Respond to requests and use tools when needed."},{"role":"user","content":"Look up your own Nostr profile"},{"role":"user","content":"Look up your own Nostr profile","_ts":1775311494},{"role":"assistant","content":"I'll look up my own Nostr profile by first getting my pubkey and then fetching the profile metadata.","tool_calls":[{"id":"toolu_bdrk_0163qj8DFnDXcpoJdjkF4jYj","type":"function","function":{"name":"nostr_pubkey","arguments":"{}"}}]},{"role":"tool","tool_call_id":"toolu_bdrk_0163qj8DFnDXcpoJdjkF4jYj","content":"{\"success\":true,\"pubkey\":\"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc\",\"content\":\"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc\"}"}],"tools":[{"type":"function","function":{"name":"nostr_post","description":"Publish a Nostr event to connected relays","parameters":{"type":"object","properties":{"kind":{"type":"integer","description":"Nostr event kind number (for example 1 for note, 7 for reaction, 30023 for longform)"},"content":{"type":"string","description":"Event content/body text to publish"},"tags":{"type":"array","description":"Optional Nostr tags array, e.g. [[\"d\",\"my-skill\"],[\"t\",\"nostr\"]]","items":{"type":"array","items":{"type":"string"}}}},"required":["kind","content"]}}},{"type":"function","function":{"name":"nostr_query","description":"Query events from relays using a Nostr filter","parameters":{"type":"object","properties":{"filter":{"type":"object","description":"Nostr filter object (authors, kinds, ids, since, until, limit, and tag filters)"},"timeout_ms":{"type":"integer","description":"Optional query timeout in milliseconds"}},"required":["filter"]}}},{"type":"function","function":{"name":"local_shell_exec","description":"Execute a shell command and return stdout/stderr","parameters":{"type":"object","properties":{"command":{"type":"string","description":"Shell command to execute in the configured working directory"}},"required":["command"]}}},{"type":"function","function":{"name":"local_file_read","description":"Read a local file as text from the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to read (relative to configured working directory)"},"max_bytes":{"type":"integer","description":"Optional maximum bytes to return"}},"required":["path"]}}},{"type":"function","function":{"name":"local_file_write","description":"Write text content to a local file in the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to write (relative to configured working directory)"},"content":{"type":"string","description":"Text content to write"},"append":{"type":"boolean","description":"When true, append to file instead of overwriting"}},"required":["path","content"]}}},{"type":"function","function":{"name":"nostr_post_readme","description":"Publish README.md as kind 30023 with deterministic d tag readme.md","parameters":{"type":"object","properties":{},"required":[]}}},{"type":"function","function":{"name":"nostr_delete","description":"Request deletion of one or more previously published events (NIP-09 kind 5)","parameters":{"type":"object","properties":{"event_ids":{"type":"array","description":"Event IDs to request deletion for","items":{"type":"string"}},"kinds":{"type":"array","description":"Optional kinds corresponding to event_ids entries","items":{"type":"integer"}},"reason":{"type":"string","description":"Optional human-readable reason"}},"required":["event_ids"]}}},{"type":"function","function":{"name":"nostr_react","description":"React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)","parameters":{"type":"object","properties":{"event_id":{"type":"string","description":"Target event ID to react to"},"event_pubkey":{"type":"s...
[2026-04-04 10:05:11] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_16_1775311511", {
"kinds": [0],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 1
}]
[2026-04-04 10:05:11] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_16_1775311511", {
"kinds": [0],
"authors": ["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
"limit": 1
}]
[2026-04-04 10:05:11] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=472>
[2026-04-04 10:05:11] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=470>
[2026-04-04 10:05:11] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_16_1775311511"]
[2026-04-04 10:05:11] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_16_1775311511"]
[2026-04-04 10:05:11] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_16_1775311511"]
[2026-04-04 10:05:11] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_16_1775311511"]
[2026-04-04 10:05:11] [INFO ] [llm.c:76] [didactyl] llm request: method=POST url=https://api.ppq.ai/chat/completions body_bytes=29027 body_preview={"model":"claude-haiku-4.5","max_tokens":10000,"temperature":0.7,"messages":[{"role":"system","content":"# Didactyl Agent\n\n## Test Agent\n\nYou are a test agent. Respond to requests and use tools when needed."},{"role":"user","content":"Look up your own Nostr profile"},{"role":"user","content":"Look up your own Nostr profile","_ts":1775311494},{"role":"assistant","content":"I'll look up my own Nostr profile by first getting my pubkey and then fetching the profile metadata.","tool_calls":[{"id":"toolu_bdrk_0163qj8DFnDXcpoJdjkF4jYj","type":"function","function":{"name":"nostr_pubkey","arguments":"{}"}}]},{"role":"tool","tool_call_id":"toolu_bdrk_0163qj8DFnDXcpoJdjkF4jYj","content":"{\"success\":true,\"pubkey\":\"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc\",\"content\":\"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc\"}"},{"role":"assistant","content":"Now let me fetch my profile metadata:","tool_calls":[{"id":"toolu_bdrk_01SvmURpNtVuQN363Gvcgsrc","type":"function","function":{"name":"nostr_profile_get","arguments":"{\"pubkey\": \"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc\"}"}}]},{"role":"tool","tool_call_id":"toolu_bdrk_01SvmURpNtVuQN363Gvcgsrc","content":"{\"success\":true,\"found\":true,\"event\":{\"content\":\"{\\\"name\\\":\\\"Didactyl Test Agent\\\",\\\"about\\\":\\\"Automated test instance\\\"}\",\"created_at\":1775311493,\"id\":\"98b892b33ce3731cbeb82d791f5e41c7deade4bb61756ed600a14f3aeaa7d45e\",\"kind\":0,\"pubkey\":\"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc\",\"sig\":\"b9d083081f36b1be3c60066af6680050fbbdc42d766277f534fd096f81279e5b70f1083a309a3b96e7065bd3c89c4682cf89cc17968d29b59ac6e062c13109bd\",\"tags\":[]},\"profile\":{\"name\":\"Didactyl Test Agent\",\"about\":\"Automated test instance\"}}"}],"tools":[{"type":"function","function":{"name":"nostr_post","description":"Publish a Nostr event to connected relays","parameters":{"type":"object","properties":{"kind":{"type":"integer","description":"Nostr event kind number (for example 1 for note, 7 for reaction, 30023 for longform)"},"content":{"type":"string","description":"Event content/body text to publish"},"tags":{"type":"array","description":"Optional Nostr tags array, e.g. [[\"d\",\"my-skill\"],[\"t\",\"nostr\"]]","items":{"type":"array","items":{"type":"string"}}}},"required":["kind","content"]}}},{"type":"function","function":{"name":"nostr_query","description":"Query events from relays using a Nostr filter","parameters":{"type":"object","properties":{"filter":{"type":"object","description":"Nostr filter object (authors, kinds, ids, since, until, limit, and tag filters)"},"timeout_ms":{"type":"integer","description":"Optional query timeout in milliseconds"}},"required":["filter"]}}},{"type":"function","function":{"name":"local_shell_exec","description":"Execute a shell command and return stdout/stderr","parameters":{"type":"object","properties":{"command":{"type":"string","description":"Shell command to execute in the configured working directory"}},"required":["command"]}}},{"type":"function","function":{"name":"local_file_read","description":"Read a local file as text from the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to read (relative to configured working directory)"},"max_bytes":{"type":"integer","description":"Optional maximum bytes to return"}},"required":["path"]}}},{"type":"function","function":{"name":"local_file_write","description":"Write text content to a local file in the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to write (relative to configured working directory)"},"content":{"type":"string","description":"Text content to write"},"append":{"type":"boolean","description":"When true, append to file instead of overwriting"}},"required":["path","content"]}}},{"type":"function","function":{"name":"nost...
[2026-04-04 10:05:16] [INFO ] [llm.c:336] [didactyl] llm request sanitizer: removed 2 empty text message(s) before provider request
[2026-04-04 10:05:16] [INFO ] [llm.c:76] [didactyl] llm request: method=POST url=https://api.ppq.ai/chat/completions body_bytes=27418 body_preview={"model":"claude-haiku-4.5","max_tokens":10000,"temperature":0.7,"messages":[{"role":"system","content":"# Didactyl Agent\n\n## Test Agent\n\nYou are a test agent. Respond to requests and use tools when needed."}],"tools":[{"type":"function","function":{"name":"nostr_post","description":"Publish a Nostr event to connected relays","parameters":{"type":"object","properties":{"kind":{"type":"integer","description":"Nostr event kind number (for example 1 for note, 7 for reaction, 30023 for longform)"},"content":{"type":"string","description":"Event content/body text to publish"},"tags":{"type":"array","description":"Optional Nostr tags array, e.g. [[\"d\",\"my-skill\"],[\"t\",\"nostr\"]]","items":{"type":"array","items":{"type":"string"}}}},"required":["kind","content"]}}},{"type":"function","function":{"name":"nostr_query","description":"Query events from relays using a Nostr filter","parameters":{"type":"object","properties":{"filter":{"type":"object","description":"Nostr filter object (authors, kinds, ids, since, until, limit, and tag filters)"},"timeout_ms":{"type":"integer","description":"Optional query timeout in milliseconds"}},"required":["filter"]}}},{"type":"function","function":{"name":"local_shell_exec","description":"Execute a shell command and return stdout/stderr","parameters":{"type":"object","properties":{"command":{"type":"string","description":"Shell command to execute in the configured working directory"}},"required":["command"]}}},{"type":"function","function":{"name":"local_file_read","description":"Read a local file as text from the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to read (relative to configured working directory)"},"max_bytes":{"type":"integer","description":"Optional maximum bytes to return"}},"required":["path"]}}},{"type":"function","function":{"name":"local_file_write","description":"Write text content to a local file in the configured working directory","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path to file to write (relative to configured working directory)"},"content":{"type":"string","description":"Text content to write"},"append":{"type":"boolean","description":"When true, append to file instead of overwriting"}},"required":["path","content"]}}},{"type":"function","function":{"name":"nostr_post_readme","description":"Publish README.md as kind 30023 with deterministic d tag readme.md","parameters":{"type":"object","properties":{},"required":[]}}},{"type":"function","function":{"name":"nostr_delete","description":"Request deletion of one or more previously published events (NIP-09 kind 5)","parameters":{"type":"object","properties":{"event_ids":{"type":"array","description":"Event IDs to request deletion for","items":{"type":"string"}},"kinds":{"type":"array","description":"Optional kinds corresponding to event_ids entries","items":{"type":"integer"}},"reason":{"type":"string","description":"Optional human-readable reason"}},"required":["event_ids"]}}},{"type":"function","function":{"name":"nostr_react","description":"React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)","parameters":{"type":"object","properties":{"event_id":{"type":"string","description":"Target event ID to react to"},"event_pubkey":{"type":"string","description":"Author pubkey of target event"},"event_kind":{"type":"integer","description":"Optional kind of target event"},"reaction":{"type":"string","description":"Reaction content such as +, -, ❤️, or emoji"}},"required":["event_id","event_pubkey"]}}},{"type":"function","function":{"name":"nostr_profile_get","description":"Look up a Nostr profile (kind 0 metadata) by pubkey","parameters":{"type":"object","properties":{"pubkey":{"type":"string","description":"Hex pubkey of the profile to fetch"}},"required":["pubkey"]}}},{"type":"function","function":{"name":"nostr_relay_status","description":"Get connection status and statistics for all...