import { z } from "zod";
import { wsManager } from "../services/websocket-manager.js";
const schema = z.object({
market_ids: z
.array(z.string())
.min(1)
.describe("List of market condition IDs to monitor"),
callback_type: z
.enum(["notification", "log"])
.optional()
.default("notification")
.describe("How to receive updates (default: notification)"),
});
export const subscribeMarketPricesTool = {
name: "subscribe_market_prices",
description:
"Subscribe to real-time price changes by market condition IDs (conditionId). Source: list_markets/list_active_markets/get_market_by_slug. Use get_realtime_status to inspect events. Example: market_ids=[conditionId].",
parameters: schema,
execute: async (args: z.infer<typeof schema>) => {
try {
const id = wsManager.subscribe({
type: "price_change",
markets: args.market_ids,
callbackType: args.callback_type,
});
return JSON.stringify({ subscription_id: id, status: "subscribed", markets: args.market_ids });
} catch (error) {
return JSON.stringify({ error: error instanceof Error ? error.message : String(error) });
}
},
};