Overhaul Orbit dashboard with agent-first design
Summary
- Redesign Orbit dashboard with agent-first layout, schema visualization with entity type icons, and improved navigation
- Fix eslint, prettier, and i18n issues across the Orbit frontend
- Wire Orbit MCP server into the Duo Agent Platform as a first-class trusted citizen
- Add foundational "Orbit" agent to the agent picker, gated behind knowledge_graph FF
Orbit + DAP Integration
Enables agentic chat to query the Knowledge Graph via Orbit's MCP tools (query_graph, get_graph_schema).
Rails
McpConfigService: addsorbitMCP server config alongsidegitlab, gated behindknowledge_graphFF. Both tools pre-approved (read-only)ee/lib/api/orbit/data.rb,mcp.rb,internal/orbit.rb: acceptai_workflowsOAuth scope so DWS tokens can call Orbit API and the internal redaction endpointFoundationalChatAgentsDefinitions: adds Orbit agent (id=7) withpositionattribute for display orderingFoundationalChatAgentsResolver: sorts byposition, filters Orbit whenknowledge_graphFF is disabled
Workhorse
mcp.go: addsorbitas special-cased MCP server name (likegitlab), routing to/api/v4/orbit/mcpvia the internal Rails transportmcp.goroundTripper: interceptsGitlab-Workhorse-Send-Dataresponses withorbit-query:prefix and invokes theSendQueryinjector inline. This is needed because the MCP client's HTTP calls bypass Workhorse's normal senddata middleware, butquery_graphuses the SendData pattern for streaming gRPC queries with auth/redaction
How it works
McpConfigService (Rails) -> Workhorse connects to /api/v4/orbit/mcp
-> tools/list returns query_graph + get_graph_schema
-> tools prefixed as orbit_query_graph, orbit_get_graph_schema
-> passed to DWS as McpTool protobufs (pre-approved, no UNTRUSTED warning)
-> agent calls orbit_query_graph
-> DWS sends RunMCPTool action to Workhorse
-> Workhorse proxies to Orbit MCP -> Rails returns SendData header
-> roundTripper intercepts SendData, invokes SendQuery.Inject
-> SendQuery opens gRPC stream to GKG, handles redaction via Rails
-> GOON-formatted result returned to agentTest plan
- Verify Orbit dashboard loads at
/orbitroute - Verify schema data tab renders entity icons and search works
- Select Orbit agent in Duo Chat agent picker
- Ask "What groups exist in the knowledge graph?" -- verify orbit_get_graph_schema is called
- Ask "List all merge requests" -- verify orbit_query_graph executes and returns data
- Disable knowledge_graph FF -- verify Orbit agent disappears from picker
- Verify lint checks pass in CI
Edited by Michael Angelo Rivera