feat: accept Glas execution overrides
This commit is contained in:
parent
0ebca80254
commit
cf24d34b28
3 changed files with 52 additions and 5 deletions
|
|
@ -50,6 +50,7 @@ class RunResult:
|
|||
persona_source: str
|
||||
session_output: str
|
||||
reason: str = ""
|
||||
model: str | None = None
|
||||
tool_profile: str = ""
|
||||
budget_tokens: int | None = None
|
||||
tokens_spent: int | None = None
|
||||
|
|
@ -79,11 +80,18 @@ def run_task(
|
|||
write_metrics: bool = True,
|
||||
emit_tool_events: bool = False,
|
||||
on_tool_event: Callable[[dict[str, Any]], None] | None = None,
|
||||
model: str | None = None,
|
||||
tool_profile_override: str | None = None,
|
||||
budget_tokens_override: int | None = None,
|
||||
) -> RunResult:
|
||||
try:
|
||||
profile_name, budget_tokens, lane, blueprint = resolve_run_policy(
|
||||
spec.target_repo, spec.agent
|
||||
)
|
||||
if tool_profile_override:
|
||||
profile_name = tool_profile_override
|
||||
if budget_tokens_override is not None:
|
||||
budget_tokens = budget_tokens_override
|
||||
profile = get_profile(profile_name)
|
||||
except UnknownToolProfileError as exc:
|
||||
return RunResult(
|
||||
|
|
@ -96,6 +104,7 @@ def run_task(
|
|||
reason=f"refused: {exc}",
|
||||
tool_profile="",
|
||||
budget_tokens=None,
|
||||
model=model,
|
||||
)
|
||||
except Exception as exc:
|
||||
return RunResult(
|
||||
|
|
@ -108,6 +117,7 @@ def run_task(
|
|||
reason=f"manifest resolution failed: {exc}",
|
||||
tool_profile="",
|
||||
budget_tokens=None,
|
||||
model=model,
|
||||
)
|
||||
|
||||
collected_events: list[dict[str, Any]] = []
|
||||
|
|
@ -127,11 +137,14 @@ def run_task(
|
|||
if adapter is None:
|
||||
from rein_aharness.adapter import AgenticClaudeCodeAdapter
|
||||
|
||||
adapter = AgenticClaudeCodeAdapter(
|
||||
workdir=spec.target_repo,
|
||||
tool_profile=profile,
|
||||
on_tool_event=_on_event if (emit_tool_events or on_tool_event) else None,
|
||||
)
|
||||
adapter_kwargs = {
|
||||
"workdir": spec.target_repo,
|
||||
"tool_profile": profile,
|
||||
"on_tool_event": _on_event if (emit_tool_events or on_tool_event) else None,
|
||||
}
|
||||
if model is not None:
|
||||
adapter_kwargs["model"] = model
|
||||
adapter = AgenticClaudeCodeAdapter(**adapter_kwargs)
|
||||
|
||||
head_before = _git(spec.target_repo, "rev-parse", "HEAD")
|
||||
persona, persona_source = load_persona_bundle(blueprint, spec.target_repo)
|
||||
|
|
@ -156,12 +169,14 @@ def run_task(
|
|||
try:
|
||||
response = adapter.execute_prompt(prompt, config)
|
||||
session_output = response.content
|
||||
resolved_model = response.model
|
||||
session_ok = True
|
||||
reason = ""
|
||||
except Exception as exc: # adapter / budget failures must still be reported
|
||||
session_output = ""
|
||||
session_ok = False
|
||||
reason = f"session failed: {exc}"
|
||||
resolved_model = model
|
||||
execution_time_s = time.monotonic() - started
|
||||
|
||||
head_after = _git(spec.target_repo, "rev-parse", "HEAD")
|
||||
|
|
@ -180,6 +195,7 @@ def run_task(
|
|||
persona_source=persona_source,
|
||||
session_output=session_output,
|
||||
reason=reason,
|
||||
model=resolved_model,
|
||||
tool_profile=profile.name,
|
||||
budget_tokens=budget_tokens,
|
||||
tokens_spent=tokens_spent,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue