2Branches0Tags
GL
glucryptoFix trade candle loading via gateway
typescript
import type { ToolProfile } from "opentool"; import { store } from "opentool/store"; import { MY_OPENPOND_TEMPLATE_CONFIG, resolveConnectedApps } from "../src/config"; import { reviewTrade, reviewTradeSchema, } from "../src/review-trade"; export const schema = reviewTradeSchema; export const profile: ToolProfile = { description: "Review a proposed Hyperliquid trade against recent manual trades, technicals, and connected news context.", category: "orchestrator", connectedApps: resolveConnectedApps(), templateConfig: MY_OPENPOND_TEMPLATE_CONFIG, }; export async function POST(req: Request) { const payload = await req.json().catch(() => null); const parsed = reviewTradeSchema.safeParse(payload ?? {}); if (!parsed.success) { return new Response( JSON.stringify({ ok: false, error: parsed.error.issues[0]?.message ?? "invalid request payload", }), { status: 400, headers: { "content-type": "application/json" }, }, ); } try { const result = await reviewTrade(parsed.data); await store({ source: "review-trade", ref: `review-trade-${Date.now()}`, status: "info", action: "custom", metadata: result, }); return Response.json(result); } catch (error) { const message = error instanceof Error ? error.message : "unknown"; await store({ source: "review-trade", ref: `review-trade-${Date.now()}`, status: "failed", action: "custom", metadata: { ok: false, error: message }, }); return new Response(JSON.stringify({ ok: false, error: message }), { status: 400, headers: { "content-type": "application/json" }, }); } }