earendil-works/pi · error · Error

Kimi Code token ${operation} response missing fields: ${JSON

Error message

Kimi Code token ${operation} response missing fields: ${JSON.stringify(json)}

What it means

Error "Kimi Code token ${operation} response missing fields: ${JSON.stringify(json)}" thrown in earendil-works/pi.

Source

Thrown at packages/ai/src/auth/oauth/kimi-coding.ts:133

				? expiresIn
				: DEVICE_CODE_TIMEOUT_SECONDS,
	};
}

function parseTokenResponse(json: Record<string, unknown> | null, operation: string): TokenResponse {
	const accessToken = json?.access_token;
	const refreshToken = json?.refresh_token;
	const expiresIn = json?.expires_in;
	if (
		typeof accessToken !== "string" ||
		!accessToken ||
		typeof refreshToken !== "string" ||
		!refreshToken ||
		typeof expiresIn !== "number" ||
		!Number.isFinite(expiresIn) ||
		expiresIn <= 0
	) {
		throw new Error(`Kimi Code token ${operation} response missing fields: ${JSON.stringify(json)}`);
	}
	return {
		access: accessToken,
		refresh: refreshToken,
		expires: Date.now() + expiresIn * 1000,
	};
}

async function pollForToken(
	oauthHost: string,
	device: DeviceAuthorization,
	signal: AbortSignal,
): Promise<TokenResponse> {
	return pollOAuthDeviceCodeFlow<TokenResponse>({
		intervalSeconds: device.intervalSeconds,
		expiresInSeconds: device.expiresInSeconds,
		waitBeforeFirstPoll: true,
		signal,

View on GitHub (pinned to 4af9d21d3b)

Solutions

  1. Inspect the payload in the message and retry the token operation.

When it happens

Trigger: Thrown at packages/ai/src/auth/oauth/kimi-coding.ts:133 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24). Data as JSON: /api/errors/e3a18c56ccd683ac. Report an issue: GitHub.