This is an automated email from the ASF dual-hosted git repository.

moonming pushed a change to branch 
dependabot/github_actions/actions/checkout-7.0.1
in repository https://gitbox.apache.org/repos/asf/apisix.git


    from 2c841f50b build(deps): bump actions/checkout from 6.0.2 to 7.0.1
     add d0692133e fix(ai-proxy-multi): reject instances that share a name 
(#13851)
     add aa4472cab feat(ai-proxy-multi): let configured HTTP statuses trigger a 
fallback (#13852)
     add 1719001b4 fix(data-mask): keep request header masking effective in the 
log phase (#13839)
     add 749a9bc15 test(basic-auth): store the vault secret before the consumer 
references it (#13853)
     add 6e51dcfb7 test(cli): wait for the pid file before reading it (#13854)
     add d7553551a feat(graphql-limit-count): rate limit by GraphQL query cost 
(#13840)
     add fa6929773 chore: release 3.18.0 (#13842)
     add f519a0f04 docs(admin-api): correct the retry_timeout type to Number 
(#13860)
     add 579e18eec fix(redirect): compare X-Forwarded-Proto case-insensitively 
(#13865)
     add e056eac68 docs: align plugin references with current behavior (#13864)
     add 5abb66e39 fix(ai-proxy): return 502 when a streaming upstream produces 
no output (#13870)
     add 77086b0db fix(ai-proxy): do not turn a streaming read error after 
partial output into a 5xx (#13876)
     add d55f6d310 fix(ua-restriction): return false when UA matches the 
deny_list (#13869)
     add cb7e781b4 chore: upgrade lua-resty-dns-client to 7.1.2 (#13875)
     add 76ff252b1 test(ai-proxy): cover the AWS moderation path in the 
truncated-stream suite (#13880)
     add b9cfc05eb feat(upstream): verify the upstream certificate against 
configurable CAs (#13863)
     add a036f1858 fix(basic-auth): reject an empty consumer password (#13884)
     add 89c782ee2 fix(etcd): do not block writes when the deployment role 
cannot be read (#13885)
     add 6dbdb9354 fix(jwe-decrypt): reject malformed tokens instead of 
returning 500 (#13844)
     add 97e3800d4 feat: chaitin waf response logging (#13763)
     add a64f2baa0 fix(standalone): stop aborting stream connections before the 
first config arrives (#13855)
     add f94b3c765 docs: clarify JWE and RAG plugin guidance (#13873)
     add 9037ee593 chore: bump APISIX-Runtime to 1.3.18 (#13890)
     add 127e6bb28 test: give the redis counter poll five seconds instead of 
one (#13892)
     add bc54a21c0 fix(control): always report healthcheck nodes as a JSON 
array (#13891)
     add 1caee4f69 docs(openid-connect): recommend setting redirect_uri to an 
absolute URL (#13879)
     add d53d855c6 fix(ai-providers): encode Vertex AI model path segment 
(#13872)
     add 10e61e0fd docs: improve gateway operations guidance (#13900)
     add f80e42c2f fix(basic-auth): split credentials on the first colon only 
(#13836)
     add bd8ac3a86 docs: add LocalAI integration tutorial (#13770)
     add 51fad8a89 fix(traffic-label): cache the compiled match expressions 
outside the plugin config (#13901)
     add 385b80a6e fix(jwe-decrypt): accept JWE tokens that authenticate the 
protected header (#13889)
     add 89e627384 feat(control-api): report the health checks a plugin owns 
(#13899)
     add 96a5b43d5 test(skywalking): remove worker-0 dependency in backend 
timer assertion (#13902)
     add f0bb251a9 fix(ai-cache): key the passthrough protocol on the client 
method, path and query (#13887)
     add 9fc501f03 fix(aws-lambda): request "/" for a path-less function_uri 
and log function error responses (#13908)
     add 15a438183 feat: improve API-driven standalone update reliability 
(#13904)
     add 494dc4229 feat: label WebSocket sessions with request_type=websocket 
(#13909)
     add 978dfce91 fix: write request_type=websocket through ctx.var (#13915)
     add f3623982e fix(etcd): watch from the revision the configuration was 
read at (#13917)
     add 57b401dab feat(stream): support TLS passthrough on the stream proxy 
(#13912)
     add fae270412 fix(ci): unbreak CI under pnpm 12 (#13921)
     add 316aea792 fix(standalone): harden the declarative configuration paths 
(#13886)
     add 96a4e7cc4 fix(ci): stop rerun_flaky_tests from turning unparsable 
failures into a pass (#13923)
     add 1f6120d19 fix(ai-aliyun-content-moderation): report final results 
without usage (#13922)
     add 09b19c609 fix: preserve servlet upstream URI boundaries (#13914)
     add 9aee46aaa fix(workflow): reject invalid case expressions and missing 
action conf (#13862)
     add efef0e841 docs(changelog): add the 3.18.0 section to the Chinese 
changelog (#13843)
     add c3141d49c fix(batch-requests): bound aggregated response bodies 
(#13906)
     add b95627061 fix(openid-connect): validate introspection issuer (#13916)
     add a508d83de fix(plugin): align unavailable plugin handling (#13928)
     add a1e02b89a test(elasticsearch-logger): drop the max_pending_entries 
metadata after the discard test (#13924)
     add d13105e17 test(xds): wait for the privileged agent's startup sync 
before flush_all in TEST 4 (#13937)
     add d5ea736a7 fix(etcd): check availability before starting watcher 
(#13934)
     add 4278bc9ae fix(redis): send the TLS SNI and add redis_server_name 
(#13938)
     add 5e784af30 fix(ai-proxy): avoid aborting streams on empty flushes 
(#13947)
     add 8615934a9 test: stabilize plugin tests and cover CI bailouts (#13948)
     add 32cdc6227 feat(stream): match a stream route by several SNIs (#13911)
     add e564adb84 feat: add openapi-to-mcp plugin (#13942)
     add 0890d2de3 fix(feishu-auth, dingtalk-auth): bind the authorization code 
to the session that started the login (#13806)
     add c525ae5c8 feat(upstream): slow start for newly observed upstream nodes 
(#13941)
     add b172d640c ci: fix dev image push (#13930)
     add 694fd352a fix(ext-plugin-post-resp): set upstream_addr and 
upstream_response_time for loggers (#13940)
     add 789d4b822 fix(openapi-to-mcp): apply defaults, keep SSE variables, 
reject non-OpenAPI documents (#13956)
     add c4776e85f docs: fix traffic-split attribute table rendering (#13965)
     add 3d64360a6 feat(saml-auth): add lua-resty-saml 0.2.6 validation options 
(#13964)
     add 52eb4e31c feat(websocket): add enhanced proxy and plugin hook (#13939)
     add 97b612204 feat(websocket): add plugin to customize proxy behaviors 
(#13972)
     add 271e79969 fix(websocket): address review findings on the ws/wss proxy 
path (#13977)
     add d97d5f725 ci(test): migrate from jest to vitest (#13989)
     add ee7dc10b4 chore: release 3.19.0 (#13976)
     add c6b2adc32 feat(ai-rate-limiting): expose nested usage fields to 
cost_expr (#13984)
     add 2ee8dfa81 feat(prometheus): add service and service_id to the stream 
metrics (#13992)
     add 2b98a717f feat(kubernetes): select clusters by 
discovery_args.cluster_ids (#13991)
     add cbd07d0f5 feat(limit-count): report the counting window in 
$rate_limiting_info (#13996)
     add 9bd84f4f2 chore: migrate branch protection to rulesets (#13955)
     add 88c4b8c47 fix(limit-count): refresh the delayed-sync quota after the 
local delta expired (#14015)
     add 323997dda docs(forward-auth): clarify that X-Forwarded-* carry the 
client request (#13978)
     add a5ddc1cf7 feat!: remove the deprecated mcp-bridge plugin (#14019)
     add 3551401b4 feat: add the request-decompress plugin (#14016)
     add e79d37789 docs(limit-count): correct when the delayed-sync snapshot is 
refreshed (#14017)
     add 6a3a76648 fix(consul): run the catalog and health watchers as 
independent timers (#14032)
     add 2e43b6c60 feat(consul): support https consul server addresses (#14018)
     add 64a4afdd1 fix(ai-proxy): include cache tokens in Anthropic prompt 
usage and read them from message_delta (#14028)
     add e14c6e937 feat(prometheus): export per-process timers, connection 
slots and Lua memory (#14034)
     add de0782a91 fix: return 421 for SNI and Host mismatches on mTLS requests 
(#14013)
     add 9326926e3 docs: clarify RPM package links after UBI 9 migration 
(#14039)
     add b972ce477 fix(nacos): keep cached nodes when a per-service refresh 
fails (#13971)
     add 016dcd074 fix(kubernetes): fail the list when a later page fails 
(#14053)
     add c4f09e1f8 fix(secret): do not include secret values in aws and vault 
error messages (#14049)
     add 210943c18 fix: preserve client-control body limit for gRPC upstreams 
(#14036)
     add cea64fbf4 ci: make CI work on the Ubuntu 26.04 runner image (#14070)
     add 6c700c5dc fix(traffic-split): apply tls and keepalive_pool of the 
inline upstream (#14054)
     add 5dccf0e04 fix(oas-validator): release remote specs unused for 
spec_url_ttl (#14061)
     add a546e8559 fix(router): keep the query string when 
normalize_uri_like_servlet is on (#13982)
     add b6cefbf7f fix(openapi-to-mcp): harden the plugin against a hostile 
document and caller (#13959)
     add f2523f7ad chore: bump APISIX-Runtime to 1.4.0 (#14041)
     add 96ba388d5 fix(ai-proxy): account for Bedrock prompt cache tokens 
(#14044)
     add 4a080d029 fix(router): forward the matched path when nginx normalizes 
the request uri (#14035)
     add a177234f6 test(prometheus): wait for stream session metrics to reach 
the exposition (#14092)
     add f77401f1e fix(cli): don't capture openresty stdout in apisix start 
(#14087)
     add 238aa9ee4 feat(prometheus): configure expired metric cleanup interval 
(#13981)
     add f7139e2ad fix(jwe-decrypt,forward-auth): clear forwarded headers when 
skipping (#14096)
     add b6deb41da feat(openid-connect): map verified claims to upstream 
request headers (#14030)
     add b31e828c6 feat(chaitin-waf): add allow_degradation option for 
fail-open behavior (#13311)
     add 0e4242f58 docs: port source-verified terminology corrections (#14105)
     add ae87b9423 fix(authz-keycloak): require every requested permission to 
be granted (#14098)
     add 3b33a0347 Handle missing resource config in node version helpers 
(#13986)
     add f3390e585 fix(consul): upgrade lua-resty-consul to 0.4.0 (#14118)
     add 2e27e9b4b feat(openid-connect): upgrade lua-resty-openidc to 1.9.3 
(#14088)
     add ff1187e9b fix(upstream): verify against ssl_trusted_certificate when 
only tls.verify is set (#14113)
     add 88a41b7f3 docs: add source-verified Admin API contract for master 
(#14084)
     add ef7135862 fix(ai-prompt-guard): check embeddings string arrays before 
forwarding (#14073)
     add a135515b0 docs(proxy-cache): clarify that the remote_user isolation 
fallback is unverified (#14115)
     add f88e1d238 refactor(wolf-rbac): move header_prefix to route 
configuration (#13929)
     add bf40a99c5 fix(ssl): match skip_mtls_uri_regex against the 
encoded-slash route uri (#14108)
     add 530099397 fix(limit-count): keep delayed sync counters per rule 
(#14064)
     add 83db779df chore: bump APISIX-Runtime to 1.4.2 (#14126)
     add 6205e4a56 docs: add source-verified Control API contract (#14131)
     add f4a4cb4fd chore: bump brotli to 1.2.1 (#14138)
     add 79a87e559 feat(core): make the readable request header count 
configurable (#14136)
     add 37b630480 fix(csrf): safely validate decoded token table and fields 
(#14025)
     add 7db9dce5b docs: modularize the Admin API OpenAPI specification (#14147)
     add 5222007fc fix(prometheus): bump nginx-lua-prometheus-api7 to 1.1.1 
(#14150)
     add 4d736af51 perf(forward-auth): send auth requests through 
ngx_http_ffi_client (#14144)
     add 377cb5961 perf(request-id): read only the configured header and encode 
v4 ids through a table (#14140)
     add 7c7c8f9f4 perf(limit-count): cache parsed templates, local limiters 
and header names (#14141)
     add 7577c3173 fix(syslog): separate error cause from message in syslog 
errors (#13974)
     add 7f7b7a0ba fix(syslog): return early when logger init fails (#13970)
     add b5b50fa71 fix(oas-validator): verify the TLS certificate of the 
spec_url host (#14146)
     add 77055643b fix(openapi-to-mcp): confine a path parameter to one path 
segment (#14154)
     add 22ecbc60e fix(discovery): refresh the kubernetes endpoint cache by ttl 
instead of a version key (#14167)
     add 1d920b0c7 docs: correct Admin API TLS and derived schemas (#14160)
     add 4a9d5d567 clarify Credential name field description and fix typos 
(#13837)
     add 2b6d519a0 fix(prometheus): count stream bytes of slots created after 
the first read (#14101)
     add cfeafda4e Merge remote-tracking branch 'origin/master' into 
codex/deps-13847
     add d7023abd3 ci: update new workflow checkout references to v7

No new revisions were added by this update.

Summary of changes:
 .asf.yaml                                          |   126 +-
 .gitattributes                                     |     1 +
 .github/workflows/admin-api-contract.yml           |    39 +
 .github/workflows/build.yml                        |     9 +-
 .github/workflows/cli.yml                          |     7 +-
 .github/workflows/doc-lint.yml                     |    19 +
 .github/workflows/link-check.yml                   |     2 +-
 .github/workflows/lint.yml                         |     2 +-
 .github/workflows/push-dev-image-on-commit.yml     |     4 +-
 .github/workflows/source-install.yml               |     6 +-
 .gitignore                                         |     3 +-
 .licenserc.yaml                                    |     1 +
 .requirements                                      |     4 +-
 CHANGELOG.md                                       |   241 +
 CONTRIBUTING.md                                    |    30 +
 Makefile                                           |    20 +-
 README.md                                          |     2 -
 apisix-master-0.rockspec                           |    17 +-
 apisix/admin/config_validate.lua                   |    58 +-
 apisix/admin/graphql_cost_decorations.lua          |   251 +
 apisix/admin/init.lua                              |    43 +-
 apisix/admin/resource.lua                          |    20 +
 apisix/admin/services.lua                          |    87 +-
 apisix/admin/standalone.lua                        |   296 +-
 apisix/admin/stream_routes.lua                     |     7 +-
 apisix/balancer.lua                                |   131 +-
 apisix/cli/config.lua                              |    14 +-
 apisix/cli/file.lua                                |     9 +-
 apisix/cli/ngx_tpl.lua                             |   122 +-
 apisix/cli/ops.lua                                 |   154 +-
 apisix/cli/schema.lua                              |    10 +
 apisix/consumer.lua                                |     8 +-
 apisix/control/v1.lua                              |   123 +-
 apisix/core.lua                                    |     1 +
 apisix/core/config_etcd.lua                        |    82 +-
 apisix/core/config_local.lua                       |    28 +-
 apisix/core/config_yaml.lua                        |   108 +-
 apisix/core/etcd.lua                               |    12 +-
 apisix/core/lrucache.lua                           |   124 +-
 apisix/core/request.lua                            |    39 +-
 apisix/core/utils.lua                              |   244 +-
 apisix/core/version.lua                            |     2 +-
 apisix/core/websocket.lua                          |    86 +
 apisix/discovery/consul/client.lua                 |    42 +-
 apisix/discovery/consul/init.lua                   |   136 +-
 apisix/discovery/consul/schema.lua                 |     1 +
 apisix/discovery/kubernetes/core.lua               |    28 +-
 apisix/discovery/kubernetes/informer_factory.lua   |     2 +-
 apisix/discovery/kubernetes/init.lua               |   155 +-
 apisix/discovery/nacos/client.lua                  |    32 +-
 apisix/discovery/nacos/init.lua                    |     8 +-
 apisix/discovery/tars/init.lua                     |    32 +-
 apisix/http/service.lua                            |    75 +-
 apisix/init.lua                                    |   624 +-
 apisix/plugin.lua                                  |    18 +-
 apisix/plugins/ai-aliyun-content-moderation.lua    |    53 +-
 apisix/plugins/ai-aws-content-moderation.lua       |     7 +-
 apisix/plugins/ai-cache/key.lua                    |    22 +-
 apisix/plugins/ai-lakera-guard.lua                 |     4 +-
 apisix/plugins/ai-prompt-guard.lua                 |     8 +-
 apisix/plugins/ai-protocols/anthropic-messages.lua |    88 +-
 apisix/plugins/ai-protocols/bedrock-converse.lua   |    39 +-
 .../anthropic-messages-to-openai-chat.lua          |    44 +-
 apisix/plugins/ai-protocols/openai-chat.lua        |    84 +-
 apisix/plugins/ai-protocols/openai-embeddings.lua  |     6 +-
 apisix/plugins/ai-protocols/openai-responses.lua   |     6 +
 apisix/plugins/ai-providers/base.lua               |    88 +-
 apisix/plugins/ai-providers/vertex-ai.lua          |     3 +-
 apisix/plugins/ai-proxy-multi.lua                  |    57 +-
 apisix/plugins/ai-proxy/base.lua                   |    24 +-
 apisix/plugins/ai-proxy/schema.lua                 |    26 +-
 apisix/plugins/ai-rate-limiting.lua                |    32 +-
 apisix/plugins/authz-keycloak.lua                  |   100 +-
 apisix/plugins/basic-auth.lua                      |    34 +-
 apisix/plugins/batch-requests.lua                  |   102 +-
 apisix/plugins/chaitin-waf.lua                     |   115 +-
 apisix/plugins/client-control.lua                  |     1 +
 apisix/plugins/csrf.lua                            |    12 +-
 apisix/plugins/data-mask.lua                       |    27 +-
 apisix/plugins/dingtalk-auth.lua                   |    78 +-
 apisix/plugins/example-plugin.lua                  |    28 +
 apisix/plugins/ext-plugin-post-resp.lua            |    18 +
 apisix/plugins/feishu-auth.lua                     |    79 +-
 apisix/plugins/forward-auth.lua                    |   177 +-
 apisix/plugins/graphql-limit-count.lua             |   251 +-
 apisix/plugins/graphql-limit-count/cost.lua        |   570 +
 apisix/plugins/graphql-limit-count/decorations.lua |    97 +
 .../plugins/graphql-limit-count/introspection.lua  |   414 +
 apisix/plugins/jwe-decrypt.lua                     |    60 +-
 apisix/plugins/limit-count/delayed-syncer.lua      |    67 +-
 apisix/plugins/limit-count/init.lua                |   122 +-
 apisix/plugins/limit-count/limit-count-local.lua   |    36 +-
 .../limit-count/limit-count-redis-cluster.lua      |     6 +-
 .../limit-count/limit-count-redis-sentinel.lua     |     6 +-
 apisix/plugins/limit-count/limit-count-redis.lua   |    10 +-
 .../limit-count/sliding-window/sliding-window.lua  |    10 +-
 apisix/plugins/limit-count/util.lua                |    20 +-
 apisix/plugins/mcp-bridge.lua                      |   173 -
 apisix/plugins/mcp/broker/shared_dict.lua          |    90 -
 apisix/plugins/mcp/broker/utils.lua                |    21 -
 apisix/plugins/mcp/server.lua                      |   116 -
 apisix/plugins/mcp/server_wrapper.lua              |   106 -
 apisix/plugins/multi-auth.lua                      |     9 +
 apisix/plugins/oas-validator.lua                   |    12 +-
 apisix/plugins/openapi-to-mcp.lua                  |   394 +
 apisix/plugins/openapi-to-mcp/cache.lua            |   129 +
 apisix/plugins/openapi-to-mcp/fetch.lua            |   158 +
 apisix/plugins/openapi-to-mcp/json_pretty.lua      |   104 +
 apisix/plugins/openapi-to-mcp/jsonrpc.lua          |    97 +
 .../plugins/openapi-to-mcp/openapi/endpoints.lua   |   129 +
 apisix/plugins/openapi-to-mcp/openapi/loader.lua   |   206 +
 apisix/plugins/openapi-to-mcp/openapi/ref.lua      |   344 +
 apisix/plugins/openapi-to-mcp/openapi/schema.lua   |   119 +
 apisix/plugins/openapi-to-mcp/protocol.lua         |    71 +
 apisix/plugins/openapi-to-mcp/server.lua           |   239 +
 apisix/plugins/openapi-to-mcp/session.lua          |   211 +
 apisix/plugins/openapi-to-mcp/tools/generator.lua  |   425 +
 apisix/plugins/openapi-to-mcp/tools/handler.lua    |   610 +
 apisix/plugins/openapi-to-mcp/transport/sse.lua    |   313 +
 .../openapi-to-mcp/transport/streamable_http.lua   |   203 +
 apisix/plugins/openid-connect.lua                  |   143 +-
 apisix/plugins/prometheus/exporter.lua             |   176 +-
 apisix/plugins/prometheus/process_metrics.lua      |   457 +
 apisix/plugins/proxy-rewrite.lua                   |     3 +-
 apisix/plugins/redirect.lua                        |     5 +-
 apisix/plugins/request-decompress.lua              |   262 +
 apisix/plugins/request-id.lua                      |    24 +-
 apisix/plugins/saml-auth.lua                       |    51 +-
 apisix/plugins/serverless/generic-upstream.lua     |    10 +-
 apisix/plugins/syslog/init.lua                     |     5 +-
 apisix/plugins/traffic-label.lua                   |    25 +-
 apisix/plugins/traffic-split.lua                   |    18 +-
 apisix/plugins/ua-restriction.lua                  |     3 +-
 apisix/plugins/websocket-proxy.lua                 |    73 +
 apisix/plugins/wolf-rbac.lua                       |    70 +-
 apisix/plugins/workflow.lua                        |    11 +-
 apisix/resource.lua                                |     8 +
 apisix/router.lua                                  |    10 +
 apisix/schema_def.lua                              |   143 +-
 apisix/secret/aws.lua                              |     3 +-
 apisix/secret/vault.lua                            |     2 +-
 apisix/slow_start.lua                              |   531 +
 apisix/ssl.lua                                     |    12 +-
 apisix/stream/plugins/prometheus.lua               |     1 +
 apisix/stream/router/ip_port.lua                   |    82 +-
 apisix/upstream.lua                                |   271 +-
 apisix/utils/content-decode.lua                    |    32 +-
 apisix/utils/gzip.lua                              |   110 +
 apisix/utils/log-util.lua                          |     4 +-
 apisix/utils/redis-schema.lua                      |     3 +
 apisix/utils/redis.lua                             |    14 +-
 ci/backup-docker-images.sh                         |     2 +-
 ci/check_changelog_prs.ts                          |     9 +
 ci/common.sh                                       |    30 +-
 ci/free_disk_space.sh                              |     8 +-
 ci/init-common-test-service.sh                     |     4 -
 ci/init-last-test-service.sh                       |     4 +-
 ci/init-plugin-test-service.sh                     |    24 +-
 ci/linux-install-openresty.sh                      |     6 +-
 ci/linux_apisix_current_luarocks_runner.sh         |     2 +-
 ci/linux_openresty_common_runner.sh                |     2 +-
 ci/prepare_filesystem_mcp.sh                       |    47 -
 conf/config.yaml.example                           |    34 +-
 docker/debian-dev/Dockerfile                       |     7 +-
 docker/debian-dev/install-brotli.sh                |     2 +-
 docs/en/latest/FAQ.md                              |     2 +-
 docs/en/latest/admin-api.json                      | 21748 +++++++++++++++++++
 docs/en/latest/admin-api.md                        |    58 +-
 docs/en/latest/architecture-design/apisix.md       |    31 +-
 docs/en/latest/config.json                         |     7 +-
 docs/en/latest/control-api.json                    |  1533 ++
 docs/en/latest/control-api.md                      |    76 +-
 docs/en/latest/deployment-modes.md                 |    22 +-
 docs/en/latest/discovery/consul.md                 |    15 +
 docs/en/latest/discovery/kubernetes.md             |    31 +-
 docs/en/latest/discovery/nacos.md                  |   171 +-
 docs/en/latest/install-dependencies.md             |     2 +-
 docs/en/latest/installation-guide.md               |   312 +-
 docs/en/latest/internal/testing-framework.md       |    23 +
 docs/en/latest/plugin-develop.md                   |    27 +
 .../latest/plugins/ai-aliyun-content-moderation.md |    12 +
 docs/en/latest/plugins/ai-cache.md                 |     3 +
 docs/en/latest/plugins/ai-prompt-guard.md          |     4 +
 docs/en/latest/plugins/ai-proxy-multi.md           |    19 +-
 docs/en/latest/plugins/ai-proxy.md                 |     8 +-
 docs/en/latest/plugins/ai-rag.md                   |    26 +-
 docs/en/latest/plugins/ai-rate-limiting.md         |     5 +-
 docs/en/latest/plugins/authz-keycloak.md           |     2 +
 docs/en/latest/plugins/basic-auth.md               |     2 +-
 docs/en/latest/plugins/batch-requests.md           |    18 +-
 docs/en/latest/plugins/brotli.md                   |     6 +-
 docs/en/latest/plugins/chaitin-waf.md              |    20 +
 docs/en/latest/plugins/dingtalk-auth.md            |     4 +-
 docs/en/latest/plugins/feishu-auth.md              |     9 +-
 docs/en/latest/plugins/forward-auth.md             |    39 +-
 docs/en/latest/plugins/graphql-limit-count.md      |   147 +-
 docs/en/latest/plugins/jwe-decrypt.md              |    46 +-
 docs/en/latest/plugins/limit-conn.md               |     1 +
 docs/en/latest/plugins/limit-count.md              |   101 +-
 docs/en/latest/plugins/limit-req.md                |     1 +
 docs/en/latest/plugins/mcp-bridge.md               |    69 -
 docs/en/latest/plugins/oas-validator.md            |     5 +-
 docs/en/latest/plugins/openapi-to-mcp.md           |   216 +
 docs/en/latest/plugins/openid-connect.md           |    41 +-
 docs/en/latest/plugins/prometheus.md               |   243 +-
 docs/en/latest/plugins/proxy-cache.md              |     2 +
 docs/en/latest/plugins/proxy-rewrite.md            |   111 +-
 docs/en/latest/plugins/redirect.md                 |     2 +
 docs/en/latest/plugins/request-decompress.md       |   202 +
 docs/en/latest/plugins/saml-auth.md                |    82 +-
 docs/en/latest/plugins/traffic-split.md            |     2 +
 docs/en/latest/plugins/websocket-proxy.md          |   114 +
 docs/en/latest/plugins/wolf-rbac.md                |    22 +-
 docs/en/latest/router-radixtree.md                 |    33 +-
 docs/en/latest/stream-proxy.md                     |   110 +-
 docs/en/latest/terminology/api-gateway.md          |    27 +-
 docs/en/latest/terminology/consumer.md             |    33 +-
 docs/en/latest/terminology/credential.md           |     8 +-
 docs/en/latest/terminology/global-rule.md          |     4 +-
 docs/en/latest/terminology/plugin-config.md        |     8 +-
 docs/en/latest/terminology/plugin-metadata.md      |    20 +-
 docs/en/latest/terminology/plugin.md               |    23 +-
 docs/en/latest/terminology/secret.md               |     2 +-
 docs/en/latest/tutorials/cache-api-responses.md    |   239 +-
 docs/en/latest/tutorials/proxy-localai.md          |   298 +
 .../latest/tutorials/websocket-authentication.md   |   170 +-
 docs/openapi/admin-api/README.md                   |    51 +
 .../components/parameters/FilterExpr.yaml          |    11 +-
 .../admin-api/components/parameters/Force.yaml     |    14 +-
 .../admin-api/components/parameters/IdInPath.yaml  |    12 +-
 .../components/parameters/LabelFilter.yaml         |    12 +-
 .../components/parameters/NameFilter.yaml          |    10 +-
 .../admin-api/components/parameters/Page.yaml      |    13 +-
 .../admin-api/components/parameters/PageSize.yaml  |    14 +-
 .../components/parameters/PluginListAll.yaml       |    14 +-
 .../components/parameters/PluginNameInPath.yaml    |    13 +-
 .../components/parameters/ResourceKindInPath.yaml  |    24 +-
 .../components/parameters/SchemaNameInPath.yaml    |    12 +-
 .../components/parameters/SecretType.yaml          |    16 +-
 .../admin-api/components/parameters/Subsystem.yaml |    15 +-
 .../admin-api/components/parameters/Ttl.yaml       |    13 +-
 .../admin-api/components/parameters/UriFilter.yaml |    11 +-
 .../components/parameters/UsernameInPath.yaml      |    15 +-
 .../requestBodies/ConsumerGroupUpsertPatchId.yaml  |    24 +-
 .../requestBodies/ConsumerGroupUpsertPutId.yaml    |    27 +-
 .../requestBodies/ConsumerUpsertPutCollection.yaml |    28 +-
 .../components/requestBodies/CredentialUpsert.yaml |    23 +-
 .../requestBodies/GlobalRuleUpsertPatchId.yaml     |    25 +-
 .../requestBodies/GlobalRuleUpsertPutId.yaml       |    26 +-
 .../GraphQLCostDecorationPatchBody.yaml            |    21 +-
 .../requestBodies/PluginConfigUpsertPatchId.yaml   |    24 +-
 .../requestBodies/PluginConfigUpsertPutId.yaml     |    71 +-
 .../requestBodies/PluginMetadataUpsert.yaml        |    20 +-
 .../requestBodies/ProtoUpsertPostCollection.yaml   |    49 +
 .../components/requestBodies/ProtoUpsertPutId.yaml |    47 +
 .../requestBodies/RouteUpsertPatchId.yaml          |    76 +-
 .../requestBodies/RouteUpsertPostCollection.yaml   |    60 +
 .../components/requestBodies/RouteUpsertPutId.yaml |    52 +
 .../requestBodies/SecretUpsertPatchCollection.yaml |    24 +-
 .../requestBodies/SecretUpsertPutCollection.yaml   |    49 +
 .../requestBodies/ServiceUpsertPatchId.yaml        |    22 +-
 .../requestBodies/ServiceUpsertPostCollection.yaml |    74 +-
 .../requestBodies/ServiceUpsertPutId.yaml          |    44 +
 .../components/requestBodies/SslUpsertPatchId.yaml |    22 +-
 .../requestBodies/SslUpsertPostCollection.yaml     |    52 +
 .../components/requestBodies/SslUpsertPutId.yaml   |    50 +
 .../StreamRouteUpsertPostCollection.yaml           |    28 +-
 .../requestBodies/StreamRouteUpsertPutId.yaml      |    26 +-
 .../requestBodies/UpstreamUpsertPatchId.yaml       |    21 +-
 .../UpstreamUpsertPostCollection.yaml              |    35 +-
 .../requestBodies/UpstreamUpsertPutId.yaml         |    57 +
 .../admin-api/components/responses/BadRequest.yaml |    19 +-
 .../admin-api/components/responses/NotFound.yaml   |    12 +-
 .../components/responses/Unauthorized.yaml         |    26 +-
 .../components/schemas/AuthErrorResponse.yaml      |    23 +-
 .../admin-api/components/schemas/AwsSecret.yaml    |    28 +-
 .../components/schemas/CertificateOrReference.yaml |     7 +-
 .../components/schemas/CertificatePem.yaml         |    11 +-
 .../schemas/ConfigValidationConsumer.yaml          |    35 +-
 .../schemas/ConfigValidationConsumerGroup.yaml     |    33 +-
 .../schemas/ConfigValidationCredential.yaml        |    36 +-
 .../schemas/ConfigValidationDocument.yaml          |   126 +
 .../components/schemas/ConfigValidationError.yaml  |    24 +-
 .../schemas/ConfigValidationErrorResponse.yaml     |    17 +-
 .../schemas/ConfigValidationGlobalRule.yaml        |    24 +-
 .../schemas/ConfigValidationPluginConfig.yaml      |    31 +-
 .../components/schemas/ConfigValidationProto.yaml  |    34 +-
 .../components/schemas/ConfigValidationRoute.yaml  |   217 +
 .../components/schemas/ConfigValidationSSL.yaml    |   120 +
 .../schemas/ConfigValidationService.yaml           |    92 +-
 .../schemas/ConfigValidationStreamRoute.yaml       |   116 +
 .../schemas/ConfigValidationUpstream.yaml          |   127 +
 .../admin-api/components/schemas/Consumer.yaml     |    33 +-
 .../components/schemas/ConsumerEnvelope.yaml       |    19 +-
 .../components/schemas/ConsumerGroup.yaml          |    30 +-
 .../components/schemas/ConsumerGroupEnvelope.yaml  |    19 +-
 .../schemas/ConsumerGroupListEnvelope.yaml         |    17 +-
 .../components/schemas/ConsumerGroupPatch.yaml     |    36 +-
 .../components/schemas/ConsumerListEnvelope.yaml   |    17 +-
 .../admin-api/components/schemas/Credential.yaml   |    34 +-
 .../components/schemas/CredentialEnvelope.yaml     |    19 +-
 .../components/schemas/CredentialListEnvelope.yaml |    17 +-
 .../components/schemas/ErrorResponse.yaml          |    17 +-
 .../admin-api/components/schemas/GcpSecret.yaml    |    56 +
 .../admin-api/components/schemas/GlobalRule.yaml   |    21 +-
 .../components/schemas/GlobalRuleEnvelope.yaml     |    19 +-
 .../components/schemas/GlobalRuleListEnvelope.yaml |    17 +-
 .../components/schemas/GlobalRulePatch.yaml        |    21 +-
 .../components/schemas/GraphQLCostDecoration.yaml  |    71 +
 .../schemas/GraphQLCostDecorationCreate.yaml       |    63 +
 .../schemas/GraphQLCostDecorationEnvelope.yaml     |    18 +-
 .../schemas/GraphQLCostDecorationListEnvelope.yaml |    16 +-
 .../schemas/GraphQLCostDecorationPatch.yaml        |    62 +
 .../admin-api/components/schemas/HealthCheck.yaml  |    18 +-
 .../components/schemas/HealthCheckActive.yaml      |    72 +
 .../schemas/HealthCheckActiveHealthy.yaml          |    28 +-
 .../schemas/HealthCheckActiveUnhealthy.yaml        |    56 +-
 .../components/schemas/HealthCheckPassive.yaml     |    19 +-
 .../schemas/HealthCheckPassiveHealthy.yaml         |    41 +-
 .../schemas/HealthCheckPassiveUnhealthy.yaml       |    47 +-
 .../components/schemas/KeepalivePool.yaml          |    20 +-
 .../admin-api/components/schemas/Labels.yaml       |    15 +-
 .../components/schemas/NotFoundResponse.yaml       |    14 +-
 .../admin-api/components/schemas/PluginConfig.yaml |    28 +-
 .../components/schemas/PluginConfigEnvelope.yaml   |    19 +-
 .../schemas/PluginConfigListEnvelope.yaml          |    17 +-
 .../components/schemas/PluginConfigPatch.yaml      |    34 +-
 .../admin-api/components/schemas/Plugins.yaml      |     9 +-
 .../components/schemas/PrivateKeyOrReference.yaml  |     7 +-
 .../components/schemas/PrivateKeyPem.yaml          |    11 +-
 .../admin-api/components/schemas/Proto.yaml        |    32 +-
 .../components/schemas/ProtoEnvelope.yaml          |    19 +-
 .../components/schemas/ProtoListEnvelope.yaml      |    17 +-
 .../admin-api/components/schemas/ResourceId.yaml   |    13 +-
 .../admin-api/components/schemas/Route.yaml        |   706 +
 .../components/schemas/RouteEnvelope.yaml          |    19 +-
 .../components/schemas/RouteListEnvelope.yaml      |    17 +-
 .../admin-api/components/schemas/RoutePatch.yaml   |   679 +
 .../admin-api/components/schemas/RouteRead.yaml    |   268 +
 docs/openapi/admin-api/components/schemas/SSL.yaml |   118 +
 .../admin-api/components/schemas/SSLEnvelope.yaml  |    19 +-
 .../components/schemas/SSLListEnvelope.yaml        |    17 +-
 .../admin-api/components/schemas/SSLPatch.yaml     |   124 +
 .../admin-api/components/schemas/SSLRead.yaml      |    93 +
 .../admin-api/components/schemas/SSLWrite.yaml     |   119 +
 .../components/schemas/SSLWriteEnvelope.yaml       |    19 +-
 .../admin-api/components/schemas/Secret.yaml       |    10 +-
 .../schemas/SecretOrEnvironmentReference.yaml      |     8 +-
 .../admin-api/components/schemas/SecretPatch.yaml  |     7 +-
 .../admin-api/components/schemas/Service.yaml      |   516 +
 .../components/schemas/ServiceEnvelope.yaml        |    19 +-
 .../components/schemas/ServiceListEnvelope.yaml    |    17 +-
 .../admin-api/components/schemas/ServicePatch.yaml |   514 +
 .../admin-api/components/schemas/ServiceRead.yaml  |    78 +
 .../components/schemas/StoredPrivateKeyValue.yaml  |     7 +-
 .../admin-api/components/schemas/StreamRoute.yaml  |   601 +
 .../components/schemas/StreamRouteEnvelope.yaml    |    19 +-
 .../schemas/StreamRouteListEnvelope.yaml           |    17 +-
 .../components/schemas/StreamRouteRead.yaml        |   163 +
 .../admin-api/components/schemas/Timeout.yaml      |    21 +-
 .../admin-api/components/schemas/Upstream.yaml     |   459 +
 .../components/schemas/UpstreamEnvelope.yaml       |    19 +-
 .../components/schemas/UpstreamListEnvelope.yaml   |    17 +-
 .../components/schemas/UpstreamNodeItem.yaml       |    30 +-
 .../components/schemas/UpstreamNodes.yaml          |    11 +-
 .../components/schemas/UpstreamNodesMap.yaml       |    12 +-
 .../components/schemas/UpstreamPatch.yaml          |   435 +
 .../admin-api/components/schemas/UpstreamRead.yaml |   426 +
 .../admin-api/components/schemas/UpstreamTLS.yaml  |    51 +
 .../components/schemas/UpstreamTLSRead.yaml        |    53 +
 .../components/schemas/UpstreamWarmUp.yaml         |    47 +
 .../components/schemas/UpstreamWarmUpPatch.yaml    |    54 +
 .../admin-api/components/schemas/VaultSecret.yaml  |    25 +-
 .../components/securitySchemes/adminKey.yaml       |     9 +-
 .../components/securitySchemes/apiKeyCookie.yaml   |     8 +-
 .../components/securitySchemes/apiKeyQuery.yaml    |     9 +-
 docs/openapi/admin-api/openapi.yaml                |   601 +
 .../openapi/admin-api/paths/apisix-admin.yaml      |    16 +-
 docs/openapi/admin-api/paths/configs-validate.yaml |    72 +
 docs/openapi/admin-api/paths/configs.yaml          |    92 +
 .../paths/consumer-groups-by-id-by-sub-path.yaml   |    55 +
 .../admin-api/paths/consumer-groups-by-id.yaml     |   231 +
 docs/openapi/admin-api/paths/consumer-groups.yaml  |   135 +
 .../consumers-by-username-credentials-by-id.yaml   |   153 +
 .../paths/consumers-by-username-credentials.yaml   |   126 +
 .../admin-api/paths/consumers-by-username.yaml     |   196 +
 docs/openapi/admin-api/paths/consumers.yaml        |   163 +
 .../paths/global-rules-by-id-by-sub-path.yaml      |    55 +
 .../admin-api/paths/global-rules-by-id.yaml        |   223 +
 docs/openapi/admin-api/paths/global-rules.yaml     |   130 +
 .../paths/plugin-configs-by-id-by-sub-path.yaml    |    55 +
 .../admin-api/paths/plugin-configs-by-id.yaml      |   227 +
 docs/openapi/admin-api/paths/plugin-configs.yaml   |   135 +
 .../paths/plugin-metadata-by-plugin-name.yaml      |   155 +
 docs/openapi/admin-api/paths/plugin-metadata.yaml  |    74 +
 .../admin-api/paths/plugins-by-plugin-name.yaml    |    64 +
 docs/openapi/admin-api/paths/plugins-list.yaml     |    51 +
 docs/openapi/admin-api/paths/plugins-reload.yaml   |    45 +
 docs/openapi/admin-api/paths/plugins.yaml          |    63 +
 docs/openapi/admin-api/paths/protos-by-id.yaml     |   187 +
 docs/openapi/admin-api/paths/protos.yaml           |   211 +
 .../admin-api/paths/routes-by-id-by-sub-path.yaml  |    51 +
 docs/openapi/admin-api/paths/routes-by-id.yaml     |   431 +
 docs/openapi/admin-api/paths/routes.yaml           |   279 +
 .../admin-api/paths/schema-by-resource.yaml        |    25 +-
 .../paths/schema-plugins-by-plugin-name.yaml       |    55 +
 .../paths/schema-validate-by-resource.yaml         |    48 +
 .../secrets-by-secret-type-by-id-by-sub-path.yaml  |    63 +
 .../paths/secrets-by-secret-type-by-id.yaml        |   334 +
 .../admin-api/paths/secrets-by-secret-type.yaml    |    44 +
 docs/openapi/admin-api/paths/secrets.yaml          |    94 +
 .../service-graphql-cost-decoration-by-id.yaml     |   168 +
 .../paths/service-graphql-cost-decorations.yaml    |   101 +
 .../paths/services-by-id-by-sub-path.yaml          |    51 +
 docs/openapi/admin-api/paths/services-by-id.yaml   |   251 +
 docs/openapi/admin-api/paths/services.yaml         |   208 +
 .../admin-api/paths/ssls-by-id-by-sub-path.yaml    |    51 +
 docs/openapi/admin-api/paths/ssls-by-id.yaml       |   219 +
 docs/openapi/admin-api/paths/ssls.yaml             |   212 +
 .../admin-api/paths/stream-routes-by-id.yaml       |   162 +
 docs/openapi/admin-api/paths/stream-routes.yaml    |   175 +
 .../paths/upstreams-by-id-by-sub-path.yaml         |    51 +
 docs/openapi/admin-api/paths/upstreams-by-id.yaml  |   315 +
 docs/openapi/admin-api/paths/upstreams.yaml        |   305 +
 docs/zh/latest/CHANGELOG.md                        |   179 +
 docs/zh/latest/FAQ.md                              |     2 +-
 docs/zh/latest/admin-api.md                        |    43 +-
 docs/zh/latest/config.json                         |     6 +-
 docs/zh/latest/control-api.md                      |    68 +-
 docs/zh/latest/discovery/kubernetes.md             |    31 +-
 docs/zh/latest/install-dependencies.md             |     2 +-
 docs/zh/latest/installation-guide.md               |    19 +-
 .../latest/plugins/ai-aliyun-content-moderation.md |    12 +
 docs/zh/latest/plugins/ai-cache.md                 |     3 +
 docs/zh/latest/plugins/ai-prompt-guard.md          |     4 +
 docs/zh/latest/plugins/ai-proxy-multi.md           |    13 +-
 docs/zh/latest/plugins/ai-proxy.md                 |     6 +-
 docs/zh/latest/plugins/ai-rate-limiting.md         |     4 +-
 docs/zh/latest/plugins/authz-keycloak.md           |     2 +
 docs/zh/latest/plugins/basic-auth.md               |     2 +-
 docs/zh/latest/plugins/batch-requests.md           |    18 +-
 docs/zh/latest/plugins/brotli.md                   |     6 +-
 docs/zh/latest/plugins/chaitin-waf.md              |    20 +
 docs/zh/latest/plugins/feishu-auth.md              |     9 +-
 docs/zh/latest/plugins/forward-auth.md             |    39 +-
 docs/zh/latest/plugins/graphql-limit-count.md      |     1 +
 docs/zh/latest/plugins/jwe-decrypt.md              |     8 +-
 docs/zh/latest/plugins/limit-conn.md               |     1 +
 docs/zh/latest/plugins/limit-count.md              |    95 +-
 docs/zh/latest/plugins/limit-req.md                |     1 +
 docs/zh/latest/plugins/oas-validator.md            |     5 +-
 docs/zh/latest/plugins/openapi-to-mcp.md           |   216 +
 docs/zh/latest/plugins/openid-connect.md           |    35 +
 docs/zh/latest/plugins/prometheus.md               |   256 +-
 docs/zh/latest/plugins/proxy-cache.md              |     2 +
 docs/zh/latest/plugins/proxy-rewrite.md            |   111 +-
 docs/zh/latest/plugins/redirect.md                 |     2 +
 docs/zh/latest/plugins/saml-auth.md                |    82 +-
 docs/zh/latest/plugins/traffic-split.md            |     4 +-
 docs/zh/latest/plugins/websocket-proxy.md          |    89 +
 docs/zh/latest/plugins/wolf-rbac.md                |    22 +-
 docs/zh/latest/router-radixtree.md                 |    10 +
 docs/zh/latest/stream-proxy.md                     |   105 +
 docs/zh/latest/terminology/consumer.md             |    31 +-
 docs/zh/latest/terminology/credential.md           |     8 +-
 docs/zh/latest/terminology/global-rule.md          |     6 +-
 docs/zh/latest/terminology/plugin-config.md        |     8 +-
 docs/zh/latest/terminology/plugin-metadata.md      |    20 +-
 docs/zh/latest/terminology/plugin.md               |    23 +-
 t/APISIX.pm                                        |    40 +-
 t/admin/config-validate.t                          |   199 +
 t/admin/graphql-cost-decorations.t                 |   620 +
 t/admin/metadata.t                                 |     4 +-
 t/admin/plugins.t                                  |     8 +-
 .../standalone-stream.t}                           |    53 +-
 t/admin/standalone-wait.t                          |   221 +
 t/admin/standalone.t                               |   128 +-
 t/admin/upstream-slow-start.t                      |   622 +
 t/certs/chain_root.crt                             |    19 +
 t/certs/chain_server.crt                           |    59 +
 t/certs/chain_server.key                           |    28 +
 t/certs/crl_ca.crl                                 |    11 +
 t/certs/crl_ca.crt                                 |    19 +
 t/certs/crl_revoked.crt                            |    20 +
 t/certs/crl_revoked.key                            |    28 +
 t/certs/crl_server.crt                             |    20 +
 t/certs/crl_server.key                             |    28 +
 t/cli/ci-bailout.t                                 |    46 +
 t/cli/ci-kafka-topics.t                            |    74 +
 t/cli/common.sh                                    |    21 +
 t/cli/test_access_log.sh                           |    31 +
 t/cli/test_cmd.sh                                  |     1 +
 t/cli/test_deployment_null_sections.sh             |    82 +
 t/cli/test_etcd_sync_event_handle.sh               |     6 +
 t/cli/test_main.sh                                 |     6 +
 t/cli/test_mcp_bridge.sh                           |    64 -
 t/cli/{test_dubbo.sh => test_openapi_to_mcp.sh}    |    24 +-
 t/cli/test_prometheus_reload.sh                    |   106 +
 t/cli/test_prometheus_stream.sh                    |    43 +-
 t/cli/test_standalone_plugin_reload.sh             |   241 +
 t/cli/test_stream_tls_passthrough.sh               |   449 +
 t/cli/test_upstream_mtls.sh                        |    80 +
 t/control/healthcheck-ai-proxy-multi.t             |   660 +
 t/control/healthcheck.t                            |    59 +-
 t/core/config_etcd.t                               |    31 +-
 t/core/etcd-watch-start-revision.t                 |   147 +
 t/core/etcd-write.t                                |    99 +
 t/core/lrucache.t                                  |   249 +
 t/core/plugin-checker.t                            |   186 +
 t/core/request.t                                   |    99 +
 t/{node/http_host.t => core/resource.t}            |    61 +-
 t/core/{cjson-bundled.t => runtime-version.t}      |    32 +-
 t/core/utils.t                                     |   219 +
 t/discovery/consul-tls.t                           |   346 +
 t/discovery/consul-watch-race.t                    |   168 +
 t/discovery/kubernetes_cluster_ids.t               |   190 +
 t/discovery/kubernetes_list_pagination.t           |   114 +
 t/discovery/nacos2.t                               |   248 +
 .../result-anthropic-deny.sse}                     |     8 +-
 t/fixtures/aliyun/result-anthropic-error.sse       |    18 +
 t/fixtures/aliyun/result-anthropic-null-delta.sse  |    18 +
 .../result-anthropic-safe.sse}                     |    10 +-
 .../aliyun/result-anthropic-stop-sequence.sse      |    18 +
 .../result-anthropic-usage.sse}                    |    10 +-
 t/fixtures/aliyun/result-chat-clean-eof.sse        |     8 +
 t/fixtures/aliyun/result-chat-deny.sse             |     8 +
 t/fixtures/aliyun/result-chat-error.sse            |     8 +
 t/fixtures/aliyun/result-chat-failure.sse          |     8 +
 t/fixtures/aliyun/result-chat-length.sse           |    10 +
 t/fixtures/aliyun/result-chat-multiple-choices.sse |    10 +
 t/fixtures/aliyun/result-chat-multiple-reasons.sse |    10 +
 t/fixtures/aliyun/result-chat-safe.sse             |     8 +
 t/fixtures/aliyun/result-chat-tool_calls.sse       |    10 +
 t/fixtures/aliyun/result-chat-usage.sse            |    10 +
 t/fixtures/aliyun/result-responses-deny.sse        |    24 +
 t/fixtures/aliyun/result-responses-eof.sse         |    21 +
 t/fixtures/aliyun/result-responses-error.sse       |    24 +
 t/fixtures/aliyun/result-responses-failed.sse      |    24 +
 t/fixtures/aliyun/result-responses-incomplete.sse  |    24 +
 t/fixtures/aliyun/result-responses-safe.sse        |    24 +
 t/fixtures/aliyun/result-responses-usage.sse       |    24 +
 ... => messages-streaming-with-cache-in-delta.sse} |     4 +-
 t/fixtures/bedrock/converse-cache-usage-cases.json |   196 +
 .../bedrock/converse-streaming-with-cache.bin      |   Bin 0 -> 600 bytes
 t/fixtures/bedrock/converse-with-cache.json        |     1 +
 ...se => chat-streaming-cache-creation-tokens.sse} |     2 +-
 ...e.sse => chat-streaming-cache-write-tokens.sse} |     2 +-
 ...se => chat-streaming-cache-write-top-level.sse} |     2 +-
 ...cache.sse => chat-streaming-deepseek-cache.sse} |     2 +-
 ....sse => chat-streaming-incomplete-no-usage.sse} |     3 +-
 ...e.sse => chat-streaming-injection-no-usage.sse} |     4 +-
 t/fixtures/openai/chat-usage-audio.json            |    19 +
 t/fixtures/openai/chat-usage-deep.json             |    22 +
 t/fixtures/openai/moderation-eof-no-usage.sse      |     6 +
 t/fixtures/openai/moderation-incomplete-event.sse  |     7 +
 t/fixtures/openai/moderation-no-usage.sse          |     8 +
 t/fixtures/openai/moderation-with-usage.sse        |    10 +
 ...-with-cache.json => responses-usage-clash.json} |     3 +-
 t/jest.config.ts                                   |    30 -
 t/kubernetes/discovery/kubernetes2.t               |     2 +-
 t/kubernetes/discovery/kubernetes3.t               |     8 +-
 t/kubernetes/discovery/kubernetes4.t               |     4 +-
 t/kubernetes/discovery/kubernetes5.t               |   585 +
 t/kubernetes/discovery/kubernetes6.t               |   372 +
 t/kubernetes/discovery/kubernetes7.t               |   135 +
 t/kubernetes/discovery/stream/kubernetes.t         |     2 +-
 t/lib/ai_moderation_result.lua                     |   255 +
 t/lib/k8s_discovery_e2e.lua                        |   235 +
 t/lib/keycloak_saml.lua                            |    40 +
 t/lib/oauth_login.lua                              |    85 +
 t/lib/oidc_introspection.lua                       |   131 +
 t/lib/openapi_to_mcp_fixture.lua                   |   459 +
 .../lib/openapi_to_mcp_ref_fragment.lua            |    36 +-
 t/lib/openapi_to_mcp_swagger2_spec.json            |     1 +
 t/lib/openapi_to_mcp_swagger2_spec.lua             |    71 +
 t/lib/rate_limiting_info.lua                       |   122 +
 t/lib/server.lua                                   |   537 +-
 t/lib/test_redis.lua                               |    18 +-
 t/lib/truncated_sse.lua                            |   142 +
 t/node/client-mtls-encoded-slash.t                 |   174 +
 t/node/client-mtls-openresty.t                     |     8 +-
 t/node/client-mtls.t                               |     8 +-
 .../{grpc-proxy-stream.t => grpc-client-control.t} |   102 +-
 t/node/upstream-mtls.t                             |     4 +-
 t/node/upstream-mtls2.t                            |   355 +
 t/node/upstream-slow-start.t                       |   833 +
 t/node/upstream-tls-trusted-ca.t                   |   372 +
 t/node/upstream-tls2.t                             |   433 +
 t/node/websocket-proxy.spec.ts                     |   863 +
 t/{admin/metadata.t => node/websocket-proxy.t}     |    13 +-
 t/openapi/test_control_validator.py                |   189 +
 t/openapi/test_validator.py                        |    97 +
 t/package.json                                     |    10 +-
 t/plugin/ai-aliyun-content-moderation-result.t     |   322 +
 .../ai-aliyun-content-moderation-stream-usage.t    |   189 +
 t/plugin/ai-cache.t                                |   214 +
 t/plugin/ai-lakera-guard.t                         |   108 +-
 t/plugin/ai-prompt-guard-embeddings.t              |   258 +
 t/plugin/ai-proxy-anthropic.t                      |   324 +-
 t/plugin/ai-proxy-bedrock-single.t                 |    68 +
 t/plugin/ai-proxy-empty-stream.t                   |   109 +
 t/plugin/ai-proxy-flush-fragmented.t               |   332 +
 t/plugin/ai-proxy-multi-retry.t                    |   193 +
 t/plugin/ai-proxy-multi.t                          |   117 +
 t/plugin/ai-proxy-stream-truncated.t               |   442 +
 t/plugin/ai-proxy-vertex-ai.t                      |    11 +-
 t/plugin/ai-rate-limiting-expression.t             |   578 +
 t/plugin/ai-rate-limiting.t                        |   160 +
 t/plugin/authz-keycloak3.t                         |    93 +
 t/plugin/authz-keycloak5.t                         |     2 +-
 t/plugin/aws-lambda.t                              |   100 +
 t/plugin/basic-auth.t                              |   330 +-
 t/plugin/batch-requests.t                          |   266 +
 t/plugin/chaitin-waf-degradation.t                 |   340 +
 t/plugin/chaitin-waf-log-resp.t                    |   413 +
 t/plugin/chaitin-waf-timeout.t                     |    95 +
 t/plugin/chaitin-waf.t                             |   208 +
 t/plugin/csrf.t                                    |    88 +
 t/plugin/data-mask.t                               |   332 +
 t/plugin/dingtalk-auth.t                           |   152 +-
 t/plugin/elasticsearch-logger2.t                   |     6 +
 t/plugin/ext-plugin/response.t                     |   129 +
 t/plugin/feishu-auth.t                             |   168 +-
 t/plugin/forward-auth.t                            |     8 +-
 t/plugin/forward-auth2.t                           |     4 +-
 t/plugin/forward-auth3.t                           |    63 +
 t/plugin/forward-auth4.t                           |   468 +
 t/plugin/graphql-limit-count2.t                    |  2615 +++
 t/plugin/jwe-decrypt.t                             |   397 +-
 t/plugin/kafka-logger.t                            |    49 +-
 t/plugin/{lago.spec.mts => lago.spec.ts}           |     1 -
 t/plugin/lago.t                                    |     4 +-
 t/plugin/limit-count-rate-limiting-info.t          |   287 +
 t/plugin/limit-count-redis-delayed-sync2.t         |   134 +
 t/plugin/limit-count-redis-delayed-sync3.t         |   350 +
 t/plugin/limit-count-redis-sentinel.t              |     7 +-
 t/plugin/limit-count-rules.t                       |   325 +
 t/plugin/limit-count-sliding.t                     |    42 +-
 t/plugin/limit-count-variable.t                    |    66 +-
 t/plugin/limit-count5.t                            |    14 +-
 t/plugin/loggly.t                                  |    19 +
 t/plugin/mcp-bridge.spec.mts                       |    85 -
 t/plugin/mcp-bridge.t                              |    59 -
 t/plugin/mcp/assets/bridge-list-tools.json         |   266 -
 t/plugin/multi-auth.t                              |   227 +
 t/plugin/oas-validator3.t                          |   748 +
 t/plugin/ocsp-stapling.t                           |     4 +-
 t/plugin/openapi-to-mcp-cache.t                    |   403 +
 t/plugin/openapi-to-mcp-concurrent.t               |   124 +
 t/plugin/openapi-to-mcp-e2e-sse-multiworker.t      |    90 +
 t/plugin/openapi-to-mcp-e2e-sse.t                  |   362 +
 t/plugin/openapi-to-mcp-e2e-streamable.t           |   513 +
 t/plugin/openapi-to-mcp-interop.spec.ts            |   137 +
 t/plugin/openapi-to-mcp-interop.t                  |   100 +
 t/plugin/openapi-to-mcp-json-pretty.t              |   135 +
 t/plugin/openapi-to-mcp-openapi-endpoints.t        |   202 +
 t/plugin/openapi-to-mcp-openapi-loader.t           |   346 +
 t/plugin/openapi-to-mcp-openapi-ref.t              |   640 +
 t/plugin/openapi-to-mcp-openapi-schema.t           |   234 +
 t/plugin/openapi-to-mcp-plugin-stack.t             |   210 +
 t/plugin/openapi-to-mcp-protocol.t                 |   174 +
 t/plugin/openapi-to-mcp-session-lifecycle.t        |   260 +
 t/plugin/openapi-to-mcp-swagger2.t                 |   180 +
 t/plugin/openapi-to-mcp-tools-generator.t          |   575 +
 t/plugin/openapi-to-mcp.t                          |  2167 ++
 t/plugin/openapi_to_mcp_concurrent.py              |   156 +
 t/plugin/openapi_to_mcp_cross_route.py             |    50 +
 t/plugin/openapi_to_mcp_harness.py                 |   197 +
 t/plugin/openapi_to_mcp_session_reconnect.py       |    82 +
 t/plugin/openapi_to_mcp_sse_frozen_vars.py         |    58 +
 t/plugin/openapi_to_mcp_sse_multiworker.py         |    76 +
 t/plugin/openapi_to_mcp_sse_roundtrip.py           |    64 +
 t/plugin/openid-connect-claim-validation.t         |   159 +
 t/plugin/openid-connect-introspection.t            |   298 +
 t/plugin/openid-connect-upstream-headers.t         |   539 +
 t/plugin/openid-connect6.t                         |     2 +-
 t/plugin/prometheus-cleanup-interval.t             |   113 +
 t/plugin/prometheus-process-metrics.t              |   210 +
 t/plugin/prometheus-websocket.t                    |   277 +
 t/plugin/proxy-rewrite3.t                          |    61 +
 t/plugin/redirect.t                                |    71 +
 t/plugin/request-decompress.t                      |  1678 ++
 t/plugin/request-id.t                              |   291 +
 t/plugin/saml-auth-options.t                       |   615 +
 t/plugin/saml-auth.t                               |   386 +
 t/plugin/security-warning2.t                       |     6 +-
 t/plugin/skywalking2.t                             |    11 +-
 t/plugin/syslog.t                                  |    77 +
 t/plugin/traffic-label2.t                          |    63 +
 t/plugin/traffic-split5.t                          |   363 +
 t/plugin/ua-restriction.t                          |    24 +
 t/plugin/wolf-rbac.t                               |   195 +-
 t/plugin/workflow.t                                |     2 +-
 t/plugin/workflow2.t                               |   310 +
 t/pnpm-lock.yaml                                   |  3124 +--
 t/router/radixtree-uri-normalized-upstream.t       |   396 +
 t/router/servlet-upstream-uri.t                    |   184 +
 t/secret/aws.t                                     |    39 +
 t/secret/vault.t                                   |    43 +-
 t/stream-node/stream-route-snis.t                  |   565 +
 t/stream-node/tls-passthrough.t                    |   302 +
 t/stream-plugin/prometheus-metrics-service.t       |   667 +
 t/stream-plugin/prometheus-metrics.t               |   318 +-
 t/stream-plugin/prometheus.t                       |     4 +-
 t/tars/discovery/tars.t                            |    20 +
 t/tsconfig.json                                    |     6 +-
 t/utils/gzip.t                                     |   157 +
 t/utils/redis-schema.t                             |    41 +
 .../limit-count-redis2.t => utils/redis-sni.t}     |   271 +-
 .../test-body/cmd/main.go => t/vitest.config.ts    |    22 +-
 t/xds-library/config_xds_2.t                       |     1 +
 .../bundle-admin-api-spec.sh                       |    40 +-
 utils/install-dependencies.sh                      |    26 +-
 utils/linux-install-luarocks.sh                    |     6 +
 .requirements => utils/requirements-admin-api.txt  |    14 +-
 utils/validate-admin-api.py                        |   391 +
 utils/validate-control-api.py                      |   315 +
 717 files changed, 97647 insertions(+), 7423 deletions(-)
 create mode 100644 .github/workflows/admin-api-contract.yml
 create mode 100644 apisix/admin/graphql_cost_decorations.lua
 create mode 100644 apisix/core/websocket.lua
 create mode 100644 apisix/plugins/graphql-limit-count/cost.lua
 create mode 100644 apisix/plugins/graphql-limit-count/decorations.lua
 create mode 100644 apisix/plugins/graphql-limit-count/introspection.lua
 delete mode 100644 apisix/plugins/mcp-bridge.lua
 delete mode 100644 apisix/plugins/mcp/broker/shared_dict.lua
 delete mode 100644 apisix/plugins/mcp/broker/utils.lua
 delete mode 100644 apisix/plugins/mcp/server.lua
 delete mode 100644 apisix/plugins/mcp/server_wrapper.lua
 create mode 100644 apisix/plugins/openapi-to-mcp.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/cache.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/fetch.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/json_pretty.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/jsonrpc.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/openapi/endpoints.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/openapi/loader.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/openapi/ref.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/openapi/schema.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/protocol.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/server.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/session.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/tools/generator.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/tools/handler.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/transport/sse.lua
 create mode 100644 apisix/plugins/openapi-to-mcp/transport/streamable_http.lua
 create mode 100644 apisix/plugins/prometheus/process_metrics.lua
 create mode 100644 apisix/plugins/request-decompress.lua
 create mode 100644 apisix/plugins/websocket-proxy.lua
 create mode 100644 apisix/slow_start.lua
 create mode 100644 apisix/utils/gzip.lua
 delete mode 100755 ci/prepare_filesystem_mcp.sh
 create mode 100644 docs/en/latest/admin-api.json
 create mode 100644 docs/en/latest/control-api.json
 delete mode 100644 docs/en/latest/plugins/mcp-bridge.md
 create mode 100644 docs/en/latest/plugins/openapi-to-mcp.md
 create mode 100644 docs/en/latest/plugins/request-decompress.md
 create mode 100644 docs/en/latest/plugins/websocket-proxy.md
 create mode 100644 docs/en/latest/tutorials/proxy-localai.md
 create mode 100644 docs/openapi/admin-api/README.md
 copy .requirements => 
docs/openapi/admin-api/components/parameters/FilterExpr.yaml (81%)
 copy .requirements => docs/openapi/admin-api/components/parameters/Force.yaml 
(82%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/IdInPath.yaml (86%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/LabelFilter.yaml (85%)
 copy ci/pod/opa/echo.rego => 
docs/openapi/admin-api/components/parameters/NameFilter.yaml (87%)
 copy .requirements => docs/openapi/admin-api/components/parameters/Page.yaml 
(78%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/PageSize.yaml (75%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/PluginListAll.yaml (82%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/PluginNameInPath.yaml (86%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/ResourceKindInPath.yaml (72%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/SchemaNameInPath.yaml (78%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/SecretType.yaml (83%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/Subsystem.yaml (84%)
 copy .requirements => docs/openapi/admin-api/components/parameters/Ttl.yaml 
(74%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/UriFilter.yaml (85%)
 copy .requirements => 
docs/openapi/admin-api/components/parameters/UsernameInPath.yaml (82%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/ConsumerGroupUpsertPatchId.yaml 
(57%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/ConsumerGroupUpsertPutId.yaml 
(53%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/ConsumerUpsertPutCollection.yaml
 (52%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/CredentialUpsert.yaml (57%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/GlobalRuleUpsertPatchId.yaml 
(57%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/GlobalRuleUpsertPutId.yaml (54%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/GraphQLCostDecorationPatchBody.yaml
 (58%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/PluginConfigUpsertPatchId.yaml 
(57%)
 copy .editorconfig => 
docs/openapi/admin-api/components/requestBodies/PluginConfigUpsertPutId.yaml 
(51%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/PluginMetadataUpsert.yaml (56%)
 create mode 100644 
docs/openapi/admin-api/components/requestBodies/ProtoUpsertPostCollection.yaml
 create mode 100644 
docs/openapi/admin-api/components/requestBodies/ProtoUpsertPutId.yaml
 copy .editorconfig => 
docs/openapi/admin-api/components/requestBodies/RouteUpsertPatchId.yaml (50%)
 create mode 100644 
docs/openapi/admin-api/components/requestBodies/RouteUpsertPostCollection.yaml
 create mode 100644 
docs/openapi/admin-api/components/requestBodies/RouteUpsertPutId.yaml
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/SecretUpsertPatchCollection.yaml
 (61%)
 create mode 100644 
docs/openapi/admin-api/components/requestBodies/SecretUpsertPutCollection.yaml
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/ServiceUpsertPatchId.yaml (60%)
 copy .editorconfig => 
docs/openapi/admin-api/components/requestBodies/ServiceUpsertPostCollection.yaml
 (50%)
 create mode 100644 
docs/openapi/admin-api/components/requestBodies/ServiceUpsertPutId.yaml
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/SslUpsertPatchId.yaml (62%)
 create mode 100644 
docs/openapi/admin-api/components/requestBodies/SslUpsertPostCollection.yaml
 create mode 100644 
docs/openapi/admin-api/components/requestBodies/SslUpsertPutId.yaml
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/StreamRouteUpsertPostCollection.yaml
 (52%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/StreamRouteUpsertPutId.yaml 
(54%)
 copy .requirements => 
docs/openapi/admin-api/components/requestBodies/UpstreamUpsertPatchId.yaml (62%)
 copy conf/apisix.yaml => 
docs/openapi/admin-api/components/requestBodies/UpstreamUpsertPostCollection.yaml
 (52%)
 create mode 100644 
docs/openapi/admin-api/components/requestBodies/UpstreamUpsertPutId.yaml
 copy .requirements => 
docs/openapi/admin-api/components/responses/BadRequest.yaml (61%)
 copy .requirements => 
docs/openapi/admin-api/components/responses/NotFound.yaml (79%)
 copy .requirements => 
docs/openapi/admin-api/components/responses/Unauthorized.yaml (53%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/AuthErrorResponse.yaml (62%)
 copy .requirements => docs/openapi/admin-api/components/schemas/AwsSecret.yaml 
(55%)
 copy ci/pod/opa/echo.rego => 
docs/openapi/admin-api/components/schemas/CertificateOrReference.yaml (90%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/CertificatePem.yaml (83%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConfigValidationConsumer.yaml (60%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConfigValidationConsumerGroup.yaml 
(63%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConfigValidationCredential.yaml (57%)
 create mode 100644 
docs/openapi/admin-api/components/schemas/ConfigValidationDocument.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConfigValidationError.yaml (59%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConfigValidationErrorResponse.yaml 
(78%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConfigValidationGlobalRule.yaml (71%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConfigValidationPluginConfig.yaml 
(65%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConfigValidationProto.yaml (61%)
 create mode 100644 
docs/openapi/admin-api/components/schemas/ConfigValidationRoute.yaml
 create mode 100644 
docs/openapi/admin-api/components/schemas/ConfigValidationSSL.yaml
 copy t/kubernetes/configs/endpointslices.yaml => 
docs/openapi/admin-api/components/schemas/ConfigValidationService.yaml (50%)
 create mode 100644 
docs/openapi/admin-api/components/schemas/ConfigValidationStreamRoute.yaml
 create mode 100644 
docs/openapi/admin-api/components/schemas/ConfigValidationUpstream.yaml
 copy .requirements => docs/openapi/admin-api/components/schemas/Consumer.yaml 
(61%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConsumerEnvelope.yaml (76%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConsumerGroup.yaml (65%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConsumerGroupEnvelope.yaml (75%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConsumerGroupListEnvelope.yaml (78%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConsumerGroupPatch.yaml (53%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ConsumerListEnvelope.yaml (79%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/Credential.yaml (58%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/CredentialEnvelope.yaml (76%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/CredentialListEnvelope.yaml (78%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ErrorResponse.yaml (67%)
 create mode 100644 docs/openapi/admin-api/components/schemas/GcpSecret.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/GlobalRule.yaml (74%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/GlobalRuleEnvelope.yaml (76%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/GlobalRuleListEnvelope.yaml (78%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/GlobalRulePatch.yaml (64%)
 create mode 100644 
docs/openapi/admin-api/components/schemas/GraphQLCostDecoration.yaml
 create mode 100644 
docs/openapi/admin-api/components/schemas/GraphQLCostDecorationCreate.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/GraphQLCostDecorationEnvelope.yaml 
(80%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/GraphQLCostDecorationListEnvelope.yaml
 (82%)
 create mode 100644 
docs/openapi/admin-api/components/schemas/GraphQLCostDecorationPatch.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/HealthCheck.yaml (77%)
 create mode 100644 
docs/openapi/admin-api/components/schemas/HealthCheckActive.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/HealthCheckActiveHealthy.yaml (67%)
 copy ci/pod/otelcol-contrib/config.yaml => 
docs/openapi/admin-api/components/schemas/HealthCheckActiveUnhealthy.yaml (57%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/HealthCheckPassive.yaml (75%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/HealthCheckPassiveHealthy.yaml (60%)
 copy ci/pod/otelcol-contrib/config.yaml => 
docs/openapi/admin-api/components/schemas/HealthCheckPassiveUnhealthy.yaml (62%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/KeepalivePool.yaml (76%)
 copy .requirements => docs/openapi/admin-api/components/schemas/Labels.yaml 
(77%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/NotFoundResponse.yaml (77%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/PluginConfig.yaml (67%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/PluginConfigEnvelope.yaml (75%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/PluginConfigListEnvelope.yaml (78%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/PluginConfigPatch.yaml (55%)
 copy .requirements => docs/openapi/admin-api/components/schemas/Plugins.yaml 
(76%)
 copy ci/pod/opa/echo.rego => 
docs/openapi/admin-api/components/schemas/PrivateKeyOrReference.yaml (90%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/PrivateKeyPem.yaml (85%)
 copy .requirements => docs/openapi/admin-api/components/schemas/Proto.yaml 
(63%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ProtoEnvelope.yaml (76%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ProtoListEnvelope.yaml (79%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ResourceId.yaml (83%)
 create mode 100644 docs/openapi/admin-api/components/schemas/Route.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/RouteEnvelope.yaml (76%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/RouteListEnvelope.yaml (79%)
 create mode 100644 docs/openapi/admin-api/components/schemas/RoutePatch.yaml
 create mode 100644 docs/openapi/admin-api/components/schemas/RouteRead.yaml
 create mode 100644 docs/openapi/admin-api/components/schemas/SSL.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/SSLEnvelope.yaml (76%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/SSLListEnvelope.yaml (79%)
 create mode 100644 docs/openapi/admin-api/components/schemas/SSLPatch.yaml
 create mode 100644 docs/openapi/admin-api/components/schemas/SSLRead.yaml
 create mode 100644 docs/openapi/admin-api/components/schemas/SSLWrite.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/SSLWriteEnvelope.yaml (72%)
 copy .requirements => docs/openapi/admin-api/components/schemas/Secret.yaml 
(78%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/SecretOrEnvironmentReference.yaml 
(82%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/SecretPatch.yaml (84%)
 create mode 100644 docs/openapi/admin-api/components/schemas/Service.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ServiceEnvelope.yaml (76%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/ServiceListEnvelope.yaml (79%)
 create mode 100644 docs/openapi/admin-api/components/schemas/ServicePatch.yaml
 create mode 100644 docs/openapi/admin-api/components/schemas/ServiceRead.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/StoredPrivateKeyValue.yaml (79%)
 create mode 100644 docs/openapi/admin-api/components/schemas/StreamRoute.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/StreamRouteEnvelope.yaml (75%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/StreamRouteListEnvelope.yaml (78%)
 create mode 100644 
docs/openapi/admin-api/components/schemas/StreamRouteRead.yaml
 copy .requirements => docs/openapi/admin-api/components/schemas/Timeout.yaml 
(76%)
 create mode 100644 docs/openapi/admin-api/components/schemas/Upstream.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/UpstreamEnvelope.yaml (75%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/UpstreamListEnvelope.yaml (79%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/UpstreamNodeItem.yaml (62%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/UpstreamNodes.yaml (85%)
 copy .requirements => 
docs/openapi/admin-api/components/schemas/UpstreamNodesMap.yaml (85%)
 create mode 100644 docs/openapi/admin-api/components/schemas/UpstreamPatch.yaml
 create mode 100644 docs/openapi/admin-api/components/schemas/UpstreamRead.yaml
 create mode 100644 docs/openapi/admin-api/components/schemas/UpstreamTLS.yaml
 create mode 100644 
docs/openapi/admin-api/components/schemas/UpstreamTLSRead.yaml
 create mode 100644 
docs/openapi/admin-api/components/schemas/UpstreamWarmUp.yaml
 create mode 100644 
docs/openapi/admin-api/components/schemas/UpstreamWarmUpPatch.yaml
 copy .requirements => 
docs/openapi/admin-api/components/schemas/VaultSecret.yaml (60%)
 copy .requirements => 
docs/openapi/admin-api/components/securitySchemes/adminKey.yaml (78%)
 copy ci/pod/opa/echo.rego => 
docs/openapi/admin-api/components/securitySchemes/apiKeyCookie.yaml (90%)
 copy .requirements => 
docs/openapi/admin-api/components/securitySchemes/apiKeyQuery.yaml (81%)
 create mode 100644 docs/openapi/admin-api/openapi.yaml
 copy .requirements => docs/openapi/admin-api/paths/apisix-admin.yaml (70%)
 create mode 100644 docs/openapi/admin-api/paths/configs-validate.yaml
 create mode 100644 docs/openapi/admin-api/paths/configs.yaml
 create mode 100644 
docs/openapi/admin-api/paths/consumer-groups-by-id-by-sub-path.yaml
 create mode 100644 docs/openapi/admin-api/paths/consumer-groups-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/consumer-groups.yaml
 create mode 100644 
docs/openapi/admin-api/paths/consumers-by-username-credentials-by-id.yaml
 create mode 100644 
docs/openapi/admin-api/paths/consumers-by-username-credentials.yaml
 create mode 100644 docs/openapi/admin-api/paths/consumers-by-username.yaml
 create mode 100644 docs/openapi/admin-api/paths/consumers.yaml
 create mode 100644 
docs/openapi/admin-api/paths/global-rules-by-id-by-sub-path.yaml
 create mode 100644 docs/openapi/admin-api/paths/global-rules-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/global-rules.yaml
 create mode 100644 
docs/openapi/admin-api/paths/plugin-configs-by-id-by-sub-path.yaml
 create mode 100644 docs/openapi/admin-api/paths/plugin-configs-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/plugin-configs.yaml
 create mode 100644 
docs/openapi/admin-api/paths/plugin-metadata-by-plugin-name.yaml
 create mode 100644 docs/openapi/admin-api/paths/plugin-metadata.yaml
 create mode 100644 docs/openapi/admin-api/paths/plugins-by-plugin-name.yaml
 create mode 100644 docs/openapi/admin-api/paths/plugins-list.yaml
 create mode 100644 docs/openapi/admin-api/paths/plugins-reload.yaml
 create mode 100644 docs/openapi/admin-api/paths/plugins.yaml
 create mode 100644 docs/openapi/admin-api/paths/protos-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/protos.yaml
 create mode 100644 docs/openapi/admin-api/paths/routes-by-id-by-sub-path.yaml
 create mode 100644 docs/openapi/admin-api/paths/routes-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/routes.yaml
 copy .requirements => docs/openapi/admin-api/paths/schema-by-resource.yaml 
(56%)
 create mode 100644 
docs/openapi/admin-api/paths/schema-plugins-by-plugin-name.yaml
 create mode 100644 
docs/openapi/admin-api/paths/schema-validate-by-resource.yaml
 create mode 100644 
docs/openapi/admin-api/paths/secrets-by-secret-type-by-id-by-sub-path.yaml
 create mode 100644 
docs/openapi/admin-api/paths/secrets-by-secret-type-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/secrets-by-secret-type.yaml
 create mode 100644 docs/openapi/admin-api/paths/secrets.yaml
 create mode 100644 
docs/openapi/admin-api/paths/service-graphql-cost-decoration-by-id.yaml
 create mode 100644 
docs/openapi/admin-api/paths/service-graphql-cost-decorations.yaml
 create mode 100644 docs/openapi/admin-api/paths/services-by-id-by-sub-path.yaml
 create mode 100644 docs/openapi/admin-api/paths/services-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/services.yaml
 create mode 100644 docs/openapi/admin-api/paths/ssls-by-id-by-sub-path.yaml
 create mode 100644 docs/openapi/admin-api/paths/ssls-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/ssls.yaml
 create mode 100644 docs/openapi/admin-api/paths/stream-routes-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/stream-routes.yaml
 create mode 100644 
docs/openapi/admin-api/paths/upstreams-by-id-by-sub-path.yaml
 create mode 100644 docs/openapi/admin-api/paths/upstreams-by-id.yaml
 create mode 100644 docs/openapi/admin-api/paths/upstreams.yaml
 create mode 100644 docs/zh/latest/plugins/openapi-to-mcp.md
 create mode 100644 docs/zh/latest/plugins/websocket-proxy.md
 create mode 100644 t/admin/graphql-cost-decorations.t
 copy t/{node/upstream-domain-with-special-ipv6-dns.t => 
admin/standalone-stream.t} (62%)
 create mode 100644 t/admin/standalone-wait.t
 create mode 100644 t/admin/upstream-slow-start.t
 create mode 100644 t/certs/chain_root.crt
 create mode 100644 t/certs/chain_server.crt
 create mode 100644 t/certs/chain_server.key
 create mode 100644 t/certs/crl_ca.crl
 create mode 100644 t/certs/crl_ca.crt
 create mode 100644 t/certs/crl_revoked.crt
 create mode 100644 t/certs/crl_revoked.key
 create mode 100644 t/certs/crl_server.crt
 create mode 100644 t/certs/crl_server.key
 create mode 100644 t/cli/ci-bailout.t
 create mode 100644 t/cli/ci-kafka-topics.t
 create mode 100755 t/cli/test_deployment_null_sections.sh
 delete mode 100755 t/cli/test_mcp_bridge.sh
 copy t/cli/{test_dubbo.sh => test_openapi_to_mcp.sh} (63%)
 create mode 100755 t/cli/test_standalone_plugin_reload.sh
 create mode 100755 t/cli/test_stream_tls_passthrough.sh
 create mode 100644 t/control/healthcheck-ai-proxy-multi.t
 create mode 100644 t/core/etcd-watch-start-revision.t
 create mode 100644 t/core/plugin-checker.t
 copy t/{node/http_host.t => core/resource.t} (54%)
 copy t/core/{cjson-bundled.t => runtime-version.t} (64%)
 create mode 100644 t/discovery/consul-tls.t
 create mode 100644 t/discovery/consul-watch-race.t
 create mode 100644 t/discovery/kubernetes_cluster_ids.t
 create mode 100644 t/discovery/kubernetes_list_pagination.t
 copy t/fixtures/{protocol-conversion/anthropic-mismatch.sse => 
aliyun/result-anthropic-deny.sse} (51%)
 create mode 100644 t/fixtures/aliyun/result-anthropic-error.sse
 create mode 100644 t/fixtures/aliyun/result-anthropic-null-delta.sse
 copy t/fixtures/{anthropic/messages-streaming.sse => 
aliyun/result-anthropic-safe.sse} (54%)
 create mode 100644 t/fixtures/aliyun/result-anthropic-stop-sequence.sse
 copy t/fixtures/{anthropic/messages-streaming.sse => 
aliyun/result-anthropic-usage.sse} (54%)
 create mode 100644 t/fixtures/aliyun/result-chat-clean-eof.sse
 create mode 100644 t/fixtures/aliyun/result-chat-deny.sse
 create mode 100644 t/fixtures/aliyun/result-chat-error.sse
 create mode 100644 t/fixtures/aliyun/result-chat-failure.sse
 create mode 100644 t/fixtures/aliyun/result-chat-length.sse
 create mode 100644 t/fixtures/aliyun/result-chat-multiple-choices.sse
 create mode 100644 t/fixtures/aliyun/result-chat-multiple-reasons.sse
 create mode 100644 t/fixtures/aliyun/result-chat-safe.sse
 create mode 100644 t/fixtures/aliyun/result-chat-tool_calls.sse
 create mode 100644 t/fixtures/aliyun/result-chat-usage.sse
 create mode 100644 t/fixtures/aliyun/result-responses-deny.sse
 create mode 100644 t/fixtures/aliyun/result-responses-eof.sse
 create mode 100644 t/fixtures/aliyun/result-responses-error.sse
 create mode 100644 t/fixtures/aliyun/result-responses-failed.sse
 create mode 100644 t/fixtures/aliyun/result-responses-incomplete.sse
 create mode 100644 t/fixtures/aliyun/result-responses-safe.sse
 create mode 100644 t/fixtures/aliyun/result-responses-usage.sse
 copy t/fixtures/anthropic/{messages-streaming-with-cache.sse => 
messages-streaming-with-cache-in-delta.sse} (68%)
 create mode 100644 t/fixtures/bedrock/converse-cache-usage-cases.json
 create mode 100644 t/fixtures/bedrock/converse-streaming-with-cache.bin
 create mode 100644 t/fixtures/bedrock/converse-with-cache.json
 copy t/fixtures/openai/{chat-streaming-with-cache.sse => 
chat-streaming-cache-creation-tokens.sse} (74%)
 copy t/fixtures/openai/{chat-streaming-with-cache.sse => 
chat-streaming-cache-write-tokens.sse} (74%)
 copy t/fixtures/openai/{chat-streaming-with-cache.sse => 
chat-streaming-cache-write-top-level.sse} (61%)
 copy t/fixtures/openai/{chat-streaming-with-cache.sse => 
chat-streaming-deepseek-cache.sse} (74%)
 copy t/fixtures/openai/{chat-streaming-no-usage.sse => 
chat-streaming-incomplete-no-usage.sse} (97%)
 copy t/fixtures/openai/{chat-streaming-no-usage.sse => 
chat-streaming-injection-no-usage.sse} (83%)
 create mode 100644 t/fixtures/openai/chat-usage-audio.json
 create mode 100644 t/fixtures/openai/chat-usage-deep.json
 create mode 100644 t/fixtures/openai/moderation-eof-no-usage.sse
 create mode 100644 t/fixtures/openai/moderation-incomplete-event.sse
 create mode 100644 t/fixtures/openai/moderation-no-usage.sse
 create mode 100644 t/fixtures/openai/moderation-with-usage.sse
 copy t/fixtures/openai/{responses-with-cache.json => 
responses-usage-clash.json} (90%)
 delete mode 100644 t/jest.config.ts
 create mode 100644 t/kubernetes/discovery/kubernetes5.t
 create mode 100644 t/kubernetes/discovery/kubernetes6.t
 create mode 100644 t/kubernetes/discovery/kubernetes7.t
 create mode 100644 t/lib/ai_moderation_result.lua
 create mode 100644 t/lib/k8s_discovery_e2e.lua
 create mode 100644 t/lib/oauth_login.lua
 create mode 100644 t/lib/oidc_introspection.lua
 create mode 100644 t/lib/openapi_to_mcp_fixture.lua
 rename apisix/plugins/mcp/transport/sse.lua => 
t/lib/openapi_to_mcp_ref_fragment.lua (52%)
 create mode 100644 t/lib/openapi_to_mcp_swagger2_spec.json
 create mode 100644 t/lib/openapi_to_mcp_swagger2_spec.lua
 create mode 100644 t/lib/rate_limiting_info.lua
 create mode 100644 t/lib/truncated_sse.lua
 create mode 100644 t/node/client-mtls-encoded-slash.t
 copy t/node/{grpc-proxy-stream.t => grpc-client-control.t} (52%)
 create mode 100644 t/node/upstream-mtls2.t
 create mode 100644 t/node/upstream-slow-start.t
 create mode 100644 t/node/upstream-tls-trusted-ca.t
 create mode 100644 t/node/upstream-tls2.t
 create mode 100644 t/node/websocket-proxy.spec.ts
 copy t/{admin/metadata.t => node/websocket-proxy.t} (81%)
 create mode 100644 t/openapi/test_control_validator.py
 create mode 100644 t/openapi/test_validator.py
 create mode 100644 t/plugin/ai-aliyun-content-moderation-result.t
 create mode 100644 t/plugin/ai-aliyun-content-moderation-stream-usage.t
 create mode 100644 t/plugin/ai-prompt-guard-embeddings.t
 create mode 100644 t/plugin/ai-proxy-empty-stream.t
 create mode 100644 t/plugin/ai-proxy-flush-fragmented.t
 create mode 100644 t/plugin/ai-proxy-stream-truncated.t
 create mode 100644 t/plugin/chaitin-waf-degradation.t
 create mode 100644 t/plugin/chaitin-waf-log-resp.t
 create mode 100644 t/plugin/forward-auth4.t
 create mode 100644 t/plugin/graphql-limit-count2.t
 rename t/plugin/{lago.spec.mts => lago.spec.ts} (99%)
 create mode 100644 t/plugin/limit-count-rate-limiting-info.t
 create mode 100644 t/plugin/limit-count-redis-delayed-sync3.t
 delete mode 100644 t/plugin/mcp-bridge.spec.mts
 delete mode 100644 t/plugin/mcp-bridge.t
 delete mode 100644 t/plugin/mcp/assets/bridge-list-tools.json
 create mode 100644 t/plugin/openapi-to-mcp-cache.t
 create mode 100644 t/plugin/openapi-to-mcp-concurrent.t
 create mode 100644 t/plugin/openapi-to-mcp-e2e-sse-multiworker.t
 create mode 100644 t/plugin/openapi-to-mcp-e2e-sse.t
 create mode 100644 t/plugin/openapi-to-mcp-e2e-streamable.t
 create mode 100644 t/plugin/openapi-to-mcp-interop.spec.ts
 create mode 100644 t/plugin/openapi-to-mcp-interop.t
 create mode 100644 t/plugin/openapi-to-mcp-json-pretty.t
 create mode 100644 t/plugin/openapi-to-mcp-openapi-endpoints.t
 create mode 100644 t/plugin/openapi-to-mcp-openapi-loader.t
 create mode 100644 t/plugin/openapi-to-mcp-openapi-ref.t
 create mode 100644 t/plugin/openapi-to-mcp-openapi-schema.t
 create mode 100644 t/plugin/openapi-to-mcp-plugin-stack.t
 create mode 100644 t/plugin/openapi-to-mcp-protocol.t
 create mode 100644 t/plugin/openapi-to-mcp-session-lifecycle.t
 create mode 100644 t/plugin/openapi-to-mcp-swagger2.t
 create mode 100644 t/plugin/openapi-to-mcp-tools-generator.t
 create mode 100644 t/plugin/openapi-to-mcp.t
 create mode 100644 t/plugin/openapi_to_mcp_concurrent.py
 create mode 100644 t/plugin/openapi_to_mcp_cross_route.py
 create mode 100644 t/plugin/openapi_to_mcp_harness.py
 create mode 100644 t/plugin/openapi_to_mcp_session_reconnect.py
 create mode 100644 t/plugin/openapi_to_mcp_sse_frozen_vars.py
 create mode 100644 t/plugin/openapi_to_mcp_sse_multiworker.py
 create mode 100644 t/plugin/openapi_to_mcp_sse_roundtrip.py
 create mode 100644 t/plugin/openid-connect-introspection.t
 create mode 100644 t/plugin/openid-connect-upstream-headers.t
 create mode 100644 t/plugin/prometheus-cleanup-interval.t
 create mode 100644 t/plugin/prometheus-process-metrics.t
 create mode 100644 t/plugin/prometheus-websocket.t
 create mode 100644 t/plugin/request-decompress.t
 create mode 100644 t/plugin/saml-auth-options.t
 create mode 100644 t/router/radixtree-uri-normalized-upstream.t
 create mode 100644 t/router/servlet-upstream-uri.t
 create mode 100644 t/stream-node/stream-route-snis.t
 create mode 100644 t/stream-node/tls-passthrough.t
 create mode 100644 t/stream-plugin/prometheus-metrics-service.t
 create mode 100644 t/utils/gzip.t
 copy t/{plugin/limit-count-redis2.t => utils/redis-sni.t} (56%)
 copy ci/pod/openfunction/function-example/test-body/cmd/main.go => 
t/vitest.config.ts (79%)
 copy .github/workflows/license-checker.yml => utils/bundle-admin-api-spec.sh 
(50%)
 mode change 100644 => 100755
 copy .requirements => utils/requirements-admin-api.txt (70%)
 create mode 100644 utils/validate-admin-api.py
 create mode 100644 utils/validate-control-api.py

Reply via email to