113 lines
4.3 KiB
C
113 lines
4.3 KiB
C
#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 |