feat(rectification): pass ayanamsa per request

This commit is contained in:
Jesse_Chen
2026-09-04 00:25:16 +08:00
parent 3b09bbbee0
commit 44d3d3931b
15 changed files with 135 additions and 16 deletions
@@ -4,6 +4,7 @@ import type {
AgenticRectificationCandidateResult,
AgenticRectificationContext,
} from "@/mastra/rectification-tools";
import { resolveAyanamsa, type AyanamsaName } from "../ayanamsa.ts";
import { normalizePersistedBirthDate } from "../birth-time-intake-model.ts";
import { declaredClockRange } from "../declared-birth-window.ts";
@@ -26,6 +27,7 @@ export type AgenticRectificationProfile = Readonly<{
lat: number;
lon: number;
tz: number;
ayanamsa: AyanamsaName;
declaredAccuracy: AgenticRectificationContext["declaredAccuracy"];
timeSource: AgenticRectificationContext["timeSource"];
baselineReportedTime: string | null;
@@ -166,7 +168,7 @@ export async function loadAgenticRectificationProfile(
): Promise<AgenticRectificationProfile> {
const { data, error } = await accounting
.from("profiles")
.select("birth_date,reported_birth_time,active_birth_time,birth_time_source,birth_time_period,declared_window_start,declared_window_end,uncertainty_before_minutes,uncertainty_after_minutes,latitude,longitude,timezone_offset")
.select("birth_date,reported_birth_time,active_birth_time,birth_time_source,birth_time_period,declared_window_start,declared_window_end,uncertainty_before_minutes,uncertainty_after_minutes,latitude,longitude,timezone_offset,ayanamsa")
.eq("id", userId)
.single();
if (error || !data) throw new AgenticRectificationProfileError("profile_unavailable");
@@ -199,6 +201,7 @@ export async function loadAgenticRectificationProfile(
lat,
lon,
tz,
ayanamsa: resolveAyanamsa(data),
declaredAccuracy: declaredAccuracyFrom(uncertaintyBefore, uncertaintyAfter, rawSource),
timeSource: timeSourceFrom(rawSource),
baselineReportedTime: reportedTime,
@@ -284,6 +287,7 @@ export function createAgenticRectificationContext(
lat: profile.lat,
lon: profile.lon,
tz: profile.tz,
ayanamsa: profile.ayanamsa,
},
candidateRange: profile.candidateRange,
declaredAccuracy: profile.declaredAccuracy,
@@ -477,6 +477,7 @@ function engineRequestBody(input: {
lon,
tz,
ayanamsa: resolveAyanamsa(snapshot),
node_mode: "mean",
events: input.events,
birth_time_source: snapshot.birth_time_source,
timezone_id: snapshot.timezone_id,