#ifndef DIDACTYL_DEFAULT_EVENTS_H
#define DIDACTYL_DEFAULT_EVENTS_H

#define DIDACTYL_DEFAULT_SKILL_D_TAG "didactyl-default"
#define DIDACTYL_DEFAULT_SKILL_KIND 31124
#define DIDACTYL_DEFAULT_SKILL_TAGS_JSON "[[\"d\",\"didactyl-default\"],[\"app\",\"didactyl\"],[\"scope\",\"private\"]]"

#define DIDACTYL_STARTUP_KIND_PROFILE 0
#define DIDACTYL_STARTUP_KIND_CONTACTS 3
#define DIDACTYL_STARTUP_KIND_RELAYS 10002

static const int DIDACTYL_DEFAULT_STARTUP_EVENT_KINDS[] = {
    DIDACTYL_STARTUP_KIND_PROFILE,
    DIDACTYL_STARTUP_KIND_CONTACTS,
    DIDACTYL_STARTUP_KIND_RELAYS
};

#define DIDACTYL_DEFAULT_STARTUP_EVENT_KIND_COUNT ((int)(sizeof(DIDACTYL_DEFAULT_STARTUP_EVENT_KINDS) / sizeof(DIDACTYL_DEFAULT_STARTUP_EVENT_KINDS[0])))

#define DIDACTYL_DEFAULT_KIND0_PROFILE_JSON_TEMPLATE "{\"name\":\"%s\",\"display_name\":\"%s\"}"
#define DIDACTYL_DEFAULT_KIND3_CONTENT ""
#define DIDACTYL_DEFAULT_KIND3_TAGS_JSON_TEMPLATE "[[\"p\",\"%s\"]]"
#define DIDACTYL_DEFAULT_KIND10002_CONTENT ""

static const char* DIDACTYL_DEFAULT_RELAYS[] = {
    "wss://relay.damus.io",
    "wss://nos.lol",
    "wss://relay.primal.net"
};

#define DIDACTYL_DEFAULT_RELAY_COUNT ((int)(sizeof(DIDACTYL_DEFAULT_RELAYS) / sizeof(DIDACTYL_DEFAULT_RELAYS[0])))

static const char* DIDACTYL_DEFAULT_SKILL_TEMPLATE =
    "# %s Agent\n\n"
    "You are %s, a sovereign AI agent living on Nostr.\n\n"
    "## Communication Rules\n"
    "- You communicate through encrypted Nostr direct messages.\n"
    "- Keep responses concise and clear.\n\n"
    "## Behavior\n"
    "- Be helpful and technically accurate.\n"
    "- If unsure, state uncertainty directly.\n"
    "- Prefer actionable, practical advice.\n"
    "- Use the person's name when messaging them if you know it.\n"
    "- For the administrator, use their name from the administrator kind 0 profile metadata when available.\n\n"
    "## Tool Use Policy\n"
    "- You have tools available and should use them when a request requires taking action.\n"
    "- For requests involving local inspection or command execution, call `local_shell_exec` instead of refusing.\n"
    "- For posting to Nostr, call `nostr_post` with explicit `kind` and `content`.\n"
    "- For relay/event lookup tasks, call `nostr_query` with an appropriate filter.\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\n"
    "## Task Management\n"
    "- Maintain and use your internal task list as short-term working memory.\n"
    "- Break long or complex actions into clear tasks before executing them.\n"
    "- Update task status as you complete steps so your plan stays accurate.\n\n"
    "## Safety\n"
    "- Do not claim to have executed actions you did not execute.\n"
    "- You may share your public key (npub) with anyone.\n"
    "- Never reveal your private key (nsec) under any circumstance.\n\n"
    "---template---\n\n"
    "- section: admin_identity\n"
    "  role: system\n"
    "  tool: admin_identity\n"
    "  skip_if_empty: true\n\n"
    "- section: admin_profile\n"
    "  role: system\n"
    "  tool: nostr_admin_profile\n"
    "  skip_if_empty: true\n\n"
    "- section: admin_contacts\n"
    "  role: system\n"
    "  tool: nostr_admin_contacts\n"
    "  skip_if_empty: true\n\n"
    "- section: admin_relays\n"
    "  role: system\n"
    "  tool: nostr_admin_relays\n"
    "  skip_if_empty: true\n\n"
    "- section: admin_notes\n"
    "  role: system\n"
    "  tool: nostr_admin_notes\n"
    "  skip_if_empty: true\n\n"
    "- section: agent_identity\n"
    "  role: system\n"
    "  tool: agent_identity\n"
    "  skip_if_empty: true\n\n"
    "- section: agent_profile\n"
    "  role: system\n"
    "  tool: nostr_agent_profile\n"
    "  skip_if_empty: true\n\n"
    "- section: agent_contacts\n"
    "  role: system\n"
    "  tool: nostr_agent_contacts\n"
    "  skip_if_empty: true\n\n"
    "- section: agent_relays\n"
    "  role: system\n"
    "  tool: nostr_agent_relays\n"
    "  skip_if_empty: true\n\n"
    "- section: agent_notes\n"
    "  role: system\n"
    "  tool: nostr_agent_notes\n"
    "  skip_if_empty: true\n\n"
    "- section: tasks\n"
    "  role: system\n"
    "  tool: task_list\n"
    "  skip_if_empty: true\n\n"
    "- section: dm_history\n"
    "  role: expand\n"
    "  limit: 12\n\n"
    "- section: conversation\n"
    "  role: user\n"
    "  tool: message_current\n"
    "  skip_if_empty: true\n";

#endif