pygeai 0.1.51b3__py3-none-any.whl → 0.6.0b15__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.

Potentially problematic release.


This version of pygeai might be problematic. Click here for more details.

Files changed (648) hide show
  1. pygeai/__init__.py +9 -1
  2. pygeai/_docs/Makefile +20 -0
  3. pygeai/_docs/make.bat +35 -0
  4. pygeai/_docs/source/conf.py +117 -0
  5. pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
  6. pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
  7. pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
  8. pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
  9. pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
  10. pygeai/_docs/source/content/ai_lab.rst +102 -0
  11. pygeai/_docs/source/content/analytics.rst +598 -0
  12. pygeai/_docs/source/content/api_reference/admin.rst +161 -0
  13. pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
  14. pygeai/_docs/source/content/api_reference/auth.rst +379 -0
  15. pygeai/_docs/source/content/api_reference/chat.rst +754 -0
  16. pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
  17. pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
  18. pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
  19. pygeai/_docs/source/content/api_reference/files.rst +592 -0
  20. pygeai/_docs/source/content/api_reference/gam.rst +401 -0
  21. pygeai/_docs/source/content/api_reference/health.rst +58 -0
  22. pygeai/_docs/source/content/api_reference/project.rst +738 -0
  23. pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
  24. pygeai/_docs/source/content/api_reference/rag.rst +710 -0
  25. pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
  26. pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
  27. pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
  28. pygeai/_docs/source/content/api_reference.rst +58 -0
  29. pygeai/_docs/source/content/authentication.rst +295 -0
  30. pygeai/_docs/source/content/chat_gui.rst +121 -0
  31. pygeai/_docs/source/content/cli.rst +203 -0
  32. pygeai/_docs/source/content/debugger.rst +651 -0
  33. pygeai/_docs/source/content/intro.rst +67 -0
  34. pygeai/_docs/source/content/migration.rst +929 -0
  35. pygeai/_docs/source/content/modules.rst +7 -0
  36. pygeai/_docs/source/content/quickstart.rst +143 -0
  37. pygeai/_docs/source/content/samples.rst +394 -0
  38. pygeai/_docs/source/index.rst +75 -0
  39. pygeai/_docs/source/modules.rst +7 -0
  40. pygeai/_docs/source/pygeai.admin.rst +29 -0
  41. pygeai/_docs/source/pygeai.analytics.rst +53 -0
  42. pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
  43. pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
  44. pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
  45. pygeai/_docs/source/pygeai.assistant.rst +55 -0
  46. pygeai/_docs/source/pygeai.auth.rst +29 -0
  47. pygeai/_docs/source/pygeai.chat.rst +69 -0
  48. pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
  49. pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
  50. pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
  51. pygeai/_docs/source/pygeai.cli.rst +62 -0
  52. pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
  53. pygeai/_docs/source/pygeai.core.base.rst +53 -0
  54. pygeai/_docs/source/pygeai.core.common.rst +37 -0
  55. pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
  56. pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
  57. pygeai/_docs/source/pygeai.core.files.rst +61 -0
  58. pygeai/_docs/source/pygeai.core.llm.rst +29 -0
  59. pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
  60. pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
  61. pygeai/_docs/source/pygeai.core.rst +63 -0
  62. pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
  63. pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
  64. pygeai/_docs/source/pygeai.core.services.rst +37 -0
  65. pygeai/_docs/source/pygeai.core.utils.rst +37 -0
  66. pygeai/_docs/source/pygeai.dbg.rst +21 -0
  67. pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
  68. pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
  69. pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
  70. pygeai/_docs/source/pygeai.evaluation.rst +31 -0
  71. pygeai/_docs/source/pygeai.flows.rst +29 -0
  72. pygeai/_docs/source/pygeai.gam.rst +29 -0
  73. pygeai/_docs/source/pygeai.health.rst +29 -0
  74. pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
  75. pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
  76. pygeai/_docs/source/pygeai.lab.rst +65 -0
  77. pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
  78. pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
  79. pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
  80. pygeai/_docs/source/pygeai.man.man1.rst +10 -0
  81. pygeai/_docs/source/pygeai.man.rst +18 -0
  82. pygeai/_docs/source/pygeai.migration.rst +29 -0
  83. pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
  84. pygeai/_docs/source/pygeai.organization.rst +61 -0
  85. pygeai/_docs/source/pygeai.proxy.rst +53 -0
  86. pygeai/_docs/source/pygeai.rst +35 -0
  87. pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
  88. pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
  89. pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
  90. pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
  91. pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
  92. pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
  93. pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
  94. pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
  95. pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
  96. pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
  97. pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
  98. pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
  99. pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
  100. pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
  101. pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
  102. pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
  103. pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
  104. pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
  105. pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
  106. pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
  107. pygeai/_docs/source/pygeai.tests.core.rst +39 -0
  108. pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
  109. pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
  110. pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
  111. pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
  112. pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
  113. pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
  114. pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
  115. pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
  116. pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
  117. pygeai/_docs/source/pygeai.tests.health.rst +21 -0
  118. pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
  119. pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
  120. pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
  121. pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
  122. pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
  123. pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
  124. pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
  125. pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
  126. pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
  127. pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
  128. pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
  129. pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
  130. pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
  131. pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
  132. pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
  133. pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
  134. pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
  135. pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
  136. pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
  137. pygeai/_docs/source/pygeai.tests.rst +33 -0
  138. pygeai/admin/clients.py +14 -11
  139. pygeai/admin/endpoints.py +2 -2
  140. pygeai/analytics/clients.py +505 -0
  141. pygeai/analytics/endpoints.py +35 -0
  142. pygeai/analytics/managers.py +606 -0
  143. pygeai/analytics/mappers.py +207 -0
  144. pygeai/analytics/responses.py +240 -0
  145. pygeai/assistant/clients.py +18 -45
  146. pygeai/assistant/data/clients.py +1 -0
  147. pygeai/assistant/data_analyst/clients.py +8 -12
  148. pygeai/assistant/managers.py +195 -157
  149. pygeai/assistant/mappers.py +4 -2
  150. pygeai/assistant/rag/clients.py +27 -67
  151. pygeai/assistant/rag/mappers.py +12 -6
  152. pygeai/assistant/rag/models.py +301 -159
  153. pygeai/auth/__init__.py +0 -0
  154. pygeai/auth/clients.py +129 -0
  155. pygeai/auth/endpoints.py +6 -0
  156. pygeai/chat/clients.py +308 -37
  157. pygeai/chat/endpoints.py +3 -0
  158. pygeai/chat/iris.py +2 -8
  159. pygeai/chat/managers.py +9 -6
  160. pygeai/chat/session.py +38 -0
  161. pygeai/chat/settings.py +6 -0
  162. pygeai/chat/ui.py +678 -0
  163. pygeai/cli/__init__.py +0 -1
  164. pygeai/cli/commands/admin.py +7 -10
  165. pygeai/cli/commands/analytics.py +533 -0
  166. pygeai/cli/commands/assistant.py +9 -9
  167. pygeai/cli/commands/auth.py +299 -0
  168. pygeai/cli/commands/base.py +71 -9
  169. pygeai/cli/commands/chat.py +676 -19
  170. pygeai/cli/commands/common.py +28 -24
  171. pygeai/cli/commands/configuration.py +66 -13
  172. pygeai/cli/commands/docs.py +105 -0
  173. pygeai/cli/commands/embeddings.py +58 -11
  174. pygeai/cli/commands/evaluation.py +38 -38
  175. pygeai/cli/commands/feedback.py +3 -4
  176. pygeai/cli/commands/files.py +7 -8
  177. pygeai/cli/commands/gam.py +85 -10
  178. pygeai/cli/commands/lab/ai_lab.py +340 -484
  179. pygeai/cli/commands/lab/options.py +8 -0
  180. pygeai/cli/commands/lab/spec.py +273 -0
  181. pygeai/cli/commands/lab/utils.py +13 -0
  182. pygeai/cli/commands/llm.py +6 -7
  183. pygeai/cli/commands/migrate.py +1064 -436
  184. pygeai/cli/commands/organization.py +516 -11
  185. pygeai/cli/commands/rag.py +13 -14
  186. pygeai/cli/commands/rerank.py +3 -5
  187. pygeai/cli/commands/secrets.py +8 -9
  188. pygeai/cli/commands/usage_limits.py +18 -20
  189. pygeai/cli/commands/validators.py +144 -1
  190. pygeai/cli/commands/version.py +4 -5
  191. pygeai/cli/error_handler.py +151 -0
  192. pygeai/cli/geai.py +170 -31
  193. pygeai/cli/geai_proxy.py +86 -25
  194. pygeai/cli/install_man.py +93 -22
  195. pygeai/cli/parsers.py +75 -25
  196. pygeai/cli/texts/help.py +265 -28
  197. pygeai/core/base/clients.py +53 -12
  198. pygeai/core/base/mappers.py +11 -2
  199. pygeai/core/base/session.py +95 -11
  200. pygeai/core/common/config.py +78 -14
  201. pygeai/core/common/exceptions.py +96 -6
  202. pygeai/core/embeddings/__init__.py +19 -0
  203. pygeai/core/embeddings/clients.py +23 -5
  204. pygeai/core/embeddings/managers.py +9 -4
  205. pygeai/core/embeddings/mappers.py +16 -2
  206. pygeai/core/embeddings/responses.py +9 -2
  207. pygeai/core/feedback/clients.py +8 -3
  208. pygeai/core/files/clients.py +23 -24
  209. pygeai/core/files/managers.py +121 -30
  210. pygeai/core/files/responses.py +4 -3
  211. pygeai/core/handlers.py +10 -1
  212. pygeai/core/llm/clients.py +22 -29
  213. pygeai/core/models.py +127 -11
  214. pygeai/core/plugins/clients.py +6 -6
  215. pygeai/core/rerank/clients.py +9 -3
  216. pygeai/core/rerank/managers.py +22 -5
  217. pygeai/core/secrets/clients.py +16 -37
  218. pygeai/core/services/response.py +18 -0
  219. pygeai/core/services/rest.py +159 -49
  220. pygeai/core/utils/__init__.py +0 -0
  221. pygeai/core/utils/console.py +83 -0
  222. pygeai/core/utils/parsers.py +32 -0
  223. pygeai/core/utils/validators.py +10 -0
  224. pygeai/dbg/__init__.py +3 -0
  225. pygeai/dbg/debugger.py +854 -14
  226. pygeai/evaluation/clients.py +7 -4
  227. pygeai/evaluation/dataset/clients.py +46 -44
  228. pygeai/evaluation/plan/clients.py +28 -26
  229. pygeai/evaluation/result/clients.py +38 -5
  230. pygeai/gam/clients.py +50 -28
  231. pygeai/gam/endpoints.py +2 -1
  232. pygeai/health/__init__.py +0 -0
  233. pygeai/health/clients.py +24 -0
  234. pygeai/health/endpoints.py +1 -0
  235. pygeai/lab/__init__.py +0 -90
  236. pygeai/lab/agents/clients.py +203 -162
  237. pygeai/lab/agents/endpoints.py +4 -0
  238. pygeai/lab/agents/mappers.py +57 -7
  239. pygeai/lab/clients.py +24 -0
  240. pygeai/lab/constants.py +3 -0
  241. pygeai/lab/managers.py +571 -541
  242. pygeai/lab/models.py +108 -19
  243. pygeai/lab/processes/clients.py +332 -340
  244. pygeai/lab/processes/mappers.py +3 -3
  245. pygeai/lab/runners.py +90 -0
  246. pygeai/lab/spec/__init__.py +0 -0
  247. pygeai/lab/spec/loader.py +24 -0
  248. pygeai/lab/spec/parsers.py +39 -0
  249. pygeai/lab/strategies/clients.py +67 -63
  250. pygeai/lab/strategies/mappers.py +1 -1
  251. pygeai/lab/tools/clients.py +85 -118
  252. pygeai/lab/tools/endpoints.py +4 -0
  253. pygeai/lab/tools/mappers.py +5 -5
  254. pygeai/man/man1/geai-proxy.1 +116 -0
  255. pygeai/man/man1/geai.1 +2580 -66
  256. pygeai/migration/__init__.py +33 -0
  257. pygeai/migration/strategies.py +468 -146
  258. pygeai/migration/tools.py +170 -3
  259. pygeai/organization/clients.py +245 -50
  260. pygeai/organization/endpoints.py +17 -8
  261. pygeai/organization/limits/clients.py +34 -32
  262. pygeai/organization/limits/managers.py +108 -49
  263. pygeai/organization/managers.py +347 -53
  264. pygeai/organization/mappers.py +102 -2
  265. pygeai/organization/responses.py +58 -1
  266. pygeai/proxy/clients.py +6 -3
  267. pygeai/proxy/config.py +14 -1
  268. pygeai/proxy/managers.py +61 -33
  269. pygeai/proxy/servers.py +196 -51
  270. pygeai/proxy/tool.py +33 -16
  271. pygeai/tests/admin/__init__.py +0 -0
  272. pygeai/tests/admin/test_clients.py +148 -0
  273. pygeai/tests/analytics/__init__.py +0 -0
  274. pygeai/tests/analytics/test_clients.py +86 -0
  275. pygeai/tests/analytics/test_managers.py +94 -0
  276. pygeai/tests/analytics/test_mappers.py +84 -0
  277. pygeai/tests/analytics/test_responses.py +73 -0
  278. pygeai/tests/assistants/rag/test_clients.py +346 -0
  279. pygeai/tests/assistants/rag/test_models.py +292 -0
  280. pygeai/tests/assistants/test_clients.py +176 -82
  281. pygeai/tests/assistants/test_managers.py +191 -57
  282. pygeai/tests/auth/__init__.py +0 -0
  283. pygeai/tests/auth/test_clients.py +289 -0
  284. pygeai/tests/auth/test_oauth.py +172 -0
  285. pygeai/tests/auth/test_session_logging.py +150 -0
  286. pygeai/tests/chat/__init__.py +0 -0
  287. pygeai/tests/chat/test_clients.py +393 -0
  288. pygeai/tests/chat/test_iris.py +38 -0
  289. pygeai/tests/chat/test_session.py +62 -0
  290. pygeai/tests/chat/test_ui.py +224 -0
  291. pygeai/tests/cli/commands/__init__.py +0 -0
  292. pygeai/tests/cli/commands/lab/__init__.py +0 -0
  293. pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
  294. pygeai/tests/cli/commands/lab/test_common.py +208 -0
  295. pygeai/tests/cli/commands/lab/test_spec.py +246 -0
  296. pygeai/tests/cli/commands/test_assistant.py +202 -0
  297. pygeai/tests/cli/commands/test_chat.py +130 -0
  298. pygeai/tests/cli/commands/test_common.py +350 -0
  299. pygeai/tests/cli/commands/test_embeddings.py +132 -0
  300. pygeai/tests/cli/commands/test_evaluation.py +656 -0
  301. pygeai/tests/cli/commands/test_feedback.py +65 -0
  302. pygeai/tests/cli/commands/test_files.py +161 -0
  303. pygeai/tests/cli/commands/test_gam.py +201 -0
  304. pygeai/tests/cli/commands/test_llm.py +114 -0
  305. pygeai/tests/cli/commands/test_migrate.py +176 -0
  306. pygeai/tests/cli/commands/test_organization.py +276 -0
  307. pygeai/tests/cli/commands/test_rag.py +266 -0
  308. pygeai/tests/cli/commands/test_rerank.py +110 -0
  309. pygeai/tests/cli/commands/test_secrets.py +171 -0
  310. pygeai/tests/cli/commands/test_show_help.py +41 -0
  311. pygeai/tests/cli/commands/test_usage_limits.py +412 -0
  312. pygeai/tests/cli/commands/test_validators.py +160 -0
  313. pygeai/tests/cli/commands/test_version.py +81 -0
  314. pygeai/tests/cli/docker/__init__.py +0 -0
  315. pygeai/tests/cli/test_credentials_flag.py +316 -0
  316. pygeai/tests/cli/test_error_handler.py +225 -0
  317. pygeai/tests/cli/test_geai_driver.py +154 -0
  318. pygeai/tests/cli/test_parsers.py +5 -5
  319. pygeai/tests/core/base/data/models.py +7 -0
  320. pygeai/tests/core/base/test_mappers.py +43 -11
  321. pygeai/tests/core/base/test_models.py +3 -1
  322. pygeai/tests/core/base/test_responses.py +53 -0
  323. pygeai/tests/core/common/__init__.py +0 -0
  324. pygeai/tests/core/common/data/__init__.py +0 -0
  325. pygeai/tests/core/common/test_config.py +186 -0
  326. pygeai/tests/core/common/test_decorators.py +69 -0
  327. pygeai/tests/core/embeddings/__init__.py +0 -0
  328. pygeai/tests/core/embeddings/test_clients.py +225 -0
  329. pygeai/tests/core/embeddings/test_managers.py +171 -0
  330. pygeai/tests/core/embeddings/test_mappers.py +142 -0
  331. pygeai/tests/core/feedback/__init__.py +0 -0
  332. pygeai/tests/core/feedback/test_clients.py +64 -0
  333. pygeai/tests/core/files/test_clients.py +128 -0
  334. pygeai/tests/core/files/test_managers.py +124 -78
  335. pygeai/tests/core/files/test_mappers.py +137 -0
  336. pygeai/tests/core/files/test_models.py +103 -0
  337. pygeai/tests/core/files/test_responses.py +122 -0
  338. pygeai/tests/core/llm/__init__.py +0 -0
  339. pygeai/tests/core/llm/test_clients.py +142 -0
  340. pygeai/tests/core/plugins/__init__.py +0 -0
  341. pygeai/tests/core/plugins/test_clients.py +66 -0
  342. pygeai/tests/core/rerank/test_clients.py +76 -0
  343. pygeai/tests/core/rerank/test_managers.py +61 -39
  344. pygeai/tests/core/secrets/__init__.py +0 -0
  345. pygeai/tests/core/secrets/test_clients.py +264 -0
  346. pygeai/tests/core/services/__init__.py +0 -0
  347. pygeai/tests/core/services/test_rest.py +273 -0
  348. pygeai/tests/core/test_handlers.py +66 -0
  349. pygeai/tests/core/utils/__init__.py +0 -0
  350. pygeai/tests/core/utils/test_console.py +80 -0
  351. pygeai/tests/dbg/__init__.py +0 -0
  352. pygeai/tests/dbg/test_debugger.py +591 -0
  353. pygeai/tests/evaluation/__init__.py +0 -0
  354. pygeai/tests/evaluation/dataset/__init__.py +0 -0
  355. pygeai/tests/evaluation/dataset/test_clients.py +265 -0
  356. pygeai/tests/evaluation/plan/__init__.py +0 -0
  357. pygeai/tests/evaluation/plan/test_clients.py +195 -0
  358. pygeai/tests/evaluation/result/__init__.py +0 -0
  359. pygeai/tests/evaluation/result/test_clients.py +66 -0
  360. pygeai/tests/gam/__init__.py +0 -0
  361. pygeai/tests/gam/test_clients.py +195 -0
  362. pygeai/tests/health/__init__.py +0 -0
  363. pygeai/tests/health/test_clients.py +41 -0
  364. pygeai/tests/integration/__init__.py +0 -0
  365. pygeai/tests/integration/assistants/__init__.py +0 -0
  366. pygeai/tests/integration/assistants/rag/__init__.py +0 -0
  367. pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
  368. pygeai/tests/integration/chat/__init__.py +0 -0
  369. pygeai/tests/integration/chat/test_generate_image.py +158 -0
  370. pygeai/tests/integration/lab/__init__.py +0 -0
  371. pygeai/tests/integration/lab/agents/__init__.py +0 -0
  372. pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
  373. pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
  374. pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
  375. pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
  376. pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
  377. pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
  378. pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
  379. pygeai/tests/integration/lab/processes/__init__.py +0 -0
  380. pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
  381. pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
  382. pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
  383. pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
  384. pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
  385. pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
  386. pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
  387. pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
  388. pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
  389. pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
  390. pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
  391. pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
  392. pygeai/tests/integration/lab/tools/__init__.py +0 -0
  393. pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
  394. pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
  395. pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
  396. pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
  397. pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
  398. pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
  399. pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
  400. pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
  401. pygeai/tests/lab/agents/__init__.py +0 -0
  402. pygeai/tests/lab/agents/test_clients.py +481 -0
  403. pygeai/tests/lab/agents/test_mappers.py +440 -0
  404. pygeai/tests/lab/processes/__init__.py +0 -0
  405. pygeai/tests/lab/processes/test_clients.py +1416 -0
  406. pygeai/tests/lab/processes/test_mappers.py +1092 -0
  407. pygeai/tests/lab/spec/__init__.py +0 -0
  408. pygeai/tests/lab/spec/test_loader.py +59 -0
  409. pygeai/tests/lab/spec/test_parsers.py +182 -0
  410. pygeai/tests/lab/strategies/__init__.py +0 -0
  411. pygeai/tests/lab/strategies/test_clients.py +241 -0
  412. pygeai/tests/lab/strategies/test_mappers.py +132 -0
  413. pygeai/tests/lab/test_managers.py +553 -0
  414. pygeai/tests/lab/test_models.py +500 -3
  415. pygeai/tests/lab/tools/__init__.py +0 -0
  416. pygeai/tests/lab/tools/test_clients.py +521 -0
  417. pygeai/tests/lab/tools/test_mappers.py +198 -0
  418. pygeai/tests/migration/__init__.py +0 -0
  419. pygeai/tests/migration/test_strategies.py +405 -0
  420. pygeai/tests/migration/test_tools.py +159 -0
  421. pygeai/tests/organization/limits/test_clients.py +567 -0
  422. pygeai/tests/organization/limits/test_managers.py +298 -56
  423. pygeai/tests/organization/test_clients.py +600 -30
  424. pygeai/tests/organization/test_managers.py +424 -0
  425. pygeai/tests/organization/test_mappers.py +153 -0
  426. pygeai/tests/organization/test_responses.py +137 -0
  427. pygeai/tests/proxy/__init__.py +1 -0
  428. pygeai/tests/proxy/test_clients.py +397 -0
  429. pygeai/tests/proxy/test_config.py +171 -0
  430. pygeai/tests/proxy/test_integration.py +305 -0
  431. pygeai/tests/proxy/test_managers.py +312 -0
  432. pygeai/tests/proxy/test_servers.py +387 -0
  433. pygeai/tests/proxy/test_tool.py +176 -0
  434. pygeai/tests/snippets/analytics/__init__.py +0 -0
  435. pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
  436. pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
  437. pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
  438. pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
  439. pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
  440. pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
  441. pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
  442. pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
  443. pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
  444. pygeai/tests/snippets/auth/__init__.py +0 -0
  445. pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
  446. pygeai/tests/snippets/chat/get_response.py +15 -0
  447. pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
  448. pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
  449. pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
  450. pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
  451. pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
  452. pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
  453. pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
  454. pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
  455. pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
  456. pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
  457. pygeai/tests/snippets/dbg/__init__.py +0 -0
  458. pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
  459. pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
  460. pygeai/tests/snippets/dbg/file_debugging.py +72 -0
  461. pygeai/tests/snippets/dbg/module_debugging.py +61 -0
  462. pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
  463. pygeai/tests/snippets/dbg/stepping_example.py +40 -0
  464. pygeai/tests/snippets/embeddings/cache_example.py +31 -0
  465. pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
  466. pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
  467. pygeai/tests/snippets/embeddings/openai_example.py +30 -0
  468. pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
  469. pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
  470. pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
  471. pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
  472. pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
  473. pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
  474. pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
  475. pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
  476. pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
  477. pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
  478. pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
  479. pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
  480. pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
  481. pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
  482. pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
  483. pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
  484. pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
  485. pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
  486. pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
  487. pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
  488. pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
  489. pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
  490. pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
  491. pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
  492. pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
  493. pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
  494. pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
  495. pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
  496. pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
  497. pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
  498. pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
  499. pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
  500. pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
  501. pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
  502. pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
  503. pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
  504. pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
  505. pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
  506. pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
  507. pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
  508. pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
  509. pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
  510. pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
  511. pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
  512. pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
  513. pygeai/tests/snippets/files/delete_file.py +1 -4
  514. pygeai/tests/snippets/files/get_file_content.py +2 -4
  515. pygeai/tests/snippets/files/get_file_data.py +1 -4
  516. pygeai/tests/snippets/files/get_file_list.py +1 -6
  517. pygeai/tests/snippets/files/upload_file.py +1 -5
  518. pygeai/tests/snippets/gam/gam_access_token.py +87 -0
  519. pygeai/tests/snippets/lab/agentic_flow_example_1.py +25 -23
  520. pygeai/tests/snippets/lab/agentic_flow_example_4.py +23 -23
  521. pygeai/tests/snippets/lab/agents/create_agent.py +5 -8
  522. pygeai/tests/snippets/lab/agents/create_agent_2.py +1 -5
  523. pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
  524. pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
  525. pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
  526. pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
  527. pygeai/tests/snippets/lab/agents/delete_agent.py +1 -5
  528. pygeai/tests/snippets/lab/agents/get_agent.py +2 -11
  529. pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
  530. pygeai/tests/snippets/lab/agents/get_sharing_link.py +2 -7
  531. pygeai/tests/snippets/lab/agents/list_agents.py +4 -7
  532. pygeai/tests/snippets/lab/agents/publish_agent_revision.py +2 -6
  533. pygeai/tests/snippets/lab/agents/update_agent.py +1 -5
  534. pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
  535. pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
  536. pygeai/tests/snippets/lab/crud_ui.py +462 -0
  537. pygeai/tests/snippets/lab/processes/create_process.py +3 -5
  538. pygeai/tests/snippets/lab/processes/create_task.py +3 -5
  539. pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +10 -19
  540. pygeai/tests/snippets/lab/processes/kbs/create_kb.py +2 -5
  541. pygeai/tests/snippets/lab/processes/kbs/get_kb.py +10 -16
  542. pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +13 -20
  543. pygeai/tests/snippets/lab/processes/kbs/try_all.py +5 -7
  544. pygeai/tests/snippets/lab/processes/list_processes.py +5 -7
  545. pygeai/tests/snippets/lab/runner_1.py +1 -1
  546. pygeai/tests/snippets/lab/samples/summarize_files.py +3 -3
  547. pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +2 -5
  548. pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +2 -5
  549. pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +3 -6
  550. pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +2 -5
  551. pygeai/tests/snippets/lab/tools/create_tool.py +4 -10
  552. pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
  553. pygeai/tests/snippets/lab/tools/delete_tool.py +2 -6
  554. pygeai/tests/snippets/lab/tools/get_parameter.py +5 -7
  555. pygeai/tests/snippets/lab/tools/get_tool.py +5 -7
  556. pygeai/tests/snippets/lab/tools/list_tools.py +3 -7
  557. pygeai/tests/snippets/lab/tools/publish_tool_revision.py +3 -5
  558. pygeai/tests/snippets/lab/tools/set_parameters.py +4 -9
  559. pygeai/tests/snippets/lab/tools/update_tool.py +4 -8
  560. pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
  561. pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
  562. pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
  563. pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
  564. pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
  565. pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
  566. pygeai/tests/snippets/lab/{file_summarizer_example.py → use_cases/file_summarizer_example.py} +3 -3
  567. pygeai/tests/snippets/lab/{file_summarizer_example_2.py → use_cases/file_summarizer_example_2.py} +12 -12
  568. pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
  569. pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
  570. pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
  571. pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
  572. pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
  573. pygeai/tests/snippets/migrate/__init__.py +45 -0
  574. pygeai/tests/snippets/migrate/agent_migration.py +110 -0
  575. pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
  576. pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
  577. pygeai/tests/snippets/migrate/process_migration.py +64 -0
  578. pygeai/tests/snippets/migrate/project_migration.py +42 -0
  579. pygeai/tests/snippets/migrate/tool_migration.py +64 -0
  580. pygeai/tests/snippets/organization/add_project_member.py +10 -0
  581. pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
  582. pygeai/tests/snippets/organization/create_project.py +2 -2
  583. pygeai/tests/snippets/organization/get_memberships.py +12 -0
  584. pygeai/tests/snippets/organization/get_organization_members.py +6 -0
  585. pygeai/tests/snippets/organization/get_project_members.py +6 -0
  586. pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
  587. pygeai/tests/snippets/organization/get_project_roles.py +6 -0
  588. pygeai/vendor/a2a/__init__.py +1 -0
  589. pygeai/vendor/a2a/auth/__init__.py +0 -0
  590. pygeai/vendor/a2a/auth/user.py +31 -0
  591. pygeai/vendor/a2a/client/__init__.py +19 -0
  592. pygeai/vendor/a2a/client/client.py +425 -0
  593. pygeai/vendor/a2a/client/errors.py +33 -0
  594. pygeai/vendor/a2a/client/helpers.py +22 -0
  595. pygeai/vendor/a2a/py.typed +0 -0
  596. pygeai/vendor/a2a/server/__init__.py +1 -0
  597. pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
  598. pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
  599. pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
  600. pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
  601. pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
  602. pygeai/vendor/a2a/server/apps/__init__.py +16 -0
  603. pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
  604. pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
  605. pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
  606. pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
  607. pygeai/vendor/a2a/server/context.py +23 -0
  608. pygeai/vendor/a2a/server/events/__init__.py +21 -0
  609. pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
  610. pygeai/vendor/a2a/server/events/event_queue.py +156 -0
  611. pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
  612. pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
  613. pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
  614. pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
  615. pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
  616. pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
  617. pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
  618. pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
  619. pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
  620. pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
  621. pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
  622. pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
  623. pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
  624. pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
  625. pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
  626. pygeai/vendor/a2a/types.py +1624 -0
  627. pygeai/vendor/a2a/utils/__init__.py +40 -0
  628. pygeai/vendor/a2a/utils/artifact.py +72 -0
  629. pygeai/vendor/a2a/utils/errors.py +69 -0
  630. pygeai/vendor/a2a/utils/helpers.py +176 -0
  631. pygeai/vendor/a2a/utils/message.py +83 -0
  632. pygeai/vendor/a2a/utils/task.py +57 -0
  633. pygeai/vendor/a2a/utils/telemetry.py +299 -0
  634. pygeai-0.6.0b15.dist-info/METADATA +205 -0
  635. pygeai-0.6.0b15.dist-info/RECORD +799 -0
  636. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
  637. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/entry_points.txt +2 -1
  638. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/licenses/LICENSE +13 -1
  639. pygeai-0.6.0b15.dist-info/top_level.txt +1 -0
  640. docs/geai-proxy/README.md +0 -145
  641. docs/source/conf.py +0 -45
  642. pygeai/tests/core/test_managers.py +0 -233
  643. pygeai-0.1.51b3.dist-info/METADATA +0 -130
  644. pygeai-0.1.51b3.dist-info/RECORD +0 -324
  645. pygeai-0.1.51b3.dist-info/top_level.txt +0 -3
  646. scripts/bump_beta_version.py +0 -56
  647. {scripts → pygeai/analytics}/__init__.py +0 -0
  648. /pygeai/tests/snippets/lab/{c_code_fixer_agent_flow.py → use_cases/c_code_fixer_agent_flow.py} +0 -0
pygeai/cli/texts/help.py CHANGED
@@ -1,9 +1,6 @@
1
1
  AUTHORS_SECTION = """
2
2
  AUTHORS
3
- Developed and maintained by:
4
- - Alejandro Trinidad <alejandro.trinidad@globant.com>
5
-
6
- Copyright 2025, Globant.
3
+ Copyright 2026, Globant.
7
4
 
8
5
  REPORTING BUGS
9
6
  To report any bug, request features or make any suggestions, the following email is available:
@@ -42,7 +39,7 @@ ERROR CODES
42
39
  Certain error descriptions can contain up to %n references specific to that error.
43
40
  These references are described with %1, %2,... ,%n.
44
41
 
45
- ErrorCode Description
42
+ ErrorCode Description
46
43
  1 Assistant Not Found
47
44
  2 Provider Type Not Found
48
45
  3 Request Not Found
@@ -139,15 +136,20 @@ DESCRIPTION
139
136
 
140
137
  EXAMPLES
141
138
  The command:
142
- geai c
143
- starts an interactive tool to configure API KEY and BASE URL to work with GEAI.
139
+ geai org list-projects
140
+ lists available projects in your organization.
144
141
 
145
142
  The command:
146
- geai organization list-projects
147
- list available projects. For this, an organization API KEY is required.
143
+ geai org list-projects -d full
144
+ lists all projects with full details.
148
145
 
149
146
  The command:
150
- ...
147
+ geai org create-project -n "SDKTest" -e "admin@example.com" -d "Test project for SDK"
148
+ creates a new project with specified name, email and description.
149
+
150
+ The command:
151
+ geai org get-tokens --id <PROJECT_UUID>
152
+ retrieves API tokens for a specific project
151
153
 
152
154
  {AUTHORS_SECTION}
153
155
  """
@@ -170,10 +172,16 @@ DESCRIPTION
170
172
 
171
173
  EXAMPLES
172
174
  The command:
173
-
175
+ geai ast get-assistant --id <ASSISTANT_UUID>
176
+ retrieves detailed information about a specific assistant.
174
177
 
175
178
  The command:
176
- ...
179
+ geai ast create-assistant --type chat --name "MyAssistant" --prompt "You are a helpful assistant"
180
+ creates a new assistant with the specified type, name and prompt.
181
+
182
+ The command:
183
+ geai ast chat --name "MyAssistant" --msg '[{{{{"role": "user", "content": "Hello"}}}}]'
184
+ starts a chat session with the specified assistant
177
185
 
178
186
  {AUTHORS_SECTION}
179
187
  """
@@ -196,10 +204,16 @@ DESCRIPTION
196
204
 
197
205
  EXAMPLES
198
206
  The command:
199
-
207
+ geai rag list-assistants
208
+ lists all RAG assistants in the current project.
200
209
 
201
210
  The command:
202
- ...
211
+ geai rag get-assistant --name "MyRAG"
212
+ retrieves information about a specific RAG assistant.
213
+
214
+ The command:
215
+ geai rag upload-document --name "MyRAG" --file "document.pdf"
216
+ uploads a document to a RAG assistant's knowledge base
203
217
 
204
218
  {AUTHORS_SECTION}
205
219
  """
@@ -217,15 +231,34 @@ SYNOPSIS
217
231
  DESCRIPTION
218
232
  geai chat is a command from geai cli utility, developed to chat with assistant in GEAI.
219
233
 
234
+ The model needs to specify an assistant_type and a specific_parameter whose format depends on that type. Its format is as follows:
235
+
236
+ "model": "saia:<assistant_type>:<specific_parameter>"
237
+
238
+ assistant_type can be:
239
+ - agent: Identifies a Agent.
240
+ - flow: Identifies a Flow.
241
+ - assistant: Identifies an Assistant API, Data Analyst Assistant, Chat with Data Assistant and API Assistant.
242
+ - search: Identifies a RAG Assistant.
243
+
244
+ For more information, refer to the GEAI Wiki: https://wiki.genexus.com/enterprise-ai/wiki?34,Chat+API
245
+
220
246
  The options are as follows:
221
247
  {{available_commands}}
222
248
 
223
249
  EXAMPLES
224
250
  The command:
225
251
 
252
+ geai chat iris
253
+ starts an interactive chat session with Iris assistant.
226
254
 
227
255
  The command:
228
- ...
256
+ geai chat agent --name "MyAgent"
257
+ starts a chat session with a specific agent.
258
+
259
+ The command:
260
+ geai chat completion --model "saia:assistant:MyAssistant" --msg '[{{{{"role": "user", "content": "Hello"}}}}]' --stream 0
261
+ sends a completion request to the specified assistant
229
262
 
230
263
  {AUTHORS_SECTION}
231
264
  """
@@ -249,9 +282,12 @@ DESCRIPTION
249
282
  EXAMPLES
250
283
  The command:
251
284
 
285
+ geai gam get-access-token
286
+ retrieves the current GAM access token.
252
287
 
253
288
  The command:
254
- ...
289
+ geai gam get-user-info
290
+ retrieves user information from GAM
255
291
 
256
292
  {AUTHORS_SECTION}
257
293
  """
@@ -275,9 +311,12 @@ DESCRIPTION
275
311
  EXAMPLES
276
312
  The command:
277
313
 
314
+ geai secrets create-secret --name "API_KEY" --value "secret_value"
315
+ creates a new secret in the secrets manager.
278
316
 
279
317
  The command:
280
- ...
318
+ geai secrets list-secrets
319
+ lists all secrets stored in the project
281
320
 
282
321
  {AUTHORS_SECTION}
283
322
  """
@@ -301,9 +340,30 @@ DESCRIPTION
301
340
  EXAMPLES
302
341
  The command:
303
342
 
304
-
305
- The command:
306
- ...
343
+ geai migrate clone-project \\
344
+ --from-api-key "source_api_key_123abc456def789ghi012jkl345mno678pqr901stu234" \\
345
+ --from-organization-api-key "org_key_abc123def456ghi789jkl012mno345pqr678" \\
346
+ --from-project-id "1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" \\
347
+ --from-instance "https://api.example.ai" \\
348
+ --to-project-name "Migrated Project - Complete Clone" \\
349
+ --admin-email "admin@example.com" \\
350
+ --all
351
+
352
+ will clone entire project within the same instance
353
+
354
+ The command:
355
+
356
+ geai migrate clone-project \\
357
+ --from-api-key "source_api_key_123abc456def789ghi012jkl345mno678pqr901stu234" \\
358
+ --from-organization-api-key "source_org_key_abc123def456ghi789jkl012mno345pqr678" \\
359
+ --from-project-id "1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" \\
360
+ --from-instance "https://api.test.example.ai" \\
361
+ --to-organization-api-key "dest_org_key_stu901vwx234yz567abc890def123ghi456jkl789" \\
362
+ --to-project-name "Migrated Project - Complete Clone" \\
363
+ --admin-email "admin@example.com" \\
364
+ --all
365
+
366
+ will clone entire project with ALL resources (cross-instance)
307
367
 
308
368
  {AUTHORS_SECTION}
309
369
  """
@@ -327,9 +387,12 @@ DESCRIPTION
327
387
  EXAMPLES
328
388
  The command:
329
389
 
390
+ geai rerank rerank-chunks --query "search term" --documents '["doc1", "doc2"]' --model "cohere/rerank-english-v3.0"
391
+ reranks the provided documents based on relevance to the query.
330
392
 
331
393
  The command:
332
- ...
394
+ geai rerank chunks -q "my query" -d "document text" --top-n 5
395
+ reranks chunks and returns top 5 results
333
396
 
334
397
  {AUTHORS_SECTION}
335
398
  """
@@ -354,9 +417,16 @@ DESCRIPTION
354
417
  EXAMPLES
355
418
  The command:
356
419
 
420
+ geai emb generate -i "Help me with Globant Enterprise AI" -m "openai/text-embedding-3-small"
421
+ generates embeddings for the provided text.
357
422
 
358
423
  The command:
359
- ...
424
+ geai emb generate -i "Help me with" -i "Globant Enterprise AI" -m "openai/text-embedding-3-small" --cache 1
425
+ generates embeddings with caching enabled for multiple inputs.
426
+
427
+ The command:
428
+ geai emb generate -i "text" -m "vertex_ai/text-embedding-004" --input-type "SEMANTIC_SIMILARITY"
429
+ generates embeddings with a specific input type
360
430
 
361
431
  {AUTHORS_SECTION}
362
432
  """
@@ -380,9 +450,12 @@ DESCRIPTION
380
450
  EXAMPLES
381
451
  The command:
382
452
 
453
+ geai feedback send --request-id "UUID" --rating 5 --comment "Great response"
454
+ sends positive feedback for an assistant response.
383
455
 
384
456
  The command:
385
- ...
457
+ geai feedback list --assistant-id "UUID"
458
+ lists all feedback for a specific assistant
386
459
 
387
460
  {AUTHORS_SECTION}
388
461
  """
@@ -502,9 +575,45 @@ DESCRIPTION
502
575
  EXAMPLES
503
576
  The command:
504
577
 
578
+ geai admin validate-token
579
+ validates the current API token.
505
580
 
506
581
  The command:
507
- ...
582
+ geai admin list-authorized-organizations
583
+ lists all organizations the current user has access to.
584
+
585
+ The command:
586
+ geai admin project-visibility --project-id "UUID"
587
+ retrieves visibility settings for a specific project
588
+
589
+ {AUTHORS_SECTION}
590
+ """
591
+
592
+ AUTH_HELP_TEXT = f"""
593
+ GEAI CLI - AUTH
594
+ -----------------------
595
+
596
+ NAME
597
+ geai - Command Line Interface for Globant Enterprise AI
598
+
599
+ SYNOPSIS
600
+ geai auth <subcommand> --[flag] [flag_arg]
601
+
602
+ DESCRIPTION
603
+ geai auth is a command from geai cli utility, developed to manage authentication access tokens instance of GEAI.
604
+
605
+ The options are as follows:
606
+ {{available_commands}}
607
+
608
+ EXAMPLES
609
+ The command:
610
+
611
+ geai auth get-access-token
612
+ retrieves an OAuth2 access token for authentication.
613
+
614
+ The command:
615
+ geai auth get-user-info
616
+ retrieves the current user's profile information
508
617
 
509
618
  {AUTHORS_SECTION}
510
619
  """
@@ -530,9 +639,12 @@ DESCRIPTION
530
639
  EXAMPLES
531
640
  The command:
532
641
 
642
+ geai llm list-models
643
+ lists all available LLM models in GEAI.
533
644
 
534
645
  The command:
535
- ...
646
+ geai llm list-providers
647
+ lists all available LLM providers
536
648
 
537
649
  {AUTHORS_SECTION}
538
650
  """
@@ -556,9 +668,12 @@ DESCRIPTION
556
668
  EXAMPLES
557
669
  The command:
558
670
 
671
+ geai files upload --file "document.pdf" --purpose "assistants"
672
+ uploads a file to GEAI for use with assistants.
559
673
 
560
674
  The command:
561
- ...
675
+ geai files list
676
+ lists all uploaded files in the project
562
677
 
563
678
  {AUTHORS_SECTION}
564
679
  """
@@ -582,9 +697,16 @@ DESCRIPTION
582
697
  EXAMPLES
583
698
  The command:
584
699
 
700
+ geai -a myorg usage-limit set-organization-limit --organization <ORG_UUID> --subscription-type Monthly --usage-unit Cost --soft-limit 1000 --hard-limit 5000 --renewal-status Renewable
701
+ sets usage limits for an organization.
585
702
 
586
703
  The command:
587
- ...
704
+ geai -a myorg usage-limit get-latest-org-lim --organization <ORG_UUID>
705
+ retrieves the latest usage limit for an organization.
706
+
707
+ The command:
708
+ geai -a myorg usage-limit up-org-lim --organization <ORG_UUID> --lid <LIMIT_UUID> --renewal-status Renewable --soft-limit 5000 --hard-limit 8000
709
+ updates an existing usage limit for an organization
588
710
 
589
711
  {AUTHORS_SECTION}
590
712
  """
@@ -608,9 +730,124 @@ DESCRIPTION
608
730
  EXAMPLES
609
731
  The command:
610
732
 
733
+ geai ai-lab create-agent --name "MyAgent" --instructions "You are a helpful agent"
734
+ creates a new agent in the AI Lab.
611
735
 
612
736
  The command:
613
- ...
737
+ geai ai-lab list-agents
738
+ lists all agents in the current project.
739
+
740
+ The command:
741
+ geai ai-lab create-process --name "MyProcess" --description "Automated workflow"
742
+ creates a new agentic process
743
+
744
+ {AUTHORS_SECTION}
745
+ """
746
+
747
+ SPEC_HELP_TEXT = f"""
748
+ GEAI CLI - AI LAB - SPEC
749
+ ------------------------
750
+
751
+ NAME
752
+ geai - Command Line Interface for Globant Enterprise AI
753
+
754
+ SYNOPSIS
755
+ geai spec <subcommand> --[flag] [flag_arg]
756
+
757
+ DESCRIPTION
758
+ geai spec is a command from geai cli utility, developed to load components to the AI Lab in GEAI from json specifications.
759
+
760
+ The options are as follows:
761
+ {{available_commands}}
762
+
763
+ EXAMPLES
764
+ The command:
765
+
766
+ geai spec load-agent --file "agent_spec.json"
767
+ loads an agent from a JSON specification file.
768
+
769
+ The command:
770
+ geai spec load-process --file "process_spec.json"
771
+ loads an agentic process from a JSON specification file
772
+
773
+ {AUTHORS_SECTION}
774
+ """
775
+
776
+ DOCS_HELP_TEXT = f"""
777
+ GEAI CLI - DOCS
778
+ ---------------
779
+
780
+ NAME
781
+ geai - Command Line Interface for Globant Enterprise AI
782
+
783
+ SYNOPSIS
784
+ geai docs <subcommand>
785
+
786
+ DESCRIPTION
787
+ geai docs is a command from geai cli utility to view the PyGEAI SDK documentation.
788
+
789
+ The options are as follows:
790
+ {{available_commands}}
791
+
792
+ EXAMPLES
793
+ The command:
794
+
795
+ geai docs
796
+ opens the HTML documentation in your web browser.
797
+
798
+ If documentation dependencies are not installed, you will be prompted to install them.
799
+ If the documentation is not built, it will be automatically generated.
800
+
801
+ {AUTHORS_SECTION}
802
+ """
803
+
804
+ ANALYTICS_HELP_TEXT = f"""
805
+ GEAI CLI - ANALYTICS
806
+ --------------------
807
+
808
+ NAME
809
+ geai - Command Line Interface for Globant Enterprise AI
810
+
811
+ SYNOPSIS
812
+ geai analytics <subcommand> --[flag] [flag_arg]
813
+
814
+ DESCRIPTION
815
+ geai analytics is a command from geai cli utility, developed to retrieve analytics and metrics from GEAI.
816
+
817
+ Date Range Defaults:
818
+ If --start-date and --end-date are not specified, the commands will default to the previous month
819
+ (from the first day to the last day of the previous month).
820
+
821
+ The options are as follows:
822
+ {{available_commands}}
823
+
824
+ EXAMPLES
825
+ The command:
826
+
827
+ geai analytics agents-created --start-date "2024-01-01" --end-date "2024-01-31"
828
+ retrieves the total number of agents created and modified in January 2024.
829
+
830
+ The command:
831
+
832
+ geai analytics full-report
833
+ retrieves a comprehensive analytics report for the previous month.
834
+
835
+ The command:
836
+
837
+ geai analytics full-report --start-date "2024-01-01" --end-date "2024-01-31" --csv report.csv
838
+ retrieves a comprehensive analytics report for January 2024 and exports it to report.csv.
839
+
840
+ The command:
841
+ geai analytics total-cost -s "2024-01-01" -e "2024-01-31"
842
+ retrieves the total cost for January 2024.
843
+
844
+ The command:
845
+ geai analytics requests-per-day -s "2024-01-01" -e "2024-01-31"
846
+ retrieves the total requests per day for January 2024.
847
+
848
+ The command:
849
+ geai analytics top-agents -s "2024-01-01" -e "2024-01-31"
850
+ retrieves the top 10 agents by number of requests
614
851
 
615
852
  {AUTHORS_SECTION}
616
853
  """
@@ -1,33 +1,74 @@
1
1
  from abc import ABC
2
+ from pygeai import logger
2
3
 
3
4
  from pygeai.core.base.session import get_session, Session
4
5
  from pygeai.core.common.exceptions import MissingRequirementException
5
6
  from pygeai.core.services.rest import ApiService
7
+ from pygeai.core.utils.validators import validate_status_code
8
+
6
9
 
7
10
 
8
11
  class BaseClient(ABC):
12
+ _logged_session_config = None
9
13
 
10
- def __init__(self, api_key: str = None, base_url: str = None, alias: str = "default"):
14
+ def __init__(self, api_key: str = None, base_url: str = None, alias: str = None, *,
15
+ access_token: str = None, project_id: str = None):
11
16
  """
12
17
  If commont settings are not specified, they're retrieved from default Session, based on the
13
18
  credential files.
14
19
  :param api_key: GEAI API KEY to access services
15
20
  :param base_url: URL for GEAI instance to be used
21
+ :param alias: Alias to use from credentials file
22
+ :param access_token: OAuth access token (keyword-only)
23
+ :param project_id: Project ID for OAuth authentication (keyword-only)
16
24
  """
17
- if not (api_key and base_url):
18
- session = get_session(alias)
19
- if not session:
25
+ if access_token and not project_id:
26
+ raise MissingRequirementException("project_id is required when using access_token")
27
+
28
+ if not (api_key and base_url) and not (access_token and base_url) and alias:
29
+ self.__session = get_session(alias)
30
+ if not self.__session:
20
31
  raise MissingRequirementException("API KEY and BASE URL must be defined in order to use this functionality")
32
+ elif (api_key or access_token) and base_url:
33
+ self.__session = get_session()
34
+ self.__session.api_key = api_key
35
+ self.__session.access_token = access_token
36
+ self.__session.project_id = project_id
37
+ self.__session.base_url = base_url
38
+ else:
39
+ self.__session = get_session()
21
40
 
22
- if not api_key:
23
- api_key = session.api_key
24
- if not base_url:
25
- base_url = session.base_url
41
+ if self.session is None:
42
+ raise MissingRequirementException("Cannot access this functionality without setting API_KEY and BASE_URL")
43
+
44
+ # Log session config only once per unique session configuration
45
+ session_config_key = (
46
+ self.session.alias,
47
+ self.session.base_url,
48
+ bool(self.session.access_token),
49
+ bool(self.session.api_key)
50
+ )
51
+
52
+ if BaseClient._logged_session_config != session_config_key:
53
+ if self.session.access_token and self.session.project_id:
54
+ logger.info(f"Using OAuth 2.0 authentication")
55
+ elif self.session.api_key:
56
+ logger.info(f"Using API Key authentication")
57
+ else:
58
+ logger.warning("No authentication method configured")
59
+
60
+ logger.info(f"Alias: {self.session.alias}")
61
+ logger.info(f"Base URL: {self.session.base_url}")
62
+
63
+ BaseClient._logged_session_config = session_config_key
26
64
 
27
- self.__session = Session(api_key=api_key, base_url=base_url)
28
- self.__session.api_key = api_key
29
- self.__session.base_url = base_url
30
- self.__api_service = ApiService(base_url=self.session.base_url, token=self.session.api_key)
65
+ token = self.session.access_token if self.session.access_token else self.session.api_key
66
+
67
+ self.__api_service = ApiService(
68
+ base_url=self.session.base_url,
69
+ token=token,
70
+ project_id=self.session.project_id
71
+ )
31
72
 
32
73
  @property
33
74
  def session(self):
@@ -351,13 +351,22 @@ class ModelMapper:
351
351
  @classmethod
352
352
  def map_to_item(cls, data: dict) -> RequestItem:
353
353
  return RequestItem(
354
+ api_token=data.get('apiToken'),
354
355
  assistant=data.get('assistant'),
356
+ cost=data.get('cost'),
357
+ elapsed_time_ms=data.get('elapsedTimeMs'),
358
+ end_timestamp=data.get('endTimestamp'),
359
+ feedback=data.get('feedback'),
355
360
  intent=data.get('intent'),
356
- timestamp=data.get('timestamp'),
361
+ module=data.get('module'),
357
362
  prompt=data.get('prompt'),
358
363
  output=data.get('output'),
359
364
  input_text=data.get('inputText'),
360
- status=data.get('status')
365
+ rag_sources_consulted=data.get('ragSourcesConsulted'),
366
+ session_id=data.get('sessionId'),
367
+ start_timestamp=data.get('startTimestamp'),
368
+ status=data.get('status'),
369
+ timestamp=data.get('timestamp')
361
370
  )
362
371
 
363
372
  @classmethod
@@ -1,11 +1,13 @@
1
- import os
2
1
  import sys
2
+ from typing import Optional
3
3
 
4
+ from pygeai import logger
4
5
  from pygeai.core.common.config import get_settings
5
6
  from pygeai.core.common.exceptions import MissingRequirementException
6
7
  from pygeai.core.singleton import Singleton
7
8
 
8
- settings = get_settings()
9
+
10
+ _session = None
9
11
 
10
12
 
11
13
  class Session(metaclass=Singleton):
@@ -15,19 +17,36 @@ class Session(metaclass=Singleton):
15
17
  :param api_key: str - API key to interact with GEAI
16
18
  :param base_url: str - Base URL of the GEAI instance
17
19
  :param eval_url: Optional[str] - Optional evaluation endpoint URL
20
+ :param access_token: Optional[str] - OAuth access token (keyword-only)
21
+ :param project_id: Optional[str] - Project ID for OAuth authentication (keyword-only)
18
22
  :return: Session - Instance of the Session class
19
23
  :raises: ValueError - If required parameters are missing or invalid
20
24
  """
21
25
 
22
26
  def __init__(
23
27
  self,
24
- api_key: str,
25
- base_url: str,
26
- eval_url: str = None,
28
+ api_key: str = None,
29
+ base_url: str = None,
30
+ eval_url: Optional[str] = None,
31
+ *,
32
+ access_token: Optional[str] = None,
33
+ project_id: Optional[str] = None,
34
+ alias: Optional[str] = None,
27
35
  ):
36
+ if not api_key and not access_token:
37
+ logger.warning("Cannot instantiate session without api_key or access_token")
38
+ if not base_url:
39
+ logger.warning("Cannot instantiate session without base_url")
40
+
28
41
  self.__api_key = api_key
29
42
  self.__base_url = base_url
30
43
  self.__eval_url = eval_url
44
+ self.__access_token = access_token
45
+ self.__project_id = project_id
46
+ self.__alias = alias if alias else "default"
47
+
48
+ global _session
49
+ _session = self
31
50
 
32
51
  @property
33
52
  def api_key(self):
@@ -53,18 +72,83 @@ class Session(metaclass=Singleton):
53
72
  def eval_url(self, eval_url: str):
54
73
  self.__eval_url = eval_url
55
74
 
75
+ @property
76
+ def access_token(self):
77
+ return self.__access_token
78
+
79
+ @access_token.setter
80
+ def access_token(self, access_token: str):
81
+ self.__access_token = access_token
82
+
83
+ @property
84
+ def project_id(self):
85
+ return self.__project_id
86
+
87
+ @project_id.setter
88
+ def project_id(self, project_id: str):
89
+ self.__project_id = project_id
90
+
91
+ @property
92
+ def alias(self):
93
+ return self.__alias
94
+
95
+ @alias.setter
96
+ def alias(self, alias: str):
97
+ self.__alias = alias
98
+
56
99
 
57
- def get_session(alias: str = "default") -> Session:
100
+ def get_session(alias: str = None) -> Session:
58
101
  """
59
102
  Session is a singleton object:
60
103
  On the first invocation, returns Session configured with the API KEY and BASE URL corresponding to the
61
104
  alias provided. On the following invocations, it returns the first object instantiated.
62
105
  """
63
106
  try:
64
- return Session(
65
- api_key=settings.get_api_key(alias),
66
- base_url=settings.get_base_url(alias),
67
- eval_url=settings.get_eval_url(alias),
68
- )
107
+ settings = get_settings()
108
+ global _session
109
+ if _session is None:
110
+ if not alias:
111
+ alias = "default"
112
+
113
+ _validate_alias(alias, allow_missing_default=True)
114
+
115
+ _session = Session(
116
+ api_key=settings.get_api_key(alias),
117
+ base_url=settings.get_base_url(alias),
118
+ eval_url=settings.get_eval_url(alias),
119
+ access_token=settings.get_access_token(alias),
120
+ project_id=settings.get_project_id(alias),
121
+ alias=alias,
122
+ )
123
+
124
+ elif _session is not None and alias:
125
+ _validate_alias(alias, allow_missing_default=False)
126
+
127
+ _session.alias = alias
128
+ _session.api_key = settings.get_api_key(alias)
129
+ _session.base_url = settings.get_base_url(alias)
130
+ _session.eval_url = settings.get_eval_url(alias)
131
+ _session.access_token = settings.get_access_token(alias)
132
+ _session.project_id = settings.get_project_id(alias)
133
+
134
+ return _session
69
135
  except ValueError as e:
136
+ logger.warning(f"Warning: API_KEY and/or BASE_URL not set. {e}")
70
137
  sys.stdout.write("Warning: API_KEY and/or BASE_URL not set. Please run geai configure to set them up.\n")
138
+
139
+
140
+ def _validate_alias(alias: str, allow_missing_default: bool = False):
141
+ settings = get_settings()
142
+ available_aliases = settings.list_aliases()
143
+ if alias not in available_aliases:
144
+ if allow_missing_default and alias == "default":
145
+ return
146
+ raise MissingRequirementException(
147
+ f"The profile '{alias}' doesn't exist. Use 'geai configure --list' to see available profiles."
148
+ )
149
+
150
+
151
+ def reset_session():
152
+ """Reset the session instance. Useful for testing."""
153
+ global _session
154
+ _session = None