Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
537cb03
updated openapi provider on examples and fixed node OpenTelemetry env…
ashrafchowdury Dec 17, 2025
94b8ac3
updated doc
ashrafchowdury Dec 17, 2025
2af000a
Merge branch 'main' into updated-openapi-provider-on-examples-code
mmabrouk Jan 5, 2026
319bc7a
v0.78.0
jp-agenta Jan 9, 2026
02367b4
Merge pull request #3376 from Agenta-AI/release/v0.77.0
ashrafchowdury Jan 9, 2026
f47902b
fix: update EMPTY_INPUTS_MESSAGE for clarity and adjust h1 max-width …
bekossy Jan 11, 2026
308fad3
Enhance PlaygroundTool to infer and display built-in tool metadata
bekossy Jan 11, 2026
a1c5a8a
fix
bekossy Jan 11, 2026
86b2cda
v0.77.1
bekossy Jan 12, 2026
c3de402
Merge pull request #3211 from Agenta-AI/updated-openapi-provider-on-e…
mmabrouk Jan 12, 2026
15b4fad
Fix relevant issues
jp-agenta Jan 12, 2026
e325702
Merge pull request #3395 from Agenta-AI/fix/security-issues-by-kolega
bekossy Jan 12, 2026
bd8b8af
Merge pull request #3392 from Agenta-AI/AGE-3548-/-bug-builtin-tools-…
bekossy Jan 12, 2026
6ce6b28
fix sdk webhook
jp-agenta Jan 12, 2026
06c15f7
Merge pull request #3397 from Agenta-AI/fix/security-issues-by-kolega
bekossy Jan 12, 2026
ce85d1c
Merge pull request #3396 from Agenta-AI/AGE-3543-/-empty-table-on-fir…
bekossy Jan 12, 2026
0ce0445
fix
bekossy Jan 12, 2026
33a0f16
Merge pull request #3390 from Agenta-AI/AGE-3546-/-fix-uiux-issues-in…
bekossy Jan 12, 2026
6be4cf6
Merge pull request #3394 from Agenta-AI/release/v0.77.1
jp-agenta Jan 12, 2026
8733934
added show/hide turn messages on session drawer
ashrafchowdury Jan 13, 2026
188dc67
Update button text for message visibility toggle
mmabrouk Jan 13, 2026
e1cde37
fix duration issue
ashrafchowdury Jan 13, 2026
8abbbc8
Merge branch 'enhance/chat-session-drawer' of https://github.com/Agen…
ashrafchowdury Jan 13, 2026
62a4731
refactor: update metric type handling to remove 'null' from enum options
bekossy Jan 13, 2026
2137519
support multiple variant selection in automatic evaluation modal
bekossy Jan 13, 2026
c3cae61
docs(changelog): add Playground UX improvements announcement
mmabrouk Jan 13, 2026
18553de
fix(frontend): show Query column only when online evaluations exist
mmabrouk Jan 13, 2026
9d177b8
v0.77.2
bekossy Jan 13, 2026
4ea796c
Merge pull request #3406 from Agenta-AI/docs/changelog-playground-ux-…
mmabrouk Jan 14, 2026
84c14a6
Merge branch 'main' into release/v0.77.2
mmabrouk Jan 14, 2026
60f9fab
Merge pull request #3400 from Agenta-AI/enhance/chat-session-drawer
bekossy Jan 14, 2026
3b5564b
Merge pull request #3405 from Agenta-AI/AGE-3550-/-support-multiple-v…
bekossy Jan 14, 2026
af64779
Merge pull request #3403 from Agenta-AI/AGE-3549-/-single‑choice-huma…
bekossy Jan 14, 2026
9434a2f
Merge pull request #3408 from Agenta-AI/fix/query-column-visibility
bekossy Jan 14, 2026
b8575cc
Merge pull request #3421 from Agenta-AI/release/v0.77.2
bekossy Jan 14, 2026
b4b335f
Merge branch 'main' into release/v0.78.0
jp-agenta Jan 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions api/entrypoints/routers.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@
testset_router,
user_profile,
variants_router,
bases_router,
configs_router,
health_router,
permissions_router,
Expand Down Expand Up @@ -569,12 +568,6 @@ async def lifespan(*args, **kwargs):
tags=["Environments"],
)

app.include_router(
bases_router.router,
prefix="/bases",
tags=["Bases"],
)

app.include_router(
configs_router.router,
prefix="/configs",
Expand Down
46 changes: 24 additions & 22 deletions api/oss/src/apis/fastapi/testsets/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ async def create_testset(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -555,7 +555,7 @@ async def fetch_testset(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.VIEW_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -584,7 +584,7 @@ async def edit_testset(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -615,7 +615,7 @@ async def archive_testset(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -643,7 +643,7 @@ async def unarchive_testset(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -671,7 +671,7 @@ async def query_testsets(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.VIEW_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -713,7 +713,7 @@ async def create_testset_variant(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand All @@ -738,7 +738,7 @@ async def fetch_testset_variant(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.VIEW_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -767,11 +767,13 @@ async def edit_testset_variant(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

if str(testset_variant_id) not in request.state.user_id:
if str(testset_variant_id) != str(
testset_variant_edit_request.testset_variant.id
):
return TestsetVariantResponse()

testset_variant = await self.testsets_service.edit_testset_variant(
Expand All @@ -798,7 +800,7 @@ async def archive_testset_variant(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -826,7 +828,7 @@ async def unarchive_testset_variant(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -854,7 +856,7 @@ async def query_testset_variants(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.VIEW_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -890,7 +892,7 @@ async def retrieve_testset_revision(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.VIEW_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -944,7 +946,7 @@ async def create_testset_revision(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -977,7 +979,7 @@ async def fetch_testset_revision(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.VIEW_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -1007,7 +1009,7 @@ async def edit_testset_revision(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -1041,7 +1043,7 @@ async def archive_testset_revision(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -1069,7 +1071,7 @@ async def unarchive_testset_revision(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -1183,7 +1185,7 @@ async def query_testset_revisions(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.VIEW_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -1219,7 +1221,7 @@ async def commit_testset_revision(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.EDIT_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down Expand Up @@ -1260,7 +1262,7 @@ async def log_testset_revisions(
if not await check_action_access( # type: ignore
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.EDIT_EVALUATORS, # type: ignore
permission=Permission.VIEW_TESTSETS, # type: ignore
):
raise FORBIDDEN_EXCEPTION # type: ignore

Expand Down
60 changes: 0 additions & 60 deletions api/oss/src/routers/bases_router.py

This file was deleted.

84 changes: 0 additions & 84 deletions api/oss/src/routers/testset_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,90 +203,6 @@ async def upload_file(
raise HTTPException(status_code=403, detail=e.errors())


@router.post(
"/endpoint", response_model=TestsetSimpleResponse, operation_id="import_testset"
)
async def import_testset(
request: Request,
endpoint: str = Form(None),
testset_name: str = Form(None),
authorization: Optional[str] = None,
):
"""
Import JSON testset data from an endpoint and save it to Postgres.

Args:
endpoint (str): An endpoint URL to import data from.
testset_name (str): the name of the testset if provided.

Returns:
dict: The result of the import process.
"""

if is_ee():
has_permission = await check_action_access(
user_uid=request.state.user_id,
project_id=request.state.project_id,
permission=Permission.CREATE_TESTSET,
)
if not has_permission:
error_msg = f"You do not have permission to perform this action. Please contact your organization admin."
log.error(error_msg)
return JSONResponse(
{"detail": error_msg},
status_code=403,
)

try:
response = httpx.get(
endpoint,
timeout=10,
headers={"Authorization": authorization} if authorization else None,
)
if response.status_code != 200:
raise HTTPException(
status_code=400, detail="Failed to fetch testset from endpoint"
)

# Create a document
document = {
"name": testset_name,
"csvdata": [],
}

# Populate the document with column names and values
json_response = response.json()

_validate_testset_limits(json_response)

for row in json_response:
document["csvdata"].append(row)

testset = await db_manager.create_testset(
project_id=request.state.project_id,
testset_data=document,
)
return TestsetSimpleResponse(
id=str(testset.id),
name=document["name"],
created_at=str(testset.created_at),
)

except HTTPException as error:
log.error(error)
raise error
except json.JSONDecodeError as error:
log.error(error)
raise HTTPException(
status_code=400, detail="Endpoint does not return valid JSON testset data"
) from error
except Exception as error:
log.error(error)
raise HTTPException(
status_code=500, detail="Failed to import testset from endpoint"
) from error


@router.post(
"/", response_model=TestsetSimpleResponse, operation_id="create_legacy_testset"
)
Expand Down
2 changes: 1 addition & 1 deletion api/oss/src/routers/variants_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ async def update_variant_url(request: Request, payload: UpdateVariantURLPayload)
traceback.print_exc()
detail = f"Error while trying to update the app variant: {str(e)}"
raise HTTPException(status_code=500, detail=detail)
except:
except Exception as e:
import traceback

traceback.print_exc()
Expand Down
Loading