mirror of
https://github.com/hanzo-apps/world.git
synced 2026-10-30 14:53:09 +00:00
Context menus (panel-menu.ts): extend the single installed contextmenu listener into a per-context system. Layers, most-specific first: text entry → native menu; component items via a data-ctx-* convention (news → Open/Copy link + Copy headline; market/FX/commodity/yield rows → Copy value/symbol); the map surface → Copy coordinates / Fly here / 2D-3D toggle through a narrow MapContextPort (registered by MapContainer); then the panel baseline (Hide, Move to top, five Size presets, Reset layout). A stationary right-click on the map opens the menu; a rotate-drag still bails so maplibre keeps the gesture. Size presets reuse Panel's setSpanClass/savePanelSpan; Move to top routes through App.movePanelInGrid via a new panel-move-request event — one way each. Panels only annotate their DOM (quoteRow, MarketPanel, NewsPanel, CustomFeedPanel); DeckGLMap gains a read-only screenToLngLat. Analyst data tools (handlers_analyst.go + mcp/): bind the 7 world MCP tools as DATA tools in the analyst loop. mcp.CallTool executes them IN-PROCESS via the same dispatcher tools/call uses (one path, no self-HTTP); mcp.ToolSpecs feeds a derived tool contract into the system prompt. The handler runs an agentic loop (≤3 tool rounds) — the model requests tools in a "tools" array, results are fed back, then it answers citing live data. Tool traces ride the response and render as collapsed "🔧 tool(...)" lines in the chat (AnalystChat). App-commands stay auth-gated (unchanged); data tools dispatch anonymously. Gates: go build+test (incl. new agentic-loop + parse/contract tests), tsc, vite build, playwright (news/map menus + stubbed analyst tool round-trip) — all green. Co-authored-by: Hanzo Dev <[email protected]>
106 KiB
1280x720px
106 KiB
1280x720px