mirror of
https://github.com/Heretek-AI/heretek-openclaw.git
synced 2026-07-01 12:23:18 -04:00
28868660b1
Phase 3: Missing Agents Deployment - Add dreamer, empath, historian to docker-compose.yml - Update litellm_config.yaml with all 11 agent endpoints - Add volume declarations for new agents Phase 4: Web Interface Development - Create SvelteKit web interface in web-interface/ - Implement chat interface with agent selection - Create agent status dashboard - Add WebSocket support for real-time updates - Create API routes for /api/agents, /api/chat, /api/status Phase 5: User Identification System - Create user-context-resolve skill - Update user schema with UUID support - Add multi-platform resolution (discord, phone, email, username) - Create new user template with platforms Phase 6: Deployment Testing Skills - Create deployment-health-check skill - Create deployment-smoke-test skill - Create config-validator skill Phase 7: Documentation Updates - Update DEPLOYMENT_STRATEGY.md with 11-agent architecture - Update A2A_ARCHITECTURE.md with native LiteLLM A2A support - Update README.md with quick start guide and web interface docs
331 lines
9.1 KiB
JSON
331 lines
9.1 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://heretek.ai/schemas/user-schema-v2.json",
|
|
"title": "User Profile Schema v2",
|
|
"description": "Schema for user profiles in the Heretek OpenClaw rolodex system with UUID and multi-platform support",
|
|
"type": "object",
|
|
"required": ["uuid", "username", "createdAt"],
|
|
"properties": {
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "Unique identifier for the user (RFC 4122 UUID)"
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Legacy identifier for backward compatibility",
|
|
"pattern": "^user-[a-z0-9-]+$"
|
|
},
|
|
"slug": {
|
|
"type": "string",
|
|
"description": "URL-safe identifier derived from name",
|
|
"pattern": "^[a-z0-9-]+$"
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"description": "Primary username for the user",
|
|
"minLength": 1
|
|
},
|
|
"name": {
|
|
"type": "object",
|
|
"description": "User name information",
|
|
"required": ["full"],
|
|
"properties": {
|
|
"full": {
|
|
"type": "string",
|
|
"description": "Full name of the user",
|
|
"minLength": 1
|
|
},
|
|
"preferred": {
|
|
"type": "string",
|
|
"description": "Preferred name or nickname"
|
|
},
|
|
"phonetic": {
|
|
"type": "string",
|
|
"description": "Phonetic pronunciation guide"
|
|
}
|
|
}
|
|
},
|
|
"pronouns": {
|
|
"type": "string",
|
|
"description": "User's preferred pronouns",
|
|
"examples": ["he/him", "she/her", "they/them"]
|
|
},
|
|
"timezone": {
|
|
"type": "string",
|
|
"description": "IANA timezone identifier",
|
|
"examples": ["America/New_York", "Europe/London", "Asia/Tokyo"]
|
|
},
|
|
"languages": {
|
|
"type": "array",
|
|
"description": "Languages the user communicates in",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": ["en"]
|
|
},
|
|
"platforms": {
|
|
"type": "object",
|
|
"description": "Platform-specific identifiers for multi-platform user resolution",
|
|
"properties": {
|
|
"discord": {
|
|
"type": "object",
|
|
"description": "Discord platform identifiers",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Discord user ID (snowflake)"
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"description": "Discord username"
|
|
},
|
|
"discriminator": {
|
|
"type": "string",
|
|
"description": "Legacy Discord discriminator (4 digits)"
|
|
},
|
|
"nickname": {
|
|
"type": "string",
|
|
"description": "Server-specific nickname"
|
|
}
|
|
}
|
|
},
|
|
"phone": {
|
|
"type": "object",
|
|
"description": "Phone/SMS platform identifiers",
|
|
"properties": {
|
|
"number": {
|
|
"type": "string",
|
|
"description": "Phone number in E.164 format",
|
|
"pattern": "^\\+[1-9]\\d{1,14}$"
|
|
},
|
|
"verified": {
|
|
"type": "boolean",
|
|
"description": "Whether the phone number has been verified",
|
|
"default": false
|
|
}
|
|
}
|
|
},
|
|
"web": {
|
|
"type": "object",
|
|
"description": "Web platform identifiers",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string",
|
|
"format": "email",
|
|
"description": "Primary email address"
|
|
},
|
|
"sessions": {
|
|
"type": "array",
|
|
"description": "Active web session IDs",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"github": {
|
|
"type": "object",
|
|
"description": "GitHub platform identifiers",
|
|
"properties": {
|
|
"id": {
|
|
"type": "number",
|
|
"description": "GitHub user ID"
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"description": "GitHub username"
|
|
}
|
|
}
|
|
},
|
|
"slack": {
|
|
"type": "object",
|
|
"description": "Slack platform identifiers",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Slack user ID"
|
|
},
|
|
"team_id": {
|
|
"type": "string",
|
|
"description": "Slack team/workspace ID"
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"description": "Slack username"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"preferences": {
|
|
"type": "object",
|
|
"description": "Learned user preferences",
|
|
"properties": {
|
|
"communicationStyle": {
|
|
"type": "string",
|
|
"enum": ["formal", "casual", "technical", "adaptive"],
|
|
"default": "adaptive",
|
|
"description": "Preferred communication style"
|
|
},
|
|
"response_length": {
|
|
"type": "string",
|
|
"enum": ["brief", "detailed", "adaptive"],
|
|
"default": "adaptive"
|
|
},
|
|
"preferredAgents": {
|
|
"type": "array",
|
|
"description": "Preferred agents for this user",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"code_style": {
|
|
"type": "object",
|
|
"properties": {
|
|
"comments": {
|
|
"type": "string",
|
|
"enum": ["minimal", "standard", "detailed"]
|
|
},
|
|
"naming": {
|
|
"type": "string",
|
|
"enum": ["short", "descriptive", "verbose"]
|
|
},
|
|
"formatting": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"topics_of_interest": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"createdAt": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the user profile was created (new field name)"
|
|
},
|
|
"created": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the user profile was created (legacy field name)"
|
|
},
|
|
"lastActive": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the user last interacted (new field name)"
|
|
},
|
|
"last_interaction": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the user last interacted with the collective (legacy field name)"
|
|
},
|
|
"relationship": {
|
|
"type": "object",
|
|
"description": "Relationship metadata",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["primary", "collaborator", "occasional"],
|
|
"description": "Type of relationship with the collective"
|
|
},
|
|
"since": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the relationship began"
|
|
},
|
|
"trust_level": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1,
|
|
"default": 0.5,
|
|
"description": "Trust level from 0 (none) to 1 (complete)"
|
|
}
|
|
}
|
|
},
|
|
"projects": {
|
|
"type": "array",
|
|
"description": "Projects associated with this user",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Project name"
|
|
},
|
|
"role": {
|
|
"type": "string",
|
|
"description": "User's role in the project"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["active", "paused", "completed", "archived"]
|
|
},
|
|
"joined": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"context_notes": {
|
|
"type": "array",
|
|
"description": "Contextual notes about the user",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"date": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"note": {
|
|
"type": "string"
|
|
},
|
|
"importance": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"category": {
|
|
"type": "string",
|
|
"enum": ["general", "technical", "personal", "preference", "feedback"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"sessions": {
|
|
"type": "array",
|
|
"description": "Session history with the agent collective",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Session identifier"
|
|
},
|
|
"platform": {
|
|
"type": "string",
|
|
"description": "Platform where session occurred"
|
|
},
|
|
"startedAt": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"endedAt": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"description": "Brief summary of session"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|