diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index ece6721..0a8a15b 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,16 +1,24 @@ import { useEffect, useMemo, useState } from "react"; -import { - callSkill, - loadAgentConfig, - loadSession, - sampleArgs, -} from "./a2a.js"; +import { callSkill, loadAgentConfig, loadSession } from "./a2a.js"; + +const sampleMessage = "Amanhã mandar uma fruta, uma garrafinha, camiseta branca e R$12 para a lembrancinha."; + +function todayInSaoPaulo() { + return new Intl.DateTimeFormat("en-CA", { + timeZone: "America/Sao_Paulo", + year: "numeric", + month: "2-digit", + day: "2-digit", + }).format(new Date()); +} export function App() { const [config, setConfig] = useState(null); const [session, setSession] = useState(null); - const [selectedSkillName, setSelectedSkillName] = useState(""); - const [argsText, setArgsText] = useState("{}"); + const [message, setMessage] = useState(sampleMessage); + const [childName, setChildName] = useState(""); + const [referenceDate, setReferenceDate] = useState(todayInSaoPaulo()); + const [question, setQuestion] = useState("What do I need to send this week?"); const [result, setResult] = useState(null); const [error, setError] = useState(null); const [running, setRunning] = useState(false); @@ -19,38 +27,38 @@ export function App() { loadAgentConfig() .then((data) => { setConfig(data); - const firstSkill = data.skills?.[0]; - if (firstSkill) { - setSelectedSkillName(firstSkill.name); - setArgsText(JSON.stringify(sampleArgs(firstSkill), null, 2)); - } return loadSession(data).catch(() => null); }) .then((sessionData) => setSession(sessionData)) .catch((err) => setError(err.message || String(err))); }, []); - const selectedSkill = useMemo( - () => config?.skills?.find((skill) => skill.name === selectedSkillName), - [config, selectedSkillName], + const triageSkill = useMemo( + () => config?.skills?.find((skill) => skill.name === "triage_preschool_messages") || config?.skills?.[0], + [config], ); - function selectSkill(skill) { - setSelectedSkillName(skill.name); - setArgsText(JSON.stringify(sampleArgs(skill), null, 2)); - setResult(null); - setError(null); - } - - async function runSkill(event) { + async function runTriage(event) { event.preventDefault(); - if (!config || !selectedSkill) return; + if (!config || !triageSkill) return; setRunning(true); setError(null); setResult(null); try { - const args = JSON.parse(argsText || "{}"); - const data = await callSkill(config, selectedSkill.name, args); + const messages = message + .split("\n") + .map((line) => line.trim()) + .filter(Boolean); + const data = await callSkill(config, triageSkill.name, { + messages, + reference_date: referenceDate, + timezone: "America/Sao_Paulo", + child_name: childName || null, + question, + known_school_days: [], + already_paid_labels: [], + create_integration_previews: true, + }); setResult(data); } catch (err) { setError(err.message || String(err)); @@ -62,7 +70,7 @@ export function App() { if (!config) { return (
-

{error || "Loading A2A agent contract..."}

+

{error || "Loading preschool buffer..."}

); } @@ -71,70 +79,95 @@ export function App() {
-

Skill runner

-

{selectedSkill?.name || "No skills found"}

+

Chaotic group → calm plan

+

Paste the school WhatsApp messages

- - Docs - + Docs
- {selectedSkill ? ( -
+ +