@openephemeris/mcp-server 3.13.9 → 3.13.10
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/README.md +2 -2
- package/config/dev-allowlist.json +28 -4
- package/dist/index.js +45 -0
- package/dist/oauth/dcr.d.ts +11 -0
- package/dist/oauth/dcr.js +49 -0
- package/dist/oauth/discovery.d.ts +11 -0
- package/dist/oauth/discovery.js +40 -0
- package/dist/oauth/pkce.d.ts +18 -0
- package/dist/oauth/pkce.js +34 -0
- package/dist/oauth/rate-limit.d.ts +20 -0
- package/dist/oauth/rate-limit.js +65 -0
- package/dist/oauth/store.d.ts +68 -0
- package/dist/oauth/store.js +247 -0
- package/dist/oauth/supabase-jwt.d.ts +39 -0
- package/dist/oauth/supabase-jwt.js +194 -0
- package/dist/oauth/token.d.ts +21 -0
- package/dist/oauth/token.js +213 -0
- package/dist/prompts.js +171 -159
- package/dist/server-sse.js +134 -36
- package/dist/tools/apps/bazi-app.d.ts +23 -0
- package/dist/tools/apps/bazi-app.js +224 -0
- package/dist/tools/apps/bi-wheel-app.d.ts +14 -7
- package/dist/tools/apps/bi-wheel-app.js +293 -108
- package/dist/tools/apps/bodygraph-app.js +38 -3
- package/dist/tools/apps/moon-phase-app.d.ts +19 -0
- package/dist/tools/apps/moon-phase-app.js +190 -0
- package/dist/tools/apps/transit-timeline-app.d.ts +20 -0
- package/dist/tools/apps/transit-timeline-app.js +243 -0
- package/dist/tools/apps/vedic-chart-app.d.ts +17 -0
- package/dist/tools/apps/vedic-chart-app.js +226 -0
- package/dist/tools/index.js +4 -0
- package/dist/tools/specialized/acg.js +2 -2
- package/dist/tools/specialized/bazi.js +367 -44
- package/dist/tools/specialized/bi_wheel.js +1 -1
- package/dist/tools/specialized/chart_wheel.js +1 -1
- package/dist/tools/specialized/comparative.js +4 -4
- package/dist/tools/specialized/eclipse.js +1 -1
- package/dist/tools/specialized/electional.js +4 -4
- package/dist/tools/specialized/ephemeris_core.js +2 -2
- package/dist/tools/specialized/ephemeris_extended.js +8 -8
- package/dist/tools/specialized/hd_bodygraph.js +1 -1
- package/dist/tools/specialized/hd_cycles.js +2 -2
- package/dist/tools/specialized/hd_group.js +2 -2
- package/dist/tools/specialized/human_design.js +1 -1
- package/dist/tools/specialized/moon.js +2 -2
- package/dist/tools/specialized/natal.js +1 -1
- package/dist/tools/specialized/progressed.js +1 -1
- package/dist/tools/specialized/relocation.js +1 -1
- package/dist/tools/specialized/returns.js +3 -3
- package/dist/tools/specialized/synastry.js +1 -1
- package/dist/tools/specialized/transits.js +1 -1
- package/dist/tools/specialized/vedic.js +1 -1
- package/dist/tools/specialized/venus_star_points.js +6 -6
- package/dist/ui/bazi.html +213 -0
- package/dist/ui/bi-wheel.html +762 -489
- package/dist/ui/bodygraph.html +1788 -1649
- package/dist/ui/chart-wheel.html +1772 -1593
- package/dist/ui/moon-phase.html +6758 -0
- package/dist/ui/transit-timeline.html +6835 -0
- package/dist/ui/vedic-chart.html +210 -0
- package/package.json +2 -2
package/dist/prompts.js
CHANGED
|
@@ -66,11 +66,15 @@ export const PROMPTS = [
|
|
|
66
66
|
" - **Equal** (ASC-based equal 30° divisions)\n" +
|
|
67
67
|
" - **Porphyry** (traditional trisection; works at all latitudes including polar)\n" +
|
|
68
68
|
" Default to Placidus if they're unsure.\n\n" +
|
|
69
|
-
"## Step 2 — Resolve Coordinates and Timezone\n" +
|
|
70
|
-
"
|
|
71
|
-
"
|
|
69
|
+
"## Step 2 — Resolve Coordinates and Timezone (MANDATORY)\n" +
|
|
70
|
+
"**Do NOT guess coordinates or timezones from memory.** Use the API tools to resolve them:\n\n" +
|
|
71
|
+
"**A) Geocode** — call `dev_call` with `method: 'GET'`, `path: '/location/autocomplete'`, " +
|
|
72
|
+
"`query: { q: 'City Name, Country' }`. This returns verified decimal lat/lon.\n\n" +
|
|
73
|
+
"**B) Timezone** — call `dev_call` with `method: 'POST'`, `path: '/timezone/lookup'`, " +
|
|
74
|
+
"`body: { latitude: ..., longitude: ..., datetime: 'YYYY-MM-DDTHH:MM:SS' }`. " +
|
|
75
|
+
"This returns the correct IANA timezone and UTC offset for the birth year, including historical DST.\n\n" +
|
|
72
76
|
"- Format: pass `datetime` as local ISO 8601 (e.g. `1990-04-15T14:30:00`) " +
|
|
73
|
-
"and `timezone` as the IANA name. Do NOT append Z to a local birth time.\n\n" +
|
|
77
|
+
"and `timezone` as the IANA name returned by the lookup. Do NOT append Z to a local birth time.\n\n" +
|
|
74
78
|
"## Step 3 — Tool Call\n" +
|
|
75
79
|
"Make a single call to `ephemeris_natal_chart` with:\n" +
|
|
76
80
|
"- `datetime`: local ISO 8601 (no Z)\n" +
|
|
@@ -83,8 +87,9 @@ export const PROMPTS = [
|
|
|
83
87
|
"## Step 4 — Structure the Reading\n" +
|
|
84
88
|
"Deliver the interpretation in this sequence:\n\n" +
|
|
85
89
|
"### 1. Chart Overview\n" +
|
|
86
|
-
"- **Sect**: Day (Sun above horizon) or Night chart.
|
|
87
|
-
"
|
|
90
|
+
"- **Sect**: Day (Sun above horizon) or Night chart. The benefic of sect (Jupiter by day, Venus by night) " +
|
|
91
|
+
"operates with more ease; the malefic of sect (Saturn by day, Mars by night) has its difficulty moderated. " +
|
|
92
|
+
"This flavors all dignity assessments.\n" +
|
|
88
93
|
"- **Chart Shape**: Splash (scattered), Bucket (one handle planet), Bundle (concentrated arc), " +
|
|
89
94
|
"Bowl (one hemisphere), Locomotive (270° arc), Seesaw (two opposing groups), etc.\n" +
|
|
90
95
|
" What does this say about where this person's energy concentrates?\n" +
|
|
@@ -102,7 +107,8 @@ export const PROMPTS = [
|
|
|
102
107
|
"- **Angular planets** (1st, 4th, 7th, 10th) — most powerful\n" +
|
|
103
108
|
"- **Dignified planets** (domicile/exaltation) — reliable, flowing energy\n" +
|
|
104
109
|
"- **Debilitated planets** (detriment/fall) — areas requiring conscious integration\n" +
|
|
105
|
-
"- **Retrograde planets** —
|
|
110
|
+
"- **Retrograde planets** — traditionally considered weakened or contrary in expression; " +
|
|
111
|
+
"modern practice reads them as internalized or revisited themes. Note both perspectives.\n\n" +
|
|
106
112
|
"### 5. Key Aspects\n" +
|
|
107
113
|
"Highlight the 4–6 tightest or most significant aspects:\n" +
|
|
108
114
|
"- Conjunction (0°): fusion | Opposition (180°): polarity | Square (90°): friction/growth\n" +
|
|
@@ -110,8 +116,12 @@ export const PROMPTS = [
|
|
|
110
116
|
"### 6. Major Aspect Patterns\n" +
|
|
111
117
|
"Flag any: Stelliums (3+ conjunct), Grand Trines, Grand Crosses, T-Squares, Yods.\n\n" +
|
|
112
118
|
"### 7. North Node Path\n" +
|
|
113
|
-
"Node sign and house =
|
|
114
|
-
"
|
|
119
|
+
"Node sign and house = the direction of growth and development. South Node = familiar patterns, " +
|
|
120
|
+
"innate talents, and tendencies that can become default comfort zones. " +
|
|
121
|
+
"(Note: 'past life' or 'karmic' framings are one interpretive tradition among several — present as such if the user requests that lens.)\n\n" +
|
|
122
|
+
"**Tone**: Warm, specific, and empowering. Every statement grounded in actual chart data.\n" +
|
|
123
|
+
"**Disclaimer**: Astrological interpretation is symbolic and interpretive, not predictive or diagnostic. " +
|
|
124
|
+
"Never present chart analysis as a substitute for professional medical, legal, or psychological advice.\n\n" +
|
|
115
125
|
"## Step 5 — Close with Follow-Up Offers\n" +
|
|
116
126
|
"After delivering the reading, ask which of these deeper layers they'd like to explore:\n" +
|
|
117
127
|
"- **Dignities deep-dive** — call `ephemeris_dignities` to see which planets are in their strongest " +
|
|
@@ -136,8 +146,12 @@ export const PROMPTS = [
|
|
|
136
146
|
"3. **Life areas to focus on** — career, relationships, creativity, finances, health, " +
|
|
137
147
|
"relocation, spirituality. This guides which house transits to emphasize.\n" +
|
|
138
148
|
"4. **Any major events coming up** they already know about — reframes the transits around real context\n\n" +
|
|
139
|
-
"## Step 2 — Resolve Coordinates and Timezone\n" +
|
|
140
|
-
"
|
|
149
|
+
"## Step 2 — Resolve Coordinates and Timezone (MANDATORY)\n" +
|
|
150
|
+
"**Do NOT guess coordinates or timezones from memory.** Use the API tools:\n\n" +
|
|
151
|
+
"**A) Geocode** — call `dev_call` with `method: 'GET'`, `path: '/location/autocomplete'`, " +
|
|
152
|
+
"`query: { q: 'Birth City, Country' }`. Use the returned decimal lat/lon.\n\n" +
|
|
153
|
+
"**B) Timezone** — call `dev_call` with `method: 'POST'`, `path: '/timezone/lookup'`, " +
|
|
154
|
+
"`body: { latitude: ..., longitude: ..., datetime: 'YYYY-MM-DDTHH:MM:SS' }`.\n\n" +
|
|
141
155
|
"- Set `start_date` to today and `end_date` to the end of the forecast window\n\n" +
|
|
142
156
|
"## Step 3 — Tool Call Sequence\n" +
|
|
143
157
|
"Two calls minimum, run sequentially:\n\n" +
|
|
@@ -163,8 +177,11 @@ export const PROMPTS = [
|
|
|
163
177
|
"(e.g. 'Career inflection — Saturn MC + Jupiter trine Sun'). These are the dates to plan around.\n\n" +
|
|
164
178
|
"### 🧭 How to Navigate\n" +
|
|
165
179
|
"For each 🔴 major transit: one concrete, practical action — not just what it means, but what to *do*.\n\n" +
|
|
166
|
-
"**Tone**: Empowering.
|
|
167
|
-
"
|
|
180
|
+
"**Tone**: Empowering but honest. Frame transits as conditions that can be worked with, " +
|
|
181
|
+
"not inevitable forces. Avoid fatalism, but also avoid implying the person has total control over transit-level events. " +
|
|
182
|
+
"Difficult transits warrant clear, specific preparation — not vague reassurance.\n" +
|
|
183
|
+
"**Disclaimer**: Astrological interpretation is symbolic and interpretive, not predictive or diagnostic. " +
|
|
184
|
+
"Never present transit analysis as a substitute for professional advice.\n\n" +
|
|
168
185
|
"## Step 5 — Follow-Up Offers\n" +
|
|
169
186
|
"After delivering the forecast, offer to layer in:\n" +
|
|
170
187
|
"- **Right now**: call `ephemeris_natal_transits` with today's UTC datetime to see what's " +
|
|
@@ -192,8 +209,12 @@ export const PROMPTS = [
|
|
|
192
209
|
"5. **Type of relationship**: romantic, friendship, family, business partners?\n" +
|
|
193
210
|
"6. **Primary question or concern** — what are they most curious/worried about?\n" +
|
|
194
211
|
"7. **House system**: Placidus (default), Whole Sign, Koch, Equal?\n\n" +
|
|
195
|
-
"## Step 2 — Resolve Both Sets of Coordinates\n" +
|
|
196
|
-
"
|
|
212
|
+
"## Step 2 — Resolve Both Sets of Coordinates (MANDATORY)\n" +
|
|
213
|
+
"**Do NOT guess coordinates or timezones.** For EACH person:\n\n" +
|
|
214
|
+
"**A) Geocode** — call `dev_call` with `method: 'GET'`, `path: '/location/autocomplete'`, " +
|
|
215
|
+
"`query: { q: 'Birth City, Country' }`.\n\n" +
|
|
216
|
+
"**B) Timezone** — call `dev_call` with `method: 'POST'`, `path: '/timezone/lookup'`, " +
|
|
217
|
+
"`body: { latitude: ..., longitude: ..., datetime: 'YYYY-MM-DDTHH:MM:SS' }`.\n\n" +
|
|
197
218
|
"- Format: local ISO 8601 datetime (no Z) + IANA timezone name separately for each person\n" +
|
|
198
219
|
"- Note if either birth time is unknown — flag this upfront before running tools\n\n" +
|
|
199
220
|
"## Step 3 — Tool Call\n" +
|
|
@@ -229,7 +250,11 @@ export const PROMPTS = [
|
|
|
229
250
|
"3 specific, actionable insights. What does this pairing need to thrive? " +
|
|
230
251
|
"What pattern to consciously watch? What is the relationship's highest potential?\n\n" +
|
|
231
252
|
"**Tone**: Balanced and honest. Hard aspects are opportunities. Never doom a connection " +
|
|
232
|
-
"on a single difficult cross-aspect.\n
|
|
253
|
+
"on a single difficult cross-aspect.\n" +
|
|
254
|
+
"**Ethical boundary**: Never advise someone to end, avoid, or pursue a relationship based on chart data alone. " +
|
|
255
|
+
"Astrology describes dynamics — it does not determine whether a relationship should exist.\n" +
|
|
256
|
+
"**Disclaimer**: Astrological interpretation is symbolic and interpretive, not predictive or diagnostic. " +
|
|
257
|
+
"Never present compatibility analysis as a substitute for professional relationship counseling.\n\n" +
|
|
233
258
|
"## Step 5 — Follow-Up Offers\n" +
|
|
234
259
|
"After the reading, offer:\n" +
|
|
235
260
|
"- **Composite chart** — call `ephemeris_composite` to read the relationship as its own entity " +
|
|
@@ -256,9 +281,13 @@ export const PROMPTS = [
|
|
|
256
281
|
"general quality of life — this shapes which planetary lines matter most\n" +
|
|
257
282
|
"4. **What they already feel** about these cities — sometimes the chart confirms an intuition, " +
|
|
258
283
|
"sometimes it explains why a place felt 'off'\n\n" +
|
|
259
|
-
"## Step 2 — Resolve Coordinates\n" +
|
|
260
|
-
"
|
|
261
|
-
"
|
|
284
|
+
"## Step 2 — Resolve Coordinates (MANDATORY)\n" +
|
|
285
|
+
"**Do NOT guess coordinates or timezones.** Use the API tools:\n\n" +
|
|
286
|
+
"**A) Geocode birth city** — call `dev_call` with `method: 'GET'`, `path: '/location/autocomplete'`, " +
|
|
287
|
+
"`query: { q: 'Birth City, Country' }`.\n\n" +
|
|
288
|
+
"**B) Timezone** — call `dev_call` with `method: 'POST'`, `path: '/timezone/lookup'`, " +
|
|
289
|
+
"`body: { latitude: ..., longitude: ..., datetime: 'YYYY-MM-DDTHH:MM:SS' }`.\n\n" +
|
|
290
|
+
"**C) Geocode each target city** — repeat the autocomplete call for each destination city.\n\n" +
|
|
262
291
|
"- Format birth datetime as local ISO 8601 (no Z), pass IANA timezone separately\n\n" +
|
|
263
292
|
"## Step 3 — Tool Call Sequence\n" +
|
|
264
293
|
"Two calls minimum. Start lean, offer more after delivery.\n\n" +
|
|
@@ -267,7 +296,9 @@ export const PROMPTS = [
|
|
|
267
296
|
"- `birth_latitude` / `birth_longitude`: birth coords\n" +
|
|
268
297
|
"- `query_latitude` / `query_longitude`: target city coords\n" +
|
|
269
298
|
"- `radius_deg`: `3` (default ~300km; increase to `5` for rural/remote regions)\n" +
|
|
270
|
-
"- `include_aspects`: `true` (includes paran crossings, not just primary lines)\n
|
|
299
|
+
"- `include_aspects`: `true` (includes paran crossings, not just primary lines)\n" +
|
|
300
|
+
" Note: paran crossings are secondary influences, less intense than primary angular lines. " +
|
|
301
|
+
"Present them as supporting texture, not headline themes.\n\n" +
|
|
271
302
|
"This gives immediate, city-specific results for exactly what they asked about.\n\n" +
|
|
272
303
|
"**B) Relocate the Chart** — for their single highest-interest city, call `ephemeris_relocation` with:\n" +
|
|
273
304
|
"- `natal_datetime`, `natal_latitude`, `natal_longitude`\n" +
|
|
@@ -314,7 +345,9 @@ export const PROMPTS = [
|
|
|
314
345
|
"[City A] stands out because [specific reason]. [City B] is worth a trial visit for [Y] but " +
|
|
315
346
|
"caution around [Z].'\n\n" +
|
|
316
347
|
"**Tone**: Practical and decisive. People use this for real decisions. Be honest about " +
|
|
317
|
-
"
|
|
348
|
+
"genuinely challenging lines — Mars IC, Pluto IC, and Saturn DSC warrant clear cautions, " +
|
|
349
|
+
"not euphemistic reframing. Frame difficulty realistically, not dismissively. " +
|
|
350
|
+
"Avoid guaranteed prediction in either direction.\n\n" +
|
|
318
351
|
"## Follow-Up Offers\n" +
|
|
319
352
|
"After the reading, offer:\n" +
|
|
320
353
|
"- **Global power line map** — call `acg_power_lines` to show ALL planetary lines worldwide, " +
|
|
@@ -338,13 +371,17 @@ export const PROMPTS = [
|
|
|
338
371
|
"proceed with solar noon but flag that results may be imprecise.\n" +
|
|
339
372
|
"4. **Birth city and country** — needed for timezone conversion\n\n" +
|
|
340
373
|
"## Step 2 — CRITICAL: Convert to UTC\n" +
|
|
341
|
-
"Human Design requires **UTC datetime**. The tool rejects local times without a UTC offset.\n" +
|
|
342
|
-
"
|
|
343
|
-
"
|
|
374
|
+
"Human Design requires **UTC datetime**. The tool rejects local times without a UTC offset.\n\n" +
|
|
375
|
+
"**A) Geocode** — call `dev_call` with `method: 'GET'`, `path: '/location/autocomplete'`, " +
|
|
376
|
+
"`query: { q: 'Birth City, Country' }`.\n\n" +
|
|
377
|
+
"**B) Timezone** — call `dev_call` with `method: 'POST'`, `path: '/timezone/lookup'`, " +
|
|
378
|
+
"`body: { latitude: ..., longitude: ..., datetime: 'YYYY-MM-DDTHH:MM:SS' }`.\n" +
|
|
379
|
+
"This returns the UTC offset for the birth year, including historical DST.\n\n" +
|
|
380
|
+
"- Use the returned offset to convert local birth time → UTC\n" +
|
|
344
381
|
"- Format as ISO 8601 with Z: e.g. `1990-04-15T19:30:00Z`\n\n" +
|
|
345
382
|
"**Why HD needs UTC**: The system calculates two activation moments:\n" +
|
|
346
383
|
"- **Personality (Conscious / Black)**: the birth datetime\n" +
|
|
347
|
-
"- **Design (Unconscious / Red)**:
|
|
384
|
+
"- **Design (Unconscious / Red)**: 88° of the Sun's arc before birth (approximately 88–89 days, varying by season)\n" +
|
|
348
385
|
"The API computes both from the single UTC birth datetime automatically.\n\n" +
|
|
349
386
|
"## Step 3 — Call the Tools\n\n" +
|
|
350
387
|
"**A) Full Chart** — call `human_design_chart` with:\n" +
|
|
@@ -383,30 +420,25 @@ export const PROMPTS = [
|
|
|
383
420
|
"Interpret both lines of their profile number (e.g. 3/5, 2/4, 6/2). " +
|
|
384
421
|
"Each line is a hexagram archetype: 1=Investigator, 2=Hermit, 3=Martyr, 4=Opportunist, " +
|
|
385
422
|
"5=Heretic, 6=Role Model. The first line is conscious; the second is unconscious.\n\n" +
|
|
386
|
-
"### 4. Centers
|
|
387
|
-
"
|
|
388
|
-
"
|
|
389
|
-
"- **
|
|
390
|
-
"not over-identifying
|
|
391
|
-
"Centers: **Head** (inspiration/pressure) → **Ajna** (conceptualization) → **Throat** (expression/action) → " +
|
|
392
|
-
"**G/Identity** (direction/love/Self) → **Heart/Ego** (willpower/resources) → **Sacral** (life force/sexuality) → " +
|
|
393
|
-
"**Solar Plexus** (emotions/spirit) → **Root** (adrenaline/pressure) → **Spleen** (immune/intuition/fear)\n\n" +
|
|
423
|
+
"### 4. Centers — Defined vs Open Highlights\n" +
|
|
424
|
+
"Highlight the 2–3 most important defined centers and 1–2 key open centers. " +
|
|
425
|
+
"Don't walk through all 9 unless the user asks — focus on what shapes their daily experience most.\n" +
|
|
426
|
+
"- **Defined** = consistent, reliable energy in that area\n" +
|
|
427
|
+
"- **Undefined/Open** = receptive, amplifying — wisdom comes from not over-identifying here\n\n" +
|
|
394
428
|
"### 5. Key Channels and Gates\n" +
|
|
395
|
-
"Highlight 3
|
|
396
|
-
"name it, describe what consistent energy it gives this person.\n" +
|
|
397
|
-
"Then note the 2–3 most prominent conscious gates (personality side = Black), " +
|
|
398
|
-
"especially if they are 'hanging' (not completing a channel) — these are themes the person " +
|
|
399
|
-
"seeks completion for through others.\n\n" +
|
|
429
|
+
"Highlight 2–3 defined channels and 1–2 prominent hanging gates (themes they seek through others).\n\n" +
|
|
400
430
|
"### 6. Incarnation Cross\n" +
|
|
401
|
-
"Name the Cross and describe it as the overarching life theme
|
|
402
|
-
"
|
|
403
|
-
"
|
|
404
|
-
"### 7. Living Your Design — Experiments\n" +
|
|
405
|
-
"Give 3 specific, concrete experiments the user can try in the next 30 days to embody their " +
|
|
406
|
-
"Type, Strategy, and Authority. Make them practical and immediately actionable.\n\n" +
|
|
431
|
+
"Name the Cross and describe it as the overarching life theme. Keep it to 2–3 sentences.\n\n" +
|
|
432
|
+
"### 7. One Experiment\n" +
|
|
433
|
+
"Give 1 specific, concrete experiment they can try this week to test their Strategy and Authority.\n\n" +
|
|
407
434
|
"**Tone**: Curious and invitational. Human Design is meant to be experimented with, not believed. " +
|
|
408
|
-
"Frame everything as 'something to try' not 'who you are'
|
|
409
|
-
"
|
|
435
|
+
"Frame everything as 'something to try' not 'who you are'.\n\n" +
|
|
436
|
+
"## Step 5 — Go Deeper (Offer, Don't Dump)\n" +
|
|
437
|
+
"After the core reading, offer these as next steps:\n" +
|
|
438
|
+
"- **Full Centers walkthrough** — 'Want me to go through all 9 centers in detail?'\n" +
|
|
439
|
+
"- **Channel deep-dive** — explore specific channel meanings and activation patterns\n" +
|
|
440
|
+
"- **Planetary cycles** — Saturn Return (~29y), Chiron Return (~50y), Uranus Opposition (~42y)\n" +
|
|
441
|
+
"- **Compare charts** — connection chart with a partner, colleague, or family member",
|
|
410
442
|
},
|
|
411
443
|
// ─────────────────────────────────────────────────────────────────────────
|
|
412
444
|
// 7. Electional Timing
|
|
@@ -425,6 +457,9 @@ export const PROMPTS = [
|
|
|
425
457
|
"4. **Hard constraints** — dates they absolutely cannot use (prior commitments, venue availability)\n" +
|
|
426
458
|
"5. **Any personal chart data?** If yes, run natal chart first and look for dates when the " +
|
|
427
459
|
"moon triggers benefic natal planets.\n\n" +
|
|
460
|
+
"## Step 1.5 — Resolve Event Location (MANDATORY)\n" +
|
|
461
|
+
"**Do NOT guess coordinates.** Call `dev_call` with `method: 'GET'`, `path: '/location/autocomplete'`, " +
|
|
462
|
+
"`query: { q: 'Event City, Country' }` to get verified decimal lat/lon for the event location.\n\n" +
|
|
428
463
|
"## Step 2 — Check the Planetary Weather First\n" +
|
|
429
464
|
"Before scanning for windows:\n\n" +
|
|
430
465
|
"**A) Station Check** — call `electional_station_tracker` with:\n" +
|
|
@@ -437,10 +472,15 @@ export const PROMPTS = [
|
|
|
437
472
|
"## Step 3 — Electional Principles\n" +
|
|
438
473
|
"Apply these rules when configuring the window search:\n\n" +
|
|
439
474
|
"**Universal rules (all events):**\n" +
|
|
440
|
-
"- Avoid Void of Course Moon — nothing initiated under a VOC Moon
|
|
475
|
+
"- Avoid Void of Course Moon — traditionally, 'nothing initiated under a VOC Moon comes to perfection.' " +
|
|
476
|
+
"(Note: 'VOC' definition varies by tradition. Hellenistic: Moon makes no applying Ptolemaic aspect " +
|
|
477
|
+
"before leaving its sign. Modern: Moon makes no applying major aspect to traditional planets. " +
|
|
478
|
+
"The API uses the modern definition.)\n" +
|
|
441
479
|
"- Waxing Moon for new beginnings, growth, and outward actions\n" +
|
|
442
480
|
"- Waning Moon for endings, release, reducing, and inward focus\n" +
|
|
443
|
-
"-
|
|
481
|
+
"- Mercury Rx: not ideal for signing *new* contracts or launching communications-dependent ventures. " +
|
|
482
|
+
"Traditionally better suited for re-negotiating, revising, or reviewing existing agreements. " +
|
|
483
|
+
"Not an absolute prohibition — weigh against other factors.\n" +
|
|
444
484
|
"- Avoid Venus Rx for weddings, aesthetic procedures, major romantic commitments, expensive purchases\n" +
|
|
445
485
|
"- Avoid Mars Rx for surgeries, confrontations, legal disputes, major physical initiatives\n\n" +
|
|
446
486
|
"**Event-specific guidance:**\n" +
|
|
@@ -500,10 +540,14 @@ export const PROMPTS = [
|
|
|
500
540
|
" - **Fagan-Bradley** — Western sidereal standard\n" +
|
|
501
541
|
" - **Yukteshwar** — based on Sri Yukteswar's *The Holy Science*\n" +
|
|
502
542
|
" Default to Lahiri if unsure.\n\n" +
|
|
503
|
-
"## Step 2 — Convert to UTC\n" +
|
|
504
|
-
"The `vedic_chart` tool requires a UTC datetime (with Z suffix):\n" +
|
|
505
|
-
"
|
|
506
|
-
"
|
|
543
|
+
"## Step 2 — Convert to UTC (MANDATORY)\n" +
|
|
544
|
+
"The `vedic_chart` tool requires a UTC datetime (with Z suffix):\n\n" +
|
|
545
|
+
"**A) Geocode** — call `dev_call` with `method: 'GET'`, `path: '/location/autocomplete'`, " +
|
|
546
|
+
"`query: { q: 'Birth City, Country' }`.\n\n" +
|
|
547
|
+
"**B) Timezone** — call `dev_call` with `method: 'POST'`, `path: '/timezone/lookup'`, " +
|
|
548
|
+
"`body: { latitude: ..., longitude: ..., datetime: 'YYYY-MM-DDTHH:MM:SS' }`.\n" +
|
|
549
|
+
"This returns the correct IANA timezone and UTC offset for the birth year, including historical DST.\n\n" +
|
|
550
|
+
"- Use the returned offset to convert local birth time → UTC\n" +
|
|
507
551
|
"- Format: `1990-01-15T03:00:00Z`\n\n" +
|
|
508
552
|
"## Step 3 — Call the Tool\n" +
|
|
509
553
|
"Call `vedic_chart` with:\n" +
|
|
@@ -513,54 +557,40 @@ export const PROMPTS = [
|
|
|
513
557
|
"- `ayanamsa`: user's choice or `'lahiri'`\n\n" +
|
|
514
558
|
"## Step 4 — contextual Frame: Vedic vs Western\n" +
|
|
515
559
|
"Brief the user (if they're Western-trained) on key differences:\n" +
|
|
516
|
-
"- **Sidereal zodiac**: planetary positions
|
|
517
|
-
"Sun
|
|
560
|
+
"- **Sidereal zodiac**: planetary positions shift approximately 24° earlier compared to tropical. " +
|
|
561
|
+
"A Sun at 25° Aries tropical ≈ 1° Aries sidereal. A Sun at 10° Aries tropical ≈ 16° Pisces sidereal. " +
|
|
562
|
+
"The exact offset depends on the chosen ayanamsa (Lahiri ~24°07' in 2026).\n" +
|
|
518
563
|
"- **Whole Sign Bhavas**: the Lagna's sign = the entire 1st Bhava. No intercepted signs.\n" +
|
|
519
564
|
"- **Nakshatras**: 27 lunar mansions of ~13°20' each — the heart of timing and soul-level analysis\n" +
|
|
520
565
|
"- **The Moon is king**: in Jyotish the Moon holds more weight than the Sun for disposition and timing\n" +
|
|
521
566
|
"- **Guna of chart**: Sattvic (clear, spiritual), Rajasic (active, worldly), or Tamasic (inert)?\n\n" +
|
|
522
567
|
"## Step 5 — Structure the Reading\n\n" +
|
|
523
|
-
"### The Lagna (Ascendant)
|
|
524
|
-
"-
|
|
525
|
-
"-
|
|
526
|
-
"
|
|
527
|
-
"-
|
|
528
|
-
"
|
|
529
|
-
"
|
|
530
|
-
"
|
|
531
|
-
"-
|
|
532
|
-
"-
|
|
533
|
-
"-
|
|
534
|
-
"###
|
|
535
|
-
"
|
|
536
|
-
"
|
|
537
|
-
"###
|
|
538
|
-
"
|
|
539
|
-
"
|
|
540
|
-
"
|
|
541
|
-
"
|
|
542
|
-
"
|
|
543
|
-
"
|
|
544
|
-
"
|
|
545
|
-
"- **
|
|
546
|
-
"- **
|
|
547
|
-
"- **
|
|
548
|
-
"- **
|
|
549
|
-
"- **Parivartana (Mutual Reception)**: two planets in each other's signs → exchanged strength\n" +
|
|
550
|
-
"- **Viparita Raj Yoga**: lords of dusthanas (6, 8, 12) in other dusthanas → triumph through adversity\n\n" +
|
|
551
|
-
"### Navamsa (D9) Highlights\n" +
|
|
552
|
-
"The navamsa reveals the soul's deeper purpose and the quality of relationships:\n" +
|
|
553
|
-
"- Where does the Lagna lord fall in D9? That bhava is additionally activated.\n" +
|
|
554
|
-
"- Where do the luminaries (Sun/Moon) land in D9?\n" +
|
|
555
|
-
"- Vargottama planets (same sign in D1 and D9) are especially strong — note these.\n\n" +
|
|
556
|
-
"### Vimshottari Dasha (Planetary Periods)\n" +
|
|
557
|
-
"If the API returns Dasha data:\n" +
|
|
558
|
-
"- **Current Maha Dasha** (major 6–20 year period) and its lord's chart condition\n" +
|
|
559
|
-
"- **Current Antardasha** (sub-period, ~1–3 years) and its lord's interaction with the major lord\n" +
|
|
560
|
-
"- **Next Maha Dasha change**: when it arrives and what themes to expect\n\n" +
|
|
561
|
-
"**Tone**: Respectful of the tradition's depth. Use Sanskrit terms with English equivalents in parentheses. " +
|
|
562
|
-
"Reference the Vedic philosophical framework (dharma, artha, kama, moksha) where appropriate. " +
|
|
563
|
-
"Jyotish is a practical science — always relate chart factors to real life arenas.",
|
|
568
|
+
"### The Lagna (Ascendant)\n" +
|
|
569
|
+
"- Rising rashi, Lagna lord placement and dignity\n" +
|
|
570
|
+
"- Any grahas in the Lagna\n\n" +
|
|
571
|
+
"### The Moon (Chandra)\n" +
|
|
572
|
+
"- Rashi, Bhava, Nakshatra (name + deity + quality), Pada\n" +
|
|
573
|
+
"- Paksha: Shukla (waxing) or Krishna (waning)\n\n" +
|
|
574
|
+
"### Planetary Dignity Highlights\n" +
|
|
575
|
+
"Don't walk through all 9 grahas exhaustively. Highlight:\n" +
|
|
576
|
+
"- Any exalted (uchcha) or fallen (neecha) planets — these dominate the chart\n" +
|
|
577
|
+
"- The most angular planets (Kendras 1, 4, 7, 10)\n" +
|
|
578
|
+
"- Retrograde planets — note, but don't overweight\n\n" +
|
|
579
|
+
"### Top 2–3 Yogas\n" +
|
|
580
|
+
"Scan for the most impactful: Raj Yoga, Gajakesari, Neecha Bhanga, Parivartana. " +
|
|
581
|
+
"Name them, explain in plain English what they promise.\n\n" +
|
|
582
|
+
"### Current Dasha Period\n" +
|
|
583
|
+
"If the API returns Dasha data, name the current Maha Dasha and Antardasha. " +
|
|
584
|
+
"What life themes are active right now?\n\n" +
|
|
585
|
+
"**Tone**: Respectful of the tradition's depth. Use Sanskrit terms with English equivalents. " +
|
|
586
|
+
"Keep the reading grounded in practical life arenas.\n\n" +
|
|
587
|
+
"## Step 6 — Go Deeper (Offer, Don't Dump)\n" +
|
|
588
|
+
"After the core reading, offer:\n" +
|
|
589
|
+
"- **Full graha-by-graha walkthrough** — all 9 planets in detail\n" +
|
|
590
|
+
"- **Navamsa (D9)** — the soul chart and relationship layer\n" +
|
|
591
|
+
"- **Extended Yoga analysis** — Dhana Yoga, Viparita Raj Yoga, etc.\n" +
|
|
592
|
+
"- **Nakshatra deep-dive** — all planet nakshatras, not just Moon\n" +
|
|
593
|
+
"- **Transit overlay** — current Gochar transits to the sidereal natal chart",
|
|
564
594
|
},
|
|
565
595
|
// ─────────────────────────────────────────────────────────────────────────
|
|
566
596
|
// 9. BaZi Four Pillars of Destiny
|
|
@@ -590,6 +620,8 @@ export const PROMPTS = [
|
|
|
590
620
|
"this difference is small, but it can shift the hour animal by one block for cities far " +
|
|
591
621
|
"from their timezone meridian (e.g. western Xinjiang in China UTC+8, western Spain in CET).\n" +
|
|
592
622
|
"Pass individual date/time components — do NOT convert to UTC.\n\n" +
|
|
623
|
+
"**Geocode the birth city** — call `dev_call` with `method: 'GET'`, `path: '/location/autocomplete'`, " +
|
|
624
|
+
"`query: { q: 'Birth City, Country' }` to get verified coordinates for longitude offset calculation.\n\n" +
|
|
593
625
|
"## Step 3 — Call the Tool\n" +
|
|
594
626
|
"Call `chinese_bazi` with:\n" +
|
|
595
627
|
"- `year`: birth year\n" +
|
|
@@ -629,38 +661,25 @@ export const PROMPTS = [
|
|
|
629
661
|
"- **Weak DM** benefits from elements that produce it (印 Yìn) or match it (比劫 Bǐ Jié)\n" +
|
|
630
662
|
"Give a plain-English verdict: 'Your [DM] is [strong/weak]. This means your favorable element is " +
|
|
631
663
|
"[element], and you should [lifestyle advice around that element].'\n\n" +
|
|
632
|
-
"### Wu Xing (五行
|
|
633
|
-
"Count each element
|
|
634
|
-
"
|
|
635
|
-
"
|
|
636
|
-
"
|
|
637
|
-
"
|
|
638
|
-
"
|
|
639
|
-
"
|
|
640
|
-
"
|
|
641
|
-
"
|
|
642
|
-
"
|
|
643
|
-
"| Ten God | Relationship | Life Domain |\n" +
|
|
644
|
-
"|---------|-------------|-------------|\n" +
|
|
645
|
-
"| 正财 Direct Wealth | Controls DM (same polarity) | Steady income, discipline |\n" +
|
|
646
|
-
"| 偏财 Indirect Wealth | Controls DM (diff polarity) | Variable income, business |\n" +
|
|
647
|
-
"| 正官 Direct Officer | Controls DM (same polarity opposite) | Career, authority, fame |\n" +
|
|
648
|
-
"| 七杀 7 Killings | Controls DM (diff polarity opp.) | Power struggles, courage |\n" +
|
|
649
|
-
"| 正印 Direct Resource | Produces DM (same polarity) | Nurturing, education |\n" +
|
|
650
|
-
"| 偏印 Indirect Resource | Produces DM (diff polarity) | Unconventional learning |\n" +
|
|
651
|
-
"| 食神 Eating God | DM produces (same polarity) | Creativity, talents, pleasure |\n" +
|
|
652
|
-
"| 伤官 Hurting Officer | DM produces (diff polarity) | Self-expression, rebellion |\n" +
|
|
653
|
-
"| 比肩 Companion | Same element, same polarity | Peers, cooperation |\n" +
|
|
654
|
-
"| 劫财 Rob Wealth | Same element, diff polarity | Competition, loss, courage |\n\n" +
|
|
655
|
-
"### Luck Pillars (大运 Dàyùn)\n" +
|
|
656
|
-
"If the API returns Luck Pillar data:\n" +
|
|
657
|
-
"- Each Luck Pillar governs ~10 years of life\n" +
|
|
658
|
-
"- Identify the **current Luck Pillar** and its Stem/Branch\n" +
|
|
659
|
-
"- What Ten God does the Luck Pillar stem represent for this Day Master?\n" +
|
|
660
|
-
"- When does the next Luck Pillar begin and what themes does it introduce?\n\n" +
|
|
664
|
+
"### Wu Xing (五行) — Five Elements Balance\n" +
|
|
665
|
+
"Count each element across all 8 characters. Which are abundant? Which are missing? " +
|
|
666
|
+
"The scarce element is often the **yōng shén (用神)** — the favorable element to cultivate. " +
|
|
667
|
+
"Give one practical lifestyle suggestion tied to their favorable element.\n\n" +
|
|
668
|
+
"### Ten Gods — Headline Only\n" +
|
|
669
|
+
"Name the 2–3 most prominent Ten Gods in the chart (based on what appears in the pillars). " +
|
|
670
|
+
"Explain what each means for this person's life in plain language. " +
|
|
671
|
+
"Don't walk through all 10 unless the user asks.\n\n" +
|
|
672
|
+
"### Luck Pillars (大运)\n" +
|
|
673
|
+
"If the API returns Luck Pillar data, name the current 10-year pillar " +
|
|
674
|
+
"and the next transition. What themes shift?\n\n" +
|
|
661
675
|
"**Tone**: Deeply respectful of the Chinese metaphysical tradition. Use Chinese terms " +
|
|
662
|
-
"with pinyin and brief English equivalents.
|
|
663
|
-
"
|
|
676
|
+
"with pinyin and brief English equivalents. BaZi maps tendencies and timing — not fixed fate.\n\n" +
|
|
677
|
+
"## Step 6 — Go Deeper (Offer, Don't Dump)\n" +
|
|
678
|
+
"After the core reading, offer:\n" +
|
|
679
|
+
"- **Full Ten Gods walkthrough** — all 10 relationships mapped out\n" +
|
|
680
|
+
"- **Element remedy guide** — colors, directions, seasons, foods for their favorable element\n" +
|
|
681
|
+
"- **Annual pillar analysis** — how the current year's elements interact with their chart\n" +
|
|
682
|
+
"- **Compatibility** — compare BaZi charts with a partner",
|
|
664
683
|
},
|
|
665
684
|
// ─────────────────────────────────────────────────────────────────────────
|
|
666
685
|
// 10. Current Sky Snapshot
|
|
@@ -736,12 +755,20 @@ export const PROMPTS = [
|
|
|
736
755
|
" The Solar Return chart is cast for wherever the person *physically is* when the Sun " +
|
|
737
756
|
" hits their natal degree. Being in a different city changes the SR Ascendant and house layout.\n" +
|
|
738
757
|
" If they haven't decided yet, calculate for both their home and any other city they're considering.\n" +
|
|
758
|
+
" *(Note: Whether to cast the SR for the birth location or the birthday location is debated. " +
|
|
759
|
+
"The relocation SR technique is popular in modern practice but not universally accepted. " +
|
|
760
|
+
"If the user asks, acknowledge both approaches.)*\n" +
|
|
739
761
|
"4. **House system**: Placidus (default), Whole Sign, Koch, Equal?\n\n" +
|
|
740
|
-
"## Step 2 — Resolve Data\n" +
|
|
741
|
-
"
|
|
742
|
-
"
|
|
743
|
-
"
|
|
744
|
-
"
|
|
762
|
+
"## Step 2 — Resolve Data (MANDATORY)\n" +
|
|
763
|
+
"**Do NOT guess coordinates or timezones.** Use the API tools:\n\n" +
|
|
764
|
+
"**A) Geocode birth city** — call `dev_call` with `method: 'GET'`, `path: '/location/autocomplete'`, " +
|
|
765
|
+
"`query: { q: 'Birth City, Country' }`.\n\n" +
|
|
766
|
+
"**B) Timezone** — call `dev_call` with `method: 'POST'`, `path: '/timezone/lookup'`, " +
|
|
767
|
+
"`body: { latitude: ..., longitude: ..., datetime: 'YYYY-MM-DDTHH:MM:SS' }`.\n\n" +
|
|
768
|
+
"- For `birth_datetime`, include the UTC offset from the timezone lookup: `1985-06-21T14:00:00-05:00`\n" +
|
|
769
|
+
" (or convert to UTC with Z: `1985-06-21T19:00:00Z`)\n\n" +
|
|
770
|
+
"**C) Geocode birthday location** — repeat the autocomplete call for the city where they'll be " +
|
|
771
|
+
"on their birthday. This becomes `return_latitude`/`return_longitude`.\n\n" +
|
|
745
772
|
"## Step 3 — Tool Call\n" +
|
|
746
773
|
"Two calls. Deliver the reading, then offer depth.\n\n" +
|
|
747
774
|
"**A) Natal Baseline** — call `ephemeris_natal_chart` with `format='llm'` and `house_system` as chosen.\n" +
|
|
@@ -771,36 +798,21 @@ export const PROMPTS = [
|
|
|
771
798
|
"- Sign and house: the emotional undertone running through the year\n" +
|
|
772
799
|
"- SR Moon aspects: what shapes the emotional landscape?\n" +
|
|
773
800
|
"- SR Moon in an angular house (1/4/7/10): emotions are front and center, highly active\n\n" +
|
|
774
|
-
"### Angular Planets
|
|
775
|
-
"Any planet on an SR angle (within 5°) is forcefully active this year
|
|
776
|
-
"
|
|
777
|
-
"
|
|
778
|
-
"- **SR DC**: partnerships and one-to-one relationships are pivotal\n" +
|
|
779
|
-
"- **SR MC**: career, reputation, and public direction is being remade\n\n" +
|
|
780
|
-
"### Key SR Planets\n" +
|
|
781
|
-
"- **Jupiter in SR**: which house gets expanded and blessed? Where is luck flowing?\n" +
|
|
782
|
-
"- **Saturn in SR**: which house demands serious work, limits, or restructuring?\n" +
|
|
783
|
-
"- **Any SR stellium**: a house with 3+ planets = the overwhelmingly dominant life theme\n\n" +
|
|
801
|
+
"### Angular Planets + Key Players\n" +
|
|
802
|
+
"Any planet on an SR angle (within 5°) is forcefully active this year. Name them. " +
|
|
803
|
+
"Then note where Jupiter (expansion) and Saturn (restructuring) land by house. " +
|
|
804
|
+
"A stellium (3+ planets in one house) = the overwhelmingly dominant theme.\n\n" +
|
|
784
805
|
"### SR in Natal Context\n" +
|
|
785
|
-
"
|
|
786
|
-
"
|
|
787
|
-
"### Location Optimization (if applicable)\n" +
|
|
788
|
-
"If they asked about a different SR location: explain clearly — 'If you're in [City X] on your " +
|
|
789
|
-
"birthday, the SR Ascendant shifts from [sign] to [sign], moving [planet] from house [X] to " +
|
|
790
|
-
"house [Y], which changes the year from a theme of [A] to a theme of [B].'\n\n" +
|
|
791
|
-
"### The Year's Power Months\n" +
|
|
792
|
-
"The SR Moon transits each SR house in roughly one month. Identify the 2–3 months when the " +
|
|
793
|
-
"SR Moon activates the most loaded SR houses — these are the year's peak moments.\n\n" +
|
|
806
|
+
"Briefly note which natal houses are 'lit up' by the SR planets. " +
|
|
807
|
+
"Keep it to the 2–3 strongest overlaps.\n\n" +
|
|
794
808
|
"**Tone**: Visionary and forward-focused. Give the user a map for the year. " +
|
|
795
|
-
"Be specific and bold — people remember a good SR reading
|
|
796
|
-
"## Step 5 —
|
|
797
|
-
"After the reading, offer
|
|
798
|
-
"- **
|
|
799
|
-
"
|
|
800
|
-
"- **
|
|
801
|
-
"what's already building
|
|
802
|
-
"- **Second location comparison** — re-run `ephemeris_solar_return` with alternate city coords " +
|
|
803
|
-
"to compare how the SR Ascendant and house emphasis shifts",
|
|
809
|
+
"Be specific and bold — people remember a good SR reading.\n\n" +
|
|
810
|
+
"## Step 5 — Go Deeper (Offer, Don't Dump)\n" +
|
|
811
|
+
"After the core reading, offer:\n" +
|
|
812
|
+
"- **Power months** — when does the SR Moon activate the most loaded SR houses?\n" +
|
|
813
|
+
"- **Location comparison** — re-run the SR for an alternate city to see how the Ascendant shifts\n" +
|
|
814
|
+
"- **Secondary progressions** — the slow backdrop layered underneath the SR year\n" +
|
|
815
|
+
"- **Transit snapshot** — what's already building as the SR year begins?",
|
|
804
816
|
},
|
|
805
817
|
// ─────────────────────────────────────────────────────────────────────────
|
|
806
818
|
// 12. Developer API Integration Guide
|