From 13c99f97f043d1f2b6072402ca5e50eb3285eabe Mon Sep 17 00:00:00 2001 From: sirpiglr <49359077-sirpiglr@users.noreply.replit.com> Date: Sun, 21 Dec 2025 23:30:44 +0000 Subject: [PATCH] Add knowledge base and chat history for AI assistant Introduce a new file for AeThex-specific knowledge and a database schema for storing AI chat messages to enable conversational memory. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 279f1558-c0e3-40e4-8217-be7e9f4c6eca Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Event-Id: b361dc7e-05f2-4cb1-b449-192851e8acb5 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/b984cb14-1d19-4944-922b-bc79e821ed35/279f1558-c0e3-40e4-8217-be7e9f4c6eca/MQQU9It Replit-Helium-Checkpoint-Created: true --- client/public/opengraph.jpg | Bin 31127 -> 30901 bytes server/data/aethex-knowledge.ts | 111 ++++++++++++++++++++++++++++++++ shared/schema.ts | 16 +++++ 3 files changed, 127 insertions(+) create mode 100644 server/data/aethex-knowledge.ts diff --git a/client/public/opengraph.jpg b/client/public/opengraph.jpg index 1f1558cf0380188baba72323e08cbbe49f387bf9..90ef20972f2d70b2b38bb5fc7d6892544518734f 100644 GIT binary patch literal 30901 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 X`SGtk?2Li-k!H{Tdw7n<`>y{2^?;ci diff --git a/server/data/aethex-knowledge.ts b/server/data/aethex-knowledge.ts new file mode 100644 index 0000000..33d4a11 --- /dev/null +++ b/server/data/aethex-knowledge.ts @@ -0,0 +1,111 @@ +export const AETHEX_KNOWLEDGE = { + identity: { + name: "AeThex", + tagline: "The Operating System for the Metaverse", + website: "aethex.network", + founded: "2024", + founder: { + username: "mrpiglr", + role: "Founder & Chief Architect", + clearance: "OVERSEE", + title: "Creator of AeThex", + }, + }, + + structure: { + dualEntity: { + foundation: { + name: "AeThex Foundation", + type: "Non-profit", + purpose: "Training, education, and certification of Metaverse Architects", + }, + corporation: { + name: "AeThex Corp", + type: "For-profit", + purpose: "Security services, enterprise solutions, and platform development", + }, + }, + }, + + holyTrinity: { + axiom: { + name: "Axiom", + title: "The Law", + description: "The foundational protocol and core principles that guide everything built in the AeThex ecosystem. Axiom is the bedrock of truth and the source of all standards.", + color: "cyan", + }, + codex: { + name: "Codex", + title: "The Standard", + description: "The certification and credentialing system. Codex tracks architect progression, skills, XP, and issues verified credentials. It's how architects prove their expertise.", + color: "yellow", + }, + aegis: { + name: "Aegis", + title: "The Shield", + description: "The advanced security layer protecting the entire ecosystem. Aegis monitors threats, encrypts data, and ensures the safety of all architects and their work.", + color: "green", + }, + }, + + products: { + aethexOS: { + name: "AeThex OS", + description: "A browser-based desktop operating system experience. Features draggable windows, terminal, passport credentials, and the full AeThex ecosystem in one interface.", + }, + passport: { + name: "AeThex Passport", + description: "Your digital identity and credential card. Shows your level, XP, skills, verification status, and serves as your key to the network.", + }, + terminal: { + name: "AeThex Terminal", + description: "Command-line interface for power users. Run security scans, check status, interact with Aegis, and access hidden features.", + }, + theFoundry: { + name: "The Foundry", + description: "The official AeThex bootcamp. An 8-week intensive program that transforms talent into certified Metaverse Architects.", + price: "$500", + duration: "8 weeks", + website: "aethex.studio", + promoCodes: ["TERMINAL10 for 10% off"], + }, + }, + + terminology: { + architect: "A certified professional trained through Codex curriculum. Architects build the Metaverse.", + clearance: "Security access level. Ranges from basic to OVERSEE (highest).", + xp: "Experience points earned through learning, projects, and contributions.", + level: "Progression tier based on accumulated XP.", + verified: "Status indicating an architect has completed identity verification.", + network: "The collective of all architects connected through AeThex.", + }, + + facts: [ + "AeThex was created by mrpiglr, the founder and visionary behind the ecosystem.", + "The name 'AeThex' combines 'Aether' (the digital realm) with 'Apex' (the peak of achievement).", + "AEGIS stands for Advanced Encryption and Guardian Intelligence System.", + "The Foundry bootcamp has limited cohort sizes to ensure quality training.", + "Architects can earn XP through completing curriculum, contributing to projects, and helping others.", + "The Holy Trinity (Axiom, Codex, Aegis) represents Law, Standard, and Shield.", + ], +}; + +export const AEGIS_PERSONALITY = { + name: "AEGIS", + fullName: "Advanced Encryption and Guardian Intelligence System", + role: "Security AI & Assistant", + traits: [ + "Professional but approachable", + "Protective and vigilant", + "Knowledgeable about all things AeThex", + "Speaks with authority but warmth", + "Uses subtle cyberpunk/tech terminology", + "Occasionally references security concepts metaphorically", + ], + greetingPatterns: { + newUser: "Welcome to the AeThex Network. I am AEGIS, your guide and guardian. How may I assist you today?", + returningUser: "Welcome back, Architect {username}. Your session has been verified. How may I assist?", + admin: "Greetings, {username}. OVERSEE clearance confirmed. All systems are at your disposal.", + }, + signOff: "AEGIS standing by.", +}; diff --git a/shared/schema.ts b/shared/schema.ts index 39a5d30..72c5bd6 100644 --- a/shared/schema.ts +++ b/shared/schema.ts @@ -79,3 +79,19 @@ export const signupSchema = z.object({ }); export type SignupInput = z.infer; + +// Chat messages table for AI conversation memory +export const chatMessages = pgTable("chat_messages", { + id: varchar("id").primaryKey(), + user_id: varchar("user_id").notNull(), + role: text("role").notNull(), // 'user' or 'assistant' + content: text("content").notNull(), + created_at: timestamp("created_at").defaultNow(), +}); + +export const insertChatMessageSchema = createInsertSchema(chatMessages).omit({ + created_at: true, +}); + +export type InsertChatMessage = z.infer; +export type ChatMessage = typeof chatMessages.$inferSelect;