mirror of
https://github.com/FuzzingLabs/fuzzforge_ai.git
synced 2026-07-06 19:38:01 +02:00
feat(hub): add hub integration and rename project to FuzzForge AI
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# FuzzForge Runner
|
||||
|
||||
Direct execution engine for FuzzForge OSS. Provides simplified module and workflow execution without requiring Temporal or external infrastructure.
|
||||
Direct execution engine for FuzzForge AI. Provides simplified module and workflow execution without requiring Temporal or external infrastructure.
|
||||
|
||||
## Overview
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[project]
|
||||
name = "fuzzforge-runner"
|
||||
version = "0.0.1"
|
||||
description = "FuzzForge Runner - Direct execution engine for FuzzForge OSS."
|
||||
description = "FuzzForge Runner - Direct execution engine for FuzzForge AI."
|
||||
authors = []
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.14"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""FuzzForge Runner - Direct execution engine for FuzzForge OSS."""
|
||||
"""FuzzForge Runner - Direct execution engine for FuzzForge AI."""
|
||||
|
||||
from fuzzforge_runner.runner import Runner
|
||||
from fuzzforge_runner.settings import Settings
|
||||
|
||||
@@ -741,6 +741,27 @@ class ModuleExecutor:
|
||||
engine = self._get_engine()
|
||||
return engine.read_file_from_container(container_id, output_file)
|
||||
|
||||
def read_module_output_incremental(
|
||||
self,
|
||||
container_id: str,
|
||||
start_line: int = 1,
|
||||
output_file: str = f"{SANDBOX_OUTPUT_DIRECTORY}/stream.jsonl",
|
||||
) -> str:
|
||||
"""Read new lines from an output file inside a running module container.
|
||||
|
||||
Uses ``tail -n +{start_line}`` so only lines appended since the last
|
||||
read are returned. Callers should track the number of lines already
|
||||
consumed and pass ``start_line = previous_count + 1`` on the next call.
|
||||
|
||||
:param container_id: The container identifier.
|
||||
:param start_line: 1-based line number to start reading from.
|
||||
:param output_file: Path to output file inside container.
|
||||
:returns: New file contents from *start_line* onwards (may be empty).
|
||||
|
||||
"""
|
||||
engine = self._get_engine()
|
||||
return engine.tail_file_from_container(container_id, output_file, start_line=start_line)
|
||||
|
||||
def get_module_status(self, container_id: str) -> str:
|
||||
"""Get the status of a running module container.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"""FuzzForge Runner - Main runner interface.
|
||||
|
||||
This module provides the high-level interface for FuzzForge OSS,
|
||||
This module provides the high-level interface for FuzzForge AI,
|
||||
coordinating module execution, workflow orchestration, and storage.
|
||||
|
||||
"""
|
||||
|
||||
@@ -71,6 +71,29 @@ class RegistrySettings(BaseModel):
|
||||
password: str | None = None
|
||||
|
||||
|
||||
class HubSettings(BaseModel):
|
||||
"""MCP Hub configuration for external tool servers.
|
||||
|
||||
Controls the hub that bridges FuzzForge with external MCP servers
|
||||
(e.g., mcp-security-hub). When enabled, AI agents can discover
|
||||
and execute tools from registered MCP servers.
|
||||
|
||||
Configure via environment variables:
|
||||
``FUZZFORGE_HUB__ENABLED=true``
|
||||
``FUZZFORGE_HUB__CONFIG_PATH=/path/to/hub-config.json``
|
||||
``FUZZFORGE_HUB__TIMEOUT=300``
|
||||
"""
|
||||
|
||||
#: Whether the MCP hub is enabled.
|
||||
enabled: bool = Field(default=True)
|
||||
|
||||
#: Path to the hub configuration JSON file.
|
||||
config_path: Path = Field(default=Path.home() / ".fuzzforge" / "hub-config.json")
|
||||
|
||||
#: Default timeout in seconds for hub tool execution.
|
||||
timeout: int = Field(default=300)
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
"""FuzzForge Runner settings.
|
||||
|
||||
@@ -102,6 +125,9 @@ class Settings(BaseSettings):
|
||||
#: Container registry settings.
|
||||
registry: RegistrySettings = Field(default_factory=RegistrySettings)
|
||||
|
||||
#: MCP Hub settings.
|
||||
hub: HubSettings = Field(default_factory=HubSettings)
|
||||
|
||||
#: Path to modules directory (for development/local builds).
|
||||
modules_path: Path = Field(default=Path.home() / ".fuzzforge" / "modules")
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ def get_logger() -> BoundLogger:
|
||||
|
||||
|
||||
class LocalStorage:
|
||||
"""Local filesystem storage backend for FuzzForge OSS.
|
||||
"""Local filesystem storage backend for FuzzForge AI.
|
||||
|
||||
Provides lightweight storage for execution results while using
|
||||
direct source mounting (no copying) for input assets.
|
||||
|
||||
Reference in New Issue
Block a user