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.
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/PKG-INFO +1 -1
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/pyproject.toml +1 -1
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/configure.py +5 -5
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/driver.py +2 -2
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/memory/memory.py +5 -1
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/agent.py +1 -1
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/utils/__init__.py +1 -1
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/README.md +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/VERSION +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/agent.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/README +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/env.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/script.py.mako +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/049a4aed19e1_create_generation_table.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/1416cb41bd49_add_downloads_table.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/2847934e2d59_unique_driver.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/4d89a36c8bda_memory.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/72b997edb05d_identifier_for_drivers.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/9c6f6a1b4e7f_workflows_default_fk.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/b8edb72295e0_.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/f3d2c1b0a9e8_soft_delete_workflows.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic.ini +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/app.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/authentication.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/commands.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/internal/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/internal/inspect.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/internal/router.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/logging.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/models.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/session.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/settings.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/utils.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/agents.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/interaction.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/mcp_content.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/mcp_interaction.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/oauth.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/prompt.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/router.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/schema.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/session.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/utils.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/workflows.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/arag.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/broker/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/broker/local.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/broker/redis.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/context/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/context/agent.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/context/config.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/database.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/agents.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/encryption.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/exceptions.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/settings.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/db/workflow_cleanup.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/definition.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/dummy.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/engine.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/exceptions.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/feature_flag.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/fixtures.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/interaction.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/llm.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/manager.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/memory/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/minimal_fixtures.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/models.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/nua.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/openapi.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/prompts.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/pubsub.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/py.typed +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/redis_utils.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/retrieval/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/retrieval/agent.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/retrieval/config.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/cache.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/run.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/sandbox.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/session.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/settings.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/utils.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/server/web.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/settings.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/__init__.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/app.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/config.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/const.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/run.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/settings.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/standalone/ui_router.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/assets/index-DLejS5jC.js +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/assets/index-MoxkZ1_3.css +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/favicon.svg +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/index.html +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/trace.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/utils/http.py +0 -0
- {hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/workflows.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hyperforge"
|
|
7
|
-
version = "1.0.0.
|
|
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("
|
|
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("
|
|
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("
|
|
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"
|
|
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"
|
|
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
|
|
18
|
+
..., description="The type of source, e.g., 'google', 'marklogic', etc."
|
|
19
19
|
)
|
|
20
|
-
config: T = Field(..., description="The configuration specific to the
|
|
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"
|
|
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
|
|
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"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/alembic/versions/b8edb72295e0_.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/api/v1/mcp_interaction.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/assets/index-DLejS5jC.js
RENAMED
|
File without changes
|
{hyperforge-1.0.0.post60 → hyperforge-1.0.0.post64}/src/hyperforge/static/assets/index-MoxkZ1_3.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|