Reference · v0.24.1

API Reference

Generated from the caelus package with TypeDoc. Regenerate with npm run docs:api. The tiers below mark what to build against; the full alphabetical index follows. See Edge Cases & Stability for the versioning contract.

Advanced

Stable but specialized: reach for these when the recommended surface does not cover the case. The Engine already calls most of them for you.

Internal / unstable

The engine's own astronomy machinery: series evaluators, apparent-position builders, and raw constants. Exported for inspection and tests; not a stable contract. Prefer the Engine over calling these directly.

The Engine

Construct one Engine from a data pack, then call these methods, the surface most code uses. Every method links straight to its signature and parameters.

Charts
chart()Full chart from calendar fields in UT (year, month, day, hour, minute, second).
chartAt()The same chart straight from a Julian Day (UT), no calendar round-trip.
Positions
position()Full Position at a JD: lon, speed, retrograde, sign, lat, distance, ra/dec.
longitude()Apparent geocentric ecliptic longitude (deg) at a JD.
heliocentric()Geometric heliocentric ecliptic (lon, lat, distance in AU).
ecliptic()Raw apparent [lon, lat, dist] building block; most callers want position().
Fixed stars & introspection
fixedStar()Apparent place of a catalog star: lon/lat/ra/dec, sign, magnitude.
starNames()Names in the loaded fixed-star catalog.
starConjunctions()A chart's bodies within orb of catalog stars; feeds star fact atoms.
lots()The seven Hermetic lots placed by sign and house; feeds lot fact atoms.
bodies()Body ids this engine can compute, given its data.
registerSource()Register a runtime heliocentric xyz source under any body id.
registerRender()Author SkyView appearance (size, magnitude, colour) for a registered body.
renderFor()SkyView render attrs for a registered body, if any.
Synthetic ephemeris
syntheticPositions()World-frame positions for every body in an authored system at one instant.
syntheticEphemeris()Reusable position source with speed, retrograde, and validation diagnosis.
registerSyntheticSystem()Drop authored bodies onto an Engine for returns, transits, SkyView.
validateSyntheticSystem()Flag ill-defined synthetic systems (impossible / problems).

Full index

caelus

Classes

ClassDescription
ChebSeries-
Engine-
KeplerOrbitConstant-element two-body orbit with the same xyz(jde) interface as ChebSeries, so chironApparent takes either.
TurboRuntime evaluator for a turbo pack — a segmented Chebyshev fit of the engine's apparent longitude over a fixed range and body set. Evaluating a longitude costs a couple dozen multiply-adds, so a century-scale transit scan that calls it tens of thousands of times runs in milliseconds. Construct one from a pack you minted offline; it does no fitting, no I/O, and needs no Engine.

Interfaces

InterfaceDescription
AnchoredChartA chart described by its realm and anchors, not a bare (instant, place).
AnchorRegistryLookups an anchor may need to resolve: prior instants/places for relative anchors, calendar resolvers for narrative times, a gazetteer for named places. All optional; an anchor that needs a missing one resolves to null.
AngleAtom-
AngleChangeAn angle whose sign changed.
AngleLines-
AshtottariActive-
AshtottariPeriod-
AshtottariSub-
AshtottariTimeline-
AspectOne aspect between two bodies in a Chart.
AspectAtom-
AspectMatch-
BitsRemainders-
BodyCapability-
BodyChangeA body whose sign or house changed between two charts.
BodyPositionSourceA pluggable position-over-time source: the same shape every derived computation needs from a body. Returned by syntheticEphemeris.
BodySpanA calendar-year span, inclusive.
BodyStateA body's compiled state: ecliptic longitude and latitude, degrees.
BoundaryFlag-
BriefA chart rendered as citable LLM input.
BriefFactA salience-ranked fact in a Brief.
BriefOptions-
CalcOptionsOptions shared by the single-body calls (Engine.position, Engine.longitude) and by charts.
CanonicalAspect-
CanonicalBody-
CanonicalChart-
CanonicalOptions-
CelestialPoleThe visible celestial pole: the fixed point the whole sky rotates about as time passes (north pole for northern observers, south for southern). Its altitude equals the observer's
ChartA full natal chart, as returned by Engine.chart and Engine.chartAt. Longitudes are degrees in the chart's zodiac.
ChartBodyA Position enriched with chart-relative placement, as returned per body by Engine.chart and Engine.chartAt.
ChartDiffWhat differs between two charts.
ChartLots-
ChartOptionsOptions for Engine.chart and Engine.chartAt, extending CalcOptions.
ChartPatternOne configuration found in a chart.
ChartSignature-
CitationAuditThe result of auditCitations.
ClaimA model-produced statement and the fact ids it claims to rest on.
CompiledForm-
CompileOptions-
CompositeAtom-
CompositePlacementA composite-chart body placement (midpoint method).
ConstellationPackConstellation figure lines and labels; vertices as ecliptic J2000 (lon, lat) degrees. Built by scripts/build-constellations.mjs from d3-celestial.
ContextOptions-
CounterfactualA counterfactual: a base chart and a perturbed variant, with the diff.
CounterfactualEditA perturbation of a resolved chart.
Dasha-
DashaActive-
DashaSub-
DashaTimeline-
DeclinationPair-
DignityAtom-
DignityScoreThe essential-dignity breakdown of a planet at a longitude.
DirectionArcs-
DispositorAtom-
EclipsePathThe umbra/antumbra path of a solar eclipse at one instant.
EngineCapabilities-
EngineData-
EnrichFlags-
EnrichTarget-
EphemerisOptions-
EphemerisPoint-
FeatureOptions-
FindAspectsOptionsOptions for findAspects.
FirdariaPeriod-
FirdariaSub-
GeoPlaceResolved coordinates a chart can be computed at.
GeoPointGeographic point on the Earth's surface (geodetic latitude, east longitude).
HorizonPointOne skyline sample: the obstruction altitude at an azimuth.
InterpretationContextA chart as a flat, ranked list of FactAtoms.
InterpretationSourceA pluggable corpus of rules: a tradition, a house style, a third party.
Kemadruma-
LordPairYoga-
LotAtom-
LunarEclipse-
LunarLocalWhether a lunar eclipse is up at a place, and how high the Moon stands.
MatchThe result of a Selector: did it match, and on which atoms.
MilkyWayThe Milky Way band's appearance in the frame. Visible only in a dark sky (astronomical twilight or night) without a bright Moon or heavy light pollution. The band is the galactic equator; its bright bulge is the galactic center in Sagittarius.
MundaneDirection-
Nakshatra-
NakshatraAtom-
Observer-
OutOfBoundsAtomA body beyond the Sun's maximum declination (the obliquity of the ecliptic, ~23.44 deg) -- "out of bounds".
OverlayLineAn in-frame polyline (the ecliptic, a constellation figure stroke).
OverlayMarkA labeled point projected into the frame (sign, house, constellation name).
ParallelAtomA parallel or contraparallel of declination. Sepharial: parallels are "more correctly speaking, positions, and not aspects" -- two bodies can hold one while unaspected in longitude, which is why this is its own atom kind rather than an aspect variant.
ParanOne co-angular pair: bodies a and b on the named angles at ~the same time.
PatternAtom-
PatternBodyA body's longitude (and house, for stelliums) for detectPatternsIn.
PatternOptions-
Pheno-
PlacementAtom-
PlanetaryHour-
PositionA body's full apparent position, as returned by Engine.position.
PredicateMargin function (true where >= 0) carrying the bodies it depends on.
PrimaryDirection-
ProfectedSign-
Profection-
PromptStyleOne prompt template: the prose framing around the computed facts.
RankedMoment-
RankOptionsastroengine scan -- long-scan ergonomics over the engine: a batched scan with progress, and rankMoments to find the best instants by a score, synchronously or without blocking the event loop.
ReadingA resolved interpretation: ranked entries, each citing its facts.
ReadingEntryOne licensed statement in a Reading, with its provenance.
ReadingGroupEntries about the same facts, gathered.
RealizedChartThe outcome of realize: how (or whether) a chart was produced.
ReceptionAtom-
ReconcileOptions-
RefineRemainders-
RemainderOptions-
RenderLayerOne layer of the hybrid render: what Caelus computes and the pipeline composites locally over the image-model background plate.
RenderPlanA machine-readable render contract for a hybrid pipeline: ask an image model for a body-free background plate, then composite the computed layers (bodies, stars, the Milky Way, overlays) locally at their exact pixels. The image model supplies atmosphere; Caelus supplies the physically correct objects. This is the structured complement to prompt, which is for humans and image models.
ResolvedPlaceThe outcome of resolving a SpatialAnchor.
ResolvedTimeThe outcome of resolving a TemporalAnchor.
RiseSetOptions-
RuleOne interpretation: a condition and the text it licenses.
SalienceWeightsAdditive salience weights. Each contribution is documented at its use site; override any subset through ContextOptions.salience.
ScanOptionsastroengine scan -- long-scan ergonomics over the engine: a batched scan with progress, and rankMoments to find the best instants by a score, synchronously or without blocking the event loop.
SearchConfigOptions-
SignatureAtom-
SignatureBodyA body's longitude (and house) for chartSignatureOf.
SignatureOptions-
SkyAim-
SkyBody-
SkyBrightnessCtxSun and Moon state feeding skyBrightness.
SkyLensA resolved lens: field of view and projection actually used.
SkyOccludedBodyA body hidden by the observer's obstruction profile: above the astronomical horizon, below the skyline at its azimuth.
SkyOffFrameBody-
SkyPlacementWhere a direction lands on the image plane (see skyPlacer).
SkySummary-
SkyViewOptions-
SkyViewOverlaysProjected reference-frame overlays. Each is null when not requested; arrays hold only the in-frame parts. Pixels match the bodies' coordinate system.
SkyViewOverlaysRequestWhich reference frames to project. The ecliptic, the zodiac signs (its 30 degree divisions), the house cusps and angles, and the constellation figure lines. These are annotations: real reference frames drawn over the sky, not things a camera sees.
SkyViewResult-
SkyViewSequence-
SkyViewSequenceSpec-
SkyViewSpec-
SolarEclipse-
SolarLocalLocal circumstances of a solar eclipse seen from one place.
SourceRegistrarA type guard for the surface registerSyntheticSystem needs, so the synthetic module does not import the heavy Engine class.
StarAtom-
StarEntry-
StarfieldSummaryWhat the star field in bodies represents. A deep field is the complete naked-eye sky to limitingMag, pinned at exact pixels (animation-grade); a named field is the bright catalog, to be fleshed out by the model.
StarPack-
StarParanOne star-to-body paran: a fixed star and a body on angles at ~the same time.
SynastryAspectHitAn inter-chart aspect between person A's body and person B's body.
SynastryAtom-
SynastryOverlays-
SyntheticDiagnosisWhy a system is unsatisfiable, if it is — the impossible/residual honesty pattern, mirroring CompiledForm. A system with problems still computes for the bodies that are individually valid, but flags the rest rather than silently producing garbage.
SyntheticPositionA body's position at one instant, in degrees and system length units.
SyntheticRenderRender attributes for a synthetic body — how an imaginary body should look in a SkyView frame. The engine owns position; these own appearance, so a body stays visually consistent across skyViewSequence frames.
SyntheticSystemAn authored celestial system: a set of SyntheticBody that move together, an optional observer body that fixes the vantage point, and optional per-body SyntheticRender attributes.
TimelordAtom-
TransitAtom-
TransitHitA transiting body aspecting a natal point.
TurboBody-
TurboPack-
Varga-
VargaAtom-
VoidOfCourse-
WhenOptions-
XyzSourceAnything that yields heliocentric ecliptic-J2000 xyz (AU) at a TT jd: ChebSeries (fitted small bodies) or KeplerOrbit (Uranian bodies).
Yoga-
YogaAtom-
YoginiActive-
YoginiPeriod-
YoginiSub-
YoginiTimeline-
ZrActive-
ZrPeriod-

Type Aliases

Type AliasDescription
AlwaysBodyBodies guaranteed to be in every chart: the analytic Sun–Neptune and the lunar nodes, which resolve across all supported epochs. (Chiron and pack Pluto are Chebyshev-packed and can fall outside their fitted range, so they are not guaranteed.)
AspectPhase-
Ayanamsa-
Body-
BodyIdCore names keep autocomplete; any string id is accepted (data packs).
BodySourceThe position source active for a body in a given engine's data.
CanonicalGridAngular resolution presets. "dms" shares the arcsecond grid but renders angles as [deg, min, sec] triples -- the tradition's own integer form. "accuracy" snaps each body to its measured validated accuracy.
CanonicalRemainders-
CertaintyHow trustworthy a resolved instant/place is for computation.
ChartBodiesA chart's bodies, keyed by id. The analytic core (AlwaysBody) is always present and needs no presence check. PackedBody bodies (Chiron) and any opt-in extras requested via ChartOptions.bodies may be absent when the instant is outside their fitted range (see Chart.unavailable), so those accesses are typed `ChartBody
ChartWarningOne validity statement on a Chart (see Chart.warnings).
ChebData-
Constraint-
DeclinationKind-
Element-
EphemerisValue-
FactAtom-
FactKindAtom kinds in an InterpretationContext.
HermeticLot-
HouseSystem-
Interval-
KeplerElements-
KeplerPack-
LensSpec-
Modality-
MoonSeries-
PackedBodyDefault chart bodies that can be Chebyshev-packed, so they can fall outside a pack's fitted range (and be omitted from a chart). Chiron is always packed; Pluto is packed when the wide-range pack is loaded (the Meeus fallback otherwise always resolves, but the type must cover the packed engine, where an out-of-range Pluto lands in Chart.unavailable). Opt-in asteroids are packed too, but arrive as arbitrary ids through the string index.
PhaseName-
PositionsLoss-function input: bare longitudes (latitude 0) or full states.
RealmWhat a chart's subject is -- its epistemic / ontological status.
RemainderGridGrids that can serve as refinement targets. A remainder grid must be strictly finer than the base grid.
RiseKind-
Sect-
SelectorTests a whole InterpretationContext and reports the matching atoms.
SkyProjection-
SolarPhase-
SpatialAnchorHow a chart's place is known -- the spatial twin of TemporalAnchor.
SyntheticBodyA single authored body. Its id is how every consumer (charts, transits, SkyView) refers to it.
TemporalAnchorHow a chart's time is known.
TwilightStage-
Vec3-
VsopSeries-
Zodiac-

Variables

VariableDescription
ACCURACY_QUANTUM_ARCSECPer-body accuracy quantum in arcseconds for the "accuracy" grid, mirroring the measured bounds in accuracy.json rounded up to a whole arcsecond quantum (Sun-Saturn <=1", Uranus <=1.9", Neptune <=4.6", Moon <=2.5", Pluto <=3.4" on the pack, true node <=1', true Lilith <=3', Uranians <=2.3", intp_apog degree-scale vs SE by construction). A body not named quantizes at the default 1".
ANALYTIC_BODIESAnalytic points with no stated range bound (docs/range-expansion.md).
ARCSEC-
ASHTOTTARI_ORDER-
ASHTOTTARI_YEARS-
ASPECTS-
AYANAMSA_J2000Mean ayanamsa at J2000.0 (degrees) per mode. Standard epoch anchors (matched to Swiss Ephemeris 2.10 to 1e-9 deg); propagation uses Vondrak 2011 ecliptic precession, the same model Swiss Ephemeris uses: agreement over 1900-2099 is <=0.005 arcsec.
BODIES-
BODY_LAT_BOUNDS-
BRIEF_INSTRUCTIONSDefault instruction header prepended to Brief.prompt.
CAZIMI_DEG-
COMBUST_DEG-
DASHA_YEAR-
DEFAULT_BODIES-
DEFAULT_LAT_BOUNDGenerous per-body latitude envelopes (deg) for the solver's search bounds: roughly the maximum geocentric ecliptic latitude each real body reaches. Bounds, not assertions -- anything not named gets DEFAULT_LAT_BOUND, and latBounds overrides per body.
DEFAULT_ORBS-
DEFAULT_PARAN_BODIES-
DEFAULT_SALIENCE-
DEGastroengine core -- clean-room ephemeris engine (TypeScript port).
DHANA_HOUSES-
DIAMETER_KMEquatorial diameters, km (IAU values, as used by Swiss Ephemeris).
DIGNITY_WEIGHTS-
DOMICILE-
DRISHTIGraha drishti: the house-distances (1-based) each planet aspects.
EARTH_RADIUS_AU-
ELEMENTS-
EXALTATION-
EXTRA_BODIESComputable on request (not in the default chart set).
FACE_CYCLEFaces (decans): Chaldean order from Mars at 0 Aries; floor(lon/10) selects.
FIRDARIA_ORDERThe firdaria cycle of the seven planets.
FIRDARIA_YEARSPeriod length in years for each of the seven planets.
HEADLINEThe measured headline band. The label is registry-pinned to accuracy.json. 1000-3000: every body is packed across the span and measures sub-arcsecond on the frame-free basis (range-expansion.md Tier C); the ~3.3" uniform apparent floor is the IAU76/80-vs-Vondrak2011 frame term, not position error. The small bodies are fitted 1600-2484 (Horizons serves them only ~1600-2500) and report that narrower span via engineCapabilities.
HEADLINE_LABEL-
HERMETIC_LOTSThe seven Hermetic lots, in their conventional order.
HOUSE_SYSTEMSThe canonical house-system ids, in a stable order (also used for error text).
J2000-
KENDRAS-
KEYSDegrees of arc that equal one year of life, per time key.
LENS_NAMES-
LEVEL_UNITDays per period unit at each level (each a twelfth of the one above).
LIGHT_TIME_AU-
MEASUREDMeasured spans that are narrower or wider than the headline (docs/range-expansion.md's table).
MODALITIES-
NAK_SPAN-
NAKSHATRAS-
NODE_PERIODSThe two nodes close the sequence with no sub-periods (70 + 5 = 75 years).
NOT_ASPECTABLEPoints: excluded from aspect search by default.
OBLIQUITY_J2000_DEGA compiled form has no instant, so declination constraints resolve through a fixed, stated convention: the J2000 mean obliquity, degrees.
PARAN_ANGLES-
PATTERN_ANGLESPattern aspects, including the quincunx the default Ptolemaic set omits.
PATTERN_ORBSDefault orbs: DEFAULT_ORBS for the five Ptolemaic aspects, plus a tight quincunx. Override via PatternOptions.orbs.
PLANETS-
PROMPT_STYLESPer-image-model prompt templates. A style changes only the prompt and render-plan prose; every computed number (pixels, sizes, magnitudes, brightness) is identical across styles. default is the original wording, byte-identical to the pre-template output; photoreal speaks camera and exposure vocabulary for photographic models; illustration asks for a flat-colour scene while keeping the placements binding.
QUERY_ASPECTS-
SIGN_RULERSTraditional (domicile) ruler of each sign, Aries..Pisces.
SIGNS-
TERMS_EGYPTIANEgyptian terms (Ptolemy I.21): per sign, [ruler, upper-degree] segments.
TIME_ANCHORED_REALMSRealms whose charts come from a time + place (the ephemeris path). The rest (archetypal, conceptual, mythic) are better generated from constraints via the compiler, since they have no instant to compute from.
TRADITIONAL-
TRIKONAS-
TRIPLICITYDorothean triplicity rulers by element (sign%4), as [day, night, participating].
TROPICAL_YEAR-
UNDER_BEAMS_DEG-
VARGA_DIVISIONSSupported divisions.
VIMSHOTTARI_ORDERThe Vimshottari order and each lord's period in years (totalling 120).
VIMSHOTTARI_YEARS-
VSOP_BODIES-
YOGA_PLANETS-
YOGINI_LORDS-
YOGINI_YEARSPeriod in years by yogini index (Mangala..Sankata), totalling 36.
YOGINIS-
ZR_PERIODSPeriod length in 360-day years for each sign, Aries..Pisces.

Functions

FunctionDescription
airmassRelative optical air mass at an apparent altitude (Kasten & Young 1989). 1.0 at the zenith, ~38 at the horizon; below the horizon the horizon value is returned (the path length stops growing once the ray grazes).
allOfTrue where every predicate is true (interval intersection).
almutenThe almuten of a degree: the classical planet with the greatest positive essential dignity (rulership + exaltation + triplicity + term + face) at lon. Ties broken by the canonical planet order.
anglesAscendant, MC, ARMC, obliquity. East longitude positive.
angularityangular / succedent / cadent for a 1-based house number.
angularSeparation3dTrue great-circle angle (degrees) between two bodies from their ecliptic longitude and latitude. With both latitudes zero this is the unsigned longitude difference; latitude pulls the two apart in three dimensions.
antiscionReflection across the solstice (Cancer-Capricorn) axis.
anyOfTrue where any predicate is true (interval union).
ashtottariActiveThe maha and antar lord active at targetJd; null before the first period.
ashtottariAtAshtottari dasha active at targetJd, from the natal Moon's nakshatra.
ashtottariDashasThe Ashtottari dasha timeline from the Moon's sidereal longitude.
ashtottariLordThe Ashtottari dasha lord governing a nakshatra index (0-based).
aspectA Predicate that holds while body is within orb degrees of an exact aspect to target. Feed it to when to find the time windows, or compose it with allOf/anyOf.
aspectBetweenThe tightest major aspect between two bodies at jd, within orb, or null. orb is the signed distance from exact (degrees).
aspectPhaseApplying/separating/exact for the aspect (degrees) between body a and body b, from their longitudes and longitude speeds (deg/day). Applying = the orb to the exact aspect is closing.
aspectsSignWhether planet at planetSign casts a graha drishti onto targetSign.
associationTypeHow two planets associate: "conjunction"
astrocartographyAngle lines for each body at jdUt: { body: AngleLines }.
auditCitationsCheck that a model's claims cite only facts that exist in the context -- the accuracy half of "novel and accurate". A claim citing an id not in ctx fabricated its provenance, so ok is false and the id lands in unknown.
ayanamsaMean ayanamsa in degrees. Sidereal longitude = (tropical true-equinox longitude - nutation in longitude) - ayanamsa: the sidereal zodiac is anchored to the mean equinox.
azAltApparent ecliptic position -> azimuth (deg, from true north, east- positive) and true altitude (deg). No refraction.
bodySourceThe heliocentric xyz source for one authored body — the per-body engine behind every tier, and the exact object Engine.registerSource consumes.
canonicalChartProject a Chart into canonical (integer) form on a declared grid. Every continuous quantity quantizes under the single rounding rule; sign, sign-degree, house, dignities, retrograde, and the aspect list are then re-derived from the quantized values in integer arithmetic, so displayed numbers and discrete facts cannot disagree and one-ulp platform drift cannot flip anything.
canonicalChartWithRemaindersCanonical payload plus its remainder set. In "refine" mode (default: one grid finer than the base) each residue is the integer difference between the finer-grid quantization and the base leaf lifted onto the finer grid, so finer = ratio * base + residue exactly and composeRemainders can rebuild the finer payload. Time residues are integer microseconds, distance residues integer nano-AU, always. In "bits" mode each value is the pre-quantization double as big-endian hex (lossless, platform-local, engine-API-only).
canonicalDigestsha256 over the canonical encoding: the content address of any canonical value. Throws (via canonicalEncode) if a float leaked in.
canonicalEncodeCanonical JSON: keys sorted, no whitespace, and ONLY integers, strings, booleans, null, arrays, and plain objects. Any non-integer number throws -- that is the enforcement making a canonical digest trustworthy: it proves every quantity in the payload was quantized.
canonicalTimeMsInteger milliseconds since the J2000.0 epoch (JD 2451545.0 UT). The double ulp of a modern Julian Day is ~40 microseconds, well inside the millisecond grid.
canonicalTimesMsQuantize a list of event instants (Julian Days, UT) to integer milliseconds since J2000 -- nulls pass through (a polar sun that never sets stays null).
chartBriefRender an InterpretationContext as a compact, id-tagged Brief for an LLM to interpret and cite.
chartDiffDiff two charts: body sign/house shifts, aspects gained/lost, angle sign changes. Bodies and angles that did not change sign/house are omitted.
chartDigestContent address of a chart: sha256 over the canonical encoding of canonicalChart. Equal digests mean equal charts at the grid's resolution -- across machines, browsers, and languages.
chartFeaturesEncode the sky at an instant as a feature vector: each body's ecliptic longitude becomes a weighted unit-circle point. The deterministic substrate for matching and searching chart configurations — compare two with cosineSimilarity, or rank a time range against one with searchConfigurations.
chartSignatureThe structural signature of a Chart: element / modality / angularity / quadrant / hemisphere distributions over its bodies, the dominant element, modality, and most-occupied sign, and the classical chart ruler. Counts only, no interpretation. Bodies absent from the chart (outside their fitted range) are skipped.
chartSignatureOfStructural counts for a body map. Lower-level form of chartSignature: bodies maps a body id to { lon, house? }.
chironApparent-
compileFormSynthesize a chart form from geometric constraints — the inverse of (time, place) → chart. Given weighted Constraints (aspects, sign placements, exact degrees, declinations, parallels, true 3D separations), find the body positions that best satisfy them via deterministic coordinate descent over (longitude, latitude), and report how well they can be met. When even the best fit is poor, the form is flagged impossible — a valid, informative result.
composeRemaindersRebuild the finer-grid canonical payload from a base payload and its refinement remainder set: every frontier leaf is reconstructed as ratio * base + residue (modular for angles), then sign, house, dignities, retrograde, and the aspect list are re-derived in integer arithmetic exactly as canonicalChart would at that grid. Pass the same orbs/aspects/separation options the base was built with.
compositeLongitudesMidpoint-method composite: the shorter-arc midpoint of each body's two longitudes. Angles compose the same way via midpointLon on the two ASC/MC.
compositePlacementsMidpoint-composite placements for bodies from two birth instants.
configurationFitSimilarity between the sky at jdUt and a target feature vector — shorthand for cosineSimilarity(chartFeatures(engine, jdUt, opts), target). The scoring function searchConfigurations maximizes.
constraintLossDegrees by which a single Constraint is unmet for a set of body positions — 0 when satisfied. The pure building block of formLoss and compileForm.
contraAntiscionReflection across the equinox (Aries-Libra) axis.
cosineSimilarityCosine similarity of two feature vectors, in [-1, 1]. For vectors from chartFeatures this is a weighted mean of cos(Δlongitude) per body: 1 when the configurations coincide, falling off as bodies diverge.
counterfactualRealize an AnchoredChart, then apply a CounterfactualEdit and diff the result -- "a real event, perturbed." A time/place edit recomputes the ephemeris; a setLongitudes edit splices the geometry.
crossingsUT JDs where the body's apparent longitude crosses targetLon (degrees) in [jdStart, jdEnd]. Retrograde bodies can cross a degree three times; every crossing is returned in time order.
davisonParamsTime and place for a Davison relationship chart: the temporal midpoint and the geographic midpoint (mean latitude, shorter-arc mean longitude). Compute a normal chart at these to get the Davison chart. Returns [jd, lat, lonEast].
declinationAspectClassify two declinations: parallel (same), contraparallel (opposite), null.
declinationAspectsParallels and contraparallels among a set of bodies at an instant: pairs whose declinations are equal (parallel) or equal and opposite (contraparallel) within orb — the declination analogue of conjunction and opposition.
declinationOfDeclination (deg) of an ecliptic (lon, lat) under a fixed obliquity.
deltaTΔT (TT − UT1) in seconds at a given instant — the gap between Terrestrial Time and universal time. Observed IERS values 1955–2025, Espenak–Meeus polynomials before, and a gentle extrapolation after (Earth's rotation sped up post-2016). The engine applies this for you; call it directly only for timescale work.
deltaTSigmaOne-sigma uncertainty of delta T (TT - UT1) in seconds at a calendar year.
detectPatternsThe aspect configurations present in a Chart: T-squares, grand trines, grand crosses, yods, kites, mystic rectangles, and stelliums by sign and by house. Bodies outside their fitted range (absent from the chart) are skipped.
detectPatternsInThe configurations present among a body map. Lower-level form of detectPatterns: bodies maps a body id to { lon, house? }.
detectYogasThe placement yogas present in a chart. signs maps each of the seven classical planets to its 0-based sign index; ascSign is the Ascendant's sign index.
dhanaYogasDhana yogas: associations between two wealth-house (2/5/9/11) lords.
dhanaYogasAtDhana yogas of a natal chart.
dignitiesEssential dignities a body holds in a sign: any of "domicile", "exaltation", "detriment", "fall" (the last two are the signs opposite domicile and exaltation). Empty when the body is peregrine there or has no classical rulership (the outer planets, Chiron, the nodes).
dignityOf-
dignityScoreThe weighted essential dignities of planet at ecliptic longitude lon (degrees) in a day or night chart. Only the seven classical planets score.
directedLongitude-
directionArcsDirect primary-direction arcs (degrees, [0, 360)) of a body at right ascension alpha and declination delta to the four angles, for latitude phi and right ascension of the MC ramc. asc/dsc are null when the body is circumpolar.
directionYearsYears of life corresponding to an arc of direction under a time key.
doubleBitsHexIEEE 754 binary64 bit pattern of a double, big-endian, 16 hex chars.
doubleFromBitsHexInverse of doubleBitsHex -- exact round-trip, -0 included.
earthHeliocentricHeliocentric Earth of date, preferring data.earthPack over VSOP87D.
elementTriplicity (element) of a sign: "fire", "earth", "air", or "water".
engineCapabilitiesWhat this engine can compute, over what span, from which source -- derived from the loaded EngineData plus the measured-range table. Use it to distinguish tiers at runtime (browser embedded vs Node with packs) instead of assuming the headline applies to every body.
enrichContextOptionsBuild ContextOptions extras for a natal chart evaluated at target. Merge the result into interpretationContext(chart, { ...base, ...extras }).
enrichSynastryOptionsSynastry and composite atoms for two natal charts (A is the projection base).
ephemerisSample value for each body across [start, end], returning per-body series in time order.
equationOfTimeApparent minus mean solar time, minutes (Meeus ch. 28).
equatorialEcliptic lon/lat -> right ascension, declination (all radians).
extinctionMagAtmospheric extinction in magnitudes at an apparent altitude: k mag per air mass (default 0.2, a clear-sky visual coefficient; hazy sites run 0.3+). This is the dimming the horizon note describes -- computed, so a render pipeline consumes a number instead of re-inventing the physics.
faceRuler-
featureVectorBuild a feature vector from explicit (longitude, weight) pairs: each pair contributes a weighted unit-circle point [w·cos(lon), w·sin(lon)]. The low-level primitive behind chartFeatures; most callers want that.
findAspects-
firdariaThe full firdaria timeline from birth.
firdariaActiveThe major and sub firdar lord active at targetJd; both null outside the 75-year span.
firdariaAtThe active firdar at targetJd, taking the chart's sect from the natal moment and place.
firdariaSequenceThe nine major firdaria periods in order, as [lord, years] pairs.
fmtLon-
formLossTotal weighted loss for a set of body positions — the sum of each constraint's constraintLoss times its weight. The objective compileForm minimizes.
gastGreenwich apparent sidereal time.
gauquelinSectorThe Gauquelin sector of a body (1–36, fractional) from the rise/set times of the disc centre with refraction (Swiss Ephemeris method 3). Sectors run from rise: 1–18 above the horizon, 19–36 below.
gmstGreenwich mean sidereal time, radians (IAU 1982 / Meeus 12.4).
harmonicChartThe nth-harmonic chart: each body's longitude multiplied by n and wrapped to [0, 360). The 5th harmonic surfaces quintiles, the 9th the navamsa, and so on.
harmonicLongitudeThe nth-harmonic longitude of a point: lon * n, wrapped to 360.
hasAngleMatches an angle atom by which angle and/or its sign.
hasAspectMatches aspect atoms. between is an unordered pair; minStrength filters loose aspects; phase filters applying/separating.
hasCompositeMatches a composite midpoint placement.
hasDignityFineMatches finer essential-dignity facts (term, face, triplicity, almuten).
hasDispositorMatches dispositor atoms by body, its dispositor, and/or the final flag (a body in its own domicile that terminates a dispositor chain).
hasLotMatches a Hermetic lot by name, and/or its sign or house.
hasNakshatraMatches a nakshatra placement, optionally down to the pada (quarter).
hasOutOfBoundsMatches an out-of-bounds body (declination beyond the obliquity).
hasParallelMatches a parallel or contraparallel of declination. between is an unordered pair; body matches either member; declination narrows to "parallel" or "contraparallel".
hasPatternMatches configuration atoms by kind and/or a participating body.
hasPlacementMatches placement atoms by any subset of body / sign / house / retrograde / a held dignity.
hasReceptionMatches a mutual reception, optionally involving a given body and/or the dignity it runs through (by: "domicile", "exaltation", "triplicity", or a sorted mixed pair like "domicile-exaltation").
hasSignatureMatches a structural-signature facet, e.g. ("element", "fire").
hasStarMatches a fixed-star conjunction by the catalog star and/or the body on it.
hasSynastryMatches synastry aspect or house-overlay atoms.
hasTimelordMatches an active time-lord period, optionally by the period's sign (profection sign, ZR sign) where the system carries one.
hasTransitMatches transit-to-natal aspect atoms.
hasVargaMatches a varga (divisional chart) placement.
hasYogaMatches a classical yoga.
hermeticLotsThe seven Hermetic lots from the Ascendant, sect, and the seven planets' longitudes (degrees). Pure arithmetic.
horizonAltAtSkyline altitude at an azimuth from an observer obstruction profile: piecewise-linear interpolation on the circle. The profile need not be sorted; azimuths are normalized to [0, 360) and the interpolation wraps across 360/0. An empty profile is the astronomical horizon (0 deg).
houseCuspEcliptic longitude where the house circle with pole pole crosses the ecliptic; ra measured like ARMC. The Ascendant is houseCusp(armc+90, phi); the MC is houseCusp(armc, 0).
houseFromAscThe whole-sign house (1-12) a sign falls in from the Ascendant.
houseLordThe lord of the given whole-sign house from the Ascendant.
houseOf1-based house number for an ecliptic longitude (degrees) given the twelve cusps (degrees), wrapping across 0.
housesAlcabitiusAlcabitius: trisect the Ascendant degree's semi-arcs in right ascension; project cusps along meridians.
housesCampanusCampanus: equal divisions of the prime vertical. House circles run through the horizon's north/south points; cusps are their ecliptic crossings, assigned in zodiacal order MC->ASC->IC.
housesEqual-
houseSignThe sign on the given whole-sign house (1-12) from the Ascendant.
housesKochKoch (birthplace): cusps are ascendants at ARMC +/- k/3 of the MC degree's diurnal semi-arc. Throws where the MC degree is circumpolar (
housesMeridianMeridian (axial rotation): equal RA divisions projected along hour circles. Latitude-independent.
housesMorinusMorinus: equal RA divisions projected onto the ecliptic by great circles through the ecliptic poles. Latitude-independent.
housesPlacidusPlacidus house cusps via the classic iterative semi-arc scheme: for all four intermediate cusps RA = ARMC + offset + f·AD with AD = asin(tan φ · tan δ); offsets 30/60/120/150, f = 1/3, 2/3, 2/3, 1/3. Undefined above the polar circles, as Placidus itself is.
housesPolichPagePolich-Page ('topocentric'): cusp poles tan P = (k/3) tan(phi).
housesPorphyry-
housesRegiomontanusRegiomontanus: equal divisions of the celestial equator; cusp poles tan P = tan(phi) sin(H).
housesVehlowVehlow: equal houses with the ASC at the middle of house 1.
housesWholeSign-
inSect-
inSignTrue while body is in sign (index 0=Aries..11=Pisces, or name).
interpretRun interpretation sources against a fact projection and return a ranked Reading. Each rule whose selector matches emits an entry carrying the matched atom ids (provenance) and a salience = sum of those atoms' salience x the rule weight. The engine never ships the content: the sources are the caller's.
interpretationContextProject a Chart into a ranked list of FactAtoms -- the substrate an interpretation layer consumes. Pure and deterministic; computes applying/separating and a normalized strength for each aspect that the bare Chart.aspects list omits.
isDayChartDiurnal when the Sun is above the horizon at the given place.
isoToJdISO-8601 timestamp -> UT Julian Day, or null when unparseable.
isTimeAnchoredWhether a realm is normally grounded in an instant (ephemeris) rather than synthesized from symbolic constraints.
jdTT-
jdYearApproximate calendar year for a Julian Day (for reporting spans).
julianDayConvert a UT calendar date and time to a Julian Day (UT) — the time coordinate the engine consumes. Pass the result to Engine.position, Engine.longitude, Engine.chartAt, and the event/derived functions; Engine.chart takes the calendar fields directly instead.
kemadrumaKemadruma yoga: the Moon is isolated -- no planet in the 2nd or 12th sign from it, nor conjunct it. The planet set is parameterized (texts vary): the default is the five tara grahas, includeSun adds the Sun, includeNodes adds Rahu/Ketu when present in signs.
kemadrumaAtKemadruma yoga of a natal chart, from the sidereal rasi positions.
limitingMagEffective naked-eye limiting magnitude: the more restrictive of the twilight-brightness ceiling and the site's dark-sky limit, then reduced when a bright Moon is up. With no Bortle class, the dark-site limit defaults to 6.0 (suburban), matching the original behavior.
lotFortuneLot of Fortune: Asc + Moon - Sun by day, Asc + Sun - Moon by night.
lotsThe seven Hermetic lots of a chart: compute the Ascendant and sect, then the lots from the seven planets' longitudes.
lotSpiritLot of Spirit (the reverse of Fortune): Asc + Sun - Moon by day.
lunarEclipseLocalLocal visibility of a lunar eclipse: a lunar eclipse happens at the same instant for the whole Earth, so "local circumstances" is simply whether the Moon is up. Pass a contact time (e.g. LunarEclipse.tMax or a phase boundary) to learn whether that phase is visible from a place.
lunarEclipsesLunar eclipses in [jdStart, jdEnd] (UT JDs).
lunarPhasesEvery principal lunar phase (new, first quarter, full, last quarter) within [jdStart, jdEnd], sorted by time. Found from the Sun–Moon elongation crossing 0°/90°/180°/270°.
lunarReturn-
matchAllMatches only when every selector matches; returns the union of their atoms.
matchAnyMatches when any selector matches; returns the atoms from those that did.
matchNoneMatches when the selector does NOT match (an absence test); no atoms.
meanLilithMean lunar apogee (Black Moon Lilith) on the inclined lunar orbit: apparent lon (true equinox) and orbital latitude, radians.
meanNode-
meanObliquity-
midpointLonShorter-arc midpoint of two longitudes (degrees).
modPython-style modulo: result has the sign of the divisor.
modalityQuadruplicity (modality) of a sign: "cardinal", "fixed", or "mutable".
moonApparentPrecise-
moonApparentSeries-
moonGeometricGeocentric Moon, mean equinox of date (Meeus ch.47): lon, lat, dist km.
mundaneDirectionArcPlacidus semi-arc mundane directional arc (degrees) for promissor P to significator S: arc = MD_p - (MD_s / SA_s) * SA_p. null if either body is circumpolar. Reduces to the to-MC arc when S is on the meridian, and to 0 when P and S coincide.
mundaneDirectionsDirect mundane (Placidus semi-arc) directions of each promissor to each other significator within maxYears, sorted by years.
nakshatraThe nakshatra of a sidereal longitude.
nakshatraAtThe nakshatra of a body (default the Moon) at jd, in a sidereal zodiac.
nearBoundaryFragility report from a refinement remainder set: frontier leaves whose value landed close to a base-grid rounding boundary, i.e. the places where sub-quantum drift on another platform could flip the quantized leaf (and with it a sign, a house, or an aspect at its orb limit -- which is exactly a digest change). Pure integer arithmetic; needs only the sidecar.
normalizeHouseSystemResolve a forgiving house-system string (any case, spaces or hyphens, or a known alias) to a canonical HouseSystem, or throw listing the valid ids. Lets MCP, share links, and hand-written calls pass "whole sign", "Whole_Sign", "whole", etc. without tripping the strict union.
notOfTrue where pred is false (interval complement).
notRetrogradeTrue while body is direct or stationary.
nutationIAU 1980 nutation: [dPsi, dEps] in radians.
oscApogeePreciseOsculating lunar apogee (True Lilith) from the Chebyshev moon.
oscApogeeSeriesSeries fallback outside the Chebyshev range (same finite-difference state as the true-node fallback).
outOfBounds-
outOfBoundsMargin
packSpanA pack's fitted span in calendar years (jd0 + segments * seg_days).
paransCo-angular pairs over the 24 hours from jd (UT) at latitude lat: every pair of different bodies whose angle crossings fall within toleranceMin minutes. Ordered by (a, b, jd), with a < b by name.
parivartanaSign exchange: a sits in b's sign and b sits in a's sign.
parseOffsetParse a duration offset into days. Accepts a compact single unit ("3d", "-2h", "1.5y", "6mo", "90m") or an ISO-8601 duration ("P1Y2M10DT2H30M"). Calendar units use mean lengths (year 365.2425 d, month 30.436875 d). Returns NaN when unparseable.
phenoPhotometric and apparent-geometry quantities for a body at an instant: its phase angle, illuminated fraction, elongation from the Sun, apparent disc diameter, and apparent visual magnitude.
planetApparentApparent geocentric ecliptic lon/lat (true equinox of date), distance.
planetaryHourThe planetary hour containing jdUt at a place, or null at latitudes where the Sun does not rise or set on the day in question.
planetarySectThe sect a body belongs to: "diurnal" (Sun, Jupiter, Saturn), "nocturnal" (Moon, Venus, Mars), or null for Mercury and bodies without a fixed sect. Whether a chart is itself day or night — the Sun above or below the horizon — is a separate question.
planetLinesAngle lines for one body at right ascension/declination (degrees) and a Greenwich apparent sidereal time (degrees).
plutoApparent-
plutoHeliocentricMeeus ch.37 heliocentric Pluto, ecliptic J2000: [l rad, b rad, r AU].
precessEclipticPrecession of ecliptic coordinates between epochs (Vondrak 2011): ecliptic-of-from -> J2000 equatorial -> ecliptic-of-to.
primaryDirectionsDirect primary directions of the bodies to the four angles within maxYears, by the given time key, sorted by years.
profectedSignThe whole-sign profection steps signs after the Ascendant sign.
profectionAnnual and monthly profection at targetJd for a natal Ascendant sign.
profectionAtProfection from a natal chart: take the Ascendant sign from the natal chart, then profect to targetJd.
progressedJdThe JD whose real positions are the secondary-progressed positions for the age (targetJd - natalJd): one day of motion per year of life.
progressedLongitudeSecondary-progressed longitude of a body for a given target date: the "day-for-a-year" method, where one day of real motion after birth maps to one year of life. Equivalent to taking the body's longitude at progressedJd.
quadrant1-based quadrant (I–IV) of a 1-based house number: houses 1–3 -> 1, etc.
quantizeUnitQuantize a value to integer units of 1/scale (e.g. scale 3600 turns degrees into arcseconds). The single rounding rule of canonical mode.
rajaYogasRaja yogas: associations between a kendra lord and a trikona lord.
rajaYogasAtRaja yogas of a natal chart, with the chart's yogakarakas.
rankMomentsScore every sampled instant and return the best, highest score first.
rankMomentsAsyncrankMoments that yields to the event loop every chunk samples, so a long main-thread scan does not freeze the UI. Same result as rankMoments.
realizeRealize an AnchoredChart: resolve its anchors and run the appropriate generator. A resolvable instant always wins (the realm is then just framing); failing that, constraints synthesize a form; failing both, nothing computes.
realmFramingA one-line framing for the realm and certainty, or "" when neither needs it.
reconcileGroup a Reading's entries by the facts they share, so statements about the same atoms surface together rather than scattered through a flat list -- the substrate for "everything said about this placement" and for spotting contention. Entries are connected when their cited atoms overlap; an entry citing nothing (an absence rule) stands alone. A group is contested when a declared conflicting tag-pair both appear in it.
refractApparentToTrueBennett refraction, degrees.
refractTrueToApparentSaemundsson refraction, degrees. Returns the input unchanged when even the refracted altitude stays below the horizon (matches Swiss Ephemeris).
registerSyntheticSystemRegister a system's bodies on a real Engine so transits, returns, retrograde detection, skyView, relational — every computation built on Engine.position/Engine.longitude — consume them unchanged. The bodies are placed heliocentrically in the real solar system and viewed from real Earth, so the synthetic observer is not applied here (use syntheticPositions for the self-contained world frame). Each body's epoch is then interpreted as a TT Julian Day.
resolveLens-
resolvePlaceResolve a SpatialAnchor to coordinates, using registry for relative references and the gazetteer for named places. place is null when no coordinates can be derived (fictional, none, an unknown reference).
resolveTimeResolve a TemporalAnchor to a usable instant, using registry for relative references and narrative calendars. The result always reports its Certainty; jd is null exactly when no instant can be derived (symbolic, none, an unknown reference, or an unmappable calendar).
retrogradeTrue while body is in apparent retrograde motion.
returnsUT JDs in [jdStart, jdEnd] when body returns to its natal longitude. Outer-planet returns can show three crossings around a retrograde loop.
riseSetThe next rise, set, or meridian transit of a body after jdStart, as a Julian Day (UT). Accounts for the body's apparent radius, atmospheric refraction, and observer altitude.
roundHalfUpRound half toward +infinity, guarded against the IEEE edge where x + 0.5 itself rounds across the half (mirrors Python _js_round).
sampleCountNumber of samples a scan of these options visits.
scanEvaluate fn at each sampled instant in [start, end], returning the results in time order.
searchConfigurationsRank the instants in [start, end] by how closely the sky resembles a target feature vector, best first — a realization search over the feature space. Build target with chartFeatures (e.g. from a natal chart).
separationUnsigned angular separation in [0, 180] degrees.
sha256HexSHA-256 hex digest of a UTF-8 string.
signedElongationSigned shortest angle from b to a, in (-180, 180] degrees.
signLordThe traditional ruler of a sign index (0 = Aries).
signRulerTraditional (domicile) ruler of a sign index (0 = Aries).
skyBrightnessApproximate V-band sky surface brightness (mag/arcsec^2) of the sky at a direction: a render cue for the sky gradient, not precision photometry. Composes, in linear flux space, (a) the site's moonless zenith sky by Bortle class (BORTLE_ZENITH_MAG), brightened toward the horizon by the airglow term (AIRGLOW_HORIZON_MAG, scaled by the Kasten & Young airmass excess); (b) twilight from the Sun's altitude (TWILIGHT_RAMP, treated as direction-independent -- the azimuthal afterglow gradient stays a prose cue via brightestAzimuth); and (c) a Krisciunas & Schaefer-inspired moonlight term (PASP 103, 1033, 1991): scattered moonlight falling off ~0.04 mag per degree of angular distance from the Moon (their 10^(-rho/40) scattering wing, softened toward the measured large-angle brightening), scaling linearly with illuminated fraction and dimmed by the extra airmass along the Moon's own path. The anchors reproduce the model's full-Moon predictions at a dark site: sky ~17.5 near the Moon, ~1.5 mag of brightening 90 deg away. Typical checks: Bortle 1 night zenith 21.9, its horizon 21.5, clear daytime ~4.0.
skyPlacerThe projection at SkyView's heart as a standalone, pinnable function: build the camera basis for an aim, and return the placer mapping an (azimuth, true-altitude) direction to the image plane under the lens's projection (rectilinear or fisheye), with optional atmospheric refraction. skyView composes this internally; the golden suite pins it directly against the Python reference (astroengine.skyview.place).
skyViewProject the visible sky into an image frame for a place, instant, aim, and lens. Returns each in-frame body's pixel position, apparent size, brightness, and (for the Moon) phase orientation, a sky-state summary, the bright bodies just outside the frame, and a serialized prompt.
skyViewSequenceA time sequence of skyView frames for the same place, aim, and lens: the keyframes for an accurate night-sky animation. Each frame is a complete, physically exact spec; across frames the sky rotates about the pole, the Moon drifts and changes phase, twilight evolves, and the Milky Way wheels. The geometry is continuous, so the frames are temporally coherent; supplying them as control images (or reprojecting one rendered plate by the per-frame rotation) is how to keep the rendered output coherent too.
solarArcSolar-arc direction angle (degrees, forward): how far the secondary- progressed Sun has moved from the natal Sun. Add it to any natal longitude.
solarEclipseLimitsGround path of a solar eclipse at a Julian Day (UT): the central point and the north/south limits of totality (or annularity), with the path width. Marches perpendicular to the shadow's ground track out to the umbra edge -- where the Moon just fully covers (or is covered by) the Sun. Sample across the eclipse to trace the full path of totality.
solarEclipseLocalLocal circumstances of a solar eclipse as seen from one place: contact times, magnitude, and obscuration. Topocentric Sun and Moon disks, so it accounts for lunar parallax (which is what makes the same eclipse total in one town and partial in the next).
solarEclipsesSolar eclipses in [jdStart, jdEnd], with global circumstances (not local visibility). Each new Moon in the window is tested for an eclipse and, when found, classified by the Moon's shadow geometry.
solarEclipseWhereSub-shadow geographic point where the eclipse axis meets the Earth at a Julian Day (UT): the centre line of totality/annularity at that instant. Sample it across the eclipse (e.g. between the SolarEclipse begin and end) to draw the ground track.
solarElongationEcliptic-longitude separation between a body and the Sun (degrees).
solarPhasecazimi / combust / under_beams / null for a body's nearness to the Sun by ecliptic longitude. The Sun itself returns null.
solarReturnSolar-return instants in [jdStart, jdEnd]: the times the Sun returns to its natal longitude (about once a year). Build a chart at each with Engine.chartAt for the solar-return chart.
starAngleTimesThe four angle crossings of a fixed star over the day from jd at latitude lat: the meridian transits always occur; rise/set are absent when the star is circumpolar or never rises.
starApparentApparent ecliptic [lon, lat] of date (rad) for a catalog entry.
starParansStar-to-body parans over the day from jd (UT) at latitude lat: a fixed star and a moving body simultaneously on angles within toleranceMin minutes — Brady's fixed-star parans. Ordered by (star, body, jd).
startingYogini0-based starting yogini index from the Moon's nakshatra index (0-based): (nakshatra number + 3) mod 8, a remainder of 0 mapping to the 8th.
stationsTimes the body stations (speed crosses zero): [jdUt, direction the body turns]. Sun and Moon never station. Station timing is ill-conditioned: expect minute-level differences between ephemerides.
sunApparent-
synastryAspectsInter-chart aspects between two natal charts (static snapshot; both speeds 0).
synastryOverlaysHouse overlays both ways between two charts.
syntheticEphemerisA BodyPositionSource over an authored system: the world-frame view as a reusable object, with longitude speed and a retrograde flag so it satisfies the same contract real ephemeris bodies do. Carries the system's validateSyntheticSystem diagnosis (impossible/problems) — the honesty pattern — and still serves the bodies that are individually valid.
syntheticPositionsPositions of every body at one instant — the core position-over-time contract. Pure: a function of (sys, t) only.
syntheticRenderThe SyntheticRender attributes for a body id, or undefined when none were authored. The accessor SkyView/skyViewSequence reads so an imaginary body keeps a consistent size, brightness and colour across frames — the engine owns position, this owns appearance.
syntheticSourcesBuild the heliocentric XyzSource for every body in a system, keyed by id — the raw material for both the world-frame contract and engine registration.
termRuler-
topocentricEclDiurnal parallax in ecliptic coordinates (Meeus ch. 11/40). lst = local apparent sidereal time (rad). Returns [lon, lat, distAu].
transitAspectsTransiting bodies aspecting a natal chart at transitJd. Natal longitudes are fixed; phase reflects the transiting body's motion toward the natal point.
trueNodePrecise-
trueNodeSeriesOsculating node from the series moon (fallback outside Chebyshev range).
trueObliquity-
twilightStage-
unitVectorUnit vector on the sphere for an (ecliptic longitude, latitude) pair, in the ecliptic frame: x toward 0 Aries, z toward the north ecliptic pole.
validatedSpanForThe measured validated span for a body under the given engine data, or null for analytic points with no stated bound and unknown (synthetic) bodies. Packed bodies report the headline: outside their fitted span they are not computed at all (they land in Chart.unavailable), so the validated question only arises inside it.
validateSyntheticSystemCheck an authored system for the ways it can be ill-defined — duplicate ids, a dangling observer, non-positive periods, or out-of-range eccentricity — and report each, in the impossible/residual honesty style. Pure.
vargaThe varga D-n placement of a sidereal longitude.
vargaAtThe varga D-n of a body (default the Moon) at jd, in a sidereal zodiac.
vargaChartThe full divisional chart D-n at jd: the varga sign of each body.
vertexEastPointVertex (western crossing of prime vertical and ecliptic) and east point (equatorial ascendant). Radians in, radians out.
vimshottariActiveThe mahadasha, antardasha, and pratyantardasha lords active at targetJd.
vimshottariAtVimshottari dasha active at targetJd, from the natal Moon's nakshatra.
vimshottariDashasThe Vimshottari dasha timeline from the Moon's sidereal longitude.
voidOfCourseVoid-of-course state of the Moon at jdUt: void from its last perfecting aspect to a traditional planet (Sun..Saturn) until it leaves the sign it occupies at jdUt.
vsopHeliocentric-
whenSolve for the time intervals within [jdStart, jdEnd] (UT Julian Days) where a Predicate holds. Predicates compose from aspect, inSign, retrograde, notRetrograde, and the allOf/anyOf combinators, so one call answers questions like "when is Venus in Taurus while Mercury is direct?".
yogakarakasPlanets ruling both a pure kendra (4/7/10) and a pure trikona (5/9), sorted.
yogasAtThe placement yogas of a natal chart, from the sidereal rasi positions.
yoginiActiveThe maha and antar yogini active at targetJd; null before the first period.
yoginiAtYogini dasha active at targetJd, from the natal Moon's nakshatra.
yoginiDashasThe Yogini dasha timeline from the Moon's sidereal longitude.
zrActiveThe L1..L4 releasing signs active at targetJd; null outside the span.
zrAtZodiacal releasing active at targetJd, releasing from the Lot of Spirit (default) or Fortune of the natal chart.
zrReleaseFlat timeline of releasing periods down to maxLevel over horizonYears (360-day years) from birth.

Start building

Quickstart →