Skip to content

Data Model

Alessio Rocchi edited this page Jan 29, 2026 · 2 revisions

Data Model

Complete database schema and data structures.


Database Schema

Memory Table

CREATE TABLE memory (
  id TEXT PRIMARY KEY,
  key TEXT NOT NULL,
  namespace TEXT DEFAULT 'default',
  content TEXT NOT NULL,
  embedding BLOB,
  metadata TEXT,
  created_at INTEGER NOT NULL,
  updated_at INTEGER NOT NULL,
  UNIQUE(namespace, key)
);

Sessions Table

CREATE TABLE sessions (
  id TEXT PRIMARY KEY,
  status TEXT NOT NULL,
  started_at INTEGER NOT NULL,
  ended_at INTEGER,
  metadata TEXT
);

Tasks Table

CREATE TABLE tasks (
  id TEXT PRIMARY KEY,
  session_id TEXT,
  agent_type TEXT NOT NULL,
  status TEXT NOT NULL,
  input TEXT,
  output TEXT,
  created_at INTEGER NOT NULL,
  completed_at INTEGER,
  FOREIGN KEY (session_id) REFERENCES sessions(id)
);

FTS5 Table

CREATE VIRTUAL TABLE memory_fts USING fts5(
  key,
  content,
  namespace,
  content=memory,
  content_rowid=rowid,
  tokenize='porter unicode61'
);

Agent Identities Table

CREATE TABLE agent_identities (
  agent_id TEXT PRIMARY KEY,
  agent_type TEXT NOT NULL,
  status TEXT NOT NULL DEFAULT 'created',
  display_name TEXT,
  description TEXT,
  capabilities TEXT,  -- JSON array
  metadata TEXT,      -- JSON object
  version INTEGER NOT NULL DEFAULT 1,
  created_at INTEGER NOT NULL,
  updated_at INTEGER NOT NULL,
  last_active_at INTEGER NOT NULL,
  retired_at INTEGER,
  retirement_reason TEXT,
  created_by TEXT
);

Identity Audit Log Table

CREATE TABLE identity_audit_log (
  id TEXT PRIMARY KEY,
  agent_id TEXT NOT NULL,
  action TEXT NOT NULL,
  previous_status TEXT,
  new_status TEXT,
  reason TEXT,
  actor_id TEXT,
  metadata TEXT,
  timestamp INTEGER NOT NULL,
  FOREIGN KEY (agent_id) REFERENCES agent_identities(agent_id)
);

Task Embeddings Table

CREATE TABLE task_embeddings (
  task_id TEXT PRIMARY KEY,
  embedding BLOB NOT NULL,
  model TEXT NOT NULL,
  dimensions INTEGER NOT NULL,
  created_at INTEGER NOT NULL,
  FOREIGN KEY (task_id) REFERENCES tasks(id)
);

Task Relationships Table

CREATE TABLE task_relationships (
  id TEXT PRIMARY KEY,
  from_task_id TEXT NOT NULL,
  to_task_id TEXT NOT NULL,
  relationship_type TEXT NOT NULL,
  metadata TEXT,
  created_at INTEGER NOT NULL,
  UNIQUE(from_task_id, to_task_id, relationship_type),
  FOREIGN KEY (from_task_id) REFERENCES tasks(id),
  FOREIGN KEY (to_task_id) REFERENCES tasks(id)
);

Drift Detection Events Table

CREATE TABLE drift_detection_events (
  id TEXT PRIMARY KEY,
  task_id TEXT,
  task_type TEXT NOT NULL,
  ancestor_task_id TEXT NOT NULL,
  similarity_score REAL NOT NULL,
  threshold REAL NOT NULL,
  action_taken TEXT NOT NULL,
  task_input TEXT,
  created_at INTEGER NOT NULL
);

Consensus Checkpoints Table

CREATE TABLE consensus_checkpoints (
  id TEXT PRIMARY KEY,
  task_id TEXT NOT NULL,
  parent_task_id TEXT,
  proposed_subtasks TEXT NOT NULL,  -- JSON array
  risk_level TEXT NOT NULL,
  status TEXT NOT NULL DEFAULT 'pending',
  reviewer_strategy TEXT NOT NULL,
  reviewer_id TEXT,
  reviewer_type TEXT,
  decision TEXT,                    -- JSON object
  created_at INTEGER NOT NULL,
  expires_at INTEGER NOT NULL,
  decided_at INTEGER
);

Agent Resource Metrics Table

CREATE TABLE agent_resource_metrics (
  agent_id TEXT PRIMARY KEY,
  files_read INTEGER NOT NULL DEFAULT 0,
  files_written INTEGER NOT NULL DEFAULT 0,
  files_modified INTEGER NOT NULL DEFAULT 0,
  api_calls_count INTEGER NOT NULL DEFAULT 0,
  subtasks_spawned INTEGER NOT NULL DEFAULT 0,
  tokens_consumed INTEGER NOT NULL DEFAULT 0,
  started_at INTEGER NOT NULL,
  last_deliverable_at INTEGER,
  last_activity_at INTEGER NOT NULL,
  phase TEXT NOT NULL DEFAULT 'normal',
  paused_at INTEGER,
  pause_reason TEXT
);

Deliverable Checkpoints Table

CREATE TABLE deliverable_checkpoints (
  id TEXT PRIMARY KEY,
  agent_id TEXT NOT NULL,
  type TEXT NOT NULL,
  description TEXT,
  artifacts TEXT,  -- JSON array
  created_at INTEGER NOT NULL
);

Resource Exhaustion Events Table

CREATE TABLE resource_exhaustion_events (
  id TEXT PRIMARY KEY,
  agent_id TEXT NOT NULL,
  agent_type TEXT NOT NULL,
  phase TEXT NOT NULL,
  action_taken TEXT NOT NULL,
  metrics TEXT NOT NULL,     -- JSON object
  thresholds TEXT NOT NULL,  -- JSON object
  triggered_by TEXT NOT NULL,
  created_at INTEGER NOT NULL
);

TypeScript Interfaces

interface MemoryEntry {
  id: string;
  key: string;
  namespace: string;
  content: string;
  embedding?: Float32Array;
  metadata?: Record<string, any>;
  createdAt: Date;
  updatedAt: Date;
}

interface Session {
  id: string;
  status: 'active' | 'ended' | 'error';
  startedAt: Date;
  endedAt?: Date;
  metadata?: Record<string, any>;
}

interface Task {
  id: string;
  sessionId?: string;
  agentType: string;
  status: 'pending' | 'running' | 'completed' | 'failed';
  input?: string;
  output?: string;
  parentTaskId?: string;
  riskLevel?: 'low' | 'medium' | 'high';
  depth?: number;
  createdAt: Date;
  completedAt?: Date;
}

interface AgentIdentity {
  agentId: string;
  agentType: string;
  status: 'created' | 'active' | 'dormant' | 'retired';
  displayName?: string;
  description?: string;
  capabilities: Capability[];
  metadata?: Record<string, any>;
  version: number;
  createdAt: Date;
  updatedAt: Date;
  lastActiveAt: Date;
  retiredAt?: Date;
  retirementReason?: string;
  createdBy?: string;
}

interface Capability {
  name: string;
  version?: string;
  enabled: boolean;
  metadata?: Record<string, any>;
}

interface TaskRelationship {
  id: string;
  fromTaskId: string;
  toTaskId: string;
  relationshipType: 'parent_of' | 'derived_from' | 'depends_on';
  metadata?: Record<string, any>;
  createdAt: Date;
}

interface ConsensusCheckpoint {
  id: string;
  taskId: string;
  parentTaskId?: string;
  proposedSubtasks: ProposedSubtask[];
  riskLevel: 'low' | 'medium' | 'high';
  status: 'pending' | 'approved' | 'rejected' | 'expired';
  reviewerStrategy: 'adversarial' | 'different-model' | 'human';
  reviewerId?: string;
  reviewerType?: 'agent' | 'human';
  decision?: ConsensusDecision;
  createdAt: Date;
  expiresAt: Date;
  decidedAt?: Date;
}

interface AgentResourceMetrics {
  agentId: string;
  filesRead: number;
  filesWritten: number;
  filesModified: number;
  apiCallsCount: number;
  subtasksSpawned: number;
  tokensConsumed: number;
  startedAt: Date;
  lastDeliverableAt: Date | null;
  lastActivityAt: Date;
  phase: 'normal' | 'warning' | 'intervention' | 'termination';
  pausedAt: Date | null;
  pauseReason: string | null;
}

Related:

Clone this wiki locally