{
  "version": 3,
  "pages404": true,
  "caseSensitive": false,
  "basePath": "",
  "redirects": [
    {
      "source": "/:path+/",
      "destination": "/:path+",
      "internal": true,
      "statusCode": 308,
      "regex": "^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"
    }
  ],
  "headers": [],
  "rewrites": {
    "beforeFiles": [],
    "afterFiles": [],
    "fallback": []
  },
  "dynamicRoutes": [
    {
      "page": "/api/agents/[id]",
      "regex": "^/api/agents/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/agents/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/agents/[id]/skills",
      "regex": "^/api/agents/([^/]+?)/skills(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/agents/(?<nxtPid>[^/]+?)/skills(?:/)?$"
    },
    {
      "page": "/api/api-providers/[id]",
      "regex": "^/api/api\\-providers/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/api\\-providers/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/api-providers/[id]/refresh-models",
      "regex": "^/api/api\\-providers/([^/]+?)/refresh\\-models(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/api\\-providers/(?<nxtPid>[^/]+?)/refresh\\-models(?:/)?$"
    },
    {
      "page": "/api/api-providers/[id]/test",
      "regex": "^/api/api\\-providers/([^/]+?)/test(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/api\\-providers/(?<nxtPid>[^/]+?)/test(?:/)?$"
    },
    {
      "page": "/api/auth/[...all]",
      "regex": "^/api/auth/(.+?)(?:/)?$",
      "routeKeys": {
        "nxtPall": "nxtPall"
      },
      "namedRegex": "^/api/auth/(?<nxtPall>.+?)(?:/)?$"
    },
    {
      "page": "/api/cron-tasks/[id]",
      "regex": "^/api/cron\\-tasks/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/cron\\-tasks/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/cron-tasks/[id]/execute",
      "regex": "^/api/cron\\-tasks/([^/]+?)/execute(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/cron\\-tasks/(?<nxtPid>[^/]+?)/execute(?:/)?$"
    },
    {
      "page": "/api/h5/auth/[slug]",
      "regex": "^/api/h5/auth/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPslug": "nxtPslug"
      },
      "namedRegex": "^/api/h5/auth/(?<nxtPslug>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/h5/pages/[id]",
      "regex": "^/api/h5/pages/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/h5/pages/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/h5/sessions/[id]",
      "regex": "^/api/h5/sessions/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/h5/sessions/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/im-channels/[id]",
      "regex": "^/api/im\\-channels/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/im\\-channels/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/im-channels/[id]/connect",
      "regex": "^/api/im\\-channels/([^/]+?)/connect(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/im\\-channels/(?<nxtPid>[^/]+?)/connect(?:/)?$"
    },
    {
      "page": "/api/im-channels/[id]/dingtalk-auth",
      "regex": "^/api/im\\-channels/([^/]+?)/dingtalk\\-auth(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/im\\-channels/(?<nxtPid>[^/]+?)/dingtalk\\-auth(?:/)?$"
    },
    {
      "page": "/api/im-channels/[id]/feishu-auth",
      "regex": "^/api/im\\-channels/([^/]+?)/feishu\\-auth(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/im\\-channels/(?<nxtPid>[^/]+?)/feishu\\-auth(?:/)?$"
    },
    {
      "page": "/api/im-channels/[id]/wecom-cli",
      "regex": "^/api/im\\-channels/([^/]+?)/wecom\\-cli(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/im\\-channels/(?<nxtPid>[^/]+?)/wecom\\-cli(?:/)?$"
    },
    {
      "page": "/api/im-channels/[id]/weixin-login",
      "regex": "^/api/im\\-channels/([^/]+?)/weixin\\-login(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/im\\-channels/(?<nxtPid>[^/]+?)/weixin\\-login(?:/)?$"
    },
    {
      "page": "/api/invite/member/[id]",
      "regex": "^/api/invite/member/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/invite/member/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/invite/[token]",
      "regex": "^/api/invite/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPtoken": "nxtPtoken"
      },
      "namedRegex": "^/api/invite/(?<nxtPtoken>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/invite/[token]/poll",
      "regex": "^/api/invite/([^/]+?)/poll(?:/)?$",
      "routeKeys": {
        "nxtPtoken": "nxtPtoken"
      },
      "namedRegex": "^/api/invite/(?<nxtPtoken>[^/]+?)/poll(?:/)?$"
    },
    {
      "page": "/api/invite/[token]/public",
      "regex": "^/api/invite/([^/]+?)/public(?:/)?$",
      "routeKeys": {
        "nxtPtoken": "nxtPtoken"
      },
      "namedRegex": "^/api/invite/(?<nxtPtoken>[^/]+?)/public(?:/)?$"
    },
    {
      "page": "/api/invite/[token]/start-qr",
      "regex": "^/api/invite/([^/]+?)/start\\-qr(?:/)?$",
      "routeKeys": {
        "nxtPtoken": "nxtPtoken"
      },
      "namedRegex": "^/api/invite/(?<nxtPtoken>[^/]+?)/start\\-qr(?:/)?$"
    },
    {
      "page": "/api/invite/[token]/verify-phone",
      "regex": "^/api/invite/([^/]+?)/verify\\-phone(?:/)?$",
      "routeKeys": {
        "nxtPtoken": "nxtPtoken"
      },
      "namedRegex": "^/api/invite/(?<nxtPtoken>[^/]+?)/verify\\-phone(?:/)?$"
    },
    {
      "page": "/api/marketplace/[id]",
      "regex": "^/api/marketplace/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/marketplace/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/marketplace/[id]/files",
      "regex": "^/api/marketplace/([^/]+?)/files(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/marketplace/(?<nxtPid>[^/]+?)/files(?:/)?$"
    },
    {
      "page": "/api/marketplace/[id]/fs",
      "regex": "^/api/marketplace/([^/]+?)/fs(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/marketplace/(?<nxtPid>[^/]+?)/fs(?:/)?$"
    },
    {
      "page": "/api/marketplace/[id]/fs/import",
      "regex": "^/api/marketplace/([^/]+?)/fs/import(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/marketplace/(?<nxtPid>[^/]+?)/fs/import(?:/)?$"
    },
    {
      "page": "/api/marketplace/[id]/tree",
      "regex": "^/api/marketplace/([^/]+?)/tree(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/marketplace/(?<nxtPid>[^/]+?)/tree(?:/)?$"
    },
    {
      "page": "/api/marketplace/[id]/use",
      "regex": "^/api/marketplace/([^/]+?)/use(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/marketplace/(?<nxtPid>[^/]+?)/use(?:/)?$"
    },
    {
      "page": "/api/mcp/[id]",
      "regex": "^/api/mcp/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/mcp/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/mcp/[id]/test",
      "regex": "^/api/mcp/([^/]+?)/test(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/mcp/(?<nxtPid>[^/]+?)/test(?:/)?$"
    },
    {
      "page": "/api/sessions/[id]",
      "regex": "^/api/sessions/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/sessions/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/sessions/[id]/clear",
      "regex": "^/api/sessions/([^/]+?)/clear(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/sessions/(?<nxtPid>[^/]+?)/clear(?:/)?$"
    },
    {
      "page": "/api/sessions/[id]/compact",
      "regex": "^/api/sessions/([^/]+?)/compact(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/sessions/(?<nxtPid>[^/]+?)/compact(?:/)?$"
    },
    {
      "page": "/api/sessions/[id]/export",
      "regex": "^/api/sessions/([^/]+?)/export(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/sessions/(?<nxtPid>[^/]+?)/export(?:/)?$"
    },
    {
      "page": "/api/sessions/[id]/messages",
      "regex": "^/api/sessions/([^/]+?)/messages(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/sessions/(?<nxtPid>[^/]+?)/messages(?:/)?$"
    },
    {
      "page": "/api/skills/[id]",
      "regex": "^/api/skills/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/skills/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/upload/[filename]",
      "regex": "^/api/upload/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPfilename": "nxtPfilename"
      },
      "namedRegex": "^/api/upload/(?<nxtPfilename>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/webhook-tokens/[id]",
      "regex": "^/api/webhook\\-tokens/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/webhook\\-tokens/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/webhooks/[taskId]",
      "regex": "^/api/webhooks/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPtaskId": "nxtPtaskId"
      },
      "namedRegex": "^/api/webhooks/(?<nxtPtaskId>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]",
      "regex": "^/api/workspaces/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/agents",
      "regex": "^/api/workspaces/([^/]+?)/agents(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/agents(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/agents/[filename]",
      "regex": "^/api/workspaces/([^/]+?)/agents/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid",
        "nxtPfilename": "nxtPfilename"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/agents/(?<nxtPfilename>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/agents-tree",
      "regex": "^/api/workspaces/([^/]+?)/agents\\-tree(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/agents\\-tree(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/diff",
      "regex": "^/api/workspaces/([^/]+?)/diff(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/diff(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/files",
      "regex": "^/api/workspaces/([^/]+?)/files(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/files(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/forge-tree",
      "regex": "^/api/workspaces/([^/]+?)/forge\\-tree(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/forge\\-tree(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/fs",
      "regex": "^/api/workspaces/([^/]+?)/fs(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/fs(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/fs/import",
      "regex": "^/api/workspaces/([^/]+?)/fs/import(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/fs/import(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/fs/upload",
      "regex": "^/api/workspaces/([^/]+?)/fs/upload(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/fs/upload(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/init",
      "regex": "^/api/workspaces/([^/]+?)/init(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/init(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/members",
      "regex": "^/api/workspaces/([^/]+?)/members(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/members(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/members/[userId]",
      "regex": "^/api/workspaces/([^/]+?)/members/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid",
        "nxtPuserId": "nxtPuserId"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/members/(?<nxtPuserId>[^/]+?)(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/project-files",
      "regex": "^/api/workspaces/([^/]+?)/project\\-files(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/project\\-files(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/raw",
      "regex": "^/api/workspaces/([^/]+?)/raw(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/raw(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/skills-tree",
      "regex": "^/api/workspaces/([^/]+?)/skills\\-tree(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/skills\\-tree(?:/)?$"
    },
    {
      "page": "/api/workspaces/[id]/tree",
      "regex": "^/api/workspaces/([^/]+?)/tree(?:/)?$",
      "routeKeys": {
        "nxtPid": "nxtPid"
      },
      "namedRegex": "^/api/workspaces/(?<nxtPid>[^/]+?)/tree(?:/)?$"
    },
    {
      "page": "/h5/[slug]",
      "regex": "^/h5/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPslug": "nxtPslug"
      },
      "namedRegex": "^/h5/(?<nxtPslug>[^/]+?)(?:/)?$"
    },
    {
      "page": "/invite/[token]",
      "regex": "^/invite/([^/]+?)(?:/)?$",
      "routeKeys": {
        "nxtPtoken": "nxtPtoken"
      },
      "namedRegex": "^/invite/(?<nxtPtoken>[^/]+?)(?:/)?$"
    }
  ],
  "staticRoutes": [
    {
      "page": "/",
      "regex": "^/(?:/)?$",
      "routeKeys": {},
      "namedRegex": "^/(?:/)?$"
    },
    {
      "page": "/_not-found",
      "regex": "^/_not\\-found(?:/)?$",
      "routeKeys": {},
      "namedRegex": "^/_not\\-found(?:/)?$"
    },
    {
      "page": "/h5/c",
      "regex": "^/h5/c(?:/)?$",
      "routeKeys": {},
      "namedRegex": "^/h5/c(?:/)?$"
    },
    {
      "page": "/login",
      "regex": "^/login(?:/)?$",
      "routeKeys": {},
      "namedRegex": "^/login(?:/)?$"
    }
  ],
  "dataRoutes": [],
  "rsc": {
    "header": "rsc",
    "varyHeader": "rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch",
    "prefetchHeader": "next-router-prefetch",
    "didPostponeHeader": "x-nextjs-postponed",
    "contentTypeHeader": "text/x-component",
    "suffix": ".rsc",
    "prefetchSuffix": ".prefetch.rsc",
    "prefetchSegmentHeader": "next-router-segment-prefetch",
    "prefetchSegmentSuffix": ".segment.rsc",
    "prefetchSegmentDirSuffix": ".segments"
  },
  "rewriteHeaders": {
    "pathHeader": "x-nextjs-rewritten-path",
    "queryHeader": "x-nextjs-rewritten-query"
  }
}