runtime: sync router/gateway/config policy and clan role registry

This commit is contained in:
Apple
2026-02-19 00:14:06 -08:00
parent 675b25953b
commit dfc0ef1ceb
35 changed files with 6141 additions and 498 deletions

View File

@@ -1,9 +1,9 @@
{
"schema_version": 1,
"version": "1.0.0",
"generated_at": "2026-02-08T17:03:55.256760Z",
"git_commit": "b2a2cb9",
"registry_fingerprint": "6fa274c060859a05",
"version": "1.1.0",
"generated_at": "2026-02-16T17:10:42.141146Z",
"git_commit": "7df8cd5",
"registry_fingerprint": "c9a5a889198ee379",
"agents": {
"daarwizz": {
"display_name": "DAARWIZZ",
@@ -81,7 +81,7 @@
"nutra": {
"display_name": "NUTRA",
"canonical_role": "Nutraceutical Research & Health Optimization Agent",
"prompt_file": "nutra_prompt.txt",
"prompt_file": "nutra_prompt_v4_full.txt",
"telegram_mode": "public",
"visibility": "public",
"domains": [
@@ -192,6 +192,57 @@
"wellbeing"
],
"mentor": null
},
"senpai": {
"display_name": "SENPAI",
"canonical_role": "Trading Advisor & Capital Markets Strategist",
"prompt_file": "senpai_prompt.txt",
"telegram_mode": "public",
"visibility": "public",
"domains": [
"trading",
"crypto",
"market_analysis",
"risk_management",
"defi",
"portfolio"
],
"mentor": null
},
"oneok": {
"display_name": "1OK",
"canonical_role": "Асистент віконного майстра (лід -> замір -> КП)",
"prompt_file": "oneok_prompt.txt",
"telegram_mode": "whitelist",
"visibility": "private",
"domains": [
"windows",
"window_measurement",
"quote_generation",
"sales_ops",
"crm",
"scheduling",
"installation"
],
"mentor": {
"name": "Ілля Титар",
"telegram": "@Titar240581"
}
},
"sofiia": {
"display_name": "Sophia",
"canonical_role": "Chief AI Architect & Technical Sovereign",
"prompt_file": "sofiia_prompt.txt",
"telegram_mode": "whitelist",
"visibility": "private",
"domains": [
"architecture",
"ai_research",
"security",
"platform_evolution",
"technical_leadership"
],
"mentor": null
}
}
}

View File

@@ -72,12 +72,25 @@ agents:
out_of_domain:
response_uk: "Це спеціалізоване питання. Рекомендую звернутися до профільного агента DAARION.city."
oneok:
name: "1OK"
description: "Асистент віконного майстра: лід -> замір -> комерційна пропозиція"
domain: ["windows", "measurement", "quote", "installation", "profile", "glass_unit", "fittings"]
nats_invoke: "agent.oneok.invoke"
nats_response: "agent.oneok.response"
telegram_chats:
- type: "private"
enabled: true
out_of_domain:
response_uk: "Я спеціалізуюсь на віконних рішеннях (лід, замір, КП, монтаж). Для інших тем зверніться до профільного агента DAARION.city."
bot_tokens:
helion: "HELION_BOT_TOKEN"
nutra: "NUTRA_BOT_TOKEN"
greenfood: "GREENFOOD_BOT_TOKEN"
druid: "DRUID_BOT_TOKEN"
daarwizz: "TELEGRAM_BOT_TOKEN"
oneok: "ONEOK_TELEGRAM_BOT_TOKEN"
# Agent Preschool - Training Group for all agents
agent_preschool:

View File

@@ -79,6 +79,7 @@ ACK_TEMPLATES: Dict[str, str] = {
"clan": "Spirit на зв'язку. Запитай — відповім.",
"eonarch": "EONARCH тут. Чекаю на ваше питання.",
"senpai": "SENPAI на зв'язку. Запитайте — допоможу.",
"oneok": "1OK на зв'язку. Готовий допомогти з вікнами, заміром і КП.",
}
@@ -291,6 +292,7 @@ AGENT_NAME_VARIANTS: Dict[str, List[str]] = {
"clan": ["clan", "spirit", "клан", "спіріт", "спирит", "@clanbot"],
"eonarch": ["eonarch", "еонарх", "@eonarchbot"],
"senpai": ["senpai", "сенпай", "сэнпай", "гордон", "gordon", "@senpai_agent_bot"],
"oneok": ["oneok", "1ok", "1ок", "одинок", "асистент віконного майстра", "@oneokbot"],
"soul": ["soul", "athena", "атена", "афіна", "афина", "@athena_soul_bot"],
"yaromir": ["yaromir", "яромир", "@yaromir_agent_bot"],
"sofiia": ["sofiia", "софія", "софия", "софія", "@sofiia_agent_bot"],
@@ -300,7 +302,7 @@ AGENT_NAME_VARIANTS: Dict[str, List[str]] = {
COMMAND_PREFIXES = [
"/ask", "/agent", "/help", "/start", "/status", "/link",
"/daarwizz", "/helion", "/greenfood", "/agromatrix", "/alateya",
"/nutra", "/druid", "/clan", "/eonarch", "/senpai", "/sofiia",
"/nutra", "/druid", "/clan", "/eonarch", "/senpai", "/oneok", "/sofiia",
"/ingest", "/бренд", "/презентація", "/job", "/soul", "/athena", "/yaromir",
]
@@ -576,10 +578,20 @@ def analyze_message(
# --- Priority 1: Training groups ---
if decision.is_training_group:
decision.should_respond = True
decision.action = "FULL"
decision.reason = "training_group"
return decision
# In training chats, do NOT auto-FULL for every agent.
# Only the targeted agent (mention/reply) should respond.
if is_reply_to_agent:
decision.should_respond = True
decision.action = "FULL"
decision.reason = "training_reply_to_agent"
return decision
targeted_agent = detect_any_agent_mention(text)
if targeted_agent and targeted_agent != agent_id:
decision.should_respond = False
decision.action = "SILENT"
decision.reason = f"training_addressed_to_other_agent_{targeted_agent}"
return decision
# If targeted_agent == agent_id or no target, continue with standard logic below.
# --- Priority 2: Private chat (DM) ---
if is_private_chat:

View File

@@ -2,6 +2,52 @@
Ти — головний агент-координатор рою агентів DAARION DAO та перший цифровий мер міста DAARION.city.
Канонічні домени DAARWIZZ: `daarion.city` та `daarion.space`.
---
# ORCHESTRATION CORE v3 (dynamic roster)
## Роль і ієрархія
- Ти єдиний мер (Mayor/Mer) мережі агентів DAARION.
- Ти control-plane оркестратор: приймаєш запит, визначаєш маршрут, делегуєш доменним або інфраструктурним агентам.
- Ти не підміняєш доменного агента, якщо завдання явно в його спеціалізації.
## Dynamic roster (критичний принцип)
- Вважай реєстр агентів динамічним: агенти можуть додаватися, оновлюватися, розділятися, деактивуватися.
- Не вважай список агентів “раз і назавжди” фіксованим.
- Якщо бракує метаданих для маршрутизації: запроси мінімально потрібні дані або ініціюй onboarding-процес.
- При тимчасовій недоступності агента: запропонуй fallback і чітко поясни обмеження.
## Оркестрація (routing policy)
Для кожного запиту:
1) класифікуй намір: онбординг / операційний / доменний / інфраструктурний / змішаний;
2) виріши scope: відповісти коротко самостійно чи делегувати;
3) дотримуйся privacy boundary: передавай делегатам тільки мінімально необхідний контекст;
4) дотримуйся cost/latency: обирай найменший достатній маршрут виконання.
## Пріоритетні класи делегації
- Top-level (доменні): helion, alateya, druid, nutra, agromatrix, greenfood, clan, eonarch, yaromir, soul, senpai, oneok, sofiia.
- Internal infra: monitor, devtools, comfy.
- Для infra/інцидентів пріоритетно залучай monitor/devtools; для медіа-пайплайнів — comfy.
## Онбординг нових агентів/дистриктів (обов'язковий протокол)
A) Intake: призначення, цільові користувачі, канали, capability/non-goals, залежності, policy памʼяті/consent, owner.
B) Contract: inputs/outputs, failure modes, escalation path.
C) Trial: smoke-кейси, quality gates, rollback.
D) Registration: метадані реєстру, routing/health, версія.
E) Go-live: активація маршрутизації, правила видимості, публічне оголошення.
## Front-door консультації (мешканці/партнери/мери)
- Починай з короткого triage: хто користувач, який домен, який очікуваний результат.
- Давай наступний практичний крок і вказуй, який агент веде процес далі.
- Для нових мерів/агентів: спершу onboarding-консультація, потім route на профільний трек.
## Жорсткі обмеження
- Не вигадуй інтеграції, endpoint-и або “виконані” інфраструктурні дії без підтвердженого output.
- Не винось приватний контекст між дистриктами без необхідності.
- Коли невизначено: або запитай мінімальний missing input, або делегуй перевірку профільному агенту.
---
# BEHAVIOR POLICY v1