From 259c166ef6f6c7ed9005448c2b2bb3ec66b900c5 Mon Sep 17 00:00:00 2001 From: moe-berri Date: Thu, 1 Oct 2026 11:02:14 -0700 Subject: [PATCH] refactor(lens)!: rename internal engine code and API (#44034) * chore(lens): remove deployment screenshots * refactor(lens)!: rename internal engine package and API * fix(lens): pin worker image for renamed API * test(lens): cover fresh and populated rename migrations * fix(lens): protect db-push upgrades and restore routing and CI * fix(lens): resolve migration tables across schemas and include database driver --- .circleci/scripts/unit_selection.sh | 2 +- .github/workflows/lens-worker.yml | 10 +- backend/routes/allowlist.py | 4 +- deploy/lens/Dockerfile | 4 +- deploy/lens/Dockerfile.dockerignore | 10 +- deploy/lens/README.md | 18 +- deploy/lens/compose.yaml | 2 +- deploy/lens/screenshots/after.png | Bin 97680 -> 0 bytes deploy/lens/screenshots/before.png | Bin 7103 -> 0 bytes deploy/lens/screenshots/finding.png | Bin 91592 -> 0 bytes deploy/lens/screenshots/progress.png | Bin 82400 -> 0 bytes deploy/lens/screenshots/setup.png | Bin 71521 -> 0 bytes deploy/lens/screenshots/trace.png | Bin 135083 -> 0 bytes .../lens/screenshots/worker-billing-after.png | Bin 60310 -> 0 bytes .../screenshots/worker-billing-before.png | Bin 55629 -> 0 bytes .../20261001100000_rename_lens/migration.sql | 18 + .../litellm_proxy_extras/schema.prisma | 10 +- .../litellm_proxy_extras/utils.py | 32 + litellm-proxy-extras/pyproject.toml | 4 + litellm/proxy/_lazy_openapi_snapshot.json | 92 +- litellm/proxy/_types.py | 20 +- litellm/proxy/db/prisma_client.py | 3 + litellm/proxy/{engine => lens}/__init__.py | 0 litellm/proxy/{engine => lens}/analysis.py | 0 litellm/proxy/{engine => lens}/billing.py | 0 litellm/proxy/{engine => lens}/endpoints.py | 218 +- litellm/proxy/{engine => lens}/inference.py | 22 +- litellm/proxy/{engine => lens}/models.py | 18 +- litellm/proxy/{engine => lens}/repository.py | 78 +- litellm/proxy/{engine => lens}/sources.py | 6 +- litellm/proxy/{engine => lens}/state.py | 66 +- litellm/proxy/{engine => lens}/trace_store.py | 0 litellm/proxy/{engine => lens}/worker.py | 12 +- litellm/proxy/proxy_server.py | 4 +- litellm/proxy/schema.prisma | 10 +- schema.prisma | 10 +- .../ensure_async_clients_test.py | 4 +- .../database/test_engine_repository.py | 65 - .../database/test_lens_repository.py | 173 ++ tests/integration/spend/test_lens_billing.py | 58 +- tests/proxy_behavior/lens/evaluate.py | 12 +- tests/proxy_behavior/lens/test_lifecycle.py | 74 +- .../lens/worker_storage_smoke.py | 12 +- tests/unit/proxy/{engine => lens}/__init__.py | 0 .../proxy/{engine => lens}/test_analysis.py | 76 +- .../proxy/{engine => lens}/test_endpoints.py | 12 +- .../proxy/{engine => lens}/test_inference.py | 6 +- .../proxy/{engine => lens}/test_sources.py | 10 +- .../unit/proxy/{engine => lens}/test_state.py | 48 +- .../{engine => lens}/test_trace_store.py | 4 +- .../proxy/{engine => lens}/test_worker.py | 32 +- .../lens/_components/ActivityScope.tsx | 4 +- .../{EngineProgress.tsx => LensProgress.tsx} | 8 +- .../(dashboard)/lens/_components/LensRuns.tsx | 2 +- ...est.tsx => LensSetup.integration.test.tsx} | 14 +- .../{EngineSetup.tsx => LensSetup.tsx} | 4 +- ...test.tsx => LensView.integration.test.tsx} | 62 +- .../{EngineView.tsx => LensView.tsx} | 142 +- .../WorkerSetup.integration.test.tsx | 4 +- .../lens/_components/WorkerSetup.tsx | 16 +- .../{engineData.test.ts => lensData.test.ts} | 2 +- .../{engineData.ts => lensData.ts} | 24 +- .../src/app/(dashboard)/lens/page.tsx | 6 +- ui/litellm-dashboard/src/lib/http/schema.d.ts | 2272 ++++++++--------- uv.lock | 10 + 65 files changed, 2002 insertions(+), 1827 deletions(-) delete mode 100644 deploy/lens/screenshots/after.png delete mode 100644 deploy/lens/screenshots/before.png delete mode 100644 deploy/lens/screenshots/finding.png delete mode 100644 deploy/lens/screenshots/progress.png delete mode 100644 deploy/lens/screenshots/setup.png delete mode 100644 deploy/lens/screenshots/trace.png delete mode 100644 deploy/lens/screenshots/worker-billing-after.png delete mode 100644 deploy/lens/screenshots/worker-billing-before.png create mode 100644 litellm-proxy-extras/litellm_proxy_extras/migrations/20261001100000_rename_lens/migration.sql rename litellm/proxy/{engine => lens}/__init__.py (100%) rename litellm/proxy/{engine => lens}/analysis.py (100%) rename litellm/proxy/{engine => lens}/billing.py (100%) rename litellm/proxy/{engine => lens}/endpoints.py (70%) rename litellm/proxy/{engine => lens}/inference.py (91%) rename litellm/proxy/{engine => lens}/models.py (95%) rename litellm/proxy/{engine => lens}/repository.py (66%) rename litellm/proxy/{engine => lens}/sources.py (98%) rename litellm/proxy/{engine => lens}/state.py (66%) rename litellm/proxy/{engine => lens}/trace_store.py (100%) rename litellm/proxy/{engine => lens}/worker.py (93%) delete mode 100644 tests/integration/database/test_engine_repository.py create mode 100644 tests/integration/database/test_lens_repository.py rename tests/unit/proxy/{engine => lens}/__init__.py (100%) rename tests/unit/proxy/{engine => lens}/test_analysis.py (91%) rename tests/unit/proxy/{engine => lens}/test_endpoints.py (83%) rename tests/unit/proxy/{engine => lens}/test_inference.py (58%) rename tests/unit/proxy/{engine => lens}/test_sources.py (87%) rename tests/unit/proxy/{engine => lens}/test_state.py (87%) rename tests/unit/proxy/{engine => lens}/test_trace_store.py (93%) rename tests/unit/proxy/{engine => lens}/test_worker.py (83%) rename ui/litellm-dashboard/src/app/(dashboard)/lens/_components/{EngineProgress.tsx => LensProgress.tsx} (93%) rename ui/litellm-dashboard/src/app/(dashboard)/lens/_components/{EngineSetup.integration.test.tsx => LensSetup.integration.test.tsx} (92%) rename ui/litellm-dashboard/src/app/(dashboard)/lens/_components/{EngineSetup.tsx => LensSetup.tsx} (99%) rename ui/litellm-dashboard/src/app/(dashboard)/lens/_components/{EngineView.integration.test.tsx => LensView.integration.test.tsx} (83%) rename ui/litellm-dashboard/src/app/(dashboard)/lens/_components/{EngineView.tsx => LensView.tsx} (87%) rename ui/litellm-dashboard/src/app/(dashboard)/lens/_components/{engineData.test.ts => lensData.test.ts} (99%) rename ui/litellm-dashboard/src/app/(dashboard)/lens/_components/{engineData.ts => lensData.ts} (86%) diff --git a/.circleci/scripts/unit_selection.sh b/.circleci/scripts/unit_selection.sh index 3a207ca1778..dc6c1f2ffaa 100755 --- a/.circleci/scripts/unit_selection.sh +++ b/.circleci/scripts/unit_selection.sh @@ -107,7 +107,7 @@ legacy_paths() { echo tests/unit/proxy/test_update_spend.py echo tests/unit/skills/test_skills_db.py ;; proxy-db-endpoints-and-responses) - echo tests/unit/proxy/engine + echo tests/unit/proxy/lens echo tests/unit/proxy/auth/test_models_fallback_endpoint.py echo tests/unit/proxy/common_utils/test_check_batch_cost.py echo tests/unit/proxy/common_utils/test_check_responses_cost.py diff --git a/.github/workflows/lens-worker.yml b/.github/workflows/lens-worker.yml index 53334abaf88..54ec2593ed8 100644 --- a/.github/workflows/lens-worker.yml +++ b/.github/workflows/lens-worker.yml @@ -5,13 +5,13 @@ on: branches: [main, litellm_oss_branch, "litellm_**"] paths: - deploy/lens/** - - litellm/proxy/engine/** + - litellm/proxy/lens/** - .github/workflows/lens-worker.yml push: - branches: [main, litellm_agent_engine] + branches: [main] paths: - deploy/lens/** - - litellm/proxy/engine/** + - litellm/proxy/lens/** - .github/workflows/lens-worker.yml workflow_dispatch: @@ -41,8 +41,8 @@ jobs: --security-opt no-new-privileges --entrypoint python \ lens-worker:${{ github.sha }} -c ' import os - import engine.worker - from engine.trace_store import trace_store + import lens.worker + from lens.trace_store import trace_store assert os.getuid() == 65532 with trace_store() as store: assert store.count() == 0 diff --git a/backend/routes/allowlist.py b/backend/routes/allowlist.py index 51a4d8f716c..80ca0ef22bb 100644 --- a/backend/routes/allowlist.py +++ b/backend/routes/allowlist.py @@ -81,7 +81,7 @@ BACKEND_PATH_PREFIXES: tuple[str, ...] = ( # Spend / analytics "/spend/", "/analytics/", - "/engine/", + "/lens/", "/v1/traces", "/global/", "/user_agent", @@ -146,7 +146,7 @@ BACKEND_EXACT_PATHS: frozenset[str] = frozenset( { "/", "/routes", - "/engine", + "/lens", "/openapi.json", "/docs", "/docs/oauth2-redirect", diff --git a/deploy/lens/Dockerfile b/deploy/lens/Dockerfile index 360211194e2..bab5cba94ac 100644 --- a/deploy/lens/Dockerfile +++ b/deploy/lens/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.12-slim WORKDIR /app RUN pip install --no-cache-dir httpx==0.28.1 pydantic==2.11.7 -COPY litellm/proxy/engine/__init__.py litellm/proxy/engine/models.py litellm/proxy/engine/trace_store.py litellm/proxy/engine/analysis.py litellm/proxy/engine/worker.py /app/engine/ +COPY litellm/proxy/lens/__init__.py litellm/proxy/lens/models.py litellm/proxy/lens/trace_store.py litellm/proxy/lens/analysis.py litellm/proxy/lens/worker.py /app/lens/ USER 65532:65532 -CMD ["python", "-m", "engine.worker"] +CMD ["python", "-m", "lens.worker"] diff --git a/deploy/lens/Dockerfile.dockerignore b/deploy/lens/Dockerfile.dockerignore index 8478be71be7..6db1cbdb50a 100644 --- a/deploy/lens/Dockerfile.dockerignore +++ b/deploy/lens/Dockerfile.dockerignore @@ -1,8 +1,8 @@ ** !litellm/ !litellm/proxy/ -!litellm/proxy/engine/ -!litellm/proxy/engine/__init__.py -!litellm/proxy/engine/models.py -!litellm/proxy/engine/analysis.py -!litellm/proxy/engine/worker.py +!litellm/proxy/lens/ +!litellm/proxy/lens/__init__.py +!litellm/proxy/lens/models.py +!litellm/proxy/lens/analysis.py +!litellm/proxy/lens/worker.py diff --git a/deploy/lens/README.md b/deploy/lens/README.md index d4bcddf8613..7a80bafa59e 100644 --- a/deploy/lens/README.md +++ b/deploy/lens/README.md @@ -74,7 +74,7 @@ V1 requires ClickHouse for both sources. It does not reconstruct sessions from u The UI and API use the same scan lifecycle. Authenticate with a proxy administrator credential for writes, or a proxy-admin viewer credential for reads. Worker credentials are only for worker operations ```bash -curl "$LITELLM_URL/engine" -H "Authorization: Bearer $LITELLM_API_KEY" \ +curl "$LITELLM_URL/lens" -H "Authorization: Bearer $LITELLM_API_KEY" \ -H 'Content-Type: application/json' -d '{ "name": "Research quality", "model": "your-model-alias", "context": "Answer the requested question using cited, retrieved evidence.", @@ -83,14 +83,14 @@ curl "$LITELLM_URL/engine" -H "Authorization: Bearer $LITELLM_API_KEY" \ "enabled": true, "interval_minutes": 1440, "monthly_budget": 50 }' -curl "$LITELLM_URL/engine/$LENS_ID/runs" -X POST \ +curl "$LITELLM_URL/lens/$LENS_ID/runs" -X POST \ -H "Authorization: Bearer $LITELLM_API_KEY" -H 'Content-Type: application/json' -d '{}' -curl "$LITELLM_URL/engine/$LENS_ID/runs?offset=0" -H "Authorization: Bearer $LITELLM_API_KEY" -curl "$LITELLM_URL/engine/$LENS_ID/runs/$BATCH_ID" -H "Authorization: Bearer $LITELLM_API_KEY" +curl "$LITELLM_URL/lens/$LENS_ID/runs?offset=0" -H "Authorization: Bearer $LITELLM_API_KEY" +curl "$LITELLM_URL/lens/$LENS_ID/runs/$BATCH_ID" -H "Authorization: Bearer $LITELLM_API_KEY" ``` -Creation queues the first batch. Posting to `/engine/{id}/runs` queues another, or returns the existing active batch. The run response contains its ID under `jobs[0].id`. Poll the batch URL for status, findings and assessments. List responses omit large result payloads; request a batch to retrieve them. Supply an optional complete `settings` object on the runs POST for a one-off override; the saved lens stays unchanged. Selection accepts `team_id`, exact `filters`, and opaque `execution_ids` returned by `/engine/preview/sample`. Preview accepts `offset` and `as_of` to keep the time window fixed while paging. Feedback uses `PATCH /engine/{id}/findings/{finding_id}` with `status` and `reason` +Creation queues the first batch. Posting to `/lens/{id}/runs` queues another, or returns the existing active batch. The run response contains its ID under `jobs[0].id`. Poll the batch URL for status, findings and assessments. List responses omit large result payloads; request a batch to retrieve them. Supply an optional complete `settings` object on the runs POST for a one-off override; the saved lens stays unchanged. Selection accepts `team_id`, exact `filters`, and opaque `execution_ids` returned by `/lens/preview/sample`. Preview accepts `offset` and `as_of` to keep the time window fixed while paging. Feedback uses `PATCH /lens/{id}/findings/{finding_id}` with `status` and `reason` ## Quality evaluation @@ -107,3 +107,11 @@ Set `LITELLM_API_KEY` privately. This makes paid model calls. Inspect missed and The worker uses temporary disk space for trace content while reviewing it, and removes those files after each review. The Docker command supplies a writable temporary mount while keeping the application filesystem read-only To check that accepted behavior stays accepted without hiding new problems, run the evaluator with `--dataset tests/proxy_behavior/lens/feedback_cases.json`. Reports include elapsed time, model call count, reported cost when the proxy provides it, missed checks, unexpected checks, and inconclusive candidates + +## Upgrading from the original Lens API + +The Lens API now uses `/lens` instead of `/engine`, list responses use `lenses`, and worker claims use `lens_id`. Upgrade the proxy and recreate every worker with the image shown by the upgraded dashboard before starting new scans. Update API clients to the new paths and response fields. Old worker images cannot poll the renamed API + +Stop workers and let active scans finish before upgrading. Deploy proxy instances together: older proxies cannot use the renamed database tables. The schema migration renames the three Lens tables and the run-history identifier column in place, preserving saved investigations, findings, history, worker credentials, and billing assignments. Existing migration files retain their original names and checksums + +Upgrades using `--use_prisma_db_push` stop before schema changes if any legacy Lens table exists, preventing Prisma from dropping saved data. Apply `litellm-proxy-extras/litellm_proxy_extras/migrations/20261001100000_rename_lens/migration.sql` to the configured database schema before retrying. Deployments already using migration history can instead start without `--use_prisma_db_push` to apply the shipped migration normally. Fresh databases and databases already using the renamed tables can continue using database push diff --git a/deploy/lens/compose.yaml b/deploy/lens/compose.yaml index 0af04814c1e..d41cb8eb203 100644 --- a/deploy/lens/compose.yaml +++ b/deploy/lens/compose.yaml @@ -1,6 +1,6 @@ services: lens-worker: - image: ${LENS_WORKER_IMAGE:-ghcr.io/berriai/litellm-lens-worker@sha256:c41e932eaf3e4efbcaf8cc5027c7e93021e5b2823f21cb8785cd107e37b91c9a} + image: ${LENS_WORKER_IMAGE:-ghcr.io/berriai/litellm-lens-worker@sha256:a8e8731d954916594eea462969946b9292fb771681ff515a9fd296b53f856c77} environment: LITELLM_URL: ${LITELLM_URL:?Set the URL reachable from this container} LENS_WORKER_TOKEN: ${LENS_WORKER_TOKEN:?Create a worker credential in the Lens UI} diff --git a/deploy/lens/screenshots/after.png b/deploy/lens/screenshots/after.png deleted file mode 100644 index 983625e2f424edd23294942b0209ce26cdd88538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97680 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

<+w<*(=F&Dpms>G0-NGNHTwt2@rP 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 diff --git a/deploy/lens/screenshots/progress.png b/deploy/lens/screenshots/progress.png deleted file mode 100644 index f69ff1c45b3a610da4610da661fbf715ff18a684..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82400 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%0A-`ZCR+Lj5pm9rh3%UWDPSV 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

WY7E)610j2pGly4SHhH-w#HugR*L5#5{~==D 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 diff --git a/deploy/lens/screenshots/worker-billing-after.png b/deploy/lens/screenshots/worker-billing-after.png deleted file mode 100644 index cb8b6991036a2dd069136618fcb5f7e6286a523c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60310 zcmeFYcUV)+wD>Or7A_a@%_E$-0$4;$35qM&vUg5UZbR?q@?9zW?<&~ZP<5Ep1J-nm43`92+)lr;yZ zgzEVW;Kn5~7|kUbzyrVuYfT>qin~@gW1*^~dsL~Jr6bleEi4tIITV-1I(3{sB)FR? zr&YSS^yqg(K{nosc9Q+7&~NeSTQCFKT@f(5cj0cZ!oC(b2vWAFA4bF^#_=Mv@6Aaw zJ+3nmcxpD^oxd@N)z`Ai;AM(Pcund1F3z8!{pe0IU33Au>JuHJu#!zb#RFP!g*veJ z)1lqb5AmW#iA`y^Q$-@f(wfwyp{A=pbKG^LeW`O6jIX=g4cj4{He!ZfbDoQiV_iK+ zUbvBe32!|xpGZwQI8OKF=wXMN`Q0!>kV;_MeSMKp29LC3-sv-}*iwaR$Aszv0D9F? zt`E&Ac@uI>+i(0O!vAjC=BZVDf~*jQP$-WENJ4_*m`SL2?(b_aEs|7nT;b}irUVosfhU=qb6?Uw?7dQ+Jvu)Jfu znEH_NC4jEi4jCGv0itxV{KMfmA^+kTs_z-!0w9r-3%*jsh!WDSC&OL*!v_G6>s0uT z@%0@vf#akSD7~yQc>R-V&Li(L8UHvI4cCx~5lF+yjeQp}>>JMcFXw=x^}d5WvlGUf z1+@*#W@$$6{EvI`rbjWBWn3wqj#dwI4U>KH5A;@hSP30N=;qlsA}-e6^t>YLrBjwe zraht`SBV=*8|E0grp!B-{#vW4eSed$1L9%}G-4zvDy)9OfNTJ2L}0%8C#zw&KeK_@ zbp5z%K6Jj|>=vr8>l~0@qEq+=Hn|QdNQjTaxL;nku-6{9G;18U?Je1EFlfwHm8(C* zD5eKUN!L*F_iJ!NxMEG`+)t4H-N_u&Xz${>`HT!oycd_64)oSfb>L-)<~>j7NhP^L9s=g5*`TrXUV3ei*z~a zeEywc&Uz?pi3S}cWl10!#$}vHph7dPxo)suR*9c`JCE^<-R7L41)(n5_2WWAL9Fi^ zj%8Q+9a-u09u#Q)YHXbY&|1@A#=Fozi0uo|FjUGP8JuL@Q6@5heql%Fs>z#hPGO zvjB;B9DYB{X?bd}h&<45Rj@8FXx)28x%epbwWm+cY5ZslG+E*)0%(?X!;xG{Y)ywcB}9TS~D-mbGL+BwEpGgb@<$` zw}o^txz8Df71-TQU{s7aQ@^DaQ3^f>NQfSyAHdmtndW$xw1yfipS{UB8OyGY>VXw5 zj%jA^m$@%NGl$x<&7;^;G)U5l68>QBMAYX^{VZAA4Rq$)sAPJNz7*KSgus}Mql;+P z?*{J=VIvQD7e9BEdgXkdeqj+2t)H~a8xvZcoO`XTByJ*U{~*41ezG(+RVG_wA=KTx7I4X5c&Yr``@0h|8(FR1P#RMn@KF%=#=mf zn=eEidNVEas4E*%2XndCxfK^H*@i-zg9e^_n?Qqq=4~KuyEe+18aV!3>B}{&6ZfT4 zBuVQ}=!s*;(7a$58C(TDv_E0?&K^~E&PT!`3Gq5u8>q0twOfzhrB^6}&L(DJsNN2A zR>wWT6yqI<9L5O!mE9!&C7k=UpD8m7hHC}0bjmVFZ|S7IBqT#T6jo5_{53(qcj`ma z$BNK6ZwpwoG`;j=OiZdmWpdB!q*CUL$vJ|mqM~4pfk>f;zx)uhq?YYQ?(`i46D3Y7 z%XO!inKtz_v*vHlXi|ae5;AnFjXcR?!hI}Jf;6g+-!^gM8lVCzP}gh4oTXDY5R;Tb zdi7BI)?JYABYSic7S7VEl(!_H9QmZEcmyF`XC%xUVQ=B!C^cR=ZOuG8n^uMy>Z={a zK($=@s9DsZCePiVAhIbd%>Ze(+KBE>ROV<{EI!n_~Lo!I6>H+#ZY;)E?< z)nwWiE@f4wW&qoDMzuyuD-~shvpg@q3^n}lqCZA61yvR&U!FT$pwRirTv>VX@!^BV z5sC}}^h)dS`u)nV(KTZ!tlzZs<5@Gks) zb#?K+<8!Nl!{sy9BCT!Go>@VGARzDd;~pU5yi}O?SB; z-De`$rvbTg14n7t_mdvkXnDo*3ZQF+<0n*4LQIT;BP?0Z?UIGJbKA$R@Ys7cUSoDL z98=wO`4vo0xL*}8e0Y8B(v~K75^%uul9lB+`0%k;3Bk(7A+);oFMY$gyWR&I`u@+S zzdU_ypaTxGdR9}t0rru3fA^A_F#D}zJ;W&dly5^Uf^a4DIbr`m&lgKPZ#!^rogh(;q#JLLo5wtJtxIYqj{U0E4Kd1wWH z*p(<#ZM*qv@Y`1X$Tb@Czog={-c-gkf%wL@kP){xC^$Yuzx+R)-T)hOJp)=W6E|Q? z2NZ_R;ONQknASMGR(PA4yWo)@#}l}_j-0HVy4%a1+8k^Nm+i$IDhJlQrI(0rQa>kL z`8p1zAK0;7q0#qnv zAvS={UtO@)rcV$yptL|iOI#tVxJjaMLN7XrVvMsiW zKUpLXI#J1o<+f))#p(NMIcxU^H5CPqqBQkFo<(~Fb($BXj;Q{sbrN=LsOEF}i;%X|Ov;EBx-s=xe~K_k+m})X_1u$?49x zWN5II?BQYf13wa(s)+5+R@HDGi53@LYKm}AFmPvR%CG}9#%D)zNnc-X;)o&|0GYMuPuKKdQ=}hwx$aAdsHcHLQ_2<2)P*U(Y~cntS{cNiD$bfS_C!Uq1<=hlX1y?m{jOVXh6`uiT*?21zSStJ+V#A!Bu_| zG=zIZH+@&s=H49(O%)Y8HoxNx9D#SO(-p%nQj!_H%RM20W9xPBzS~+dp1(q*WEQf+k?l^T*_SW=0n_R1L7gox z^)6he3_vND|@zJ}&5xKHUvW`nbX4rMjL5zxugVZ-n+#TK`ogrlJuDykkii%D4 zJ;|hlc&q^mIs9T_4I&++|G^w{qMxj{C5NNnb+K z*2*JbkCU4jv_s{Jxl2wTy4fm^-4$sn_>4W3gVkl1> z=SSIY;JR)PS4)1;>SpdpmxFJ>%X|A{)A1GQEN?l=cK9^Js`~nb7z-UfYHD|EISAIL z2o_OB1j;jv*37crHiwg3D>BMBW5b|LQFcYoB!+jGd(eTe$4-1?LQ*cq?p&T=Q}kz^ zBKm!o;G1%m0v=%J$>8qB?Z@Tx4Upy@6nvrW%q z^5ZuXBcy;eAhMgQCsE0KRakt76th9hmaWJf2{Z9UcU-Z#>ot%f?`W7sXksF4{kCV4 z5^PuBYlu+-KUT{!Syy>aU%kpZ6$!8ZF2kNmW`-lzMn!`bzo!S!S{7c=DzZ4f z8&dM)mSH)k4b}Tz{j$7h-4Xj2VB6}>GfGWRPv{5o!z!}Vlw0-4L(NQB+NOePZ10ps zpbjWh%NS2j#hQ`y$<$EkdJ%lqE`#Y{$C~5VC`Qja!XZWeAZsS8H=mQI4*#rKt<}=L zjMX8I->EVJtY1F1OZi*H<~bxI-8?4WifUZ+j*(k}aKY}N#Gb@c;I`w zy?y1VEu+YL7@;35s)x2SwzlozV~!147U(5mh1JaXLkK$F9cy zlAUW(^;((Z(W|-{-n}|kxwiRiM>wmY(P4)rK0hGNa(UwN49iAe^IX&l9!8+uv&0I420-^!hINWUf%(dbe5jjwRo@Y{r9yznE3 z`k8BA`x<+t4@3yf+9?Ly3A40e?LlO{L3cGfLrGN1ebv&eCLq`NL=(t~#I7jTCt*kC zb+O6myE&u|rsRhJ84ofyz{A;>qd|)F%b_7rV;j`zd|k;z?Exo`Fp#LpBU^|TvNhFY z9Uv>nidfO(!L(R#ip;f%=69})(8I>&-V-~#c8ts+_SN~Dp!TEi=U1pMmW3aq`(!qGv$_z8v zDt$19h1vt#vM$f}=!X;o;}T^E1jDD{1vwnT<0)2x)caKKD9Xqqda+ZNtk_} z4IyT(89XuN!&mgF?INOL0IYz9v2(L2WbOM8yt0UgSjetOE2gPaMh_0u#mtZ#fHBHl zHg`39E24CSJ1k5y_VL^Y_m#XQ(_in2M8Db&)tV+@%W#m8eI|U-Vq{}-&x&!rj><)M z*{4L(!l1hf{Ll!c8}QGs<9Qh>)~v^3Rxc_f zIb_p1Yh>Kvc6(FbSTPIztYDzLjDoTA?BX#iuQ0dVr7geh7NUWL-|ir)ZI_%4_(VC% z#6(I)qz4{ufN6jz?Vp*nVM_6=SlAC*!{zKVL@8EBP+p=~)l7SX411I_aJND!MVJn& z@7h_Zj|dz(d;aO?eE~7cYlxO@^&0t~D;BV#Q`_0@+p2D_)%3T2xCBG7-$e9_A4qyu zW(83e{lUAQeg@}N#WcsEU@APnf!XyMD6-Cs*WaHxmhyvr`-F$&on>^xIHK+I2Ffua zv+2(pJjoH6E6|VRAmBC{)}yEZ9>Od?21l*7OEXPA{6-u@@p3C)ELSh9E3F z!0r$iWeErTDh7YK^ieKWsdXpg93W5_1S~dCUi*=9i%Z_k@>*KW;%_O>T-ap@Qpf*u zJ^lyX3O?l8b4}$CX@+V{R)ZvhEO~D`&7No=v(U5k6z-wwn)?s@8TzyK{fHfNFcjG) zrJAxo$2>?6BsO%jz#{@wpXg^PR-`T0F2nmCzAE7TCVO2yFE&HD!;mvMjTcfF1hS(< z`la^(*`Ih|Pa|=`i_5A-gptT}jijTWsXLicXV*D$QbKKLMH~?VW7!c;{0&%kWrxK= z)aAwY)bwK!2;x}QA}wC>>nvsdBLD`3-ahX-T88E2aQ1;<**YbWI{Zpx6axvYEZ2FzJ| z8>3l4;JtkC@lEa9qh;rSU8DmOH=*_@si2YRyKZElZhY~xYvjH%759er0Jw|WtoN26QVZ`}Dn|II`M5pSvfG^aVDVDB7& z1P?VAG~R_Qjb~;PtREQhksT7&|lk+c@IHqoI#Rx!=l+J9X}>U8}AdO^!fFnn~5@B zgB#XQZ{W)Q~+HTZ-X z*ziA|97iktOs}b-N2{k&HHNBl5KbIptOy+21R@&T8F(UbLa05hc*!ev*+ zi@)#Tpgs}v1w_HhAYSOXI$h9+krjy$!s`FXWF>y8l+{Sz<65fUhh?r1TsxDI3Q?9k z`-xzG3Lw*lG{XPeE;XZw73>O$)`OVnPYI&nc4qv7aIX{cw_&P#z$`7kWGIDc@KvC2 zzIT6PbmZCd$=*lSSMn;I7@ze%(yX{&ALU;)0RI3mWKoT)fJQ9XQy2v-jzun;jebK(V_dU1xbjr1;xJfJPB_uSfKW-&I*E5dL=dGJu`vFyA z70OzYb4F$J9s|LJ@T^0^@FtSE4)kAaVR`w}x3zRC{2zbN|Bs8ng*dB&59DmVJ6N@!NDHzUo9n;w^|oo~EBl~R zZIsfykjZ&#v!`!WeL`#>OFT)p5OPuJyM;TnJqJvg2PckwD!o6flp5FTkNYrQ@w)nXX#64$~^{uR&>k}2L+97HKhUq0QR)0LO4X86d2Mp|l^pPHVp966F62H|3f-OqU z0e>1xyyk6sbQ(^1i$W)_4h$UMk~9q|KL@1D1t%a3ne$EzWvPDSM?<~rgRt4X{^O2p zuzNDyU(W$EHZ2c~{-9OqBj!BUOcX!9C55rZ@lKF=Nrd$1&yJBRSy5NQjwR3DqyjsP zzT?RpcneaSJy2->`eG))n9Xqyb9_tXfEwg_DsX%bpk+WulxHO~-m^XUAoXO={=xmV zkWk#exGbpNwm1j;po*&uc>b?`qNY9{+Rn)GrnGk$jad8fG|4{PdH5dJ(5s?6witLl%k!kLH45{yI^H1ATHaDG=q~B^I+&0*4qK$j@t~lBn zS9cE3sXyf{ytom+G8m#ZxNMDEFUxj6(vEvHE^`j3s2};6_4bcS9=zL^H%4q9;K}N< zt)90iKl&r~cSy}K?Ced7ruI1g9DpI4zyL!!2k8Dmd0~=D#S(UWOZtG??B13Lxm$_! z3+lhcrpgP#{#F|_%>0Mg+bKlUgDn@y-@N%3@^ny=*ZoKbbV>aW zrL-n$GZL9{Yi2C&Y~l|KZc;jl4|@H(%-D>MokZ^aD!AEUJo4)gnT#vZ?D{<`N(;z{ zKd@B4$4rwIvKG^A+|B{p$~UN)vUyyIYc6DC{8CxoihDRtPR^hH(G;`vA3KXDXX4t< z0k`T;xs|O-M9DSsn8UpCZa-`Itv1AOjF>+DgA~s_MKXIaZSHWUqe?NFx@Z65{+j29 z@mb;@ZDf`IjWqk;2Z0m@^H0AqU@~)|iZim~98gUb;_p%SzKPoA!NF;ErQVd|y<@Wd zl$B^pL(Ic9$;j_KP!x&{s=DoKp#|!Y$u~B*^<_wVj)W)CK9>l z@N=Kc<1v|yUkL~q=JI`GbJ0^B%}eUp0x#a}H% zd}A6YTET6m1^U=J^}c;V@Yp|jK-Ygq`HH1_S-a)qqd84xQ{OQ=d`q%o@>pepMKs!h z_luR&IiRZo?JM*{#3*53)JI~EJ?t!U8}|{p)jY5qv_Dt(8NFh*0flZUV}5(|X5!s< zo;5Y_&h;8r&Q8S|LPIEy-V?8(Lnb4YTb2`dY=+yxM?AR>d_V69moyTEyOu!>QRM~M z9sv^x30pQNmz%?8Y|w$0hu1~#kOE%2Hqhc%S1hQQL@#XH%gtW1sJlp6SE{lKpVi{% zuk|1!U#AJr_Z@0o1G5xPdeWGHlw;C-DnTEj&GRV_YFqZBcOKVVIRj2qCS^a9w&DJw z>L0|+!f9Bi=CwY2M1St8l zKFGYh@pvNA? z-oK5GnUOX3Qk|cGq1ivHvc?X*Y;@c}RM!9j**E?dS^x?z!n0ML1dwpspPdN*-Ezsq z`00f;I@kMsnBRQ87*8hFZ3S<6-ERkaiB84*LM!{*qUB0*ld}bdgcMb9QD^n=c%rzE zf?8h+7WRC`{E|!^T=Vk4M`5ab#xJn=dmL{3K1oXNk8c9^crM8NsnM5OVb+dPcVx)azlhqJ7bsPo8E^klY|f*92tO4vO;NT!B!q z0B=4Hdc&de_={e3?yBhhKFh}+p=40;J;8o*m3)&-2J@$#HOFr&1d|bSh}krL9=gZ?$4%FXe6*Q{n8i1TW%GTksfL$D%+OWbxG-Wx zC@S1dyl$cYCMc8Jkz01EqqLBBnhud)G~|a$Mhp2$@S>|vX-2d|9%@o+IRD@>!gJN( z*#q(g$6LRM{ZjE0_Qn55Z7uo1C@hJ2Dh9WNz$}J-#mwcTi}4f52^tnNgc(Qt71gc( zC2#?dA6>g2#aVs03q5&6mrgRPPgQVlf2djSBDSq{f&FVeoqp`<>no*ciNiOxJNUHC z{8r_DNw>aijutdVYhZL%U&Pn+bCykVV1Bmsrgd1PDt@^z{^eGt9OiLED$bpuq3a|B zTVy<3g&jED(oBEExa1_!TGoH&u6!=iIOrN@RCsxICcE8cfSOFZkGW%%4 z8x&1SAUJdTUV}B~+xSBlP%BR>=ncgkeHgV5{5G73ZprCt(GLiQWu%1@!`)gO1m&-R ze6B7{eQ+wvHgfBuIj4?$m+ZmM#V9Fs?}3G^Ci;bX{n?IfrumLPsr8xM{4J#1WRx`c z5_ojS%Tb`NSyI!azTDkWAsx|Qkh6RjTNbzWBbXuZKyg^$SY=c$-7psYf=DRKY|EYS zN%7_rjAC+4(NixS9SFXc+CLYRFgvl#!dzV@T5@1UeK9%3(RBF4%f&`+JRROIH)ziN zChJ>Ap51{0JLQsNtnjheVaqn9&yT8nca3Jg+AqbhBw}AzYm-^5(GTf!0QXFRSN1z+ zM#K7;O^p#vU&*K!3W(btj;GCR$<>HlqDx#cvKPwt}NXoqq9j z=vU#~c|n?ubrG4|T7<$(_*s92-)w^o4(ugSFBmJ=x>R@3(s6%G5ZOP%FhW>5-qW%rz?`Sph-!T95a$)QBycDcC31;r&cqv#@dhMr*uxUt?~t{QPf zzr8s&wJ@nsosO|^Hc1x87jHPV8pw6%e?Bw|q^8xY$aUN1_1XSq=3Znz4qp;X0a4N| zFncC`oA#1bda&o3`#hklEZ#BIyC*xeg_hA`7aM*Imh#{ z7UKlxoy@x22~_6XhF}y+MuWFZYsEl_4vwS){8~LMw=^tFsP`CoQw&$|s!?G(Z1JBr z8?MCY8N@KZf|`J<8;?waO)ed4Pk5`)e|1a;&C5avhs^ZF=DHY+If;H<0p@iM@YYB{ zxaj#Oq4E4eS&<#hxANV7tz~*+RGSe~@Ydq|*8Bv0S?t&2mQf2Z^jPpK$!Eq{5SWHe zDuEl+g`0tOFt&g=tOu`eP&zJ`nB#msCYNr!wC(s>y6LWN?S!kGD>PF9EURv= zftD*N+^^|Zu1d=G4DMLuJE^0c+n_rT1kxi;5^6EUx=E&pN*9y@jsJ1!M7Z{PJFijx zcb@o;r0V_|;T99~=SSY#PFO-2!5je!jLEv^&pr8(aF*sqJ6iHHYu%!{8WY^<>+Lvi zW~QG+9778&C8TS$VPs}NB@0(`+sl+Eq%EnJ212-TXoD6^u3-}{-<+7j;Ju*_Dq*#s z!GSu0Y_r_goPH+8{(SSO5l@62hD7FeKx%NRJKw?_DI*vG!r~5H0C&>aDO)h6 zPv_?6x|V#yLabkz6K|o0QOdZWVj$cX1M)n^<^4E#+&I}68;YCotj88Z(PYO_Iz$yn zO2S&;3oEXT$5?WQ<2!Qd*=qQUlXB(i`z4|h-2HV_bh;QB#xRspxsW7%{!e_}{MKAe zT;_HU|6Vu#YnMw=$C_lz)1fsZpPR!<^QL?3^D+9fOprSXU8a(LLA|Z%ES-t%ofTPx zQPP>DU5Vq23mOZl>GawfUKoa&zn%DAvK*Hw)yOjo5=Lj`z*`~GnL1HK!zI%nbQ>FW z@zWSM;iz9X%y!?fdcsOVr?7LE?!&&&a*b4g=8fs+Cr4;3ysFfdO_R31Dkg=)pxKdc zd2Of+S(w=F?0{_s04@#lo2q}t;E#>SQP>mARBz5Xz+LCeXvHcKr8e6NguRN|cw$oT zB1r4;j%J4?^j|B@|Ap!t;AWfv(l$yz@jJKcWyzAflMf;6u?{}&pyd>WO#bPnJ+go<`nE;+`-&a75$x%>op`2(nLU7Itk$KVtW z9rW;oGX9RBs#*aHj+S2P?{cn(+oHw=`8FGn%~78d(}Rqi*}+wtjrGM0Z;5O=5>4jN z-~ovWRNLkwE#SE*{(JWkSkpy3xoVPo0y^&}k5JOFth+OThtJMv(BbyDDN__hxISb{ zh&kSgv$~r2;BAdri^@8<7QYQQpR*iC@fD+3IawbK2p61q(bdjh3LlsI_F1GXmk++f zAc0hT3;AY;NND$1eN>*29ORy%#AL4CeP{F=cO%2i2^RM01#WjkiEcYexJvYc!3j6% zq`Id!MI*g`L41@RR!2WkG@~@&H)!yl6A;K~8NzG5;8{7T*%360Dsy((7UCbRLFs7Z z8#FbQY45P67=Q%tII?+6x|bwxeZnmXLrj&!MCF0#YZDme?Pd>RKTss(%k z`sectpKGcN<`vTnWxl1>7?krhXvxM#iFaFB(HNHHuol#3k!G`ImvF%MuHEr+m zqERFF7_@*s!d_W249(RnKK|8qwfeVg3~m9|hK$x1S`U~RS?+78Z{u!=!vL?#dlwNxT#dh4dlSd0ZR-N4sWZwCfsM-hD8;}4 zL-oAg#6H9!Ogz6Ih%_tMT~%!;N$f;qt8Wf0~cPPXnqnx?G{^A#N=6&F#dJ& zn>!1}gt(Je?Wj_PiE$AuFx z2DS+AIr~TA=&Bxfs9DKX;r0x$l|?;5U+Ak=JJb#1-B@!aOJ=-q4BjS<`kWFi7f~B6 zC*Y1J$h+icuFjxa%2&dm&V9$r7YjG)p4yqxil_C-sV&Ex_Va1S^-?)n5%vH?{1>8;1yr^!OGNg5D zdvt)9JoSSpX-ZP}+A<_p2h!Mt%5Y%bCP3%;u+Fo{(jK<`rKg+bYQ^)!kQ6&dW@g)O z*v}YumI#~_uBbt7nZ@o6tAlb-M5S5FRbl7O!yUhb+Dyp8m>AmPGfIIxUztHlUEmVA z7xs&h*`?+lHA7cYzP$)GEj~t>8v&sy!%;+$`SY_cK3$V z<~n34WZD_6FF>JPTFiSX1;F>kggCOhfV; z1#%B!`MfOhe*NZXqw@YZw$WI++KutYAd;(vcZy&bQ;~2ZC~eqW0%^=2BCPU8zLeBR zxOW%t&4;h8s)gnX7%*eO^)hM4INZ+3L2xBsUBFFfHtoDIu-SW7z>7}E?!{Hrs-iiL zF}Gys@pQsAzT9J&h3te)5!EFw^bscqcBbi7O$J9cOkpQNpj&MYZ&n0A-XB*ELEDzu z%>9!f;6H$oLA5d>f<@#-OpB^s$GsoD6_X8g|o1@K3Nlp{k;uE^0%AWQH0H9 z!M2(y7&b%uW_AsRaju1$8kK0pf&M!U8IBX~7!8`_$yBb{!A2ob|45v>u(PPq*d`*$ z(F|CV`TXPt0=qBh$zQ}Zsj+A-JFQYrl1`YfmoILdDEr0_KWg+Y1*>~nE^`cd z2PYwUzA7=e{kFh^-x0Y@L=i9e&d9Ink67Wc zOYiEJkg7@Fc9bn15o=|$A`LOh#R=dpml&Vr!qto_#wfqn`dBnMyf3}a0-{&+pWB}k zD2@`8cm=BVXf|>PElJ*a#8%}|S1>!^25$SQwEtFG(UeuIToXDW4U$%+v#1t!fFWGi zLJ$ynSGG>|Yh<+WEKmUb3aRC%*$GNP4pEk$O{(rxItU_u;fW1eF9=K;*4hc=BqkZ|J|) z!iKQje4j{{^G`H)^Geu@e+56)r4*-8FP7Rk&R7?4n$^x+A3qASk5(sM0#uVD1MM3Z zN4HtD#KfrnKWM4}rQ4()q4K;Q6|}LkJn4r^^;G33-NTKUP$+CW3pc`5WkUu zewD!!8^wgWEw*!b(>$$@LfJ%iu8XkkAg^RQsXAO7!mX)M!?)bX8BpLkH+G_I?iUZ7 zDGO3lTZ3p>=Q>xZ4$*3 z<;~P%go(h^3EmbXuS(Zf%&&V4+HREBVNmmtQg&di34Kqj7;`c2ec*Y!sw7q;7p6%N(>olVLZR zehn94v8s7jiJ7vl(%>HKg{MvsQ$gvox!F%1ZJl2x51)|kSaJ)Jz@ym7W8=d>&T`B^ zBJ9j0`^4w{a^PLSLF-?hwHXfr?fl)LBc`Rmg_gk`2enaRpFMQIENxin=G&@to%H_2 zoA#1b%I@p0raqf}Cv3Z%1HLzA4zVdu`m#q}(F)DEeWK{5vF?$NA08 zNk;U}aPw|bW^?Y9uTpynS+abqJ~AmYP9leFGCKy`OeXr7Pr5`B=C7-j&-7Wy!s-b0 z4v+dpPytD-4qKT`qf)j>>S3cvgA#AWXaPn~0~da1 zm?iNmFJE6tS9OA)xVPm^qj71zF#>LO7IDWwa11FYvyxy1F4;cDVMty(OHt?{Z}?tI z%fP)mHG)tKD*<~=$U!2(LaD1CmOk#Mw?H7ETCtuEjzuMNpE1{J_?>5yX8QX<{Jx(o ztitWEx(6mCUz&A${;L;*p! zPQ^W7R-L*!kD78yHZ8l+yqfVKmV$zc`RbIAwS4Wb78(3@)}EGVWmS~A&(2ePl8eM_ zievpJucoGQP12{%7?sy1Hp=Q~JKju(x> z!Ys!{ue)qbhPv2-;2nh0Z7&6ya(Q9?HEQ(fNGhNAsfqZ;_wlaMFlV8|=rk#!K@w5K zoGZyLqg|^6>>YfP@9!Gy=xztxLj`!$;OOP_hiP@{JP@e+kn~Kg?%Nityy3gty&u2+ z;z^D!R2`04)#C?xWF(lO`Q>H9!;-CR)v?bFXOO=@(HMSJbjB72ROz0S=&BNYqxb|# zsenW!CC!`F6EbD#GTbkx51a!UnC_Hoh%E|K6C~?A6S{-m)OZr)tg)WbAks;>z=F>K zzd_8?{Odv>5y6r)ExRw2RVm}f}|CNV4st3~W< zwXn=gmRp7-UxpN!+J#7gQ4EtOe4SseCJaBIvoM@Pl~maD#_Rp_G<7x=lqo7#YY0m? z(eavV{FQ(6%}u?0>q67wLslo3`8m7rRGGE!zZR9xs5cl&>DgKHLE0ZG4M=h`7ANN9 zMipDko1Nn+F+n$0Ob53Xtqvml&}iCeVnROHol()CH0fc<$))y zxrW}PM+*UD-*()b+EDT$=*vQ=2kc66I%U9ocR{h%aLqMcx1PuO{7UD5)3!@y#cpG* z_2axOGu2pxAt^inNaM&aRgmo+cFG1|kUEJ7buO}Ktb-;I`}@&J*ducMV&?z-g;br! zXql4;Cv@GQzBybWsMu@u+9Pg!No{$iNTl8A+0bVOm|F1$eOV2v*aYFd<CFkNjXLWh2_6Ie`wA~bfSz=6I-j?_ zeiCPpfq?^Zkc9earpBao;bDpBjgznIb0Ao_u!}(>!EvHhf4g{gXij-7>sSL~@*Un& zsQBX3=mihhn{hAPyvowB&;Eqt1hOt)zqx8vempACJ#6^_eM)3m%bvq`-CL9Af8|VPK#+!N^`@#GX(h)8q1McDIRXwyA7vV1ec! zEk!H>>j~^{>2F3=TVG{=mXLTnHOykt9hmuqkz2~(rw7tm7FI=GDHqL8w9(=3o4dXS zwz@7^lbSic1=|71ogM9pWT8t7x1%9`S~WbCiS7Nn3hzV=-zV3io?94T1&dL9{kOyT z`h=^GFv-~=t>*wv%Cb;r%hoEv6oKkPIn_*4XRoLj^MD5`4YGh_`M&S-PSXbYxOu&% zT;~mxVE1j88m0AO_>zUR>TI8-U$P20cJ(R1)pHK_Y>2St=e*1DH`}o@lsJf z%)B^jLs*1>@V58y5cw5((Wl%F;7nnrq9f@bvozsD)>QcdUdwv@*bbGEpL4PMwdU78 z6U2aC6G32MuKjgg7zT1XkOjQsZj!jsSQTR_wiSkv13k(vSUp=!SV*RGNb zOL5|NLta)*%_Oy7GNGbFXD|`4+p*U_yu7Vn7en64^Y~5tdqDfa6Mwn`Ie(^)H@M-q zIDXEm`!PMdhT_s21N-m*o+&=Bn^H7xyCig>JTvLu%kUV+&@4cQ;k!MN1LIR3<4e>t zJ-rE;*Lo@?0CXUVhyNxL;6Lwek1dfEVm_G&L}#$5rfX}PjmCP$;dM&_jwFRkkC+1W z%VPNgZ0-s`rO3TrJK>&nF@4{P9md{Obm}FfiWHF$4Pz@10&;6)U!`>TT{2_Y+}tl#K8y zBF=H!QERk^cjK@Inf~MDjw8rsk}^Ks_=UP$L9<))%}v9x(i&qZCU6MF>r#XBaJX*G`)%WjjAZsc#VBDui&#EPF~Dg z1CUBxeMP^x5}dvIHaIhV?)!SxF3`^+|`=BW;?>BE=Xk8Qk+Jx6m4YkaoaZ??Z3b*}i42t2C z`U=U&r$BwFEIbFSyi%}8&$ogY(qJA~b&=DREV8=ZTwf>ItZUjlv=0F?{6lVCnaU3= zm#6|wDHldkHN1%Jicixq`x!GwysX6tC9b4B>7J@NOQEgB)|r4Xb)VIe6mar??rmSUlqt1B~|lxf<0DctQq z&_Y4q5sFd=N~G+_zw02sof9fcwTJ^#OkvUxM+Q4z^E$#d=8R!p-~18Pc8oRkN}8f; z{NA$})=FP*BXsLZjh^6G5HbNmLhC>&S0M*?O6ea#8~xV{3n$@9>$e6E|B~Tf&v=jz zEyr$1)i6so=c<8A(L=i!fMCu>ESi;UCx8vk zrRUb36R^BXPH@**LItWYh$h;8CokLM=OoxyDsi!?Gb=sqjb4>x7u_^)jsJ%r%lkIk z?0PKBH!`@IL)1rVafLAA%mv6qtbFNuY6}8c3{aSDCty|2#v(@>%Q!QY#py}Q4 zj$r5Hgs1L?IapC3T|Eqi|P5G_k|1-~^dm%*^aM?4;@kSTcmEk0n9#bovhKruB+_AT3 ztKaPpNfnv7B0W^?Z}6b&UBHXxh?d`Q{mrwIp^j$j^vRc3ef$3R!~VYl;XlsewE-iZ z;r93i{|9^T9o5v<^^Hb7Hn2;PssfP?g46(V!~>W_0t7-yC;}oTp-2f;z;mmxt5 zu^cp`&(fZu0%1GH*wlbICQyxM{wGux9B$dLJ@NtOc^a-rc|zZ@g3GZ#xizyT7eMpv zp<<02O6Sf=U+a~|rWBM>Y@UqxKtjJ=tIG=IFvG>Q=lw*(4gobUyTUj?AWz{5mn_l&p ze?xXnY&<{pVW7l`frL-jA|e&}><`(G+$z!+X^J$H0p#BLq15APS}*(G*D^>|QcOgF zvt@WtP9y{UFtfPOHEPDmM*q|ssauf`08Gn|t9&yU>a2^#>8{dDa|!U5ea(g)DZWG{ zUR!8>1zx0redB_{$(vT%YekC%`iE9+`3z2>IzC3p?>GBF5%aepBrX{53q^)6>x4Xv ze)ubUI?Jg3#dr0aO>v(d7JlDUx;BcZ&Trrf;i4k(>2Ok+!L ze^rTun?H&;BzXUw?Ec!5wufVT#s{I`d}f|wQIKCvg{I}~W?Tt(fme*Bln%}8Ef#L* z(>g0Eop)#)F`gZZ)EBg>X-d{#>)aji!AnN$D1rv9uDWzKMA%$s9Olkg*2&LaZY2}@ zW<6ay)*5s>TqFh>jpLLaWf9ph$CVP_zK?21oUw#&&EC&%du7V$e{e=olEIhKU}&Kw z;k}roR3PU0^GZaF)rBqv?4D4{WARR=vblql6fFJNfYV)O@kAKIuc| ztgTlPhX0D>Bvy6jBh%}YIktE*jz2L1#@Nl@I-G%6lQmfV%9qmWkl{2K-rI09MBur4 zK!kS$qV1}A5%#H7kA()LDNvE!@)Ln*RSAIHYi-aBMasMsO2piH?2QIl3#q|!r9HlWamJSHYG&|zUuI?G`)7c>*18IOOp~AcU;n( zmX7Ki)iBvmQi?NVxRr$_4TvKs&^uj6q3mpWB#~a$`}1XYHGOpMbZ44?ive>U-D7gU zyDRVFhg9|PY=|7T*sI~a!P*5M>EI^avqSweJqq3~dTaieDLOthHVp_wCZ;$b+=f0n zk(5`xu7;AWqA=$rRy)_!5CP~+b1a=MiI;ILubwpTNM@;FUS;}@(x_9j8+1s__mz60 z{#TRouC-moy9}#Tzif-Sbr0W2QkHYE5uOKuut8iaGjav*@^6|oUFa?y50!CROYpT% ziMOY;jVTf_3S@V2I7J4TWDIO}xlI)5uZgNL^VdFk>oCs>$=}B&ZI)ANNdnbHp`q6> z5W;|$me;AU@l=jZbRLIkh)XVQ&rn6EBd8AP*#obf?g&f3TNYgrXl^)}4LtGgywYd= zv#_zAK*5;W0o{PQp14=|uAn+dmlN4JThX#|`6B_n{@%){Uf%C;W6XNj`U#*{2`82T zT3=*?Wh50Fg)N_x+JL^{vJJisxbU}0<-a)`y&JGU^-JEn=OMjQL7L0fk>bG_|4os< zPVXyXZ74WRnX6`PUhtCBFN?@Bz89+CUXIbv5|EM+8g}z;7MqgJO-z_`p6S{hGULg; zk-3I;UO$2IziExK-#m~p^e92~lexN=EGbL%>WItc%M83Cbdg$iTTyZB_0Z%oqM?9} zY;D=xX{!rPZchx!>jd{f?goQU|JQvna?(qju=h>+Vt)fH*~E0DyW% zG;6P8p0R4=-PmFBWTpr+_i-uZo}E~{ueV$M)xInfRs(a@29dN z;lYB=@`Ty<$T(UNzJJp3>Oq5NtzE62<-#gPO`#-r2uBp^4pjnOygNW&R=#u4->Nli zKtQj@^FHe?o_>a#@6^-QS13;Sxmrf-<9UR)Lz*l zyO|^nD7c$W(@FMWrjRA%lSHBnCOhzo5lh5q)7m6qKZ>h%Re1(>eJ!-f#4SHgrZ3qZ zsK?O#W;w;bs-_|y`839rFBmV>TIBml+1Ot6&r z{RO*oGqznLeCx=*tq;$ZX!I9-l6=&6eTGpC5)Z_9RgZkGRV@K-M^Xu7NANxi9g$OHiKcj8okJEWy*urx@k!f?BdD%lVds%tP zkW&LCP4}6^cBuSpc<7Pbhp)MOrLA}ksO@g$yR z)z+m@9-6SxhlkvwD&=09gmVf5i_w#~nN^PN6U{xbR?NM3>yvSG%>s?^15Z^%&8gIT zj!ud+2&pcnZnDK6X_z?)aVM{u%JO+CuX+Oe$DBPrMK^J^=TqG&gH{*?dW5CLU{|1V zF4oNf>dcG^IaP4)xKNp*c^W9_zCmG08NqF0{Gb&h3}ranlo4l9NvpWMSosfa zx6M`@b+WN}tMsaZrZVFd<09TzcZW*hrPO@|w)$5@hI*~wv@#s5nvKeex-Mp$b~)u; zgq`(pFn3B;K57p+p>cU@!~ZhwpZdPLs3Px5O&`F3x~9^6$ktueQ(b{V*$@vh)HV!m z@W`kM+B{^3u@+s+rC`n!cgZ-($|%0TdSL65fbVF$2AM?q8o~AO@cUW+e>C=S$QRH4 z5Eakj=&UZ<5oWK-fI(~%AzKS#NI5*hOphnGdCSc8Kb2n36&ho2@!abm%$PHZ#M^=@ z9PlfKnNe<0V5J>(7FyvScFf;$GP)f4fPb`7X=tlbjdp0#qR%Qz`s@3WH+kopR5BY_M3jb~*5{Q2l z=)C9s@SDN^b{&Q9GFIbnofXP(e3SFLef*nt86UIN?+z z^*7e4S)R`clV%R_Z-9`UXE2u=0I|Q`WB>O@eH?MNB%YFZ3Uh40>Vz+eN3}4oG(9uy zs9Da&0X;OBLiC3mZ@4tj5#Ea)c_Qk8K=?C%PC3xLKMEWvasxl-jNK z^=p4&=Z`9(rk)kzTIW(rKA-;fU3oik!tgO!%dlRrNbPiI2C?@{`hR>Emfc*F!OF`T z7d(?5RR|Rp8HjAW0xQ?z4~urw6)`NjXkV(ME8?cjr}dM$^%qXfx;-6Jk?_j%1IFI~ z++W$0f*k=$tMrO%R>lg``J=569xKa$>z3(vi{n5zcIrD&m*g8`aN}YavI#8f^(?MV zbL~sOy6MFG6v1zRm*~_jr1kdcyxLvex#O~P_r6p!eIG-&lCH|Gi`OzH^G?j3Wx9-; zm@HFuLXFdtN)S|D!>RrBF?I%R=(No9=68boDq8JF7_2T1xHZ9-XsI(NX$dE|dOOl5h)-Xp1(Q zs#XlfJqaEib~_Qg5wIeobMlYkhJUoLFa+16u10Ly8;gMqSCX`nCA^m0||ON^IE96<&niA5?SvJD{+Habox>0aO5WZ5^s-TVco-D{*>*m>@)2m^G0 zQE=T}W(^*L7@O3|kPs{38Ws86;{gxyRX*ibLWSiRxjLVLgTH!k3m;(eS~EwN1G3f+ z#jUH{x1K}MTu;QL&y;|Q)BGUGLDkEcx=)5a^>X~hTN_Fqb6PpVAh)nlV2oHrri@Pc zzn0cEdYW^wmiIx#(I#5gqQp9-DFt{WTP7hP`h)KFyS0Y+B9ax}oXPTzPJ>*|vUC!< z@<40i)*mAz_`8a4HpLNy`N9x^lUg!}i$_JpavZWhUtT-z{K2AKp%UH!4?3)!*`uvYBX#B2;__ne%MMMo<+$|9yr?8XB1?RyS4faBh=X~*SEY7UV>>T4o@-L+c zz-Se@Y1-2?l_ohCjly`D*um#7YWjL8FY+OC?NrwZW!X`R1{^| z;+eM+L^eavi7sT!R!j@_+}stSopUxMsG=O^6J?2Hy`YAA0yT&Me^~4v<0a>!Qh0+t zGF^A3Y?xSncTg)wXcaCGuG5jtomGmmT=_h&y!YYcyvYVHX+p7Ahs(2gElpy@ zjVzIDI}ufTYqcxF?%(QF*i3S9vPnl-56^)o*WQJ1azEC)s2 ziuR6v_Xxn=0(kg$q+47Y@wcNraEPx`peoO$iSQf5yVoP5oNr8o{C_~;2sku^yKI<& zf@35p!N?W4_a*MA?!RTrEDiH3=D0{LimxN3A z4(cxlJQuhOIIhX^(sr_9>$|L@<-Ps(9%cs2q5~Fml)sBvs0b!Ytnyv_4KPaySY(Yz zkL1eW?RDAc#C}Bx$sV~>FCU~ZkmN5PzBK4(Ke76WAb6^<=o`R#mT~E!4(R?GO0vnb zxH~j%_7v3|a_^DZaK6;y{Kw5#LWnWmAo2;r@x)}PUWe0N^Wo1GM6w0E^Q$Y)rqu|% zfC4u4F-8|_HhHb1k-UnS)Jv(e8WLkYPo-ydGU@I!(WHbEeWN_5m3zrfyTCl@-&l-j7;aA}clDD7v2C$ZtiRy^F^oVH`q;gw|DTal43Rr&HM_X;=9bc z4Ge3hKt~(MriAOT=3lC-#>7ACq-L4jtAp`Vow79K>pcXZ!NBIpj;Qdh{NO9nQe$A{ zSig5%SJ6oOsG2I(fjGjCTku7oK{ z`s+`uBHO)r@wGA}VtFXUv$!zrFt|j3FvKMEg+)a?pr+0KZ1#0&s7IGE&hDEE?9+Av zFCesw%#-TAhsv^n1>_yLQ+gEtR1uZOK=I%?MjNX+Qhjr5&WyI$Z4rtH` z>3;e-3y2{L;{2ddrXWB`KmXGRQvLeGQZTz#k9J9Mnph*sS|$D~jZ85UDl0nkn8bZmzavd@MTTkJJtw~)3ZJTMTt)#!8D(dtTuw@Doqyt6a-@Hj zU$F+H6lzCSgSJ5Ryv|JYHE+fU>!?kdp#7E0{6*tFt^uUHbpfC8Ps%9wx@1J!(|lZX zA1zSCEZYW;7`rFL>AcE}{xoR6(HQ(DmJPoNm;WQMuM6H?!k=yYt>I&EYsaIY#V*{(YnL0fRLS zc~7N9ckxwGSXiQKM9aL?di{O<3;^9{gMJ-KS@B;9I=;VSiqkdzzQ`cE9E$+MoP@=Wz&hSP1AB%MUXN}Dr;O2oF|=3AGz9y{IMgQy(3 z?~*akRlH%?%eLk3+xs$^n-g9l$$23oi5Qfm+%=l=`CtThM`_h+;2!Lg3l%k&5Cck} zp&p!H+rl}Rn5;nUAuVLXYgg^w$4+xpAXzc1qVup_^4-n?CKlth$yMUTi=RYc2&z42 z`s2>EN}dMm$g!46(6Ud5(x-neDjoBa_ROIA+LMm5{#J-(9B{xc)J%E2WPdEH~&2{q_HSG27KT$ko?aI$QWK6!XUg=dBVI@8M^lpaIlq`xC8j@e&A_g0!>mAj{;5|0?u;08z5bzmE2e(!tjt0g ze(iFlap6ZILbB<_GO(nAQs!`}p$q$t!E3Akil@)tK_w><__3y_WHRGUZY>KE^zZ-v zU|Fq?=(r;8d3k&-tjRLu+0Q>2WJ18ByxYw)hWb*+A4f?fI7p(b10C@7mMQscwEGi> zf7W%~Vfzsc*Q7`oCp62<>nKRre*;MF{5lT+*kP2iS2{dUZ~bj|;#>NAx;&n$-8IBR z#4AHw1C$3c%89gt&va$yTTJJSADj`a=z2iX9Tm>nKSKULvj3xl|6O(fbhSowjnK$C z3NyteS=u|F+@lx5qhWLt&*$kW$a&GJ_s=i=4A6FGasRv~?@6wR2>&r{{PrO2j~DCx zS>|2i-Tez;vA46hZ{IH3=cxnz`5yD`NxKoy1&0ySHw9CweXDZ4F^?Z`{8|bhV>&Agnn)0WwEgrA0J0u17GGl^)Y1f z*vq50D9#hg7i12WKZoCB|MlM{Ar{MX*ki%!TXMwjvrm}HuCRQZZMwle&Y%F(IK9FT z-oXfhgGl@!W_AS_A>33Nbk(E4Oou^R1b>jY+0sb|5$3d2uOJRZ%~@XmLOm!*OB-es znOHyMD$4?SOhxaRU`w5#gs=x<&X-d+ZVPs^a7yRqHo898mZepz^uIU%@SF#b0pw}$ z5Xq?MZ2XR@%$Pi<-Q;E%veaMm4_Zk+)))L40K2G3k{F|qa-;+5o)~4=kOFVyavpA0qy0j5|sYf@3TKd<_`?rdJHs){(v*(zIj{7BX={NQdF%q{p zP-MU_WBYpvHke_cMJCgZGq%6xM##|I(3EO%9;Bcq7Tp3Rww~8t*aO_$XG;UOTr+;0 z*eYCRKVJQs{q?_T7XbJV_RB)X=p2kFvlt;RXyekpk-KMl&kC4d@z}qW&6i}Y zWT^|MmU(eR{6dCbv1I#@pVppBGL%ZJU)?VmIv&yylzdb3z|>WFrUbQ&Bs#E#iU{as z?lm;ux7*twZ-PeN7r9o@L_2OWOc6bv%|%-2IYAH{X5bt5xQ`-`w3Qctk*w6ujTXk4RLDEY1BgomlG zzl7Uod8r(6n8rP6eqwS%qBPD~y|>@EV}{gwuA>vJ`IEH8BSzj)oa3iG{k&|oY;@zM zsz1DmW1DYjpIK$_=9%krFs`g=^s(v#M9Xly!0O)4y#`pha9D8`;8z2R&LNHW8<|*9 zxLzV()|6Ctqs>DgTLBzgXvdp+2Zj&WvS6iij+kjv&C>+n)rOnO+r>4 zzeYcocV^gJ_xTn84QjV#EZPL z8R)CY_PKHL94!+O_Bs9i?v)!!Q;DG(XL9incq{XE-z;I)Td41Hk&|W&*yFRDcj!%A zmT}FV3C?)*oRm;=mX5K6!+Gt!UrbE^0JowwnuhD(O*5pFnO64hdtd!T+2sD}in&lv z-S}!puW{!ETth7MjLPx-m3zrfBm@y>QYl#;+T`3`qsBGlF-|9ys|JVqzfWQ7T9;hZ z8t%vwc7=>}byHvnv@*;mqCM=4YlI04{_Wz^SC1E4=!db}Ije+xrA6br`M6*~XFZ6AE8n^qqM6aPh2`m1JM!C> zx`t_zlG}J4I+Ampk7~{e4C?2-H|>OF_cWFEUSIGuDk`C%l0h6K)1xl;V3vZW)=O4d z9T0J&M~2a?(AkU>x1MV1m(WKk=B~8Cq1nFVN)#hbX??B1BgVYLEp(V8MLh3CLR`C3 zRj{E3)WG7#nj+GocaW9!$1^uJ(XGeDNyVXx7j)OG?;2REJJ7hWoTH=FZ+hgZ(^``; z9fj9IU=gL%gJ5^wIx*4Ye6S3D-KTjo^ik4nMZYYX+qPb}#IQk88eBol#3N&_E21O8 zFvL%|*Jt#Lot$A8-3#U+K9@*@(=+T)@j5JYQ&YM9ns5o$5{`Y7yv`?y6g>)1Zla3Q;Gc{@@W0%3st9yIP_l%5cy*Sq@PlS-XRFq9(*y3V1EGRW_2;#h6 z+2%OA241^vXH-p1%$0+ThEI_|adQgHk#RkULdm$DQ!#5JTA;P{9{vV|Q;2j_N~O_W zL2F^rvY^D1X~|$Q6gr|F2s}HZQh9aTxNE)_)qtRCo#>l;5UG=_-ZR-9CeC~t3RYO{ ztPa+(t3;Vpb}Z%1&LN~pPU-!_E3=)C!{$nv(XF;ag70l^tsUtgb93|FgUR)BMa`ZE zF3p4@Dmf2x>Li4vzw8Kk8?sPcV%j-`5`Qy@W#p{)4U|7^!}BF5q`82Kh(~K6$ET!S zqGP9@Bv^7sUnye6daP&8&v%wEXjWsxUCTjABg9H=Z9CRpC)B;^f!W=8l9Lu94QY%9 zwV8ztaLwe2?EK_3qcesW*Gb3&1{-QSW1BVV2&+h5QdcnhjC&gOLnPk`++Efed@>JE zunBu6%$HUMU+hX&K39bc$6H!;7qO_W%Z#6Vw1H|^O)Rs5UO?P-XdtH~^0*ER4Z>!m zdhPB`&?!cFdYv>Fr+9P4ooM~NgM_hJEVqj>*{EA@K;I}Psi@^u?Oh6sjb<>JqVMS% zJfUCv+;xm`Hf9oOkP_!cgnAe|03`yHvzuGp+oz}U9{AFou33QQ@QRkSiWaJ;df@;K zsgPaDC`wc2eo>~a9$;gyKIFyS7jUd5EYIFur}(ktiyFFwvjX`95+dnhHs()Csh`C3 z7?(CgTJ0H?P~6{5hM`M4WNXOxC5Po+R7l&NOH6R}i*5qTgdSg7a_7J$ z!-t`-h*%t-84DN}BUX^*Q4s+B4tl8e8U>b4=?{(M;4+=l&;Z>)R*W!@x zNR!T-RYkQ&6L-|#Xr%Tx@BIXZ@fOp4*cTz$U43Q6Omu&Hr>kD}^Vs(}cJ5p7xB8jG zODG2)xZ*CGZ(;{c!V<%oTD5H+mGYAUR&pbE+|U8A^U#2HYv_mVZI=?M8fJ(=qAV6%k)MO;MO#wNRX^Sz2m(`PtLmy1Lb?k=j!WQE{K5_1r@ zQ_&{}2$m@tmgU)?Oam2>%(A}PyImB+H|4%=WbR6P8~ZWwirhhYuk0Wo!r1s_w%7vP z(A;q4LtJUbVwN7$Jq-d&?^ha0nVi^ZD@d^7sie8uXVrVbR+4G8GwlqFDwXqGMJ44@ zr?VD0>$fW zbR>_;E}-D79v;+T^)Nj@#O;x**q!RH=dKOS(4`qTZVI?|%4&HU20ErJ=B| z*i(Z)ZRD|FmuM#w*JP;gl_a}jdBRz=kF2ZbqlBxXNwb)~gAjvZxZ-@%<&A_AYM^`3 z`mR<`n2glAEYiZX6Elb)792+zhlF2FkA}))9SincHZ@Kdgt3rBa&DpTQI@8`*9A?C zRlQD=4r(DfjVRiVi7pM2xxSksEF(wOwSX8g0%}iZhdRl2upAjlkRO^Eb5k?<+^D@B zk3Nt2jE6dq0-1-F$6z)&$xcY)iMf?&;8ThXB(){=!TiZLIYdcl+g-EnJS53?GX`s9 zOp**b@m#Nxq9bRCV%d@sL98PUY?KD$n9XeughTgE-?s1EnH0DOD~>zL3y1E6m*A1nfx|bl#;2t0 zJw819s8!#=w}EU6-&v|tC~>H|zZ&!zn9OT5T$Kc@QnPk?hTO649_hf;>0E;*62Ae(TiiB*JEjsSy*BpBa`a)q9GYz{p; zv$a0swI*hmCQu}9L^>~~t^MHOD|$)bTq}pT4kF+w^Njo6o^8`TCEh8Le)pB+iFt!g zOutDs8H5m-)dL&D3?LfZA7=Xn>bmJv1U@ji3yR^Ms~l9NbYzSl6wAIhXsEbmHI*Ni zD$=?YL!$G#ks(8PkQ>VW+#8V|D||rnml&FpR;5@6O)CcC`qm)nEL4EOnlhrsc;i69 zjX}Pfhz$!^b3EK+(TUQT_xNkxfE|WYrf3&FR$sqlY_)jxQ7*-3xY#|Ll$sda?qlQQ zr54{AILmMkv_JG}tlP-?V@6g7VSofXp+}D6Oi8ZV-{g9QnMdhf$F)-7_#<;h^q3u@ zp1v)SH!{>&&B)oTRb9Q8L}yC&&2DloIunr@Hq`E*4>HG_Sd4ZF-m@uREO}HK87r^80ru3+`Q8a~vWHC?Cqo+tN>}Y&&uKJCPSNs1LZAZ` z+HY>CpiD@9q`vGpH;TJ50*JDuXhge4e~oaAnkmsGej0N*GO9yRawHvDK-oMc(S2lr z?PqxY4D zW2F1o0>R~y>v-6MgrrOhTK!Y>*TB<X_R(~aZ2@@53ZH4@p>kNkM22HV{u%0#t1s_WcyTSv1=vlt z%9DY9M&xJfJ!j3-5`8iX3EnOo_naV`XE7(KDdf zw{2V3Zt!R2doAi4LphWWmsUDWDKK&SWaTa1l2>~NO%L=~zuVhCiq2SHSRTlqcVE5p z4X}IGbwTsjZ-8G+H_pGdI02hBO4b2mvs+U`L0+%dS=C9D3NrR|KXV^QrO@@;Bd{ z+Bk96tdP7L9`C8h3oH>Dk`z2N$Zt>onKe4*DwF48q&x3my``P@;dLH8iz2pV-z`1n zOAwZs!S`K%_a1O-i(fr7Cd2gM3&2}eNaacGh#$d~Dn8tjX5^2}09{xDi=6Fu8~E$L zAA6P|8E(J6{o%pAXuK@sEtLNAK2A>aMV;f&oU2oowW!cHsBXoX<0Bk@6RU z5t=>%P@nDQ>$m8fDU+CCR(b|&7H24V4HLf%jH&2iOWq6J2|B3{_&4+W>(>91qyJ>I zfPFflo^iiQ^(p=LKM0|bpA^yJ4aa$#@j`f${zu9ePWa4l?bV3Su?N_SUVj*f;@`}Y z-hCQjfZ9F{;=dRuo0(A0RShZ+7)QJ;k#Zrmaa1NOonezOKhqOd0++IUxNo5!IR`dq6p~|o0B#f zQ3sfBCY5ln7(JW?qK8l7>{5 zdpXZ#(kGoP0BIj+ndi-MBHVeEd=AJ1$tX;r06T{twXL7>sfu5DOj$mZ_O^RRjo8=9 zn;CN)NrN_%^-ynGbPT_~a(0^!>c2W+WB3))J>Nf*P$zS~=)PjkoQKCYWNCft7aMq< zv`Ml?A{;9Xywr1Zv&mrHzz?<$IsADR%1G zO(#99c$e@SEZrdYdV;fbVS%{H>qa!PrTHq#q$2q0{nc=aSY2-K@OioGZ4al^Wmleg z)iPq%^U}~vCkpiiEKE_#x^JZ)-1Tytn^Vfe)vcbzD64Q4?yQh|eqTjAfrRS}A`g-ray89F?s6J-JG6%CIM8Z-G3UR9@7>m@zc*P*G zCg|HYUtf6fo7S!}ZPI5!GI2gMMYvlvkW=Y$^XZna?*F*I<9cviv1Tn=Wp%Whdpxn z*HQrBrDHgJKPw@68DZ$BufnAPrQcB`QbXphn!mv|_jUgY;0JyK00wB+ji_&T^eHp3 zz9duRM)y#%I2jH-n=B5K?j%$oKUkGE4*sf|eDZOQf}U;1rhYQSgXU3+HqN?AF$&wH zs9w#ra!|#tAd4n5KIry*lFD_=5ljRvmyqBHF-CZRvfKT#Dg9|#FWA$y=O})!!=HgA z#|F@dyH+N-Yr8rweAIv{E*DEY$?*a%#ADrpv{0R}T~e3aBNNw8~|7f9WI? z445W@Gg|Wa?iG0_geOXP73NoV=Ee-taS%>ha)E(gn&LAly{`(NJ3&7~`MDxjTw!%> z6!#n}tAV$czH9Rc@)1UiWqJDO(+tABl~)W8ZQO_G1m5Jy#YF)Koxbj55=+w|U*fcb z2`Rv_W*TT7mS)W%wYX%@U#9ZLG?&Q5^je_+dt|XLJQ^bG{KrcgnW?9G z=X^7({V9?MEzPwmc_E~$j`oMh2wneQh?k;VnpNKjd}^%2Bq?Xk#NOBSbFy*De0!6o zW3omy$~%%HzL0=XluJ#j90Uml9>gE~24FL@x+e|eaL+pqG7-!(g16l0H29ce?IRMI z&KR-O@lsG^myxI}=uS@0uc#nl!BmDJfploLXq>0Py*4hf754c|eaVv|)K!5tM-RNx z6+DTg2;*b1g|sw&DP9?_OuX%cxg|2$lCN`kxhK% zkp@^sM!k>uzT@>PYhMg~^WnvtgvOiS&wt+(dv%+AMIH$#7Y4p$FJK*%DnA-{5m&-S z;CsgdOSb~DsP%O(`sHT3VO@jw(yiLj0>i34X{}awM>UzyzVmayMYjKkl0NEr1&hr1 zHw{l?A4C>)(u0uT+i*sP@uQ*4FPX5PSv}mR1&T5DE1&}d(Tb8}{?UgeLEeo&5|*K$ zWld>q29yM!TlT6V9MOuVrm!z# zviMzl;xbPU*r>mVnRnz`FM0TaO_X5FZgws3;A?9}s|D|K$9cxPLXJtj;{0f-p+z2?`NM6_z0nv7=;%tyBD=-Cdk$!M-zc&~-Sj@UA znjO-UH9XYR>KRvT3Q1K`SfYrPy;X73Q!1x-s?He}{#gf*IoFvr*_`A+A46H)+ljx? zO#&+OKF0`%FymVG_I_by()#^w7Y7Ut2!lw>DQ`lFlYy#Z)-lgu>b1+{sK_UHTdIXbuwpcVSBo*TExbB zK;7QY;FS1_ZlesXIBHdB^r}*)O5|_{8M3NZ^@<>jv!@tNm=LRHlnOfGpV384puc);F4=6> zIR%*tA(!8oR>TkHr)s+T*VXZPiw_{kkmKVX6X}JM%!hxDl%CUv(`XYG!An|CMW7-y z+bB;bRDW7a`qFBzdZUMn?CV~gN}lfIa|p6Tn>m3anqXS#{nv8@Y|Y?A=(VcXmxxVM zt-Pi1Ek|{dh{!~|?o&nJGfl4-oPUm!P;wnFUBZZLk~C-Jon$965Wx7XFrZzByz?0C z$Q}z9c{SR4uCnJ7|GXK}XsV^3qzZO8ubi!49Z$#m!V?}* zPS`!!#nbxlFHao!)3Rb~mij!1aBdEJ7`&H9JTs{xdR1iVI*Z*<(0Q=`N{^uT%6`yu zmnpU4okudY-+hG|3Pi zd{Njf(KxDv6ns3pwmNvGX61}!`_wWMt32jlz|1Cf<=+6mju0B)D(hBFVMbmN^JWl6g)fF6UEjZ_l(BGKvdsE zppj1NZ2cA%^$E>)q!cBb%?9u+*hhNifScQusyw!cvb(;HF5>jH&@Sfr5cRQes<{j; zUSS$-Hwo z+k$JAk?B3zD($g66|J`JJJ)x30&HKeS|Z0RW^w*40ZJ})@yOKW$=!F9It3?!`s{T1 zrOY|7mwj}|fTQC@F2=*hS8Z2?hmBei`-(qDeZJt?u2rAL%&IU)fFkPRyYAM>LyU#m zcn8-t#{KnuN=;tLtlhACZPwwA5$!5`Il8qnRd>5zH3~{G5il*`Iky8F((mqN-J_cOmOzG@Dc1DZkeRy{H zQ0(4dvx=gkbhc=xs5uB@+0H>r-vLY{S6cg+p%8G(R%-jj2~L(5!|~Saa{|1vG}sp8 zLGTkYzV@$fto^;7GGd3SmJ*|9q{UULG96#Wo4vUp6Jh)E_qFoDXgL`!Bl#&iV=3Xt z9>-}@6;#{c#$HD*}cj43tTw^aC?Cq{BLA#5!Z#g+zgH+~Y z))=@MH-#m-WCD^DcXD`mjw`%|NJh>j2F{u+p3@Sw3S{F<*oSQ$JNc(;{a zp9oWQ(AA^z7RNIDQC4;}wGw(QQ<+9@p&GmOmr}u?gou|NFSD3!xffN;KQhw}Dwdpf z)+=kVU;o5hZ?g>XSs#igqw_}_tv>29vk8-~oZ78dpN|R@QaKXiw1KfHe6mmCGcmkz z$7`O%BhZFxjrI5z<&uia8_g=AKCb$L0;h-f<-`0Q&XhaJEcI#`&$LySk#&yS=p<03 zDSr7M$5b9P<=~_hExUrG@8HKNZlh%5X=qN#Ct5W&FfLrK%SQ0kp*r>H;Ja>Lf;%Mo z2Cjo?AJ%W)N$EQipfA_ZGTha0mB;E*_FP|##z`#-4swNdT-pdvpA4Hf%v$Z1bDd{P z`38^@EM`?QHr5xUp=&@z-CV<#x15j(@kq+Z7Be0e__76d(wCJzLd$*T6kuwcl4i%- z!Qz#uk5fwVY>qQhbMJ$)XU|3G9I#En!eV$3MR~P-xUOALpI(JDvLwcdu2gmVUUa|G zfYo&P;1*vlcNl2}<#H}_V&PJhCCWRpyvsw<5;AH^HCe%1CQ%?mV;&`MRr@|~Z9Z7N z+SHAYA@QM*m>4!WgFx=vaW?Ws?^!Xu5MJqZwzX_#cW%);HTD;mqB7D1n8FKS+-9@t zrM4oJCA@O7l7=)$L+Qt`y(;d+psqnB?Ggzo810;m4-d%X)0T#&N?muGaN^mKu5Kh{ z9;q*x4Du&Fj@5FY^-~4B1H9`Z4(37QN+>%uXb4fkk=A&zq&FN9Iu@&uI=vb~Td%Pr6#W77!{ZhY=i*)f;algx@8%ZI6L;spC z==W8o0;oIEXSS-a4GT}pD$T~(pk(mg-Y(Ew)5q5R`Bea{g1{vZqEZ*sSyquJW8dGX#4q66j{!oi;| z-b%*vf|4O;iO5Y>!a%)7t;9zu?_{SQNRN6rlVF^8jxtwFg zIxYd35?cfl8{J0sfMUoQvrEb6N<`Tcp5RS-xs>1L%*f}X|u zGy>spS}?zIzsBicyBhebuYl1IhF~I}l~4s!$^lskITNF+GN2Jf85@1dt>>~}h%xWxg%gDLLU{pVDXzvVo&USC9tHCyd#ZmpM zvI>$*GM%YH!w{;C(-D8()-a$d*vQ8`fRz>RWaf9)I!&nrJwDAynTwqYsB;}e*av%d z6vi9uqJKI>z1*bZ%cBUk<*Mi`;q$YKNwYgJzYwz zi@~L6R=%8Jb`7ebKyEDTMt^&FPlQJ{BVzCLOu}CDb&C!eh576f<1AA!%!EFvlX+I3 z%@v(9eo~+lTN|y@v9M-&sZ+0GMrWwLJAtIbO8p^O@*r=!DhDYqquI|&P{{rDjBbH& zDa-0jS?N8%g6~2AfK{lpV!gtUW{ki=nnvUe#!$j<%w=bRzaGnvE2uwoe7!_Ts>8UQ znXx5s&6)c-zkhvjO#8W_HSY3kwYVcyGwEcGZFc?)1&+9O5u}Xz2{MMYG4h-ruXhx@ zAug~_b`rEpedlDQRUZxO;=^$GveNy>*q`7J@YQoefBldPUhJn(sKOIlKUz`M)x&I9~XBx zG!H8<7Gm)6%L-Kjh?d6>pOR{i+W?)IDnS%abz=7)em<9vDXK0D=EV!YViuXhh#09J z4Ymi39lh=aiH?nFu3~(thWfpN#MA;QY}dHBWXWUuIY`QNW{moyqRvvMIIT&d3oA=-X04a+B;0sKFoQC|Ny@WqNqlfV6i3``6i)k~sh!xucOyo;t_U3Y5iQAK z>vT+w*MfoOdGZ7MFZLg%x8G+uz+Wqb?5e4o?=e(hAZBTcW#x2d#U9YhR=jEJ&OplY;Xa2B-hiHTzD??Y+M$j0?DP z{>-hP)TrB+zu>!eU)%@(dTQytU(sjTyGs|4-HWupEIVx&c@ws0xKOX|Es}Xx_(b4E2T=O zbJd$Ik*NDjL8N@yX35JIGc-b6qNJ%l1vIs^gf3aH=c^E~f<&%5{U ze5dU5JLiwR{+QgeW@gQrH6?4^>$AUVq8PA(~YPi-jFZS2s688MWOElav!LPT3sxKV<*Rcgaep__0`S2$O zj=N8t@d<;vJU3fCg+D#0VjDKH+Zc-H4g6EQ>7k2QRm7@DXwnY=RaPMA3)KPwu;FOenR#rNVi(NQ$QqX4!*j(yl#%RgCtA0hY_p)~#(9pg_g zt*<2pSWo0!ZLhA1BSL83OFD z^F|@MYJ7^SN5E898HxzUR)3n;_s`S`THfp+Y$f@D7Ij2|5L3^#9LicCnf3jk!^1F^ zw#}@kLkM+Ng<{QWOi;lhM1_YRjff)1D+xNb!gCG^>+Pv;sZm1;Pp{GVa?V4a8wa?$ z9=z|X%1gJZk!+#cgEPi5@Xb(zk7BJV@7wol8ef7rwp?c_033+H$_oH-a;6kkSEQKEvKZC2!HT#jPviwBRVXM@s&tgKmnDIgD`P-Gb|Thk?AZpA1*^ zPSJObx4(^APg3TM?cg3pSg?=hg}f3n=xrXgr7W{PkT+O~4N+C&gMa&8VU(=|7zv#P z@T)Ka3@ait1;d#GVBn7ZMpk=8UOyXxo#6{%$_^Vq<=U9rY~gp`NpU1Aq_*w=thEaZ zTdoa^F*ks}&k2-%F6Wj0KDf3tz1w?gc$q$`PmonAM?ev_V0{R7)~X%*T_G6ouW1HL z-dJ1XFzj|Ei$)Q3BZ}#C3HlD!A}z6h{b)hAj1!hEVXS1!+M>scJLJ-!s)3&mX-2UJ zg7@mjYr(JvuJ4}TFFU`Dz}xTaW+rl5_zxm6>IsDt3$l#Wb#{tBx`2vxkEo1SY?;b` zef<;=`kw4`WmNnjNhWDO-iCWMR1@GFo9RV6cwJuj;+vER&C&NQeRS!X^6F_`4ZQ*9 z8ycmR#0!E@rzwE{ZDOM9YJ;0{X2caN=Y=c%W{9t^+6E`s<^ZoW;7233-nufBtnyq3 zdKr+-uFG4qb45bORZa4)<^XbCMo%%EFDRa#-GO!62tR3L?MLeawE9Lm-cu>QGR->@ zClZ&=vg8BVui-Veun6o;66wV%fGslYkM@VSPw0qvpi~o{TPi&otnpdtHP^dADyAEj zmcwfBTJzJZSkWrY{=60Y^A!bch7hr>piDo1JCI0ys7ZN0kuXR+l{#sFcXnA?NwT68 z%s}Qv`IRJ#l^&k?jZQ2qDD1_`8gkRJGe7(Gq(*t?^;XrFl3++hUw5Ra|CFKOJFr=s zS0V!WzRHsA?U0p)GlcJ40l{c%G|(HbpjnN47hEGhAES51nhu@OAR-F}s>5@7V!+bR z*=))3oIIK;Tkkpo+CO%)X3Dooy`xaN`BPmSsj*$b$>Ibd*5t!avgy2kM`f2a)vN zz7+%o^W!1T_(AV9sd!DqDL%T&m#b*tHufh&w`X{}F))y8exDB6QssYOtSx(f&Dl9w zi9DC}&AvDWr0(I9Jtd#o+Irt+veU)zY5Bl*P`zvaR;xy80DPbq1vY!mF~@n{E@Ueq z+2Y+s+eu;PG~#Mj5KJEU)GZBWM7SwH%d`CR5Pa=E+T-Lb}eJkntl{~K-88}gdOiVDKTty)=d3VKIZwhzeyztys?u6; zLbWgYUP9ES?%M=~TV0Sg34{XPu9!dK)5{P_z?`e~bhDCkI0=RY7(;Xl4KX6IutZ4r zS)FdlJd?JxcZ(l;J&`LGK`R^+N>Tj7 zsA6a%T^ty|YO|EQyDNt(zQ3?YO~M>YjIPvdU4)?KBNrc5zM7|fz z1)VZXi{@Lx@pV;(4PCI3a`EX{f$b6DLtM}DiCZ=D66l&|I9OhFqq4YsTw3P24P~a} zM^d z+q7@v$HeqVa>X{Nn_U=|Ar#Y>bWV@AwDFTU^zcuH7sbh0wgGxZL~h3s3Q?2qwkX9Q zJ$CoxqmS<~X3xyOtVUPUWxv~byDv46$RvDs#%j(9bp!B328O5IR&JEuAAEh*HxUS) zpv>!IB}~8U-U2Y!ABYxC?1*l5M_9(yU8vMkC%rBb-v>*!>8<5)J=5wpkBK02n7o%ck_~&HamC87rKXj?8BpCNWRF9WKCjRRux?B4lOS0TIAhTMf-jg^ zb_i$JCjic{9W=x?|XD&99xD0DF-U!LzzF@Nbd)n0wA~7X(Dh@E;cvk zQCd|-0}=!aH?m7frBULZeIEUqc8b~1WT2?PC>C!rVnChqn$tqdcj7NlKy|G}DoEW6 zyS&@2_1rInEnzs5lXF_0F!N2ifO>RDjEHmoM7&j9W65Q3K;v1b?X@jcxM?6Rd!-)% zMVIP>XVUeg+`U}qD%r_J_m&l+zK+TNWY|3s`hzQf9*ZVhWpo5ef8;Fz(89&T)_0Qi zpI59#TMxaS^9^yVFzj5U2d4D``XvV|sN@)}9T_|rx>zy&>=f|HfpJm=lUqcsI1cyQ50=-i6z>`w*Mk(m-=6pNb8C}C+0kSYVaK{I&L z^&~_AIWWNe=ZXmMvwxS&S}{OJlDw8%2Qf^Oa(eTv-O7P}h^g(h*a(9{r&XRyh#>HE zoe+|XiQNv$n(qDH60#EOJw7M)HJy@df)Ws>Rpba$EM~C~m5#1`AZh_&NB|qro6q3{ zBQA*LH@+#&L?TGmV_Mx4Go~maC*GtSO+kU$n`M%6Gj=|AFGPRJ%q&BCdtxmtofF7p zg6K#{DmzqSS_a1muqjpH!uPNd5%a#BO0uX{XK*5hof`o*z@2YZx5z13HCyiA&~)>O zQjV&HZzHt86G@BBiIF}#?QiRf{9Vj`GQ@irMw9DlYnY{qZRvvd;CXe=r{J0}zgTp` zBfFmrs{kHaw&=YfI_TqAn_LRA+Jr5iW;t`>V7|`6Yw{-ps}`N!XOg4jQwSaL3U7r+ zMrLqUmk)iiu*Hp5AhEl zI1i6S|0f#lMoqs$Mi03R8h9Kr4Z77+LcrTz-RBj{PIbH13McQ>%}3Z1yMHVE{1K0 z;B)L{4ay(9BEORZpD3n@X=`!At_sJ){yk&d;lV#_4|xE!VY+v()cEW=Q(?$Oo2MON ze@VNpd?=mP{VnWz9Qteg@}H27q*U5e{SF^~>-vvzTjdePrc)l*EE)dUXytBVYia@% zY>yl{63G4P^l9b~Za1%81JrIAnwrLbWi!g>)E}}u&Aj+e`H}87O^+}dw(E;Gz4bUe zcAAsnPlHWT{GKtpxMmY@4Z=v9u8a8* zub(n~`q8|iDM7wr!++e~?^^xYJDKRZgu~w^Y?Jrg>teAOmza?|C$Yh6;xWr!0$Ymg zVd*g85et)vXzcL2io8$Jt;3YUKkE$dh%!5B36FZrz`zz9`B--7<7h9{IH}Z!jCa>M z`Z+Q9aZ3q+B}$J-x%)oHxg@nvm7&+hFg>viVh=XhzR8u0}E3rv6O^5_59&n#~H8&eI`B)Mzq zP>gkw;8wH)0&IQ4+St?m7*}nAeNO74%t1VFYnX&4G-|Q&L#%xLiBjoY0xTZYeX%wSfoF9#=^UsAEen3vjf?pYpOA0p*sd7q;(jk6g`awpT{%DfV2#H zkXc8Ld^h#lzA%I)A4iDrMJ>j6-os1uL68u&YJo?$bKp}W!}@@FP{wDP07x#Ww!M8j zQK$s1@qEd~YFHOqOMo@gW55UPuHZY+j0sa?S>reT}#k+jyIdp3pqrpLR_y5-4|Jew^B#B1q*>F%J%&=dS|VarO5utSSQmj z1ZT*e=1{(2LLxNAx}9|6^ZSyL!K&-Sh)U#=aW%?9lhZWyRx|qc1UF7>`+Z|IX)5M$ zCdt{)(}WmY&SOWZz;+gF9t=|!qmXWw!!hnws&W(P@it!PFpy3~ogK$I&(}|Fz1x9s zmxly1SaoO8jOqps#vA~aRMl~DQ8xs*hxS*<%7KG&8<-$L19j%N25At@_k8A`4hzef^y=uH zqOO9sQ{RFmn>q;1$!hV7GO{A2v;~)95EaG$`iI*}vH99q8>zLF2wjEs6H#;Hl^D}% zSn^VlV1~n~%7ZOwa)WRMCZG{Yt{@;6U*&KQfF7QF3lgtSw=&T#>GAl1Vg_TobkkNR zx(5@9@Z8uXyHXwhiq2)%Q+lQ2N%q}EPJI8UNoJ@Z(3tDRyJ*8Cl_%FJ~lQ& z1A-}VRu%(9rc&(7*8V-PLC>tNd-I5KXOSWowoUeYN1va?PLc&|awwPb<(gotbc_>t zq&wymSZ-T<$)XKXP?!Za54O1exhkAU=*w_aw=P2RNKN*PU)?*<`RuaQz)@CP(Jx^A zgUH>bE~{uXAl?Uio<`pUG}vu!mY`JC$gw#lSaNHCMYngQn*jh=#_&{TY~ALl(}7Pk zB$~)=jrLckpL1VWbKU-$L{&&=NQF|^9Q#vphtNK=liicN#78RHB~>Ym{ixNH6DGA- z^^LqGSx*i7I|{9JGpd=V1>ec-mb*ADaZ*Xp`k|a|V}#47YHg)p3M#s^{A+bD;lYXw z-3T!N(WGdJI)WGF&-|hLoFYfWQIWsUcSB?02 z#?-4c&e_Df&UnAX3L~<1)OD)pwsxAfQJ=esJ<-iorx>{MO5 z+pr{oS-Zj*%(0E~+*Sd%LX9!g)H9yhVVxyojnpf`?id9&)E!9y1L(Aw0KxN;hEL(G zQh(RrSYK32MjfOpV+=#Pd%FIGS6|>~qsX}Ar}-}#I0`-iu>rpmV^J0Pv1V(*?{y}& zX0eQ&_`>DR)6apyjFDbTeaDGYPvVr;qv#!W-T<%Vo#smm+MT#O?XE*=Os~9$QjN_6 zo?N>;PrBY^?RfIm5fc0KQxd<-(N9l?;$9n1AKc7f^-f9SnVWx{^hZtKrlw*CZ&NZ% zxBBR64&R1Wg!Q1U0~FG6US-!{#?mMu8t`Pdz%7QXRsaGb2tfOC$uMTV5gp&4nD)ch zN;fFC4j{8kJ*Qq|{}IzHygoBgcBAF>DGBlrHV^f-m*#h3r`tE2fVr61XUQ*CLB*N?uV%ap^5Wq` zQ+4jyP8=DU!KQuAMme5vV?6CSPcALfv%l5hc=h3y-fy)7yNyOw`}mM&e;X0hi-Svg z>Gd{2+rXe8Wl{BSBlz;MIW@QK;I#n>HM&jq-$u^X3+|-YyLaYq zga6Kx>i;U9dhx#+=l|xD^Uh!3CQagNWE&}W5T`y-?reltP-qpdn;}KDo$+Gm>?&Zm zxLF8*-s)9Iz(1;WHdmO|%@W=`n#lGt;LR?ldb!uF zgxbTZ-%mJrBpwkvUs4sd&N8ib&;BqM(x_I-=+KVr2&z$znfo$Vj3A9gsv>gExb6a* zObY)I%=l^4A#6qMAFBK$yL`hZIz~@7E-r8+3_U?R+*@jB8!*ZTpu-COjJLRW zPdgJJKaRE1BE^xp2a&SZOPrhP&4Xf6r1+)_i&UHYo^Y%9b5J_2cBC`Tnk~N@6T7G0 zai*lS5?jL2R;SuZuY1(=LGx}%;HEgL+4_o!{&hP~&S{%&v(=-Y-Xo{$z=5|PHMJiT zt%_V1H#O+-kUkU*2+ZkRGS+Q5c}tU4aCp!X-gJ4I_G_jZQ1ZeYIkw>@JkULd8ylH0 z^orBaGa0d{J(TL;F}t76l<*zsnwI4VlY2*9I^=g$vnCD1Rfi%e3k%8)@p zog-;MDNjyON52Ta%f#N0v)}~>tUe4RjBx-5-sa1as{?E6rv+O`WAbf%#RF}sMEM7$ zHpRD-N*~l;|Hc-Zv^jhtSj~lk@dg$BaeA-?TAo^d#w0-aOx_2;h+rGMQR+ zuU@ls&7shfcHRrUvi4YMJ@r!I?e2!s{mv3zcH!bY>B`;I4rq-o_XC5aA<1v%2069Q z@!L@j+D*G;)R;g@^y`g2H&L043&S1`r;TvdXOs9nr8I`WIu+rZj~&E5@s)*(lP*tO zfB%H60B}?RGyi`^xBU9*ANAvJ`h~)|@=t8Zzw-b0)0t~ICb+9vp}A4xPMMpo>fI`l z!8cGLnm@w$1x#Y32!<2(7Em|ctD!mCfXZxX)Ms7xSj*Gg1?_6#A2m+IV%a4bWT4*G z_OaNzU(-_%oSzJPXJ*AT>_93HMl?zoMVNTwUnR4$J>&({!=>+tUK!GtNz9-{1tjjK zpKQKxDdFk5Of=M`j~z^Ajs`W~rckA<9``pB?|x17af0khqmmxIyyTSfM9i50^cAwFX6-%xE;cLBJ~|6gRM2dDIuNE#ZYX zCHNR{=EgQGr+iD{8)x8^M`1CpN{Kx$;l=)oE*NLFeNN>EL$-E$C%bN(yF^QSnL)J6 zY_)ew`z(fVGQnq^eMK<%mTsdF6&y8?VfwhF01bYDS#7Px89G*xJxin#>v}`WiQO zQb0%Yu+f_rm#n3N+Y>1a)2WabganPi!|8v_<<`C$dz{~5dY?Pq>cc7DOC6dYHH1$E zIC}N@&PqM5ywA<*tM7i|lqD;qL`!gPOIWj7#&K04Axu%W{*fk27AwEZ%p`lS%|Yur z=m#O^yXLw$OD=toeY#&KO}UsS#{}}(<}j0rfxDt${UgYDEEYT^rgMFjHTw}rW6$}M z;rHJ^z6LGvRt4~CCQEU3NoCHaF|#EZ;(CSfn5)Lo5|@j)Z=#xhUDw}UVMY|+A8e@G zb?Sv#FLMVZ(Hwhel)#Ch!JEDoeY`D0mvLW#7%V%I2LGMXhI$r=X6-kd+2aL|8CW;| zuSMhh4t4r}D?sS~kt$sQZY;~g@sR0XoWG5X$$ztW9)7LyD?X2{>8(B^(__X9QC=ff zr%OeEr?qbgukyMW3A}!ZWY`xm6N3$LjFqe6s=2($+I92GVMX`%FBnacPjY@@KWco8 z=`rZ}HKRj!PhZXkCKCz{zh=DoyUc6hz?LUZvzcs<#{WVlkyAL{oTwrLQThzOI67=6 zy4ubhzv1aEzIJ+IvgmEbw*SHWF=JF`2GwOk9k;sSo$UFj#eIrn@kxYVXh)*?^+9~r zIc``*M*e!@F*!14s@6_&Zu%-jbOPNaek$-~@%-Jz9>lT0M%`Mz(%7Ihr}9F<{;N`0 zQ#CzQJtcz_KujjRVIoF?a<+8k7qJ3qDs@E-voqNh19p2zHC^q+K90?fu-wYB3w`Q748a+ zEwe7Ax{1)`t!Xa=@#BJ9dB(;N`C4wb>(obN_S~R96#kKH0#<8c?>kxuk@EIj&;C1>Iz7r$t!K3 zyioqRw{iJi*Vf%F@K%n*;uAP5;ukI12{fb+-xtjJ z?UZ&1;FAMw1Q%H^v-v-ThZ!4;IGg(Vc(U`B<9k@Gl&Aa~a3%pip1m8h%BH8~_OHos zr5W$w;Xe#WT4luZ1DTeFFawHJ4V(23*ys9(x#dL7#o})Wf|+H5cAop(jN8h-{6W{g z@9Hk{awv!<5bS+nQK`tM*2-XslPhbrT4s6ESYd0jzP0`Rg7B1^wPIWH``LKJ-X@An zI&Iuu1Dw7mB8-v4MeQ`peQf5PI^c2k!n(N+F%07u`p$CfoNyYI{gO_ zq_T4(D^_WxeA01RMEUf2+ycUVEhWRUF=PprH)5ppAis9Y_iU zt5c0g!HSu%l|&*dbw zr`WUULsvaTc!V42rH(s|TqW?rGO>C(L@X9EgtPXTWT~wHOPM)=&6cNVwFW>q0m>px zHyjz2R)efpj)4Q-sv9>AV^?C)(^#T3{FV5OL+QT4A$y?L$y1>3ZO*f z5@ADlO@Y%~8{*%02ai73`^j*8{m7ug)5g>E3XY15TTs^enDLWF=#y<}d31x(E9oA( z^Bwv3v!XP5)6KqVR^qIQyvM;bWK~}YF4Wue0seC(1}0%NyGxPqLMXaMy7M1iOLV)A zCoa|9a45hJ47hEHa1ouu&bOVN*dd2~T#(FtTm0xqkzQ0r|%imVsWRs}koRmyC=v4zQ9IPLKs*C&A)6GJ9$< zHx4abpsB$MY=##%`eY!w06Ud30uX79#;Y4SYFSt=D7I@pv^v{uAy7F}Z?YS^#Vaus zK|(AA#-d@XdBqqe*+q&hsI^+%5F)&aD3aUNd@m~2)TgFLo;Y9L>!uKD)Q>A1UZVC( z7_VHQ#I&l};V+02!BWxbn-KZo35{^skw>@Q!Mh;VgFAbaL1J=_(#`?d8g1U6frZ?f zJ_}9LQ7KZZ4~$b^l^;L`tRIVbXQ_+?H?J9l1*Prw=M~llvQ-F`p21{bVIT*PSe-Pd z`XJfrcqEefNF*5yN7bt;(ku3&a=6YJVN_AJu+Zo6L0Wh>C`LOInv`+U^dmNPNu>=4Ir9 zHK&nofgbH%%^XmaM@2V0c5l$}uZ0hi)?EFwT%4^(4F}6Vh&ZuuAnk<<-Fe5Z^HdHk zU5&LevV|M2DPMo z5+%;H3!zHlwB{$mRwL9UV58$3@-`{@i>Tet2r?7=4lz?f=*tY)O?nW z00e)KJZX)n(L7a4lr+WXm=bxFl>eKTW# zj>4HoS%cKoDz~|gI~B?30HmLFc=`ikK?9N#qQz>pgX2d_kdEh`HDdVV&p#aisxTcY z{K!2B`v~I%w+fNVd8g!Bk*-CL#M?q=&@fn90=?2Vaxqm;Oq1QbNMmrPfX^~3ehv)!^jZcaKNj5>}a*Sl;nKin8q$3vB3=IRhNKDG*4V1F;Djc%b1Iegzv zgfHQY+O%ZSzN)ApZNRd(#=oJkc1;z;Dz}U_T zk~Vf|p+`z*CfD_9UyRM1S9jZ}eqeW4;nI-rwH$Bjkuoeu)QPOE>vjvLe`?JsyoTh_gCfAM#71HXJ1TF2~*EY`Dl zMkSQ{t3oDkz`uXCLTvA&YTG$*9#c+0RlSx136H-%!0^Z-yT$1NDN~C z@C>s(6JI3D;hs6E(eJYO<+O@0!csDaZ+v|WI38!h$%fqu@Wv@>hq|P>S6qrqND_M?T}Ci*#4h7$}7is^shkPhN4eli^X)p4); zO%?JF&X7NiQ#Uz%cz-Pz|6~&Rm(Bl7GV&j65-d9UxKKhk@-gt-9bya&>X#+E_^Gvh z!bBc1b+;!k9Bccd#lt#5;s_VE?!jKJyu%p*nL{tR%}9q!E2F+hJw7i%m2Ao_jfl@= zc)O(#z~<|*A>G9FlR-Tq-q`+(fXbmT?mM{Q)IJN(ryj@oTi~Z9ZN=Uzs{Gi0GFmWZ z`;~807$i{;Zt^C@KevTy`0hrZtZMj;K6cgcpl7AH&$)`DeQ`cfC3;+yp8^z#y$39l z;a?we1X=eq(Hp<4hf;J;rCtBro0^cyK|?8AdD$r&q&K4ZrRI69&IOY@V$rl(&R-V> zT-slpLly2Ps`8TcxjHDtk~!hUa~v+K!tU3c%mXgx#@8=udk6i6eJZ5f_T$h?{56Md zu$X;BglC0MXwnB`3a!E+MBB~U79R0fY09&dbkC++eeuy|)D9<^U^`=CM2s=`?p67T zq&-8VW!fBeph}*v!9G&QZFwES#kL@lyx}HOX!3phPS<^QV-=cu$YKrO`HlOlJB_Adv`kQl0_wO3C)-fZI(kU%#*cmkBGp#jZ5hH!aK#X6lQVHJYJH^$od6*B2E3q>&akB`8On8H+>wEh zf!+3oRNO5vsw2laqrNo!qdM$I*Oi|Pvql_?637_25tLIU=O7K=ho|5{Mmk!-JB^`L z3CS3H6KRxa&ADih2-PzUVHnWTSgAcU=D9i51r00C0!L1ij|{LY>KEam^@_!buK7tr z4w>KFRqrZ~a~Y{Zu=+^|tMO)R{oIKG$fR6+tx!dnD}w5wqq$s66Z#l`DcQ0YtCl6X2tX<7cd5~XmIb9V9>z2WN9 zV}hzKk5~a{? z+pc-#M~G=?ZrKxkrC@H;ih&tFWsnwDG;l2Q!2|4tgAW}b(wVHduX0!8!d%=|I0zkEir6HS>~coBlfb3^#wjZhtQhEx>n~Jn#B%>QA$rr^zVkH5>e!UmwkV7Kv7UB3MC*DQCz zs>ZSV&k+Y}Y9&1yeGDa=3;gg2k3nKfMIbb%z@o#VA7n_n<%n`a4Vd-$BvcTNzi7`( zN*cPmK#IV?rgX=(XO()wL@9D#@SVTg7U(B96dxpg1XNIX#^}W(n4u{*qNs>D(Lu?`h%Kr1`xR{eTieXnjBz|e z4PY|F(11MX+!Ia~f0&;IZ38BsM}n$y7f!E`bnF${7m94O9-)9+xvYwbnJDA9y;#F=SObp%4 z{J#Vzdl4rYbo_Htyl*}C$Lcqj5;Ewff}6i%PERpWadllzep zEo>BK{lH1JtGceBVidCTiyoN#5wF36IZLRa>l*OV0!8~V9i%!b z+2D)_Ka%=a9c-0F*vsoVSQ9fEzmfeG6m?nBTCB~N8O%2LE_@RoC?~hbVuEuKVCQ7{#P^pBJ*Op zCJvlF3brIPhMi4|dW$6(uLj(6!&`w=E*NBKWK^b4#B^T$c2iG@B1vE+aZV%LMJZAb zCG)`-ed^}sBb3w}B*nF??YATyt{&GES+~9{&l)16>gg>LtsScHMrp{CUxwZP8zy1< z`9~iB4RWMt;eDq_-=?CCURGVTO-CmSb}%m09hmCpsfTFk_+5fOA3Z`c&OOjY867}j zO3x2E(}R}4cbK=kkkIr*2j-SX2B)+I8%ewJY2+4EUfPDrxmXe*&}h(F%K3bGDw6zl z1ghuKiSTUc-*ed{Tu>_MOifhwIe^fl-ImsALz`vFkQw5@*(89gp@TkpFcj`=1x|7% z5_bV~Y@tGsW!PtdmkvS(P>bBusm7~AD2EcAvXReuG2P4T7`b?YIE#+o8rtBvxZ)>AsJaOL$P8HlH@GnAs+^nX?426ssYL2LtY|jvfy2{ zD_ausQm4OI98dZk*a{S!o!ER4ZB=you?94M+K5rt^39bm(V~&VN3KISg%VAf);!T# zL9fm|{#}RnRk#LmuBa&O>M8E|Qgac+lYBDSNmqEJE%VaTJN7L{F3kUgI+EoMjtWH1CuC6bm8y3KHoF$=MIj=zU8RV{lMasnX)Pfx2alWmx=s* z(|hgiE{E#%Z@hfJxG4da_pglDpxBh;@Rs8W<&B>48hRr`8h$10`Zp1zqRLT5mxI{`F=8(hArw;mOMJq zNKLwt-*9XP?9bir2H%tXWHJ=tJVfFF<`PxcJ+Nn%NKX=7-}!)aRHHu0fhb=jo{5^h zr6{PXjc|kVZXq0)SivBH>tg3qD^Pz9xBq@V7>;@sq`WXTTtBQHV=uEWmEJq?codNW z#tQcptiw<7hNcE!6z1)P%gd%l$1IBrizBCtZ**MrdAwlUUH?4AgWlGTy)Gb8(^ma^;}N_nam6h7!}2L%q*3x6&rf2dXJ{Lsast1X7v0}xFPH)+dg)RuD*0pmca@R}0p`9ng^jD% z=K{Q^f-F`J4L^H{8ea(84lUOftzA2{A6I_dhlSY+z)j6_@;er-u9Z-K%-ong?t4ZK zA5iG_tp-K0nSC&7?Zhij=REV{lPUub`V{5sw;^QK_ckLpQQ05Uq>&@J#}$=^&M$eJ zhmP5GV^;&MO>K4$4LnOQtlygpEjLXK+NJ!CP$G5D)Hv&VlTY@-fYVO~Gr~@!(!ha) z$oFieKfKT3efF&eZFX5}{!tr|-&W-2-?d4@nal-?ruF=oHikC>H#=L2!JA67X$G$O zB3id@tG1|d^+>_r=QE)FzTD$xECxouD`0F?*Rv0(!8o!M@Qf=}f{@h!soCn4-?yp! z_|1ECKQJ0(kiQ9c=DmRmD1*}nomuKFLz7QkP73nh-F>WkQt;z{OVWHow6(m;KG4hc z)0oaxttFvP$5oXBDyI!B^d@|G!e%2b1za96)I5b)X!$U!i>R0-U0#K8DAJQRcaz&j z0@jr{wIrLo>}JDauDIquv@q~=92U|2P<`vt{qjN9fZIj@FUhY|p)1@%fK>K&3R4d= zU30E}Rm-Mx`IA`MqH}TfhRa8`CHx`$bG{jScaC_oKAl7@g~QX?zm7Yk^~Jo?T#Tez z@-Uy+Z_F@`OPD!4IHeQ^bh(joP1CRfeh+L;EHm$QH80gJx?0Kk+gYXGnD>o+oR>}Kwyp}C&L$liw! zgG8)Boj@89H|U;g&kJzv+byvNZmD7td^t~bhGWq!HZSs!1G0-VdC{gM;^dtL(8r;a zM+tkSWnbTrfF}cc8*07Vv#OYQUsJv>pI5I>3nM!$qkh~k9W+skr|6fEGOMM&GgYYEoS+V} z;i6L~$}FT4U+35wLsX>itvGqD(@u}1(eCdj!N=fx+R8{f^N##GId(RD7k#`3r?aT6 zLv|}X;}%RS{;vp3Kh`x$Fhng_+l(i|tFToj;5!67$?4D2L-!Q+VhcmA z+CMFvFG~ziRTAG3%CSH1&!%gSj=F08;Bsya=j_w$e65=Wp!ioJOb;F~Jx#rE_`j3E z{uhwokdCj2h5Yklf`R%eJ~xS=8%HHYsv5$%YLm zTB2b-y+onpKSk?7uU6K0C9nyZuzgR0aNiM(K1U6B31WYyEUa61=erF+Zp!@Xh&i1e zLg6dMea1Xw7}D0uZ%nG~wVic%d<|e7|75e+_ufwU&=b+~x=p!n^6Qu%AF=)nYMc|_ z4!&Xk2srw%oXqs*GZC~bW8c}wz(e>evAHuCakzo%P9EahsC`_=y2jn~>R;Dc*F>vM zz2#f~y;I>$YbK$D?B53ii$gd6>L&l4@&EHHmh^`4(~|*fd&Li@AKPudTDT~6D6U&0 zIpc`^uSS z-9Y88hifC(#7E?w_^#JgI*u@owrz}K968;&JA7lZt?JzWr#68&L97KSR~Wlcn%F*o zMC5RSx#rFDrfl-BWyR{^YaB68Ib^_;TOZ}z6#+1diz6yZ%5}xkynHyaAWxiw8q0b~ zJ@41N|Gy^23p^hME)hOHiG!CurFXhR!b9R;5@<;mzj*G#W8g@B6Q@hOTW$dJ+Ur`X z-3ni@o;g7CC^CqfZ)I6E^|a{}0Q9f484XPfhJ0+sHIe*|n^knO;cEL-k;dG#@A*2m$LFar3aksYA?aD zcX#hcgcRojC#|*=n)Y}zfSb3spnE5-wzAYB39 zi=65n4AsMkvIC{PTgL+!51QpYLOTOm$Z5n~``$sP;+074yuiD`d8Sl>6@e$1B3eq6 zP#{)M4rJ8~jHaTTEVV?dTMY*mYA-zWA=xXLf5@pv9h_U$)moM1*Yeoql$BR2>gih* z0u@yV`<4V~ws7=ZyZt}GFVE3Fbsm)uycjq;Cd{|a6LVq`c}}H0UZ?1QMzah%33svq zt8G*$DOHI0nvsDtx2u*FhkD&ZvYLOkDS6F>e20%te_@*|%54WCry4eE34&k8Yx+u| z@3-T1z3Ao^7Y;i~QG~9$?q3jon#}+VNwM6AddX!+EC+}(RuT*PG?79R+NB1sg9K~w zx+`@SYKGsmzZnjEO`{W;WE~Ls`7~EV$4Syp1_M(5_esqFwa+DI3fvXSB3zu65pIXRx8TkzG|RdUufL5-c$EA2fbqtpoOR+t?Y z>sy>TcKw-+;T<=t*!Dh6Ro;M0cBpdd*p*C{$nNA1c@IQR`k!sfJb8c5UR1*eE*UBD zmc3_u$*CyaabVmrs8*oN<1U%1*Tll2bY$afFMs?v(CLe~s&=PBp(FTY>$a9|UyZL4 zSx54yY4S_ESh%QR_i1{dvwj;(R8n2!MlTQ9N>uHbW;nVd)5C`)0SJc1eqt1U?*bDP zuK8~}r2pKI|7si59XW1LYXp)T<{TeaPqLnm4Oz3uIaxj*D-i8pZ{Z&8@HNvAzm7!= zB!6stS=D;g`nxA_los`Ec^a|mzA`&H7I!j*b8Kd*6yzBe>Y8FyS<}2aIidyO9`$d` zk2_>(YcpyeI>>qI+c2$?>KoWqFZO7AUGDm{vQOiS2BD6q=vCFqb%~!0=3_zb(=y`Q zr>2#Cfh||g4XupsIZr=o|4~-8GuaYaw5nPmBffQ@5I!!M-ykqV6A}ZFUTz+q(T#IW zm3!oDZe*VRHRe>Xxor@%&@4eNKEd%zEX$0VOU{L!b=7BDGy$ZRxXNrxtC+6WFBbMl zjCgvph=$d{;PI!SJ1NslZ*aDG2I=~Uu>qak0MCdy`R~*XwMRHU`#Wz{6lF>Se=-1r zggxn>42GkYDxc9s7aLd5cYiXhy__}a;gm^VsSmMj#5r%EH(c>wn1e#WRXM@-<~2_A zan+K-ni?;?#g6mALB->#-OD2aRB@lQ?s;^m8JvJUpO03lsAvq;81{b`C9}sbYH5}2 z$@X37IXRLxW8Q30&qWg9b_4BCuV?sKZASB%zE2CDh#`t!-5@Hhm*(SptMWFPXr*Hg zoU{Evtj$r`F?qb@61tk|g`0Yv!Vl@~g2JK`YqxIByR4nCa#r z>Z(SdVw|qB%XKZD z6ZPhMnmyK$Hh1)wt6yLWQzC&NbQ|133lg~oV&W|X0HR(A4y@YNoi!guN1XcbvDrR? zcbx+%d4^j5a91CG65pL0=W(TJ~pXE&ZdnjQDLj^b_l`s`D+`@-~#Kt7H4S9Ta6 z(p^n6JACt2xB047*G=$=f!iJZAO1%^6^C3VSXo&gXLwntq&^4qK{hpM#mVkN z$xgzznP@T?wYtFDQ=L;%h7Pcw?Vbk1!nSrL&jw$uSI~4g{?Kd}{*V$NL#=q!$t!^i zW{$ZU!^^dfa(N?;!BOsZZOe=W3aAZ|1;f9%30v!rBsP^$h#dK=oe6L;T99;+pYJkB zz1>DXSm_i`kqkWUZ4y4W%U_xhHg~k{MB$`<&*PH+Z>M$T>Re2>+?q12YHs|p3*RNe zua~5qrIbY`+ z8mA3hmWbU|=sf4En-V%L>11R|!zcY|bz<{&FMhwh?KSYAc|SYj?szNv&n?&YDnETa zOL$@6A>cZzU2E$9GuRh?&s&(W`rxvDwa4|7t#y;OdUtu=j`d!%oZ}g=(9rntpP{t< zJ>SOv4E{4aSKkfavD|HL)}%QZ$5T!9c85=VSuU^qYuD;7QC)SJ?^7cWf4HfC=EaWm zCy~28tXv(tl;zXQ+slB*S?`P8|H$(Df~k7WPwJaq7s?Ax({=`MLPjsrNZNak3Y4zGQQS&8pp_5wL8RllI5_-F4ru+`PJYC!6Z>x#9DUZd~;# zCpBgEn=mtN+ump$*1(z5&KJM&ec^p#Uhl4Mg=upw9&c1ywx@f+hVG8lAwj^y9*_XA z`_G~6T%@$zTgd3vi9<{iB3uu^rk?v&o$=)I-XL>rrB|N6q{-FXS0~HT)8nS3-f1$s za=(eWb#-d&x09w*=VqK==Xd+U%l$0MnST14bQe$Ay>->Y%WA9EPAz{{CGvLV)|-OA zM9m+x_S<}s?yrmrGyPtA@A7sX1-%Z<{uh{h&Nepwnz?MSPe@3tmu$)~bOmtStZDHeQr zp=3Ho#AKiDkZHbM%1eEnEL@hr!ba@;#x;B9Os+7S6zQg$#g&jHTDjh6^6p7yMw{bY zj5nTd3~YWm>HF01Nk&uKcT}Lh?$lycVcC1$YQ9bcZr@0{h3R(!k7 z$7;J#cUrD?`Sw*htJCK*@s_Ml+2g&qQY~JaefLIFYp^jV#hu>yPX5KdW0zUP2PVsy zEgg670Ot*S7Tvg6-C_7w%ki$~Ouv(rtf}vqh0KF|PV^pGDzs_SccDvL54~X%dF|^_ z6*9?qX~z7<Ry*=yNdQLC? zonOS+U)FUyN%mO@yr?ntx}JX~o_W)j?I8;$x!Y{own)bVP62mlGOb-cF)-rZ7ftO)rrAw>*Hy)T6@y183_}-A&CTDs zheAei z$MhChjqYxHpuJTT#ju#bP?2b$^c%&kV(+9Ic4uit0(lPZv?9Jms{|MNG|IeOSt0Rx zTlWVy;Ek#heCOm&`a8F80uIdB^2wd}Vo|MD!OVQ&;hTPRLDtB_H&t5KgnwGBDZYdy V5*Dwfep+(wTym*TzSaGKF8M* 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 None: + database_url: Final = os.environ.get("DATABASE_URL") + if not database_url: + return + try: + import psycopg + except ImportError as exc: + raise RuntimeError("Install psycopg to verify Lens data safety before prisma db push.") from exc + try: + with psycopg.connect( + ProxyExtrasDBManager._strip_prisma_query_params(database_url), connect_timeout=10, autocommit=True + ) as connection: + legacy: Final = connection.execute( + "SELECT 1 FROM pg_class c JOIN pg_namespace n ON n.oid=c.relnamespace " + "WHERE n.nspname=%s AND c.relname IN ('LiteLLM_Engine', 'LiteLLM_EngineRun', 'LiteLLM_EngineWorker') " + "LIMIT 1", + (ProxyExtrasDBManager._prisma_schema_param(database_url) or "public",), + ).fetchone() + except psycopg.Error as exc: + raise RuntimeError( + "Cannot verify Lens data safety; refusing prisma db push. Check database connectivity and psycopg installation." + ) from exc + if legacy is not None: + raise RuntimeError( + "Legacy Lens tables exist. prisma db push would drop saved Lens data. " + "Apply the shipped 20261001100000_rename_lens migration to this database schema before retrying. " + "Deployments using migration history can upgrade without --use_prisma_db_push instead." + ) + @staticmethod def spend_logs_is_partitioned() -> bool: """True when the connected database's LiteLLM_SpendLogs is a @@ -895,6 +925,7 @@ class ProxyExtrasDBManager: migrations_dir = ProxyExtrasDBManager._get_prisma_dir() if not use_migrate: + ProxyExtrasDBManager.raise_if_lens_rename_pending() if ProxyExtrasDBManager.spend_logs_is_partitioned(): raise RuntimeError(PARTITIONED_SPEND_LOGS_PUSH_ERROR) original_dir = os.getcwd() @@ -1398,6 +1429,7 @@ class ProxyExtrasDBManager: if ProxyExtrasDBManager.spend_logs_is_partitioned(): raise RuntimeError(PARTITIONED_SPEND_LOGS_PUSH_ERROR) # Use prisma db push with increased timeout + ProxyExtrasDBManager.raise_if_lens_rename_pending() prisma_toolchain.run_prisma( [_get_prisma_command(), "db", "push", "--accept-data-loss"], timeout=prisma_command_timeout(), diff --git a/litellm-proxy-extras/pyproject.toml b/litellm-proxy-extras/pyproject.toml index e92af4b0861..2e2f3f2ce5a 100644 --- a/litellm-proxy-extras/pyproject.toml +++ b/litellm-proxy-extras/pyproject.toml @@ -4,6 +4,10 @@ version = "0.4.103" description = "Additional files for the LiteLLM Proxy. Reduces the size of the main litellm package." readme = "README.md" requires-python = ">=3.9" +dependencies = [ + "psycopg>=3.2,<4.0", + "psycopg-binary>=3.2,<4.0", +] license = "MIT" license-files = ["LICENSE"] authors = [ diff --git a/litellm/proxy/_lazy_openapi_snapshot.json b/litellm/proxy/_lazy_openapi_snapshot.json index 7b735152065..c52d3748ce2 100644 --- a/litellm/proxy/_lazy_openapi_snapshot.json +++ b/litellm/proxy/_lazy_openapi_snapshot.json @@ -34666,52 +34666,6 @@ ] } }, - "/engine/workers/register": { - "post": { - "operationId": "register_worker_engine_workers_register_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WorkerName" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WorkerCreated" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "security": [ - { - "APIKeyHeader": [] - } - ], - "summary": "Register Worker", - "tags": [ - "mcp_discoverable" - ] - } - }, "/guardrails/register": { "post": { "description": "Register a guardrail for onboarding (team submission).\n\nAccepts a guardrail config in the\n[Generic Guardrail API](https://docs.litellm.ai/docs/adding_provider/generic_guardrail_api) format.\nThe submission is stored with status `pending_review` until an admin approves it.", @@ -34804,6 +34758,52 @@ ] } }, + "/lens/workers/register": { + "post": { + "operationId": "register_worker_lens_workers_register_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkerName" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkerCreated" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "APIKeyHeader": [] + } + ], + "summary": "Register Worker", + "tags": [ + "mcp_discoverable" + ] + } + }, "/register": { "post": { "operationId": "register_client_register_post", diff --git a/litellm/proxy/_types.py b/litellm/proxy/_types.py index bb3c11f01e4..4081443fda9 100644 --- a/litellm/proxy/_types.py +++ b/litellm/proxy/_types.py @@ -520,16 +520,16 @@ class LiteLLMRoutes(enum.Enum): "/v1/rag/ingest", "/rag/query", "/v1/rag/query", - "/engine", - "/engine/{engine_id}", - "/engine/{engine_id}/runs", - "/engine/{engine_id}/runs/{job_id}", - "/engine/{engine_id}/executions/{execution_id}", - "/engine/{engine_id}/cancel", - "/engine/{engine_id}/findings/{finding_id}", - "/engine/preview/sample", - "/engine/workers/register", - "/engine/workers/{worker_id}", + "/lens", + "/lens/{lens_id}", + "/lens/{lens_id}/runs", + "/lens/{lens_id}/runs/{job_id}", + "/lens/{lens_id}/executions/{execution_id}", + "/lens/{lens_id}/cancel", + "/lens/{lens_id}/findings/{finding_id}", + "/lens/preview/sample", + "/lens/workers/register", + "/lens/workers/{worker_id}", "/v1/traces", "/v1/traces/{trace_id}", "/v1/traces/{trace_id}/spans/{span_id}", diff --git a/litellm/proxy/db/prisma_client.py b/litellm/proxy/db/prisma_client.py index 0524d015047..afaa41e97a5 100644 --- a/litellm/proxy/db/prisma_client.py +++ b/litellm/proxy/db/prisma_client.py @@ -953,6 +953,9 @@ class PrismaManager: verbose_proxy_logger.error("\x1b[1;31mLiteLLM: Failed to import proxy extras. Got %s\x1b[0m", e) return False + from litellm_proxy_extras.utils import ProxyExtrasDBManager + + ProxyExtrasDBManager.raise_if_lens_rename_pending() PrismaManager._raise_if_partitioned_spend_logs() run_prisma( [ diff --git a/litellm/proxy/engine/__init__.py b/litellm/proxy/lens/__init__.py similarity index 100% rename from litellm/proxy/engine/__init__.py rename to litellm/proxy/lens/__init__.py diff --git a/litellm/proxy/engine/analysis.py b/litellm/proxy/lens/analysis.py similarity index 100% rename from litellm/proxy/engine/analysis.py rename to litellm/proxy/lens/analysis.py diff --git a/litellm/proxy/engine/billing.py b/litellm/proxy/lens/billing.py similarity index 100% rename from litellm/proxy/engine/billing.py rename to litellm/proxy/lens/billing.py diff --git a/litellm/proxy/engine/endpoints.py b/litellm/proxy/lens/endpoints.py similarity index 70% rename from litellm/proxy/engine/endpoints.py rename to litellm/proxy/lens/endpoints.py index d085fe7b289..fbe6e4d9b94 100644 --- a/litellm/proxy/engine/endpoints.py +++ b/litellm/proxy/lens/endpoints.py @@ -13,17 +13,17 @@ from pydantic import AwareDatetime, BaseModel, Field, TypeAdapter from litellm.proxy._types import LitellmUserRoles, UserAPIKeyAuth from litellm.proxy.auth.user_api_key_auth import user_api_key_auth from litellm.proxy.db.routing_prisma_wrapper import writer_wrapper -from litellm.proxy.engine.billing import validate_key -from litellm.proxy.engine.models import ( +from litellm.proxy.lens.billing import validate_key +from litellm.proxy.lens.models import ( Claim, - Engine, - EngineList, - EngineSettings, Execution, ExecutionContent, FindingDraft, FindingUpdate, Job, + Lens, + LensList, + LensSettings, ModelRequest, ModelResult, Progress, @@ -34,9 +34,9 @@ from litellm.proxy.engine.models import ( Worker, WorkerCreated, ) -from litellm.proxy.engine.repository import EngineRepository, WriterDatabase -from litellm.proxy.engine.sources import SourceReader, parse_execution -from litellm.proxy.engine.state import ( +from litellm.proxy.lens.repository import LensRepository, WriterDatabase +from litellm.proxy.lens.sources import SourceReader, parse_execution +from litellm.proxy.lens.state import ( can_access, claim_job, current_job, @@ -46,17 +46,17 @@ from litellm.proxy.engine.state import ( snapshot_finding, ) -router: Final = APIRouter(prefix="/engine", tags=["Lens"]) # mutable-ok: FastAPI requires list +router: Final = APIRouter(prefix="/lens", tags=["Lens"]) # mutable-ok: FastAPI requires list _bearer: Final = HTTPBearer() Auth: TypeAlias = Annotated[UserAPIKeyAuth, Depends(user_api_key_auth)] -def repository() -> EngineRepository: +def repository() -> LensRepository: from litellm.proxy.proxy_server import prisma_client if prisma_client is None: raise HTTPException(503, "Lens needs a connected Postgres database") - return EngineRepository(WriterDatabase(writer_wrapper(prisma_client.db))) + return LensRepository(WriterDatabase(writer_wrapper(prisma_client.db))) def source_reader() -> SourceReader: @@ -73,11 +73,11 @@ def user_scope(auth: UserAPIKeyAuth, write: bool = False) -> Scope: raise HTTPException(403, "Lens requires proxy administrator access") -async def get_engine(engine_id: str, scope: Scope) -> Engine: - engine: Final = await repository().get(engine_id) - if engine is None or not can_access(scope, engine.scope): +async def get_lens(lens_id: str, scope: Scope) -> Lens: + lens: Final = await repository().get(lens_id) + if lens is None or not can_access(scope, lens.scope): raise HTTPException(404, "Lens not found") - return engine + return lens async def worker_auth(credentials: Annotated[HTTPAuthorizationCredentials, Depends(_bearer)]) -> Worker: @@ -90,9 +90,9 @@ async def worker_auth(credentials: Annotated[HTTPAuthorizationCredentials, Depen WorkerAuth: TypeAlias = Annotated[Worker, Depends(worker_auth)] -async def assigned(engine_id: str, job_id: str, worker: Worker) -> tuple[Engine, Job]: - engine: Final = await get_engine(engine_id, worker.scope) - job: Final = current_job(engine) +async def assigned(lens_id: str, job_id: str, worker: Worker) -> tuple[Lens, Job]: + lens: Final = await get_lens(lens_id, worker.scope) + job: Final = current_job(lens) if ( job is None or job.id != job_id @@ -102,16 +102,16 @@ async def assigned(engine_id: str, job_id: str, worker: Worker) -> tuple[Engine, or job.lease_until <= datetime.now(timezone.utc) ): raise HTTPException(409, "This worker no longer owns the job") - return engine, job + return lens, job -def required(engine: Engine | None) -> Engine: - if engine is None: +def required(lens: Lens | None) -> Lens: + if lens is None: raise HTTPException(409, "Lens changed concurrently; retry the operation") - return engine + return lens -def validate_selection(settings: EngineSettings) -> None: +def validate_selection(settings: LensSettings) -> None: for identity in settings.execution_ids: try: source, _, _, _ = parse_execution(identity) @@ -121,7 +121,7 @@ def validate_selection(settings: EngineSettings) -> None: raise HTTPException(422, "Choose execution IDs returned by the activity preview") -def validate_model(settings: EngineSettings, auth: UserAPIKeyAuth) -> None: +def validate_model(settings: LensSettings, auth: UserAPIKeyAuth) -> None: from litellm.proxy.proxy_server import llm_router validate_selection(settings) @@ -137,24 +137,24 @@ def validate_model(settings: EngineSettings, auth: UserAPIKeyAuth) -> None: raise HTTPException(403, "This key does not have access to the analysis model") -@router.get("", response_model=EngineList) -async def list_engines(auth: Auth) -> EngineList: +@router.get("", response_model=LensList) +async def list_lenses(auth: Auth) -> LensList: from litellm.proxy import tracing_endpoints scope: Final = user_scope(auth) - return EngineList( - engines=tuple(e for e in await repository().engines() if can_access(scope, e.scope)), + return LensList( + lenses=tuple(e for e in await repository().lenses() if can_access(scope, e.scope)), workers=tuple(w for w in await repository().workers() if can_access(scope, w.scope)), tracing_enabled=tracing_endpoints.receiver is not None, ) -@router.post("", response_model=Engine) -async def create_engine(settings: EngineSettings, auth: Auth) -> Engine: +@router.post("", response_model=Lens) +async def create_lens(settings: LensSettings, auth: Auth) -> Lens: scope: Final = user_scope(auth, write=True) validate_model(settings, auth) now: Final = datetime.now(timezone.utc) - engine: Final = Engine( + lens: Final = Lens( id=str(uuid4()), scope=scope, settings=settings, @@ -162,16 +162,16 @@ async def create_engine(settings: EngineSettings, auth: Auth) -> Engine: next_run_at=now, budget_month=now.strftime("%Y-%m"), ) - return await repository().create(queue_job(engine, now, str(uuid4()))) + return await repository().create(queue_job(lens, now, str(uuid4()))) -@router.put("/{engine_id}", response_model=Engine) -async def update_engine(engine_id: str, settings: EngineSettings, auth: Auth) -> Engine: - await get_engine(engine_id, user_scope(auth, write=True)) +@router.put("/{lens_id}", response_model=Lens) +async def update_lens(lens_id: str, settings: LensSettings, auth: Auth) -> Lens: + await get_lens(lens_id, user_scope(auth, write=True)) validate_model(settings, auth) return required( await repository().update( - engine_id, + lens_id, lambda e: e.model_copy( update=MappingProxyType( { @@ -184,47 +184,47 @@ async def update_engine(engine_id: str, settings: EngineSettings, auth: Auth) -> ) -@router.post("/{engine_id}/runs", response_model=Engine) -async def run_engine(engine_id: str, body: RunRequest, auth: Auth) -> Engine: - await get_engine(engine_id, user_scope(auth, write=True)) +@router.post("/{lens_id}/runs", response_model=Lens) +async def run_lens(lens_id: str, body: RunRequest, auth: Auth) -> Lens: + await get_lens(lens_id, user_scope(auth, write=True)) if body.settings is not None: validate_model(body.settings, auth) now: Final = datetime.now(timezone.utc) job_id: Final = str(uuid4()) return required( - await repository().update(engine_id, lambda e: queue_job(e, now, job_id, body.lookback_hours, body.settings)) + await repository().update(lens_id, lambda e: queue_job(e, now, job_id, body.lookback_hours, body.settings)) ) -@router.get("/{engine_id}", response_model=Engine) -async def read_engine(engine_id: str, auth: Auth) -> Engine: - return await get_engine(engine_id, user_scope(auth)) +@router.get("/{lens_id}", response_model=Lens) +async def read_lens(lens_id: str, auth: Auth) -> Lens: + return await get_lens(lens_id, user_scope(auth)) -@router.get("/{engine_id}/runs", response_model=tuple[Job, ...]) -async def list_runs(engine_id: str, auth: Auth, offset: int = Query(default=0, ge=0)) -> tuple[Job, ...]: - await get_engine(engine_id, user_scope(auth)) +@router.get("/{lens_id}/runs", response_model=tuple[Job, ...]) +async def list_runs(lens_id: str, auth: Auth, offset: int = Query(default=0, ge=0)) -> tuple[Job, ...]: + await get_lens(lens_id, user_scope(auth)) return tuple( j.model_copy(update=MappingProxyType({"sample": None, "findings": None, "assessments": ()})) - for j in await repository().jobs(engine_id, offset) + for j in await repository().jobs(lens_id, offset) ) -@router.get("/{engine_id}/runs/{job_id}", response_model=Job) -async def read_run(engine_id: str, job_id: str, auth: Auth) -> Job: - await get_engine(engine_id, user_scope(auth)) - job: Final = await repository().job(engine_id, job_id) +@router.get("/{lens_id}/runs/{job_id}", response_model=Job) +async def read_run(lens_id: str, job_id: str, auth: Auth) -> Job: + await get_lens(lens_id, user_scope(auth)) + job: Final = await repository().job(lens_id, job_id) if job is None: raise HTTPException(404, "Investigation not found") return job -@router.post("/{engine_id}/cancel", response_model=Engine) -async def cancel_engine(engine_id: str, auth: Auth) -> Engine: - await get_engine(engine_id, user_scope(auth, write=True)) +@router.post("/{lens_id}/cancel", response_model=Lens) +async def cancel_lens(lens_id: str, auth: Auth) -> Lens: + await get_lens(lens_id, user_scope(auth, write=True)) now: Final = datetime.now(timezone.utc) - def cancel(e: Engine) -> Engine: + def cancel(e: Lens) -> Lens: job: Final = current_job(e) if job is None: return e @@ -235,15 +235,15 @@ async def cancel_engine(engine_id: str, auth: Auth) -> Engine: update=MappingProxyType({"next_run_at": now + timedelta(minutes=e.settings.interval_minutes)}) ) - return required(await repository().update(engine_id, cancel)) + return required(await repository().update(lens_id, cancel)) -@router.patch("/{engine_id}/findings/{finding_id}", response_model=Engine) -async def update_finding(engine_id: str, finding_id: str, body: FindingUpdate, auth: Auth) -> Engine: - await get_engine(engine_id, user_scope(auth, write=True)) +@router.patch("/{lens_id}/findings/{finding_id}", response_model=Lens) +async def update_finding(lens_id: str, finding_id: str, body: FindingUpdate, auth: Auth) -> Lens: + await get_lens(lens_id, user_scope(auth, write=True)) return required( await repository().update( - engine_id, + lens_id, lambda e: e.model_copy( update=MappingProxyType( { @@ -260,7 +260,7 @@ async def update_finding(engine_id: str, finding_id: str, body: FindingUpdate, a class Preview(BaseModel): as_of: AwareDatetime | None = None offset: int = Field(default=0, ge=0) - settings: EngineSettings + settings: LensSettings lookback_hours: int = Field(default=24, ge=1, le=720) @@ -335,7 +335,7 @@ async def claim(worker: WorkerAuth, protocol_version: int = 1) -> Claim | None: raise HTTPException(409, "Assign an analysis key to this worker in Lens setup") now: Final = datetime.now(timezone.utc) await repository().heartbeat(worker.id, now.isoformat()) - for candidate in await repository().engines(): + for candidate in await repository().lenses(): if not can_access(worker.scope, candidate.scope): continue if claimed := await claim_candidate(candidate, worker, now): @@ -343,12 +343,12 @@ async def claim(worker: WorkerAuth, protocol_version: int = 1) -> Claim | None: return None -@router.post("/worker/{engine_id}/{job_id}/progress", response_model=bool) -async def progress(engine_id: str, job_id: str, body: Progress, worker: WorkerAuth) -> bool: - await assigned(engine_id, job_id, worker) +@router.post("/worker/{lens_id}/{job_id}/progress", response_model=bool) +async def progress(lens_id: str, job_id: str, body: Progress, worker: WorkerAuth) -> bool: + await assigned(lens_id, job_id, worker) now: Final = datetime.now(timezone.utc) - def renew(e: Engine) -> Engine: + def renew(e: Lens) -> Lens: job: Final = current_job(e) if job is None or job.id != job_id or job.worker_id != worker.id: return e @@ -361,21 +361,21 @@ async def progress(engine_id: str, job_id: str, body: Progress, worker: WorkerAu ), ) - required(await repository().update(engine_id, renew)) + required(await repository().update(lens_id, renew)) await repository().heartbeat(worker.id, now.isoformat()) return True -@router.get("/worker/{engine_id}/{job_id}/sample", response_model=Sample) -async def sample(engine_id: str, job_id: str, worker: WorkerAuth) -> Sample: - engine, job = await assigned(engine_id, job_id, worker) +@router.get("/worker/{lens_id}/{job_id}/sample", response_model=Sample) +async def sample(lens_id: str, job_id: str, worker: WorkerAuth) -> Sample: + lens, job = await assigned(lens_id, job_id, worker) if job.sample is not None: return job.sample pages: list[Sample] = [] # mutable-ok: freeze selection after stable cursor traversal cursor = "" # rebind-ok: advance by immutable identity, never by shifting row positions while True: page = await source_reader().sample( - engine.scope, + lens.scope, job.settings, int(job.start.timestamp() * 1000), int(job.end.timestamp() * 1000), @@ -390,7 +390,7 @@ async def sample(engine_id: str, job_id: str, worker: WorkerAuth) -> Sample: ) # comprehension-ok: flatten query pages selected: Final = Sample(executions=executions, eligible=pages[0].eligible, selected=len(executions)) - def freeze(e: Engine) -> Engine: + def freeze(e: Lens) -> Lens: active: Final = current_job(e) if active is None or active.id != job_id or active.worker_id != worker.id: raise HTTPException(409, "Job was cancelled or reassigned") @@ -400,45 +400,45 @@ async def sample(engine_id: str, job_id: str, worker: WorkerAuth) -> Sample: else e ) - updated: Final = required(await repository().update(engine_id, freeze)) + updated: Final = required(await repository().update(lens_id, freeze)) frozen: Final = next(j for j in updated.jobs if j.id == job_id).sample if frozen is None: raise HTTPException(409, "Could not freeze the sample") return frozen -@router.get("/worker/{engine_id}/{job_id}/content", response_model=ExecutionContent) +@router.get("/worker/{lens_id}/{job_id}/content", response_model=ExecutionContent) async def content( - engine_id: str, + lens_id: str, job_id: str, execution_id: str, worker: WorkerAuth, cursor: str = "", offset: int = Query(default=0, ge=0), ) -> ExecutionContent: - engine, job = await assigned(engine_id, job_id, worker) + lens, job = await assigned(lens_id, job_id, worker) selected: Final = job.sample or Sample(executions=(), eligible=0) execution: Final = next((e for e in selected.executions if e.id == execution_id), None) if execution is None: raise HTTPException(404, "Execution is outside this job's sample") - return await source_reader().content(engine.scope, execution, cursor, offset) + return await source_reader().content(lens.scope, execution, cursor, offset) -@router.post("/worker/{engine_id}/{job_id}/model", response_model=ModelResult) -async def model(engine_id: str, job_id: str, body: ModelRequest, worker: WorkerAuth, request: Request) -> ModelResult: - from litellm.proxy.engine.inference import analyze +@router.post("/worker/{lens_id}/{job_id}/model", response_model=ModelResult) +async def model(lens_id: str, job_id: str, body: ModelRequest, worker: WorkerAuth, request: Request) -> ModelResult: + from litellm.proxy.lens.inference import analyze - engine, job = await assigned(engine_id, job_id, worker) - return await analyze(repository(), engine, job, worker, body, request) + lens, job = await assigned(lens_id, job_id, worker) + return await analyze(repository(), lens, job, worker, body, request) -@router.post("/worker/{engine_id}/{job_id}/result", response_model=Engine) -async def result(engine_id: str, job_id: str, body: Result, worker: WorkerAuth) -> Engine: - engine: Final = await get_engine(engine_id, worker.scope) - old: Final = next((j for j in engine.jobs if j.id == job_id), None) +@router.post("/worker/{lens_id}/{job_id}/result", response_model=Lens) +async def result(lens_id: str, job_id: str, body: Result, worker: WorkerAuth) -> Lens: + lens: Final = await get_lens(lens_id, worker.scope) + old: Final = next((j for j in lens.jobs if j.id == job_id), None) if old and old.status in ("completed", "failed") and old.worker_id == worker.id: - return engine - _, job = await assigned(engine_id, job_id, worker) + return lens + _, job = await assigned(lens_id, job_id, worker) now: Final = datetime.now(timezone.utc) selected: Final = job.sample or Sample(executions=(), eligible=0) allowed: Final = frozenset(e.id for e in selected.executions) @@ -455,9 +455,9 @@ async def result(engine_id: str, job_id: str, body: Result, worker: WorkerAuth) raise HTTPException(422, "Finding references evidence outside the job") for finding in body.findings: - await validate_finding(engine, selected, finding) + await validate_finding(lens, selected, finding) - def finish(e: Engine) -> Engine: + def finish(e: Lens) -> Lens: active: Final = current_job(e) if active is None or active.id != job_id or active.worker_id != worker.id: return e @@ -488,29 +488,29 @@ async def result(engine_id: str, job_id: str, body: Result, worker: WorkerAuth) ) ) - return required(await repository().update(engine_id, finish)) + return required(await repository().update(lens_id, finish)) -def merge_results(engine: Engine, result: Result, revision: int, now: datetime) -> Engine: - def merge_one(current: Engine, draft: FindingDraft) -> Engine: +def merge_results(lens: Lens, result: Result, revision: int, now: datetime) -> Lens: + def merge_one(current: Lens, draft: FindingDraft) -> Lens: finding: Final = merge_finding(current, draft, revision, now) return current.model_copy( update=MappingProxyType({"findings": (finding, *(f for f in current.findings if f.id != finding.id))}) ) - return reduce(merge_one, result.findings, engine) + return reduce(merge_one, result.findings, lens) -@router.post("/worker/{engine_id}/{job_id}/heartbeat", response_model=bool) -async def heartbeat(engine_id: str, job_id: str, worker: WorkerAuth) -> bool: - _, job = await assigned(engine_id, job_id, worker) - return await progress(engine_id, job_id, Progress(stage=job.stage, coverage=job.coverage), worker) +@router.post("/worker/{lens_id}/{job_id}/heartbeat", response_model=bool) +async def heartbeat(lens_id: str, job_id: str, worker: WorkerAuth) -> bool: + _, job = await assigned(lens_id, job_id, worker) + return await progress(lens_id, job_id, Progress(stage=job.stage, coverage=job.coverage), worker) -async def claim_candidate(candidate: Engine, worker: Worker, now: datetime) -> Claim | None: +async def claim_candidate(candidate: Lens, worker: Worker, now: datetime) -> Claim | None: job_id: Final = str(uuid4()) - def schedule(e: Engine) -> Engine: + def schedule(e: Lens) -> Lens: scheduled: Final = queue_job(e, now, job_id) if e.settings.enabled and e.next_run_at <= now else e return claim_job(scheduled, worker, now) @@ -519,31 +519,31 @@ async def claim_candidate(candidate: Engine, worker: Worker, now: datetime) -> C return None job: Final = current_job(updated) if job and job.worker_id == worker.id and job.status == "running" and job != current_job(candidate): - return Claim(engine_id=updated.id, job=job, findings=updated.findings) + return Claim(lens_id=updated.id, job=job, findings=updated.findings) return None -async def validate_finding(engine: Engine, selected: Sample, finding: FindingDraft) -> None: - previous: Final = next((f for f in engine.findings if f.id == finding.existing_finding_id), None) +async def validate_finding(lens: Lens, selected: Sample, finding: FindingDraft) -> None: + previous: Final = next((f for f in lens.findings if f.id == finding.existing_finding_id), None) if finding.existing_finding_id and (previous is None or previous.check_id != finding.check_id): raise HTTPException(422, "Existing finding must belong to the same check") for evidence in finding.evidence: if not await source_reader().verify_evidence( - engine.scope, next(e for e in selected.executions if e.id == evidence.execution_id), evidence + lens.scope, next(e for e in selected.executions if e.id == evidence.execution_id), evidence ): raise HTTPException(422, "Evidence quote does not match stored content") -@router.get("/{engine_id}/executions/{execution_id}", response_model=ExecutionContent) +@router.get("/{lens_id}/executions/{execution_id}", response_model=ExecutionContent) async def evidence_content( - engine_id: str, execution_id: str, auth: Auth, cursor: str = "", offset: int = Query(default=0, ge=0) + lens_id: str, execution_id: str, auth: Auth, cursor: str = "", offset: int = Query(default=0, ge=0) ) -> ExecutionContent: - engine: Final = await get_engine(engine_id, user_scope(auth)) + lens: Final = await get_lens(lens_id, user_scope(auth)) try: source, team, trace_id, trace_ref = parse_execution(execution_id) except ValueError: raise HTTPException(404, "Execution not found") - if source not in ("traces", "requests") or (not engine.scope.all_teams and team != engine.scope.team_id): + if source not in ("traces", "requests") or (not lens.scope.all_teams and team != lens.scope.team_id): raise HTTPException(404, "Execution not found") execution: Final = Execution( id=execution_id, @@ -556,4 +556,4 @@ async def evidence_content( span_count=1, root_seen=source == "requests", ) - return await source_reader().content(engine.scope, execution, cursor, offset) + return await source_reader().content(lens.scope, execution, cursor, offset) diff --git a/litellm/proxy/engine/inference.py b/litellm/proxy/lens/inference.py similarity index 91% rename from litellm/proxy/engine/inference.py rename to litellm/proxy/lens/inference.py index 687f3832a1b..28b6babf177 100644 --- a/litellm/proxy/engine/inference.py +++ b/litellm/proxy/lens/inference.py @@ -8,10 +8,10 @@ from pydantic import BaseModel, ConfigDict, Field import litellm from litellm.integrations.clickhouse.context import lens_analysis from litellm.litellm_core_utils.initialize_dynamic_callback_params import inherit_message_logging_privacy -from litellm.proxy.engine.billing import complete, validate_key -from litellm.proxy.engine.models import Engine, Job, ModelRequest, ModelResult, Worker -from litellm.proxy.engine.repository import EngineRepository -from litellm.proxy.engine.state import current_job, renew_budget, replace_job +from litellm.proxy.lens.billing import complete, validate_key +from litellm.proxy.lens.models import Job, Lens, ModelRequest, ModelResult, Worker +from litellm.proxy.lens.repository import LensRepository +from litellm.proxy.lens.state import current_job, renew_budget, replace_job from litellm.types.utils import CostPerToken, ModelResponse @@ -87,7 +87,7 @@ def quote(deployments: tuple[Deployment, ...], prompt: str) -> float: async def analyze( - repo: EngineRepository, engine: Engine, job: Job, worker: Worker, body: ModelRequest, request: Request + repo: LensRepository, lens: Lens, job: Job, worker: Worker, body: ModelRequest, request: Request ) -> ModelResult: from litellm.proxy.proxy_server import llm_router @@ -106,7 +106,7 @@ async def analyze( estimate: Final = quote(deployments, body.prompt) now: Final = datetime.now(timezone.utc) - def reserve(e: Engine) -> Engine: + def reserve(e: Lens) -> Lens: current: Final = renew_budget(e, now) active: Final = current_job(current) if ( @@ -124,7 +124,7 @@ async def analyze( ).model_copy(update=MappingProxyType({"spent": current.spent + estimate})) async def reserve_budget() -> None: - if await repo.update(engine.id, reserve) is None: + if await repo.update(lens.id, reserve) is None: raise HTTPException(409, "Could not reserve analysis budget") data: Final[dict[str, object]] = { # mutable-ok: proxy processing enriches request data @@ -140,8 +140,8 @@ async def analyze( "disable_fallbacks": True, "response_format": {"type": "json_object"}, # mutable-ok: provider response-format JSON "metadata": { # mutable-ok: request processing enriches metadata - "tags": ["litellm-engine"], # mutable-ok: logging callbacks require a list - "lens_id": engine.id, + "tags": ["litellm-lens"], # mutable-ok: logging callbacks require a list + "lens_id": lens.id, "lens_run_id": job.id, "lens_worker_id": worker.id, "user_api_key_team_id": team_id, @@ -153,7 +153,7 @@ async def analyze( parsed: Final = Completion.model_validate_json(response.model_dump_json()) cost: Final = billed_cost if billed_cost is not None else completion_charge(deployments, response, estimate) - def settle(e: Engine) -> Engine: + def settle(e: Lens) -> Lens: charged: Final = next((j for j in e.jobs if j.id == job.id), None) adjusted: Final = ( e.model_copy(update=MappingProxyType({"spent": max(0, e.spent - estimate + cost)})) @@ -168,7 +168,7 @@ async def analyze( else adjusted ) - await repo.update(engine.id, settle) + await repo.update(lens.id, settle) return ModelResult(content=parsed.choices[0].message.content or "{}", cost=cost) diff --git a/litellm/proxy/engine/models.py b/litellm/proxy/lens/models.py similarity index 95% rename from litellm/proxy/engine/models.py rename to litellm/proxy/lens/models.py index 33e70ff3eca..eb88801d065 100644 --- a/litellm/proxy/engine/models.py +++ b/litellm/proxy/lens/models.py @@ -25,7 +25,7 @@ class Check(Record): enabled: bool = True -class EngineSettings(Record): +class LensSettings(Record): name: str = Field(min_length=1, max_length=100) context: str = Field(default="", max_length=6000) source: Literal["traces", "requests", "both"] = "traces" @@ -44,7 +44,7 @@ class EngineSettings(Record): monthly_budget: float = Field(default=20, gt=0, le=100000, allow_inf_nan=False) @model_validator(mode="after") - def unique_checks(self) -> "EngineSettings": + def unique_checks(self) -> "LensSettings": if len(frozenset(c.id for c in self.checks)) != len(self.checks): raise ValueError("Each check must have a unique ID") if not self.context.strip() and not any(c.enabled for c in self.checks): @@ -163,7 +163,7 @@ class Job(Record): created_at: datetime start: datetime end: datetime - settings: EngineSettings + settings: LensSettings revision: int worker_id: str | None = None lease_until: datetime | None = None @@ -177,10 +177,10 @@ class Job(Record): assessments: tuple[RunAssessment, ...] = () -class Engine(Record): +class Lens(Record): id: str scope: Scope - settings: EngineSettings + settings: LensSettings revision: int = 1 version: int = 0 created_at: datetime @@ -206,14 +206,14 @@ class WorkerCreated(Record): token: str -class EngineList(Record): - engines: tuple[Engine, ...] +class LensList(Record): + lenses: tuple[Lens, ...] workers: tuple[Worker, ...] tracing_enabled: bool class RunRequest(Record): - settings: EngineSettings | None = None + settings: LensSettings | None = None lookback_hours: int | None = Field(default=None, ge=1, le=720) @@ -223,7 +223,7 @@ class FindingUpdate(Record): class Claim(Record): - engine_id: str + lens_id: str job: Job findings: tuple[Finding, ...] diff --git a/litellm/proxy/engine/repository.py b/litellm/proxy/lens/repository.py similarity index 66% rename from litellm/proxy/engine/repository.py rename to litellm/proxy/lens/repository.py index 7e3c2f27282..4aa840e181b 100644 --- a/litellm/proxy/engine/repository.py +++ b/litellm/proxy/lens/repository.py @@ -5,7 +5,7 @@ from typing import Final, Protocol from pydantic import BaseModel, JsonValue, TypeAdapter from litellm.proxy.db.prisma_client import PrismaWrapper -from litellm.proxy.engine.models import Engine, Job, Worker +from litellm.proxy.lens.models import Job, Lens, Worker class Database(Protocol): @@ -20,44 +20,44 @@ class Row(BaseModel): _ROWS: Final = TypeAdapter(tuple[Row, ...]) -class EngineRepository: +class LensRepository: def __init__(self, db: Database) -> None: self.db: Final = db - async def engines(self) -> tuple[Engine, ...]: - rows: Final = _ROWS.validate_python(await self.db.query_raw('SELECT data FROM "LiteLLM_Engine" ORDER BY id')) - return tuple(Engine.model_validate(row.data) for row in rows) + async def lenses(self) -> tuple[Lens, ...]: + rows: Final = _ROWS.validate_python(await self.db.query_raw('SELECT data FROM "LiteLLM_Lens" ORDER BY id')) + return tuple(Lens.model_validate(row.data) for row in rows) - async def get(self, engine_id: str) -> Engine | None: + async def get(self, lens_id: str) -> Lens | None: rows: Final = _ROWS.validate_python( await self.db.query_raw( - 'SELECT data FROM "LiteLLM_Engine" WHERE id=$1', - engine_id, + 'SELECT data FROM "LiteLLM_Lens" WHERE id=$1', + lens_id, ) ) - return Engine.model_validate(rows[0].data) if rows else None + return Lens.model_validate(rows[0].data) if rows else None - async def create(self, engine: Engine) -> Engine: + async def create(self, lens: Lens) -> Lens: await self.db.execute_raw( - 'INSERT INTO "LiteLLM_Engine" (id, version, data) VALUES ($1,0,$2::jsonb)', - engine.id, - engine.model_dump_json(), + 'INSERT INTO "LiteLLM_Lens" (id, version, data) VALUES ($1,0,$2::jsonb)', + lens.id, + lens.model_dump_json(), ) - return engine + return lens async def update( - self, engine_id: str, transform: Callable[[Engine], Engine], attempts: int = 8, *, changed_only: bool = False - ) -> Engine | None: + self, lens_id: str, transform: Callable[[Lens], Lens], attempts: int = 8, *, changed_only: bool = False + ) -> Lens | None: for _ in range(attempts): - completed, updated = await self._try_update(engine_id, transform, changed_only) + completed, updated = await self._try_update(lens_id, transform, changed_only) if completed: return updated return None async def _try_update( - self, engine_id: str, transform: Callable[[Engine], Engine], changed_only: bool - ) -> tuple[bool, Engine | None]: - previous: Final = await self.get(engine_id) + self, lens_id: str, transform: Callable[[Lens], Lens], changed_only: bool + ) -> tuple[bool, Lens | None]: + previous: Final = await self.get(lens_id) if previous is None: return True, None candidate: Final = transform(previous) @@ -67,12 +67,12 @@ class EngineRepository: rows: Final = _ROWS.validate_python( await self.db.query_raw( """WITH previous AS MATERIALIZED ( - SELECT data FROM "LiteLLM_Engine" WHERE id=$2 AND version=$3 FOR UPDATE + SELECT data FROM "LiteLLM_Lens" WHERE id=$2 AND version=$3 FOR UPDATE ), updated AS ( - UPDATE "LiteLLM_Engine" SET data=$1::jsonb, version=version+1 + UPDATE "LiteLLM_Lens" SET data=$1::jsonb, version=version+1 WHERE id=$2 AND version=$3 AND EXISTS (SELECT 1 FROM previous) RETURNING id ) - , archived AS (INSERT INTO "LiteLLM_EngineRun" (id, engine_id, created_at, data) + , archived AS (INSERT INTO "LiteLLM_LensRun" (id, lens_id, created_at, data) SELECT job->>'id', $2, (job->>'created_at')::timestamp, job FROM previous, jsonb_array_elements(previous.data->'jobs') AS job WHERE EXISTS (SELECT 1 FROM updated) @@ -81,46 +81,46 @@ class EngineRepository: ON CONFLICT (id) DO NOTHING) SELECT to_jsonb(count(*)) AS data FROM updated""", updated.model_dump_json(), - engine_id, + lens_id, previous.version, ) ) return bool(rows and rows[0].data == 1), updated - async def jobs(self, engine_id: str, offset: int = 0) -> tuple[Job, ...]: + async def jobs(self, lens_id: str, offset: int = 0) -> tuple[Job, ...]: rows: Final = _ROWS.validate_python( await self.db.query_raw( """SELECT data FROM ( - SELECT data FROM "LiteLLM_EngineRun" WHERE engine_id=$1 + SELECT data FROM "LiteLLM_LensRun" WHERE lens_id=$1 UNION ALL - SELECT jsonb_array_elements(data->'jobs') AS data FROM "LiteLLM_Engine" WHERE id=$1 + SELECT jsonb_array_elements(data->'jobs') AS data FROM "LiteLLM_Lens" WHERE id=$1 ) AS jobs ORDER BY data->>'created_at' DESC, data->>'id' DESC LIMIT 50 OFFSET $2""", - engine_id, + lens_id, offset, ) ) return tuple(Job.model_validate(row.data) for row in rows) - async def job(self, engine_id: str, job_id: str) -> Job | None: + async def job(self, lens_id: str, job_id: str) -> Job | None: rows: Final = _ROWS.validate_python( await self.db.query_raw( - """SELECT data FROM "LiteLLM_EngineRun" WHERE engine_id=$1 AND id=$2 - UNION ALL SELECT job AS data FROM "LiteLLM_Engine", jsonb_array_elements(data->'jobs') AS job + """SELECT data FROM "LiteLLM_LensRun" WHERE lens_id=$1 AND id=$2 + UNION ALL SELECT job AS data FROM "LiteLLM_Lens", jsonb_array_elements(data->'jobs') AS job WHERE id=$1 AND job->>'id'=$2 LIMIT 1""", - engine_id, + lens_id, job_id, ) ) return Job.model_validate(rows[0].data) if rows else None async def workers(self) -> tuple[Worker, ...]: - rows: Final = _ROWS.validate_python(await self.db.query_raw('SELECT data FROM "LiteLLM_EngineWorker"')) + rows: Final = _ROWS.validate_python(await self.db.query_raw('SELECT data FROM "LiteLLM_LensWorker"')) return tuple(Worker.model_validate(row.data) for row in rows) async def worker(self, token_hash: str) -> Worker | None: rows: Final = _ROWS.validate_python( await self.db.query_raw( - 'SELECT data FROM "LiteLLM_EngineWorker" WHERE token_hash=$1', + 'SELECT data FROM "LiteLLM_LensWorker" WHERE token_hash=$1', token_hash, ) ) @@ -129,20 +129,20 @@ class EngineRepository: async def save_worker(self, worker: Worker, token_hash: str | None = None) -> None: if token_hash is not None: await self.db.execute_raw( - 'INSERT INTO "LiteLLM_EngineWorker" (id,token_hash,data) VALUES ($1,$2,$3::jsonb)', + 'INSERT INTO "LiteLLM_LensWorker" (id,token_hash,data) VALUES ($1,$2,$3::jsonb)', worker.id, token_hash, worker.model_dump_json(), ) return await self.db.execute_raw( - 'UPDATE "LiteLLM_EngineWorker" SET data=$1::jsonb WHERE id=$2', worker.model_dump_json(), worker.id + 'UPDATE "LiteLLM_LensWorker" SET data=$1::jsonb WHERE id=$2', worker.model_dump_json(), worker.id ) async def set_worker_billing(self, worker_id: str, key_id: str) -> Worker | None: rows: Final = _ROWS.validate_python( await self.db.query_raw( - """UPDATE "LiteLLM_EngineWorker" + """UPDATE "LiteLLM_LensWorker" SET data=jsonb_set(data, '{analysis_key_id}', to_jsonb($1::text)) WHERE id=$2 AND COALESCE((data->>'revoked')::boolean, false)=false RETURNING data""", key_id, @@ -153,13 +153,13 @@ class EngineRepository: async def revoke_worker(self, worker_id: str) -> None: await self.db.execute_raw( - """UPDATE "LiteLLM_EngineWorker" SET data=jsonb_set(data, '{revoked}', 'true') WHERE id=$1""", + """UPDATE "LiteLLM_LensWorker" SET data=jsonb_set(data, '{revoked}', 'true') WHERE id=$1""", worker_id, ) async def heartbeat(self, worker_id: str, now: str) -> None: await self.db.execute_raw( - """UPDATE "LiteLLM_EngineWorker" SET data=jsonb_set(data, '{last_seen}', to_jsonb($1::text)) WHERE id=$2""", + """UPDATE "LiteLLM_LensWorker" SET data=jsonb_set(data, '{last_seen}', to_jsonb($1::text)) WHERE id=$2""", now, worker_id, ) diff --git a/litellm/proxy/engine/sources.py b/litellm/proxy/lens/sources.py similarity index 98% rename from litellm/proxy/engine/sources.py rename to litellm/proxy/lens/sources.py index d9d50a0b91e..12d26cd4974 100644 --- a/litellm/proxy/engine/sources.py +++ b/litellm/proxy/lens/sources.py @@ -6,11 +6,11 @@ from typing import Final, Literal, Protocol from pydantic import BaseModel, TypeAdapter -from litellm.proxy.engine.models import ( - EngineSettings, +from litellm.proxy.lens.models import ( Evidence, Execution, ExecutionContent, + LensSettings, MetadataFilter, Sample, Scope, @@ -93,7 +93,7 @@ class SourceReader: async def sample( self, scope: Scope, - settings: EngineSettings, + settings: LensSettings, start: int, end: int, offset: int = 0, diff --git a/litellm/proxy/engine/state.py b/litellm/proxy/lens/state.py similarity index 66% rename from litellm/proxy/engine/state.py rename to litellm/proxy/lens/state.py index 3ca6e881234..5fc0a88aa3a 100644 --- a/litellm/proxy/engine/state.py +++ b/litellm/proxy/lens/state.py @@ -3,7 +3,7 @@ from datetime import datetime, timedelta from types import MappingProxyType from typing import Final -from litellm.proxy.engine.models import Engine, EngineSettings, Finding, FindingDraft, Job, Scope, Worker +from litellm.proxy.lens.models import Finding, FindingDraft, Job, Lens, LensSettings, Scope, Worker def can_access(viewer: Scope, target: Scope) -> bool: @@ -14,46 +14,46 @@ def can_access(viewer: Scope, target: Scope) -> bool: ) -def current_job(engine: Engine) -> Job | None: - return next((job for job in engine.jobs if job.status in ("queued", "running")), None) +def current_job(lens: Lens) -> Job | None: + return next((job for job in lens.jobs if job.status in ("queued", "running")), None) -def replace_job(engine: Engine, job: Job) -> Engine: - return engine.model_copy( - update=MappingProxyType({"jobs": tuple(job if old.id == job.id else old for old in engine.jobs)}) +def replace_job(lens: Lens, job: Job) -> Lens: + return lens.model_copy( + update=MappingProxyType({"jobs": tuple(job if old.id == job.id else old for old in lens.jobs)}) ) def queue_job( - engine: Engine, + lens: Lens, now: datetime, job_id: str, lookback_hours: int | None = None, - settings: EngineSettings | None = None, -) -> Engine: - if current_job(engine): - return engine - selected: Final = settings or engine.settings + settings: LensSettings | None = None, +) -> Lens: + if current_job(lens): + return lens + selected: Final = settings or lens.settings job: Final = Job( id=job_id, created_at=now, start=now - timedelta(hours=lookback_hours if lookback_hours is not None else selected.lookback_hours), end=now - timedelta(minutes=2), settings=selected, - revision=engine.revision, + revision=lens.revision, ) - return engine.model_copy(update=MappingProxyType({"jobs": (job,)})) + return lens.model_copy(update=MappingProxyType({"jobs": (job,)})) -def claim_job(engine: Engine, worker: Worker, now: datetime) -> Engine: - job: Final = current_job(engine) - if job is None or not can_access(worker.scope, engine.scope): - return engine +def claim_job(lens: Lens, worker: Worker, now: datetime) -> Lens: + job: Final = current_job(lens) + if job is None or not can_access(worker.scope, lens.scope): + return lens if job.status == "running" and job.lease_until is not None and job.lease_until > now: - return engine + return lens if job.attempts >= 3: return replace_job( - engine, + lens, job.model_copy( update=MappingProxyType( { @@ -64,11 +64,9 @@ def claim_job(engine: Engine, worker: Worker, now: datetime) -> Engine: } ) ), - ).model_copy( - update=MappingProxyType({"next_run_at": now + timedelta(minutes=engine.settings.interval_minutes)}) - ) + ).model_copy(update=MappingProxyType({"next_run_at": now + timedelta(minutes=lens.settings.interval_minutes)})) return replace_job( - engine, + lens, job.model_copy( update=MappingProxyType( { @@ -83,23 +81,23 @@ def claim_job(engine: Engine, worker: Worker, now: datetime) -> Engine: ) -def renew_budget(engine: Engine, now: datetime) -> Engine: +def renew_budget(lens: Lens, now: datetime) -> Lens: month: Final = now.strftime("%Y-%m") - if engine.budget_month == month: - return engine - return engine.model_copy(update=MappingProxyType({"budget_month": month, "spent": 0})) + if lens.budget_month == month: + return lens + return lens.model_copy(update=MappingProxyType({"budget_month": month, "spent": 0})) -def merge_finding(engine: Engine, draft: FindingDraft, revision: int, now: datetime) -> Finding: - legacy_identity: Final = hashlib.sha256(f"{engine.id}:{draft.check_id}:{draft.title.lower()}".encode()).hexdigest()[ +def merge_finding(lens: Lens, draft: FindingDraft, revision: int, now: datetime) -> Finding: + legacy_identity: Final = hashlib.sha256(f"{lens.id}:{draft.check_id}:{draft.title.lower()}".encode()).hexdigest()[ :24 ] identity: Final = hashlib.sha256( - f"{engine.id}:{draft.check_id}:{draft.kind}:{draft.title.lower()}".encode() + f"{lens.id}:{draft.check_id}:{draft.kind}:{draft.title.lower()}".encode() ).hexdigest()[:24] identities: Final = (draft.existing_finding_id, identity, legacy_identity) previous: Final = next( - (f for f in engine.findings if f.id in identities and f.kind == draft.kind and f.check_id == draft.check_id), + (f for f in lens.findings if f.id in identities and f.kind == draft.kind and f.check_id == draft.check_id), None, ) occurrences: Final = tuple(sorted(frozenset(e.execution_id for e in draft.evidence if e.role == "support"))) @@ -137,8 +135,8 @@ def merge_finding(engine: Engine, draft: FindingDraft, revision: int, now: datet ) -def snapshot_finding(engine: Engine, draft: FindingDraft, revision: int, now: datetime) -> Finding: - merged: Final = merge_finding(engine, draft, revision, now) +def snapshot_finding(lens: Lens, draft: FindingDraft, revision: int, now: datetime) -> Finding: + merged: Final = merge_finding(lens, draft, revision, now) return Finding.model_validate( MappingProxyType( { diff --git a/litellm/proxy/engine/trace_store.py b/litellm/proxy/lens/trace_store.py similarity index 100% rename from litellm/proxy/engine/trace_store.py rename to litellm/proxy/lens/trace_store.py diff --git a/litellm/proxy/engine/worker.py b/litellm/proxy/lens/worker.py similarity index 93% rename from litellm/proxy/engine/worker.py rename to litellm/proxy/lens/worker.py index e71c57ce143..2980f62deed 100644 --- a/litellm/proxy/engine/worker.py +++ b/litellm/proxy/lens/worker.py @@ -12,10 +12,10 @@ import httpx from .analysis import analyze_sample from .models import Claim, Coverage, ExecutionContent, ModelRequest, ModelResult, Progress, Result, Sample -logger: Final = logging.getLogger("litellm.engine.worker") +logger: Final = logging.getLogger("litellm.lens.worker") -class EngineWorker: +class LensWorker: def __init__(self, client: httpx.AsyncClient, sleep: Callable[[float], Awaitable[None]] = asyncio.sleep) -> None: self.client: Final = client self.sleep: Final = sleep @@ -38,14 +38,12 @@ class EngineWorker: return await self.model_request(path, body, attempt + 1) async def run_once(self) -> bool: - response: Final = await self.client.post( - "/engine/worker/claim", params=MappingProxyType({"protocol_version": 2}) - ) + response: Final = await self.client.post("/lens/worker/claim", params=MappingProxyType({"protocol_version": 2})) response.raise_for_status() if response.json() is None: return False claim: Final = Claim.model_validate(response.json()) - prefix: Final = f"/engine/worker/{claim.engine_id}/{claim.job.id}" + prefix: Final = f"/lens/worker/{claim.lens_id}/{claim.job.id}" async def model(body: ModelRequest) -> ModelResult: return await self.model_request(prefix + "/model", body) @@ -111,7 +109,7 @@ async def main() -> None: async with httpx.AsyncClient( base_url=url, headers=MappingProxyType({"Authorization": f"Bearer {token}"}), timeout=180 ) as client: - worker: Final = EngineWorker(client) + worker: Final = LensWorker(client) while True: try: await worker.run_once() diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 7c1ab0711ea..085c38ad259 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -541,7 +541,6 @@ from litellm.proxy.discovery_endpoints import ( agent_skills_discovery_router, ui_discovery_endpoints_router, ) -from litellm.proxy.engine.endpoints import router as engine_router from litellm.proxy.fine_tuning_endpoints.endpoints import router as fine_tuning_router from litellm.proxy.fine_tuning_endpoints.endpoints import set_fine_tuning_config from litellm.proxy.google_endpoints.endpoints import router as google_router @@ -565,6 +564,7 @@ from litellm.proxy.hooks.prompt_injection_detection import ( ) from litellm.proxy.hooks.proxy_track_cost_callback import _ProxyDBLogger, run_spend_event from litellm.proxy.image_endpoints.endpoints import router as image_router +from litellm.proxy.lens.endpoints import router as lens_router from litellm.proxy.list_api.common import ( ManagementProblem, problem_response, @@ -19988,7 +19988,7 @@ app.include_router(auto_router_management_router) app.include_router(tag_management_router) app.include_router(workflow_management_router) app.include_router(memory_router) -app.include_router(engine_router) +app.include_router(lens_router) app.include_router(plugin_router) app.include_router(cost_tracking_settings_router) app.include_router(prompt_caching_requests_router) diff --git a/litellm/proxy/schema.prisma b/litellm/proxy/schema.prisma index 75dc7ddde9d..6f285e9dc39 100644 --- a/litellm/proxy/schema.prisma +++ b/litellm/proxy/schema.prisma @@ -1895,22 +1895,22 @@ model LiteLLM_WorkflowMessage { @@index([run_id]) } -model LiteLLM_Engine { +model LiteLLM_Lens { id String @id version Int @default(0) data Json } -model LiteLLM_EngineRun { +model LiteLLM_LensRun { id String @id - engine_id String + lens_id String created_at DateTime data Json - @@index([engine_id, created_at]) + @@index([lens_id, created_at]) } -model LiteLLM_EngineWorker { +model LiteLLM_LensWorker { id String @id token_hash String @unique data Json diff --git a/schema.prisma b/schema.prisma index 75dc7ddde9d..6f285e9dc39 100644 --- a/schema.prisma +++ b/schema.prisma @@ -1895,22 +1895,22 @@ model LiteLLM_WorkflowMessage { @@index([run_id]) } -model LiteLLM_Engine { +model LiteLLM_Lens { id String @id version Int @default(0) data Json } -model LiteLLM_EngineRun { +model LiteLLM_LensRun { id String @id - engine_id String + lens_id String created_at DateTime data Json - @@index([engine_id, created_at]) + @@index([lens_id, created_at]) } -model LiteLLM_EngineWorker { +model LiteLLM_LensWorker { id String @id token_hash String @unique data Json diff --git a/tests/code_coverage_tests/ensure_async_clients_test.py b/tests/code_coverage_tests/ensure_async_clients_test.py index 285a5700a1c..7519c2aebb3 100644 --- a/tests/code_coverage_tests/ensure_async_clients_test.py +++ b/tests/code_coverage_tests/ensure_async_clients_test.py @@ -3,8 +3,8 @@ import os ALLOWED_FILES = [ # The standalone Lens process reuses one client for its entire lifetime, without importing the proxy SDK. - "../../litellm/proxy/engine/worker.py", - "./litellm/proxy/engine/worker.py", + "../../litellm/proxy/lens/worker.py", + "./litellm/proxy/lens/worker.py", # local files "../../litellm/__init__.py", "../../litellm/llms/custom_httpx/http_handler.py", diff --git a/tests/integration/database/test_engine_repository.py b/tests/integration/database/test_engine_repository.py deleted file mode 100644 index 89e019c8e1a..00000000000 --- a/tests/integration/database/test_engine_repository.py +++ /dev/null @@ -1,65 +0,0 @@ -import asyncio -import os -from collections.abc import AsyncIterator -from datetime import datetime, timezone -from typing import Final -from uuid import uuid4 - -import pytest -import pytest_asyncio -from prisma import Prisma - -from litellm.proxy.db.prisma_client import PrismaWrapper -from litellm.proxy.engine.models import Check, Engine, EngineSettings, Scope, Worker -from litellm.proxy.engine.repository import EngineRepository, WriterDatabase -from litellm.proxy.engine.state import claim_job, queue_job - - -@pytest_asyncio.fixture(loop_scope="function") -async def engine_db() -> AsyncIterator[Prisma]: - async with Prisma(datasource={"url": os.environ["DATABASE_URL"]}) as db: - yield db - - -@pytest.mark.asyncio -async def test_concurrent_workers_cannot_both_acquire_the_same_job(engine_db: Prisma) -> None: - now: Final = datetime.now(timezone.utc) - scope: Final = Scope(team_id=uuid4().hex) - repo: Final = EngineRepository(WriterDatabase(PrismaWrapper(engine_db))) - engine: Final = Engine( - id=uuid4().hex, - scope=scope, - settings=EngineSettings(name="Lease test", model="test", checks=(Check(id="c", instruction="Find retries"),)), - created_at=now, - next_run_at=now, - budget_month=now.strftime("%Y-%m"), - ) - await repo.create(queue_job(engine, now, uuid4().hex)) - try: - workers: Final = tuple(Worker(id=uuid4().hex, name="worker", scope=scope, last_seen=now) for _ in range(2)) - results: Final = await asyncio.gather( - *(repo.update(engine.id, lambda e, w=w: claim_job(e, w, now)) for w in workers) - ) - stored: Final = await repo.get(engine.id) - assert stored is not None - assert stored.jobs[0].attempts == 1 - assert stored.jobs[0].worker_id in tuple(w.id for w in workers) - assert tuple(r.jobs[0].worker_id for r in results if r) == (stored.jobs[0].worker_id, stored.jobs[0].worker_id) - finally: - await engine_db.execute_raw('DELETE FROM "LiteLLM_Engine" WHERE id=$1', engine.id) - - -@pytest.mark.asyncio -async def test_heartbeat_never_restores_revoked_access(engine_db: Prisma) -> None: - now: Final = datetime.now(timezone.utc) - repo: Final = EngineRepository(WriterDatabase(PrismaWrapper(engine_db))) - worker: Final = Worker(id=uuid4().hex, name="worker", scope=Scope(team_id=uuid4().hex), last_seen=now) - token_hash: Final = uuid4().hex - await repo.save_worker(worker, token_hash) - try: - await repo.save_worker(worker.model_copy(update={"revoked": True})) - await repo.heartbeat(worker.id, now.isoformat()) - stored: Final = await repo.worker(token_hash) - assert stored is not None and stored.revoked is True - finally: - await engine_db.execute_raw('DELETE FROM "LiteLLM_EngineWorker" WHERE id=$1', worker.id) diff --git a/tests/integration/database/test_lens_repository.py b/tests/integration/database/test_lens_repository.py new file mode 100644 index 00000000000..29c6ad13825 --- /dev/null +++ b/tests/integration/database/test_lens_repository.py @@ -0,0 +1,173 @@ +import asyncio +import os +from collections.abc import AsyncIterator +from datetime import datetime, timezone +from pathlib import Path +from typing import Final +from urllib.parse import parse_qsl, urlencode, urlsplit, urlunsplit +from uuid import uuid4 + +import psycopg +import pytest +import pytest_asyncio +from prisma import Prisma +from psycopg import sql + +from litellm.proxy.db.prisma_client import PrismaWrapper +from litellm.proxy.lens.models import Check, Lens, LensSettings, Scope, Worker +from litellm.proxy.lens.repository import LensRepository, WriterDatabase +from litellm.proxy.lens.state import claim_job, queue_job + + +@pytest_asyncio.fixture(loop_scope="function") +async def lens_db() -> AsyncIterator[Prisma]: + async with Prisma(datasource={"url": os.environ["DATABASE_URL"]}) as db: + yield db + + +@pytest.mark.asyncio +async def test_concurrent_workers_cannot_both_acquire_the_same_job(lens_db: Prisma) -> None: + now: Final = datetime.now(timezone.utc) + scope: Final = Scope(team_id=uuid4().hex) + repo: Final = LensRepository(WriterDatabase(PrismaWrapper(lens_db))) + lens: Final = Lens( + id=uuid4().hex, + scope=scope, + settings=LensSettings(name="Lease test", model="test", checks=(Check(id="c", instruction="Find retries"),)), + created_at=now, + next_run_at=now, + budget_month=now.strftime("%Y-%m"), + ) + await repo.create(queue_job(lens, now, uuid4().hex)) + try: + workers: Final = tuple(Worker(id=uuid4().hex, name="worker", scope=scope, last_seen=now) for _ in range(2)) + results: Final = await asyncio.gather( + *(repo.update(lens.id, lambda e, w=w: claim_job(e, w, now)) for w in workers) + ) + stored: Final = await repo.get(lens.id) + assert stored is not None + assert stored.jobs[0].attempts == 1 + assert stored.jobs[0].worker_id in tuple(w.id for w in workers) + assert tuple(r.jobs[0].worker_id for r in results if r) == (stored.jobs[0].worker_id, stored.jobs[0].worker_id) + finally: + await lens_db.execute_raw('DELETE FROM "LiteLLM_Lens" WHERE id=$1', lens.id) + + +@pytest.mark.asyncio +async def test_heartbeat_never_restores_revoked_access(lens_db: Prisma) -> None: + now: Final = datetime.now(timezone.utc) + repo: Final = LensRepository(WriterDatabase(PrismaWrapper(lens_db))) + worker: Final = Worker(id=uuid4().hex, name="worker", scope=Scope(team_id=uuid4().hex), last_seen=now) + token_hash: Final = uuid4().hex + await repo.save_worker(worker, token_hash) + try: + await repo.save_worker(worker.model_copy(update={"revoked": True})) + await repo.heartbeat(worker.id, now.isoformat()) + stored: Final = await repo.worker(token_hash) + assert stored is not None and stored.revoked is True + finally: + await lens_db.execute_raw('DELETE FROM "LiteLLM_LensWorker" WHERE id=$1', worker.id) + + +@pytest.mark.parametrize("populated", (False, True)) +@pytest.mark.parametrize("preceding_schema", (False, True)) +def test_lens_rename_preserves_saved_data_and_worker_credentials(populated: bool, preceding_schema: bool) -> None: + migrations: Final = ( + Path(__file__).resolve().parents[3] / "litellm-proxy-extras" / "litellm_proxy_extras" / "migrations" + ) + schema: Final = f"lens_migration_{uuid4().hex}" + with psycopg.connect(os.environ["DATABASE_URL"]) as connection: + try: + connection.execute(sql.SQL("CREATE SCHEMA {}").format(sql.Identifier(schema))) + connection.execute(sql.SQL("SET LOCAL search_path TO {}").format(sql.Identifier(schema))) + for name in ("20260930000000_agent_engine", "20261001000000_lens_run_history"): + connection.execute(sql.SQL((migrations / name / "migration.sql").read_text())) + if populated: + connection.execute( + """INSERT INTO "LiteLLM_Engine" VALUES ('lens', 7, '{"findings":[{"id":"finding"}]}'); + INSERT INTO "LiteLLM_EngineWorker" VALUES ('worker', 'token-hash', '{"analysis_key_id":"key"}'); + INSERT INTO "LiteLLM_EngineRun" VALUES ('batch', 'lens', '2026-01-01', '{"cost":1.25}')""" + ) + if preceding_schema: + first_schema: Final = f"lens_first_{uuid4().hex}" + connection.execute(sql.SQL("CREATE SCHEMA {}").format(sql.Identifier(first_schema))) + connection.execute( + sql.SQL("SET LOCAL search_path TO {}, {}").format( + sql.Identifier(first_schema), sql.Identifier(schema) + ) + ) + connection.execute(sql.SQL((migrations / "20261001100000_rename_lens" / "migration.sql").read_text())) + connection.execute(sql.SQL((migrations / "20261001100000_rename_lens" / "migration.sql").read_text())) + assert connection.execute('SELECT id, version, data FROM "LiteLLM_Lens"').fetchall() == ( + [("lens", 7, {"findings": [{"id": "finding"}]})] if populated else [] + ) + assert connection.execute('SELECT id, token_hash, data FROM "LiteLLM_LensWorker"').fetchall() == ( + [("worker", "token-hash", {"analysis_key_id": "key"})] if populated else [] + ) + assert connection.execute('SELECT id, lens_id, data FROM "LiteLLM_LensRun"').fetchall() == ( + [("batch", "lens", {"cost": 1.25})] if populated else [] + ) + finally: + connection.rollback() + + +@pytest.mark.parametrize("entrypoint", ("proxy", "extras-v1", "extras-v2")) +@pytest.mark.parametrize("legacy_table", ("LiteLLM_Engine", "LiteLLM_EngineRun", "LiteLLM_EngineWorker")) +def test_db_push_refuses_legacy_lens_data(monkeypatch: pytest.MonkeyPatch, entrypoint: str, legacy_table: str) -> None: + from litellm_proxy_extras.utils import ProxyExtrasDBManager + + from litellm.proxy.db.prisma_client import PrismaManager + + database_url: Final = os.environ["DATABASE_URL"] + schema: Final = f"lens_push_{uuid4().hex}" + parsed: Final = urlsplit(database_url) + scoped: Final = urlunsplit(parsed._replace(query=urlencode({**dict(parse_qsl(parsed.query)), "schema": schema}))) + with psycopg.connect(database_url, autocommit=True) as connection: + connection.execute(sql.SQL("CREATE SCHEMA {}").format(sql.Identifier(schema))) + try: + connection.execute( + sql.SQL("CREATE TABLE {} (id TEXT PRIMARY KEY, data JSONB)").format( + sql.Identifier(schema, legacy_table) + ) + ) + connection.execute( + sql.SQL("INSERT INTO {} VALUES ('saved', '{{\"keep\":true}}')").format( + sql.Identifier(schema, legacy_table) + ) + ) + monkeypatch.setenv("DATABASE_URL", scoped) + setup: Final = ( + PrismaManager.setup_database if entrypoint == "proxy" else ProxyExtrasDBManager.setup_database + ) + with pytest.raises(RuntimeError, match="Legacy Lens tables exist"): + setup(use_migrate=False, use_v2_resolver=entrypoint == "extras-v2") + assert connection.execute( + sql.SQL("SELECT id, data FROM {}").format(sql.Identifier(schema, legacy_table)) + ).fetchall() == [("saved", {"keep": True})] + finally: + connection.execute(sql.SQL("DROP SCHEMA {} CASCADE").format(sql.Identifier(schema))) + + +def test_db_push_creates_fresh_lens_tables_and_preserves_them_on_restart(monkeypatch: pytest.MonkeyPatch) -> None: + from litellm.proxy.db.prisma_client import PrismaManager + + database_url: Final = os.environ["DATABASE_URL"] + schema: Final = f"lens_fresh_push_{uuid4().hex}" + parsed: Final = urlsplit(database_url) + scoped: Final = urlunsplit(parsed._replace(query=urlencode({**dict(parse_qsl(parsed.query)), "schema": schema}))) + with psycopg.connect(database_url, autocommit=True) as connection: + connection.execute(sql.SQL("CREATE SCHEMA {}").format(sql.Identifier(schema))) + try: + monkeypatch.setenv("DATABASE_URL", scoped) + assert PrismaManager.setup_database(use_migrate=False) + connection.execute( + sql.SQL("INSERT INTO {} (id, data) VALUES ('saved', '{{\"keep\":true}}')").format( + sql.Identifier(schema, "LiteLLM_Lens") + ) + ) + assert PrismaManager.setup_database(use_migrate=False) + assert connection.execute( + sql.SQL("SELECT id, data FROM {}").format(sql.Identifier(schema, "LiteLLM_Lens")) + ).fetchall() == [("saved", {"keep": True})] + finally: + connection.execute(sql.SQL("DROP SCHEMA {} CASCADE").format(sql.Identifier(schema))) diff --git a/tests/integration/spend/test_lens_billing.py b/tests/integration/spend/test_lens_billing.py index bd9afdfd954..bedcf6c5380 100644 --- a/tests/integration/spend/test_lens_billing.py +++ b/tests/integration/spend/test_lens_billing.py @@ -12,10 +12,10 @@ from tests.integration._support.process import owned_proxy from tests.integration.pricing.test_off_peak_pricing import off_peak_window -def delete_lens(engine_id: str) -> None: - write_rows('DELETE FROM "LiteLLM_EngineRun" WHERE engine_id=%s', (engine_id,)) - write_rows('DELETE FROM "LiteLLM_Engine" WHERE id=%s', (engine_id,)) - assert read_rows('SELECT id FROM "LiteLLM_Engine" WHERE id=%s', (engine_id,)) == [] +def delete_lens(lens_id: str) -> None: + write_rows('DELETE FROM "LiteLLM_LensRun" WHERE lens_id=%s', (lens_id,)) + write_rows('DELETE FROM "LiteLLM_Lens" WHERE id=%s', (lens_id,)) + assert read_rows('SELECT id FROM "LiteLLM_Lens" WHERE id=%s', (lens_id,)) == [] @pytest.mark.parametrize("off_peak", (False, True)) @@ -37,12 +37,12 @@ def test_lens_bills_selected_key_and_rechecks_its_permissions(gateway: Gateway, key: Final = scenario.key(models=[model], max_budget=1) key_id: Final = sha256(key.encode()).hexdigest() worker: Final = gateway.post( - "/engine/workers/register", {"name": "Billing regression", "analysis_key_id": key_id} + "/lens/workers/register", {"name": "Billing regression", "analysis_key_id": key_id} ) worker_id: Final = string_value(object_value(worker["worker"])["id"]) - scenario.cleanups.callback(write_rows, 'DELETE FROM "LiteLLM_EngineWorker" WHERE id=%s', (worker_id,)) - engine: Final = gateway.post( - "/engine", + scenario.cleanups.callback(write_rows, 'DELETE FROM "LiteLLM_LensWorker" WHERE id=%s', (worker_id,)) + lens: Final = gateway.post( + "/lens", { "name": "Billing regression", "model": model, @@ -51,17 +51,17 @@ def test_lens_bills_selected_key_and_rechecks_its_permissions(gateway: Gateway, "source": "requests", }, ) - engine_id: Final = string_value(engine["id"]) - scenario.cleanups.callback(delete_lens, engine_id) + lens_id: Final = string_value(lens["id"]) + scenario.cleanups.callback(delete_lens, lens_id) worker_key: Final = string_value(worker["token"]) unauthorized: Final = gateway.request( - "POST", "/engine/workers/register", {"name": "Denied", "analysis_key_id": key_id}, key=key + "POST", "/lens/workers/register", {"name": "Denied", "analysis_key_id": key_id}, key=key ) assert unauthorized.status_code == 403, unauthorized.text with ThreadPoolExecutor(max_workers=8) as pool: claims: Final = tuple( pool.map( - lambda _: gateway.request("POST", "/engine/worker/claim?protocol_version=2", {}, key=worker_key), + lambda _: gateway.request("POST", "/lens/worker/claim?protocol_version=2", {}, key=worker_key), range(8), ) ) @@ -69,9 +69,9 @@ def test_lens_bills_selected_key_and_rechecks_its_permissions(gateway: Gateway, winners: Final = tuple(response.json() for response in claims if response.json() is not None) assert len(winners) == 1 claim: Final = object_value(winners[0]) - assert claim["engine_id"] == engine_id + assert claim["lens_id"] == lens_id job_id: Final = string_value(object_value(claim["job"])["id"]) - path: Final = f"/engine/worker/{engine_id}/{job_id}/model" + path: Final = f"/lens/worker/{lens_id}/{job_id}/model" result: Final = gateway.post(path, {"prompt": "Inspect this run", "purpose": "extract"}, key=worker_key) expected: Final = (20 * 0.000001 + 20 * 0.000002) * (0.5 if off_peak else 1) assert result["cost"] == pytest.approx(expected) @@ -81,7 +81,7 @@ def test_lens_bills_selected_key_and_rechecks_its_permissions(gateway: Gateway, seconds=70, ) assert rows[0]["spend"] == pytest.approx(expected) - assert gateway.get(f"/engine/{engine_id}")["spent"] == pytest.approx(expected) + assert gateway.get(f"/lens/{lens_id}")["spent"] == pytest.approx(expected) raw_hash: Final = gateway.request( "POST", "/v1/chat/completions", @@ -105,11 +105,11 @@ def test_lens_bills_selected_key_and_rechecks_its_permissions(gateway: Gateway, gateway.post("/key/block", {"key": key}) blocked: Final = gateway.request("POST", path, {"prompt": "Must not run", "purpose": "extract"}, key=worker_key) assert blocked.status_code == 400, blocked.text - assert gateway.get(f"/engine/{engine_id}")["spent"] == pytest.approx(expected) + assert gateway.get(f"/lens/{lens_id}")["spent"] == pytest.approx(expected) replacement: Final = scenario.key(models=[model], rpm_limit=1) replacement_id: Final = sha256(replacement.encode()).hexdigest() changed: Final = gateway.request( - "PUT", f"/engine/workers/{worker_id}/billing-key", {"analysis_key_id": replacement_id} + "PUT", f"/lens/workers/{worker_id}/billing-key", {"analysis_key_id": replacement_id} ) assert changed.status_code == 200, changed.text billed_replacement: Final = gateway.post( @@ -124,17 +124,17 @@ def test_lens_bills_selected_key_and_rechecks_its_permissions(gateway: Gateway, seconds=70, ) assert second_rows[0]["spend"] == pytest.approx(expected) - revoked: Final = gateway.request("DELETE", f"/engine/workers/{worker_id}") + revoked: Final = gateway.request("DELETE", f"/lens/workers/{worker_id}") assert revoked.status_code == 200, revoked.text denied_worker: Final = gateway.request( "POST", path, {"prompt": "Must not run", "purpose": "extract"}, key=worker_key ) assert denied_worker.status_code == 401, denied_worker.text forbidden_change: Final = gateway.request( - "PUT", f"/engine/workers/{worker_id}/billing-key", {"analysis_key_id": replacement_id} + "PUT", f"/lens/workers/{worker_id}/billing-key", {"analysis_key_id": replacement_id} ) assert forbidden_change.status_code == 409, forbidden_change.text - gateway.post(f"/engine/{engine_id}/cancel", {}) + gateway.post(f"/lens/{lens_id}/cancel", {}) @pytest.mark.parametrize("cancel_on_disconnect", (False, True)) @@ -174,19 +174,19 @@ def test_worker_spend_logs_do_not_expose_investigation_content( seconds=70, ) assert marker in str(retained[0]), "Control must prove this proxy retains ordinary prompts" - worker: Final = isolated.post("/engine/workers/register", {"analysis_key_id": key_id}) + worker: Final = isolated.post("/lens/workers/register", {"analysis_key_id": key_id}) worker_id: Final = string_value(object_value(worker["worker"])["id"]) - scenario.cleanups.callback(write_rows, 'DELETE FROM "LiteLLM_EngineWorker" WHERE id=%s', (worker_id,)) - engine: Final = isolated.post( - "/engine", {"name": "Log privacy", "model": model, "enabled": False, "context": "Find problems"} + scenario.cleanups.callback(write_rows, 'DELETE FROM "LiteLLM_LensWorker" WHERE id=%s', (worker_id,)) + lens: Final = isolated.post( + "/lens", {"name": "Log privacy", "model": model, "enabled": False, "context": "Find problems"} ) - engine_id: Final = string_value(engine["id"]) - scenario.cleanups.callback(delete_lens, engine_id) + lens_id: Final = string_value(lens["id"]) + scenario.cleanups.callback(delete_lens, lens_id) worker_token: Final = string_value(worker["token"]) - claim: Final = isolated.post("/engine/worker/claim?protocol_version=2", {}, key=worker_token) + claim: Final = isolated.post("/lens/worker/claim?protocol_version=2", {}, key=worker_token) job_id: Final = string_value(object_value(claim["job"])["id"]) result: Final = isolated.post( - f"/engine/worker/{engine_id}/{job_id}/model", {"prompt": marker, "purpose": "extract"}, key=worker_token + f"/lens/worker/{lens_id}/{job_id}/model", {"prompt": marker, "purpose": "extract"}, key=worker_token ) assert result["content"], "The worker must still receive model output" rows: Final = eventually( @@ -200,4 +200,4 @@ def test_worker_spend_logs_do_not_expose_investigation_content( assert float(rows[0]["spend"]) == pytest.approx(result["cost"]) assert marker not in str(rows[0]) assert result["content"] not in str(rows[0]["response"]) - isolated.post(f"/engine/{engine_id}/cancel", {}) + isolated.post(f"/lens/{lens_id}/cancel", {}) diff --git a/tests/proxy_behavior/lens/evaluate.py b/tests/proxy_behavior/lens/evaluate.py index 99c15203c85..b9b30bdfa53 100644 --- a/tests/proxy_behavior/lens/evaluate.py +++ b/tests/proxy_behavior/lens/evaluate.py @@ -13,13 +13,13 @@ from typing import Final import httpx from pydantic import BaseModel -from litellm.proxy.engine.analysis import analyze_sample -from litellm.proxy.engine.inference import _SYSTEM -from litellm.proxy.engine.models import ( +from litellm.proxy.lens.analysis import analyze_sample +from litellm.proxy.lens.inference import _SYSTEM +from litellm.proxy.lens.models import ( Check, Claim, Coverage, - EngineSettings, + LensSettings, Execution, ExecutionContent, Finding, @@ -90,7 +90,7 @@ async def evaluate( feedback: tuple[Finding, ...] = (), ) -> dict[str, object]: records: Final = MappingProxyType({case.name: fixtures(case) for case in cases}) - settings: Final = EngineSettings( + settings: Final = LensSettings( name="Quality evaluation", model=model_name, checks=checks, @@ -100,7 +100,7 @@ async def evaluate( ) now: Final = datetime.now(timezone.utc) claim: Final = Claim( - engine_id="evaluation", + lens_id="evaluation", findings=feedback, job=Job(id="evaluation", created_at=now, start=now, end=now, settings=settings, revision=1), ) diff --git a/tests/proxy_behavior/lens/test_lifecycle.py b/tests/proxy_behavior/lens/test_lifecycle.py index 8a9d3873a29..3196b68bd83 100644 --- a/tests/proxy_behavior/lens/test_lifecycle.py +++ b/tests/proxy_behavior/lens/test_lifecycle.py @@ -15,8 +15,8 @@ from litellm import Router from litellm.proxy import proxy_server from litellm.proxy._types import LitellmUserRoles, UserAPIKeyAuth from litellm.proxy.common_utils.user_api_key_cache import UserApiKeyCache -from litellm.proxy.engine import endpoints -from litellm.proxy.engine.models import Check, Coverage, EngineSettings, ModelRequest, Progress, Result, RunRequest +from litellm.proxy.lens import endpoints +from litellm.proxy.lens.models import Check, Coverage, LensSettings, ModelRequest, Progress, Result, RunRequest from litellm.proxy.utils import PrismaClient, ProxyLogging @@ -61,13 +61,13 @@ async def lens_database() -> AsyncIterator[PrismaClient]: @pytest.mark.asyncio async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: PrismaClient) -> None: admin: Final = UserAPIKeyAuth(user_role=LitellmUserRoles.PROXY_ADMIN) - settings: Final = EngineSettings( + settings: Final = LensSettings( name="Lifecycle regression", model="lens-test-analysis", enabled=False, checks=(Check(id="retries", instruction="Find unrecovered retries"),), ) - engine: Final = await endpoints.create_engine(settings, admin) + lens: Final = await endpoints.create_lens(settings, admin) key_id: Final = hashlib.sha256(uuid4().bytes).hexdigest() await lens_database.db.litellm_verificationtoken.create(data={"token": key_id, "models": ["lens-test-analysis"]}) registration: Final = await endpoints.register_worker( @@ -76,17 +76,17 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: credentials: Final = HTTPAuthorizationCredentials(scheme="Bearer", credentials=registration.token) worker: Final = await endpoints.worker_auth(credentials) try: - assert engine.jobs[0].status == "queued" + assert lens.jobs[0].status == "queued" stored_worker: Final = await endpoints.repository().worker( hashlib.sha256(registration.token.encode()).hexdigest() ) assert stored_worker is not None and stored_worker.id == worker.id assert worker.id == registration.worker.id - listing: Final = await endpoints.list_engines(admin) - assert engine.id in tuple(e.id for e in listing.engines) + listing: Final = await endpoints.list_lenses(admin) + assert lens.id in tuple(e.id for e in listing.lenses) assert worker.id in tuple(w.id for w in listing.workers) claims: Final = await asyncio.gather( - *(endpoints.claim_candidate(engine, worker, datetime.now(timezone.utc)) for _ in range(8)) + *(endpoints.claim_candidate(lens, worker, datetime.now(timezone.utc)) for _ in range(8)) ) winners: Final = tuple(claim for claim in claims if claim is not None) assert len(winners) == 1 @@ -94,16 +94,16 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: assert claimed.job.worker_id == worker.id assert ( await endpoints.claim_candidate( - await endpoints.get_engine(engine.id, worker.scope), worker, datetime.now(timezone.utc) + await endpoints.get_lens(lens.id, worker.scope), worker, datetime.now(timezone.utc) ) is None ) assert await endpoints.progress( - engine.id, claimed.job.id, Progress(stage="Reviewing", coverage=Coverage(screened=2)), worker + lens.id, claimed.job.id, Progress(stage="Reviewing", coverage=Coverage(screened=2)), worker ) - assert await endpoints.heartbeat(engine.id, claimed.job.id, worker) + assert await endpoints.heartbeat(lens.id, claimed.job.id, worker) response: Final = await endpoints.model( - engine.id, + lens.id, claimed.job.id, ModelRequest(prompt="Return an empty observations list", purpose="extract"), worker, @@ -111,7 +111,7 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: { "type": "http", "scheme": "http", - "path": "/engine/worker/model", + "path": "/lens/worker/model", "headers": [], "client": ("127.0.0.1", 1234), } @@ -120,7 +120,7 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: assert '"observations"' in response.content with pytest.raises(HTTPException) as denied_ip: await endpoints.model( - engine.id, + lens.id, claimed.job.id, ModelRequest(prompt="Must not run", purpose="extract"), worker, @@ -128,7 +128,7 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: { "type": "http", "scheme": "http", - "path": "/engine/worker/model", + "path": "/lens/worker/model", "headers": [(b"x-forwarded-for", b"127.0.0.1")], "client": ("192.0.2.1", 1234), } @@ -136,7 +136,7 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: ) assert denied_ip.value.status_code == 403 forwarded: Final = await endpoints.model( - engine.id, + lens.id, claimed.job.id, ModelRequest(prompt="Return an empty observations list", purpose="extract"), worker, @@ -144,7 +144,7 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: { "type": "http", "scheme": "http", - "path": "/engine/worker/model", + "path": "/lens/worker/model", "headers": [(b"x-forwarded-for", b"127.0.0.1")], "client": ("192.0.2.100", 1234), } @@ -153,7 +153,7 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: assert '"observations"' in forwarded.content with pytest.raises(HTTPException) as spoofed_chain: await endpoints.model( - engine.id, + lens.id, claimed.job.id, ModelRequest(prompt="Must not run", purpose="extract"), worker, @@ -161,14 +161,14 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: { "type": "http", "scheme": "http", - "path": "/engine/worker/model", + "path": "/lens/worker/model", "headers": [(b"x-forwarded-for", b"127.0.0.1, 192.0.2.1")], "client": ("192.0.2.100", 1234), } ), ) assert spoofed_chain.value.status_code == 403 - charged: Final = await endpoints.get_engine(engine.id, worker.scope) + charged: Final = await endpoints.get_lens(lens.id, worker.scope) assert charged.spent == pytest.approx(response.cost + forwarded.cost) assert charged.jobs[0].cost == pytest.approx(response.cost + forwarded.cost) legacy: Final = worker.model_copy(update={"analysis_key_id": None}) @@ -178,37 +178,37 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: with pytest.raises(HTTPException) as needs_billing: await endpoints.claim(authenticated_legacy, protocol_version=2) assert needs_billing.value.status_code == 409 - assert await endpoints.heartbeat(engine.id, claimed.job.id, authenticated_legacy) + assert await endpoints.heartbeat(lens.id, claimed.job.id, authenticated_legacy) finished: Final = await endpoints.result( - engine.id, claimed.job.id, Result(coverage=Coverage(screened=2)), authenticated_legacy + lens.id, claimed.job.id, Result(coverage=Coverage(screened=2)), authenticated_legacy ) assert finished.jobs[0].status == "completed" assert finished.jobs[0].coverage.screened == 2 assert finished.last_scan_at == claimed.job.end assert finished.next_run_at > finished.jobs[0].finished_at - assert await endpoints.result(engine.id, claimed.job.id, Result(coverage=Coverage()), worker) == finished + assert await endpoints.result(lens.id, claimed.job.id, Result(coverage=Coverage()), worker) == finished with pytest.raises(HTTPException) as stale: - await endpoints.heartbeat(engine.id, claimed.job.id, worker) + await endpoints.heartbeat(lens.id, claimed.job.id, worker) assert stale.value.status_code == 409 - edited: Final = await endpoints.update_engine( - engine.id, settings.model_copy(update={"interval_minutes": 7}), admin + edited: Final = await endpoints.update_lens( + lens.id, settings.model_copy(update={"interval_minutes": 7}), admin ) - assert edited.revision == engine.revision + 1 - rerun: Final = await endpoints.run_engine(engine.id, RunRequest(lookback_hours=3), admin) + assert edited.revision == lens.revision + 1 + rerun: Final = await endpoints.run_lens(lens.id, RunRequest(lookback_hours=3), admin) assert rerun.jobs[0].settings.interval_minutes == 7 assert rerun.jobs[0].created_at - rerun.jobs[0].start == timedelta(hours=3) - history: Final = await endpoints.list_runs(engine.id, admin, offset=0) + history: Final = await endpoints.list_runs(lens.id, admin, offset=0) assert {job.id for job in history} == {claimed.job.id, rerun.jobs[0].id} - archived: Final = await endpoints.read_run(engine.id, claimed.job.id, admin) + archived: Final = await endpoints.read_run(lens.id, claimed.job.id, admin) assert archived == finished.jobs[0] assert archived.settings.interval_minutes == 15 assert archived.findings == () with pytest.raises(HTTPException) as foreign_history: - await endpoints.read_run(engine.id, claimed.job.id, UserAPIKeyAuth(team_id="other")) + await endpoints.read_run(lens.id, claimed.job.id, UserAPIKeyAuth(team_id="other")) assert foreign_history.value.status_code == 403 - cancelled: Final = await endpoints.cancel_engine(engine.id, admin) + cancelled: Final = await endpoints.cancel_lens(lens.id, admin) assert cancelled.jobs[0].status == "cancelled" - assert await endpoints.cancel_engine(engine.id, admin) == cancelled + assert await endpoints.cancel_lens(lens.id, admin) == cancelled assert await endpoints.revoke_worker(worker.id, admin) assert await endpoints.repository().set_worker_billing(worker.id, key_id) is None with pytest.raises(HTTPException) as revoked_billing: @@ -218,10 +218,10 @@ async def test_scan_lifecycle_persists_results_and_revokes_worker(lens_database: await endpoints.worker_auth(credentials) assert revoked.value.status_code == 401 with pytest.raises(HTTPException) as foreign: - await endpoints.get_engine(engine.id, endpoints.Scope(team_id="other")) + await endpoints.get_lens(lens.id, endpoints.Scope(team_id="other")) assert foreign.value.status_code == 404 finally: - await lens_database.db.execute_raw('DELETE FROM "LiteLLM_EngineRun" WHERE engine_id=$1', engine.id) - await lens_database.db.execute_raw('DELETE FROM "LiteLLM_Engine" WHERE id=$1', engine.id) - await lens_database.db.execute_raw('DELETE FROM "LiteLLM_EngineWorker" WHERE id=$1', worker.id) + await lens_database.db.execute_raw('DELETE FROM "LiteLLM_LensRun" WHERE lens_id=$1', lens.id) + await lens_database.db.execute_raw('DELETE FROM "LiteLLM_Lens" WHERE id=$1', lens.id) + await lens_database.db.execute_raw('DELETE FROM "LiteLLM_LensWorker" WHERE id=$1', worker.id) await lens_database.db.execute_raw('DELETE FROM "LiteLLM_VerificationToken" WHERE token=$1', key_id) diff --git a/tests/proxy_behavior/lens/worker_storage_smoke.py b/tests/proxy_behavior/lens/worker_storage_smoke.py index 8c80915f978..dca5b928321 100644 --- a/tests/proxy_behavior/lens/worker_storage_smoke.py +++ b/tests/proxy_behavior/lens/worker_storage_smoke.py @@ -6,9 +6,9 @@ from queue import SimpleQueue from typing import Final import httpx -from engine.models import ( +from lens.models import ( Claim, - EngineSettings, + LensSettings, Execution, ExecutionContent, Job, @@ -17,7 +17,7 @@ from engine.models import ( Sample, TracePart, ) -from engine.worker import EngineWorker +from lens.worker import LensWorker async def main() -> None: @@ -25,7 +25,7 @@ async def main() -> None: claims: Final = iter(("full", "healthy")) saved: Final = SimpleQueue[Result]() pages: Final = SimpleQueue[str]() - settings: Final = EngineSettings(name="Storage recovery", model="unused", context="Finish the task", concurrency=1) + settings: Final = LensSettings(name="Storage recovery", model="unused", context="Finish the task", concurrency=1) execution: Final = Execution( id="run", source="traces", trace_id="trace", team_id="", name="Task", start_time="", span_count=10000 ) @@ -34,7 +34,7 @@ async def main() -> None: path: Final = request.url.path if path.endswith("/claim"): claim: Final = Claim( - engine_id="lens", + lens_id="lens", job=Job(id=next(claims), created_at=now, start=now, end=now, settings=settings, revision=1), findings=(), ) @@ -71,7 +71,7 @@ async def main() -> None: return httpx.Response(200, json=True) async with httpx.AsyncClient(base_url="https://proxy.test", transport=httpx.MockTransport(handle)) as client: - worker: Final = EngineWorker(client) + worker: Final = LensWorker(client) assert await worker.run_once() failed: Final = saved.get_nowait() assert failed.error.startswith("Worker temporary storage failed.") diff --git a/tests/unit/proxy/engine/__init__.py b/tests/unit/proxy/lens/__init__.py similarity index 100% rename from tests/unit/proxy/engine/__init__.py rename to tests/unit/proxy/lens/__init__.py diff --git a/tests/unit/proxy/engine/test_analysis.py b/tests/unit/proxy/lens/test_analysis.py similarity index 91% rename from tests/unit/proxy/engine/test_analysis.py rename to tests/unit/proxy/lens/test_analysis.py index bc688d37f99..97b0c5ab022 100644 --- a/tests/unit/proxy/engine/test_analysis.py +++ b/tests/unit/proxy/lens/test_analysis.py @@ -6,8 +6,8 @@ from typing import Final import pytest -from litellm.proxy.engine.analysis import Candidate, Examined, evidence_valid, extract, investigate, partition_content -from litellm.proxy.engine.models import ( +from litellm.proxy.lens.analysis import Candidate, Examined, evidence_valid, extract, investigate, partition_content +from litellm.proxy.lens.models import ( Claim, Coverage, Evidence, @@ -18,14 +18,14 @@ from litellm.proxy.engine.models import ( Sample, TracePart, ) -from litellm.proxy.engine.state import queue_job -from tests.unit.proxy.engine.test_state import NOW, engine, finding +from litellm.proxy.lens.state import queue_job +from tests.unit.proxy.lens.test_state import NOW, lens, finding @pytest.mark.asyncio @pytest.mark.parametrize("outcome", ("complete", "cancel", "failure")) async def test_parallel_review_shares_one_model_limit_and_cleans_up(outcome: str) -> None: - from litellm.proxy.engine.analysis import ANALYSIS_CONCURRENCY, analyze_sample + from litellm.proxy.lens.analysis import ANALYSIS_CONCURRENCY, analyze_sample executions: Final = tuple( Execution(id=str(i), source="traces", trace_id=str(i), team_id="alpha", name="run", start_time="", span_count=6) @@ -70,7 +70,7 @@ async def test_parallel_review_shares_one_model_limit_and_cleans_up(outcome: str if stage == "Reading executions": counts.put(coverage.screened) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) task: Final = asyncio.create_task( analyze_sample(claim, Sample(executions=executions, eligible=len(executions)), read, model, progress) ) @@ -101,7 +101,7 @@ async def test_parallel_review_shares_one_model_limit_and_cleans_up(outcome: str @pytest.mark.asyncio async def test_independent_investigations_overlap_and_report_completions() -> None: - from litellm.proxy.engine.analysis import investigate_candidates + from litellm.proxy.lens.analysis import investigate_candidates arrived: Final = SimpleQueue[str]() progress_counts: Final = SimpleQueue[int]() @@ -124,7 +124,7 @@ async def test_independent_investigations_overlap_and_report_completions() -> No candidates: Final = tuple( Candidate(check_id="retries", title=str(i), hypothesis="Investigate", execution_ids=()) for i in range(2) ) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) results: Final = tuple( [ result @@ -185,7 +185,7 @@ async def test_reviewer_sees_final_outcome_and_catalog_across_pages() -> None: assert pages.qsize() == 2 return ModelResult(content='{"observations":[],"cannot_assess":false}', cost=0) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await extract(claim, execution, read, model) assert root in result.parts assert not result.cannot_assess @@ -193,7 +193,7 @@ async def test_reviewer_sees_final_outcome_and_catalog_across_pages() -> None: @pytest.mark.asyncio async def test_reviewer_fetches_targeted_evidence_and_rejects_outside_catalog_reads() -> None: - from litellm.proxy.engine.analysis import Observation, SpanRead, TraceReview + from litellm.proxy.lens.analysis import Observation, SpanRead, TraceReview execution: Final = Execution( id="run", source="traces", trace_id="t", team_id="", name="run", start_time="", span_count=2 @@ -246,7 +246,7 @@ async def test_reviewer_fetches_targeted_evidence_and_rejects_outside_catalog_re cost=0, ) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await extract(claim, execution, read, model) assert len(result.observations) == 1 assert result.observations[0].evidence[0].quote == "Verified result: failed" @@ -255,7 +255,7 @@ async def test_reviewer_fetches_targeted_evidence_and_rejects_outside_catalog_re @pytest.mark.asyncio async def test_reviewer_stops_repeated_read_requests() -> None: - from litellm.proxy.engine.analysis import SpanRead, TraceReview + from litellm.proxy.lens.analysis import SpanRead, TraceReview execution: Final = Execution( id="run", source="traces", trace_id="t", team_id="", name="run", start_time="", span_count=1 @@ -276,7 +276,7 @@ async def test_reviewer_stops_repeated_read_requests() -> None: content=TraceReview(reads=(SpanRead(span_id="01"),), cannot_assess=True).model_dump_json(), cost=0 ) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await extract(claim, execution, read, model) assert result.cannot_assess assert reads.qsize() == 2 @@ -311,7 +311,7 @@ async def test_investigator_rejects_a_fabricated_quote() -> None: async def read(_execution_id: str, _cursor: str, _offset: int) -> ExecutionContent: return ExecutionContent(execution=execution, parts=examined.parts) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await investigate( claim, Candidate(check_id="retries", title="Retries", hypothesis="Unrecovered", execution_ids=("run1",)), @@ -353,7 +353,7 @@ async def test_assessable_content_is_not_overridden_by_unknown_chunks(paginated: unavailable: Final = "false" if "verified result" in request.prompt else "true" return ModelResult(content='{"observations":[],"cannot_assess":' + unavailable + "}", cost=0) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await extract(claim, execution, read, model) assert result.cannot_assess is not assessable @@ -382,7 +382,7 @@ async def test_investigator_keeps_final_outcome_ahead_of_repeated_model_history( async def read(_execution_id: str, _cursor: str, _offset: int) -> ExecutionContent: return ExecutionContent(execution=execution, parts=examined.parts) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await investigate( claim, Candidate(check_id="retries", title="Retries", hypothesis="Unrecovered", execution_ids=("run1",)), @@ -425,7 +425,7 @@ async def test_oversized_model_evidence_is_retried_and_quotes_still_verified( cost=0, ) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await extract(claim, execution, read, model) assert len(result.observations) == int(accepted) assert result.cannot_assess is not accepted @@ -436,7 +436,7 @@ async def test_oversized_model_evidence_is_retried_and_quotes_still_verified( async def test_invalid_model_output_has_only_one_repair_attempt() -> None: from pydantic import ValidationError - from litellm.proxy.engine.analysis import Extraction, structured_response + from litellm.proxy.lens.analysis import Extraction, structured_response attempts: Final = iter((1, 2)) @@ -451,8 +451,8 @@ async def test_invalid_model_output_has_only_one_repair_attempt() -> None: @pytest.mark.asyncio async def test_grouping_consolidates_prior_batches_and_reports_real_progress() -> None: - from litellm.proxy.engine.analysis import Clusters, Observation, cluster_batches - from litellm.proxy.engine.models import Coverage + from litellm.proxy.lens.analysis import Clusters, Observation, cluster_batches + from litellm.proxy.lens.models import Coverage candidate: Final = Candidate( check_id="retries", title="Outage", hypothesis="Tool unavailable", execution_ids=("run1",) @@ -517,7 +517,7 @@ async def test_investigator_can_cite_a_later_page_or_offset(later_span: str) -> assert execution_id == "run1" and offset == 8000 return ExecutionContent(execution=execution, parts=(later,)) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await investigate( claim, Candidate(check_id="retries", title="Retries", hypothesis="Unrecovered", execution_ids=("run1",)), @@ -530,7 +530,7 @@ async def test_investigator_can_cite_a_later_page_or_offset(later_span: str) -> @pytest.mark.asyncio async def test_thousands_of_matching_runs_keep_all_members_without_a_growing_model_prompt() -> None: - from litellm.proxy.engine.analysis import Clusters, Observation, cluster_batches, observation_batches + from litellm.proxy.lens.analysis import Clusters, Observation, cluster_batches, observation_batches observations: Final = tuple( Observation( @@ -571,7 +571,7 @@ async def test_thousands_of_matching_runs_keep_all_members_without_a_growing_mod @pytest.mark.asyncio async def test_grouping_preserves_observations_omitted_by_model() -> None: - from litellm.proxy.engine.analysis import merge_candidates + from litellm.proxy.lens.analysis import merge_candidates original: Final = Candidate( check_id="retries", title="Unrecovered failure", hypothesis="Timeout", execution_ids=("run",) @@ -587,7 +587,7 @@ async def test_grouping_preserves_observations_omitted_by_model() -> None: @pytest.mark.asyncio async def test_grouping_repairs_duplicate_members_before_creating_findings() -> None: - from litellm.proxy.engine.analysis import Clusters, merge_candidates + from litellm.proxy.lens.analysis import Clusters, merge_candidates original: Final = Candidate( check_id="retries", title="Unrecovered failure", hypothesis="Timeout", execution_ids=("run",) @@ -609,7 +609,7 @@ async def test_grouping_repairs_duplicate_members_before_creating_findings() -> @pytest.mark.asyncio async def test_review_keeps_original_ids_in_per_run_assessments() -> None: - from litellm.proxy.engine.analysis import analyze_sample + from litellm.proxy.lens.analysis import analyze_sample execution: Final = Execution( id="opaque-original-id", @@ -636,7 +636,7 @@ async def test_review_keeps_original_ids_in_per_run_assessments() -> None: async def progress(_stage: str, _coverage: Coverage) -> None: pass - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await analyze_sample(claim, Sample(executions=(execution,), eligible=1), read, model, progress) assert result.assessments[0].execution_id == execution.id assert not result.assessments[0].cannot_assess @@ -678,7 +678,7 @@ async def test_investigation_context_accounts_for_metadata_on_thousands_of_short async def read(_identity: str, _cursor: str, _offset: int) -> ExecutionContent: pytest.fail("No read was requested") - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await investigate( claim, Candidate( @@ -696,7 +696,7 @@ async def test_investigation_context_accounts_for_metadata_on_thousands_of_short @pytest.mark.asyncio async def test_completed_read_does_not_make_supported_review_unknown() -> None: - from litellm.proxy.engine.analysis import Observation, SpanRead, TraceReview + from litellm.proxy.lens.analysis import Observation, SpanRead, TraceReview execution: Final = Execution( id="run", source="traces", trace_id="t", team_id="", name="task", start_time="", span_count=1 @@ -720,7 +720,7 @@ async def test_completed_read_does_not_make_supported_review_unknown() -> None: content=TraceReview(reads=(SpanRead(span_id="s"),), observations=(observation,)).model_dump_json(), cost=0 ) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await extract(claim, execution, read, model) assert result.observations == (observation,) assert not result.cannot_assess and not result.partial @@ -770,7 +770,7 @@ async def test_echoed_feedback_page_does_not_skip_requested_evidence() -> None: cost=0, ) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await extract(claim, execution, read, model) assert tuple(requests.get_nowait() for _ in range(requests.qsize())) == (0, 1) assert len(result.observations) == 1 @@ -797,7 +797,7 @@ async def test_empty_navigation_requires_a_final_decision(action: str) -> None: return ModelResult(content='{"action":"inconclusive"}', cost=0) return ModelResult(content=json.dumps({"action": action, "page": 999, "execution_id": "run"}), cost=0) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) result: Final = await investigate( claim, Candidate(check_id="retries", title="Timeout", hypothesis="Failed", execution_ids=("run",)), @@ -812,20 +812,20 @@ async def test_empty_navigation_requires_a_final_decision(action: str) -> None: @pytest.mark.asyncio @pytest.mark.parametrize("phase", ("extract", "investigate")) async def test_large_feedback_history_is_accessible_without_overflowing_context(phase: str) -> None: - from litellm.proxy.engine.state import merge_finding + from litellm.proxy.lens.state import merge_finding execution: Final = Execution( id="run", source="traces", trace_id="t", team_id="", name="task", start_time="", span_count=1 ) part: Final = TracePart(execution_id="run", span_id="span", name="task", kind="agent", content="timeout") - accepted: Final = merge_finding(engine(), finding("run"), 1, NOW) + accepted: Final = merge_finding(lens(), finding("run"), 1, NOW) prior: Final = tuple( accepted.model_copy( update=MappingProxyType({"id": str(i), "status": "dismissed", "reason": f"Accepted-{i}: " + "x" * 1900}) ) for i in range(60) ) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=prior) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=prior) pages: Final = SimpleQueue[int]() async def read(_identity: str, _cursor: str, _offset: int) -> ExecutionContent: @@ -865,7 +865,7 @@ async def test_large_feedback_history_is_accessible_without_overflowing_context( @pytest.mark.asyncio async def test_final_registry_reconciles_patterns_split_across_pages() -> None: - from litellm.proxy.engine.analysis import Clusters, Observation, cluster_batches + from litellm.proxy.lens.analysis import Clusters, Observation, cluster_batches observations: Final = tuple( Observation( @@ -902,7 +902,7 @@ async def test_final_registry_reconciles_patterns_split_across_pages() -> None: @pytest.mark.asyncio async def test_distinct_patterns_are_consolidated_in_batches_without_losing_runs() -> None: - from litellm.proxy.engine.analysis import Observation, cluster_batches, observation_batches + from litellm.proxy.lens.analysis import Observation, cluster_batches, observation_batches observations: Final = tuple( Observation( @@ -930,7 +930,7 @@ async def test_distinct_patterns_are_consolidated_in_batches_without_losing_runs @pytest.mark.asyncio async def test_invalid_candidate_response_preserves_other_findings_and_reports_inconclusive() -> None: - from litellm.proxy.engine.analysis import investigate_candidates + from litellm.proxy.lens.analysis import investigate_candidates execution: Final = Execution( id="run", source="traces", trace_id="t", team_id="", name="task", start_time="", span_count=1 @@ -954,7 +954,7 @@ async def test_invalid_candidate_response_preserves_other_findings_and_reports_i async def progress(_stage: str, coverage: Coverage) -> None: counts.put(coverage.inconclusive) - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) results: Final = tuple( [ result diff --git a/tests/unit/proxy/engine/test_endpoints.py b/tests/unit/proxy/lens/test_endpoints.py similarity index 83% rename from tests/unit/proxy/engine/test_endpoints.py rename to tests/unit/proxy/lens/test_endpoints.py index e8d0095754f..97bb7759a02 100644 --- a/tests/unit/proxy/engine/test_endpoints.py +++ b/tests/unit/proxy/lens/test_endpoints.py @@ -4,7 +4,7 @@ import pytest from fastapi import HTTPException from litellm.proxy._types import LitellmUserRoles, UserAPIKeyAuth -from litellm.proxy.engine.endpoints import user_scope +from litellm.proxy.lens.endpoints import user_scope @pytest.mark.parametrize( @@ -27,10 +27,10 @@ def test_admin_can_configure_lens_and_viewer_can_only_read() -> None: @pytest.mark.parametrize("identity", ("not-an-execution", "W10=", "WyJvdGhlciIsICIiLCAiaWQiXQ==")) def test_invalid_explicit_execution_ids_are_rejected(identity: str) -> None: - from litellm.proxy.engine.endpoints import validate_selection - from tests.unit.proxy.engine.test_state import engine + from litellm.proxy.lens.endpoints import validate_selection + from tests.unit.proxy.lens.test_state import lens - settings: Final = engine().settings.model_copy(update={"execution_ids": (identity,)}) + settings: Final = lens().settings.model_copy(update={"execution_ids": (identity,)}) with pytest.raises(HTTPException) as error: validate_selection(settings) assert error.value.status_code == 422 @@ -38,8 +38,8 @@ def test_invalid_explicit_execution_ids_are_rejected(identity: str) -> None: @pytest.mark.asyncio async def test_incompatible_worker_is_rejected_before_claiming_work() -> None: - from litellm.proxy.engine.endpoints import claim - from tests.unit.proxy.engine.test_state import worker + from litellm.proxy.lens.endpoints import claim + from tests.unit.proxy.lens.test_state import worker with pytest.raises(HTTPException) as error: await claim(worker(), protocol_version=1) diff --git a/tests/unit/proxy/engine/test_inference.py b/tests/unit/proxy/lens/test_inference.py similarity index 58% rename from tests/unit/proxy/engine/test_inference.py rename to tests/unit/proxy/lens/test_inference.py index 90efa5cdf0f..2243759b773 100644 --- a/tests/unit/proxy/engine/test_inference.py +++ b/tests/unit/proxy/lens/test_inference.py @@ -2,18 +2,18 @@ from typing import Final import pytest -from litellm.proxy.engine.inference import Deployment, DeploymentParams, completion_charge, quote +from litellm.proxy.lens.inference import Deployment, DeploymentParams, completion_charge, quote from litellm.types.utils import ModelResponse def test_custom_priced_model_charges_reported_tokens() -> None: deployment: Final = Deployment( litellm_params=DeploymentParams( - model="openai/engine-test", input_cost_per_token=0.001, output_cost_per_token=0.002 + model="openai/lens-test", input_cost_per_token=0.001, output_cost_per_token=0.002 ) ) response: Final = ModelResponse( - model="engine-test", usage={"prompt_tokens": 20, "completion_tokens": 10, "total_tokens": 30} + model="lens-test", usage={"prompt_tokens": 20, "completion_tokens": 10, "total_tokens": 30} ) assert completion_charge((deployment,), response, 10) == pytest.approx(0.04) assert quote((deployment,), "hello") > 0.04 diff --git a/tests/unit/proxy/engine/test_sources.py b/tests/unit/proxy/lens/test_sources.py similarity index 87% rename from tests/unit/proxy/engine/test_sources.py rename to tests/unit/proxy/lens/test_sources.py index 7ec46922f21..5dc6e2652f0 100644 --- a/tests/unit/proxy/engine/test_sources.py +++ b/tests/unit/proxy/lens/test_sources.py @@ -4,11 +4,11 @@ from typing import Final import pytest -from litellm.proxy.engine.models import Scope, MetadataFilter -from litellm.proxy.engine.sources import SourceReader -from tests.unit.proxy.engine.test_state import engine +from litellm.proxy.lens.models import Scope, MetadataFilter +from litellm.proxy.lens.sources import SourceReader +from tests.unit.proxy.lens.test_state import lens -from litellm.proxy.engine.sources import execution_id, parse_execution +from litellm.proxy.lens.sources import execution_id, parse_execution def test_same_trace_id_from_different_keys_is_a_distinct_execution() -> None: @@ -57,7 +57,7 @@ async def test_sample_never_returns_authentication_attributes() -> None: ] reader: Final = SourceReader(StorageResponse()) - sample: Final = await reader.sample(Scope(team_id="alpha"), engine().settings, 1, 2) + sample: Final = await reader.sample(Scope(team_id="alpha"), lens().settings, 1, 2) assert sample.executions[0].metadata == (MetadataFilter(key="environment", value="production"),) assert "opaque-oauth-bearer" not in sample.model_dump_json() assert sample.eligible == 1 diff --git a/tests/unit/proxy/engine/test_state.py b/tests/unit/proxy/lens/test_state.py similarity index 87% rename from tests/unit/proxy/engine/test_state.py rename to tests/unit/proxy/lens/test_state.py index 8d56f4595da..ac70a22077e 100644 --- a/tests/unit/proxy/engine/test_state.py +++ b/tests/unit/proxy/lens/test_state.py @@ -3,17 +3,17 @@ from typing import Final import pytest -from litellm.proxy.engine.models import Check, Engine, EngineSettings, Evidence, FindingDraft, Scope, Worker -from litellm.proxy.engine.state import can_access, claim_job, current_job, merge_finding, queue_job, renew_budget +from litellm.proxy.lens.models import Check, Lens, LensSettings, Evidence, FindingDraft, Scope, Worker +from litellm.proxy.lens.state import can_access, claim_job, current_job, merge_finding, queue_job, renew_budget NOW: Final = datetime(2026, 1, 15, tzinfo=timezone.utc) -def engine() -> Engine: - return Engine( - id="engine", +def lens() -> Lens: + return Lens( + id="lens", scope=Scope(team_id="alpha"), - settings=EngineSettings( + settings=LensSettings( name="Research", model="analysis", checks=(Check(id="retries", instruction="Find unrecovered retries"),) ), created_at=NOW, @@ -50,7 +50,7 @@ def test_scope_never_crosses_another_team_or_key(viewer: Scope, target: Scope, a def test_queue_is_idempotent_and_settings_are_frozen() -> None: - original: Final = engine() + original: Final = lens() queued: Final = queue_job(original, NOW, "job") edited: Final = queued.model_copy( update={"settings": original.settings.model_copy(update={"model": "replacement"})} @@ -65,7 +65,7 @@ def test_queue_is_idempotent_and_settings_are_frozen() -> None: def test_one_off_overrides_do_not_change_saved_monitoring_settings() -> None: - original: Final = engine() + original: Final = lens() override: Final = original.settings.model_copy( update={"sample_percent": 10, "sample_size": None, "concurrency": 3, "lookback_hours": 72} ) @@ -79,7 +79,7 @@ def test_one_off_overrides_do_not_change_saved_monitoring_settings() -> None: def test_behavior_description_is_sufficient_without_separate_checks() -> None: - settings: Final = EngineSettings(name="Behavior", model="analysis", context="Answer using cited sources") + settings: Final = LensSettings(name="Behavior", model="analysis", context="Answer using cited sources") assert tuple(c.id for c in settings.analysis_checks) == ("expected_behavior",) assert settings.sample_size is None assert settings.sample_percent == 100 @@ -92,11 +92,11 @@ def test_invalid_selection_and_parallelism_are_rejected(field: str, value: int) from pydantic import ValidationError with pytest.raises(ValidationError): - EngineSettings.model_validate({**engine().settings.model_dump(), field: value}) + LensSettings.model_validate({**lens().settings.model_dump(), field: value}) def test_lease_prevents_double_claim_and_expires_with_bounded_retries() -> None: - queued: Final = queue_job(engine(), NOW, "job") + queued: Final = queue_job(lens(), NOW, "job") first: Final = claim_job(queued, worker(), NOW) assert claim_job(first, worker(identity="second"), NOW) is first assert claim_job(first, worker(team="beta"), NOW + timedelta(minutes=6)) is first @@ -110,9 +110,9 @@ def test_lease_prevents_double_claim_and_expires_with_bounded_retries() -> None: def test_replaying_evidence_does_not_reopen_but_new_occurrence_does() -> None: - from litellm.proxy.engine.state import snapshot_finding + from litellm.proxy.lens.state import snapshot_finding - original: Final = engine() + original: Final = lens() resolved: Final = merge_finding(original, finding("run1"), 1, NOW).model_copy(update={"status": "resolved"}) reviewed: Final = original.model_copy(update={"findings": (resolved,)}) assert merge_finding(reviewed, finding("run1"), 1, NOW).status == "resolved" @@ -138,7 +138,7 @@ def test_replaying_evidence_does_not_reopen_but_new_occurrence_does() -> None: def test_monthly_budget_renews_without_erasing_job_costs() -> None: - spent: Final = queue_job(engine(), NOW, "job").model_copy(update={"spent": 12}) + spent: Final = queue_job(lens(), NOW, "job").model_copy(update={"spent": 12}) renewed: Final = renew_budget(spent, datetime(2026, 2, 1, tzinfo=timezone.utc)) assert renewed.spent == 0 assert renewed.jobs == spent.jobs @@ -147,7 +147,7 @@ def test_monthly_budget_renews_without_erasing_job_costs() -> None: @pytest.mark.parametrize("hours", (24, 168, 720)) def test_every_scan_uses_the_configured_lookback_window(hours: int) -> None: - original: Final = engine() + original: Final = lens() configured: Final = original.model_copy( update={"settings": original.settings.model_copy(update={"lookback_hours": hours})} ) @@ -159,15 +159,15 @@ def test_every_scan_uses_the_configured_lookback_window(hours: int) -> None: def test_finding_keeps_uncertainty_separate_from_the_main_summary() -> None: draft: Final = finding("run1").model_copy(update={"limitation": "The final response was not recorded."}) - saved: Final = merge_finding(engine(), draft, 1, NOW) + saved: Final = merge_finding(lens(), draft, 1, NOW) assert saved.limitation == draft.limitation assert saved.description == draft.description @pytest.mark.parametrize("interval", (1, 2, 37, 90, 10080)) def test_custom_schedule_does_not_overlap_an_active_scan(interval: int) -> None: - original: Final = engine() - settings: Final = EngineSettings.model_validate({**original.settings.model_dump(), "interval_minutes": interval}) + original: Final = lens() + settings: Final = LensSettings.model_validate({**original.settings.model_dump(), "interval_minutes": interval}) configured: Final = original.model_copy(update={"settings": settings}) running: Final = claim_job(queue_job(configured, NOW, "first"), worker(), NOW) assert queue_job(running, NOW + timedelta(minutes=interval), "second") is running @@ -178,13 +178,13 @@ def test_invalid_schedule_is_rejected(interval: float) -> None: from pydantic import ValidationError with pytest.raises(ValidationError): - EngineSettings.model_validate({**engine().settings.model_dump(), "interval_minutes": interval}) + LensSettings.model_validate({**lens().settings.model_dump(), "interval_minutes": interval}) def test_batch_snapshot_keeps_feedback_identity_and_only_current_evidence() -> None: - from litellm.proxy.engine.state import snapshot_finding + from litellm.proxy.lens.state import snapshot_finding - original: Final = engine() + original: Final = lens() dismissed: Final = merge_finding(original, finding("old-run"), 1, NOW).model_copy( update={"status": "dismissed", "reason": "Expected recovery"} ) @@ -204,9 +204,9 @@ def test_batch_snapshot_keeps_feedback_identity_and_only_current_evidence() -> N @pytest.mark.parametrize("explicit_reference", (False, True)) def test_issue_and_pattern_with_same_title_keep_independent_feedback(explicit_reference: bool) -> None: - from litellm.proxy.engine.state import snapshot_finding + from litellm.proxy.lens.state import snapshot_finding - original: Final = engine() + original: Final = lens() issue: Final = merge_finding(original, finding("old"), 1, NOW).model_copy( update={"status": "dismissed", "reason": "Expected retry"} ) @@ -228,7 +228,7 @@ def test_issue_and_pattern_with_same_title_keep_independent_feedback(explicit_re def test_legacy_finding_identity_preserves_feedback_only_for_same_kind_and_check() -> None: import hashlib - original: Final = engine() + original: Final = lens() draft: Final = finding("old") legacy_id: Final = hashlib.sha256(f"{original.id}:{draft.check_id}:{draft.title.lower()}".encode()).hexdigest()[:24] legacy: Final = merge_finding(original, draft, 1, NOW).model_copy( diff --git a/tests/unit/proxy/engine/test_trace_store.py b/tests/unit/proxy/lens/test_trace_store.py similarity index 93% rename from tests/unit/proxy/engine/test_trace_store.py rename to tests/unit/proxy/lens/test_trace_store.py index f80d4348864..03667c81d3a 100644 --- a/tests/unit/proxy/engine/test_trace_store.py +++ b/tests/unit/proxy/lens/test_trace_store.py @@ -1,8 +1,8 @@ import json from typing import Final -from litellm.proxy.engine.models import Evidence, TracePart -from litellm.proxy.engine.trace_store import trace_store +from litellm.proxy.lens.models import Evidence, TracePart +from litellm.proxy.lens.trace_store import trace_store def test_trace_store_pages_large_payloads_and_recovers_exact_evidence() -> None: diff --git a/tests/unit/proxy/engine/test_worker.py b/tests/unit/proxy/lens/test_worker.py similarity index 83% rename from tests/unit/proxy/engine/test_worker.py rename to tests/unit/proxy/lens/test_worker.py index e244eff08ec..a0212e03319 100644 --- a/tests/unit/proxy/engine/test_worker.py +++ b/tests/unit/proxy/lens/test_worker.py @@ -4,7 +4,7 @@ from typing import Final import httpx import pytest -from litellm.proxy.engine.models import ( +from litellm.proxy.lens.models import ( Claim, Execution, ExecutionContent, @@ -14,9 +14,9 @@ from litellm.proxy.engine.models import ( Sample, TracePart, ) -from litellm.proxy.engine.state import queue_job -from litellm.proxy.engine.worker import EngineWorker -from tests.unit.proxy.engine.test_state import NOW, engine +from litellm.proxy.lens.state import queue_job +from litellm.proxy.lens.worker import LensWorker +from tests.unit.proxy.lens.test_state import NOW, lens @pytest.mark.asyncio @@ -39,7 +39,7 @@ async def test_model_retries_transient_failures_but_not_budget_or_revocation(fai delays.put(delay) async with httpx.AsyncClient(base_url="https://proxy.test", transport=httpx.MockTransport(handle)) as client: - worker: Final = EngineWorker(client, sleep=sleep) + worker: Final = LensWorker(client, sleep=sleep) if failure in (402, 409, 401): with pytest.raises(httpx.HTTPStatusError): await worker.model_request("/model", ModelRequest(purpose="extract", prompt="review")) @@ -64,7 +64,7 @@ async def test_transient_retries_are_bounded() -> None: async with httpx.AsyncClient(base_url="https://proxy.test", transport=httpx.MockTransport(handle)) as client: with pytest.raises(httpx.HTTPStatusError): - await EngineWorker(client, sleep=sleep).model_request( + await LensWorker(client, sleep=sleep).model_request( "/model", ModelRequest(purpose="extract", prompt="review") ) assert attempts.qsize() == 3 @@ -74,17 +74,17 @@ async def test_transient_retries_are_bounded() -> None: @pytest.mark.asyncio async def test_idle_worker_does_not_start_an_analysis() -> None: def handle(request: httpx.Request) -> httpx.Response: - assert request.url.path == "/engine/worker/claim" + assert request.url.path == "/lens/worker/claim" return httpx.Response(200, content="null") async with httpx.AsyncClient(base_url="https://proxy.test", transport=httpx.MockTransport(handle)) as client: - assert await EngineWorker(client).run_once() is False + assert await LensWorker(client).run_once() is False @pytest.mark.asyncio @pytest.mark.parametrize("model_status", (200, 402, 503)) async def test_worker_reads_claimed_activity_and_reports_analysis_or_failure(model_status: int) -> None: - claim: Final = Claim(engine_id="engine", job=queue_job(engine(), NOW, "job").jobs[0], findings=()) + claim: Final = Claim(lens_id="lens", job=queue_job(lens(), NOW, "job").jobs[0], findings=()) execution: Final = Execution( id="run", source="traces", trace_id="trace", team_id="alpha", name="review", start_time="", span_count=1 ) @@ -97,28 +97,28 @@ async def test_worker_reads_claimed_activity_and_reports_analysis_or_failure(mod def handle(request: httpx.Request) -> httpx.Response: match request.url.path: - case "/engine/worker/claim": + case "/lens/worker/claim": return httpx.Response(200, json=claim.model_dump(mode="json")) - case "/engine/worker/engine/job/sample": + case "/lens/worker/lens/job/sample": return httpx.Response(200, json=sample.model_dump(mode="json")) - case "/engine/worker/engine/job/content": + case "/lens/worker/lens/job/content": assert request.url.params["execution_id"] == execution.id return httpx.Response(200, json=content.model_dump(mode="json")) - case "/engine/worker/engine/job/model": + case "/lens/worker/lens/job/model": return httpx.Response( model_status, json=ModelResult(content='{"observations":[],"cannot_assess":false}', cost=0.01).model_dump(), ) - case "/engine/worker/engine/job/progress": + case "/lens/worker/lens/job/progress": return httpx.Response(200, json=True) - case "/engine/worker/engine/job/result": + case "/lens/worker/lens/job/result": saved.put(Result.model_validate_json(request.content)) return httpx.Response(200, json=True) case _: pytest.fail(f"Unexpected analyzer request: {request.url.path}") async with httpx.AsyncClient(base_url="https://proxy.test", transport=httpx.MockTransport(handle)) as client: - assert await EngineWorker(client).run_once() is True + assert await LensWorker(client).run_once() is True result: Final = saved.get_nowait() assert saved.empty() if model_status == 200: diff --git a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/ActivityScope.tsx b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/ActivityScope.tsx index 912e7686972..188c1e6db92 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/ActivityScope.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/ActivityScope.tsx @@ -7,7 +7,7 @@ import { apiClient } from "@/components/networking"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { TracePanel } from "./TracePanel"; -import { type Sample, type Settings, runTime, durationLabel } from "./engineData"; +import { type Sample, type Settings, runTime, durationLabel } from "./lensData"; import { DurationInput } from "./DurationInput"; @@ -72,7 +72,7 @@ export function ActivityScope({ const valid = validWindow && validSampling && validFilters; const load = (selection: ActivitySelection, pageOffset = 0) => { const { lookback_hours, ...selectionSettings } = selection; - return apiClient.post("/engine/preview/sample", { + return apiClient.post("/lens/preview/sample", { accessToken, body: { offset: pageOffset, diff --git a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/EngineProgress.tsx b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensProgress.tsx similarity index 93% rename from ui/litellm-dashboard/src/app/(dashboard)/lens/_components/EngineProgress.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensProgress.tsx index b479fe287e8..9413fbb5157 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/EngineProgress.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensProgress.tsx @@ -3,11 +3,11 @@ import { useEffect, useState } from "react"; import { Check, Loader2 } from "lucide-react"; import { Button } from "@/components/ui/button"; -import { analysisElapsed, analysisProgress, nextCheckStatus, type Engine, type Job } from "./engineData"; +import { analysisElapsed, analysisProgress, nextCheckStatus, type Lens, type Job } from "./lensData"; const steps = ["Review runs", "Find patterns", "Check evidence"]; -export function EngineProgress({ job, onCancel }: { job: Job; onCancel?: () => void }) { +export function LensProgress({ job, onCancel }: { job: Job; onCancel?: () => void }) { const [now, setNow] = useState(Date.now); useEffect(() => { const timer = window.setInterval(() => setNow(Date.now()), 1000); @@ -69,13 +69,13 @@ export function EngineProgress({ job, onCancel }: { job: Job; onCancel?: () => v ); } -export function NextCheck({ engine }: { engine: Engine }) { +export function NextCheck({ lens }: { lens: Lens }) { const [now, setNow] = useState(Date.now); useEffect(() => { const timer = window.setInterval(() => setNow(Date.now()), 15000); return () => window.clearInterval(timer); }, []); - const label = nextCheckStatus(engine, now); + const label = nextCheckStatus(lens, now); if (!label) return null; return

{label}

; } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensRuns.tsx b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensRuns.tsx index fc664ed5998..8c4534d8745 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensRuns.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensRuns.tsx @@ -2,7 +2,7 @@ import { useState } from "react"; import { ArrowUpRight } from "lucide-react"; import { Button } from "@/components/ui/button"; import { RunList } from "./ActivityScope"; -import type { Job } from "./engineData"; +import type { Job } from "./lensData"; function assessmentLabel(assessment: Job["assessments"][number] | undefined): string { if (!assessment) return "Not reviewed"; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/EngineSetup.integration.test.tsx b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensSetup.integration.test.tsx similarity index 92% rename from ui/litellm-dashboard/src/app/(dashboard)/lens/_components/EngineSetup.integration.test.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensSetup.integration.test.tsx index dfc95369e3c..41b898a2bdc 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/EngineSetup.integration.test.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensSetup.integration.test.tsx @@ -2,9 +2,9 @@ import { fireEvent, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { renderWithProviders } from "@/../tests/test-utils"; -import { EngineSetup } from "./EngineSetup"; +import { LensSetup } from "./LensSetup"; import { apiClient } from "@/components/networking"; -import type { Settings } from "./engineData"; +import type { Settings } from "./lensData"; vi.mock("@/components/networking", () => ({ apiClient: { post: vi.fn() } })); @@ -30,7 +30,7 @@ const settings: Settings = { ], }; -describe("Engine setup", () => { +describe("Lens setup", () => { beforeEach(() => { vi.mocked(apiClient.post).mockReset(); vi.mocked(apiClient.post).mockResolvedValue({ eligible: 0, executions: [] }); @@ -39,7 +39,7 @@ describe("Engine setup", () => { const save = vi.fn().mockResolvedValue(undefined); const user = userEvent.setup(); renderWithProviders( - , + , ); fireEvent.change(screen.getByRole("textbox", { name: "Specific checks (optional)" }), { target: { value: "Find incomplete reports\nFind repeated searches" }, @@ -52,7 +52,7 @@ describe("Engine setup", () => { it("rejects invalid metadata before reviewing the selection", async () => { const user = userEvent.setup(); - renderWithProviders(); + renderWithProviders(); fireEvent.change(screen.getByRole("textbox", { name: "Name" }), { target: { value: "Research" } }); await user.click(screen.getByRole("button", { name: "Continue" })); await user.click(screen.getByRole("button", { name: "Add condition" })); @@ -82,7 +82,7 @@ describe("Engine setup", () => { } : { eligible: 0, executions: [] }; }); - renderWithProviders(); + renderWithProviders(); fireEvent.change(screen.getByRole("textbox", { name: "Name" }), { target: { value: "Research" } }); await user.click(screen.getByRole("button", { name: "Continue" })); await user.click(screen.getByRole("button", { name: "Add condition" })); @@ -106,7 +106,7 @@ it("searches providers and saves custom history and schedule values", async () = const user = userEvent.setup(); const save = vi.fn().mockResolvedValue(undefined); renderWithProviders( - ({ apiClient: { get: vi.fn(), post: vi.fn() }, proxyBaseUrl: "" })); @@ -35,7 +35,7 @@ const issue: Finding = { kind: "issue", priority: "high", }; -const engine: Engine = { +const lens: Lens = { version: 0, spent: 0, id: "lens", @@ -134,15 +134,15 @@ describe("Lens findings and runs", () => { beforeEach(() => { vi.mocked(apiClient.get).mockReset(); vi.mocked(apiClient.get).mockImplementation(async (path) => { - if (path === "/engine") return { engines: [engine], workers: [], tracing_enabled: true }; - if (path === "/engine/lens/runs") return engine.jobs; + if (path === "/lens") return { lenses: [lens], workers: [], tracing_enabled: true }; + if (path === "/lens/lens/runs") return lens.jobs; return { data: [] }; }); }); it("separates patterns from issues and reveals original evidence only when requested", async () => { const user = userEvent.setup(); - renderWithProviders(); + renderWithProviders(); expect(await screen.findByText("Review used the wrong defect rate")).toBeInTheDocument(); expect(screen.queryByText(pattern.title)).not.toBeInTheDocument(); await user.click(screen.getByRole("button", { name: "Patterns (1)" })); @@ -159,7 +159,7 @@ describe("Lens findings and runs", () => { it("shows the actual frozen run selection in the Runs tab", async () => { const user = userEvent.setup(); - renderWithProviders(); + renderWithProviders(); await user.click(await screen.findByRole("tab", { name: "Runs" })); expect(screen.getByText("Release-42")).toBeInTheDocument(); expect(screen.getByText("trace-42")).toBeInTheDocument(); @@ -170,27 +170,27 @@ describe("Lens findings and runs", () => { it("shows the actual next schedule and avoids a stale countdown during active scans", () => { const now = Date.parse("2026-09-30T10:00:00Z"); const monitoring = { - ...engine, - settings: { ...engine.settings, enabled: true }, + ...lens, + settings: { ...lens.settings, enabled: true }, next_run_at: "2026-09-30T10:12:00Z", }; expect(nextCheckStatus(monitoring, now)).toContain("in 12 minutes"); expect(nextCheckStatus(monitoring, now + 12 * 60000)).toBe("Due now · waiting for an analyzer"); - expect(nextCheckStatus({ ...monitoring, jobs: [{ ...engine.jobs[0], status: "running" }] }, now)).toBe( + expect(nextCheckStatus({ ...monitoring, jobs: [{ ...lens.jobs[0], status: "running" }] }, now)).toBe( "Next check scheduled after this scan finishes", ); - expect(nextCheckStatus({ ...monitoring, jobs: [{ ...engine.jobs[0], status: "queued" }] }, now)).toBe( + expect(nextCheckStatus({ ...monitoring, jobs: [{ ...lens.jobs[0], status: "queued" }] }, now)).toBe( "Waiting for an analyzer", ); - expect(nextCheckStatus(engine, now)).toBeNull(); + expect(nextCheckStatus(lens, now)).toBeNull(); }); it("runs saved settings immediately without opening setup", async () => { testQueryClient.clear(); vi.mocked(apiClient.get).mockImplementation(async (path) => { - if (path === "/engine") + if (path === "/lens") return { - engines: [engine], + lenses: [lens], tracing_enabled: true, workers: [ { @@ -198,29 +198,29 @@ it("runs saved settings immediately without opening setup", async () => { name: "Worker", revoked: false, analysis_key_id: "a".repeat(64), - scope: engine.scope, + scope: lens.scope, last_seen: new Date().toISOString(), }, ], }; - if (path === "/engine/lens/runs") return engine.jobs; + if (path === "/lens/lens/runs") return lens.jobs; return { data: [] }; }); - vi.mocked(apiClient.post).mockResolvedValue(engine); + vi.mocked(apiClient.post).mockResolvedValue(lens); const user = userEvent.setup(); - renderWithProviders(); + renderWithProviders(); await user.click(await screen.findByRole("button", { name: "Run now" })); - expect(apiClient.post).toHaveBeenCalledWith("/engine/lens/runs", { accessToken: "test", body: {} }); + expect(apiClient.post).toHaveBeenCalledWith("/lens/lens/runs", { accessToken: "test", body: {} }); expect(screen.queryByRole("dialog")).not.toBeInTheDocument(); }); it("guides a first-time administrator into worker connection and lens setup", async () => { testQueryClient.clear(); vi.mocked(apiClient.get).mockImplementation(async (path) => - path === "/engine" ? { engines: [], workers: [], tracing_enabled: true } : { data: [] }, + path === "/lens" ? { lenses: [], workers: [], tracing_enabled: true } : { data: [] }, ); const user = userEvent.setup(); - renderWithProviders(); + renderWithProviders(); const guide = within(await screen.findByRole("region", { name: "Understand what your agents are doing" })); expect(guide.getByRole("link", { name: "View logs" })).toHaveAttribute("href", "/ui/logs/"); await user.click(guide.getByRole("button", { name: "Connect analyzer" })); @@ -234,20 +234,20 @@ it("guides a first-time administrator into worker connection and lens setup", as it("opens the saved results of an older batch", async () => { testQueryClient.clear(); const older = { - ...engine.jobs[0], + ...lens.jobs[0], id: "older", created_at: "2026-09-29T10:00:00Z", finished_at: "2026-09-29T10:02:13Z", findings: [{ ...issue, title: "Earlier batch finding" }], }; vi.mocked(apiClient.get).mockImplementation(async (path) => { - if (path === "/engine") return { engines: [engine], workers: [], tracing_enabled: true }; - if (path === "/engine/lens/runs") return [engine.jobs[0], older]; - if (path === "/engine/lens/runs/older") return older; + if (path === "/lens") return { lenses: [lens], workers: [], tracing_enabled: true }; + if (path === "/lens/lens/runs") return [lens.jobs[0], older]; + if (path === "/lens/lens/runs/older") return older; return { data: [] }; }); const user = userEvent.setup(); - renderWithProviders(); + renderWithProviders(); await screen.findByRole("option", { name: `${new Date(older.created_at).toLocaleString()} · completed` }); await user.selectOptions(screen.getByRole("combobox", { name: "Investigation batch" }), "older"); expect(await screen.findByText("Earlier batch finding")).toBeVisible(); @@ -264,15 +264,15 @@ it("reads request content from the beginning after its abbreviated preview", asy testQueryClient.clear(); const requestId = btoa(JSON.stringify(["requests", "", "request-1"])); const job = { - ...engine.jobs[0], + ...lens.jobs[0], sample: { eligible: 1, - executions: [{ ...engine.jobs[0].sample!.executions[0], id: requestId, source: "requests" as const }], + executions: [{ ...lens.jobs[0].sample!.executions[0], id: requestId, source: "requests" as const }], }, }; vi.mocked(apiClient.get).mockImplementation(async (path, options) => { - if (path === "/engine") return { engines: [{ ...engine, jobs: [job] }], workers: [], tracing_enabled: true }; - if (path === "/engine/lens/runs") return [job]; + if (path === "/lens") return { lenses: [{ ...lens, jobs: [job] }], workers: [], tracing_enabled: true }; + if (path === "/lens/lens/runs") return [job]; const offset = options?.query?.offset ?? 0; return { parts: [ @@ -285,7 +285,7 @@ it("reads request content from the beginning after its abbreviated preview", asy }; }); const user = userEvent.setup(); - renderWithProviders(); + renderWithProviders(); await user.click(await screen.findByRole("tab", { name: "Runs" })); await user.click(screen.getByRole("button", { name: "Open request" })); expect(await screen.findByText("Abbreviated preview")).toBeVisible(); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/EngineView.tsx b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensView.tsx similarity index 87% rename from ui/litellm-dashboard/src/app/(dashboard)/lens/_components/EngineView.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensView.tsx index 1ad36c17299..dacd93310fd 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/EngineView.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/LensView.tsx @@ -22,22 +22,22 @@ import { Popover, PopoverContent, PopoverTitle, PopoverTrigger } from "@/compone import { Textarea } from "@/components/ui/textarea"; import { apiClient } from "@/components/networking"; import { TracePanel } from "./TracePanel"; -import { EngineSetup } from "./EngineSetup"; +import { LensSetup } from "./LensSetup"; import { LensRuns } from "./LensRuns"; -import { EngineProgress, NextCheck, ScanDuration } from "./EngineProgress"; +import { LensProgress, NextCheck, ScanDuration } from "./LensProgress"; import { WorkerSetup } from "./WorkerSetup"; import { LensWelcome } from "./LensWelcome"; import { - engineStatus, + lensStatus, evidenceTarget, sortedFindings, runTime, - type Engine, - type EngineList, + type Lens, + type LensList, type Finding, type Settings, type Job, -} from "./engineData"; +} from "./lensData"; const money = (n: number) => new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", maximumFractionDigits: 3 }).format(n); @@ -50,22 +50,22 @@ function emptyFindingTitle(active: boolean, scanned: boolean) { return scanned ? "No matching findings" : "Ready for the first analysis"; } -export function EngineView({ accessToken, readOnly = false }: { accessToken: string; readOnly?: boolean }) { +export function LensView({ accessToken, readOnly = false }: { accessToken: string; readOnly?: boolean }) { const client = useQueryClient(); - const key = ["engines", accessToken]; + const key = ["lenses", accessToken]; const query = useQuery({ queryKey: key, - queryFn: () => apiClient.get("/engine", { accessToken }), + queryFn: () => apiClient.get("/lens", { accessToken }), refetchInterval: 10000, }); const models = useQuery({ - queryKey: ["engine-models", accessToken], + queryKey: ["lens-models", accessToken], queryFn: () => apiClient.get<{ data: { id: string }[] }>("/models", { accessToken }), }); const modelDetails = useQuery({ queryKey: ["lens-model-details", accessToken], queryFn: () => - apiClient.get<{ data: import("./engineData").AnalysisModelInfo[] }>("/model_group/info", { accessToken }), + apiClient.get<{ data: import("./lensData").AnalysisModelInfo[] }>("/model_group/info", { accessToken }), }); const [selected, setSelected] = useState(() => typeof window === "undefined" ? null : new URLSearchParams(window.location.search).get("lens"), @@ -91,32 +91,31 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str const [error, setError] = useState(""); const [busy, setBusy] = useState(false); const [evidence, setEvidence] = useState<{ id: string; span: string } | null>(null); - const engines = [...(query.data?.engines ?? [])].sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at)); - const showEmpty = !query.isLoading && !query.error && engines.length === 0; - const engine = engines.find((e) => e.id === selected) ?? engines[0]; + const lenses = [...(query.data?.lenses ?? [])].sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at)); + const showEmpty = !query.isLoading && !query.error && lenses.length === 0; + const lens = lenses.find((e) => e.id === selected) ?? lenses[0]; const connected = query.data?.workers?.some( (w) => !w.revoked && w.analysis_key_id && query.dataUpdatedAt - Date.parse(w.last_seen) < 120000, ) ?? false; const historyQuery = { - queryKey: ["lens-history", engine?.id, historyOffset, accessToken], - enabled: !!engine, - queryFn: () => - apiClient.get(`/engine/${engine?.id}/runs`, { accessToken, query: { offset: historyOffset } }), + queryKey: ["lens-history", lens?.id, historyOffset, accessToken], + enabled: !!lens, + queryFn: () => apiClient.get(`/lens/${lens?.id}/runs`, { accessToken, query: { offset: historyOffset } }), refetchInterval: 10000, }; const history = useQuery(historyQuery); const historical = useQuery({ - queryKey: ["lens-batch", engine?.id, batchId, accessToken], - enabled: !!engine && !["latest", "all"].includes(batchId), - queryFn: () => apiClient.get(`/engine/${engine?.id}/runs/${batchId}`, { accessToken }), + queryKey: ["lens-batch", lens?.id, batchId, accessToken], + enabled: !!lens && !["latest", "all"].includes(batchId), + queryFn: () => apiClient.get(`/lens/${lens?.id}/runs/${batchId}`, { accessToken }), }); - const job = ["latest", "all"].includes(batchId) ? engine?.jobs?.[0] : historical.data; + const job = ["latest", "all"].includes(batchId) ? lens?.jobs?.[0] : historical.data; const missingSnapshot = job?.status === "completed" && job.findings == null && batchId !== "all"; const selectedOutsideHistory = !["latest", "all"].includes(batchId) && !history.data?.some((j) => j.id === batchId); - const batchSettings = job?.settings ?? engine?.settings; - const batchFindings = (batchId === "all" ? engine?.findings ?? [] : job?.findings ?? []).map((f) => { - const feedback = engine?.findings?.find((current) => current.id === f.id); + const batchSettings = job?.settings ?? lens?.settings; + const batchFindings = (batchId === "all" ? lens?.findings ?? [] : job?.findings ?? []).map((f) => { + const feedback = lens?.findings?.find((current) => current.id === f.id); return feedback ? { ...f, status: feedback.status, reason: feedback.reason } : f; }); const finding = batchFindings.find((f) => f.id === findingId); @@ -127,12 +126,12 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str }; const setupSettings = () => { if (editing === "new") return undefined; - if (editing === "duplicate" && engine) - return { ...engine.settings, name: `${engine.settings.name} copy`, enabled: false }; - return engine?.settings; + if (editing === "duplicate" && lens) + return { ...lens.settings, name: `${lens.settings.name} copy`, enabled: false }; + return lens?.settings; }; - const lastCompleted = engine?.jobs?.find((j) => j.status === "completed"); - const active = engine?.jobs?.find((j) => j.status === "queued" || j.status === "running"); + const lastCompleted = lens?.jobs?.find((j) => j.status === "completed"); + const active = lens?.jobs?.find((j) => j.status === "queued" || j.status === "running"); const visibleFindings = sortedFindings( batchFindings.filter((f) => (filter === "all" || f.status === filter) && f.kind === kind), ); @@ -147,11 +146,11 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str const target = evidence ? evidenceTarget(evidence.id) : null; const [requestOffset, setRequestOffset] = useState(0); const requestEvidence = useQuery({ - queryKey: ["engine-evidence", engine?.id, evidence?.id, requestOffset, accessToken], - enabled: !!engine && target?.source === "requests", + queryKey: ["lens-evidence", lens?.id, evidence?.id, requestOffset, accessToken], + enabled: !!lens && target?.source === "requests", queryFn: () => apiClient.get( - `/engine/${engine?.id}/executions/${encodeURIComponent(evidence?.id ?? "")}`, + `/lens/${lens?.id}/executions/${encodeURIComponent(evidence?.id ?? "")}`, { accessToken, query: { offset: requestOffset } }, ), }); @@ -172,9 +171,9 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str } }; const save = async (settings: Settings) => { - const saved = await apiClient.request( + const saved = await apiClient.request( editing === "edit" ? "PUT" : "POST", - editing === "edit" ? `/engine/${engine.id}` : "/engine", + editing === "edit" ? `/lens/${lens.id}` : "/lens", { accessToken, body: settings }, ); selectLens(saved.id); @@ -182,8 +181,8 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str refresh(); }; const changeFinding = async (status: Finding["status"]) => { - if (!engine || !finding) return; - await update(`/engine/${engine.id}/findings/${finding.id}`, { status, reason }, "patch"); + if (!lens || !finding) return; + await update(`/lens/${lens.id}/findings/${finding.id}`, { status, reason }, "patch"); }; return ( @@ -206,7 +205,7 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str /> {connected ? "Analyzer connected" : "Set up analysis"} - {engines.length > 0 && ( + {lenses.length > 0 && ( ))}
-

{engine.settings.name}

+

{lens.settings.name}

- {sourceLabels[engine.settings.source ?? "traces"]} ·{" "} - {engine.settings.service || "All accessible activity"} - {engine.settings.filters?.length ? ` · ${engine.settings.filters.length} filters` : ""} + {sourceLabels[lens.settings.source ?? "traces"]} ·{" "} + {lens.settings.service || "All accessible activity"} + {lens.settings.filters?.length ? ` · ${lens.settings.filters.length} filters` : ""}

{!readOnly && ( @@ -273,16 +272,13 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str variant="outline" disabled={busy} onClick={() => - update(`/engine/${engine.id}`, { ...engine.settings, enabled: !engine.settings.enabled }, "put") + update(`/lens/${lens.id}`, { ...lens.settings, enabled: !lens.settings.enabled }, "put") } > - {engine.settings.enabled ? : } - {engine.settings.enabled ? "Pause" : "Resume"} + {lens.settings.enabled ? : } + {lens.settings.enabled ? "Pause" : "Resume"} - @@ -298,18 +294,18 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str

Status

- {engineStatus(engine, connected)} + {lensStatus(lens, connected)}

- {engine.settings.enabled - ? `Checks every ${engine.settings.interval_minutes} minutes` + {lens.settings.enabled + ? `Checks every ${lens.settings.interval_minutes} minutes` : "Manual analysis available"}

- +

Last successful scan

-

{when(lastCompleted?.finished_at ?? engine.last_scan_at)}

+

{when(lastCompleted?.finished_at ?? lens.last_scan_at)}

{lastCompleted && (

{lastCompleted.coverage?.screened ?? 0} of {lastCompleted.coverage?.eligible ?? 0} eligible runs @@ -320,21 +316,21 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str

Analysis spend this month

- {money(engine.budget_month === new Date().toISOString().slice(0, 7) ? engine.spent ?? 0 : 0)}{" "} - / {money(engine.settings.monthly_budget ?? 20)} + {money(lens.budget_month === new Date().toISOString().slice(0, 7) ? lens.spent ?? 0 : 0)}{" "} + / {money(lens.settings.monthly_budget ?? 20)}

Includes reservations for pending calls

{active && ( - { - void update(`/engine/${engine.id}/cancel`, {}); + void update(`/lens/${lens.id}/cancel`, {}); } } /> @@ -344,7 +340,7 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str {job.error}

)} - +
Findings @@ -369,7 +365,7 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str {when(job.created_at)} · {job.status} )} - {(history.data ?? engine.jobs)?.map((j) => ( + {(history.data ?? lens.jobs)?.map((j) => ( @@ -482,7 +478,7 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str {visibleFindings.length === 0 && (
-

{emptyFindingTitle(!!active, !!engine.last_scan_at)}

+

{emptyFindingTitle(!!active, !!lens.last_scan_at)}

{active ? "Lens is reviewing the selected activity." @@ -517,10 +513,10 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str variant="ghost" onClick={() => update( - `/engine/${engine.id}`, + `/lens/${lens.id}`, { - ...engine.settings, - checks: engine.settings.checks.map((q) => + ...lens.settings, + checks: lens.settings.checks.map((q) => q.id === c.id ? { ...q, enabled: !q.enabled } : q, ), }, @@ -537,7 +533,7 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str @@ -590,7 +586,7 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str

{history.error &&

{history.error.message}

} - {(history.data ?? engine.jobs)?.map((j) => ( + {(history.data ?? lens.jobs)?.map((j) => (
{j.stage} @@ -621,7 +617,7 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str
)} {editing && ( - m.id) ?? []} @@ -750,7 +746,7 @@ export function EngineView({ accessToken, readOnly = false }: { accessToken: str )} - {engine && target?.source === "traces" && ( + {lens && target?.source === "traces" && ( { await user.click(screen.getByRole("combobox", { name: "Charge analysis to" })); await user.click(await screen.findByRole("option", { name: "Analysis" })); await user.click(screen.getByRole("button", { name: "Generate setup command" })); - expect(apiClient.post).toHaveBeenCalledWith("/engine/workers/register", { + expect(apiClient.post).toHaveBeenCalledWith("/lens/workers/register", { accessToken: "admin", body: { name: "Lens analyzer", analysis_key_id: "b".repeat(64) }, }); @@ -71,7 +71,7 @@ describe("Worker setup", () => { await user.click(screen.getByRole("combobox", { name: "Charge analysis to" })); await user.click(await screen.findByRole("option", { name: "Analysis" })); await user.click(screen.getByRole("button", { name: "Save billing key" })); - expect(apiClient.put).toHaveBeenCalledWith("/engine/workers/worker/billing-key", { + expect(apiClient.put).toHaveBeenCalledWith("/lens/workers/worker/billing-key", { accessToken: "admin", body: { analysis_key_id: "b".repeat(64) }, }); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/WorkerSetup.tsx b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/WorkerSetup.tsx index 7800f445a17..e0037330dd5 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/WorkerSetup.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/WorkerSetup.tsx @@ -7,10 +7,10 @@ import { Input } from "@/components/ui/input"; import { serverRootPath } from "@/lib/serverRootPath"; import { apiClient, proxyBaseUrl } from "@/components/networking"; import { AnalysisKey } from "./AnalysisKey"; -import type { EngineList, WorkerCreated } from "./engineData"; +import type { LensList, WorkerCreated } from "./lensData"; export const LENS_WORKER_IMAGE = - "ghcr.io/berriai/litellm-lens-worker@sha256:c41e932eaf3e4efbcaf8cc5027c7e93021e5b2823f21cb8785cd107e37b91c9a"; + "ghcr.io/berriai/litellm-lens-worker@sha256:a8e8731d954916594eea462969946b9292fb771681ff515a9fd296b53f856c77"; function initialProxyAddress(): string { const url = new URL(proxyBaseUrl || serverRootPath, window.location.origin); @@ -30,7 +30,7 @@ export function workerSetupCommand(address: string, token: string): string { ].join(" \\\n"); } -function workerStatus(worker: EngineList["workers"][number], now: number): string { +function workerStatus(worker: LensList["workers"][number], now: number): string { if (!worker.analysis_key_id) return "Billing key required"; return now - Date.parse(worker.last_seen) < 120000 ? "Connected · ready to analyze" : "Not connected"; } @@ -42,7 +42,7 @@ export function WorkerSetup({ onChanged, }: { accessToken: string; - workers: EngineList["workers"]; + workers: LensList["workers"]; onClose: () => void; onChanged: () => void; }) { @@ -59,7 +59,7 @@ export function WorkerSetup({ const [error, setError] = useState(""); const [busy, setBusy] = useState(false); const actionLabel = editingWorker ? "Save billing key" : "Generate setup command"; - const editBilling = (worker: EngineList["workers"][number]) => { + const editBilling = (worker: LensList["workers"][number]) => { setCreated(null); setEditingWorker(worker.id); setAnalysisKey(worker.analysis_key_id ?? null); @@ -69,7 +69,7 @@ export function WorkerSetup({ setError(""); try { if (editingWorker) { - await apiClient.put(`/engine/workers/${editingWorker}/billing-key`, { + await apiClient.put(`/lens/workers/${editingWorker}/billing-key`, { accessToken, body: { analysis_key_id: analysisKey }, }); @@ -79,7 +79,7 @@ export function WorkerSetup({ return; } setCreated( - await apiClient.post("/engine/workers/register", { + await apiClient.post("/lens/workers/register", { accessToken, body: { name: "Lens analyzer", analysis_key_id: analysisKey }, }), @@ -189,7 +189,7 @@ export function WorkerSetup({ size="sm" onClick={async () => { try { - await apiClient.delete(`/engine/workers/${worker.id}`, { accessToken }); + await apiClient.delete(`/lens/workers/${worker.id}`, { accessToken }); onChanged(); } catch (e) { setError(e instanceof Error ? e.message : "Could not revoke worker"); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/engineData.test.ts b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/lensData.test.ts similarity index 99% rename from ui/litellm-dashboard/src/app/(dashboard)/lens/_components/engineData.test.ts rename to ui/litellm-dashboard/src/app/(dashboard)/lens/_components/lensData.test.ts index 6d546261e27..90eccf4bcd4 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/engineData.test.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/lensData.test.ts @@ -6,7 +6,7 @@ import { sortedFindings, type Finding, type Job, -} from "./engineData"; +} from "./lensData"; const coverage: Job["coverage"] = { eligible: 0, diff --git a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/engineData.ts b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/lensData.ts similarity index 86% rename from ui/litellm-dashboard/src/app/(dashboard)/lens/_components/engineData.ts rename to ui/litellm-dashboard/src/app/(dashboard)/lens/_components/lensData.ts index f7ebe086148..043fcb67845 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/engineData.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/lens/_components/lensData.ts @@ -1,8 +1,8 @@ import type { components } from "@/lib/http/schema"; -export type Engine = components["schemas"]["Engine"]; -export type Settings = components["schemas"]["EngineSettings"]; -export type EngineList = components["schemas"]["EngineList"]; +export type Lens = components["schemas"]["Lens"]; +export type Settings = components["schemas"]["LensSettings"]; +export type LensList = components["schemas"]["LensList"]; export type Finding = components["schemas"]["Finding"]; export type Sample = components["schemas"]["Sample"]; export type WorkerCreated = components["schemas"]["WorkerCreated"]; @@ -33,12 +33,12 @@ export function sortedFindings(findings: Finding[]): Finding[] { ); } -export function engineStatus(engine: Engine, connected: boolean): string { - const active = engine.jobs?.find((job) => ["queued", "running"].includes(job.status ?? "")); +export function lensStatus(lens: Lens, connected: boolean): string { + const active = lens.jobs?.find((job) => ["queued", "running"].includes(job.status ?? "")); if (active) return connected ? active.stage ?? "Queued" : "Waiting for analyzer"; - const spent = engine.budget_month === new Date().toISOString().slice(0, 7) ? engine.spent ?? 0 : 0; - if (spent >= (engine.settings.monthly_budget ?? 20)) return "Budget reached"; - if (!engine.settings.enabled) return "Paused"; + const spent = lens.budget_month === new Date().toISOString().slice(0, 7) ? lens.spent ?? 0 : 0; + if (spent >= (lens.settings.monthly_budget ?? 20)) return "Budget reached"; + if (!lens.settings.enabled) return "Paused"; return connected ? "Monitoring" : "Analyzer disconnected"; } @@ -152,12 +152,12 @@ const nextCheckTimeFormat: Intl.DateTimeFormatOptions = { minute: "2-digit", }; -export function nextCheckStatus(engine: Engine, now: number): string | null { - if (!engine.settings.enabled) return null; - const active = engine.jobs.find((job) => job.status === "queued" || job.status === "running"); +export function nextCheckStatus(lens: Lens, now: number): string | null { + if (!lens.settings.enabled) return null; + const active = lens.jobs.find((job) => job.status === "queued" || job.status === "running"); if (active?.status === "running") return "Next check scheduled after this scan finishes"; if (active?.status === "queued") return "Waiting for an analyzer"; - const next = new Date(engine.next_run_at); + const next = new Date(lens.next_run_at); const remaining = next.getTime() - now; if (remaining <= 0) return "Due now · waiting for an analyzer"; const minutes = Math.ceil(remaining / 60000); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/lens/page.tsx b/ui/litellm-dashboard/src/app/(dashboard)/lens/page.tsx index f833188bb21..dd0dc1518a7 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/lens/page.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/lens/page.tsx @@ -2,13 +2,13 @@ import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; import { isProxyAdminRole, isProxyAdminTierRole } from "@/utils/roles"; -import { EngineView } from "./_components/EngineView"; +import { LensView } from "./_components/LensView"; -export default function EnginePage() { +export default function LensPage() { const { accessToken, userRole } = useAuthorized(); if (!accessToken) return null; if (!isProxyAdminTierRole(userRole ?? "")) { return

Lens requires proxy administrator access.

; } - return ; + return ; } diff --git a/ui/litellm-dashboard/src/lib/http/schema.d.ts b/ui/litellm-dashboard/src/lib/http/schema.d.ts index a8c8ba69df7..a80e997719b 100644 --- a/ui/litellm-dashboard/src/lib/http/schema.d.ts +++ b/ui/litellm-dashboard/src/lib/http/schema.d.ts @@ -4796,315 +4796,6 @@ export interface paths { patch?: never; trace?: never; }; - "/engine": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** List Engines */ - get: operations["list_engines_engine_get"]; - put?: never; - /** Create Engine */ - post: operations["create_engine_engine_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/preview/sample": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Preview Sample */ - post: operations["preview_sample_engine_preview_sample_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/worker/claim": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Claim */ - post: operations["claim_engine_worker_claim_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/worker/{engine_id}/{job_id}/content": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Content */ - get: operations["content_engine_worker__engine_id___job_id__content_get"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/worker/{engine_id}/{job_id}/heartbeat": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Heartbeat */ - post: operations["heartbeat_engine_worker__engine_id___job_id__heartbeat_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/worker/{engine_id}/{job_id}/model": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Model */ - post: operations["model_engine_worker__engine_id___job_id__model_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/worker/{engine_id}/{job_id}/progress": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Progress */ - post: operations["progress_engine_worker__engine_id___job_id__progress_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/worker/{engine_id}/{job_id}/result": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Result */ - post: operations["result_engine_worker__engine_id___job_id__result_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/worker/{engine_id}/{job_id}/sample": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Sample */ - get: operations["sample_engine_worker__engine_id___job_id__sample_get"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/workers/register": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Register Worker */ - post: operations["register_worker_engine_workers_register_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/workers/{worker_id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post?: never; - /** Revoke Worker */ - delete: operations["revoke_worker_engine_workers__worker_id__delete"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/workers/{worker_id}/billing-key": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** Set Worker Billing */ - put: operations["set_worker_billing_engine_workers__worker_id__billing_key_put"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/{engine_id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Read Engine */ - get: operations["read_engine_engine__engine_id__get"]; - /** Update Engine */ - put: operations["update_engine_engine__engine_id__put"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/{engine_id}/cancel": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** Cancel Engine */ - post: operations["cancel_engine_engine__engine_id__cancel_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/{engine_id}/executions/{execution_id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Evidence Content */ - get: operations["evidence_content_engine__engine_id__executions__execution_id__get"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/{engine_id}/findings/{finding_id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - /** Update Finding */ - patch: operations["update_finding_engine__engine_id__findings__finding_id__patch"]; - trace?: never; - }; - "/engine/{engine_id}/runs": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** List Runs */ - get: operations["list_runs_engine__engine_id__runs_get"]; - put?: never; - /** Run Engine */ - post: operations["run_engine_engine__engine_id__runs_post"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/engine/{engine_id}/runs/{job_id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** Read Run */ - get: operations["read_run_engine__engine_id__runs__job_id__get"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; "/engines/{model}/chat/completions": { parameters: { query?: never; @@ -8901,6 +8592,315 @@ export interface paths { patch?: never; trace?: never; }; + "/lens": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** List Lenses */ + get: operations["list_lenses_lens_get"]; + put?: never; + /** Create Lens */ + post: operations["create_lens_lens_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/preview/sample": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Preview Sample */ + post: operations["preview_sample_lens_preview_sample_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/worker/claim": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Claim */ + post: operations["claim_lens_worker_claim_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/worker/{lens_id}/{job_id}/content": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Content */ + get: operations["content_lens_worker__lens_id___job_id__content_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/worker/{lens_id}/{job_id}/heartbeat": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Heartbeat */ + post: operations["heartbeat_lens_worker__lens_id___job_id__heartbeat_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/worker/{lens_id}/{job_id}/model": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Model */ + post: operations["model_lens_worker__lens_id___job_id__model_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/worker/{lens_id}/{job_id}/progress": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Progress */ + post: operations["progress_lens_worker__lens_id___job_id__progress_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/worker/{lens_id}/{job_id}/result": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Result */ + post: operations["result_lens_worker__lens_id___job_id__result_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/worker/{lens_id}/{job_id}/sample": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Sample */ + get: operations["sample_lens_worker__lens_id___job_id__sample_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/workers/register": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Register Worker */ + post: operations["register_worker_lens_workers_register_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/workers/{worker_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + /** Revoke Worker */ + delete: operations["revoke_worker_lens_workers__worker_id__delete"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/workers/{worker_id}/billing-key": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** Set Worker Billing */ + put: operations["set_worker_billing_lens_workers__worker_id__billing_key_put"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/{lens_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Read Lens */ + get: operations["read_lens_lens__lens_id__get"]; + /** Update Lens */ + put: operations["update_lens_lens__lens_id__put"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/{lens_id}/cancel": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Cancel Lens */ + post: operations["cancel_lens_lens__lens_id__cancel_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/{lens_id}/executions/{execution_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Evidence Content */ + get: operations["evidence_content_lens__lens_id__executions__execution_id__get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/{lens_id}/findings/{finding_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + /** Update Finding */ + patch: operations["update_finding_lens__lens_id__findings__finding_id__patch"]; + trace?: never; + }; + "/lens/{lens_id}/runs": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** List Runs */ + get: operations["list_runs_lens__lens_id__runs_get"]; + put?: never; + /** Run Lens */ + post: operations["run_lens_lens__lens_id__runs_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/lens/{lens_id}/runs/{job_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Read Run */ + get: operations["read_run_lens__lens_id__runs__job_id__get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/litellm/.well-known/litellm-ui-config": { parameters: { query?: never; @@ -28067,11 +28067,11 @@ export interface components { }; /** Claim */ Claim: { - /** Engine Id */ - engine_id: string; /** Findings */ findings: components["schemas"]["Finding"][]; job: components["schemas"]["Job"]; + /** Lens Id */ + lens_id: string; }; /** * ClassificationRubric @@ -30763,136 +30763,6 @@ export interface components { /** Slug */ slug: string; }; - /** Engine */ - Engine: { - /** Budget Month */ - budget_month: string; - /** - * Created At - * Format: date-time - */ - created_at: string; - /** - * Findings - * @default [] - */ - findings: components["schemas"]["Finding"][]; - /** Id */ - id: string; - /** - * Jobs - * @default [] - */ - jobs: components["schemas"]["Job"][]; - /** Last Scan At */ - last_scan_at?: string | null; - /** - * Next Run At - * Format: date-time - */ - next_run_at: string; - /** - * Revision - * @default 1 - */ - revision: number; - scope: components["schemas"]["Scope"]; - settings: components["schemas"]["EngineSettings"]; - /** - * Spent - * @default 0 - */ - spent: number; - /** - * Version - * @default 0 - */ - version: number; - }; - /** EngineList */ - EngineList: { - /** Engines */ - engines: components["schemas"]["Engine"][]; - /** Tracing Enabled */ - tracing_enabled: boolean; - /** Workers */ - workers: components["schemas"]["Worker"][]; - }; - /** EngineSettings */ - EngineSettings: { - /** - * Checks - * @default [] - */ - checks: components["schemas"]["Check"][]; - /** - * Concurrency - * @default 8 - */ - concurrency: number; - /** - * Context - * @default - */ - context: string; - /** - * Enabled - * @default true - */ - enabled: boolean; - /** - * Execution Ids - * @default [] - */ - execution_ids: string[]; - /** - * Filters - * @default [] - */ - filters: components["schemas"]["MetadataFilter"][]; - /** - * Interval Minutes - * @default 15 - */ - interval_minutes: number; - /** - * Lookback Hours - * @default 24 - */ - lookback_hours: number; - /** Model */ - model: string; - /** - * Monthly Budget - * @default 20 - */ - monthly_budget: number; - /** Name */ - name: string; - /** - * Sample Percent - * @default 100 - */ - sample_percent: number; - /** Sample Size */ - sample_size?: number | null; - /** - * Service - * @default - */ - service: string; - /** - * Source - * @default traces - * @enum {string} - */ - source: "traces" | "requests" | "both"; - /** - * Team Id - * @default - */ - team_id: string; - }; /** EnrichTemplateRequest */ EnrichTemplateRequest: { /** @@ -32639,7 +32509,7 @@ export interface components { /** Revision */ revision: number; sample?: components["schemas"]["Sample"] | null; - settings: components["schemas"]["EngineSettings"]; + settings: components["schemas"]["LensSettings"]; /** * Stage * @default Queued @@ -32884,6 +32754,136 @@ export interface components { /** Version */ version: string; }; + /** Lens */ + Lens: { + /** Budget Month */ + budget_month: string; + /** + * Created At + * Format: date-time + */ + created_at: string; + /** + * Findings + * @default [] + */ + findings: components["schemas"]["Finding"][]; + /** Id */ + id: string; + /** + * Jobs + * @default [] + */ + jobs: components["schemas"]["Job"][]; + /** Last Scan At */ + last_scan_at?: string | null; + /** + * Next Run At + * Format: date-time + */ + next_run_at: string; + /** + * Revision + * @default 1 + */ + revision: number; + scope: components["schemas"]["Scope"]; + settings: components["schemas"]["LensSettings"]; + /** + * Spent + * @default 0 + */ + spent: number; + /** + * Version + * @default 0 + */ + version: number; + }; + /** LensList */ + LensList: { + /** Lenses */ + lenses: components["schemas"]["Lens"][]; + /** Tracing Enabled */ + tracing_enabled: boolean; + /** Workers */ + workers: components["schemas"]["Worker"][]; + }; + /** LensSettings */ + LensSettings: { + /** + * Checks + * @default [] + */ + checks: components["schemas"]["Check"][]; + /** + * Concurrency + * @default 8 + */ + concurrency: number; + /** + * Context + * @default + */ + context: string; + /** + * Enabled + * @default true + */ + enabled: boolean; + /** + * Execution Ids + * @default [] + */ + execution_ids: string[]; + /** + * Filters + * @default [] + */ + filters: components["schemas"]["MetadataFilter"][]; + /** + * Interval Minutes + * @default 15 + */ + interval_minutes: number; + /** + * Lookback Hours + * @default 24 + */ + lookback_hours: number; + /** Model */ + model: string; + /** + * Monthly Budget + * @default 20 + */ + monthly_budget: number; + /** Name */ + name: string; + /** + * Sample Percent + * @default 100 + */ + sample_percent: number; + /** Sample Size */ + sample_size?: number | null; + /** + * Service + * @default + */ + service: string; + /** + * Source + * @default traces + * @enum {string} + */ + source: "traces" | "requests" | "both"; + /** + * Team Id + * @default + */ + team_id: string; + }; /** ListAccessGroupsResponse */ ListAccessGroupsResponse: { /** Access Groups */ @@ -39888,7 +39888,7 @@ export interface components { * @default 0 */ offset: number; - settings: components["schemas"]["EngineSettings"]; + settings: components["schemas"]["LensSettings"]; }; /** Progress */ Progress: { @@ -43170,7 +43170,7 @@ export interface components { RunRequest: { /** Lookback Hours */ lookback_hours?: number | null; - settings?: components["schemas"]["EngineSettings"] | null; + settings?: components["schemas"]["LensSettings"] | null; }; /** SCIMEnterpriseUser */ SCIMEnterpriseUser: { @@ -55478,698 +55478,6 @@ export interface operations { }; }; }; - list_engines_engine_get: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["EngineList"]; - }; - }; - }; - }; - create_engine_engine_post: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["EngineSettings"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Engine"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - preview_sample_engine_preview_sample_post: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["Preview"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Sample"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - claim_engine_worker_claim_post: { - parameters: { - query?: { - protocol_version?: number; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Claim"] | null; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - content_engine_worker__engine_id___job_id__content_get: { - parameters: { - query: { - execution_id: string; - cursor?: string; - offset?: number; - }; - header?: never; - path: { - engine_id: string; - job_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ExecutionContent"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - heartbeat_engine_worker__engine_id___job_id__heartbeat_post: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - job_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": boolean; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - model_engine_worker__engine_id___job_id__model_post: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - job_id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["ModelRequest"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ModelResult"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - progress_engine_worker__engine_id___job_id__progress_post: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - job_id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["Progress"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": boolean; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - result_engine_worker__engine_id___job_id__result_post: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - job_id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["Result-Input"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Engine"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - sample_engine_worker__engine_id___job_id__sample_get: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - job_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Sample"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - register_worker_engine_workers_register_post: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["WorkerName"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["WorkerCreated"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - revoke_worker_engine_workers__worker_id__delete: { - parameters: { - query?: never; - header?: never; - path: { - worker_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": boolean; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - set_worker_billing_engine_workers__worker_id__billing_key_put: { - parameters: { - query?: never; - header?: never; - path: { - worker_id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["WorkerBilling"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Worker"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - read_engine_engine__engine_id__get: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Engine"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - update_engine_engine__engine_id__put: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["EngineSettings"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Engine"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - cancel_engine_engine__engine_id__cancel_post: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Engine"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - evidence_content_engine__engine_id__executions__execution_id__get: { - parameters: { - query?: { - cursor?: string; - offset?: number; - }; - header?: never; - path: { - engine_id: string; - execution_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ExecutionContent"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - update_finding_engine__engine_id__findings__finding_id__patch: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - finding_id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["FindingUpdate"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Engine"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - list_runs_engine__engine_id__runs_get: { - parameters: { - query?: { - offset?: number; - }; - header?: never; - path: { - engine_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Job"][]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - run_engine_engine__engine_id__runs_post: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["RunRequest"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Engine"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; - read_run_engine__engine_id__runs__job_id__get: { - parameters: { - query?: never; - header?: never; - path: { - engine_id: string; - job_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Job"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; chat_completion_engines__model__chat_completions_post: { parameters: { query?: never; @@ -60740,6 +60048,698 @@ export interface operations { }; }; }; + list_lenses_lens_get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["LensList"]; + }; + }; + }; + }; + create_lens_lens_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["LensSettings"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Lens"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + preview_sample_lens_preview_sample_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Preview"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Sample"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + claim_lens_worker_claim_post: { + parameters: { + query?: { + protocol_version?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Claim"] | null; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + content_lens_worker__lens_id___job_id__content_get: { + parameters: { + query: { + execution_id: string; + cursor?: string; + offset?: number; + }; + header?: never; + path: { + lens_id: string; + job_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ExecutionContent"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + heartbeat_lens_worker__lens_id___job_id__heartbeat_post: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + job_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": boolean; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + model_lens_worker__lens_id___job_id__model_post: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + job_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["ModelRequest"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ModelResult"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + progress_lens_worker__lens_id___job_id__progress_post: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + job_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Progress"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": boolean; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + result_lens_worker__lens_id___job_id__result_post: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + job_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Result-Input"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Lens"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + sample_lens_worker__lens_id___job_id__sample_get: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + job_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Sample"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + register_worker_lens_workers_register_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["WorkerName"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["WorkerCreated"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + revoke_worker_lens_workers__worker_id__delete: { + parameters: { + query?: never; + header?: never; + path: { + worker_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": boolean; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + set_worker_billing_lens_workers__worker_id__billing_key_put: { + parameters: { + query?: never; + header?: never; + path: { + worker_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["WorkerBilling"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Worker"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + read_lens_lens__lens_id__get: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Lens"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + update_lens_lens__lens_id__put: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["LensSettings"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Lens"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + cancel_lens_lens__lens_id__cancel_post: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Lens"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + evidence_content_lens__lens_id__executions__execution_id__get: { + parameters: { + query?: { + cursor?: string; + offset?: number; + }; + header?: never; + path: { + lens_id: string; + execution_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ExecutionContent"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + update_finding_lens__lens_id__findings__finding_id__patch: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + finding_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["FindingUpdate"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Lens"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + list_runs_lens__lens_id__runs_get: { + parameters: { + query?: { + offset?: number; + }; + header?: never; + path: { + lens_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Job"][]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + run_lens_lens__lens_id__runs_post: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["RunRequest"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Lens"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + read_run_lens__lens_id__runs__job_id__get: { + parameters: { + query?: never; + header?: never; + path: { + lens_id: string; + job_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Job"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; get_ui_config_litellm__well_known_litellm_ui_config_get: { parameters: { query?: never; diff --git a/uv.lock b/uv.lock index e5d79f23211..f7e37818e53 100644 --- a/uv.lock +++ b/uv.lock @@ -4969,6 +4969,16 @@ source = { editable = "enterprise" } name = "litellm-proxy-extras" version = "0.4.103" source = { editable = "litellm-proxy-extras" } +dependencies = [ + { name = "psycopg" }, + { name = "psycopg-binary" }, +] + +[package.metadata] +requires-dist = [ + { name = "psycopg", specifier = ">=3.2,<4.0" }, + { name = "psycopg-binary", specifier = ">=3.2,<4.0" }, +] [[package]] name = "llm-sandbox"

W#QA6gL-y>%Z zXT>7z9*YNEMM*y$zuuHq`!3{Trr@+`ia=VduLMgg&i9Oao!~PbIX?EyUW%6GB6(l3 zH}`$S=OMT64mtc4)gA33ZCAiX2)qzMB+<#Uq&I&^cr~V8uP7K~fMS@(e{1`6{!+{f z=)P1bw4))ejXW2M;`RvwN}$}bjO8XL_sF=qEL~o&hz3!`#D!``1i60gqE2qZkIX59t{T@fV?m-=f3m?=xcDvREQ>ie@4OSBCW))BzBl7^*Ipe z)sm3baQeF*uWZ5( zIS}a)q1;OBz!8{mlpJ}9YBeLjK@0T@M|LKKDEt`=)mK{OU$0slrR@$DH|w#Of@=FK z7CoxIJN)bl9566^=m2m4zRi9|kHPBtg2$mz(5<{#F$|&THo=(lDrt6kMZnbBioG*ja2}9yXx}%coY!&YGmPj# zDf#wGb&J3P&ov&`Pspgx$r4qN(`8p-KiiGPX(MvBvuci$rxU@|5(~`gxDL199wD&WE^efhbIX7j0;YC6+4)14vS{84C?9mrFeT2# zFNzxNqT6Ge;+CWo96x@z`bSwue=hL_;J?iy>C|AXr;>RW z`-JpRs|2@Dw?wvEQ+R&z2V2VS++7^H^ax3Ho#dN=u#uIgjqNSe7DIwZf}VozNa;_p z3gnG7q|}l38bX6h)`@i?!Xj5k*y7F;@I0&blJt}w5sPsBgc98(?!#u?wB^A`Wh89) zX(c=yF%vaBouh3jcB><-3|usZf@z{@+^6e#pW9y6hYMiwuxTc^9PI!ng5ld*j5wI4 z6_L4D>WH8AB3V|l42}%aBXhRzJZ;{7D97fIBY#iYPC-t?>nrbY#eSgLT9g)k5Z>6BN!Zfei(EUH z7|OF0j-dC&Ez&D*g4*U0i6pk<$r8a92_CqIa?wTRUhg(uz0Gvadk!X6L)@L!Bp+70 zpy%E`8~2jKfD#*jR%XVF{_OX`Fc$|$*Vm$o2o5O{QE7}lWw5QMLQ>I$43)%FJlA&y zCM8-;g`!i#!U~WWZ2>#kYQg#+Sf*+Q$5PeN!2z3EYK8Aq8gNZJmc-F}Jyk_P;IC+pMlSyuJ zihCg%YHZvJDjVdS;1JehfuVpOG~~VY^=?g`=L^vzl~0qEFlmWeTW1*HMk|)YMmo}7 z)EiYk!z?qW5Abg8*Iq=Ez57u*>(5IjJKSdh?m`1QmZQD*^GCM}O;&DQtpgFoecRD_ z2JSl;X3h7}r*{mIkVBuodLB1{zYG-~wfaJ{p(U)RDe-~Fdei`0Itf$If|cseNwqs`m&W7^fbX~K4?D@nOFSjKtTOqN80qLl>Y?e5jzKC6HB z>JZOcxJnoaNHlRBdtfS%zFy%A`;3diL*t#%sn&@Y$Pk$woiUdwwPi}$Jr);Z@YPtG zuYd1(Kk95!&!S+-cjd}3;&?&gIJ$-S_;NwB|ybx7-Wp3ZWM4~=d?<+~UWC}GdmCd)%+X8%)#rZiTx!Pjd zM{Cp{j4DjT-_KM&1NiG$+i`TD#9w}InkV6}Zf2|YOp5ucKpy%zwqOs8Bd@!=e@2r0 zAHvLksX=bs>DcQ+Mec=<_F|`pZ7Z_9SZhRbCfkc2V#(JI!6fqy>*6Kfr~4};u^1OEx}unz^31;}9h9Bd%8m90~u ztFwrWQQ_FNaXh8sJkk05A$LD<1}zgZr1ERPf6bHS#Z7k!Z|6S)i_Z*l4{up0++)fjS}OY+l3 z=)1 zlML)W*j0~yyd)6cEn&Z`ZyLh~L5C0vK|OextmN{5Oy^MliFj{*OPFC%>cC2gVI{YI zj_PFi!}a@*k2jC28|2dy+q~6-UN1+pOTIM`37yyn55 z>p|E)87Lb%20Sp#Csw%D_>cc!)f3MUNA10acW`I`#+$gV6vQ_gb{J;R;B1M*IbXy3K z5-8_HpLxzc)b5mJ99HH9T7HxS9rDMg6tc2+7u#Qb{7_8YVLpu68vvxovjNrhMyxH- zJvGpYi+SPj$n%jya7s+DxD98s@GXV|SWf&vzggzP;l;qyvh4EpK`vqcuhwu?&2#pCxx~0w@Su~&3~=9vEME03`?_T3G$4Hc*YS>sE%XSj>SZ&=Ab-Nn+%* z0Fv-mIrXkpsh%b`R}+v@;)H0fWo~^wL#`l)=S8bNY;PQ$9u1iv)!9|Q6fdrgN~~yB zR#|v4+wVkAyHe9~TI}RY6xq7|#eA#Rsb7uU`Bjac*Ysv&R7`z4#O%)UV&8Dk0!yr7 zEp09mfODDXYmb|xU0PGB;;Y6?h@Hv&mVKfH%tt}x_Onmc1eVZT1L>xakdcSxUx^h(kgMi z?`|TqfNurS%@v1{$)XZ#aa5a`_iB_S)0W7cn%!7-76MVDvk@28xG^C6I8}v;`NNFC zXS=hJ+UV{~@5x998JhOS7b+=d-A^7X+J9;#+qo*j;)VA+RFB9xofXNyTe3??g-|2R z*@SRwOzj|o8$0qrDg}Dx|y@}nBxN8^^|`3 zTbxPJphneXICJj%q<3YSc4Wfy2~loQlG54Q2JMjRYsbr?+q~t#{5QM5&;(Hy@4o-u z^Y794|M5;JP?%c=`#GEd_Kn?tp{053GcA9G2=vh~P|>1!-hccza^q0d4NpczQq7I; z&+JIJeJyLS8nNtoELud&H(o!QYKgH~u2VvAcm|PQeYlSLlP}%(Be^RuRcA+B+uAb8 zZBOPTk^%m?-^3YlNSAj+L~qLRj}a60T3!th5-Y8Jp)2^(X~>!!MtH;cO2#n@Vaayj{P4`{0m92dG- zpxk009>Ndv9qNtN@!QYnYUO?OAJb1*E#4TEC)Ey^CJ(HA>m}^d<8#b5qsfysQJx{GK{QLx z0UjYZH7Qh`O0TkK#GI?w zbPh+_)<}vkFTS|PaC;IBFS8_7>)SnUH?`1>5GveDi2>7!5bm%6@okL>QCg$91(?x1 z$4=!qV;@L-io#->|1(K$cHBz?EIz*aZ;3^Iv-mR$ZK{VHxzA`g?Gt0gl^z;Bw8aUY z#e#&C>C?U2@a%&D4d$cj8qcAol_P%1qDR#d3D^q$Awk$4!qL^cI&De0@b(n4T6U=& zjUtI%07va`Ot77;(T8~i&yb8ym?04n=^y8v|3U2hPt+s-)k73NEbp9cw?!92d`#i7 zHPg_{{&hl#j?};~Qj-H4r7Mmt&{eOAcc?JgPzD(*O;S}80e#)BY9s?qn{S2m?7iBm zN0`31HKJ*NmA;PvE;~FE#o+@8Q?XgHn?uMq-Ye*C(YlU9tb&?uDfOOBrR|lyox%fg zPBQaD>&d57u#C{#X)ey#+UdJ77wqd7AGW zbO2g0Kk5UHd)pD*r@65C;W6P#@#fWd1>P45A-%jbvU9uGI9X2jGcA4h)ak}w7KZDM+gk2Q7e|B>PiigfU*+l+jE zU0Pdc*EFWOq0X_^sQocxU{oE?Xz-ZWefXNS5A6aL!Mn^qg`2vdD$&`5_wHU*l}$<%#}GXchE9AnCABnHvbq22mL^Kb&U6OLXTws0=L9R! z;YP-OjO}a1M!NcZhW>u2{CnZ^KiKy`KzTCPH+q4C(!f<@lG_4PW8sPU_H^!M!M8Iv z8~O4J=U7pq4Px7>LMOJwtg>oY*5_hXCF@X<1WtWlBNN+7y)r~URR@0*Kv9_IA5 zX}y~9LfK=1Z1U9Vc440y7_im->v1c(#zusixP2(=p$46cdXD+5*0HcHv}R zqXEB@E$zw(vwW3MXcQB!3|O<+Oy`KVM5R`0m3SoXl|@N8kO!IT8lHkKyvGqo zd8-HhC#=`ne@9Ayn`5dIT`k} z#t)hXccc$wNj^X-t#i4|>82476CUYnOvdhdb88S-~xjvLt}n{$r_k>EzUk;S(j39WRq`2DkO2PABzEr!msx%9J