[2026-03-25 13:47:38] [INFO ] [main.c:1016] Didactyl v0.2.19 starting
[2026-03-25 13:47:38] [INFO ] [nostr_handler.c:2207] [didactyl] initializing relay pool with 2 relays
[2026-03-25 13:47:38] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.damus.io
[2026-03-25 13:47:38] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.primal.net
[2026-03-25 13:47:39] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_1_1774460858", {
		"kinds":	[10000],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:39] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_1_1774460858", {
		"kinds":	[10000],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:39] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_1_1774460858"]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_1_1774460858"]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_1_1774460858"]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_1_1774460858"]
[2026-03-25 13:47:40] [INFO ] [main.c:248] [didactyl] startup checklist [01] Relay connectivity: begin
[2026-03-25 13:47:40] [INFO ] [main.c:255] [didactyl] startup checklist [01] Relay connectivity: ok (connected relays: 2/2)
[2026-03-25 13:47:40] [INFO ] [main.c:248] [didactyl] startup checklist [02] Recover runtime config from Nostr: begin
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_2_1774460860", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["agent_config"],
		"limit":	1
	}]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_2_1774460860", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["agent_config"],
		"limit":	1
	}]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_2_1774460860"]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=702>
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_2_1774460860"]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_2_1774460860"]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_2_1774460860"]
[2026-03-25 13:47:40] [INFO ] [main.c:258] [didactyl] startup checklist [02] Recover runtime config from Nostr: ok
[2026-03-25 13:47:40] [INFO ] [main.c:248] [didactyl] startup checklist [03] Validate LLM config: begin
[2026-03-25 13:47:40] [INFO ] [main.c:258] [didactyl] startup checklist [03] Validate LLM config: ok
[2026-03-25 13:47:40] [INFO ] [main.c:248] [didactyl] startup checklist [04] Validate admin config: begin
[2026-03-25 13:47:40] [INFO ] [main.c:258] [didactyl] startup checklist [04] Validate admin config: ok
[2026-03-25 13:47:40] [INFO ] [main.c:248] [didactyl] startup checklist [05] Initialize LLM client: begin
[2026-03-25 13:47:40] [INFO ] [main.c:258] [didactyl] startup checklist [05] Initialize LLM client: ok
[2026-03-25 13:47:40] [INFO ] [main.c:248] [didactyl] startup checklist [06] Detect first run via kind 10002: begin
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_3_1774460860", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_3_1774460860", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_3_1774460860"]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_3_1774460860"]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_3_1774460860"]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_3_1774460860"]
[2026-03-25 13:47:40] [INFO ] [main.c:1245] [didactyl] startup phase: first-run detection via kind 10002 => subsequent-run
[2026-03-25 13:47:40] [INFO ] [main.c:255] [didactyl] startup checklist [06] Detect first run via kind 10002: ok (subsequent-run)
[2026-03-25 13:47:40] [INFO ] [main.c:248] [didactyl] startup checklist [07] Reconcile/persist startup state: begin
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_4_1774460860", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_4_1774460860", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:40] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_4_1774460860"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_4_1774460860"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_4_1774460860"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_4_1774460860"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=480>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 0 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=474>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10002 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=621>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 31124 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=553>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10123 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=482>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 0 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=476>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10002 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=623>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 31124 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=555>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10123 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=0 (profile) -> wss://relay.damus.io, wss://relay.primal.net
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=10002 (relay_list) -> wss://relay.damus.io, wss://relay.primal.net
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=31124 (skill) -> wss://relay.damus.io, wss://relay.primal.net
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=10123 (adoption_list) -> wss://relay.damus.io, wss://relay.primal.net
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:3297] [didactyl] startup publish summary: 4/4 event(s) published to at least one relay; relays used=2/2
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:906] [didactyl] publish kind event target relays (2):
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.damus.io
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.primal.net
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=800>
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=802>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.damus.io (async, reason=manual_publish)
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.primal.net (async, reason=manual_publish)
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:3012] [didactyl] published kind 30078 event via 2 connected relay(s)
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:906] [didactyl] publish kind event target relays (2):
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.damus.io
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.primal.net
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=714>
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=716>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.damus.io (async, reason=manual_publish)
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.primal.net (async, reason=manual_publish)
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:3012] [didactyl] published kind 30078 event via 2 connected relay(s)
[2026-03-25 13:47:41] [INFO ] [main.c:1267] [didactyl] startup phase: persisted encrypted runtime config to Nostr
[2026-03-25 13:47:41] [INFO ] [main.c:258] [didactyl] startup checklist [07] Reconcile/persist startup state: ok
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [08] Initialize agent: begin
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_5_1774460861", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["memory"],
		"limit":	1
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_5_1774460861", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["memory"],
		"limit":	1
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","61feeb17cd560a8fc11bef4456b1662aedb5ae2923de396009d07a8f7e906aff",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","61feeb17cd560a8fc11bef4456b1662aedb5ae2923de396009d07a8f7e906aff",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","9b494399f98ec71945d25c2ad5062a9a93a69ed5c9e3348f46571d41548e5f5c",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","9b494399f98ec71945d25c2ad5062a9a93a69ed5c9e3348f46571d41548e5f5c",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","92e10e064611f8879a633fc11725148adc2452b899d8cade00dec822a206af54",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","92e10e064611f8879a633fc11725148adc2452b899d8cade00dec822a206af54",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","fac7f97a59e640152f378862fa7d16285601debbd06fe7400d5288385059b643",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","fac7f97a59e640152f378862fa7d16285601debbd06fe7400d5288385059b643",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_5_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_5_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","4bda1899eb80ebaf8f218c40c9784c0317e914bf5ff3927ca4f93c7d5d3c3458",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_5_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_5_1774460861"]
[2026-03-25 13:47:41] [INFO ] [main.c:258] [didactyl] startup checklist [08] Initialize agent: ok
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [09] Initialize trigger manager: begin
[2026-03-25 13:47:41] [INFO ] [trigger_manager.c:814] [didactyl] trigger manager initialized (capacity=16)
[2026-03-25 13:47:41] [INFO ] [main.c:258] [didactyl] startup checklist [09] Initialize trigger manager: ok
[2026-03-25 13:47:41] [INFO ] [main.c:1308] [didactyl] startup phase: deferred trigger load will run after self-skill EOSE
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [10] Load startup triggers: begin
[2026-03-25 13:47:41] [INFO ] [main.c:1311] [didactyl] startup phase: startup-config trigger load begin
[2026-03-25 13:47:41] [INFO ] [trigger_manager.c:1138] [didactyl] trigger added d_tag=identity_and_rules action=0 enabled=1
[2026-03-25 13:47:41] [INFO ] [trigger_manager.c:1021] [didactyl] startup trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-03-25 13:47:41] [INFO ] [trigger_manager.c:1029] [didactyl] trigger manager loaded 1 trigger(s) from startup config (considered=1)
[2026-03-25 13:47:41] [INFO ] [main.c:1315] [didactyl] startup phase: startup-config trigger load end
[2026-03-25 13:47:41] [INFO ] [main.c:258] [didactyl] startup checklist [10] Load startup triggers: ok
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [11] Discover self relay list via kind 10002: begin
[2026-03-25 13:47:41] [INFO ] [main.c:327] [didactyl] kind10002 query begin: timeout_ms=5000 author=1eb171136dbb1ba6... relay_count=2
[2026-03-25 13:47:41] [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":1,"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":1774460858,"last_event_time":1774460861},{"url":"wss://relay.primal.net","status":"connected","events_received":2,"events_published":6,"events_published_ok":5,"events_published_failed":0,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1774460858,"last_event_time":1774460861}]}
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_6_1774460861", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	16
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_6_1774460861", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	16
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","4bda1899eb80ebaf8f218c40c9784c0317e914bf5ff3927ca4f93c7d5d3c3458",false,"rate-limited: you are noting too much"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","bb5e342c239646a783cdd770e96fc8e1477dbd057e42ff9a5d5347e05aa7334d",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","bb5e342c239646a783cdd770e96fc8e1477dbd057e42ff9a5d5347e05aa7334d",true,""]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_6_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_6_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_6_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_6_1774460861"]
[2026-03-25 13:47:41] [INFO ] [main.c:354] [didactyl] kind10002 query received event_count=1
[2026-03-25 13:47:41] [INFO ] [main.c:451] [didactyl] kind10002 query extracted relays=["wss://relay.damus.io","wss://relay.primal.net"]
[2026-03-25 13:47:41] [INFO ] [main.c:556] [didactyl] kind10002 wait success: relay_count=2
[2026-03-25 13:47:41] [INFO ] [main.c:558] [didactyl] kind10002 relay[0]=wss://relay.damus.io
[2026-03-25 13:47:41] [INFO ] [main.c:558] [didactyl] kind10002 relay[1]=wss://relay.primal.net
[2026-03-25 13:47:41] [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":2,"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":1774460858,"last_event_time":1774460861,"last_publish_error":"rate-limited: you are noting too much"},{"url":"wss://relay.primal.net","status":"connected","events_received":2,"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":1774460858,"last_event_time":1774460861}]}
[2026-03-25 13:47:41] [INFO ] [main.c:255] [didactyl] startup checklist [11] Discover self relay list via kind 10002: ok (kind10002=2 added=0 connected=2/2)
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [12] Subscribe admin context: begin
[2026-03-25 13:47:41] [INFO ] [main.c:1366] [didactyl] startup phase: subscribe admin context begin
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_7_1774460861", {
		"kinds":	[0, 3, 10002],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	32
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_7_1774460861", {
		"kinds":	[0, 3, 10002],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	32
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_8_1774460861", {
		"kinds":	[1],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	10
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_8_1774460861", {
		"kinds":	[1],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	10
	}]
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2352] [didactyl] admin context subscriptions active for admin 254d7a7f68b4443f...
[2026-03-25 13:47:41] [INFO ] [main.c:1370] [didactyl] startup phase: subscribe admin context end
[2026-03-25 13:47:41] [INFO ] [main.c:258] [didactyl] startup checklist [12] Subscribe admin context: ok
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [13] Subscribe agent self context: begin
[2026-03-25 13:47:41] [INFO ] [main.c:1374] [didactyl] startup phase: subscribe agent self context begin
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_9_1774460861", {
		"kinds":	[0, 3, 10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	64
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_9_1774460861", {
		"kinds":	[0, 3, 10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	64
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_10_1774460861", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	10
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_10_1774460861", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	10
	}]
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2440] [didactyl] agent self-context subscriptions active for pubkey 1eb171136dbb1ba6...
[2026-03-25 13:47:41] [INFO ] [main.c:1378] [didactyl] startup phase: subscribe agent self context end
[2026-03-25 13:47:41] [INFO ] [main.c:258] [didactyl] startup checklist [13] Subscribe agent self context: ok
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [14] Subscribe self-skill cache: begin
[2026-03-25 13:47:41] [INFO ] [main.c:1382] [didactyl] startup phase: subscribe self skill cache begin
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_11_1774460861", {
		"kinds":	[31123, 31124, 10123],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	300
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_11_1774460861", {
		"kinds":	[31123, 31124, 10123],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	300
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_12_1774460861", {
		"kinds":	[31123],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	150
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_12_1774460861", {
		"kinds":	[31123],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	150
	}]
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2532] [didactyl] self/admin skill subscriptions active (self=1eb171136dbb1ba6..., admin=254d7a7f68b4443f...)
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_7_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_8_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_7_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=469>
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_8_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=471>
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_9_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_10_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_9_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=602>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=31124 d_tag=identity_and_rules id=fac7f97a59e640152f378862fa7d16285601debbd06fe7400d5288385059b643 created_at=1774460861 via wss://relay.damus.io
[2026-03-25 13:47:41] [INFO ] [trigger_manager.c:1364] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:1207] [didactyl] live self-skill trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_10_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=538>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=10123 d_tag=- id=92e10e064611f8879a633fc11725148adc2452b899d8cade00dec822a206af54 created_at=1774460861 via wss://relay.damus.io
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=604>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=31124 d_tag=identity_and_rules id=fac7f97a59e640152f378862fa7d16285601debbd06fe7400d5288385059b643 created_at=1774460861 via wss://relay.primal.net
[2026-03-25 13:47:41] [INFO ] [trigger_manager.c:1364] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:1207] [didactyl] live self-skill trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_11_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=540>
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=10123 d_tag=- id=92e10e064611f8879a633fc11725148adc2452b899d8cade00dec822a206af54 created_at=1774460861 via wss://relay.primal.net
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_12_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_11_1774460861"]
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:1725] [didactyl] self-skill EOSE received: cached skill events=0
[2026-03-25 13:47:41] [INFO ] [main.c:44] [didactyl] deferred trigger load begin after self-skill EOSE (event_count=0)
[2026-03-25 13:47:41] [INFO ] [trigger_manager.c:1364] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-03-25 13:47:41] [INFO ] [trigger_manager.c:918] [didactyl] trigger manager loaded 1 trigger(s) from self skills (considered=1)
[2026-03-25 13:47:41] [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-03-25 13:47:41] [INFO ] [nostr_handler.c:2757] [didactyl] self-skill cache event: kind=31124 d_tag=identity_and_rules id=fac7f97a59e640152f378862fa7d16285601debbd06fe7400d5288385059b643 created_at=1774460861
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2757] [didactyl] self-skill cache event: kind=10123 d_tag=- id=92e10e064611f8879a633fc11725148adc2452b899d8cade00dec822a206af54 created_at=1774460861
[2026-03-25 13:47:41] [INFO ] [main.c:1449] [didactyl] startup phase: subscribe self skill cache end
[2026-03-25 13:47:41] [INFO ] [main.c:255] [didactyl] startup checklist [14] Subscribe self-skill cache: ok (skills=1 adoptions=1)
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [15] Subscribe DMs: begin
[2026-03-25 13:47:41] [INFO ] [main.c:1453] [didactyl] startup phase: subscribe DMs begin
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_13_1774460861", {
		"kinds":	[4],
		"#p":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1774460858,
		"limit":	100
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_13_1774460861", {
		"kinds":	[4],
		"#p":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1774460858,
		"limit":	100
	}]
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2643] [didactyl] DM subscription active for pubkey 1eb171136dbb1ba6...
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:2644] [didactyl] DEBUG DM subscription g_start_time=1774460858 now=1774460861 delta=3 relay_count=2
[2026-03-25 13:47:41] [INFO ] [main.c:1468] [didactyl] startup phase: subscribe DMs end
[2026-03-25 13:47:41] [INFO ] [main.c:258] [didactyl] startup checklist [15] Subscribe DMs: ok
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [16] Subscribe wallet events: begin
[2026-03-25 13:47:41] [INFO ] [main.c:1472] [didactyl] startup phase: subscribe wallet events begin
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_14_1774460861", {
		"kinds":	[17375, 7375, 5],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1774460858,
		"limit":	500
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_14_1774460861", {
		"kinds":	[17375, 7375, 5],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1774460858,
		"limit":	500
	}]
[2026-03-25 13:47:41] [INFO ] [nostr_handler.c:2696] [didactyl] wallet event subscription active for pubkey 1eb171136dbb1ba6...
[2026-03-25 13:47:41] [INFO ] [main.c:1476] [didactyl] startup phase: subscribe wallet events end
[2026-03-25 13:47:41] [INFO ] [main.c:258] [didactyl] startup checklist [16] Subscribe wallet events: ok
[2026-03-25 13:47:41] [INFO ] [main.c:248] [didactyl] startup checklist [17] Initialize cashu wallet: begin
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_15_1774460861", {
		"kinds":	[17375, 7375],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"]
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_15_1774460861", {
		"kinds":	[17375, 7375],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"]
	}]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_12_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_13_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_13_1774460861"]
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:41] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_14_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_14_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_15_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_15_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_15_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_15_1774460861"]
[2026-03-25 13:47:42] [WARN ] [main.c:1492] [didactyl] startup phase: cashu wallet load/create deferred to first tool call
[2026-03-25 13:47:42] [INFO ] [main.c:255] [didactyl] startup checklist [17] Initialize cashu wallet: ok (initialized; load/create deferred)
[2026-03-25 13:47:42] [WARN ] [main.c:1528] [didactyl] HTTP API disabled due to bind/init failure; agent will continue without local API
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:1499] [didactyl] sending plaintext DM content: Didactyl Test Agent has started up and is online at 2026-03-25 13:47:42 (version v0.2.19, connected relays: 2/2).
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:1491] [didactyl] sending encrypted DM event: {"pubkey":"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc","created_at":1774460862,"kind":4,"tags":[["p","254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"]],"content":"gpp6yprxyv2I/0Xjc25cJsHFQpkh7lv3mtoUZNInc8+LQXNNldbXkF2sKLmLxmI8VOS+8jp+n1yVrRm4GEzOQhLGhuDwc4pBQ26hnT06RRnp0tMiaJcf+Z77/MJ8hIRg68N5R0exKxWVx2V+J8Jyiv0Ds6iaCH5J3An5VEkFWN8=?iv=3vnlPkg17NUSV1InIxbKng==","id":"c5810e07dd54a83e20ab8f599c80e92453629a6e21f76ae18a1e00efde3c79ed","sig":"776e251a03c53ec4c03e3daaf05faa9c0a98bf4f9d6850b223475fa8846c085568c9ea62534c156b43cc8751a10cdb594002e600d1e04223db6a1106f4467fc7"}
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:906] [didactyl] publish DM target relays (2):
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.damus.io
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.primal.net
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=681>
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=683>
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:2843] [didactyl] kind 4 event published to wss://relay.damus.io (async)
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:2843] [didactyl] kind 4 event published to wss://relay.primal.net (async)
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:2852] [didactyl] sent DM c5810e07dd54a83e... to 254d7a7f68b4443f... via 2 connected relay(s)
[2026-03-25 13:47:42] [INFO ] [main.c:255] [didactyl] startup checklist [18] READY: ok (agent online; entering main poll loop)
[2026-03-25 13:47:42] [INFO ] [main.c:1571] [didactyl] entering main poll loop
[2026-03-25 13:47:42] [INFO ] [main.c:1572] [didactyl] running with pubkey 1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","c5810e07dd54a83e20ab8f599c80e92453629a6e21f76ae18a1e00efde3c79ed",false,"rate-limited: you are noting too much"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","c5810e07dd54a83e20ab8f599c80e92453629a6e21f76ae18a1e00efde3c79ed",true,""]
[2026-03-25 13:47:42] [INFO ] [main.c:1584] [didactyl] shutting down
[2026-03-25 13:47:42] [INFO ] [trigger_manager.c:1602] [didactyl] trigger manager cleaned up
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_7_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_7_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_8_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_8_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_9_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_9_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_10_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_10_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_11_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_11_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_12_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_12_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_13_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_13_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_14_1774460861"]
[2026-03-25 13:47:42] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_14_1774460861"]
[2026-03-25 13:47:42] [INFO ] [main.c:1016] Didactyl v0.2.19 starting
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:2207] [didactyl] initializing relay pool with 2 relays
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.damus.io
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.primal.net
[2026-03-25 13:47:42] [INFO ] [main.c:1016] Didactyl v0.2.19 starting
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:2207] [didactyl] initializing relay pool with 2 relays
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.damus.io
[2026-03-25 13:47:42] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.primal.net
[2026-03-25 13:47:43] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_1_1774460862", {
		"kinds":	[10000],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:43] [INFO ] [main.c:1016] Didactyl v0.2.19 starting
[2026-03-25 13:47:43] [INFO ] [nostr_handler.c:2207] [didactyl] initializing relay pool with 2 relays
[2026-03-25 13:47:43] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.damus.io
[2026-03-25 13:47:43] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.primal.net
[2026-03-25 13:47:43] [INFO ] [main.c:1016] Didactyl v0.2.19 starting
[2026-03-25 13:47:43] [INFO ] [nostr_handler.c:2207] [didactyl] initializing relay pool with 2 relays
[2026-03-25 13:47:43] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.damus.io
[2026-03-25 13:47:43] [INFO ] [nostr_handler.c:2231] [didactyl] added relay: wss://relay.primal.net
[2026-03-25 13:47:44] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_1_1774460863", {
		"kinds":	[10000],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:44] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_1_1774460863", {
		"kinds":	[10000],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:44] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_1_1774460863"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_1_1774460863"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_1_1774460863"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_1_1774460863"]
[2026-03-25 13:47:45] [INFO ] [main.c:248] [didactyl] startup checklist [01] Relay connectivity: begin
[2026-03-25 13:47:45] [INFO ] [main.c:255] [didactyl] startup checklist [01] Relay connectivity: ok (connected relays: 2/2)
[2026-03-25 13:47:45] [INFO ] [main.c:248] [didactyl] startup checklist [02] Recover runtime config from Nostr: begin
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_2_1774460865", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["agent_config"],
		"limit":	1
	}]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_2_1774460865", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["agent_config"],
		"limit":	1
	}]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_2_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=702>
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_2_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_2_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_2_1774460865"]
[2026-03-25 13:47:45] [INFO ] [main.c:258] [didactyl] startup checklist [02] Recover runtime config from Nostr: ok
[2026-03-25 13:47:45] [INFO ] [main.c:248] [didactyl] startup checklist [03] Validate LLM config: begin
[2026-03-25 13:47:45] [INFO ] [main.c:258] [didactyl] startup checklist [03] Validate LLM config: ok
[2026-03-25 13:47:45] [INFO ] [main.c:248] [didactyl] startup checklist [04] Validate admin config: begin
[2026-03-25 13:47:45] [INFO ] [main.c:258] [didactyl] startup checklist [04] Validate admin config: ok
[2026-03-25 13:47:45] [INFO ] [main.c:248] [didactyl] startup checklist [05] Initialize LLM client: begin
[2026-03-25 13:47:45] [INFO ] [main.c:258] [didactyl] startup checklist [05] Initialize LLM client: ok
[2026-03-25 13:47:45] [INFO ] [main.c:248] [didactyl] startup checklist [06] Detect first run via kind 10002: begin
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_3_1774460865", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_3_1774460865", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_3_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_3_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_3_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_3_1774460865"]
[2026-03-25 13:47:45] [INFO ] [main.c:1245] [didactyl] startup phase: first-run detection via kind 10002 => subsequent-run
[2026-03-25 13:47:45] [INFO ] [main.c:255] [didactyl] startup checklist [06] Detect first run via kind 10002: ok (subsequent-run)
[2026-03-25 13:47:45] [INFO ] [main.c:248] [didactyl] startup checklist [07] Reconcile/persist startup state: begin
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_4_1774460865", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_4_1774460865", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_4_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_4_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_4_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_4_1774460865"]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=480>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 0 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=474>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10002 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=621>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 31124 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=553>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10123 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=482>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 0 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=476>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10002 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=623>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 31124 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=555>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 10123 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=0 (profile) -> wss://relay.damus.io, wss://relay.primal.net
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=10002 (relay_list) -> wss://relay.damus.io, wss://relay.primal.net
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=31124 (skill) -> wss://relay.damus.io, wss://relay.primal.net
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:3285] [didactyl] startup publish detail: kind=10123 (adoption_list) -> wss://relay.damus.io, wss://relay.primal.net
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:3297] [didactyl] startup publish summary: 4/4 event(s) published to at least one relay; relays used=2/2
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:906] [didactyl] publish kind event target relays (2):
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.damus.io
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.primal.net
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=800>
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=802>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.damus.io (async, reason=manual_publish)
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.primal.net (async, reason=manual_publish)
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:3012] [didactyl] published kind 30078 event via 2 connected relay(s)
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:906] [didactyl] publish kind event target relays (2):
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.damus.io
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.primal.net
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=714>
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=716>
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.damus.io (async, reason=manual_publish)
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:2949] [didactyl] kind 30078 event published to wss://relay.primal.net (async, reason=manual_publish)
[2026-03-25 13:47:45] [INFO ] [nostr_handler.c:3012] [didactyl] published kind 30078 event via 2 connected relay(s)
[2026-03-25 13:47:45] [INFO ] [main.c:1267] [didactyl] startup phase: persisted encrypted runtime config to Nostr
[2026-03-25 13:47:45] [INFO ] [main.c:258] [didactyl] startup checklist [07] Reconcile/persist startup state: ok
[2026-03-25 13:47:45] [INFO ] [main.c:248] [didactyl] startup checklist [08] Initialize agent: begin
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_5_1774460865", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["memory"],
		"limit":	1
	}]
[2026-03-25 13:47:45] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_5_1774460865", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["memory"],
		"limit":	1
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","1ae930e3355b38422c24c409b0c670975ccefcb095bd55db5d9d987dcd83027c",true,""]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","6bec760f593574f8ad5a15cbef6da59fb563419521ef1598117826156847f45e",false,"rate-limited: you are noting too much"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","471f23d0d023374e27c95d941106e58a403ed2b76e55f75b5d172ef7881d81c3",true,""]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","471f23d0d023374e27c95d941106e58a403ed2b76e55f75b5d172ef7881d81c3",false,"rate-limited: you are noting too much"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","6bec760f593574f8ad5a15cbef6da59fb563419521ef1598117826156847f45e",true,""]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","1ae930e3355b38422c24c409b0c670975ccefcb095bd55db5d9d987dcd83027c",false,"rate-limited: you are noting too much"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","a13b499ed99e4b8677654b43ef561820b2b36c27693cc4f9dc6bfac8895871f6",true,""]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","a13b499ed99e4b8677654b43ef561820b2b36c27693cc4f9dc6bfac8895871f6",false,"rate-limited: you are noting too much"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_5_1774460865"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_5_1774460865"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","2387be3c210413b65ed853f10ddd9661a064efa6c8beb977dbe1a4ae4d7af2ec",true,""]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_5_1774460865"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_5_1774460865"]
[2026-03-25 13:47:46] [INFO ] [main.c:258] [didactyl] startup checklist [08] Initialize agent: ok
[2026-03-25 13:47:46] [INFO ] [main.c:248] [didactyl] startup checklist [09] Initialize trigger manager: begin
[2026-03-25 13:47:46] [INFO ] [trigger_manager.c:814] [didactyl] trigger manager initialized (capacity=16)
[2026-03-25 13:47:46] [INFO ] [main.c:258] [didactyl] startup checklist [09] Initialize trigger manager: ok
[2026-03-25 13:47:46] [INFO ] [main.c:1308] [didactyl] startup phase: deferred trigger load will run after self-skill EOSE
[2026-03-25 13:47:46] [INFO ] [main.c:248] [didactyl] startup checklist [10] Load startup triggers: begin
[2026-03-25 13:47:46] [INFO ] [main.c:1311] [didactyl] startup phase: startup-config trigger load begin
[2026-03-25 13:47:46] [INFO ] [trigger_manager.c:1138] [didactyl] trigger added d_tag=identity_and_rules action=0 enabled=1
[2026-03-25 13:47:46] [INFO ] [trigger_manager.c:1021] [didactyl] startup trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-03-25 13:47:46] [INFO ] [trigger_manager.c:1029] [didactyl] trigger manager loaded 1 trigger(s) from startup config (considered=1)
[2026-03-25 13:47:46] [INFO ] [main.c:1315] [didactyl] startup phase: startup-config trigger load end
[2026-03-25 13:47:46] [INFO ] [main.c:258] [didactyl] startup checklist [10] Load startup triggers: ok
[2026-03-25 13:47:46] [INFO ] [main.c:248] [didactyl] startup checklist [11] Discover self relay list via kind 10002: begin
[2026-03-25 13:47:46] [INFO ] [main.c:327] [didactyl] kind10002 query begin: timeout_ms=5000 author=1eb171136dbb1ba6... relay_count=2
[2026-03-25 13:47:46] [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":1,"events_published":6,"events_published_ok":0,"events_published_failed":4,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1774460863,"last_event_time":1774460866,"last_publish_error":"rate-limited: you are noting too much"},{"url":"wss://relay.primal.net","status":"connected","events_received":1,"events_published":6,"events_published_ok":5,"events_published_failed":0,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1774460863,"last_event_time":1774460866}]}
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_6_1774460866", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	16
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_6_1774460866", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	16
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","afeac469b7a4ad09b17a1fdfc96397196e72890e79e079d1b5db809a347f5fa7",false,"rate-limited: you are noting too much"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","afeac469b7a4ad09b17a1fdfc96397196e72890e79e079d1b5db809a347f5fa7",true,""]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","2387be3c210413b65ed853f10ddd9661a064efa6c8beb977dbe1a4ae4d7af2ec",false,"rate-limited: you are noting too much"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_6_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_6_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_6_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_6_1774460866"]
[2026-03-25 13:47:46] [INFO ] [main.c:354] [didactyl] kind10002 query received event_count=2
[2026-03-25 13:47:46] [INFO ] [main.c:451] [didactyl] kind10002 query extracted relays=["wss://relay.damus.io","wss://relay.primal.net"]
[2026-03-25 13:47:46] [INFO ] [main.c:556] [didactyl] kind10002 wait success: relay_count=2
[2026-03-25 13:47:46] [INFO ] [main.c:558] [didactyl] kind10002 relay[0]=wss://relay.damus.io
[2026-03-25 13:47:46] [INFO ] [main.c:558] [didactyl] kind10002 relay[1]=wss://relay.primal.net
[2026-03-25 13:47:46] [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":2,"events_published":6,"events_published_ok":0,"events_published_failed":6,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1774460863,"last_event_time":1774460866,"last_publish_error":"rate-limited: you are noting too much"},{"url":"wss://relay.primal.net","status":"connected","events_received":2,"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":1774460863,"last_event_time":1774460866}]}
[2026-03-25 13:47:46] [INFO ] [main.c:255] [didactyl] startup checklist [11] Discover self relay list via kind 10002: ok (kind10002=2 added=0 connected=2/2)
[2026-03-25 13:47:46] [INFO ] [main.c:248] [didactyl] startup checklist [12] Subscribe admin context: begin
[2026-03-25 13:47:46] [INFO ] [main.c:1366] [didactyl] startup phase: subscribe admin context begin
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_7_1774460866", {
		"kinds":	[0, 3, 10002],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	32
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_7_1774460866", {
		"kinds":	[0, 3, 10002],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	32
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_8_1774460866", {
		"kinds":	[1],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	10
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_8_1774460866", {
		"kinds":	[1],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	10
	}]
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2352] [didactyl] admin context subscriptions active for admin 254d7a7f68b4443f...
[2026-03-25 13:47:46] [INFO ] [main.c:1370] [didactyl] startup phase: subscribe admin context end
[2026-03-25 13:47:46] [INFO ] [main.c:258] [didactyl] startup checklist [12] Subscribe admin context: ok
[2026-03-25 13:47:46] [INFO ] [main.c:248] [didactyl] startup checklist [13] Subscribe agent self context: begin
[2026-03-25 13:47:46] [INFO ] [main.c:1374] [didactyl] startup phase: subscribe agent self context begin
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_9_1774460866", {
		"kinds":	[0, 3, 10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	64
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_9_1774460866", {
		"kinds":	[0, 3, 10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	64
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_10_1774460866", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	10
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_10_1774460866", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	10
	}]
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2440] [didactyl] agent self-context subscriptions active for pubkey 1eb171136dbb1ba6...
[2026-03-25 13:47:46] [INFO ] [main.c:1378] [didactyl] startup phase: subscribe agent self context end
[2026-03-25 13:47:46] [INFO ] [main.c:258] [didactyl] startup checklist [13] Subscribe agent self context: ok
[2026-03-25 13:47:46] [INFO ] [main.c:248] [didactyl] startup checklist [14] Subscribe self-skill cache: begin
[2026-03-25 13:47:46] [INFO ] [main.c:1382] [didactyl] startup phase: subscribe self skill cache begin
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_11_1774460866", {
		"kinds":	[31123, 31124, 10123],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	300
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_11_1774460866", {
		"kinds":	[31123, 31124, 10123],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	300
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_12_1774460866", {
		"kinds":	[31123],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	150
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_12_1774460866", {
		"kinds":	[31123],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	150
	}]
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2532] [didactyl] self/admin skill subscriptions active (self=1eb171136dbb1ba6..., admin=254d7a7f68b4443f...)
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_7_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_8_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_7_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=469>
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_8_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=471>
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_9_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_10_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_9_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=602>
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=31124 d_tag=identity_and_rules id=fac7f97a59e640152f378862fa7d16285601debbd06fe7400d5288385059b643 created_at=1774460861 via wss://relay.damus.io
[2026-03-25 13:47:46] [INFO ] [trigger_manager.c:1364] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:1207] [didactyl] live self-skill trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_10_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=538>
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=10123 d_tag=- id=92e10e064611f8879a633fc11725148adc2452b899d8cade00dec822a206af54 created_at=1774460861 via wss://relay.damus.io
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=540>
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=10123 d_tag=- id=a13b499ed99e4b8677654b43ef561820b2b36c27693cc4f9dc6bfac8895871f6 created_at=1774460865 via wss://relay.primal.net
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_11_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=604>
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2151] [didactyl] self-skill cache received kind=31124 d_tag=identity_and_rules id=1ae930e3355b38422c24c409b0c670975ccefcb095bd55db5d9d987dcd83027c created_at=1774460865 via wss://relay.primal.net
[2026-03-25 13:47:46] [INFO ] [trigger_manager.c:1364] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:1207] [didactyl] live self-skill trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_12_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_11_1774460866"]
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:1725] [didactyl] self-skill EOSE received: cached skill events=0
[2026-03-25 13:47:46] [INFO ] [main.c:44] [didactyl] deferred trigger load begin after self-skill EOSE (event_count=0)
[2026-03-25 13:47:46] [INFO ] [trigger_manager.c:1364] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-03-25 13:47:46] [INFO ] [trigger_manager.c:918] [didactyl] trigger manager loaded 1 trigger(s) from self skills (considered=1)
[2026-03-25 13:47:46] [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-03-25 13:47:46] [INFO ] [nostr_handler.c:2757] [didactyl] self-skill cache event: kind=31124 d_tag=identity_and_rules id=1ae930e3355b38422c24c409b0c670975ccefcb095bd55db5d9d987dcd83027c created_at=1774460865
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2757] [didactyl] self-skill cache event: kind=10123 d_tag=- id=a13b499ed99e4b8677654b43ef561820b2b36c27693cc4f9dc6bfac8895871f6 created_at=1774460865
[2026-03-25 13:47:46] [INFO ] [main.c:1449] [didactyl] startup phase: subscribe self skill cache end
[2026-03-25 13:47:46] [INFO ] [main.c:255] [didactyl] startup checklist [14] Subscribe self-skill cache: ok (skills=1 adoptions=1)
[2026-03-25 13:47:46] [INFO ] [main.c:248] [didactyl] startup checklist [15] Subscribe DMs: begin
[2026-03-25 13:47:46] [INFO ] [main.c:1453] [didactyl] startup phase: subscribe DMs begin
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_13_1774460866", {
		"kinds":	[4],
		"#p":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1774460863,
		"limit":	100
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_13_1774460866", {
		"kinds":	[4],
		"#p":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1774460863,
		"limit":	100
	}]
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2643] [didactyl] DM subscription active for pubkey 1eb171136dbb1ba6...
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:2644] [didactyl] DEBUG DM subscription g_start_time=1774460863 now=1774460866 delta=3 relay_count=2
[2026-03-25 13:47:46] [INFO ] [main.c:1468] [didactyl] startup phase: subscribe DMs end
[2026-03-25 13:47:46] [INFO ] [main.c:258] [didactyl] startup checklist [15] Subscribe DMs: ok
[2026-03-25 13:47:46] [INFO ] [main.c:248] [didactyl] startup checklist [16] Subscribe wallet events: begin
[2026-03-25 13:47:46] [INFO ] [main.c:1472] [didactyl] startup phase: subscribe wallet events begin
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_14_1774460866", {
		"kinds":	[17375, 7375, 5],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1774460863,
		"limit":	500
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_14_1774460866", {
		"kinds":	[17375, 7375, 5],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1774460863,
		"limit":	500
	}]
[2026-03-25 13:47:46] [INFO ] [nostr_handler.c:2696] [didactyl] wallet event subscription active for pubkey 1eb171136dbb1ba6...
[2026-03-25 13:47:46] [INFO ] [main.c:1476] [didactyl] startup phase: subscribe wallet events end
[2026-03-25 13:47:46] [INFO ] [main.c:258] [didactyl] startup checklist [16] Subscribe wallet events: ok
[2026-03-25 13:47:46] [INFO ] [main.c:248] [didactyl] startup checklist [17] Initialize cashu wallet: begin
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_15_1774460866", {
		"kinds":	[17375, 7375],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"]
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_15_1774460866", {
		"kinds":	[17375, 7375],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"]
	}]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_12_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_13_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_13_1774460866"]
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:1718] [didactyl] DEBUG on_eose called: event_count=0
[2026-03-25 13:47:46] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_14_1774460866"]
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_14_1774460866"]
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_15_1774460866"]
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_15_1774460866"]
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_15_1774460866"]
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_15_1774460866"]
[2026-03-25 13:47:47] [WARN ] [main.c:1492] [didactyl] startup phase: cashu wallet load/create deferred to first tool call
[2026-03-25 13:47:47] [INFO ] [main.c:255] [didactyl] startup checklist [17] Initialize cashu wallet: ok (initialized; load/create deferred)
[2026-03-25 13:47:47] [WARN ] [main.c:1528] [didactyl] HTTP API disabled due to bind/init failure; agent will continue without local API
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:1499] [didactyl] sending plaintext DM content: Didactyl Test Agent has started up and is online at 2026-03-25 13:47:47 (version v0.2.19, connected relays: 2/2).
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:1491] [didactyl] sending encrypted DM event: {"pubkey":"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc","created_at":1774460867,"kind":4,"tags":[["p","254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"]],"content":"XlRE2hFuH/LF70U0uW54B5tzeUDwJxOPOrNgt4ZWVszJ/EmhmnLiX6Ym7O9Viyw8QIk7pp5xA5qUtwolgnRvuKhza3ox+qMgfKt0h2NEqcmPaZMb0upJXJj1hAuc0HP+0nT/kKyJci8jtBsy5fCTA6sDwfywMwULpgU3S2rqWU8=?iv=I0N5pHlTq7SSvmgICkSOgg==","id":"f6f76facfb71305a7365040310780ba6335a2b1db95ad922b136293ab0e00298","sig":"1e8abe07ce1d67e37ec8c142fc0bcb79589e1c77ecdacac3e6e878b9e4c536aa5c6bbdd785f446483f670427ebd4c84b080945065a8bf83d5675533676892a4f"}
[2026-03-25 13:47:47] [INFO ] [nostr_handler.c:906] [didactyl] publish DM target relays (2):
[2026-03-25 13:47:47] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.damus.io
[2026-03-25 13:47:47] [INFO ] [nostr_handler.c:908] [didactyl]   -> wss://relay.primal.net
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=681>
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=683>
[2026-03-25 13:47:47] [INFO ] [nostr_handler.c:2843] [didactyl] kind 4 event published to wss://relay.damus.io (async)
[2026-03-25 13:47:47] [INFO ] [nostr_handler.c:2843] [didactyl] kind 4 event published to wss://relay.primal.net (async)
[2026-03-25 13:47:47] [INFO ] [nostr_handler.c:2852] [didactyl] sent DM f6f76facfb71305a... to 254d7a7f68b4443f... via 2 connected relay(s)
[2026-03-25 13:47:47] [INFO ] [main.c:255] [didactyl] startup checklist [18] READY: ok (agent online; entering main poll loop)
[2026-03-25 13:47:47] [INFO ] [main.c:1571] [didactyl] entering main poll loop
[2026-03-25 13:47:47] [INFO ] [main.c:1572] [didactyl] running with pubkey 1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=469>
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","f6f76facfb71305a7365040310780ba6335a2b1db95ad922b136293ab0e00298",false,"rate-limited: you are noting too much"]
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","f6f76facfb71305a7365040310780ba6335a2b1db95ad922b136293ab0e00298",true,""]
[2026-03-25 13:47:47] [TRACE] [nostr_handler.c:162] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-03-25 13:47:59] [INFO ] [main.c:1584] [didactyl] shutting down
[2026-03-25 13:47:59] [INFO ] [trigger_manager.c:1602] [didactyl] trigger manager cleaned up
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_7_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_7_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_8_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_8_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_9_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_9_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_10_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_10_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_11_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_11_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_12_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_12_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_13_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_13_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_14_1774460866"]
[2026-03-25 13:47:59] [TRACE] [nostr_handler.c:169] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_14_1774460866"]
