{"version":3,"sources":["../src/schema/index.ts","../src/schema/things.ts","../src/schema/relationships.ts","../src/schema/search.ts","../src/schema/actions.ts","../src/schema/events.ts","../src/schema/artifacts.ts"],"sourcesContent":["/**\n * SQLite Schema Module\n *\n * Modular schema definitions for the mdxdb SQLite adapter.\n * Each table is defined in its own file for maintainability.\n *\n * Tables:\n * - things: Core graph nodes (versioned resources)\n * - relationships: Graph edges connecting things\n * - search: Chunked content with optional embeddings\n * - actions: Pending/active work items\n * - events: Immutable event log (streams to ClickHouse)\n * - artifacts: Cached compiled content (streams to ClickHouse/R2)\n *\n * @packageDocumentation\n */\n\n// Re-export individual table schemas\nexport * from './things.js'\nexport * from './relationships.js'\nexport * from './search.js'\nexport * from './actions.js'\nexport * from './events.js'\nexport * from './artifacts.js'\n\n// Import schemas for combined export\nimport { THINGS_TABLE, THINGS_SCHEMA, THINGS_INDEXES } from './things.js'\nimport { RELATIONSHIPS_TABLE, RELATIONSHIPS_SCHEMA, RELATIONSHIPS_INDEXES } from './relationships.js'\nimport { SEARCH_TABLE, SEARCH_SCHEMA, SEARCH_INDEXES } from './search.js'\nimport { ACTIONS_TABLE, ACTIONS_SCHEMA, ACTIONS_INDEXES } from './actions.js'\nimport { EVENTS_TABLE, EVENTS_SCHEMA, EVENTS_INDEXES } from './events.js'\nimport { ARTIFACTS_TABLE, ARTIFACTS_SCHEMA, ARTIFACTS_INDEXES } from './artifacts.js'\n\n/**\n * All table names\n */\nexport const TABLES = [\n  THINGS_TABLE,\n  RELATIONSHIPS_TABLE,\n  SEARCH_TABLE,\n  ACTIONS_TABLE,\n  EVENTS_TABLE,\n  ARTIFACTS_TABLE,\n] as const\n\nexport type TableName = (typeof TABLES)[number]\n\n/**\n * Core tables (always needed)\n */\nexport const CORE_TABLES = [\n  THINGS_TABLE,\n  RELATIONSHIPS_TABLE,\n  SEARCH_TABLE,\n  ACTIONS_TABLE,\n] as const\n\n/**\n * Streaming tables (synced to ClickHouse/R2)\n */\nexport const STREAMING_TABLES = [\n  EVENTS_TABLE,\n  ARTIFACTS_TABLE,\n] as const\n\n/**\n * Map of table name to schema\n */\nexport const TABLE_SCHEMAS: Record<TableName, string> = {\n  [THINGS_TABLE]: THINGS_SCHEMA,\n  [RELATIONSHIPS_TABLE]: RELATIONSHIPS_SCHEMA,\n  [SEARCH_TABLE]: SEARCH_SCHEMA,\n  [ACTIONS_TABLE]: ACTIONS_SCHEMA,\n  [EVENTS_TABLE]: EVENTS_SCHEMA,\n  [ARTIFACTS_TABLE]: ARTIFACTS_SCHEMA,\n}\n\n/**\n * Map of table name to indexes\n */\nexport const TABLE_INDEXES: Record<TableName, string> = {\n  [THINGS_TABLE]: THINGS_INDEXES,\n  [RELATIONSHIPS_TABLE]: RELATIONSHIPS_INDEXES,\n  [SEARCH_TABLE]: SEARCH_INDEXES,\n  [ACTIONS_TABLE]: ACTIONS_INDEXES,\n  [EVENTS_TABLE]: EVENTS_INDEXES,\n  [ARTIFACTS_TABLE]: ARTIFACTS_INDEXES,\n}\n\n/**\n * Core schema (things, relationships, search, actions)\n * Execute each statement individually\n */\nexport const CORE_SCHEMA = [\n  THINGS_SCHEMA,\n  RELATIONSHIPS_SCHEMA,\n  SEARCH_SCHEMA,\n  ACTIONS_SCHEMA,\n].join('\\n\\n')\n\n/**\n * Core indexes\n */\nexport const CORE_INDEXES = [\n  THINGS_INDEXES,\n  RELATIONSHIPS_INDEXES,\n  SEARCH_INDEXES,\n  ACTIONS_INDEXES,\n].join('\\n')\n\n/**\n * Full schema for all tables\n */\nexport const FULL_SCHEMA = [\n  THINGS_SCHEMA,\n  RELATIONSHIPS_SCHEMA,\n  SEARCH_SCHEMA,\n  ACTIONS_SCHEMA,\n  EVENTS_SCHEMA,\n  ARTIFACTS_SCHEMA,\n].join('\\n\\n')\n\n/**\n * Full indexes for all tables\n */\nexport const FULL_INDEXES = [\n  THINGS_INDEXES,\n  RELATIONSHIPS_INDEXES,\n  SEARCH_INDEXES,\n  ACTIONS_INDEXES,\n  EVENTS_INDEXES,\n  ARTIFACTS_INDEXES,\n].join('\\n')\n\n/**\n * Get schema for a specific table\n */\nexport function getTableSchema(table: TableName): string {\n  return TABLE_SCHEMAS[table]\n}\n\n/**\n * Get indexes for a specific table\n */\nexport function getTableIndexes(table: TableName): string {\n  return TABLE_INDEXES[table]\n}\n\n/**\n * Parse schema into individual statements\n */\nexport function parseSchemaStatements(schema: string): string[] {\n  return schema\n    .split(';')\n    .map(s => s.trim())\n    .filter(s => s.length > 0 && !s.startsWith('--'))\n}\n\n/**\n * Get all schema statements (tables + indexes)\n */\nexport function getAllSchemaStatements(): string[] {\n  const statements: string[] = []\n\n  // Add table schemas\n  for (const table of TABLES) {\n    statements.push(TABLE_SCHEMAS[table].trim())\n  }\n\n  // Add indexes (split by semicolon since multiple per table)\n  for (const table of TABLES) {\n    const indexStatements = parseSchemaStatements(TABLE_INDEXES[table])\n    statements.push(...indexStatements)\n  }\n\n  return statements\n}\n\n/**\n * Get core schema statements (tables + indexes)\n */\nexport function getCoreSchemaStatements(): string[] {\n  const statements: string[] = []\n\n  for (const table of CORE_TABLES) {\n    statements.push(TABLE_SCHEMAS[table].trim())\n    const indexStatements = parseSchemaStatements(TABLE_INDEXES[table])\n    statements.push(...indexStatements)\n  }\n\n  return statements\n}\n\n/**\n * Schema version for migration tracking\n * Increment when schema changes\n */\nexport const SCHEMA_VERSION = 1\n\n/**\n * Schema version history\n */\nexport const SCHEMA_VERSIONS = {\n  1: 'Initial modular schema with things, relationships, search, actions, events, artifacts',\n} as const\n","/**\n * Things Table Schema (SQLite)\n *\n * Graph nodes representing versioned resources.\n * Uses standard SQLite with soft deletes via deleted_at.\n *\n * Features:\n * - JSON data storage via TEXT columns\n * - Full-text indexing support\n * - Version tracking for optimistic locking\n * - Soft deletes via deleted_at timestamp\n *\n * @example\n * ```sql\n * -- Create a new thing\n * INSERT INTO things (url, ns, type, id, data, content)\n * VALUES ('https://example.com/Post/hello', 'example.com', 'Post', 'hello', '{\"title\": \"Hello\"}', '# Hello')\n *\n * -- Get non-deleted things\n * SELECT * FROM things WHERE deleted_at IS NULL\n * ```\n */\n\nexport const THINGS_TABLE = 'things'\n\nexport const THINGS_SCHEMA = `\nCREATE TABLE IF NOT EXISTS things (\n  url TEXT PRIMARY KEY,\n  ns TEXT NOT NULL,\n  type TEXT NOT NULL,\n  id TEXT NOT NULL,\n  context TEXT,\n  data TEXT NOT NULL DEFAULT '{}',\n  content TEXT NOT NULL DEFAULT '',\n  created_at TEXT NOT NULL DEFAULT (datetime('now')),\n  updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n  deleted_at TEXT,\n  version INTEGER NOT NULL DEFAULT 1\n)`\n\nexport const THINGS_INDEXES = `\nCREATE INDEX IF NOT EXISTS idx_things_ns ON things(ns);\nCREATE INDEX IF NOT EXISTS idx_things_type ON things(type);\nCREATE INDEX IF NOT EXISTS idx_things_ns_type ON things(ns, type);\nCREATE INDEX IF NOT EXISTS idx_things_deleted_at ON things(deleted_at);\nCREATE UNIQUE INDEX IF NOT EXISTS idx_things_ns_type_id ON things(ns, type, id)\n`\n\n/**\n * Column definitions for documentation and validation\n */\nexport const THINGS_COLUMNS = {\n  url: 'TEXT PRIMARY KEY',\n  ns: 'TEXT NOT NULL',\n  type: 'TEXT NOT NULL',\n  id: 'TEXT NOT NULL',\n  context: 'TEXT',\n  data: \"TEXT NOT NULL DEFAULT '{}'\",\n  content: \"TEXT NOT NULL DEFAULT ''\",\n  created_at: \"TEXT NOT NULL DEFAULT (datetime('now'))\",\n  updated_at: \"TEXT NOT NULL DEFAULT (datetime('now'))\",\n  deleted_at: 'TEXT',\n  version: 'INTEGER NOT NULL DEFAULT 1',\n} as const\n\n/**\n * Event types for thing lifecycle (stored in event column if added)\n */\nexport const THING_EVENTS = [\n  'created',\n  'updated',\n  'deleted',\n] as const\n\nexport type ThingEvent = (typeof THING_EVENTS)[number]\n","/**\n * Relationships Table Schema (SQLite)\n *\n * Graph edges connecting things with typed predicates.\n * Supports bidirectional traversal via from_url and to_url.\n *\n * Features:\n * - Typed relationships (author, parent, references, etc.)\n * - JSON metadata on edges\n * - Cascading deletes when things are removed\n * - Unique constraint prevents duplicate edges\n *\n * @example\n * ```sql\n * -- Create a relationship\n * INSERT INTO relationships (id, type, from_url, to_url)\n * VALUES ('rel_123', 'author', 'https://example.com/Post/hello', 'https://example.com/User/alice')\n *\n * -- Find all things an author wrote (outbound)\n * SELECT to_url FROM relationships WHERE from_url = ? AND type = 'author'\n *\n * -- Find all things that reference a thing (inbound)\n * SELECT from_url FROM relationships WHERE to_url = ? AND type = 'references'\n * ```\n */\n\nexport const RELATIONSHIPS_TABLE = 'relationships'\n\nexport const RELATIONSHIPS_SCHEMA = `\nCREATE TABLE IF NOT EXISTS relationships (\n  id TEXT PRIMARY KEY,\n  type TEXT NOT NULL,\n  from_url TEXT NOT NULL,\n  to_url TEXT NOT NULL,\n  data TEXT,\n  created_at TEXT NOT NULL DEFAULT (datetime('now')),\n  FOREIGN KEY (from_url) REFERENCES things(url) ON DELETE CASCADE\n)`\n\nexport const RELATIONSHIPS_INDEXES = `\nCREATE INDEX IF NOT EXISTS idx_rel_type ON relationships(type);\nCREATE INDEX IF NOT EXISTS idx_rel_from ON relationships(from_url);\nCREATE INDEX IF NOT EXISTS idx_rel_to ON relationships(to_url);\nCREATE INDEX IF NOT EXISTS idx_rel_from_type ON relationships(from_url, type);\nCREATE INDEX IF NOT EXISTS idx_rel_to_type ON relationships(to_url, type);\nCREATE UNIQUE INDEX IF NOT EXISTS idx_rel_unique ON relationships(from_url, type, to_url)\n`\n\n/**\n * Column definitions for documentation and validation\n */\nexport const RELATIONSHIPS_COLUMNS = {\n  id: 'TEXT PRIMARY KEY',\n  type: 'TEXT NOT NULL',\n  from_url: 'TEXT NOT NULL',\n  to_url: 'TEXT NOT NULL',\n  data: 'TEXT',\n  created_at: \"TEXT NOT NULL DEFAULT (datetime('now'))\",\n} as const\n\n/**\n * Common relationship types\n */\nexport const RELATIONSHIP_TYPES = [\n  'author',      // thing was authored by\n  'parent',      // thing is parent of\n  'child',       // thing is child of\n  'references',  // thing references\n  'related',     // thing is related to\n  'tagged',      // thing is tagged with\n  'category',    // thing belongs to category\n] as const\n\nexport type RelationshipType = (typeof RELATIONSHIP_TYPES)[number] | string\n","/**\n * Search Table Schema (SQLite)\n *\n * Chunked content with optional vector embeddings for semantic search.\n * Each thing can have multiple search chunks for large content.\n *\n * Features:\n * - Content chunking for long documents\n * - Vector embeddings stored as JSON arrays\n * - Metadata for chunk position tracking\n * - Cascading deletes when things are removed\n *\n * Note: For production vector search, consider using:\n * - sqlite-vec extension\n * - Cloudflare Vectorize\n * - External vector database\n *\n * @example\n * ```sql\n * -- Get all chunks for a thing\n * SELECT content, chunk_index FROM search\n * WHERE thing_url = 'https://example.com/Post/hello'\n * ORDER BY chunk_index\n *\n * -- Full-text search (basic)\n * SELECT DISTINCT thing_url FROM search\n * WHERE content LIKE '%keyword%'\n * ```\n */\n\nexport const SEARCH_TABLE = 'search'\n\nexport const SEARCH_SCHEMA = `\nCREATE TABLE IF NOT EXISTS search (\n  id TEXT PRIMARY KEY,\n  thing_url TEXT NOT NULL,\n  chunk_index INTEGER NOT NULL,\n  content TEXT NOT NULL,\n  embedding TEXT,\n  metadata TEXT,\n  created_at TEXT NOT NULL DEFAULT (datetime('now')),\n  FOREIGN KEY (thing_url) REFERENCES things(url) ON DELETE CASCADE\n)`\n\nexport const SEARCH_INDEXES = `\nCREATE INDEX IF NOT EXISTS idx_search_thing ON search(thing_url);\nCREATE INDEX IF NOT EXISTS idx_search_thing_chunk ON search(thing_url, chunk_index)\n`\n\n/**\n * Column definitions for documentation and validation\n */\nexport const SEARCH_COLUMNS = {\n  id: 'TEXT PRIMARY KEY',\n  thing_url: 'TEXT NOT NULL',\n  chunk_index: 'INTEGER NOT NULL',\n  content: 'TEXT NOT NULL',\n  embedding: 'TEXT',  // JSON array of floats\n  metadata: 'TEXT',   // JSON with start/end positions\n  created_at: \"TEXT NOT NULL DEFAULT (datetime('now'))\",\n} as const\n\n/**\n * Default chunking configuration\n */\nexport const CHUNK_CONFIG = {\n  /** Maximum characters per chunk */\n  size: 1000,\n  /** Overlap between chunks for context continuity */\n  overlap: 200,\n} as const\n","/**\n * Actions Table Schema (SQLite)\n *\n * Pending and active work items with status tracking.\n * Used for background jobs, workflows, and async operations.\n *\n * Features:\n * - Actor-Object-Action pattern\n * - Status lifecycle (pending -> active -> completed/failed/cancelled)\n * - Result and error storage\n * - Metadata for custom job data\n *\n * @example\n * ```sql\n * -- Create a pending action\n * INSERT INTO actions (id, actor, object, action)\n * VALUES ('act_123', 'user:alice', 'post:hello', 'publish')\n *\n * -- Start an action\n * UPDATE actions SET status = 'active', started_at = datetime('now')\n * WHERE id = 'act_123'\n *\n * -- Complete an action\n * UPDATE actions SET status = 'completed', completed_at = datetime('now'), result = '{\"published\": true}'\n * WHERE id = 'act_123'\n * ```\n */\n\nexport const ACTIONS_TABLE = 'actions'\n\nexport const ACTIONS_SCHEMA = `\nCREATE TABLE IF NOT EXISTS actions (\n  id TEXT PRIMARY KEY,\n  actor TEXT NOT NULL,\n  object TEXT NOT NULL,\n  action TEXT NOT NULL,\n  status TEXT NOT NULL DEFAULT 'pending',\n  created_at TEXT NOT NULL DEFAULT (datetime('now')),\n  updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n  started_at TEXT,\n  completed_at TEXT,\n  result TEXT,\n  error TEXT,\n  metadata TEXT\n)`\n\nexport const ACTIONS_INDEXES = `\nCREATE INDEX IF NOT EXISTS idx_actions_actor ON actions(actor);\nCREATE INDEX IF NOT EXISTS idx_actions_object ON actions(object);\nCREATE INDEX IF NOT EXISTS idx_actions_action ON actions(action);\nCREATE INDEX IF NOT EXISTS idx_actions_status ON actions(status);\nCREATE INDEX IF NOT EXISTS idx_actions_actor_status ON actions(actor, status)\n`\n\n/**\n * Column definitions for documentation and validation\n */\nexport const ACTIONS_COLUMNS = {\n  id: 'TEXT PRIMARY KEY',\n  actor: 'TEXT NOT NULL',\n  object: 'TEXT NOT NULL',\n  action: 'TEXT NOT NULL',\n  status: \"TEXT NOT NULL DEFAULT 'pending'\",\n  created_at: \"TEXT NOT NULL DEFAULT (datetime('now'))\",\n  updated_at: \"TEXT NOT NULL DEFAULT (datetime('now'))\",\n  started_at: 'TEXT',\n  completed_at: 'TEXT',\n  result: 'TEXT',\n  error: 'TEXT',\n  metadata: 'TEXT',\n} as const\n\n/**\n * Action status lifecycle\n */\nexport const ACTION_STATUSES = [\n  'pending',    // Waiting to start\n  'active',     // Currently running\n  'completed',  // Finished successfully\n  'failed',     // Finished with error\n  'cancelled',  // Cancelled by user/system\n] as const\n\nexport type ActionStatus = (typeof ACTION_STATUSES)[number]\n","/**\n * Events Table Schema (SQLite)\n *\n * Immutable event log for tracking activity.\n * Events are stored locally and streamed to ClickHouse for analytics.\n *\n * Features:\n * - Immutable append-only log\n * - Correlation/causation IDs for tracing\n * - JSON data payload\n * - Designed for streaming to ClickHouse\n *\n * Note: For production analytics, events should be:\n * 1. Written to local SQLite for durability\n * 2. Streamed to ClickHouse via SyncManager\n * 3. Optionally pruned from SQLite after confirmation\n *\n * @example\n * ```sql\n * -- Track an event\n * INSERT INTO events (id, type, source, data)\n * VALUES ('evt_123', 'user.login', 'auth', '{\"userId\": \"alice\"}')\n *\n * -- Query recent events\n * SELECT * FROM events WHERE source = 'auth' ORDER BY timestamp DESC LIMIT 100\n * ```\n */\n\nexport const EVENTS_TABLE = 'events'\n\nexport const EVENTS_SCHEMA = `\nCREATE TABLE IF NOT EXISTS events (\n  id TEXT PRIMARY KEY,\n  type TEXT NOT NULL,\n  timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n  source TEXT NOT NULL,\n  data TEXT NOT NULL DEFAULT '{}',\n  correlation_id TEXT,\n  causation_id TEXT,\n  synced_at TEXT\n)`\n\nexport const EVENTS_INDEXES = `\nCREATE INDEX IF NOT EXISTS idx_events_type ON events(type);\nCREATE INDEX IF NOT EXISTS idx_events_source ON events(source);\nCREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);\nCREATE INDEX IF NOT EXISTS idx_events_correlation ON events(correlation_id);\nCREATE INDEX IF NOT EXISTS idx_events_synced ON events(synced_at)\n`\n\n/**\n * Column definitions for documentation and validation\n */\nexport const EVENTS_COLUMNS = {\n  id: 'TEXT PRIMARY KEY',\n  type: 'TEXT NOT NULL',\n  timestamp: \"TEXT NOT NULL DEFAULT (datetime('now'))\",\n  source: 'TEXT NOT NULL',\n  data: \"TEXT NOT NULL DEFAULT '{}'\",\n  correlation_id: 'TEXT',\n  causation_id: 'TEXT',\n  synced_at: 'TEXT',  // When streamed to ClickHouse\n} as const\n\n/**\n * Common event type patterns\n */\nexport const EVENT_PATTERNS = {\n  /** Resource lifecycle: {resource}.{action} */\n  lifecycle: ['created', 'updated', 'deleted', 'published', 'archived'],\n  /** User actions: user.{action} */\n  user: ['login', 'logout', 'signup', 'verified'],\n  /** System events: system.{action} */\n  system: ['sync.started', 'sync.completed', 'sync.failed'],\n} as const\n","/**\n * Artifacts Table Schema (SQLite)\n *\n * Cached compiled content with TTL support.\n * Artifacts are stored locally and can be streamed to ClickHouse/R2.\n *\n * Features:\n * - Content-addressed by source + type\n * - Hash-based cache invalidation\n * - TTL expiration support\n * - Size tracking for cache management\n *\n * Note: For production:\n * - Large artifacts should be stored in R2\n * - Metadata can be streamed to ClickHouse for analytics\n * - SQLite stores small/hot artifacts for edge caching\n *\n * @example\n * ```sql\n * -- Store a compiled artifact\n * INSERT INTO artifacts (key, type, source, source_hash, content)\n * VALUES ('art_123', 'esm', 'https://example.com/Post/hello', 'sha256:abc', '...')\n *\n * -- Get artifact if not expired\n * SELECT * FROM artifacts\n * WHERE key = 'art_123' AND (expires_at IS NULL OR expires_at > datetime('now'))\n * ```\n */\n\nexport const ARTIFACTS_TABLE = 'artifacts'\n\nexport const ARTIFACTS_SCHEMA = `\nCREATE TABLE IF NOT EXISTS artifacts (\n  key TEXT PRIMARY KEY,\n  type TEXT NOT NULL,\n  source TEXT NOT NULL,\n  source_hash TEXT NOT NULL,\n  created_at TEXT NOT NULL DEFAULT (datetime('now')),\n  expires_at TEXT,\n  content TEXT NOT NULL,\n  size INTEGER,\n  metadata TEXT,\n  synced_at TEXT\n)`\n\nexport const ARTIFACTS_INDEXES = `\nCREATE INDEX IF NOT EXISTS idx_artifacts_type ON artifacts(type);\nCREATE INDEX IF NOT EXISTS idx_artifacts_source ON artifacts(source);\nCREATE INDEX IF NOT EXISTS idx_artifacts_source_type ON artifacts(source, type);\nCREATE INDEX IF NOT EXISTS idx_artifacts_expires ON artifacts(expires_at);\nCREATE INDEX IF NOT EXISTS idx_artifacts_synced ON artifacts(synced_at)\n`\n\n/**\n * Column definitions for documentation and validation\n */\nexport const ARTIFACTS_COLUMNS = {\n  key: 'TEXT PRIMARY KEY',\n  type: 'TEXT NOT NULL',\n  source: 'TEXT NOT NULL',\n  source_hash: 'TEXT NOT NULL',\n  created_at: \"TEXT NOT NULL DEFAULT (datetime('now'))\",\n  expires_at: 'TEXT',\n  content: 'TEXT NOT NULL',\n  size: 'INTEGER',\n  metadata: 'TEXT',\n  synced_at: 'TEXT',  // When streamed to ClickHouse/R2\n} as const\n\n/**\n * Artifact types matching ClickHouse schema\n */\nexport const ARTIFACT_TYPES = [\n  // Compiled code\n  'esm',\n  'cjs',\n  'ast',\n  // Rendered content\n  'html',\n  'markdown',\n  'text',\n  // Structured data\n  'json',\n  'jsonld',\n  'yaml',\n  // Search/RAG\n  'chunks',\n  'embedding',\n  // Media\n  'thumbnail',\n  'preview',\n  'og-image',\n  // Export formats\n  'pdf',\n  'docx',\n  'epub',\n] as const\n\nexport type ArtifactType = (typeof ARTIFACT_TYPES)[number]\n"],"mappings":"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","names":[]}