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

kayx23 pushed a change to branch docs/update-deb-repo-debian12
in repository https://gitbox.apache.org/repos/asf/apisix.git


 discard aa7559e92 docs: update Debian APT repo instructions
    omit 55066b4f7 docs: update zh ingress controller plugin examples
    omit 63b5c9870 docs: refresh ingress controller plugin examples
     add 52d9d92e4 fix: sort AI proxy upstream request JSON keys (#13461)
     add e1053faa7 fix(opa): apply send_headers_upstream for headers absent 
from OPA response (#13433)
     add 473a18976 fix(security): encrypt missing secret-like plugin fields at 
rest (#13389)
     add 2c1771d74 docs: update AI plugin order in config example (#13383)
     add 94f578a11 fix(cas-auth): harden session and callback handling (#13427)
     add 2d3d798be docs: update plugin examples for ingress controller 2.1.0 
changes (#13462)
     add eb31ea4c7 docs: remove stale admin key default examples (#13448)
     add 2330c09ab fix(jwe-decrypt): reject tokens that fail to decrypt (#13404)
     add 0048226a4 feat: add proxy-buffering plugin (#13446)
     add 6d320c09f fix(cas-auth): return 400 instead of 500 for SLO POST with 
empty body (#13471)
     add fbf510669 fix: harden cors, multi-auth and body-transformer plugins 
against malformed requests (#13469)
     add 4cc1eaf3f feat(openid-connect): make client_secret optional for local 
JWT verification modes (#13472)
     add c730a745c feat(jwe-decrypt): remove server-side token generation 
endpoint (#13464)
     add 6e877eb44 fix(limit): atomic redis commits and resolved-var validation 
(#13467)
     add 11a9dd1b3 fix test numbering and spacing in jwe-decrypt.t (#13485)
     add e99fb63fe fix(ai-proxy): map upstream LLM timeouts to 504 instead of 
500 (#13481)
     add 7f2eaa7c1 feat(hmac-auth): add max_req_body_size to bound request body 
during validation (#13478)
     add b6f80f5d4 change(auth): require configured jwt claims, harden empty 
claims_to_verify and key-auth anonymous fallback (#13468)
     add b9c0c076e feat(openid-connect): update session config to support 
lua-resty-session, fixes deprecated session.cookie.lifetime (#13178)
     add 100736686 feat(ai-proxy-multi): add max_retries and 
retry_on_failure_within_ms for fallback (#13495)
     add 7f2953e96 feat: add max_req_body_size to bound client request body in 
forward-auth and ai-proxy (#13466)
     add 39eda840f test(openid-connect): cover session cookie_name and 
absolute_timeout end-to-end (#13496)
     add 75bb63148 fix(proxy-mirror): keep the original method path when 
mirroring gRPC requests (#13499)
     add dc4d52b5d feat(batch-requests): bound pipeline item count, timeout, 
and request schema (#13492)
     add bf91696cc fix(xrpc): bound redis command-line preallocation size 
(#13483)
     add e2671c49b fix(dingtalk-auth): clear client-supplied X-Userinfo before 
authentication (#13491)
     add 418a8c697 feat(prometheus): add built-in LLM histograms for TTFT and 
token distribution (#13487)
     add bf9091acd feat(ai-proxy): add built-in nginx variables for LLM 
observability (#13477)
     add 9d3c66d24 fix(upstream): use `cert` and `key` instead of stale `ok` in 
mTLS error checks (#13442)
     add 993ca77d7 fix(authz-casdoor): expire the session when the Casdoor 
token expires (#13500)
     add f27d6f900 fix(request-id): generate nanoid with CSPRNG to avoid 
duplicate and malformed ids (#13508)
     add 9995d4c81 test(xrpc): fix first-run failures in redis.t and 
prometheus.t (#13507)
     add 5270be15e fix(ai-proxy-multi): refresh cached server picker once 
health checkers are created (#13505)
     add cb72d0eb6 fix(ai-proxy-multi): keep existing query string in health 
check path; cover construct_upstream mutation contract (#13506)
     add b50930158 feat(ai-plugins): add fail_mode for Consumer-bound protocol 
handling (#13489)
     add eb1af76f8 fix: avoid 503 error after dns service temporary fail 
(#13137)
     add e4ace03c8 feat(limit-count): add Redis Sentinel backend, sliding 
window and delayed sync support (#13443)
     add 4cd2dc2ac fix: remove credential-leaking debug logs in logger plugins 
(#13502)
     add b86a273f4 fix(cli): simple add IPv6 listen support for PROXY Protocol 
(#12859)
     add 8a5e11344 fix(body-transformer): rebuild table in remove_namespace 
instead of mutating during traversal (#13522)
     add 86ac31202 fix(kafka-logger): support api_version so brokers can store 
message timestamps (#13521)
     add 80b94960c fix(aws-lambda): build SigV4 canonical query string per spec 
(#13520)
     add b1d91f194 fix(consul): one invalid node should not discard the 
remaining nodes of the service (#13513)
     add a76f9c43a fix(workflow): tolerate missing _workflow_cache in log phase 
(#13512)
     add 0cf8b6ace fix(plugin): ignore plugin_metadata of disabled or unknown 
plugins (#13514)
     add 46646a2d7 test(log-rotate): deflake the disable-via-hot-reload case 
(#13536)
     add e0c879b58 fix(xrpc): stream routes with xRPC protocols fail 
check_schema in HTTP workers when admin is disabled (#13515)
     add 8df43e22e fix(admin): encrypt_fields get double-encrypted on every 
PATCH (#13525)
     add 5750d4fdd fix(secret): aws secret manager fails when the secret name 
contains a slash (#13519)
     add 4d13c0f50 fix(core.request): set_header must update the cached headers 
with normalized key (#13517)
     add 85e1e4d0e fix: redis connections with different database/credentials 
must not share a keepalive pool (#13516)
     add 779948893 fix(graphql-proxy-cache): clear all Vary variants on PURGE 
(#13523)
     add 73bc3a436 fix: use description instead of title for field-level schema 
doc strings (#13547)
     add 6749048b0 fix(limit-count): isolate redis-sentinel keepalive pools by 
database and credentials (#13553)
     add 5a0e8cb4b fix: reduce vulnerable test dependencies (#13554)
     add d07f5364e fix(brotli): don't log expected non-standard ETag at error 
level (#13545)
     add f60432417 fix(ai-proxy): forward client method and query string for 
passthrough (#13546)
     add d5004d1fa docs(ai-proxy): restore max_stream_duration_ms and 
max_response_bytes (#13539)
     add 6fb2f0947 fix(elasticsearch-logger): guard os.date against invalid 
index template (#13542)
     add 1c81e5ed0 fix(nacos): declare nacos-stream shared dict in the stream 
subsystem (#13541)
     add 638a87929 fix(jwt-auth): reject malformed JWT signature instead of 
erroring (#13518)
     add d0929e92d feat(prometheus): support disabling labels via plugin 
metadata to reduce cardinality (#13202)
     add ab8db465c fix(ci): verify LuaRocks tarball checksum before install 
(#13526)
     add 3584284c3 fix(acl): correctly evaluate multi-match JSONPath labels 
(#13527)
     add 0180ccbcd docs(ai-proxy): document client request header forwarding 
behavior (#13422)
     add 533dc2e61 docs: fix mocking config note and invalid JSON in 
elasticsearch-logger examples (#13543)
     add 24511776e chore: release 3.17.0 (#13503)
     add b55c59a2a chore: ignore stray files left in the repo root by local 
test runs (#13538)
     add 874572e54 feat: support per-port PROXY protocol for stream TCP proxy 
(#13561)
     add ec981038c fix: keep chash ring stable during health changes (#13532)
     add 93ace5d5c fix(ai-proxy): preserve upstream 429/5xx error response body 
(#13565)
     add 9a335dd08 refactor: decouple generic data encryption from ssl.lua 
(#13564)
     add 6f62be4f9 fix(loki-logger): resolve log labels per request to avoid 
label leakage (#13562)
     add b79329d86 feat: add log_format_extra to enrich the default logger 
format (#13568)
     add 34941173a fix(redis-schema): copy policy schemas instead of mutating 
shared tables (#13555)
     add d7f6f9537 fix(balancer): separate keepalive pool by referenced client 
cert (#13587)
     add a40d08dc7 fix(limit-count): make sliding-window limiter 
check-and-increment atomic (#13574)
     add fe625ffc3 fix(ai-proxy): drop tool_choice without tools and stop 
hanging Anthropic stream (#13583)
     add c95615265 fix(limit-count): validate variable-resolved 
count/time_window bounds (#13573)
     add d0451ff4a feat: add ai-lakera-guard plugin (#13570)
     add d3f198486 fix(attach-consumer-label): always drop client-supplied 
configured headers (#13590)
     add eb20eb2c8 fix(limit-conn): isolate counter per workflow action via 
_vid key (#13591)
     add 0c41c8665 fix(prometheus): bump nginx-lua-prometheus-api7 to 
0.20260623 to drop duplicate metrics (#13602)
     add bb23888cd feat(ai-aliyun-content-moderation): role-aware 
request_check_mode and O(n) content chunking (#13598)
     add 841dbea7a fix(ai-proxy): don't abort Anthropic response on bad 
tool_call arguments (#13599)
     add c24803a00 test(openid-connect): stop logout tests from calling live 
IdPs (#13608)
     add df0a28425 feat(ai-proxy): include AI observability vars in llm_summary
     add 496cb68c4 fix(ai-proxy-multi): guard construct_upstream in healthcheck 
timers (#13592)
     add 57708db45 fix(stream): support upstream client certificate (mTLS) in 
L4 proxy (#13596)
     add 30ed8d7d1 feat: add ai-cache plugin (#13578)
     add 3ca5ddf3b feat(ai-lakera-guard): scan LLM responses (direction 
output/both, non-streaming + streaming) (#13606)
     add 89f854988 fix(cas-auth): stop SLO callback POST from being proxied 
upstream (#13610)
     add e9ff2d266 feat: add max_post_args_readable_size to bound post_arg.* 
body reads (#13601)
     add cdcaea13b ci: run proxy-cache and dubbo-proxy plugin subdirectory 
tests (#13613)
     add 7f5638bb6 fix(limit-count): upgrade redis-cluster lib so NOSCRIPT is 
not treated as node failure (#13579)
     add 43be2b97e fix(env): resolve os.getenv prefix collision for env 
directives (#13595)
     add 196d58517 fix(log-sanitize): return raw tables to avoid double 
delay_encode (#13605)
     add e7d9abf53 feat: encrypt redis_password and sentinel_password in 
limit-count/limit-req/limit-conn (#13624)
     add 2c9e53c3e test: run graphql-proxy-cache and config-center-json suites 
in CI (#13621)
     add 26a34723f fix(opentelemetry): recreate tracer object after plugin 
metadata changed (#13618)
     add 9f694b27c fix(workflow): skip the action plugin in the chain to avoid 
double execution (#13617)
     add be3dde6df feat(elasticsearch-logger): encrypt headers field at rest 
(#13612)
     add 6333d9367 fix(ai-lakera-guard): update alert mode behavior with 
fail_open option and add tests for streaming responses (#13622)
     add 056bea5c9 test: make stream traffic-split distribution assertions 
order-independent (#13630)
     add 2f8178093 fix(healthcheck): purge stale targets and release periodic 
lock (bump lua-resty-healthcheck-api7 to 3.2.2) (#13627)
     add 421573156 fix(ai-aliyun-content-moderation): return nil instead of 
ngx.OK in lua_body_filter (#13623)
     add 0e70e6919 fix: reset X-Forwarded-For only for untrusted sources under 
trusted_addresses (#13611)
     add b3182a5ba docs(mcp-bridge): add plugin doc and note upcoming 
deprecation (#13640)
     add 7fd4515ee feat(ai-cache): add semantic (L2) cache layer (#13632)
     add 01cf1e9d5 refactor(cas-auth): drop unnecessary raw Cookie header 
fallback (#13635)
     add 11dfb1804 fix(ai-protocols): flatten structured message content in the 
protocol layer (#13634)
     add d2f94b024 fix(opentelemetry): give inject_core_spans its own tracer 
cache key (#13633)
     add f6d0ee804 fix(prometheus): truncate llm model-name labels to bound 
cardinality (#13637)
     add 5e5554f8d fix(forward-auth): re-frame buffered POST body for the auth 
request (#13642)
     add b83f32374 fix(ai-cache): preserve non-text content in exact key and L2 
bypass (#13654)
     add a2d34cd62 feat(ai-cache): add streaming support with format tagging 
(#13644)
     add 7c2dd995b docs: update Debian APT repo instructions

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (aa7559e92)
            \
             N -- N -- N   refs/heads/docs/update-deb-repo-debian12 (7c2dd995b)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

No new revisions were added by this update.

Summary of changes:
 .github/workflows/build.yml                        |    6 +-
 .github/workflows/check-changelog.yml              |    8 +-
 .github/workflows/source-install.yml               |    6 +-
 .gitignore                                         |    7 +
 .ignore_words                                      |    1 +
 .requirements                                      |    4 +-
 CHANGELOG.md                                       |  130 +
 Makefile                                           |   17 +
 apisix-master-0.rockspec                           |    9 +-
 apisix/admin/resource.lua                          |   14 +-
 apisix/balancer.lua                                |  129 +-
 apisix/cli/config.lua                              |    5 +
 apisix/cli/ngx_tpl.lua                             |   76 +-
 apisix/cli/ops.lua                                 |   46 +-
 apisix/cli/schema.lua                              |   13 +
 apisix/core.lua                                    |    1 +
 apisix/core/ctx.lua                                |   38 +-
 apisix/core/data_encryption.lua                    |  151 ++
 apisix/core/env.lua                                |   37 +-
 apisix/core/json.lua                               |   48 +
 apisix/core/request.lua                            |   22 +-
 apisix/core/version.lua                            |    2 +-
 apisix/discovery/consul/client.lua                 |    5 +-
 apisix/discovery/kubernetes/core.lua               |    7 +-
 apisix/healthcheck_manager.lua                     |   64 +-
 apisix/init.lua                                    |  106 +-
 apisix/plugin.lua                                  |   52 +-
 apisix/plugins/acl.lua                             |   41 +-
 apisix/plugins/ai-aliyun-content-moderation.lua    |  180 +-
 apisix/plugins/ai-aws-content-moderation.lua       |   22 +-
 apisix/plugins/ai-cache.lua                        |  364 +++
 .../ai-cache/embeddings/azure_openai.lua}          |   34 +-
 apisix/plugins/ai-cache/embeddings/base.lua        |   59 +
 .../ai-cache/embeddings/openai.lua}                |   34 +-
 apisix/plugins/ai-cache/key.lua                    |  157 ++
 apisix/plugins/ai-cache/schema.lua                 |  172 ++
 apisix/plugins/ai-cache/semantic.lua               |  346 +++
 apisix/plugins/ai-cache/stream.lua                 |  102 +
 apisix/plugins/ai-cache/vector-search/redis.lua    |  136 +
 apisix/plugins/ai-lakera-guard.lua                 |  296 +++
 apisix/plugins/ai-lakera-guard/client.lua          |   99 +
 apisix/plugins/ai-lakera-guard/schema.lua          |  114 +
 apisix/plugins/ai-prompt-guard.lua                 |   29 +-
 apisix/plugins/ai-protocols/anthropic-messages.lua |  128 +-
 apisix/plugins/ai-protocols/bedrock-converse.lua   |  102 +-
 apisix/plugins/ai-protocols/binding.lua            |   94 +
 .../anthropic-messages-to-openai-chat.lua          |   44 +-
 apisix/plugins/ai-protocols/openai-chat.lua        |  146 +-
 apisix/plugins/ai-protocols/openai-embeddings.lua  |    7 +
 apisix/plugins/ai-protocols/openai-responses.lua   |  171 +-
 apisix/plugins/ai-providers/base.lua               |   89 +-
 apisix/plugins/ai-proxy-multi.lua                  |  254 +-
 apisix/plugins/ai-proxy.lua                        |   12 +-
 apisix/plugins/ai-proxy/base.lua                   |   82 +-
 apisix/plugins/ai-proxy/schema.lua                 |   37 +
 apisix/plugins/ai-transport/http.lua               |   22 +-
 apisix/plugins/attach-consumer-label.lua           |   15 +-
 apisix/plugins/authz-casdoor.lua                   |   17 +-
 apisix/plugins/aws-lambda.lua                      |   51 +-
 apisix/plugins/azure-functions.lua                 |    9 +-
 apisix/plugins/batch-requests.lua                  |   30 +-
 apisix/plugins/body-transformer.lua                |   52 +-
 apisix/plugins/brotli.lua                          |   11 +-
 apisix/plugins/cas-auth.lua                        |  129 +-
 apisix/plugins/clickhouse-logger.lua               |    4 +
 apisix/plugins/cors.lua                            |    4 +
 apisix/plugins/dingtalk-auth.lua                   |    3 +
 apisix/plugins/elasticsearch-logger.lua            |   18 +-
 apisix/plugins/error-log-logger.lua                |    2 +-
 apisix/plugins/file-logger.lua                     |    4 +
 apisix/plugins/forward-auth.lua                    |   21 +-
 apisix/plugins/google-cloud-logging.lua            |   15 +-
 apisix/plugins/graphql-proxy-cache.lua             |    6 +-
 apisix/plugins/hmac-auth.lua                       |   30 +-
 apisix/plugins/http-logger.lua                     |    5 +
 apisix/plugins/jwe-decrypt.lua                     |   79 +-
 apisix/plugins/jwt-auth/parser.lua                 |   69 +-
 apisix/plugins/kafka-logger.lua                    |   17 +-
 apisix/plugins/key-auth.lua                        |   15 +
 apisix/plugins/limit-conn.lua                      |    3 +-
 apisix/plugins/limit-conn/init.lua                 |   38 +-
 apisix/plugins/limit-count/delayed-syncer.lua      |  474 ++++
 apisix/plugins/limit-count/init.lua                |  253 +-
 apisix/plugins/limit-count/limit-count-local.lua   |   56 +-
 .../limit-count/limit-count-redis-cluster.lua      |  114 +-
 .../limit-count/limit-count-redis-sentinel.lua     |  130 +
 apisix/plugins/limit-count/limit-count-redis.lua   |  128 +-
 .../limit-count/sliding-window/sliding-window.lua  |  197 ++
 .../limit-count/sliding-window/store/redis.lua     |  145 ++
 .../sliding-window/store/shared-dict.lua           |   94 +
 apisix/plugins/limit-count/util.lua                |  193 ++
 apisix/plugins/limit-req.lua                       |    5 +-
 apisix/plugins/limit-req/util.lua                  |  120 +-
 apisix/plugins/loggly.lua                          |    5 +
 apisix/plugins/loki-logger.lua                     |   89 +-
 apisix/plugins/multi-auth.lua                      |    2 +-
 apisix/plugins/opa.lua                             |   14 +-
 apisix/plugins/openfunction.lua                    |    6 +-
 apisix/plugins/openid-connect.lua                  |  112 +-
 apisix/plugins/opentelemetry.lua                   |   17 +-
 apisix/plugins/prometheus.lua                      |   53 +-
 apisix/plugins/prometheus/exporter.lua             |  304 ++-
 .../prometheus.lua => plugins/proxy-buffering.lua} |   23 +-
 apisix/plugins/proxy-cache/memory_handler.lua      |    6 +
 apisix/plugins/proxy-mirror.lua                    |   15 +
 apisix/plugins/request-id.lua                      |   24 +-
 apisix/plugins/rocketmq-logger.lua                 |    5 +-
 apisix/plugins/skywalking-logger.lua               |    4 +
 apisix/plugins/sls-logger.lua                      |    5 +-
 apisix/plugins/splunk-hec-logging.lua              |   16 +-
 apisix/plugins/syslog.lua                          |    4 +
 apisix/plugins/syslog/init.lua                     |    2 -
 apisix/plugins/tcp-logger.lua                      |    4 +
 apisix/plugins/tencent-cloud-cls.lua               |    4 +
 apisix/plugins/udp-logger.lua                      |    4 +
 apisix/plugins/workflow.lua                        |   11 +
 apisix/secret/aws.lua                              |   63 +-
 apisix/ssl.lua                                     |  104 +-
 apisix/stream/xrpc.lua                             |    7 +-
 apisix/stream/xrpc/protocols/redis/init.lua        |   28 +-
 apisix/upstream.lua                                |   69 +-
 apisix/utils/log-sanitize.lua                      |    5 +-
 apisix/utils/log-util.lua                          |   29 +-
 apisix/utils/redis-schema.lua                      |    8 +-
 apisix/utils/redis.lua                             |   20 +-
 apisix/utils/trusted-addresses.lua                 |    6 +
 apisix/utils/upstream.lua                          |   10 +-
 ci/check_changelog_prs.ts                          |   10 +-
 ci/init-common-test-service.sh                     |    2 +
 ci/install-lua-rapidjson.sh                        |   51 +
 ci/linux-install-openresty.sh                      |    6 +-
 ci/linux_apisix_current_luarocks_runner.sh         |    3 +-
 ci/pod/docker-compose.plugin.yml                   |   75 +
 .../function-example/test-body/cmd/main.go         |   14 +-
 .../openfunction/function-example/test-body/go.mod |   30 +-
 .../openfunction/function-example/test-body/go.sum | 1760 -------------
 .../function-example/test-body/hello.go            |    6 -
 .../test-body/{hello.go => hello_test.go}          |   22 +-
 .../function-example/test-uri/cmd/main.go          |   14 +-
 .../openfunction/function-example/test-uri/go.mod  |   31 +-
 .../openfunction/function-example/test-uri/go.sum  | 2615 --------------------
 .../function-example/test-uri/hello.go             |   17 +-
 .../test-uri/{hello.go => hello_test.go}           |   30 +-
 conf/config.yaml.example                           |   40 +-
 docker/debian-dev/Dockerfile                       |    1 +
 docs/en/latest/FAQ.md                              |   16 +-
 docs/en/latest/admin-api.md                        |   18 +-
 docs/en/latest/apisix-variable.md                  |    1 +
 docs/en/latest/certificate.md                      |    2 +-
 docs/en/latest/config.json                         |    8 +-
 docs/en/latest/dashboard.md                        |    4 +-
 docs/en/latest/mtls.md                             |    5 +
 .../latest/plugins/ai-aliyun-content-moderation.md |    6 +-
 .../en/latest/plugins/ai-aws-content-moderation.md |    1 +
 docs/en/latest/plugins/ai-cache.md                 |  524 ++++
 docs/en/latest/plugins/ai-lakera-guard.md          |  430 ++++
 docs/en/latest/plugins/ai-prompt-guard.md          |    1 +
 docs/en/latest/plugins/ai-proxy-multi.md           |   29 +-
 docs/en/latest/plugins/ai-proxy.md                 |   28 +-
 docs/en/latest/plugins/attach-consumer-label.md    |    2 +-
 docs/en/latest/plugins/authz-casdoor.md            |   11 +-
 docs/en/latest/plugins/batch-requests.md           |    7 +-
 docs/en/latest/plugins/cas-auth.md                 |    2 +
 docs/en/latest/plugins/chaitin-waf.md              |    2 +-
 docs/en/latest/plugins/clickhouse-logger.md        |    2 +
 docs/en/latest/plugins/csrf.md                     |    2 +-
 docs/en/latest/plugins/elasticsearch-logger.md     |   10 +-
 docs/en/latest/plugins/forward-auth.md             |    1 +
 docs/en/latest/plugins/google-cloud-logging.md     |    2 +
 docs/en/latest/plugins/hmac-auth.md                |    1 +
 docs/en/latest/plugins/http-logger.md              |    2 +
 docs/en/latest/plugins/jwe-decrypt.md              |   92 +-
 docs/en/latest/plugins/kafka-logger.md             |    3 +
 docs/en/latest/plugins/limit-conn.md               |    2 +
 docs/en/latest/plugins/limit-count.md              |  209 +-
 docs/en/latest/plugins/limit-req.md                |    2 +
 docs/en/latest/plugins/loggly.md                   |    2 +
 docs/en/latest/plugins/loki-logger.md              |    6 +-
 docs/en/latest/plugins/mcp-bridge.md               |   69 +
 docs/en/latest/plugins/mocking.md                  |    4 +-
 docs/en/latest/plugins/openid-connect.md           |   12 +-
 docs/en/latest/plugins/prometheus.md               |  106 +
 docs/en/latest/plugins/proxy-buffering.md          |  109 +
 docs/en/latest/plugins/real-ip.md                  |    2 +-
 docs/en/latest/plugins/rocketmq-logger.md          |    2 +
 docs/en/latest/plugins/skywalking-logger.md        |    2 +
 docs/en/latest/plugins/sls-logger.md               |    2 +
 docs/en/latest/plugins/splunk-hec-logging.md       |    2 +
 docs/en/latest/plugins/syslog.md                   |    2 +
 docs/en/latest/plugins/tcp-logger.md               |    2 +
 docs/en/latest/plugins/tencent-cloud-cls.md        |    2 +
 docs/en/latest/plugins/udp-logger.md               |    2 +
 docs/en/latest/plugins/workflow.md                 |    6 +
 docs/en/latest/router-radixtree.md                 |    9 +
 docs/en/latest/stream-proxy.md                     |   36 +
 docs/en/latest/terminology/plugin-config.md        |    2 +-
 docs/en/latest/terminology/secret.md               |    2 +
 docs/en/latest/tutorials/cache-api-responses.md    |    4 +-
 docs/en/latest/tutorials/client-to-apisix-mtls.md  |   22 +-
 docs/en/latest/tutorials/expose-api.md             |   17 +-
 .../latest/tutorials/monitor-api-health-check.md   |   15 +-
 .../latest/tutorials/websocket-authentication.md   |   13 +-
 docs/zh/latest/FAQ.md                              |    6 +-
 docs/zh/latest/admin-api.md                        |   10 +-
 docs/zh/latest/certificate.md                      |    2 +-
 docs/zh/latest/config.json                         |    5 +-
 docs/zh/latest/dashboard.md                        |    4 +-
 .../latest/plugins/ai-aliyun-content-moderation.md |    6 +-
 .../zh/latest/plugins/ai-aws-content-moderation.md |    1 +
 docs/zh/latest/plugins/ai-cache.md                 |  524 ++++
 docs/zh/latest/plugins/ai-lakera-guard.md          |  430 ++++
 docs/zh/latest/plugins/ai-prompt-guard.md          |    1 +
 docs/zh/latest/plugins/ai-proxy-multi.md           |   21 +-
 docs/zh/latest/plugins/ai-proxy.md                 |   23 +-
 docs/zh/latest/plugins/attach-consumer-label.md    |    2 +-
 docs/zh/latest/plugins/authz-casdoor.md            |   12 +-
 docs/zh/latest/plugins/batch-requests.md           |    7 +-
 docs/zh/latest/plugins/chaitin-waf.md              |    2 +-
 docs/zh/latest/plugins/csrf.md                     |    2 +-
 docs/zh/latest/plugins/elasticsearch-logger.md     |    8 +-
 docs/zh/latest/plugins/gm.md                       |    2 +-
 docs/zh/latest/plugins/jwe-decrypt.md              |   92 +-
 docs/zh/latest/plugins/kafka-logger.md             |    1 +
 docs/zh/latest/plugins/limit-conn.md               |    2 +
 docs/zh/latest/plugins/limit-count.md              |  191 +-
 docs/zh/latest/plugins/limit-req.md                |    2 +
 docs/zh/latest/plugins/mocking.md                  |    6 +-
 docs/zh/latest/plugins/openid-connect.md           |   26 +-
 docs/zh/latest/plugins/prometheus.md               |  106 +
 docs/zh/latest/plugins/proxy-buffering.md          |  117 +
 docs/zh/latest/plugins/real-ip.md                  |    2 +-
 docs/zh/latest/stream-proxy.md                     |   36 +
 docs/zh/latest/terminology/secret.md               |    2 +
 docs/zh/latest/tutorials/cache-api-responses.md    |    4 +-
 docs/zh/latest/tutorials/client-to-apisix-mtls.md  |   14 +-
 docs/zh/latest/tutorials/expose-api.md             |   17 +-
 t/APISIX.pm                                        |   52 +-
 t/admin/plugins.t                                  |    3 +
 t/admin/routes4.t                                  |  150 ++
 t/certs/server.crt                                 |   18 +
 t/certs/server.key                                 |   28 +
 t/certs/sse_server.crt                             |   19 +
 t/certs/sse_server.key                             |   28 +
 t/chaos/delayetcd/delayetcd.go                     |   37 +-
 .../{e2e_test.go => delayetcd/delayetcd_test.go}   |   23 +-
 t/chaos/go.mod                                     |   25 +-
 t/chaos/go.sum                                     |  518 ----
 t/chaos/killetcd/killetcd.go                       |   34 +-
 t/chaos/utils/kube_utils.go                        |    2 -
 t/cli/test_discovery_nacos_stream.sh               |   62 +
 t/cli/test_main.sh                                 |   61 +
 t/cli/test_proxy_buffering.sh                      |   94 +
 t/cli/test_sse.py                                  |   84 +
 t/cli/test_stream_proxy_protocol.sh                |  231 ++
 t/config-center-json/plugin.t                      |    8 +-
 t/config-center-json/route.t                       |   17 +-
 t/config-center-json/stream-route.t                |    4 +-
 t/config-center-yaml/plugin-metadata.t             |  102 +
 t/config-center-yaml/stream-route.t                |   85 +-
 t/control/services.t                               |    2 +-
 t/core/ctx.t                                       |   53 +
 t/core/ctx3.t                                      |  119 +
 t/core/env.t                                       |   86 +
 t/core/request.t                                   |   35 +
 t/core/trusted-addresses.t                         |   88 +-
 t/discovery/consul-malformed-node.t                |  157 ++
 .../messages-streaming-with-tool-use.sse}          |   10 +-
 t/fixtures/lakera/scan-clean.json                  |   17 +
 t/fixtures/lakera/scan-flagged.json                |   26 +
 .../openai/chat-injection.json}                    |    2 +-
 ...-streaming.sse => chat-streaming-injection.sse} |    8 +-
 ...reaming.sse => chat-streaming-lakera-error.sse} |    8 +-
 .../openai/chat-streaming-many-chunks-no-usage.sse |   40 +
 t/fixtures/openai/chat-streaming-no-usage.sse      |   10 +
 t/fixtures/openai/chat-streaming-with-cache.sse    |    6 +
 .../openai/chat-streaming-with-tool-calls.sse      |    7 +
 t/fixtures/openai/embeddings-capital-city.json     |   80 +
 t/fixtures/openai/embeddings-capital.json          |   80 +
 t/fixtures/openai/embeddings-largest-city.json     |   80 +
 t/fixtures/openai/embeddings-tire.json             |   80 +
 .../openai/responses-streaming-with-cache.sse      |    6 +
 .../openai/responses-streaming-with-tool-call.sse  |    3 +
 t/fixtures/openai/responses-with-cache.json        |   22 +
 t/lib/ai_cache_mock.lua                            |  132 +
 t/lib/fixture_loader.lua                           |   16 +
 t/lib/server.lua                                   |   30 +
 t/lib/test_redis.lua                               |    4 +-
 t/node/chash-healthcheck-stable-ring.t             |  204 ++
 t/node/data_encrypt.t                              |  174 +-
 t/node/data_encrypt3.t                             |   33 +-
 t/node/healthcheck-stale-cleanup.t                 |  116 +
 t/node/upstream-keepalive-pool.t                   |  137 +
 t/node/upstream-mtls.t                             |  100 +
 t/node/upstream-node-dns.t                         |  131 +
 t/plugin/acl.t                                     |   80 +-
 t/plugin/ai-aliyun-content-moderation.t            |  269 +-
 t/plugin/ai-aws-content-moderation.t               |  103 +
 t/plugin/ai-cache-semantic.t                       | 1572 ++++++++++++
 t/plugin/ai-cache-streaming.t                      |  909 +++++++
 t/plugin/ai-cache.t                                | 1448 +++++++++++
 t/plugin/ai-lakera-guard-chain.t                   |  162 ++
 t/plugin/ai-lakera-guard-secrets.t                 |  188 ++
 t/plugin/ai-lakera-guard.t                         | 1424 +++++++++++
 t/plugin/ai-prompt-guard.t                         |  358 +++
 t/plugin/ai-proxy-anthropic.t                      |  280 +++
 t/plugin/ai-proxy-kafka-log.t                      |   96 +
 .../ai-proxy-multi-chash-healthcheck-stable-ring.t |  252 ++
 t/plugin/ai-proxy-multi-construct-upstream-panic.t |  628 +++++
 t/plugin/ai-proxy-multi-construct-upstream.t       |  166 ++
 t/plugin/ai-proxy-multi-healthcheck-stale-picker.t |  211 ++
 t/plugin/ai-proxy-multi-retry.t                    |  219 ++
 t/plugin/ai-proxy-multi.balancer.t                 |   11 +-
 t/plugin/ai-proxy-passthrough.t                    |  208 ++
 t/plugin/ai-proxy-stream-limits.t                  |   53 +
 t/plugin/ai-proxy.t                                |   64 +
 t/plugin/ai-proxy3.t                               |  219 +-
 t/plugin/ai-transport-http.t                       |  355 +++
 t/plugin/attach-consumer-label.t                   |   90 +
 t/plugin/authz-casdoor.t                           |  108 +
 t/plugin/aws-lambda.t                              |  138 ++
 t/plugin/batch-requests.t                          |  177 +-
 t/plugin/body-transformer.t                        |  354 +++
 t/plugin/brotli.t                                  |   23 +-
 t/plugin/cas-auth.t                                |  468 ++++
 t/plugin/cors.t                                    |   54 +
 t/plugin/dingtalk-auth.t                           |  139 ++
 t/plugin/dubbo-proxy/route.t                       |    7 +-
 t/plugin/elasticsearch-logger.t                    |   89 +
 t/plugin/elasticsearch-logger2.t                   |   46 +
 t/plugin/error-log-logger-kafka.t                  |   69 +
 t/plugin/file-logger.t                             |  417 ++++
 t/plugin/forward-auth.t                            |  163 ++
 t/plugin/graphql-proxy-cache/memory.t              |  104 +
 t/plugin/grpc-web/go.mod                           |   14 +-
 t/plugin/grpc-web/go.sum                           |   52 +-
 t/plugin/hmac-auth2.t                              |    2 +-
 t/plugin/hmac-auth3.t                              |  179 ++
 t/plugin/jwe-decrypt.t                             |  256 +-
 t/plugin/jwt-auth-more-algo.t                      |   38 +-
 t/plugin/jwt-auth.t                                |  189 ++
 t/plugin/kafka-logger-large-body.t                 |   35 +
 t/plugin/kafka-logger-log-format.t                 |   35 +
 t/plugin/kafka-logger.t                            |  146 ++
 t/plugin/kafka-logger2.t                           |   35 +
 t/plugin/kafka-logger3.t                           |   76 +
 t/plugin/kafka-logger4.t                           |   35 +
 t/plugin/key-auth-anonymous-consumer.t             |   74 +
 t/plugin/limit-conn-variable.t                     |  117 +
 t/plugin/limit-count-redis-cluster.t               |   75 +
 t/plugin/limit-count-redis-delayed-sync.t          |  243 ++
 t/plugin/limit-count-redis-delayed-sync2.t         |  273 ++
 t/plugin/limit-count-redis-sentinel.t              |  624 +++++
 .../{limit-count-redis3.t => limit-count-redis5.t} |  329 +--
 t/plugin/limit-count-rules.t                       |   79 +-
 t/plugin/limit-count-sliding.t                     |  338 +++
 t/plugin/limit-count-variable.t                    |  311 +++
 t/plugin/limit-req-redis.t                         |  272 ++
 t/plugin/log-rotate.t                              |   49 +-
 t/plugin/loggly.t                                  |   65 +
 t/plugin/loki-logger.t                             |  193 ++
 t/plugin/multi-auth.t                              |   44 +
 t/plugin/{workflow-without-case.t => opa3.t}       |   43 +-
 t/plugin/openid-connect.t                          |  447 +++-
 t/plugin/openid-connect10.t                        |  364 +++
 t/plugin/openid-connect2.t                         |   83 +
 t/plugin/openid-connect9.t                         |   62 +
 t/plugin/opentelemetry.t                           |   90 +
 t/plugin/prometheus-ai-proxy.t                     |  234 ++
 t/plugin/prometheus-label-filter.t                 |  172 ++
 t/plugin/proxy-mirror3.t                           |   58 +-
 t/plugin/real-ip.t                                 |    3 +-
 t/plugin/request-id.t                              |   66 +
 t/plugin/rocketmq-logger-log-format.t              |   35 +
 t/plugin/rocketmq-logger.t                         |   35 +
 t/plugin/rocketmq-logger2.t                        |   35 +
 t/plugin/splunk-hec-logging.t                      |  138 ++
 t/plugin/syslog.t                                  |   36 +
 t/plugin/workflow-without-case.t                   |  137 +
 t/plugin/workflow3.t                               |  224 ++
 t/secret/aws.t                                     |   91 +-
 t/stream-node/upstream-mtls.t                      |  220 ++
 t/stream-plugin/traffic-split.t                    |   63 +-
 t/utils/log-sanitize.t                             |  119 +
 t/utils/redis-schema.t                             |  154 ++
 t/xrpc/prometheus.t                                |    9 +
 t/xrpc/redis.t                                     |  159 +-
 utils/linux-install-luarocks.sh                    |   11 +-
 387 files changed, 32116 insertions(+), 6959 deletions(-)
 create mode 100644 apisix/core/data_encryption.lua
 create mode 100644 apisix/plugins/ai-cache.lua
 copy apisix/{core/math.lua => plugins/ai-cache/embeddings/azure_openai.lua} 
(59%)
 create mode 100644 apisix/plugins/ai-cache/embeddings/base.lua
 copy apisix/{core/math.lua => plugins/ai-cache/embeddings/openai.lua} (55%)
 create mode 100644 apisix/plugins/ai-cache/key.lua
 create mode 100644 apisix/plugins/ai-cache/schema.lua
 create mode 100644 apisix/plugins/ai-cache/semantic.lua
 create mode 100644 apisix/plugins/ai-cache/stream.lua
 create mode 100644 apisix/plugins/ai-cache/vector-search/redis.lua
 create mode 100644 apisix/plugins/ai-lakera-guard.lua
 create mode 100644 apisix/plugins/ai-lakera-guard/client.lua
 create mode 100644 apisix/plugins/ai-lakera-guard/schema.lua
 create mode 100644 apisix/plugins/ai-protocols/binding.lua
 create mode 100644 apisix/plugins/limit-count/delayed-syncer.lua
 create mode 100644 apisix/plugins/limit-count/limit-count-redis-sentinel.lua
 create mode 100644 apisix/plugins/limit-count/sliding-window/sliding-window.lua
 create mode 100644 apisix/plugins/limit-count/sliding-window/store/redis.lua
 create mode 100644 
apisix/plugins/limit-count/sliding-window/store/shared-dict.lua
 create mode 100644 apisix/plugins/limit-count/util.lua
 copy apisix/{stream/plugins/prometheus.lua => plugins/proxy-buffering.lua} 
(74%)
 create mode 100755 ci/install-lua-rapidjson.sh
 delete mode 100644 ci/pod/openfunction/function-example/test-body/go.sum
 copy ci/pod/openfunction/function-example/test-body/{hello.go => 
hello_test.go} (71%)
 delete mode 100644 ci/pod/openfunction/function-example/test-uri/go.sum
 copy ci/pod/openfunction/function-example/test-uri/{hello.go => hello_test.go} 
(58%)
 create mode 100644 docs/en/latest/plugins/ai-cache.md
 create mode 100644 docs/en/latest/plugins/ai-lakera-guard.md
 create mode 100644 docs/en/latest/plugins/mcp-bridge.md
 create mode 100644 docs/en/latest/plugins/proxy-buffering.md
 create mode 100644 docs/zh/latest/plugins/ai-cache.md
 create mode 100644 docs/zh/latest/plugins/ai-lakera-guard.md
 create mode 100644 docs/zh/latest/plugins/proxy-buffering.md
 create mode 100644 t/certs/server.crt
 create mode 100644 t/certs/server.key
 create mode 100644 t/certs/sse_server.crt
 create mode 100644 t/certs/sse_server.key
 copy t/chaos/{e2e_test.go => delayetcd/delayetcd_test.go} (58%)
 create mode 100755 t/cli/test_discovery_nacos_stream.sh
 create mode 100755 t/cli/test_proxy_buffering.sh
 create mode 100644 t/cli/test_sse.py
 create mode 100755 t/cli/test_stream_proxy_protocol.sh
 create mode 100644 t/discovery/consul-malformed-node.t
 copy t/fixtures/{protocol-conversion/anthropic-mismatch.sse => 
anthropic/messages-streaming-with-tool-use.sse} (50%)
 create mode 100644 t/fixtures/lakera/scan-clean.json
 create mode 100644 t/fixtures/lakera/scan-flagged.json
 copy t/{assets/openai-compatible-api-response.json => 
fixtures/openai/chat-injection.json} (77%)
 copy t/fixtures/openai/{chat-streaming.sse => chat-streaming-injection.sse} 
(54%)
 copy t/fixtures/openai/{chat-streaming.sse => chat-streaming-lakera-error.sse} 
(54%)
 create mode 100644 t/fixtures/openai/chat-streaming-many-chunks-no-usage.sse
 create mode 100644 t/fixtures/openai/chat-streaming-no-usage.sse
 create mode 100644 t/fixtures/openai/chat-streaming-with-cache.sse
 create mode 100644 t/fixtures/openai/chat-streaming-with-tool-calls.sse
 create mode 100644 t/fixtures/openai/embeddings-capital-city.json
 create mode 100644 t/fixtures/openai/embeddings-capital.json
 create mode 100644 t/fixtures/openai/embeddings-largest-city.json
 create mode 100644 t/fixtures/openai/embeddings-tire.json
 create mode 100644 t/fixtures/openai/responses-streaming-with-cache.sse
 create mode 100644 t/fixtures/openai/responses-streaming-with-tool-call.sse
 create mode 100644 t/fixtures/openai/responses-with-cache.json
 create mode 100644 t/lib/ai_cache_mock.lua
 create mode 100644 t/node/chash-healthcheck-stable-ring.t
 create mode 100644 t/node/healthcheck-stale-cleanup.t
 create mode 100644 t/plugin/ai-cache-semantic.t
 create mode 100644 t/plugin/ai-cache-streaming.t
 create mode 100644 t/plugin/ai-cache.t
 create mode 100644 t/plugin/ai-lakera-guard-chain.t
 create mode 100644 t/plugin/ai-lakera-guard-secrets.t
 create mode 100644 t/plugin/ai-lakera-guard.t
 create mode 100644 t/plugin/ai-proxy-multi-chash-healthcheck-stable-ring.t
 create mode 100644 t/plugin/ai-proxy-multi-construct-upstream-panic.t
 create mode 100644 t/plugin/ai-proxy-multi-construct-upstream.t
 create mode 100644 t/plugin/ai-proxy-multi-healthcheck-stale-picker.t
 create mode 100644 t/plugin/ai-proxy-multi-retry.t
 create mode 100644 t/plugin/ai-transport-http.t
 create mode 100644 t/plugin/limit-count-redis-delayed-sync.t
 create mode 100644 t/plugin/limit-count-redis-delayed-sync2.t
 create mode 100644 t/plugin/limit-count-redis-sentinel.t
 copy t/plugin/{limit-count-redis3.t => limit-count-redis5.t} (50%)
 create mode 100644 t/plugin/limit-count-sliding.t
 copy t/plugin/{workflow-without-case.t => opa3.t} (66%)
 create mode 100644 t/plugin/openid-connect10.t
 create mode 100644 t/plugin/prometheus-label-filter.t
 create mode 100644 t/stream-node/upstream-mtls.t
 create mode 100644 t/utils/log-sanitize.t
 create mode 100644 t/utils/redis-schema.t


Reply via email to