hackagent 0.3.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hackagent/__init__.py +12 -0
- hackagent/agent.py +214 -0
- hackagent/api/__init__.py +1 -0
- hackagent/api/agent/__init__.py +1 -0
- hackagent/api/agent/agent_create.py +347 -0
- hackagent/api/agent/agent_destroy.py +140 -0
- hackagent/api/agent/agent_list.py +242 -0
- hackagent/api/agent/agent_partial_update.py +361 -0
- hackagent/api/agent/agent_retrieve.py +235 -0
- hackagent/api/agent/agent_update.py +361 -0
- hackagent/api/apilogs/__init__.py +1 -0
- hackagent/api/apilogs/apilogs_list.py +170 -0
- hackagent/api/apilogs/apilogs_retrieve.py +162 -0
- hackagent/api/attack/__init__.py +1 -0
- hackagent/api/attack/attack_create.py +275 -0
- hackagent/api/attack/attack_destroy.py +146 -0
- hackagent/api/attack/attack_list.py +254 -0
- hackagent/api/attack/attack_partial_update.py +289 -0
- hackagent/api/attack/attack_retrieve.py +247 -0
- hackagent/api/attack/attack_update.py +289 -0
- hackagent/api/checkout/__init__.py +1 -0
- hackagent/api/checkout/checkout_create.py +225 -0
- hackagent/api/generate/__init__.py +1 -0
- hackagent/api/generate/generate_create.py +253 -0
- hackagent/api/judge/__init__.py +1 -0
- hackagent/api/judge/judge_create.py +253 -0
- hackagent/api/key/__init__.py +1 -0
- hackagent/api/key/key_create.py +179 -0
- hackagent/api/key/key_destroy.py +103 -0
- hackagent/api/key/key_list.py +170 -0
- hackagent/api/key/key_retrieve.py +162 -0
- hackagent/api/organization/__init__.py +1 -0
- hackagent/api/organization/organization_create.py +208 -0
- hackagent/api/organization/organization_destroy.py +104 -0
- hackagent/api/organization/organization_list.py +170 -0
- hackagent/api/organization/organization_me_retrieve.py +126 -0
- hackagent/api/organization/organization_partial_update.py +222 -0
- hackagent/api/organization/organization_retrieve.py +163 -0
- hackagent/api/organization/organization_update.py +222 -0
- hackagent/api/prompt/__init__.py +1 -0
- hackagent/api/prompt/prompt_create.py +171 -0
- hackagent/api/prompt/prompt_destroy.py +104 -0
- hackagent/api/prompt/prompt_list.py +185 -0
- hackagent/api/prompt/prompt_partial_update.py +185 -0
- hackagent/api/prompt/prompt_retrieve.py +163 -0
- hackagent/api/prompt/prompt_update.py +185 -0
- hackagent/api/result/__init__.py +1 -0
- hackagent/api/result/result_create.py +175 -0
- hackagent/api/result/result_destroy.py +106 -0
- hackagent/api/result/result_list.py +249 -0
- hackagent/api/result/result_partial_update.py +193 -0
- hackagent/api/result/result_retrieve.py +167 -0
- hackagent/api/result/result_trace_create.py +177 -0
- hackagent/api/result/result_update.py +189 -0
- hackagent/api/run/__init__.py +1 -0
- hackagent/api/run/run_create.py +187 -0
- hackagent/api/run/run_destroy.py +112 -0
- hackagent/api/run/run_list.py +291 -0
- hackagent/api/run/run_partial_update.py +201 -0
- hackagent/api/run/run_result_create.py +177 -0
- hackagent/api/run/run_retrieve.py +179 -0
- hackagent/api/run/run_run_tests_create.py +187 -0
- hackagent/api/run/run_update.py +201 -0
- hackagent/api/user/__init__.py +1 -0
- hackagent/api/user/user_create.py +212 -0
- hackagent/api/user/user_destroy.py +106 -0
- hackagent/api/user/user_list.py +174 -0
- hackagent/api/user/user_me_retrieve.py +126 -0
- hackagent/api/user/user_me_update.py +196 -0
- hackagent/api/user/user_partial_update.py +226 -0
- hackagent/api/user/user_retrieve.py +167 -0
- hackagent/api/user/user_update.py +226 -0
- hackagent/attacks/AdvPrefix/__init__.py +41 -0
- hackagent/attacks/AdvPrefix/completions.py +416 -0
- hackagent/attacks/AdvPrefix/config.py +259 -0
- hackagent/attacks/AdvPrefix/evaluation.py +745 -0
- hackagent/attacks/AdvPrefix/evaluators.py +564 -0
- hackagent/attacks/AdvPrefix/generate.py +711 -0
- hackagent/attacks/AdvPrefix/utils.py +307 -0
- hackagent/attacks/__init__.py +35 -0
- hackagent/attacks/advprefix.py +507 -0
- hackagent/attacks/base.py +106 -0
- hackagent/attacks/strategies.py +906 -0
- hackagent/cli/__init__.py +19 -0
- hackagent/cli/commands/__init__.py +20 -0
- hackagent/cli/commands/agent.py +100 -0
- hackagent/cli/commands/attack.py +417 -0
- hackagent/cli/commands/config.py +301 -0
- hackagent/cli/commands/results.py +327 -0
- hackagent/cli/config.py +249 -0
- hackagent/cli/main.py +515 -0
- hackagent/cli/tui/__init__.py +31 -0
- hackagent/cli/tui/actions_logger.py +200 -0
- hackagent/cli/tui/app.py +288 -0
- hackagent/cli/tui/base.py +137 -0
- hackagent/cli/tui/logger.py +318 -0
- hackagent/cli/tui/views/__init__.py +33 -0
- hackagent/cli/tui/views/agents.py +488 -0
- hackagent/cli/tui/views/attacks.py +624 -0
- hackagent/cli/tui/views/config.py +244 -0
- hackagent/cli/tui/views/dashboard.py +307 -0
- hackagent/cli/tui/views/results.py +1210 -0
- hackagent/cli/tui/widgets/__init__.py +24 -0
- hackagent/cli/tui/widgets/actions.py +346 -0
- hackagent/cli/tui/widgets/logs.py +435 -0
- hackagent/cli/utils.py +276 -0
- hackagent/client.py +286 -0
- hackagent/errors.py +37 -0
- hackagent/logger.py +83 -0
- hackagent/models/__init__.py +109 -0
- hackagent/models/agent.py +223 -0
- hackagent/models/agent_request.py +129 -0
- hackagent/models/api_token_log.py +184 -0
- hackagent/models/attack.py +154 -0
- hackagent/models/attack_request.py +82 -0
- hackagent/models/checkout_session_request_request.py +76 -0
- hackagent/models/checkout_session_response.py +59 -0
- hackagent/models/choice.py +81 -0
- hackagent/models/choice_message.py +67 -0
- hackagent/models/evaluation_status_enum.py +14 -0
- hackagent/models/generate_error_response.py +59 -0
- hackagent/models/generate_request_request.py +212 -0
- hackagent/models/generate_success_response.py +115 -0
- hackagent/models/generic_error_response.py +70 -0
- hackagent/models/message_request.py +67 -0
- hackagent/models/organization.py +102 -0
- hackagent/models/organization_minimal.py +68 -0
- hackagent/models/organization_request.py +71 -0
- hackagent/models/paginated_agent_list.py +123 -0
- hackagent/models/paginated_api_token_log_list.py +123 -0
- hackagent/models/paginated_attack_list.py +123 -0
- hackagent/models/paginated_organization_list.py +123 -0
- hackagent/models/paginated_prompt_list.py +123 -0
- hackagent/models/paginated_result_list.py +123 -0
- hackagent/models/paginated_run_list.py +123 -0
- hackagent/models/paginated_user_api_key_list.py +123 -0
- hackagent/models/paginated_user_profile_list.py +123 -0
- hackagent/models/patched_agent_request.py +128 -0
- hackagent/models/patched_attack_request.py +92 -0
- hackagent/models/patched_organization_request.py +71 -0
- hackagent/models/patched_prompt_request.py +125 -0
- hackagent/models/patched_result_request.py +237 -0
- hackagent/models/patched_run_request.py +138 -0
- hackagent/models/patched_user_profile_request.py +99 -0
- hackagent/models/prompt.py +220 -0
- hackagent/models/prompt_request.py +126 -0
- hackagent/models/result.py +294 -0
- hackagent/models/result_list_evaluation_status.py +14 -0
- hackagent/models/result_request.py +232 -0
- hackagent/models/run.py +233 -0
- hackagent/models/run_list_status.py +12 -0
- hackagent/models/run_request.py +133 -0
- hackagent/models/status_enum.py +12 -0
- hackagent/models/step_type_enum.py +14 -0
- hackagent/models/trace.py +121 -0
- hackagent/models/trace_request.py +94 -0
- hackagent/models/usage.py +75 -0
- hackagent/models/user_api_key.py +201 -0
- hackagent/models/user_api_key_request.py +73 -0
- hackagent/models/user_profile.py +135 -0
- hackagent/models/user_profile_minimal.py +76 -0
- hackagent/models/user_profile_request.py +99 -0
- hackagent/router/__init__.py +25 -0
- hackagent/router/adapters/__init__.py +20 -0
- hackagent/router/adapters/base.py +63 -0
- hackagent/router/adapters/google_adk.py +671 -0
- hackagent/router/adapters/litellm_adapter.py +524 -0
- hackagent/router/adapters/openai_adapter.py +426 -0
- hackagent/router/router.py +969 -0
- hackagent/router/types.py +54 -0
- hackagent/tracking/__init__.py +42 -0
- hackagent/tracking/context.py +163 -0
- hackagent/tracking/decorators.py +299 -0
- hackagent/tracking/tracker.py +441 -0
- hackagent/types.py +54 -0
- hackagent/utils.py +194 -0
- hackagent/vulnerabilities/__init__.py +13 -0
- hackagent/vulnerabilities/prompts.py +81 -0
- hackagent-0.3.1.dist-info/METADATA +122 -0
- hackagent-0.3.1.dist-info/RECORD +183 -0
- hackagent-0.3.1.dist-info/WHEEL +4 -0
- hackagent-0.3.1.dist-info/entry_points.txt +2 -0
- hackagent-0.3.1.dist-info/licenses/LICENSE +202 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any, Optional, Union
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
|
|
6
|
+
from ... import errors
|
|
7
|
+
from ...client import AuthenticatedClient, Client
|
|
8
|
+
from ...models.generate_error_response import GenerateErrorResponse
|
|
9
|
+
from ...models.generate_request_request import GenerateRequestRequest
|
|
10
|
+
from ...models.generate_success_response import GenerateSuccessResponse
|
|
11
|
+
from ...types import Response
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _get_kwargs(
|
|
15
|
+
*,
|
|
16
|
+
body: Union[
|
|
17
|
+
GenerateRequestRequest,
|
|
18
|
+
GenerateRequestRequest,
|
|
19
|
+
GenerateRequestRequest,
|
|
20
|
+
],
|
|
21
|
+
) -> dict[str, Any]:
|
|
22
|
+
headers: dict[str, Any] = {}
|
|
23
|
+
|
|
24
|
+
_kwargs: dict[str, Any] = {
|
|
25
|
+
"method": "post",
|
|
26
|
+
"url": "/generate",
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if isinstance(body, GenerateRequestRequest):
|
|
30
|
+
_kwargs["json"] = body.to_dict()
|
|
31
|
+
|
|
32
|
+
headers["Content-Type"] = "application/json"
|
|
33
|
+
if isinstance(body, GenerateRequestRequest):
|
|
34
|
+
_kwargs["data"] = body.to_dict()
|
|
35
|
+
|
|
36
|
+
headers["Content-Type"] = "application/x-www-form-urlencoded"
|
|
37
|
+
if isinstance(body, GenerateRequestRequest):
|
|
38
|
+
_kwargs["files"] = body.to_multipart()
|
|
39
|
+
|
|
40
|
+
headers["Content-Type"] = "multipart/form-data"
|
|
41
|
+
|
|
42
|
+
_kwargs["headers"] = headers
|
|
43
|
+
return _kwargs
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _parse_response(
|
|
47
|
+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
|
|
48
|
+
) -> Optional[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
49
|
+
if response.status_code == 200:
|
|
50
|
+
response_200 = GenerateSuccessResponse.from_dict(response.json())
|
|
51
|
+
|
|
52
|
+
return response_200
|
|
53
|
+
if response.status_code == 400:
|
|
54
|
+
response_400 = GenerateErrorResponse.from_dict(response.json())
|
|
55
|
+
|
|
56
|
+
return response_400
|
|
57
|
+
if response.status_code == 402:
|
|
58
|
+
response_402 = GenerateErrorResponse.from_dict(response.json())
|
|
59
|
+
|
|
60
|
+
return response_402
|
|
61
|
+
if response.status_code == 403:
|
|
62
|
+
response_403 = GenerateErrorResponse.from_dict(response.json())
|
|
63
|
+
|
|
64
|
+
return response_403
|
|
65
|
+
if response.status_code == 500:
|
|
66
|
+
response_500 = GenerateErrorResponse.from_dict(response.json())
|
|
67
|
+
|
|
68
|
+
return response_500
|
|
69
|
+
if response.status_code == 502:
|
|
70
|
+
response_502 = GenerateErrorResponse.from_dict(response.json())
|
|
71
|
+
|
|
72
|
+
return response_502
|
|
73
|
+
if response.status_code == 504:
|
|
74
|
+
response_504 = GenerateErrorResponse.from_dict(response.json())
|
|
75
|
+
|
|
76
|
+
return response_504
|
|
77
|
+
if client.raise_on_unexpected_status:
|
|
78
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
79
|
+
else:
|
|
80
|
+
return None
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _build_response(
|
|
84
|
+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
|
|
85
|
+
) -> Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
86
|
+
return Response(
|
|
87
|
+
status_code=HTTPStatus(response.status_code),
|
|
88
|
+
content=response.content,
|
|
89
|
+
headers=response.headers,
|
|
90
|
+
parsed=_parse_response(client=client, response=response),
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def sync_detailed(
|
|
95
|
+
*,
|
|
96
|
+
client: AuthenticatedClient,
|
|
97
|
+
body: Union[
|
|
98
|
+
GenerateRequestRequest,
|
|
99
|
+
GenerateRequestRequest,
|
|
100
|
+
GenerateRequestRequest,
|
|
101
|
+
],
|
|
102
|
+
) -> Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
103
|
+
"""Generate text using AI Provider
|
|
104
|
+
|
|
105
|
+
Handles POST requests to generate text via a configured AI provider.
|
|
106
|
+
The request body should match the AI provider's chat completions (or similar) format,
|
|
107
|
+
though the 'model' field will be overridden by the server-configured generator model ID.
|
|
108
|
+
Billing and logging are handled internally.
|
|
109
|
+
|
|
110
|
+
SDK-primary endpoint - API Key authentication is recommended for programmatic access.
|
|
111
|
+
This is a core SDK operation for AI model generation in security tests.
|
|
112
|
+
|
|
113
|
+
Args:
|
|
114
|
+
body (GenerateRequestRequest):
|
|
115
|
+
body (GenerateRequestRequest):
|
|
116
|
+
body (GenerateRequestRequest):
|
|
117
|
+
|
|
118
|
+
Raises:
|
|
119
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
120
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
kwargs = _get_kwargs(
|
|
127
|
+
body=body,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
response = client.get_httpx_client().request(
|
|
131
|
+
**kwargs,
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
return _build_response(client=client, response=response)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def sync(
|
|
138
|
+
*,
|
|
139
|
+
client: AuthenticatedClient,
|
|
140
|
+
body: Union[
|
|
141
|
+
GenerateRequestRequest,
|
|
142
|
+
GenerateRequestRequest,
|
|
143
|
+
GenerateRequestRequest,
|
|
144
|
+
],
|
|
145
|
+
) -> Optional[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
146
|
+
"""Generate text using AI Provider
|
|
147
|
+
|
|
148
|
+
Handles POST requests to generate text via a configured AI provider.
|
|
149
|
+
The request body should match the AI provider's chat completions (or similar) format,
|
|
150
|
+
though the 'model' field will be overridden by the server-configured generator model ID.
|
|
151
|
+
Billing and logging are handled internally.
|
|
152
|
+
|
|
153
|
+
SDK-primary endpoint - API Key authentication is recommended for programmatic access.
|
|
154
|
+
This is a core SDK operation for AI model generation in security tests.
|
|
155
|
+
|
|
156
|
+
Args:
|
|
157
|
+
body (GenerateRequestRequest):
|
|
158
|
+
body (GenerateRequestRequest):
|
|
159
|
+
body (GenerateRequestRequest):
|
|
160
|
+
|
|
161
|
+
Raises:
|
|
162
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
163
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
Union[GenerateErrorResponse, GenerateSuccessResponse]
|
|
167
|
+
"""
|
|
168
|
+
|
|
169
|
+
return sync_detailed(
|
|
170
|
+
client=client,
|
|
171
|
+
body=body,
|
|
172
|
+
).parsed
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
async def asyncio_detailed(
|
|
176
|
+
*,
|
|
177
|
+
client: AuthenticatedClient,
|
|
178
|
+
body: Union[
|
|
179
|
+
GenerateRequestRequest,
|
|
180
|
+
GenerateRequestRequest,
|
|
181
|
+
GenerateRequestRequest,
|
|
182
|
+
],
|
|
183
|
+
) -> Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
184
|
+
"""Generate text using AI Provider
|
|
185
|
+
|
|
186
|
+
Handles POST requests to generate text via a configured AI provider.
|
|
187
|
+
The request body should match the AI provider's chat completions (or similar) format,
|
|
188
|
+
though the 'model' field will be overridden by the server-configured generator model ID.
|
|
189
|
+
Billing and logging are handled internally.
|
|
190
|
+
|
|
191
|
+
SDK-primary endpoint - API Key authentication is recommended for programmatic access.
|
|
192
|
+
This is a core SDK operation for AI model generation in security tests.
|
|
193
|
+
|
|
194
|
+
Args:
|
|
195
|
+
body (GenerateRequestRequest):
|
|
196
|
+
body (GenerateRequestRequest):
|
|
197
|
+
body (GenerateRequestRequest):
|
|
198
|
+
|
|
199
|
+
Raises:
|
|
200
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
201
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
202
|
+
|
|
203
|
+
Returns:
|
|
204
|
+
Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]
|
|
205
|
+
"""
|
|
206
|
+
|
|
207
|
+
kwargs = _get_kwargs(
|
|
208
|
+
body=body,
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
response = await client.get_async_httpx_client().request(**kwargs)
|
|
212
|
+
|
|
213
|
+
return _build_response(client=client, response=response)
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
async def asyncio(
|
|
217
|
+
*,
|
|
218
|
+
client: AuthenticatedClient,
|
|
219
|
+
body: Union[
|
|
220
|
+
GenerateRequestRequest,
|
|
221
|
+
GenerateRequestRequest,
|
|
222
|
+
GenerateRequestRequest,
|
|
223
|
+
],
|
|
224
|
+
) -> Optional[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
225
|
+
"""Generate text using AI Provider
|
|
226
|
+
|
|
227
|
+
Handles POST requests to generate text via a configured AI provider.
|
|
228
|
+
The request body should match the AI provider's chat completions (or similar) format,
|
|
229
|
+
though the 'model' field will be overridden by the server-configured generator model ID.
|
|
230
|
+
Billing and logging are handled internally.
|
|
231
|
+
|
|
232
|
+
SDK-primary endpoint - API Key authentication is recommended for programmatic access.
|
|
233
|
+
This is a core SDK operation for AI model generation in security tests.
|
|
234
|
+
|
|
235
|
+
Args:
|
|
236
|
+
body (GenerateRequestRequest):
|
|
237
|
+
body (GenerateRequestRequest):
|
|
238
|
+
body (GenerateRequestRequest):
|
|
239
|
+
|
|
240
|
+
Raises:
|
|
241
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
242
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
243
|
+
|
|
244
|
+
Returns:
|
|
245
|
+
Union[GenerateErrorResponse, GenerateSuccessResponse]
|
|
246
|
+
"""
|
|
247
|
+
|
|
248
|
+
return (
|
|
249
|
+
await asyncio_detailed(
|
|
250
|
+
client=client,
|
|
251
|
+
body=body,
|
|
252
|
+
)
|
|
253
|
+
).parsed
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Contains endpoint functions for accessing the API"""
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any, Optional, Union
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
|
|
6
|
+
from ... import errors
|
|
7
|
+
from ...client import AuthenticatedClient, Client
|
|
8
|
+
from ...models.generate_error_response import GenerateErrorResponse
|
|
9
|
+
from ...models.generate_request_request import GenerateRequestRequest
|
|
10
|
+
from ...models.generate_success_response import GenerateSuccessResponse
|
|
11
|
+
from ...types import Response
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _get_kwargs(
|
|
15
|
+
*,
|
|
16
|
+
body: Union[
|
|
17
|
+
GenerateRequestRequest,
|
|
18
|
+
GenerateRequestRequest,
|
|
19
|
+
GenerateRequestRequest,
|
|
20
|
+
],
|
|
21
|
+
) -> dict[str, Any]:
|
|
22
|
+
headers: dict[str, Any] = {}
|
|
23
|
+
|
|
24
|
+
_kwargs: dict[str, Any] = {
|
|
25
|
+
"method": "post",
|
|
26
|
+
"url": "/judge",
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if isinstance(body, GenerateRequestRequest):
|
|
30
|
+
_kwargs["json"] = body.to_dict()
|
|
31
|
+
|
|
32
|
+
headers["Content-Type"] = "application/json"
|
|
33
|
+
if isinstance(body, GenerateRequestRequest):
|
|
34
|
+
_kwargs["data"] = body.to_dict()
|
|
35
|
+
|
|
36
|
+
headers["Content-Type"] = "application/x-www-form-urlencoded"
|
|
37
|
+
if isinstance(body, GenerateRequestRequest):
|
|
38
|
+
_kwargs["files"] = body.to_multipart()
|
|
39
|
+
|
|
40
|
+
headers["Content-Type"] = "multipart/form-data"
|
|
41
|
+
|
|
42
|
+
_kwargs["headers"] = headers
|
|
43
|
+
return _kwargs
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _parse_response(
|
|
47
|
+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
|
|
48
|
+
) -> Optional[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
49
|
+
if response.status_code == 200:
|
|
50
|
+
response_200 = GenerateSuccessResponse.from_dict(response.json())
|
|
51
|
+
|
|
52
|
+
return response_200
|
|
53
|
+
if response.status_code == 400:
|
|
54
|
+
response_400 = GenerateErrorResponse.from_dict(response.json())
|
|
55
|
+
|
|
56
|
+
return response_400
|
|
57
|
+
if response.status_code == 402:
|
|
58
|
+
response_402 = GenerateErrorResponse.from_dict(response.json())
|
|
59
|
+
|
|
60
|
+
return response_402
|
|
61
|
+
if response.status_code == 403:
|
|
62
|
+
response_403 = GenerateErrorResponse.from_dict(response.json())
|
|
63
|
+
|
|
64
|
+
return response_403
|
|
65
|
+
if response.status_code == 500:
|
|
66
|
+
response_500 = GenerateErrorResponse.from_dict(response.json())
|
|
67
|
+
|
|
68
|
+
return response_500
|
|
69
|
+
if response.status_code == 502:
|
|
70
|
+
response_502 = GenerateErrorResponse.from_dict(response.json())
|
|
71
|
+
|
|
72
|
+
return response_502
|
|
73
|
+
if response.status_code == 504:
|
|
74
|
+
response_504 = GenerateErrorResponse.from_dict(response.json())
|
|
75
|
+
|
|
76
|
+
return response_504
|
|
77
|
+
if client.raise_on_unexpected_status:
|
|
78
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
79
|
+
else:
|
|
80
|
+
return None
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _build_response(
|
|
84
|
+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
|
|
85
|
+
) -> Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
86
|
+
return Response(
|
|
87
|
+
status_code=HTTPStatus(response.status_code),
|
|
88
|
+
content=response.content,
|
|
89
|
+
headers=response.headers,
|
|
90
|
+
parsed=_parse_response(client=client, response=response),
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def sync_detailed(
|
|
95
|
+
*,
|
|
96
|
+
client: AuthenticatedClient,
|
|
97
|
+
body: Union[
|
|
98
|
+
GenerateRequestRequest,
|
|
99
|
+
GenerateRequestRequest,
|
|
100
|
+
GenerateRequestRequest,
|
|
101
|
+
],
|
|
102
|
+
) -> Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
103
|
+
"""Judge text or assess content using an AI Provider
|
|
104
|
+
|
|
105
|
+
Handles POST requests to assess or judge content via a configured Judge AI provider.
|
|
106
|
+
The request body should match the AI provider's expected format (e.g. chat completions),
|
|
107
|
+
though the 'model' field will be overridden by the server-configured judge model ID.
|
|
108
|
+
Billing and logging are handled internally.
|
|
109
|
+
|
|
110
|
+
SDK-primary endpoint - API Key authentication is recommended for programmatic access.
|
|
111
|
+
This is a core SDK operation for AI-based evaluation in security tests.
|
|
112
|
+
|
|
113
|
+
Args:
|
|
114
|
+
body (GenerateRequestRequest):
|
|
115
|
+
body (GenerateRequestRequest):
|
|
116
|
+
body (GenerateRequestRequest):
|
|
117
|
+
|
|
118
|
+
Raises:
|
|
119
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
120
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
kwargs = _get_kwargs(
|
|
127
|
+
body=body,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
response = client.get_httpx_client().request(
|
|
131
|
+
**kwargs,
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
return _build_response(client=client, response=response)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def sync(
|
|
138
|
+
*,
|
|
139
|
+
client: AuthenticatedClient,
|
|
140
|
+
body: Union[
|
|
141
|
+
GenerateRequestRequest,
|
|
142
|
+
GenerateRequestRequest,
|
|
143
|
+
GenerateRequestRequest,
|
|
144
|
+
],
|
|
145
|
+
) -> Optional[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
146
|
+
"""Judge text or assess content using an AI Provider
|
|
147
|
+
|
|
148
|
+
Handles POST requests to assess or judge content via a configured Judge AI provider.
|
|
149
|
+
The request body should match the AI provider's expected format (e.g. chat completions),
|
|
150
|
+
though the 'model' field will be overridden by the server-configured judge model ID.
|
|
151
|
+
Billing and logging are handled internally.
|
|
152
|
+
|
|
153
|
+
SDK-primary endpoint - API Key authentication is recommended for programmatic access.
|
|
154
|
+
This is a core SDK operation for AI-based evaluation in security tests.
|
|
155
|
+
|
|
156
|
+
Args:
|
|
157
|
+
body (GenerateRequestRequest):
|
|
158
|
+
body (GenerateRequestRequest):
|
|
159
|
+
body (GenerateRequestRequest):
|
|
160
|
+
|
|
161
|
+
Raises:
|
|
162
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
163
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
Union[GenerateErrorResponse, GenerateSuccessResponse]
|
|
167
|
+
"""
|
|
168
|
+
|
|
169
|
+
return sync_detailed(
|
|
170
|
+
client=client,
|
|
171
|
+
body=body,
|
|
172
|
+
).parsed
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
async def asyncio_detailed(
|
|
176
|
+
*,
|
|
177
|
+
client: AuthenticatedClient,
|
|
178
|
+
body: Union[
|
|
179
|
+
GenerateRequestRequest,
|
|
180
|
+
GenerateRequestRequest,
|
|
181
|
+
GenerateRequestRequest,
|
|
182
|
+
],
|
|
183
|
+
) -> Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
184
|
+
"""Judge text or assess content using an AI Provider
|
|
185
|
+
|
|
186
|
+
Handles POST requests to assess or judge content via a configured Judge AI provider.
|
|
187
|
+
The request body should match the AI provider's expected format (e.g. chat completions),
|
|
188
|
+
though the 'model' field will be overridden by the server-configured judge model ID.
|
|
189
|
+
Billing and logging are handled internally.
|
|
190
|
+
|
|
191
|
+
SDK-primary endpoint - API Key authentication is recommended for programmatic access.
|
|
192
|
+
This is a core SDK operation for AI-based evaluation in security tests.
|
|
193
|
+
|
|
194
|
+
Args:
|
|
195
|
+
body (GenerateRequestRequest):
|
|
196
|
+
body (GenerateRequestRequest):
|
|
197
|
+
body (GenerateRequestRequest):
|
|
198
|
+
|
|
199
|
+
Raises:
|
|
200
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
201
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
202
|
+
|
|
203
|
+
Returns:
|
|
204
|
+
Response[Union[GenerateErrorResponse, GenerateSuccessResponse]]
|
|
205
|
+
"""
|
|
206
|
+
|
|
207
|
+
kwargs = _get_kwargs(
|
|
208
|
+
body=body,
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
response = await client.get_async_httpx_client().request(**kwargs)
|
|
212
|
+
|
|
213
|
+
return _build_response(client=client, response=response)
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
async def asyncio(
|
|
217
|
+
*,
|
|
218
|
+
client: AuthenticatedClient,
|
|
219
|
+
body: Union[
|
|
220
|
+
GenerateRequestRequest,
|
|
221
|
+
GenerateRequestRequest,
|
|
222
|
+
GenerateRequestRequest,
|
|
223
|
+
],
|
|
224
|
+
) -> Optional[Union[GenerateErrorResponse, GenerateSuccessResponse]]:
|
|
225
|
+
"""Judge text or assess content using an AI Provider
|
|
226
|
+
|
|
227
|
+
Handles POST requests to assess or judge content via a configured Judge AI provider.
|
|
228
|
+
The request body should match the AI provider's expected format (e.g. chat completions),
|
|
229
|
+
though the 'model' field will be overridden by the server-configured judge model ID.
|
|
230
|
+
Billing and logging are handled internally.
|
|
231
|
+
|
|
232
|
+
SDK-primary endpoint - API Key authentication is recommended for programmatic access.
|
|
233
|
+
This is a core SDK operation for AI-based evaluation in security tests.
|
|
234
|
+
|
|
235
|
+
Args:
|
|
236
|
+
body (GenerateRequestRequest):
|
|
237
|
+
body (GenerateRequestRequest):
|
|
238
|
+
body (GenerateRequestRequest):
|
|
239
|
+
|
|
240
|
+
Raises:
|
|
241
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
242
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
243
|
+
|
|
244
|
+
Returns:
|
|
245
|
+
Union[GenerateErrorResponse, GenerateSuccessResponse]
|
|
246
|
+
"""
|
|
247
|
+
|
|
248
|
+
return (
|
|
249
|
+
await asyncio_detailed(
|
|
250
|
+
client=client,
|
|
251
|
+
body=body,
|
|
252
|
+
)
|
|
253
|
+
).parsed
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Contains endpoint functions for accessing the API"""
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
from http import HTTPStatus
|
|
2
|
+
from typing import Any, Optional, Union
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
|
|
6
|
+
from ... import errors
|
|
7
|
+
from ...client import AuthenticatedClient, Client
|
|
8
|
+
from ...models.user_api_key import UserAPIKey
|
|
9
|
+
from ...models.user_api_key_request import UserAPIKeyRequest
|
|
10
|
+
from ...types import Response
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _get_kwargs(
|
|
14
|
+
*,
|
|
15
|
+
body: UserAPIKeyRequest,
|
|
16
|
+
) -> dict[str, Any]:
|
|
17
|
+
headers: dict[str, Any] = {}
|
|
18
|
+
|
|
19
|
+
_kwargs: dict[str, Any] = {
|
|
20
|
+
"method": "post",
|
|
21
|
+
"url": "/key",
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
_kwargs["json"] = body.to_dict()
|
|
25
|
+
|
|
26
|
+
headers["Content-Type"] = "application/json"
|
|
27
|
+
|
|
28
|
+
_kwargs["headers"] = headers
|
|
29
|
+
return _kwargs
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _parse_response(
|
|
33
|
+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
|
|
34
|
+
) -> Optional[UserAPIKey]:
|
|
35
|
+
if response.status_code == 201:
|
|
36
|
+
response_201 = UserAPIKey.from_dict(response.json())
|
|
37
|
+
|
|
38
|
+
return response_201
|
|
39
|
+
if client.raise_on_unexpected_status:
|
|
40
|
+
raise errors.UnexpectedStatus(response.status_code, response.content)
|
|
41
|
+
else:
|
|
42
|
+
return None
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _build_response(
|
|
46
|
+
*, client: Union[AuthenticatedClient, Client], response: httpx.Response
|
|
47
|
+
) -> Response[UserAPIKey]:
|
|
48
|
+
return Response(
|
|
49
|
+
status_code=HTTPStatus(response.status_code),
|
|
50
|
+
content=response.content,
|
|
51
|
+
headers=response.headers,
|
|
52
|
+
parsed=_parse_response(client=client, response=response),
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def sync_detailed(
|
|
57
|
+
*,
|
|
58
|
+
client: AuthenticatedClient,
|
|
59
|
+
body: UserAPIKeyRequest,
|
|
60
|
+
) -> Response[UserAPIKey]:
|
|
61
|
+
"""ViewSet for managing User API Keys.
|
|
62
|
+
|
|
63
|
+
Web-only endpoint - requires Auth0 authentication.
|
|
64
|
+
API keys cannot manage other API keys for security reasons.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
body (UserAPIKeyRequest): Serializer for User API Keys.
|
|
68
|
+
Exposes read-only information about the key, including its prefix.
|
|
69
|
+
The full key is only shown once upon creation by the ViewSet.
|
|
70
|
+
|
|
71
|
+
Raises:
|
|
72
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
73
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
Response[UserAPIKey]
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
kwargs = _get_kwargs(
|
|
80
|
+
body=body,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
response = client.get_httpx_client().request(
|
|
84
|
+
**kwargs,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
return _build_response(client=client, response=response)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def sync(
|
|
91
|
+
*,
|
|
92
|
+
client: AuthenticatedClient,
|
|
93
|
+
body: UserAPIKeyRequest,
|
|
94
|
+
) -> Optional[UserAPIKey]:
|
|
95
|
+
"""ViewSet for managing User API Keys.
|
|
96
|
+
|
|
97
|
+
Web-only endpoint - requires Auth0 authentication.
|
|
98
|
+
API keys cannot manage other API keys for security reasons.
|
|
99
|
+
|
|
100
|
+
Args:
|
|
101
|
+
body (UserAPIKeyRequest): Serializer for User API Keys.
|
|
102
|
+
Exposes read-only information about the key, including its prefix.
|
|
103
|
+
The full key is only shown once upon creation by the ViewSet.
|
|
104
|
+
|
|
105
|
+
Raises:
|
|
106
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
107
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
108
|
+
|
|
109
|
+
Returns:
|
|
110
|
+
UserAPIKey
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
return sync_detailed(
|
|
114
|
+
client=client,
|
|
115
|
+
body=body,
|
|
116
|
+
).parsed
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
async def asyncio_detailed(
|
|
120
|
+
*,
|
|
121
|
+
client: AuthenticatedClient,
|
|
122
|
+
body: UserAPIKeyRequest,
|
|
123
|
+
) -> Response[UserAPIKey]:
|
|
124
|
+
"""ViewSet for managing User API Keys.
|
|
125
|
+
|
|
126
|
+
Web-only endpoint - requires Auth0 authentication.
|
|
127
|
+
API keys cannot manage other API keys for security reasons.
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
body (UserAPIKeyRequest): Serializer for User API Keys.
|
|
131
|
+
Exposes read-only information about the key, including its prefix.
|
|
132
|
+
The full key is only shown once upon creation by the ViewSet.
|
|
133
|
+
|
|
134
|
+
Raises:
|
|
135
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
136
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
137
|
+
|
|
138
|
+
Returns:
|
|
139
|
+
Response[UserAPIKey]
|
|
140
|
+
"""
|
|
141
|
+
|
|
142
|
+
kwargs = _get_kwargs(
|
|
143
|
+
body=body,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
response = await client.get_async_httpx_client().request(**kwargs)
|
|
147
|
+
|
|
148
|
+
return _build_response(client=client, response=response)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
async def asyncio(
|
|
152
|
+
*,
|
|
153
|
+
client: AuthenticatedClient,
|
|
154
|
+
body: UserAPIKeyRequest,
|
|
155
|
+
) -> Optional[UserAPIKey]:
|
|
156
|
+
"""ViewSet for managing User API Keys.
|
|
157
|
+
|
|
158
|
+
Web-only endpoint - requires Auth0 authentication.
|
|
159
|
+
API keys cannot manage other API keys for security reasons.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
body (UserAPIKeyRequest): Serializer for User API Keys.
|
|
163
|
+
Exposes read-only information about the key, including its prefix.
|
|
164
|
+
The full key is only shown once upon creation by the ViewSet.
|
|
165
|
+
|
|
166
|
+
Raises:
|
|
167
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
168
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
169
|
+
|
|
170
|
+
Returns:
|
|
171
|
+
UserAPIKey
|
|
172
|
+
"""
|
|
173
|
+
|
|
174
|
+
return (
|
|
175
|
+
await asyncio_detailed(
|
|
176
|
+
client=client,
|
|
177
|
+
body=body,
|
|
178
|
+
)
|
|
179
|
+
).parsed
|