omx(team): auto-checkpoint worker-1 [1]

This commit is contained in:
bellman
2026-05-15 10:05:41 +09:00
parent 9910d5805e
commit 4a76632f6c
4 changed files with 27 additions and 6 deletions

View File

@@ -3790,6 +3790,7 @@ fn render_mcp_server_report(
format!(" Working directory {}", cwd.display()), format!(" Working directory {}", cwd.display()),
format!(" Name {server_name}"), format!(" Name {server_name}"),
format!(" Scope {}", config_source_label(server.scope)), format!(" Scope {}", config_source_label(server.scope)),
format!(" Required {}", server.required),
format!( format!(
" Transport {}", " Transport {}",
mcp_transport_label(&server.config) mcp_transport_label(&server.config)
@@ -5584,6 +5585,7 @@ mod tests {
"command": "uvx", "command": "uvx",
"args": ["alpha-server"], "args": ["alpha-server"],
"env": {"ALPHA_TOKEN": "secret"}, "env": {"ALPHA_TOKEN": "secret"},
"required": true,
"toolCallTimeoutMs": 1200 "toolCallTimeoutMs": 1200
}, },
"remote": { "remote": {
@@ -5629,6 +5631,7 @@ mod tests {
let show = super::render_mcp_report_for(&loader, &workspace, Some("show alpha")) let show = super::render_mcp_report_for(&loader, &workspace, Some("show alpha"))
.expect("mcp show report should render"); .expect("mcp show report should render");
assert!(show.contains("Name alpha")); assert!(show.contains("Name alpha"));
assert!(show.contains("Required true"));
assert!(show.contains("Command uvx")); assert!(show.contains("Command uvx"));
assert!(show.contains("Args alpha-server")); assert!(show.contains("Args alpha-server"));
assert!(show.contains("Env keys ALPHA_TOKEN")); assert!(show.contains("Env keys ALPHA_TOKEN"));
@@ -5661,6 +5664,7 @@ mod tests {
"command": "uvx", "command": "uvx",
"args": ["alpha-server"], "args": ["alpha-server"],
"env": {"ALPHA_TOKEN": "secret"}, "env": {"ALPHA_TOKEN": "secret"},
"required": true,
"toolCallTimeoutMs": 1200 "toolCallTimeoutMs": 1200
}, },
"remote": { "remote": {
@@ -5697,6 +5701,7 @@ mod tests {
assert_eq!(list["action"], "list"); assert_eq!(list["action"], "list");
assert_eq!(list["configured_servers"], 2); assert_eq!(list["configured_servers"], 2);
assert_eq!(list["servers"][0]["name"], "alpha"); assert_eq!(list["servers"][0]["name"], "alpha");
assert_eq!(list["servers"][0]["required"], true);
assert_eq!(list["servers"][0]["transport"]["id"], "stdio"); assert_eq!(list["servers"][0]["transport"]["id"], "stdio");
assert_eq!(list["servers"][0]["details"]["command"], "uvx"); assert_eq!(list["servers"][0]["details"]["command"], "uvx");
assert_eq!(list["servers"][1]["name"], "remote"); assert_eq!(list["servers"][1]["name"], "remote");
@@ -5712,6 +5717,7 @@ mod tests {
assert_eq!(show["action"], "show"); assert_eq!(show["action"], "show");
assert_eq!(show["found"], true); assert_eq!(show["found"], true);
assert_eq!(show["server"]["name"], "alpha"); assert_eq!(show["server"]["name"], "alpha");
assert_eq!(show["server"]["required"], true);
assert_eq!(show["server"]["details"]["env_keys"][0], "ALPHA_TOKEN"); assert_eq!(show["server"]["details"]["env_keys"][0], "ALPHA_TOKEN");
assert_eq!(show["server"]["details"]["tool_call_timeout_ms"], 1200); assert_eq!(show["server"]["details"]["tool_call_timeout_ms"], 1200);

View File

@@ -1617,7 +1617,8 @@ mod tests {
"stdio-server": { "stdio-server": {
"command": "uvx", "command": "uvx",
"args": ["mcp-server"], "args": ["mcp-server"],
"env": {"TOKEN": "secret"} "env": {"TOKEN": "secret"},
"required": true
}, },
"remote-server": { "remote-server": {
"type": "http", "type": "http",
@@ -1666,6 +1667,7 @@ mod tests {
.get("stdio-server") .get("stdio-server")
.expect("stdio server should exist"); .expect("stdio server should exist");
assert_eq!(stdio_server.scope, ConfigSource::User); assert_eq!(stdio_server.scope, ConfigSource::User);
assert!(stdio_server.required);
assert_eq!(stdio_server.transport(), McpTransport::Stdio); assert_eq!(stdio_server.transport(), McpTransport::Stdio);
let remote_server = loaded let remote_server = loaded
@@ -1673,6 +1675,7 @@ mod tests {
.get("remote-server") .get("remote-server")
.expect("remote server should exist"); .expect("remote server should exist");
assert_eq!(remote_server.scope, ConfigSource::Local); assert_eq!(remote_server.scope, ConfigSource::Local);
assert!(!remote_server.required);
assert_eq!(remote_server.transport(), McpTransport::Ws); assert_eq!(remote_server.transport(), McpTransport::Ws);
match &remote_server.config { match &remote_server.config {
McpServerConfig::Ws(config) => { McpServerConfig::Ws(config) => {

View File

@@ -117,7 +117,7 @@ pub fn scoped_mcp_config_hash(config: &ScopedMcpServerConfig) -> String {
format!("claudeai-proxy|{}|{}", proxy.url, proxy.id) format!("claudeai-proxy|{}|{}", proxy.url, proxy.id)
} }
}; };
stable_hex_hash(&rendered) stable_hex_hash(&format!("required:{}|{rendered}", config.required))
} }
fn render_command_signature(command: &[String]) -> String { fn render_command_signature(command: &[String]) -> String {

View File

@@ -2726,7 +2726,7 @@ mod tests {
( (
"broken".to_string(), "broken".to_string(),
ScopedMcpServerConfig { ScopedMcpServerConfig {
required: false, required: true,
scope: ConfigSource::Local, scope: ConfigSource::Local,
config: McpServerConfig::Stdio(McpStdioServerConfig { config: McpServerConfig::Stdio(McpStdioServerConfig {
command: broken_script_path.display().to_string(), command: broken_script_path.display().to_string(),
@@ -2748,6 +2748,7 @@ mod tests {
); );
assert_eq!(report.failed_servers.len(), 1); assert_eq!(report.failed_servers.len(), 1);
assert_eq!(report.failed_servers[0].server_name, "broken"); assert_eq!(report.failed_servers[0].server_name, "broken");
assert!(report.failed_servers[0].required);
assert_eq!( assert_eq!(
report.failed_servers[0].phase, report.failed_servers[0].phase,
McpLifecyclePhase::InitializeHandshake McpLifecyclePhase::InitializeHandshake
@@ -2768,6 +2769,14 @@ mod tests {
assert_eq!(degraded.working_servers, vec!["alpha".to_string()]); assert_eq!(degraded.working_servers, vec!["alpha".to_string()]);
assert_eq!(degraded.failed_servers.len(), 1); assert_eq!(degraded.failed_servers.len(), 1);
assert_eq!(degraded.failed_servers[0].server_name, "broken"); assert_eq!(degraded.failed_servers[0].server_name, "broken");
assert_eq!(
degraded.failed_servers[0]
.error
.context
.get("required")
.map(String::as_str),
Some("true")
);
assert_eq!( assert_eq!(
degraded.failed_servers[0].phase, degraded.failed_servers[0].phase,
McpLifecyclePhase::InitializeHandshake McpLifecyclePhase::InitializeHandshake
@@ -2803,7 +2812,7 @@ mod tests {
( (
"http".to_string(), "http".to_string(),
ScopedMcpServerConfig { ScopedMcpServerConfig {
required: false, required: true,
scope: ConfigSource::Local, scope: ConfigSource::Local,
config: McpServerConfig::Http(McpRemoteServerConfig { config: McpServerConfig::Http(McpRemoteServerConfig {
url: "https://example.test/mcp".to_string(), url: "https://example.test/mcp".to_string(),
@@ -2842,11 +2851,14 @@ mod tests {
assert_eq!(unsupported.len(), 3); assert_eq!(unsupported.len(), 3);
assert_eq!(unsupported[0].server_name, "http"); assert_eq!(unsupported[0].server_name, "http");
assert!(unsupported[0].required);
assert_eq!(unsupported[1].server_name, "sdk"); assert_eq!(unsupported[1].server_name, "sdk");
assert_eq!(unsupported[2].server_name, "ws"); assert_eq!(unsupported[2].server_name, "ws");
let failed = unsupported_server_failed_server(&unsupported[0]);
assert_eq!(failed.phase, McpLifecyclePhase::ServerRegistration);
assert_eq!( assert_eq!(
unsupported_server_failed_server(&unsupported[0]).phase, failed.error.context.get("required").map(String::as_str),
McpLifecyclePhase::ServerRegistration Some("true")
); );
} }