Skip to content

feat: marketplace UI + gateway + console + streaming (Phase 1–2) - #8

Merged
oratis merged 4 commits into
mainfrom
feat/agent-marketplace-complete
Jun 13, 2026
Merged

feat: marketplace UI + gateway + console + streaming (Phase 1–2)#8
oratis merged 4 commits into
mainfrom
feat/agent-marketplace-complete

Conversation

@oratis

@oratis oratis commented Jun 13, 2026

Copy link
Copy Markdown
Owner

What

Consolidates the remaining Phase 1–2 work onto main. (The earlier stacked PRs #4/#6 tangled during merge; this lands ui + gateway + dashboard + streaming cleanly on top of the already-merged backend #3.)

Includes

  • Marketplace UI/agents browse + detail, /submit-agent, /admin/agents, home rebrand to "One API to access all agents".
  • Gateway data-plane — API keys, POST /v1/agents/{slug}/message (A2A), POST /v1/chat/completions (OpenAI shim), metering.
  • Developer dashboard/dashboard keys + usage.
  • SSE streamingPOST /v1/agents/{slug}/stream.

Verification

tsc --noEmit clean (post-rebase). All verified locally end-to-end earlier (browser + curl).

🤖 Generated with Claude Code

oratis and others added 4 commits June 13, 2026 11:28
- /agents marketplace (search + protocol/pricing/category filters + sort),
  replacing the old coding-agent-type browse
- /agents/[slug] detail (capabilities, skills, integration panel)
- /submit-agent publish form (AgentCard URL or manual)
- /admin/agents review page + Agents tab in the admin nav
- AgentCard component
- Home rebranded to "One API to access all agents" with a Featured Agents
  row; skills retained as a sub-category

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Unified "one API to access all agents" gateway (data-plane; cloud infra
deferred to deploy).

- Schema: ApiKey (hashed key + prefix) + Invocation (usage metering) +
  migration 004_gateway_keys_usage
- src/lib/apikey.ts: key gen / SHA-256 hash / Bearer auth
- POST /api/keys (create, returns secret once) + GET (list)
- Gateway: POST /v1/agents/{slug}/message — A2A JSON-RPC passthrough
- OpenAI-compatible shim: POST /v1/chat/completions (model = agent slug)
- Per-call metering (Invocation) + callsCount; rate limit per key

Verified locally against a mock A2A agent: auth (401 on bad key),
passthrough, OpenAI shim, and metering. tsc clean.

Deferred (deploy/next): Cloud SQL upsize + PgBouncer + Upstash Redis
(swap in-memory rate limit), streaming/SSE, BYOK, credits/billing (Phase 3).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- DELETE /api/keys/{id} (revoke; owner-only, soft-delete via revokedAt)
- GET /api/usage (per-user call totals + recent invocations)
- /dashboard: create / copy-once / revoke API keys, a gateway quickstart,
  and a usage table (agent, protocol, status, latency)
- Header: "API & Usage" link in the account menu

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
POST /v1/agents/{slug}/stream — A2A message/stream proxied to the agent and
piped back to the client as Server-Sent Events. Metered like the sync path.

Verified locally against a streaming mock: status/artifact SSE events pass
through word-by-word. tsc clean.

Note: behind a Global HTTPS LB + serverless NEG, SSE may be throttled — prefer
the direct Cloud Run URL for streaming (documented in 03-technical-architecture).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@oratis
oratis merged commit 599215b into main Jun 13, 2026
@oratis
oratis deleted the feat/agent-marketplace-complete branch June 13, 2026 03:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant