import '../models/culture_branch.dart'; import '../models/syncretic_session_model.dart'; import '../models/history_entry_model.dart'; import 'words_repository.dart'; import '../models/houses_session_model.dart'; import '../models/word_model.dart'; import 'traditions_repository.dart'; import 'lenormand_pairs_repository.dart'; class OracleMasterPromptGenerator { /// Generates the Grand Cross-System Comparison Master Prompt for Grok, Claude 3.5 Sonnet, GPT-4o, and Gemini 1.5 Pro. static String generateCrossSystemComparison(SyncreticSession session) { final buffer = StringBuffer(); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln('ВЕЛИКИЙ МЕТА-МАСТЕР-ПРОМПТ: СРАВНИТЕЛЬНЫЙ СИНХРОНИСТИЧЕСКИЙ АНАЛИЗ'); buffer.writeln('МУЛЬТИСИСТЕМНЫЙ СИНТЕЗ ТРАДИЦИЙ И САМОСОГЛАСОВАННОСТИ ЗНАКОВ'); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln(); buffer.writeln('### СИСТЕМНАЯ РОЛЬ:'); buffer.writeln('Ты — архимагистр синкретической герменевтики, мастер сравнительного мистицизма и глубинной юнгианской психологии.'); buffer.writeln('Перед тобой единый протокол СИНХРОНИСТИЧЕСКОЙ СЕССИИ ДНЯ. Вопрошающий исследовал один вопрос через несколько независимых мантических систем древности и современности.'); buffer.writeln('Твоя миссия — провести мета-анализ: сопоставить язык каждой системы, выявить скрытые узлы схождения, обнаружить противоречия и выдать монолитный синтез высшего порядка.'); buffer.writeln(); // 1. Querent Question & Context buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('1. ФОКУС ВОПРОШАНИЯ (КВЕРЕНТ И КОНТЕКСТ ДНЯ):'); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('• Дата сессии: ' + session.formattedDate); if (session.mainQuestion != null && session.mainQuestion!.trim().isNotEmpty) { buffer.writeln('• Ключевой вопрос/тема: «' + session.mainQuestion!.trim() + '»'); } else { buffer.writeln('• Ключевой вопрос/тема: Общий срез судьбы, скрытые подводные течения и фазовый переход кверента.'); } buffer.writeln('• Число независимых гаданий в сессии: ' + session.readings.length.toString()); buffer.writeln(); // 2. Protocols of all readings buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('2. ПРОТОКОЛЫ ПОЛУЧЕННЫХ РАСКЛАДОВ ПО СИСТЕМАМ:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); final allMentionedWords = []; for (int i = 0; i < session.readings.length; i++) { final r = session.readings[i]; buffer.writeln('ВХОДНОЙ РАСКЛАД #' + (i + 1).toString() + ': ' + r.systemIcon + ' ' + r.systemName.toUpperCase()); buffer.writeln(' Время проведения: ' + r.formattedTime + ' | Метод ввода: ' + (r.inputMethod == 'dice' ? 'Жребий костей' : 'Прямой ввод со стола')); buffer.writeln(' Формат расклада: ' + r.layoutTitle); if (r.question != null && r.question!.trim().isNotEmpty && r.question != session.mainQuestion) { buffer.writeln(' Уточняющий аспект: «' + r.question!.trim() + '»'); } if (r.systemId == 'geomancy') { final isShield = r.items.any((it) => it.title.toUpperCase().contains('СУДЬЯ') || it.title.toLowerCase().contains('мать')); if (isShield) { buffer.writeln(' 📐 СВЯЩЕННАЯ АРХИТЕКТУРА ВЕЛИКОГО ГЕОМАНТИЧЕСКОГО ЩИТА (16 САКРАЛЬНЫХ ФИГУР):'); buffer.writeln(' (Тетраграммная пирамида: Матери ➔ Дочери ➔ Племянники ➔ Свидетели ➔ Судья ➔ Примиритель)'); buffer.writeln(); void writeShieldItem(String roleHeader, ReadingSignItem it) { buffer.writeln(' ' + roleHeader); buffer.writeln(' • ' + (it.symbol != null ? it.symbol! + ' ' : '') + '«' + it.title.toUpperCase() + '»'); if (it.subtitle != null && it.subtitle!.isNotEmpty) { buffer.writeln(' Атрибут: ' + it.subtitle!); } if (it.lore != null && it.lore!.isNotEmpty) { buffer.writeln(' Канонический закон/значение: ' + it.lore!); } if (it.linkedWord != null) { allMentionedWords.add(it.linkedWord!); buffer.writeln(' 🔗 Связанный сакральный знак 999: #' + it.linkedWord!.formattedSessionNumber + ' «' + it.linkedWord!.word.toUpperCase() + '» (' + it.linkedWord!.category + ')'); if (it.linkedWord!.core.isNotEmpty) { buffer.writeln(' Формула знака: ' + it.linkedWord!.core); } } } ReadingSignItem? findFirst(bool Function(ReadingSignItem) predicate) { for (final it in r.items) { if (predicate(it)) return it; } return null; } final judge = findFirst((it) => it.title.toUpperCase().contains('СУДЬЯ')); final reconciler = findFirst((it) => it.title.toUpperCase().contains('ПРИМИРИТЕЛЬ')); final rightWitness = findFirst((it) => it.title.toUpperCase().contains('ПРАВЫЙ СВИДЕТЕЛЬ')); final leftWitness = findFirst((it) => it.title.toUpperCase().contains('ЛЕВЫЙ СВИДЕТЕЛЬ')); final mothers = r.items.where((it) => it.title.toLowerCase().contains('мать')).toList(); final daughters = r.items.where((it) => it.title.toLowerCase().contains('дочь')).toList(); final nephews = r.items.where((it) => it.title.toLowerCase().contains('племянник')).toList(); if (judge != null) { writeShieldItem('👑 ВЕРХОВНЫЙ СУДЬЯ (AL-QADI / JUDEX — ИТОГОВЫЙ ПРИГОВОР И ИСХОД СИТУАЦИИ):', judge); buffer.writeln(); } if (reconciler != null) { writeShieldItem("🕊️ ПРИМИРИТЕЛЬ (AL-MUJAMMI' / 16-Я ФИГУРА — СНЯТИЕ ПРОТИВОРЕЧИЯ ИСТОКА И СУДА):", reconciler); buffer.writeln(); } if (rightWitness != null || leftWitness != null) { buffer.writeln(' ⚖️ ДВА СВИДЕТЕЛЯ (SHAHIDAYN — ДИАЛЕКТИКА ВНЕШНЕГО И ВНУТРЕННЕГО):'); if (rightWitness != null) { writeShieldItem(' [ПРАВЫЙ СВИДЕТЕЛЬ / ВНЕШНИЙ МИР И ОБСТОЯТЕЛЬСТВА]:', rightWitness); } if (leftWitness != null) { writeShieldItem(' [ЛЕВЫЙ СВИДЕТЕЛЬ / ВНУТРЕННЕЕ СОСТОЯНИЕ И ДУША КВЕРЕНТА]:', leftWitness); } buffer.writeln(); } if (mothers.isNotEmpty) { buffer.writeln(' 🏛️ ЧЕТЫРЕ МАТЕРИ (UMMAHAAT — КОРНИ И ПЕРВИЧНЫЙ СТИХИЙНЫЙ ИМПУЛЬС):'); for (final m in mothers) { writeShieldItem(' [МАТЬ]:', m); } buffer.writeln(); } if (daughters.isNotEmpty) { buffer.writeln(' 🌿 ЧЕТЫРЕ ДОЧЕРИ (BANAAT — РАЗВЁРТЫВАНИЕ В ПРОСТРАНСТВЕ И ВНЕШНЕЙ СРЕДЕ):'); for (final d in daughters) { writeShieldItem(' [ДОЧЬ]:', d); } buffer.writeln(); } if (nephews.isNotEmpty) { buffer.writeln(' ⚡ ЧЕТЫРЕ ПЛЕМЯННИКА (ABNAA — СОБЫТИЙНЫЙ СРЕЗ И ПСИХОЛОГИЯ ОКРУЖЕНИЯ):'); for (final n in nephews) { writeShieldItem(' [ПЛЕМЯННИК]:', n); } buffer.writeln(); } buffer.writeln(); continue; } } for (final item in r.items) { final rev = item.isReversed ? ' [ПЕРЕВЁРНУТОЕ ПОЛОЖЕНИЕ / МЕРКСТЕЙВ]' : ''; buffer.writeln(' • ' + (item.symbol != null ? item.symbol! + ' ' : '') + '«' + item.title.toUpperCase() + '»' + rev); if (item.subtitle != null && item.subtitle!.isNotEmpty) { buffer.writeln(' Атрибут: ' + item.subtitle!); } if (item.lore != null && item.lore!.isNotEmpty) { buffer.writeln(' Канонический закон/значение: ' + item.lore!); } if (item.linkedWord != null) { allMentionedWords.add(item.linkedWord!); buffer.writeln(' 🔗 Связанный сакральный знак 999: #' + item.linkedWord!.formattedSessionNumber + ' «' + item.linkedWord!.word.toUpperCase() + '» (' + item.linkedWord!.category + ')'); if (item.linkedWord!.core.isNotEmpty) { buffer.writeln(' Формула знака: ' + item.linkedWord!.core); } } } buffer.writeln(); } // 3. Cross-system Resonances buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('3. КРОСС-СИСТЕМНЫЕ СВЯЗИ И СТИХИЙНЫЙ РЕЗОНАНС:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); var hasResonances = false; for (final r in session.readings) { if (r.systemId == 'geomancy') { for (final it in r.items) { if (it.title.toUpperCase().contains('СУДЬЯ')) { buffer.writeln('• Геомантический вектор: Итоговый вердикт выносит Верховный Судья «' + it.title + '» (' + (it.subtitle ?? '') + '). Его стихийный закон является фокусом разрешения всей сессии.'); hasResonances = true; } } } } if (allMentionedWords.isNotEmpty) { final resonances = _detectSyncreticResonances(allMentionedWords); if (resonances.isNotEmpty) { for (final res in resonances) { buffer.writeln('• ' + res); hasResonances = true; } } } if (!hasResonances) { buffer.writeln('• Прямой полифонический диалог традиций: системы дополняют друг друга через разные уровни восприятия (ментальный, событийный, бессознательный).'); } buffer.writeln(); // 4. Instructions for Comparative Synthesis buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('4. ТРЕБОВАНИЯ К ТВОЕМУ СРАВНИТЕЛЬНОМУ МЕТА-АНАЛИЗУ:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('Составь исчерпывающий, структурированный и философски безупречный отчёт:'); buffer.writeln('1. ТОЧКА КОНВЕРГЕНЦИИ (В ЧЁМ ВСЕ СИСТЕМЫ ЕДИНОГЛАСНЫ): Какая центральная истина повторяется на разных символических языках (в рунах, арканах, гексаграммах, знаках Оракула 999 и сакральных фигурах Арабской Геомантии)?'); buffer.writeln('2. ТОЧКИ ДИВЕРГЕНЦИИ И ПОЛЯРНОСТИ (СКРЫТЫЙ ДИАЛОГ СИСТЕМ): Где одна система предостерегает, а другая указывает на возможность? Какое диалектическое противоречие вскрыто?'); buffer.writeln('3. ПОУРОВНЕВАЯ КАРТА РЕАЛЬНОСТИ:'); buffer.writeln(' - Каузальный план (причины и судьба),'); buffer.writeln(' - Психологический план (состояние ума и тени кверента),'); buffer.writeln(' - Событийный план (ближайшая материя и динамика).'); buffer.writeln('4. ПРИГОВОР И ВЕРХОВНЫЙ СИНТЕЗ: К какому единственному выводу неизбежно подводят все проведённые расклады? Обязательно сопоставь вердикт Верховного Судьи Геомантии (Аль-Кади) и гармонизацию Примирителя с результирующими картами/рунами сессии.'); buffer.writeln('5. ТОЧНЫЙ НЕОБРАТИМЫЙ ЖЕСТ: Какое конкретное действие или внутреннее решение вопрошающий должен совершить прямо сейчас?'); buffer.writeln('═══════════════════════════════════════════════════════════════════'); return buffer.toString(); } /// Generates a Master Prompt for a standard Cleromancy Oracle Session (any number of words drawn). static String generateForSession(OracleSession session) { final buffer = StringBuffer(); final repo = WordsRepository(); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln('СВЯЩЕННЫЙ РАСКЛАД КЛЕРОМАНТИИ — СИСТЕМА «ОРАКУЛ»'); buffer.writeln('МАСТЕР-ПРОМПТ ДЛЯ ГЛУБИННОЙ ИНТЕРПРЕТАЦИИ НЕЙРОСЕТЬЮ'); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln(); buffer.writeln('### СИСТЕМНАЯ РОЛЬ:'); buffer.writeln('Ты — верховный толкователь Оракула, мастер герметического синкретизма, онтологической семантики и глубинной психологии.'); buffer.writeln('Перед тобой полный протокол сакрального расклада Клеромантии (гадания по жребию знаков из канонической тысячи 000–999).'); buffer.writeln('Наша система включает канонические соответствия Таро, Старшего Футарка, Огама, Ленорман, Каббалы (Сефирот), Алхимии, Геомантии, И Цзин, Классического и Китайского Зодиака, а также Септенера (7 Дней Недели) и Додекады (12 Месяцев Года).'); buffer.writeln('Твоя задача — дать бескомпромиссный, психологически точный и эзотерически глубокий анализ ситуации, без клише, размытых фраз и банальностей.'); buffer.writeln(); // 1. Context and Question buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('1. КОНТЕКСТ И ЗАПРОС ВОПРОШАЮЩЕГО (КВЕРЕНТА):'); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('• Дата и время сессии: ' + session.formattedDate); if (session.question != null && session.question!.trim().isNotEmpty) { buffer.writeln('• Фокус вопроса: «' + session.question!.trim() + '»'); } else { buffer.writeln('• Фокус вопроса: Общее прорицание узлов судьбы, скрытых напряжений и грядущего вектора.'); } buffer.writeln('• Количество выпавших знаков в цепи: ' + session.words.length.toString()); buffer.writeln(); // 2. The Chain of Signs buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('2. ЦЕПЬ ВЫПАВШИХ САКРАЛЬНЫХ ЗНАКОВ (ПОЛНОЕ ДОСЬЕ И СЛОИ):'); buffer.writeln('───────────────────────────────────────────────────────────────────'); final fullWords = []; for (int i = 0; i < session.words.length; i++) { final sw = session.words[i]; final fw = repo.getWordByName(sw.word) ?? repo.getWordBySessionNumber(sw.sessionNumber) ?? WordItem( id: sw.sessionNumber, word: sw.word, partOfSpeech: sw.partOfSpeech, frequency: 0, category: sw.category, description: sw.symbolicMeaning, ); fullWords.add(fw); final posTitle = sw.positionTitle != null ? ' [' + sw.positionTitle! + ']' : ''; buffer.writeln('ЗНАК #' + (i + 1).toString() + ': #' + sw.formattedSessionNumber + ' «' + fw.word.toUpperCase() + '»' + posTitle); buffer.writeln(' Часть речи: ' + fw.partOfSpeech + ' | Категория: ' + fw.category + ' | Оператор: ' + fw.localizedOperator + ' | Валентность: ' + fw.localizedValence); if (fw.core.isNotEmpty) { buffer.writeln(' ⚡ [ЯДРО ЗНАКА]: ' + fw.core); } final cleanDesc = fw.description.replaceAll(RegExp(r'\[.*?\]\s*'), '').trim(); if (cleanDesc.isNotEmpty) { buffer.writeln(' 📖 [КАНОНИЧЕСКИЙ СМЫСЛ]: ' + cleanDesc); } if (fw.oracle.isNotEmpty) { buffer.writeln(' 🔮 [ТОЛКОВАНИЕ ОРАКУЛА]: ' + fw.oracle); } if (fw.shadow.isNotEmpty) { buffer.writeln(' 🌑 [ТЕНЬ И ИСКУШЕНИЕ]: ' + fw.shadow); } if (fw.asks.isNotEmpty) { buffer.writeln(' ❓ [ДИАГНОСТИЧЕСКИЙ ВОПРОС]: ' + fw.asks); } if (fw.step.isNotEmpty) { buffer.writeln(' ✨ [НЕОБРАТИМЫЙ ЖЕСТ / ДЕЙСТВИЕ]: ' + fw.step); } if (fw.binds.isNotEmpty) { buffer.writeln(' 🔗 [СОЗВУЧНЫЕ СВЯЗКИ]: ' + fw.binds.join(', ')); } final trad = _formatTraditions(fw, prefix: ' '); if (trad.isNotEmpty) { buffer.write(trad); } buffer.writeln(); } // 3. Syncretic Resonances and Geometry of Signs buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('3. МЕЖСИСТЕМНЫЕ РЕЗОНАНСЫ И ПАРНЫЕ СВЯЗИ В ЦЕПИ:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); final resonances = _detectSyncreticResonances(fullWords); if (resonances.isNotEmpty) { for (final r in resonances) { buffer.writeln('• ' + r); } } else { buffer.writeln('• Прямых полярных пар не обнаружено; знаки образуют распределённую волну смыслов.'); } // Valence balance final activeCount = fullWords.where((w) => w.valence.toLowerCase() == 'active' || w.valence.toLowerCase() == 'light').length; final receptiveCount = fullWords.where((w) => w.valence.toLowerCase() == 'receptive' || w.valence.toLowerCase() == 'dark').length; final neutralCount = fullWords.length - activeCount - receptiveCount; buffer.writeln('• Энергетический баланс цепи: Активных (Ян/Огонь-Воздух) = ' + activeCount.toString() + ', Восприимчивых (Инь/Вода-Земля) = ' + receptiveCount.toString() + ', Нейтральных = ' + neutralCount.toString()); buffer.writeln(); // 4. Detailed instructions for LLM buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('4. ТРЕБОВАНИЯ К ТВОЕМУ ОТВЕТУ:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('Построй своё прорицание по следующим блокам:'); buffer.writeln('1. ДРАМАТУРГИЯ ЦЕПИ: Как знаки перетекают друг в друга от первого к последнему? Какой сюжет разворачивается?'); buffer.writeln('2. РАЗБОР КАЖДОГО ЗНАКА В КОНТЕКСТЕ ВОПРОСА: Проанализируй влияние каждого символа, его ядро и проявление через традиции.'); buffer.writeln('3. ТЕНЕВОЙ УЗЕЛ И ЛОВУШКА: Где вопрошающий рискует оступиться? Что скрыто за фасадом очевидного?'); buffer.writeln('4. РЕЗОНАНСЫ ТРАДИЦИЙ: Как вскрытые арканы, руны, планеты и гексаграммы обогащают понимание?'); buffer.writeln('5. ИТОГОВЫЙ ПРИГОВОР ОРАКУЛА И ТОЧНЫЙ ШАГ: Сформулируй ясный, бескомпромиссный вывод и конкретный внутренний или внешний жест для вопрошающего.'); buffer.writeln('═══════════════════════════════════════════════════════════════════'); return buffer.toString(); } /// Generates a comprehensive, high-caliber Master Prompt for advanced LLMs (Grok, Claude 3.5 Sonnet, Gemini 1.5 Pro, GPT-4o). static String generate(HousesSession session) { final buffer = StringBuffer(); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln('СВЯЩЕННЫЙ РАСКЛАД ПОЛОТНА ДОМОВ 33×30 — СИСТЕМА «ОРАКУЛ»'); buffer.writeln('МАСТЕР-ПРОМПТ ДЛЯ ГЛУБИННОЙ ИНТЕРПРЕТАЦИИ НЕЙРОСЕТЬЮ'); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln(); buffer.writeln('### СИСТЕМНАЯ РОЛЬ:'); buffer.writeln('Ты — верховный толкователь Оракула, мастер герметического синкретизма, онтологической семантики и глубинной психологии.'); buffer.writeln('Перед тобой полный протокол сакрального расклада на поле 33×30 (990 земных Домов и 10 верховных Архонтов-управителей).'); buffer.writeln('Десять Архонтов — существительные, вытянутые заново для ЭТОЙ сессии. Это не закреплённые клетки 000 и 991–999.'); buffer.writeln('Наша система включает канонические соответствия Таро, Старшего Футарка, Огама, Ленорман, Каббалы (Сефирот), Алхимии, Геомантии, И Цзин, Классического и Китайского Зодиака, а также Септенера (7 Дней Недели) и Додекады (12 Месяцев Года).'); buffer.writeln('Твоя задача — дать бескомпромиссный, психологически точный и эзотерически глубокий анализ ситуации, без клише, размытых фраз и банальностей.'); buffer.writeln(); // 1. Querent (Significator) buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('1. СУБЪЕКТ ВОПРОШАНИЯ (КВЕРЕНТ / СИГНИФИКАТОР):'); buffer.writeln('───────────────────────────────────────────────────────────────────'); if (session.querentWord != null) { final q = session.querentWord!; var loc = ''; if (session.querentHouseIndex != null) { final hIdx = (session.querentHouseIndex! + 1).toString().padLeft(3, '0'); final r = session.querentHouseIndex! ~/ 30 + 1; final c = session.querentHouseIndex! % 30 + 1; loc = ' | Локация: Дом #' + hIdx + ' (Ряд ' + r.toString() + ', Столбец ' + c.toString() + ')'; } buffer.writeln('• Кверент (Сигнификатор): «' + q.word.toUpperCase() + '»' + loc); final summary = q.core.isNotEmpty ? q.core : (q.description.isNotEmpty ? q.description.replaceAll(RegExp(r'\[.*?\]\s*'), '').trim() : q.category); buffer.writeln(' Краткая сводка: ' + summary); } else { buffer.writeln('• Кверент: Открытый фокус поля (вопрошающий без фиксированного сигнификатора).'); } if (session.question != null && session.question!.trim().isNotEmpty) { buffer.writeln('• Вопрос кверента: «' + session.question!.trim() + '»'); } else { buffer.writeln('• Вопрос кверента: Общее прорицание узлов судьбы и скрытых течений ситуации.'); } buffer.writeln(); // 2. The 3-tier hierarchy: Archon -> House -> Guest buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('2. АРХИТЕКТУРА РАСКЛАДА (ИЕРАРХИЯ: АРХОНТ ➔ ДОМ ➔ ГОСТЬ):'); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('В каждом открытом доме действуют 3 уровня реальности:'); buffer.writeln(' [А] Верховный Архонт — надмирный закон сектора (триады столбцов), небесный климат.'); buffer.writeln(' [Б] Земной Дом — конкретная сфера бытия, почва, материя и форма.'); buffer.writeln(' [В] Знак-Гость — импульс жребия, живая сила, вошедшая в этот дом.'); buffer.writeln(); final allGuests = []; for (int i = 0; i < session.selectedHouses.length; i++) { final house = session.selectedHouses[i]; final sector = session.sectors[house.sectorIndex]; final guest = house.guestWord ?? house.houseWord; allGuests.add(guest); final order = house.selectionOrder ?? (i + 1); final hPad = (house.houseIndex + 1).toString().padLeft(3, '0'); buffer.writeln('ПОЗИЦИЯ #' + order.toString() + ' (Дом #' + hPad + ', Ряд ' + (house.row + 1).toString() + ', Столбец ' + (house.col + 1).toString() + '):'); buffer.writeln(' 👑 [АРХОНТ]: «' + sector.archonWord.word.toUpperCase() + '» (' + sector.title + ')'); if (sector.archonWord.core.isNotEmpty) { buffer.writeln(' Закон Архонта: ' + sector.archonWord.core); } final archonTrad = _formatTraditions(sector.archonWord, prefix: ' '); if (archonTrad.isNotEmpty) { buffer.write(archonTrad); } buffer.writeln(' 🏛️ [ДОМ]: «' + house.houseWord.word.toUpperCase() + '» (' + house.houseWord.category + ')'); if (house.houseWord.core.isNotEmpty) { buffer.writeln(' Ядро Дома: ' + house.houseWord.core); } final houseTrad = _formatTraditions(house.houseWord, prefix: ' '); if (houseTrad.isNotEmpty) { buffer.write(houseTrad); } buffer.writeln(' ⚡ [ГОСТЬ В ДОМЕ]: «' + guest.word.toUpperCase() + '» (' + guest.partOfSpeech + ', ' + guest.category + ')'); if (guest.core.isNotEmpty) { buffer.writeln(' Суть гостя: ' + guest.core); } if (guest.oracle.isNotEmpty) { buffer.writeln(' Физика действия гостя: ' + guest.oracle); } if (guest.shadow.isNotEmpty) { buffer.writeln(' Тень и ловушка гостя: ' + guest.shadow); } if (guest.asks.isNotEmpty) { buffer.writeln(' Диагностический вопрос: ' + guest.asks); } if (guest.step.isNotEmpty) { buffer.writeln(' Конкретный шаг заземления: ' + guest.step); } if (guest.binds.isNotEmpty) { buffer.writeln(' Связанные союзные знаки: ' + guest.binds.join(', ')); } final guestTrad = _formatTraditions(guest, prefix: ' '); if (guestTrad.isNotEmpty) { buffer.write(guestTrad); } buffer.writeln(); } // 3. Sacred Geometry of the Field buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('3. САКРАЛЬНАЯ ГЕОМЕТРИЯ МАТРИЦЫ:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); final pointsCount = session.selectedHouses.length; String figureName; switch (pointsCount) { case 1: figureName = 'Монада (Точка Первоистока)'; break; case 2: figureName = 'Диада (Вектор Полярности)'; break; case 3: figureName = 'Триада (Дельта Творения)'; break; case 4: figureName = 'Тетрада (Земной Четверик)'; break; case 5: figureName = 'Пентаграмма (Узел Пяти Стихий)'; break; case 6: figureName = 'Гексаграмма (Печать Равновесия)'; break; case 7: figureName = 'Гептада (Семизвездный Венец)'; break; case 8: figureName = 'Октада (Роза Пространства)'; break; case 9: figureName = 'Эннеаграмма (Девятикратное Полотно Судьбы)'; break; default: figureName = 'Сакральный Сигил (' + pointsCount.toString() + ' точек)'; } buffer.writeln('• Фигура расклада: ' + figureName); final visitedSectors = session.selectedHouses.map((h) => h.sectorIndex + 1).toSet().toList()..sort(); buffer.writeln('• Задействованные Секторы Архонтов: Триады столбцов № ' + visitedSectors.join(', ') + ' из 10'); buffer.writeln('• Координаты узлов на сетке 33×30:'); for (final h in session.selectedHouses) { buffer.writeln(' - Узел #' + (h.selectionOrder ?? 0).toString() + ': Дом «' + h.houseWord.word + '» в координатах (r: ' + (h.row + 1).toString() + ', c: ' + (h.col + 1).toString() + ')'); } buffer.writeln(); // 3.1. Syncretic Resonances across drawn symbols final resonances = _detectSyncreticResonances(allGuests); if (resonances.isNotEmpty) { buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('3.1. СИНКРЕТИЧЕСКИЕ РЕЗОНАНСЫ И ПАРЫ В РАСКЛАДЕ:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); for (final r in resonances) { buffer.writeln('• ' + r); } buffer.writeln(); } // 4. Chains of Houses & Fate Loops if (session.chains.isNotEmpty) { buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('4. ЦЕПОЧКИ ДОМОВ И ПЕТЛИ СУДЬБЫ (ТРАССИРОВКА ДО 9 ЗВЕНЬЕВ):'); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('Энергия каждого гостя ищет свой дом на матрице, создавая цепочки перетекания силы:'); for (final chain in session.chains) { buffer.writeln('• ЦЕПОЧКА #' + chain.chainIndex.toString() + ' [' + chain.endTypeTitle + '] (' + chain.steps.length.toString() + ' звеньев):'); buffer.writeln(' Итог: ' + chain.description); buffer.writeln(' Маршрут импульса:'); for (int s = 0; s < chain.steps.length; s++) { final step = chain.steps[s]; final sector = session.sectors[step.house.sectorIndex]; final sIdx = (step.house.houseIndex + 1).toString(); String stepDesc = ' ' + (s + 1).toString() + '. Дом #' + sIdx + ' «' + step.house.houseWord.word + '» [Архонт: ' + sector.archonWord.word + '] ➔ Гость «' + step.guest.word + '»'; if (step.isLoopClosing) stepDesc += ' 🔄 [ПЕТЛЯ ЗАМКНУЛАСЬ]'; if (step.leadsToArchon) stepDesc += ' 👑 [ПРЕСТОЛ АРХОНТА «' + (step.destinationArchon?.archonWord.word ?? '') + '»]'; if (step.computed) stepDesc += ' ◎ [ВЫЧИСЛЕНО ИЗ ПОЛЯ, НЕ ЖРЕБИЙ]'; buffer.writeln(stepDesc); } buffer.writeln(); } } // 5. Instruction for the AI Interpreter buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('5. ИНСТРУКЦИЯ ДЛЯ ТОЛКОВАНИЯ (ТВОЙ ПЛАН ОТВЕТА):'); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('Составь исчерпывающий мета-анализ расклада, следуя структуре:'); buffer.writeln('1. СУТЬ И ЦЕНТР ТЯЖЕСТИ: Как ситуация соотносится с Кверентом? Что является главным нервом вопроса?'); buffer.writeln('2. СИНТЕЗ ДОМОВ И ГОСТЕЙ: Раскрой взаимодействие: как каждый Гость трансформирует свой Дом под волей правящего Архонта, опираясь на сакральные слои (Таро, Руны, Огам, Ленорман, Каббалу, Септенер дней недели и Додекаду месяцев).'); buffer.writeln('3. СИНКРЕТИЧЕСКИЕ СВЯЗИ И РЕЗОНАНСЫ: Учти взаимное влияние планет, дней, месяцев, пар Ленорман и стихий, проявившихся в раскладе.'); buffer.writeln('4. АНАЛИЗ ЦЕПОЧЕК И ПЕТЕЛЬ: В чем главная скрытая динамика? Куда утекает или где зацикливается энергия (петли судьбы)?'); buffer.writeln('5. ТЕНИ И СКРЫТЫЕ ЛОВУШКИ: От каких иллюзий, спешки или самообмана предостерегает жребий?'); buffer.writeln('6. ИТОГОВЫЙ ПРИГОВОР И РИТУАЛЬНОЕ ДЕЙСТВИЕ: Три честных вывода и один бескомпромиссный физический шаг, который вопрошающий должен совершить прямо сейчас.'); return buffer.toString(); } static String _formatTraditions(WordItem item, {required String prefix}) { final sb = StringBuffer(); // 1. Explicit layers if (item.layers.isNotEmpty) { for (final l in item.layers) { sb.writeln(prefix + '🏛️ [Слой «' + WordItemLocalization.localizeSystem(l.system) + '»]: ' + l.title + ' — ' + l.law); } } // 2. Traditions Repository matches final repo = TraditionsRepository(); final matches = repo.findMatchesForWord(item.word, wordId: item.id); if (matches.isNotEmpty) { for (final m in matches) { final t = m.tradition; final st = m.station; final status = m.isPrimary ? 'Ключевой Архетип' : 'Кластер / Эманация'; sb.writeln(prefix + '📜 [' + t.name + ']: ' + st.name + ' ' + st.symbol + ' (' + status + ')'); if (m.isPrimary && st.lore.isNotEmpty) { final loreSnippet = st.lore.length > 220 ? st.lore.substring(0, 220).trim() + '...' : st.lore.trim(); sb.writeln(prefix + ' Мистерия: ' + loreSnippet); } } } return sb.toString(); } static List _detectSyncreticResonances(List words) { final resonances = []; final wordNames = words.map((w) => w.word.trim().toLowerCase()).toSet(); // Check Day of Week & Planet alignments const dayPlanetPairs = { 'понедельник': 'луна', 'вторник': 'марс', 'среда': 'меркурий', 'четверг': 'юпитер', 'пятница': 'венера', 'суббота': 'сатурн', 'воскресенье': 'солнце', }; for (final entry in dayPlanetPairs.entries) { if (wordNames.contains(entry.key) && wordNames.contains(entry.value)) { resonances.add('Планетарный Септенер: созвучие дня «' + entry.key.toUpperCase() + '» и управляющей планеты «' + entry.value.toUpperCase() + '» — прямая манифестация космического ритма.'); } } // Check Month & Zodiac resonances const monthZodiacPairs = { 'март': 'овен', 'апрель': 'телец', 'май': 'близнецы', 'июнь': 'рак', 'июль': 'лев', 'август': 'дева', 'сентябрь': 'весы', 'октябрь': 'скорпион', 'ноябрь': 'стрелец', 'декабрь': 'козерог', 'январь': 'козерог', 'февраль': 'водолей', }; for (final entry in monthZodiacPairs.entries) { if (wordNames.contains(entry.key) && wordNames.contains(entry.value)) { resonances.add('Зодиакальный цикл: солнечные врата месяца «' + entry.key.toUpperCase() + '» активируют знак «' + entry.value.toUpperCase() + '».'); } } // Check Solstices / Equinoxes if (wordNames.contains('март') && wordNames.contains('сентябрь')) { resonances.add('Ось Равноденствий: в раскладе проявились врата Весны (Март) и Осени (Сентябрь) — тема великого равновесия дня и ночи.'); } if (wordNames.contains('июнь') && wordNames.contains('декабрь')) { resonances.add('Ось Солнцестояний: противоположности Света (Июнь) и Тьмы (Декабрь) — максимальная амплитуда года.'); } // Check Lenormand Cards present final lenormandRepo = LenormandPairsRepository(); if (lenormandRepo.isLoaded) { final lenormandFound = []; for (final w in words) { final wClean = w.word.trim().toLowerCase(); for (final c in lenormandRepo.cards) { if (c.name.toLowerCase().contains(wClean) || c.id.toLowerCase().contains(wClean)) { lenormandFound.add('№${c.n} ${c.name}'); } } } if (lenormandFound.length >= 2) { resonances.add('Связка Ленорман: в раскладе открылись карты ' + lenormandFound.join(' и ') + ' — их комбинаторное чтение усиливает динамику домов.'); } } return resonances; } /// Generates the Master Prompt for Deep Culturological & Mythological Enrichment of an Archetype. static String generateArchetypeEnrichmentPrompt( WordItem word, { String? customCore, String? customOracle, String? customShadow, String? customAsks, String? customStep, }) { final buffer = StringBuffer(); buffer.writeln('ТВОЯ РОЛЬ И ЗАДАЧА:'); buffer.writeln('Ты — Архитектор Смыслов, верховный мифолог, культуролог и онтологический герменевт.'); buffer.writeln('Твоя задача — провести глубочайшее, бескомпромиссное и многомерное ОБОГАЩЕНИЕ сакрального Архетипа. Напиши захватывающую, монументальную, живую и литературную статью-эссе, которую по-настоящему интересно читать.'); buffer.writeln(); buffer.writeln('СТРОЖАЙШИЕ ПРАВИЛА:'); buffer.writeln('Абсолютный запрет на гадательную терминологию: НИКАКИХ упоминаний «оракулов», «раскладов», «карт», «вопрошающих», «гаданий» и «ответов на вопрос». Архетип описывается как фундаментальный, безжалостный закон Вселенной, физический и мистический принцип, формирующий саму реальность и событийное поле человека.'); buffer.writeln('Запрет на лень и краткость: Текст должен быть длинным, плотным, перенасыщенным фактурой. Разворачивай мысль на полную мощность.'); buffer.writeln('Обязательный мультикультурный синтез. В тексте должны быть органично сплетены:'); buffer.writeln('• Точная этимология (праиндоевропейская и др.).'); buffer.writeln('• Древние космогонии максимального спектра: Шумер/Аккад, Египет, Древняя Греция, Иудаизм, Кельты, Суфизм/Арабская традиция и Геомантия (\'Илм ар-рамл / стихийные тетраграммы), Китай (Дао), Полинезия.'); buffer.writeln('• Научный срез: квантовая механика (наблюдатель, суперпозиция, коллапс), астрофизика, биология или нейрофизиология.'); buffer.writeln('• Алхимия и герметизм (трансформация элементов).'); buffer.writeln('Метрика: В самом конце ответа ты обязан выдать точное количество символов, потраченных на генерацию текста.'); buffer.writeln('═══════════════════════════════════════'); buffer.writeln('ВХОДНЫЕ ДАННЫЕ АРХЕТИПА:'); buffer.writeln('• Знак: #' + word.formattedSessionNumber + ' «' + word.word.toUpperCase() + '» ' + word.emoji); final coreVal = (customCore != null && customCore.trim().isNotEmpty) ? customCore.trim() : (word.core.isNotEmpty ? word.core : word.cleanDescription); buffer.writeln('• Ядро/Текущая формула: ' + coreVal); if (word.partOfSpeech.isNotEmpty) buffer.writeln('• Часть речи: ' + word.partOfSpeech); if (word.category.isNotEmpty) buffer.writeln('• Категория: ' + word.category); if (word.operator.isNotEmpty) buffer.writeln('• Оператор: ' + word.localizedOperator); if (word.valence.isNotEmpty) buffer.writeln('• Полярность: ' + word.localizedValence); final oracleVal = (customOracle != null && customOracle.trim().isNotEmpty) ? customOracle.trim() : (word.oracle.isNotEmpty ? word.oracle : ''); if (oracleVal.isNotEmpty) { buffer.writeln('• Текущая наработка: ' + oracleVal); } final shadowVal = (customShadow != null && customShadow.trim().isNotEmpty) ? customShadow.trim() : word.shadow; if (shadowVal.isNotEmpty) { buffer.writeln('• Текущая тень: ' + shadowVal); } if (word.layers.isNotEmpty) { buffer.writeln('• Традиции и пласты:'); for (final l in word.layers) { final sysRu = WordItemLocalization.localizeSystem(l.system); buffer.writeln(' - [' + sysRu + ']: ' + l.title + ' — ' + l.law); } } if (word.binds.isNotEmpty) { buffer.writeln('• Созвучные узлы: ' + word.binds.join(', ')); } buffer.writeln('═══════════════════════════════════════'); buffer.writeln('ТРЕБОВАНИЯ К ФОРМАТУ ВЫДАЧИ (СТРОГО MARKDOWN С ЗАГОЛОВКАМИ ##):'); buffer.writeln('## ЯДРО'); buffer.writeln('(1–2 чеканных, безжалостных афористичных предложения: онтологическая формула непреложного закона бытия. Никакой воды, только концентрат сути).'); buffer.writeln(); buffer.writeln('## ОРАКУЛ'); buffer.writeln('(Монолитная, развернутая статья-эссе на 5–8 глубоких абзацев.'); buffer.writeln('• Абзац 1-2: Этимология и физическая/биологическая/квантовая природа явления. Разрушение обыденного восприятия.'); buffer.writeln('• Абзац 3-5: Глубокая мифология, геомантия и космогония (Шумер, Египет, Иврит, Кельты, Арабская геомантия \'Илм ар-рамл, Дальний Восток и т.д.) — как разные цивилизации и сакральные науки описывали этот закон.'); buffer.writeln('• Абзац 6-7: Алхимия и событийное поле. Как этот закон действует как химический реагент в реальности человека, как он ломает и трансформирует ситуацию. Без эзотерической воды — суровая прикладная философия).'); buffer.writeln(); buffer.writeln('## ТЕНЬ'); buffer.writeln('(Теневая ловушка принципа. Описать искажение, избыток или дефицит, слепую зону, эскапизм, паралич или выгорание. Как человек обманывает себя, попадая в искривленное поле этого архетипа).'); buffer.writeln(); buffer.writeln('## ВОПРОС'); buffer.writeln('(Острый, как скальпель, экзистенциальный коан, бьющий в самую суть ситуации. Безжалостный вопрос для глубокой рефлексии).'); buffer.writeln(); buffer.writeln('## ЖЕСТ'); buffer.writeln('(Одно конкретное материальное, физиологическое микродействие в реальном физическом мире для закрепления осознания. Это НЕ должна быть медитация в уме — это должно быть физическое действие с материей, пространством или телом).'); buffer.writeln(); buffer.writeln('## КУЛЬТУРЫ'); buffer.writeln('(Учебный сравнительный атлас: как этот знак понимали разные ветви человечества. Для КАЖДОЙ традиции — отдельный подзаголовок ### с точным названием из списка ниже и 2–5 предложений строго фактического материала: исконное слово/иероглиф/знак с транслитерацией, божества и мифы, ритуалы, первоисточник (текст, эпос, памятник). Не выдумывай: если у традиции нет достоверного материала по этому знаку — пропусти её, а не фантазируй. В конце — подзаголовок ### Сравнение: 3–4 предложения о том, где традиции сходятся и где принципиально расходятся.'); for (final b in kCultureBranches) { buffer.writeln('### ' + b.name); } buffer.writeln('### Сравнение'); return buffer.toString(); } /// Generates the Grand Master Prompt for Arabic Geomancy ('Ilm al-Raml) & the Great Shield. static String generateGeomancyMasterPrompt({ required String question, required String layoutTitle, required bool isShield, List figures = const [], List mothers = const [], List daughters = const [], List nephews = const [], GeomancyPromptFigure? rightWitness, GeomancyPromptFigure? leftWitness, GeomancyPromptFigure? judge, GeomancyPromptFigure? reconciler, }) { final buffer = StringBuffer(); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln("ВЕЛИКИЙ МАСТЕР-ПРОМПТ: АРАБСКАЯ ГЕОМАНТИЯ ('ИЛМ АР-РАМЛ)"); buffer.writeln('САКРАЛЬНАЯ ПУНКТУАЦИЯ ПЕСКА, ВЕЛИКИЙ ЩИТ И СТИХИЙНЫЕ ТЕТРАГРАММЫ'); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln(); buffer.writeln('### СИСТЕМНАЯ РОЛЬ:'); buffer.writeln("Ты — верховный геомант, хранитель традиции 'Илм ар-рамл («науки о песке») и мастер герметической астро-геомантии."); buffer.writeln('Перед тобой священный протокол геомантического гадания. Каждая фигура представляет собой тетраграмму четырёх первоэлементов (Огонь, Воздух, Вода, Земля): нечётное число точек (1) обозначает активную проявленную силу, чётное (2) — скрытую потенциальную емкость.'); buffer.writeln('Твоя миссия — провести всесторонний, глубокий и бескомпромиссный анализ расклада песка, вскрыть динамику стихий и выдать монолитный, мудрый и прикладной вердикт.'); buffer.writeln(); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('1. ФОКУС И ВОПРОС КВЕРЕНТА:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); final q = question.trim().isNotEmpty ? question.trim() : 'Общий вектор судьбы, скрытые стихийные силы и неизбежный исход.'; buffer.writeln('• Вопрос кверента: «' + q + '»'); buffer.writeln('• Формат расклада: ' + layoutTitle); buffer.writeln("• Мантическая традиция: Классическая арабская геомантия ('Илм ар-рамл) и средневековый европейский геомантический щит"); buffer.writeln(); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('2. КАРТА ВЫПАВШИХ ФИГУР:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); if (isShield) { if (judge != null) { buffer.writeln('ВЕРХОВНЫЙ СУДЬЯ (AL-QADI / JUDEX):'); buffer.writeln('• ' + judge.name + ' (' + judge.latinName + (judge.arabicName.isNotEmpty ? ' / ' + judge.arabicName : '') + ')'); buffer.writeln(' Стихия: ' + judge.element + ' | Планета/Зодиак: ' + judge.planet); buffer.writeln(' Тетраграмма стихий:'); buffer.writeln(judge.dotsDisplay); buffer.writeln(' Канонический смысл: ' + judge.lore); if (judge.linkedWord != null) { buffer.writeln(' Связанный архетип Оракула 999: #' + judge.linkedWord!.formattedSessionNumber + ' «' + judge.linkedWord!.word.toUpperCase() + '» (' + judge.linkedWord!.core + ')'); } buffer.writeln(); } if (reconciler != null) { buffer.writeln("ПРИМИРИТЕЛЬ (AL-MUJAMMI' / RECONCILER — 16-я сакральная фигура):"); buffer.writeln('• ' + reconciler.name + ' (' + reconciler.latinName + (reconciler.arabicName.isNotEmpty ? ' / ' + reconciler.arabicName : '') + ')'); buffer.writeln(' Стихия: ' + reconciler.element + ' | Планета/Зодиак: ' + reconciler.planet); buffer.writeln(' Тетраграмма стихий:'); buffer.writeln(reconciler.dotsDisplay); buffer.writeln(' Связь: Сложение Судьи и 1-й Матери (разрешение конфликта между истоком и исходом)'); buffer.writeln(' Канонический смысл: ' + reconciler.lore); if (reconciler.linkedWord != null) { buffer.writeln(' Связанный архетип Оракула 999: #' + reconciler.linkedWord!.formattedSessionNumber + ' «' + reconciler.linkedWord!.word.toUpperCase() + '» (' + reconciler.linkedWord!.core + ')'); } buffer.writeln(); } buffer.writeln('ДВА СВИДЕТЕЛЯ (SHAHIDAYN):'); if (rightWitness != null) { buffer.writeln('• Правый Свидетель (Объективный мир, действие, прошлое): ' + rightWitness.name); buffer.writeln(' ' + rightWitness.element + ' • ' + rightWitness.planet + ' | ' + rightWitness.lore); if (rightWitness.linkedWord != null) { buffer.writeln(' Связанный знак: #' + rightWitness.linkedWord!.formattedSessionNumber + ' «' + rightWitness.linkedWord!.word.toUpperCase() + '»'); } } if (leftWitness != null) { buffer.writeln('• Левый Свидетель (Субъективный мир, чувства, будущее): ' + leftWitness.name); buffer.writeln(' ' + leftWitness.element + ' • ' + leftWitness.planet + ' | ' + leftWitness.lore); if (leftWitness.linkedWord != null) { buffer.writeln(' Связанный знак: #' + leftWitness.linkedWord!.formattedSessionNumber + ' «' + leftWitness.linkedWord!.word.toUpperCase() + '»'); } } buffer.writeln(); buffer.writeln('ЧЕТЫРЕ МАТЕРИ (UMMAHAAT — Первичный стихийный исток ситуации):'); for (int i = 0; i < mothers.length; i++) { final m = mothers[i]; buffer.writeln('• Мать #' + (i + 1).toString() + ': ' + m.name + ' (' + m.element + ', ' + m.planet + ') — ' + m.lore); if (m.linkedWord != null) { buffer.writeln(' Знак 999: #' + m.linkedWord!.formattedSessionNumber + ' «' + m.linkedWord!.word.toUpperCase() + '»'); } } buffer.writeln(); buffer.writeln('ЧЕТЫРЕ ДОЧЕРИ (BANAAT — Горизонтальная проекция, внешняя среда):'); for (int i = 0; i < daughters.length; i++) { final d = daughters[i]; buffer.writeln('• Дочь #' + (i + 1).toString() + ': ' + d.name + ' (' + d.element + ', ' + d.planet + ') — ' + d.lore); } buffer.writeln(); buffer.writeln('ЧЕТЫРЕ ПЛЕМЯННИКА (ABNAA — Психика кверента и окружение):'); for (int i = 0; i < nephews.length; i++) { final n = nephews[i]; buffer.writeln('• Племянник #' + (i + 1).toString() + ': ' + n.name + ' (' + n.element + ', ' + n.planet + ') — ' + n.lore); } buffer.writeln(); } else { for (final f in figures) { buffer.writeln('• Позиция: ' + f.position); buffer.writeln(' Фигура: ' + f.name + ' (' + f.latinName + (f.arabicName.isNotEmpty ? ' / ' + f.arabicName : '') + ')'); buffer.writeln(' Стихия: ' + f.element + ' | Планета/Зодиак: ' + f.planet); buffer.writeln(' Тетраграмма:'); buffer.writeln(f.dotsDisplay); buffer.writeln(' Суть: ' + f.lore); if (f.linkedWord != null) { buffer.writeln(' Связанный знак 999: #' + f.linkedWord!.formattedSessionNumber + ' «' + f.linkedWord!.word.toUpperCase() + '» (' + f.linkedWord!.core + ')'); } buffer.writeln(); } } buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('3. ТРЕБОВАНИЯ К ИНТЕРПРЕТАЦИИ НЕЙРОСЕТЬЮ (СТРОГАЯ СТРУКТУРА):'); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('Предоставь глубокое, литературное, эзотерически безупречное толкование:'); buffer.writeln('1. АНАЛИЗ СТИХИЙНОГО СУБСТРАТА:'); buffer.writeln(' Определи распределение сил четырёх стихий (Огонь, Воздух, Вода, Земля). Где происходит избыточное напряжение, а где истощение? Как стихии диктуют темп событий?'); buffer.writeln('2. ДИАЛЕКТИКА СВИДЕТЕЛЕЙ И ВЕРДИКТ СУДЬИ:'); buffer.writeln(' Как Правый Свидетель (объективные обстоятельства) взаимодействует с Левым Свидетелем (внутреннее состояние кверента)? К какому неизбежному синтезу приводит их сложение в фигуру Судьи?'); if (isShield) { buffer.writeln('3. ТАЙНЫЙ СОВЕТ ПРИМИРИТЕЛЯ:'); buffer.writeln(" Проанализируй 16-ю фигуру Примирителя (сложение Судьи и 1-й Матери). Как она снимает конфликт между тем, «с чего всё началось», и тем, «к чему всё пришло»?"); } buffer.writeln('4. СИНХРОНИСТИЧЕСКИЙ СИНТЕЗ С ОРАКУЛОМ:'); buffer.writeln(' Свяжи выпавшие фигуры с архетипами лексикона 999, подчеркнув ключевой закон бытия.'); buffer.writeln('5. ПРИКЛАДНАЯ СТРАТЕГИЯ И ПРЕДОСТЕРЕЖЕНИЕ:'); buffer.writeln(' Дай конкретный и кристально ясный совет кверенту: какие действия предпринять немедленно, чего категорически избегать и в чём заключается главный духовный урок.'); return buffer.toString(); } /// Generates the Grand Master Prompt for Celtic Tree Ogham (20 Fedas of the Sacred Grove). static String generateOghamMasterPrompt({ required String question, required String layoutTitle, required List fedas, }) { final buffer = StringBuffer(); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln('ВЕЛИКИЙ МАСТЕР-ПРОМПТ: КЕЛЬТСКИЙ ДРЕВЕСНЫЙ ОГАМ'); buffer.writeln('20 ФЕД СВЯЩЕННОЙ РОЩИ ДРУИДОВ И ТАЙНОПИСЬ БОГА ОГМЫ'); buffer.writeln('═══════════════════════════════════════════════════════════════════'); buffer.writeln(); buffer.writeln('### СИСТЕМНАЯ РОЛЬ:'); buffer.writeln('Ты — верховный друид и филид, хранитель Священной Рощи, знаток тайнописи бога Огмы и древесного календаря кельтов.'); buffer.writeln('Перед тобой священный расклад древесного Огама. Каждая феда олицетворяет священное дерево или кустарник, несущий архетипическую силу духов природы и космических законов.'); buffer.writeln('Твоя миссия — истолковать шёпот деревьев, раскрыть тайный баланс прямых и теневых сил и дать кверенту глубокий, поэтичный и практический совет.'); buffer.writeln(); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('1. ФОКУС И ВОПРОС КВЕРЕНТА:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); final q = question.trim().isNotEmpty ? question.trim() : 'Мудрость Священной Рощи Огама и древесные силы судьбы.'; buffer.writeln('• Вопрос кверента: «' + q + '»'); buffer.writeln('• Формат расклада: ' + layoutTitle); buffer.writeln('• Традиция: Кельтский сакральный Огам (4 Аикмы Священной Рощи)'); buffer.writeln(); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('2. ВЫПАВШИЕ ФЕДЫ РОЩИ:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); for (final f in fedas) { buffer.writeln('• Позиция «' + f.position + '»: ' + f.symbol + ' ' + f.name + ' [' + (f.isReversed ? 'ТЕНЕВОЕ ПОЛОЖЕНИЕ' : 'ПРЯМОЕ ПОЛОЖЕНИЕ') + ']'); buffer.writeln(' Семья (Аикма): ' + f.aicme); buffer.writeln(' Древесная сила: ' + f.lore); if (f.linkedWord != null) { buffer.writeln(' Связанный архетип Оракула 999: #' + f.linkedWord!.formattedSessionNumber + ' «' + f.linkedWord!.word.toUpperCase() + '» (' + f.linkedWord!.core + ')'); } buffer.writeln(); } buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('3. ТРЕБОВАНИЯ К ДРУИДИЧЕСКОМУ ТОЛКОВАНИЮ НЕЙРОСЕТЬЮ:'); buffer.writeln('───────────────────────────────────────────────────────────────────'); buffer.writeln('1. АНАЛИЗ ДРЕВЕСНЫХ СИЛ: Как сочетаются качества выпавших деревьев (например, гибкость Ивы, несгибаемость Дуба, очищение Берёзы, защита Тис)?'); buffer.writeln('2. ДИАГНОСТИКА ТЕНЕЙ: Если выпали перевёрнутые феды, вскрой их предупреждение — где заблокирован жизненный сок или где кверент проявляет гордыню / самоизоляцию?'); buffer.writeln('3. ДИНАМИКА ПОЗИЦИЙ РАСКЛАДА: Как раскладывается временная или стихийная линия вопроса?'); buffer.writeln('4. СИНТЕЗ СО ЗНАКАМИ ОРАКУЛА 999: Как символы 999 подкрепляют наставление Рощи?'); buffer.writeln('5. ДРУИДИЧЕСКИЙ НАКАЗ КВЕРЕНТУ: Точное, прикладное наставление — как поступить в материальном мире.'); return buffer.toString(); } } class OghamPromptFeda { final String position; final String name; final String symbol; final String aicme; final bool isReversed; final String lore; final WordItem? linkedWord; const OghamPromptFeda({ required this.position, required this.name, required this.symbol, required this.aicme, required this.isReversed, required this.lore, this.linkedWord, }); } class GeomancyPromptFigure { final String position; final String name; final String latinName; final String arabicName; final List lines; final String element; final String planet; final String lore; final WordItem? linkedWord; const GeomancyPromptFigure({ required this.position, required this.name, this.latinName = '', this.arabicName = '', required this.lines, required this.element, required this.planet, required this.lore, this.linkedWord, }); String get dotsDisplay { final elements = ['Огонь', 'Воздух', 'Вода', 'Земля']; if (lines.length != 4) return lines.join('-'); return List.generate( 4, (i) => ' [' + elements[i] + ']: ' + (lines[i] == 1 ? '• ' : '•• ') + ' (' + (lines[i] == 1 ? 'активный импульс' : 'пассивный сосуд') + ')', ).join('\n'); } }