feat(consultation): let the jyotish agent drive skills and tools

This commit is contained in:
Jesse_Chen
2026-08-11 16:22:02 +08:00
parent 6d7a9a97be
commit 46cdc3bbf4
24 changed files with 1336 additions and 306 deletions
+18 -1
View File
@@ -1,7 +1,7 @@
import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import test from "node:test";
import { writeChatSession, type ChatSessionWrite } from "../src/lib/chat-session-write-contract.ts";
import { chatSessionWriteSchema, writeChatSession, type ChatSessionWrite } from "../src/lib/chat-session-write-contract.ts";
const sessionId = "11111111-1111-4111-8111-111111111111";
const values = {
@@ -14,6 +14,23 @@ const values = {
updated_at: "2026-07-22T00:00:00.000Z",
} satisfies ChatSessionWrite;
test("chat session schema preserves the safe agent execution receipt", () => {
const receipt = {
runId: "run-1",
runtime: "mastra-agentic" as const,
skill: { name: "jyotish-vedic-astrology" as const, loaded: true },
steps: [{ sequence: 1, kind: "skill" as const, name: "jyotish-vedic-astrology", status: "completed" as const }],
workflow: { route: "career", status: "ready", preciseTiming: "blocked", missingLayers: [] },
techniqueTruth: "verified",
};
const parsed = chatSessionWriteSchema.parse({
...values,
messages: [{ role: "assistant", text: "回答", agentExecutionReceipt: receipt }],
});
assert.deepEqual(parsed.messages[0]?.agentExecutionReceipt, receipt);
});
test("chat session writes use same-origin API instead of browser-to-Supabase requests", async () => {
const calls: Array<{ url: string; init?: RequestInit }> = [];
await writeChatSession(sessionId, values, "update", async (url, init) => {