runtime: sync router/gateway/config policy and clan role registry
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user