🧰 cleanupJSONとフォールバックの連係

Search Groundingを有効にすると responseMimeType が使えず、JSONが途中で切れることが増えました。midori301では括弧数とトレイリングカンマを補修しつつ、最悪でも正規表現で座標を救出します。

元のレスポンス
{
  "places": [
    {
      "name": "東京タワー",
      "latitude": 35.6586,
      "longitude": 139.7454,
    }
  ]
}
cleanupJSON後
{
  "places": [
    {
      "name": "東京タワー",
      "latitude": 35.6586,
      "longitude": 139.7454
    }
  ]
}
処理ログをここに表示します。
実装抜粋(`gemini-grounding.js` より)
// cleanupJSON は括弧の欠損と ```json コードブロックを補修
function cleanupJSON(text) {
    let normalized = text.replace(/,\s*([\]}])/g, '$1');
    const missingBrackets = (normalized.match(/\[/g) || []).length - (normalized.match(/\]/g) || []).length;
    if (missingBrackets > 0) normalized += ']'.repeat(missingBrackets);
    const missingBraces = (normalized.match(/\{/g) || []).length - (normalized.match(/\}/g) || []).length;
    if (missingBraces > 0) normalized += '}'.repeat(missingBraces);
    return normalized.replace(/```json|```/g, '').trim();
}