fix: fail closed without a repo push transport

This commit is contained in:
冰朔 2026-07-26 18:13:41 +08:00
commit b03619e359
2 changed files with 50 additions and 4 deletions

View file

@ -51,10 +51,11 @@ async function authorizeRepoPush(options, deps = {}) {
const map = await requestJson(fetchImpl, `${baseUrl}/api/navigation-map/read`, common, session.session_token);
await requestJson(fetchImpl, `${baseUrl}/api/navigation-map/ack`, { ...common, map_hash: map.map_hash }, session.session_token);
const grant = await requestJson(fetchImpl, `${baseUrl}/api/repo-push/grant`, { ...common, repo }, session.session_token);
if (grant.transport && grant.transport.status !== "ready") {
output(`[LL-REPO-PUSH-TRANSPORT-BLOCKED] ${grant.transport.diagnostic_code || "repo_push_transport_unavailable"}`);
output(`NEXT_STEP=${grant.transport.next_step || "读取服务器 operation receipt。"}`);
const error = new Error(grant.transport.diagnostic_code || "repo_push_transport_unavailable");
if (!grant.transport || grant.transport.status !== "ready") {
const transport = grant.transport || {};
output(`[LL-REPO-PUSH-TRANSPORT-BLOCKED] ${transport.diagnostic_code || "repo_push_transport_unavailable"}`);
output(`NEXT_STEP=${transport.next_step || "服务器没有返回可验证的受限推送通道;禁止重试裸 git push读取 operation receipt。"}`);
const error = new Error(transport.diagnostic_code || "repo_push_transport_unavailable");
error.receipt = grant.receipt;
throw error;
}