from synth_ai.task.server import TaskAppConfig, RubricBundle
from synth_ai.task.tracing_utils import (
build_tracer_factory,
resolve_tracing_db_url,
tracing_env_enabled,
)
from synth_ai.tracing_v3.session_tracer import SessionTracer
def build_config() -> TaskAppConfig:
tracing_enabled = tracing_env_enabled(default=True)
tracer_factory = build_tracer_factory(
SessionTracer,
enabled=tracing_enabled,
db_url=resolve_tracing_db_url(),
)
app_state = {"tracing_enabled": tracing_enabled}
if tracer_factory:
app_state["session_tracer_factory"] = tracer_factory
return TaskAppConfig(
app_id="grpo-crafter",
name="Crafter Task App",
description="Supports RL rollouts, tracing, and vendor proxies.",
base_task_info=base_info,
describe_taskset=lambda: describe_taskset(dataset),
provide_task_instances=lambda seeds: provide_instances(dataset, base_info, seeds),
rollout=rollout_executor,
dataset_registry=registry,
rubrics=RubricBundle(outcome=OUTCOME_RUBRIC, events=EVENTS_RUBRIC),
proxy=ProxyConfig(enable_openai=True, enable_groq=True),
app_state=app_state,
)