thoth-cli 0.2.20 → 0.2.21

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.
Files changed (2) hide show
  1. package/dist/bin.js +39 -16
  2. package/package.json +1 -1
package/dist/bin.js CHANGED
@@ -12,6 +12,7 @@ import {
12
12
  formatEphemerisRange,
13
13
  formatHorary,
14
14
  formatLunarReturn,
15
+ formatMoon,
15
16
  formatMoonExtended,
16
17
  formatProgressions,
17
18
  formatScore,
@@ -23,6 +24,7 @@ import {
23
24
  horary,
24
25
  isError,
25
26
  lunarReturn,
27
+ moon,
26
28
  moonExtended,
27
29
  progressions,
28
30
  score,
@@ -94,7 +96,7 @@ EPHEMERIS & MOON
94
96
  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
95
97
  REFERENCE
96
98
  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
97
- thoth key # full symbol reference`).version("0.2.20");
99
+ thoth key # full symbol reference`).version("0.2.21");
98
100
  program.command("chart").description("Calculate a natal chart").requiredOption("--date <date>", "Birth date (YYYY-MM-DD)").requiredOption("--time <time>", "Birth time (HH:MM)").option("--lat <lat>", "Latitude", parseFloat).option("--lng <lng>", "Longitude", parseFloat).option("--city <city>", "City name").option("--nation <nation>", "Country code", "US").option("--name <name>", "Name", "Subject").option("--json", "Output raw JSON").option("--svg", "Output SVG chart").option("--svg-file <path>", "Save SVG to file").action(async (options) => {
99
101
  if (!options.city && (!options.lat || !options.lng)) {
100
102
  console.error(chalk.red("Error: Must provide either --city or both --lat and --lng"));
@@ -479,19 +481,40 @@ program.command("horary").description("Cast a horary chart for divination (like
479
481
  console.log(formatHorary(result));
480
482
  }
481
483
  });
482
- program.command("moon").description("Get moon phase, eclipses, sunrise/sunset").option("--date <date>", "Date (YYYY-MM-DD, default: today)").option("--lat <lat>", "Latitude", parseFloat, 40.7128).option("--lng <lng>", "Longitude", parseFloat, -74.006).option("--tz <tz>", "Timezone", "America/New_York").option("--json", "Output raw JSON").action(async (options) => {
484
+ program.command("moon").description("Get moon phase and position").option("--date <date>", "Date (YYYY-MM-DD, default: today)").option("--lat <lat>", "Latitude", parseFloat, 40.7128).option("--lng <lng>", "Longitude", parseFloat, -74.006).option("--tz <tz>", "Timezone (for --extended)", "America/New_York").option("-e, --extended", "Show eclipses, sunrise/sunset, upcoming phases").option("--json", "Output raw JSON").action(async (options) => {
483
485
  let year, month, day;
484
486
  if (options.date) {
485
487
  [year, month, day] = options.date.split("-").map(Number);
486
488
  }
487
- const spinner = ora("Getting moon data...").start();
488
- const result = await moonExtended({
489
+ if (options.extended) {
490
+ const spinner2 = ora("Getting moon details...").start();
491
+ const result2 = await moonExtended({
492
+ year,
493
+ month,
494
+ day,
495
+ lat: options.lat,
496
+ lng: options.lng,
497
+ tz: options.tz
498
+ });
499
+ spinner2.stop();
500
+ if (isError(result2)) {
501
+ console.error(chalk.red(`Error: ${result2.error}`));
502
+ process.exit(1);
503
+ }
504
+ if (options.json) {
505
+ console.log(JSON.stringify(result2, null, 2));
506
+ } else {
507
+ console.log(formatMoonExtended(result2));
508
+ }
509
+ return;
510
+ }
511
+ const spinner = ora("Getting moon phase...").start();
512
+ const result = await moon({
489
513
  year,
490
514
  month,
491
515
  day,
492
516
  lat: options.lat,
493
- lng: options.lng,
494
- tz: options.tz
517
+ lng: options.lng
495
518
  });
496
519
  spinner.stop();
497
520
  if (isError(result)) {
@@ -501,7 +524,7 @@ program.command("moon").description("Get moon phase, eclipses, sunrise/sunset").
501
524
  if (options.json) {
502
525
  console.log(JSON.stringify(result, null, 2));
503
526
  } else {
504
- console.log(formatMoonExtended(result));
527
+ console.log(formatMoon(result));
505
528
  }
506
529
  });
507
530
  program.command("ephemeris").description("Get ephemeris position for a celestial body").requiredOption("--body <body>", "Celestial body (sun, moon, mars, etc.)").option("--date <date>", "Date (YYYY-MM-DD, default: today)").option("--json", "Output raw JSON").action(async (options) => {
@@ -537,7 +560,7 @@ program.command("core-version").description("Show thoth-core version").action(as
537
560
  });
538
561
  program.command("key").description("Symbol reference guide").action(() => {
539
562
  const sun = chalk.hex("#FFD700");
540
- const moon = chalk.hex("#C0C0C0");
563
+ const moon2 = chalk.hex("#C0C0C0");
541
564
  const mercury = chalk.hex("#FF8C00");
542
565
  const venus = chalk.hex("#00FF7F");
543
566
  const mars = chalk.hex("#FF0000");
@@ -554,8 +577,8 @@ program.command("key").description("Symbol reference guide").action(() => {
554
577
  console.log(chalk.bold.cyan("\u2550\u2550 PLANETS \u2550\u2550"));
555
578
  console.log(` ${sun("\u2609 Sun")} Identity, vitality, ego, life force`);
556
579
  console.log(` ${chalk.dim("Rules:")} ${sun("Leo")} ${chalk.dim("Sephira:")} Tiphareth`);
557
- console.log(` ${moon("\u263D Moon")} Emotions, instincts, the unconscious, mother`);
558
- console.log(` ${chalk.dim("Rules:")} ${moon("Cancer")} ${chalk.dim("Sephira:")} Yesod`);
580
+ console.log(` ${moon2("\u263D Moon")} Emotions, instincts, the unconscious, mother`);
581
+ console.log(` ${chalk.dim("Rules:")} ${moon2("Cancer")} ${chalk.dim("Sephira:")} Yesod`);
559
582
  console.log(` ${mercury("\u263F Mercury")} Mind, communication, learning, commerce`);
560
583
  console.log(` ${chalk.dim("Rules:")} ${mercury("Gemini, Virgo")} ${chalk.dim("Sephira:")} Hod`);
561
584
  console.log(` ${venus("\u2640 Venus")} Love, beauty, values, attraction, harmony`);
@@ -586,8 +609,8 @@ program.command("key").description("Symbol reference guide").action(() => {
586
609
  console.log(` ${chalk.dim("Ruler:")} ${venus("Venus")} ${chalk.dim('"I HAVE"')}`);
587
610
  console.log(` ${mercury("\u264A Gemini")} ${chalk.dim("Mutable Air")} Curiosity, duality, scattered`);
588
611
  console.log(` ${chalk.dim("Ruler:")} ${mercury("Mercury")} ${chalk.dim('"I THINK"')}`);
589
- console.log(` ${moon("\u264B Cancer")} ${chalk.dim("Cardinal Water")} Nurturing, protective, moody`);
590
- console.log(` ${chalk.dim("Ruler:")} ${moon("Moon")} ${chalk.dim('"I FEEL"')}`);
612
+ console.log(` ${moon2("\u264B Cancer")} ${chalk.dim("Cardinal Water")} Nurturing, protective, moody`);
613
+ console.log(` ${chalk.dim("Ruler:")} ${moon2("Moon")} ${chalk.dim('"I FEEL"')}`);
591
614
  console.log(` ${sun("\u264C Leo")} ${chalk.dim("Fixed Fire")} Creative, proud, dramatic`);
592
615
  console.log(` ${chalk.dim("Ruler:")} ${sun("Sun")} ${chalk.dim('"I WILL"')}`);
593
616
  console.log(` ${mercury("\u264D Virgo")} ${chalk.dim("Mutable Earth")} Analytical, service, critical`);
@@ -622,7 +645,7 @@ program.command("key").description("Symbol reference guide").action(() => {
622
645
  console.log(chalk.bold.cyan("\u2550\u2550 ASPECTS \u2550\u2550"));
623
646
  console.log(` ${sun("\u260C Conjunction")} 0\xB0 Fusion, intensification, new cycle`);
624
647
  console.log(` ${chalk.dim("Sephira: Tiphareth (Sun) \u2014 creative union")}`);
625
- console.log(` ${moon("\u260D Opposition")} 180\xB0 Awareness, tension, projection`);
648
+ console.log(` ${moon2("\u260D Opposition")} 180\xB0 Awareness, tension, projection`);
626
649
  console.log(` ${chalk.dim("Sephira: Yesod (Moon) \u2014 polarity, reflection")}`);
627
650
  console.log(` ${jupiter("\u25B3 Trine")} 120\xB0 Harmony, ease, natural talent`);
628
651
  console.log(` ${chalk.dim("Sephira: Chesed (Jupiter) \u2014 grace, flow")}`);
@@ -644,12 +667,12 @@ program.command("key").description("Symbol reference guide").action(() => {
644
667
  console.log(` ${mercury("\u{1F701} Air")} ${mercury("Gemini, Libra, Aquarius")}`);
645
668
  console.log(` Mind, communication, connection, ideas`);
646
669
  console.log(` ${chalk.dim("Hot & Wet \u2014 Sanguine \u2014 Thinking function")}`);
647
- console.log(` ${jupiter("\u{1F704} Water")} ${moon("Cancer, Scorpio, Pisces")}`);
670
+ console.log(` ${jupiter("\u{1F704} Water")} ${moon2("Cancer, Scorpio, Pisces")}`);
648
671
  console.log(` Emotion, intuition, the unconscious, soul`);
649
672
  console.log(` ${chalk.dim("Cold & Wet \u2014 Phlegmatic \u2014 Feeling function")}`);
650
673
  console.log("");
651
674
  console.log(chalk.bold.cyan("\u2550\u2550 MODALITIES \u2550\u2550"));
652
- console.log(` ${chalk.bold("Cardinal")} ${mars("Aries")}, ${moon("Cancer")}, ${venus("Libra")}, ${saturn("Capricorn")}`);
675
+ console.log(` ${chalk.bold("Cardinal")} ${mars("Aries")}, ${moon2("Cancer")}, ${venus("Libra")}, ${saturn("Capricorn")}`);
653
676
  console.log(` Initiating, leadership, action`);
654
677
  console.log(` ${chalk.dim('The spark. Begins seasons. "I start."')}`);
655
678
  console.log(` ${chalk.bold("Fixed")} ${venus("Taurus")}, ${sun("Leo")}, ${pluto("Scorpio")}, ${uranus("Aquarius")}`);
@@ -774,6 +797,6 @@ program.command("ephemeris-multi").description("Get ephemeris for multiple bodie
774
797
  }
775
798
  });
776
799
  console.log(chalk.dim(""));
777
- console.log(chalk.yellow(" \u{1315D}") + chalk.dim(" thoth-cli v0.2.20"));
800
+ console.log(chalk.yellow(" \u{1315D}") + chalk.dim(" thoth-cli v0.2.21"));
778
801
  console.log(chalk.dim(""));
779
802
  program.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thoth-cli",
3
- "version": "0.2.20",
3
+ "version": "0.2.21",
4
4
  "description": "𓅝 Astrological calculations from the command line. Swiss Ephemeris precision. Built for humans and agents.",
5
5
  "author": "AKLO <aklo@aklolabs.com>",
6
6
  "license": "MIT",