(
*,
prompt: str | None,
cwd: str,
model: str | None,
max_turns: int | None,
base_url: str | None,
system_prompt: str | None,
append_system_prompt: str | None,
api_key: str | None,
api_format: str | None,
permission_mode: str | None,
)
| 394 | |
| 395 | |
| 396 | def _build_dry_run_preview( |
| 397 | *, |
| 398 | prompt: str | None, |
| 399 | cwd: str, |
| 400 | model: str | None, |
| 401 | max_turns: int | None, |
| 402 | base_url: str | None, |
| 403 | system_prompt: str | None, |
| 404 | append_system_prompt: str | None, |
| 405 | api_key: str | None, |
| 406 | api_format: str | None, |
| 407 | permission_mode: str | None, |
| 408 | ) -> dict[str, object]: |
| 409 | from openharness.api.provider import auth_status, detect_provider |
| 410 | from openharness.commands import create_default_command_registry |
| 411 | from openharness.config import get_config_file_path, load_settings |
| 412 | from openharness.mcp.config import load_mcp_server_configs |
| 413 | from openharness.plugins import load_plugins |
| 414 | from openharness.prompts.context import build_runtime_system_prompt |
| 415 | from openharness.skills import load_skill_registry |
| 416 | from openharness.tools import create_default_tool_registry |
| 417 | from openharness.ui.runtime import _resolve_api_client_from_settings |
| 418 | |
| 419 | resolved_cwd = str(Path(cwd).expanduser().resolve()) |
| 420 | settings = load_settings().merge_cli_overrides( |
| 421 | model=model, |
| 422 | max_turns=max_turns, |
| 423 | base_url=base_url, |
| 424 | system_prompt=system_prompt, |
| 425 | api_key=api_key, |
| 426 | api_format=api_format, |
| 427 | permission_mode=permission_mode, |
| 428 | ) |
| 429 | provider = detect_provider(settings) |
| 430 | auth = auth_status(settings) |
| 431 | profile_name, profile = settings.resolve_profile() |
| 432 | |
| 433 | plugins = load_plugins(settings, resolved_cwd) |
| 434 | plugin_commands = [ |
| 435 | command |
| 436 | for plugin in plugins |
| 437 | if plugin.enabled |
| 438 | for command in plugin.commands |
| 439 | ] |
| 440 | command_registry = create_default_command_registry(plugin_commands=plugin_commands) |
| 441 | command_match = command_registry.lookup(prompt) if prompt else None |
| 442 | skill_registry = load_skill_registry(resolved_cwd, settings=settings) |
| 443 | skills = skill_registry.list_skills() |
| 444 | mcp_servers = load_mcp_server_configs(settings, plugins) |
| 445 | tool_registry = create_default_tool_registry() |
| 446 | tool_schemas = [] |
| 447 | for tool_schema in tool_registry.to_api_schema(): |
| 448 | args_preview = _schema_argument_preview(tool_schema) |
| 449 | tool_schemas.append( |
| 450 | { |
| 451 | "name": str(tool_schema.get("name") or ""), |
| 452 | "description": str(tool_schema.get("description") or ""), |
| 453 | **args_preview, |
no test coverage detected