guardianhub 0.1.330__tar.gz → 0.1.332__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.
- {guardianhub-0.1.330 → guardianhub-0.1.332}/PKG-INFO +3 -1
- {guardianhub-0.1.330 → guardianhub-0.1.332}/pyproject.toml +3 -2
- guardianhub-0.1.332/src/guardianhub/_version.py +1 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/specialist_base.py +40 -10
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/workflows/mission_skeleton.py +18 -10
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/config/settings.py +1 -1
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/template/agent_plan.py +14 -2
- guardianhub-0.1.330/src/guardianhub/_version.py +0 -1
- {guardianhub-0.1.330 → guardianhub-0.1.332}/.gitignore +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/LICENSE +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/README.md +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/AgentDesign.md +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/README.md +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/runtime.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/EpisodicManager.md +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/MemoryManager.md +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/episodic_manager.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/memory_manager.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/prompt_manager.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/workflows/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/workflows/agent_contract.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/workflows/constants.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/workflows/muscle_factory.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/auth/token_provider.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/a2a_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/classification_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/consul_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/graph_db_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/langfuse/dataset_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/langfuse/manager.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/langfuse/prompt_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/langfuse/score_evaluation_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/langfuse/tracing_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/langfuse_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/llm_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/llm_worker.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/ocr_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/paperless_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/sovereign_base_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/text_cleaner_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/tool_registry_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/vector_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/config/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/config/config_development.json +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/config/config_prod.json +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/http/http_client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/logging/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/logging/logging.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/logging/logging_filters.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/action.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/attainment.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/base.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/completion.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/debrief.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/discovery.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/history.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/learning.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/support.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/tactical.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent_models.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/base.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/builtins/vector_models.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/common/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/common/common.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/mission_blueprint.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/registry/client.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/registry/dynamic_loader.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/registry/loader.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/registry/registry.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/registry/signing.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/template/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/template/agent_response_evaluation.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/template/extraction.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/template/reflection_critique.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/template/semantic_tool.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/template/suggestion.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/tools/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/tools/tool_enrichment.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/web_search/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/web_search/search.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/auth_middleware.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/context_utils.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/instrumentation.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/otel_helper.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/otel_middlewares.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/script.sh +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/persistence/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/persistence/manager.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/prompts/base.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/prompts/providers/langfuse_provider.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/prompts/providers/local_provider.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/prompts/registry.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/scripts/script.sh +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/services/base.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/template/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/tools/gh_registry_cli.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/utils/__init__.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/utils/app_state.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/utils/fastapi_utils.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/utils/json_utils.py +0 -0
- {guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/utils/metrics.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: guardianhub
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.332
|
|
4
4
|
Summary: Unified SDK for YantramOps Operating System
|
|
5
5
|
Project-URL: Homepage, https://github.com/yantramai/guardianhub-sdk
|
|
6
6
|
Project-URL: Source, https://github.com/yantramai/guardianhub-sdk
|
|
@@ -50,6 +50,7 @@ Requires-Dist: python-multipart>=0.0.6; extra == 'full'
|
|
|
50
50
|
Requires-Dist: pytz>=2024.1; extra == 'full'
|
|
51
51
|
Requires-Dist: sqlalchemy>=2.0.0; extra == 'full'
|
|
52
52
|
Requires-Dist: temporalio>=1.5.0; extra == 'full'
|
|
53
|
+
Requires-Dist: toposort>=1.0.0; extra == 'full'
|
|
53
54
|
Requires-Dist: uvicorn>=0.23.0; extra == 'full'
|
|
54
55
|
Provides-Extra: mind
|
|
55
56
|
Requires-Dist: backoff>=2.2.1; extra == 'mind'
|
|
@@ -67,6 +68,7 @@ Requires-Dist: python-dateutil>=2.9.0; extra == 'mind'
|
|
|
67
68
|
Requires-Dist: pytz>=2024.1; extra == 'mind'
|
|
68
69
|
Provides-Extra: muscle
|
|
69
70
|
Requires-Dist: temporalio>=1.5.0; extra == 'muscle'
|
|
71
|
+
Requires-Dist: toposort>=1.0.0; extra == 'muscle'
|
|
70
72
|
Provides-Extra: obs
|
|
71
73
|
Requires-Dist: langfuse==3.10.1; extra == 'obs'
|
|
72
74
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.38.0; extra == 'obs'
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "guardianhub"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.332" # This will be overridden by Hatch's dynamic version
|
|
8
8
|
# Note: Keep _version.py as the source of truth for version
|
|
9
9
|
description = "Unified SDK for YantramOps Operating System"
|
|
10
10
|
authors = [
|
|
@@ -72,7 +72,8 @@ mind = [
|
|
|
72
72
|
]
|
|
73
73
|
# MUSCLE: Execution and Workflow
|
|
74
74
|
muscle = [
|
|
75
|
-
"temporalio>=1.5.0"
|
|
75
|
+
"temporalio>=1.5.0",
|
|
76
|
+
"toposort>=1.0.0"
|
|
76
77
|
]
|
|
77
78
|
# ALL: For local development convenience
|
|
78
79
|
full = [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.1.332'
|
|
@@ -78,6 +78,7 @@ class SovereignSpecialistBase:
|
|
|
78
78
|
|
|
79
79
|
# 4. Domain Activity Instance (The Muscle)
|
|
80
80
|
self.activities_instance = activities_instance
|
|
81
|
+
self.workflow_instance = kwargs.get('workflow_instance')
|
|
81
82
|
|
|
82
83
|
# 🧬 THE FUSION MOVE
|
|
83
84
|
if hasattr(self.activities_instance, "fuse_with_base"):
|
|
@@ -87,6 +88,15 @@ class SovereignSpecialistBase:
|
|
|
87
88
|
self.router = APIRouter(prefix="/v1/mission")
|
|
88
89
|
self._setup_routes()
|
|
89
90
|
|
|
91
|
+
def _get_val(self, obj: Any, key: str, default: Any = None) -> Any:
|
|
92
|
+
"""Sovereign helper to extract values from Pydantic models or Dicts safely."""
|
|
93
|
+
if hasattr(obj, key):
|
|
94
|
+
return getattr(obj, key)
|
|
95
|
+
if isinstance(obj, dict):
|
|
96
|
+
return obj.get(key, default)
|
|
97
|
+
return default
|
|
98
|
+
|
|
99
|
+
|
|
90
100
|
def get_client(self, client_name: str, client_type: Optional[T] = None) -> Optional[T]:
|
|
91
101
|
"""
|
|
92
102
|
Retrieves an extension client from the custom registry.
|
|
@@ -96,6 +106,30 @@ class SovereignSpecialistBase:
|
|
|
96
106
|
raise TypeError(f"Client {client_name} is not of type {client_type.__name__}")
|
|
97
107
|
return client
|
|
98
108
|
|
|
109
|
+
def get_workflows(self) -> list:
|
|
110
|
+
"""
|
|
111
|
+
Standardizes the discovery of the Agent's custom Intervention Workflow.
|
|
112
|
+
"""
|
|
113
|
+
workflows = []
|
|
114
|
+
|
|
115
|
+
# 1. Harvest the Parent Skeleton (The SDK Law)
|
|
116
|
+
from .workflows.mission_skeleton import SpecialistMissionWorkflow
|
|
117
|
+
workflows.append(SpecialistMissionWorkflow)
|
|
118
|
+
|
|
119
|
+
# 2. Harvest the Agent's Muscle Workflow (The Specialist Expertise)
|
|
120
|
+
if self.workflow_instance:
|
|
121
|
+
# If the user passed a module or a class
|
|
122
|
+
import inspect
|
|
123
|
+
if inspect.isclass(self.workflow_instance):
|
|
124
|
+
workflows.append(self.workflow_instance)
|
|
125
|
+
else:
|
|
126
|
+
# Module scanning
|
|
127
|
+
for _, obj in inspect.getmembers(self.workflow_instance, inspect.isclass):
|
|
128
|
+
if hasattr(obj, "__temporal_workflow_definition"):
|
|
129
|
+
workflows.append(obj)
|
|
130
|
+
|
|
131
|
+
return workflows
|
|
132
|
+
|
|
99
133
|
|
|
100
134
|
def get_activities(self) -> list:
|
|
101
135
|
from temporalio import activity
|
|
@@ -520,24 +554,20 @@ class SovereignSpecialistBase:
|
|
|
520
554
|
outcomes_str_list = []
|
|
521
555
|
|
|
522
556
|
for report in brief.step_results:
|
|
523
|
-
# 🚀
|
|
524
|
-
|
|
525
|
-
metrics = getattr(report, "telemetry", {})
|
|
557
|
+
# 🚀 FIX: Use the class-level helper
|
|
558
|
+
metrics = self._get_val(report, "telemetry", {})
|
|
526
559
|
for k, v in metrics.items():
|
|
527
560
|
if isinstance(v, (int, float)):
|
|
528
561
|
total_metrics[k] = total_metrics.get(k, 0.0) + v
|
|
529
562
|
|
|
530
|
-
|
|
531
|
-
status_label = "✅ SUCCESS" if
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
step_id = getattr(report, "step_id", "unknown")
|
|
535
|
-
score = getattr(report, "certainty_score", 0.0)
|
|
563
|
+
attained = self._get_val(report, "attained", False)
|
|
564
|
+
status_label = "✅ SUCCESS" if attained else "❌ FAILED"
|
|
565
|
+
step_id = self._get_val(report, "step_id", "unknown")
|
|
566
|
+
score = self._get_val(report, "certainty_score", 0.0)
|
|
536
567
|
|
|
537
568
|
outcomes_str_list.append(
|
|
538
569
|
f"- Step ID: {step_id} | Status: {status_label} | Certainty: {score}"
|
|
539
570
|
)
|
|
540
|
-
|
|
541
571
|
# 3. LLM Input Construction
|
|
542
572
|
outcomes_str = "\n".join(outcomes_str_list)
|
|
543
573
|
manual_user_input = f"""
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/workflows/mission_skeleton.py
RENAMED
|
@@ -10,7 +10,7 @@ from guardianhub.models.agent.contracts.action import ActionOutcome
|
|
|
10
10
|
from guardianhub.models.agent.contracts.attainment import AttainmentCheck,AttainmentReport
|
|
11
11
|
from guardianhub.models.agent.contracts.debrief import SummaryBrief,IntelligenceReport
|
|
12
12
|
from guardianhub.models.agent.contracts.learning import AfterActionReport,LearningAnchor
|
|
13
|
-
from guardianhub.models.agent.contracts.completion import MissionManifest,CallbackAck
|
|
13
|
+
from guardianhub.models.agent.contracts.completion import MissionManifest, CallbackAck, TacticalExecutionReport
|
|
14
14
|
|
|
15
15
|
from .agent_contract import ActivityRoles
|
|
16
16
|
from .constants import get_activity_options
|
|
@@ -91,16 +91,24 @@ class SpecialistMissionWorkflow:
|
|
|
91
91
|
"reason": "Safety Audit Violation"
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
#
|
|
95
|
-
# SpecialistMissionWorkflow.run
|
|
96
|
-
# 5. 🚀 MISSION EXECUTION: The Hands (Universal Intervention)
|
|
97
|
-
# Instead of a loop, we pass the ENTIRE plan to the Agent once.
|
|
94
|
+
# Inside SpecialistMissionWorkflow.run (Step 5)
|
|
98
95
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
96
|
+
# 🚀 THE MAGIC MOMENT
|
|
97
|
+
# Instead of execute_activity, we trigger the Agent's private Workflow.
|
|
98
|
+
workflow.logger.info(f"🛰️ Delegating intervention to Child Workflow: {request.effective_intervention_workflow}")
|
|
99
|
+
|
|
100
|
+
try:
|
|
101
|
+
mission_outcome: TacticalExecutionReport = await workflow.execute_child_workflow(
|
|
102
|
+
request.effective_intervention_workflow,
|
|
103
|
+
arg=request,
|
|
104
|
+
id=f"intervention-{request.session_id}",
|
|
105
|
+
# Ensures that if the Parent is cancelled, the Child is cleaned up.
|
|
106
|
+
parent_close_policy=workflow.ParentClosePolicy.TERMINATE
|
|
107
|
+
)
|
|
108
|
+
except Exception as e:
|
|
109
|
+
workflow.logger.error(f"❌ Child Workflow '{request.effective_intervention_workflow}' failed: {str(e)}")
|
|
110
|
+
# Fallback logic to continue the AAR/Debrief with failure state
|
|
111
|
+
mission_outcome = TacticalExecutionReport(status="FAILED", error_message=str(e))
|
|
104
112
|
|
|
105
113
|
# Execution results are now synthesized inside the agent's response
|
|
106
114
|
# 🚀 RESILIENT ACCESS
|
|
@@ -187,7 +187,7 @@ class ServiceEndpoints(BaseModel):
|
|
|
187
187
|
TOOL_EXECUTOR_URL: str = "http://localhost:8003"
|
|
188
188
|
VECTOR_SERVICE_URL: str = "http://localhost:8005"
|
|
189
189
|
TEMPORAL_HOST_URL: str = "localhost:7233"
|
|
190
|
-
SUTRAM_CALLBACK_URL: str = "http://localhost:
|
|
190
|
+
SUTRAM_CALLBACK_URL: str = "http://localhost:7002/v1/agent/callback"
|
|
191
191
|
CLASSIFICATION_SERVICE_URL: str = "http://localhost:8000/v1/agent/callback"
|
|
192
192
|
METADATA_EXTRACTION_SERVICE_URL: str = "http://localhost:8000/v1/agent/callback"
|
|
193
193
|
PAPERLESS_SERVICE_URL: str = "http://localhost:8000/v1/agent/callback"
|
|
@@ -126,6 +126,11 @@ class MissionRequest(BaseModel):
|
|
|
126
126
|
session_id: str
|
|
127
127
|
trace_id: Optional[str] = None
|
|
128
128
|
agent_name: str = "specialist"
|
|
129
|
+
# 🎯 THE DYNAMIC LINK:
|
|
130
|
+
# Allows the Parent to call the Agent's custom Child Workflow.
|
|
131
|
+
# Default follows the convention: {agent_name}_InterventionWorkflow
|
|
132
|
+
intervention_workflow_name: Optional[str] = None
|
|
133
|
+
|
|
129
134
|
is_dry_run: bool = False
|
|
130
135
|
template_id: str = "NO_TEMPLATE_ID"
|
|
131
136
|
sub_objective: str = "NO_SUB_OBJECTIVE"
|
|
@@ -150,7 +155,13 @@ class MissionRequest(BaseModel):
|
|
|
150
155
|
raise ValueError("Mission rejected: Sutram provided an empty MacroPlan.")
|
|
151
156
|
return v
|
|
152
157
|
|
|
153
|
-
|
|
158
|
+
@property
|
|
159
|
+
def effective_intervention_workflow(self) -> str:
|
|
160
|
+
"""Resolves the workflow name: explicit override > convention."""
|
|
161
|
+
if self.intervention_workflow_name:
|
|
162
|
+
return self.intervention_workflow_name
|
|
163
|
+
return f"{self.agent_name}_InterventionWorkflow"
|
|
164
|
+
|
|
154
165
|
@property
|
|
155
166
|
def technical_context(self) -> Dict[str, Any]:
|
|
156
167
|
"""Provides a unified bundle for activity arguments."""
|
|
@@ -159,6 +170,7 @@ class MissionRequest(BaseModel):
|
|
|
159
170
|
"trace_id": self.trace_id,
|
|
160
171
|
"template_id": self.active_template_id,
|
|
161
172
|
"agent_name": self.agent_name,
|
|
162
|
-
"is_dry_run": self.is_dry_run
|
|
173
|
+
"is_dry_run": self.is_dry_run,
|
|
174
|
+
"workflow_name": self.effective_intervention_workflow # 🚀 Carry the link
|
|
163
175
|
}
|
|
164
176
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.1.330'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/EpisodicManager.md
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/MemoryManager.md
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/episodic_manager.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/memory_manager.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/services/prompt_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/workflows/agent_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/agents/workflows/muscle_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/classification_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/langfuse/dataset_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/langfuse/prompt_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/langfuse/tracing_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/clients/sovereign_base_client.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
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/__init__.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/action.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/attainment.py
RENAMED
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/completion.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/debrief.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/discovery.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/history.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/learning.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/support.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/agent/contracts/tactical.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/builtins/vector_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/registry/dynamic_loader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/template/reflection_critique.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/models/template/semantic_tool.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/auth_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/instrumentation.py
RENAMED
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/observability/otel_middlewares.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/prompts/providers/langfuse_provider.py
RENAMED
|
File without changes
|
{guardianhub-0.1.330 → guardianhub-0.1.332}/src/guardianhub/prompts/providers/local_provider.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
|