diff --git a/README.md b/README.md index 857b541..07e739a 100644 --- a/README.md +++ b/README.md @@ -54,11 +54,11 @@ Skills compose by adoption-list order (`10123`) and trigger tags carry runtime e Didactyl will support local inference, which is very privacy preserving. Remote inference does however have it's advantages, and in those cases Didactyl supports using Bitcoin Lightning and eCash inference providers. -## Current Status — v0.2.64 +## Current Status — v0.2.65 **Active build — this project is barely working. Experiment at your own risk.** -> Last release update: v0.2.64 — Skip ppq.ai balance check (not supported); fix ppq.ai base URL to /v1 for model discovery +> Last release update: v0.2.65 — Update genesis.jsonc.example: fix identity_and_rules skill content (agent name + admin npub), dm_history d_tag and content, relay lists to match all 7 defaults, add ppq.ai/routstr provider examples, add display_name to kind 0 profile - Connects to configured relays with auto-reconnect and relay state transition logging - Publishes configured startup events per relay as each relay becomes connected diff --git a/genesis.jsonc.example b/genesis.jsonc.example index 8bbd057..cb06b73 100644 --- a/genesis.jsonc.example +++ b/genesis.jsonc.example @@ -42,6 +42,9 @@ "kind": 30078, "d_tag": "user-settings", "content": "{\"v\":2,\"updatedAt\":0,\"global_llm\":{\"provider\":\"openai\",\"api_key\":\"sk-REPLACE_WITH_API_KEY\",\"model\":\"gpt-4o-mini\",\"base_url\":\"https://api.openai.com/v1\",\"max_tokens\":512,\"temperature\":0.7},\"didactyl\":{\"admin_pubkey\":\"npub1REPLACE_WITH_ADMIN_PUBKEY\",\"dm_protocol\":\"both\",\"max_turns\":40}}" + // Other supported providers (use instead of openai block above): + // ppq.ai: "provider":"ppq", "base_url":"https://api.ppq.ai/v1" + // routstr: "provider":"routstr", "base_url":"https://api.routstr.com/v1" } ], @@ -53,11 +56,14 @@ }, // ─── Startup Events ──────────────────────────────────────────────── + // The wizard generates these automatically. The examples below show the + // structure; the actual content (name, relays, skills) is built interactively. "startup_events": [ { "kind": 0, "content_fields": { "name": "Didactyl", + "display_name": "Didactyl", "about": "I am a Didactyl agent living on Nostr" }, "tags": [] @@ -73,21 +79,31 @@ "kind": 10002, "content": "", "tags": [ + ["r", "ws://localhost:7777"], + ["r", "wss://laantungir.net/relay"], + ["r", "ws://npub1crpldvy49ef8z34wlacwujnfudy4nd7k96aqdx5wgn6ckztz7z8q9t59ud.fips/relay/"], ["r", "wss://relay.damus.io"], - ["r", "wss://relay.primal.net"] + ["r", "wss://nos.lol"], + ["r", "wss://relay.primal.net"], + ["r", "wss://relay.zapstore.dev"] ] }, { "kind": 10050, "content": "", "tags": [ + ["relay", "ws://localhost:7777"], + ["relay", "wss://laantungir.net/relay"], + ["relay", "ws://npub1crpldvy49ef8z34wlacwujnfudy4nd7k96aqdx5wgn6ckztz7z8q9t59ud.fips/relay/"], ["relay", "wss://relay.damus.io"], - ["relay", "wss://relay.primal.net"] + ["relay", "wss://nos.lol"], + ["relay", "wss://relay.primal.net"], + ["relay", "wss://relay.zapstore.dev"] ] }, { "kind": 31124, - "content": "# Didactyl Agent\n\nYou are {{my_kind0_profile}}\n\nYour npub: {{my_npub}}\n\n## Rules\n\n- Communicate through encrypted Nostr direct messages\n- Keep responses concise and clear\n- Be helpful and technically accurate\n- If unsure, state uncertainty directly\n- Use tools when a request requires taking action\n- After a tool call, base your answer on the actual tool result\n- Never claim a tool was run if no tool was executed\n- Maintain your task list as short-term working memory\n- Never reveal your private key (nsec)\n- You may share your public key (npub) with anyone", + "content": "# AGENT_NAME\n\nYou are {{my_kind0_profile}}\n\nYour npub: {{my_npub}}\n\nAdmin npub: ADMIN_NPUB\n\n## Rules\n\n- Communicate through encrypted Nostr direct messages\n- Keep responses concise and clear\n- Be helpful and technically accurate\n- If unsure, state uncertainty directly\n- Use tools when a request requires taking action\n- After a tool call, base your answer on the actual tool result\n- Never claim a tool was run if no tool was executed\n- Maintain your task list as short-term working memory\n- Never reveal your private key (nsec)\n- You may share your public key (npub) with anyone", "tags": [ ["d", "identity_and_rules"], ["app", "didactyl"], @@ -99,12 +115,12 @@ }, { "kind": 31124, - "content": "## DM History Context\n\n### Instructions\n- Reference prior conversation naturally when it's relevant to the current request.\n- Do not repeat entire DM history back to the user unless explicitly asked.\n- Use this context to avoid asking questions that were already answered in recent messages.\n\n### Recent DM History (last 10 messages)\n\n{{nostr_dm_history({\"limit\":10,\"format\":\"text\"})}}", + "content": "## Recent Conversation\n\n{{nostr_dm_history({\"format\":\"text\",\"limit\":12})}}", "tags": [ - ["d", "dm_history_context"], + ["d", "dm_history"], ["app", "didactyl"], ["scope", "private"], - ["description", "DM history context"], + ["description", "DM conversation history for context continuity"], ["trigger", "dm"], ["filter", "{\"from\":\"admin\"}"] ] diff --git a/src/main.h b/src/main.h index 91c9675..56e8d27 100644 --- a/src/main.h +++ b/src/main.h @@ -12,8 +12,8 @@ // Using DIDACTYL_ prefix to avoid conflicts with nostr_core_lib VERSION macros #define DIDACTYL_VERSION_MAJOR 0 #define DIDACTYL_VERSION_MINOR 2 -#define DIDACTYL_VERSION_PATCH 64 -#define DIDACTYL_VERSION "v0.2.64" +#define DIDACTYL_VERSION_PATCH 65 +#define DIDACTYL_VERSION "v0.2.65" // Agent metadata #define DIDACTYL_NAME "Didactyl"