unrealon 1.0.9__py3-none-any.whl → 1.1.1__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.
- unrealon/__init__.py +23 -21
- unrealon-1.1.1.dist-info/METADATA +722 -0
- unrealon-1.1.1.dist-info/RECORD +82 -0
- {unrealon-1.0.9.dist-info → unrealon-1.1.1.dist-info}/WHEEL +1 -1
- unrealon-1.1.1.dist-info/entry_points.txt +9 -0
- {unrealon-1.0.9.dist-info → unrealon-1.1.1.dist-info/licenses}/LICENSE +1 -1
- unrealon_bridge/__init__.py +114 -0
- unrealon_bridge/cli.py +316 -0
- unrealon_bridge/client/__init__.py +93 -0
- unrealon_bridge/client/base.py +78 -0
- unrealon_bridge/client/commands.py +89 -0
- unrealon_bridge/client/connection.py +90 -0
- unrealon_bridge/client/events.py +65 -0
- unrealon_bridge/client/health.py +38 -0
- unrealon_bridge/client/html_parser.py +146 -0
- unrealon_bridge/client/logging.py +139 -0
- unrealon_bridge/client/proxy.py +70 -0
- unrealon_bridge/client/scheduler.py +450 -0
- unrealon_bridge/client/session.py +70 -0
- unrealon_bridge/configs/__init__.py +14 -0
- unrealon_bridge/configs/bridge_config.py +212 -0
- unrealon_bridge/configs/bridge_config.yaml +39 -0
- unrealon_bridge/models/__init__.py +138 -0
- unrealon_bridge/models/base.py +28 -0
- unrealon_bridge/models/command.py +41 -0
- unrealon_bridge/models/events.py +40 -0
- unrealon_bridge/models/html_parser.py +79 -0
- unrealon_bridge/models/logging.py +55 -0
- unrealon_bridge/models/parser.py +63 -0
- unrealon_bridge/models/proxy.py +41 -0
- unrealon_bridge/models/requests.py +95 -0
- unrealon_bridge/models/responses.py +88 -0
- unrealon_bridge/models/scheduler.py +592 -0
- unrealon_bridge/models/session.py +28 -0
- unrealon_bridge/server/__init__.py +91 -0
- unrealon_bridge/server/base.py +171 -0
- unrealon_bridge/server/handlers/__init__.py +23 -0
- unrealon_bridge/server/handlers/command.py +110 -0
- unrealon_bridge/server/handlers/html_parser.py +139 -0
- unrealon_bridge/server/handlers/logging.py +95 -0
- unrealon_bridge/server/handlers/parser.py +95 -0
- unrealon_bridge/server/handlers/proxy.py +75 -0
- unrealon_bridge/server/handlers/scheduler.py +545 -0
- unrealon_bridge/server/handlers/session.py +66 -0
- unrealon_browser/__init__.py +61 -18
- unrealon_browser/{src/cli → cli}/browser_cli.py +6 -13
- unrealon_browser/{src/cli → cli}/cookies_cli.py +5 -1
- unrealon_browser/{src/core → core}/browser_manager.py +2 -2
- unrealon_browser/{src/managers → managers}/captcha.py +1 -1
- unrealon_browser/{src/managers → managers}/cookies.py +1 -1
- unrealon_browser/managers/logger_bridge.py +231 -0
- unrealon_browser/{src/managers → managers}/profile.py +1 -1
- unrealon_driver/__init__.py +73 -19
- unrealon_driver/browser/__init__.py +8 -0
- unrealon_driver/browser/config.py +74 -0
- unrealon_driver/browser/manager.py +416 -0
- unrealon_driver/exceptions.py +28 -0
- unrealon_driver/parser/__init__.py +55 -0
- unrealon_driver/parser/cli_manager.py +141 -0
- unrealon_driver/parser/daemon_manager.py +227 -0
- unrealon_driver/parser/managers/__init__.py +46 -0
- unrealon_driver/parser/managers/browser.py +51 -0
- unrealon_driver/parser/managers/config.py +281 -0
- unrealon_driver/parser/managers/error.py +412 -0
- unrealon_driver/parser/managers/html.py +732 -0
- unrealon_driver/parser/managers/logging.py +609 -0
- unrealon_driver/parser/managers/result.py +321 -0
- unrealon_driver/parser/parser_manager.py +628 -0
- unrealon/sdk_config.py +0 -88
- unrealon-1.0.9.dist-info/METADATA +0 -810
- unrealon-1.0.9.dist-info/RECORD +0 -246
- unrealon_browser/pyproject.toml +0 -182
- unrealon_browser/src/__init__.py +0 -62
- unrealon_browser/src/managers/logger_bridge.py +0 -395
- unrealon_driver/README.md +0 -204
- unrealon_driver/pyproject.toml +0 -187
- unrealon_driver/src/__init__.py +0 -90
- unrealon_driver/src/cli/__init__.py +0 -10
- unrealon_driver/src/cli/main.py +0 -66
- unrealon_driver/src/cli/simple.py +0 -510
- unrealon_driver/src/config/__init__.py +0 -11
- unrealon_driver/src/config/auto_config.py +0 -478
- unrealon_driver/src/core/__init__.py +0 -18
- unrealon_driver/src/core/exceptions.py +0 -289
- unrealon_driver/src/core/parser.py +0 -638
- unrealon_driver/src/dto/__init__.py +0 -66
- unrealon_driver/src/dto/cli.py +0 -119
- unrealon_driver/src/dto/config.py +0 -18
- unrealon_driver/src/dto/events.py +0 -237
- unrealon_driver/src/dto/execution.py +0 -313
- unrealon_driver/src/dto/services.py +0 -311
- unrealon_driver/src/execution/__init__.py +0 -23
- unrealon_driver/src/execution/daemon_mode.py +0 -317
- unrealon_driver/src/execution/interactive_mode.py +0 -88
- unrealon_driver/src/execution/modes.py +0 -45
- unrealon_driver/src/execution/scheduled_mode.py +0 -209
- unrealon_driver/src/execution/test_mode.py +0 -250
- unrealon_driver/src/logging/__init__.py +0 -24
- unrealon_driver/src/logging/driver_logger.py +0 -512
- unrealon_driver/src/services/__init__.py +0 -24
- unrealon_driver/src/services/browser_service.py +0 -726
- unrealon_driver/src/services/llm/__init__.py +0 -15
- unrealon_driver/src/services/llm/browser_llm_service.py +0 -363
- unrealon_driver/src/services/llm/llm.py +0 -195
- unrealon_driver/src/services/logger_service.py +0 -232
- unrealon_driver/src/services/metrics_service.py +0 -185
- unrealon_driver/src/services/scheduler_service.py +0 -489
- unrealon_driver/src/services/websocket_service.py +0 -362
- unrealon_driver/src/utils/__init__.py +0 -16
- unrealon_driver/src/utils/service_factory.py +0 -317
- unrealon_driver/src/utils/time_formatter.py +0 -338
- unrealon_llm/README.md +0 -44
- unrealon_llm/__init__.py +0 -26
- unrealon_llm/pyproject.toml +0 -154
- unrealon_llm/src/__init__.py +0 -228
- unrealon_llm/src/cli/__init__.py +0 -0
- unrealon_llm/src/core/__init__.py +0 -11
- unrealon_llm/src/core/smart_client.py +0 -438
- unrealon_llm/src/dto/__init__.py +0 -155
- unrealon_llm/src/dto/models/__init__.py +0 -0
- unrealon_llm/src/dto/models/config.py +0 -343
- unrealon_llm/src/dto/models/core.py +0 -328
- unrealon_llm/src/dto/models/enums.py +0 -123
- unrealon_llm/src/dto/models/html_analysis.py +0 -345
- unrealon_llm/src/dto/models/statistics.py +0 -473
- unrealon_llm/src/dto/models/translation.py +0 -383
- unrealon_llm/src/dto/models/type_conversion.py +0 -462
- unrealon_llm/src/dto/schemas/__init__.py +0 -0
- unrealon_llm/src/exceptions.py +0 -392
- unrealon_llm/src/llm_config/__init__.py +0 -20
- unrealon_llm/src/llm_config/logging_config.py +0 -178
- unrealon_llm/src/llm_logging/__init__.py +0 -42
- unrealon_llm/src/llm_logging/llm_events.py +0 -107
- unrealon_llm/src/llm_logging/llm_logger.py +0 -466
- unrealon_llm/src/managers/__init__.py +0 -15
- unrealon_llm/src/managers/cache_manager.py +0 -67
- unrealon_llm/src/managers/cost_manager.py +0 -107
- unrealon_llm/src/managers/request_manager.py +0 -298
- unrealon_llm/src/modules/__init__.py +0 -0
- unrealon_llm/src/modules/html_processor/__init__.py +0 -25
- unrealon_llm/src/modules/html_processor/base_processor.py +0 -415
- unrealon_llm/src/modules/html_processor/details_processor.py +0 -85
- unrealon_llm/src/modules/html_processor/listing_processor.py +0 -91
- unrealon_llm/src/modules/html_processor/models/__init__.py +0 -20
- unrealon_llm/src/modules/html_processor/models/processing_models.py +0 -40
- unrealon_llm/src/modules/html_processor/models/universal_model.py +0 -56
- unrealon_llm/src/modules/html_processor/processor.py +0 -102
- unrealon_llm/src/modules/llm/__init__.py +0 -0
- unrealon_llm/src/modules/translator/__init__.py +0 -0
- unrealon_llm/src/provider.py +0 -116
- unrealon_llm/src/utils/__init__.py +0 -95
- unrealon_llm/src/utils/common.py +0 -64
- unrealon_llm/src/utils/data_extractor.py +0 -188
- unrealon_llm/src/utils/html_cleaner.py +0 -767
- unrealon_llm/src/utils/language_detector.py +0 -308
- unrealon_llm/src/utils/models_cache.py +0 -592
- unrealon_llm/src/utils/smart_counter.py +0 -229
- unrealon_llm/src/utils/token_counter.py +0 -189
- unrealon_sdk/README.md +0 -25
- unrealon_sdk/__init__.py +0 -30
- unrealon_sdk/pyproject.toml +0 -231
- unrealon_sdk/src/__init__.py +0 -150
- unrealon_sdk/src/cli/__init__.py +0 -12
- unrealon_sdk/src/cli/commands/__init__.py +0 -22
- unrealon_sdk/src/cli/commands/benchmark.py +0 -42
- unrealon_sdk/src/cli/commands/diagnostics.py +0 -573
- unrealon_sdk/src/cli/commands/health.py +0 -46
- unrealon_sdk/src/cli/commands/integration.py +0 -498
- unrealon_sdk/src/cli/commands/reports.py +0 -43
- unrealon_sdk/src/cli/commands/security.py +0 -36
- unrealon_sdk/src/cli/commands/server.py +0 -483
- unrealon_sdk/src/cli/commands/servers.py +0 -56
- unrealon_sdk/src/cli/commands/tests.py +0 -55
- unrealon_sdk/src/cli/main.py +0 -126
- unrealon_sdk/src/cli/utils/reporter.py +0 -519
- unrealon_sdk/src/clients/openapi.yaml +0 -3347
- unrealon_sdk/src/clients/python_http/__init__.py +0 -3
- unrealon_sdk/src/clients/python_http/api_config.py +0 -228
- unrealon_sdk/src/clients/python_http/models/BaseModel.py +0 -12
- unrealon_sdk/src/clients/python_http/models/BroadcastDeliveryStats.py +0 -33
- unrealon_sdk/src/clients/python_http/models/BroadcastMessage.py +0 -17
- unrealon_sdk/src/clients/python_http/models/BroadcastMessageRequest.py +0 -35
- unrealon_sdk/src/clients/python_http/models/BroadcastPriority.py +0 -10
- unrealon_sdk/src/clients/python_http/models/BroadcastResponse.py +0 -21
- unrealon_sdk/src/clients/python_http/models/BroadcastResultResponse.py +0 -33
- unrealon_sdk/src/clients/python_http/models/BroadcastTarget.py +0 -11
- unrealon_sdk/src/clients/python_http/models/ConnectionStats.py +0 -27
- unrealon_sdk/src/clients/python_http/models/ConnectionsResponse.py +0 -21
- unrealon_sdk/src/clients/python_http/models/DeveloperMessageResponse.py +0 -23
- unrealon_sdk/src/clients/python_http/models/ErrorResponse.py +0 -25
- unrealon_sdk/src/clients/python_http/models/HTTPValidationError.py +0 -16
- unrealon_sdk/src/clients/python_http/models/HealthResponse.py +0 -23
- unrealon_sdk/src/clients/python_http/models/HealthStatus.py +0 -33
- unrealon_sdk/src/clients/python_http/models/LogLevel.py +0 -10
- unrealon_sdk/src/clients/python_http/models/LoggingRequest.py +0 -27
- unrealon_sdk/src/clients/python_http/models/LoggingResponse.py +0 -23
- unrealon_sdk/src/clients/python_http/models/MaintenanceMode.py +0 -9
- unrealon_sdk/src/clients/python_http/models/MaintenanceModeRequest.py +0 -33
- unrealon_sdk/src/clients/python_http/models/MaintenanceStatusResponse.py +0 -39
- unrealon_sdk/src/clients/python_http/models/ParserCommandRequest.py +0 -25
- unrealon_sdk/src/clients/python_http/models/ParserMessageResponse.py +0 -21
- unrealon_sdk/src/clients/python_http/models/ParserRegistrationRequest.py +0 -28
- unrealon_sdk/src/clients/python_http/models/ParserRegistrationResponse.py +0 -25
- unrealon_sdk/src/clients/python_http/models/ParserType.py +0 -10
- unrealon_sdk/src/clients/python_http/models/ProxyBlockRequest.py +0 -19
- unrealon_sdk/src/clients/python_http/models/ProxyEndpointResponse.py +0 -20
- unrealon_sdk/src/clients/python_http/models/ProxyListResponse.py +0 -19
- unrealon_sdk/src/clients/python_http/models/ProxyProvider.py +0 -10
- unrealon_sdk/src/clients/python_http/models/ProxyPurchaseRequest.py +0 -25
- unrealon_sdk/src/clients/python_http/models/ProxyResponse.py +0 -47
- unrealon_sdk/src/clients/python_http/models/ProxyRotationRequest.py +0 -23
- unrealon_sdk/src/clients/python_http/models/ProxyStatus.py +0 -10
- unrealon_sdk/src/clients/python_http/models/ProxyUsageRequest.py +0 -19
- unrealon_sdk/src/clients/python_http/models/ProxyUsageStatsResponse.py +0 -26
- unrealon_sdk/src/clients/python_http/models/ServiceRegistrationDto.py +0 -23
- unrealon_sdk/src/clients/python_http/models/ServiceStatsResponse.py +0 -31
- unrealon_sdk/src/clients/python_http/models/SessionStartRequest.py +0 -23
- unrealon_sdk/src/clients/python_http/models/SuccessResponse.py +0 -25
- unrealon_sdk/src/clients/python_http/models/SystemNotificationResponse.py +0 -23
- unrealon_sdk/src/clients/python_http/models/ValidationError.py +0 -18
- unrealon_sdk/src/clients/python_http/models/ValidationErrorResponse.py +0 -21
- unrealon_sdk/src/clients/python_http/models/WebSocketMetrics.py +0 -21
- unrealon_sdk/src/clients/python_http/models/__init__.py +0 -44
- unrealon_sdk/src/clients/python_http/services/None_service.py +0 -35
- unrealon_sdk/src/clients/python_http/services/ParserManagement_service.py +0 -190
- unrealon_sdk/src/clients/python_http/services/ProxyManagement_service.py +0 -289
- unrealon_sdk/src/clients/python_http/services/SocketLogging_service.py +0 -187
- unrealon_sdk/src/clients/python_http/services/SystemHealth_service.py +0 -119
- unrealon_sdk/src/clients/python_http/services/WebSocketAPI_service.py +0 -198
- unrealon_sdk/src/clients/python_http/services/__init__.py +0 -0
- unrealon_sdk/src/clients/python_http/services/admin_service.py +0 -125
- unrealon_sdk/src/clients/python_http/services/async_None_service.py +0 -35
- unrealon_sdk/src/clients/python_http/services/async_ParserManagement_service.py +0 -190
- unrealon_sdk/src/clients/python_http/services/async_ProxyManagement_service.py +0 -289
- unrealon_sdk/src/clients/python_http/services/async_SocketLogging_service.py +0 -189
- unrealon_sdk/src/clients/python_http/services/async_SystemHealth_service.py +0 -123
- unrealon_sdk/src/clients/python_http/services/async_WebSocketAPI_service.py +0 -200
- unrealon_sdk/src/clients/python_http/services/async_admin_service.py +0 -125
- unrealon_sdk/src/clients/python_websocket/__init__.py +0 -28
- unrealon_sdk/src/clients/python_websocket/client.py +0 -490
- unrealon_sdk/src/clients/python_websocket/events.py +0 -732
- unrealon_sdk/src/clients/python_websocket/example.py +0 -136
- unrealon_sdk/src/clients/python_websocket/types.py +0 -871
- unrealon_sdk/src/core/__init__.py +0 -64
- unrealon_sdk/src/core/client.py +0 -556
- unrealon_sdk/src/core/config.py +0 -465
- unrealon_sdk/src/core/exceptions.py +0 -239
- unrealon_sdk/src/core/metadata.py +0 -191
- unrealon_sdk/src/core/models.py +0 -142
- unrealon_sdk/src/core/types.py +0 -68
- unrealon_sdk/src/dto/__init__.py +0 -268
- unrealon_sdk/src/dto/authentication.py +0 -108
- unrealon_sdk/src/dto/cache.py +0 -208
- unrealon_sdk/src/dto/common.py +0 -19
- unrealon_sdk/src/dto/concurrency.py +0 -393
- unrealon_sdk/src/dto/events.py +0 -108
- unrealon_sdk/src/dto/health.py +0 -339
- unrealon_sdk/src/dto/load_balancing.py +0 -336
- unrealon_sdk/src/dto/logging.py +0 -230
- unrealon_sdk/src/dto/performance.py +0 -165
- unrealon_sdk/src/dto/rate_limiting.py +0 -295
- unrealon_sdk/src/dto/resource_pooling.py +0 -128
- unrealon_sdk/src/dto/structured_logging.py +0 -112
- unrealon_sdk/src/dto/task_scheduling.py +0 -121
- unrealon_sdk/src/dto/websocket.py +0 -55
- unrealon_sdk/src/enterprise/__init__.py +0 -59
- unrealon_sdk/src/enterprise/authentication.py +0 -401
- unrealon_sdk/src/enterprise/cache_manager.py +0 -578
- unrealon_sdk/src/enterprise/error_recovery.py +0 -494
- unrealon_sdk/src/enterprise/event_system.py +0 -549
- unrealon_sdk/src/enterprise/health_monitor.py +0 -747
- unrealon_sdk/src/enterprise/load_balancer.py +0 -964
- unrealon_sdk/src/enterprise/logging/__init__.py +0 -68
- unrealon_sdk/src/enterprise/logging/cleanup.py +0 -156
- unrealon_sdk/src/enterprise/logging/development.py +0 -744
- unrealon_sdk/src/enterprise/logging/service.py +0 -410
- unrealon_sdk/src/enterprise/multithreading_manager.py +0 -853
- unrealon_sdk/src/enterprise/performance_monitor.py +0 -539
- unrealon_sdk/src/enterprise/proxy_manager.py +0 -696
- unrealon_sdk/src/enterprise/rate_limiter.py +0 -652
- unrealon_sdk/src/enterprise/resource_pool.py +0 -763
- unrealon_sdk/src/enterprise/task_scheduler.py +0 -709
- unrealon_sdk/src/internal/__init__.py +0 -10
- unrealon_sdk/src/internal/command_router.py +0 -497
- unrealon_sdk/src/internal/connection_manager.py +0 -397
- unrealon_sdk/src/internal/http_client.py +0 -446
- unrealon_sdk/src/internal/websocket_client.py +0 -420
- unrealon_sdk/src/provider.py +0 -471
- unrealon_sdk/src/utils.py +0 -234
- /unrealon_browser/{src/cli → cli}/__init__.py +0 -0
- /unrealon_browser/{src/cli → cli}/interactive_mode.py +0 -0
- /unrealon_browser/{src/cli → cli}/main.py +0 -0
- /unrealon_browser/{src/core → core}/__init__.py +0 -0
- /unrealon_browser/{src/dto → dto}/__init__.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/config.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/core.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/dataclasses.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/detection.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/enums.py +0 -0
- /unrealon_browser/{src/dto → dto}/models/statistics.py +0 -0
- /unrealon_browser/{src/managers → managers}/__init__.py +0 -0
- /unrealon_browser/{src/managers → managers}/stealth.py +0 -0
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
LLM DTOs - HTML Analysis Models
|
|
3
|
-
Data models for HTML analysis and selector generation
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from typing import Any, Dict, List, Optional
|
|
7
|
-
|
|
8
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
9
|
-
|
|
10
|
-
from .enums import PatternType, SelectorType
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class DetectedPattern(BaseModel):
|
|
14
|
-
"""HTML pattern detected by AI analysis"""
|
|
15
|
-
|
|
16
|
-
model_config = ConfigDict(
|
|
17
|
-
title="Detected Pattern",
|
|
18
|
-
description="HTML pattern identified by AI analysis",
|
|
19
|
-
validate_assignment=True,
|
|
20
|
-
extra="forbid",
|
|
21
|
-
json_schema_extra={
|
|
22
|
-
"example": {
|
|
23
|
-
"type": "product_title",
|
|
24
|
-
"css_selector": ".product-title",
|
|
25
|
-
"confidence": 0.95,
|
|
26
|
-
"element_count": 1
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
type: PatternType = Field(..., description="Pattern type")
|
|
32
|
-
css_selector: str = Field(
|
|
33
|
-
...,
|
|
34
|
-
min_length=1,
|
|
35
|
-
description="CSS selector"
|
|
36
|
-
)
|
|
37
|
-
xpath: Optional[str] = Field(None, description="XPath expression")
|
|
38
|
-
confidence: float = Field(
|
|
39
|
-
...,
|
|
40
|
-
ge=0,
|
|
41
|
-
le=1,
|
|
42
|
-
description="Detection confidence"
|
|
43
|
-
)
|
|
44
|
-
|
|
45
|
-
# Pattern details
|
|
46
|
-
element_count: int = Field(
|
|
47
|
-
...,
|
|
48
|
-
ge=0,
|
|
49
|
-
description="Number of matching elements"
|
|
50
|
-
)
|
|
51
|
-
attributes_used: List[str] = Field(
|
|
52
|
-
default_factory=list,
|
|
53
|
-
description="HTML attributes used"
|
|
54
|
-
)
|
|
55
|
-
semantic_description: str = Field(
|
|
56
|
-
...,
|
|
57
|
-
description="Human-readable description"
|
|
58
|
-
)
|
|
59
|
-
|
|
60
|
-
# Fallback selectors
|
|
61
|
-
fallback_selectors: List[str] = Field(
|
|
62
|
-
default_factory=list,
|
|
63
|
-
description="Alternative selectors"
|
|
64
|
-
)
|
|
65
|
-
robustness_score: float = Field(
|
|
66
|
-
...,
|
|
67
|
-
ge=0,
|
|
68
|
-
le=1,
|
|
69
|
-
description="Selector robustness"
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
class SelectorInfo(BaseModel):
|
|
74
|
-
"""Information about generated selector"""
|
|
75
|
-
|
|
76
|
-
model_config = ConfigDict(
|
|
77
|
-
title="Selector Info",
|
|
78
|
-
description="Detailed information about generated CSS selector",
|
|
79
|
-
validate_assignment=True,
|
|
80
|
-
extra="forbid"
|
|
81
|
-
)
|
|
82
|
-
|
|
83
|
-
css_selector: str = Field(
|
|
84
|
-
...,
|
|
85
|
-
min_length=1,
|
|
86
|
-
description="Primary CSS selector"
|
|
87
|
-
)
|
|
88
|
-
xpath: Optional[str] = Field(None, description="XPath equivalent")
|
|
89
|
-
confidence: float = Field(
|
|
90
|
-
...,
|
|
91
|
-
ge=0,
|
|
92
|
-
le=1,
|
|
93
|
-
description="Selector confidence"
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
# Validation results
|
|
97
|
-
is_unique: bool = Field(..., description="Selector matches unique element")
|
|
98
|
-
match_count: int = Field(
|
|
99
|
-
...,
|
|
100
|
-
ge=0,
|
|
101
|
-
description="Number of elements matched"
|
|
102
|
-
)
|
|
103
|
-
|
|
104
|
-
# Performance metrics
|
|
105
|
-
selection_speed_ms: Optional[float] = Field(
|
|
106
|
-
None,
|
|
107
|
-
ge=0,
|
|
108
|
-
description="Selection speed"
|
|
109
|
-
)
|
|
110
|
-
robustness_score: float = Field(
|
|
111
|
-
...,
|
|
112
|
-
ge=0,
|
|
113
|
-
le=1,
|
|
114
|
-
description="Robustness against changes"
|
|
115
|
-
)
|
|
116
|
-
|
|
117
|
-
# Alternatives
|
|
118
|
-
fallback_selectors: List[str] = Field(
|
|
119
|
-
default_factory=list,
|
|
120
|
-
description="Fallback options"
|
|
121
|
-
)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
class HTMLAnalysisRequest(BaseModel):
|
|
125
|
-
"""Request for HTML analysis"""
|
|
126
|
-
|
|
127
|
-
model_config = ConfigDict(
|
|
128
|
-
title="HTML Analysis Request",
|
|
129
|
-
description="Request configuration for HTML analysis",
|
|
130
|
-
validate_assignment=True,
|
|
131
|
-
extra="forbid"
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
html_content: str = Field(
|
|
135
|
-
...,
|
|
136
|
-
min_length=10,
|
|
137
|
-
description="HTML content to analyze"
|
|
138
|
-
)
|
|
139
|
-
target_elements: List[str] = Field(
|
|
140
|
-
...,
|
|
141
|
-
min_length=1,
|
|
142
|
-
description="Target elements to find"
|
|
143
|
-
)
|
|
144
|
-
page_context: Optional[str] = Field(
|
|
145
|
-
None,
|
|
146
|
-
description="Page context hint (e.g., 'e-commerce', 'news')"
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
# Analysis options
|
|
150
|
-
optimization_level: str = Field(
|
|
151
|
-
default="balanced",
|
|
152
|
-
pattern=r"^(speed|balanced|robust)$",
|
|
153
|
-
description="Analysis optimization level"
|
|
154
|
-
)
|
|
155
|
-
max_tokens: Optional[int] = Field(
|
|
156
|
-
None,
|
|
157
|
-
ge=100,
|
|
158
|
-
le=8000,
|
|
159
|
-
description="Maximum tokens for analysis"
|
|
160
|
-
)
|
|
161
|
-
enable_fallbacks: bool = Field(
|
|
162
|
-
default=True,
|
|
163
|
-
description="Generate fallback selectors"
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
class HTMLAnalysisResult(BaseModel):
|
|
168
|
-
"""Result of HTML analysis operation"""
|
|
169
|
-
|
|
170
|
-
model_config = ConfigDict(
|
|
171
|
-
title="HTML Analysis Result",
|
|
172
|
-
description="Complete result of HTML analysis with detected patterns",
|
|
173
|
-
validate_assignment=True,
|
|
174
|
-
extra="forbid"
|
|
175
|
-
)
|
|
176
|
-
|
|
177
|
-
# Analysis metadata
|
|
178
|
-
html_size_bytes: int = Field(
|
|
179
|
-
...,
|
|
180
|
-
ge=0,
|
|
181
|
-
description="Original HTML size"
|
|
182
|
-
)
|
|
183
|
-
processing_time_seconds: float = Field(
|
|
184
|
-
...,
|
|
185
|
-
ge=0,
|
|
186
|
-
description="Analysis processing time"
|
|
187
|
-
)
|
|
188
|
-
model_used: str = Field(..., description="LLM model used for analysis")
|
|
189
|
-
|
|
190
|
-
# Detected patterns
|
|
191
|
-
detected_patterns: List[DetectedPattern] = Field(
|
|
192
|
-
...,
|
|
193
|
-
description="All detected patterns"
|
|
194
|
-
)
|
|
195
|
-
target_elements_found: Dict[str, DetectedPattern] = Field(
|
|
196
|
-
...,
|
|
197
|
-
description="Requested target elements"
|
|
198
|
-
)
|
|
199
|
-
|
|
200
|
-
# Overall metrics
|
|
201
|
-
overall_confidence: float = Field(
|
|
202
|
-
...,
|
|
203
|
-
ge=0,
|
|
204
|
-
le=1,
|
|
205
|
-
description="Overall analysis confidence"
|
|
206
|
-
)
|
|
207
|
-
page_complexity_score: float = Field(
|
|
208
|
-
...,
|
|
209
|
-
ge=0,
|
|
210
|
-
le=1,
|
|
211
|
-
description="Page complexity (0=simple, 1=complex)"
|
|
212
|
-
)
|
|
213
|
-
|
|
214
|
-
# Generated selectors
|
|
215
|
-
generated_selectors: Dict[str, SelectorInfo] = Field(
|
|
216
|
-
default_factory=dict,
|
|
217
|
-
description="Generated selectors"
|
|
218
|
-
)
|
|
219
|
-
|
|
220
|
-
# Cost and performance
|
|
221
|
-
tokens_used: Optional[int] = Field(
|
|
222
|
-
None,
|
|
223
|
-
ge=0,
|
|
224
|
-
description="Tokens consumed"
|
|
225
|
-
)
|
|
226
|
-
cost_usd: Optional[float] = Field(
|
|
227
|
-
None,
|
|
228
|
-
ge=0,
|
|
229
|
-
description="Analysis cost"
|
|
230
|
-
)
|
|
231
|
-
|
|
232
|
-
# Extracted data
|
|
233
|
-
extracted_js_data: Optional[Dict[str, Any]] = Field(
|
|
234
|
-
None,
|
|
235
|
-
description="JavaScript data extracted from HTML"
|
|
236
|
-
)
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
class SelectorValidationResult(BaseModel):
|
|
240
|
-
"""Result of selector validation against HTML"""
|
|
241
|
-
|
|
242
|
-
model_config = ConfigDict(
|
|
243
|
-
title="Selector Validation Result",
|
|
244
|
-
description="Result of testing selector against HTML content",
|
|
245
|
-
validate_assignment=True,
|
|
246
|
-
extra="forbid"
|
|
247
|
-
)
|
|
248
|
-
|
|
249
|
-
selector: str = Field(..., description="Validated selector")
|
|
250
|
-
is_valid: bool = Field(..., description="Validation result")
|
|
251
|
-
match_count: int = Field(
|
|
252
|
-
...,
|
|
253
|
-
ge=0,
|
|
254
|
-
description="Number of matched elements"
|
|
255
|
-
)
|
|
256
|
-
|
|
257
|
-
# Validation details
|
|
258
|
-
matched_elements: List[Dict[str, Any]] = Field(
|
|
259
|
-
default_factory=list,
|
|
260
|
-
description="Details of matched elements"
|
|
261
|
-
)
|
|
262
|
-
error_message: Optional[str] = Field(
|
|
263
|
-
None,
|
|
264
|
-
description="Error message if validation failed"
|
|
265
|
-
)
|
|
266
|
-
|
|
267
|
-
# Performance metrics
|
|
268
|
-
selection_time_ms: Optional[float] = Field(
|
|
269
|
-
None,
|
|
270
|
-
ge=0,
|
|
271
|
-
description="Time taken to select elements"
|
|
272
|
-
)
|
|
273
|
-
stability_score: Optional[float] = Field(
|
|
274
|
-
None,
|
|
275
|
-
ge=0,
|
|
276
|
-
le=1,
|
|
277
|
-
description="Stability score of the selector"
|
|
278
|
-
)
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
class CompleteAnalysisResult(BaseModel):
|
|
282
|
-
"""Complete analysis result with selectors and validation"""
|
|
283
|
-
|
|
284
|
-
model_config = ConfigDict(
|
|
285
|
-
title="Complete Analysis Result",
|
|
286
|
-
description="Complete HTML analysis with generated and validated selectors",
|
|
287
|
-
validate_assignment=True,
|
|
288
|
-
extra="forbid"
|
|
289
|
-
)
|
|
290
|
-
|
|
291
|
-
# Analysis results
|
|
292
|
-
analysis: HTMLAnalysisResult = Field(
|
|
293
|
-
...,
|
|
294
|
-
description="HTML analysis results"
|
|
295
|
-
)
|
|
296
|
-
|
|
297
|
-
# Generated selectors
|
|
298
|
-
selectors: Dict[str, SelectorInfo] = Field(
|
|
299
|
-
...,
|
|
300
|
-
description="Generated selectors by element name"
|
|
301
|
-
)
|
|
302
|
-
|
|
303
|
-
# Validation results
|
|
304
|
-
validation_results: Dict[str, SelectorValidationResult] = Field(
|
|
305
|
-
default_factory=dict,
|
|
306
|
-
description="Validation results for each selector"
|
|
307
|
-
)
|
|
308
|
-
|
|
309
|
-
# Overall metrics
|
|
310
|
-
overall_confidence: float = Field(
|
|
311
|
-
...,
|
|
312
|
-
ge=0,
|
|
313
|
-
le=1,
|
|
314
|
-
description="Overall confidence score"
|
|
315
|
-
)
|
|
316
|
-
success_rate: float = Field(
|
|
317
|
-
...,
|
|
318
|
-
ge=0,
|
|
319
|
-
le=1,
|
|
320
|
-
description="Selector success rate"
|
|
321
|
-
)
|
|
322
|
-
|
|
323
|
-
# Performance and cost
|
|
324
|
-
total_processing_time_seconds: float = Field(
|
|
325
|
-
...,
|
|
326
|
-
ge=0,
|
|
327
|
-
description="Total processing time"
|
|
328
|
-
)
|
|
329
|
-
total_cost_usd: Optional[float] = Field(
|
|
330
|
-
None,
|
|
331
|
-
ge=0,
|
|
332
|
-
description="Total cost"
|
|
333
|
-
)
|
|
334
|
-
|
|
335
|
-
# Quality metrics
|
|
336
|
-
average_robustness_score: Optional[float] = Field(
|
|
337
|
-
None,
|
|
338
|
-
ge=0,
|
|
339
|
-
le=1,
|
|
340
|
-
description="Average robustness of generated selectors"
|
|
341
|
-
)
|
|
342
|
-
recommendation: Optional[str] = Field(
|
|
343
|
-
None,
|
|
344
|
-
description="Recommendation for production use"
|
|
345
|
-
)
|