MCPcopy
hub / github.com/HKUDS/OpenHarness / build_runtime

Function build_runtime

src/openharness/ui/runtime.py:205–392  ·  view source on GitHub ↗

Build the shared runtime for an OpenHarness session.

(
    *,
    prompt: str | None = None,
    cwd: str | None = None,
    model: str | None = None,
    max_turns: int | None = None,
    base_url: str | None = None,
    system_prompt: str | None = None,
    api_key: str | None = None,
    api_format: str | None = None,
    active_profile: str | None = None,
    api_client: SupportsStreamingMessages | None = None,
    permission_prompt: PermissionPrompt | None = None,
    ask_user_prompt: AskUserPrompt | None = None,
    restore_messages: list[dict] | None = None,
    restore_tool_metadata: dict[str, object] | None = None,
    enforce_max_turns: bool = True,
    session_backend: SessionBackend | None = None,
    permission_mode: str | None = None,
    extra_skill_dirs: Iterable[str | Path] | None = None,
    extra_plugin_roots: Iterable[str | Path] | None = None,
    memory_backend: MemoryCommandBackend | None = None,
    include_project_memory: bool = True,
)

Source from the content-addressed store, hash-verified

203
204
205async def build_runtime(
206 *,
207 prompt: str | None = None,
208 cwd: str | None = None,
209 model: str | None = None,
210 max_turns: int | None = None,
211 base_url: str | None = None,
212 system_prompt: str | None = None,
213 api_key: str | None = None,
214 api_format: str | None = None,
215 active_profile: str | None = None,
216 api_client: SupportsStreamingMessages | None = None,
217 permission_prompt: PermissionPrompt | None = None,
218 ask_user_prompt: AskUserPrompt | None = None,
219 restore_messages: list[dict] | None = None,
220 restore_tool_metadata: dict[str, object] | None = None,
221 enforce_max_turns: bool = True,
222 session_backend: SessionBackend | None = None,
223 permission_mode: str | None = None,
224 extra_skill_dirs: Iterable[str | Path] | None = None,
225 extra_plugin_roots: Iterable[str | Path] | None = None,
226 memory_backend: MemoryCommandBackend | None = None,
227 include_project_memory: bool = True,
228) -> RuntimeBundle:
229 """Build the shared runtime for an OpenHarness session."""
230 settings_overrides: dict[str, Any] = {
231 "model": model,
232 "max_turns": max_turns,
233 "base_url": base_url,
234 "system_prompt": system_prompt,
235 "api_key": api_key,
236 "api_format": api_format,
237 "active_profile": active_profile,
238 "permission_mode": permission_mode,
239 }
240 settings = load_settings().merge_cli_overrides(**settings_overrides)
241 cwd = str(Path(cwd).expanduser().resolve()) if cwd else str(Path.cwd())
242 normalized_skill_dirs = tuple(str(Path(path).expanduser().resolve()) for path in (extra_skill_dirs or ()))
243 normalized_plugin_roots = tuple(str(Path(path).expanduser().resolve()) for path in (extra_plugin_roots or ()))
244 plugins = load_plugins(settings, cwd, extra_roots=normalized_plugin_roots)
245 if api_client:
246 resolved_api_client = api_client
247 else:
248 resolved_api_client = _resolve_api_client_from_settings(settings)
249 mcp_manager = McpClientManager(load_mcp_server_configs(settings, plugins))
250 await mcp_manager.connect_all()
251 tool_registry = create_default_tool_registry(mcp_manager)
252 # Register plugin-provided tools
253 for plugin in plugins:
254 if plugin.enabled and plugin.tools:
255 for tool in plugin.tools:
256 tool_registry.register(tool)
257 provider = detect_provider(settings)
258 bridge_manager = get_bridge_manager()
259 app_state = AppStateStore(
260 AppState(
261 # Show the effective runtime model (after CLI/env/profile merges),
262 # not profile.last_model which may be stale.

Calls 15

connect_allMethod · 0.95
list_statusesMethod · 0.95
current_registryMethod · 0.95
load_messagesMethod · 0.95
load_settingsFunction · 0.90
load_pluginsFunction · 0.90
McpClientManagerClass · 0.90
load_mcp_server_configsFunction · 0.90
detect_providerFunction · 0.90
get_bridge_managerFunction · 0.90
AppStateStoreClass · 0.90