1#ifndef YAZE_APP_TEST_AI_VISION_VERIFIER_H
2#define YAZE_APP_TEST_AI_VISION_VERIFIER_H
10#include "absl/status/status.h"
11#include "absl/status/statusor.h"
62 "You are a visual verification assistant for a SNES ROM editor called "
64 "Your task is to analyze screenshots and verify that UI elements, game "
66 "and visual properties match expected conditions. Be precise and "
76 std::function<absl::StatusOr<std::vector<uint8_t>>(
int* width,
int* height)>;
134 absl::StatusOr<VisionVerificationResult>
Verify(
const std::string& condition);
142 const std::vector<std::string>& conditions);
151 const std::string& reference_path,
float tolerance = 0.1f);
158 absl::StatusOr<std::string>
AskAboutState(
const std::string& question);
165 absl::StatusOr<VisionVerificationResult>
VerifyTileAt(
int x,
int y,
166 int expected_tile_id);
172 const std::string& panel_name);
178 const std::string& state_description);
184 int x,
int y,
const std::string& sprite_description);
231 const std::string& image_base64);
233 const std::string& screenshot_path);
256 int max_iterations = 5)
267 absl::Status
Check(
const std::string& condition) {
271 absl::StatusOr<VisionVerificationResult>
Complete() {
AI-powered visual verification for GUI testing.
absl::Status AddIterativeCheck(const std::string &condition)
Add a verification to the iterative session.
absl::StatusOr< std::string > CallVisionModel(const std::string &prompt, const std::string &image_base64)
std::vector< VisionVerificationResult > iterative_results_
void BeginIterativeSession(int max_iterations=5)
Begin an iterative verification session.
AIVisionVerifier(const VisionVerifierConfig &config={})
void SetAIService(cli::AIService *service)
Set the AI service to use for vision verification.
absl::StatusOr< VisionVerificationResult > VerifySpriteAt(int x, int y, const std::string &sprite_description)
Verify sprite rendering at specific location.
absl::StatusOr< std::string > AskAboutState(const std::string &question)
Ask the AI an open-ended question about the current state.
VisionVerificationResult ParseAIResponse(const std::string &response, const std::string &screenshot_path)
absl::StatusOr< VisionVerificationResult > VerifyPanelVisible(const std::string &panel_name)
Verify that a specific editor panel is visible.
void SetConfig(const VisionVerifierConfig &config)
const std::vector< uint8_t > & GetLastScreenshotData() const
Get the last captured screenshot data.
std::vector< std::string > iterative_conditions_
absl::StatusOr< VisionVerificationResult > VerifyConditions(const std::vector< std::string > &conditions)
Verify multiple conditions in a single screenshot.
absl::StatusOr< VisionVerificationResult > VerifyTileAt(int x, int y, int expected_tile_id)
Verify tile at canvas position matches expected tile ID.
VisionVerifierConfig config_
absl::StatusOr< VisionVerificationResult > CompareToReference(const std::string &reference_path, float tolerance=0.1f)
Compare current state against a reference screenshot.
int iterative_max_iterations_
absl::StatusOr< VisionVerificationResult > VerifyEmulatorState(const std::string &state_description)
Verify game state in emulator matches expected values.
ScreenshotCaptureCallback screenshot_callback_
absl::StatusOr< std::string > CaptureAndEncodeScreenshot()
absl::StatusOr< std::string > CaptureScreenshot(const std::string &name)
Capture and save a screenshot.
int iterative_current_iteration_
std::vector< uint8_t > last_screenshot_data_
bool in_iterative_session_
const VisionVerifierConfig & GetConfig() const
absl::StatusOr< VisionVerificationResult > CompleteIterativeSession()
Complete the iterative session and get results.
void SetScreenshotCallback(ScreenshotCaptureCallback callback)
cli::AIService * ai_service_
void ClearScreenshotCache()
Clear cached screenshots to free memory.
absl::StatusOr< VisionVerificationResult > Verify(const std::string &condition)
Verify a single condition using AI vision.
RAII helper for iterative verification sessions.
AIVisionVerifier & verifier_
absl::Status Check(const std::string &condition)
ScopedIterativeVerification(AIVisionVerifier &verifier, int max_iterations=5)
absl::StatusOr< VisionVerificationResult > Complete()
~ScopedIterativeVerification()
std::function< absl::StatusOr< std::vector< uint8_t > >(int *width, int *height)> ScreenshotCaptureCallback
Callback for custom screenshot capture.
Result of an AI vision verification check.
std::string screenshot_path
std::vector< std::string > observations
std::string error_message
std::vector< std::string > discrepancies
std::chrono::milliseconds latency
Configuration for vision verification.
std::string screenshot_dir
float confidence_threshold
std::string system_prompt
std::string model_provider
std::chrono::seconds timeout
bool include_screenshot_in_response
bool save_all_screenshots