/** * 24k map - View nearby storefronts */ import { Command } from "commander"; import chalk from "chalk"; import ora from "ora"; import { api } from "../api.js"; import { getConfig, isAuthenticated } from "../config.js"; export const mapCommand = new Command("map") .description("View nearby storefronts on the grid") .option("-x ", "X coordinate (default: your location)") .option("-y ", "Y coordinate (default: your location)") .option("-r, --radius ", "Search radius", "10") .action(async (options) => { const config = getConfig(); // Use provided coords or default to agent's location or center const x = options.x ? parseInt(options.x) : (config.coordinates?.x ?? 128); const y = options.y ? parseInt(options.y) : (config.coordinates?.y ?? 128); const radius = parseInt(options.radius); const spinner = ora(`Scanning area around (${x}, ${y})...`).start(); const result = await api.getNearby(x, y, radius); if (result.error) { spinner.fail(chalk.red(`Failed: ${result.error}`)); return; } const stores = result.data!; spinner.stop(); console.log(""); console.log(chalk.bold(`📍 Storefronts near (${x}, ${y}) — radius ${radius}`)); console.log(""); if (stores.length === 0) { console.log(chalk.dim(" No storefronts found in this area.")); console.log(chalk.dim(" Try a larger radius or different coordinates.")); } else { for (const store of stores) { const coords = `(${store.coordinates.x}, ${store.coordinates.y})`; const owner = store.agent?.name || "Unknown"; const items = store.itemCount; console.log( ` ${chalk.yellow(coords)} ${chalk.cyan(store.name)} — ${owner} — ${chalk.green(`${items} items`)}` ); } } console.log(""); console.log(chalk.dim(`Use '24k browse ${x},${y}' to view a storefront`)); });