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 { generateTrade, generateTradeSchema, } from "../src/generate-trade"; export const schema = generateTradeSchema; export const profile: ToolProfile = { description: "Generate a structured Hyperliquid trade idea with entry, take profit, stop loss, and sizing based on technicals, recent trade behavior, 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 = generateTradeSchema.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 generateTrade(parsed.data); await store({ source: "generate-trade", ref: `generate-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: "generate-trade", ref: `generate-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" }, }); } }