agent_os_kernel 3.1.0__py3-none-any.whl
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.
- agent_control_plane/__init__.py +662 -0
- agent_control_plane/a2a_adapter.py +543 -0
- agent_control_plane/adapter.py +417 -0
- agent_control_plane/agent_hibernation.py +394 -0
- agent_control_plane/agent_kernel.py +470 -0
- agent_control_plane/compliance.py +720 -0
- agent_control_plane/constraint_graphs.py +478 -0
- agent_control_plane/control_plane.py +854 -0
- agent_control_plane/example_executors.py +195 -0
- agent_control_plane/execution_engine.py +231 -0
- agent_control_plane/flight_recorder.py +846 -0
- agent_control_plane/governance_layer.py +435 -0
- agent_control_plane/hf_utils.py +563 -0
- agent_control_plane/interfaces/__init__.py +55 -0
- agent_control_plane/interfaces/kernel_interface.py +361 -0
- agent_control_plane/interfaces/plugin_interface.py +497 -0
- agent_control_plane/interfaces/protocol_interfaces.py +387 -0
- agent_control_plane/kernel_space.py +1009 -0
- agent_control_plane/langchain_adapter.py +424 -0
- agent_control_plane/lifecycle.py +3113 -0
- agent_control_plane/mcp_adapter.py +653 -0
- agent_control_plane/ml_safety.py +563 -0
- agent_control_plane/multimodal.py +727 -0
- agent_control_plane/mute_agent.py +422 -0
- agent_control_plane/observability.py +787 -0
- agent_control_plane/orchestrator.py +482 -0
- agent_control_plane/plugin_registry.py +750 -0
- agent_control_plane/policy_engine.py +954 -0
- agent_control_plane/process_isolation.py +777 -0
- agent_control_plane/shadow_mode.py +310 -0
- agent_control_plane/signals.py +493 -0
- agent_control_plane/supervisor_agents.py +430 -0
- agent_control_plane/time_travel_debugger.py +557 -0
- agent_control_plane/tool_registry.py +452 -0
- agent_control_plane/vfs.py +697 -0
- agent_kernel/__init__.py +69 -0
- agent_kernel/analyzer.py +435 -0
- agent_kernel/auditor.py +36 -0
- agent_kernel/completeness_auditor.py +237 -0
- agent_kernel/detector.py +203 -0
- agent_kernel/kernel.py +744 -0
- agent_kernel/memory_manager.py +85 -0
- agent_kernel/models.py +374 -0
- agent_kernel/nudge_mechanism.py +263 -0
- agent_kernel/outcome_analyzer.py +338 -0
- agent_kernel/patcher.py +582 -0
- agent_kernel/semantic_analyzer.py +316 -0
- agent_kernel/semantic_purge.py +349 -0
- agent_kernel/simulator.py +449 -0
- agent_kernel/teacher.py +85 -0
- agent_kernel/triage.py +152 -0
- agent_os/__init__.py +409 -0
- agent_os/_adversarial_impl.py +200 -0
- agent_os/_circuit_breaker_impl.py +232 -0
- agent_os/_mcp_metrics.py +193 -0
- agent_os/adversarial.py +20 -0
- agent_os/agents_compat.py +490 -0
- agent_os/audit_logger.py +135 -0
- agent_os/base_agent.py +651 -0
- agent_os/circuit_breaker.py +34 -0
- agent_os/cli/__init__.py +659 -0
- agent_os/cli/cmd_audit.py +128 -0
- agent_os/cli/cmd_init.py +152 -0
- agent_os/cli/cmd_policy.py +41 -0
- agent_os/cli/cmd_policy_gen.py +180 -0
- agent_os/cli/cmd_validate.py +258 -0
- agent_os/cli/mcp_scan.py +265 -0
- agent_os/cli/output.py +192 -0
- agent_os/cli/policy_checker.py +330 -0
- agent_os/compat.py +74 -0
- agent_os/constraint_graph.py +234 -0
- agent_os/content_governance.py +140 -0
- agent_os/context_budget.py +305 -0
- agent_os/credential_redactor.py +224 -0
- agent_os/diff_policy.py +89 -0
- agent_os/egress_policy.py +159 -0
- agent_os/escalation.py +276 -0
- agent_os/event_bus.py +124 -0
- agent_os/exceptions.py +180 -0
- agent_os/execution_context_policy.py +141 -0
- agent_os/github_enterprise.py +96 -0
- agent_os/health.py +20 -0
- agent_os/integrations/__init__.py +279 -0
- agent_os/integrations/a2a_adapter.py +279 -0
- agent_os/integrations/agent_lightning/__init__.py +30 -0
- agent_os/integrations/anthropic_adapter.py +420 -0
- agent_os/integrations/autogen_adapter.py +620 -0
- agent_os/integrations/base.py +1137 -0
- agent_os/integrations/compat.py +229 -0
- agent_os/integrations/config.py +98 -0
- agent_os/integrations/conversation_guardian.py +957 -0
- agent_os/integrations/crewai_adapter.py +467 -0
- agent_os/integrations/drift_detector.py +425 -0
- agent_os/integrations/dry_run.py +124 -0
- agent_os/integrations/escalation.py +582 -0
- agent_os/integrations/gemini_adapter.py +364 -0
- agent_os/integrations/google_adk_adapter.py +633 -0
- agent_os/integrations/guardrails_adapter.py +394 -0
- agent_os/integrations/health.py +197 -0
- agent_os/integrations/langchain_adapter.py +654 -0
- agent_os/integrations/llamafirewall.py +343 -0
- agent_os/integrations/llamaindex_adapter.py +188 -0
- agent_os/integrations/logging.py +191 -0
- agent_os/integrations/maf_adapter.py +631 -0
- agent_os/integrations/mistral_adapter.py +365 -0
- agent_os/integrations/openai_adapter.py +816 -0
- agent_os/integrations/openai_agents_sdk.py +406 -0
- agent_os/integrations/policy_compose.py +171 -0
- agent_os/integrations/profiling.py +144 -0
- agent_os/integrations/pydantic_ai_adapter.py +420 -0
- agent_os/integrations/rate_limiter.py +130 -0
- agent_os/integrations/rbac.py +143 -0
- agent_os/integrations/registry.py +113 -0
- agent_os/integrations/scope_guard.py +303 -0
- agent_os/integrations/semantic_kernel_adapter.py +769 -0
- agent_os/integrations/smolagents_adapter.py +629 -0
- agent_os/integrations/templates.py +178 -0
- agent_os/integrations/token_budget.py +134 -0
- agent_os/integrations/tool_aliases.py +190 -0
- agent_os/integrations/webhooks.py +177 -0
- agent_os/lite.py +208 -0
- agent_os/mcp_gateway.py +385 -0
- agent_os/mcp_message_signer.py +273 -0
- agent_os/mcp_protocols.py +161 -0
- agent_os/mcp_response_scanner.py +232 -0
- agent_os/mcp_security.py +924 -0
- agent_os/mcp_session_auth.py +231 -0
- agent_os/mcp_sliding_rate_limiter.py +184 -0
- agent_os/memory_guard.py +409 -0
- agent_os/metrics.py +134 -0
- agent_os/mute.py +428 -0
- agent_os/mute_agent.py +209 -0
- agent_os/policies/__init__.py +77 -0
- agent_os/policies/async_evaluator.py +275 -0
- agent_os/policies/backends.py +670 -0
- agent_os/policies/bridge.py +169 -0
- agent_os/policies/budget.py +85 -0
- agent_os/policies/cli.py +294 -0
- agent_os/policies/conflict_resolution.py +270 -0
- agent_os/policies/data_classification.py +252 -0
- agent_os/policies/evaluator.py +239 -0
- agent_os/policies/policy_schema.json +228 -0
- agent_os/policies/rate_limiting.py +145 -0
- agent_os/policies/schema.py +115 -0
- agent_os/policies/shared.py +331 -0
- agent_os/prompt_injection.py +694 -0
- agent_os/providers.py +182 -0
- agent_os/py.typed +0 -0
- agent_os/retry.py +81 -0
- agent_os/reversibility.py +251 -0
- agent_os/sandbox.py +432 -0
- agent_os/sandbox_provider.py +140 -0
- agent_os/secure_codegen.py +525 -0
- agent_os/security_skills.py +538 -0
- agent_os/semantic_policy.py +422 -0
- agent_os/server/__init__.py +15 -0
- agent_os/server/__main__.py +25 -0
- agent_os/server/app.py +277 -0
- agent_os/server/models.py +104 -0
- agent_os/shift_left_metrics.py +130 -0
- agent_os/stateless.py +742 -0
- agent_os/supervisor.py +148 -0
- agent_os/task_outcome.py +148 -0
- agent_os/transparency.py +181 -0
- agent_os/trust_root.py +128 -0
- agent_os_kernel-3.1.0.dist-info/METADATA +1269 -0
- agent_os_kernel-3.1.0.dist-info/RECORD +337 -0
- agent_os_kernel-3.1.0.dist-info/WHEEL +4 -0
- agent_os_kernel-3.1.0.dist-info/entry_points.txt +2 -0
- agent_os_kernel-3.1.0.dist-info/licenses/LICENSE +21 -0
- agent_os_observability/__init__.py +27 -0
- agent_os_observability/dashboards.py +898 -0
- agent_os_observability/metrics.py +398 -0
- agent_os_observability/server.py +223 -0
- agent_os_observability/tracer.py +232 -0
- agent_primitives/__init__.py +24 -0
- agent_primitives/failures.py +84 -0
- agent_primitives/py.typed +0 -0
- amb_core/__init__.py +177 -0
- amb_core/adapters/__init__.py +57 -0
- amb_core/adapters/aws_sqs_broker.py +376 -0
- amb_core/adapters/azure_servicebus_broker.py +340 -0
- amb_core/adapters/kafka_broker.py +260 -0
- amb_core/adapters/nats_broker.py +285 -0
- amb_core/adapters/rabbitmq_broker.py +235 -0
- amb_core/adapters/redis_broker.py +262 -0
- amb_core/broker.py +145 -0
- amb_core/bus.py +481 -0
- amb_core/cloudevents.py +509 -0
- amb_core/dlq.py +345 -0
- amb_core/hf_utils.py +536 -0
- amb_core/memory_broker.py +410 -0
- amb_core/models.py +141 -0
- amb_core/persistence.py +529 -0
- amb_core/schema.py +294 -0
- amb_core/tracing.py +358 -0
- atr/__init__.py +640 -0
- atr/access.py +348 -0
- atr/composition.py +645 -0
- atr/decorator.py +357 -0
- atr/executor.py +384 -0
- atr/health.py +557 -0
- atr/hf_utils.py +449 -0
- atr/injection.py +422 -0
- atr/metrics.py +440 -0
- atr/policies.py +403 -0
- atr/py.typed +2 -0
- atr/registry.py +452 -0
- atr/schema.py +480 -0
- atr/tools/safe/__init__.py +75 -0
- atr/tools/safe/calculator.py +467 -0
- atr/tools/safe/datetime_tool.py +443 -0
- atr/tools/safe/file_reader.py +402 -0
- atr/tools/safe/http_client.py +316 -0
- atr/tools/safe/json_parser.py +374 -0
- atr/tools/safe/text_tool.py +537 -0
- atr/tools/safe/toolkit.py +175 -0
- caas/__init__.py +162 -0
- caas/api/__init__.py +7 -0
- caas/api/server.py +1328 -0
- caas/caching.py +834 -0
- caas/cli.py +210 -0
- caas/conversation.py +223 -0
- caas/decay.py +72 -0
- caas/detection/__init__.py +9 -0
- caas/detection/detector.py +238 -0
- caas/enrichment.py +130 -0
- caas/gateway/__init__.py +27 -0
- caas/gateway/trust_gateway.py +474 -0
- caas/hf_utils.py +479 -0
- caas/ingestion/__init__.py +23 -0
- caas/ingestion/processors.py +253 -0
- caas/ingestion/structure_parser.py +188 -0
- caas/models.py +356 -0
- caas/pragmatic_truth.py +444 -0
- caas/routing/__init__.py +10 -0
- caas/routing/heuristic_router.py +58 -0
- caas/storage/__init__.py +9 -0
- caas/storage/store.py +389 -0
- caas/triad.py +213 -0
- caas/tuning/__init__.py +9 -0
- caas/tuning/tuner.py +329 -0
- caas/vfs/__init__.py +14 -0
- caas/vfs/filesystem.py +452 -0
- cmvk/__init__.py +218 -0
- cmvk/audit.py +402 -0
- cmvk/benchmarks.py +478 -0
- cmvk/constitutional.py +904 -0
- cmvk/hf_utils.py +301 -0
- cmvk/metrics.py +473 -0
- cmvk/profiles.py +300 -0
- cmvk/py.typed +0 -0
- cmvk/types.py +12 -0
- cmvk/verification.py +956 -0
- emk/__init__.py +89 -0
- emk/causal.py +352 -0
- emk/hf_utils.py +421 -0
- emk/indexer.py +83 -0
- emk/py.typed +0 -0
- emk/schema.py +204 -0
- emk/sleep_cycle.py +347 -0
- emk/store.py +281 -0
- iatp/__init__.py +166 -0
- iatp/attestation.py +461 -0
- iatp/cli.py +317 -0
- iatp/hf_utils.py +472 -0
- iatp/ipc_pipes.py +580 -0
- iatp/main.py +412 -0
- iatp/models/__init__.py +447 -0
- iatp/policy_engine.py +337 -0
- iatp/py.typed +2 -0
- iatp/recovery.py +321 -0
- iatp/security/__init__.py +270 -0
- iatp/sidecar/__init__.py +519 -0
- iatp/telemetry/__init__.py +164 -0
- iatp/tests/__init__.py +1 -0
- iatp/tests/test_attestation.py +370 -0
- iatp/tests/test_cli.py +131 -0
- iatp/tests/test_ed25519_attestation.py +211 -0
- iatp/tests/test_models.py +130 -0
- iatp/tests/test_policy_engine.py +347 -0
- iatp/tests/test_recovery.py +281 -0
- iatp/tests/test_security.py +222 -0
- iatp/tests/test_sidecar.py +167 -0
- iatp/tests/test_telemetry.py +175 -0
- mcp_kernel_server/__init__.py +28 -0
- mcp_kernel_server/cli.py +274 -0
- mcp_kernel_server/resources.py +217 -0
- mcp_kernel_server/server.py +564 -0
- mcp_kernel_server/tools.py +1174 -0
- mute_agent/__init__.py +68 -0
- mute_agent/core/__init__.py +1 -0
- mute_agent/core/execution_agent.py +166 -0
- mute_agent/core/handshake_protocol.py +201 -0
- mute_agent/core/reasoning_agent.py +238 -0
- mute_agent/knowledge_graph/__init__.py +1 -0
- mute_agent/knowledge_graph/graph_elements.py +65 -0
- mute_agent/knowledge_graph/multidimensional_graph.py +170 -0
- mute_agent/knowledge_graph/subgraph.py +224 -0
- mute_agent/listener/__init__.py +43 -0
- mute_agent/listener/adapters/__init__.py +31 -0
- mute_agent/listener/adapters/base_adapter.py +189 -0
- mute_agent/listener/adapters/caas_adapter.py +344 -0
- mute_agent/listener/adapters/control_plane_adapter.py +436 -0
- mute_agent/listener/adapters/iatp_adapter.py +332 -0
- mute_agent/listener/adapters/scak_adapter.py +251 -0
- mute_agent/listener/listener.py +610 -0
- mute_agent/listener/state_observer.py +436 -0
- mute_agent/listener/threshold_config.py +313 -0
- mute_agent/super_system/__init__.py +1 -0
- mute_agent/super_system/router.py +204 -0
- mute_agent/visualization/__init__.py +10 -0
- mute_agent/visualization/graph_debugger.py +502 -0
- nexus/README.md +60 -0
- nexus/__init__.py +51 -0
- nexus/arbiter.py +359 -0
- nexus/client.py +466 -0
- nexus/dmz.py +444 -0
- nexus/escrow.py +430 -0
- nexus/exceptions.py +286 -0
- nexus/pyproject.toml +36 -0
- nexus/registry.py +393 -0
- nexus/reputation.py +425 -0
- nexus/schemas/__init__.py +51 -0
- nexus/schemas/compliance.py +276 -0
- nexus/schemas/escrow.py +251 -0
- nexus/schemas/manifest.py +225 -0
- nexus/schemas/receipt.py +208 -0
- nexus/tests/__init__.py +0 -0
- nexus/tests/conftest.py +146 -0
- nexus/tests/test_arbiter.py +192 -0
- nexus/tests/test_dmz.py +194 -0
- nexus/tests/test_escrow.py +276 -0
- nexus/tests/test_exceptions.py +225 -0
- nexus/tests/test_registry.py +232 -0
- nexus/tests/test_reputation.py +328 -0
- nexus/tests/test_schemas.py +295 -0
caas/models.py
ADDED
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
# Copyright (c) Microsoft Corporation.
|
|
2
|
+
# Licensed under the MIT License.
|
|
3
|
+
"""
|
|
4
|
+
Data models for Context-as-a-Service.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import Dict, List, Optional, Any
|
|
9
|
+
from pydantic import BaseModel, Field
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ContentTier(str, Enum):
|
|
13
|
+
"""Content importance tiers for structure-aware indexing."""
|
|
14
|
+
TIER_1_HIGH = "tier_1_high" # High Value: Titles, Headers, Class Definitions, API Contracts
|
|
15
|
+
TIER_2_MEDIUM = "tier_2_medium" # Medium Value: Body text, Function logic
|
|
16
|
+
TIER_3_LOW = "tier_3_low" # Low Value: Footnotes, Comments, Disclaimers
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ContextLayer(str, Enum):
|
|
20
|
+
"""Context tiers defined by intimacy and access policy."""
|
|
21
|
+
HOT = "hot" # L1: The Situation - current conversation, active data (overrides everything)
|
|
22
|
+
WARM = "warm" # L2: The Persona - user profile, preferences (always-on filter)
|
|
23
|
+
COLD = "cold" # L3: The Archive - historical data (on-demand only)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class DocumentType(str, Enum):
|
|
27
|
+
"""Detected document types."""
|
|
28
|
+
LEGAL_CONTRACT = "legal_contract"
|
|
29
|
+
TECHNICAL_DOCUMENTATION = "technical_documentation"
|
|
30
|
+
SOURCE_CODE = "source_code"
|
|
31
|
+
RESEARCH_PAPER = "research_paper"
|
|
32
|
+
ARTICLE = "article"
|
|
33
|
+
TUTORIAL = "tutorial"
|
|
34
|
+
API_DOCUMENTATION = "api_documentation"
|
|
35
|
+
UNKNOWN = "unknown"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class ContentFormat(str, Enum):
|
|
39
|
+
"""Supported content formats."""
|
|
40
|
+
PDF = "pdf"
|
|
41
|
+
HTML = "html"
|
|
42
|
+
CODE = "code"
|
|
43
|
+
MARKDOWN = "markdown"
|
|
44
|
+
TEXT = "text"
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class SourceType(str, Enum):
|
|
48
|
+
"""Source types."""
|
|
49
|
+
OFFICIAL_DOCS = "official_docs" # Official documentation, specs, formal docs
|
|
50
|
+
PRACTICAL_LOGS = "practical_logs" # Server logs, error logs, system logs
|
|
51
|
+
TEAM_CHAT = "team_chat" # Slack, Teams, chat conversations
|
|
52
|
+
CODE_COMMENTS = "code_comments" # Inline code comments and TODOs
|
|
53
|
+
TICKET_SYSTEM = "ticket_system" # Jira, GitHub issues, bug reports
|
|
54
|
+
RUNBOOK = "runbook" # Operational runbooks, troubleshooting guides
|
|
55
|
+
WIKI = "wiki" # Internal wiki, knowledge base
|
|
56
|
+
MEETING_NOTES = "meeting_notes" # Meeting notes, decisions
|
|
57
|
+
UNKNOWN = "unknown" # Unknown or unspecified source
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class SourceCitation(BaseModel):
|
|
61
|
+
"""Citation for source tracking."""
|
|
62
|
+
source_type: SourceType
|
|
63
|
+
source_name: str # e.g., "API Documentation v2.1", "Slack #engineering 2024-01-03"
|
|
64
|
+
source_url: Optional[str] = None # Link to original source if available
|
|
65
|
+
timestamp: Optional[str] = None # When the information was created/updated
|
|
66
|
+
excerpt: Optional[str] = None # Brief excerpt from source
|
|
67
|
+
confidence: float = Field(default=1.0, ge=0.0, le=1.0) # Confidence in the information (0-1)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class Section(BaseModel):
|
|
71
|
+
"""Represents a section of a document."""
|
|
72
|
+
title: str
|
|
73
|
+
content: str
|
|
74
|
+
weight: float = 1.0
|
|
75
|
+
tier: Optional['ContentTier'] = None
|
|
76
|
+
importance_score: float = 0.0
|
|
77
|
+
start_pos: int = 0
|
|
78
|
+
end_pos: int = 0
|
|
79
|
+
parent_section: Optional[str] = None # Parent section title for hierarchical context
|
|
80
|
+
chapter: Optional[str] = None # Chapter or major section name
|
|
81
|
+
source_citation: Optional[SourceCitation] = None # Citation for source tracking
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class Document(BaseModel):
|
|
85
|
+
"""Represents a processed document."""
|
|
86
|
+
id: str
|
|
87
|
+
title: str
|
|
88
|
+
content: str
|
|
89
|
+
format: ContentFormat
|
|
90
|
+
detected_type: DocumentType
|
|
91
|
+
sections: List[Section] = []
|
|
92
|
+
metadata: Dict[str, Any] = {}
|
|
93
|
+
weights: Dict[str, float] = {}
|
|
94
|
+
ingestion_timestamp: Optional[str] = None
|
|
95
|
+
source_citation: Optional[SourceCitation] = None # Document-level citation
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class ContextRequest(BaseModel):
|
|
99
|
+
"""Request for context extraction."""
|
|
100
|
+
document_id: Optional[str] = None
|
|
101
|
+
query: str
|
|
102
|
+
max_tokens: int = Field(default=2000, gt=0, le=10000)
|
|
103
|
+
include_metadata: bool = True
|
|
104
|
+
enable_time_decay: bool = Field(
|
|
105
|
+
default=True,
|
|
106
|
+
description="Apply time-based decay to prioritize recent content (default: True)"
|
|
107
|
+
)
|
|
108
|
+
decay_rate: float = Field(
|
|
109
|
+
default=1.0,
|
|
110
|
+
ge=0.01,
|
|
111
|
+
le=10.0,
|
|
112
|
+
description="Rate of time decay. Higher = faster decay (default: 1.0)"
|
|
113
|
+
)
|
|
114
|
+
enable_citations: bool = Field(
|
|
115
|
+
default=True,
|
|
116
|
+
description="Include source citations for transparency (default: True)"
|
|
117
|
+
)
|
|
118
|
+
detect_conflicts: bool = Field(
|
|
119
|
+
default=True,
|
|
120
|
+
description="Detect conflicts between official and practical sources (default: True)"
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class ContextResponse(BaseModel):
|
|
125
|
+
"""Response containing extracted context."""
|
|
126
|
+
document_id: str
|
|
127
|
+
document_type: DocumentType
|
|
128
|
+
context: str
|
|
129
|
+
sections_used: List[str] = []
|
|
130
|
+
total_tokens: int
|
|
131
|
+
weights_applied: Dict[str, float] = {}
|
|
132
|
+
metadata: Dict[str, Any] = {}
|
|
133
|
+
source_citations: List[SourceCitation] = Field(
|
|
134
|
+
default=[],
|
|
135
|
+
description="Citations for all sources used in the context"
|
|
136
|
+
)
|
|
137
|
+
source_conflicts: List[Dict[str, Any]] = Field(
|
|
138
|
+
default=[],
|
|
139
|
+
description="Conflicts between official and practical sources"
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
class ContextTriadItem(BaseModel):
|
|
144
|
+
"""Represents an item in a context layer."""
|
|
145
|
+
id: str
|
|
146
|
+
layer: ContextLayer
|
|
147
|
+
content: str
|
|
148
|
+
metadata: Dict[str, Any] = {}
|
|
149
|
+
timestamp: Optional[str] = None
|
|
150
|
+
priority: float = 1.0
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
class ContextTriadState(BaseModel):
|
|
154
|
+
"""Represents the complete tiered context state."""
|
|
155
|
+
hot_context: List[ContextTriadItem] = [] # Current situation (conversation, errors)
|
|
156
|
+
warm_context: List[ContextTriadItem] = [] # User persona (profile, preferences)
|
|
157
|
+
cold_context: List[ContextTriadItem] = [] # Historical archive (old tickets, PRs)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class ContextTriadRequest(BaseModel):
|
|
161
|
+
"""Request for tiered context retrieval."""
|
|
162
|
+
include_hot: bool = Field(default=True, description="Include hot context (current situation)")
|
|
163
|
+
include_warm: bool = Field(default=True, description="Include warm context (user persona)")
|
|
164
|
+
include_cold: bool = Field(default=False, description="Include cold context (historical archive) - on-demand only")
|
|
165
|
+
max_tokens_per_layer: Dict[str, int] = Field(
|
|
166
|
+
default={"hot": 1000, "warm": 500, "cold": 1000},
|
|
167
|
+
description="Token limits per layer"
|
|
168
|
+
)
|
|
169
|
+
query: Optional[str] = Field(default=None, description="Optional query for cold context retrieval")
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
class AddContextRequest(BaseModel):
|
|
173
|
+
"""Request for adding context to a layer."""
|
|
174
|
+
content: str = Field(description="The context content to add")
|
|
175
|
+
metadata: Optional[Dict[str, Any]] = Field(default=None, description="Optional metadata")
|
|
176
|
+
priority: float = Field(default=1.0, ge=0.0, le=10.0, description="Priority level (0-10)")
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
class ContextTriadResponse(BaseModel):
|
|
180
|
+
"""Response containing tiered context data."""
|
|
181
|
+
hot_context: str = ""
|
|
182
|
+
warm_context: str = ""
|
|
183
|
+
cold_context: str = ""
|
|
184
|
+
total_tokens: int
|
|
185
|
+
layers_included: List[str]
|
|
186
|
+
metadata: Dict[str, Any] = {}
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
class SourceConflict(BaseModel):
|
|
190
|
+
"""Represents a conflict between official and practical sources."""
|
|
191
|
+
topic: str # What the conflict is about
|
|
192
|
+
official_answer: str # What official docs say
|
|
193
|
+
official_source: SourceCitation # Citation for official answer
|
|
194
|
+
practical_answer: str # What practical sources say (logs, chat, etc.)
|
|
195
|
+
practical_source: SourceCitation # Citation for practical answer
|
|
196
|
+
recommendation: str # Which to trust and why
|
|
197
|
+
conflict_severity: str = Field(
|
|
198
|
+
default="medium",
|
|
199
|
+
description="Severity: low, medium, high"
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
class ModelTier(str, Enum):
|
|
204
|
+
"""Model tiers for heuristic routing decisions."""
|
|
205
|
+
CANNED = "canned" # Canned response, zero cost
|
|
206
|
+
FAST = "fast" # Fast model (e.g., GPT-4o-mini)
|
|
207
|
+
SMART = "smart" # Smart model (e.g., GPT-4o)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class RoutingDecision(BaseModel):
|
|
211
|
+
"""Represents a routing decision made by the heuristic router."""
|
|
212
|
+
model_config = {'protected_namespaces': ()} # Avoid pydantic warning for model_tier
|
|
213
|
+
|
|
214
|
+
model_tier: ModelTier
|
|
215
|
+
reason: str # Why this tier was chosen
|
|
216
|
+
confidence: float = Field(ge=0.0, le=1.0) # Confidence in the decision (0-1)
|
|
217
|
+
query_length: int # Length of the query
|
|
218
|
+
matched_keywords: List[str] = [] # Keywords that triggered the decision
|
|
219
|
+
suggested_model: str # Suggested model name (e.g., "gpt-4o-mini", "gpt-4o")
|
|
220
|
+
estimated_cost: str # Estimated cost category (zero, low, medium, high)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
class RouteRequest(BaseModel):
|
|
224
|
+
"""Request for routing a query to the appropriate model."""
|
|
225
|
+
query: str = Field(description="The user query to route")
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
class ConversationTurn(BaseModel):
|
|
229
|
+
"""Represents a single turn in a conversation (user message + AI response)."""
|
|
230
|
+
id: str
|
|
231
|
+
user_message: str
|
|
232
|
+
ai_response: Optional[str] = None
|
|
233
|
+
timestamp: str
|
|
234
|
+
metadata: Dict[str, Any] = {}
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
class ConversationState(BaseModel):
|
|
238
|
+
"""Represents the conversation history with sliding window."""
|
|
239
|
+
turns: List[ConversationTurn] = []
|
|
240
|
+
max_turns: int = Field(default=10, ge=1, le=100)
|
|
241
|
+
total_turns_ever: int = 0 # Track total turns including deleted ones
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class AddTurnRequest(BaseModel):
|
|
245
|
+
"""Request to add a conversation turn."""
|
|
246
|
+
user_message: str = Field(description="The user's message")
|
|
247
|
+
ai_response: Optional[str] = Field(default=None, description="The AI's response (optional)")
|
|
248
|
+
metadata: Optional[Dict[str, Any]] = Field(default_factory=dict, description="Optional metadata")
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
class UpdateTurnRequest(BaseModel):
|
|
252
|
+
"""Request to update a turn's AI response."""
|
|
253
|
+
ai_response: str = Field(description="The AI response to add/update")
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
class ConversationHistoryResponse(BaseModel):
|
|
257
|
+
"""Response containing conversation history."""
|
|
258
|
+
turns: List[ConversationTurn]
|
|
259
|
+
total_turns: int
|
|
260
|
+
max_turns: int
|
|
261
|
+
total_turns_ever: int
|
|
262
|
+
oldest_turn_timestamp: Optional[str] = None
|
|
263
|
+
newest_turn_timestamp: Optional[str] = None
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
# ============================================================================
|
|
267
|
+
# Virtual File System Models
|
|
268
|
+
# ============================================================================
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
class FileType(str, Enum):
|
|
272
|
+
"""Types of file system nodes."""
|
|
273
|
+
FILE = "file"
|
|
274
|
+
DIRECTORY = "directory"
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class FileEdit(BaseModel):
|
|
278
|
+
"""Represents an edit to a file."""
|
|
279
|
+
agent_id: str = Field(description="ID of the agent that made the edit")
|
|
280
|
+
timestamp: str = Field(description="ISO timestamp of the edit")
|
|
281
|
+
content: str = Field(description="Content after this edit")
|
|
282
|
+
message: Optional[str] = Field(default=None, description="Optional commit-like message")
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
class FileNode(BaseModel):
|
|
286
|
+
"""Represents a file or directory in the virtual file system."""
|
|
287
|
+
path: str = Field(description="Full path of the file/directory")
|
|
288
|
+
file_type: FileType = Field(description="Type of node (file or directory)")
|
|
289
|
+
content: str = Field(default="", description="Content of the file (empty for directories)")
|
|
290
|
+
metadata: Dict[str, Any] = Field(default_factory=dict, description="Additional metadata")
|
|
291
|
+
created_by: str = Field(description="Agent ID that created this file")
|
|
292
|
+
created_at: str = Field(description="ISO timestamp of creation")
|
|
293
|
+
modified_by: str = Field(description="Agent ID that last modified this file")
|
|
294
|
+
modified_at: str = Field(description="ISO timestamp of last modification")
|
|
295
|
+
edit_history: List[FileEdit] = Field(default_factory=list, description="History of edits")
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
class VFSState(BaseModel):
|
|
299
|
+
"""Represents the complete virtual file system state."""
|
|
300
|
+
files: Dict[str, FileNode] = Field(
|
|
301
|
+
default_factory=dict,
|
|
302
|
+
description="Mapping of file paths to FileNode objects"
|
|
303
|
+
)
|
|
304
|
+
root_path: str = Field(default="/", description="Root path of the file system")
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
class CreateFileRequest(BaseModel):
|
|
308
|
+
"""Request to create a file in the VFS."""
|
|
309
|
+
path: str = Field(description="Path of the file to create")
|
|
310
|
+
content: str = Field(default="", description="Initial content of the file")
|
|
311
|
+
agent_id: str = Field(description="ID of the agent creating the file")
|
|
312
|
+
metadata: Optional[Dict[str, Any]] = Field(default_factory=dict, description="Optional metadata")
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
class UpdateFileRequest(BaseModel):
|
|
316
|
+
"""Request to update a file in the VFS."""
|
|
317
|
+
path: str = Field(description="Path of the file to update")
|
|
318
|
+
content: str = Field(description="New content of the file")
|
|
319
|
+
agent_id: str = Field(description="ID of the agent updating the file")
|
|
320
|
+
message: Optional[str] = Field(default=None, description="Optional commit-like message")
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
class ReadFileRequest(BaseModel):
|
|
324
|
+
"""Request to read a file from the VFS."""
|
|
325
|
+
path: str = Field(description="Path of the file to read")
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
class DeleteFileRequest(BaseModel):
|
|
329
|
+
"""Request to delete a file from the VFS."""
|
|
330
|
+
path: str = Field(description="Path of the file to delete")
|
|
331
|
+
agent_id: str = Field(description="ID of the agent deleting the file")
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
class ListFilesRequest(BaseModel):
|
|
335
|
+
"""Request to list files in the VFS."""
|
|
336
|
+
path: str = Field(default="/", description="Path to list files from")
|
|
337
|
+
recursive: bool = Field(default=False, description="Whether to list files recursively")
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
class FileResponse(BaseModel):
|
|
341
|
+
"""Response containing file information."""
|
|
342
|
+
path: str
|
|
343
|
+
file_type: FileType
|
|
344
|
+
content: str
|
|
345
|
+
metadata: Dict[str, Any]
|
|
346
|
+
created_by: str
|
|
347
|
+
created_at: str
|
|
348
|
+
modified_by: str
|
|
349
|
+
modified_at: str
|
|
350
|
+
edit_count: int = Field(description="Number of edits made to this file")
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
class FileListResponse(BaseModel):
|
|
354
|
+
"""Response containing a list of files."""
|
|
355
|
+
files: List[FileResponse]
|
|
356
|
+
total_count: int
|