hyperforge 1.0.0.post66__tar.gz → 1.0.0.post70__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 (105) hide show
  1. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/PKG-INFO +2 -1
  2. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/pyproject.toml +2 -1
  3. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/broker/redis.py +14 -3
  4. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/server/sandbox.py +1 -1
  5. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/README.md +0 -0
  6. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/VERSION +0 -0
  7. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/__init__.py +0 -0
  8. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/agent.py +0 -0
  9. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/README +0 -0
  10. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/env.py +0 -0
  11. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/script.py.mako +0 -0
  12. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/versions/049a4aed19e1_create_generation_table.py +0 -0
  13. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/versions/1416cb41bd49_add_downloads_table.py +0 -0
  14. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/versions/2847934e2d59_unique_driver.py +0 -0
  15. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/versions/4d89a36c8bda_memory.py +0 -0
  16. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/versions/72b997edb05d_identifier_for_drivers.py +0 -0
  17. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/versions/9c6f6a1b4e7f_workflows_default_fk.py +0 -0
  18. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/versions/b8edb72295e0_.py +0 -0
  19. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic/versions/f3d2c1b0a9e8_soft_delete_workflows.py +0 -0
  20. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/alembic.ini +0 -0
  21. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/__init__.py +0 -0
  22. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/app.py +0 -0
  23. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/authentication.py +0 -0
  24. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/commands.py +0 -0
  25. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/internal/__init__.py +0 -0
  26. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/internal/inspect.py +0 -0
  27. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/internal/router.py +0 -0
  28. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/logging.py +0 -0
  29. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/models.py +0 -0
  30. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/session.py +0 -0
  31. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/settings.py +0 -0
  32. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/utils.py +0 -0
  33. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/__init__.py +0 -0
  34. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/agents.py +0 -0
  35. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/interaction.py +0 -0
  36. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/mcp_content.py +0 -0
  37. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/mcp_interaction.py +0 -0
  38. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/oauth.py +0 -0
  39. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/prompt.py +0 -0
  40. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/router.py +0 -0
  41. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/schema.py +0 -0
  42. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/session.py +0 -0
  43. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/utils.py +0 -0
  44. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/api/v1/workflows.py +0 -0
  45. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/arag.py +0 -0
  46. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/broker/__init__.py +0 -0
  47. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/broker/local.py +0 -0
  48. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/configure.py +0 -0
  49. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/context/__init__.py +0 -0
  50. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/context/agent.py +0 -0
  51. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/context/config.py +0 -0
  52. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/database.py +0 -0
  53. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/db/__init__.py +0 -0
  54. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/db/agents.py +0 -0
  55. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/db/encryption.py +0 -0
  56. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/db/exceptions.py +0 -0
  57. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/db/settings.py +0 -0
  58. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/db/workflow_cleanup.py +0 -0
  59. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/definition.py +0 -0
  60. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/driver.py +0 -0
  61. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/dummy.py +0 -0
  62. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/engine.py +0 -0
  63. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/exceptions.py +0 -0
  64. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/feature_flag.py +0 -0
  65. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/fixtures.py +0 -0
  66. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/interaction.py +0 -0
  67. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/llm.py +0 -0
  68. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/manager.py +0 -0
  69. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/memory/__init__.py +0 -0
  70. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/memory/memory.py +0 -0
  71. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/minimal_fixtures.py +0 -0
  72. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/models.py +0 -0
  73. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/nua.py +0 -0
  74. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/openapi.py +0 -0
  75. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/prompts.py +0 -0
  76. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/pubsub.py +0 -0
  77. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/py.typed +0 -0
  78. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/redis_utils.py +0 -0
  79. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/retrieval/__init__.py +0 -0
  80. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/retrieval/agent.py +0 -0
  81. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/retrieval/config.py +0 -0
  82. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/server/__init__.py +0 -0
  83. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/server/cache.py +0 -0
  84. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/server/run.py +0 -0
  85. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/server/session.py +0 -0
  86. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/server/settings.py +0 -0
  87. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/server/utils.py +0 -0
  88. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/server/web.py +0 -0
  89. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/settings.py +0 -0
  90. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/standalone/__init__.py +0 -0
  91. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/standalone/agent.py +0 -0
  92. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/standalone/app.py +0 -0
  93. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/standalone/config.py +0 -0
  94. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/standalone/const.py +0 -0
  95. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/standalone/run.py +0 -0
  96. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/standalone/settings.py +0 -0
  97. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/standalone/ui_router.py +0 -0
  98. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/static/assets/index-DLejS5jC.js +0 -0
  99. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/static/assets/index-MoxkZ1_3.css +0 -0
  100. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/static/favicon.svg +0 -0
  101. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/static/index.html +0 -0
  102. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/trace.py +0 -0
  103. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/utils/__init__.py +0 -0
  104. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/utils/http.py +0 -0
  105. {hyperforge-1.0.0.post66 → hyperforge-1.0.0.post70}/src/hyperforge/workflows.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperforge
3
- Version: 1.0.0.post66
3
+ Version: 1.0.0.post70
4
4
  Summary: Agentic Framework for Orchestrated Runtime, Governance, and Execution
5
5
  Author: AI Data Team
6
6
  Author-email: AI Data Team <learning@nuclia.com>
@@ -14,6 +14,7 @@ Requires-Dist: nuclia-models>=0.59.0
14
14
  Requires-Dist: nucliadb-models>=6.13.1.post6414
15
15
  Requires-Dist: nucliadb-sdk>=6.13.1.post6414
16
16
  Requires-Dist: nucliadb-telemetry[otel]>=6.15.0
17
+ Requires-Dist: hyperforge-restricted
17
18
  Requires-Dist: pydantic-settings
18
19
  Requires-Dist: mcp>=1.26.0
19
20
  Requires-Dist: prometheus-client
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "hyperforge"
7
- version = "1.0.0.post66"
7
+ version = "1.0.0.post70"
8
8
  authors = [{ name = "AI Data Team", email = "learning@nuclia.com" }]
9
9
  description = "Agentic Framework for Orchestrated Runtime, Governance, and Execution"
10
10
  readme = "README.md"
@@ -22,6 +22,7 @@ dependencies = [
22
22
  "nucliadb-models>=6.13.1.post6414",
23
23
  "nucliadb-sdk>=6.13.1.post6414",
24
24
  "nucliadb-telemetry[otel]>=6.15.0",
25
+ "hyperforge-restricted",
25
26
  "pydantic_settings",
26
27
  "mcp>=1.26.0",
27
28
  "prometheus_client",
@@ -56,9 +56,8 @@ class RedisBroker(Broker):
56
56
  maxlen=100,
57
57
  )
58
58
 
59
- async def subscribe_activations(
60
- self,
61
- ) -> AsyncIterator[tuple[StartInteraction, dict[str, str]]]:
59
+ async def _ensure_consumer_group(self) -> None:
60
+ """Create the stream and consumer group if they don't exist."""
62
61
  try:
63
62
  await self._client.xgroup_create(
64
63
  name=self._activate_subject,
@@ -69,6 +68,11 @@ class RedisBroker(Broker):
69
68
  if "BUSYGROUP" not in str(e):
70
69
  raise
71
70
 
71
+ async def subscribe_activations(
72
+ self,
73
+ ) -> AsyncIterator[tuple[StartInteraction, dict[str, str]]]:
74
+ await self._ensure_consumer_group()
75
+
72
76
  while True:
73
77
  try:
74
78
  response = await self._client.xreadgroup(
@@ -90,6 +94,13 @@ class RedisBroker(Broker):
90
94
  except (asyncio.CancelledError, KeyboardInterrupt):
91
95
  logger.info("Activation subscription cancelled, exiting...")
92
96
  break
97
+ except ResponseError as e:
98
+ if "NOGROUP" in str(e):
99
+ logger.warning("Consumer group lost, re-creating...")
100
+ await self._ensure_consumer_group()
101
+ else:
102
+ logger.exception("Error while subscribing to activations, retrying...")
103
+ await asyncio.sleep(1)
93
104
  except Exception:
94
105
  logger.exception("Error while subscribing to activations, retrying...")
95
106
  await asyncio.sleep(1)
@@ -7,7 +7,7 @@ from nucliadb_telemetry.logs import setup_logging
7
7
  from nucliadb_telemetry.settings import LogLevel, LogSettings
8
8
  from sentry_sdk.integrations.excepthook import ExcepthookIntegration
9
9
 
10
- from agents.restricted.src.hyperforge_restricted import sandbox
10
+ from hyperforge_restricted import sandbox
11
11
  from hyperforge.server.settings import Settings
12
12
 
13
13