nucliadb-agentic-api 1.0.0.post288__tar.gz → 1.0.0.post294__tar.gz

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 (48) hide show
  1. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/PKG-INFO +1 -1
  2. nucliadb_agentic_api-1.0.0.post294/VERSION +1 -0
  3. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/pyproject.toml +2 -2
  4. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/pyproject.toml.orig +2 -2
  5. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/server/session.py +27 -6
  6. nucliadb_agentic_api-1.0.0.post288/VERSION +0 -1
  7. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/README.md +0 -0
  8. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/alembic/README +0 -0
  9. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/alembic/env.py +0 -0
  10. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/alembic/script.py.mako +0 -0
  11. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/alembic/versions/0fe6c7b5f33d_migrate_sonnet_and_gpt_5_6_models.py +0 -0
  12. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/alembic/versions/7f3b2f92a8c1_add_agentic_config_table.py +0 -0
  13. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/alembic/versions/b3c4d5e6f7a8_add_sources_table.py +0 -0
  14. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/alembic/versions/c4d5e6f7a8b9_add_agentic_config_soft_deletion.py +0 -0
  15. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/alembic.ini +0 -0
  16. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/VERSION +0 -0
  17. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/__init__.py +0 -0
  18. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/agentic/__init__.py +0 -0
  19. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/agentic/ask_handler.py +0 -0
  20. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/agentic/ask_result.py +0 -0
  21. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/agentic/ask_transform_to_interaction.py +0 -0
  22. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/app.py +0 -0
  23. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/commands.py +0 -0
  24. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/db/__init__.py +0 -0
  25. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/db/agentic_configs.py +0 -0
  26. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/db/llm_migration_utils.py +0 -0
  27. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/db/settings.py +0 -0
  28. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/db/sources.py +0 -0
  29. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/db/transform.py +0 -0
  30. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/exceptions.py +0 -0
  31. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/logging.py +0 -0
  32. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/models.py +0 -0
  33. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/py.typed +0 -0
  34. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/server/__init__.py +0 -0
  35. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/server/server.py +0 -0
  36. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/server/settings.py +0 -0
  37. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/settings.py +0 -0
  38. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/utils.py +0 -0
  39. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/__init__.py +0 -0
  40. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/agentic_configs.py +0 -0
  41. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/ask.py +0 -0
  42. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/ask_websocket.py +0 -0
  43. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/mcp_content.py +0 -0
  44. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/mcp_nucliadb.py +0 -0
  45. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/oauth.py +0 -0
  46. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/router.py +0 -0
  47. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/sources.py +0 -0
  48. {nucliadb_agentic_api-1.0.0.post288 → nucliadb_agentic_api-1.0.0.post294}/src/nucliadb_agentic_api/v1/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nucliadb_agentic_api
3
- Version: 1.0.0.post288
3
+ Version: 1.0.0.post294
4
4
  Summary: NucliaDB Agentic API for Hyperforge
5
5
  Author: AI Data Team
6
6
  Author-email: AI Data Team <learning@nuclia.com>
@@ -0,0 +1 @@
1
+ 1.0.0.post294
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "nucliadb_agentic_api"
7
- version = "1.0.0.post288"
7
+ version = "1.0.0.post294"
8
8
  description = "NucliaDB Agentic API for Hyperforge"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -72,7 +72,7 @@ server = [
72
72
  "nucliadb-sdk>=6.14.0.post6532",
73
73
  "nucliadb-telemetry[otel]>=6.14.0.post6534",
74
74
  "nucliadb-utils[storages,fastapi]>=6.15.0.post6671",
75
- "hyperforge>=1.0.0.post414",
75
+ "hyperforge>=1.0.0.post418",
76
76
  "hyperforge_conditional>=1.0.0.post27",
77
77
  "hyperforge_mcp>=1.0.0.post95",
78
78
  "hyperforge_nucliadb>=1.0.0.post46",
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "nucliadb_agentic_api"
7
- version = "1.0.0.post288"
7
+ version = "1.0.0.post294"
8
8
  authors = [{ name = "AI Data Team", email = "learning@nuclia.com" }]
9
9
  description = "NucliaDB Agentic API for Hyperforge"
10
10
  readme = "README.md"
@@ -67,7 +67,7 @@ server = [
67
67
  "nucliadb-sdk>=6.14.0.post6532",
68
68
  "nucliadb-telemetry[otel]>=6.14.0.post6534",
69
69
  "nucliadb-utils[storages,fastapi]>=6.15.0.post6671",
70
- "hyperforge>=1.0.0.post414",
70
+ "hyperforge>=1.0.0.post418",
71
71
  "hyperforge_conditional>=1.0.0.post27",
72
72
  "hyperforge_mcp>=1.0.0.post95",
73
73
  "hyperforge_nucliadb>=1.0.0.post46",
@@ -1,5 +1,6 @@
1
1
  import os
2
2
  from asyncio import Task, create_task, timeout # type: ignore
3
+ from builtins import BaseExceptionGroup
3
4
  from functools import partial
4
5
 
5
6
  import nucliadb_telemetry.context
@@ -8,6 +9,7 @@ import prometheus_client
8
9
  from hyperforge.broker import Broker
9
10
  from hyperforge.configure import GLOBAL_REGISTRY, load_all_configurations, scan
10
11
  from hyperforge.engine import State, get_state
12
+ from hyperforge.errors import actionable_exception_group, exception_detail
11
13
  from hyperforge.interaction import AnswerOperation, AragAnswer, ARAGException
12
14
  from hyperforge.memory import QuestionMemory
13
15
  from hyperforge.pubsub import AgentDone, StartInteraction
@@ -191,6 +193,20 @@ class NucliaDBAgenticSessionManager(SessionManager):
191
193
  task.add_done_callback(self._remove_task)
192
194
  self.tasks.append(task)
193
195
 
196
+ except BaseExceptionGroup as exc:
197
+ error_group = actionable_exception_group(exc)
198
+ logger.exception("Activation exception")
199
+ errors.capture_exception(error_group)
200
+ observation.set_status("error")
201
+ if topic:
202
+ await self.callback(
203
+ topic,
204
+ AragAnswer(
205
+ exception=ARAGException(detail=exception_detail(error_group)),
206
+ operation=AnswerOperation.ERROR,
207
+ ),
208
+ )
209
+ await self.send_message(topic, AgentDone())
194
210
  except Exception as e:
195
211
  logger.exception("Activation exception")
196
212
  errors.capture_exception(e)
@@ -199,7 +215,7 @@ class NucliaDBAgenticSessionManager(SessionManager):
199
215
  await self.callback(
200
216
  topic,
201
217
  AragAnswer(
202
- exception=ARAGException(detail="Unable to start agent"),
218
+ exception=ARAGException(detail=exception_detail(e)),
203
219
  operation=AnswerOperation.ERROR,
204
220
  ),
205
221
  )
@@ -250,10 +266,16 @@ class NucliaDBAgenticSessionManager(SessionManager):
250
266
  async with timeout(self.settings.question_timeout_seconds):
251
267
  await state.agent(question_memory, state.manager)
252
268
 
269
+ except BaseExceptionGroup as exc:
270
+ error_group = actionable_exception_group(exc)
271
+ logger.exception("Answering exception")
272
+ errors.capture_exception(error_group)
273
+ error = ARAGException(detail=exception_detail(error_group))
274
+ observation.set_status("error")
253
275
  except Exception as e:
254
276
  logger.exception("Answering exception")
255
277
  errors.capture_exception(e)
256
- error = ARAGException(detail=str(e))
278
+ error = ARAGException(detail=exception_detail(e))
257
279
  observation.set_status("error")
258
280
  finally:
259
281
  try:
@@ -261,10 +283,9 @@ class NucliaDBAgenticSessionManager(SessionManager):
261
283
  except Exception as e:
262
284
  logger.exception("Error closing Manager")
263
285
  errors.capture_exception(e)
264
-
265
- observation.end()
266
- answer_running.dec()
267
- keepalive.cancel()
286
+ observation.end()
287
+ answer_running.dec()
288
+ keepalive.cancel()
268
289
 
269
290
  await self.callback(
270
291
  topic,
@@ -1 +0,0 @@
1
- 1.0.0.post288