hyperforge 1.0.0.post44__tar.gz → 1.0.0.post48__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.post44 → hyperforge-1.0.0.post48}/PKG-INFO +2 -1
  2. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/pyproject.toml +2 -1
  3. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/app.py +9 -3
  4. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/fixtures.py +2 -2
  5. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/standalone/app.py +10 -4
  6. hyperforge-1.0.0.post48/src/hyperforge/static/assets/index-DLejS5jC.js +45 -0
  7. hyperforge-1.0.0.post48/src/hyperforge/static/assets/index-MoxkZ1_3.css +1 -0
  8. hyperforge-1.0.0.post48/src/hyperforge/static/favicon.svg +4 -0
  9. hyperforge-1.0.0.post48/src/hyperforge/static/index.html +14 -0
  10. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/README.md +0 -0
  11. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/VERSION +0 -0
  12. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/__init__.py +0 -0
  13. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/agent.py +0 -0
  14. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/README +0 -0
  15. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/env.py +0 -0
  16. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/script.py.mako +0 -0
  17. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/versions/049a4aed19e1_create_generation_table.py +0 -0
  18. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/versions/1416cb41bd49_add_downloads_table.py +0 -0
  19. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/versions/2847934e2d59_unique_driver.py +0 -0
  20. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/versions/4d89a36c8bda_memory.py +0 -0
  21. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/versions/72b997edb05d_identifier_for_drivers.py +0 -0
  22. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/versions/9c6f6a1b4e7f_workflows_default_fk.py +0 -0
  23. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/versions/b8edb72295e0_.py +0 -0
  24. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic/versions/f3d2c1b0a9e8_soft_delete_workflows.py +0 -0
  25. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48/src/hyperforge}/alembic.ini +0 -0
  26. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/__init__.py +0 -0
  27. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/authentication.py +0 -0
  28. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/commands.py +0 -0
  29. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/internal/__init__.py +0 -0
  30. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/internal/inspect.py +0 -0
  31. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/internal/router.py +0 -0
  32. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/logging.py +0 -0
  33. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/models.py +0 -0
  34. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/session.py +0 -0
  35. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/settings.py +0 -0
  36. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/utils.py +0 -0
  37. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/__init__.py +0 -0
  38. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/agents.py +0 -0
  39. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/interaction.py +0 -0
  40. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/mcp_content.py +0 -0
  41. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/mcp_interaction.py +0 -0
  42. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/oauth.py +0 -0
  43. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/prompt.py +0 -0
  44. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/router.py +0 -0
  45. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/schema.py +0 -0
  46. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/session.py +0 -0
  47. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/utils.py +0 -0
  48. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/api/v1/workflows.py +0 -0
  49. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/arag.py +0 -0
  50. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/broker/__init__.py +0 -0
  51. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/broker/local.py +0 -0
  52. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/broker/redis.py +0 -0
  53. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/configure.py +0 -0
  54. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/context/__init__.py +0 -0
  55. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/context/agent.py +0 -0
  56. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/context/config.py +0 -0
  57. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/database.py +0 -0
  58. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/db/__init__.py +0 -0
  59. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/db/agents.py +0 -0
  60. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/db/encryption.py +0 -0
  61. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/db/exceptions.py +0 -0
  62. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/db/settings.py +0 -0
  63. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/db/workflow_cleanup.py +0 -0
  64. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/definition.py +0 -0
  65. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/driver.py +0 -0
  66. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/dummy.py +0 -0
  67. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/engine.py +0 -0
  68. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/exceptions.py +0 -0
  69. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/feature_flag.py +0 -0
  70. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/interaction.py +0 -0
  71. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/llm.py +0 -0
  72. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/manager.py +0 -0
  73. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/memory/__init__.py +0 -0
  74. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/memory/memory.py +0 -0
  75. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/minimal_fixtures.py +0 -0
  76. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/models.py +0 -0
  77. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/nua.py +0 -0
  78. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/openapi.py +0 -0
  79. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/prompts.py +0 -0
  80. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/pubsub.py +0 -0
  81. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/py.typed +0 -0
  82. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/redis_utils.py +0 -0
  83. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/retrieval/__init__.py +0 -0
  84. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/retrieval/agent.py +0 -0
  85. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/retrieval/config.py +0 -0
  86. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/server/__init__.py +0 -0
  87. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/server/cache.py +0 -0
  88. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/server/run.py +0 -0
  89. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/server/sandbox.py +0 -0
  90. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/server/session.py +0 -0
  91. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/server/settings.py +0 -0
  92. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/server/utils.py +0 -0
  93. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/server/web.py +0 -0
  94. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/settings.py +0 -0
  95. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/standalone/__init__.py +0 -0
  96. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/standalone/agent.py +0 -0
  97. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/standalone/config.py +0 -0
  98. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/standalone/const.py +0 -0
  99. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/standalone/run.py +0 -0
  100. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/standalone/settings.py +0 -0
  101. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/standalone/ui_router.py +0 -0
  102. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/trace.py +0 -0
  103. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/utils/__init__.py +0 -0
  104. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/src/hyperforge/utils/http.py +0 -0
  105. {hyperforge-1.0.0.post44 → hyperforge-1.0.0.post48}/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.post44
3
+ Version: 1.0.0.post48
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>
@@ -34,6 +34,7 @@ Requires-Dist: ruff>=0.15.10
34
34
  Requires-Dist: lru-dict
35
35
  Requires-Dist: sentry-sdk
36
36
  Requires-Dist: fastapi
37
+ Requires-Dist: starlette>1.0.0
37
38
  Requires-Python: >=3.10
38
39
  Project-URL: Progress, https://progress.com
39
40
  Project-URL: Github, https://github.com/nuclia/hyperforge
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "hyperforge"
7
- version = "1.0.0.post44"
7
+ version = "1.0.0.post48"
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"
@@ -42,6 +42,7 @@ dependencies = [
42
42
  "lru-dict",
43
43
  "sentry_sdk",
44
44
  "fastapi",
45
+ "starlette>1.0.0",
45
46
  ]
46
47
 
47
48
 
@@ -1,3 +1,4 @@
1
+ from contextlib import asynccontextmanager
1
2
  from typing import Any, Optional, Tuple
2
3
 
3
4
  import prometheus_client # type: ignore
@@ -62,7 +63,13 @@ class HTTPApplication(FastAPI):
62
63
  *args,
63
64
  **kwargs,
64
65
  ):
65
- super().__init__(*args, **kwargs)
66
+ @asynccontextmanager
67
+ async def lifespan(app: "HTTPApplication"):
68
+ await app.startup()
69
+ yield
70
+ await app.shutdown()
71
+
72
+ super().__init__(*args, lifespan=lifespan, **kwargs)
66
73
  self.settings = settings
67
74
  self.data_manager_settings = data_manager_settings
68
75
  self.include_router(internal.router)
@@ -72,11 +79,10 @@ class HTTPApplication(FastAPI):
72
79
  AuthenticationMiddleware,
73
80
  backend=RaoAuthenticationBackend(),
74
81
  )
82
+
75
83
  if self.extra_middlewares is not None:
76
84
  for extra_middleware in self.extra_middlewares:
77
85
  self.add_middleware(extra_middleware)
78
- self.add_event_handler("startup", self.startup)
79
- self.add_event_handler("shutdown", self.shutdown)
80
86
 
81
87
  async def startup(self) -> None:
82
88
  GLOBAL_REGISTRY.clear()
@@ -33,6 +33,7 @@ from sqlalchemy_utils import ( # type: ignore
33
33
  drop_database,
34
34
  )
35
35
 
36
+ import hyperforge # noqa: F401
36
37
  from hyperforge.api.app import HTTPApplication
37
38
  from hyperforge.api.settings import Settings
38
39
  from hyperforge.broker.redis import RedisBroker
@@ -44,8 +45,7 @@ from hyperforge.server.session import SessionManager
44
45
  from hyperforge.server.settings import Settings as ServerSettings
45
46
  from hyperforge.utils.http import SafeTransport
46
47
 
47
- _dir = pathlib.Path(__file__).parent.absolute()
48
- _package_path = _dir.parent.parent.absolute()
48
+ _package_path = pathlib.Path(hyperforge.__file__).parent.absolute()
49
49
 
50
50
  NUA = os.environ.get("NUA_KEY", "DUMMY")
51
51
 
@@ -6,6 +6,7 @@ process, connected via a LocalBroker. No Redis, no gRPC, no PostgreSQL, no
6
6
  NucliaDB required.
7
7
  """
8
8
 
9
+ from contextlib import asynccontextmanager
9
10
  from pathlib import Path
10
11
  from typing import Any, Tuple
11
12
 
@@ -137,9 +138,17 @@ class StandaloneApplication(FastAPI):
137
138
  settings: StandaloneSettings,
138
139
  **kwargs: Any,
139
140
  ) -> None:
141
+
142
+ @asynccontextmanager
143
+ async def lifespan(app: "StandaloneApplication"):
144
+ await app._startup()
145
+ yield
146
+ await app._shutdown()
147
+
140
148
  super().__init__(
141
149
  title="arag standalone",
142
150
  description="Single-process agent RAG — interaction and MCP only",
151
+ lifespan=lifespan,
143
152
  **kwargs,
144
153
  )
145
154
  self._agents_cfg = agents_cfg
@@ -156,7 +165,7 @@ class StandaloneApplication(FastAPI):
156
165
  # In development the Vite dev server runs separately (proxied to :8080).
157
166
  # app.py lives at: arag/src/hyperforge.standalone/app.py
158
167
  # three .parent steps → arag/
159
- _frontend_dist = Path(__file__).parent.parent.parent / "frontend" / "dist"
168
+ _frontend_dist = Path(__file__).parent / "static"
160
169
  if _frontend_dist.is_dir():
161
170
  self.mount(
162
171
  "/",
@@ -173,9 +182,6 @@ class StandaloneApplication(FastAPI):
173
182
  allow_headers=["*"],
174
183
  )
175
184
 
176
- self.add_event_handler("startup", self._startup)
177
- self.add_event_handler("shutdown", self._shutdown)
178
-
179
185
  # ------------------------------------------------------------------
180
186
  # Property used by interaction.py / oauth.py to read answers_subject
181
187
  # and oauth_subject without knowing about StandaloneSettings.