@openephemeris/mcp-server 4.15.0 → 4.15.1

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.
@@ -6886,7 +6886,7 @@ function vv(e5, t2, n2) {
6886
6886
  var n3, r3, i3, a3, o3, s3, c3;
6887
6887
  let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = M_[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = F_[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = I_((c3 = e6.type) == null ? "" : c3)) == null ? "#888" : s3, p3 = e6.orb == null ? "" : "".concat(e6.orb.toFixed(1), "\xB0"), m3 = e6.applying === true ? "\u2197" : e6.applying === false ? "\u2198" : "\xB7";
6888
6888
  return '<div class="aspect-row">\n <span class="aspect-dot" style="background:'.concat(f3, '"></span>\n <span class="aspect-sym" style="color:').concat(f3, '">').concat(d3, '</span>\n <span class="aspect-other">').concat(u3, " ").concat(Z(l3), '</span>\n <span class="aspect-meta">').concat(p3, " ").concat(m3, "</span>\n </div>");
6889
- }).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
6889
+ }).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
6890
6890
  s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(U_(t2.longitude)).concat(t2.house ? " \xB7 House ".concat(t2.house) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Aspects</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), s2.classList.add("visible"), s2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (a2 = document.getElementById("info-close-btn")) == null || a2.addEventListener("click", () => {
6891
6891
  Tv(), Nv();
6892
6892
  }), (o2 = document.getElementById("ask-claude-btn")) == null || o2.addEventListener("click", () => {
@@ -6894,8 +6894,8 @@ function vv(e5, t2, n2) {
6894
6894
  if (!pv) return;
6895
6895
  let o3 = document.getElementById("ask-claude-btn");
6896
6896
  !o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), pv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? U_(t2.longitude) : e6, house: (n3 = t2.house) == null ? null : n3, retrograde: (r3 = t2.retrograde) == null ? false : r3, speed: (i3 = t2.speed) == null ? null : i3, dignity: (a3 = u2 == null ? void 0 : u2.label) == null ? null : a3, aspects: f2.map((e7) => ({ other: e7.planet1.toLowerCase() === t2.name.toLowerCase() ? e7.planet2 : e7.planet1, type: e7.type, orb: e7.orb, applying: e7.applying })) } }).then(() => {
6897
- o3.textContent = "\u2713 Sent to Claude", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
6898
- o3.textContent = "\u2728 Ask Claude to interpret", o3.classList.remove("sent"), o3.disabled = false;
6897
+ o3.textContent = "\u2713 Sent", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
6898
+ o3.textContent = "\u2728 Interpret this", o3.classList.remove("sent"), o3.disabled = false;
6899
6899
  }, 2500);
6900
6900
  }).catch(() => {
6901
6901
  o3.textContent = "\u26A0 Failed \u2014 tap to retry", o3.classList.remove("sending"), o3.classList.add("error"), o3.disabled = false;
@@ -6904,7 +6904,7 @@ function vv(e5, t2, n2) {
6904
6904
  }
6905
6905
  function yv(e5, t2, n2) {
6906
6906
  var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
6907
- let p2 = _v(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = M_[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = M_[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = F_[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = I_((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), y2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), b2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", x2 = m2 ? "".concat(U_(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(U_(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
6907
+ let p2 = _v(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = M_[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = M_[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = F_[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = I_((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), y2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), b2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", x2 = m2 ? "".concat(U_(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(U_(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6908
6908
  p2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(ee2, '">').concat(v2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z((u2 = t2.type) == null ? "Aspect" : u2), '</strong>\n </div>\n <div class="info-pos">').concat(y2).concat(b2 ? " \xB7 ".concat(b2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in Aspect</div>\n <div class="aspect-pair-row">\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(g2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet1), '</div>\n <div class="aspect-pair-pos">').concat(x2, '</div>\n </div>\n </div>\n <span class="aspect-pair-sym" style="color:').concat(ee2, '">').concat(v2, '</span>\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(_2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet2), '</div>\n <div class="aspect-pair-pos">').concat(S2, "</div>\n </div>\n </div>\n </div>\n ").concat(C2, "\n "), p2.classList.add("visible"), p2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (d2 = document.getElementById("info-close-btn")) == null || d2.addEventListener("click", () => {
6909
6909
  Tv(), Nv();
6910
6910
  }), (f2 = document.getElementById("ask-claude-btn")) == null || f2.addEventListener("click", () => {
@@ -6913,7 +6913,7 @@ function yv(e5, t2, n2) {
6913
6913
  let l3 = document.getElementById("ask-claude-btn");
6914
6914
  !l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), pv({ type: "aspect", data: { planet1: t2.planet1, planet2: t2.planet2, aspect_type: (e6 = t2.type) == null ? null : e6, orb: (n3 = t2.orb) == null ? null : n3, applying: (r3 = t2.applying) == null ? null : r3, angle: (i3 = t2.angle) == null ? null : i3, planet1_sign: (a3 = m2 == null ? void 0 : m2.sign) == null ? null : a3, planet1_house: (o3 = m2 == null ? void 0 : m2.house) == null ? null : o3, planet2_sign: (s3 = h2 == null ? void 0 : h2.sign) == null ? null : s3, planet2_house: (c3 = h2 == null ? void 0 : h2.house) == null ? null : c3 } }).then(() => {
6915
6915
  l3.textContent = "Sent", l3.classList.remove("sending"), l3.classList.add("sent"), setTimeout(() => {
6916
- l3.textContent = "Ask Claude \u2014 Interpret", l3.classList.remove("sent"), l3.disabled = false;
6916
+ l3.textContent = "Interpret", l3.classList.remove("sent"), l3.disabled = false;
6917
6917
  }, 2500);
6918
6918
  }).catch(() => {
6919
6919
  l3.textContent = "Failed \u2014 retry", l3.classList.remove("sending"), l3.classList.add("error"), l3.disabled = false;
@@ -6926,7 +6926,7 @@ function bv(e5, t2, n2) {
6926
6926
  var t3;
6927
6927
  let n3 = (t3 = M_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = U_(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
6928
6928
  return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(i3, '</span>\n <span class="aspect-meta">').concat(r3, "</span>\n </div>");
6929
- }).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
6929
+ }).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6930
6930
  c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>House ').concat(t2.number, '</strong>\n </div>\n <div class="info-pos">').concat(u2, " ").concat(d2, " on cusp").concat(t2.ruler ? " \xB7 ruled by ".concat(Z(t2.ruler)) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in House ').concat(t2.number, '</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
6931
6931
  Tv(), Nv();
6932
6932
  }), (s2 = document.getElementById("ask-claude-btn")) == null || s2.addEventListener("click", () => {
@@ -6938,7 +6938,7 @@ function bv(e5, t2, n2) {
6938
6938
  return { name: e7.name, sign: (t3 = e7.sign) == null ? U_(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
6939
6939
  }) } }).then(() => {
6940
6940
  n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
6941
- n3.textContent = "Ask Claude \u2014 Interpret", n3.classList.remove("sent"), n3.disabled = false;
6941
+ n3.textContent = "Interpret", n3.classList.remove("sent"), n3.disabled = false;
6942
6942
  }, 2500);
6943
6943
  }).catch(() => {
6944
6944
  n3.textContent = "Failed \u2014 retry", n3.classList.remove("sending"), n3.classList.add("error"), n3.disabled = false;
@@ -6952,7 +6952,7 @@ function Sv(e5, t2, n2) {
6952
6952
  var t3;
6953
6953
  let n3 = (t3 = M_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 30 - r3) * 60), a3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "", o3 = iv(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
6954
6954
  return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(a3).concat(s3, '</span>\n <span class="aspect-meta">').concat(r3, "\xB0").concat(i3.toString().padStart(2, "0"), "\u2032</span>\n </div>");
6955
- }).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 = pv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Ask Claude \u2014 Interpret '.concat(l2, "</button>") : "";
6955
+ }).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 = pv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Interpret '.concat(l2, "</button>") : "";
6956
6956
  c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(R_(t2), '">').concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(l2, '</strong>\n </div>\n <div class="info-pos">').concat(_2, " ").concat(d2, " \xB7 ").concat(f2).concat(p2 ? " \xB7 Ruled by ".concat(m2, " ").concat(p2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in ').concat(l2, '</div>\n <div class="aspects-list">').concat(g2, "</div>\n ").concat(v2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
6957
6957
  Tv(), Nv();
6958
6958
  }), (s2 = document.getElementById("sign-ask-claude-btn")) == null || s2.addEventListener("click", () => {
@@ -6963,7 +6963,7 @@ function Sv(e5, t2, n2) {
6963
6963
  return { name: e7.name, longitude: e7.longitude, position: U_(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
6964
6964
  }) } }).then(() => {
6965
6965
  e6.textContent = "Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
6966
- e6.textContent = "Ask Claude \u2014 Interpret ".concat(l2), e6.classList.remove("sent"), e6.disabled = false;
6966
+ e6.textContent = "Interpret ".concat(l2), e6.classList.remove("sent"), e6.disabled = false;
6967
6967
  }, 2500);
6968
6968
  }).catch(() => {
6969
6969
  e6.textContent = "Failed \u2014 retry", e6.classList.remove("sending"), e6.classList.add("error"), e6.disabled = false;
@@ -6976,13 +6976,13 @@ function wv(e5, t2, n2) {
6976
6976
  let a2 = _v(), o2 = Cv[t2];
6977
6977
  if (!o2) return;
6978
6978
  let s2 = U_(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(av[c2]), u2 = Z(ov[c2]), d2 = N_[c2], f2 = R_(c2);
6979
- a2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:15px">'.concat(o2.symbol, '</span>\n <div class="info-title">\n <div class="info-name-row"><strong>').concat(o2.title, '</strong></div>\n <div class="info-pos">').concat(o2.keyword, '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="planet-in-sign" style="margin:8px 0 4px">\n <span style="color:').concat(f2, ';font-family:serif;font-size:14px;margin-right:4px">').concat(d2, '</span>\n <span style="font-size:12px;color:var(--text-muted,#888)">').concat(s2, " &nbsp;\xB7&nbsp; ").concat(l2, " \xB7 ").concat(u2, '</span>\n </div>\n <div class="planet-meaning" style="font-size:12px;line-height:1.55;margin-bottom:8px">').concat(o2.meaning, '</div>\n <div class="aspects-title">Themes</div>\n <div class="aspects-list">\n ').concat(o2.themes.map((e6) => '<div class="aspect-row"><span class="aspect-other">'.concat(e6, "</span></div>")).join(""), '\n </div>\n <div class="panel-actions" style="margin-top:10px">\n <button class="ask-claude-btn" id="angle-ask-claude-btn">\n Ask Claude \u2014 Interpret ').concat(o2.title, "\n </button>\n </div>\n "), a2.classList.add("visible"), a2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (r2 = document.getElementById("info-close-btn")) == null || r2.addEventListener("click", () => {
6979
+ a2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:15px">'.concat(o2.symbol, '</span>\n <div class="info-title">\n <div class="info-name-row"><strong>').concat(o2.title, '</strong></div>\n <div class="info-pos">').concat(o2.keyword, '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="planet-in-sign" style="margin:8px 0 4px">\n <span style="color:').concat(f2, ';font-family:serif;font-size:14px;margin-right:4px">').concat(d2, '</span>\n <span style="font-size:12px;color:var(--text-muted,#888)">').concat(s2, " &nbsp;\xB7&nbsp; ").concat(l2, " \xB7 ").concat(u2, '</span>\n </div>\n <div class="planet-meaning" style="font-size:12px;line-height:1.55;margin-bottom:8px">').concat(o2.meaning, '</div>\n <div class="aspects-title">Themes</div>\n <div class="aspects-list">\n ').concat(o2.themes.map((e6) => '<div class="aspect-row"><span class="aspect-other">'.concat(e6, "</span></div>")).join(""), '\n </div>\n <div class="panel-actions" style="margin-top:10px">\n <button class="ask-claude-btn" id="angle-ask-claude-btn">\n Interpret ').concat(o2.title, "\n </button>\n </div>\n "), a2.classList.add("visible"), a2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (r2 = document.getElementById("info-close-btn")) == null || r2.addEventListener("click", () => {
6980
6980
  Tv(), Nv();
6981
6981
  }), (i2 = document.getElementById("angle-ask-claude-btn")) == null || i2.addEventListener("click", (e6) => {
6982
6982
  let t3 = e6.currentTarget;
6983
6983
  t3.textContent = "Sending\u2026", t3.disabled = true, pv == null || pv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: P_[c2], position: s2, element: l2, modality: u2 } }).then(() => {
6984
6984
  t3.textContent = "Sent", setTimeout(() => {
6985
- t3.textContent = "Ask Claude \u2014 Interpret ".concat(o2.title), t3.disabled = false;
6985
+ t3.textContent = "Interpret ".concat(o2.title), t3.disabled = false;
6986
6986
  }, 2500);
6987
6987
  }).catch(() => {
6988
6988
  t3.textContent = "Failed \u2014 retry", t3.disabled = false;
@@ -7563,17 +7563,42 @@ function ry(e5) {
7563
7563
  }
7564
7564
  return null;
7565
7565
  }
7566
- function iy(e5) {
7566
+ var iy = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
7567
+ function ay(e5, t2) {
7568
+ if (!e5) return null;
7569
+ let n2 = iy.exec(e5.trim());
7570
+ if (n2) {
7571
+ let [, e6, t3, r3, i2, a2, o2] = n2, s2 = new Date(Date.UTC(+e6, t3 - 1, +r3, +i2, +a2, o2 ? +o2 : 0));
7572
+ return isNaN(s2.getTime()) ? null : { date: s2, timeZone: "UTC" };
7573
+ }
7574
+ let r2 = new Date(e5);
7575
+ return isNaN(r2.getTime()) ? null : { date: r2, timeZone: t2 || "UTC" };
7576
+ }
7577
+ function oy(e5) {
7578
+ var t2;
7579
+ if (!e5) return "";
7580
+ let n2 = [], r2 = (t2 = e5.location) == null ? void 0 : t2.trim();
7581
+ if (r2 ? n2.push(r2) : typeof e5.latitude == "number" && typeof e5.longitude == "number" && n2.push("".concat(e5.latitude.toFixed(2), ", ").concat(e5.longitude.toFixed(2))), e5.datetime) {
7582
+ let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? ay(e5.datetime, e5.timezone) : null;
7583
+ t3 ? n2.push(t3.date.toLocaleString("en-US", { timeZone: t3.timeZone, day: "numeric", month: "short", year: "numeric", hour: "numeric", minute: "2-digit" })) : n2.push(e5.datetime);
7584
+ }
7585
+ return n2.join(" \xB7 ");
7586
+ }
7587
+ function sy(e5, t2, n2 = "Chart") {
7588
+ let r2 = oy(t2);
7589
+ return r2 ? "".concat(n2, ": ").concat(r2, "\n\n").concat(e5) : e5;
7590
+ }
7591
+ function cy(e5) {
7567
7592
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
7568
7593
  }
7569
- function ay(e5) {
7570
- let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(iy(i2), "</button>") : "";
7571
- if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(iy(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7594
+ function ly(e5) {
7595
+ let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(cy(i2), "</button>") : "";
7596
+ if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(cy(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7572
7597
  var o2;
7573
7598
  (o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
7574
7599
  }
7575
7600
  }
7576
- function oy(e5, t2, n2 = []) {
7601
+ function uy(e5, t2, n2 = []) {
7577
7602
  var r2, i2;
7578
7603
  if (!t2 || t2.querySelector("#btn-fullscreen")) return;
7579
7604
  let a2 = document.createElement("button");
@@ -7649,21 +7674,21 @@ function oy(e5, t2, n2 = []) {
7649
7674
  let e6 = document.getElementById("fs-hint-banner");
7650
7675
  e6 && e6.remove();
7651
7676
  let t3 = document.createElement("div");
7652
- t3.id = "fs-hint-banner", Object.assign(t3.style, { position: "fixed", top: "12px", left: "50%", transform: "translateX(-50%)", background: "oklch(14% 0.012 265 / 0.90)", backdropFilter: "blur(12px)", WebkitBackdropFilter: "blur(12px)", border: "1px solid oklch(72% 0.12 80 / 0.3)", borderRadius: "20px", padding: "6px 16px", fontSize: "11px", fontWeight: "600", color: "oklch(80% 0.08 80)", letterSpacing: "0.04em", zIndex: "9999", pointerEvents: "none", opacity: "0", transition: "opacity 300ms ease", whiteSpace: "nowrap" }), t3.textContent = "Esc \u2014 exit fullscreen & return to Claude chat", document.body.appendChild(t3), requestAnimationFrame(() => {
7677
+ t3.id = "fs-hint-banner", Object.assign(t3.style, { position: "fixed", top: "12px", left: "50%", transform: "translateX(-50%)", background: "oklch(14% 0.012 265 / 0.90)", backdropFilter: "blur(12px)", WebkitBackdropFilter: "blur(12px)", border: "1px solid oklch(72% 0.12 80 / 0.3)", borderRadius: "20px", padding: "6px 16px", fontSize: "11px", fontWeight: "600", color: "oklch(80% 0.08 80)", letterSpacing: "0.04em", zIndex: "9999", pointerEvents: "none", opacity: "0", transition: "opacity 300ms ease", whiteSpace: "nowrap" }), t3.textContent = "Esc \u2014 exit fullscreen & return to chat", document.body.appendChild(t3), requestAnimationFrame(() => {
7653
7678
  t3.style.opacity = "1";
7654
7679
  }), setTimeout(() => {
7655
7680
  t3.style.opacity = "0", setTimeout(() => t3.remove(), 350);
7656
7681
  }, 4e3);
7657
7682
  }
7658
7683
  }
7659
- function sy(e5, t2) {
7684
+ function dy(e5, t2) {
7660
7685
  e5.ontoolcancelled = (e6) => {
7661
7686
  var n2, r2, i2;
7662
7687
  let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
7663
- console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), cy(a2);
7688
+ console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), fy(a2);
7664
7689
  };
7665
7690
  }
7666
- function cy(e5) {
7691
+ function fy(e5) {
7667
7692
  var t2;
7668
7693
  (t2 = document.getElementById("cancel-toast")) == null || t2.remove();
7669
7694
  let n2 = document.createElement("div");
@@ -7671,7 +7696,7 @@ function cy(e5) {
7671
7696
  n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
7672
7697
  }, 3e3);
7673
7698
  }
7674
- function ly(e5) {
7699
+ function py(e5) {
7675
7700
  var t2;
7676
7701
  function n2(e6) {
7677
7702
  if (!e6) return;
@@ -7684,48 +7709,48 @@ function ly(e5) {
7684
7709
  n2(e6);
7685
7710
  });
7686
7711
  }
7687
- var uy = document.getElementById("loading-state"), dy = document.getElementById("chart-container"), fy = document.getElementById("chart-info"), py = document.getElementById("chart-status"), my = document.getElementById("controls-panel"), hy = document.getElementById("patterns-strip"), gy = document.getElementById("aspect-filter"), _y = document.getElementById("overview-table"), vy = document.getElementById("param-controls-container"), yy = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, by = "placidus", xy = null;
7712
+ var my = document.getElementById("loading-state"), hy = document.getElementById("chart-container"), gy = document.getElementById("chart-info"), _y = document.getElementById("chart-status"), vy = document.getElementById("controls-panel"), yy = document.getElementById("patterns-strip"), by = document.getElementById("aspect-filter"), xy = document.getElementById("overview-table"), Sy = document.getElementById("param-controls-container"), Cy = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, wy = "placidus", Ty = null;
7688
7713
  m_(() => {
7689
- $ && Ty($);
7714
+ $ && ky($);
7690
7715
  });
7691
- var Sy = false, Cy = false;
7692
- function wy(e5) {
7693
- py && (e5 ? (py.textContent = "\xB7 ".concat(e5), py.setAttribute("data-active", "")) : (py.textContent = "", py.removeAttribute("data-active")));
7716
+ var Ey = false, Dy = false;
7717
+ function Oy(e5) {
7718
+ _y && (e5 ? (_y.textContent = "\xB7 ".concat(e5), _y.setAttribute("data-active", "")) : (_y.textContent = "", _y.removeAttribute("data-active")));
7694
7719
  }
7695
- yy.ontoolresult = (e5) => {
7720
+ Cy.ontoolresult = (e5) => {
7696
7721
  var t2;
7697
7722
  let n2 = ry(e5);
7698
- if (Yy(), !n2 || !n2.planets) {
7699
- console.error("[ChartWheel] \u274C No chart data found in tool result"), Xy("Chart data could not be parsed from the server response.", Zy);
7723
+ if ($y(), !n2 || !n2.planets) {
7724
+ console.error("[ChartWheel] \u274C No chart data found in tool result"), eb("Chart data could not be parsed from the server response.", tb);
7700
7725
  return;
7701
7726
  }
7702
- if ($ = n2, by = (t2 = n2.house_system) == null ? "placidus" : t2, !xy) {
7727
+ if ($ = n2, wy = (t2 = n2.house_system) == null ? "placidus" : t2, !Ty) {
7703
7728
  var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
7704
7729
  let e6 = (r2 = n2._birth_params) == null ? {} : r2, t3 = (i2 = (a2 = (o2 = e6.datetime) == null ? n2.datetime : o2) == null ? n2.birth_datetime : a2) == null ? "" : i2, p2 = (s2 = (c2 = e6.location) == null ? n2.location : c2) == null ? "" : s2, m2 = (l2 = (u2 = e6.timezone) == null ? n2.timezone : u2) == null ? "" : l2, h2 = (d2 = e6.latitude) == null ? n2.latitude : d2, g2 = (f2 = e6.longitude) == null ? n2.longitude : f2, _2 = "", v2 = "12:00";
7705
7730
  if (t3 && t3.includes("T")) {
7706
7731
  let e7 = t3.split("T");
7707
7732
  _2 = e7[0], v2 = e7[1].substring(0, 5);
7708
7733
  }
7709
- xy = new Jv({ app: yy, container: vy, initialParams: { date: _2, time: v2, locationName: p2, timezone: m2, latitude: typeof h2 == "number" ? h2 : null, longitude: typeof g2 == "number" ? g2 : null }, showStepControls: false, costHint: "~1 credit", onRefresh: async (e7) => {
7710
- xy == null || xy.setBusy(true), uy.removeAttribute("hidden"), dy.setAttribute("hidden", "");
7734
+ Ty = new Jv({ app: Cy, container: Sy, initialParams: { date: _2, time: v2, locationName: p2, timezone: m2, latitude: typeof h2 == "number" ? h2 : null, longitude: typeof g2 == "number" ? g2 : null }, showStepControls: false, costHint: "~1 credit", onRefresh: async (e7) => {
7735
+ Ty == null || Ty.setBusy(true), my.removeAttribute("hidden"), hy.setAttribute("hidden", "");
7711
7736
  try {
7712
7737
  var t4, n3, r3, i3;
7713
- let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = ry(await Promise.race([yy.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: "".concat(a3).concat(e7.timezone ? "" : "Z"), latitude: (t4 = e7.latitude) == null ? void 0 : t4, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, house_system: by || "placidus", chart_type: "natal" } }), o3]));
7714
- s3 ? ($ = s3, s3.house_system && (by = s3.house_system), Ty(s3)) : $ && (uy.setAttribute("hidden", ""), dy.removeAttribute("hidden"));
7738
+ let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = ry(await Promise.race([Cy.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: "".concat(a3).concat(e7.timezone ? "" : "Z"), latitude: (t4 = e7.latitude) == null ? void 0 : t4, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, house_system: wy || "placidus", chart_type: "natal" } }), o3]));
7739
+ s3 ? ($ = s3, s3.house_system && (wy = s3.house_system), ky(s3)) : $ && (my.setAttribute("hidden", ""), hy.removeAttribute("hidden"));
7715
7740
  } catch (e8) {
7716
- console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (uy.setAttribute("hidden", ""), dy.removeAttribute("hidden"));
7741
+ console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (my.setAttribute("hidden", ""), hy.removeAttribute("hidden"));
7717
7742
  } finally {
7718
- xy == null || xy.setBusy(false);
7743
+ Ty == null || Ty.setBusy(false);
7719
7744
  }
7720
7745
  } });
7721
7746
  }
7722
- Ty(n2);
7747
+ ky(n2);
7723
7748
  };
7724
- function Ty(e5) {
7749
+ function ky(e5) {
7725
7750
  var t2, n2, r2, i2, a2, o2, s2;
7726
- jy = null, uy.setAttribute("hidden", ""), dy.removeAttribute("hidden"), vy.removeAttribute("hidden"), my.removeAttribute("hidden"), Bv(dy, e5, zy, By, Vy, Ky, Cy ? Hy() : void 0), hv(wy), Uv(my, by, qy), Dy(e5), ny("chart-wheel");
7751
+ Fy = null, my.setAttribute("hidden", ""), hy.removeAttribute("hidden"), Sy.removeAttribute("hidden"), vy.removeAttribute("hidden"), Bv(hy, e5, Uy, Wy, Gy, Xy, Dy ? Ky() : void 0), hv(Oy), Uv(vy, wy, Zy), jy(e5), ny("chart-wheel");
7727
7752
  let c2 = q_(e5.planets), l2 = (n2 = (r2 = (i2 = ((t2 = e5.houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e5.ascendant : r2) == null ? 0 : n2, u2 = (a2 = e5.aspects) == null ? [] : a2;
7728
- c2.length > 0 && ky(c2, u2), My(lv(u2, c2), c2, l2), Ly();
7753
+ c2.length > 0 && Ny(c2, u2), Iy(lv(u2, c2), c2, l2), Vy();
7729
7754
  let d2 = document.getElementById("cw-action-bar");
7730
7755
  if (!d2) {
7731
7756
  d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
@@ -7736,34 +7761,35 @@ function Ty(e5) {
7736
7761
  (f2 = document.getElementById("app")) == null || f2.prepend(d2);
7737
7762
  }
7738
7763
  }
7739
- d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void Wy()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void Gy());
7764
+ d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void Jy()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void Yy());
7740
7765
  }
7741
- function Ey(e5) {
7766
+ function Ay(e5) {
7742
7767
  return String(e5).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7743
7768
  }
7744
- function Dy(e5) {
7769
+ function jy(e5) {
7745
7770
  var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
7746
- if (!fy) return;
7771
+ if (!gy) return;
7747
7772
  let d2 = (t2 = e5._birth_params) == null ? {} : t2, f2 = (n2 = (r2 = (i2 = d2.datetime) == null ? e5.datetime : i2) == null ? e5.birth_datetime : r2) == null ? "" : n2, p2 = (a2 = (o2 = d2.location) == null ? e5.location : o2) == null ? "" : a2, m2 = (s2 = (c2 = d2.timezone) == null ? e5.timezone : c2) == null ? "" : s2, h2 = (l2 = d2.latitude) == null ? e5.latitude : l2, g2 = (u2 = d2.longitude) == null ? e5.longitude : u2;
7748
- by.charAt(0).toUpperCase() + by.slice(1);
7773
+ wy.charAt(0).toUpperCase() + wy.slice(1);
7749
7774
  let _2 = q_(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
7750
7775
  try {
7751
- if (f2 && f2.includes("T")) {
7752
- let e6 = new Date(f2), t3 = m2 ? { timeZone: m2 } : {};
7753
- ee2 = e6.toLocaleDateString("en-US", { weekday: "short", year: "numeric", month: "short", day: "numeric", ...t3 }) + " \xB7 " + e6.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: true, ...t3 });
7776
+ let e6 = f2 && f2.includes("T") ? ay(f2, m2) : null;
7777
+ if (e6) {
7778
+ let { date: t3, timeZone: n3 } = e6;
7779
+ ee2 = t3.toLocaleDateString("en-US", { weekday: "short", year: "numeric", month: "short", day: "numeric", timeZone: n3 }) + " \xB7 " + t3.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: true, timeZone: n3 });
7754
7780
  }
7755
7781
  } catch (e6) {
7756
7782
  }
7757
7783
  let y2 = typeof h2 == "number" && typeof g2 == "number" ? "".concat(Math.abs(h2).toFixed(2), "\xB0").concat(h2 >= 0 ? "N" : "S", ", ").concat(Math.abs(g2).toFixed(2), "\xB0").concat(g2 >= 0 ? "E" : "W") : "", b2 = [];
7758
- if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(Ey(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(Ey(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(Ey(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(Ey(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat(Ey(v2), "</span>")), b2.length === 0) {
7759
- fy.setAttribute("hidden", "");
7784
+ if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(Ay(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(Ay(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(Ay(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(Ay(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat(Ay(v2), "</span>")), b2.length === 0) {
7785
+ gy.setAttribute("hidden", "");
7760
7786
  return;
7761
7787
  }
7762
- fy.innerHTML = b2.join(""), fy.removeAttribute("hidden");
7788
+ gy.innerHTML = b2.join(""), gy.removeAttribute("hidden");
7763
7789
  }
7764
- var Oy = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
7765
- function ky(e5, t2) {
7766
- if (!_y || e5.length === 0) return;
7790
+ var My = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
7791
+ function Ny(e5, t2) {
7792
+ if (!xy || e5.length === 0) return;
7767
7793
  let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"], r2 = [...e5].sort((e6, t3) => {
7768
7794
  let r3 = n2.indexOf(e6.name.toLowerCase()), i3 = n2.indexOf(t3.name.toLowerCase());
7769
7795
  return r3 !== -1 && i3 !== -1 ? r3 - i3 : r3 === -1 ? i3 === -1 ? e6.name.localeCompare(t3.name) : 1 : -1;
@@ -7774,15 +7800,15 @@ function ky(e5, t2) {
7774
7800
  }
7775
7801
  let s2 = (e6) => e6.replace(/(^|\s|_)\w/g, (e7) => e7.toUpperCase()).replace(/_/g, " "), c2 = (e6) => ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"][Math.floor((e6 % 360 + 360) % 360 / 30)], l2 = r2.map((e6) => {
7776
7802
  var t3, n3, r3, a3;
7777
- let o3 = e6.name.toLowerCase(), l3 = (t3 = M_[o3]) == null ? "\u2605" : t3, u3 = (n3 = e6.sign) == null ? c2(e6.longitude) : n3, d3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), p3 = Oy.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
7803
+ let o3 = e6.name.toLowerCase(), l3 = (t3 = M_[o3]) == null ? "\u2605" : t3, u3 = (n3 = e6.sign) == null ? c2(e6.longitude) : n3, d3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), p3 = My.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
7778
7804
  return '<tr class="'.concat(p3 ? "extended-row" : "", '" data-planet="').concat(o3, '">\n <td><span class="planet-sym">').concat(l3, "</span> ").concat(s2(e6.name)).concat(m2, "</td>\n <td>").concat(d3, "\xB0 ").concat(u3, " ").concat(String(f3).padStart(2, "0"), "\u2032</td>\n <td>H").concat((a3 = e6.house) == null ? "\u2013" : a3, "</td>\n <td>").concat(h2 > 0 ? h2 : "\u2013", "</td>\n </tr>");
7779
7805
  }).join(""), u2 = "| Body | Sign | Degree | House | Retrograde |\n| --- | --- | --- | --- | --- |\n" + r2.map((e6) => {
7780
7806
  var t3;
7781
7807
  let n3 = (t3 = e6.sign) == null ? c2(e6.longitude) : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), a3 = e6.house == null ? "\u2013" : "H".concat(e6.house), o3 = e6.retrograde ? "\u211E" : "";
7782
7808
  return "| ".concat(s2(e6.name), " | ").concat(n3, " | ").concat(r3, "\xB0 ").concat(String(i3).padStart(2, "0"), "\u2032 | ").concat(a3, " | ").concat(o3, " |");
7783
7809
  }).join("\n");
7784
- _y.innerHTML = '\n <div class="overview-header">\n <button class="overview-toggle" aria-expanded="false">\n <span class="overview-chevron">\u25B6</span>\n Planet Positions ('.concat(r2.length, ')\n </button>\n <button class="overview-copy" type="button" title="Copy positions as a Markdown table">Copy</button>\n </div>\n <div class="overview-body">\n <table class="overview-tbl">\n <thead><tr><th>Body</th><th>Position</th><th>House</th><th>Asp</th></tr></thead>\n <tbody>').concat(l2, "</tbody>\n </table>\n </div>\n "), _y.removeAttribute("hidden");
7785
- let d2 = _y.querySelector(".overview-copy");
7810
+ xy.innerHTML = '\n <div class="overview-header">\n <button class="overview-toggle" aria-expanded="false">\n <span class="overview-chevron">\u25B6</span>\n Planet Positions ('.concat(r2.length, ')\n </button>\n <button class="overview-copy" type="button" title="Copy positions as a Markdown table">Copy</button>\n </div>\n <div class="overview-body">\n <table class="overview-tbl">\n <thead><tr><th>Body</th><th>Position</th><th>House</th><th>Asp</th></tr></thead>\n <tbody>').concat(l2, "</tbody>\n </table>\n </div>\n "), xy.removeAttribute("hidden");
7811
+ let d2 = xy.querySelector(".overview-copy");
7786
7812
  d2 && d2.addEventListener("click", async (e6) => {
7787
7813
  e6.stopPropagation();
7788
7814
  try {
@@ -7792,14 +7818,14 @@ function ky(e5, t2) {
7792
7818
  d2.textContent = "Copy", d2.classList.remove("copied");
7793
7819
  }, 1600);
7794
7820
  } catch (e7) {
7795
- Ay("Copy unavailable");
7821
+ Py("Copy unavailable");
7796
7822
  }
7797
7823
  });
7798
- let f2 = _y.querySelector(".overview-toggle"), p2 = _y.querySelector(".overview-body");
7824
+ let f2 = xy.querySelector(".overview-toggle"), p2 = xy.querySelector(".overview-body");
7799
7825
  f2 == null || f2.addEventListener("click", () => {
7800
7826
  let e6 = f2.getAttribute("aria-expanded") === "true";
7801
7827
  f2.setAttribute("aria-expanded", e6 ? "false" : "true"), p2.classList.toggle("open", !e6);
7802
- }), _y.querySelectorAll("tbody tr").forEach((e6) => {
7828
+ }), xy.querySelectorAll("tbody tr").forEach((e6) => {
7803
7829
  var t3;
7804
7830
  let n3 = (t3 = e6.dataset.planet) == null ? "" : t3;
7805
7831
  n3 && (e6.addEventListener("mouseenter", () => {
@@ -7811,7 +7837,7 @@ function ky(e5, t2) {
7811
7837
  let t4 = document.querySelector("svg");
7812
7838
  t4 && (t4.querySelectorAll(".planet-glyph-group").forEach((e7) => {
7813
7839
  var t5;
7814
- let n4 = Oy.has((t5 = e7.dataset.planet) == null ? "" : t5);
7840
+ let n4 = My.has((t5 = e7.dataset.planet) == null ? "" : t5);
7815
7841
  e7.style.opacity = n4 ? "0.65" : "1";
7816
7842
  }), e6.classList.remove("active-row"));
7817
7843
  }), e6.addEventListener("click", () => {
@@ -7822,7 +7848,7 @@ function ky(e5, t2) {
7822
7848
  }));
7823
7849
  });
7824
7850
  }
7825
- function Ay(e5) {
7851
+ function Py(e5) {
7826
7852
  var t2;
7827
7853
  (t2 = document.getElementById("copy-toast")) == null || t2.remove();
7828
7854
  let n2 = document.createElement("div");
@@ -7830,56 +7856,56 @@ function Ay(e5) {
7830
7856
  n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
7831
7857
  }, 2500);
7832
7858
  }
7833
- var jy = null;
7834
- function My(e5, t2, n2) {
7835
- if (!hy) return;
7859
+ var Fy = null;
7860
+ function Iy(e5, t2, n2) {
7861
+ if (!yy) return;
7836
7862
  if (e5.length === 0) {
7837
- hy.setAttribute("hidden", ""), hy.innerHTML = "";
7863
+ yy.setAttribute("hidden", ""), yy.innerHTML = "";
7838
7864
  return;
7839
7865
  }
7840
7866
  let r2 = { "T-Square": "#e08a52", "Grand Trine": "#52a8e0", "Grand Cross": "#e05252", Stellium: "#9a7fd4", Yod: "#52c07a", Kite: "#c0b052" };
7841
- if (hy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
7867
+ if (yy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
7842
7868
  var n3;
7843
7869
  let i2 = (n3 = r2[e6.name]) == null ? "#888" : n3;
7844
7870
  return '\n <button class="pattern-pill"\n data-idx="'.concat(t3, '"\n data-color="').concat(i2, '"\n style="color:').concat(i2, ";border-color:").concat(i2, '"\n title="').concat(e6.description, '">\n ').concat(e6.name, "\n </button>\n ");
7845
- }).join(""), "\n "), hy.removeAttribute("hidden"), !hy.querySelector(".pattern-ask-claude-btn")) {
7871
+ }).join(""), "\n "), yy.removeAttribute("hidden"), !yy.querySelector(".pattern-ask-claude-btn")) {
7846
7872
  let t3 = document.createElement("button");
7847
- t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none", hy.appendChild(t3), t3.addEventListener("click", () => {
7873
+ t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Interpret", t3.style.display = "none", yy.appendChild(t3), t3.addEventListener("click", () => {
7848
7874
  var n3;
7849
- let r3 = jy;
7875
+ let r3 = Fy;
7850
7876
  if (r3 === null) return;
7851
7877
  let i2 = e5[r3];
7852
- t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", Ky({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
7878
+ t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", Xy({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
7853
7879
  t3.textContent = "\u2713 Sent", setTimeout(() => {
7854
- t3.textContent = "\u2728 Ask Claude", t3.disabled = false;
7880
+ t3.textContent = "\u2728 Interpret", t3.disabled = false;
7855
7881
  }, 2500);
7856
7882
  }).catch(() => {
7857
7883
  t3.textContent = "\u26A0 Failed", t3.disabled = false;
7858
7884
  });
7859
7885
  });
7860
7886
  }
7861
- hy.querySelectorAll(".pattern-pill").forEach((r3) => {
7887
+ yy.querySelectorAll(".pattern-pill").forEach((r3) => {
7862
7888
  r3.addEventListener("click", () => {
7863
7889
  var i2;
7864
- let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = hy.querySelector(".pattern-ask-claude-btn");
7865
- jy === a2 ? (jy = null, Nv(), c2 && (c2.style.display = "none"), hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7890
+ let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = yy.querySelector(".pattern-ask-claude-btn");
7891
+ Fy === a2 ? (Fy = null, Nv(), c2 && (c2.style.display = "none"), yy.querySelectorAll(".pattern-pill").forEach((e6) => {
7866
7892
  var t3;
7867
7893
  e6.classList.remove("active");
7868
7894
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7869
7895
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7870
- })) : (jy = a2, hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7896
+ })) : (Fy = a2, yy.querySelectorAll(".pattern-pill").forEach((e6) => {
7871
7897
  var t3;
7872
7898
  e6.classList.remove("active");
7873
7899
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7874
7900
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7875
- }), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, jv(o2.planets, o2.aspectKeys), t2 && n2 != null && (Lv(), Iv(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Ask Claude", c2.disabled = false));
7901
+ }), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, jv(o2.planets, o2.aspectKeys), t2 && n2 != null && (Lv(), Iv(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Interpret", c2.disabled = false));
7876
7902
  });
7877
7903
  });
7878
7904
  }
7879
- var Ny = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], Py = true, Fy = 8, Iy = "true";
7880
- function Ly() {
7905
+ var Ly = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], Ry = true, zy = 8, By = "true";
7906
+ function Vy() {
7881
7907
  var e5;
7882
- if (!gy) return;
7908
+ if (!by) return;
7883
7909
  let t2 = (() => {
7884
7910
  let e6 = $ == null ? void 0 : $.planets, t3 = [];
7885
7911
  Array.isArray(e6) ? e6.forEach((e7) => {
@@ -7889,9 +7915,9 @@ function Ly() {
7889
7915
  let n3 = t3.some((e7) => e7 === "north node" || e7 === "north node (mean)" || e7 === "mean node"), r3 = t3.some((e7) => e7 === "true node" || e7 === "north node (true)");
7890
7916
  return n3 && r3;
7891
7917
  })();
7892
- G_(Iy);
7893
- let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(Iy === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(Iy === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
7894
- Py = true, gy.innerHTML = '\n <div class="asp-panel">\n <div class="asp-section">\n <span class="asp-section-label">Aspects</span>\n <button class="aspect-toggle-btn active" id="cw-aspect-vis-toggle"\n title="Toggle all natal aspect lines">\n <span class="toggle-icon">\u2295</span> Natal aspects\n </button>\n </div>\n <div class="asp-section">\n <span class="asp-section-label">Orb</span>\n '.concat(Ny.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === Fy ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
7918
+ G_(By);
7919
+ let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(By === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(By === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
7920
+ Ry = true, by.innerHTML = '\n <div class="asp-panel">\n <div class="asp-section">\n <span class="asp-section-label">Aspects</span>\n <button class="aspect-toggle-btn active" id="cw-aspect-vis-toggle"\n title="Toggle all natal aspect lines">\n <span class="toggle-icon">\u2295</span> Natal aspects\n </button>\n </div>\n <div class="asp-section">\n <span class="asp-section-label">Orb</span>\n '.concat(Ly.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === zy ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
7895
7921
  let r2 = q_($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
7896
7922
  for (let e6 of r2) {
7897
7923
  let t3 = e6.name.toLowerCase();
@@ -7907,83 +7933,83 @@ function Ly() {
7907
7933
  var t3;
7908
7934
  return { glyph: (t3 = F_[e6]) == null ? "" : t3, label: Kv(e6) };
7909
7935
  }).filter((e6) => e6.glyph);
7910
- gy.insertAdjacentHTML("beforeend", qv([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), gy.removeAttribute("hidden");
7936
+ by.insertAdjacentHTML("beforeend", qv([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), by.removeAttribute("hidden");
7911
7937
  let s2 = document.getElementById("cw-aspect-vis-toggle");
7912
7938
  s2 == null || s2.addEventListener("click", () => {
7913
- Py = !Py, Rv(Py), s2.classList.toggle("active", Py), s2.querySelector(".toggle-icon").textContent = Py ? "\u2295" : "\u2296";
7914
- }), gy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
7939
+ Ry = !Ry, Rv(Ry), s2.classList.toggle("active", Ry), s2.querySelector(".toggle-icon").textContent = Ry ? "\u2295" : "\u2296";
7940
+ }), by.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
7915
7941
  e6.addEventListener("click", () => {
7916
7942
  var t3;
7917
7943
  let n3 = parseFloat((t3 = e6.dataset.orb) == null ? "8" : t3);
7918
- n3 !== Fy && (Fy = n3, gy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), zv(n3));
7944
+ n3 !== zy && (zy = n3, by.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), zv(n3));
7919
7945
  });
7920
- }), gy.querySelectorAll(".node-btn").forEach((e6) => {
7946
+ }), by.querySelectorAll(".node-btn").forEach((e6) => {
7921
7947
  e6.addEventListener("click", () => {
7922
7948
  let t3 = e6.dataset.node === "mean" ? "mean" : "true";
7923
- t3 === Iy || !$ || (Iy = t3, G_(t3), Ty($));
7949
+ t3 === By || !$ || (By = t3, G_(t3), ky($));
7924
7950
  });
7925
7951
  });
7926
7952
  }
7927
- async function Ry(e5, t2) {
7928
- if (Sy) try {
7953
+ async function Hy(e5, t2) {
7954
+ if (Ey) try {
7929
7955
  let n2 = "[Chart Wheel] Selected ".concat(e5, " \u2014 ").concat(Object.entries(t2).filter(([, e6]) => e6 != null && e6 !== false && e6 !== "").map(([e6, t3]) => "".concat(e6, ": ").concat(t3)).join(", "));
7930
- await yy.updateModelContext({ content: [{ type: "text", text: n2 }] });
7956
+ await Cy.updateModelContext({ content: [{ type: "text", text: n2 }] });
7931
7957
  } catch (e6) {
7932
7958
  console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e6);
7933
7959
  }
7934
7960
  }
7935
- async function zy(e5) {
7961
+ async function Uy(e5) {
7936
7962
  var t2, n2, r2, i2;
7937
- jy = null, hy == null || hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7963
+ Fy = null, yy == null || yy.querySelectorAll(".pattern-pill").forEach((e6) => {
7938
7964
  var t3;
7939
7965
  e6.classList.remove("active");
7940
7966
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7941
7967
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7942
- }), await Ry("planet", { planet: e5.name, longitude: e5.longitude, sign: (t2 = e5.sign) == null ? null : t2, house: (n2 = e5.house) == null ? null : n2, retrograde: (r2 = e5.retrograde) == null ? false : r2, speed: (i2 = e5.speed) == null ? null : i2 });
7968
+ }), await Hy("planet", { planet: e5.name, longitude: e5.longitude, sign: (t2 = e5.sign) == null ? null : t2, house: (n2 = e5.house) == null ? null : n2, retrograde: (r2 = e5.retrograde) == null ? false : r2, speed: (i2 = e5.speed) == null ? null : i2 });
7943
7969
  }
7944
- async function By(e5) {
7970
+ async function Wy(e5) {
7945
7971
  var t2, n2;
7946
- await Ry("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
7972
+ await Hy("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
7947
7973
  }
7948
- async function Vy(e5) {
7974
+ async function Gy(e5) {
7949
7975
  var t2, n2, r2, i2;
7950
- await Ry("aspect", { planet1: e5.planet1, planet2: e5.planet2, aspect_type: (t2 = e5.type) == null ? null : t2, orb: (n2 = e5.orb) == null ? null : n2, applying: (r2 = e5.applying) == null ? null : r2, angle: (i2 = e5.angle) == null ? null : i2 });
7976
+ await Hy("aspect", { planet1: e5.planet1, planet2: e5.planet2, aspect_type: (t2 = e5.type) == null ? null : t2, orb: (n2 = e5.orb) == null ? null : n2, applying: (r2 = e5.applying) == null ? null : r2, angle: (i2 = e5.angle) == null ? null : i2 });
7951
7977
  }
7952
- function Hy() {
7978
+ function Ky() {
7953
7979
  return async (e5) => {
7954
7980
  try {
7955
7981
  var t2, n2;
7956
- let r2 = await yy.createSamplingMessage({ messages: [{ role: "user", content: { type: "text", text: "You are interpreting a specific element in a natal chart. Be specific to the chart data \u2014 never generic. 2-3 sentences max.\n\nUser Request: ".concat(e5) } }], systemPrompt: "You are a professional Western astrologer giving a focused natal interpretation. Be specific to the chart data provided \u2014 never generic. Insightful and concise.", maxTokens: 300 });
7982
+ let r2 = await Cy.createSamplingMessage({ messages: [{ role: "user", content: { type: "text", text: "You are interpreting a specific element in a natal chart. Be specific to the chart data \u2014 never generic. 2-3 sentences max.\n\nUser Request: ".concat(e5) } }], systemPrompt: "You are a professional Western astrologer giving a focused natal interpretation. Be specific to the chart data provided \u2014 never generic. Insightful and concise.", maxTokens: 300 });
7957
7983
  return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
7958
7984
  } catch (e6) {
7959
7985
  return console.error("[ChartWheel] Sampling failed:", e6), "Unable to load interpretation right now.";
7960
7986
  }
7961
7987
  };
7962
7988
  }
7963
- async function Uy(e5) {
7989
+ async function qy(e5) {
7964
7990
  try {
7965
- (await yy.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
7991
+ (await Cy.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
7966
7992
  } catch (e6) {
7967
7993
  console.error("[ChartWheel] sendMessage failed:", e6);
7968
7994
  }
7969
7995
  }
7970
- async function Wy() {
7996
+ async function Jy() {
7971
7997
  var e5, t2, n2, r2;
7972
7998
  if (!$) return;
7973
7999
  let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = q_(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
7974
8000
  var t3;
7975
8001
  return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
7976
8002
  }).slice(0, 8).map((e6) => " \u2022 ".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(Number(e6.orb).toFixed(1), "\xB0, ").concat(e6.applying ? "applying" : "separating", ")")).join("\n") || " \u2022 No major aspects found";
7977
- await Uy("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
8003
+ await qy("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
7978
8004
  var t3;
7979
8005
  return " \u2022 ".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? ", House ".concat(e6.house) : "").concat(e6.retrograde ? " \u211E" : "");
7980
8006
  }).join("\n"), "\n\nMajor aspects:\n").concat(c2, "\n\nCover: (1) Core identity and soul purpose (Sun, Moon, Ascendant), (2) The chart's dominant element, modality, and overall signature, (3) The most significant aspects and their psychological themes, (4) Key life areas of focus and challenge, (5) A practical synthesis \u2014 who is this person and what is their path?"));
7981
8007
  }
7982
- async function Gy() {
8008
+ async function Yy() {
7983
8009
  var e5, t2, n2, r2;
7984
8010
  if (!$) return;
7985
8011
  let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5;
7986
- await Uy("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(q_(i2.planets).slice(0, 4).map((e6) => {
8012
+ await qy("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(q_(i2.planets).slice(0, 4).map((e6) => {
7987
8013
  var t3;
7988
8014
  return "".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? " H".concat(e6.house) : "");
7989
8015
  }).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
@@ -7991,7 +8017,7 @@ async function Gy() {
7991
8017
  return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
7992
8018
  }).slice(0, 5).map((e6) => "".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(Number(e6.orb).toFixed(1), "\xB0)")).join(", ") || "none detected", ".\n\nBased on this chart, please suggest 3-4 specific, insightful questions I could ask to understand this person more deeply \u2014 such as how particular placements manifest in real life, the most significant aspect dynamics, or how to integrate the chart's core tensions. Present each as a tappable question I can ask you."));
7993
8019
  }
7994
- async function Ky(e5) {
8020
+ async function Xy(e5) {
7995
8021
  let t2 = "";
7996
8022
  if (e5.type === "planet") {
7997
8023
  var n2;
@@ -8019,50 +8045,53 @@ async function Ky(e5) {
8019
8045
  let n3 = e5.data;
8020
8046
  t2 = "Interpret the ".concat(n3.angle, " at ").concat(n3.position, " (").concat(n3.sign, " \xB7 ").concat(n3.element, " \xB7 ").concat(n3.modality, ") in this natal chart. Give a focused interpretation of what this angle represents for the native \u2014 identity, life direction, relationships, or roots depending on which angle \u2014 and how the sign on the angle shapes that expression.");
8021
8047
  }
8022
- if (t2) try {
8023
- let e6 = await yy.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
8024
- if (e6.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e6), Error("Host rejected message");
8025
- } catch (e6) {
8026
- throw console.error("[ChartWheel] \u274C sendMessage failed:", e6), e6;
8048
+ if (t2) {
8049
+ t2 = sy(t2, $ == null ? void 0 : $._birth_params, "Natal chart");
8050
+ try {
8051
+ let e6 = await Cy.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
8052
+ if (e6.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e6), Error("Host rejected message");
8053
+ } catch (e6) {
8054
+ throw console.error("[ChartWheel] \u274C sendMessage failed:", e6), e6;
8055
+ }
8027
8056
  }
8028
8057
  }
8029
- async function qy(e5) {
8058
+ async function Zy(e5) {
8030
8059
  if (!($ != null && $._birth_params)) {
8031
- Wv(my, by);
8060
+ Wv(vy, wy);
8032
8061
  return;
8033
8062
  }
8034
8063
  try {
8035
8064
  var t2, n2, r2, i2;
8036
- let a2 = ry(await yy.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: $._birth_params.datetime, timezone: (t2 = $._birth_params.timezone) == null ? void 0 : t2, latitude: (n2 = $._birth_params.latitude) == null ? void 0 : n2, longitude: (r2 = $._birth_params.longitude) == null ? void 0 : r2, location: (i2 = $._birth_params.location) == null ? void 0 : i2, house_system: e5 } }));
8037
- a2 ? ($ = a2, by = e5, Ty(a2)) : Wv(my, by);
8065
+ let a2 = ry(await Cy.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: $._birth_params.datetime, timezone: (t2 = $._birth_params.timezone) == null ? void 0 : t2, latitude: (n2 = $._birth_params.latitude) == null ? void 0 : n2, longitude: (r2 = $._birth_params.longitude) == null ? void 0 : r2, location: (i2 = $._birth_params.location) == null ? void 0 : i2, house_system: e5 } }));
8066
+ a2 ? ($ = a2, wy = e5, ky(a2)) : Wv(vy, wy);
8038
8067
  } catch (e6) {
8039
- console.error("[Chart] Recalculate failed:", e6), Wv(my, by);
8068
+ console.error("[Chart] Recalculate failed:", e6), Wv(vy, wy);
8040
8069
  }
8041
8070
  }
8042
- var Jy;
8043
- function Yy() {
8044
- Jy && (clearTimeout(Jy), Jy = void 0);
8071
+ var Qy;
8072
+ function $y() {
8073
+ Qy && (clearTimeout(Qy), Qy = void 0);
8045
8074
  }
8046
- function Xy(e5, t2) {
8047
- Yy(), uy.setAttribute("hidden", ""), ay({ container: dy, message: e5, onRetry: t2 });
8075
+ function eb(e5, t2) {
8076
+ $y(), my.setAttribute("hidden", ""), ly({ container: hy, message: e5, onRetry: t2 });
8048
8077
  }
8049
- function Zy() {
8050
- Yy(), dy.setAttribute("hidden", ""), uy.removeAttribute("hidden"), Jy = setTimeout(() => {
8051
- Xy("The chart didn't load. Tap to try again.", Zy);
8052
- }, 3e4), yy.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
8078
+ function tb() {
8079
+ $y(), hy.setAttribute("hidden", ""), my.removeAttribute("hidden"), Qy = setTimeout(() => {
8080
+ eb("The chart didn't load. Tap to try again.", tb);
8081
+ }, 3e4), Cy.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
8053
8082
  });
8054
8083
  }
8055
- sy(yy, { loadingEl: uy, contentEl: dy, statusFn: wy, paramControls: () => xy }), Jy = setTimeout(() => {
8056
- Xy("Chart data is taking longer than expected.", Zy);
8084
+ dy(Cy, { loadingEl: my, contentEl: hy, statusFn: Oy, paramControls: () => Ty }), Qy = setTimeout(() => {
8085
+ eb("Chart data is taking longer than expected.", tb);
8057
8086
  }, 3e4), (async () => {
8058
8087
  try {
8059
- await yy.connect();
8060
- let e5 = yy.getHostCapabilities();
8061
- Sy = !!(e5 != null && e5.modelContext), Cy = !!(e5 != null && e5.sampling), oy(yy, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), ly(yy), h_(yy, () => {
8062
- $ && Ty($);
8063
- }), $ && Ty($);
8088
+ await Cy.connect();
8089
+ let e5 = Cy.getHostCapabilities();
8090
+ Ey = !!(e5 != null && e5.modelContext), Dy = !!(e5 != null && e5.sampling), uy(Cy, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), py(Cy), h_(Cy, () => {
8091
+ $ && ky($);
8092
+ }), $ && ky($);
8064
8093
  } catch (e5) {
8065
- console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), Xy("The chart didn't load. Tap to try again.", Zy);
8094
+ console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), eb("The chart didn't load. Tap to try again.", tb);
8066
8095
  }
8067
8096
  })();
8068
8097
  </script>