feat: release 2.1.0 with optional Flash final AI review
Default Flash final review to off and persist the setting across the UI, MCP, SDK and queued tasks. Keep execution separate from test verdicts. Bundle UI fonts and licenses to remove Google Fonts from startup builds. Align backend/frontend versions and document installation and upgrades.
This commit is contained in:
1 parent
b584dae80a
commit
83bcfd54d5
52 files changed
+898
-33
No files matched your search
@@ -119,7 +119,9 @@ async def settle_flash_outcome(
|
||||
)
|
||||
else:
|
||||
result = CaseTestResult(
|
||||
status="inconclusive", reason="已关闭最终检查,未进行测试结果验收。"
|
||||
status="inconclusive",
|
||||
reason="执行完成 · 未做 AI 判定。已关闭 Flash 最终 AI 分析与判定,执行记录和报告仍保留。",
|
||||
verification_skipped=True,
|
||||
)
|
||||
|
||||
outcome = RunOutcome(
|
||||
|
||||
@@ -735,6 +735,10 @@ class MemoryConfig(BaseModel):
|
||||
class FlashProfileConfig(BaseModel):
|
||||
"""Configuration options specific to the ⚡ Flash execution profile (FlashRunner/ReactiveRunner)."""
|
||||
|
||||
final_check_enabled: bool = Field(
|
||||
default=False,
|
||||
description="Run the independent AI analysis and verdict after Flash execution ends.",
|
||||
)
|
||||
max_turns: int = Field(
|
||||
default=0,
|
||||
ge=0,
|
||||
@@ -1017,6 +1021,10 @@ class AgentGlobalConfig(BaseModel):
|
||||
if out_env is not None:
|
||||
data.setdefault("outputter", {})["enabled"] = out_env
|
||||
|
||||
flash_check_env = _parse_bool("ARTEMIS_FLASH_FINAL_CHECK_ENABLED")
|
||||
if flash_check_env is not None:
|
||||
data.setdefault("flash", {})["final_check_enabled"] = flash_check_env
|
||||
|
||||
vid_rec_env = _parse_bool("ARTEMIS_VIDEO_RECORDING_ENABLED") or _parse_bool(
|
||||
"ARTEMIS_WITH_VIDEO_RECORDING_TOOLS"
|
||||
)
|
||||
|
||||
@@ -131,6 +131,7 @@ class Settings(BaseSettings):
|
||||
# Worker-only override, applied after the user's JSON recording defaults.
|
||||
ARTEMIS_TASK_RECORDING_CONFIG: dict = Field(default_factory=dict)
|
||||
ARTEMIS_OUTPUTTER_ENABLED: bool = True
|
||||
ARTEMIS_FLASH_FINAL_CHECK_ENABLED: bool = False
|
||||
ARTEMIS_STEP_SUMMARIZER_ENABLED: bool = True
|
||||
ARTEMIS_SCREENSHOT_LIMIT_ENABLED: bool = True
|
||||
# Consecutive Pro responses without a valid tool call before failing the task.
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
"max_long_edge": 2048
|
||||
},
|
||||
"flash": {
|
||||
"final_check_enabled": "${env:ARTEMIS_FLASH_FINAL_CHECK_ENABLED:-false}",
|
||||
"max_turns": 0,
|
||||
"explorer_mode": "flash",
|
||||
"step_summarizer": {
|
||||
|
||||
@@ -5,11 +5,16 @@ from pathlib import Path
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, Field, ValidationError
|
||||
from pydantic.json_schema import SkipJsonSchema
|
||||
|
||||
from artemis.config import TRACES_PATH
|
||||
|
||||
|
||||
class CaseTestResult(BaseModel):
|
||||
# Host metadata, not part of the model's verdict schema. Old results omit it.
|
||||
verification_skipped: SkipJsonSchema[bool] = Field(
|
||||
default=False, exclude_if=lambda value: not value
|
||||
)
|
||||
status: Literal["passed", "failed", "inconclusive", "blocked"] = Field(
|
||||
description="Judge the system under test against the user's expectations. A correctly executed inspection that reveals an expectation mismatch is failed, even if the executor completed and reported the mismatch correctly."
|
||||
)
|
||||
|
||||
@@ -1261,7 +1261,11 @@ class Agent:
|
||||
record_video_enabled=self._config.record_video_enabled,
|
||||
disable_checker=self._config.disable_checker,
|
||||
disable_midway_checks=self._config.disable_midway_checks,
|
||||
disable_final_check=self._config.disable_final_check,
|
||||
disable_final_check=self._config.disable_final_check
|
||||
or (
|
||||
(task.request.profile or "").lower() == "flash"
|
||||
and not self._config.flash.final_check_enabled
|
||||
),
|
||||
checker_max_iterations=self._config.checker_max_iterations,
|
||||
final_check_max_attempts=self._config.final_check_max_attempts,
|
||||
checkpoint_max_repairs=self._config.checkpoint_max_repairs,
|
||||
|
||||
Reference in new issue
Block a user