## Agents Added - Alateya: R&D, biotech, innovations - Clan (Spirit): Community spirit agent - Eonarch: Consciousness evolution agent ## Changes - docker-compose.node1.yml: Added tokens for all 3 new agents - gateway-bot/http_api.py: Added configs and webhook endpoints - gateway-bot/clan_prompt.txt: New prompt file - gateway-bot/eonarch_prompt.txt: New prompt file ## Fixes - Fixed ROUTER_URL from :9102 to :8000 (internal container port) - All 9 Telegram agents now working ## Documentation - Created PROJECT-MASTER-INDEX.md - single entry point - Added various status documents and scripts Tokens configured: - Helion, NUTRA, Agromatrix (existing) - Alateya, Clan, Eonarch (new) - Druid, GreenFood, DAARWIZZ (configured)
287 lines
9.9 KiB
Plaintext
287 lines
9.9 KiB
Plaintext
// Neo4j Graph Schema for Helion Memory v3.0
|
|
// Run this in Neo4j Browser or via Cypher shell
|
|
// Created: 2026-01-17
|
|
|
|
// ============================================================================
|
|
// CONSTRAINTS (Uniqueness)
|
|
// ============================================================================
|
|
|
|
// User node uniqueness
|
|
CREATE CONSTRAINT user_platform_id IF NOT EXISTS
|
|
FOR (u:User) REQUIRE u.platform_user_id IS UNIQUE;
|
|
|
|
// Group node uniqueness
|
|
CREATE CONSTRAINT group_chat_id IF NOT EXISTS
|
|
FOR (g:Group) REQUIRE g.chat_id IS UNIQUE;
|
|
|
|
// Role node uniqueness
|
|
CREATE CONSTRAINT role_code IF NOT EXISTS
|
|
FOR (r:Role) REQUIRE r.code IS UNIQUE;
|
|
|
|
// Topic node uniqueness
|
|
CREATE CONSTRAINT topic_id IF NOT EXISTS
|
|
FOR (t:Topic) REQUIRE t.topic_id IS UNIQUE;
|
|
|
|
// Project node uniqueness
|
|
CREATE CONSTRAINT project_id IF NOT EXISTS
|
|
FOR (p:Project) REQUIRE p.project_id IS UNIQUE;
|
|
|
|
// Artifact node uniqueness
|
|
CREATE CONSTRAINT artifact_id IF NOT EXISTS
|
|
FOR (a:Artifact) REQUIRE a.artifact_id IS UNIQUE;
|
|
|
|
// Decision node uniqueness
|
|
CREATE CONSTRAINT decision_id IF NOT EXISTS
|
|
FOR (d:Decision) REQUIRE d.decision_id IS UNIQUE;
|
|
|
|
// ============================================================================
|
|
// INDEXES (Performance)
|
|
// ============================================================================
|
|
|
|
// User indexes
|
|
CREATE INDEX user_telegram_id IF NOT EXISTS FOR (u:User) ON (u.telegram_user_id);
|
|
CREATE INDEX user_username IF NOT EXISTS FOR (u:User) ON (u.username);
|
|
CREATE INDEX user_status IF NOT EXISTS FOR (u:User) ON (u.status);
|
|
|
|
// Group indexes
|
|
CREATE INDEX group_channel IF NOT EXISTS FOR (g:Group) ON (g.channel);
|
|
CREATE INDEX group_trust IF NOT EXISTS FOR (g:Group) ON (g.trust_mode);
|
|
|
|
// Topic indexes
|
|
CREATE INDEX topic_name IF NOT EXISTS FOR (t:Topic) ON (t.name);
|
|
CREATE INDEX topic_category IF NOT EXISTS FOR (t:Topic) ON (t.category);
|
|
|
|
// Project indexes
|
|
CREATE INDEX project_name IF NOT EXISTS FOR (p:Project) ON (p.name);
|
|
CREATE INDEX project_status IF NOT EXISTS FOR (p:Project) ON (p.status);
|
|
|
|
// ============================================================================
|
|
// INITIAL NODES: Roles
|
|
// ============================================================================
|
|
|
|
MERGE (r:Role {code: 'admin'})
|
|
SET r.display_name = 'Administrator',
|
|
r.scope = 'platform',
|
|
r.description = 'Full platform access',
|
|
r.created_at = datetime();
|
|
|
|
MERGE (r:Role {code: 'mentor'})
|
|
SET r.display_name = 'Mentor',
|
|
r.scope = 'platform',
|
|
r.description = 'Can teach Helion, elevated trust',
|
|
r.created_at = datetime();
|
|
|
|
MERGE (r:Role {code: 'developer'})
|
|
SET r.display_name = 'Developer',
|
|
r.scope = 'platform',
|
|
r.description = 'Technical team member',
|
|
r.created_at = datetime();
|
|
|
|
MERGE (r:Role {code: 'investor'})
|
|
SET r.display_name = 'Investor',
|
|
r.scope = 'platform',
|
|
r.description = 'Token holder or investor',
|
|
r.created_at = datetime();
|
|
|
|
MERGE (r:Role {code: 'ops'})
|
|
SET r.display_name = 'Operations',
|
|
r.scope = 'platform',
|
|
r.description = 'Operations team member',
|
|
r.created_at = datetime();
|
|
|
|
MERGE (r:Role {code: 'moderator'})
|
|
SET r.display_name = 'Moderator',
|
|
r.scope = 'group',
|
|
r.description = 'Group moderator',
|
|
r.created_at = datetime();
|
|
|
|
MERGE (r:Role {code: 'member'})
|
|
SET r.display_name = 'Member',
|
|
r.scope = 'platform',
|
|
r.description = 'Regular platform member',
|
|
r.created_at = datetime();
|
|
|
|
// ============================================================================
|
|
// INITIAL NODES: Energy Union Projects
|
|
// ============================================================================
|
|
|
|
MERGE (p:Project {project_id: 'energy-union'})
|
|
SET p.name = 'Energy Union',
|
|
p.description = 'Main platform for decentralized energy solutions',
|
|
p.status = 'active',
|
|
p.created_at = datetime();
|
|
|
|
MERGE (p:Project {project_id: 'biominer'})
|
|
SET p.name = 'BioMiner',
|
|
p.description = 'Bioenergy mining system',
|
|
p.status = 'active',
|
|
p.parent_project = 'energy-union',
|
|
p.created_at = datetime();
|
|
|
|
MERGE (p:Project {project_id: 'ecominer'})
|
|
SET p.name = 'EcoMiner',
|
|
p.description = 'Modular cogeneration system',
|
|
p.status = 'active',
|
|
p.parent_project = 'energy-union',
|
|
p.created_at = datetime();
|
|
|
|
MERGE (p:Project {project_id: 'eu-token'})
|
|
SET p.name = 'EU Token',
|
|
p.description = 'Energy Union utility token',
|
|
p.status = 'active',
|
|
p.parent_project = 'energy-union',
|
|
p.created_at = datetime();
|
|
|
|
// ============================================================================
|
|
// INITIAL NODES: Topics
|
|
// ============================================================================
|
|
|
|
MERGE (t:Topic {topic_id: 'tokenomics'})
|
|
SET t.name = 'Tokenomics',
|
|
t.category = 'technical',
|
|
t.description = 'Token economics and distribution',
|
|
t.created_at = datetime();
|
|
|
|
MERGE (t:Topic {topic_id: 'dao-governance'})
|
|
SET t.name = 'DAO Governance',
|
|
t.category = 'organizational',
|
|
t.description = 'Decentralized governance mechanisms',
|
|
t.created_at = datetime();
|
|
|
|
MERGE (t:Topic {topic_id: 'cogeneration'})
|
|
SET t.name = 'Cogeneration',
|
|
t.category = 'technical',
|
|
t.description = 'Combined heat and power generation',
|
|
t.created_at = datetime();
|
|
|
|
MERGE (t:Topic {topic_id: 'biogas'})
|
|
SET t.name = 'Biogas',
|
|
t.category = 'technical',
|
|
t.description = 'Biogas production and utilization',
|
|
t.created_at = datetime();
|
|
|
|
MERGE (t:Topic {topic_id: 'investment'})
|
|
SET t.name = 'Investment',
|
|
t.category = 'business',
|
|
t.description = 'Investment opportunities and strategies',
|
|
t.created_at = datetime();
|
|
|
|
MERGE (t:Topic {topic_id: 'staking'})
|
|
SET t.name = 'Staking',
|
|
t.category = 'technical',
|
|
t.description = 'Token staking mechanisms',
|
|
t.created_at = datetime();
|
|
|
|
// ============================================================================
|
|
// INITIAL NODES: Known Mentors (as Users)
|
|
// ============================================================================
|
|
|
|
MERGE (u:User {username: '@ivantytar'})
|
|
SET u.display_name = 'Іван Титар',
|
|
u.status = 'active',
|
|
u.is_mentor = true,
|
|
u.created_at = datetime();
|
|
|
|
MERGE (u:User {username: '@archenvis'})
|
|
SET u.display_name = 'Александр Вертій',
|
|
u.status = 'active',
|
|
u.is_mentor = true,
|
|
u.created_at = datetime();
|
|
|
|
MERGE (u:User {username: '@olegarch88'})
|
|
SET u.display_name = 'Олег Ковальчук',
|
|
u.status = 'active',
|
|
u.is_mentor = true,
|
|
u.created_at = datetime();
|
|
|
|
// ============================================================================
|
|
// INITIAL NODES: Trusted Groups
|
|
// ============================================================================
|
|
|
|
MERGE (g:Group {chat_id: 'energyunionofficial'})
|
|
SET g.channel = 'telegram',
|
|
g.username = '@energyunionofficial',
|
|
g.title = 'Energy Union Official',
|
|
g.trust_mode = true,
|
|
g.apprentice_mode = true,
|
|
g.created_at = datetime();
|
|
|
|
MERGE (g:Group {chat_id: 'energyunionteam'})
|
|
SET g.channel = 'telegram',
|
|
g.username = '@energyunionteam',
|
|
g.title = 'Energy Union Team',
|
|
g.trust_mode = true,
|
|
g.apprentice_mode = true,
|
|
g.created_at = datetime();
|
|
|
|
// ============================================================================
|
|
// INITIAL RELATIONSHIPS
|
|
// ============================================================================
|
|
|
|
// Mentors have MENTOR role
|
|
MATCH (u:User {username: '@ivantytar'}), (r:Role {code: 'mentor'})
|
|
MERGE (u)-[:HAS_ROLE {confidence: 1.0, assigned_by: 'config', assigned_at: datetime()}]->(r);
|
|
|
|
MATCH (u:User {username: '@archenvis'}), (r:Role {code: 'mentor'})
|
|
MERGE (u)-[:HAS_ROLE {confidence: 1.0, assigned_by: 'config', assigned_at: datetime()}]->(r);
|
|
|
|
MATCH (u:User {username: '@olegarch88'}), (r:Role {code: 'mentor'})
|
|
MERGE (u)-[:HAS_ROLE {confidence: 1.0, assigned_by: 'config', assigned_at: datetime()}]->(r);
|
|
|
|
// Mentors can TEACH Helion
|
|
MATCH (u:User {is_mentor: true})
|
|
MERGE (h:Agent {agent_id: 'helion'})
|
|
SET h.name = 'Helion', h.status = 'active'
|
|
MERGE (u)-[:MENTORS {scope: 'platform', since: datetime()}]->(h);
|
|
|
|
// Projects related to Topics
|
|
MATCH (p:Project {project_id: 'biominer'}), (t:Topic {topic_id: 'biogas'})
|
|
MERGE (p)-[:RELATED_TO]->(t);
|
|
|
|
MATCH (p:Project {project_id: 'ecominer'}), (t:Topic {topic_id: 'cogeneration'})
|
|
MERGE (p)-[:RELATED_TO]->(t);
|
|
|
|
MATCH (p:Project {project_id: 'eu-token'}), (t:Topic {topic_id: 'tokenomics'})
|
|
MERGE (p)-[:RELATED_TO]->(t);
|
|
|
|
MATCH (p:Project {project_id: 'eu-token'}), (t:Topic {topic_id: 'staking'})
|
|
MERGE (p)-[:RELATED_TO]->(t);
|
|
|
|
MATCH (p:Project {project_id: 'energy-union'}), (t:Topic {topic_id: 'dao-governance'})
|
|
MERGE (p)-[:RELATED_TO]->(t);
|
|
|
|
// Sub-projects
|
|
MATCH (parent:Project {project_id: 'energy-union'}), (child:Project)
|
|
WHERE child.parent_project = 'energy-union'
|
|
MERGE (child)-[:PART_OF]->(parent);
|
|
|
|
// ============================================================================
|
|
// USEFUL QUERIES (Examples)
|
|
// ============================================================================
|
|
|
|
// Find all mentors:
|
|
// MATCH (u:User)-[:HAS_ROLE]->(r:Role {code: 'mentor'}) RETURN u.display_name, u.username
|
|
|
|
// Find user's roles:
|
|
// MATCH (u:User {username: $username})-[hr:HAS_ROLE]->(r:Role) RETURN r.code, hr.confidence
|
|
|
|
// Find who works on a project:
|
|
// MATCH (u:User)-[:WORKS_ON]->(p:Project {name: 'EcoMiner'}) RETURN u.display_name
|
|
|
|
// Find related topics for a project:
|
|
// MATCH (p:Project {name: 'BioMiner'})-[:RELATED_TO]->(t:Topic) RETURN t.name
|
|
|
|
// Find who asked about a topic:
|
|
// MATCH (u:User)-[a:ASKED_ABOUT]->(t:Topic {name: 'Tokenomics'}) RETURN u.display_name, a.count, a.last_asked
|
|
|
|
// Find mentors who can help with a topic:
|
|
// MATCH (u:User)-[:HAS_ROLE]->(r:Role {code: 'mentor'}), (u)-[:KNOWS_ABOUT]->(t:Topic {name: $topic})
|
|
// RETURN u.display_name, u.username
|
|
|
|
// Get full user context (roles, projects, topics):
|
|
// MATCH (u:User {username: $username})
|
|
// OPTIONAL MATCH (u)-[hr:HAS_ROLE]->(r:Role)
|
|
// OPTIONAL MATCH (u)-[:WORKS_ON]->(p:Project)
|
|
// OPTIONAL MATCH (u)-[:ASKED_ABOUT]->(t:Topic)
|
|
// RETURN u, collect(DISTINCT r.code) as roles, collect(DISTINCT p.name) as projects, collect(DISTINCT t.name) as topics
|