@openephemeris/mcp-server 3.17.0 → 3.20.0
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/CHANGELOG.md +77 -0
- package/LICENSE +21 -21
- package/README.md +1 -1
- package/dist/backend/client.d.ts +9 -0
- package/dist/backend/client.js +32 -5
- package/dist/event-store.d.ts +11 -0
- package/dist/event-store.js +61 -0
- package/dist/index.js +12 -11
- package/dist/oauth/session-utils.d.ts +59 -0
- package/dist/oauth/session-utils.js +110 -0
- package/dist/server-sse.d.ts +7 -1
- package/dist/server-sse.js +223 -127
- package/dist/tools/apps/bi-wheel-app.js +8 -6
- package/dist/tools/apps/chart-wheel-app.js +36 -51
- package/dist/tools/dev.js +1 -1
- package/dist/tools/index.d.ts +25 -0
- package/dist/tools/index.js +33 -0
- package/dist/tools/output-schemas.d.ts +1 -1
- package/dist/tools/output-schemas.js +1 -1
- package/dist/tools/specialized/acg.js +6 -2
- package/dist/tools/specialized/progressed.js +3 -1
- package/dist/ui/bi-wheel.html +5 -2
- package/dist/ui/bodygraph.html +30 -3
- package/dist/ui/chart-wheel.html +20 -22
- package/dist/ui/moon-phase.html +39 -32
- package/package.json +8 -4
- package/dist/tools/apps/bazi-app.d.ts +0 -23
- package/dist/tools/apps/bazi-app.js +0 -226
- package/dist/tools/apps/transit-timeline-app.d.ts +0 -20
- package/dist/tools/apps/transit-timeline-app.js +0 -295
- package/dist/tools/apps/vedic-chart-app.d.ts +0 -17
- package/dist/tools/apps/vedic-chart-app.js +0 -228
- package/dist/ui/bazi.html +0 -213
- package/dist/ui/transit-timeline.html +0 -6874
- package/dist/ui/vedic-chart.html +0 -210
package/dist/ui/vedic-chart.html
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<meta name="color-scheme" content="dark light" />
|
|
7
|
-
<title>Vedic Jyotish Chart</title>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<style>*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary:#05070c;--bg-secondary:#0d1219;--bg-tertiary:#171d26;--bg-hover:#222935;--border:#2c333e;--border-subtle:#1b1f27;--text-primary:#e1e5eb;--text-secondary:#979fab;--text-muted:#646972;--gold:#eaab05;--gold-dim:#aa7e1a;--gold-glow:rgba(234,171,5,.25);--gold-subtle:rgba(234,171,5,.08);--planet-sun:#ffa837;--planet-moon:#a1cae8;--planet-mercury:#6ec272;--planet-venus:#f18ac1;--planet-mars:#fc5855;--planet-jupiter:#eaab05;--planet-saturn:#8fa6cb;--planet-rahu:#8186d7;--planet-ketu:#da8659;--dignity-exalted:#eaab05;--dignity-debilitated:#f3625d;--dignity-own:#6ec272;--radius:6px;--radius-sm:3px;--radius-lg:10px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .0216652 .0286234 .0452973);--bg-secondary:color(display-p3 .0560261 .0691379 .0946654);--bg-tertiary:color(display-p3 .096217 .113655 .147573);--bg-hover:color(display-p3 .137776 .160653 .2052);--border:color(display-p3 .178937 .199903 .240355);--border-subtle:color(display-p3 .108709 .122909 .150282);--text-primary:color(display-p3 .883958 .896627 .920543);--text-secondary:color(display-p3 .598684 .622198 .66685);--text-muted:color(display-p3 .39567 .412041 .443131);--gold:color(display-p3 .879508 .6816 .234703);--gold-dim:color(display-p3 .639817 .500341 .194357);--gold-glow:color(display-p3 .879508 .6816 .234703/.25);--gold-subtle:color(display-p3 .879508 .6816 .234703/.08);--planet-sun:color(display-p3 .979154 .659227 .21215);--planet-moon:color(display-p3 .664971 .787746 .896611);--planet-mercury:color(display-p3 .509102 .751692 .477144);--planet-venus:color(display-p3 .89124 .561977 .746576);--planet-mars:color(display-p3 .913707 .390639 .360361);--planet-jupiter:color(display-p3 .879508 .6816 .234703);--planet-saturn:color(display-p3 .57766 .647332 .78263);--planet-rahu:color(display-p3 .510127 .524428 .81989);--planet-ketu:color(display-p3 .810621 .541171 .382256);--dignity-exalted:color(display-p3 .879508 .6816 .234703);--dignity-debilitated:color(display-p3 .885816 .42028 .386667);--dignity-own:color(display-p3 .509102 .751692 .477144)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(1.96267% -.122614 -2.00764);--bg-secondary:lab(5.21286% -.326827 -5.10724);--bg-tertiary:lab(10.5893% -.558816 -7.26317);--bg-hover:lab(16.3655% -.679582 -9.07274);--border:lab(21.0274% -.743657 -8.03484);--border-subtle:lab(11.7732% -.55144 -5.84751);--text-primary:lab(90.6878% -.517368 -3.73452);--text-secondary:lab(65.1297% -.927329 -7.41251);--text-muted:lab(44.2672% -.694215 -5.55873);--gold:lab(74.5441% 15.4997 76.437);--gold-dim:lab(55.9871% 11.3091 55.5836);--gold-glow:lab(74.5441% 15.4997 76.437/.25);--gold-subtle:lab(74.5441% 15.4997 76.437/.08);--planet-sun:lab(76.3024% 31.6825 83.6057);--planet-moon:lab(79.1643% -8.79321 -19.3308);--planet-mercury:lab(71.5613% -39.2213 32.0347);--planet-venus:lab(70.2618% 44.9914 -10.5022);--planet-mars:lab(60.882% 63.057 37.6481);--planet-jupiter:lab(74.5441% 15.4997 76.437);--planet-saturn:lab(67.2517% -1.74686 -21.8131);--planet-rahu:lab(58.1033% 13.5385 -42.6181);--planet-ketu:lab(64.4827% 30.1677 38.2587);--dignity-exalted:lab(74.5441% 15.4997 76.437);--dignity-debilitated:lab(61.0965% 56.6147 33.1618);--dignity-own:lab(71.5613% -39.2213 32.0347)}}@media (prefers-color-scheme:light){:root{--bg-primary:#f3f5f8;--bg-secondary:#e5e8ed;--bg-tertiary:#d3d8e0;--bg-hover:#c4cbd7;--border:#b1b8c3;--border-subtle:#ccd1d9;--text-primary:#0b0d12;--text-secondary:#3d434c;--text-muted:#646971;--gold:#896100;--gold-dim:#6f4b00;--gold-glow:rgba(137,97,0,.2);--gold-subtle:rgba(137,97,0,.07);--planet-sun:#a45f00;--planet-moon:#1b5274;--planet-mercury:#006c15;--planet-venus:#a03273;--planet-mars:#bd001b;--planet-jupiter:#896100;--planet-saturn:#3f5374;--planet-rahu:#413e96;--planet-ketu:#964100;--dignity-exalted:#896100;--dignity-debilitated:#bd001b;--dignity-own:#006c15;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .955887 .961034 .970732);--bg-secondary:color(display-p3 .899196 .909367 .928554);--bg-tertiary:color(display-p3 .8304 .845419 .873798);--bg-hover:color(display-p3 .772896 .795102 .837167);--border:color(display-p3 .698201 .719987 .761278);--border-subtle:color(display-p3 .805005 .819937 .848152);--text-primary:color(display-p3 .0441372 .0521689 .0676233);--text-secondary:color(display-p3 .242812 .260856 .295362);--text-muted:color(display-p3 .396691 .411981 .440999);--gold:color(display-p3 .57038 .356834 -.203198);--gold-dim:color(display-p3 .442672 .285282 -.134595);--gold-glow:color(display-p3 .57038 .356834 -.203198/.2);--gold-subtle:color(display-p3 .57038 .356834 -.203198/.07);--planet-sun:color(display-p3 .652927 .351579 -.183632);--planet-moon:color(display-p3 .168375 .317534 .44376);--planet-mercury:color(display-p3 .148908 .420483 .120432);--planet-venus:color(display-p3 .579328 .227384 .442243);--planet-mars:color(display-p3 .694209 .0659429 .120262);--planet-jupiter:color(display-p3 .57038 .356834 -.203198);--planet-saturn:color(display-p3 .262684 .323159 .443709);--planet-rahu:color(display-p3 .254224 .245063 .569023);--planet-ketu:color(display-p3 .557919 .263616 .052663);--dignity-exalted:color(display-p3 .57038 .356834 -.203198);--dignity-debilitated:color(display-p3 .694209 .0659429 .120262);--dignity-own:color(display-p3 .148908 .420483 .120432)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(96.5076% -.214994 -1.49846);--bg-secondary:lab(91.8546% -.419319 -2.9907);--bg-tertiary:lab(86.0409% -.610828 -4.47587);--bg-hover:lab(81.3789% -.873804 -6.69111);--border:lab(74.4184% -.864774 -6.68644);--border-subtle:lab(83.7208% -.609636 -4.47524);--text-primary:lab(3.67543% -.212148 -2.43837);--text-secondary:lab(28.0109% -.729963 -6.62285);--text-muted:lab(44.2712% -.656128 -5.19227);--gold:lab(44.0736% 22.5353 118.781);--gold-dim:lab(34.8944% 16.8155 79.322);--gold-glow:lab(44.0736% 22.5353 118.781/.2);--gold-subtle:lab(44.0736% 22.5353 118.781/.07);--planet-sun:lab(47.0942% 34.9095 115.734);--planet-moon:lab(32.6468% -8.89629 -25.0579);--planet-mercury:lab(39.2064% -45.2416 40.6297);--planet-venus:lab(39.8088% 50.4598 -11.9132);--planet-mars:lab(39.7145% 70.0599 49.6254);--planet-jupiter:lab(44.0736% 22.5353 118.781);--planet-saturn:lab(34.713% -.692427 -21.5121);--planet-rahu:lab(30.7426% 21.8588 -48.9882);--planet-ketu:lab(38.7083% 37.2573 56.6234);--dignity-exalted:lab(44.0736% 22.5353 118.781);--dignity-debilitated:lab(39.7145% 70.0599 49.6254);--dignity-own:lab(39.2064% -45.2416 40.6297)}}}html,body{background:var(--bg-primary);width:100%;height:100%;color:var(--text-primary);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.5;overflow:hidden}body{flex-direction:column;display:flex}#app{flex-direction:column;flex:1;display:flex;overflow:hidden}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}#loading-state[hidden]{display:none}.oe-loader{width:48px;height:48px;animation:1.4s linear infinite spin}.oe-loader circle{fill:none;stroke:var(--gold);stroke-width:3px;stroke-dasharray:200;stroke-dashoffset:80px;stroke-linecap:round}@keyframes spin{to{transform:rotate(360deg)}}.chart-status{background:var(--bg-secondary);border-top:1px solid var(--border-subtle);color:var(--text-muted);opacity:0;z-index:50;padding:6px 14px;font-size:11px;transition:opacity .2s,transform .2s;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.chart-status.visible{opacity:1;transform:translateY(0)}#vedic-container{flex-direction:column;flex:1;align-items:center;gap:12px;padding:12px;display:flex;overflow-y:auto}#vedic-container[hidden]{display:none}.vedic-header{justify-content:space-between;align-items:center;gap:8px;width:100%;max-width:540px;animation:.5s ease-out vedic-fade-in;display:flex}.vedic-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:12px;font-weight:700}.vedic-header-meta{align-items:center;gap:8px;display:flex}.vedic-ayanamsa-badge{border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border-subtle);color:var(--text-secondary);font-variant-numeric:tabular-nums;padding:2px 8px;font-size:10px;font-weight:600}.vedic-toggle-btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;padding:3px 8px;font-size:10px;font-weight:600;transition:background .15s,color .15s}.vedic-toggle-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.vedic-toggle-btn.active{border-color:var(--gold-dim);color:var(--gold);background:var(--gold-subtle)}.rashi-grid{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius);width:min(100%,540px);box-shadow:0 0 0 1px var(--border-subtle), 0 4px 32px rgba(0,0,0,.3);grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(4,1fr);animation:.6s ease-out vedic-fade-in;display:grid;overflow:hidden}@supports (color:color(display-p3 0 0 0)){.rashi-grid{box-shadow:0 0 0 1px var(--border-subtle), 0 4px 32px color(display-p3 0 0 0/.3)}}@supports (color:lab(0% 0 0)){.rashi-grid{box-shadow:0 0 0 1px var(--border-subtle), 0 4px 32px lab(0% 0 0/.3)}}@keyframes vedic-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.rashi-cell{background:var(--bg-secondary);border:1px solid var(--border-subtle);cursor:pointer;flex-direction:column;min-width:0;min-height:0;padding:4px 5px;transition:background .12s,box-shadow .12s;display:flex;position:relative;overflow:hidden}.rashi-cell.occupied:hover{background:var(--bg-hover);box-shadow:inset 0 0 0 1px var(--gold-glow), 0 0 12px var(--gold-glow);z-index:2}.rashi-cell.lagna{border-color:var(--gold-dim);background:#110d05;background:color(display-p3 .0641956 .0497811 .0230015);background:lab(3.71843% .818238 3.47664)}.rashi-cell.lagna:hover{box-shadow:inset 0 0 0 1px var(--gold), 0 0 18px var(--gold-glow)}.rashi-cell.center{background:var(--bg-primary);border-color:var(--border-subtle);cursor:default;text-align:center;justify-content:center;align-items:center;gap:2px}.rashi-cell.center:hover{background:var(--bg-primary);box-shadow:none}.cell-sign{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;font-size:9px;font-weight:700;line-height:1.2;overflow:hidden}.cell-sign-devanagari{color:var(--text-muted);flex-shrink:0;font-family:Noto Sans Devanagari,Mangal,sans-serif;font-size:10px;line-height:1.2;display:none}#vedic-container.show-devanagari .cell-sign-devanagari{display:block}#vedic-container.show-devanagari .cell-sign{display:none}.cell-top-row{flex-shrink:0;justify-content:space-between;align-items:baseline;gap:2px;min-width:0;display:flex}.cell-house-num{color:var(--text-muted);opacity:.5;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:8px;font-weight:700;line-height:1}.rashi-cell.lagna .cell-house-num{color:var(--gold-dim);opacity:1}.cell-planets{flex-wrap:wrap;gap:2px;min-height:0;margin-top:auto;padding-top:2px;display:flex;overflow:hidden}.planet-badge{white-space:nowrap;font-variant-numeric:tabular-nums;background:rgba(0,0,0,.2);background:color(display-p3 0 0 0/.2);background:lab(0% 0 0/.2);border-radius:2px;padding:1px 3px;font-size:10px;font-weight:700;line-height:1}.planet-badge[data-planet=sun]{color:var(--planet-sun)}.planet-badge[data-planet=moon]{color:var(--planet-moon)}.planet-badge[data-planet=mercury]{color:var(--planet-mercury)}.planet-badge[data-planet=venus]{color:var(--planet-venus)}.planet-badge[data-planet=mars]{color:var(--planet-mars)}.planet-badge[data-planet=jupiter]{color:var(--planet-jupiter)}.planet-badge[data-planet=saturn]{color:var(--planet-saturn)}.planet-badge[data-planet=rahu]{color:var(--planet-rahu)}.planet-badge[data-planet=ketu]{color:var(--planet-ketu)}.planet-badge .retro{opacity:.75;font-size:8px}.planet-badge .dignity-ex{color:var(--dignity-exalted);font-size:7px}.planet-badge .dignity-db{color:var(--dignity-debilitated);font-size:7px}@media (max-width:420px){.planet-label-full{display:none}.planet-label-short{display:inline}}@media (min-width:421px){.planet-label-full{display:inline}.planet-label-short{display:none}}.lagna-diagonal{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.lagna-diagonal line{stroke:var(--gold);stroke-width:1.5px;stroke-linecap:round;opacity:.7}.center-label{text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-size:9px;font-weight:700}.center-ayanamsa{color:var(--gold-dim);font-family:JetBrains Mono,Fira Mono,ui-monospace,monospace;font-size:10px;font-weight:600}.center-lagna{color:var(--text-secondary);font-family:Noto Sans Devanagari,Mangal,sans-serif;font-size:11px;font-weight:700}.vedic-legend{flex-wrap:wrap;justify-content:center;gap:6px 12px;width:100%;max-width:540px;animation:.8s ease-out .2s both vedic-fade-in;display:flex}.legend-item{color:var(--text-muted);align-items:center;gap:4px;font-size:10px;display:flex}.legend-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.vedic-actions{flex-wrap:wrap;gap:6px;width:100%;max-width:540px;animation:.8s ease-out .3s both vedic-fade-in;display:flex}.action-btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;align-items:center;gap:4px;padding:7px 12px;font-size:11px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex}.action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.action-btn--primary{color:#cbdfff;color:color(display-p3 .811259 .873257 .992208);color:lab(88.2011% -1.89927 -18.3428);background:linear-gradient(135deg,#1d4587,#32326d);background:linear-gradient(135deg,color(display-p3 .153533 .2659 .511983),color(display-p3 .195291 .194916 .412031));background:linear-gradient(135deg,lab(29.3399% 5.63866 -42.0206),lab(23.3003% 14.2058 -35.0966));border-color:#33548c;border-color:color(display-p3 .229049 .327581 .533696);border-color:lab(35.4848% 1.84765 -35.3079)}.action-btn--primary:hover{background:linear-gradient(135deg,#2151a1,#3d3c86);background:linear-gradient(135deg,color(display-p3 .180134 .31482 .611657),color(display-p3 .239239 .236673 .50744));background:linear-gradient(135deg,lab(34.9279% 7.15981 -48.9835),lab(28.8006% 17.5515 -42.0715));box-shadow:0 2px 12px rgba(29,69,135,.3);box-shadow:0 2px 12px color(display-p3 .153533 .2659 .511983/.3);box-shadow:0 2px 12px lab(29.3399% 5.63866 -42.0206/.3)}.vedic-drawer-overlay{z-index:60;opacity:0;background:rgba(0,0,0,.45);background:color(display-p3 0 0 0/.45);background:lab(0% 0 0/.45);transition:opacity .2s;position:fixed;top:0;bottom:0;left:0;right:0}.vedic-drawer-overlay.visible{opacity:1}.vedic-drawer{background:var(--bg-secondary);border-top:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;z-index:61;max-height:65vh;padding:16px;transition:transform .25s ease-out;position:fixed;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(100%)}.vedic-drawer.visible{transform:translateY(0)}.drawer-handle{background:var(--border);border-radius:2px;width:36px;height:4px;margin:0 auto 14px}.drawer-sign-title{align-items:center;gap:8px;margin-bottom:4px;font-size:16px;font-weight:700;display:flex}.drawer-sign-devanagari{color:var(--text-secondary);font-family:Noto Sans Devanagari,Mangal,sans-serif;font-size:14px;font-weight:400}.drawer-sign-element{border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;font-size:10px;font-weight:600}.drawer-section{margin-top:14px}.drawer-section-title{text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin-bottom:8px;font-size:10px;font-weight:700}.drawer-planet-row{background:var(--bg-tertiary);border-radius:var(--radius-sm);align-items:flex-start;gap:10px;margin-bottom:5px;padding:8px 10px;display:flex}.drawer-planet-abbr{min-width:22px;font-size:14px;font-weight:700}.drawer-planet-info{flex-direction:column;flex:1;gap:1px;display:flex}.drawer-planet-name{color:var(--text-primary);font-size:12px;font-weight:600}.drawer-planet-meta{color:var(--text-secondary);font-size:11px}.drawer-planet-nakshatra{color:var(--text-muted);font-size:10px}.drawer-planet-dignity{border-radius:10px;align-self:center;margin-left:auto;padding:1px 5px;font-size:9px;font-weight:700}.drawer-planet-dignity.exalted{background:var(--gold-subtle);color:var(--gold)}.drawer-planet-dignity.debilitated{color:var(--planet-mars);background:rgba(243,98,93,.12);background:color(display-p3 .885816 .42028 .386667/.12);background:lab(61.0965% 56.6147 33.1618/.12)}.drawer-planet-dignity.own{color:var(--planet-mercury);background:rgba(110,194,114,.1);background:color(display-p3 .509102 .751692 .477144/.1);background:lab(71.5613% -39.2213 32.0347/.1)}.error-state,.empty-state{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:32px;display:flex}.error-icon,.empty-icon{font-size:32px}.tooltip{z-index:100;border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);pointer-events:none;opacity:0;white-space:pre-line;max-width:220px;padding:5px 9px;font-size:11px;transition:opacity .15s;position:fixed}.tooltip.visible{opacity:1}@media (max-width:360px){.cell-sign{font-size:7px}.planet-badge{padding:1px 2px;font-size:8px}#vedic-container{gap:8px;padding:8px}.vedic-legend{display:none}}@media (max-width:420px){.cell-sign{font-size:8px}.center-ayanamsa{font-size:9px}}.chart-layer{opacity:1;transform-origin:310px 310px;animation:.5s cubic-bezier(.16,1,.3,1) both svgLayerAssemble;animation-delay:calc(var(--layer-index,0) * 80ms);transform:scale(1)}@keyframes svgLayerAssemble{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.floating-action-btn:after{content:"";background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);width:50%;height:100%;animation:3s 2s infinite shimmer;position:absolute;top:0;left:-100%;transform:skew(-20deg)}@keyframes shimmer{0%{left:-100%}20%{left:200%}to{left:200%}}@keyframes slideUpFadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUpFadeInPanel{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}
|
|
11
|
-
/*$vite$:1*/</style>
|
|
12
|
-
</head>
|
|
13
|
-
<body>
|
|
14
|
-
<div id="app">
|
|
15
|
-
<div id="loading-state">
|
|
16
|
-
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
17
|
-
<p>Computing Vedic chart…</p>
|
|
18
|
-
</div>
|
|
19
|
-
<div id="chart-status" class="chart-status" role="status" aria-live="polite"></div>
|
|
20
|
-
<div id="vedic-container" hidden></div>
|
|
21
|
-
<div id="tooltip" class="tooltip" aria-live="polite"></div>
|
|
22
|
-
</div>
|
|
23
|
-
|
|
24
|
-
<script type="module">(function() {
|
|
25
|
-
let e2 = document.createElement("link").relList;
|
|
26
|
-
if (e2 && e2.supports && e2.supports("modulepreload")) return;
|
|
27
|
-
for (let e3 of document.querySelectorAll('link[rel="modulepreload"]')) n2(e3);
|
|
28
|
-
new MutationObserver((e3) => {
|
|
29
|
-
for (let t3 of e3) if (t3.type === "childList") for (let e4 of t3.addedNodes) e4.tagName === "LINK" && e4.rel === "modulepreload" && n2(e4);
|
|
30
|
-
}).observe(document, { childList: true, subtree: true });
|
|
31
|
-
function t2(e3) {
|
|
32
|
-
let t3 = {};
|
|
33
|
-
return e3.integrity && (t3.integrity = e3.integrity), e3.referrerPolicy && (t3.referrerPolicy = e3.referrerPolicy), e3.crossOrigin === "use-credentials" ? t3.credentials = "include" : e3.crossOrigin === "anonymous" ? t3.credentials = "omit" : t3.credentials = "same-origin", t3;
|
|
34
|
-
}
|
|
35
|
-
function n2(e3) {
|
|
36
|
-
if (e3.ep) return;
|
|
37
|
-
e3.ep = true;
|
|
38
|
-
let n3 = t2(e3);
|
|
39
|
-
fetch(e3.href, n3);
|
|
40
|
-
}
|
|
41
|
-
})();
|
|
42
|
-
var e = { Pisces: [1, 1], Aries: [2, 1], Taurus: [3, 1], Gemini: [4, 1], Aquarius: [1, 2], Cancer: [4, 2], Capricorn: [1, 3], Leo: [4, 3], Sagittarius: [1, 4], Scorpio: [2, 4], Libra: [3, 4], Virgo: [4, 4] }, t = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"];
|
|
43
|
-
function n(e2, n2) {
|
|
44
|
-
let r2 = t.indexOf(e2), i2 = t.indexOf(n2);
|
|
45
|
-
return r2 < 0 || i2 < 0 ? 0 : (r2 - i2 + 12) % 12 + 1;
|
|
46
|
-
}
|
|
47
|
-
var r = { Aries: "\u092E\u0947\u0937", Taurus: "\u0935\u0943\u0937\u092D", Gemini: "\u092E\u093F\u0925\u0941\u0928", Cancer: "\u0915\u0930\u094D\u0915", Leo: "\u0938\u093F\u0902\u0939", Virgo: "\u0915\u0928\u094D\u092F\u093E", Libra: "\u0924\u0941\u0932\u093E", Scorpio: "\u0935\u0943\u0936\u094D\u091A\u093F\u0915", Sagittarius: "\u0927\u0928\u0941", Capricorn: "\u092E\u0915\u0930", Aquarius: "\u0915\u0941\u0902\u092D", Pisces: "\u092E\u0940\u0928" }, i = { sun: "Su", moon: "Mo", mercury: "Me", venus: "Ve", mars: "Ma", jupiter: "Ju", saturn: "Sa", rahu: "Ra", ketu: "Ke" }, a = { sun: "S", moon: "M", mercury: "Mc", venus: "V", mars: "Ma", jupiter: "J", saturn: "Sa", rahu: "R", ketu: "K" }, o = { sun: "--planet-sun", moon: "--planet-moon", mercury: "--planet-mercury", venus: "--planet-venus", mars: "--planet-mars", jupiter: "--planet-jupiter", saturn: "--planet-saturn", rahu: "--planet-rahu", ketu: "--planet-ketu" }, s = { Aries: "Fire", Leo: "Fire", Sagittarius: "Fire", Taurus: "Earth", Virgo: "Earth", Capricorn: "Earth", Gemini: "Air", Libra: "Air", Aquarius: "Air", Cancer: "Water", Scorpio: "Water", Pisces: "Water" };
|
|
48
|
-
function c(e2) {
|
|
49
|
-
let t2 = {};
|
|
50
|
-
for (let n2 of e2) {
|
|
51
|
-
let e3 = n2.rashi_western;
|
|
52
|
-
t2[e3] || (t2[e3] = []), t2[e3].push(n2);
|
|
53
|
-
}
|
|
54
|
-
return t2;
|
|
55
|
-
}
|
|
56
|
-
function l(e2) {
|
|
57
|
-
let t2 = e2.planet.toLowerCase(), n2 = o[t2] || "--text-secondary", r2 = i[t2] || e2.planet.slice(0, 2), s2 = a[t2] || e2.planet.charAt(0), c2 = e2.is_retrograde ? '<span class="retro">\u211E</span>' : "", l2 = "";
|
|
58
|
-
return e2.dignity === "exalted" ? l2 = '<span class="dignity-ex">\u25B2</span>' : e2.dignity === "debilitated" && (l2 = '<span class="dignity-db">\u25BC</span>'), '<span class="planet-badge" data-planet="' + t2 + '" style="color:var(' + n2 + ')" title="' + h(e2.planet) + " \u2014 " + e2.rashi_degree.toFixed(1) + "\xB0 " + e2.rashi + " | " + e2.nakshatra.name + " pada " + e2.nakshatra.pada + (e2.is_retrograde ? " \u211E" : "") + '"><span class="planet-label-full">' + r2 + c2 + l2 + '</span><span class="planet-label-short">' + s2 + "</span></span>";
|
|
59
|
-
}
|
|
60
|
-
function u(e2, t2, i2, a2, o2, s2) {
|
|
61
|
-
let c2 = t2 || [], u2 = ["rashi-cell", c2.length > 0 ? "occupied" : "", i2 ? "lagna" : ""].filter(Boolean).join(" "), d2 = r[e2] || e2, f2 = s2 ? n(e2, s2) : 0, p2 = f2 > 0 ? '<span class="cell-house-num">' + f2 + "</span>" : "", m2 = i2 ? '<svg class="lagna-diagonal" viewBox="0 0 100 100" preserveAspectRatio="none" aria-hidden="true"><line x1="0" y1="0" x2="100" y2="100"/></svg>' : "", h2 = c2.map(l).join("");
|
|
62
|
-
return '<div class="' + u2 + '" data-sign="' + e2 + '" data-col="' + a2 + '" data-row="' + o2 + '" style="grid-column-start:' + a2 + ";grid-row-start:" + o2 + '">' + m2 + '<div class="cell-top-row"><span class="cell-sign">' + e2.slice(0, 3).toUpperCase() + '</span><span class="cell-sign-devanagari">' + d2 + "</span>" + p2 + '</div><div class="cell-planets">' + h2 + "</div></div>";
|
|
63
|
-
}
|
|
64
|
-
function d(e2) {
|
|
65
|
-
let t2 = e2.metadata.lagna || "", n2 = r[t2] || t2, i2 = e2.metadata.ayanamsa || "Lahiri", a2 = e2.metadata.ayanamsa_value == null ? "" : e2.metadata.ayanamsa_value.toFixed(2) + "\xB0";
|
|
66
|
-
return '<div class="rashi-cell center" style="grid-column:2/4;grid-row:2/4" data-sign="center"><span class="center-label">Jyotish</span>' + (n2 ? '<span class="center-lagna">' + n2 + "</span>" : "") + (i2 ? '<span class="center-ayanamsa">' + i2 + "</span>" : "") + (a2 ? '<span class="center-ayanamsa">' + a2 + "</span>" : "") + "</div>";
|
|
67
|
-
}
|
|
68
|
-
function f(t2) {
|
|
69
|
-
let n2 = c(t2.planets), r2 = t2.metadata.lagna || "";
|
|
70
|
-
return '<div class="rashi-grid" role="grid" aria-label="South Indian Rashi Chart">' + Object.keys(e).map(function(t3) {
|
|
71
|
-
let [i2, a2] = e[t3];
|
|
72
|
-
return u(t3, n2[t3] || [], t3 === r2, i2, a2, r2);
|
|
73
|
-
}).join("") + d(t2) + "</div>";
|
|
74
|
-
}
|
|
75
|
-
function p(e2, t2) {
|
|
76
|
-
let n2 = r[e2] || "", a2 = s[e2] || "", c2 = t2.map(function(e3) {
|
|
77
|
-
let t3 = e3.planet.toLowerCase(), n3 = o[t3] || "--text-secondary", r2 = h(e3.planet), a3 = i[t3] || e3.planet.slice(0, 2), s2 = "";
|
|
78
|
-
return e3.dignity === "exalted" ? s2 = '<span class="drawer-planet-dignity exalted">Exalted</span>' : e3.dignity === "debilitated" ? s2 = '<span class="drawer-planet-dignity debilitated">Fallen</span>' : e3.dignity === "own" && (s2 = '<span class="drawer-planet-dignity own">Own</span>'), '<div class="drawer-planet-row"><span class="drawer-planet-abbr" style="color:var(' + n3 + ')">' + a3 + '</span><div class="drawer-planet-info"><span class="drawer-planet-name">' + r2 + (e3.is_retrograde ? " \u211E" : "") + '</span><span class="drawer-planet-meta">' + e3.rashi_degree.toFixed(2) + "\xB0 " + e3.rashi + " / " + (e3.navamsa_sign || "\u2014") + ' D9</span><span class="drawer-planet-nakshatra">' + e3.nakshatra.name + " pada " + e3.nakshatra.pada + (e3.nakshatra.lord ? " \xB7 lord: " + e3.nakshatra.lord : "") + "</span></div>" + s2 + "</div>";
|
|
79
|
-
}).join(""), l2 = t2.length === 0 ? '<p style="color:var(--text-muted);font-size:12px">No planets in this rashi.</p>' : "";
|
|
80
|
-
return '<div class="drawer-handle"></div><div class="drawer-sign-title">' + e2 + (n2 ? '<span class="drawer-sign-devanagari">' + n2 + "</span>" : "") + (a2 ? '<span class="drawer-sign-element">' + a2 + "</span>" : "") + '</div><div class="drawer-section"><div class="drawer-section-title">Planets in this Rashi</div>' + c2 + l2 + '</div><div class="drawer-section" style="margin-top:12px"><button class="action-btn action-btn--primary" data-action="ask-claude" data-query="sign-' + e2.toLowerCase() + '">\u2726 Ask Claude about ' + e2 + "</button></div>";
|
|
81
|
-
}
|
|
82
|
-
function m() {
|
|
83
|
-
return [{ key: "sun", label: "Sun" }, { key: "moon", label: "Moon" }, { key: "mercury", label: "Me" }, { key: "venus", label: "Ve" }, { key: "mars", label: "Ma" }, { key: "jupiter", label: "Ju" }, { key: "saturn", label: "Sa" }, { key: "rahu", label: "Ra" }, { key: "ketu", label: "Ke" }].map(function(e2) {
|
|
84
|
-
return '<span class="legend-item"><span class="legend-dot" style="background:var(' + (o[e2.key] || "--text-secondary") + ')"></span>' + e2.label + "</span>";
|
|
85
|
-
}).join("");
|
|
86
|
-
}
|
|
87
|
-
function h(e2) {
|
|
88
|
-
return e2.charAt(0).toUpperCase() + e2.slice(1);
|
|
89
|
-
}
|
|
90
|
-
var g = null, _ = false, v = false, y = document.getElementById("loading-state"), b = document.getElementById("vedic-container"), x = document.getElementById("chart-status"), S = document.getElementById("tooltip");
|
|
91
|
-
function C() {
|
|
92
|
-
let e2 = window.__VEDIC_CHART_DATA__;
|
|
93
|
-
if (!e2 || !e2.planets) {
|
|
94
|
-
F("No Vedic chart data was provided.");
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
g = e2;
|
|
98
|
-
let t2 = w(e2), n2 = f(e2), r2 = '<div class="vedic-legend">' + m() + "</div>", i2 = T();
|
|
99
|
-
b.innerHTML = t2 + n2 + r2 + i2, y.hidden = true, b.hidden = false;
|
|
100
|
-
let a2 = e2.metadata.lagna || "";
|
|
101
|
-
a2 && P("Lagna: " + a2 + (e2.metadata.ayanamsa ? " \xB7 " + e2.metadata.ayanamsa : "")), E(), document.addEventListener("keydown", function(e3) {
|
|
102
|
-
e3.key === "Escape" && _ && j();
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
function w(e2) {
|
|
106
|
-
let t2 = e2.metadata.ayanamsa || "Lahiri", n2 = e2.metadata.ayanamsa_value == null ? "" : " " + e2.metadata.ayanamsa_value.toFixed(2) + "\xB0";
|
|
107
|
-
return '<div class="vedic-header"><span class="vedic-title">Jyotish Rashi Chart</span><div class="vedic-header-meta"><span class="vedic-ayanamsa-badge">' + t2 + n2 + '</span><button id="btn-devanagari" class="vedic-toggle-btn" title="Toggle Sanskrit labels">\u0905</button></div></div>';
|
|
108
|
-
}
|
|
109
|
-
function T() {
|
|
110
|
-
return '<div class="vedic-actions"><button class="action-btn action-btn--primary" data-action="ask-claude" data-query="overview">\u2726 Ask Claude to interpret this chart</button><button class="action-btn" data-action="ask-claude" data-query="lagna">Lagna & Ascendant</button><button class="action-btn" data-action="ask-claude" data-query="moon">Moon & Nakshatra</button></div>';
|
|
111
|
-
}
|
|
112
|
-
function E() {
|
|
113
|
-
b.addEventListener("click", function(e2) {
|
|
114
|
-
let t2 = e2.target, n2 = t2.closest("#btn-devanagari");
|
|
115
|
-
if (n2) {
|
|
116
|
-
v = !v, b.classList.toggle("show-devanagari", v), n2.classList.toggle("active", v);
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
let r2 = t2.closest("[data-action]");
|
|
120
|
-
if (r2) {
|
|
121
|
-
M(r2);
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
let i2 = t2.closest("[data-sign]");
|
|
125
|
-
if (i2 && g) {
|
|
126
|
-
let e3 = i2.getAttribute("data-sign");
|
|
127
|
-
e3 && e3 !== "center" && A(e3);
|
|
128
|
-
}
|
|
129
|
-
}), b.addEventListener("mouseover", function(e2) {
|
|
130
|
-
let t2 = e2.target.closest(".planet-badge");
|
|
131
|
-
if (t2) {
|
|
132
|
-
let n2 = t2.getAttribute("title");
|
|
133
|
-
n2 && (S.textContent = n2, S.classList.add("visible"), D(e2));
|
|
134
|
-
}
|
|
135
|
-
}), b.addEventListener("mouseout", function(e2) {
|
|
136
|
-
let t2 = e2.target.closest(".planet-badge"), n2 = e2.relatedTarget;
|
|
137
|
-
t2 && (!n2 || !t2.contains(n2)) && S.classList.remove("visible");
|
|
138
|
-
}), b.addEventListener("mousemove", function(e2) {
|
|
139
|
-
S.classList.contains("visible") && D(e2);
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
function D(e2) {
|
|
143
|
-
S.style.left = e2.clientX + 14 + "px", S.style.top = e2.clientY - 36 + "px";
|
|
144
|
-
}
|
|
145
|
-
var O = null, k = null;
|
|
146
|
-
function A(e2) {
|
|
147
|
-
if (!g || _) return;
|
|
148
|
-
_ = true;
|
|
149
|
-
let t2 = g.planets.filter(function(t3) {
|
|
150
|
-
return t3.rashi_western === e2;
|
|
151
|
-
}), n2 = document.createElement("div");
|
|
152
|
-
n2.className = "vedic-drawer-overlay";
|
|
153
|
-
let r2 = document.createElement("div");
|
|
154
|
-
r2.className = "vedic-drawer", r2.innerHTML = p(e2, t2), r2.addEventListener("click", function(e3) {
|
|
155
|
-
let t3 = e3.target.closest("[data-action]");
|
|
156
|
-
t3 && (M(t3), j());
|
|
157
|
-
}), O = n2, k = r2, document.body.appendChild(n2), document.body.appendChild(r2), requestAnimationFrame(function() {
|
|
158
|
-
n2.classList.add("visible"), r2.classList.add("visible");
|
|
159
|
-
}), n2.addEventListener("click", j);
|
|
160
|
-
}
|
|
161
|
-
function j() {
|
|
162
|
-
if (!O || !k) return;
|
|
163
|
-
_ = false, O.classList.remove("visible"), k.classList.remove("visible");
|
|
164
|
-
let e2 = O, t2 = k;
|
|
165
|
-
O = null, k = null, setTimeout(function() {
|
|
166
|
-
e2.remove(), t2.remove();
|
|
167
|
-
}, 250);
|
|
168
|
-
}
|
|
169
|
-
function M(e2) {
|
|
170
|
-
let t2 = e2.getAttribute("data-action"), n2 = e2.getAttribute("data-query") || "";
|
|
171
|
-
if (t2 === "ask-claude" && g) {
|
|
172
|
-
var r2;
|
|
173
|
-
let e3 = N(n2, g);
|
|
174
|
-
(r2 = window.__mcp_host__) != null && r2.askClaude && window.__mcp_host__.askClaude(e3);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
function N(e2, t2) {
|
|
178
|
-
let n2 = t2.metadata.lagna || "unknown", r2 = t2.metadata.ayanamsa || "Lahiri", i2 = t2.planets.map(function(e3) {
|
|
179
|
-
return e3.planet + " in " + e3.rashi_western + " " + e3.rashi_degree.toFixed(1) + "\xB0 (" + e3.nakshatra.name + " pada " + e3.nakshatra.pada + ")" + (e3.is_retrograde ? " \u211E" : "");
|
|
180
|
-
}).join(", "), a2 = "Vedic chart \u2014 Ayanamsa: " + r2 + ". Lagna: " + n2 + ". Planets: " + i2 + ". ";
|
|
181
|
-
if (e2 === "overview") return a2 + "Please give a comprehensive interpretation of this Jyotish birth chart, covering the Lagna, chart lord, key planetary placements, and overall life themes.";
|
|
182
|
-
if (e2 === "lagna") return a2 + "Focus on the Lagna (" + n2 + ") and its lord. What does the Ascendant reveal about this person's identity, physical constitution, and life path? How does the Lagna lord's placement influence the chart?";
|
|
183
|
-
if (e2 === "moon") {
|
|
184
|
-
let e3 = t2.planets.find(function(e4) {
|
|
185
|
-
return e4.planet === "moon";
|
|
186
|
-
});
|
|
187
|
-
return e3 ? a2 + "Focus on the Moon in " + e3.rashi_western + " (" + e3.rashi + "), " + e3.rashi_degree.toFixed(2) + "\xB0, in Nakshatra " + e3.nakshatra.name + " (lord: " + e3.nakshatra.lord + ", pada " + e3.nakshatra.pada + "). Interpret the Moon's placement for emotional nature, mind, mother, and public life. Include the Nakshatra's influence." : a2 + "Interpret the Moon's placement in this Vedic chart, including Nakshatra detail.";
|
|
188
|
-
}
|
|
189
|
-
if (e2.startsWith("sign-")) {
|
|
190
|
-
let r3 = e2.replace("sign-", ""), i3 = r3.charAt(0).toUpperCase() + r3.slice(1), o2 = t2.planets.filter(function(e3) {
|
|
191
|
-
return e3.rashi_western.toLowerCase() === r3;
|
|
192
|
-
}).map(function(e3) {
|
|
193
|
-
return e3.planet + " " + e3.rashi_degree.toFixed(1) + "\xB0" + (e3.is_retrograde ? " \u211E" : "");
|
|
194
|
-
}).join(", ");
|
|
195
|
-
return a2 + "Interpret the Rashi " + i3 + " in this chart. " + (o2 ? "Planets here: " + o2 + ". " : "This rashi is unoccupied. ") + "What house does this correspond to given the Lagna " + n2 + "? What themes does this rashi/house govern for this chart?";
|
|
196
|
-
}
|
|
197
|
-
return a2 + "Please interpret this Vedic birth chart.";
|
|
198
|
-
}
|
|
199
|
-
function P(e2) {
|
|
200
|
-
x.textContent = e2, x.classList.add("visible"), setTimeout(function() {
|
|
201
|
-
x.classList.remove("visible");
|
|
202
|
-
}, 4500);
|
|
203
|
-
}
|
|
204
|
-
function F(e2) {
|
|
205
|
-
y.hidden = true, b.hidden = false, b.innerHTML = '<div class="error-state"><span class="error-icon">\u26A0\uFE0F</span><p>' + e2 + "</p></div>";
|
|
206
|
-
}
|
|
207
|
-
document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", C) : C();
|
|
208
|
-
</script>
|
|
209
|
-
</body>
|
|
210
|
-
</html>
|