klio 1.5.7 → 1.5.8

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "klio",
3
- "version": "1.5.7",
3
+ "version": "1.5.8",
4
4
  "description": "A CLI for astrological calculations",
5
5
  "main": "src/main.js",
6
6
  "bin": {
@@ -1461,7 +1461,7 @@ async function calculatePersonalTransits(transitDate = null, birthData = null) {
1461
1461
  }
1462
1462
 
1463
1463
  // Function to calculate personal transit aspects
1464
- function calculatePersonalTransitAspects(transitDate = null, birthData = null, targetPlanet = null) {
1464
+ function calculatePersonalTransitAspects(transitDate = null, birthData = null, targetPlanet = null, useHuberOrbs = true) {
1465
1465
  if (!birthData) {
1466
1466
  birthData = getBirthDataFromConfig();
1467
1467
  if (!birthData) {
@@ -1500,36 +1500,54 @@ function calculatePersonalTransitAspects(transitDate = null, birthData = null, t
1500
1500
 
1501
1501
  // Calculate aspects between transit and birth planets
1502
1502
  const aspects = [];
1503
- const aspectTypes = [
1503
+ // Use the same orb model as other aspect calculations; default to Huber orbs
1504
+ const aspectTypes = useHuberOrbs ? [
1504
1505
  { name: 'Conjunction', angle: 0, orb: 8 },
1505
1506
  { name: 'Opposition', angle: 180, orb: 8 },
1506
1507
  { name: 'Square', angle: 90, orb: 6 },
1507
1508
  { name: 'Trine', angle: 120, orb: 6 },
1508
- { name: 'Sextile', angle: 60, orb: 4 }
1509
+ { name: 'Sextile', angle: 60, orb: 4 },
1510
+ { name: 'Quincunx', angle: 150, orb: 3 }
1511
+ ] : [
1512
+ { name: 'Conjunction', angle: 0, orb: 10 },
1513
+ { name: 'Opposition', angle: 180, orb: 10 },
1514
+ { name: 'Square', angle: 90, orb: 8 },
1515
+ { name: 'Trine', angle: 120, orb: 8 },
1516
+ { name: 'Sextile', angle: 60, orb: 6 },
1517
+ { name: 'Quincunx', angle: 150, orb: 4 }
1509
1518
  ];
1510
1519
 
1511
1520
  // Compare each transit planet with each birth planet
1512
1521
  for (const [transitName, transitLongitude] of Object.entries(transitPlanets)) {
1522
+ // If filtering by target planet, only calculate for that transit planet
1523
+ if (targetPlanet && transitName !== targetPlanet) continue;
1524
+
1513
1525
  for (const [birthName, birthLongitude] of Object.entries(birthPlanets)) {
1514
1526
  // Skip if it's the same planet
1515
1527
  if (transitName === birthName) continue;
1516
1528
 
1517
- // Calculate the angle difference
1518
- const angleDiff = Math.abs(transitLongitude - birthLongitude) % 360;
1519
- const normalizedAngle = Math.min(angleDiff, 360 - angleDiff);
1529
+ // Calculate the angle between the two planets
1530
+ let rawDiff = transitLongitude - birthLongitude;
1531
+ let angleDiff = ((rawDiff % 360) + 360) % 360;
1520
1532
 
1521
- // Check for aspects
1533
+ // Check for aspects using the actual angle
1522
1534
  for (const aspect of aspectTypes) {
1523
- if (Math.abs(normalizedAngle - aspect.angle) <= aspect.orb) {
1535
+ // Check both the angle and its complement (360 - angle)
1536
+ const diff1 = Math.abs(angleDiff - aspect.angle);
1537
+ const diff2 = Math.abs((360 - angleDiff) - aspect.angle);
1538
+ const diff = Math.min(diff1, diff2);
1539
+
1540
+ if (diff <= aspect.orb) {
1524
1541
  aspects.push({
1525
1542
  transitPlanet: transitName,
1526
1543
  birthPlanet: birthName,
1527
1544
  type: aspect.name,
1528
- angle: normalizedAngle.toFixed(2),
1529
- orb: Math.abs(normalizedAngle - aspect.angle).toFixed(2),
1545
+ angle: angleDiff.toFixed(2),
1546
+ orb: diff.toFixed(2),
1530
1547
  transitLongitude: transitLongitude,
1531
1548
  birthLongitude: birthLongitude
1532
1549
  });
1550
+ break; // Only match one aspect per planet pair
1533
1551
  }
1534
1552
  }
1535
1553
  }
@@ -1548,8 +1566,8 @@ function calculatePersonalTransitAspects(transitDate = null, birthData = null, t
1548
1566
  }
1549
1567
 
1550
1568
  // Function to display personal transit aspects
1551
- function showPersonalTransitAspects(transitDate = null, birthData = null, targetPlanet = null) {
1552
- const aspectData = calculatePersonalTransitAspects(transitDate, birthData, targetPlanet);
1569
+ function showPersonalTransitAspects(transitDate = null, birthData = null, targetPlanet = null, useHuberOrbs = true) {
1570
+ const aspectData = calculatePersonalTransitAspects(transitDate, birthData, targetPlanet, useHuberOrbs);
1553
1571
 
1554
1572
  if (!aspectData || aspectData.aspects.length === 0) {
1555
1573
  console.log('No personal transit aspects found.');
@@ -1557,7 +1575,7 @@ function showPersonalTransitAspects(transitDate = null, birthData = null, target
1557
1575
  }
1558
1576
 
1559
1577
  const transitDateDisplay = transitDate || getCurrentTimeInTimezone();
1560
- console.log(`Personal Transit Aspects (${transitDateDisplay.day}.${transitDateDisplay.month}.${transitDateDisplay.year}):`);
1578
+ console.log(`Personal Transit Aspects (${transitDateDisplay.day}.${transitDateDisplay.month}.${transitDateDisplay.year}) [${(aspectData && aspectData.aspects.length>0) ? (useHuberOrbs ? 'Huber orbs' : 'Standard orbs') : ''}]:`);
1561
1579
  console.log('================================================================================');
1562
1580
  console.log('| Transit | Birth | Aspect | Orb | Transit Pos | Birth Pos |');
1563
1581
  console.log('================================================================================');
package/src/cli/cli.js CHANGED
@@ -882,7 +882,7 @@ program
882
882
  for (const [planetName] of Object.entries(planets)) {
883
883
  const transitPlanetData = getAstrologicalData(planetName, transitDateDisplay);
884
884
  const transitHouse = getPlanetHouse(parseFloat(transitPlanetData.degreeInSign) + (signs.indexOf(transitPlanetData.sign) * 30), houses.house);
885
- const transitAspectsData = calculatePersonalTransitAspects(transitDateDisplay, birthData, planetName);
885
+ const transitAspectsData = calculatePersonalTransitAspects(transitDateDisplay, birthData, planetName, true);
886
886
  const transitAspects = transitAspectsData ? transitAspectsData.aspects : [];
887
887
 
888
888
  // Add planet data to each aspect for later display
@@ -999,13 +999,13 @@ program
999
999
  // Show personal transit aspects
1000
1000
  // Use the specific planet if specified, or all planets
1001
1001
  const targetPlanet = planetArg ? planetArg.toLowerCase() : null;
1002
- showPersonalTransitAspects(transitDate, birthData, targetPlanet);
1002
+ showPersonalTransitAspects(transitDate, birthData, targetPlanet, true);
1003
1003
 
1004
1004
  // Handle AI request for personal transit aspects
1005
1005
  if (options.p) {
1006
1006
  // Get the transit aspects data for AI
1007
1007
  const { calculatePersonalTransitAspects } = require('../astrology/astrologyService');
1008
- const transitAspectsData = calculatePersonalTransitAspects(transitDate, birthData, targetPlanet);
1008
+ const transitAspectsData = calculatePersonalTransitAspects(transitDate, birthData, targetPlanet, true);
1009
1009
  const transitAspects = transitAspectsData ? transitAspectsData.aspects : [];
1010
1010
 
1011
1011
  const aiData = {