#!/usr/bin/env node /** * Seed Script: Add Architectural Safeguards Document to Database * Adds both MD and PDF versions of the Architectural Safeguards Against LLM Hierarchical Dominance document */ require('dotenv').config(); const fs = require('fs').promises; const path = require('path'); const { connect, close } = require('../src/utils/db.util'); const Document = require('../src/models/Document.model'); const { markdownToHtml, extractTOC, generateSlug } = require('../src/utils/markdown.util'); async function seedDocument() { try { console.log('\n=== Seeding Architectural Safeguards Document ===\n'); // Connect to database await connect(); // Read the prose markdown file const mdPath = path.join(__dirname, '..', 'docs', 'research', 'ARCHITECTURAL-SAFEGUARDS-Against-LLM-Hierarchical-Dominance-Prose.md'); const rawContent = await fs.readFile(mdPath, 'utf-8'); console.log('✓ Read markdown file'); // Convert to HTML const htmlContent = markdownToHtml(rawContent); // Extract table of contents const tableOfContents = extractTOC(rawContent); console.log('✓ Converted to HTML and extracted TOC'); // Generate slug const slug = 'architectural-safeguards-against-llm-hierarchical-dominance-prose'; // Check if document already exists const existing = await Document.findBySlug(slug); if (existing) { console.log(`\n⚠️ Document already exists with slug: ${slug}`); console.log(' Delete it first or use a different slug.'); await close(); process.exit(0); } // Create document object const doc = { title: 'Architectural Safeguards Against LLM Hierarchical Dominance', slug: slug, quadrant: null, // Research document, not bound to specific quadrant persistence: 'HIGH', audience: 'leader', // Target audience: leaders, decision-makers visibility: 'public', category: 'research-theory', // Research and theory category order: 10, // Higher priority (lower number = higher priority in display) content_html: htmlContent, content_markdown: rawContent, toc: tableOfContents, security_classification: { contains_credentials: false, contains_financial_info: false, contains_vulnerability_info: false, contains_infrastructure_details: false, requires_authentication: false }, metadata: { author: 'Agentic Governance Research Team', version: '1.0', document_code: null, related_documents: [ 'executive-summary-pluralistic-deliberation-in-tractatus', 'phase-1-implementation-tickets', 'research-paper-outline-pluralistic-deliberation' ], tags: [ 'ai-safety', 'llm-governance', 'value-pluralism', 'deliberative-ai', 'hierarchical-dominance', 'pluralistic-deliberation', 'research' ] }, translations: {}, search_index: rawContent.toLowerCase(), download_formats: { pdf: '/docs/research/ARCHITECTURAL-SAFEGUARDS-Against-LLM-Hierarchical-Dominance-Prose.pdf', markdown: '/docs/research/ARCHITECTURAL-SAFEGUARDS-Against-LLM-Hierarchical-Dominance-Prose.md' } }; // Create document const createdDoc = await Document.create(doc); console.log('\n✓ Document created successfully!'); console.log(` Title: ${createdDoc.title}`); console.log(` Slug: ${createdDoc.slug}`); console.log(` Category: ${createdDoc.category}`); console.log(` Audience: ${createdDoc.audience}`); console.log(` PDF: ${doc.download_formats.pdf}`); console.log(` Markdown: ${doc.download_formats.markdown}`); console.log('\n✓ Document is now available at:'); console.log(` https://agenticgovernance.digital/docs.html?doc=${slug}`); await close(); } catch (error) { console.error('\n✗ Error seeding document:', error.message); console.error(error.stack); process.exit(1); } } // Run if called directly if (require.main === module) { seedDocument(); } module.exports = seedDocument;