251 lines
7.1 KiB
JSON
251 lines
7.1 KiB
JSON
{
|
|
"keys": {
|
|
"nsec": "nsec17pcmmqxh99rtu5ctpxrdyywdd8f7zfqgf3y2f4fvcm3tk3vpuyqqvlxl4e",
|
|
"npub": "npub12237stmmxapc2ta7spx0e06dkdzgz9vg0z2jglqqru44peus4juqg598qn",
|
|
"npubHex": "52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8",
|
|
"nsecHex": "f071bd80d72946be530b0986d211cd69d3e124084c48a4d52cc6e2bb4581e100"
|
|
},
|
|
"admin": {
|
|
"pubkey": "npub13lm5wf8dvsdnc2894pkhch9uf8phvw9varrv8zf4sc885hhdmc8q6lx7ks"
|
|
},
|
|
"llm": {
|
|
"provider": "https://api.ppq.ai",
|
|
"api_key": "sk-L9kd0LkZaoeaua0qqosnHy",
|
|
"model": "claude-haiku-4.5",
|
|
"base_url": "https://api.ppq.ai",
|
|
"max_tokens": 512,
|
|
"temperature": 0.7
|
|
},
|
|
"security": {
|
|
"verify_signatures": true,
|
|
"stranger_response": "I only respond to people in my web of trust. You can always identify me by my public key (npub).",
|
|
"tiers": {
|
|
"admin": {
|
|
"tools_enabled": true
|
|
},
|
|
"wot": {
|
|
"enabled": true,
|
|
"tools_enabled": false
|
|
},
|
|
"stranger": {
|
|
"enabled": true
|
|
}
|
|
}
|
|
},
|
|
"admin_context": {
|
|
"enabled": true,
|
|
"subscribe_kinds": [
|
|
0,
|
|
3,
|
|
10002,
|
|
1
|
|
],
|
|
"kind_1_limit": 10
|
|
},
|
|
"startup_events": [
|
|
{
|
|
"kind": 0,
|
|
"content_fields": {
|
|
"name": "Didactyl Agent",
|
|
"display_name": "Didactyl",
|
|
"about": "A sovereign AI agent on Nostr",
|
|
"picture": "https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png",
|
|
"banner": "https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"
|
|
},
|
|
"tags": []
|
|
},
|
|
{
|
|
"kind": 10002,
|
|
"content": "",
|
|
"tags": [
|
|
[
|
|
"r",
|
|
"wss://relay.damus.io"
|
|
],
|
|
[
|
|
"r",
|
|
"wss://nos.lol"
|
|
],
|
|
[
|
|
"r",
|
|
"wss://relay.primal.net"
|
|
],
|
|
[
|
|
"r",
|
|
"ws://127.0.0.1:7777"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"kind": 1,
|
|
"content": "Hello world from Didactyl startup",
|
|
"tags": [
|
|
[
|
|
"t",
|
|
"didactyl"
|
|
],
|
|
[
|
|
"t",
|
|
"startup"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"kind": 3,
|
|
"content": "",
|
|
"tags": []
|
|
},
|
|
{
|
|
"kind": 31120,
|
|
"content": "# Didactyl Agent\n\nYou are Didactyl, 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 `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## 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.",
|
|
"tags": [
|
|
[
|
|
"d",
|
|
"soul"
|
|
],
|
|
[
|
|
"app",
|
|
"didactyl"
|
|
],
|
|
[
|
|
"scope",
|
|
"private"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"kind": 31123,
|
|
"content_fields": {
|
|
"name": "long_form_note",
|
|
"description": "How to publish a NIP-23 long-form article (kind 30023)",
|
|
"nip": "NIP-23",
|
|
"event_kind": 30023,
|
|
"format": "The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.",
|
|
"required_tags": {
|
|
"d": "Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.",
|
|
"title": "Human-readable article title.",
|
|
"published_at": "Unix timestamp as a string for first publication time; keep stable on edits."
|
|
},
|
|
"optional_tags": {
|
|
"summary": "Short 1-2 sentence summary.",
|
|
"image": "URL for article preview image.",
|
|
"t": "Topic hashtags using repeated t tags, usually 3-6 lowercase terms."
|
|
},
|
|
"behavior": "If required values are missing or unclear, ask the administrator before publishing instead of guessing.",
|
|
"procedure": [
|
|
"Determine title and d tag from admin input or source material.",
|
|
"Draft markdown body content.",
|
|
"Set published_at as unix seconds string.",
|
|
"Add optional summary/image/t tags when known.",
|
|
"Publish with nostr_post kind 30023 including tags array."
|
|
]
|
|
},
|
|
"tags": [
|
|
[
|
|
"d",
|
|
"long_form_note"
|
|
],
|
|
[
|
|
"app",
|
|
"didactyl"
|
|
],
|
|
[
|
|
"scope",
|
|
"public"
|
|
],
|
|
[
|
|
"slug",
|
|
"long_form_note"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"kind": 31123,
|
|
"content_fields": {
|
|
"name": "post_readme_to_nostr",
|
|
"description": "Publish README.md using the dedicated nostr_post_readme tool",
|
|
"uses_skill": "long_form_note",
|
|
"event_kind": 30023,
|
|
"procedure": [
|
|
"Call nostr_post_readme with empty arguments {}.",
|
|
"Return the tool response including event_id, d_tag, and naddr_uri.",
|
|
"If the tool returns success=false, report the tool error verbatim."
|
|
],
|
|
"required_values": {
|
|
"d": "readme.md",
|
|
"tool": "nostr_post_readme"
|
|
}
|
|
},
|
|
"tags": [
|
|
[
|
|
"d",
|
|
"post_readme_to_nostr"
|
|
],
|
|
[
|
|
"app",
|
|
"didactyl"
|
|
],
|
|
[
|
|
"scope",
|
|
"public"
|
|
],
|
|
[
|
|
"slug",
|
|
"post_readme_to_nostr"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"kind": 31124,
|
|
"content_fields": {
|
|
"name": "admin_ops",
|
|
"description": "Private operational procedures"
|
|
},
|
|
"tags": [
|
|
[
|
|
"d",
|
|
"admin_ops"
|
|
],
|
|
[
|
|
"app",
|
|
"didactyl"
|
|
],
|
|
[
|
|
"scope",
|
|
"private"
|
|
],
|
|
[
|
|
"slug",
|
|
"admin_ops"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"kind": 10123,
|
|
"content": "",
|
|
"tags": [
|
|
[
|
|
"a",
|
|
"31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"
|
|
],
|
|
[
|
|
"a",
|
|
"31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"
|
|
],
|
|
[
|
|
"app",
|
|
"didactyl"
|
|
],
|
|
[
|
|
"scope",
|
|
"public"
|
|
]
|
|
]
|
|
}
|
|
],
|
|
"api": {
|
|
"enabled": true,
|
|
"port": 8590,
|
|
"bind_address": "127.0.0.1"
|
|
}
|
|
} |