[2026-04-28 07:31:29] [INFO ] [main.c:1103] Didactyl v0.2.48 starting
[2026-04-28 07:31:29] [INFO ] [nostr_handler.c:2558] [didactyl] initializing relay pool with 2 relays
[2026-04-28 07:31:29] [INFO ] [nostr_handler.c:2582] [didactyl] added relay: wss://relay.damus.io
[2026-04-28 07:31:29] [INFO ] [nostr_handler.c:2582] [didactyl] added relay: wss://relay.primal.net
[2026-04-28 07:31:30] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_1_1777375889", {
		"kinds":	[10000],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_1_1777375889", {
		"kinds":	[10000],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_1_1777375889"]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_1_1777375889"]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_1_1777375889"]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_1_1777375889"]
[2026-04-28 07:31:31] [INFO ] [main.c:304] [didactyl] startup checklist [01] Relay connectivity: begin
[2026-04-28 07:31:31] [INFO ] [main.c:311] [didactyl] startup checklist [01] Relay connectivity: ok (connected relays: 2/2)
[2026-04-28 07:31:31] [INFO ] [main.c:304] [didactyl] startup checklist [02] Recover runtime config from Nostr: begin
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_2_1777375891", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["user-settings"],
		"limit":	20
	}]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_2_1777375891", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["user-settings"],
		"limit":	20
	}]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=1047>
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=1045>
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_2_1777375891"]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_2_1777375891"]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_2_1777375891"]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_2_1777375891"]
[2026-04-28 07:31:31] [INFO ] [main.c:1007] [didactyl] startup phase: recovered user-settings from Nostr
[2026-04-28 07:31:31] [INFO ] [main.c:311] [didactyl] startup checklist [02] Recover runtime config from Nostr: ok (user-settings recalled)
[2026-04-28 07:31:31] [INFO ] [main.c:304] [didactyl] startup checklist [03] Validate LLM config: begin
[2026-04-28 07:31:31] [INFO ] [main.c:314] [didactyl] startup checklist [03] Validate LLM config: ok
[2026-04-28 07:31:31] [INFO ] [main.c:304] [didactyl] startup checklist [04] Validate admin config: begin
[2026-04-28 07:31:31] [INFO ] [main.c:314] [didactyl] startup checklist [04] Validate admin config: ok
[2026-04-28 07:31:31] [INFO ] [main.c:304] [didactyl] startup checklist [05] Initialize LLM client: begin
[2026-04-28 07:31:31] [INFO ] [main.c:314] [didactyl] startup checklist [05] Initialize LLM client: ok
[2026-04-28 07:31:31] [INFO ] [main.c:304] [didactyl] startup checklist [06] Detect first run via kind 10002: begin
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_3_1777375891", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-04-28 07:31:31] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_3_1777375891", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_3_1777375891"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_3_1777375891"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_3_1777375891"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_3_1777375891"]
[2026-04-28 07:31:32] [INFO ] [main.c:1337] [didactyl] startup phase: first-run detection via kind 10002 => subsequent-run
[2026-04-28 07:31:32] [INFO ] [main.c:311] [didactyl] startup checklist [06] Detect first run via kind 10002: ok (subsequent-run)
[2026-04-28 07:31:32] [INFO ] [main.c:304] [didactyl] startup checklist [07] Reconcile/persist startup state: begin
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_4_1777375892", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_4_1777375892", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	1
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_4_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_4_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_4_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_4_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=480>
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3323] [didactyl] kind 0 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=0 author=1eb171136dbb1ba6... id=3fe6071b53da897c... created_at=1777375892
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1540] [didactyl] self-skill upsert rejected: kind not in {31123,31124,10123}
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=474>
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3323] [didactyl] kind 10002 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=10002 author=1eb171136dbb1ba6... id=b479ae241442d8a9... created_at=1777375892
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1540] [didactyl] self-skill upsert rejected: kind not in {31123,31124,10123}
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=827>
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3323] [didactyl] kind 31124 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=31124 author=1eb171136dbb1ba6... id=8837248dc5163739... created_at=1777375892
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1645] [didactyl] self-skill upsert accepted: new entry added
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=553>
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3323] [didactyl] kind 10123 event published to wss://relay.damus.io (async, reason=startup_reconcile)
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=10123 author=1eb171136dbb1ba6... id=be5d4be2386c8715... created_at=1777375892
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1645] [didactyl] self-skill upsert accepted: new entry added
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1657] [didactyl] kind 10123 accepted with 1 'a' tags
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=482>
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3323] [didactyl] kind 0 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=0 author=1eb171136dbb1ba6... id=3fe6071b53da897c... created_at=1777375892
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1540] [didactyl] self-skill upsert rejected: kind not in {31123,31124,10123}
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=476>
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3323] [didactyl] kind 10002 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=10002 author=1eb171136dbb1ba6... id=b479ae241442d8a9... created_at=1777375892
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1540] [didactyl] self-skill upsert rejected: kind not in {31123,31124,10123}
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=829>
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3323] [didactyl] kind 31124 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=31124 author=1eb171136dbb1ba6... id=0ad4dcde6efcb420... created_at=1777375892
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1622] [didactyl] self-skill upsert accepted: replaced existing (old created_at=1777375892)
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=555>
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3323] [didactyl] kind 10123 event published to wss://relay.primal.net (async, reason=startup_reconcile)
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=10123 author=1eb171136dbb1ba6... id=be5d4be2386c8715... created_at=1777375892
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1622] [didactyl] self-skill upsert accepted: replaced existing (old created_at=1777375892)
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:1634] [didactyl] kind 10123 accepted with 1 'a' tags
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3664] [didactyl] startup publish detail: kind=0 (profile) -> wss://relay.damus.io, wss://relay.primal.net
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3664] [didactyl] startup publish detail: kind=10002 (relay_list) -> wss://relay.damus.io, wss://relay.primal.net
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3664] [didactyl] startup publish detail: kind=31124 (skill) -> wss://relay.damus.io, wss://relay.primal.net
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3664] [didactyl] startup publish detail: kind=10123 (adoption_list) -> wss://relay.damus.io, wss://relay.primal.net
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:3676] [didactyl] startup publish summary: 4/4 event(s) published to at least one relay; relays used=2/2
[2026-04-28 07:31:32] [INFO ] [main.c:937] [didactyl] startup phase: skipping user-settings publish because runtime config was recalled from Nostr
[2026-04-28 07:31:32] [INFO ] [main.c:1361] [didactyl] startup phase: persisted encrypted runtime config to Nostr
[2026-04-28 07:31:32] [INFO ] [main.c:314] [didactyl] startup checklist [07] Reconcile/persist startup state: ok
[2026-04-28 07:31:32] [INFO ] [main.c:304] [didactyl] startup checklist [08] Initialize agent: begin
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_5_1777375892", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["memory"],
		"limit":	1
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_5_1777375892", {
		"kinds":	[30078],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"#d":	["memory"],
		"limit":	1
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","3fe6071b53da897c7a173d4ee4d9ed03b969fb476a8f7f9a7a50f131f475d1ee",true,""]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","b479ae241442d8a9457fd83cef39b269e7415c22963dbde30d2ebb79c36ef4c0",false,"rate-limited: you are noting too much"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","b479ae241442d8a9457fd83cef39b269e7415c22963dbde30d2ebb79c36ef4c0",true,""]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","3fe6071b53da897c7a173d4ee4d9ed03b969fb476a8f7f9a7a50f131f475d1ee",true,""]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=824>
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","8837248dc5163739b290229b0bfbc1bd6e171863d2d9afa300e97ce327fbd578",false,"rate-limited: you are noting too much"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_5_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","be5d4be2386c8715d0a548b725f2df3e075775913c991f84f3ca513d7360ac48",false,"rate-limited: you are noting too much"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","0ad4dcde6efcb420185e65ef1758654e79381c5c32982027b590ac5c76655dbb",true,""]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_5_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","be5d4be2386c8715d0a548b725f2df3e075775913c991f84f3ca513d7360ac48",true,""]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_5_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_5_1777375892"]
[2026-04-28 07:31:32] [INFO ] [main.c:314] [didactyl] startup checklist [08] Initialize agent: ok
[2026-04-28 07:31:32] [INFO ] [main.c:304] [didactyl] startup checklist [09] Initialize trigger manager: begin
[2026-04-28 07:31:32] [INFO ] [trigger_manager.c:935] [didactyl] trigger manager initialized (capacity=16)
[2026-04-28 07:31:32] [INFO ] [main.c:314] [didactyl] startup checklist [09] Initialize trigger manager: ok
[2026-04-28 07:31:32] [INFO ] [main.c:1405] [didactyl] startup phase: deferred trigger load will run after self-skill EOSE
[2026-04-28 07:31:32] [INFO ] [main.c:304] [didactyl] startup checklist [10] Load startup triggers: begin
[2026-04-28 07:31:32] [INFO ] [main.c:1408] [didactyl] startup phase: startup-config trigger load begin
[2026-04-28 07:31:32] [INFO ] [trigger_manager.c:1259] [didactyl] trigger added d_tag=identity_and_rules action=0 enabled=1
[2026-04-28 07:31:32] [INFO ] [trigger_manager.c:1142] [didactyl] startup trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-04-28 07:31:32] [INFO ] [trigger_manager.c:1150] [didactyl] trigger manager loaded 1 trigger(s) from startup config (considered=1)
[2026-04-28 07:31:32] [INFO ] [main.c:1412] [didactyl] startup phase: startup-config trigger load end
[2026-04-28 07:31:32] [INFO ] [main.c:314] [didactyl] startup checklist [10] Load startup triggers: ok
[2026-04-28 07:31:32] [INFO ] [main.c:304] [didactyl] startup checklist [11] Discover self relay list via kind 10002: begin
[2026-04-28 07:31:32] [INFO ] [main.c:383] [didactyl] kind10002 query begin: timeout_ms=5000 author=1eb171136dbb1ba6... relay_count=2
[2026-04-28 07:31:32] [INFO ] [main.c:390] [didactyl] kind10002 query relay snapshot: {"relay_count":2,"connected_count":2,"relays":[{"url":"wss://relay.damus.io","status":"connected","events_received":1,"events_published":4,"events_published_ok":1,"events_published_failed":3,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1777375889,"last_event_time":1777375892,"last_publish_error":"rate-limited: you are noting too much"},{"url":"wss://relay.primal.net","status":"connected","events_received":3,"events_published":4,"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":1777375889,"last_event_time":1777375892}]}
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_6_1777375892", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	16
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_6_1777375892", {
		"kinds":	[10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	16
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_6_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_6_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_6_1777375892"]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_6_1777375892"]
[2026-04-28 07:31:32] [INFO ] [main.c:410] [didactyl] kind10002 query received event_count=2
[2026-04-28 07:31:32] [INFO ] [main.c:507] [didactyl] kind10002 query extracted relays=["wss://relay.damus.io","wss://relay.primal.net"]
[2026-04-28 07:31:32] [INFO ] [main.c:612] [didactyl] kind10002 wait success: relay_count=2
[2026-04-28 07:31:32] [INFO ] [main.c:614] [didactyl] kind10002 relay[0]=wss://relay.damus.io
[2026-04-28 07:31:32] [INFO ] [main.c:614] [didactyl] kind10002 relay[1]=wss://relay.primal.net
[2026-04-28 07:31:32] [INFO ] [main.c:618] [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":4,"events_published_ok":1,"events_published_failed":3,"ping_latency_current":0,"ping_latency_avg":0,"query_latency_avg":0,"publish_latency_avg":0,"connection_uptime_start":1777375889,"last_event_time":1777375892,"last_publish_error":"rate-limited: you are noting too much"},{"url":"wss://relay.primal.net","status":"connected","events_received":4,"events_published":4,"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":1777375889,"last_event_time":1777375892}]}
[2026-04-28 07:31:32] [INFO ] [main.c:311] [didactyl] startup checklist [11] Discover self relay list via kind 10002: ok (kind10002=2 added=0 connected=2/2)
[2026-04-28 07:31:32] [INFO ] [main.c:304] [didactyl] startup checklist [12] Subscribe admin context: begin
[2026-04-28 07:31:32] [INFO ] [main.c:1463] [didactyl] startup phase: subscribe admin context begin
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_7_1777375892", {
		"kinds":	[0, 3, 10002],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	32
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_7_1777375892", {
		"kinds":	[0, 3, 10002],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	32
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_8_1777375892", {
		"kinds":	[1],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	10
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_8_1777375892", {
		"kinds":	[1],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	10
	}]
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:2703] [didactyl] admin context subscriptions active for admin 254d7a7f68b4443f...
[2026-04-28 07:31:32] [INFO ] [main.c:1467] [didactyl] startup phase: subscribe admin context end
[2026-04-28 07:31:32] [INFO ] [main.c:314] [didactyl] startup checklist [12] Subscribe admin context: ok
[2026-04-28 07:31:32] [INFO ] [main.c:304] [didactyl] startup checklist [13] Subscribe agent self context: begin
[2026-04-28 07:31:32] [INFO ] [main.c:1471] [didactyl] startup phase: subscribe agent self context begin
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_9_1777375892", {
		"kinds":	[0, 3, 10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	64
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_9_1777375892", {
		"kinds":	[0, 3, 10002],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	64
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_10_1777375892", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	10
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_10_1777375892", {
		"kinds":	[1],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	10
	}]
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:2791] [didactyl] agent self-context subscriptions active for pubkey 1eb171136dbb1ba6...
[2026-04-28 07:31:32] [INFO ] [main.c:1475] [didactyl] startup phase: subscribe agent self context end
[2026-04-28 07:31:32] [INFO ] [main.c:314] [didactyl] startup checklist [13] Subscribe agent self context: ok
[2026-04-28 07:31:32] [INFO ] [main.c:304] [didactyl] startup checklist [14] Subscribe self-skill cache: begin
[2026-04-28 07:31:32] [INFO ] [main.c:1479] [didactyl] startup phase: subscribe self skill cache begin
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:2827] [didactyl] self-skill subscription filter: {"kinds":[31123,31124,10123],"authors":["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],"limit":300}
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_11_1777375892", {
		"kinds":	[31123, 31124, 10123],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	300
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_11_1777375892", {
		"kinds":	[31123, 31124, 10123],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	300
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_12_1777375892", {
		"kinds":	[31123],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	150
	}]
[2026-04-28 07:31:32] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_12_1777375892", {
		"kinds":	[31123],
		"authors":	["254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"],
		"limit":	150
	}]
[2026-04-28 07:31:32] [INFO ] [nostr_handler.c:2887] [didactyl] self/admin skill subscriptions active (self=1eb171136dbb1ba6..., admin=254d7a7f68b4443f...)
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_7_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_8_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_7_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:2063] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=469>
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_8_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:2063] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=460>
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=462>
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_9_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=471>
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_10_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_9_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:2063] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=538>
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:2500] [didactyl] self-skill cache received kind=10123 d_tag=- id=dc138a7c573943b81100e3d41471840a3bfa6bc662809fc30b47af87276aa54b created_at=1777375787 via wss://relay.damus.io
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=10123 author=1eb171136dbb1ba6... id=dc138a7c573943b8... created_at=1777375787
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1609] [didactyl] self-skill upsert rejected: stale (existing created_at=1777375892 >= new created_at=1777375787)
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_10_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:2063] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=816>
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:2500] [didactyl] self-skill cache received kind=31124 d_tag=identity_and_rules id=78b0aaddaf99b7dc66a8094c036551a416542ef87e7701ef53a4efbfe5f2d85d created_at=1777375787 via wss://relay.damus.io
[2026-04-28 07:31:33] [INFO ] [trigger_manager.c:1485] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1502] [didactyl] live self-skill trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=31124 author=1eb171136dbb1ba6... id=78b0aaddaf99b7dc... created_at=1777375787
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1609] [didactyl] self-skill upsert rejected: stale (existing created_at=1777375892 >= new created_at=1777375787)
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=540>
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:2500] [didactyl] self-skill cache received kind=10123 d_tag=- id=be5d4be2386c8715d0a548b725f2df3e075775913c991f84f3ca513d7360ac48 created_at=1777375892 via wss://relay.primal.net
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=10123 author=1eb171136dbb1ba6... id=be5d4be2386c8715... created_at=1777375892
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1622] [didactyl] self-skill upsert accepted: replaced existing (old created_at=1777375892)
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1634] [didactyl] kind 10123 accepted with 1 'a' tags
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_11_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] RECV <large EVENT frame suppressed, bytes=818>
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:2500] [didactyl] self-skill cache received kind=31124 d_tag=identity_and_rules id=0ad4dcde6efcb420185e65ef1758654e79381c5c32982027b590ac5c76655dbb created_at=1777375892 via wss://relay.primal.net
[2026-04-28 07:31:33] [INFO ] [trigger_manager.c:1485] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1502] [didactyl] live self-skill trigger registered d_tag=identity_and_rules action=llm enabled=1
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1526] [didactyl] self-skill upsert candidate: kind=31124 author=1eb171136dbb1ba6... id=0ad4dcde6efcb420... created_at=1777375892
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:1622] [didactyl] self-skill upsert accepted: replaced existing (old created_at=1777375892)
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_12_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_11_1777375892"]
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:2070] [didactyl] self-skill EOSE received: cached skill events=0
[2026-04-28 07:31:33] [INFO ] [main.c:47] [didactyl] deferred trigger load begin after self-skill EOSE (event_count=0)
[2026-04-28 07:31:33] [INFO ] [trigger_manager.c:1485] [didactyl] trigger updated d_tag=identity_and_rules action=0 enabled=1
[2026-04-28 07:31:33] [INFO ] [trigger_manager.c:1039] [didactyl] trigger manager loaded 1 trigger(s) from self skills (considered=1)
[2026-04-28 07:31:33] [INFO ] [main.c:57] [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-28 07:31:33] [INFO ] [nostr_handler.c:3114] [didactyl] self-skill cache event: kind=31124 d_tag=identity_and_rules id=0ad4dcde6efcb420185e65ef1758654e79381c5c32982027b590ac5c76655dbb created_at=1777375892
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:3114] [didactyl] self-skill cache event: kind=10123 d_tag=- id=be5d4be2386c8715d0a548b725f2df3e075775913c991f84f3ca513d7360ac48 created_at=1777375892
[2026-04-28 07:31:33] [INFO ] [main.c:1546] [didactyl] startup phase: subscribe self skill cache end
[2026-04-28 07:31:33] [INFO ] [main.c:311] [didactyl] startup checklist [14] Subscribe self-skill cache: ok (skills=1 adoptions=1)
[2026-04-28 07:31:33] [INFO ] [main.c:304] [didactyl] startup checklist [15] Subscribe DMs: begin
[2026-04-28 07:31:33] [INFO ] [main.c:1550] [didactyl] startup phase: subscribe DMs begin
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:2905] [didactyl] DM subscribe: dm_protocol=2 need_kind4=1 need_kind1059=1 g_start_time=1777375889
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_13_1777375893", {
		"kinds":	[4],
		"#p":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1777375889,
		"limit":	100
	}]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_13_1777375893", {
		"kinds":	[4],
		"#p":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1777375889,
		"limit":	100
	}]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_14_1777375893", {
		"kinds":	[1059],
		"#p":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	400
	}]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_14_1777375893", {
		"kinds":	[1059],
		"#p":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"limit":	400
	}]
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:3000] [didactyl] DM subscription active for pubkey 1eb171136dbb1ba6...
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:3001] [didactyl] DEBUG DM subscription g_start_time=1777375889 now=1777375893 delta=4 relay_count=2
[2026-04-28 07:31:33] [INFO ] [main.c:1565] [didactyl] startup phase: subscribe DMs end
[2026-04-28 07:31:33] [INFO ] [main.c:314] [didactyl] startup checklist [15] Subscribe DMs: ok
[2026-04-28 07:31:33] [INFO ] [main.c:304] [didactyl] startup checklist [16] Subscribe wallet events: begin
[2026-04-28 07:31:33] [INFO ] [main.c:1569] [didactyl] startup phase: subscribe wallet events begin
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_15_1777375893", {
		"kinds":	[17375, 7375, 5],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1777375889,
		"limit":	500
	}]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_15_1777375893", {
		"kinds":	[17375, 7375, 5],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"],
		"since":	1777375889,
		"limit":	500
	}]
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:3053] [didactyl] wallet event subscription active for pubkey 1eb171136dbb1ba6...
[2026-04-28 07:31:33] [INFO ] [main.c:1573] [didactyl] startup phase: subscribe wallet events end
[2026-04-28 07:31:33] [INFO ] [main.c:314] [didactyl] startup checklist [16] Subscribe wallet events: ok
[2026-04-28 07:31:33] [INFO ] [main.c:304] [didactyl] startup checklist [17] Initialize cashu wallet: begin
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["REQ", "pool_16_1777375893", {
		"kinds":	[17375, 7375],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"]
	}]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["REQ", "pool_16_1777375893", {
		"kinds":	[17375, 7375],
		"authors":	["1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc"]
	}]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_12_1777375892"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:2063] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_13_1777375893"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_13_1777375893"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:2063] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_14_1777375893"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_14_1777375893"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:2063] [didactyl] DEBUG on_eose called: event_count=0
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_15_1777375893"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_15_1777375893"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["EOSE","pool_16_1777375893"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["EOSE","pool_16_1777375893"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_16_1777375893"]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_16_1777375893"]
[2026-04-28 07:31:33] [WARN ] [main.c:1589] [didactyl] startup phase: cashu wallet load/create deferred to first tool call
[2026-04-28 07:31:33] [INFO ] [main.c:311] [didactyl] startup checklist [17] Initialize cashu wallet: ok (initialized; load/create deferred)
[2026-04-28 07:31:33] [INFO ] [http_api.c:1662] [didactyl] http api listening on http://127.0.0.1:8492
[2026-04-28 07:31:33] [INFO ] [main.c:1629] [didactyl] HTTP API listening at http://127.0.0.1:8492
[2026-04-28 07:31:33] [INFO ] [main.c:1632] [didactyl] HTTP API endpoints: http://127.0.0.1:8492/api/context/current  http://127.0.0.1:8492/api/context/parts
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:1844] [didactyl] sending plaintext DM content: Didactyl Test Agent has started up and is online at 2026-04-28 07:31:33 (version v0.2.48, connected relays: 2/2).
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:1836] [didactyl] sending encrypted DM event: {"pubkey":"1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc","created_at":1777375893,"kind":4,"tags":[["p","254d7a7f68b4443f5430564eb3a726f09aea57d27e75ab2b8ef57176f9ca3dac"]],"content":"Okz4VaTNjFWFv/ege6fWWTOq6Vn+A4xlLURHP+qvNO6kRfdZrIEToVeBqJnMWtx9IzuFeB3fBK4qzxs74ANTn0aFNwD4mDetdRD0/TcDU8zSgwOV5D6FgIWk64aR0xvQ3beE9Fbq0PXezu8DwvfjvtKBqsasqhQ3PJWhPUi4kLY=?iv=UIBiCRfNQRnh4TN4zU02/w==","id":"2bd1a4c12247eee64f0a8e0f6ae2f663c78ba357c42768a8311e0e066c549502","sig":"eae6b86703c549c6bb1f567add1b411c8db5b84c18a3659ff929c2fc6cb2d4aa13be36d8e48106fd72675d67adc591e0872ab11a1f78b604e7fd5e571d109c15"}
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:920] [didactyl] publish DM target relays (2):
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:922] [didactyl]   -> wss://relay.damus.io
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:922] [didactyl]   -> wss://relay.primal.net
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=681>
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:176] [didactyl] [nostr:websocket] SEND <large EVENT frame suppressed, bytes=683>
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:3200] [didactyl] kind 4 event published to wss://relay.damus.io (async)
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:3200] [didactyl] kind 4 event published to wss://relay.primal.net (async)
[2026-04-28 07:31:33] [INFO ] [nostr_handler.c:3209] [didactyl] sent DM 2bd1a4c12247eee6... to 254d7a7f68b4443f... via 2 connected relay(s)
[2026-04-28 07:31:33] [INFO ] [main.c:311] [didactyl] startup checklist [18] READY: ok (agent online; entering main poll loop)
[2026-04-28 07:31:33] [INFO ] [main.c:1668] [didactyl] entering main poll loop
[2026-04-28 07:31:33] [INFO ] [main.c:1669] [didactyl] running with pubkey 1eb171136dbb1ba695b2f14296adfe88a1f81d4220cc7d186b0e139b8ce0cdbc
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.primal.net:443: ["OK","2bd1a4c12247eee64f0a8e0f6ae2f663c78ba357c42768a8311e0e066c549502",true,""]
[2026-04-28 07:31:33] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] RECV relay.damus.io:443: ["OK","2bd1a4c12247eee64f0a8e0f6ae2f663c78ba357c42768a8311e0e066c549502",false,"rate-limited: you are noting too much"]
[2026-04-28 07:31:33] [INFO ] [llm.c:125] [didactyl] llm request: method=POST url=https://api.ppq.ai/chat/completions body_bytes=50875 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":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
[2026-04-28 07:31:37] [INFO ] [main.c:1691] [didactyl] shutting down
[2026-04-28 07:31:37] [INFO ] [trigger_manager.c:1734] [didactyl] trigger manager cleaned up
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_7_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_7_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_8_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_8_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_9_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_9_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_10_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_10_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_11_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_11_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_12_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_12_1777375892"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_13_1777375893"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_13_1777375893"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_14_1777375893"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_14_1777375893"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.damus.io:443: ["CLOSE", "pool_15_1777375893"]
[2026-04-28 07:31:37] [TRACE] [nostr_handler.c:183] [didactyl] [nostr:websocket] SEND relay.primal.net:443: ["CLOSE", "pool_15_1777375893"]
