Skip to content
Merged
Show file tree
Hide file tree
Changes from 57 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
acfcf91
tmp kiln server api client code
sfierro Jan 7, 2026
0fec5e1
copilot_api
sfierro Jan 7, 2026
63a8e20
copilot_api
sfierro Jan 7, 2026
fda057c
Merge branch 'sfierro/specs' into sfierro/specs_server_apis
sfierro Jan 8, 2026
a673712
Merge branch 'sfierro/specs_server_apis' into sfierro/specs_server_ap…
sfierro Jan 8, 2026
385242a
feedback
sfierro Jan 8, 2026
6012133
Merge branch 'sfierro/specs_server_apis' into sfierro/specs_server_ap…
sfierro Jan 8, 2026
6727774
updated schema
sfierro Jan 8, 2026
23811fd
api update
sfierro Jan 8, 2026
d5c93af
ut update
sfierro Jan 8, 2026
5869891
review
sfierro Jan 8, 2026
10e321a
Merge branch 'sfierro/specs_server_apis_use' into sfierro/specs_serve…
sfierro Jan 8, 2026
d0d9e01
refine and generate batch use
sfierro Jan 8, 2026
c2c9863
Merge branch 'sfierro/specs_server_apis_use' into sfierro/specs_serve…
sfierro Jan 8, 2026
3c212cc
refactor: move env vars to central config
leonardmq Jan 12, 2026
7482a56
chore: kiln api base url as config
leonardmq Jan 12, 2026
2d72f06
chore: alias config file
leonardmq Jan 12, 2026
54cddf5
batch of steve feedback
sfierro Jan 13, 2026
a796d50
batch of feedback
sfierro Jan 13, 2026
1d1e2a2
Merge branch 'sfierro/specs_server_apis_use' into sfierro/specs_serve…
sfierro Jan 13, 2026
f1994c2
Merge branch 'sfierro/specs-feedback-batch-1' into sfierro/specs_serv…
sfierro Jan 13, 2026
24ee7b4
call real clarify_spec api
chiang-daniel Jan 13, 2026
451a299
missing import
chiang-daniel Jan 13, 2026
cfa6e28
updated hyperparams to increase number of samples and decrease number…
tawnymanticore Jan 13, 2026
db31603
batch of feedback 2
sfierro Jan 14, 2026
dada9bc
updated hyperparams to increase number of samples and decrease number…
tawnymanticore Jan 13, 2026
eb8a929
merged parent branch
sfierro Jan 14, 2026
ab98123
missing import
sfierro Jan 14, 2026
04adf1f
Merge branch 'sfierro/specs_server_apis_use' into sfierro/specs_serve…
sfierro Jan 14, 2026
ce551b7
fixes
sfierro Jan 14, 2026
e4243ba
Merge branch 'sfierro/specs_server_apis_use' into sfierro/specs_serve…
sfierro Jan 14, 2026
226306d
more feedback
sfierro Jan 14, 2026
cda9b7f
Merge branch 'sfierro/specs_server_apis_use' into sfierro/specs_serve…
sfierro Jan 14, 2026
d7fccd5
authenticated server code
sfierro Jan 14, 2026
8092722
Merge branch 'sfierro/specs_auth_client' into sfierro/specs_server_apis
sfierro Jan 14, 2026
ffbdc21
Merge branch 'sfierro/specs-feedback-batch-1' into sfierro/specs_auth…
sfierro Jan 14, 2026
019a5db
Merge branch 'sfierro/specs_auth_client' into sfierro/specs_server_apis
sfierro Jan 14, 2026
1aa4d89
merged parent branch
sfierro Jan 14, 2026
dc67666
Merge branch 'sfierro/specs_server_apis_use' into sfierro/specs_serve…
sfierro Jan 14, 2026
b4434af
auth redirect fix and button primary
sfierro Jan 14, 2026
af5db92
tmp optional fix
sfierro Jan 14, 2026
18a5fb2
another feedback batch
sfierro Jan 15, 2026
c1348fe
big feedback fixes
sfierro Jan 15, 2026
e79bcb8
oops
sfierro Jan 15, 2026
49b1499
new SDK + api changes
sfierro Jan 15, 2026
7f982c5
big refactor and new api support
sfierro Jan 16, 2026
2a499cc
eval fix
sfierro Jan 16, 2026
8912361
Merge pull request #930 from Kiln-AI/leonard/kil-358-infra-centralize…
leonardmq Jan 16, 2026
280f7a3
Merge branch 'sfierro/specs' into sfierro/specs_bug_bash
sfierro Jan 16, 2026
e199ee7
exclude copilot sdk in typechecking
sfierro Jan 16, 2026
2aeebe1
Revert "chore: move UI config to centralized file"
leonardmq Jan 16, 2026
2deeee9
Merge pull request #944 from Kiln-AI/revert-930-leonard/kil-358-infra…
leonardmq Jan 16, 2026
151c58d
checks all pass
sfierro Jan 16, 2026
61b2d98
little fixes
sfierro Jan 16, 2026
d6a3b27
more fixes
sfierro Jan 16, 2026
98a70a5
tool call and RAG specs do not support copilot
sfierro Jan 16, 2026
3034189
fixed spec persistence (eval cleanup)
sfierro Jan 16, 2026
9542faa
fixes
sfierro Jan 16, 2026
79d0775
kiln_ai_server_client update
sfierro Jan 16, 2026
3b050ed
redirect update kinde
sfierro Jan 16, 2026
edc3d15
lots of fixes
sfierro Jan 21, 2026
2dc0b7b
refactor
sfierro Jan 21, 2026
203c48f
more fixes
sfierro Jan 21, 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
2 changes: 2 additions & 0 deletions app/desktop/desktop_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from kiln_ai.utils.logging import setup_litellm_logging

from app.desktop.log_config import log_config
from app.desktop.studio_server.copilot_api import connect_copilot_api
from app.desktop.studio_server.data_gen_api import connect_data_gen_api
from app.desktop.studio_server.dev_tools import connect_dev_tools
from app.desktop.studio_server.eval_api import connect_evals_api
Expand Down Expand Up @@ -64,6 +65,7 @@ def make_app(tk_root: tk.Tk | None = None):
connect_evals_api(app)
connect_import_api(app, tk_root=tk_root)
connect_tool_servers_api(app)
connect_copilot_api(app)
connect_dev_tools(app)

# Important: webhost must be last, it handles all other URLs
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# kiln-ai-server-client

**Important**: This folder is automatically generated. Do not make any edits, they will be replaced on next generation.

A client library for accessing Kiln AI FastAPI Service

## Usage
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Contains endpoint functions for accessing the API"""
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
from http import HTTPStatus
from typing import Any

import httpx

from ... import errors
from ...client import AuthenticatedClient, Client
from ...types import Response


def _get_kwargs() -> dict[str, Any]:
_kwargs: dict[str, Any] = {
"method": "get",
"url": "/v1/ping",
}

return _kwargs


def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> str | None:
if response.status_code == 200:
response_200 = response.text
return response_200

if client.raise_on_unexpected_status:
raise errors.UnexpectedStatus(response.status_code, response.content)
else:
return None


def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[str]:
return Response(
status_code=HTTPStatus(response.status_code),
content=response.content,
headers=response.headers,
parsed=_parse_response(client=client, response=response),
)


def sync_detailed(
*,
client: AuthenticatedClient,
) -> Response[str]:
"""Secure Ping

Simple ping endpoint, with auth security.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.

Returns:
Response[str]
"""

kwargs = _get_kwargs()

response = client.get_httpx_client().request(
**kwargs,
)

return _build_response(client=client, response=response)


def sync(
*,
client: AuthenticatedClient,
) -> str | None:
"""Secure Ping

Simple ping endpoint, with auth security.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.

Returns:
str
"""

return sync_detailed(
client=client,
).parsed


async def asyncio_detailed(
*,
client: AuthenticatedClient,
) -> Response[str]:
"""Secure Ping

Simple ping endpoint, with auth security.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.

Returns:
Response[str]
"""

kwargs = _get_kwargs()

response = await client.get_async_httpx_client().request(**kwargs)

return _build_response(client=client, response=response)


async def asyncio(
*,
client: AuthenticatedClient,
) -> str | None:
"""Secure Ping

Simple ping endpoint, with auth security.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.

Returns:
str
"""

return (
await asyncio_detailed(
client=client,
)
).parsed
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
from http import HTTPStatus
from typing import Any

import httpx

from ... import errors
from ...client import AuthenticatedClient, Client
from ...models.api_key_verification_result import ApiKeyVerificationResult
from ...types import Response


def _get_kwargs() -> dict[str, Any]:
_kwargs: dict[str, Any] = {
"method": "get",
"url": "/v1/verify_api_key",
}

return _kwargs


def _parse_response(
*, client: AuthenticatedClient | Client, response: httpx.Response
) -> ApiKeyVerificationResult | None:
if response.status_code == 200:
response_200 = ApiKeyVerificationResult.from_dict(response.json())

return response_200

if client.raise_on_unexpected_status:
raise errors.UnexpectedStatus(response.status_code, response.content)
else:
return None


def _build_response(
*, client: AuthenticatedClient | Client, response: httpx.Response
) -> Response[ApiKeyVerificationResult]:
return Response(
status_code=HTTPStatus(response.status_code),
content=response.content,
headers=response.headers,
parsed=_parse_response(client=client, response=response),
)


def sync_detailed(
*,
client: AuthenticatedClient,
) -> Response[ApiKeyVerificationResult]:
"""Verify Api Key

Verify an API key. If auth passes, return a success response.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.

Returns:
Response[ApiKeyVerificationResult]
"""

kwargs = _get_kwargs()

response = client.get_httpx_client().request(
**kwargs,
)

return _build_response(client=client, response=response)


def sync(
*,
client: AuthenticatedClient,
) -> ApiKeyVerificationResult | None:
"""Verify Api Key

Verify an API key. If auth passes, return a success response.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.

Returns:
ApiKeyVerificationResult
"""

return sync_detailed(
client=client,
).parsed


async def asyncio_detailed(
*,
client: AuthenticatedClient,
) -> Response[ApiKeyVerificationResult]:
"""Verify Api Key

Verify an API key. If auth passes, return a success response.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.

Returns:
Response[ApiKeyVerificationResult]
"""

kwargs = _get_kwargs()

response = await client.get_async_httpx_client().request(**kwargs)

return _build_response(client=client, response=response)


async def asyncio(
*,
client: AuthenticatedClient,
) -> ApiKeyVerificationResult | None:
"""Verify Api Key

Verify an API key. If auth passes, return a success response.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.

Returns:
ApiKeyVerificationResult
"""

return (
await asyncio_detailed(
client=client,
)
).parsed
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Contains endpoint functions for accessing the API"""
Loading
Loading