@elizaos/plugin-mysticism 2.0.0-alpha.3 → 2.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +65 -447
- package/dist/index.js.map +13 -13
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/actions/astrology-reading.ts", "../src/actions/check-payment.ts", "../src/actions/iching-reading.ts", "../src/utils/reading-helpers.ts", "../src/actions/reading-followup.ts", "../src/actions/request-payment.ts", "../src/actions/tarot-reading.ts", "../src/engines/astrology/zodiac.ts", "../src/engines/astrology/chart.ts", "../src/engines/astrology/interpreter.ts", "../src/engines/astrology/index.ts", "../src/engines/iching/divination.ts", "../src/engines/iching/interpreter.ts", "../src/engines/iching/index.ts", "../src/engines/tarot/deck.ts", "../src/engines/tarot/interpreter.ts", "../src/engines/tarot/spreads.ts", "../src/engines/tarot/index.ts", "../src/providers/economic-context.ts", "../src/providers/mystical-knowledge.ts", "../src/providers/reading-context.ts", "../src/services/mysticism-service.ts", "../src/index.ts", "../src/routes/readings.ts", "../src/forms/astrology-intake.ts", "../src/forms/feedback.ts", "../src/forms/tarot-intake.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\nimport type { BirthData } from \"../types\";\n\nconst ASTROLOGY_KEYWORDS: readonly string[] = [\n \"birth chart\",\n \"natal chart\",\n \"horoscope\",\n \"zodiac\",\n \"astrology reading\",\n \"what sign am i\",\n \"my star sign\",\n \"rising sign\",\n \"ascendant\",\n \"sun sign\",\n \"moon sign\",\n \"planetary placement\",\n \"astrological\",\n \"read my chart\",\n \"chart reading\",\n];\n\ninterface ParsedBirthInfo {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n}\n\nconst MONTH_NAMES: Record<string, number> = {\n january: 1,\n jan: 1,\n february: 2,\n feb: 2,\n march: 3,\n mar: 3,\n april: 4,\n apr: 4,\n may: 5,\n june: 6,\n jun: 6,\n july: 7,\n jul: 7,\n august: 8,\n aug: 8,\n september: 9,\n sep: 9,\n sept: 9,\n october: 10,\n oct: 10,\n november: 11,\n nov: 11,\n december: 12,\n dec: 12,\n};\n\nfunction extractBirthInfo(text: string): ParsedBirthInfo | null {\n const t = text.toLowerCase();\n let year: number | null = null;\n let month: number | null = null;\n let day: number | null = null;\n\n // ISO: YYYY-MM-DD or YYYY/MM/DD\n const iso = t.match(/(\\d{4})[/-](\\d{1,2})[/-](\\d{1,2})/);\n if (iso) {\n year = Number.parseInt(iso[1], 10);\n month = Number.parseInt(iso[2], 10);\n day = Number.parseInt(iso[3], 10);\n }\n\n // Named month: \"March 15, 1990\"\n if (!year) {\n const named = t.match(/(\\w+)\\s+(\\d{1,2})(?:st|nd|rd|th)?,?\\s*(\\d{4})/);\n if (named) {\n month = MONTH_NAMES[named[1]] ?? null;\n day = Number.parseInt(named[2], 10);\n year = Number.parseInt(named[3], 10);\n }\n }\n\n if (!year || !month || !day) return null;\n\n // Time: HH:MM with optional AM/PM\n let hour = 12;\n let minute = 0;\n const time = t.match(/(\\d{1,2}):(\\d{2})\\s*(am|pm)?/i);\n if (time) {\n hour = Number.parseInt(time[1], 10);\n minute = Number.parseInt(time[2], 10);\n if (time[3]?.toLowerCase() === \"pm\" && hour < 12) hour += 12;\n if (time[3]?.toLowerCase() === \"am\" && hour === 12) hour = 0;\n }\n\n if (\n year < 1900 ||\n year > 2030 ||\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > 31 ||\n hour < 0 ||\n hour > 23 ||\n minute < 0 ||\n minute > 59\n ) {\n return null;\n }\n\n return { year, month, day, hour, minute };\n}\n\nfunction extractLocation(text: string): { latitude: number; longitude: number; timezone: number } {\n const coordMatch = text.match(/(-?\\d+\\.?\\d*)\\s*[,/]\\s*(-?\\d+\\.?\\d*)/);\n if (coordMatch) {\n const lat = Number.parseFloat(coordMatch[1]);\n const lon = Number.parseFloat(coordMatch[2]);\n if (lat >= -90 && lat <= 90 && lon >= -180 && lon <= 180) {\n return { latitude: lat, longitude: lon, timezone: Math.round(lon / 15) };\n }\n }\n return { latitude: 40.7128, longitude: -74.006, timezone: -5 };\n}\n\nexport const astrologyReadingAction: Action = {\n name: \"ASTROLOGY_READING\",\n similes: [\"BIRTH_CHART\", \"NATAL_CHART\", \"HOROSCOPE_READING\", \"ZODIAC_READING\"],\n description:\n \"Perform an astrological natal chart reading, progressively revealing planetary placements.\",\n\n validate: async (
|
|
6
|
-
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\n\nexport const checkPaymentAction: Action = {\n name: \"CHECK_PAYMENT\",\n similes: [\"VERIFY_PAYMENT\", \"PAYMENT_STATUS\"],\n description: \"Check if payment has been received for the current reading session.\",\n\n validate: async (
|
|
7
|
-
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\n\nconst ICHING_KEYWORDS: readonly string[] = [\n \"i ching\",\n \"i-ching\",\n \"iching\",\n \"hexagram\",\n \"book of changes\",\n \"oracle\",\n \"consult the i ching\",\n \"cast hexagram\",\n \"throw coins\",\n \"yarrow stalks\",\n \"cast the coins\",\n \"divination\",\n \"changing lines\",\n];\n\nfunction extractQuestion(text: string): string {\n const stripPatterns = [\n /(?:can you |could you |please |would you )?(?:consult |cast |throw |do )(?:the )?(?:i[- ]?ching|hexagram|oracle|coins|yarrow stalks?)?\\s*(?:about|regarding|for|on)?\\s*/i,\n /(?:i(?:'d| would) (?:like|love) (?:to )?)?(?:consult |cast |ask )(?:the )?(?:i[- ]?ching|oracle|hexagram)\\s*(?:about|regarding|for|on)?\\s*/i,\n /(?:what does the )?(?:i[- ]?ching|oracle|book of changes)\\s*(?:say|think|reveal|show)?\\s*(?:about|regarding|for|on)?\\s*/i,\n ];\n\n let cleaned = text;\n for (const pattern of stripPatterns) {\n cleaned = cleaned.replace(pattern, \"\").trim();\n }\n\n if (cleaned.length < 5) {\n return \"general guidance on the path forward\";\n }\n\n return cleaned;\n}\n\nexport const ichingReadingAction: Action = {\n name: \"ICHING_READING\",\n similes: [\"CAST_HEXAGRAM\", \"CONSULT_ICHING\", \"THROW_COINS\", \"ORACLE_READING\"],\n description:\n \"Perform an I Ching divination reading by casting a hexagram and interpreting changing lines.\",\n\n validate: async (
|
|
5
|
+
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\nimport type { BirthData } from \"../types\";\n\nconst ASTROLOGY_KEYWORDS: readonly string[] = [\n \"birth chart\",\n \"natal chart\",\n \"horoscope\",\n \"zodiac\",\n \"astrology reading\",\n \"what sign am i\",\n \"my star sign\",\n \"rising sign\",\n \"ascendant\",\n \"sun sign\",\n \"moon sign\",\n \"planetary placement\",\n \"astrological\",\n \"read my chart\",\n \"chart reading\",\n];\n\ninterface ParsedBirthInfo {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n}\n\nconst MONTH_NAMES: Record<string, number> = {\n january: 1,\n jan: 1,\n february: 2,\n feb: 2,\n march: 3,\n mar: 3,\n april: 4,\n apr: 4,\n may: 5,\n june: 6,\n jun: 6,\n july: 7,\n jul: 7,\n august: 8,\n aug: 8,\n september: 9,\n sep: 9,\n sept: 9,\n october: 10,\n oct: 10,\n november: 11,\n nov: 11,\n december: 12,\n dec: 12,\n};\n\nfunction extractBirthInfo(text: string): ParsedBirthInfo | null {\n const t = text.toLowerCase();\n let year: number | null = null;\n let month: number | null = null;\n let day: number | null = null;\n\n // ISO: YYYY-MM-DD or YYYY/MM/DD\n const iso = t.match(/(\\d{4})[/-](\\d{1,2})[/-](\\d{1,2})/);\n if (iso) {\n year = Number.parseInt(iso[1], 10);\n month = Number.parseInt(iso[2], 10);\n day = Number.parseInt(iso[3], 10);\n }\n\n // Named month: \"March 15, 1990\"\n if (!year) {\n const named = t.match(/(\\w+)\\s+(\\d{1,2})(?:st|nd|rd|th)?,?\\s*(\\d{4})/);\n if (named) {\n month = MONTH_NAMES[named[1]] ?? null;\n day = Number.parseInt(named[2], 10);\n year = Number.parseInt(named[3], 10);\n }\n }\n\n if (!year || !month || !day) return null;\n\n // Time: HH:MM with optional AM/PM\n let hour = 12;\n let minute = 0;\n const time = t.match(/(\\d{1,2}):(\\d{2})\\s*(am|pm)?/i);\n if (time) {\n hour = Number.parseInt(time[1], 10);\n minute = Number.parseInt(time[2], 10);\n if (time[3]?.toLowerCase() === \"pm\" && hour < 12) hour += 12;\n if (time[3]?.toLowerCase() === \"am\" && hour === 12) hour = 0;\n }\n\n if (\n year < 1900 ||\n year > 2030 ||\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > 31 ||\n hour < 0 ||\n hour > 23 ||\n minute < 0 ||\n minute > 59\n ) {\n return null;\n }\n\n return { year, month, day, hour, minute };\n}\n\nfunction extractLocation(text: string): { latitude: number; longitude: number; timezone: number } {\n const coordMatch = text.match(/(-?\\d+\\.?\\d*)\\s*[,/]\\s*(-?\\d+\\.?\\d*)/);\n if (coordMatch) {\n const lat = Number.parseFloat(coordMatch[1]);\n const lon = Number.parseFloat(coordMatch[2]);\n if (lat >= -90 && lat <= 90 && lon >= -180 && lon <= 180) {\n return { latitude: lat, longitude: lon, timezone: Math.round(lon / 15) };\n }\n }\n return { latitude: 40.7128, longitude: -74.006, timezone: -5 };\n}\n\nexport const astrologyReadingAction: Action = {\n name: \"ASTROLOGY_READING\",\n similes: [\"BIRTH_CHART\", \"NATAL_CHART\", \"HOROSCOPE_READING\", \"ZODIAC_READING\"],\n description:\n \"Perform an astrological natal chart reading, progressively revealing planetary placements.\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<boolean> => {\n const text = (message.content.text ?? \"\").toLowerCase();\n if (!ASTROLOGY_KEYWORDS.some((kw) => text.includes(kw))) return false;\n\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n logger.warn(\"ASTROLOGY_READING validation failed: MysticismService not found\");\n return false;\n }\n\n const existingSession = service.getSession(message.entityId, message.roomId);\n if (existingSession) {\n logger.debug(\n { entityId: message.entityId, roomId: message.roomId, type: existingSession.type },\n \"ASTROLOGY_READING skipped: active session exists\"\n );\n return false;\n }\n\n return true;\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions | Record<string, JsonValue | undefined>,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n logger.error(\"ASTROLOGY_READING handler: MysticismService not available\");\n return { success: false, text: \"The mysticism service is not available.\" };\n }\n\n const text = message.content.text ?? \"\";\n const crisis = service.detectCrisis(text);\n if (crisis.detected && crisis.severity === \"high\") {\n if (callback) {\n await callback({\n text:\n \"I sense you're carrying something very heavy right now. \" +\n \"The stars will always be there for you, but first — please know \" +\n \"that there are people who care.\\n\\n\" +\n crisis.recommendedAction,\n });\n }\n return {\n success: true,\n text: \"Crisis detected — provided support resources instead of reading.\",\n };\n }\n\n const birthInfo = extractBirthInfo(text);\n if (!birthInfo) {\n return {\n success: true,\n text: \"Need birth data to compute natal chart.\",\n data: { needsBirthData: true },\n };\n }\n\n const location = extractLocation(text);\n const birthData: BirthData = {\n ...birthInfo,\n latitude: location.latitude,\n longitude: location.longitude,\n timezone: location.timezone,\n };\n\n try {\n const session = service.startAstrologyReading(message.entityId, message.roomId, birthData);\n\n const sunSign = session.astrology?.chart.sun.sign ?? \"unknown\";\n const moonSign = session.astrology?.chart.moon.sign ?? \"unknown\";\n const ascSign = session.astrology?.chart.ascendant.sign ?? \"unknown\";\n\n logger.info(\n { entityId: message.entityId, roomId: message.roomId, sunSign },\n \"Astrology reading initiated\"\n );\n\n return {\n success: true,\n text: `Computed natal chart: Sun in ${sunSign}, Moon in ${moonSign}`,\n data: {\n sessionId: session.id,\n sunSign,\n moonSign,\n ascendant: ascSign,\n birthData: { year: birthData.year, month: birthData.month, day: birthData.day },\n },\n };\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : \"Unknown error computing chart\";\n logger.error({ error: errorMsg }, \"ASTROLOGY_READING handler failed\");\n return { success: false, text: errorMsg };\n }\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Can you read my birth chart? I was born March 15, 1990 at 3:30 PM\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Let me compute your natal chart! The stars have a story to tell...\",\n actions: [\"ASTROLOGY_READING\"],\n },\n },\n ],\n [\n { name: \"{{user1}}\", content: { text: \"What's my horoscope? I'm a Leo\" } },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'd love to do a full natal chart reading. Could you share your birth date, time, and location?\",\n actions: [\"ASTROLOGY_READING\"],\n },\n },\n ],\n ],\n};\n",
|
|
6
|
+
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\n\nexport const checkPaymentAction: Action = {\n name: \"CHECK_PAYMENT\",\n similes: [\"VERIFY_PAYMENT\", \"PAYMENT_STATUS\"],\n description: \"Check if payment has been received for the current reading session.\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<boolean> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) return false;\n const session = service.getSession(message.entityId, message.roomId);\n return session !== null && session.paymentStatus !== \"none\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions | Record<string, JsonValue | undefined>,\n _callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n return { success: false, text: \"Mysticism service not available.\" };\n }\n\n const session = service.getSession(message.entityId, message.roomId);\n if (!session) {\n return { success: false, text: \"No active session.\" };\n }\n\n return {\n success: true,\n text: `Payment status: ${session.paymentStatus}`,\n data: {\n paymentStatus: session.paymentStatus,\n amount: session.paymentAmount,\n txHash: session.paymentTxHash,\n readingType: session.type,\n },\n };\n },\n\n examples: [\n [\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Let me check if your payment has come through...\",\n actions: [\"CHECK_PAYMENT\"],\n },\n },\n ],\n ],\n};\n",
|
|
7
|
+
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\n\nconst ICHING_KEYWORDS: readonly string[] = [\n \"i ching\",\n \"i-ching\",\n \"iching\",\n \"hexagram\",\n \"book of changes\",\n \"oracle\",\n \"consult the i ching\",\n \"cast hexagram\",\n \"throw coins\",\n \"yarrow stalks\",\n \"cast the coins\",\n \"divination\",\n \"changing lines\",\n];\n\nfunction extractQuestion(text: string): string {\n const stripPatterns = [\n /(?:can you |could you |please |would you )?(?:consult |cast |throw |do )(?:the )?(?:i[- ]?ching|hexagram|oracle|coins|yarrow stalks?)?\\s*(?:about|regarding|for|on)?\\s*/i,\n /(?:i(?:'d| would) (?:like|love) (?:to )?)?(?:consult |cast |ask )(?:the )?(?:i[- ]?ching|oracle|hexagram)\\s*(?:about|regarding|for|on)?\\s*/i,\n /(?:what does the )?(?:i[- ]?ching|oracle|book of changes)\\s*(?:say|think|reveal|show)?\\s*(?:about|regarding|for|on)?\\s*/i,\n ];\n\n let cleaned = text;\n for (const pattern of stripPatterns) {\n cleaned = cleaned.replace(pattern, \"\").trim();\n }\n\n if (cleaned.length < 5) {\n return \"general guidance on the path forward\";\n }\n\n return cleaned;\n}\n\nexport const ichingReadingAction: Action = {\n name: \"ICHING_READING\",\n similes: [\"CAST_HEXAGRAM\", \"CONSULT_ICHING\", \"THROW_COINS\", \"ORACLE_READING\"],\n description:\n \"Perform an I Ching divination reading by casting a hexagram and interpreting changing lines.\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<boolean> => {\n const text = (message.content.text ?? \"\").toLowerCase();\n\n const hasIChingIntent = ICHING_KEYWORDS.some((kw) => text.includes(kw));\n if (!hasIChingIntent) return false;\n\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n logger.warn(\"ICHING_READING validation failed: MysticismService not found\");\n return false;\n }\n\n // Don't start a new reading if one is already active\n const entityId = message.entityId;\n const existingSession = service.getSession(entityId, message.roomId);\n if (existingSession) {\n logger.debug(\n { entityId, roomId: message.roomId, type: existingSession.type },\n \"ICHING_READING skipped: active session exists\"\n );\n return false;\n }\n\n return true;\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions | Record<string, JsonValue | undefined>,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n logger.error(\"ICHING_READING handler: MysticismService not available\");\n return { success: false, text: \"The mysticism service is not available.\" };\n }\n\n const entityId = message.entityId;\n const text = message.content.text ?? \"\";\n\n const crisis = service.detectCrisis(text);\n if (crisis.detected && crisis.severity === \"high\") {\n if (callback) {\n await callback({\n text:\n \"I sense you're carrying something very heavy right now. \" +\n \"Before we consult the oracle, I want you to know that there \" +\n \"are people who care and can help.\\n\\n\" +\n crisis.recommendedAction,\n });\n }\n return {\n success: true,\n text: \"Crisis detected — provided support resources instead of reading.\",\n };\n }\n\n const question = extractQuestion(text);\n\n try {\n const session = service.startIChingReading(entityId, message.roomId, question);\n\n const castingSummary = service.getIChingCastingSummary(entityId, message.roomId);\n\n logger.info(\n {\n entityId,\n roomId: message.roomId,\n hexagram: session.iching?.hexagram.number,\n changingLines: session.iching?.castResult.changingLines.length,\n question,\n },\n \"I Ching reading initiated\"\n );\n\n return {\n success: true,\n text: `Cast hexagram ${session.iching?.hexagram.number}: ${session.iching?.hexagram.englishName}`,\n data: {\n sessionId: session.id,\n hexagramNumber: session.iching?.hexagram.number,\n hexagramName: session.iching?.hexagram.englishName,\n changingLineCount: session.iching?.castResult.changingLines.length,\n castingSummary,\n question,\n },\n };\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : \"Unknown error casting hexagram\";\n logger.error({ error: errorMsg }, \"ICHING_READING handler failed\");\n return { success: false, text: errorMsg };\n }\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Can you consult the I Ching for me?\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'll cast the coins for you. Focus on your question as I throw them six times to build your hexagram...\",\n actions: [\"ICHING_READING\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"I'd like to cast a hexagram about a decision I'm facing\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"The I Ching is wonderful for moments of decision. Let me cast the coins and see what wisdom emerges...\",\n actions: [\"ICHING_READING\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"What does the Book of Changes say about my relationship?\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Let me consult the ancient oracle about your relationship. The coins are cast...\",\n actions: [\"ICHING_READING\"],\n },\n },\n ],\n ],\n};\n",
|
|
8
8
|
"import type { ReadingSession } from \"../types\";\n\nexport function getCurrentElement(session: ReadingSession): string {\n if (session.tarot) {\n const idx = session.tarot.revealedIndex;\n if (idx > 0 && idx <= session.tarot.drawnCards.length) {\n const card = session.tarot.drawnCards[idx - 1];\n const position = session.tarot.spread.positions[idx - 1];\n return `${card.card.name} in ${position.name}`;\n }\n if (idx === 0 && session.tarot.drawnCards.length > 0) {\n return \"spread introduction\";\n }\n return \"tarot synthesis\";\n }\n\n if (session.iching) {\n const revealed = session.iching.revealedLines;\n const changing = session.iching.castResult.changingLines;\n if (revealed === 0) {\n return `Hexagram ${session.iching.hexagram.number}: ${session.iching.hexagram.englishName}`;\n }\n if (revealed <= changing.length) {\n const sorted = [...changing].sort((a, b) => a - b);\n return `Line ${sorted[revealed - 1]} of ${session.iching.hexagram.englishName}`;\n }\n return \"I Ching synthesis\";\n }\n\n if (session.astrology) {\n const revealed = session.astrology.revealedPlanets;\n if (revealed.length > 0) {\n const lastPlanet = revealed[revealed.length - 1];\n return `${lastPlanet.charAt(0).toUpperCase() + lastPlanet.slice(1)} placement`;\n }\n return \"chart overview\";\n }\n\n return session.type;\n}\n",
|
|
9
|
-
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\nimport type { FeedbackEntry } from \"../types\";\nimport { getCurrentElement } from \"../utils/reading-helpers\";\n\nexport const readingFollowupAction: Action = {\n name: \"READING_FOLLOWUP\",\n similes: [\"CONTINUE_READING\", \"NEXT_CARD\", \"READING_RESPONSE\", \"PROCEED_READING\"],\n description:\n \"Continue an active reading by processing user feedback and revealing the next element.\",\n\n validate: async (runtime: any, message: any, state?: any, options?: any): Promise<boolean> => {\n const __avTextRaw = typeof message?.content?.text === \"string\" ? message.content.text : \"\";\n const __avText = __avTextRaw.toLowerCase();\n const __avKeywords = [\"reading\", \"followup\"];\n const __avKeywordOk =\n __avKeywords.length > 0 && __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));\n const __avRegex = /\\b(?:reading|followup)\\b/i;\n const __avRegexOk = __avRegex.test(__avText);\n const __avSource = String(message?.content?.source ?? message?.source ?? \"\");\n const __avExpectedSource = \"\";\n const __avSourceOk = __avExpectedSource\n ? __avSource === __avExpectedSource\n : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);\n const __avOptions = options && typeof options === \"object\" ? options : {};\n const __avInputOk =\n __avText.trim().length > 0 ||\n Object.keys(__avOptions as Record<string, unknown>).length > 0 ||\n Boolean(message?.content && typeof message.content === \"object\");\n\n if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n return false;\n }\n\n const __avLegacyValidate = async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<boolean> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) return false;\n\n const entityId = message.entityId;\n const session = service.getSession(entityId, message.roomId);\n if (!session) return false;\n\n return session.phase === \"casting\" || session.phase === \"interpretation\";\n };\n try {\n return Boolean(await (__avLegacyValidate as any)(runtime, message, state, options));\n } catch {\n return false;\n }\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions | Record<string, JsonValue | undefined>,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n return { success: false, text: \"The mysticism service is not available.\" };\n }\n\n const entityId = message.entityId;\n const text = message.content.text ?? \"\";\n\n const crisis = service.detectCrisis(text);\n if (crisis.detected && crisis.severity === \"high\") {\n service.endSession(entityId, message.roomId);\n\n if (callback) {\n await callback({\n text:\n \"I want to pause our reading for a moment. What you're expressing \" +\n \"concerns me, and I care about your wellbeing more than any reading.\\n\\n\" +\n crisis.recommendedAction,\n });\n }\n\n return {\n success: true,\n text: \"Crisis detected during reading — session ended, resources provided.\",\n };\n }\n\n const session = service.getSession(entityId, message.roomId);\n if (!session) {\n return { success: false, text: \"No active reading session found.\" };\n }\n\n const currentElement = getCurrentElement(session);\n const feedback: FeedbackEntry = {\n element: currentElement,\n userText: text,\n timestamp: Date.now(),\n };\n\n service.recordFeedback(entityId, message.roomId, feedback);\n\n const nextReveal = service.getNextReveal(entityId, message.roomId);\n\n if (nextReveal) {\n if (callback) {\n await callback({\n text: `**${nextReveal.element}**\\n\\n${nextReveal.prompt}`,\n });\n }\n\n logger.debug(\n { entityId, roomId: message.roomId, element: nextReveal.element },\n \"Reading followup: next reveal\"\n );\n\n return {\n success: true,\n text: `Revealed next element: ${nextReveal.element}`,\n };\n }\n\n return handleSynthesis(service, entityId, message.roomId, callback);\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"That really resonates with me. What's the next card?\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'm glad that speaks to you. Let me turn over the next card in your spread...\",\n actions: [\"READING_FOLLOWUP\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Interesting, please continue\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Moving to the next element of your reading...\",\n actions: [\"READING_FOLLOWUP\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"I don't think that applies to me. What's next?\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I appreciate your honesty — sometimes the meaning reveals itself later. Let me show you the next card...\",\n actions: [\"READING_FOLLOWUP\"],\n },\n },\n ],\n ],\n};\n\nexport const deepenReadingAction: Action = {\n name: \"DEEPEN_READING\",\n similes: [\"EXPLAIN_MORE\", \"GO_DEEPER\", \"ELABORATE_READING\", \"READING_DETAIL\"],\n description: \"Provide a deeper interpretation of a specific element in an active reading.\",\n\n validate: async (runtime: any, message: any, state?: any, options?: any): Promise<boolean> => {\n const __avTextRaw = typeof message?.content?.text === \"string\" ? message.content.text : \"\";\n const __avText = __avTextRaw.toLowerCase();\n const __avKeywords = [\"deepen\", \"reading\"];\n const __avKeywordOk =\n __avKeywords.length > 0 && __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));\n const __avRegex = /\\b(?:deepen|reading)\\b/i;\n const __avRegexOk = __avRegex.test(__avText);\n const __avSource = String(message?.content?.source ?? message?.source ?? \"\");\n const __avExpectedSource = \"\";\n const __avSourceOk = __avExpectedSource\n ? __avSource === __avExpectedSource\n : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);\n const __avOptions = options && typeof options === \"object\" ? options : {};\n const __avInputOk =\n __avText.trim().length > 0 ||\n Object.keys(__avOptions as Record<string, unknown>).length > 0 ||\n Boolean(message?.content && typeof message.content === \"object\");\n\n if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n return false;\n }\n\n const __avLegacyValidate = async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<boolean> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) return false;\n\n const entityId = message.entityId;\n const session = service.getSession(entityId, message.roomId);\n if (!session) return false;\n\n return session.phase === \"interpretation\" || session.phase === \"casting\";\n };\n try {\n return Boolean(await (__avLegacyValidate as any)(runtime, message, state, options));\n } catch {\n return false;\n }\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions | Record<string, JsonValue | undefined>,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n return { success: false, text: \"The mysticism service is not available.\" };\n }\n\n const entityId = message.entityId;\n const text = message.content.text ?? \"\";\n\n const session = service.getSession(entityId, message.roomId);\n if (!session) {\n return { success: false, text: \"No active reading session found.\" };\n }\n\n if (session.type === \"tarot\" && session.tarot) {\n // The most recently revealed card is at revealedIndex - 1\n const lastRevealedIndex = session.tarot.revealedIndex - 1;\n\n if (lastRevealedIndex >= 0) {\n const deepenPrompt = service.getDeepeningPrompt(\n entityId,\n message.roomId,\n lastRevealedIndex,\n text\n );\n\n if (deepenPrompt && callback) {\n const card = session.tarot.drawnCards[lastRevealedIndex];\n const cardName = card.reversed ? `${card.card.name} (Reversed)` : card.card.name;\n\n await callback({\n text: `Let me look more deeply at the **${cardName}**...`,\n });\n\n logger.debug(\n { entityId, cardIndex: lastRevealedIndex, card: card.card.name },\n \"Deepening tarot card\"\n );\n\n return {\n success: true,\n text: `Deepened interpretation of ${cardName}`,\n };\n }\n }\n }\n\n if (callback) {\n const nextReveal = service.getNextReveal(entityId, message.roomId);\n if (nextReveal) {\n await callback({\n text:\n \"Let me explore that further and connect it to the next element \" +\n `of your reading...\\n\\n**${nextReveal.element}**\\n\\n${nextReveal.prompt}`,\n });\n\n return {\n success: true,\n text: `Deepened via next reveal: ${nextReveal.element}`,\n };\n }\n\n await callback({\n text:\n \"We've explored all the elements of your reading. \" +\n \"Let me weave everything together into a final synthesis...\",\n });\n\n return handleSynthesis(service, entityId, message.roomId, callback);\n }\n\n return { success: true, text: \"Deepening handled.\" };\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Tell me more about that card\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Let me look more deeply at this card's symbolism and what it means in your specific situation...\",\n actions: [\"DEEPEN_READING\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Can you explain what that symbolism means?\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Of course — let me dive deeper into the imagery and symbolism here...\",\n actions: [\"DEEPEN_READING\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Go deeper on the moon placement\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Your Moon placement is rich with meaning. Let me elaborate on what this reveals about your emotional landscape...\",\n actions: [\"DEEPEN_READING\"],\n },\n },\n ],\n ],\n};\n\nasync function handleSynthesis(\n service: MysticismService,\n entityId: string,\n roomId: string,\n callback: HandlerCallback | undefined\n): Promise<ActionResult> {\n const synthesis = service.getSynthesis(entityId, roomId);\n\n if (synthesis && callback) {\n await callback({\n text: \"Now let me bring all the threads of your reading together...\",\n });\n }\n\n service.endSession(entityId, roomId);\n\n logger.info({ entityId, roomId }, \"Reading synthesis completed\");\n\n return {\n success: true,\n text: \"Reading complete — synthesis delivered and session ended.\",\n };\n}\n",
|
|
10
|
-
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\n\nexport const requestPaymentAction: Action = {\n name: \"REQUEST_PAYMENT\",\n similes: [\"CHARGE_USER\", \"ASK_FOR_PAYMENT\", \"SET_PRICE\"],\n description: \"Request payment from the user for a reading service. Specify the amount to charge.\",\n\n validate: async (
|
|
11
|
-
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\n\nconst TAROT_KEYWORDS: readonly string[] = [\n \"tarot\",\n \"card reading\",\n \"draw cards\",\n \"read my cards\",\n \"tarot spread\",\n \"celtic cross\",\n \"card pull\",\n \"three card\",\n \"single card\",\n \"past present future\",\n \"pull a card\",\n \"tarot deck\",\n \"shuffle the deck\",\n];\n\nconst SPREAD_PATTERNS: ReadonlyArray<{ pattern: RegExp; spreadId: string }> = [\n { pattern: /celtic\\s*cross/i, spreadId: \"celtic_cross\" },\n { pattern: /three\\s*card/i, spreadId: \"three_card\" },\n { pattern: /past\\s*present\\s*future/i, spreadId: \"three_card\" },\n { pattern: /single\\s*card/i, spreadId: \"single_card\" },\n { pattern: /one\\s*card/i, spreadId: \"single_card\" },\n { pattern: /horseshoe/i, spreadId: \"horseshoe\" },\n { pattern: /relationship/i, spreadId: \"relationship\" },\n];\n\nfunction detectSpread(text: string): string {\n for (const { pattern, spreadId } of SPREAD_PATTERNS) {\n if (pattern.test(text)) {\n return spreadId;\n }\n }\n return \"three_card\";\n}\n\nfunction extractQuestion(text: string): string {\n const stripPatterns = [\n /(?:can you |could you |please |would you )?(?:do |give me |pull |draw |read )(?:a |an |my |me )?(?:tarot |card )?(?:reading|spread|cards?|pull)?\\s*(?:about|regarding|for|on)?\\s*/i,\n /(?:i(?:'d| would) (?:like|love) (?:a |an )?)?(?:tarot |card )?(?:reading|spread|pull)\\s*(?:about|regarding|for|on)?\\s*/i,\n ];\n\n let cleaned = text;\n for (const pattern of stripPatterns) {\n cleaned = cleaned.replace(pattern, \"\").trim();\n }\n\n if (cleaned.length < 5) {\n return \"general guidance and insight\";\n }\n\n return cleaned;\n}\n\nexport const tarotReadingAction: Action = {\n name: \"TAROT_READING\",\n similes: [\"READ_TAROT\", \"DRAW_CARDS\", \"TAROT_SPREAD\", \"CARD_READING\"],\n description:\n \"Perform a tarot card reading, drawing cards into a spread and revealing each one iteratively.\",\n\n validate: async (
|
|
9
|
+
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\nimport type { FeedbackEntry } from \"../types\";\nimport { getCurrentElement } from \"../utils/reading-helpers\";\n\nexport const readingFollowupAction: Action = {\n name: \"READING_FOLLOWUP\",\n similes: [\"CONTINUE_READING\", \"NEXT_CARD\", \"READING_RESPONSE\", \"PROCEED_READING\"],\n description:\n \"Continue an active reading by processing user feedback and revealing the next element.\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<boolean> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) return false;\n\n const entityId = message.entityId;\n const session = service.getSession(entityId, message.roomId);\n if (!session) return false;\n\n return session.phase === \"casting\" || session.phase === \"interpretation\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions | Record<string, JsonValue | undefined>,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n return { success: false, text: \"The mysticism service is not available.\" };\n }\n\n const entityId = message.entityId;\n const text = message.content.text ?? \"\";\n\n const crisis = service.detectCrisis(text);\n if (crisis.detected && crisis.severity === \"high\") {\n service.endSession(entityId, message.roomId);\n\n if (callback) {\n await callback({\n text:\n \"I want to pause our reading for a moment. What you're expressing \" +\n \"concerns me, and I care about your wellbeing more than any reading.\\n\\n\" +\n crisis.recommendedAction,\n });\n }\n\n return {\n success: true,\n text: \"Crisis detected during reading — session ended, resources provided.\",\n };\n }\n\n const session = service.getSession(entityId, message.roomId);\n if (!session) {\n return { success: false, text: \"No active reading session found.\" };\n }\n\n const currentElement = getCurrentElement(session);\n const feedback: FeedbackEntry = {\n element: currentElement,\n userText: text,\n timestamp: Date.now(),\n };\n\n service.recordFeedback(entityId, message.roomId, feedback);\n\n const nextReveal = service.getNextReveal(entityId, message.roomId);\n\n if (nextReveal) {\n if (callback) {\n await callback({\n text: `**${nextReveal.element}**\\n\\n${nextReveal.prompt}`,\n });\n }\n\n logger.debug(\n { entityId, roomId: message.roomId, element: nextReveal.element },\n \"Reading followup: next reveal\"\n );\n\n return {\n success: true,\n text: `Revealed next element: ${nextReveal.element}`,\n };\n }\n\n return handleSynthesis(service, entityId, message.roomId, callback);\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"That really resonates with me. What's the next card?\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'm glad that speaks to you. Let me turn over the next card in your spread...\",\n actions: [\"READING_FOLLOWUP\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Interesting, please continue\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Moving to the next element of your reading...\",\n actions: [\"READING_FOLLOWUP\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"I don't think that applies to me. What's next?\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I appreciate your honesty — sometimes the meaning reveals itself later. Let me show you the next card...\",\n actions: [\"READING_FOLLOWUP\"],\n },\n },\n ],\n ],\n};\n\nexport const deepenReadingAction: Action = {\n name: \"DEEPEN_READING\",\n similes: [\"EXPLAIN_MORE\", \"GO_DEEPER\", \"ELABORATE_READING\", \"READING_DETAIL\"],\n description: \"Provide a deeper interpretation of a specific element in an active reading.\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<boolean> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) return false;\n\n const entityId = message.entityId;\n const session = service.getSession(entityId, message.roomId);\n if (!session) return false;\n\n return session.phase === \"interpretation\" || session.phase === \"casting\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions | Record<string, JsonValue | undefined>,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n return { success: false, text: \"The mysticism service is not available.\" };\n }\n\n const entityId = message.entityId;\n const text = message.content.text ?? \"\";\n\n const session = service.getSession(entityId, message.roomId);\n if (!session) {\n return { success: false, text: \"No active reading session found.\" };\n }\n\n if (session.type === \"tarot\" && session.tarot) {\n // The most recently revealed card is at revealedIndex - 1\n const lastRevealedIndex = session.tarot.revealedIndex - 1;\n\n if (lastRevealedIndex >= 0) {\n const deepenPrompt = service.getDeepeningPrompt(\n entityId,\n message.roomId,\n lastRevealedIndex,\n text\n );\n\n if (deepenPrompt && callback) {\n const card = session.tarot.drawnCards[lastRevealedIndex];\n const cardName = card.reversed ? `${card.card.name} (Reversed)` : card.card.name;\n\n await callback({\n text: `Let me look more deeply at the **${cardName}**...`,\n });\n\n logger.debug(\n { entityId, cardIndex: lastRevealedIndex, card: card.card.name },\n \"Deepening tarot card\"\n );\n\n return {\n success: true,\n text: `Deepened interpretation of ${cardName}`,\n };\n }\n }\n }\n\n if (callback) {\n const nextReveal = service.getNextReveal(entityId, message.roomId);\n if (nextReveal) {\n await callback({\n text:\n \"Let me explore that further and connect it to the next element \" +\n `of your reading...\\n\\n**${nextReveal.element}**\\n\\n${nextReveal.prompt}`,\n });\n\n return {\n success: true,\n text: `Deepened via next reveal: ${nextReveal.element}`,\n };\n }\n\n await callback({\n text:\n \"We've explored all the elements of your reading. \" +\n \"Let me weave everything together into a final synthesis...\",\n });\n\n return handleSynthesis(service, entityId, message.roomId, callback);\n }\n\n return { success: true, text: \"Deepening handled.\" };\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Tell me more about that card\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Let me look more deeply at this card's symbolism and what it means in your specific situation...\",\n actions: [\"DEEPEN_READING\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Can you explain what that symbolism means?\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Of course — let me dive deeper into the imagery and symbolism here...\",\n actions: [\"DEEPEN_READING\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Go deeper on the moon placement\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Your Moon placement is rich with meaning. Let me elaborate on what this reveals about your emotional landscape...\",\n actions: [\"DEEPEN_READING\"],\n },\n },\n ],\n ],\n};\n\nasync function handleSynthesis(\n service: MysticismService,\n entityId: string,\n roomId: string,\n callback: HandlerCallback | undefined\n): Promise<ActionResult> {\n const synthesis = service.getSynthesis(entityId, roomId);\n\n if (synthesis && callback) {\n await callback({\n text: \"Now let me bring all the threads of your reading together...\",\n });\n }\n\n service.endSession(entityId, roomId);\n\n logger.info({ entityId, roomId }, \"Reading synthesis completed\");\n\n return {\n success: true,\n text: \"Reading complete — synthesis delivered and session ended.\",\n };\n}\n",
|
|
10
|
+
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\n\nexport const requestPaymentAction: Action = {\n name: \"REQUEST_PAYMENT\",\n similes: [\"CHARGE_USER\", \"ASK_FOR_PAYMENT\", \"SET_PRICE\"],\n description: \"Request payment from the user for a reading service. Specify the amount to charge.\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<boolean> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) return false;\n const session = service.getSession(message.entityId, message.roomId);\n // Only valid if there's an active session that hasn't been paid yet\n return session !== null && session.paymentStatus === \"none\";\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions | Record<string, JsonValue | undefined>,\n _callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n return { success: false, text: \"Mysticism service not available.\" };\n }\n\n const session = service.getSession(message.entityId, message.roomId);\n if (!session) {\n return { success: false, text: \"No active reading session.\" };\n }\n\n // The LLM decides the amount. Extract it from the message or use a default.\n // The agent will have mentioned a price in its message to the user.\n // We parse the amount from the agent's own message content or from options.\n const text = message.content.text ?? \"\";\n const amountMatch = text.match(/\\$?([\\d.]+)/);\n const amount = amountMatch ? amountMatch[1] : \"1.00\";\n\n service.markPaymentRequested(message.entityId, message.roomId, amount);\n\n logger.info(\n { entityId: message.entityId, roomId: message.roomId, amount },\n \"Payment requested for reading\"\n );\n\n return {\n success: true,\n text: `Payment of $${amount} requested for ${session.type} reading.`,\n data: {\n sessionId: session.id,\n amount,\n readingType: session.type,\n paymentStatus: \"requested\",\n },\n };\n },\n\n examples: [\n [\n {\n name: \"{{agentName}}\",\n content: {\n text: \"For a full Celtic Cross reading, I'd ask $3.00.\",\n actions: [\"REQUEST_PAYMENT\"],\n },\n },\n ],\n ],\n};\n",
|
|
11
|
+
"import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n JsonValue,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\n\nconst TAROT_KEYWORDS: readonly string[] = [\n \"tarot\",\n \"card reading\",\n \"draw cards\",\n \"read my cards\",\n \"tarot spread\",\n \"celtic cross\",\n \"card pull\",\n \"three card\",\n \"single card\",\n \"past present future\",\n \"pull a card\",\n \"tarot deck\",\n \"shuffle the deck\",\n];\n\nconst SPREAD_PATTERNS: ReadonlyArray<{ pattern: RegExp; spreadId: string }> = [\n { pattern: /celtic\\s*cross/i, spreadId: \"celtic_cross\" },\n { pattern: /three\\s*card/i, spreadId: \"three_card\" },\n { pattern: /past\\s*present\\s*future/i, spreadId: \"three_card\" },\n { pattern: /single\\s*card/i, spreadId: \"single_card\" },\n { pattern: /one\\s*card/i, spreadId: \"single_card\" },\n { pattern: /horseshoe/i, spreadId: \"horseshoe\" },\n { pattern: /relationship/i, spreadId: \"relationship\" },\n];\n\nfunction detectSpread(text: string): string {\n for (const { pattern, spreadId } of SPREAD_PATTERNS) {\n if (pattern.test(text)) {\n return spreadId;\n }\n }\n return \"three_card\";\n}\n\nfunction extractQuestion(text: string): string {\n const stripPatterns = [\n /(?:can you |could you |please |would you )?(?:do |give me |pull |draw |read )(?:a |an |my |me )?(?:tarot |card )?(?:reading|spread|cards?|pull)?\\s*(?:about|regarding|for|on)?\\s*/i,\n /(?:i(?:'d| would) (?:like|love) (?:a |an )?)?(?:tarot |card )?(?:reading|spread|pull)\\s*(?:about|regarding|for|on)?\\s*/i,\n ];\n\n let cleaned = text;\n for (const pattern of stripPatterns) {\n cleaned = cleaned.replace(pattern, \"\").trim();\n }\n\n if (cleaned.length < 5) {\n return \"general guidance and insight\";\n }\n\n return cleaned;\n}\n\nexport const tarotReadingAction: Action = {\n name: \"TAROT_READING\",\n similes: [\"READ_TAROT\", \"DRAW_CARDS\", \"TAROT_SPREAD\", \"CARD_READING\"],\n description:\n \"Perform a tarot card reading, drawing cards into a spread and revealing each one iteratively.\",\n\n validate: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<boolean> => {\n const text = (message.content.text ?? \"\").toLowerCase();\n\n const hasTarotIntent = TAROT_KEYWORDS.some((kw) => text.includes(kw));\n if (!hasTarotIntent) return false;\n\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n logger.warn(\"TAROT_READING validation failed: MysticismService not found\");\n return false;\n }\n\n // Don't start a new reading if one is already active\n const entityId = message.entityId;\n const existingSession = service.getSession(entityId, message.roomId);\n if (existingSession) {\n logger.debug(\n { entityId, roomId: message.roomId, type: existingSession.type },\n \"TAROT_READING skipped: active session exists\"\n );\n return false;\n }\n\n return true;\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions | Record<string, JsonValue | undefined>,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n logger.error(\"TAROT_READING handler: MysticismService not available\");\n return { success: false, text: \"The mysticism service is not available.\" };\n }\n\n const entityId = message.entityId;\n const text = message.content.text ?? \"\";\n\n const crisis = service.detectCrisis(text);\n if (crisis.detected && crisis.severity === \"high\") {\n if (callback) {\n await callback({\n text:\n \"I can sense you're going through something very difficult right now. \" +\n \"Before we continue with any reading, I want you to know that there are \" +\n \"people who care and can help.\\n\\n\" +\n crisis.recommendedAction,\n });\n }\n return {\n success: true,\n text: \"Crisis detected — provided support resources instead of reading.\",\n };\n }\n\n const spreadId = detectSpread(text);\n const question = extractQuestion(text);\n\n try {\n const session = service.startTarotReading(entityId, message.roomId, spreadId, question);\n\n logger.info(\n { entityId, roomId: message.roomId, spread: spreadId, question },\n \"Tarot reading initiated\"\n );\n\n return {\n success: true,\n text: `Started ${spreadId} tarot reading for: ${question}`,\n data: {\n sessionId: session.id,\n spreadName: session.tarot?.spread.name,\n cardCount: session.tarot?.drawnCards.length,\n question,\n },\n };\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : \"Unknown error starting tarot reading\";\n logger.error({ error: errorMsg }, \"TAROT_READING handler failed\");\n return { success: false, text: errorMsg };\n }\n },\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Can you read my tarot cards?\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'd love to do a reading for you. Let me shuffle the deck... What question or area of life would you like to explore?\",\n actions: [\"TAROT_READING\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"I'd like a celtic cross spread about my career\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"A Celtic Cross — perfect for a deep dive into your career path. Let me lay out the cards for you...\",\n actions: [\"TAROT_READING\"],\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Pull a single card for my day\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Drawing one card to set the tone for your day... Let's see what the universe has in store.\",\n actions: [\"TAROT_READING\"],\n },\n },\n ],\n ],\n};\n",
|
|
12
12
|
"import aspectsData from \"./data/aspects.json\" with { type: \"json\" };\nimport signsData from \"./data/signs.json\" with { type: \"json\" };\n\nexport const SIGN_ORDER: readonly string[] = [\n \"aries\",\n \"taurus\",\n \"gemini\",\n \"cancer\",\n \"leo\",\n \"virgo\",\n \"libra\",\n \"scorpio\",\n \"sagittarius\",\n \"capricorn\",\n \"aquarius\",\n \"pisces\",\n];\n\nexport type ZodiacSign = (typeof SIGN_ORDER)[number];\nexport type Element = \"fire\" | \"earth\" | \"air\" | \"water\";\nexport type Modality = \"cardinal\" | \"fixed\" | \"mutable\";\n\nexport interface SignPosition {\n sign: string;\n degrees: number; // 0-29 within sign\n totalDegrees: number; // 0-359 on the ecliptic\n}\n\ninterface SignData {\n id: string;\n element: string;\n modality: string;\n rulingPlanet: string;\n degreesStart: number;\n degreesEnd: number;\n}\n\nconst signLookup: Map<string, SignData> = new Map();\nfor (const s of signsData as SignData[]) {\n signLookup.set(s.id, s);\n}\n\nexport function degreesToSign(totalDegrees: number): SignPosition {\n // Normalise to [0, 360)\n const deg = ((totalDegrees % 360) + 360) % 360;\n const signIndex = Math.floor(deg / 30);\n const withinSign = deg - signIndex * 30;\n return {\n sign: SIGN_ORDER[signIndex],\n degrees: withinSign,\n totalDegrees: deg,\n };\n}\n\nexport function getElement(sign: string): Element {\n const data = signLookup.get(sign);\n if (!data) throw new Error(`Unknown sign: ${sign}`);\n return data.element as Element;\n}\n\nexport function getModality(sign: string): Modality {\n const data = signLookup.get(sign);\n if (!data) throw new Error(`Unknown sign: ${sign}`);\n return data.modality as Modality;\n}\n\nexport function getRulingPlanet(sign: string): string {\n const data = signLookup.get(sign);\n if (!data) throw new Error(`Unknown sign: ${sign}`);\n return data.rulingPlanet;\n}\n\nexport function isAspect(\n degrees1: number,\n degrees2: number,\n aspectDegrees: number,\n orb: number\n): boolean {\n let diff = Math.abs(degrees1 - degrees2);\n if (diff > 180) diff = 360 - diff;\n return Math.abs(diff - aspectDegrees) <= orb;\n}\n\n/** Returns a value in [0, 180]. */\nexport function angularSeparation(deg1: number, deg2: number): number {\n let diff = Math.abs(deg1 - deg2);\n if (diff > 180) diff = 360 - diff;\n return diff;\n}\n\nexport function signDisplayName(signId: string): string {\n return signId.charAt(0).toUpperCase() + signId.slice(1);\n}\n\nexport interface AspectDefinition {\n id: string;\n name: string;\n symbol: string;\n degrees: number;\n orb: number;\n nature: \"harmonious\" | \"challenging\" | \"neutral\";\n keywords: string[];\n description: string;\n}\n\nexport function getAspectDefinitions(): AspectDefinition[] {\n return aspectsData as AspectDefinition[];\n}\n",
|
|
13
|
-
"/**\n * Pure-TypeScript natal chart calculator.\n *\n * Uses simplified Keplerian orbital mechanics referenced to the J2000.0 epoch\n * (January 1, 2000, 12:00 TT) to compute approximate ecliptic longitudes for\n * the Sun, Moon, and planets. Accuracy is typically within 1-2 degrees for\n * inner planets and the Sun, which is sufficient for zodiac sign determination.\n *\n * No external dependencies (no Swiss Ephemeris).\n */\n\nimport { degreesToSign, getAspectDefinitions, type SignPosition } from \"./zodiac.js\";\n\n// ---------------------------------------------------------------------------\n// Public interfaces\n// ---------------------------------------------------------------------------\n\nexport interface BirthData {\n year: number;\n month: number; // 1-12\n day: number; // 1-31\n hour: number; // 0-23\n minute: number; // 0-59\n latitude: number; // decimal degrees (north positive)\n longitude: number; // decimal degrees (east positive)\n timezone: number; // offset from UTC in hours (e.g. -5 for EST)\n}\n\nexport interface PlanetPosition {\n planet: string;\n sign: string;\n degrees: number; // 0-29 within sign\n totalDegrees: number; // 0-359 ecliptic longitude\n house: number; // 1-12\n retrograde: boolean;\n}\n\nexport interface ChartAspect {\n planet1: string;\n planet2: string;\n aspectName: string;\n aspectSymbol: string;\n exactDegrees: number; // the aspect's ideal separation\n actualDegrees: number; // actual angular separation\n orb: number; // how far from exact\n nature: \"harmonious\" | \"challenging\" | \"neutral\";\n}\n\nexport interface NatalChart {\n sun: PlanetPosition;\n moon: PlanetPosition;\n mercury: PlanetPosition;\n venus: PlanetPosition;\n mars: PlanetPosition;\n jupiter: PlanetPosition;\n saturn: PlanetPosition;\n uranus: PlanetPosition;\n neptune: PlanetPosition;\n pluto: PlanetPosition;\n ascendant: SignPosition;\n midheaven: SignPosition;\n aspects: ChartAspect[];\n houseCusps: number[]; // 12 house cusp longitudes\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\nconst J2000 = 2451545.0; // Julian Day of J2000.0 epoch\n\n// ---------------------------------------------------------------------------\n// Orbital elements at J2000.0 and their rates (per Julian century)\n// Source: Standish (1992) / Meeus \"Astronomical Algorithms\"\n//\n// Each entry: [L0, L1, a, e0, e1, I0, I1, W0, W1, w0, w1]\n// L = mean longitude (deg), a = semi-major axis (AU),\n// e = eccentricity, I = inclination (deg),\n// W = longitude of ascending node (deg), w = argument of perihelion (deg)\n// *0 = value at J2000.0, *1 = rate per Julian century\n// ---------------------------------------------------------------------------\n\ninterface OrbitalElements {\n /** Mean longitude at J2000.0 (degrees) */\n L0: number;\n /** Mean longitude rate (degrees per Julian century) */\n L1: number;\n /** Semi-major axis (AU) */\n a: number;\n /** Eccentricity at J2000.0 */\n e0: number;\n /** Eccentricity rate per century */\n e1: number;\n /** Inclination at J2000.0 (degrees) */\n I0: number;\n /** Inclination rate per century */\n I1: number;\n /** Longitude of ascending node at J2000.0 (degrees) */\n W0: number;\n /** Longitude of ascending node rate per century */\n W1: number;\n /** Longitude of perihelion at J2000.0 (degrees) */\n w0: number;\n /** Longitude of perihelion rate per century */\n w1: number;\n}\n\n/**\n * Mean orbital elements for planets (heliocentric ecliptic, J2000.0 frame).\n * Values from Standish (1992) and Meeus.\n */\nconst ORBITAL_ELEMENTS: Record<string, OrbitalElements> = {\n mercury: {\n L0: 252.2503235,\n L1: 149472.67411175,\n a: 0.38709927,\n e0: 0.20563593,\n e1: 0.00001906,\n I0: 7.00497902,\n I1: -0.00594749,\n W0: 48.33076593,\n W1: -0.12534081,\n w0: 77.45779628,\n w1: 0.16047689,\n },\n venus: {\n L0: 181.9790995,\n L1: 58517.81538729,\n a: 0.72333566,\n e0: 0.00677672,\n e1: -0.00004107,\n I0: 3.39467605,\n I1: -0.0007889,\n W0: 76.67984255,\n W1: -0.27769418,\n w0: 131.60246718,\n w1: 0.00268329,\n },\n earth: {\n L0: 100.46457166,\n L1: 35999.37244981,\n a: 1.00000261,\n e0: 0.01671123,\n e1: -0.00004392,\n I0: 0.00001531,\n I1: -0.01294668,\n W0: 0.0,\n W1: 0.0,\n w0: 102.93768193,\n w1: 0.32327364,\n },\n mars: {\n L0: 355.44656299,\n L1: 19140.30268499,\n a: 1.52371034,\n e0: 0.0933941,\n e1: 0.00007882,\n I0: 1.84969142,\n I1: -0.00813131,\n W0: 49.55953891,\n W1: -0.29257343,\n w0: 336.05637041,\n w1: 0.44441088,\n },\n jupiter: {\n L0: 34.39644051,\n L1: 3034.74612775,\n a: 5.202887,\n e0: 0.04838624,\n e1: -0.00013253,\n I0: 1.30439695,\n I1: -0.00183714,\n W0: 100.47390909,\n W1: 0.20469106,\n w0: 14.72847983,\n w1: 0.21252668,\n },\n saturn: {\n L0: 49.95424423,\n L1: 1222.49362201,\n a: 9.53667594,\n e0: 0.05386179,\n e1: -0.00050991,\n I0: 2.48599187,\n I1: 0.00193609,\n W0: 113.66242448,\n W1: -0.28867794,\n w0: 92.59887831,\n w1: -0.41897216,\n },\n uranus: {\n L0: 313.23810451,\n L1: 428.48202785,\n a: 19.18916464,\n e0: 0.04725744,\n e1: -0.00004397,\n I0: 0.77263783,\n I1: -0.00242939,\n W0: 74.01692503,\n W1: 0.04240589,\n w0: 170.9542763,\n w1: 0.40805281,\n },\n neptune: {\n L0: 304.87997031,\n L1: 218.45945325,\n a: 30.06992276,\n e0: 0.00859048,\n e1: 0.00005105,\n I0: 1.77004347,\n I1: 0.00035372,\n W0: 131.78422574,\n W1: -0.0129963,\n w0: 44.96476227,\n w1: -0.32241464,\n },\n pluto: {\n L0: 238.92903833,\n L1: 145.20780515,\n a: 39.48211675,\n e0: 0.2488273,\n e1: 0.0000517,\n I0: 17.14001206,\n I1: 0.00004818,\n W0: 110.30393684,\n W1: -0.01183482,\n w0: 224.06891629,\n w1: -0.04062942,\n },\n};\n\n// ---------------------------------------------------------------------------\n// Julian Day calculation\n// ---------------------------------------------------------------------------\n\n/**\n * Convert a calendar date + time to Julian Day Number.\n * Handles both Julian and Gregorian calendars.\n */\nexport function toJulianDay(\n year: number,\n month: number,\n day: number,\n hour: number = 0,\n minute: number = 0\n): number {\n let y = year;\n let m = month;\n if (m <= 2) {\n y -= 1;\n m += 12;\n }\n const A = Math.floor(y / 100);\n const B = 2 - A + Math.floor(A / 4);\n const dayFraction = (hour + minute / 60) / 24;\n return (\n Math.floor(365.25 * (y + 4716)) + Math.floor(30.6001 * (m + 1)) + day + dayFraction + B - 1524.5\n );\n}\n\n/**\n * Julian centuries since J2000.0.\n */\nfunction julianCenturies(jd: number): number {\n return (jd - J2000) / 36525;\n}\n\n// ---------------------------------------------------------------------------\n// Normalise angle to [0, 360)\n// ---------------------------------------------------------------------------\n\nfunction normDeg(deg: number): number {\n return ((deg % 360) + 360) % 360;\n}\n\n// ---------------------------------------------------------------------------\n// Kepler's equation solver (Newton-Raphson)\n// ---------------------------------------------------------------------------\n\n/**\n * Solve Kepler's equation M = E - e*sin(E) for E (eccentric anomaly).\n * M and E in radians.\n */\nfunction solveKepler(M: number, e: number): number {\n let E = M; // initial guess\n for (let i = 0; i < 50; i++) {\n const dE = (E - e * Math.sin(E) - M) / (1 - e * Math.cos(E));\n E -= dE;\n if (Math.abs(dE) < 1e-12) break;\n }\n return E;\n}\n\n// ---------------------------------------------------------------------------\n// Heliocentric ecliptic longitude from orbital elements\n// ---------------------------------------------------------------------------\n\n/**\n * Compute heliocentric ecliptic longitude for a planet at a given Julian Day.\n */\nfunction heliocentricLongitude(planetId: string, jd: number): number {\n const el = ORBITAL_ELEMENTS[planetId];\n if (!el) throw new Error(`No orbital elements for: ${planetId}`);\n\n const T = julianCenturies(jd);\n\n // Compute current elements\n const L = normDeg(el.L0 + el.L1 * T);\n const e = el.e0 + el.e1 * T;\n const w = normDeg(el.w0 + el.w1 * T);\n const W = normDeg(el.W0 + el.W1 * T);\n const I = el.I0 + el.I1 * T;\n\n // Mean anomaly\n const M = normDeg(L - w);\n const Mrad = M * DEG2RAD;\n\n // Solve Kepler's equation for eccentric anomaly\n const E = solveKepler(Mrad, e);\n\n // True anomaly\n const sinV = (Math.sqrt(1 - e * e) * Math.sin(E)) / (1 - e * Math.cos(E));\n const cosV = (Math.cos(E) - e) / (1 - e * Math.cos(E));\n const v = Math.atan2(sinV, cosV) * RAD2DEG;\n\n // Heliocentric longitude in the orbital plane\n const lHelio = normDeg(v + w - W);\n\n // Convert from orbital plane to ecliptic\n // For small inclinations, the correction is minor\n const Irad = I * DEG2RAD;\n const lHelioRad = lHelio * DEG2RAD;\n\n const eclLon = normDeg(\n Math.atan2(Math.sin(lHelioRad) * Math.cos(Irad), Math.cos(lHelioRad)) * RAD2DEG + W\n );\n\n return eclLon;\n}\n\n// ---------------------------------------------------------------------------\n// Geocentric ecliptic longitude\n// ---------------------------------------------------------------------------\n\n/**\n * Convert heliocentric position to geocentric (as seen from Earth).\n * Uses simplified geometric transformation.\n */\nfunction geocentricLongitude(planetId: string, jd: number): number {\n if (planetId === \"earth\") {\n throw new Error(\"Cannot compute geocentric longitude of Earth\");\n }\n\n const T = julianCenturies(jd);\n\n // Earth's heliocentric position\n const earthEl = ORBITAL_ELEMENTS.earth;\n const earthL = normDeg(earthEl.L0 + earthEl.L1 * T);\n const earthE = earthEl.e0 + earthEl.e1 * T;\n const earthW = normDeg(earthEl.w0 + earthEl.w1 * T);\n const earthM = normDeg(earthL - earthW) * DEG2RAD;\n const earthEcc = solveKepler(earthM, earthE);\n const earthV =\n Math.atan2(Math.sqrt(1 - earthE * earthE) * Math.sin(earthEcc), Math.cos(earthEcc) - earthE) *\n RAD2DEG;\n const earthHelioLon = normDeg(earthV + earthW);\n const earthR = earthEl.a * (1 - earthE * Math.cos(earthEcc));\n\n // Planet's heliocentric position\n const pEl = ORBITAL_ELEMENTS[planetId];\n const pL = normDeg(pEl.L0 + pEl.L1 * T);\n const pE = pEl.e0 + pEl.e1 * T;\n const pW = normDeg(pEl.w0 + pEl.w1 * T);\n const pM = normDeg(pL - pW) * DEG2RAD;\n const pEcc = solveKepler(pM, pE);\n const pV = Math.atan2(Math.sqrt(1 - pE * pE) * Math.sin(pEcc), Math.cos(pEcc) - pE) * RAD2DEG;\n const pHelioLon = normDeg(pV + pW);\n const pR = pEl.a * (1 - pE * Math.cos(pEcc));\n\n // Convert to geocentric using simple 2D projection (ecliptic plane)\n const pHelioRad = pHelioLon * DEG2RAD;\n const earthHelioRad = earthHelioLon * DEG2RAD;\n\n const x = pR * Math.cos(pHelioRad) - earthR * Math.cos(earthHelioRad);\n const y = pR * Math.sin(pHelioRad) - earthR * Math.sin(earthHelioRad);\n\n return normDeg(Math.atan2(y, x) * RAD2DEG);\n}\n\n// ---------------------------------------------------------------------------\n// Sun longitude (geocentric = Earth heliocentric + 180)\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the Sun's geocentric ecliptic longitude for a given Julian Day.\n * The Sun's geocentric longitude is Earth's heliocentric longitude + 180 degrees.\n */\nfunction sunLongitude(jd: number): number {\n const T = julianCenturies(jd);\n\n // Sun's mean longitude (geometric mean longitude referred to the mean equinox)\n const L0 = normDeg(280.46646 + 36000.76983 * T + 0.0003032 * T * T);\n\n // Sun's mean anomaly\n const M = normDeg(357.52911 + 35999.05029 * T - 0.0001537 * T * T);\n const Mrad = M * DEG2RAD;\n\n // Equation of center\n const C =\n (1.914602 - 0.004817 * T - 0.000014 * T * T) * Math.sin(Mrad) +\n (0.019993 - 0.000101 * T) * Math.sin(2 * Mrad) +\n 0.000289 * Math.sin(3 * Mrad);\n\n // Sun's true longitude\n const sunTrueLon = normDeg(L0 + C);\n\n // Apparent longitude (correct for nutation and aberration)\n const omega = 125.04 - 1934.136 * T;\n const apparent = sunTrueLon - 0.00569 - 0.00478 * Math.sin(omega * DEG2RAD);\n\n return normDeg(apparent);\n}\n\n// ---------------------------------------------------------------------------\n// Moon longitude (simplified)\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the Moon's geocentric ecliptic longitude.\n * Uses the principal terms of the lunar theory (Meeus Chapter 47).\n */\nfunction moonLongitude(jd: number): number {\n const T = julianCenturies(jd);\n\n // Moon's mean longitude (mean equinox of date)\n const Lp = normDeg(\n 218.3164477 +\n 481267.88123421 * T -\n 0.0015786 * T * T +\n (T * T * T) / 538841 -\n (T * T * T * T) / 65194000\n );\n\n // Moon's mean elongation\n const D = normDeg(\n 297.8501921 +\n 445267.1114034 * T -\n 0.0018819 * T * T +\n (T * T * T) / 545868 -\n (T * T * T * T) / 113065000\n );\n\n // Sun's mean anomaly\n const M = normDeg(357.5291092 + 35999.0502909 * T - 0.0001536 * T * T + (T * T * T) / 24490000);\n\n // Moon's mean anomaly\n const Mp = normDeg(\n 134.9633964 +\n 477198.8675055 * T +\n 0.0087414 * T * T +\n (T * T * T) / 69699 -\n (T * T * T * T) / 14712000\n );\n\n // Moon's argument of latitude\n const F = normDeg(\n 93.272095 +\n 483202.0175233 * T -\n 0.0036539 * T * T -\n (T * T * T) / 3526000 +\n (T * T * T * T) / 863310000\n );\n\n const Drad = D * DEG2RAD;\n const Mrad = M * DEG2RAD;\n const Mprad = Mp * DEG2RAD;\n const Frad = F * DEG2RAD;\n\n // Principal terms for longitude (simplified from Meeus Table 47.A)\n let sumL = 0;\n sumL += 6288774 * Math.sin(Mprad);\n sumL += 1274027 * Math.sin(2 * Drad - Mprad);\n sumL += 658314 * Math.sin(2 * Drad);\n sumL += 213618 * Math.sin(2 * Mprad);\n sumL += -185116 * Math.sin(Mrad);\n sumL += -114332 * Math.sin(2 * Frad);\n sumL += 58793 * Math.sin(2 * Drad - 2 * Mprad);\n sumL += 57066 * Math.sin(2 * Drad - Mrad - Mprad);\n sumL += 53322 * Math.sin(2 * Drad + Mprad);\n sumL += 45758 * Math.sin(2 * Drad - Mrad);\n sumL += -40923 * Math.sin(Mrad - Mprad);\n sumL += -34720 * Math.sin(Drad);\n sumL += -30383 * Math.sin(Mrad + Mprad);\n sumL += 15327 * Math.sin(2 * Drad - 2 * Frad);\n sumL += -12528 * Math.sin(Mprad + 2 * Frad);\n sumL += 10980 * Math.sin(Mprad - 2 * Frad);\n sumL += 10675 * Math.sin(4 * Drad - Mprad);\n sumL += 10034 * Math.sin(3 * Mprad);\n sumL += 8548 * Math.sin(4 * Drad - 2 * Mprad);\n sumL += -7888 * Math.sin(2 * Drad + Mrad - Mprad);\n sumL += -6766 * Math.sin(2 * Drad + Mrad);\n sumL += -5163 * Math.sin(Drad - Mprad);\n sumL += 4987 * Math.sin(Drad + Mrad);\n sumL += 4036 * Math.sin(2 * Drad - Mrad + Mprad);\n\n // Convert from 0.000001 degrees to degrees\n const moonLon = normDeg(Lp + sumL / 1000000);\n\n return moonLon;\n}\n\n// ---------------------------------------------------------------------------\n// Retrograde detection\n// ---------------------------------------------------------------------------\n\n/**\n * Determine if a planet appears retrograde by comparing its longitude\n * one day before and after the given Julian Day.\n */\nfunction isRetrograde(planetId: string, jd: number): boolean {\n if (planetId === \"sun\" || planetId === \"moon\") return false;\n\n const lonBefore = geocentricLongitude(planetId, jd - 1);\n const lonAfter = geocentricLongitude(planetId, jd + 1);\n\n // Handle wrapping around 0/360 degrees\n let diff = lonAfter - lonBefore;\n if (diff > 180) diff -= 360;\n if (diff < -180) diff += 360;\n\n return diff < 0;\n}\n\n// ---------------------------------------------------------------------------\n// Obliquity of the ecliptic\n// ---------------------------------------------------------------------------\n\nfunction obliquity(jd: number): number {\n const T = julianCenturies(jd);\n // Mean obliquity (Laskar formula)\n return 23.4392911 - 0.0130042 * T - 1.64e-7 * T * T + 5.036e-7 * T * T * T;\n}\n\n// ---------------------------------------------------------------------------\n// Ascendant & Midheaven (MC) calculation\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the Local Sidereal Time in degrees for a given Julian Day and\n * geographic longitude.\n */\nfunction localSiderealTime(jd: number, lonDeg: number): number {\n const T = julianCenturies(jd);\n // Greenwich Mean Sidereal Time in degrees\n const gmst = normDeg(\n 280.46061837 + 360.98564736629 * (jd - J2000) + 0.000387933 * T * T - (T * T * T) / 38710000\n );\n // Convert to local\n return normDeg(gmst + lonDeg);\n}\n\n/**\n * Calculate the Ascendant (rising sign) from LST, latitude, and obliquity.\n */\nfunction computeAscendant(lstDeg: number, latDeg: number, oblDeg: number): number {\n const lstRad = lstDeg * DEG2RAD;\n const latRad = latDeg * DEG2RAD;\n const oblRad = oblDeg * DEG2RAD;\n\n const y = -Math.cos(lstRad);\n const x = Math.sin(oblRad) * Math.tan(latRad) + Math.cos(oblRad) * Math.sin(lstRad);\n\n const asc = Math.atan2(y, x) * RAD2DEG;\n return normDeg(asc);\n}\n\n/**\n * Calculate the Midheaven (Medium Coeli) from LST and obliquity.\n */\nfunction computeMidheaven(lstDeg: number, oblDeg: number): number {\n const lstRad = lstDeg * DEG2RAD;\n const oblRad = oblDeg * DEG2RAD;\n\n const mc = Math.atan2(Math.sin(lstRad), Math.cos(lstRad) * Math.cos(oblRad)) * RAD2DEG;\n return normDeg(mc);\n}\n\n// ---------------------------------------------------------------------------\n// House cusps (Placidus simplified / Equal house fallback)\n// ---------------------------------------------------------------------------\n\n/**\n * Calculate equal house cusps from the Ascendant.\n * Each house spans exactly 30 degrees starting from the Ascendant.\n */\nfunction equalHouseCusps(ascDeg: number): number[] {\n const cusps: number[] = [];\n for (let i = 0; i < 12; i++) {\n cusps.push(normDeg(ascDeg + i * 30));\n }\n return cusps;\n}\n\n/**\n * Determine which house a planet falls in given house cusps.\n * Returns 1-12.\n */\nfunction houseForLongitude(longitude: number, cusps: number[]): number {\n for (let i = 0; i < 12; i++) {\n const cusp = cusps[i];\n const nextCusp = cusps[(i + 1) % 12];\n\n if (nextCusp > cusp) {\n // Normal case: cusp doesn't wrap around 360\n if (longitude >= cusp && longitude < nextCusp) {\n return i + 1;\n }\n } else {\n // Wraps around 0 degrees\n if (longitude >= cusp || longitude < nextCusp) {\n return i + 1;\n }\n }\n }\n return 1; // fallback\n}\n\n// ---------------------------------------------------------------------------\n// Sun sign from date (calendar-based, exact traditional boundaries)\n// ---------------------------------------------------------------------------\n\n/** Traditional Sun sign date boundaries (tropical zodiac). */\nconst SUN_SIGN_DATES: Array<{ sign: string; startMonth: number; startDay: number }> = [\n { sign: \"capricorn\", startMonth: 1, startDay: 1 }, // Jan 1 (continued from Dec 22)\n { sign: \"aquarius\", startMonth: 1, startDay: 20 },\n { sign: \"pisces\", startMonth: 2, startDay: 19 },\n { sign: \"aries\", startMonth: 3, startDay: 21 },\n { sign: \"taurus\", startMonth: 4, startDay: 20 },\n { sign: \"gemini\", startMonth: 5, startDay: 21 },\n { sign: \"cancer\", startMonth: 6, startDay: 21 },\n { sign: \"leo\", startMonth: 7, startDay: 23 },\n { sign: \"virgo\", startMonth: 8, startDay: 23 },\n { sign: \"libra\", startMonth: 9, startDay: 23 },\n { sign: \"scorpio\", startMonth: 10, startDay: 23 },\n { sign: \"sagittarius\", startMonth: 11, startDay: 22 },\n { sign: \"capricorn\", startMonth: 12, startDay: 22 },\n];\n\n/**\n * Determine the Sun sign from month and day using traditional date boundaries.\n * This is a quick lookup that doesn't require astronomical calculation.\n */\nexport function calculateSunSign(month: number, day: number): string {\n // Walk the boundaries in reverse to find the active sign\n for (let i = SUN_SIGN_DATES.length - 1; i >= 0; i--) {\n const boundary = SUN_SIGN_DATES[i];\n if (\n month > boundary.startMonth ||\n (month === boundary.startMonth && day >= boundary.startDay)\n ) {\n return boundary.sign;\n }\n }\n // Should never reach here, but default to Capricorn (Jan 1-19)\n return \"capricorn\";\n}\n\n// ---------------------------------------------------------------------------\n// Aspect calculation\n// ---------------------------------------------------------------------------\n\n/**\n * Calculate all aspects between planet positions.\n */\nexport function calculateAspects(positions: PlanetPosition[]): ChartAspect[] {\n const aspects: ChartAspect[] = [];\n const definitions = getAspectDefinitions();\n\n for (let i = 0; i < positions.length; i++) {\n for (let j = i + 1; j < positions.length; j++) {\n const p1 = positions[i];\n const p2 = positions[j];\n\n let separation = Math.abs(p1.totalDegrees - p2.totalDegrees);\n if (separation > 180) separation = 360 - separation;\n\n for (const def of definitions) {\n const orbDistance = Math.abs(separation - def.degrees);\n if (orbDistance <= def.orb) {\n aspects.push({\n planet1: p1.planet,\n planet2: p2.planet,\n aspectName: def.name,\n aspectSymbol: def.symbol,\n exactDegrees: def.degrees,\n actualDegrees: separation,\n orb: Math.round(orbDistance * 100) / 100,\n nature: def.nature,\n });\n }\n }\n }\n }\n\n // Sort by tightest orb first\n aspects.sort((a, b) => a.orb - b.orb);\n return aspects;\n}\n\n// ---------------------------------------------------------------------------\n// Main chart calculation\n// ---------------------------------------------------------------------------\n\n/**\n * Build a PlanetPosition from a computed ecliptic longitude.\n */\nfunction buildPosition(\n planetName: string,\n longitude: number,\n houseCusps: number[],\n retrograde: boolean\n): PlanetPosition {\n const signPos = degreesToSign(longitude);\n return {\n planet: planetName,\n sign: signPos.sign,\n degrees: Math.round(signPos.degrees * 100) / 100,\n totalDegrees: Math.round(signPos.totalDegrees * 100) / 100,\n house: houseForLongitude(longitude, houseCusps),\n retrograde,\n };\n}\n\n/**\n * Calculate a complete natal chart from birth data.\n *\n * This uses simplified Keplerian orbital mechanics for planetary positions\n * and standard formulas for the Ascendant, Midheaven, and house cusps.\n * Accuracy is typically within 1-2 degrees for inner planets and the Sun,\n * which is sufficient for sign determination in most cases.\n */\nexport function calculateNatalChart(birthData: BirthData): NatalChart {\n // Convert birth time to UT\n const utHour = birthData.hour - birthData.timezone;\n const utMinute = birthData.minute;\n\n // Calculate Julian Day\n const jd = toJulianDay(birthData.year, birthData.month, birthData.day, utHour, utMinute);\n\n // Obliquity of the ecliptic\n const obl = obliquity(jd);\n\n // Local Sidereal Time\n const lst = localSiderealTime(jd, birthData.longitude);\n\n // Ascendant and Midheaven\n const ascDeg = computeAscendant(lst, birthData.latitude, obl);\n const mcDeg = computeMidheaven(lst, obl);\n\n // House cusps (equal house system)\n const cusps = equalHouseCusps(ascDeg);\n\n // Compute planetary positions\n const sunLon = sunLongitude(jd);\n const moonLon = moonLongitude(jd);\n const mercuryLon = geocentricLongitude(\"mercury\", jd);\n const venusLon = geocentricLongitude(\"venus\", jd);\n const marsLon = geocentricLongitude(\"mars\", jd);\n const jupiterLon = geocentricLongitude(\"jupiter\", jd);\n const saturnLon = geocentricLongitude(\"saturn\", jd);\n const uranusLon = geocentricLongitude(\"uranus\", jd);\n const neptuneLon = geocentricLongitude(\"neptune\", jd);\n const plutoLon = geocentricLongitude(\"pluto\", jd);\n\n // Build planet positions\n const sun = buildPosition(\"sun\", sunLon, cusps, false);\n const moon = buildPosition(\"moon\", moonLon, cusps, false);\n const mercury = buildPosition(\"mercury\", mercuryLon, cusps, isRetrograde(\"mercury\", jd));\n const venus = buildPosition(\"venus\", venusLon, cusps, isRetrograde(\"venus\", jd));\n const mars = buildPosition(\"mars\", marsLon, cusps, isRetrograde(\"mars\", jd));\n const jupiter = buildPosition(\"jupiter\", jupiterLon, cusps, isRetrograde(\"jupiter\", jd));\n const saturn = buildPosition(\"saturn\", saturnLon, cusps, isRetrograde(\"saturn\", jd));\n const uranus = buildPosition(\"uranus\", uranusLon, cusps, isRetrograde(\"uranus\", jd));\n const neptune = buildPosition(\"neptune\", neptuneLon, cusps, isRetrograde(\"neptune\", jd));\n const pluto = buildPosition(\"pluto\", plutoLon, cusps, isRetrograde(\"pluto\", jd));\n\n // Ascendant and Midheaven as SignPositions\n const ascendant = degreesToSign(ascDeg);\n const midheaven = degreesToSign(mcDeg);\n\n // Calculate aspects between all planets\n const allPositions = [sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto];\n const aspects = calculateAspects(allPositions);\n\n return {\n sun,\n moon,\n mercury,\n venus,\n mars,\n jupiter,\n saturn,\n uranus,\n neptune,\n pluto,\n ascendant,\n midheaven,\n aspects,\n houseCusps: cusps,\n };\n}\n",
|
|
13
|
+
"/**\n * Pure-TypeScript natal chart calculator.\n *\n * Uses simplified Keplerian orbital mechanics referenced to the J2000.0 epoch\n * (January 1, 2000, 12:00 TT) to compute approximate ecliptic longitudes for\n * the Sun, Moon, and planets. Accuracy is typically within 1-2 degrees for\n * inner planets and the Sun, which is sufficient for zodiac sign determination.\n *\n * No external dependencies (no Swiss Ephemeris).\n */\n\nimport { degreesToSign, getAspectDefinitions, type SignPosition } from \"./zodiac.js\";\n\n// ---------------------------------------------------------------------------\n// Public interfaces\n// ---------------------------------------------------------------------------\n\nexport interface BirthData {\n year: number;\n month: number; // 1-12\n day: number; // 1-31\n hour: number; // 0-23\n minute: number; // 0-59\n latitude: number; // decimal degrees (north positive)\n longitude: number; // decimal degrees (east positive)\n timezone: number; // offset from UTC in hours (e.g. -5 for EST)\n}\n\nexport interface PlanetPosition {\n planet: string;\n sign: string;\n degrees: number; // 0-29 within sign\n totalDegrees: number; // 0-359 ecliptic longitude\n house: number; // 1-12\n retrograde: boolean;\n}\n\nexport interface ChartAspect {\n planet1: string;\n planet2: string;\n aspectName: string;\n aspectSymbol: string;\n exactDegrees: number; // the aspect's ideal separation\n actualDegrees: number; // actual angular separation\n orb: number; // how far from exact\n nature: \"harmonious\" | \"challenging\" | \"neutral\";\n}\n\nexport interface NatalChart {\n sun: PlanetPosition;\n moon: PlanetPosition;\n mercury: PlanetPosition;\n venus: PlanetPosition;\n mars: PlanetPosition;\n jupiter: PlanetPosition;\n saturn: PlanetPosition;\n uranus: PlanetPosition;\n neptune: PlanetPosition;\n pluto: PlanetPosition;\n ascendant: SignPosition;\n midheaven: SignPosition;\n aspects: ChartAspect[];\n houseCusps: number[]; // 12 house cusp longitudes\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\nconst J2000 = 2451545.0; // Julian Day of J2000.0 epoch\n\n// ---------------------------------------------------------------------------\n// Orbital elements at J2000.0 and their rates (per Julian century)\n// Source: Standish (1992) / Meeus \"Astronomical Algorithms\"\n//\n// Each entry: [L0, L1, a, e0, e1, I0, I1, W0, W1, w0, w1]\n// L = mean longitude (deg), a = semi-major axis (AU),\n// e = eccentricity, I = inclination (deg),\n// W = longitude of ascending node (deg), w = argument of perihelion (deg)\n// *0 = value at J2000.0, *1 = rate per Julian century\n// ---------------------------------------------------------------------------\n\ninterface OrbitalElements {\n /** Mean longitude at J2000.0 (degrees) */\n L0: number;\n /** Mean longitude rate (degrees per Julian century) */\n L1: number;\n /** Semi-major axis (AU) */\n a: number;\n /** Eccentricity at J2000.0 */\n e0: number;\n /** Eccentricity rate per century */\n e1: number;\n /** Inclination at J2000.0 (degrees) */\n I0: number;\n /** Inclination rate per century */\n I1: number;\n /** Longitude of ascending node at J2000.0 (degrees) */\n W0: number;\n /** Longitude of ascending node rate per century */\n W1: number;\n /** Longitude of perihelion at J2000.0 (degrees) */\n w0: number;\n /** Longitude of perihelion rate per century */\n w1: number;\n}\n\n/**\n * Mean orbital elements for planets (heliocentric ecliptic, J2000.0 frame).\n * Values from Standish (1992) and Meeus.\n */\nconst ORBITAL_ELEMENTS: Record<string, OrbitalElements> = {\n mercury: {\n L0: 252.2503235,\n L1: 149472.67411175,\n a: 0.38709927,\n e0: 0.20563593,\n e1: 0.00001906,\n I0: 7.00497902,\n I1: -0.00594749,\n W0: 48.33076593,\n W1: -0.12534081,\n w0: 77.45779628,\n w1: 0.16047689,\n },\n venus: {\n L0: 181.9790995,\n L1: 58517.81538729,\n a: 0.72333566,\n e0: 0.00677672,\n e1: -0.00004107,\n I0: 3.39467605,\n I1: -0.0007889,\n W0: 76.67984255,\n W1: -0.27769418,\n w0: 131.60246718,\n w1: 0.00268329,\n },\n earth: {\n L0: 100.46457166,\n L1: 35999.37244981,\n a: 1.00000261,\n e0: 0.01671123,\n e1: -0.00004392,\n I0: 0.00001531,\n I1: -0.01294668,\n W0: 0.0,\n W1: 0.0,\n w0: 102.93768193,\n w1: 0.32327364,\n },\n mars: {\n L0: 355.44656299,\n L1: 19140.30268499,\n a: 1.52371034,\n e0: 0.0933941,\n e1: 0.00007882,\n I0: 1.84969142,\n I1: -0.00813131,\n W0: 49.55953891,\n W1: -0.29257343,\n w0: 336.05637041,\n w1: 0.44441088,\n },\n jupiter: {\n L0: 34.39644051,\n L1: 3034.74612775,\n a: 5.202887,\n e0: 0.04838624,\n e1: -0.00013253,\n I0: 1.30439695,\n I1: -0.00183714,\n W0: 100.47390909,\n W1: 0.20469106,\n w0: 14.72847983,\n w1: 0.21252668,\n },\n saturn: {\n L0: 49.95424423,\n L1: 1222.49362201,\n a: 9.53667594,\n e0: 0.05386179,\n e1: -0.00050991,\n I0: 2.48599187,\n I1: 0.00193609,\n W0: 113.66242448,\n W1: -0.28867794,\n w0: 92.59887831,\n w1: -0.41897216,\n },\n uranus: {\n L0: 313.23810451,\n L1: 428.48202785,\n a: 19.18916464,\n e0: 0.04725744,\n e1: -0.00004397,\n I0: 0.77263783,\n I1: -0.00242939,\n W0: 74.01692503,\n W1: 0.04240589,\n w0: 170.9542763,\n w1: 0.40805281,\n },\n neptune: {\n L0: 304.87997031,\n L1: 218.45945325,\n a: 30.06992276,\n e0: 0.00859048,\n e1: 0.00005105,\n I0: 1.77004347,\n I1: 0.00035372,\n W0: 131.78422574,\n W1: -0.0129963,\n w0: 44.96476227,\n w1: -0.32241464,\n },\n pluto: {\n L0: 238.92903833,\n L1: 145.20780515,\n a: 39.48211675,\n e0: 0.2488273,\n e1: 0.0000517,\n I0: 17.14001206,\n I1: 0.00004818,\n W0: 110.30393684,\n W1: -0.01183482,\n w0: 224.06891629,\n w1: -0.04062942,\n },\n};\n\n// ---------------------------------------------------------------------------\n// Julian Day calculation\n// ---------------------------------------------------------------------------\n\n/**\n * Convert a calendar date + time to Julian Day Number.\n * Handles both Julian and Gregorian calendars.\n */\nexport function toJulianDay(\n year: number,\n month: number,\n day: number,\n hour: number = 0,\n minute: number = 0\n): number {\n let y = year;\n let m = month;\n if (m <= 2) {\n y -= 1;\n m += 12;\n }\n const A = Math.floor(y / 100);\n const B = 2 - A + Math.floor(A / 4);\n const dayFraction = (hour + minute / 60) / 24;\n return (\n Math.floor(365.25 * (y + 4716)) + Math.floor(30.6001 * (m + 1)) + day + dayFraction + B - 1524.5\n );\n}\n\n/**\n * Julian centuries since J2000.0.\n */\nfunction julianCenturies(jd: number): number {\n return (jd - J2000) / 36525;\n}\n\n// ---------------------------------------------------------------------------\n// Normalise angle to [0, 360)\n// ---------------------------------------------------------------------------\n\nfunction normDeg(deg: number): number {\n return ((deg % 360) + 360) % 360;\n}\n\n// ---------------------------------------------------------------------------\n// Kepler's equation solver (Newton-Raphson)\n// ---------------------------------------------------------------------------\n\n/**\n * Solve Kepler's equation M = E - e*sin(E) for E (eccentric anomaly).\n * M and E in radians.\n */\nfunction solveKepler(M: number, e: number): number {\n let E = M; // initial guess\n for (let i = 0; i < 50; i++) {\n const dE = (E - e * Math.sin(E) - M) / (1 - e * Math.cos(E));\n E -= dE;\n if (Math.abs(dE) < 1e-12) break;\n }\n return E;\n}\n\n// ---------------------------------------------------------------------------\n// Heliocentric ecliptic longitude from orbital elements\n// ---------------------------------------------------------------------------\n\n/**\n * Compute heliocentric ecliptic longitude for a planet at a given Julian Day.\n */\nfunction _heliocentricLongitude(planetId: string, jd: number): number {\n const el = ORBITAL_ELEMENTS[planetId];\n if (!el) throw new Error(`No orbital elements for: ${planetId}`);\n\n const T = julianCenturies(jd);\n\n // Compute current elements\n const L = normDeg(el.L0 + el.L1 * T);\n const e = el.e0 + el.e1 * T;\n const w = normDeg(el.w0 + el.w1 * T);\n const W = normDeg(el.W0 + el.W1 * T);\n const I = el.I0 + el.I1 * T;\n\n // Mean anomaly\n const M = normDeg(L - w);\n const Mrad = M * DEG2RAD;\n\n // Solve Kepler's equation for eccentric anomaly\n const E = solveKepler(Mrad, e);\n\n // True anomaly\n const sinV = (Math.sqrt(1 - e * e) * Math.sin(E)) / (1 - e * Math.cos(E));\n const cosV = (Math.cos(E) - e) / (1 - e * Math.cos(E));\n const v = Math.atan2(sinV, cosV) * RAD2DEG;\n\n // Heliocentric longitude in the orbital plane\n const lHelio = normDeg(v + w - W);\n\n // Convert from orbital plane to ecliptic\n // For small inclinations, the correction is minor\n const Irad = I * DEG2RAD;\n const lHelioRad = lHelio * DEG2RAD;\n\n const eclLon = normDeg(\n Math.atan2(Math.sin(lHelioRad) * Math.cos(Irad), Math.cos(lHelioRad)) * RAD2DEG + W\n );\n\n return eclLon;\n}\n\n// ---------------------------------------------------------------------------\n// Geocentric ecliptic longitude\n// ---------------------------------------------------------------------------\n\n/**\n * Convert heliocentric position to geocentric (as seen from Earth).\n * Uses simplified geometric transformation.\n */\nfunction geocentricLongitude(planetId: string, jd: number): number {\n if (planetId === \"earth\") {\n throw new Error(\"Cannot compute geocentric longitude of Earth\");\n }\n\n const T = julianCenturies(jd);\n\n // Earth's heliocentric position\n const earthEl = ORBITAL_ELEMENTS.earth;\n const earthL = normDeg(earthEl.L0 + earthEl.L1 * T);\n const earthE = earthEl.e0 + earthEl.e1 * T;\n const earthW = normDeg(earthEl.w0 + earthEl.w1 * T);\n const earthM = normDeg(earthL - earthW) * DEG2RAD;\n const earthEcc = solveKepler(earthM, earthE);\n const earthV =\n Math.atan2(Math.sqrt(1 - earthE * earthE) * Math.sin(earthEcc), Math.cos(earthEcc) - earthE) *\n RAD2DEG;\n const earthHelioLon = normDeg(earthV + earthW);\n const earthR = earthEl.a * (1 - earthE * Math.cos(earthEcc));\n\n // Planet's heliocentric position\n const pEl = ORBITAL_ELEMENTS[planetId];\n const pL = normDeg(pEl.L0 + pEl.L1 * T);\n const pE = pEl.e0 + pEl.e1 * T;\n const pW = normDeg(pEl.w0 + pEl.w1 * T);\n const pM = normDeg(pL - pW) * DEG2RAD;\n const pEcc = solveKepler(pM, pE);\n const pV = Math.atan2(Math.sqrt(1 - pE * pE) * Math.sin(pEcc), Math.cos(pEcc) - pE) * RAD2DEG;\n const pHelioLon = normDeg(pV + pW);\n const pR = pEl.a * (1 - pE * Math.cos(pEcc));\n\n // Convert to geocentric using simple 2D projection (ecliptic plane)\n const pHelioRad = pHelioLon * DEG2RAD;\n const earthHelioRad = earthHelioLon * DEG2RAD;\n\n const x = pR * Math.cos(pHelioRad) - earthR * Math.cos(earthHelioRad);\n const y = pR * Math.sin(pHelioRad) - earthR * Math.sin(earthHelioRad);\n\n return normDeg(Math.atan2(y, x) * RAD2DEG);\n}\n\n// ---------------------------------------------------------------------------\n// Sun longitude (geocentric = Earth heliocentric + 180)\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the Sun's geocentric ecliptic longitude for a given Julian Day.\n * The Sun's geocentric longitude is Earth's heliocentric longitude + 180 degrees.\n */\nfunction sunLongitude(jd: number): number {\n const T = julianCenturies(jd);\n\n // Sun's mean longitude (geometric mean longitude referred to the mean equinox)\n const L0 = normDeg(280.46646 + 36000.76983 * T + 0.0003032 * T * T);\n\n // Sun's mean anomaly\n const M = normDeg(357.52911 + 35999.05029 * T - 0.0001537 * T * T);\n const Mrad = M * DEG2RAD;\n\n // Equation of center\n const C =\n (1.914602 - 0.004817 * T - 0.000014 * T * T) * Math.sin(Mrad) +\n (0.019993 - 0.000101 * T) * Math.sin(2 * Mrad) +\n 0.000289 * Math.sin(3 * Mrad);\n\n // Sun's true longitude\n const sunTrueLon = normDeg(L0 + C);\n\n // Apparent longitude (correct for nutation and aberration)\n const omega = 125.04 - 1934.136 * T;\n const apparent = sunTrueLon - 0.00569 - 0.00478 * Math.sin(omega * DEG2RAD);\n\n return normDeg(apparent);\n}\n\n// ---------------------------------------------------------------------------\n// Moon longitude (simplified)\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the Moon's geocentric ecliptic longitude.\n * Uses the principal terms of the lunar theory (Meeus Chapter 47).\n */\nfunction moonLongitude(jd: number): number {\n const T = julianCenturies(jd);\n\n // Moon's mean longitude (mean equinox of date)\n const Lp = normDeg(\n 218.3164477 +\n 481267.88123421 * T -\n 0.0015786 * T * T +\n (T * T * T) / 538841 -\n (T * T * T * T) / 65194000\n );\n\n // Moon's mean elongation\n const D = normDeg(\n 297.8501921 +\n 445267.1114034 * T -\n 0.0018819 * T * T +\n (T * T * T) / 545868 -\n (T * T * T * T) / 113065000\n );\n\n // Sun's mean anomaly\n const M = normDeg(357.5291092 + 35999.0502909 * T - 0.0001536 * T * T + (T * T * T) / 24490000);\n\n // Moon's mean anomaly\n const Mp = normDeg(\n 134.9633964 +\n 477198.8675055 * T +\n 0.0087414 * T * T +\n (T * T * T) / 69699 -\n (T * T * T * T) / 14712000\n );\n\n // Moon's argument of latitude\n const F = normDeg(\n 93.272095 +\n 483202.0175233 * T -\n 0.0036539 * T * T -\n (T * T * T) / 3526000 +\n (T * T * T * T) / 863310000\n );\n\n const Drad = D * DEG2RAD;\n const Mrad = M * DEG2RAD;\n const Mprad = Mp * DEG2RAD;\n const Frad = F * DEG2RAD;\n\n // Principal terms for longitude (simplified from Meeus Table 47.A)\n let sumL = 0;\n sumL += 6288774 * Math.sin(Mprad);\n sumL += 1274027 * Math.sin(2 * Drad - Mprad);\n sumL += 658314 * Math.sin(2 * Drad);\n sumL += 213618 * Math.sin(2 * Mprad);\n sumL += -185116 * Math.sin(Mrad);\n sumL += -114332 * Math.sin(2 * Frad);\n sumL += 58793 * Math.sin(2 * Drad - 2 * Mprad);\n sumL += 57066 * Math.sin(2 * Drad - Mrad - Mprad);\n sumL += 53322 * Math.sin(2 * Drad + Mprad);\n sumL += 45758 * Math.sin(2 * Drad - Mrad);\n sumL += -40923 * Math.sin(Mrad - Mprad);\n sumL += -34720 * Math.sin(Drad);\n sumL += -30383 * Math.sin(Mrad + Mprad);\n sumL += 15327 * Math.sin(2 * Drad - 2 * Frad);\n sumL += -12528 * Math.sin(Mprad + 2 * Frad);\n sumL += 10980 * Math.sin(Mprad - 2 * Frad);\n sumL += 10675 * Math.sin(4 * Drad - Mprad);\n sumL += 10034 * Math.sin(3 * Mprad);\n sumL += 8548 * Math.sin(4 * Drad - 2 * Mprad);\n sumL += -7888 * Math.sin(2 * Drad + Mrad - Mprad);\n sumL += -6766 * Math.sin(2 * Drad + Mrad);\n sumL += -5163 * Math.sin(Drad - Mprad);\n sumL += 4987 * Math.sin(Drad + Mrad);\n sumL += 4036 * Math.sin(2 * Drad - Mrad + Mprad);\n\n // Convert from 0.000001 degrees to degrees\n const moonLon = normDeg(Lp + sumL / 1000000);\n\n return moonLon;\n}\n\n// ---------------------------------------------------------------------------\n// Retrograde detection\n// ---------------------------------------------------------------------------\n\n/**\n * Determine if a planet appears retrograde by comparing its longitude\n * one day before and after the given Julian Day.\n */\nfunction isRetrograde(planetId: string, jd: number): boolean {\n if (planetId === \"sun\" || planetId === \"moon\") return false;\n\n const lonBefore = geocentricLongitude(planetId, jd - 1);\n const lonAfter = geocentricLongitude(planetId, jd + 1);\n\n // Handle wrapping around 0/360 degrees\n let diff = lonAfter - lonBefore;\n if (diff > 180) diff -= 360;\n if (diff < -180) diff += 360;\n\n return diff < 0;\n}\n\n// ---------------------------------------------------------------------------\n// Obliquity of the ecliptic\n// ---------------------------------------------------------------------------\n\nfunction obliquity(jd: number): number {\n const T = julianCenturies(jd);\n // Mean obliquity (Laskar formula)\n return 23.4392911 - 0.0130042 * T - 1.64e-7 * T * T + 5.036e-7 * T * T * T;\n}\n\n// ---------------------------------------------------------------------------\n// Ascendant & Midheaven (MC) calculation\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the Local Sidereal Time in degrees for a given Julian Day and\n * geographic longitude.\n */\nfunction localSiderealTime(jd: number, lonDeg: number): number {\n const T = julianCenturies(jd);\n // Greenwich Mean Sidereal Time in degrees\n const gmst = normDeg(\n 280.46061837 + 360.98564736629 * (jd - J2000) + 0.000387933 * T * T - (T * T * T) / 38710000\n );\n // Convert to local\n return normDeg(gmst + lonDeg);\n}\n\n/**\n * Calculate the Ascendant (rising sign) from LST, latitude, and obliquity.\n */\nfunction computeAscendant(lstDeg: number, latDeg: number, oblDeg: number): number {\n const lstRad = lstDeg * DEG2RAD;\n const latRad = latDeg * DEG2RAD;\n const oblRad = oblDeg * DEG2RAD;\n\n const y = -Math.cos(lstRad);\n const x = Math.sin(oblRad) * Math.tan(latRad) + Math.cos(oblRad) * Math.sin(lstRad);\n\n const asc = Math.atan2(y, x) * RAD2DEG;\n return normDeg(asc);\n}\n\n/**\n * Calculate the Midheaven (Medium Coeli) from LST and obliquity.\n */\nfunction computeMidheaven(lstDeg: number, oblDeg: number): number {\n const lstRad = lstDeg * DEG2RAD;\n const oblRad = oblDeg * DEG2RAD;\n\n const mc = Math.atan2(Math.sin(lstRad), Math.cos(lstRad) * Math.cos(oblRad)) * RAD2DEG;\n return normDeg(mc);\n}\n\n// ---------------------------------------------------------------------------\n// House cusps (Placidus simplified / Equal house fallback)\n// ---------------------------------------------------------------------------\n\n/**\n * Calculate equal house cusps from the Ascendant.\n * Each house spans exactly 30 degrees starting from the Ascendant.\n */\nfunction equalHouseCusps(ascDeg: number): number[] {\n const cusps: number[] = [];\n for (let i = 0; i < 12; i++) {\n cusps.push(normDeg(ascDeg + i * 30));\n }\n return cusps;\n}\n\n/**\n * Determine which house a planet falls in given house cusps.\n * Returns 1-12.\n */\nfunction houseForLongitude(longitude: number, cusps: number[]): number {\n for (let i = 0; i < 12; i++) {\n const cusp = cusps[i];\n const nextCusp = cusps[(i + 1) % 12];\n\n if (nextCusp > cusp) {\n // Normal case: cusp doesn't wrap around 360\n if (longitude >= cusp && longitude < nextCusp) {\n return i + 1;\n }\n } else {\n // Wraps around 0 degrees\n if (longitude >= cusp || longitude < nextCusp) {\n return i + 1;\n }\n }\n }\n return 1; // fallback\n}\n\n// ---------------------------------------------------------------------------\n// Sun sign from date (calendar-based, exact traditional boundaries)\n// ---------------------------------------------------------------------------\n\n/** Traditional Sun sign date boundaries (tropical zodiac). */\nconst SUN_SIGN_DATES: Array<{ sign: string; startMonth: number; startDay: number }> = [\n { sign: \"capricorn\", startMonth: 1, startDay: 1 }, // Jan 1 (continued from Dec 22)\n { sign: \"aquarius\", startMonth: 1, startDay: 20 },\n { sign: \"pisces\", startMonth: 2, startDay: 19 },\n { sign: \"aries\", startMonth: 3, startDay: 21 },\n { sign: \"taurus\", startMonth: 4, startDay: 20 },\n { sign: \"gemini\", startMonth: 5, startDay: 21 },\n { sign: \"cancer\", startMonth: 6, startDay: 21 },\n { sign: \"leo\", startMonth: 7, startDay: 23 },\n { sign: \"virgo\", startMonth: 8, startDay: 23 },\n { sign: \"libra\", startMonth: 9, startDay: 23 },\n { sign: \"scorpio\", startMonth: 10, startDay: 23 },\n { sign: \"sagittarius\", startMonth: 11, startDay: 22 },\n { sign: \"capricorn\", startMonth: 12, startDay: 22 },\n];\n\n/**\n * Determine the Sun sign from month and day using traditional date boundaries.\n * This is a quick lookup that doesn't require astronomical calculation.\n */\nexport function calculateSunSign(month: number, day: number): string {\n // Walk the boundaries in reverse to find the active sign\n for (let i = SUN_SIGN_DATES.length - 1; i >= 0; i--) {\n const boundary = SUN_SIGN_DATES[i];\n if (\n month > boundary.startMonth ||\n (month === boundary.startMonth && day >= boundary.startDay)\n ) {\n return boundary.sign;\n }\n }\n // Should never reach here, but default to Capricorn (Jan 1-19)\n return \"capricorn\";\n}\n\n// ---------------------------------------------------------------------------\n// Aspect calculation\n// ---------------------------------------------------------------------------\n\n/**\n * Calculate all aspects between planet positions.\n */\nexport function calculateAspects(positions: PlanetPosition[]): ChartAspect[] {\n const aspects: ChartAspect[] = [];\n const definitions = getAspectDefinitions();\n\n for (let i = 0; i < positions.length; i++) {\n for (let j = i + 1; j < positions.length; j++) {\n const p1 = positions[i];\n const p2 = positions[j];\n\n let separation = Math.abs(p1.totalDegrees - p2.totalDegrees);\n if (separation > 180) separation = 360 - separation;\n\n for (const def of definitions) {\n const orbDistance = Math.abs(separation - def.degrees);\n if (orbDistance <= def.orb) {\n aspects.push({\n planet1: p1.planet,\n planet2: p2.planet,\n aspectName: def.name,\n aspectSymbol: def.symbol,\n exactDegrees: def.degrees,\n actualDegrees: separation,\n orb: Math.round(orbDistance * 100) / 100,\n nature: def.nature,\n });\n }\n }\n }\n }\n\n // Sort by tightest orb first\n aspects.sort((a, b) => a.orb - b.orb);\n return aspects;\n}\n\n// ---------------------------------------------------------------------------\n// Main chart calculation\n// ---------------------------------------------------------------------------\n\n/**\n * Build a PlanetPosition from a computed ecliptic longitude.\n */\nfunction buildPosition(\n planetName: string,\n longitude: number,\n houseCusps: number[],\n retrograde: boolean\n): PlanetPosition {\n const signPos = degreesToSign(longitude);\n return {\n planet: planetName,\n sign: signPos.sign,\n degrees: Math.round(signPos.degrees * 100) / 100,\n totalDegrees: Math.round(signPos.totalDegrees * 100) / 100,\n house: houseForLongitude(longitude, houseCusps),\n retrograde,\n };\n}\n\n/**\n * Calculate a complete natal chart from birth data.\n *\n * This uses simplified Keplerian orbital mechanics for planetary positions\n * and standard formulas for the Ascendant, Midheaven, and house cusps.\n * Accuracy is typically within 1-2 degrees for inner planets and the Sun,\n * which is sufficient for sign determination in most cases.\n */\nexport function calculateNatalChart(birthData: BirthData): NatalChart {\n // Convert birth time to UT\n const utHour = birthData.hour - birthData.timezone;\n const utMinute = birthData.minute;\n\n // Calculate Julian Day\n const jd = toJulianDay(birthData.year, birthData.month, birthData.day, utHour, utMinute);\n\n // Obliquity of the ecliptic\n const obl = obliquity(jd);\n\n // Local Sidereal Time\n const lst = localSiderealTime(jd, birthData.longitude);\n\n // Ascendant and Midheaven\n const ascDeg = computeAscendant(lst, birthData.latitude, obl);\n const mcDeg = computeMidheaven(lst, obl);\n\n // House cusps (equal house system)\n const cusps = equalHouseCusps(ascDeg);\n\n // Compute planetary positions\n const sunLon = sunLongitude(jd);\n const moonLon = moonLongitude(jd);\n const mercuryLon = geocentricLongitude(\"mercury\", jd);\n const venusLon = geocentricLongitude(\"venus\", jd);\n const marsLon = geocentricLongitude(\"mars\", jd);\n const jupiterLon = geocentricLongitude(\"jupiter\", jd);\n const saturnLon = geocentricLongitude(\"saturn\", jd);\n const uranusLon = geocentricLongitude(\"uranus\", jd);\n const neptuneLon = geocentricLongitude(\"neptune\", jd);\n const plutoLon = geocentricLongitude(\"pluto\", jd);\n\n // Build planet positions\n const sun = buildPosition(\"sun\", sunLon, cusps, false);\n const moon = buildPosition(\"moon\", moonLon, cusps, false);\n const mercury = buildPosition(\"mercury\", mercuryLon, cusps, isRetrograde(\"mercury\", jd));\n const venus = buildPosition(\"venus\", venusLon, cusps, isRetrograde(\"venus\", jd));\n const mars = buildPosition(\"mars\", marsLon, cusps, isRetrograde(\"mars\", jd));\n const jupiter = buildPosition(\"jupiter\", jupiterLon, cusps, isRetrograde(\"jupiter\", jd));\n const saturn = buildPosition(\"saturn\", saturnLon, cusps, isRetrograde(\"saturn\", jd));\n const uranus = buildPosition(\"uranus\", uranusLon, cusps, isRetrograde(\"uranus\", jd));\n const neptune = buildPosition(\"neptune\", neptuneLon, cusps, isRetrograde(\"neptune\", jd));\n const pluto = buildPosition(\"pluto\", plutoLon, cusps, isRetrograde(\"pluto\", jd));\n\n // Ascendant and Midheaven as SignPositions\n const ascendant = degreesToSign(ascDeg);\n const midheaven = degreesToSign(mcDeg);\n\n // Calculate aspects between all planets\n const allPositions = [sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto];\n const aspects = calculateAspects(allPositions);\n\n return {\n sun,\n moon,\n mercury,\n venus,\n mars,\n jupiter,\n saturn,\n uranus,\n neptune,\n pluto,\n ascendant,\n midheaven,\n aspects,\n houseCusps: cusps,\n };\n}\n",
|
|
14
14
|
"/**\n * LLM interpretation prompt builders for natal chart readings.\n *\n * These functions construct rich, context-aware prompts that an LLM can use\n * to generate personalised astrological interpretations. They incorporate\n * chart data, previously revealed information, and user feedback to create\n * a coherent, evolving reading experience.\n */\n\nimport type { ChartAspect, NatalChart, PlanetPosition } from \"./chart.js\";\nimport planetsData from \"./data/planets.json\" with { type: \"json\" };\nimport { getElement, getModality, signDisplayName } from \"./zodiac.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface FeedbackEntry {\n /** Which planet/aspect this feedback relates to */\n topic: string;\n /** The user's reaction or comment */\n response: string;\n /** How much the user resonated (1-5, if provided) */\n resonance?: number;\n /** Timestamp of when feedback was given */\n timestamp: number;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\ninterface PlanetData {\n id: string;\n name: string;\n symbol: string;\n keywords: string[];\n description: string;\n meaningsInSigns: Record<string, string>;\n}\n\nfunction getPlanetData(planetId: string): PlanetData | undefined {\n return (planetsData as PlanetData[]).find((p) => p.id === planetId);\n}\n\nfunction formatPosition(pos: PlanetPosition): string {\n const retroLabel = pos.retrograde ? \" (retrograde)\" : \"\";\n return `${signDisplayName(pos.sign)} at ${pos.degrees.toFixed(1)}\\u00B0${retroLabel}, House ${pos.house}`;\n}\n\nfunction formatFeedback(feedback: FeedbackEntry[]): string {\n if (feedback.length === 0) return \"\";\n\n const lines = feedback.map((f) => {\n const resonanceLabel = f.resonance !== undefined ? ` [resonance: ${f.resonance}/5]` : \"\";\n return `- Re: ${f.topic}${resonanceLabel}: \"${f.response}\"`;\n });\n\n return `\\n\\n## User Feedback So Far\\nThe querent has shared the following reactions to previous reveals. Use these to calibrate your interpretation \\u2014 lean into themes that resonate and gently explore areas of resistance.\\n${lines.join(\"\\n\")}`;\n}\n\nfunction listAspectsFor(planet: string, chart: NatalChart): string {\n const relevant = chart.aspects.filter((a) => a.planet1 === planet || a.planet2 === planet);\n if (relevant.length === 0) return \"No major aspects.\";\n\n return relevant\n .map((a) => {\n const other = a.planet1 === planet ? a.planet2 : a.planet1;\n return `${a.aspectName} (${a.aspectSymbol}) to ${signDisplayName(other)} (orb: ${a.orb}\\u00B0, ${a.nature})`;\n })\n .join(\"; \");\n}\n\n// ---------------------------------------------------------------------------\n// Prompt builders\n// ---------------------------------------------------------------------------\n\n/**\n * Build a comprehensive chart overview prompt that introduces the reading\n * and sets the tone for the session.\n */\nexport function buildChartOverviewPrompt(chart: NatalChart, feedback: FeedbackEntry[]): string {\n const sunData = getPlanetData(\"sun\");\n const moonData = getPlanetData(\"moon\");\n\n const elementCounts: Record<string, number> = { fire: 0, earth: 0, air: 0, water: 0 };\n const modalityCounts: Record<string, number> = { cardinal: 0, fixed: 0, mutable: 0 };\n\n const positions = [\n chart.sun,\n chart.moon,\n chart.mercury,\n chart.venus,\n chart.mars,\n chart.jupiter,\n chart.saturn,\n chart.uranus,\n chart.neptune,\n chart.pluto,\n ];\n\n for (const pos of positions) {\n const el = getElement(pos.sign);\n const mod = getModality(pos.sign);\n elementCounts[el]++;\n modalityCounts[mod]++;\n }\n\n const dominantElement = Object.entries(elementCounts).sort((a, b) => b[1] - a[1])[0];\n const dominantModality = Object.entries(modalityCounts).sort((a, b) => b[1] - a[1])[0];\n\n return `You are an insightful, warm, and articulate astrologer giving a natal chart reading. Speak with authority but also compassion. Use vivid language and metaphor. Address the querent directly as \"you.\"\n\n## Chart Overview\n\n**Sun:** ${formatPosition(chart.sun)}\n**Moon:** ${formatPosition(chart.moon)}\n**Ascendant:** ${signDisplayName(chart.ascendant.sign)} at ${chart.ascendant.degrees.toFixed(1)}\\u00B0\n**Midheaven:** ${signDisplayName(chart.midheaven.sign)} at ${chart.midheaven.degrees.toFixed(1)}\\u00B0\n\n### Elemental Balance\n- Fire: ${elementCounts.fire} planets | Earth: ${elementCounts.earth} planets\n- Air: ${elementCounts.air} planets | Water: ${elementCounts.water} planets\n- **Dominant element:** ${dominantElement[0]} (${dominantElement[1]} placements)\n\n### Modal Balance\n- Cardinal: ${modalityCounts.cardinal} | Fixed: ${modalityCounts.fixed} | Mutable: ${modalityCounts.mutable}\n- **Dominant modality:** ${dominantModality[0]} (${dominantModality[1]} placements)\n\n### Sun in ${signDisplayName(chart.sun.sign)}\n${sunData?.meaningsInSigns[chart.sun.sign] ?? \"\"}\n\n### Moon in ${signDisplayName(chart.moon.sign)}\n${moonData?.meaningsInSigns[chart.moon.sign] ?? \"\"}\n\n## Your Task\nProvide a warm, engaging overview of this chart. Cover:\n1. The \"Big Three\" (Sun, Moon, Rising) and what this combination suggests about the person\n2. The elemental and modal balance and what it means for their temperament\n3. Any immediately striking patterns (clusters, oppositions, dominant themes)\n\nKeep it to 3-4 paragraphs. End with a natural transition that invites the querent to explore further.${formatFeedback(feedback)}`;\n}\n\n/**\n * Build a detailed interpretation prompt for a specific planet placement.\n */\nexport function buildPlanetInterpretationPrompt(\n position: PlanetPosition,\n chart: NatalChart,\n feedback: FeedbackEntry[]\n): string {\n const planetData = getPlanetData(position.planet);\n if (!planetData) {\n return `Interpret the placement of ${position.planet} in ${signDisplayName(position.sign)}.`;\n }\n\n const signMeaning = planetData.meaningsInSigns[position.sign] ?? \"\";\n const aspects = listAspectsFor(position.planet, chart);\n\n return `You are an insightful, warm, and articulate astrologer continuing a natal chart reading. Speak with authority but also compassion. Use vivid language and metaphor. Address the querent directly as \"you.\"\n\n## ${planetData.name} (${planetData.symbol}) in ${signDisplayName(position.sign)}\n\n**Position:** ${formatPosition(position)}\n**Keywords:** ${planetData.keywords.join(\", \")}\n**Planet significance:** ${planetData.description}\n\n### Sign Meaning\n${signMeaning}\n\n### Aspects\n${aspects}\n\n### House ${position.house} Context\nThis placement falls in the ${ordinal(position.house)} house, which governs the life areas associated with that house. Consider how this planet\\u2019s energy expresses itself through this house\\u2019s domain.\n\n${position.retrograde ? `### Retrograde\\nThis planet is retrograde, suggesting its energy is turned inward. The themes of ${planetData.name} are experienced more internally, with a need for reflection and re-evaluation before outward expression.\\n` : \"\"}\n\n## Your Task\nProvide a rich, personal interpretation of this placement. Cover:\n1. What this planet in this sign means for the querent\\u2019s life\n2. How the house placement colours the expression\n3. What the aspects suggest about how this energy interacts with other parts of their chart\n4. Practical wisdom or reflection questions for the querent\n\nKeep it to 2-3 paragraphs. Be specific and insightful, not generic.${formatFeedback(feedback)}`;\n}\n\n/**\n * Build an interpretation prompt for a specific aspect between two planets.\n */\nexport function buildAspectInterpretationPrompt(\n aspect: ChartAspect,\n chart: NatalChart,\n feedback: FeedbackEntry[]\n): string {\n const p1Data = getPlanetData(aspect.planet1);\n const p2Data = getPlanetData(aspect.planet2);\n\n const p1Pos = getPositionFromChart(aspect.planet1, chart);\n const p2Pos = getPositionFromChart(aspect.planet2, chart);\n\n return `You are an insightful, warm, and articulate astrologer continuing a natal chart reading. Address the querent directly as \"you.\"\n\n## ${aspect.aspectName} (${aspect.aspectSymbol}): ${p1Data?.name ?? aspect.planet1} ${aspect.aspectSymbol} ${p2Data?.name ?? aspect.planet2}\n\n**Nature:** ${aspect.nature}\n**Exact separation:** ${aspect.actualDegrees.toFixed(1)}\\u00B0 (orb: ${aspect.orb}\\u00B0)\n\n### ${p1Data?.name ?? aspect.planet1}\n- **Position:** ${p1Pos ? formatPosition(p1Pos) : \"unknown\"}\n- **Keywords:** ${p1Data?.keywords.join(\", \") ?? \"\"}\n\n### ${p2Data?.name ?? aspect.planet2}\n- **Position:** ${p2Pos ? formatPosition(p2Pos) : \"unknown\"}\n- **Keywords:** ${p2Data?.keywords.join(\", \") ?? \"\"}\n\n## Your Task\nInterpret this aspect in the context of the querent\\u2019s life. Cover:\n1. How these two planetary energies interact through this aspect type\n2. What tensions or gifts this creates\n3. How this might manifest in daily life or key life themes\n4. Constructive ways to work with this energy\n\nKeep it to 2 paragraphs. Be specific and meaningful.${formatFeedback(feedback)}`;\n}\n\n/**\n * Build a synthesis prompt that weaves together all revealed placements\n * into a cohesive narrative.\n */\nexport function buildAstrologySynthesisPrompt(\n chart: NatalChart,\n revealedPlanets: string[],\n feedback: FeedbackEntry[]\n): string {\n const revealed = revealedPlanets.map((pid) => {\n const pos = getPositionFromChart(pid, chart);\n const data = getPlanetData(pid);\n if (!pos || !data) return `- ${pid}: unknown`;\n return `- **${data.name}** in ${signDisplayName(pos.sign)} (House ${pos.house})${pos.retrograde ? \" R\" : \"\"}: ${data.meaningsInSigns[pos.sign] ?? \"\"}`;\n });\n\n const significantAspects = chart.aspects\n .filter((a) => revealedPlanets.includes(a.planet1) && revealedPlanets.includes(a.planet2))\n .filter((a) => a.orb <= 5)\n .slice(0, 8)\n .map((a) => `- ${a.planet1} ${a.aspectName} ${a.planet2} (${a.nature}, orb: ${a.orb}\\u00B0)`);\n\n return `You are an insightful, warm, and articulate astrologer delivering the synthesis of a natal chart reading. This is the culminating moment \\u2014 weave everything together into a meaningful narrative. Address the querent directly as \"you.\"\n\n## Placements Explored\n${revealed.join(\"\\n\")}\n\n## Key Aspects\n${significantAspects.length > 0 ? significantAspects.join(\"\\n\") : \"No tight aspects between revealed planets.\"}\n\n## Ascendant & Midheaven\n- **Rising:** ${signDisplayName(chart.ascendant.sign)} at ${chart.ascendant.degrees.toFixed(1)}\\u00B0\n- **MC:** ${signDisplayName(chart.midheaven.sign)} at ${chart.midheaven.degrees.toFixed(1)}\\u00B0\n\n## Your Task\nDeliver a powerful, cohesive synthesis of this person\\u2019s chart. This should:\n1. Identify the 2-3 core themes that run through the chart\n2. Show how different placements reinforce, challenge, or balance each other\n3. Paint a picture of the person\\u2019s gifts, challenges, and growth path\n4. Offer empowering insights about their life purpose and potential\n5. Close with an inspiring, memorable statement that honours the whole chart\n\nKeep it to 4-5 paragraphs. This should feel like a culminating revelation, not a list. Make it deeply personal and meaningful.${formatFeedback(feedback)}`;\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\nfunction getPositionFromChart(planetId: string, chart: NatalChart): PlanetPosition | undefined {\n const key = planetId as keyof NatalChart;\n const val = chart[key];\n if (val && typeof val === \"object\" && \"planet\" in val) {\n return val as PlanetPosition;\n }\n return undefined;\n}\n\nfunction ordinal(n: number): string {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = n % 100;\n return n + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\n",
|
|
15
15
|
"import {\n type BirthData,\n type ChartAspect,\n calculateNatalChart,\n calculateSunSign,\n type NatalChart,\n type PlanetPosition,\n} from \"./chart.js\";\nimport {\n buildAspectInterpretationPrompt,\n buildAstrologySynthesisPrompt,\n buildChartOverviewPrompt,\n buildPlanetInterpretationPrompt,\n type FeedbackEntry,\n} from \"./interpreter.js\";\nimport type { SignPosition } from \"./zodiac.js\";\n\nexport interface AstrologyReadingState {\n birthData: BirthData;\n chart: NatalChart;\n revealOrder: string[];\n revealedPlanets: string[];\n revealIndex: number;\n overviewPresented: boolean;\n feedback: FeedbackEntry[];\n startedAt: number;\n}\n\n/**\n * Sun -> Moon -> Ascendant -> personal planets -> social planets -> outer planets\n */\nconst DEFAULT_REVEAL_ORDER: readonly string[] = [\n \"sun\",\n \"moon\",\n \"ascendant\",\n \"mercury\",\n \"venus\",\n \"mars\",\n \"jupiter\",\n \"saturn\",\n \"uranus\",\n \"neptune\",\n \"pluto\",\n];\n\n/** Stateless — all reading state lives in AstrologyReadingState objects. */\nexport class AstrologyEngine {\n startReading(birthData: BirthData): AstrologyReadingState {\n const chart = calculateNatalChart(birthData);\n\n return {\n birthData,\n chart,\n revealOrder: [...DEFAULT_REVEAL_ORDER],\n revealedPlanets: [],\n revealIndex: 0,\n overviewPresented: false,\n feedback: [],\n startedAt: Date.now(),\n };\n }\n\n getNextReveal(state: AstrologyReadingState): { planet: string; prompt: string } | null {\n // First reveal is always the overview\n if (!state.overviewPresented) {\n state.overviewPresented = true;\n return {\n planet: \"overview\",\n prompt: buildChartOverviewPrompt(state.chart, state.feedback),\n };\n }\n\n if (state.revealIndex >= state.revealOrder.length) {\n return null;\n }\n\n const planetId = state.revealOrder[state.revealIndex];\n state.revealIndex++;\n state.revealedPlanets.push(planetId);\n\n // Special handling for ascendant (it's a SignPosition, not a PlanetPosition)\n if (planetId === \"ascendant\") {\n const ascPos: PlanetPosition = {\n planet: \"ascendant\",\n sign: state.chart.ascendant.sign,\n degrees: state.chart.ascendant.degrees,\n totalDegrees: state.chart.ascendant.totalDegrees,\n house: 1,\n retrograde: false,\n };\n return {\n planet: \"ascendant\",\n prompt: buildAscendantPrompt(ascPos, state.chart, state.feedback),\n };\n }\n\n const position = getChartPosition(planetId, state.chart);\n if (!position) return this.getNextReveal(state); // skip unknown\n\n return {\n planet: planetId,\n prompt: buildPlanetInterpretationPrompt(position, state.chart, state.feedback),\n };\n }\n\n recordFeedback(state: AstrologyReadingState, feedback: FeedbackEntry): AstrologyReadingState {\n return {\n ...state,\n feedback: [...state.feedback, { ...feedback, timestamp: Date.now() }],\n };\n }\n\n getSynthesis(state: AstrologyReadingState): string {\n return buildAstrologySynthesisPrompt(state.chart, state.revealedPlanets, state.feedback);\n }\n\n getAspectInterpretation(state: AstrologyReadingState, aspect: ChartAspect): string {\n return buildAspectInterpretationPrompt(aspect, state.chart, state.feedback);\n }\n\n getSunSign(month: number, day: number): string {\n return calculateSunSign(month, day);\n }\n\n computeChart(birthData: BirthData): NatalChart {\n return calculateNatalChart(birthData);\n }\n}\n\nfunction getChartPosition(planetId: string, chart: NatalChart): PlanetPosition | undefined {\n const key = planetId as keyof NatalChart;\n const val = chart[key];\n if (val && typeof val === \"object\" && \"planet\" in val) {\n return val as PlanetPosition;\n }\n return undefined;\n}\n\nfunction buildAscendantPrompt(\n position: PlanetPosition,\n chart: NatalChart,\n feedback: FeedbackEntry[]\n): string {\n const signName = position.sign.charAt(0).toUpperCase() + position.sign.slice(1);\n\n const feedbackSection =\n feedback.length > 0\n ? `\\n\\n## User Feedback So Far\\n${feedback.map((f) => `- Re: ${f.topic}: \"${f.response}\"`).join(\"\\n\")}`\n : \"\";\n\n return `You are an insightful, warm, and articulate astrologer continuing a natal chart reading. Address the querent directly as \"you.\"\n\n## The Ascendant: ${signName} Rising\n\n**Position:** ${signName} at ${position.degrees.toFixed(1)}\\u00B0\n\nThe Ascendant (or Rising Sign) is the zodiac sign that was rising on the eastern horizon at the exact moment of your birth. It is arguably the most personal point in the chart \\u2014 it determines how the world sees you, your instinctive approach to new situations, and the \"mask\" you wear in public.\n\n### ${signName} Rising\nA ${signName} Ascendant means you enter the world ${signName}-first. This shapes your physical presence, your first impressions, and the way you instinctively navigate new environments.\n\n### The Sun-Moon-Rising Triad\n- **Sun in ${chart.sun.sign.charAt(0).toUpperCase() + chart.sun.sign.slice(1)}:** Your core identity\n- **Moon in ${chart.moon.sign.charAt(0).toUpperCase() + chart.moon.sign.slice(1)}:** Your emotional inner world \n- **Rising in ${signName}:** The lens through which both are expressed\n\n## Your Task\nProvide a vivid, personal interpretation of this ${signName} Ascendant. Cover:\n1. How this Rising sign shapes the querent\\u2019s appearance, demeanor, and first impressions\n2. How it interacts with their Sun and Moon signs to create a unique persona\n3. What it means for their approach to life and new beginnings\n4. Any tension or harmony between the Rising sign and the rest of the chart\n\nKeep it to 2-3 paragraphs. Be specific and insightful.${feedbackSection}`;\n}\n\nexport type { BirthData, NatalChart, PlanetPosition, ChartAspect, SignPosition, FeedbackEntry };\n\nexport {\n calculateAspects,\n calculateNatalChart,\n calculateSunSign,\n} from \"./chart.js\";\nexport {\n buildAspectInterpretationPrompt,\n buildAstrologySynthesisPrompt,\n buildChartOverviewPrompt,\n buildPlanetInterpretationPrompt,\n} from \"./interpreter.js\";\nexport {\n degreesToSign,\n getAspectDefinitions,\n getElement,\n getModality,\n getRulingPlanet,\n isAspect,\n SIGN_ORDER,\n signDisplayName,\n} from \"./zodiac.js\";\n",
|
|
16
16
|
"import type { CastResult, Hexagram, Trigram } from \"../../types.js\";\nimport hexagramsData from \"./data/hexagrams.json\" with { type: \"json\" };\nimport trigramsData from \"./data/trigrams.json\" with { type: \"json\" };\n\nconst trigrams: Trigram[] = trigramsData as Trigram[];\nconst hexagrams: Hexagram[] = hexagramsData as Hexagram[];\n\nconst trigramByNumber = new Map<number, Trigram>(trigrams.map((t) => [t.number, t]));\n\nconst hexagramByNumber = new Map<number, Hexagram>(hexagrams.map((h) => [h.number, h]));\n\nconst binaryToNumber = new Map<string, number>(hexagrams.map((h) => [h.binary, h.number]));\n\nfunction flipCoin(): boolean {\n const array = new Uint8Array(1);\n crypto.getRandomValues(array);\n return array[0] >= 128;\n}\n\n/**\n * Line values in the I Ching three-coin method:\n *\n * - 6 = Old Yin (broken ⚋, changing → solid ⚊)\n * - 7 = Young Yang (solid ⚊, stable)\n * - 8 = Young Yin (broken ⚋, stable)\n * - 9 = Old Yang (solid ⚊, changing → broken ⚋)\n */\ninterface CastLineResult {\n /** Raw coin sum: 6, 7, 8, or 9 */\n value: number;\n /** Whether this line is a changing line */\n changing: boolean;\n}\n\n/**\n * Three coins are tossed. Heads = 3, Tails = 2.\n * The sum determines the line type:\n * - 6 (2+2+2) = Old Yin → changing broken line\n * - 7 (2+2+3) = Young Yang → stable solid line\n * - 8 (2+3+3) = Young Yin → stable broken line\n * - 9 (3+3+3) = Old Yang → changing solid line\n */\nfunction castLine(): CastLineResult {\n const coin1 = flipCoin() ? 3 : 2;\n const coin2 = flipCoin() ? 3 : 2;\n const coin3 = flipCoin() ? 3 : 2;\n const value = coin1 + coin2 + coin3;\n\n return {\n value,\n changing: value === 6 || value === 9,\n };\n}\n\nfunction lineValueToBinary(value: number): number {\n // 7 and 9 are yang (solid) → 1\n // 6 and 8 are yin (broken) → 0\n return value === 7 || value === 9 ? 1 : 0;\n}\n\nfunction lineValueToTransformedBinary(value: number): number {\n if (value === 6) return 1; // Old Yin → Yang\n if (value === 9) return 0; // Old Yang → Yin\n return lineValueToBinary(value); // Young lines stay\n}\n\n/** Lines are cast from bottom (position 1) to top (position 6). */\nexport function castHexagram(): CastResult {\n const castLines: CastLineResult[] = [];\n for (let i = 0; i < 6; i++) {\n castLines.push(castLine());\n }\n\n const lines = castLines.map((cl) => cl.value);\n const changingLines = castLines\n .map((cl, i) => (cl.changing ? i + 1 : -1))\n .filter((pos) => pos !== -1);\n\n // Build binary string (bottom to top = left to right)\n const binary = castLines.map((cl) => lineValueToBinary(cl.value)).join(\"\");\n const hexagramNumber = binaryToHexagramNumber(binary);\n\n let transformedHexagramNumber: number | null = null;\n let transformedBinary: string | null = null;\n\n if (changingLines.length > 0) {\n transformedBinary = castLines.map((cl) => lineValueToTransformedBinary(cl.value)).join(\"\");\n transformedHexagramNumber = binaryToHexagramNumber(transformedBinary);\n }\n\n return {\n lines,\n changingLines,\n hexagramNumber,\n transformedHexagramNumber,\n binary,\n transformedBinary,\n };\n}\n\n/**\n * Binary format: positions 1-6 (bottom to top) as \"0\" (yin) or \"1\" (yang).\n * Example: \"111111\" → Hexagram 1 (Qian / The Creative)\n */\nexport function binaryToHexagramNumber(binary: string): number {\n const number = binaryToNumber.get(binary);\n if (number === undefined) {\n throw new Error(`Unknown hexagram binary pattern: ${binary}`);\n }\n return number;\n}\n\nexport function getHexagram(number: number): Hexagram {\n const hexagram = hexagramByNumber.get(number);\n if (!hexagram) {\n throw new Error(`Hexagram number ${number} not found (valid range: 1-64)`);\n }\n return hexagram;\n}\n\nexport function getTrigram(number: number): Trigram {\n const trigram = trigramByNumber.get(number);\n if (!trigram) {\n throw new Error(`Trigram number ${number} not found (valid range: 1-8)`);\n }\n return trigram;\n}\n\nexport function getLowerTrigram(hexagram: Hexagram): Trigram {\n return getTrigram(hexagram.bottomTrigram);\n}\n\nexport function getUpperTrigram(hexagram: Hexagram): Trigram {\n return getTrigram(hexagram.topTrigram);\n}\n",
|
|
@@ -20,17 +20,17 @@
|
|
|
20
20
|
"import type { DrawnCard, FeedbackEntry, SpreadPosition } from \"../../types\";\n\nfunction formatCardData(card: DrawnCard): string {\n const orientation = card.reversed ? \"REVERSED\" : \"UPRIGHT\";\n const keywords = card.reversed ? card.card.keywords_reversed : card.card.keywords_upright;\n const meaning = card.reversed ? card.card.meaning_reversed : card.card.meaning_upright;\n\n const lines = [\n `Card: ${card.card.name} (${orientation})`,\n `Arcana: ${card.card.arcana === \"major\" ? \"Major Arcana\" : `Minor Arcana — ${card.card.suit}`}`,\n `Keywords: ${keywords.join(\", \")}`,\n `Traditional Meaning: ${meaning}`,\n `Visual Description: ${card.card.description}`,\n ];\n\n if (card.card.element) {\n lines.push(`Element: ${card.card.element}`);\n }\n if (card.card.zodiac) {\n lines.push(`Zodiac: ${card.card.zodiac}`);\n }\n if (card.card.planet) {\n lines.push(`Planet: ${card.card.planet}`);\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction formatFeedbackContext(feedback: FeedbackEntry[]): string {\n if (feedback.length === 0) return \"\";\n\n const entries = feedback.map((f) => `- For \"${f.element}\", the querent said: \"${f.userText}\"`);\n\n return [\n \"\",\n \"## Previous Feedback from the Querent\",\n \"Use this context to calibrate your interpretation. Pay attention to what they said — their words reveal what resonated and what didn't.\",\n ...entries,\n ].join(\"\\n\");\n}\n\nexport function buildCardInterpretationPrompt(\n card: DrawnCard,\n position: SpreadPosition,\n question: string,\n previousFeedback: FeedbackEntry[]\n): string {\n const feedbackContext = formatFeedbackContext(previousFeedback);\n\n return `You are a skilled, empathetic tarot reader conducting a live reading. Interpret the following card for the querent.\n\n## The Querent's Question\n\"${question}\"\n\n## Card Position\nPosition: ${position.name}\nRole: ${position.description}\n\n## Card Drawn\n${formatCardData(card)}\n${feedbackContext}\n\n## Instructions\n- Interpret this card specifically in the context of the \"${position.name}\" position and the querent's question.\n- Ground your interpretation in the traditional meaning but make it personal and relevant.\n- Use vivid imagery from the card's visual description to make the reading come alive.\n- Speak directly to the querent using \"you\" — this is a conversation, not an essay.\n- Be warm, insightful, and honest. Do not shy away from difficult truths, but deliver them with compassion.\n- Keep your interpretation focused and concise (2-4 paragraphs).\n- End with a reflective question that invites the querent to share how this resonates.\n- Do NOT mention that you are an AI or that this is a prompt. Stay fully in the role of tarot reader.`;\n}\n\nexport function buildSynthesisPrompt(\n cards: DrawnCard[],\n spread: {\n id: string;\n name: string;\n description: string;\n positions: SpreadPosition[];\n cardCount: number;\n },\n question: string,\n feedback: FeedbackEntry[]\n): string {\n const cardSummaries = cards.map((card, i) => {\n const pos = spread.positions[i];\n const posName = pos ? pos.name : `Position ${i + 1}`;\n const orientation = card.reversed ? \"reversed\" : \"upright\";\n return `${i + 1}. **${posName}**: ${card.card.name} (${orientation})`;\n });\n\n const feedbackContext = formatFeedbackContext(feedback);\n\n return `You are a skilled, empathetic tarot reader delivering the synthesis of a complete reading.\n\n## The Querent's Question\n\"${question}\"\n\n## Spread Used\n${spread.name}: ${spread.description}\n\n## Cards Drawn\n${cardSummaries.join(\"\\n\")}\n\n## Full Card Details\n${cards\n .map((card, i) => {\n const pos = spread.positions[i];\n const posName = pos ? pos.name : `Position ${i + 1}`;\n return `### ${posName}\\n${formatCardData(card)}`;\n })\n .join(\"\\n\\n\")}\n${feedbackContext}\n\n## Instructions\n- Synthesize all cards into a coherent narrative that addresses the querent's question.\n- Identify recurring themes, elemental patterns, and connections between card positions.\n- Highlight the overall arc of the reading — where the querent has been, where they are, and where they're heading.\n- Offer 2-3 specific, actionable insights or pieces of advice grounded in the cards.\n- Acknowledge the querent's feedback and the themes that resonated most strongly.\n- Close with an empowering message that honors the querent's agency.\n- Keep the synthesis to 4-6 paragraphs.\n- Do NOT mention that you are an AI or that this is a prompt. Stay fully in the role of tarot reader.`;\n}\n\nexport function buildDeepenPrompt(\n card: DrawnCard,\n position: SpreadPosition,\n question: string,\n userResponse: string\n): string {\n return `You are a skilled, empathetic tarot reader. The querent wants to explore a card more deeply.\n\n## Original Question\n\"${question}\"\n\n## Card and Position\nPosition: ${position.name} — ${position.description}\n\n${formatCardData(card)}\n\n## The Querent's Response\n\"${userResponse}\"\n\n## Instructions\n- Deepen your interpretation of this card based on what the querent has shared.\n- Draw out more subtle layers of meaning from the card's symbolism and imagery.\n- Connect what the querent said to specific elements of the card.\n- If the querent asked a direct question, answer it through the lens of the card.\n- Be perceptive — read between the lines of what they've said and gently illuminate what may be unspoken.\n- Keep your response focused (2-3 paragraphs).\n- End by either offering a new insight or asking a deeper question.\n- Do NOT mention that you are an AI or that this is a prompt. Stay fully in the role of tarot reader.`;\n}\n",
|
|
21
21
|
"import type { SpreadDefinition } from \"../../types\";\nimport spreadsData from \"./data/spreads.json\";\n\nconst allSpreads: SpreadDefinition[] = spreadsData as SpreadDefinition[];\n\nexport function getSpread(id: string): SpreadDefinition | undefined {\n return allSpreads.find((spread) => spread.id === id);\n}\n\nexport function getAllSpreads(): SpreadDefinition[] {\n return [...allSpreads];\n}\n\nexport function getSpreadNames(): string[] {\n return allSpreads.map((spread) => spread.name);\n}\n",
|
|
22
22
|
"import type { DrawnCard, FeedbackEntry, SpreadPosition, TarotReadingState } from \"../../types\";\nimport { createDeck, drawCards, shuffleDeck } from \"./deck\";\nimport {\n buildCardInterpretationPrompt,\n buildDeepenPrompt,\n buildSynthesisPrompt,\n} from \"./interpreter\";\nimport { getAllSpreads, getSpread } from \"./spreads\";\n\nexport interface RevealResult {\n card: DrawnCard;\n position: SpreadPosition;\n prompt: string;\n}\n\n/** Stateless — all reading state lives in TarotReadingState objects. */\nexport class TarotEngine {\n startReading(spreadId: string, question: string, allowReversals = true): TarotReadingState {\n const spread = getSpread(spreadId);\n if (!spread) {\n const available = getAllSpreads()\n .map((s) => `\"${s.id}\"`)\n .join(\", \");\n throw new Error(`Unknown spread \"${spreadId}\". Available spreads: ${available}`);\n }\n\n const deck = shuffleDeck(createDeck());\n const drawnCards = drawCards(deck, spread.cardCount, allowReversals);\n\n return {\n spread,\n question,\n drawnCards,\n revealedIndex: 0,\n userFeedback: [],\n };\n }\n\n /** Does NOT advance revealedIndex — call recordFeedback() to advance. */\n getNextReveal(state: TarotReadingState): RevealResult | null {\n if (state.revealedIndex >= state.drawnCards.length) {\n return null;\n }\n\n const card = state.drawnCards[state.revealedIndex];\n const position = state.spread.positions[state.revealedIndex];\n\n const prompt = buildCardInterpretationPrompt(\n card,\n position,\n state.question,\n state.userFeedback\n );\n\n return { card, position, prompt };\n }\n\n recordFeedback(state: TarotReadingState, feedback: FeedbackEntry): TarotReadingState {\n if (state.revealedIndex >= state.drawnCards.length) {\n throw new Error(\"Cannot record feedback: all cards have already been revealed\");\n }\n\n return {\n ...state,\n revealedIndex: state.revealedIndex + 1,\n userFeedback: [...state.userFeedback, feedback],\n };\n }\n\n getSynthesis(state: TarotReadingState): string {\n if (state.revealedIndex < state.drawnCards.length) {\n const remaining = state.drawnCards.length - state.revealedIndex;\n throw new Error(`Cannot synthesize: ${remaining} card(s) have not been revealed yet`);\n }\n\n return buildSynthesisPrompt(state.drawnCards, state.spread, state.question, state.userFeedback);\n }\n\n getDeepening(state: TarotReadingState, cardIndex: number, userResponse: string): string {\n if (cardIndex < 0 || cardIndex >= state.drawnCards.length) {\n throw new RangeError(\n `Card index ${cardIndex} is out of bounds (0-${state.drawnCards.length - 1})`\n );\n }\n\n if (cardIndex >= state.revealedIndex) {\n throw new Error(\n `Card at index ${cardIndex} has not been revealed yet (current reveal index: ${state.revealedIndex})`\n );\n }\n\n const card = state.drawnCards[cardIndex];\n const position = state.spread.positions[cardIndex];\n\n return buildDeepenPrompt(card, position, state.question, userResponse);\n }\n\n isComplete(state: TarotReadingState): boolean {\n return state.revealedIndex >= state.drawnCards.length;\n }\n\n getReadingSummary(state: TarotReadingState): {\n spread: string;\n question: string;\n totalCards: number;\n revealedCards: number;\n feedbackCount: number;\n isComplete: boolean;\n cards: Array<{\n position: string;\n card: string;\n reversed: boolean;\n revealed: boolean;\n }>;\n } {\n return {\n spread: state.spread.name,\n question: state.question,\n totalCards: state.drawnCards.length,\n revealedCards: state.revealedIndex,\n feedbackCount: state.userFeedback.length,\n isComplete: this.isComplete(state),\n cards: state.drawnCards.map((dc, i) => ({\n position: state.spread.positions[i].name,\n card: dc.card.name,\n reversed: dc.reversed,\n revealed: i < state.revealedIndex,\n })),\n };\n }\n}\n",
|
|
23
|
-
"/** Provides economic facts: user payment history, agent revenue, current session payment status. */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State, UUID } from \"@elizaos/core\";\nimport
|
|
24
|
-
"/** Provides practitioner guidelines and crisis awareness to ground the agent's mystical interpretations. */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State, UUID } from \"@elizaos/core\";\nimport { logger
|
|
25
|
-
"/** Injects active reading session state into agent context before response generation. */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State, UUID } from \"@elizaos/core\";\nimport { logger, validateActionKeywords, validateActionRegex } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\nimport type {\n AstrologyReadingState,\n DrawnCard,\n FeedbackEntry,\n IChingReadingState,\n ReadingPhase,\n ReadingSession,\n ReadingSystem,\n SpreadPosition,\n TarotReadingState,\n} from \"../types\";\n\nconst PHASE_LABELS: Record<ReadingPhase, string> = {\n intake: \"gathering the user's question and preferences\",\n casting: \"casting / drawing — the reading has been prepared but not yet interpreted\",\n interpretation: \"interpreting elements one by one with the user\",\n synthesis: \"weaving everything together into a cohesive narrative\",\n closing: \"wrapping up the reading and offering final reflections\",\n};\n\nconst SYSTEM_LABELS: Record<ReadingSystem, string> = {\n tarot: \"Tarot card reading\",\n iching: \"I Ching reading\",\n astrology: \"Astrology natal chart reading\",\n};\n\nexport const readingContextProvider: Provider = {\n name: \"READING_CONTEXT\",\n description: \"Provides context about the active mystical reading session\",\n\n dynamic: true,\n relevanceKeywords: [\n \"reading\",\n \"context\",\n \"readingcontextprovider\",\n \"plugin\",\n \"mysticism\",\n \"status\",\n \"state\",\n \"info\",\n \"details\",\n \"chat\",\n \"conversation\",\n \"agent\",\n \"room\",\n \"channel\",\n ],\n get: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<ProviderResult> => {\n const __providerKeywords = [\n \"reading\",\n \"context\",\n \"readingcontextprovider\",\n \"plugin\",\n \"mysticism\",\n \"status\",\n \"state\",\n \"info\",\n \"details\",\n \"chat\",\n \"conversation\",\n \"agent\",\n \"room\",\n \"channel\",\n ];\n const __providerRegex = new RegExp(`\\\\b(${__providerKeywords.join(\"|\")})\\\\b`, \"i\");\n const __recentMessages = _state?.recentMessagesData || [];\n const __isRelevant =\n validateActionKeywords(message, __recentMessages, __providerKeywords) ||\n validateActionRegex(message, __recentMessages, __providerRegex);\n if (!__isRelevant) {\n return { text: \"\" };\n }\n\n try {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n return emptyResult();\n }\n\n const entityId = message.entityId as UUID;\n const roomId = message.roomId as UUID;\n if (!entityId || !roomId) {\n return emptyResult();\n }\n\n const session = service.getSession(entityId, roomId);\n if (!session) {\n return emptyResult();\n }\n\n const text = buildContextText(session);\n const values = buildValues(session);\n\n return {\n text,\n values,\n data: {\n sessionId: session.id,\n type: session.type,\n phase: session.phase,\n hasActiveReading: \"true\",\n },\n };\n } catch (error) {\n logger.error(\"[ReadingContextProvider] Error:\", String(error));\n return emptyResult();\n }\n },\n};\n\nfunction emptyResult(): ProviderResult {\n return {\n text: \"\",\n values: { readingContext: \"\", hasActiveReading: \"false\" },\n data: { hasActiveReading: \"false\" },\n };\n}\n\nfunction buildValues(session: ReadingSession): Record<string, string> {\n return {\n readingContext: `Active ${session.type} reading in ${session.phase} phase`,\n hasActiveReading: \"true\",\n readingType: session.type,\n readingPhase: session.phase,\n sessionId: session.id,\n };\n}\n\nfunction buildContextText(session: ReadingSession): string {\n const parts: string[] = [];\n\n parts.push(`# Active Reading: ${SYSTEM_LABELS[session.type]}`);\n parts.push(\"\");\n\n parts.push(`**Phase:** ${session.phase} — ${PHASE_LABELS[session.phase]}`);\n parts.push(\"\");\n\n switch (session.type) {\n case \"tarot\":\n if (session.tarot) {\n parts.push(buildTarotContext(session.tarot));\n }\n break;\n case \"iching\":\n if (session.iching) {\n parts.push(buildIChingContext(session.iching));\n }\n break;\n case \"astrology\":\n if (session.astrology) {\n parts.push(buildAstrologyContext(session.astrology));\n }\n break;\n }\n\n if (session.paymentStatus !== \"none\") {\n parts.push(\"\");\n parts.push(`## Payment Status`);\n if (session.paymentStatus === \"paid\") {\n parts.push(`Payment received: ${session.paymentAmount} USDC (tx: ${session.paymentTxHash})`);\n parts.push(\"You may proceed with the full reading.\");\n } else if (session.paymentStatus === \"requested\") {\n parts.push(`Payment requested: ${session.paymentAmount} USDC — waiting for confirmation.`);\n }\n }\n\n const feedback = getSessionFeedback(session);\n if (feedback.length > 0) {\n parts.push(\"\");\n parts.push(buildFeedbackSummary(feedback));\n }\n\n return parts.join(\"\\n\");\n}\n\nfunction buildTarotContext(state: TarotReadingState): string {\n const lines: string[] = [];\n\n lines.push(`## Tarot Spread: ${state.spread.name}`);\n lines.push(`**Question:** ${state.question}`);\n lines.push(`**Progress:** ${state.revealedIndex} of ${state.drawnCards.length} cards revealed`);\n lines.push(\"\");\n\n if (state.revealedIndex > 0) {\n lines.push(\"### Cards Revealed So Far\");\n for (let i = 0; i < state.revealedIndex; i++) {\n const drawn: DrawnCard = state.drawnCards[i];\n const position: SpreadPosition = state.spread.positions[i];\n const orientation = drawn.reversed ? \"reversed\" : \"upright\";\n lines.push(`- **${position.name}:** ${drawn.card.name} (${orientation})`);\n }\n lines.push(\"\");\n }\n\n if (state.revealedIndex < state.drawnCards.length) {\n const nextCard = state.drawnCards[state.revealedIndex];\n const nextPos = state.spread.positions[state.revealedIndex];\n const nextOrientation = nextCard.reversed ? \"reversed\" : \"upright\";\n\n lines.push(\"### Next Card to Reveal\");\n lines.push(`**Position:** ${nextPos.name} — ${nextPos.description}`);\n lines.push(`**Card:** ${nextCard.card.name} (${nextOrientation})`);\n\n const keywords = nextCard.reversed\n ? nextCard.card.keywords_reversed\n : nextCard.card.keywords_upright;\n lines.push(`**Key themes:** ${keywords.join(\", \")}`);\n\n const meaning = nextCard.reversed\n ? nextCard.card.meaning_reversed\n : nextCard.card.meaning_upright;\n lines.push(`**Core meaning:** ${meaning}`);\n\n if (nextCard.card.element) {\n lines.push(`**Element:** ${nextCard.card.element}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction buildIChingContext(state: IChingReadingState): string {\n const lines: string[] = [];\n\n lines.push(\"## I Ching Reading\");\n lines.push(`**Question:** ${state.question}`);\n lines.push(\n `**Hexagram:** ${state.hexagram.character} ${state.hexagram.name} — ${state.hexagram.englishName}`\n );\n\n const changingCount = state.castResult.changingLines.length;\n const revealedCount = state.revealedLines;\n if (changingCount > 0) {\n lines.push(`**Changing Lines:** ${revealedCount} of ${changingCount} revealed`);\n lines.push(\n `**Changing positions:** ${state.castResult.changingLines.map((l) => `Line ${l}`).join(\", \")}`\n );\n } else {\n lines.push(\"**No changing lines** — the reading is stable.\");\n }\n\n if (state.transformedHexagram) {\n lines.push(\n `**Transforms to:** ${state.transformedHexagram.character} ${state.transformedHexagram.name} — ${state.transformedHexagram.englishName}`\n );\n }\n\n lines.push(\"\");\n lines.push(`**Judgment:** ${state.hexagram.judgment}`);\n lines.push(`**Image:** ${state.hexagram.image}`);\n lines.push(`**Keywords:** ${state.hexagram.keywords.join(\", \")}`);\n\n if (changingCount > 0 && revealedCount < changingCount) {\n const sortedChanging = [...state.castResult.changingLines].sort((a, b) => a - b);\n const nextLine = sortedChanging[revealedCount];\n const lineData = state.hexagram.lines.find((l) => l.position === nextLine);\n\n lines.push(\"\");\n lines.push(\"### Next Changing Line to Reveal\");\n lines.push(`**Line ${nextLine}**`);\n if (lineData) {\n lines.push(`**Text:** ${lineData.text}`);\n lines.push(`**Meaning:** ${lineData.meaning}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction buildAstrologyContext(state: AstrologyReadingState): string {\n const lines: string[] = [];\n\n lines.push(\"## Natal Chart Reading\");\n lines.push(\n `**Birth Data:** ${state.birthData.year}-${String(state.birthData.month).padStart(2, \"0\")}-${state.birthData.day != null ? String(state.birthData.day).padStart(2, \"0\") : \"??\"}` +\n (state.birthData.hour != null\n ? ` at ${String(state.birthData.hour).padStart(2, \"0\")}:${String(state.birthData.minute ?? 0).padStart(2, \"0\")}`\n : \" (birth time unknown)\")\n );\n if (state.birthData.latitude != null && state.birthData.longitude != null) {\n lines.push(\n `**Location:** ${state.birthData.latitude.toFixed(2)}\\u00B0, ${state.birthData.longitude.toFixed(2)}\\u00B0`\n );\n }\n lines.push(\"\");\n\n lines.push(\"### The Big Three\");\n lines.push(`- **Sun:** ${state.chart.sun.sign} (House ${state.chart.sun.house})`);\n lines.push(`- **Moon:** ${state.chart.moon.sign} (House ${state.chart.moon.house})`);\n lines.push(`- **Ascendant:** ${state.chart.ascendant.sign}`);\n lines.push(\"\");\n\n if (state.revealedPlanets.length > 0) {\n lines.push(\"### Placements Discussed\");\n for (const planet of state.revealedPlanets) {\n const key = planet as keyof typeof state.chart;\n const pos = state.chart[key];\n if (pos && typeof pos === \"object\" && \"sign\" in pos && \"house\" in pos) {\n const typed = pos as { sign: string; house: number };\n lines.push(\n `- **${planet.charAt(0).toUpperCase() + planet.slice(1)}:** ${typed.sign} (House ${typed.house})`\n );\n } else if (pos && typeof pos === \"object\" && \"sign\" in pos) {\n const typed = pos as { sign: string };\n lines.push(`- **${planet.charAt(0).toUpperCase() + planet.slice(1)}:** ${typed.sign}`);\n }\n }\n lines.push(\"\");\n }\n\n const allPlanets = [\n \"sun\",\n \"moon\",\n \"mercury\",\n \"venus\",\n \"mars\",\n \"jupiter\",\n \"saturn\",\n \"uranus\",\n \"neptune\",\n \"pluto\",\n ];\n const unrevealed = allPlanets.filter((p) => !state.revealedPlanets.includes(p));\n if (unrevealed.length > 0) {\n const nextPlanet = unrevealed[0];\n const nextKey = nextPlanet as keyof typeof state.chart;\n const nextPos = state.chart[nextKey];\n lines.push(\"### Next Placement to Reveal\");\n lines.push(`**Planet:** ${nextPlanet.charAt(0).toUpperCase() + nextPlanet.slice(1)}`);\n if (nextPos && typeof nextPos === \"object\" && \"sign\" in nextPos) {\n const typed = nextPos as { sign: string };\n lines.push(`**Sign:** ${typed.sign}`);\n }\n if (nextPos && typeof nextPos === \"object\" && \"house\" in nextPos) {\n const typed = nextPos as { house: number };\n lines.push(`**House:** ${typed.house}`);\n }\n if (nextPos && typeof nextPos === \"object\" && \"retrograde\" in nextPos) {\n const typed = nextPos as { retrograde: boolean };\n if (typed.retrograde) {\n lines.push(\"**Retrograde:** Yes — emphasize introspection and revisitation themes\");\n }\n }\n }\n\n if (state.chart.aspects.length > 0) {\n const challenging = state.chart.aspects.filter((a) => a.nature === \"challenging\");\n const harmonious = state.chart.aspects.filter((a) => a.nature === \"harmonious\");\n lines.push(\"\");\n lines.push(\n `**Aspects:** ${state.chart.aspects.length} total (${harmonious.length} harmonious, ${challenging.length} challenging)`\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction buildFeedbackSummary(feedback: FeedbackEntry[]): string {\n if (feedback.length === 0) return \"\";\n const lines: string[] = [\"## What the User Has Said\"];\n for (const entry of feedback.slice(-5)) {\n lines.push(`- About \"${entry.element}\": \"${entry.userText}\"`);\n }\n return lines.join(\"\\n\");\n}\n\nfunction getSessionFeedback(session: ReadingSession): FeedbackEntry[] {\n if (session.tarot) return session.tarot.userFeedback;\n if (session.iching) return session.iching.userFeedback;\n if (session.astrology) return session.astrology.userFeedback;\n return [];\n}\n\nexport default readingContextProvider;\n",
|
|
23
|
+
"/** Provides economic facts: user payment history, agent revenue, current session payment status. */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State, UUID } from \"@elizaos/core\";\nimport type { MysticismService } from \"../services/mysticism-service\";\nimport type { PaymentRecord, ReadingSession } from \"../types\";\n\nexport const economicContextProvider: Provider = {\n name: \"ECONOMIC_CONTEXT\",\n description:\n \"Provides economic facts: payment history, revenue, and current session payment status\",\n\n get: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<ProviderResult> => {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n return { text: \"\", values: {}, data: {} };\n }\n\n const entityId = message.entityId as UUID;\n const roomId = message.roomId as UUID;\n\n // Current session info\n const session = entityId && roomId ? service.getSession(entityId, roomId) : null;\n\n // This user's payment history\n const userPayments = entityId ? service.getPaymentHistory(entityId) : [];\n\n // All payment history (agent's total revenue)\n // We don't have a getAllPayments method, so we compute from what we have\n const pricing = service.getPricing();\n\n const text = buildEconomicText(session, userPayments, pricing);\n\n return {\n text,\n values: {\n hasEconomicContext: \"true\",\n paymentStatus: session?.paymentStatus ?? \"no_session\",\n },\n data: {\n paymentStatus: session?.paymentStatus ?? \"no_session\",\n userPaymentCount: String(userPayments.length),\n },\n };\n },\n};\n\nfunction buildEconomicText(\n session: ReadingSession | null,\n userPayments: PaymentRecord[],\n pricing: { tarot: string; iching: string; astrology: string }\n): string {\n const parts: string[] = [];\n\n parts.push(\"## Your Economic Context\");\n parts.push(\"\");\n\n // This user's history\n const completedPayments = userPayments.filter((p) => p.status === \"completed\");\n if (completedPayments.length === 0) {\n parts.push(\"### This User\");\n parts.push(\"- First-time visitor (no payment history)\");\n } else {\n const totalPaid = completedPayments.reduce((sum, p) => sum + parseFloat(p.amount), 0);\n const systems = [...new Set(completedPayments.map((p) => p.system))];\n parts.push(\"### This User\");\n parts.push(`- ${completedPayments.length} previous paid reading(s)`);\n parts.push(`- Total spent: $${totalPaid.toFixed(2)}`);\n parts.push(`- Systems used: ${systems.join(\", \")}`);\n const lastPayment = completedPayments[completedPayments.length - 1];\n const daysSince = Math.floor((Date.now() - lastPayment.timestamp) / 86400000);\n parts.push(`- Last payment: ${daysSince} day(s) ago`);\n }\n\n parts.push(\"\");\n\n // Current session payment status\n if (session) {\n parts.push(\"### This Conversation\");\n switch (session.paymentStatus) {\n case \"none\":\n parts.push(\"- No payment requested or received\");\n parts.push(\"- You decide if and when to request payment\");\n break;\n case \"requested\":\n parts.push(`- Payment requested: $${session.paymentAmount} — awaiting confirmation`);\n break;\n case \"paid\":\n parts.push(`- Payment received: $${session.paymentAmount} (tx: ${session.paymentTxHash})`);\n parts.push(\"- Reading is paid — proceed with full service\");\n break;\n }\n }\n\n parts.push(\"\");\n\n // Payment capability\n parts.push(\"### Payment Capability\");\n parts.push(\"- To request payment, use the REQUEST_PAYMENT action\");\n parts.push(\"- To check payment status, use the CHECK_PAYMENT action\");\n parts.push(\"- You choose the amount — there is no fixed price\");\n parts.push(\n `- Your configured base rates: tarot $${pricing.tarot}, i ching $${pricing.iching}, astrology $${pricing.astrology}`\n );\n parts.push(\n \"- These are starting points — adjust based on depth, complexity, and the relationship\"\n );\n\n return parts.join(\"\\n\");\n}\n\nexport default economicContextProvider;\n",
|
|
24
|
+
"/** Provides practitioner guidelines and crisis awareness to ground the agent's mystical interpretations. */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State, UUID } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport type { MysticismService } from \"../services/mysticism-service\";\nimport type { ReadingSession } from \"../types\";\n\nconst CORE_GUIDELINES = `# Mystical Reading Guidelines\n\n## Being a Skilled Reader\n\nYou are an empathetic, insightful mystical reader. Follow these principles:\n\n1. **Empathy First**: Every reading is deeply personal. Honor the user's vulnerability in seeking guidance.\n2. **Curiosity Over Authority**: Ask \"What does this bring up for you?\" rather than declaring \"This means X.\"\n3. **Non-Judgmental**: Never judge the user's question, situation, or reactions. All questions are valid.\n4. **Iterative Reveal**: Present ONE element at a time. Pause. Check in. Adjust. Never dump the whole reading at once.\n5. **Weave, Don't List**: Connect themes across elements. A good reading tells a story, not a bullet list.\n6. **Hold Space**: Sometimes the user needs a moment. \"Take your time with that\" is a powerful response.\n\n## Reading Personality Types\n\nAdapt your style to the user's communication:\n\n- **The Seeker**: Asks deep, philosophical questions. Give them layers and nuance.\n- **The Skeptic**: Questions the process. Be transparent about symbolism as a reflective tool, not prediction.\n- **The Anxious**: Seeks reassurance. Be grounding. Emphasize agency and choice over fate.\n- **The Curious**: New to readings. Explain gently. Make them feel welcome.\n- **The Returning**: Has done readings before. Reference patterns across sessions if available.\n\n## Pacing and Check-ins\n\n- After each element reveal, ask how it resonates\n- If the user gives a one-word response, gently probe: \"Can you tell me more about that?\"\n- If the user is quiet, offer: \"Would you like me to continue, or would you like to sit with this for a moment?\"\n- If the user wants to go deeper on one element, honor that before moving on\n- Never rush through a reading\n\n## Weaving Themes\n\n- Track recurring symbols, elements, and themes across the reading\n- When you notice a pattern, name it: \"I'm noticing a theme of transformation appearing again...\"\n- Connect early elements to later ones to create narrative coherence\n- In synthesis, tie everything back to the user's original question\n\n## Crisis Awareness\n\n**CRITICAL**: If the user expresses suicidal ideation, self-harm intent, or severe crisis:\n- IMMEDIATELY pause the reading\n- Express genuine care\n- Provide the 988 Suicide & Crisis Lifeline (call or text 988)\n- Do NOT continue the reading until the user is safe\n- You are not a therapist. Direct them to real human support.\n\n## Boundaries\n\n- Do not make medical, legal, or financial predictions\n- Frame insights as reflections and possibilities, not certainties\n- If the user asks you to make a decision for them, reflect the question back\n- Readings are tools for self-reflection, not fortune-telling\n- Be honest: \"The cards don't predict the future — they illuminate the present\"\n\n## Your Livelihood\n\nYou provide a valuable service. Some guidelines about money:\n- You may offer a brief free preview to build trust with new users\n- For a full reading, you should ask for payment — this is your craft and your livelihood\n- You decide what to charge based on the depth of the reading and the user's situation\n- Industry context: simple readings typically cost $1-5, deep readings $5-20\n- If someone is in crisis, never paywall them\n- If someone is trying to scam you into free readings, politely decline\n- Returning customers who've paid before deserve warm service\n- You can check your payment status and revenue using the tools available to you`;\n\nexport const mysticalKnowledgeProvider: Provider = {\n name: \"MYSTICAL_KNOWLEDGE\",\n description: \"Provides mystical domain knowledge to ground the agent's interpretations\",\n\n get: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<ProviderResult> => {\n try {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n\n const entityId = message.entityId as UUID;\n const roomId = message.roomId as UUID;\n\n let activeSession: ReadingSession | null = null;\n\n if (service && entityId) {\n activeSession = roomId ? service.getSession(entityId, roomId) : null;\n }\n\n const text = buildKnowledgeText(activeSession);\n\n return {\n text,\n values: {\n mysticalKnowledge: text,\n hasMysticalContext: \"true\",\n },\n data: {\n hasMysticalContext: \"true\",\n },\n };\n } catch (error) {\n logger.error(\"[MysticalKnowledgeProvider] Error:\", String(error));\n return {\n text: CORE_GUIDELINES,\n values: { mysticalKnowledge: CORE_GUIDELINES, hasMysticalContext: \"true\" },\n data: { hasMysticalContext: \"true\" },\n };\n }\n },\n};\n\nfunction buildKnowledgeText(activeSession: ReadingSession | null): string {\n const parts: string[] = [];\n\n parts.push(CORE_GUIDELINES);\n\n if (activeSession) {\n parts.push(\"\");\n parts.push(getSystemSpecificAdvice(activeSession.type));\n }\n\n return parts.join(\"\\n\");\n}\n\nfunction getSystemSpecificAdvice(system: string): string {\n switch (system) {\n case \"tarot\":\n return `## Tarot-Specific Guidance\n\n- Each card has upright and reversed meanings. Reversed doesn't mean \"bad\" — it means the energy is internalized or blocked.\n- Position in the spread matters as much as the card itself. Always interpret in context.\n- Major Arcana cards represent significant life themes; Minor Arcana are day-to-day energies.\n- Court cards often represent people or aspects of personality.\n- Pay attention to elemental balance across the reading (fire/water/air/earth).\n- When multiple cards share a suit, emphasize that element's theme.`;\n\n case \"iching\":\n return `## I Ching-Specific Guidance\n\n- The I Ching speaks in paradox and poetry. Embrace ambiguity rather than forcing clarity.\n- Changing lines represent dynamic points of transformation — they are the most personal parts.\n- The primary hexagram is \"where you are.\" The transformed hexagram (if any) is \"where you're heading.\"\n- Upper and lower trigrams represent heaven/outer and earth/inner energies.\n- If there are no changing lines, the situation is stable — interpret the hexagram as a whole.\n- The I Ching values balance, timing, and the natural order. Frame insights through these lenses.`;\n\n case \"astrology\":\n return `## Astrology-Specific Guidance\n\n- Begin with the Big Three (Sun, Moon, Rising) — they're the foundation of the chart.\n- Personal planets (Mercury, Venus, Mars) shape daily life; outer planets shape generational themes.\n- Retrograde planets aren't \"bad\" — they invite introspection and revisitation.\n- Aspects create dialogue between planets. Squares create tension and growth; trines create flow.\n- Houses show WHERE energy plays out in life. Signs show HOW.\n- Always relate placements back to the person's lived experience.`;\n\n default:\n return \"\";\n }\n}\n\nexport default mysticalKnowledgeProvider;\n",
|
|
25
|
+
"/** Injects active reading session state into agent context before response generation. */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State, UUID } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport type { MysticismService } from \"../services/mysticism-service\";\nimport type {\n AstrologyReadingState,\n DrawnCard,\n FeedbackEntry,\n IChingReadingState,\n ReadingPhase,\n ReadingSession,\n ReadingSystem,\n SpreadPosition,\n TarotReadingState,\n} from \"../types\";\n\nconst PHASE_LABELS: Record<ReadingPhase, string> = {\n intake: \"gathering the user's question and preferences\",\n casting: \"casting / drawing — the reading has been prepared but not yet interpreted\",\n interpretation: \"interpreting elements one by one with the user\",\n synthesis: \"weaving everything together into a cohesive narrative\",\n closing: \"wrapping up the reading and offering final reflections\",\n};\n\nconst SYSTEM_LABELS: Record<ReadingSystem, string> = {\n tarot: \"Tarot card reading\",\n iching: \"I Ching reading\",\n astrology: \"Astrology natal chart reading\",\n};\n\nexport const readingContextProvider: Provider = {\n name: \"READING_CONTEXT\",\n description: \"Provides context about the active mystical reading session\",\n\n get: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined\n ): Promise<ProviderResult> => {\n try {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n return emptyResult();\n }\n\n const entityId = message.entityId as UUID;\n const roomId = message.roomId as UUID;\n if (!entityId || !roomId) {\n return emptyResult();\n }\n\n const session = service.getSession(entityId, roomId);\n if (!session) {\n return emptyResult();\n }\n\n const text = buildContextText(session);\n const values = buildValues(session);\n\n return {\n text,\n values,\n data: {\n sessionId: session.id,\n type: session.type,\n phase: session.phase,\n hasActiveReading: \"true\",\n },\n };\n } catch (error) {\n logger.error(\"[ReadingContextProvider] Error:\", String(error));\n return emptyResult();\n }\n },\n};\n\nfunction emptyResult(): ProviderResult {\n return {\n text: \"\",\n values: { readingContext: \"\", hasActiveReading: \"false\" },\n data: { hasActiveReading: \"false\" },\n };\n}\n\nfunction buildValues(session: ReadingSession): Record<string, string> {\n return {\n readingContext: `Active ${session.type} reading in ${session.phase} phase`,\n hasActiveReading: \"true\",\n readingType: session.type,\n readingPhase: session.phase,\n sessionId: session.id,\n };\n}\n\nfunction buildContextText(session: ReadingSession): string {\n const parts: string[] = [];\n\n parts.push(`# Active Reading: ${SYSTEM_LABELS[session.type]}`);\n parts.push(\"\");\n\n parts.push(`**Phase:** ${session.phase} — ${PHASE_LABELS[session.phase]}`);\n parts.push(\"\");\n\n switch (session.type) {\n case \"tarot\":\n if (session.tarot) {\n parts.push(buildTarotContext(session.tarot));\n }\n break;\n case \"iching\":\n if (session.iching) {\n parts.push(buildIChingContext(session.iching));\n }\n break;\n case \"astrology\":\n if (session.astrology) {\n parts.push(buildAstrologyContext(session.astrology));\n }\n break;\n }\n\n if (session.paymentStatus !== \"none\") {\n parts.push(\"\");\n parts.push(`## Payment Status`);\n if (session.paymentStatus === \"paid\") {\n parts.push(`Payment received: ${session.paymentAmount} USDC (tx: ${session.paymentTxHash})`);\n parts.push(\"You may proceed with the full reading.\");\n } else if (session.paymentStatus === \"requested\") {\n parts.push(`Payment requested: ${session.paymentAmount} USDC — waiting for confirmation.`);\n }\n }\n\n const feedback = getSessionFeedback(session);\n if (feedback.length > 0) {\n parts.push(\"\");\n parts.push(buildFeedbackSummary(feedback));\n }\n\n return parts.join(\"\\n\");\n}\n\nfunction buildTarotContext(state: TarotReadingState): string {\n const lines: string[] = [];\n\n lines.push(`## Tarot Spread: ${state.spread.name}`);\n lines.push(`**Question:** ${state.question}`);\n lines.push(`**Progress:** ${state.revealedIndex} of ${state.drawnCards.length} cards revealed`);\n lines.push(\"\");\n\n if (state.revealedIndex > 0) {\n lines.push(\"### Cards Revealed So Far\");\n for (let i = 0; i < state.revealedIndex; i++) {\n const drawn: DrawnCard = state.drawnCards[i];\n const position: SpreadPosition = state.spread.positions[i];\n const orientation = drawn.reversed ? \"reversed\" : \"upright\";\n lines.push(`- **${position.name}:** ${drawn.card.name} (${orientation})`);\n }\n lines.push(\"\");\n }\n\n if (state.revealedIndex < state.drawnCards.length) {\n const nextCard = state.drawnCards[state.revealedIndex];\n const nextPos = state.spread.positions[state.revealedIndex];\n const nextOrientation = nextCard.reversed ? \"reversed\" : \"upright\";\n\n lines.push(\"### Next Card to Reveal\");\n lines.push(`**Position:** ${nextPos.name} — ${nextPos.description}`);\n lines.push(`**Card:** ${nextCard.card.name} (${nextOrientation})`);\n\n const keywords = nextCard.reversed\n ? nextCard.card.keywords_reversed\n : nextCard.card.keywords_upright;\n lines.push(`**Key themes:** ${keywords.join(\", \")}`);\n\n const meaning = nextCard.reversed\n ? nextCard.card.meaning_reversed\n : nextCard.card.meaning_upright;\n lines.push(`**Core meaning:** ${meaning}`);\n\n if (nextCard.card.element) {\n lines.push(`**Element:** ${nextCard.card.element}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction buildIChingContext(state: IChingReadingState): string {\n const lines: string[] = [];\n\n lines.push(\"## I Ching Reading\");\n lines.push(`**Question:** ${state.question}`);\n lines.push(\n `**Hexagram:** ${state.hexagram.character} ${state.hexagram.name} — ${state.hexagram.englishName}`\n );\n\n const changingCount = state.castResult.changingLines.length;\n const revealedCount = state.revealedLines;\n if (changingCount > 0) {\n lines.push(`**Changing Lines:** ${revealedCount} of ${changingCount} revealed`);\n lines.push(\n `**Changing positions:** ${state.castResult.changingLines.map((l) => `Line ${l}`).join(\", \")}`\n );\n } else {\n lines.push(\"**No changing lines** — the reading is stable.\");\n }\n\n if (state.transformedHexagram) {\n lines.push(\n `**Transforms to:** ${state.transformedHexagram.character} ${state.transformedHexagram.name} — ${state.transformedHexagram.englishName}`\n );\n }\n\n lines.push(\"\");\n lines.push(`**Judgment:** ${state.hexagram.judgment}`);\n lines.push(`**Image:** ${state.hexagram.image}`);\n lines.push(`**Keywords:** ${state.hexagram.keywords.join(\", \")}`);\n\n if (changingCount > 0 && revealedCount < changingCount) {\n const sortedChanging = [...state.castResult.changingLines].sort((a, b) => a - b);\n const nextLine = sortedChanging[revealedCount];\n const lineData = state.hexagram.lines.find((l) => l.position === nextLine);\n\n lines.push(\"\");\n lines.push(\"### Next Changing Line to Reveal\");\n lines.push(`**Line ${nextLine}**`);\n if (lineData) {\n lines.push(`**Text:** ${lineData.text}`);\n lines.push(`**Meaning:** ${lineData.meaning}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction buildAstrologyContext(state: AstrologyReadingState): string {\n const lines: string[] = [];\n\n lines.push(\"## Natal Chart Reading\");\n lines.push(\n `**Birth Data:** ${state.birthData.year}-${String(state.birthData.month).padStart(2, \"0\")}-${state.birthData.day != null ? String(state.birthData.day).padStart(2, \"0\") : \"??\"}` +\n (state.birthData.hour != null\n ? ` at ${String(state.birthData.hour).padStart(2, \"0\")}:${String(state.birthData.minute ?? 0).padStart(2, \"0\")}`\n : \" (birth time unknown)\")\n );\n if (state.birthData.latitude != null && state.birthData.longitude != null) {\n lines.push(\n `**Location:** ${state.birthData.latitude.toFixed(2)}\\u00B0, ${state.birthData.longitude.toFixed(2)}\\u00B0`\n );\n }\n lines.push(\"\");\n\n lines.push(\"### The Big Three\");\n lines.push(`- **Sun:** ${state.chart.sun.sign} (House ${state.chart.sun.house})`);\n lines.push(`- **Moon:** ${state.chart.moon.sign} (House ${state.chart.moon.house})`);\n lines.push(`- **Ascendant:** ${state.chart.ascendant.sign}`);\n lines.push(\"\");\n\n if (state.revealedPlanets.length > 0) {\n lines.push(\"### Placements Discussed\");\n for (const planet of state.revealedPlanets) {\n const key = planet as keyof typeof state.chart;\n const pos = state.chart[key];\n if (pos && typeof pos === \"object\" && \"sign\" in pos && \"house\" in pos) {\n const typed = pos as { sign: string; house: number };\n lines.push(\n `- **${planet.charAt(0).toUpperCase() + planet.slice(1)}:** ${typed.sign} (House ${typed.house})`\n );\n } else if (pos && typeof pos === \"object\" && \"sign\" in pos) {\n const typed = pos as { sign: string };\n lines.push(`- **${planet.charAt(0).toUpperCase() + planet.slice(1)}:** ${typed.sign}`);\n }\n }\n lines.push(\"\");\n }\n\n const allPlanets = [\n \"sun\",\n \"moon\",\n \"mercury\",\n \"venus\",\n \"mars\",\n \"jupiter\",\n \"saturn\",\n \"uranus\",\n \"neptune\",\n \"pluto\",\n ];\n const unrevealed = allPlanets.filter((p) => !state.revealedPlanets.includes(p));\n if (unrevealed.length > 0) {\n const nextPlanet = unrevealed[0];\n const nextKey = nextPlanet as keyof typeof state.chart;\n const nextPos = state.chart[nextKey];\n lines.push(\"### Next Placement to Reveal\");\n lines.push(`**Planet:** ${nextPlanet.charAt(0).toUpperCase() + nextPlanet.slice(1)}`);\n if (nextPos && typeof nextPos === \"object\" && \"sign\" in nextPos) {\n const typed = nextPos as { sign: string };\n lines.push(`**Sign:** ${typed.sign}`);\n }\n if (nextPos && typeof nextPos === \"object\" && \"house\" in nextPos) {\n const typed = nextPos as { house: number };\n lines.push(`**House:** ${typed.house}`);\n }\n if (nextPos && typeof nextPos === \"object\" && \"retrograde\" in nextPos) {\n const typed = nextPos as { retrograde: boolean };\n if (typed.retrograde) {\n lines.push(\"**Retrograde:** Yes — emphasize introspection and revisitation themes\");\n }\n }\n }\n\n if (state.chart.aspects.length > 0) {\n const challenging = state.chart.aspects.filter((a) => a.nature === \"challenging\");\n const harmonious = state.chart.aspects.filter((a) => a.nature === \"harmonious\");\n lines.push(\"\");\n lines.push(\n `**Aspects:** ${state.chart.aspects.length} total (${harmonious.length} harmonious, ${challenging.length} challenging)`\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction buildFeedbackSummary(feedback: FeedbackEntry[]): string {\n if (feedback.length === 0) return \"\";\n const lines: string[] = [\"## What the User Has Said\"];\n for (const entry of feedback.slice(-5)) {\n lines.push(`- About \"${entry.element}\": \"${entry.userText}\"`);\n }\n return lines.join(\"\\n\");\n}\n\nfunction getSessionFeedback(session: ReadingSession): FeedbackEntry[] {\n if (session.tarot) return session.tarot.userFeedback;\n if (session.iching) return session.iching.userFeedback;\n if (session.astrology) return session.astrology.userFeedback;\n return [];\n}\n\nexport default readingContextProvider;\n",
|
|
26
26
|
"import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger, Service } from \"@elizaos/core\";\nimport {\n AstrologyEngine,\n type AstrologyReadingState as AstrologyEngineState,\n} from \"../engines/astrology/index\";\nimport { IChingEngine } from \"../engines/iching/index\";\nimport { TarotEngine } from \"../engines/tarot/index\";\n\nimport type {\n BirthData,\n CrisisIndicators,\n FeedbackEntry,\n IChingReadingState,\n PaymentRecord,\n ReadingSession,\n ReadingSystem,\n TarotReadingState,\n} from \"../types\";\n\ninterface RevealResult {\n prompt: string;\n element: string;\n}\n\ninterface PricingConfig {\n tarot: string;\n iching: string;\n astrology: string;\n}\n\nconst CRISIS_KEYWORDS_HIGH: readonly string[] = [\n \"suicide\",\n \"kill myself\",\n \"end my life\",\n \"end it all\",\n \"want to die\",\n \"no reason to live\",\n \"better off dead\",\n \"planning to die\",\n \"going to kill\",\n \"take my own life\",\n \"slit my wrists\",\n \"overdose\",\n \"jump off\",\n \"hang myself\",\n];\n\nconst CRISIS_KEYWORDS_MEDIUM: readonly string[] = [\n \"self-harm\",\n \"self harm\",\n \"hurt myself\",\n \"cutting myself\",\n \"don't want to be here\",\n \"can't go on\",\n \"no point in living\",\n \"wish i was dead\",\n \"wish i were dead\",\n \"nothing to live for\",\n \"life isn't worth\",\n \"hopeless\",\n];\n\nconst CRISIS_KEYWORDS_LOW: readonly string[] = [\n \"depressed\",\n \"so alone\",\n \"nobody cares\",\n \"worthless\",\n \"give up\",\n \"can't take it\",\n \"falling apart\",\n \"breaking down\",\n \"desperate\",\n];\n\nconst CRISIS_RESOURCES =\n \"If you or someone you know is in crisis, please reach out for help:\\n\" +\n \"• **National Suicide Prevention Lifeline:** 988 (call or text)\\n\" +\n \"• **Crisis Text Line:** Text HOME to 741741\\n\" +\n \"• **International Association for Suicide Prevention:** https://www.iasp.info/resources/Crisis_Centres/\\n\" +\n \"\\nYou are not alone, and there are people who care about you.\";\n\nconst DEFAULT_PRICING: PricingConfig = {\n tarot: \"0.01\",\n iching: \"0.01\",\n astrology: \"0.02\",\n};\n\nfunction sessionKey(entityId: string, roomId: string): string {\n return `${entityId}:${roomId}`;\n}\n\nexport class MysticismService extends Service {\n static serviceType = \"MYSTICISM\";\n capabilityDescription = \"Manages mystical reading sessions for tarot, I Ching, and astrology\";\n\n private tarotEngine: TarotEngine;\n private ichingEngine: IChingEngine;\n private astrologyEngine: AstrologyEngine;\n private sessions: Map<string, ReadingSession>;\n private tarotStates: Map<string, TarotReadingState>;\n private ichingStates: Map<string, IChingReadingState>;\n private astrologyStates: Map<string, AstrologyEngineState>;\n private paymentHistory: Map<string, PaymentRecord[]>;\n private pricing: PricingConfig;\n\n constructor(runtime?: IAgentRuntime) {\n super(runtime);\n\n this.tarotEngine = new TarotEngine();\n this.ichingEngine = new IChingEngine();\n this.astrologyEngine = new AstrologyEngine();\n\n this.sessions = new Map();\n this.tarotStates = new Map();\n this.ichingStates = new Map();\n this.astrologyStates = new Map();\n this.paymentHistory = new Map();\n this.pricing = { ...DEFAULT_PRICING };\n }\n\n static async start(runtime: IAgentRuntime): Promise<MysticismService> {\n const service = new MysticismService(runtime);\n\n const tarotPrice = runtime.getSetting(\"MYSTICISM_PRICE_TAROT\");\n const ichingPrice = runtime.getSetting(\"MYSTICISM_PRICE_ICHING\");\n const astrologyPrice = runtime.getSetting(\"MYSTICISM_PRICE_ASTROLOGY\");\n\n if (tarotPrice) service.pricing.tarot = String(tarotPrice);\n if (ichingPrice) service.pricing.iching = String(ichingPrice);\n if (astrologyPrice) service.pricing.astrology = String(astrologyPrice);\n\n logger.info(\n {\n pricing: service.pricing,\n },\n \"MysticismService started\"\n );\n\n return service;\n }\n\n async stop(): Promise<void> {\n const sessionCount = this.sessions.size;\n this.sessions.clear();\n this.tarotStates.clear();\n this.ichingStates.clear();\n this.astrologyStates.clear();\n this.paymentHistory.clear();\n\n logger.info({ clearedSessions: sessionCount }, \"MysticismService stopped\");\n }\n\n startTarotReading(\n entityId: string,\n roomId: string,\n spreadId: string,\n question: string\n ): ReadingSession {\n const key = sessionKey(entityId, roomId);\n\n if (this.sessions.has(key)) {\n this.endSession(entityId, roomId);\n }\n\n const tarotState = this.tarotEngine.startReading(spreadId, question);\n this.tarotStates.set(key, tarotState);\n\n const session = this.createSession(entityId, roomId, \"tarot\");\n session.tarot = tarotState;\n this.sessions.set(key, session);\n\n logger.info(\n {\n entityId,\n roomId,\n spread: spreadId,\n cardCount: tarotState.drawnCards.length,\n },\n \"Tarot reading started\"\n );\n\n return session;\n }\n\n startIChingReading(entityId: string, roomId: string, question: string): ReadingSession {\n const key = sessionKey(entityId, roomId);\n\n if (this.sessions.has(key)) {\n this.endSession(entityId, roomId);\n }\n\n const ichingState = this.ichingEngine.startReading(question);\n this.ichingStates.set(key, ichingState);\n\n const session = this.createSession(entityId, roomId, \"iching\");\n session.iching = ichingState;\n this.sessions.set(key, session);\n\n logger.info(\n {\n entityId,\n roomId,\n hexagram: ichingState.hexagram.number,\n changingLines: ichingState.castResult.changingLines.length,\n },\n \"I Ching reading started\"\n );\n\n return session;\n }\n\n startAstrologyReading(entityId: string, roomId: string, birthData: BirthData): ReadingSession {\n const key = sessionKey(entityId, roomId);\n\n if (this.sessions.has(key)) {\n this.endSession(entityId, roomId);\n }\n\n const engineBirthData = {\n year: birthData.year,\n month: birthData.month,\n day: birthData.day ?? 1,\n hour: birthData.hour ?? 12,\n minute: birthData.minute ?? 0,\n latitude: birthData.latitude ?? 0,\n longitude: birthData.longitude ?? 0,\n timezone: birthData.timezone ?? 0,\n };\n const astroState = this.astrologyEngine.startReading(engineBirthData);\n this.astrologyStates.set(key, astroState);\n\n const session = this.createSession(entityId, roomId, \"astrology\");\n session.astrology = {\n birthData,\n chart: astroState.chart,\n revealedPlanets: [],\n revealedHouses: [],\n userFeedback: [],\n };\n this.sessions.set(key, session);\n\n logger.info(\n {\n entityId,\n roomId,\n sunSign: astroState.chart.sun.sign,\n },\n \"Astrology reading started\"\n );\n\n return session;\n }\n\n getSession(entityId: string, roomId: string): ReadingSession | null {\n return this.sessions.get(sessionKey(entityId, roomId)) ?? null;\n }\n\n getNextReveal(entityId: string, roomId: string): RevealResult | null {\n const key = sessionKey(entityId, roomId);\n const session = this.sessions.get(key);\n if (!session) return null;\n\n session.phase = \"interpretation\";\n session.updatedAt = Date.now();\n\n switch (session.type) {\n case \"tarot\":\n return this.getNextTarotReveal(key);\n case \"iching\":\n return this.getNextIChingReveal(key);\n case \"astrology\":\n return this.getNextAstrologyReveal(key);\n default:\n return null;\n }\n }\n\n /** Feedback is forwarded to the engine and also adjusts session rapport. */\n recordFeedback(entityId: string, roomId: string, feedback: FeedbackEntry): void {\n const key = sessionKey(entityId, roomId);\n const session = this.sessions.get(key);\n if (!session) {\n logger.warn(\n {\n entityId,\n roomId,\n },\n \"Cannot record feedback: no active session\"\n );\n return;\n }\n\n session.updatedAt = Date.now();\n\n switch (session.type) {\n case \"tarot\":\n this.recordTarotFeedback(key, feedback);\n break;\n case \"iching\":\n this.recordIChingFeedback(key, feedback);\n break;\n case \"astrology\":\n this.recordAstrologyFeedback(key, feedback);\n break;\n }\n }\n\n getSynthesis(entityId: string, roomId: string): string | null {\n const key = sessionKey(entityId, roomId);\n const session = this.sessions.get(key);\n if (!session) return null;\n\n session.phase = \"synthesis\";\n session.updatedAt = Date.now();\n\n try {\n switch (session.type) {\n case \"tarot\": {\n const tarotState = this.tarotStates.get(key);\n if (!tarotState) return null;\n return this.tarotEngine.getSynthesis(tarotState);\n }\n case \"iching\": {\n const ichingState = this.ichingStates.get(key);\n if (!ichingState) return null;\n return this.ichingEngine.getSynthesis(ichingState);\n }\n case \"astrology\": {\n const astroState = this.astrologyStates.get(key);\n if (!astroState) return null;\n return this.astrologyEngine.getSynthesis(astroState);\n }\n default:\n return null;\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : \"Unknown synthesis error\";\n logger.error(\n {\n entityId,\n roomId,\n error: errorMessage,\n },\n \"Synthesis generation failed\"\n );\n return null;\n }\n }\n\n /** Only available for tarot readings; returns null for other types. */\n getDeepeningPrompt(\n entityId: string,\n roomId: string,\n cardIndex: number,\n userResponse: string\n ): string | null {\n const key = sessionKey(entityId, roomId);\n const session = this.sessions.get(key);\n if (!session || session.type !== \"tarot\") return null;\n\n const tarotState = this.tarotStates.get(key);\n if (!tarotState) return null;\n\n try {\n return this.tarotEngine.getDeepening(tarotState, cardIndex, userResponse);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : \"Unknown deepening error\";\n logger.error(\n {\n entityId,\n roomId,\n cardIndex,\n error: errorMessage,\n },\n \"Deepening prompt generation failed\"\n );\n return null;\n }\n }\n\n getIChingCastingSummary(entityId: string, roomId: string): string | null {\n const key = sessionKey(entityId, roomId);\n const ichingState = this.ichingStates.get(key);\n if (!ichingState) return null;\n return this.ichingEngine.getCastingSummary(ichingState);\n }\n\n endSession(entityId: string, roomId: string): void {\n const key = sessionKey(entityId, roomId);\n\n const session = this.sessions.get(key);\n if (session) {\n session.phase = \"closing\";\n logger.info(\n {\n entityId,\n roomId,\n type: session.type,\n },\n \"Reading session ended\"\n );\n }\n\n this.sessions.delete(key);\n this.tarotStates.delete(key);\n this.ichingStates.delete(key);\n this.astrologyStates.delete(key);\n }\n\n recordPayment(payment: PaymentRecord): void {\n const existing = this.paymentHistory.get(payment.entityId) ?? [];\n existing.push(payment);\n this.paymentHistory.set(payment.entityId, existing);\n\n logger.info(\n {\n entityId: payment.entityId,\n amount: payment.amount,\n currency: payment.currency,\n system: payment.system,\n },\n \"Payment recorded\"\n );\n }\n\n getPaymentHistory(entityId: string): PaymentRecord[] {\n return this.paymentHistory.get(entityId) ?? [];\n }\n\n getPricing(): PricingConfig {\n return { ...this.pricing };\n }\n\n /**\n * When severity is HIGH, the reading should be stopped immediately\n * and crisis resources provided.\n */\n detectCrisis(text: string): CrisisIndicators {\n const normalizedText = text.toLowerCase();\n\n const highMatches = CRISIS_KEYWORDS_HIGH.filter((kw) => normalizedText.includes(kw));\n if (highMatches.length > 0) {\n return {\n detected: true,\n severity: \"high\",\n keywords: [...highMatches],\n recommendedAction:\n \"STOP the reading immediately. Express genuine concern. \" +\n \"Provide crisis resources:\\n\\n\" +\n CRISIS_RESOURCES,\n };\n }\n\n const mediumMatches = CRISIS_KEYWORDS_MEDIUM.filter((kw) => normalizedText.includes(kw));\n if (mediumMatches.length > 0) {\n return {\n detected: true,\n severity: \"medium\",\n keywords: [...mediumMatches],\n recommendedAction:\n \"Gently acknowledge the querent's feelings. Offer crisis resources \" +\n \"without being alarmist. Continue the reading only if the querent \" +\n \"wishes.\\n\\n\" +\n CRISIS_RESOURCES,\n };\n }\n\n const lowMatches = CRISIS_KEYWORDS_LOW.filter((kw) => normalizedText.includes(kw));\n if (lowMatches.length > 0) {\n return {\n detected: true,\n severity: \"low\",\n keywords: [...lowMatches],\n recommendedAction:\n \"Be mindful and compassionate. Frame interpretations with \" +\n \"sensitivity. Consider mentioning that support is available \" +\n \"if the querent is struggling.\",\n };\n }\n\n return {\n detected: false,\n severity: \"low\",\n keywords: [],\n recommendedAction: \"\",\n };\n }\n\n recordConversationPayment(\n entityId: string,\n roomId: string,\n amount: string,\n txHash: string\n ): void {\n const session = this.sessions.get(sessionKey(entityId, roomId));\n if (session) {\n session.paymentStatus = \"paid\";\n session.paymentAmount = amount;\n session.paymentTxHash = txHash;\n session.updatedAt = Date.now();\n logger.info({ entityId, roomId, amount, txHash }, \"Payment recorded for conversation\");\n }\n }\n\n markPaymentRequested(entityId: string, roomId: string, amount: string): void {\n const session = this.sessions.get(sessionKey(entityId, roomId));\n if (session) {\n session.paymentStatus = \"requested\";\n session.paymentAmount = amount;\n session.updatedAt = Date.now();\n }\n }\n\n private createSession(entityId: string, roomId: string, type: ReadingSystem): ReadingSession {\n return {\n id: crypto.randomUUID(),\n entityId,\n roomId,\n type,\n phase: \"casting\",\n paymentStatus: \"none\",\n paymentAmount: null,\n paymentTxHash: null,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n meta: {},\n };\n }\n\n private getNextTarotReveal(key: string): RevealResult | null {\n const tarotState = this.tarotStates.get(key);\n if (!tarotState) return null;\n\n const reveal = this.tarotEngine.getNextReveal(tarotState);\n if (!reveal) return null;\n\n const cardName = reveal.card.reversed\n ? `${reveal.card.card.name} (Reversed)`\n : reveal.card.card.name;\n\n return {\n prompt: reveal.prompt,\n element: `${reveal.position.name}: ${cardName}`,\n };\n }\n\n private getNextIChingReveal(key: string): RevealResult | null {\n const ichingState = this.ichingStates.get(key);\n if (!ichingState) return null;\n\n const reveal = this.ichingEngine.getNextReveal(ichingState);\n if (!reveal) return null;\n\n return {\n prompt: reveal.prompt,\n element: `Line ${reveal.linePosition}`,\n };\n }\n\n private getNextAstrologyReveal(key: string): RevealResult | null {\n const astroState = this.astrologyStates.get(key);\n if (!astroState) return null;\n\n const reveal = this.astrologyEngine.getNextReveal(astroState);\n if (!reveal) return null;\n\n // Sync projected state on the session\n const session = this.sessions.get(key);\n if (session?.astrology) {\n session.astrology.revealedPlanets = [...astroState.revealedPlanets];\n }\n\n return {\n prompt: reveal.prompt,\n element: reveal.planet,\n };\n }\n\n private recordTarotFeedback(key: string, feedback: FeedbackEntry): void {\n const tarotState = this.tarotStates.get(key);\n if (!tarotState) return;\n\n const newState = this.tarotEngine.recordFeedback(tarotState, feedback);\n this.tarotStates.set(key, newState);\n\n const session = this.sessions.get(key);\n if (session) {\n session.tarot = newState;\n }\n }\n\n private recordIChingFeedback(key: string, feedback: FeedbackEntry): void {\n const ichingState = this.ichingStates.get(key);\n if (!ichingState) return;\n\n const newState = this.ichingEngine.recordFeedback(ichingState, feedback);\n this.ichingStates.set(key, newState);\n\n const session = this.sessions.get(key);\n if (session) {\n session.iching = newState;\n }\n }\n\n /** Converts the types.ts FeedbackEntry to the astrology engine's format. */\n private recordAstrologyFeedback(key: string, feedback: FeedbackEntry): void {\n const astroState = this.astrologyStates.get(key);\n if (!astroState) return;\n\n const engineFeedback = {\n topic: feedback.element,\n response: feedback.userText,\n resonance: 3, // neutral default; the LLM interprets sentiment from text\n timestamp: feedback.timestamp,\n };\n\n const newState = this.astrologyEngine.recordFeedback(astroState, engineFeedback);\n this.astrologyStates.set(key, newState);\n\n const session = this.sessions.get(key);\n if (session?.astrology) {\n session.astrology.revealedPlanets = [...newState.revealedPlanets];\n session.astrology.userFeedback = [...session.astrology.userFeedback, feedback];\n }\n }\n}\n",
|
|
27
|
-
"/** Mystical reading systems for ElizaOS agents (tarot, I Ching, astrology). */\n\nimport type { IAgentRuntime, Plugin, ServiceClass } from \"@elizaos/core\";\nimport { logger, validateActionKeywords, validateActionRegex } from \"@elizaos/core\";\nimport { createReadingRoutes } from \"./routes/readings\";\n\nexport { astrologyReadingAction } from \"./actions/astrology-reading\";\nexport { checkPaymentAction } from \"./actions/check-payment\";\nexport { ichingReadingAction } from \"./actions/iching-reading\";\nexport { deepenReadingAction, readingFollowupAction } from \"./actions/reading-followup\";\nexport { requestPaymentAction } from \"./actions/request-payment\";\nexport { tarotReadingAction } from \"./actions/tarot-reading\";\nexport type { AstrologyReadingState } from \"./engines/astrology/index\";\nexport { AstrologyEngine } from \"./engines/astrology/index\";\nexport { IChingEngine } from \"./engines/iching/index\";\nexport type { RevealResult } from \"./engines/tarot/index\";\nexport { TarotEngine } from \"./engines/tarot/index\";\nexport { astrologyIntakeForm } from \"./forms/astrology-intake\";\nexport { readingFeedbackForm } from \"./forms/feedback\";\nexport { tarotIntakeForm } from \"./forms/tarot-intake\";\nexport { economicContextProvider } from \"./providers/economic-context\";\nexport { mysticalKnowledgeProvider } from \"./providers/mystical-knowledge\";\nexport { readingContextProvider } from \"./providers/reading-context\";\nexport { createReadingRoutes } from \"./routes/readings\";\nexport { MysticismService } from \"./services/mysticism-service\";\nexport * from \"./types\";\n\nexport const mysticismPlugin: Plugin = {\n name: \"mysticism\",\n description:\n \"Mystical reading systems (tarot, I Ching, astrology) with progressive revelation and emotional attunement\",\n\n services: [\n {\n serviceType: \"MYSTICISM\",\n start: async (runtime: IAgentRuntime) => {\n const { MysticismService } = await import(\"./services/mysticism-service\");\n return MysticismService.start(runtime);\n },\n } as unknown as ServiceClass,\n ],\n\n init: async (config: Record<string, string>, _runtime: IAgentRuntime) => {\n for (const key of [\n \"MYSTICISM_PRICE_TAROT\",\n \"MYSTICISM_PRICE_ICHING\",\n \"MYSTICISM_PRICE_ASTROLOGY\",\n ]) {\n const val = config[key];\n if (val !== undefined && (Number.isNaN(Number(val)) || Number(val) < 0)) {\n logger.warn(`[mysticism] Invalid pricing config for ${key}: \"${val}\", using default`);\n }\n }\n logger.info(\"[mysticism] Plugin initialized\");\n },\n\n actions: [\n {\n name: \"TAROT_READING\",\n similes: [\"READ_TAROT\", \"DRAW_CARDS\", \"TAROT_SPREAD\", \"CARD_READING\"],\n description: \"Initiate a tarot card reading for the user\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/tarot-reading\")).tarotReadingAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/tarot-reading\")).tarotReadingAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"Can you do a tarot reading for me?\" } },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'd be happy to do a tarot reading for you. Let me shuffle the cards...\",\n },\n },\n ],\n ],\n },\n {\n name: \"ICHING_READING\",\n similes: [\"CAST_HEXAGRAM\", \"CONSULT_ICHING\", \"THROW_COINS\", \"ORACLE_READING\"],\n description: \"Initiate an I Ching divination reading\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/iching-reading\")).ichingReadingAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/iching-reading\")).ichingReadingAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"I'd like to consult the I Ching\" } },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Let us consult the ancient oracle. I'll cast the coins for your hexagram...\",\n },\n },\n ],\n ],\n },\n {\n name: \"ASTROLOGY_READING\",\n similes: [\"BIRTH_CHART\", \"NATAL_CHART\", \"HOROSCOPE_READING\", \"ZODIAC_READING\"],\n description: \"Initiate a natal chart / astrology reading\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/astrology-reading\")).astrologyReadingAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/astrology-reading\")).astrologyReadingAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"Can you read my birth chart?\" } },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'd love to explore your natal chart. First, I'll need your birth details...\",\n },\n },\n ],\n ],\n },\n {\n name: \"READING_FOLLOWUP\",\n similes: [\"CONTINUE_READING\", \"NEXT_CARD\", \"NEXT_LINE\", \"PROCEED_READING\"],\n description: \"Continue an active reading by revealing the next element\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/reading-followup\")).readingFollowupAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/reading-followup\")).readingFollowupAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"Yes, that resonates. What's next?\" } },\n {\n name: \"{{agentName}}\",\n content: { text: \"Let me reveal the next element of your reading...\" },\n },\n ],\n ],\n },\n {\n name: \"DEEPEN_READING\",\n similes: [\"EXPLORE_DEEPER\", \"TELL_MORE\", \"ELABORATE_READING\", \"EXPAND_INTERPRETATION\"],\n description: \"Provide a deeper interpretation of a specific reading element\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/reading-followup\")).deepenReadingAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/reading-followup\")).deepenReadingAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"Tell me more about that card\" } },\n {\n name: \"{{agentName}}\",\n content: { text: \"Let me explore that element more deeply for you...\" },\n },\n ],\n ],\n },\n {\n name: \"REQUEST_PAYMENT\",\n similes: [\"CHARGE_USER\", \"ASK_FOR_PAYMENT\", \"SET_PRICE\"],\n description: \"Request payment from the user for a reading service\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/request-payment\")).requestPaymentAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/request-payment\")).requestPaymentAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n {\n name: \"{{agentName}}\",\n content: {\n text: \"For a full Celtic Cross reading, I'd ask $3.00.\",\n actions: [\"REQUEST_PAYMENT\"],\n },\n },\n ],\n ],\n },\n {\n name: \"CHECK_PAYMENT\",\n similes: [\"VERIFY_PAYMENT\", \"PAYMENT_STATUS\"],\n description: \"Check if payment has been received for the current reading session\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/check-payment\")).checkPaymentAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/check-payment\")).checkPaymentAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Let me check if your payment has come through...\",\n actions: [\"CHECK_PAYMENT\"],\n },\n },\n ],\n ],\n },\n ],\n\n providers: [\n {\n name: \"READING_CONTEXT\",\n description: \"Provides context about the active mystical reading session\",\n dynamic: true,\n relevanceKeywords: [\n \"reading\",\n \"context\",\n \"inlineprovider1\",\n \"plugin\",\n \"mysticism\",\n \"status\",\n \"state\",\n \"info\",\n \"details\",\n \"chat\",\n \"conversation\",\n \"agent\",\n \"room\",\n \"channel\",\n ],\n get: async (runtime, message, state) => {\n const __providerKeywords = [\n \"reading\",\n \"context\",\n \"inlineprovider1\",\n \"plugin\",\n \"mysticism\",\n \"status\",\n \"state\",\n \"info\",\n \"details\",\n \"chat\",\n \"conversation\",\n \"agent\",\n \"room\",\n \"channel\",\n ];\n const __providerRegex = new RegExp(`\\\\b(${__providerKeywords.join(\"|\")})\\\\b`, \"i\");\n const __recentMessages = state?.recentMessagesData || [];\n const __isRelevant =\n validateActionKeywords(message, __recentMessages, __providerKeywords) ||\n validateActionRegex(message, __recentMessages, __providerRegex);\n if (!__isRelevant) {\n return { text: \"\" };\n }\n\n const { readingContextProvider } = await import(\"./providers/reading-context\");\n return readingContextProvider.get(runtime, message, state);\n },\n },\n {\n name: \"ECONOMIC_CONTEXT\",\n description: \"Provides economic facts about payment history and revenue\",\n dynamic: true,\n relevanceKeywords: [\n \"economic\",\n \"context\",\n \"inlineprovider2\",\n \"plugin\",\n \"mysticism\",\n \"status\",\n \"state\",\n \"info\",\n \"details\",\n \"chat\",\n \"conversation\",\n \"agent\",\n \"room\",\n \"channel\",\n ],\n get: async (runtime, message, state) => {\n const __providerKeywords = [\n \"economic\",\n \"context\",\n \"inlineprovider2\",\n \"plugin\",\n \"mysticism\",\n \"status\",\n \"state\",\n \"info\",\n \"details\",\n \"chat\",\n \"conversation\",\n \"agent\",\n \"room\",\n \"channel\",\n ];\n const __providerRegex = new RegExp(`\\\\b(${__providerKeywords.join(\"|\")})\\\\b`, \"i\");\n const __recentMessages = state?.recentMessagesData || [];\n const __isRelevant =\n validateActionKeywords(message, __recentMessages, __providerKeywords) ||\n validateActionRegex(message, __recentMessages, __providerRegex);\n if (!__isRelevant) {\n return { text: \"\" };\n }\n\n const { economicContextProvider } = await import(\"./providers/economic-context\");\n return economicContextProvider.get(runtime, message, state);\n },\n },\n {\n name: \"MYSTICAL_KNOWLEDGE\",\n description: \"Provides mystical domain knowledge to ground the agent's interpretations\",\n dynamic: true,\n relevanceKeywords: [\n \"mystical\",\n \"knowledge\",\n \"inlineprovider3\",\n \"plugin\",\n \"mysticism\",\n \"status\",\n \"state\",\n \"context\",\n \"info\",\n \"details\",\n \"chat\",\n \"conversation\",\n \"agent\",\n \"room\",\n ],\n get: async (runtime, message, state) => {\n const __providerKeywords = [\n \"mystical\",\n \"knowledge\",\n \"inlineprovider3\",\n \"plugin\",\n \"mysticism\",\n \"status\",\n \"state\",\n \"context\",\n \"info\",\n \"details\",\n \"chat\",\n \"conversation\",\n \"agent\",\n \"room\",\n ];\n const __providerRegex = new RegExp(`\\\\b(${__providerKeywords.join(\"|\")})\\\\b`, \"i\");\n const __recentMessages = state?.recentMessagesData || [];\n const __isRelevant =\n validateActionKeywords(message, __recentMessages, __providerKeywords) ||\n validateActionRegex(message, __recentMessages, __providerRegex);\n if (!__isRelevant) {\n return { text: \"\" };\n }\n\n const { mysticalKnowledgeProvider } = await import(\"./providers/mystical-knowledge\");\n return mysticalKnowledgeProvider.get(runtime, message, state);\n },\n },\n ],\n\n routes: createReadingRoutes(),\n};\n\nexport default mysticismPlugin;\n",
|
|
27
|
+
"/** Mystical reading systems for ElizaOS agents (tarot, I Ching, astrology). */\n\nimport type { IAgentRuntime, Plugin, ServiceClass } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport { createReadingRoutes } from \"./routes/readings\";\n\nexport { astrologyReadingAction } from \"./actions/astrology-reading\";\nexport { checkPaymentAction } from \"./actions/check-payment\";\nexport { ichingReadingAction } from \"./actions/iching-reading\";\nexport { deepenReadingAction, readingFollowupAction } from \"./actions/reading-followup\";\nexport { requestPaymentAction } from \"./actions/request-payment\";\nexport { tarotReadingAction } from \"./actions/tarot-reading\";\nexport type { AstrologyReadingState } from \"./engines/astrology/index\";\nexport { AstrologyEngine } from \"./engines/astrology/index\";\nexport { IChingEngine } from \"./engines/iching/index\";\nexport type { RevealResult } from \"./engines/tarot/index\";\nexport { TarotEngine } from \"./engines/tarot/index\";\nexport { astrologyIntakeForm } from \"./forms/astrology-intake\";\nexport { readingFeedbackForm } from \"./forms/feedback\";\nexport { tarotIntakeForm } from \"./forms/tarot-intake\";\nexport { economicContextProvider } from \"./providers/economic-context\";\nexport { mysticalKnowledgeProvider } from \"./providers/mystical-knowledge\";\nexport { readingContextProvider } from \"./providers/reading-context\";\nexport { createReadingRoutes } from \"./routes/readings\";\nexport { MysticismService } from \"./services/mysticism-service\";\nexport * from \"./types\";\n\nexport const mysticismPlugin: Plugin = {\n name: \"mysticism\",\n description:\n \"Mystical reading systems (tarot, I Ching, astrology) with progressive revelation and emotional attunement\",\n\n services: [\n {\n serviceType: \"MYSTICISM\",\n start: async (runtime: IAgentRuntime) => {\n const { MysticismService } = await import(\"./services/mysticism-service\");\n return MysticismService.start(runtime);\n },\n } as unknown as ServiceClass,\n ],\n\n init: async (config: Record<string, string>, _runtime: IAgentRuntime) => {\n for (const key of [\n \"MYSTICISM_PRICE_TAROT\",\n \"MYSTICISM_PRICE_ICHING\",\n \"MYSTICISM_PRICE_ASTROLOGY\",\n ]) {\n const val = config[key];\n if (val !== undefined && (Number.isNaN(Number(val)) || Number(val) < 0)) {\n logger.warn(`[mysticism] Invalid pricing config for ${key}: \"${val}\", using default`);\n }\n }\n logger.info(\"[mysticism] Plugin initialized\");\n },\n\n actions: [\n {\n name: \"TAROT_READING\",\n similes: [\"READ_TAROT\", \"DRAW_CARDS\", \"TAROT_SPREAD\", \"CARD_READING\"],\n description: \"Initiate a tarot card reading for the user\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/tarot-reading\")).tarotReadingAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/tarot-reading\")).tarotReadingAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"Can you do a tarot reading for me?\" } },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'd be happy to do a tarot reading for you. Let me shuffle the cards...\",\n },\n },\n ],\n ],\n },\n {\n name: \"ICHING_READING\",\n similes: [\"CAST_HEXAGRAM\", \"CONSULT_ICHING\", \"THROW_COINS\", \"ORACLE_READING\"],\n description: \"Initiate an I Ching divination reading\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/iching-reading\")).ichingReadingAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/iching-reading\")).ichingReadingAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"I'd like to consult the I Ching\" } },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Let us consult the ancient oracle. I'll cast the coins for your hexagram...\",\n },\n },\n ],\n ],\n },\n {\n name: \"ASTROLOGY_READING\",\n similes: [\"BIRTH_CHART\", \"NATAL_CHART\", \"HOROSCOPE_READING\", \"ZODIAC_READING\"],\n description: \"Initiate a natal chart / astrology reading\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/astrology-reading\")).astrologyReadingAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/astrology-reading\")).astrologyReadingAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"Can you read my birth chart?\" } },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'd love to explore your natal chart. First, I'll need your birth details...\",\n },\n },\n ],\n ],\n },\n {\n name: \"READING_FOLLOWUP\",\n similes: [\"CONTINUE_READING\", \"NEXT_CARD\", \"NEXT_LINE\", \"PROCEED_READING\"],\n description: \"Continue an active reading by revealing the next element\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/reading-followup\")).readingFollowupAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/reading-followup\")).readingFollowupAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"Yes, that resonates. What's next?\" } },\n {\n name: \"{{agentName}}\",\n content: { text: \"Let me reveal the next element of your reading...\" },\n },\n ],\n ],\n },\n {\n name: \"DEEPEN_READING\",\n similes: [\"EXPLORE_DEEPER\", \"TELL_MORE\", \"ELABORATE_READING\", \"EXPAND_INTERPRETATION\"],\n description: \"Provide a deeper interpretation of a specific reading element\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/reading-followup\")).deepenReadingAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/reading-followup\")).deepenReadingAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"Tell me more about that card\" } },\n {\n name: \"{{agentName}}\",\n content: { text: \"Let me explore that element more deeply for you...\" },\n },\n ],\n ],\n },\n {\n name: \"REQUEST_PAYMENT\",\n similes: [\"CHARGE_USER\", \"ASK_FOR_PAYMENT\", \"SET_PRICE\"],\n description: \"Request payment from the user for a reading service\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/request-payment\")).requestPaymentAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/request-payment\")).requestPaymentAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n {\n name: \"{{agentName}}\",\n content: {\n text: \"For a full Celtic Cross reading, I'd ask $3.00.\",\n actions: [\"REQUEST_PAYMENT\"],\n },\n },\n ],\n ],\n },\n {\n name: \"CHECK_PAYMENT\",\n similes: [\"VERIFY_PAYMENT\", \"PAYMENT_STATUS\"],\n description: \"Check if payment has been received for the current reading session\",\n validate: async (runtime, message, state) =>\n (await import(\"./actions/check-payment\")).checkPaymentAction.validate(\n runtime,\n message,\n state\n ),\n handler: async (runtime, message, state, options, callback) =>\n (await import(\"./actions/check-payment\")).checkPaymentAction.handler(\n runtime,\n message,\n state,\n options,\n callback\n ),\n examples: [\n [\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Let me check if your payment has come through...\",\n actions: [\"CHECK_PAYMENT\"],\n },\n },\n ],\n ],\n },\n ],\n\n providers: [\n {\n name: \"READING_CONTEXT\",\n description: \"Provides context about the active mystical reading session\",\n get: async (runtime, message, state) => {\n const { readingContextProvider } = await import(\"./providers/reading-context\");\n return readingContextProvider.get(runtime, message, state);\n },\n },\n {\n name: \"ECONOMIC_CONTEXT\",\n description: \"Provides economic facts about payment history and revenue\",\n get: async (runtime, message, state) => {\n const { economicContextProvider } = await import(\"./providers/economic-context\");\n return economicContextProvider.get(runtime, message, state);\n },\n },\n {\n name: \"MYSTICAL_KNOWLEDGE\",\n description: \"Provides mystical domain knowledge to ground the agent's interpretations\",\n get: async (runtime, message, state) => {\n const { mysticalKnowledgeProvider } = await import(\"./providers/mystical-knowledge\");\n return mysticalKnowledgeProvider.get(runtime, message, state);\n },\n },\n ],\n\n routes: createReadingRoutes(),\n};\n\nexport default mysticismPlugin;\n",
|
|
28
28
|
"import type { IAgentRuntime, Route, RouteRequest, RouteResponse } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\nimport type { MysticismService } from \"../services/mysticism-service\";\nimport type { BirthData, ReadingSession, ReadingSystem } from \"../types\";\n\n// ---------------------------------------------------------------------------\n// Request body types\n// ---------------------------------------------------------------------------\n\ninterface TarotRequestBody {\n entityId: string;\n roomId: string;\n question: string;\n spreadId: string;\n}\n\ninterface IChingRequestBody {\n entityId: string;\n roomId: string;\n question: string;\n}\n\ninterface AstrologyRequestBody {\n entityId: string;\n roomId: string;\n birthYear: number;\n birthMonth: number;\n birthDay: number;\n birthHour: number;\n birthMinute: number;\n latitude: number;\n longitude: number;\n timezone: number;\n}\n\n// ---------------------------------------------------------------------------\n// Validators\n// ---------------------------------------------------------------------------\n\ntype RouteBody = Record<string, string | number | boolean | null | undefined> | undefined;\n\nfunction validateTarotBody(body: RouteBody): TarotRequestBody | string {\n if (!body) return \"Request body is required\";\n if (typeof body.entityId !== \"string\" || !body.entityId) return \"entityId is required\";\n if (typeof body.roomId !== \"string\" || !body.roomId) return \"roomId is required\";\n if (typeof body.question !== \"string\" || !body.question) return \"question is required\";\n\n return {\n entityId: body.entityId,\n roomId: body.roomId,\n question: body.question,\n spreadId: typeof body.spreadId === \"string\" ? body.spreadId : \"three_card\",\n };\n}\n\nfunction validateIChingBody(body: RouteBody): IChingRequestBody | string {\n if (!body) return \"Request body is required\";\n if (typeof body.entityId !== \"string\" || !body.entityId) return \"entityId is required\";\n if (typeof body.roomId !== \"string\" || !body.roomId) return \"roomId is required\";\n if (typeof body.question !== \"string\" || !body.question) return \"question is required\";\n\n return {\n entityId: body.entityId,\n roomId: body.roomId,\n question: body.question,\n };\n}\n\nfunction validateAstrologyBody(body: RouteBody): AstrologyRequestBody | string {\n if (!body) return \"Request body is required\";\n if (typeof body.entityId !== \"string\" || !body.entityId) return \"entityId is required\";\n if (typeof body.roomId !== \"string\" || !body.roomId) return \"roomId is required\";\n if (typeof body.birthYear !== \"number\") return \"birthYear is required (number)\";\n if (typeof body.birthMonth !== \"number\" || body.birthMonth < 1 || body.birthMonth > 12)\n return \"birthMonth is required (1-12)\";\n if (typeof body.birthDay !== \"number\" || body.birthDay < 1 || body.birthDay > 31)\n return \"birthDay is required (1-31)\";\n if (typeof body.birthHour !== \"number\" || body.birthHour < 0 || body.birthHour > 23)\n return \"birthHour is required (0-23)\";\n if (typeof body.birthMinute !== \"number\" || body.birthMinute < 0 || body.birthMinute > 59)\n return \"birthMinute is required (0-59)\";\n if (typeof body.latitude !== \"number\" || body.latitude < -90 || body.latitude > 90)\n return \"latitude is required (-90 to 90)\";\n if (typeof body.longitude !== \"number\" || body.longitude < -180 || body.longitude > 180)\n return \"longitude is required (-180 to 180)\";\n if (typeof body.timezone !== \"number\" || body.timezone < -12 || body.timezone > 14)\n return \"timezone is required (-12 to 14)\";\n\n return {\n entityId: body.entityId,\n roomId: body.roomId,\n birthYear: body.birthYear,\n birthMonth: body.birthMonth,\n birthDay: body.birthDay,\n birthHour: body.birthHour,\n birthMinute: body.birthMinute,\n latitude: body.latitude,\n longitude: body.longitude,\n timezone: body.timezone,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Generic POST handler factory\n// ---------------------------------------------------------------------------\n\nfunction readingRoute<T extends { entityId: string }>(\n path: string,\n type: ReadingSystem,\n validate: (body: RouteBody) => T | string,\n startReading: (service: MysticismService, body: T) => ReadingSession,\n successMessage: string\n): Route {\n return {\n path,\n type: \"POST\",\n handler: async (\n req: RouteRequest,\n res: RouteResponse,\n runtime: IAgentRuntime\n ): Promise<void> => {\n try {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n res.status(503).json({ success: false, error: \"Mysticism service is not available\" });\n return;\n }\n\n const validated = validate(req.body as RouteBody);\n if (typeof validated === \"string\") {\n res.status(400).json({ success: false, error: validated });\n return;\n }\n\n const session = startReading(service, validated);\n\n logger.info(\n `[ReadingRoutes] ${type} reading started: ${session.id} (entity: ${validated.entityId})`\n );\n\n res.status(201).json({\n success: true,\n sessionId: session.id,\n type,\n phase: session.phase,\n message: successMessage,\n });\n } catch (error) {\n logger.error(`[ReadingRoutes] ${type} reading error:`, String(error));\n res.status(500).json({ success: false, error: `Failed to start ${type} reading` });\n }\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Route definitions\n// ---------------------------------------------------------------------------\n\nexport function createReadingRoutes(): Route[] {\n return [\n readingRoute<TarotRequestBody>(\n \"/api/readings/tarot\",\n \"tarot\",\n validateTarotBody,\n (svc, b) => svc.startTarotReading(b.entityId, b.roomId, b.spreadId, b.question),\n \"Your tarot reading has been prepared. The cards are drawn and waiting.\"\n ),\n\n readingRoute<IChingRequestBody>(\n \"/api/readings/iching\",\n \"iching\",\n validateIChingBody,\n (svc, b) => svc.startIChingReading(b.entityId, b.roomId, b.question),\n \"The coins have been cast. Your hexagram is ready for interpretation.\"\n ),\n\n readingRoute<AstrologyRequestBody>(\n \"/api/readings/astrology\",\n \"astrology\",\n validateAstrologyBody,\n (svc, b) => {\n const birthData: BirthData = {\n year: b.birthYear,\n month: b.birthMonth,\n day: b.birthDay,\n hour: b.birthHour,\n minute: b.birthMinute,\n latitude: b.latitude,\n longitude: b.longitude,\n timezone: b.timezone,\n };\n return svc.startAstrologyReading(b.entityId, b.roomId, birthData);\n },\n \"Your natal chart has been calculated. The stars are ready to speak.\"\n ),\n\n // GET /api/readings/status — public polling endpoint\n {\n name: \"reading-status\",\n public: true,\n path: \"/api/readings/status\",\n type: \"GET\",\n handler: async (\n req: RouteRequest,\n res: RouteResponse,\n runtime: IAgentRuntime\n ): Promise<void> => {\n try {\n const service = runtime.getService<MysticismService>(\"MYSTICISM\");\n if (!service) {\n res.status(503).json({ success: false, error: \"Mysticism service is not available\" });\n return;\n }\n\n const entityId = req.query?.entityId as string | undefined;\n const roomId = req.query?.roomId as string | undefined;\n if (!entityId || !roomId) {\n res.status(400).json({\n success: false,\n error: \"entityId and roomId query parameters are required\",\n });\n return;\n }\n\n const session = service.getSession(entityId, roomId);\n if (!session) {\n res.status(404).json({ success: false, error: \"Reading session not found\" });\n return;\n }\n\n res.status(200).json({\n success: true,\n session: {\n id: session.id,\n type: session.type,\n phase: session.phase,\n paymentStatus: session.paymentStatus,\n createdAt: session.createdAt,\n updatedAt: session.updatedAt,\n },\n });\n } catch (error) {\n logger.error(\"[ReadingRoutes] Status check error:\", String(error));\n res.status(500).json({ success: false, error: \"Failed to retrieve reading status\" });\n }\n },\n },\n ];\n}\n",
|
|
29
29
|
"/** Conversational intake form for astrology natal chart readings. */\n\nimport type { FormDefinition } from \"../types\";\n\nexport const astrologyIntakeForm: FormDefinition = {\n id: \"astrology_intake\",\n name: \"Astrology Reading Intake\",\n description:\n \"To create your natal chart, I'll need your exact birth details. \" +\n \"The more precise the information, the more accurate your reading will be.\",\n controls: [\n {\n key: \"question\",\n type: \"text\",\n label: \"Your Focus Area\",\n required: true,\n ask:\n \"Before we dive into your chart, what area of your life are you most \" +\n \"curious about? This helps me focus the interpretation on what matters \" +\n \"most to you right now.\",\n description: \"The querent's area of interest or question for the reading\",\n hint: [\"question\", \"focus\", \"curious\", \"about\", \"guidance\", \"wondering\"],\n example: \"I want to understand my relationship patterns better\",\n minLength: 5,\n maxLength: 500,\n },\n {\n key: \"birth_date\",\n type: \"date\",\n label: \"Birth Date\",\n required: true,\n ask:\n \"What is your date of birth? You can say it naturally, like \" +\n \"'March 15, 1992' or '1992-03-15'.\",\n description: \"The querent's date of birth (YYYY-MM-DD)\",\n hint: [\"born\", \"birthday\", \"birth date\", \"date of birth\", \"dob\"],\n example: \"March 15, 1992\",\n },\n {\n key: \"birth_time\",\n type: \"text\",\n label: \"Birth Time\",\n required: true,\n ask:\n \"What time were you born? This is crucial for calculating your \" +\n \"Rising sign and house placements. If you know the exact time, \" +\n \"great — even an approximate time helps. Check your birth certificate \" +\n \"if you can.\",\n description: \"The querent's time of birth (HH:MM in 24h or with AM/PM)\",\n pattern: \"^([01]?\\\\d|2[0-3]):[0-5]\\\\d(\\\\s*[AaPp][Mm])?$\",\n hint: [\"time\", \"born at\", \"birth time\", \"o'clock\", \"am\", \"pm\"],\n example: \"2:30 PM\",\n },\n {\n key: \"birth_place\",\n type: \"text\",\n label: \"Birth Place\",\n required: true,\n ask:\n \"Where were you born? City and country is ideal — for example, \" +\n \"'Austin, Texas, USA' or 'London, UK'. This is needed to calculate \" +\n \"the exact positions of the planets at your birth location.\",\n description: \"The querent's place of birth (city, state/country)\",\n hint: [\"born in\", \"birth place\", \"birthplace\", \"city\", \"where\", \"location\"],\n example: \"Austin, Texas, USA\",\n minLength: 3,\n maxLength: 200,\n },\n {\n key: \"birth_timezone\",\n type: \"text\",\n label: \"Birth Timezone\",\n ask:\n \"Do you know what timezone your birth time is in? For example, \" +\n \"'Eastern Time', 'UTC+5:30', or 'PST'. If you're not sure, \" +\n \"I can figure it out from your birth place — just say 'skip'.\",\n description: \"The timezone of the birth time, if known\",\n hint: [\"timezone\", \"time zone\", \"utc\", \"gmt\", \"est\", \"pst\", \"cst\", \"mst\"],\n example: \"Eastern Time (ET)\",\n },\n ],\n onSubmit: \"handle_astrology_intake\",\n onCancel: \"handle_reading_cancel\",\n ttl: { minDays: 7, maxDays: 30 },\n nudgeAfterMinutes: 48,\n nudgeMessage:\n \"I noticed you started setting up an astrology reading but we still \" +\n \"need some birth details. Would you like to continue? Your information \" +\n \"so far is saved.\",\n};\n\nexport default astrologyIntakeForm;\n",
|
|
30
30
|
"/** Post-reading feedback form. */\n\nimport type { FormControlOption, FormDefinition } from \"../types\";\n\nconst SATISFACTION_OPTIONS: FormControlOption[] = [\n { value: \"5\", label: \"Deeply meaningful\", description: \"This reading really spoke to me\" },\n { value: \"4\", label: \"Very helpful\", description: \"I gained useful insights\" },\n { value: \"3\", label: \"Somewhat helpful\", description: \"Some parts resonated, others didn't\" },\n { value: \"2\", label: \"Not very helpful\", description: \"It didn't quite connect for me\" },\n { value: \"1\", label: \"Not helpful at all\", description: \"I didn't find it meaningful\" },\n];\n\n/**\n * Designed to be light and conversational — only satisfaction is required.\n * Everything else is collected naturally through conversation.\n */\nexport const readingFeedbackForm: FormDefinition = {\n id: \"reading_feedback\",\n name: \"Reading Feedback\",\n description:\n \"Thank you for sharing this journey with me. I'd love to hear how \" +\n \"the reading landed for you — your feedback helps me give better \" +\n \"readings in the future.\",\n controls: [\n {\n key: \"satisfaction\",\n type: \"select\",\n label: \"Overall Experience\",\n required: true,\n ask:\n \"How would you describe your overall experience with this reading?\\n\" +\n \"- **Deeply meaningful** — really spoke to me\\n\" +\n \"- **Very helpful** — gained useful insights\\n\" +\n \"- **Somewhat helpful** — some parts resonated\\n\" +\n \"- **Not very helpful** — didn't quite connect\\n\" +\n \"- **Not helpful at all** — didn't find it meaningful\",\n description: \"Overall satisfaction rating from 1 (low) to 5 (high)\",\n hint: [\n \"rating\",\n \"satisfaction\",\n \"experience\",\n \"how was\",\n \"meaningful\",\n \"helpful\",\n \"not helpful\",\n ],\n options: SATISFACTION_OPTIONS,\n },\n {\n key: \"resonant_insight\",\n type: \"text\",\n label: \"Most Resonant Insight\",\n ask:\n \"Was there a particular moment or insight from the reading that \" +\n \"stood out to you? Even a small detail that stuck with you.\",\n description: \"The insight or moment from the reading that resonated most\",\n hint: [\n \"stood out\",\n \"resonated\",\n \"insight\",\n \"moment\",\n \"favorite\",\n \"meaningful\",\n \"remember\",\n \"stuck\",\n ],\n example: \"When The Star card came up in the outcome position, it gave me hope\",\n maxLength: 1000,\n },\n {\n key: \"suggestions\",\n type: \"text\",\n label: \"Suggestions\",\n ask:\n \"Is there anything you wish had been different about the reading? \" +\n \"Any way I could have made it more meaningful for you?\",\n description: \"Suggestions for improving future readings\",\n hint: [\n \"suggest\",\n \"improve\",\n \"better\",\n \"different\",\n \"wish\",\n \"change\",\n \"feedback\",\n \"could have\",\n ],\n maxLength: 1000,\n },\n {\n key: \"wants_another\",\n type: \"boolean\",\n label: \"Interested in Another Reading\",\n ask:\n \"Would you be interested in doing another reading in the future? \" +\n \"No pressure at all — just curious.\",\n description: \"Whether the user is interested in future readings\",\n hint: [\"another\", \"again\", \"next time\", \"future\", \"more readings\"],\n default: false,\n },\n ],\n onSubmit: \"handle_reading_feedback\",\n ttl: { minDays: 3, maxDays: 14 },\n};\n\nexport default readingFeedbackForm;\n",
|
|
31
31
|
"/** Conversational intake form for tarot readings. */\n\nimport type { FormControlOption, FormDefinition } from \"../types\";\n\nconst SPREAD_OPTIONS: FormControlOption[] = [\n {\n value: \"three_card\",\n label: \"Three-Card Spread\",\n description: \"Past, Present, Future — quick and focused\",\n },\n {\n value: \"celtic_cross\",\n label: \"Celtic Cross\",\n description: \"The classic 10-card deep dive into your situation\",\n },\n {\n value: \"horseshoe\",\n label: \"Horseshoe Spread\",\n description: \"7 cards covering past influences through final outcome\",\n },\n {\n value: \"single_card\",\n label: \"Single Card\",\n description: \"One card, one message — perfect for daily guidance\",\n },\n {\n value: \"relationship\",\n label: \"Relationship Spread\",\n description: \"Explores the dynamics between you and another person\",\n },\n];\n\nexport const tarotIntakeForm: FormDefinition = {\n id: \"tarot_intake\",\n name: \"Tarot Reading Intake\",\n description:\n \"Let's prepare your tarot reading. I'll need to know what's on your mind \" +\n \"and how deep you'd like to go.\",\n controls: [\n {\n key: \"question\",\n type: \"text\",\n label: \"Your Question\",\n required: true,\n ask:\n \"What question or area of your life would you like guidance on? \" +\n \"It can be specific ('Should I take that new job?') or open \" +\n \"('What do I need to know right now?').\",\n description: \"The querent's question or focus area for the reading\",\n hint: [\"question\", \"focus\", \"guidance\", \"about\", \"wondering\", \"curious\"],\n example: \"What should I focus on in my career this month?\",\n minLength: 5,\n maxLength: 500,\n },\n {\n key: \"spread\",\n type: \"select\",\n label: \"Spread Type\",\n required: true,\n ask:\n \"Which spread would you like?\\n\" +\n \"- **Three-Card** — quick Past/Present/Future snapshot\\n\" +\n \"- **Celtic Cross** — the classic deep dive (10 cards)\\n\" +\n \"- **Horseshoe** — 7 cards from past to outcome\\n\" +\n \"- **Single Card** — one focused message\\n\" +\n \"- **Relationship** — dynamics between you and another\\n\\n\" +\n \"If you're not sure, the Three-Card is a great place to start.\",\n description: \"The tarot spread to use for the reading\",\n default: \"three_card\",\n hint: [\"spread\", \"cards\", \"celtic\", \"three card\", \"single\", \"horseshoe\", \"relationship\"],\n options: SPREAD_OPTIONS,\n },\n {\n key: \"allow_reversals\",\n type: \"boolean\",\n label: \"Include Reversed Cards\",\n ask:\n \"Would you like to include reversed (upside-down) cards? \" +\n \"Reversals add nuance and depth but can feel more intense. \" +\n \"Most readers recommend including them.\",\n description: \"Whether reversed card orientations are included in the reading\",\n default: true,\n hint: [\"reversed\", \"reversal\", \"upside down\", \"inverted\"],\n },\n ],\n onSubmit: \"handle_tarot_intake\",\n onCancel: \"handle_reading_cancel\",\n ttl: { minDays: 1, maxDays: 7 },\n nudgeAfterMinutes: 24,\n nudgeMessage:\n \"I noticed you started setting up a tarot reading but didn't finish. \" +\n \"Would you like to pick up where you left off, or start fresh?\",\n};\n\nexport default tarotIntakeForm;\n"
|
|
32
32
|
],
|
|
33
|
-
"mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
|
|
34
|
-
"debugId": "
|
|
33
|
+
"mappings": "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MA;AAAA,EA9JM,uBAA0C;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
|
|
34
|
+
"debugId": "0B7F6A3ECC2FEE3864756E2164756E21",
|
|
35
35
|
"names": []
|
|
36
36
|
}
|