pygeai 0.4.0b4__py3-none-any.whl → 0.4.0b6__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.
- pygeai/cli/commands/chat.py +8 -2
- pygeai/cli/commands/lab/ai_lab.py +44 -550
- pygeai/cli/commands/lab/utils.py +13 -0
- pygeai/cli/geai.py +5 -2
- pygeai/cli/texts/help.py +12 -0
- pygeai/core/common/exceptions.py +5 -0
- pygeai/lab/agents/clients.py +30 -61
- pygeai/lab/clients.py +20 -0
- pygeai/lab/managers.py +1 -53
- pygeai/lab/processes/clients.py +81 -129
- pygeai/lab/strategies/clients.py +11 -17
- pygeai/lab/tools/clients.py +30 -50
- pygeai/tests/integration/lab/tools/test_create_tool.py +3 -4
- pygeai/tests/integration/lab/tools/test_list_tools.py +77 -9
- pygeai/tests/integration/lab/tools/test_update_tool.py +268 -0
- {pygeai-0.4.0b4.dist-info → pygeai-0.4.0b6.dist-info}/METADATA +1 -1
- {pygeai-0.4.0b4.dist-info → pygeai-0.4.0b6.dist-info}/RECORD +21 -18
- {pygeai-0.4.0b4.dist-info → pygeai-0.4.0b6.dist-info}/WHEEL +0 -0
- {pygeai-0.4.0b4.dist-info → pygeai-0.4.0b6.dist-info}/entry_points.txt +0 -0
- {pygeai-0.4.0b4.dist-info → pygeai-0.4.0b6.dist-info}/licenses/LICENSE +0 -0
- {pygeai-0.4.0b4.dist-info → pygeai-0.4.0b6.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
from unittest import TestCase
|
|
2
|
+
import uuid
|
|
3
|
+
from pygeai.core.common.exceptions import APIError
|
|
4
|
+
from pygeai.lab.managers import AILabManager
|
|
5
|
+
from pygeai.lab.models import Tool, ToolParameter
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TestAILabUpdateToolIntegration(TestCase):
|
|
9
|
+
def setUp(self):
|
|
10
|
+
"""
|
|
11
|
+
Set up the test environment.
|
|
12
|
+
"""
|
|
13
|
+
self.ai_lab_manager = AILabManager(alias="beta")
|
|
14
|
+
self.tool_to_update = self.__load_tool()
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def __load_tool(self):
|
|
18
|
+
self.random_str = str(uuid.uuid4())
|
|
19
|
+
return Tool(
|
|
20
|
+
id="c77e1f2e-0322-4dd0-b6ec-aff217f1cb32",
|
|
21
|
+
name=f"sdk_project_updated_tool_{self.random_str}",
|
|
22
|
+
description=f"Tool updated for sdk testing purposes {self.random_str}",
|
|
23
|
+
scope="builtin",
|
|
24
|
+
openApi="https://raw.usercontent.com//openapi.json",
|
|
25
|
+
openApiJson={"openapi": "3.0.0","info": {"title": f"Simple API overview {self.random_str}","version": "3.0.0"}},
|
|
26
|
+
accessScope="private",
|
|
27
|
+
reportEvents="None",
|
|
28
|
+
parameters=[{
|
|
29
|
+
"key": "param",
|
|
30
|
+
"description": f"param description {self.random_str}",
|
|
31
|
+
"type":"app",
|
|
32
|
+
"value": f"value {self.random_str}",
|
|
33
|
+
"data_type": "String",
|
|
34
|
+
"isRequired": False
|
|
35
|
+
}]
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def __update_tool(self, tool: Tool = None, automatic_publish: bool = False, upsert: bool = False):
|
|
40
|
+
"""
|
|
41
|
+
Helper method to update a tool.
|
|
42
|
+
"""
|
|
43
|
+
return self.ai_lab_manager.update_tool(
|
|
44
|
+
tool = self.tool_to_update if tool is None else tool,
|
|
45
|
+
automatic_publish=automatic_publish,
|
|
46
|
+
upsert=upsert
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_update_tool_all_fields_success(self):
|
|
51
|
+
updated_tool = self.__update_tool()
|
|
52
|
+
self.assertEqual(updated_tool.name, self.tool_to_update.name)
|
|
53
|
+
self.assertEqual(updated_tool.description, self.tool_to_update.description)
|
|
54
|
+
self.assertEqual(updated_tool.open_api_json, self.tool_to_update.open_api_json)
|
|
55
|
+
self.assertEqual(updated_tool.parameters[0].description, self.tool_to_update.parameters[0].description)
|
|
56
|
+
self.assertEqual(updated_tool.parameters[0].value, self.tool_to_update.parameters[0].value)
|
|
57
|
+
self.assertTrue(updated_tool.is_draft, "Expected tool to be in draft state after update")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def test_update_tool_invalid_name(self):
|
|
61
|
+
test_params = [ True, False ]
|
|
62
|
+
|
|
63
|
+
for auto_publish in test_params:
|
|
64
|
+
with self.subTest(input=auto_publish):
|
|
65
|
+
tool = self.__load_tool()
|
|
66
|
+
tool2 = self.__load_tool()
|
|
67
|
+
|
|
68
|
+
with self.assertRaises(APIError) as exception:
|
|
69
|
+
tool.name = f"{tool.name}:invalid"
|
|
70
|
+
self.__update_tool(tool=tool, automatic_publish=auto_publish)
|
|
71
|
+
self.assertIn(
|
|
72
|
+
"Invalid character in name (: is not allowed).",
|
|
73
|
+
str(exception.exception),
|
|
74
|
+
f"Expected an error about invalid character (:) in tool name with autopublish {'enabled' if auto_publish else 'disabled'}"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
with self.assertRaises(APIError) as exception:
|
|
78
|
+
tool2.name = f"{tool2.name}/invalid"
|
|
79
|
+
self.__update_tool(tool=tool2, automatic_publish=auto_publish)
|
|
80
|
+
self.assertIn(
|
|
81
|
+
"Invalid character in name (/ is not allowed).",
|
|
82
|
+
str(exception.exception),
|
|
83
|
+
f"Expected an error about invalid character (/) in tool name with autopublish {'enabled' if auto_publish else 'disabled'}"
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def test_update_tool_duplicated_name(self):
|
|
88
|
+
test_params = [ True, False ]
|
|
89
|
+
|
|
90
|
+
for auto_publish in test_params:
|
|
91
|
+
|
|
92
|
+
with self.subTest(input=auto_publish):
|
|
93
|
+
self.tool_to_update.name = "sdk_project_gemini_tool"
|
|
94
|
+
with self.assertRaises(APIError) as exception:
|
|
95
|
+
self.__update_tool(automatic_publish=auto_publish)
|
|
96
|
+
self.assertIn(
|
|
97
|
+
"Tool already exists",
|
|
98
|
+
str(exception.exception),
|
|
99
|
+
f"Expected an error about duplicated tool name with autopublish {'enabled' if auto_publish else 'disabled'}"
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def test_update_tool_no_name(self):
|
|
104
|
+
test_params = [ True, False ]
|
|
105
|
+
|
|
106
|
+
for auto_publish in test_params:
|
|
107
|
+
|
|
108
|
+
with self.subTest(input=auto_publish):
|
|
109
|
+
self.tool_to_update.name = ""
|
|
110
|
+
with self.assertRaises(APIError) as exception:
|
|
111
|
+
self.__update_tool(automatic_publish=auto_publish)
|
|
112
|
+
self.assertIn(
|
|
113
|
+
"Tool name cannot be empty",
|
|
114
|
+
str(exception.exception),
|
|
115
|
+
f"Expected an error when tool name is not provided with autopublish {'enabled' if auto_publish else 'disabled'}"
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def test_update_tool_invalid_id(self):
|
|
120
|
+
test_params = [ True, False ]
|
|
121
|
+
|
|
122
|
+
for auto_publish in test_params:
|
|
123
|
+
with self.subTest(input=auto_publish):
|
|
124
|
+
invalid_id = "0026e53d-ea78-4cac-af9f-12650invalid"
|
|
125
|
+
self.tool_to_update.id = invalid_id
|
|
126
|
+
with self.assertRaises(APIError) as exception:
|
|
127
|
+
self.__update_tool(automatic_publish=auto_publish)
|
|
128
|
+
self.assertIn(
|
|
129
|
+
f"Tool not found [IdOrName= {invalid_id}",
|
|
130
|
+
str(exception.exception),
|
|
131
|
+
f"Expected an error when tool id is invalid and autopublish is {'enabled' if auto_publish else 'disabled'}"
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def test_update_tool_scope(self):
|
|
136
|
+
for scope in ["builtin", "external", "api"]:
|
|
137
|
+
tool = self.__load_tool()
|
|
138
|
+
tool.scope = scope
|
|
139
|
+
result = self.__update_tool(tool=tool)
|
|
140
|
+
self.assertEqual(result.scope, scope)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def test_update_tool_invalid_scope(self):
|
|
144
|
+
test_params = [ True, False ]
|
|
145
|
+
self.tool_to_update.scope = "project"
|
|
146
|
+
for auto_publish in test_params:
|
|
147
|
+
with self.subTest(input=auto_publish):
|
|
148
|
+
with self.assertRaises(ValueError) as exception:
|
|
149
|
+
self.__update_tool(automatic_publish=auto_publish)
|
|
150
|
+
self.assertIn(
|
|
151
|
+
f"Scope must be one of builtin, external, api, proxied",
|
|
152
|
+
str(exception.exception),
|
|
153
|
+
f"Expected an error when tool scope is invalid and autopublish {'enabled' if auto_publish else 'disabled'}"
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def test_update_tool_access_scope(self):
|
|
158
|
+
for access_scope in ["public", "private"]:
|
|
159
|
+
tool = self.__load_tool()
|
|
160
|
+
tool.access_scope = access_scope
|
|
161
|
+
|
|
162
|
+
if access_scope == "public":
|
|
163
|
+
tool.public_name = f"com.sdk.testing.{self.random_str}"
|
|
164
|
+
|
|
165
|
+
updated_tool = self.__update_tool(tool=tool)
|
|
166
|
+
self.assertEqual(updated_tool.access_scope, access_scope)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def test_update_tool_invalid_public_name(self):
|
|
170
|
+
test_params = [ True, False ]
|
|
171
|
+
self.tool_to_update.access_scope = "public"
|
|
172
|
+
self.tool_to_update.public_name = "invalid#name"
|
|
173
|
+
for auto_publish in test_params:
|
|
174
|
+
with self.subTest(input=auto_publish):
|
|
175
|
+
with self.assertRaises(APIError) as exception:
|
|
176
|
+
self.__update_tool(automatic_publish=auto_publish)
|
|
177
|
+
self.assertIn(
|
|
178
|
+
"Invalid public name, it can only contain lowercase letters, numbers, periods (.), dashes (-), and underscores (_). Please remove any other characters.",
|
|
179
|
+
str(exception.exception),
|
|
180
|
+
f"Expected error when invalid public name is sent and autopublish is {'enabled' if auto_publish else 'disabled'}"
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
def test_update_tool_duplicate_public_name(self):
|
|
184
|
+
test_params = [ True, False ]
|
|
185
|
+
self.tool_to_update.access_scope = "public"
|
|
186
|
+
self.tool_to_update.public_name = "test.sdk.beta.tool"
|
|
187
|
+
for auto_publish in test_params:
|
|
188
|
+
with self.subTest(input=auto_publish):
|
|
189
|
+
with self.assertRaises(Exception) as exc:
|
|
190
|
+
self.__update_tool(automatic_publish=auto_publish)
|
|
191
|
+
self.assertIn(
|
|
192
|
+
"Tool already exists",
|
|
193
|
+
str(exc.exception),
|
|
194
|
+
f"Expected error when public name is duplicated and autopublish is {'enabled' if auto_publish else 'disabled'}"
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
def test_update_tool_no_public_name(self):
|
|
199
|
+
test_params = [ True, False ]
|
|
200
|
+
self.tool_to_update.access_scope = "public"
|
|
201
|
+
self.tool_to_update.public_name = ""
|
|
202
|
+
|
|
203
|
+
for auto_publish in test_params:
|
|
204
|
+
with self.subTest(input=auto_publish):
|
|
205
|
+
with self.assertRaises(Exception) as exc:
|
|
206
|
+
self.__update_tool(automatic_publish=auto_publish)
|
|
207
|
+
self.assertIn(
|
|
208
|
+
"Tool publicName is required for tools with accessScope=public.",
|
|
209
|
+
str(exc.exception),
|
|
210
|
+
f"Expected error when public name is not provided and autopublish is {'enabled' if auto_publish else 'disabled'}"
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def test_update_tool_no_open_api_nor_json(self):
|
|
215
|
+
test_params = [ True, False ]
|
|
216
|
+
self.tool_to_update.scope = "api"
|
|
217
|
+
self.tool_to_update.open_api = ""
|
|
218
|
+
self.tool_to_update.open_api_json = None
|
|
219
|
+
|
|
220
|
+
for auto_publish in test_params:
|
|
221
|
+
with self.subTest(input=auto_publish):
|
|
222
|
+
with self.assertRaises(APIError) as exc:
|
|
223
|
+
self.__update_tool(automatic_publish=auto_publish)
|
|
224
|
+
self.assertIn(
|
|
225
|
+
"Either openApi (URL with the OpenAPI definition) or the openApiJson (with the conent) are required for api-tools.",
|
|
226
|
+
str(exc.exception),
|
|
227
|
+
f"Expected error when no openApi or openApiJson are provided and autopublish is {'enabled' if auto_publish else 'disabled'}"
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
def test_update_tool_parameters(self):
|
|
232
|
+
self.tool_to_update.parameters = [
|
|
233
|
+
ToolParameter(key="paramA", data_type="String", description="descA", is_required=True),
|
|
234
|
+
ToolParameter(key="paramB", data_type="String", description="descB", is_required=False)
|
|
235
|
+
]
|
|
236
|
+
result = self.__update_tool()
|
|
237
|
+
self.assertEqual(len(result.parameters), 2)
|
|
238
|
+
self.assertEqual(result.parameters[0].key, "paramA")
|
|
239
|
+
self.assertEqual(result.parameters[1].key, "paramB")
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
def test_update_tool_automatic_publish(self):
|
|
243
|
+
result = self.__update_tool(automatic_publish=True)
|
|
244
|
+
self.assertFalse(result.is_draft, "Expected tool to be published after update with automatic_publish=True")
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def test_update_tool_upsert(self):
|
|
248
|
+
print(self.tool_to_update)
|
|
249
|
+
self.tool_to_update.id = str(uuid.uuid4())
|
|
250
|
+
self.tool_to_update.name = str(uuid.uuid4())
|
|
251
|
+
result = self.__update_tool(upsert=True)
|
|
252
|
+
|
|
253
|
+
if isinstance(result, Tool):
|
|
254
|
+
self.ai_lab_manager.delete_tool(result.id)
|
|
255
|
+
|
|
256
|
+
self.assertEqual(result.name, self.tool_to_update.name)
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def test_update_tool_upsert_false_not_exists(self):
|
|
260
|
+
new_id = str(uuid.uuid4())
|
|
261
|
+
self.tool_to_update.id = new_id
|
|
262
|
+
with self.assertRaises(Exception) as exc:
|
|
263
|
+
self.__update_tool(upsert=False)
|
|
264
|
+
self.assertIn(f"Tool not found [IdOrName= {new_id}]", str(exc.exception))
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
@@ -28,7 +28,7 @@ pygeai/chat/settings.py,sha256=-B2fEemZLifdsf7_7xNmWuFZYzL-yRqefivBmv3w8j8,124
|
|
|
28
28
|
pygeai/chat/ui.py,sha256=_t4ehG-n2-nxlc4esL09ORjmjTHhLWybUiEwGstIo-g,34620
|
|
29
29
|
pygeai/cli/__init__.py,sha256=9fVRZ6_hmlv9adqGukFuS_s5Yb3jSyF8vv50-d4mbQo,117
|
|
30
30
|
pygeai/cli/__main__.py,sha256=2RkQaX48mS2keTpv3-9rxk5dw35PL_deqxcKUUNhp6E,154
|
|
31
|
-
pygeai/cli/geai.py,sha256=
|
|
31
|
+
pygeai/cli/geai.py,sha256=Smqxqc3XIy8RMuFVIsS9qNuYtqkNWba_CJJrhe7kW0E,4451
|
|
32
32
|
pygeai/cli/geai_proxy.py,sha256=BSoeh32fhATxbsAA_B92HKDBiLgfejEQ0XwXfeOk49g,13356
|
|
33
33
|
pygeai/cli/install_man.py,sha256=DjZ3k05sKSzpLFqsU4LHz1b37NHLVdOvS6oZihdBSis,3794
|
|
34
34
|
pygeai/cli/parsers.py,sha256=8kKvUbg33K4VbE7ryHwq3Uwwp42BK6ZOAKycYjEj1Io,2525
|
|
@@ -37,7 +37,7 @@ pygeai/cli/commands/admin.py,sha256=LDxUrq9qGAswT4HbaN_c_ovVKbgGct7ffjXA8zVYjWY,
|
|
|
37
37
|
pygeai/cli/commands/assistant.py,sha256=fQ_El6_BmFDpFjm_gPxzWk7bOzhimhiTwG8K0UpcxDo,18711
|
|
38
38
|
pygeai/cli/commands/base.py,sha256=kkJEObpT2xSiObWAliJfGV73JS3LjLTMq7FEd4SpxkE,6930
|
|
39
39
|
pygeai/cli/commands/builders.py,sha256=xXk1F4phSQxHN3NiQltl_KEZdCwwJiKLmVqQsft2OC4,1130
|
|
40
|
-
pygeai/cli/commands/chat.py,sha256=
|
|
40
|
+
pygeai/cli/commands/chat.py,sha256=F9SOJWfW577y9lF6xR_LLpvVB2jevGvLH1KG7NqOdfc,25640
|
|
41
41
|
pygeai/cli/commands/common.py,sha256=zL1cWKMTqzqMsHBDFfVzbZe0i2l0hgJNpzjSRgvloY8,16568
|
|
42
42
|
pygeai/cli/commands/configuration.py,sha256=J1Y8AH1xYWvcY4bzqKvF-_ggEDJ22Dv4iEcCBi2pq_8,4140
|
|
43
43
|
pygeai/cli/commands/embeddings.py,sha256=om_RR3CHgfmHcTN43F6TzP71n-BS8Lf589wyBMVZJ3g,4220
|
|
@@ -57,11 +57,12 @@ pygeai/cli/commands/validators.py,sha256=lNtYSJvKFrEeg_h0oYURMuoQbNG5r6QdjzDL-aT
|
|
|
57
57
|
pygeai/cli/commands/version.py,sha256=vyJcnxwL_TfpOQI0yE2a1ZyA3VRAE7ssh9APNBXpmqk,1701
|
|
58
58
|
pygeai/cli/commands/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
59
|
pygeai/cli/commands/lab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
-
pygeai/cli/commands/lab/ai_lab.py,sha256=
|
|
60
|
+
pygeai/cli/commands/lab/ai_lab.py,sha256=mS6QtRuCjQvA71CTD657tUYYvtw_mtDWLsGvzARSi2U,122999
|
|
61
61
|
pygeai/cli/commands/lab/common.py,sha256=YBenPCVgK01Xaxgj1429bp_Ri1SN4beBxZk3dCLp7X0,6590
|
|
62
62
|
pygeai/cli/commands/lab/spec.py,sha256=EjNdEnljKpYPQyT4d4ViAPrM1g7oIitv6ddnWVkWXPk,8301
|
|
63
|
+
pygeai/cli/commands/lab/utils.py,sha256=uxhgHvCRrV6WYRxR2qd3nED_hhXcxJ1tAU8MlzoshEg,456
|
|
63
64
|
pygeai/cli/texts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
64
|
-
pygeai/cli/texts/help.py,sha256=
|
|
65
|
+
pygeai/cli/texts/help.py,sha256=0idAj91GTubRRXgN1t8_SRiF1Ou89ssHC5vKwONDxMM,16074
|
|
65
66
|
pygeai/core/__init__.py,sha256=bbNktFp7t2dOBIvWto-uGVBW8acaKIe8EKcfuLV-HmA,189
|
|
66
67
|
pygeai/core/handlers.py,sha256=la1QcQbLwfiNd-xDQ3jtWRHmeEm6E93Rfx5c-5bkLmw,934
|
|
67
68
|
pygeai/core/models.py,sha256=uIwrmlB6yuulScUcYIBSH3Sxm5YyzaicV7Dz2bYLi2I,24229
|
|
@@ -76,7 +77,7 @@ pygeai/core/base/session.py,sha256=WVb4MmptwdgK7paHOSvfEle_HPXRRXO8CHgi0qbgtOg,2
|
|
|
76
77
|
pygeai/core/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
78
|
pygeai/core/common/config.py,sha256=zrlNF-0AE54qZ-XpR0RgYzM_7v8LtS0jUpM7UXrbSqQ,4475
|
|
78
79
|
pygeai/core/common/decorators.py,sha256=X7Tv5XBmsuS7oZHSmI95eX8UkuukKoiOiNRl5w9lgR4,1227
|
|
79
|
-
pygeai/core/common/exceptions.py,sha256=
|
|
80
|
+
pygeai/core/common/exceptions.py,sha256=hfyCj5iLuWJzg93rGrR9wpVESGnq6Dq0HJQBuuitNo0,1204
|
|
80
81
|
pygeai/core/embeddings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
82
|
pygeai/core/embeddings/clients.py,sha256=0r-BX4ptivIBNrsOAMgw0q5nNLrIU7UxJ3SD6MkfXX4,3543
|
|
82
83
|
pygeai/core/embeddings/endpoints.py,sha256=b__cuKQjribog9PSUeDzwrQ0vBO4WyYahLhLjDiUpL0,98
|
|
@@ -142,27 +143,28 @@ pygeai/health/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
142
143
|
pygeai/health/clients.py,sha256=U2eb1tkXt1Rf_KdV0ZFQS2k4wGnJTXHHd9-Er0eWQuw,1011
|
|
143
144
|
pygeai/health/endpoints.py,sha256=UAzMcqSXZtMj4r8M8B7a_a5LT6X_jMFNsCTvcsjNTYA,71
|
|
144
145
|
pygeai/lab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
146
|
+
pygeai/lab/clients.py,sha256=mhtJw_cEFC1Cd6KIrcX6KxcRseKN3N_GtjlyUlLaah4,762
|
|
145
147
|
pygeai/lab/constants.py,sha256=ddgDnXP4GD0woi-FUJaJXzaWS3H6zmDN0B-v8utM95Q,170
|
|
146
|
-
pygeai/lab/managers.py,sha256=
|
|
148
|
+
pygeai/lab/managers.py,sha256=eDnT31n-xPUcK_Hjfe9FXjz6dAwAqmrbaYZ6XEHonQE,70554
|
|
147
149
|
pygeai/lab/models.py,sha256=1m41gSqpXZVO9AcPVxzlsC-TgxZcCsgGUbpN5zoDMjU,71451
|
|
148
150
|
pygeai/lab/runners.py,sha256=-uaCPHpFyiKtVOxlEjPjAc9h-onSdGAcYJ5IAZPqlb0,4147
|
|
149
151
|
pygeai/lab/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
150
|
-
pygeai/lab/agents/clients.py,sha256=
|
|
152
|
+
pygeai/lab/agents/clients.py,sha256=VIbKSDxSNH1P-CX6hF7LUcgtvrE3jvO_gu4KCtyzyls,21213
|
|
151
153
|
pygeai/lab/agents/endpoints.py,sha256=RpWbFwqgX_GCVn29DYM46PVon5qjD7C1SmzvcjEKMzI,696
|
|
152
154
|
pygeai/lab/agents/mappers.py,sha256=K6rxsO2Nq6GglmCUmyDKUNmzTG8HRbCelap6qaVKXQw,10583
|
|
153
155
|
pygeai/lab/processes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
154
|
-
pygeai/lab/processes/clients.py,sha256=
|
|
156
|
+
pygeai/lab/processes/clients.py,sha256=4OUf36Dhyd4hJZomeLcq9XDpLiCINwmfu6tHy69TkDE,49417
|
|
155
157
|
pygeai/lab/processes/endpoints.py,sha256=nFIEcNP22xe4j6URI6KcwTh7h-xgYjYYuHT6PDPiO3I,2100
|
|
156
158
|
pygeai/lab/processes/mappers.py,sha256=YOWcVKdcJmLMAq-f3qevzqQ8L_hjb0_jVXBdCHutpzk,15815
|
|
157
159
|
pygeai/lab/spec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
158
160
|
pygeai/lab/spec/loader.py,sha256=Dq9MhLqFwF4RPdBBaqKPGqt43-PrNlsHpe-NXe4S0qQ,709
|
|
159
161
|
pygeai/lab/spec/parsers.py,sha256=oG7tY-GylweRxpvtCl3p53t0IoTX3UZFiB77x__3Qp8,646
|
|
160
162
|
pygeai/lab/strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
161
|
-
pygeai/lab/strategies/clients.py,sha256=
|
|
163
|
+
pygeai/lab/strategies/clients.py,sha256=_a1yc8kwd50Yv4g1jqfa0gRnMiROR7Dn0gx3xqFUjVE,10316
|
|
162
164
|
pygeai/lab/strategies/endpoints.py,sha256=LgEvUgeeN-X6VMl-tpl9_N12GRppLPScQmiMRk7Ri28,541
|
|
163
165
|
pygeai/lab/strategies/mappers.py,sha256=6C_jubAVXMKLGQy5NUD0OX7SlrU2mLe2QsgzeJ1-WKw,2437
|
|
164
166
|
pygeai/lab/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
165
|
-
pygeai/lab/tools/clients.py,sha256=
|
|
167
|
+
pygeai/lab/tools/clients.py,sha256=cjoNIdCTYqVIw4MpEnwtFt4HSGl1snYFSEEOo_jZWUs,26515
|
|
166
168
|
pygeai/lab/tools/endpoints.py,sha256=HiGoMs4OVeCgH7EAERTtifFPl53NryA1Awh7D6AO8bA,699
|
|
167
169
|
pygeai/lab/tools/mappers.py,sha256=bYi5k36h0k4mCvOnV-r8YOHKz0U9P0mH21GNs20w2eM,4998
|
|
168
170
|
pygeai/man/__init__.py,sha256=gqGI92vUPt6RPweoWX3mTUYPWNDlm6aGUjQOnYXqthk,53
|
|
@@ -280,10 +282,11 @@ pygeai/tests/integration/lab/agents/test_get_agent.py,sha256=oW1F6SENvhL9jZC021R
|
|
|
280
282
|
pygeai/tests/integration/lab/agents/test_publish_agent_revision.py,sha256=4vpuAVBenLCyWvaKTA2PQVLn_e-abGDscngUzZm3dMs,5284
|
|
281
283
|
pygeai/tests/integration/lab/agents/test_update_agent.py,sha256=1seho_GOtOHik_YJ9GPA4McSZorohhFRvuzY7UYXbxo,11726
|
|
282
284
|
pygeai/tests/integration/lab/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
283
|
-
pygeai/tests/integration/lab/tools/test_create_tool.py,sha256=
|
|
285
|
+
pygeai/tests/integration/lab/tools/test_create_tool.py,sha256=0Yzlu9ATnsxPVPa4vO4j-j5Hc6VyHQ2KoSaf0dfmqpk,12351
|
|
284
286
|
pygeai/tests/integration/lab/tools/test_delete_tool.py,sha256=wy979nZh8ERd-k3jhJTjHqG4wxWE4sx-r4yn2nBc7Aw,2913
|
|
285
287
|
pygeai/tests/integration/lab/tools/test_get_tool.py,sha256=3fVDQlklmvOUgYDp0ATv5RqRmApgD4Qw_YGqjBOaOOo,3437
|
|
286
|
-
pygeai/tests/integration/lab/tools/test_list_tools.py,sha256=
|
|
288
|
+
pygeai/tests/integration/lab/tools/test_list_tools.py,sha256=KMLWXUmk_hKChKo4t5xEZtuIS1UmhAH6VdEq15KCrbY,3744
|
|
289
|
+
pygeai/tests/integration/lab/tools/test_update_tool.py,sha256=tZKZDoYS6RuTdRLgAmENq5tRvK-MohJGCt-s83QoBCA,11683
|
|
287
290
|
pygeai/tests/lab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
288
291
|
pygeai/tests/lab/test_managers.py,sha256=AsOAvyCkRpbskEy214aV2TwrqilWH6bxOiTWDOb1twQ,29778
|
|
289
292
|
pygeai/tests/lab/test_mappers.py,sha256=2cLSggf168XWFpeZeBR7uJ-8C32TKb7qA91i_9fr_b0,11409
|
|
@@ -492,9 +495,9 @@ pygeai/vendor/a2a/utils/helpers.py,sha256=6Tbd8SVfXvdNEk6WYmLOjrAxkzFf1aIg8dkFfB
|
|
|
492
495
|
pygeai/vendor/a2a/utils/message.py,sha256=gc_EKO69CJ4HkR76IFgsy-kENJz1dn7CfSgWJWvt-gs,2197
|
|
493
496
|
pygeai/vendor/a2a/utils/task.py,sha256=BYRA_L1HpoUGJAVlyHML0lCM9Awhf2Ovjj7oPFXKbh0,1647
|
|
494
497
|
pygeai/vendor/a2a/utils/telemetry.py,sha256=VvSp1Ztqaobkmq9-3sNhhPEilJS32-JTSfKzegkj6FU,10861
|
|
495
|
-
pygeai-0.4.
|
|
496
|
-
pygeai-0.4.
|
|
497
|
-
pygeai-0.4.
|
|
498
|
-
pygeai-0.4.
|
|
499
|
-
pygeai-0.4.
|
|
500
|
-
pygeai-0.4.
|
|
498
|
+
pygeai-0.4.0b6.dist-info/licenses/LICENSE,sha256=eHfqo7-AWS8cMq0cg03lq7owsLeCmZA-xS5L0kuHnl8,1474
|
|
499
|
+
pygeai-0.4.0b6.dist-info/METADATA,sha256=Vw_S0OHG34fpDSiQqF_VexSPvyelYRGqn-Pf5og7Ack,6940
|
|
500
|
+
pygeai-0.4.0b6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
501
|
+
pygeai-0.4.0b6.dist-info/entry_points.txt,sha256=OAmwuXVCQBTCE3HeVegVd37hbhCcp9TPahvdrCuMYWw,178
|
|
502
|
+
pygeai-0.4.0b6.dist-info/top_level.txt,sha256=bJFwp2tURmCfB94yXDF7ylvdSJXFDDJsyUOb-7PJgwc,7
|
|
503
|
+
pygeai-0.4.0b6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|