Files
999/lib/services/oracle_master_prompt_generator.dart

978 lines
73 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 = <WordItem>[];
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 = <WordItem>[];
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 = <WordItem>[];
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<String> _detectSyncreticResonances(List<WordItem> words) {
final resonances = <String>[];
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 = <String>[];
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<GeomancyPromptFigure> figures = const [],
List<GeomancyPromptFigure> mothers = const [],
List<GeomancyPromptFigure> daughters = const [],
List<GeomancyPromptFigure> 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<OghamPromptFeda> 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<int> 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');
}
}