hyperforge 1.0.0.post57__tar.gz → 1.0.0.post60__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.post57 → hyperforge-1.0.0.post60}/PKG-INFO +1 -1
  2. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/pyproject.toml +1 -1
  3. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/mcp_content.py +14 -0
  4. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/models.py +21 -0
  5. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/README.md +0 -0
  6. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/VERSION +0 -0
  7. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/__init__.py +0 -0
  8. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/agent.py +0 -0
  9. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/README +0 -0
  10. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/env.py +0 -0
  11. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/script.py.mako +0 -0
  12. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/versions/049a4aed19e1_create_generation_table.py +0 -0
  13. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/versions/1416cb41bd49_add_downloads_table.py +0 -0
  14. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/versions/2847934e2d59_unique_driver.py +0 -0
  15. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/versions/4d89a36c8bda_memory.py +0 -0
  16. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/versions/72b997edb05d_identifier_for_drivers.py +0 -0
  17. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/versions/9c6f6a1b4e7f_workflows_default_fk.py +0 -0
  18. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/versions/b8edb72295e0_.py +0 -0
  19. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic/versions/f3d2c1b0a9e8_soft_delete_workflows.py +0 -0
  20. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/alembic.ini +0 -0
  21. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/__init__.py +0 -0
  22. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/app.py +0 -0
  23. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/authentication.py +0 -0
  24. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/commands.py +0 -0
  25. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/internal/__init__.py +0 -0
  26. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/internal/inspect.py +0 -0
  27. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/internal/router.py +0 -0
  28. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/logging.py +0 -0
  29. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/models.py +0 -0
  30. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/session.py +0 -0
  31. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/settings.py +0 -0
  32. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/utils.py +0 -0
  33. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/__init__.py +0 -0
  34. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/agents.py +0 -0
  35. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/interaction.py +0 -0
  36. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/mcp_interaction.py +0 -0
  37. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/oauth.py +0 -0
  38. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/prompt.py +0 -0
  39. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/router.py +0 -0
  40. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/schema.py +0 -0
  41. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/session.py +0 -0
  42. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/utils.py +0 -0
  43. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/api/v1/workflows.py +0 -0
  44. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/arag.py +0 -0
  45. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/broker/__init__.py +0 -0
  46. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/broker/local.py +0 -0
  47. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/broker/redis.py +0 -0
  48. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/configure.py +0 -0
  49. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/context/__init__.py +0 -0
  50. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/context/agent.py +0 -0
  51. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/context/config.py +0 -0
  52. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/database.py +0 -0
  53. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/db/__init__.py +0 -0
  54. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/db/agents.py +0 -0
  55. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/db/encryption.py +0 -0
  56. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/db/exceptions.py +0 -0
  57. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/db/settings.py +0 -0
  58. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/db/workflow_cleanup.py +0 -0
  59. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/definition.py +0 -0
  60. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/driver.py +0 -0
  61. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/dummy.py +0 -0
  62. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/engine.py +0 -0
  63. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/exceptions.py +0 -0
  64. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/feature_flag.py +0 -0
  65. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/fixtures.py +0 -0
  66. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/interaction.py +0 -0
  67. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/llm.py +0 -0
  68. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/manager.py +0 -0
  69. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/memory/__init__.py +0 -0
  70. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/memory/memory.py +0 -0
  71. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/minimal_fixtures.py +0 -0
  72. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/nua.py +0 -0
  73. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/openapi.py +0 -0
  74. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/prompts.py +0 -0
  75. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/pubsub.py +0 -0
  76. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/py.typed +0 -0
  77. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/redis_utils.py +0 -0
  78. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/retrieval/__init__.py +0 -0
  79. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/retrieval/agent.py +0 -0
  80. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/retrieval/config.py +0 -0
  81. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/server/__init__.py +0 -0
  82. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/server/cache.py +0 -0
  83. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/server/run.py +0 -0
  84. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/server/sandbox.py +0 -0
  85. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/server/session.py +0 -0
  86. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/server/settings.py +0 -0
  87. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/server/utils.py +0 -0
  88. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/server/web.py +0 -0
  89. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/settings.py +0 -0
  90. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/standalone/__init__.py +0 -0
  91. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/standalone/agent.py +0 -0
  92. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/standalone/app.py +0 -0
  93. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/standalone/config.py +0 -0
  94. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/standalone/const.py +0 -0
  95. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/standalone/run.py +0 -0
  96. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/standalone/settings.py +0 -0
  97. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/standalone/ui_router.py +0 -0
  98. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/static/assets/index-DLejS5jC.js +0 -0
  99. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/static/assets/index-MoxkZ1_3.css +0 -0
  100. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/static/favicon.svg +0 -0
  101. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/static/index.html +0 -0
  102. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/trace.py +0 -0
  103. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/utils/__init__.py +0 -0
  104. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/src/hyperforge/utils/http.py +0 -0
  105. {hyperforge-1.0.0.post57 → hyperforge-1.0.0.post60}/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.post57
3
+ Version: 1.0.0.post60
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>
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "hyperforge"
7
- version = "1.0.0.post57"
7
+ version = "1.0.0.post60"
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"
@@ -229,6 +229,19 @@ def convert_arag_answer_to_content(
229
229
  )
230
230
  )
231
231
 
232
+ if context.json_objects:
233
+ for idx, json_obj in enumerate(context.json_objects):
234
+ contents.append(
235
+ EmbeddedResource(
236
+ type="resource",
237
+ resource=TextResourceContents(
238
+ uri=f"rao-response://context/{context.id}/json-objects/{idx}", # type: ignore[arg-type]
239
+ text=json.dumps(pydantic_core.to_jsonable_python(json_obj)),
240
+ mimeType="application/json",
241
+ ),
242
+ )
243
+ )
244
+
232
245
  if context.image_urls:
233
246
  contents.append(
234
247
  EmbeddedResource(
@@ -272,6 +285,7 @@ def convert_arag_answer_to_content(
272
285
  type="text",
273
286
  text="\n".join(parts),
274
287
  annotations=Annotations(audience=["assistant"]),
288
+ _meta=step.metadata,
275
289
  )
276
290
  )
277
291
 
@@ -122,6 +122,7 @@ class Step(BaseModel):
122
122
  input_nuclia_tokens: Optional[float]
123
123
  output_nuclia_tokens: Optional[float]
124
124
  error: Optional[str] = None
125
+ metadata: Optional[Dict[str, Any]] = None
125
126
 
126
127
  def __str__(self):
127
128
  return f"({self.timeit:.2f}s) {self.module}: {self.title} \n {self.value} \n {self.reason} \n NT:({self.input_nuclia_tokens}:{self.output_nuclia_tokens})"
@@ -248,6 +249,25 @@ CONTEXT_TEMPLATE = """
248
249
  CONTEXT_PROMPT_TEMPLATE = PROMPT_ENVIRONMENT.from_string(CONTEXT_TEMPLATE)
249
250
 
250
251
 
252
+ class JSONObject(BaseModel):
253
+ json_schema: Optional[Dict[str, Any]] = Field(
254
+ default=None,
255
+ description="JSON schema that defines the structure of the JSON object.",
256
+ )
257
+ json_object: Dict[str, Any] = Field(
258
+ default_factory=dict,
259
+ description="The actual JSON object that conforms to the provided JSON schema.",
260
+ )
261
+ metadata: Optional[Dict[str, Any]] = Field(
262
+ default_factory=dict,
263
+ description="Optional metadata associated with the JSON object.",
264
+ )
265
+ id: Optional[str] = Field(
266
+ default_factory=lambda: uuid.uuid4().hex,
267
+ description="Unique identifier for this JSON object instance.",
268
+ )
269
+
270
+
251
271
  class Context(BaseModel):
252
272
  id: str = Field(
253
273
  default_factory=lambda: uuid.uuid4().hex,
@@ -260,6 +280,7 @@ class Context(BaseModel):
260
280
  images: Dict[str, Image] = Field(default_factory=dict)
261
281
  prompts: List[Prompt] = Field(default_factory=list)
262
282
  structured: List[str] = Field(default_factory=list)
283
+ json_objects: List[JSONObject] = Field(default_factory=list)
263
284
  source: str
264
285
  agent: str
265
286
  # XXX: This is not actually a summary, but an answer attempt for now!