hyperforge 1.0.0.post403__tar.gz → 1.0.0.post414__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.post403 → hyperforge-1.0.0.post414}/PKG-INFO +1 -1
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/pyproject.toml +1 -1
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/pyproject.toml.orig +1 -1
- hyperforge-1.0.0.post414/src/hyperforge/alembic/versions/8c7d2e4f91ab_structure_legacy_llm_fields.py +24 -0
- hyperforge-1.0.0.post414/src/hyperforge/db/legacy_llm_migration.py +132 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/llm_config.py +4 -4
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/README.md +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/VERSION +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/a2a/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/a2a/auth.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/a2a/card.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/a2a/context.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/a2a/executor.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/a2a/run.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/a2a/server.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/a2a/settings.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/a2a/task_store.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/agent.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/README +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/env.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/script.py.mako +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/versions/049a4aed19e1_create_generation_table.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/versions/1416cb41bd49_add_downloads_table.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/versions/2847934e2d59_unique_driver.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/versions/4d89a36c8bda_memory.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/versions/6a23d8ef74c1_add_sync_oauth_credentials.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/versions/72b997edb05d_identifier_for_drivers.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/versions/9c6f6a1b4e7f_workflows_default_fk.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/versions/b8edb72295e0_.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic/versions/f3d2c1b0a9e8_soft_delete_workflows.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/alembic.ini +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/app.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/authentication.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/commands.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/logging.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/mcp_server_pool.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/models.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/session.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/settings.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/utils.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/agents.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/interaction.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/mcp_content.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/mcp_interaction.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/oauth.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/prompt.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/router.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/schema.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/session.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/utils.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/api/v1/workflows.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/arag.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/broker/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/broker/local.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/broker/redis.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/codemode/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/codemode/model.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/codemode/sandbox.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/codemode/worker.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/completions.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/configure.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/context/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/context/agent.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/context/config.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/database.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/db/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/db/agents.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/db/encryption.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/db/exceptions.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/db/llm_migration_utils.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/db/settings.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/db/workflow_cleanup.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/definition.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/driver.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/dummy.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/engine.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/exceptions.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/feature_flag.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/fixtures.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness/agent.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness/config.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/agents.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/clients.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/context.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/harness.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/models.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/schema.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/storage.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/tools/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/tools/codemode.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/tools/core.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/tools/utils.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/usage.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/interaction.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/json_schema.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/llm.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/manager.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/memory/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/memory/memory.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/minimal_fixtures.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/models.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/openapi.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/prompts.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/pubsub.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/py.typed +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/redis_utils.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/result_payload.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/retrieval/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/retrieval/agent.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/retrieval/config.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/server/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/server/cache.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/server/run.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/server/sandbox.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/server/session.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/server/settings.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/server/utils.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/server/web.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/settings.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/agent.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/app.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/config.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/const.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/oauth.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/run.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/settings.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/ui_router.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/static/assets/index-DLejS5jC.js +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/static/assets/index-MoxkZ1_3.css +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/static/favicon.svg +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/static/index.html +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/trace.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/utils/__init__.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/utils/http.py +0 -0
- {hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/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.post414"
|
|
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"
|
hyperforge-1.0.0.post414/src/hyperforge/alembic/versions/8c7d2e4f91ab_structure_legacy_llm_fields.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"""Structure legacy string model fields in stored agent configurations.
|
|
2
|
+
|
|
3
|
+
Revision ID: 8c7d2e4f91ab
|
|
4
|
+
Revises: 6a23d8ef74c1
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from typing import Sequence, Union
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
|
|
11
|
+
from hyperforge.db.legacy_llm_migration import migrate_legacy_llm_fields
|
|
12
|
+
|
|
13
|
+
revision: str = "8c7d2e4f91ab"
|
|
14
|
+
down_revision: Union[str, None] = "6a23d8ef74c1"
|
|
15
|
+
branch_labels: Union[str, Sequence[str], None] = None
|
|
16
|
+
depends_on: Union[str, Sequence[str], None] = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade() -> None:
|
|
20
|
+
migrate_legacy_llm_fields(op.get_bind())
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def downgrade() -> None:
|
|
24
|
+
pass
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"""Convert old model strings in stored Hyperforge agent configs to LLMConfig.
|
|
2
|
+
|
|
3
|
+
Only fields already declared as LLMField in Hyperforge are included. Agent
|
|
4
|
+
plugins with string-typed model fields must remain strings until their schemas
|
|
5
|
+
and runtimes are migrated separately.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import json
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
from sqlalchemy import text
|
|
12
|
+
from sqlalchemy.engine import Connection
|
|
13
|
+
|
|
14
|
+
from hyperforge.db.llm_migration_utils import HYPERFORGE_LLM_TABLES
|
|
15
|
+
from hyperforge.llm_config import LLM_CONFIG_TYPE
|
|
16
|
+
|
|
17
|
+
# Keep this inventory aligned with the LLMField declarations in Hyperforge.
|
|
18
|
+
# Context fields are inherited by ContextAgentConfig subclasses, including
|
|
19
|
+
# the installed progress-agents plugins. Their own string-typed model fields
|
|
20
|
+
# are deliberately excluded from MODEL_FIELDS.
|
|
21
|
+
CONTEXT_MODULES = {
|
|
22
|
+
"a2a",
|
|
23
|
+
"advanced_ask",
|
|
24
|
+
"ask",
|
|
25
|
+
"basic_ask",
|
|
26
|
+
"brave",
|
|
27
|
+
"context_conditional",
|
|
28
|
+
"cypher",
|
|
29
|
+
"google",
|
|
30
|
+
"http",
|
|
31
|
+
"marklogic",
|
|
32
|
+
"mcp",
|
|
33
|
+
"multi_mcp",
|
|
34
|
+
"pandas",
|
|
35
|
+
"perplexity",
|
|
36
|
+
"perplexity_search",
|
|
37
|
+
"restricted",
|
|
38
|
+
"salesforce",
|
|
39
|
+
"smart",
|
|
40
|
+
"snowflake",
|
|
41
|
+
"sparql",
|
|
42
|
+
"sql",
|
|
43
|
+
"static",
|
|
44
|
+
"static_string",
|
|
45
|
+
"sitefinity",
|
|
46
|
+
"sync",
|
|
47
|
+
}
|
|
48
|
+
CONTEXT_FIELDS = {"context_validation_model", "rephrase_model", "summarize_model"}
|
|
49
|
+
MODEL_FIELDS = {
|
|
50
|
+
"advanced_ask": {"generative_model"},
|
|
51
|
+
"ask": {"configuration_model"},
|
|
52
|
+
"basic_ask": {"generative_model"},
|
|
53
|
+
"context_conditional": {"model"},
|
|
54
|
+
"external": {"model"},
|
|
55
|
+
"generate": {"model"},
|
|
56
|
+
"generation_conditional": {"model"},
|
|
57
|
+
"mcp": {"tool_choice_model", "sampling_model"},
|
|
58
|
+
"multi_mcp": {"summarize_model", "tool_choice_model"},
|
|
59
|
+
"post_conditional": {"model"},
|
|
60
|
+
"pre_conditional": {"model"},
|
|
61
|
+
"related": {"model"},
|
|
62
|
+
"rephrase": {"model"},
|
|
63
|
+
"restart": {"model"},
|
|
64
|
+
"restricted": {"decision_model"},
|
|
65
|
+
"salesforce": {"tool_choice_model", "sampling_model"},
|
|
66
|
+
"smart": {"planner_model", "executor_model"},
|
|
67
|
+
"summarize": {"model"},
|
|
68
|
+
"sync": {"generative_model"},
|
|
69
|
+
}
|
|
70
|
+
NESTED_FIELDS_BY_MODULE = {
|
|
71
|
+
"advanced_generation": {"summarize_config", "data_viz_config"},
|
|
72
|
+
"context_conditional": {"then", "else_"},
|
|
73
|
+
"generation_conditional": {"then", "else_"},
|
|
74
|
+
"multi_mcp": {"configs"},
|
|
75
|
+
"post_conditional": {"then", "else_"},
|
|
76
|
+
"pre_conditional": {"then", "else_"},
|
|
77
|
+
"restricted": {"agents"},
|
|
78
|
+
"smart": {"registered_agents"},
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def wrap_legacy_llm_fields(config: Any) -> bool:
|
|
83
|
+
"""Wrap string-valued LLMFields, including those inside nested agents."""
|
|
84
|
+
changed = False
|
|
85
|
+
if isinstance(config, list):
|
|
86
|
+
for item in config:
|
|
87
|
+
changed = wrap_legacy_llm_fields(item) or changed
|
|
88
|
+
elif isinstance(config, dict) and isinstance(config.get("module"), str):
|
|
89
|
+
module = config["module"]
|
|
90
|
+
fields = MODEL_FIELDS.get(module, set())
|
|
91
|
+
if module in CONTEXT_MODULES:
|
|
92
|
+
fields = fields | CONTEXT_FIELDS
|
|
93
|
+
for field in fields:
|
|
94
|
+
value = config.get(field)
|
|
95
|
+
if isinstance(value, str):
|
|
96
|
+
config[field] = {"_type": LLM_CONFIG_TYPE, "model_id": value}
|
|
97
|
+
changed = True
|
|
98
|
+
nested_fields = NESTED_FIELDS_BY_MODULE.get(module, set())
|
|
99
|
+
if module in CONTEXT_MODULES:
|
|
100
|
+
nested_fields = nested_fields | {"fallback", "next_agent"}
|
|
101
|
+
for field in nested_fields:
|
|
102
|
+
if field in config:
|
|
103
|
+
changed = wrap_legacy_llm_fields(config[field]) or changed
|
|
104
|
+
return changed
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def migrate_legacy_llm_fields(conn: Connection) -> int:
|
|
108
|
+
"""Convert stored agent configs, leaving unrelated and structured data alone."""
|
|
109
|
+
modified = 0
|
|
110
|
+
for table, column in HYPERFORGE_LLM_TABLES:
|
|
111
|
+
last_id = "00000000-0000-0000-0000-000000000000"
|
|
112
|
+
while rows := conn.execute(
|
|
113
|
+
text(
|
|
114
|
+
f"SELECT id, {column} FROM {table} "
|
|
115
|
+
"WHERE id > CAST(:last_id AS uuid) ORDER BY id LIMIT 500"
|
|
116
|
+
),
|
|
117
|
+
{"last_id": last_id},
|
|
118
|
+
).fetchall():
|
|
119
|
+
for row_id, config in rows:
|
|
120
|
+
if isinstance(config, str):
|
|
121
|
+
config = json.loads(config)
|
|
122
|
+
if wrap_legacy_llm_fields(config):
|
|
123
|
+
conn.execute(
|
|
124
|
+
text(
|
|
125
|
+
f"UPDATE {table} SET {column} = CAST(:config AS jsonb) "
|
|
126
|
+
"WHERE id = :id"
|
|
127
|
+
),
|
|
128
|
+
{"config": json.dumps(config), "id": row_id},
|
|
129
|
+
)
|
|
130
|
+
modified += 1
|
|
131
|
+
last_id = str(rows[-1][0])
|
|
132
|
+
return modified
|
|
@@ -165,13 +165,13 @@ class LLMDefaults(BaseSettings):
|
|
|
165
165
|
model_config = SettingsConfigDict(env_prefix="HYPERFORGE_LLM_")
|
|
166
166
|
|
|
167
167
|
# General purpose (low cost, fast)
|
|
168
|
-
default: str = "chatgpt-azure-
|
|
168
|
+
default: str = "chatgpt-azure-5.6-luna"
|
|
169
169
|
# Smart tier (complex planning, tool use)
|
|
170
|
-
smart: str = "chatgpt-
|
|
170
|
+
smart: str = "chatgpt-azure-5.6-terra"
|
|
171
171
|
# Fast tier (high throughput, configuration)
|
|
172
|
-
fast: str = "gemini-
|
|
172
|
+
fast: str = "gemini-3.6-flash"
|
|
173
173
|
# Reasoning tier (decision making, conditions)
|
|
174
|
-
reasoning: str = "chatgpt-
|
|
174
|
+
reasoning: str = "chatgpt-azure-5.6-luna"
|
|
175
175
|
|
|
176
176
|
|
|
177
177
|
llm_defaults = LLMDefaults()
|
|
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.post403 → hyperforge-1.0.0.post414}/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
|
{hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/db/llm_migration_utils.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
|
{hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/__init__.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
|
{hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/tools/__init__.py
RENAMED
|
File without changes
|
{hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/tools/codemode.py
RENAMED
|
File without changes
|
{hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/tools/core.py
RENAMED
|
File without changes
|
{hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/harness_sdk/tools/utils.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
|
{hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/standalone/ui_router.py
RENAMED
|
File without changes
|
{hyperforge-1.0.0.post403 → hyperforge-1.0.0.post414}/src/hyperforge/static/assets/index-DLejS5jC.js
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
|