agent-console-client

Serve and consume the AdonisJS agent governance console and browser client.

1|Updated Jul 7, 2026
One-click install
npx skills add https://github.com/DavideCarvalho/adonis-agora-agent --skill agent-console-client-davidecarvalho
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: agent-console-client
Source: https://github.com/DavideCarvalho/adonis-agora-agent/tree/main/packages/dashboard/skills/agent-console-client
Command: npx skills add https://github.com/DavideCarvalho/adonis-agora-agent --skill agent-console-client-davidecarvalho

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? It resolves the confusion around mounting the @adonis-agora/agent governance console — choosing between the embedded provider and the standalone @adonis-agora/agent-dashboard package, diagnosing why the dashboard refuses to mount or 404s, and building custom governance UIs against the /agent/governance/* routes. ## Core Features & Use Cases - Provider selection and mounting: Register exactly one dashboard provider (embedded via node ace configure @adonis-agora/agent or standalone @adonis-agora/agent-dashboard) sharing the same config('agent').dashboard block, avoiding duplicate-route boot errors. - Framework-free AgentClient: Query spendByModel, spendByActor, usageTrend, quotaToday, recentThreads, recentToolCalls, and pendingApprovals, plus approve/reject HITL tool calls and upsert model pricing from any browser UI. - Mount diagnostics: Interpret decideDashboardMount refusal reasons (disabled, no-governance-gate, no-governance-queries) from boot warnings to fix a dead console. - Use Case: Your governance console returns 404 after deploy — read the boot warning to learn the missing knob is governanceAuthorize, add the gate, and the SPA mounts at <path>/dashboard. ## Quick Start Configure the agent with a governanceAuthorize gate and use the AgentClient from @adonis-agora/agent-dashboard/client to list pending approvals and approve a tool call from the browser.

Frequently Asked Questions about agent-console-client

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I mount the @adonis-agora/agent governance dashboard?▼

Run node ace configure @adonis-agora/agent, which registers an embedded provider serving the SPA at <path>/dashboard once governanceAuthorize exists in config/agent.ts. Alternatively install @adonis-agora/agent-dashboard standalone — but register only one of the two providers.

Why does the agent governance console return 404 or fail to mount?▼

decideDashboardMount refuses to mount when governanceAuthorize is missing (no-governance-gate) or governanceQueries is false (no-governance-queries), each logged with a distinct boot warning naming the responsible knob. Setting dashboard.enabled alone is not sufficient.

How do I approve HITL tool calls from a custom browser UI?▼

Use the framework-free AgentClient from @adonis-agora/agent-dashboard/client: call pendingApprovals() to list the inbox, then approveToolCall(runId, toolCallId) or rejectToolCall(runId, toolCallId, reason). Requests send credentials: 'same-origin' so the host session gates every call.

Can I register both the embedded and standalone dashboard providers?▼

No. Both providers claim the same <path>/dashboard route, so AdonisJS throws a duplicate-route error and the app fails to boot. Register exactly one — the embedded provider from the agent package or the standalone @adonis-agora/agent-dashboard.

How do I redirect unauthenticated dashboard users to a login page?▼

Set dashboard.onUnauthenticated in config/agent.ts to a hook like (ctx) => ctx.response.redirect('/login'). When the hook writes a response header the gate skips its default 401 JSON; returning normally keeps the default JSON response.

How does AgentClient resolve the API base URL under a route prefix?▼

The provider injects the mounted base as window.__AGENT_DASHBOARD_BASE__ when serving index.html; resolveApiBase() prefers that value, otherwise deriveApiBase strips the trailing /dashboard segment from the pathname. Avoid hard-coding '/agent' in custom UIs.