pygeai 0.6.0b14__py3-none-any.whl → 0.7.0b1__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.
Files changed (216) hide show
  1. pygeai/__init__.py +1 -2
  2. pygeai/_docs/source/content/api_reference/project.rst +392 -0
  3. pygeai/_docs/source/content/authentication.rst +130 -1
  4. pygeai/_docs/source/content/debugger.rst +327 -157
  5. pygeai/_docs/source/pygeai.core.common.rst +8 -0
  6. pygeai/_docs/source/pygeai.tests.auth.rst +56 -0
  7. pygeai/_docs/source/pygeai.tests.cli.rst +8 -0
  8. pygeai/admin/clients.py +1 -3
  9. pygeai/analytics/clients.py +1 -1
  10. pygeai/assistant/clients.py +2 -7
  11. pygeai/assistant/data/clients.py +0 -8
  12. pygeai/assistant/data_analyst/clients.py +0 -2
  13. pygeai/assistant/managers.py +1 -1
  14. pygeai/assistant/rag/clients.py +0 -2
  15. pygeai/assistant/rag/mappers.py +9 -11
  16. pygeai/auth/clients.py +26 -7
  17. pygeai/auth/endpoints.py +2 -1
  18. pygeai/chat/clients.py +2 -2
  19. pygeai/chat/managers.py +1 -1
  20. pygeai/cli/commands/admin.py +13 -25
  21. pygeai/cli/commands/analytics.py +31 -71
  22. pygeai/cli/commands/assistant.py +84 -138
  23. pygeai/cli/commands/auth.py +23 -46
  24. pygeai/cli/commands/base.py +0 -1
  25. pygeai/cli/commands/chat.py +218 -209
  26. pygeai/cli/commands/common.py +5 -5
  27. pygeai/cli/commands/configuration.py +79 -29
  28. pygeai/cli/commands/docs.py +3 -4
  29. pygeai/cli/commands/embeddings.py +13 -19
  30. pygeai/cli/commands/evaluation.py +133 -344
  31. pygeai/cli/commands/feedback.py +7 -15
  32. pygeai/cli/commands/files.py +26 -53
  33. pygeai/cli/commands/gam.py +28 -69
  34. pygeai/cli/commands/lab/ai_lab.py +96 -142
  35. pygeai/cli/commands/lab/common.py +1 -1
  36. pygeai/cli/commands/lab/spec.py +12 -32
  37. pygeai/cli/commands/llm.py +9 -18
  38. pygeai/cli/commands/migrate.py +43 -99
  39. pygeai/cli/commands/organization.py +223 -196
  40. pygeai/cli/commands/rag.py +35 -58
  41. pygeai/cli/commands/rerank.py +21 -25
  42. pygeai/cli/commands/secrets.py +39 -67
  43. pygeai/cli/commands/usage_limits.py +50 -136
  44. pygeai/cli/commands/validators.py +1 -1
  45. pygeai/cli/geai.py +32 -3
  46. pygeai/cli/geai_proxy.py +6 -2
  47. pygeai/cli/install_man.py +1 -1
  48. pygeai/cli/parsers.py +1 -1
  49. pygeai/core/base/clients.py +90 -21
  50. pygeai/core/base/mappers.py +39 -55
  51. pygeai/core/base/session.py +129 -18
  52. pygeai/core/common/config.py +50 -13
  53. pygeai/core/common/constants.py +8 -0
  54. pygeai/core/common/exceptions.py +6 -0
  55. pygeai/core/embeddings/clients.py +0 -1
  56. pygeai/core/embeddings/managers.py +0 -1
  57. pygeai/core/feedback/clients.py +0 -2
  58. pygeai/core/feedback/models.py +1 -1
  59. pygeai/core/files/clients.py +0 -3
  60. pygeai/core/files/managers.py +1 -1
  61. pygeai/core/files/mappers.py +4 -5
  62. pygeai/core/llm/clients.py +0 -1
  63. pygeai/core/models.py +4 -4
  64. pygeai/core/plugins/clients.py +0 -3
  65. pygeai/core/plugins/models.py +2 -2
  66. pygeai/core/rerank/clients.py +0 -2
  67. pygeai/core/secrets/clients.py +0 -2
  68. pygeai/core/services/rest.py +80 -14
  69. pygeai/core/singleton.py +24 -0
  70. pygeai/dbg/__init__.py +2 -2
  71. pygeai/dbg/debugger.py +276 -38
  72. pygeai/evaluation/clients.py +2 -4
  73. pygeai/evaluation/dataset/clients.py +0 -1
  74. pygeai/evaluation/plan/clients.py +0 -2
  75. pygeai/evaluation/result/clients.py +0 -2
  76. pygeai/gam/clients.py +1 -3
  77. pygeai/health/clients.py +1 -3
  78. pygeai/lab/clients.py +0 -1
  79. pygeai/lab/managers.py +0 -1
  80. pygeai/lab/models.py +0 -1
  81. pygeai/lab/strategies/clients.py +1 -2
  82. pygeai/lab/tools/clients.py +2 -2
  83. pygeai/lab/tools/mappers.py +1 -1
  84. pygeai/migration/strategies.py +5 -6
  85. pygeai/migration/tools.py +1 -1
  86. pygeai/organization/clients.py +118 -12
  87. pygeai/organization/endpoints.py +1 -0
  88. pygeai/organization/limits/clients.py +4 -6
  89. pygeai/organization/limits/managers.py +1 -4
  90. pygeai/organization/managers.py +2 -2
  91. pygeai/proxy/config.py +1 -0
  92. pygeai/proxy/managers.py +6 -5
  93. pygeai/tests/admin/test_clients.py +11 -11
  94. pygeai/tests/assistants/rag/test_clients.py +1 -1
  95. pygeai/tests/assistants/rag/test_models.py +1 -2
  96. pygeai/tests/assistants/test_clients.py +1 -1
  97. pygeai/tests/assistants/test_managers.py +1 -3
  98. pygeai/tests/auth/test_cli_configuration.py +252 -0
  99. pygeai/tests/auth/test_client_initialization.py +411 -0
  100. pygeai/tests/auth/test_clients.py +29 -27
  101. pygeai/tests/auth/test_config_manager.py +305 -0
  102. pygeai/tests/auth/test_header_injection.py +294 -0
  103. pygeai/tests/auth/test_oauth.py +3 -1
  104. pygeai/tests/auth/test_session_logging.py +119 -0
  105. pygeai/tests/auth/test_session_validation.py +408 -0
  106. pygeai/tests/auth/test_singleton_reset.py +201 -0
  107. pygeai/tests/chat/test_clients.py +1 -1
  108. pygeai/tests/chat/test_iris.py +1 -1
  109. pygeai/tests/chat/test_ui.py +0 -2
  110. pygeai/tests/cli/commands/lab/test_ai_lab.py +1 -3
  111. pygeai/tests/cli/commands/lab/test_common.py +0 -1
  112. pygeai/tests/cli/commands/test_chat.py +1 -1
  113. pygeai/tests/cli/commands/test_common.py +0 -1
  114. pygeai/tests/cli/commands/test_embeddings.py +2 -2
  115. pygeai/tests/cli/commands/test_evaluation.py +1 -9
  116. pygeai/tests/cli/commands/test_llm.py +1 -1
  117. pygeai/tests/cli/commands/test_migrate.py +1 -1
  118. pygeai/tests/cli/commands/test_rerank.py +0 -1
  119. pygeai/tests/cli/commands/test_secrets.py +1 -1
  120. pygeai/tests/cli/commands/test_show_help.py +0 -1
  121. pygeai/tests/cli/commands/test_validators.py +0 -1
  122. pygeai/tests/cli/test_credentials_flag.py +312 -0
  123. pygeai/tests/cli/test_error_handler.py +0 -1
  124. pygeai/tests/core/base/test_mappers.py +2 -2
  125. pygeai/tests/core/base/test_models.py +4 -4
  126. pygeai/tests/core/common/test_config.py +2 -7
  127. pygeai/tests/core/common/test_decorators.py +0 -1
  128. pygeai/tests/core/embeddings/test_managers.py +1 -1
  129. pygeai/tests/core/feedback/test_clients.py +2 -2
  130. pygeai/tests/core/files/test_clients.py +6 -6
  131. pygeai/tests/core/files/test_models.py +0 -1
  132. pygeai/tests/core/files/test_responses.py +0 -1
  133. pygeai/tests/core/llm/test_clients.py +1 -1
  134. pygeai/tests/core/plugins/test_clients.py +4 -4
  135. pygeai/tests/core/rerank/test_mappers.py +1 -3
  136. pygeai/tests/core/secrets/test_clients.py +2 -3
  137. pygeai/tests/core/services/test_rest.py +10 -10
  138. pygeai/tests/core/utils/test_console.py +0 -1
  139. pygeai/tests/dbg/test_debugger.py +95 -8
  140. pygeai/tests/evaluation/dataset/test_clients.py +24 -27
  141. pygeai/tests/evaluation/plan/test_clients.py +16 -18
  142. pygeai/tests/evaluation/result/test_clients.py +4 -5
  143. pygeai/tests/health/test_clients.py +2 -2
  144. pygeai/tests/integration/lab/agents/test_create_agent.py +1 -3
  145. pygeai/tests/integration/lab/agents/test_get_agent.py +1 -1
  146. pygeai/tests/integration/lab/processes/test_create_process.py +2 -2
  147. pygeai/tests/integration/lab/processes/test_create_task.py +2 -3
  148. pygeai/tests/integration/lab/processes/test_delete_process.py +0 -1
  149. pygeai/tests/integration/lab/processes/test_get_process.py +2 -4
  150. pygeai/tests/integration/lab/processes/test_list_process_instances.py +1 -3
  151. pygeai/tests/integration/lab/processes/test_update_process.py +3 -9
  152. pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +1 -2
  153. pygeai/tests/integration/lab/tools/test_delete_tool.py +1 -1
  154. pygeai/tests/integration/lab/tools/test_list_tools.py +1 -1
  155. pygeai/tests/integration/lab/tools/test_update_tool.py +1 -1
  156. pygeai/tests/lab/agents/test_clients.py +17 -17
  157. pygeai/tests/lab/processes/test_clients.py +67 -67
  158. pygeai/tests/lab/processes/test_mappers.py +23 -23
  159. pygeai/tests/lab/spec/test_loader.py +0 -2
  160. pygeai/tests/lab/spec/test_parsers.py +1 -2
  161. pygeai/tests/lab/strategies/test_clients.py +10 -10
  162. pygeai/tests/lab/test_managers.py +3 -5
  163. pygeai/tests/lab/test_mappers.py +1 -4
  164. pygeai/tests/lab/tools/test_clients.py +21 -21
  165. pygeai/tests/lab/tools/test_mappers.py +0 -1
  166. pygeai/tests/organization/limits/test_clients.py +33 -33
  167. pygeai/tests/organization/limits/test_managers.py +7 -7
  168. pygeai/tests/organization/test_clients.py +78 -60
  169. pygeai/tests/proxy/test_clients.py +1 -1
  170. pygeai/tests/proxy/test_integration.py +1 -4
  171. pygeai/tests/proxy/test_managers.py +1 -2
  172. pygeai/tests/proxy/test_servers.py +1 -2
  173. pygeai/tests/snippets/assistants/rag/delete_rag_assistant.py +0 -1
  174. pygeai/tests/snippets/assistants/rag/get_documents.py +0 -1
  175. pygeai/tests/snippets/assistants/rag/get_rag_assistant_data.py +0 -1
  176. pygeai/tests/snippets/chat/get_request_status.py +0 -1
  177. pygeai/tests/snippets/dbg/file_debugging.py +72 -0
  178. pygeai/tests/snippets/dbg/module_debugging.py +60 -0
  179. pygeai/tests/snippets/embeddings/cohere_example.py +2 -2
  180. pygeai/tests/snippets/embeddings/openai_base64_example.py +1 -1
  181. pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +8 -8
  182. pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +5 -5
  183. pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +3 -3
  184. pygeai/tests/snippets/lab/agentic_flow_example_1.py +1 -1
  185. pygeai/tests/snippets/lab/agentic_flow_example_2.py +3 -4
  186. pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +2 -2
  187. pygeai/tests/snippets/lab/agents/delete_agent.py +1 -2
  188. pygeai/tests/snippets/lab/agents/get_agent.py +1 -1
  189. pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +10 -10
  190. pygeai/tests/snippets/lab/agents/get_sharing_link.py +0 -1
  191. pygeai/tests/snippets/lab/agents/list_agents.py +1 -1
  192. pygeai/tests/snippets/lab/agents/publish_agent_revision.py +0 -1
  193. pygeai/tests/snippets/lab/agents/update_agent_properties.py +1 -1
  194. pygeai/tests/snippets/lab/crud_ui.py +3 -5
  195. pygeai/tests/snippets/lab/processes/kbs/get_kb.py +0 -1
  196. pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +0 -1
  197. pygeai/tests/snippets/lab/processes/list_processes.py +1 -1
  198. pygeai/tests/snippets/lab/samples/summarize_files.py +0 -3
  199. pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +0 -1
  200. pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +1 -1
  201. pygeai/tests/snippets/lab/tools/get_tool.py +1 -1
  202. pygeai/tests/snippets/lab/tools/publish_tool_revision.py +0 -1
  203. pygeai/tests/snippets/lab/tools/set_parameters.py +1 -2
  204. pygeai/tests/snippets/lab/use_cases/c_code_fixer_agent_flow.py +2 -3
  205. pygeai/tests/snippets/lab/use_cases/file_summarizer_example_2.py +1 -1
  206. pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +0 -1
  207. pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +0 -1
  208. pygeai/tests/snippets/lab/use_cases/update_web_designer.py +0 -1
  209. pygeai/tests/snippets/lab/use_cases/update_web_reader.py +0 -1
  210. pygeai/tests/snippets/migrate/orchestrator_examples.py +1 -1
  211. {pygeai-0.6.0b14.dist-info → pygeai-0.7.0b1.dist-info}/METADATA +32 -7
  212. {pygeai-0.6.0b14.dist-info → pygeai-0.7.0b1.dist-info}/RECORD +216 -205
  213. {pygeai-0.6.0b14.dist-info → pygeai-0.7.0b1.dist-info}/WHEEL +0 -0
  214. {pygeai-0.6.0b14.dist-info → pygeai-0.7.0b1.dist-info}/entry_points.txt +0 -0
  215. {pygeai-0.6.0b14.dist-info → pygeai-0.7.0b1.dist-info}/licenses/LICENSE +0 -0
  216. {pygeai-0.6.0b14.dist-info → pygeai-0.7.0b1.dist-info}/top_level.txt +0 -0
@@ -30,7 +30,7 @@ class TestAgenticProcessClient(unittest.TestCase):
30
30
  self.revision = "1"
31
31
  self.signal_name = "approval"
32
32
 
33
- @patch("pygeai.core.services.rest.ApiService.post")
33
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
34
34
  def test_create_process_success(self, mock_post):
35
35
  expected_response = {"id": "process-123", "name": "Test Process"}
36
36
  mock_response = mock_post.return_value
@@ -73,7 +73,7 @@ class TestAgenticProcessClient(unittest.TestCase):
73
73
  headers = mock_post.call_args[1]['headers']
74
74
  self.assertEqual(headers['ProjectId'], self.project_id)
75
75
 
76
- @patch("pygeai.core.services.rest.ApiService.post")
76
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
77
77
  def test_create_process_json_decode_error(self, mock_post):
78
78
  mock_response = mock_post.return_value
79
79
  mock_response.status_code = 200
@@ -89,8 +89,8 @@ class TestAgenticProcessClient(unittest.TestCase):
89
89
  self.assertEqual(str(context.exception), f"Unable to create process for project {self.project_id}: Invalid JSON response")
90
90
  mock_post.assert_called_once()
91
91
 
92
- @patch("pygeai.core.services.rest.ApiService.put")
93
- @patch("pygeai.core.services.rest.ApiService.get")
92
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
93
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
94
94
  def test_update_process_success_with_id(self, mock_get, mock_put):
95
95
  expected_response = {"id": self.process_id, "name": "Updated Process"}
96
96
  mock_response_put = mock_put.return_value
@@ -127,8 +127,8 @@ class TestAgenticProcessClient(unittest.TestCase):
127
127
  self.assertEqual(headers['ProjectId'], self.project_id)
128
128
  mock_get.assert_called_once()
129
129
 
130
- @patch("pygeai.core.services.rest.ApiService.put")
131
- @patch("pygeai.core.services.rest.ApiService.get")
130
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
131
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
132
132
  def test_update_process_success_with_name(self, mock_get, mock_put):
133
133
  expected_response = {"id": "process-123", "name": "Updated Process"}
134
134
  mock_response_put = mock_put.return_value
@@ -160,7 +160,7 @@ class TestAgenticProcessClient(unittest.TestCase):
160
160
  )
161
161
  mock_get.assert_called_once()
162
162
 
163
- @patch("pygeai.core.services.rest.ApiService.put")
163
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
164
164
  def test_update_process_with_upsert(self, mock_put):
165
165
  expected_response = {"id": self.process_id, "name": "Upserted Process"}
166
166
  mock_response = mock_put.return_value
@@ -185,8 +185,8 @@ class TestAgenticProcessClient(unittest.TestCase):
185
185
  self.client.update_process()
186
186
  self.assertEqual(str(context.exception), "Either process_id or name must be provided.")
187
187
 
188
- @patch("pygeai.core.services.rest.ApiService.put")
189
- @patch("pygeai.core.services.rest.ApiService.get")
188
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
189
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
190
190
  def test_update_process_json_decode_error(self, mock_get, mock_put):
191
191
  mock_response_put = mock_put.return_value
192
192
  mock_response_put.status_code = 200
@@ -213,7 +213,7 @@ class TestAgenticProcessClient(unittest.TestCase):
213
213
  mock_put.assert_called_once()
214
214
  mock_get.assert_called_once()
215
215
 
216
- @patch("pygeai.core.services.rest.ApiService.get")
216
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
217
217
  def test_get_process_success_with_id(self, mock_get):
218
218
  expected_response = {"id": self.process_id, "name": "Test Process"}
219
219
  mock_response = mock_get.return_value
@@ -240,7 +240,7 @@ class TestAgenticProcessClient(unittest.TestCase):
240
240
  headers = mock_get.call_args[1]['headers']
241
241
  self.assertEqual(headers['ProjectId'], self.project_id)
242
242
 
243
- @patch("pygeai.core.services.rest.ApiService.get")
243
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
244
244
  def test_get_process_success_with_name(self, mock_get):
245
245
  expected_response = {"id": "process-123", "name": self.process_name}
246
246
  mock_response = mock_get.return_value
@@ -263,7 +263,7 @@ class TestAgenticProcessClient(unittest.TestCase):
263
263
  self.client.get_process()
264
264
  self.assertEqual(str(context.exception), "Either process_id or process_name must be provided.")
265
265
 
266
- @patch("pygeai.core.services.rest.ApiService.get")
266
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
267
267
  def test_get_process_json_decode_error(self, mock_get):
268
268
  mock_response = mock_get.return_value
269
269
  mock_response.status_code = 200
@@ -278,7 +278,7 @@ class TestAgenticProcessClient(unittest.TestCase):
278
278
  self.assertEqual(str(context.exception), f"Unable to retrieve process {self.process_id} for project {self.project_id}: Invalid JSON response")
279
279
  mock_get.assert_called_once()
280
280
 
281
- @patch("pygeai.core.services.rest.ApiService.get")
281
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
282
282
  def test_list_processes_success(self, mock_get):
283
283
  expected_response = {"processes": [{"id": "process-1", "name": "Process1"}]}
284
284
  mock_response = mock_get.return_value
@@ -310,7 +310,7 @@ class TestAgenticProcessClient(unittest.TestCase):
310
310
  headers = mock_get.call_args[1]['headers']
311
311
  self.assertEqual(headers['ProjectId'], self.project_id)
312
312
 
313
- @patch("pygeai.core.services.rest.ApiService.get")
313
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
314
314
  def test_list_processes_json_decode_error(self, mock_get):
315
315
  mock_response = mock_get.return_value
316
316
  mock_response.status_code = 200
@@ -323,7 +323,7 @@ class TestAgenticProcessClient(unittest.TestCase):
323
323
  self.assertEqual(str(context.exception), f"Unable to list processes for project {self.project_id}: Invalid JSON response")
324
324
  mock_get.assert_called_once()
325
325
 
326
- @patch("pygeai.core.services.rest.ApiService.get")
326
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
327
327
  def test_list_process_instances_success(self, mock_get):
328
328
  expected_response = {"instances": [{"id": "instance-1"}]}
329
329
  mock_response = mock_get.return_value
@@ -355,7 +355,7 @@ class TestAgenticProcessClient(unittest.TestCase):
355
355
  self.client.list_process_instances(process_id="")
356
356
  self.assertEqual(str(context.exception), "Process ID must be provided.")
357
357
 
358
- @patch("pygeai.core.services.rest.ApiService.get")
358
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
359
359
  def test_list_process_instances_json_decode_error(self, mock_get):
360
360
  mock_response = mock_get.return_value
361
361
  mock_response.status_code = 200
@@ -370,7 +370,7 @@ class TestAgenticProcessClient(unittest.TestCase):
370
370
  self.assertEqual(str(context.exception), f"Unable to list process instances for process {self.process_id} in project {self.project_id}: Invalid JSON response")
371
371
  mock_get.assert_called_once()
372
372
 
373
- @patch("pygeai.core.services.rest.ApiService.delete")
373
+ @patch("pygeai.core.services.rest.GEAIApiService.delete")
374
374
  def test_delete_process_success_with_id(self, mock_delete):
375
375
  expected_response = {}
376
376
  mock_response = mock_delete.return_value
@@ -388,7 +388,7 @@ class TestAgenticProcessClient(unittest.TestCase):
388
388
  headers = mock_delete.call_args[1]['headers']
389
389
  self.assertEqual(headers['ProjectId'], self.project_id)
390
390
 
391
- @patch("pygeai.core.services.rest.ApiService.delete")
391
+ @patch("pygeai.core.services.rest.GEAIApiService.delete")
392
392
  def test_delete_process_success_with_name(self, mock_delete):
393
393
  expected_response = {}
394
394
  mock_response = mock_delete.return_value
@@ -409,7 +409,7 @@ class TestAgenticProcessClient(unittest.TestCase):
409
409
  self.client.delete_process()
410
410
  self.assertEqual(str(context.exception), "Either process_id or process_name must be provided.")
411
411
 
412
- @patch("pygeai.core.services.rest.ApiService.delete")
412
+ @patch("pygeai.core.services.rest.GEAIApiService.delete")
413
413
  def test_delete_process_json_decode_error(self, mock_delete):
414
414
  mock_response = mock_delete.return_value
415
415
  mock_response.status_code = 200
@@ -424,7 +424,7 @@ class TestAgenticProcessClient(unittest.TestCase):
424
424
  self.assertEqual(str(context.exception), f"Unable to delete process {self.process_id} from project {self.project_id}: Invalid JSON response")
425
425
  mock_delete.assert_called_once()
426
426
 
427
- @patch("pygeai.core.services.rest.ApiService.post")
427
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
428
428
  def test_publish_process_revision_success_with_id(self, mock_post):
429
429
  expected_response = {"status": "published"}
430
430
  mock_response = mock_post.return_value
@@ -445,7 +445,7 @@ class TestAgenticProcessClient(unittest.TestCase):
445
445
  headers = mock_post.call_args[1]['headers']
446
446
  self.assertEqual(headers['ProjectId'], self.project_id)
447
447
 
448
- @patch("pygeai.core.services.rest.ApiService.post")
448
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
449
449
  def test_publish_process_revision_success_with_name(self, mock_post):
450
450
  expected_response = {"status": "published"}
451
451
  mock_response = mock_post.return_value
@@ -478,7 +478,7 @@ class TestAgenticProcessClient(unittest.TestCase):
478
478
  )
479
479
  self.assertEqual(str(context.exception), "Revision must be provided.")
480
480
 
481
- @patch("pygeai.core.services.rest.ApiService.post")
481
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
482
482
  def test_publish_process_revision_json_decode_error(self, mock_post):
483
483
  mock_response = mock_post.return_value
484
484
  mock_response.status_code = 200
@@ -494,7 +494,7 @@ class TestAgenticProcessClient(unittest.TestCase):
494
494
  self.assertEqual(str(context.exception), f"Unable to publish revision {self.revision} for process {self.process_id} in project {self.project_id}: Invalid JSON response")
495
495
  mock_post.assert_called_once()
496
496
 
497
- @patch("pygeai.core.services.rest.ApiService.post")
497
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
498
498
  def test_create_task_success(self, mock_post):
499
499
  expected_response = {"id": "task-123", "name": "Test Task"}
500
500
  mock_response = mock_post.return_value
@@ -527,7 +527,7 @@ class TestAgenticProcessClient(unittest.TestCase):
527
527
  headers = mock_post.call_args[1]['headers']
528
528
  self.assertEqual(headers['ProjectId'], self.project_id)
529
529
 
530
- @patch("pygeai.core.services.rest.ApiService.post")
530
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
531
531
  def test_create_task_json_decode_error(self, mock_post):
532
532
  mock_response = mock_post.return_value
533
533
  mock_response.status_code = 200
@@ -542,7 +542,7 @@ class TestAgenticProcessClient(unittest.TestCase):
542
542
  self.assertEqual(str(context.exception), f"Unable to create task for project {self.project_id}: Invalid JSON response")
543
543
  mock_post.assert_called_once()
544
544
 
545
- @patch("pygeai.core.services.rest.ApiService.get")
545
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
546
546
  def test_get_task_success_with_id(self, mock_get):
547
547
  expected_response = {"id": self.task_id, "name": "Test Task"}
548
548
  mock_response = mock_get.return_value
@@ -561,7 +561,7 @@ class TestAgenticProcessClient(unittest.TestCase):
561
561
  headers = mock_get.call_args[1]['headers']
562
562
  self.assertEqual(headers['ProjectId'], self.project_id)
563
563
 
564
- @patch("pygeai.core.services.rest.ApiService.get")
564
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
565
565
  def test_get_task_success_with_name(self, mock_get):
566
566
  expected_response = {"id": "task-123", "name": self.task_name}
567
567
  mock_response = mock_get.return_value
@@ -584,7 +584,7 @@ class TestAgenticProcessClient(unittest.TestCase):
584
584
  self.client.get_task(task_id="", task_name="")
585
585
  self.assertEqual(str(context.exception), "Either task_id or task_name must be provided.")
586
586
 
587
- @patch("pygeai.core.services.rest.ApiService.get")
587
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
588
588
  def test_get_task_json_decode_error(self, mock_get):
589
589
  mock_response = mock_get.return_value
590
590
  mock_response.status_code = 200
@@ -599,7 +599,7 @@ class TestAgenticProcessClient(unittest.TestCase):
599
599
  self.assertEqual(str(context.exception), f"Unable to retrieve task {self.task_id} for project {self.project_id}: Invalid JSON response")
600
600
  mock_get.assert_called_once()
601
601
 
602
- @patch("pygeai.core.services.rest.ApiService.get")
602
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
603
603
  def test_list_tasks_success(self, mock_get):
604
604
  expected_response = {"tasks": [{"id": "task-1", "name": "Task1"}]}
605
605
  mock_response = mock_get.return_value
@@ -627,7 +627,7 @@ class TestAgenticProcessClient(unittest.TestCase):
627
627
  headers = mock_get.call_args[1]['headers']
628
628
  self.assertEqual(headers['ProjectId'], self.project_id)
629
629
 
630
- @patch("pygeai.core.services.rest.ApiService.get")
630
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
631
631
  def test_list_tasks_json_decode_error(self, mock_get):
632
632
  mock_response = mock_get.return_value
633
633
  mock_response.status_code = 200
@@ -640,7 +640,7 @@ class TestAgenticProcessClient(unittest.TestCase):
640
640
  self.assertEqual(str(context.exception), f"Unable to list tasks for project {self.project_id}: Invalid JSON response")
641
641
  mock_get.assert_called_once()
642
642
 
643
- @patch("pygeai.core.services.rest.ApiService.put")
643
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
644
644
  def test_update_task_success(self, mock_put):
645
645
  expected_response = {"id": self.task_id, "name": "Updated Task"}
646
646
  mock_response = mock_put.return_value
@@ -673,7 +673,7 @@ class TestAgenticProcessClient(unittest.TestCase):
673
673
  headers = mock_put.call_args[1]['headers']
674
674
  self.assertEqual(headers['ProjectId'], self.project_id)
675
675
 
676
- @patch("pygeai.core.services.rest.ApiService.put")
676
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
677
677
  def test_update_task_with_upsert(self, mock_put):
678
678
  expected_response = {"id": self.task_id, "name": "Upserted Task"}
679
679
  mock_response = mock_put.return_value
@@ -698,7 +698,7 @@ class TestAgenticProcessClient(unittest.TestCase):
698
698
  self.client.update_task(task_id="")
699
699
  self.assertEqual(str(context.exception), "Task ID must be provided.")
700
700
 
701
- @patch("pygeai.core.services.rest.ApiService.put")
701
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
702
702
  def test_update_task_json_decode_error(self, mock_put):
703
703
  mock_response = mock_put.return_value
704
704
  mock_response.status_code = 200
@@ -714,7 +714,7 @@ class TestAgenticProcessClient(unittest.TestCase):
714
714
  self.assertEqual(str(context.exception), f"Unable to update task {self.task_id} in project {self.project_id}: Invalid JSON response")
715
715
  mock_put.assert_called_once()
716
716
 
717
- @patch("pygeai.core.services.rest.ApiService.delete")
717
+ @patch("pygeai.core.services.rest.GEAIApiService.delete")
718
718
  def test_delete_task_success_with_id(self, mock_delete):
719
719
  expected_response = {}
720
720
  mock_response = mock_delete.return_value
@@ -732,7 +732,7 @@ class TestAgenticProcessClient(unittest.TestCase):
732
732
  headers = mock_delete.call_args[1]['headers']
733
733
  self.assertEqual(headers['ProjectId'], self.project_id)
734
734
 
735
- @patch("pygeai.core.services.rest.ApiService.delete")
735
+ @patch("pygeai.core.services.rest.GEAIApiService.delete")
736
736
  def test_delete_task_success_with_name(self, mock_delete):
737
737
  expected_response = {}
738
738
  mock_response = mock_delete.return_value
@@ -754,7 +754,7 @@ class TestAgenticProcessClient(unittest.TestCase):
754
754
  self.client.delete_task(task_id="", task_name="")
755
755
  self.assertEqual(str(context.exception), "Either task_id or task_name must be provided.")
756
756
 
757
- @patch("pygeai.core.services.rest.ApiService.delete")
757
+ @patch("pygeai.core.services.rest.GEAIApiService.delete")
758
758
  def test_delete_task_json_decode_error(self, mock_delete):
759
759
  mock_response = mock_delete.return_value
760
760
  mock_response.status_code = 200
@@ -769,7 +769,7 @@ class TestAgenticProcessClient(unittest.TestCase):
769
769
  self.assertEqual(str(context.exception), f"Unable to delete task {self.task_id} from project {self.project_id}: Invalid JSON response")
770
770
  mock_delete.assert_called_once()
771
771
 
772
- @patch("pygeai.core.services.rest.ApiService.post")
772
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
773
773
  def test_publish_task_revision_success_with_id(self, mock_post):
774
774
  expected_response = {"status": "published"}
775
775
  mock_response = mock_post.return_value
@@ -790,7 +790,7 @@ class TestAgenticProcessClient(unittest.TestCase):
790
790
  headers = mock_post.call_args[1]['headers']
791
791
  self.assertEqual(headers['ProjectId'], self.project_id)
792
792
 
793
- @patch("pygeai.core.services.rest.ApiService.post")
793
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
794
794
  def test_publish_task_revision_success_with_name(self, mock_post):
795
795
  expected_response = {"status": "published"}
796
796
  mock_response = mock_post.return_value
@@ -826,7 +826,7 @@ class TestAgenticProcessClient(unittest.TestCase):
826
826
  )
827
827
  self.assertEqual(str(context.exception), "Revision must be provided.")
828
828
 
829
- @patch("pygeai.core.services.rest.ApiService.post")
829
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
830
830
  def test_publish_task_revision_json_decode_error(self, mock_post):
831
831
  mock_response = mock_post.return_value
832
832
  mock_response.status_code = 200
@@ -842,7 +842,7 @@ class TestAgenticProcessClient(unittest.TestCase):
842
842
  self.assertEqual(str(context.exception), f"Unable to publish revision {self.revision} for task {self.task_id} in project {self.project_id}: Invalid JSON response")
843
843
  mock_post.assert_called_once()
844
844
 
845
- @patch("pygeai.core.services.rest.ApiService.post")
845
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
846
846
  def test_start_instance_success(self, mock_post):
847
847
  expected_response = {"id": "instance-123", "status": "started"}
848
848
  mock_response = mock_post.return_value
@@ -868,7 +868,7 @@ class TestAgenticProcessClient(unittest.TestCase):
868
868
  headers = mock_post.call_args[1]['headers']
869
869
  self.assertEqual(headers['ProjectId'], self.project_id)
870
870
 
871
- @patch("pygeai.core.services.rest.ApiService.post")
871
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
872
872
  def test_start_instance_json_decode_error(self, mock_post):
873
873
  mock_response = mock_post.return_value
874
874
  mock_response.status_code = 200
@@ -883,7 +883,7 @@ class TestAgenticProcessClient(unittest.TestCase):
883
883
  self.assertEqual(str(context.exception), f"Unable to start instance for process {self.process_name} in project {self.project_id}: Invalid JSON response")
884
884
  mock_post.assert_called_once()
885
885
 
886
- @patch("pygeai.core.services.rest.ApiService.post")
886
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
887
887
  def test_abort_instance_success(self, mock_post):
888
888
  expected_response = {"status": "aborted"}
889
889
  mock_response = mock_post.return_value
@@ -908,7 +908,7 @@ class TestAgenticProcessClient(unittest.TestCase):
908
908
  self.client.abort_instance(instance_id="")
909
909
  self.assertEqual(str(context.exception), "Instance ID must be provided.")
910
910
 
911
- @patch("pygeai.core.services.rest.ApiService.post")
911
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
912
912
  def test_abort_instance_json_decode_error(self, mock_post):
913
913
  mock_response = mock_post.return_value
914
914
  mock_response.status_code = 200
@@ -928,7 +928,7 @@ class TestAgenticProcessClient(unittest.TestCase):
928
928
  self.client.get_instance(instance_id="")
929
929
  self.assertEqual(str(context.exception), "Instance ID must be provided.")
930
930
 
931
- @patch("pygeai.core.services.rest.ApiService.get")
931
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
932
932
  def test_get_instance_json_decode_error(self, mock_get):
933
933
  mock_response = mock_get.return_value
934
934
  mock_response.status_code = 200
@@ -944,7 +944,7 @@ class TestAgenticProcessClient(unittest.TestCase):
944
944
  f"Unable to retrieve instance {self.instance_id} for project {self.project_id}: Invalid JSON response")
945
945
  mock_get.assert_called_once()
946
946
 
947
- @patch("pygeai.core.services.rest.ApiService.get")
947
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
948
948
  def test_get_instance_history_success(self, mock_get):
949
949
  expected_response = {"history": [{"event": "start", "time": "2023-01-01"}]}
950
950
  mock_response = mock_get.return_value
@@ -968,7 +968,7 @@ class TestAgenticProcessClient(unittest.TestCase):
968
968
  self.client.get_instance_history(instance_id="")
969
969
  self.assertEqual(str(context.exception), "Instance ID must be provided.")
970
970
 
971
- @patch("pygeai.core.services.rest.ApiService.get")
971
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
972
972
  def test_get_instance_history_json_decode_error(self, mock_get):
973
973
  mock_response = mock_get.return_value
974
974
  mock_response.status_code = 200
@@ -984,7 +984,7 @@ class TestAgenticProcessClient(unittest.TestCase):
984
984
  f"Unable to retrieve history for instance {self.instance_id} in project {self.project_id}: Invalid JSON response")
985
985
  mock_get.assert_called_once()
986
986
 
987
- @patch("pygeai.core.services.rest.ApiService.get")
987
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
988
988
  def test_get_thread_information_success(self, mock_get):
989
989
  expected_response = {"thread": {"id": self.thread_id, "status": "active"}}
990
990
  mock_response = mock_get.return_value
@@ -1008,7 +1008,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1008
1008
  self.client.get_thread_information(thread_id="")
1009
1009
  self.assertEqual(str(context.exception), "Thread ID must be provided.")
1010
1010
 
1011
- @patch("pygeai.core.services.rest.ApiService.get")
1011
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1012
1012
  def test_get_thread_information_json_decode_error(self, mock_get):
1013
1013
  mock_response = mock_get.return_value
1014
1014
  mock_response.status_code = 200
@@ -1024,7 +1024,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1024
1024
  f"Unable to retrieve thread information for thread {self.thread_id} in project {self.project_id}: Invalid JSON response")
1025
1025
  mock_get.assert_called_once()
1026
1026
 
1027
- @patch("pygeai.core.services.rest.ApiService.post")
1027
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
1028
1028
  def test_send_user_signal_success(self, mock_post):
1029
1029
  expected_response = {"status": "signal sent"}
1030
1030
  mock_response = mock_post.return_value
@@ -1061,7 +1061,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1061
1061
  )
1062
1062
  self.assertEqual(str(context.exception), "Signal name must be provided.")
1063
1063
 
1064
- @patch("pygeai.core.services.rest.ApiService.post")
1064
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
1065
1065
  def test_send_user_signal_json_decode_error(self, mock_post):
1066
1066
  mock_response = mock_post.return_value
1067
1067
  mock_response.status_code = 200
@@ -1078,7 +1078,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1078
1078
  f"Unable to send user signal {self.signal_name} to instance {self.instance_id} in project {self.project_id}: Invalid JSON response")
1079
1079
  mock_post.assert_called_once()
1080
1080
 
1081
- @patch("pygeai.core.services.rest.ApiService.post")
1081
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
1082
1082
  def test_create_kb_success(self, mock_post):
1083
1083
  expected_response = {"id": "kb-123", "name": "Test KB"}
1084
1084
  mock_response = mock_post.return_value
@@ -1104,7 +1104,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1104
1104
  headers = mock_post.call_args[1]['headers']
1105
1105
  self.assertEqual(headers['ProjectId'], self.project_id)
1106
1106
 
1107
- @patch("pygeai.core.services.rest.ApiService.post")
1107
+ @patch("pygeai.core.services.rest.GEAIApiService.post")
1108
1108
  def test_create_kb_json_decode_error(self, mock_post):
1109
1109
  mock_response = mock_post.return_value
1110
1110
  mock_response.status_code = 200
@@ -1120,7 +1120,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1120
1120
  f"Unable to create knowledge base for project {self.project_id}: Invalid JSON response")
1121
1121
  mock_post.assert_called_once()
1122
1122
 
1123
- @patch("pygeai.core.services.rest.ApiService.get")
1123
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1124
1124
  def test_get_kb_success_with_id(self, mock_get):
1125
1125
  expected_response = {"id": self.kb_id, "name": "Test KB"}
1126
1126
  mock_response = mock_get.return_value
@@ -1139,7 +1139,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1139
1139
  headers = mock_get.call_args[1]['headers']
1140
1140
  self.assertEqual(headers['ProjectId'], self.project_id)
1141
1141
 
1142
- @patch("pygeai.core.services.rest.ApiService.get")
1142
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1143
1143
  def test_get_kb_success_with_name(self, mock_get):
1144
1144
  expected_response = {"id": "kb-123", "name": self.kb_name}
1145
1145
  mock_response = mock_get.return_value
@@ -1161,7 +1161,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1161
1161
  self.client.get_kb()
1162
1162
  self.assertEqual(str(context.exception), "Either kb_id or kb_name must be provided.")
1163
1163
 
1164
- @patch("pygeai.core.services.rest.ApiService.get")
1164
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1165
1165
  def test_get_kb_json_decode_error(self, mock_get):
1166
1166
  mock_response = mock_get.return_value
1167
1167
  mock_response.status_code = 200
@@ -1177,7 +1177,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1177
1177
  f"Unable to retrieve knowledge base {self.kb_id} for project {self.project_id}: Invalid JSON response")
1178
1178
  mock_get.assert_called_once()
1179
1179
 
1180
- @patch("pygeai.core.services.rest.ApiService.get")
1180
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1181
1181
  def test_list_kbs_success(self, mock_get):
1182
1182
  expected_response = {"kbs": [{"id": "kb-1", "name": "KB1"}]}
1183
1183
  mock_response = mock_get.return_value
@@ -1203,7 +1203,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1203
1203
  headers = mock_get.call_args[1]['headers']
1204
1204
  self.assertEqual(headers['ProjectId'], self.project_id)
1205
1205
 
1206
- @patch("pygeai.core.services.rest.ApiService.get")
1206
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1207
1207
  def test_list_kbs_json_decode_error(self, mock_get):
1208
1208
  mock_response = mock_get.return_value
1209
1209
  mock_response.status_code = 200
@@ -1217,7 +1217,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1217
1217
  f"Unable to list knowledge bases for project {self.project_id}: Invalid JSON response")
1218
1218
  mock_get.assert_called_once()
1219
1219
 
1220
- @patch("pygeai.core.services.rest.ApiService.delete")
1220
+ @patch("pygeai.core.services.rest.GEAIApiService.delete")
1221
1221
  def test_delete_kb_success_with_id(self, mock_delete):
1222
1222
  expected_response = {}
1223
1223
  mock_response = mock_delete.return_value
@@ -1235,7 +1235,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1235
1235
  headers = mock_delete.call_args[1]['headers']
1236
1236
  self.assertEqual(headers['ProjectId'], self.project_id)
1237
1237
 
1238
- @patch("pygeai.core.services.rest.ApiService.delete")
1238
+ @patch("pygeai.core.services.rest.GEAIApiService.delete")
1239
1239
  def test_delete_kb_success_with_name(self, mock_delete):
1240
1240
  expected_response = {}
1241
1241
  mock_response = mock_delete.return_value
@@ -1256,7 +1256,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1256
1256
  self.client.delete_kb()
1257
1257
  self.assertEqual(str(context.exception), "Either kb_id or kb_name must be provided.")
1258
1258
 
1259
- @patch("pygeai.core.services.rest.ApiService.delete")
1259
+ @patch("pygeai.core.services.rest.GEAIApiService.delete")
1260
1260
  def test_delete_kb_json_decode_error(self, mock_delete):
1261
1261
  mock_response = mock_delete.return_value
1262
1262
  mock_response.status_code = 200
@@ -1272,7 +1272,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1272
1272
  f"Unable to delete knowledge base {self.kb_id} from project {self.project_id}: Invalid JSON response")
1273
1273
  mock_delete.assert_called_once()
1274
1274
 
1275
- @patch("pygeai.core.services.rest.ApiService.get")
1275
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1276
1276
  def test_list_jobs_success(self, mock_get):
1277
1277
  expected_response = {"jobs": [{"id": "job-1", "name": "Job1"}]}
1278
1278
  mock_response = mock_get.return_value
@@ -1302,7 +1302,7 @@ class TestAgenticProcessClient(unittest.TestCase):
1302
1302
  headers = mock_get.call_args[1]['headers']
1303
1303
  self.assertEqual(headers['ProjectId'], self.project_id)
1304
1304
 
1305
- @patch("pygeai.core.services.rest.ApiService.get")
1305
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1306
1306
  def test_list_jobs_json_decode_error(self, mock_get):
1307
1307
  mock_response = mock_get.return_value
1308
1308
  mock_response.status_code = 200
@@ -1316,8 +1316,8 @@ class TestAgenticProcessClient(unittest.TestCase):
1316
1316
  f"Unable to list jobs for project {self.project_id}: Invalid JSON response")
1317
1317
  mock_get.assert_called_once()
1318
1318
 
1319
- @patch("pygeai.core.services.rest.ApiService.put")
1320
- @patch("pygeai.core.services.rest.ApiService.get")
1319
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
1320
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1321
1321
  def test_update_process_success_with_id(self, mock_get, mock_put):
1322
1322
  expected_response = {"id": self.process_id, "name": "Updated Process"}
1323
1323
  mock_response_put = mock_put.return_value
@@ -1354,8 +1354,8 @@ class TestAgenticProcessClient(unittest.TestCase):
1354
1354
  self.assertEqual(headers['ProjectId'], self.project_id)
1355
1355
  self.assertEqual(mock_get.call_count, 2)
1356
1356
 
1357
- @patch("pygeai.core.services.rest.ApiService.put")
1358
- @patch("pygeai.core.services.rest.ApiService.get")
1357
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
1358
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1359
1359
  def test_update_process_success_with_name(self, mock_get, mock_put):
1360
1360
  expected_response = {"id": "process-123", "name": "Updated Process"}
1361
1361
  mock_response_put = mock_put.return_value
@@ -1387,8 +1387,8 @@ class TestAgenticProcessClient(unittest.TestCase):
1387
1387
  )
1388
1388
  self.assertEqual(mock_get.call_count, 2)
1389
1389
 
1390
- @patch("pygeai.core.services.rest.ApiService.put")
1391
- @patch("pygeai.core.services.rest.ApiService.get")
1390
+ @patch("pygeai.core.services.rest.GEAIApiService.put")
1391
+ @patch("pygeai.core.services.rest.GEAIApiService.get")
1392
1392
  def test_update_process_json_decode_error(self, mock_get, mock_put):
1393
1393
  mock_response_put = mock_put.return_value
1394
1394
  mock_response_put.status_code = 200