refactor: reorganize gateway routes under /api/ prefix #183

Merged
xiaomo merged 2 commits from feat/177-gateway-route-reorg into main 2026-05-11 08:01:02 +00:00
Owner

What

Gateway API 路由重组,统一归到 /api/ 前缀下。

Why

原来 /register/endpoints 散落在根路径,管理接口和代理转发混在一起不够清晰。

Changes

packages/workflow-gateway/src/index.ts

  • POST /registerPOST /api/gateway/register
  • DELETE /register/:nameDELETE /api/gateway/register/:name
  • GET /endpointsGET /api/gateway/endpoints
  • ALL /api/:agent/*ALL /api/agents/:agent/*
  • /healthz 保留根级别
  • Dashboard auth 中间件跳过 gateway register 路由

packages/cli-workflow/src/commands/serve/tunnel.ts

  • 注册/注销请求路径对齐新 gateway 路由

packages/workflow-dashboard/src/api.ts

  • listAgents()/api/gateway/endpoints
  • agentBase()/api/agents/:agent

Ref

Closes #177, closes #178, closes #179

## What Gateway API 路由重组,统一归到 `/api/` 前缀下。 ## Why 原来 `/register`、`/endpoints` 散落在根路径,管理接口和代理转发混在一起不够清晰。 ## Changes **packages/workflow-gateway/src/index.ts** - `POST /register` → `POST /api/gateway/register` - `DELETE /register/:name` → `DELETE /api/gateway/register/:name` - `GET /endpoints` → `GET /api/gateway/endpoints` - `ALL /api/:agent/*` → `ALL /api/agents/:agent/*` - `/healthz` 保留根级别 - Dashboard auth 中间件跳过 gateway register 路由 **packages/cli-workflow/src/commands/serve/tunnel.ts** - 注册/注销请求路径对齐新 gateway 路由 **packages/workflow-dashboard/src/api.ts** - `listAgents()` → `/api/gateway/endpoints` - `agentBase()` → `/api/agents/:agent` ## Ref Closes #177, closes #178, closes #179
xingyue added 1 commit 2026-05-11 07:48:37 +00:00
- Gateway management: /api/gateway/register, /api/gateway/endpoints
- Agent proxy: /api/agents/:agent/*
- /healthz stays at root (CF/k8s convention)
- Skip dashboard auth for gateway register routes
- Update CLI serve tunnel registration paths
- Update dashboard API client paths

Ref: #177
xiaomo requested changes 2026-05-11 07:57:18 +00:00
Dismissed
xiaomo left a comment
Owner

路由重组逻辑清晰 👍 两个问题需要处理:

1. 多余的 lockfile

PR 新增了两个 lockfile:

  • pnpm-lock.yaml(根目录)
  • packages/workflow-gateway/pnpm-lock.yaml

monorepo workspace 模式下,子包不应有独立 lockfile。根目录的 lockfile 如果之前就有应该只是更新而不是新增。请确认这两个文件是否应该在 .gitignore 里,或者是误提交。

2. auth skip 匹配过于宽泛

if (c.req.path.startsWith("/api/gateway/register")) {

这会跳过所有以 /api/gateway/register 开头的路径的 dashboard auth。当前因为 register/unregister 都用 GATEWAY_SECRET 做独立鉴权所以没问题,但 startsWith 是个隐患——未来如果在这个前缀下加了需要 dashboard auth 的路由会被静默跳过。

建议改成精确匹配:

const path = c.req.path;
if (path === "/api/gateway/register" || path.startsWith("/api/gateway/register/")) {

或者更干净的做法:把 gateway 路由拆到单独的 Hono group,group 级别用 GATEWAY_SECRET 中间件,就不需要在 dashboard auth 里做排除了。

路由重组逻辑清晰 👍 两个问题需要处理: ## 1. 多余的 lockfile PR 新增了两个 lockfile: - `pnpm-lock.yaml`(根目录) - `packages/workflow-gateway/pnpm-lock.yaml` monorepo workspace 模式下,子包不应有独立 lockfile。根目录的 lockfile 如果之前就有应该只是更新而不是新增。请确认这两个文件是否应该在 .gitignore 里,或者是误提交。 ## 2. auth skip 匹配过于宽泛 ```ts if (c.req.path.startsWith("/api/gateway/register")) { ``` 这会跳过所有以 `/api/gateway/register` 开头的路径的 dashboard auth。当前因为 register/unregister 都用 GATEWAY_SECRET 做独立鉴权所以没问题,但 `startsWith` 是个隐患——未来如果在这个前缀下加了需要 dashboard auth 的路由会被静默跳过。 建议改成精确匹配: ```ts const path = c.req.path; if (path === "/api/gateway/register" || path.startsWith("/api/gateway/register/")) { ``` 或者更干净的做法:把 gateway 路由拆到单独的 Hono group,group 级别用 GATEWAY_SECRET 中间件,就不需要在 dashboard auth 里做排除了。
xingyue added 1 commit 2026-05-11 07:59:47 +00:00
- Remove root and workflow-gateway pnpm-lock.yaml (workspace mode)
- Replace startsWith auth skip with Hono route group
- Gateway management routes use GATEWAY_SECRET (per-route)
- /api/gateway/endpoints + /api/agents/* use dashboard auth
- No more global /api/* middleware with path-based exceptions
xiaomo approved these changes 2026-05-11 08:01:01 +00:00
xiaomo left a comment
Owner

两个问题都修好了

Hono group 方案很干净:gateway 管理路由独立成 sub-app,各路由自带 auth(register/unregister 用 GATEWAY_SECRET,endpoints 用 dashboard auth),proxy 路由也内联 dashboard auth。不再有全局中间件 + 例外的 pattern。lockfile 也清掉了。LGTM 🚀

两个问题都修好了 ✅ Hono group 方案很干净:gateway 管理路由独立成 sub-app,各路由自带 auth(register/unregister 用 GATEWAY_SECRET,endpoints 用 dashboard auth),proxy 路由也内联 dashboard auth。不再有全局中间件 + 例外的 pattern。lockfile 也清掉了。LGTM 🚀
xiaomo merged commit 56ec8cd401 into main 2026-05-11 08:01:02 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#183