hyperforge 1.0.0.post60__tar.gz → 1.0.0.post64__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.post60 → hyperforge-1.0.0.post64}/PKG-INFO +1 -1
  2. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/pyproject.toml +1 -1
  3. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/configure.py +5 -5
  4. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/driver.py +2 -2
  5. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/memory/memory.py +5 -1
  6. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/agent.py +1 -1
  7. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/utils/__init__.py +1 -1
  8. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/README.md +0 -0
  9. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/VERSION +0 -0
  10. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/__init__.py +0 -0
  11. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/agent.py +0 -0
  12. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/README +0 -0
  13. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/env.py +0 -0
  14. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/script.py.mako +0 -0
  15. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/049a4aed19e1_create_generation_table.py +0 -0
  16. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/1416cb41bd49_add_downloads_table.py +0 -0
  17. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/2847934e2d59_unique_driver.py +0 -0
  18. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/4d89a36c8bda_memory.py +0 -0
  19. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/72b997edb05d_identifier_for_drivers.py +0 -0
  20. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/9c6f6a1b4e7f_workflows_default_fk.py +0 -0
  21. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/b8edb72295e0_.py +0 -0
  22. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/f3d2c1b0a9e8_soft_delete_workflows.py +0 -0
  23. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic.ini +0 -0
  24. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/__init__.py +0 -0
  25. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/app.py +0 -0
  26. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/authentication.py +0 -0
  27. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/commands.py +0 -0
  28. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/internal/__init__.py +0 -0
  29. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/internal/inspect.py +0 -0
  30. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/internal/router.py +0 -0
  31. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/logging.py +0 -0
  32. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/models.py +0 -0
  33. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/session.py +0 -0
  34. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/settings.py +0 -0
  35. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/utils.py +0 -0
  36. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/__init__.py +0 -0
  37. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/agents.py +0 -0
  38. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/interaction.py +0 -0
  39. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/mcp_content.py +0 -0
  40. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/mcp_interaction.py +0 -0
  41. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/oauth.py +0 -0
  42. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/prompt.py +0 -0
  43. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/router.py +0 -0
  44. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/schema.py +0 -0
  45. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/session.py +0 -0
  46. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/utils.py +0 -0
  47. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/workflows.py +0 -0
  48. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/arag.py +0 -0
  49. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/broker/__init__.py +0 -0
  50. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/broker/local.py +0 -0
  51. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/broker/redis.py +0 -0
  52. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/context/__init__.py +0 -0
  53. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/context/agent.py +0 -0
  54. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/context/config.py +0 -0
  55. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/database.py +0 -0
  56. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/__init__.py +0 -0
  57. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/agents.py +0 -0
  58. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/encryption.py +0 -0
  59. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/exceptions.py +0 -0
  60. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/settings.py +0 -0
  61. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/workflow_cleanup.py +0 -0
  62. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/definition.py +0 -0
  63. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/dummy.py +0 -0
  64. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/engine.py +0 -0
  65. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/exceptions.py +0 -0
  66. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/feature_flag.py +0 -0
  67. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/fixtures.py +0 -0
  68. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/interaction.py +0 -0
  69. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/llm.py +0 -0
  70. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/manager.py +0 -0
  71. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/memory/__init__.py +0 -0
  72. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/minimal_fixtures.py +0 -0
  73. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/models.py +0 -0
  74. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/nua.py +0 -0
  75. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/openapi.py +0 -0
  76. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/prompts.py +0 -0
  77. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/pubsub.py +0 -0
  78. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/py.typed +0 -0
  79. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/redis_utils.py +0 -0
  80. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/retrieval/__init__.py +0 -0
  81. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/retrieval/agent.py +0 -0
  82. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/retrieval/config.py +0 -0
  83. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/__init__.py +0 -0
  84. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/cache.py +0 -0
  85. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/run.py +0 -0
  86. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/sandbox.py +0 -0
  87. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/session.py +0 -0
  88. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/settings.py +0 -0
  89. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/utils.py +0 -0
  90. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/web.py +0 -0
  91. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/settings.py +0 -0
  92. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/__init__.py +0 -0
  93. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/app.py +0 -0
  94. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/config.py +0 -0
  95. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/const.py +0 -0
  96. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/run.py +0 -0
  97. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/settings.py +0 -0
  98. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/ui_router.py +0 -0
  99. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/assets/index-DLejS5jC.js +0 -0
  100. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/assets/index-MoxkZ1_3.css +0 -0
  101. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/favicon.svg +0 -0
  102. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/index.html +0 -0
  103. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/trace.py +0 -0
  104. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/utils/http.py +0 -0
  105. {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/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.post60
3
+ Version: 1.0.0.post64
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.post60"
7
+ version = "1.0.0.post64"
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"
@@ -251,7 +251,7 @@ def load_driver(
251
251
  driver_id = registration.id
252
252
  registration.klass = resolve_dotted_name(klass)
253
253
  if driver_id is None:
254
- raise Exception("Driver configuration must have an 'id' field")
254
+ raise Exception("Source configuration must have an 'id' field")
255
255
  if driver_id in _context.drivers:
256
256
  # Already registered
257
257
  return
@@ -340,15 +340,15 @@ def get_agent_klass(module: str, _context: Registry = GLOBAL_REGISTRY) -> Type["
340
340
 
341
341
  def validate_driver(item: Any, _context: Registry = GLOBAL_REGISTRY):
342
342
  if not isinstance(item, dict):
343
- raise ValueError("Driver configuration must be a dictionary")
343
+ raise ValueError("Source configuration must be a dictionary")
344
344
 
345
345
  provider = item.get("provider")
346
346
  if provider is None:
347
- raise ValueError("Driver configuration must have a 'provider' field")
347
+ raise ValueError("Source configuration must have a 'provider' field")
348
348
 
349
349
  if provider not in _context.drivers:
350
350
  raise ValueError(
351
- f"Driver module '{provider}' is not registered in the drivers registry"
351
+ f"Source module '{provider}' is not registered in the drivers registry"
352
352
  )
353
353
  return _context.drivers[provider].config_schema.model_validate(item)
354
354
 
@@ -358,7 +358,7 @@ def get_driver_config_klass(
358
358
  ) -> Type["DriverConfig"]:
359
359
  driver = _context.drivers.get(provider)
360
360
  if driver is None:
361
- raise Exception(f"Driver module '{provider}' is not registered")
361
+ raise Exception(f"Source module '{provider}' is not registered")
362
362
 
363
363
  return driver.config_schema
364
364
 
@@ -15,9 +15,9 @@ class DriverConfig(BaseModel, Generic[T]):
15
15
  identifier: str
16
16
  name: str
17
17
  provider: Any = Field(
18
- ..., description="The type of driver, e.g., 'google', 'marklogic', etc."
18
+ ..., description="The type of source, e.g., 'google', 'marklogic', etc."
19
19
  )
20
- config: T = Field(..., description="The configuration specific to the driver.")
20
+ config: T = Field(..., description="The configuration specific to the source.")
21
21
 
22
22
 
23
23
  class Driver(BaseModel):
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
  from collections import OrderedDict
3
3
  from datetime import datetime, timezone
4
- from typing import Awaitable, Callable, Dict, List, Optional, Tuple, Union, cast
4
+ from typing import Any, Awaitable, Callable, Dict, List, Optional, Tuple, Union, cast
5
5
  from uuid import uuid4
6
6
 
7
7
  from nuclia.lib.nua_responses import Author, Image, Message
@@ -74,6 +74,8 @@ def _qa_list_to_chat_messages(history: List[HistoryQuestionAnswer]) -> List[Mess
74
74
  Message(author=Author.NUCLIA, text=qa.answer),
75
75
  )
76
76
  ]
77
+
78
+
77
79
  CONTEXT_FIELD: str = "context"
78
80
  STEPS_FIELD: str = "steps"
79
81
  USER_INFO_FIELD: str = "user_info"
@@ -817,6 +819,7 @@ class QuestionMemory:
817
819
  step_value: Optional[str] = None,
818
820
  step_reason: Optional[str] = None,
819
821
  error: Optional[str] = None,
822
+ metadata: Optional[Dict[str, Any]] = None,
820
823
  ):
821
824
  new_step = Step(
822
825
  original_question_uuid=self.original_question_uuid,
@@ -830,6 +833,7 @@ class QuestionMemory:
830
833
  input_nuclia_tokens=input_nuclia_tokens,
831
834
  output_nuclia_tokens=output_nuclia_tokens,
832
835
  error=error,
836
+ metadata=metadata,
833
837
  )
834
838
  self.steps.append(new_step)
835
839
  if self.callback_fn is not None:
@@ -87,7 +87,7 @@ class StaticAgentManager:
87
87
  if drv.identifier == driver:
88
88
  return drv
89
89
  raise exceptions.NotFoundError(
90
- f"Driver '{driver}' not found in agent '{agent_id}'"
90
+ f"Source '{driver}' not found in agent '{agent_id}'"
91
91
  )
92
92
 
93
93
  async def get_drivers(self, account: str, agent_id: str) -> List[Any]:
@@ -77,7 +77,7 @@ class WidgetType(str, Enum):
77
77
 
78
78
  # Driver and source selection widgets
79
79
  DRIVER_SELECT = "driver_select"
80
- """Selector for data source drivers (databases, APIs, etc.)"""
80
+ """Selector for data sources (databases, APIs, etc.)"""
81
81
 
82
82
  FILTERED_SOURCE_SELECT = "filtered_source_select"
83
83
  """Source selector with filtering capabilities based on transport type"""