opencode-antigravity-auth-tweaked 1.9.2 → 1.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/plugin/accounts.d.ts +8 -0
- package/dist/src/plugin/accounts.d.ts.map +1 -1
- package/dist/src/plugin/accounts.js +66 -1
- package/dist/src/plugin/accounts.js.map +1 -1
- package/dist/src/plugin/error-extraction.d.ts +21 -0
- package/dist/src/plugin/error-extraction.d.ts.map +1 -0
- package/dist/src/plugin/error-extraction.js +305 -0
- package/dist/src/plugin/error-extraction.js.map +1 -0
- package/dist/src/plugin/request-helpers.d.ts +4 -0
- package/dist/src/plugin/request-helpers.d.ts.map +1 -1
- package/dist/src/plugin/request-helpers.js +152 -162
- package/dist/src/plugin/request-helpers.js.map +1 -1
- package/dist/src/plugin/rotation.d.ts +1 -0
- package/dist/src/plugin/rotation.d.ts.map +1 -1
- package/dist/src/plugin/rotation.js +9 -5
- package/dist/src/plugin/rotation.js.map +1 -1
- package/dist/src/plugin/storage.d.ts +6 -0
- package/dist/src/plugin/storage.d.ts.map +1 -1
- package/dist/src/plugin/storage.js +23 -1
- package/dist/src/plugin/storage.js.map +1 -1
- package/dist/src/plugin.d.ts.map +1 -1
- package/dist/src/plugin.js +1 -328
- package/dist/src/plugin.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-extraction.js","sourceRoot":"","sources":["../../../src/plugin/error-extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -155,6 +155,10 @@ export declare function createStreamingChunkCounter(): StreamingChunkCounter;
|
|
|
155
155
|
* @returns true if the line contains content worth counting
|
|
156
156
|
*/
|
|
157
157
|
export declare function isMeaningfulSseLine(line: string): boolean;
|
|
158
|
+
/**
|
|
159
|
+
* Safely parses a JSON string, returning a fallback value if parsing fails.
|
|
160
|
+
*/
|
|
161
|
+
export declare function safeJsonParse<T>(json: string | undefined | null, fallback: T): T;
|
|
158
162
|
export declare function recursivelyParseJsonStrings(obj: unknown, skipParseKeys?: Set<string>, currentKey?: string): unknown;
|
|
159
163
|
/**
|
|
160
164
|
* Groups function calls with their responses, handling ID mismatches.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-helpers.d.ts","sourceRoot":"","sources":["../../../src/plugin/request-helpers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"request-helpers.d.ts","sourceRoot":"","sources":["../../../src/plugin/request-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ const UNSUPPORTED_CONSTRAINTS = [
|
|
|
24
24
|
const UNSUPPORTED_KEYWORDS = [
|
|
25
25
|
...UNSUPPORTED_CONSTRAINTS,
|
|
26
26
|
"$schema", "$defs", "definitions", "const", "$ref", "additionalProperties",
|
|
27
|
-
"propertyNames", "title", "$id", "$comment",
|
|
27
|
+
"propertyNames", "title", "$id", "$comment", "nullable",
|
|
28
28
|
];
|
|
29
29
|
/**
|
|
30
30
|
* Appends a hint to a schema's description field.
|
|
@@ -380,18 +380,23 @@ function flattenAnyOfOneOf(schema) {
|
|
|
380
380
|
}
|
|
381
381
|
/**
|
|
382
382
|
* Phase 2c: Flattens type arrays to single type with nullable hint.
|
|
383
|
-
*
|
|
383
|
+
* Also recursively removes nullable fields from 'required' arrays.
|
|
384
384
|
*/
|
|
385
|
-
function flattenTypeArrays(schema
|
|
385
|
+
function flattenTypeArrays(schema) {
|
|
386
386
|
if (!schema || typeof schema !== "object") {
|
|
387
387
|
return schema;
|
|
388
388
|
}
|
|
389
389
|
if (Array.isArray(schema)) {
|
|
390
|
-
return schema.map((item
|
|
390
|
+
return schema.map((item) => flattenTypeArrays(item));
|
|
391
391
|
}
|
|
392
392
|
let result = { ...schema };
|
|
393
|
-
|
|
394
|
-
|
|
393
|
+
// Handle OAS-style nullable: true
|
|
394
|
+
if (result.nullable === true) {
|
|
395
|
+
result = appendDescriptionHint(result, "nullable");
|
|
396
|
+
// We'll delete 'nullable' in Phase 3 (removeUnsupportedKeywords),
|
|
397
|
+
// but we can also do it here for clarity.
|
|
398
|
+
}
|
|
399
|
+
// Handle JSON Schema type array (e.g. ["string", "null"])
|
|
395
400
|
if (Array.isArray(result.type)) {
|
|
396
401
|
const types = result.type;
|
|
397
402
|
const hasNull = types.includes("null");
|
|
@@ -411,37 +416,38 @@ function flattenTypeArrays(schema, nullableFields, currentPath) {
|
|
|
411
416
|
// Recursively process properties
|
|
412
417
|
if (result.properties && typeof result.properties === "object") {
|
|
413
418
|
const newProps = {};
|
|
419
|
+
const nullablePropNames = new Set();
|
|
414
420
|
for (const [propKey, propValue] of Object.entries(result.properties)) {
|
|
415
|
-
const
|
|
416
|
-
const processed = flattenTypeArrays(propValue, localNullableFields, propPath);
|
|
421
|
+
const processed = flattenTypeArrays(propValue);
|
|
417
422
|
newProps[propKey] = processed;
|
|
418
|
-
// Track nullable
|
|
419
|
-
if (processed && typeof processed === "object"
|
|
420
|
-
typeof processed.description === "string" &&
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
423
|
+
// Track if this property is nullable (either via hint or explicit flag)
|
|
424
|
+
if (processed && typeof processed === "object") {
|
|
425
|
+
const isNullable = (typeof processed.description === "string" &&
|
|
426
|
+
(processed.description.includes("nullable") || processed.description.includes("(nullable)"))) ||
|
|
427
|
+
processed.nullable === true ||
|
|
428
|
+
(Array.isArray(processed.type) && processed.type.includes("null"));
|
|
429
|
+
if (isNullable) {
|
|
430
|
+
nullablePropNames.add(propKey);
|
|
431
|
+
}
|
|
426
432
|
}
|
|
427
433
|
}
|
|
428
434
|
result.properties = newProps;
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
if (nullableAtRoot.length > 0) {
|
|
435
|
-
result.required = result.required.filter((r) => !nullableAtRoot.includes(r));
|
|
436
|
-
if (result.required.length === 0) {
|
|
435
|
+
// Remove nullable fields from this object's required array
|
|
436
|
+
if (Array.isArray(result.required) && nullablePropNames.size > 0) {
|
|
437
|
+
const originalRequired = result.required;
|
|
438
|
+
const filteredRequired = originalRequired.filter(name => !nullablePropNames.has(name));
|
|
439
|
+
if (filteredRequired.length === 0) {
|
|
437
440
|
delete result.required;
|
|
438
441
|
}
|
|
442
|
+
else {
|
|
443
|
+
result.required = filteredRequired;
|
|
444
|
+
}
|
|
439
445
|
}
|
|
440
446
|
}
|
|
441
|
-
// Recursively process other
|
|
442
|
-
for (const [
|
|
443
|
-
if (key
|
|
444
|
-
result[key] = flattenTypeArrays(
|
|
447
|
+
// Recursively process items (for arrays) and other schema-bearing fields
|
|
448
|
+
for (const key of ["items", "additionalProperties", "not"]) {
|
|
449
|
+
if (result[key] && typeof result[key] === "object") {
|
|
450
|
+
result[key] = flattenTypeArrays(result[key]);
|
|
445
451
|
}
|
|
446
452
|
}
|
|
447
453
|
return result;
|
|
@@ -1258,23 +1264,18 @@ export function normalizeThinkingConfig(config) {
|
|
|
1258
1264
|
* Parses an Antigravity API body; handles array-wrapped responses the API sometimes returns.
|
|
1259
1265
|
*/
|
|
1260
1266
|
export function parseAntigravityApiBody(rawText) {
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
return firstObject;
|
|
1267
|
-
}
|
|
1268
|
-
return null;
|
|
1269
|
-
}
|
|
1270
|
-
if (parsed && typeof parsed === "object") {
|
|
1271
|
-
return parsed;
|
|
1267
|
+
const parsed = safeJsonParse(rawText, null);
|
|
1268
|
+
if (Array.isArray(parsed)) {
|
|
1269
|
+
const firstObject = parsed.find((item) => typeof item === "object" && item !== null);
|
|
1270
|
+
if (firstObject && typeof firstObject === "object") {
|
|
1271
|
+
return firstObject;
|
|
1272
1272
|
}
|
|
1273
1273
|
return null;
|
|
1274
1274
|
}
|
|
1275
|
-
|
|
1276
|
-
return
|
|
1275
|
+
if (parsed && typeof parsed === "object") {
|
|
1276
|
+
return parsed;
|
|
1277
1277
|
}
|
|
1278
|
+
return null;
|
|
1278
1279
|
}
|
|
1279
1280
|
/**
|
|
1280
1281
|
* Extracts usageMetadata from a response object, guarding types.
|
|
@@ -1309,18 +1310,13 @@ export function extractUsageFromSsePayload(payload) {
|
|
|
1309
1310
|
if (!jsonText) {
|
|
1310
1311
|
continue;
|
|
1311
1312
|
}
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
return usage;
|
|
1318
|
-
}
|
|
1313
|
+
const parsed = safeJsonParse(jsonText, null);
|
|
1314
|
+
if (parsed && typeof parsed === "object") {
|
|
1315
|
+
const usage = extractUsageMetadata({ response: parsed.response });
|
|
1316
|
+
if (usage) {
|
|
1317
|
+
return usage;
|
|
1319
1318
|
}
|
|
1320
1319
|
}
|
|
1321
|
-
catch {
|
|
1322
|
-
continue;
|
|
1323
|
-
}
|
|
1324
1320
|
}
|
|
1325
1321
|
return null;
|
|
1326
1322
|
}
|
|
@@ -1380,76 +1376,74 @@ export function isEmptyResponseBody(text) {
|
|
|
1380
1376
|
if (!text || !text.trim()) {
|
|
1381
1377
|
return true;
|
|
1382
1378
|
}
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
//
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
if (!firstCandidate) {
|
|
1393
|
-
return true;
|
|
1394
|
-
}
|
|
1395
|
-
// Check for empty parts in content
|
|
1396
|
-
const content = firstCandidate.content;
|
|
1397
|
-
if (!content || typeof content !== "object") {
|
|
1398
|
-
return true;
|
|
1399
|
-
}
|
|
1400
|
-
const parts = content.parts;
|
|
1401
|
-
if (!Array.isArray(parts) || parts.length === 0) {
|
|
1402
|
-
return true;
|
|
1403
|
-
}
|
|
1404
|
-
// Check if all parts are empty (no text, no functionCall)
|
|
1405
|
-
const hasContent = parts.some((part) => {
|
|
1406
|
-
if (!part || typeof part !== "object")
|
|
1407
|
-
return false;
|
|
1408
|
-
if (typeof part.text === "string" && part.text.length > 0)
|
|
1409
|
-
return true;
|
|
1410
|
-
if (part.functionCall)
|
|
1411
|
-
return true;
|
|
1412
|
-
if (part.thought === true && typeof part.text === "string")
|
|
1413
|
-
return true;
|
|
1414
|
-
return false;
|
|
1415
|
-
});
|
|
1416
|
-
if (!hasContent) {
|
|
1417
|
-
return true;
|
|
1418
|
-
}
|
|
1379
|
+
const parsed = safeJsonParse(text, null);
|
|
1380
|
+
if (parsed === null) {
|
|
1381
|
+
// JSON parse error - treat as empty
|
|
1382
|
+
return true;
|
|
1383
|
+
}
|
|
1384
|
+
// Check for empty candidates (Gemini/Antigravity format)
|
|
1385
|
+
if (parsed.candidates !== undefined) {
|
|
1386
|
+
if (!Array.isArray(parsed.candidates) || parsed.candidates.length === 0) {
|
|
1387
|
+
return true;
|
|
1419
1388
|
}
|
|
1420
|
-
// Check
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1389
|
+
// Check if first candidate has empty content
|
|
1390
|
+
const firstCandidate = parsed.candidates[0];
|
|
1391
|
+
if (!firstCandidate) {
|
|
1392
|
+
return true;
|
|
1393
|
+
}
|
|
1394
|
+
// Check for empty parts in content
|
|
1395
|
+
const content = firstCandidate.content;
|
|
1396
|
+
if (!content || typeof content !== "object") {
|
|
1397
|
+
return true;
|
|
1398
|
+
}
|
|
1399
|
+
const parts = content.parts;
|
|
1400
|
+
if (!Array.isArray(parts) || parts.length === 0) {
|
|
1401
|
+
return true;
|
|
1402
|
+
}
|
|
1403
|
+
// Check if all parts are empty (no text, no functionCall)
|
|
1404
|
+
const hasContent = parts.some((part) => {
|
|
1405
|
+
if (!part || typeof part !== "object")
|
|
1406
|
+
return false;
|
|
1407
|
+
if (typeof part.text === "string" && part.text.length > 0)
|
|
1427
1408
|
return true;
|
|
1428
|
-
|
|
1429
|
-
// Check for empty message/delta
|
|
1430
|
-
const message = firstChoice.message || firstChoice.delta;
|
|
1431
|
-
if (!message) {
|
|
1409
|
+
if (part.functionCall)
|
|
1432
1410
|
return true;
|
|
1433
|
-
|
|
1434
|
-
// Check if message has content or tool_calls
|
|
1435
|
-
if (!message.content && !message.tool_calls && !message.reasoning_content) {
|
|
1411
|
+
if (part.thought === true && typeof part.text === "string")
|
|
1436
1412
|
return true;
|
|
1437
|
-
|
|
1413
|
+
return false;
|
|
1414
|
+
});
|
|
1415
|
+
if (!hasContent) {
|
|
1416
|
+
return true;
|
|
1438
1417
|
}
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1418
|
+
}
|
|
1419
|
+
// Check for empty choices (OpenAI format - shouldn't occur but handle it)
|
|
1420
|
+
if (parsed.choices !== undefined) {
|
|
1421
|
+
if (!Array.isArray(parsed.choices) || parsed.choices.length === 0) {
|
|
1422
|
+
return true;
|
|
1423
|
+
}
|
|
1424
|
+
const firstChoice = parsed.choices[0];
|
|
1425
|
+
if (!firstChoice) {
|
|
1426
|
+
return true;
|
|
1427
|
+
}
|
|
1428
|
+
// Check for empty message/delta
|
|
1429
|
+
const message = firstChoice.message || firstChoice.delta;
|
|
1430
|
+
if (!message) {
|
|
1431
|
+
return true;
|
|
1432
|
+
}
|
|
1433
|
+
// Check if message has content or tool_calls
|
|
1434
|
+
if (!message.content && !message.tool_calls && !message.reasoning_content) {
|
|
1435
|
+
return true;
|
|
1446
1436
|
}
|
|
1447
|
-
return false;
|
|
1448
1437
|
}
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1438
|
+
// Check response wrapper (Antigravity envelope)
|
|
1439
|
+
if (parsed.response !== undefined) {
|
|
1440
|
+
const response = parsed.response;
|
|
1441
|
+
if (!response || typeof response !== "object") {
|
|
1442
|
+
return true;
|
|
1443
|
+
}
|
|
1444
|
+
return isEmptyResponseBody(JSON.stringify(response));
|
|
1452
1445
|
}
|
|
1446
|
+
return false;
|
|
1453
1447
|
}
|
|
1454
1448
|
export function createStreamingChunkCounter() {
|
|
1455
1449
|
let count = 0;
|
|
@@ -1473,41 +1467,49 @@ export function isMeaningfulSseLine(line) {
|
|
|
1473
1467
|
return false;
|
|
1474
1468
|
}
|
|
1475
1469
|
const data = line.slice(6).trim();
|
|
1476
|
-
if (data === "[DONE]") {
|
|
1470
|
+
if (data === "[DONE]" || !data) {
|
|
1477
1471
|
return false;
|
|
1478
1472
|
}
|
|
1479
|
-
|
|
1473
|
+
const parsed = safeJsonParse(data, null);
|
|
1474
|
+
if (parsed === null) {
|
|
1480
1475
|
return false;
|
|
1481
1476
|
}
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
const
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
if (part?.functionCall)
|
|
1493
|
-
return true;
|
|
1494
|
-
}
|
|
1477
|
+
// Check for candidates with content
|
|
1478
|
+
if (parsed.candidates && Array.isArray(parsed.candidates)) {
|
|
1479
|
+
for (const candidate of parsed.candidates) {
|
|
1480
|
+
const parts = candidate?.content?.parts;
|
|
1481
|
+
if (Array.isArray(parts)) {
|
|
1482
|
+
for (const part of parts) {
|
|
1483
|
+
if (typeof part?.text === "string" && part.text.length > 0)
|
|
1484
|
+
return true;
|
|
1485
|
+
if (part?.functionCall)
|
|
1486
|
+
return true;
|
|
1495
1487
|
}
|
|
1496
1488
|
}
|
|
1497
1489
|
}
|
|
1498
|
-
// Check response wrapper
|
|
1499
|
-
if (parsed.response?.candidates) {
|
|
1500
|
-
return isMeaningfulSseLine(`data: ${JSON.stringify(parsed.response)}`);
|
|
1501
|
-
}
|
|
1502
|
-
return false;
|
|
1503
1490
|
}
|
|
1504
|
-
|
|
1505
|
-
|
|
1491
|
+
// Check response wrapper
|
|
1492
|
+
if (parsed.response?.candidates) {
|
|
1493
|
+
return isMeaningfulSseLine(`data: ${JSON.stringify(parsed.response)}`);
|
|
1506
1494
|
}
|
|
1495
|
+
return false;
|
|
1507
1496
|
}
|
|
1508
1497
|
// ============================================================================
|
|
1509
1498
|
// RECURSIVE JSON STRING AUTO-PARSING (Ported from LLM-API-Key-Proxy)
|
|
1510
1499
|
// ============================================================================
|
|
1500
|
+
/**
|
|
1501
|
+
* Safely parses a JSON string, returning a fallback value if parsing fails.
|
|
1502
|
+
*/
|
|
1503
|
+
export function safeJsonParse(json, fallback) {
|
|
1504
|
+
if (!json)
|
|
1505
|
+
return fallback;
|
|
1506
|
+
try {
|
|
1507
|
+
return JSON.parse(json);
|
|
1508
|
+
}
|
|
1509
|
+
catch {
|
|
1510
|
+
return fallback;
|
|
1511
|
+
}
|
|
1512
|
+
}
|
|
1511
1513
|
/**
|
|
1512
1514
|
* Recursively parses JSON strings in nested data structures.
|
|
1513
1515
|
*
|
|
@@ -1578,12 +1580,9 @@ export function recursivelyParseJsonStrings(obj, skipParseKeys = SKIP_PARSE_KEYS
|
|
|
1578
1580
|
const hasControlCharEscapes = obj.includes("\\n") || obj.includes("\\t");
|
|
1579
1581
|
const hasIntentionalEscapes = obj.includes('\\"') || obj.includes("\\\\");
|
|
1580
1582
|
if (hasControlCharEscapes && !hasIntentionalEscapes) {
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
return
|
|
1584
|
-
}
|
|
1585
|
-
catch {
|
|
1586
|
-
// Continue with original processing
|
|
1583
|
+
const unescaped = safeJsonParse(`"${obj}"`, null);
|
|
1584
|
+
if (unescaped !== null) {
|
|
1585
|
+
return unescaped;
|
|
1587
1586
|
}
|
|
1588
1587
|
}
|
|
1589
1588
|
// Check if it looks like JSON (starts with { or [)
|
|
@@ -1591,47 +1590,38 @@ export function recursivelyParseJsonStrings(obj, skipParseKeys = SKIP_PARSE_KEYS
|
|
|
1591
1590
|
// Try standard parsing first
|
|
1592
1591
|
if ((stripped.startsWith("{") && stripped.endsWith("}")) ||
|
|
1593
1592
|
(stripped.startsWith("[") && stripped.endsWith("]"))) {
|
|
1594
|
-
|
|
1595
|
-
|
|
1593
|
+
const parsed = safeJsonParse(obj, null);
|
|
1594
|
+
if (parsed !== null) {
|
|
1596
1595
|
return recursivelyParseJsonStrings(parsed);
|
|
1597
1596
|
}
|
|
1598
|
-
catch {
|
|
1599
|
-
// Continue
|
|
1600
|
-
}
|
|
1601
1597
|
}
|
|
1602
1598
|
// Handle malformed JSON: array that doesn't end with ]
|
|
1603
1599
|
if (stripped.startsWith("[") && !stripped.endsWith("]")) {
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1600
|
+
const lastBracket = stripped.lastIndexOf("]");
|
|
1601
|
+
if (lastBracket > 0) {
|
|
1602
|
+
const cleaned = stripped.slice(0, lastBracket + 1);
|
|
1603
|
+
const parsed = safeJsonParse(cleaned, null);
|
|
1604
|
+
if (parsed !== null) {
|
|
1609
1605
|
log.debug("Auto-corrected malformed JSON array", {
|
|
1610
1606
|
truncatedChars: stripped.length - cleaned.length,
|
|
1611
1607
|
});
|
|
1612
1608
|
return recursivelyParseJsonStrings(parsed);
|
|
1613
1609
|
}
|
|
1614
1610
|
}
|
|
1615
|
-
catch {
|
|
1616
|
-
// Continue
|
|
1617
|
-
}
|
|
1618
1611
|
}
|
|
1619
1612
|
// Handle malformed JSON: object that doesn't end with }
|
|
1620
1613
|
if (stripped.startsWith("{") && !stripped.endsWith("}")) {
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1614
|
+
const lastBrace = stripped.lastIndexOf("}");
|
|
1615
|
+
if (lastBrace > 0) {
|
|
1616
|
+
const cleaned = stripped.slice(0, lastBrace + 1);
|
|
1617
|
+
const parsed = safeJsonParse(cleaned, null);
|
|
1618
|
+
if (parsed !== null) {
|
|
1626
1619
|
log.debug("Auto-corrected malformed JSON object", {
|
|
1627
1620
|
truncatedChars: stripped.length - cleaned.length,
|
|
1628
1621
|
});
|
|
1629
1622
|
return recursivelyParseJsonStrings(parsed);
|
|
1630
1623
|
}
|
|
1631
1624
|
}
|
|
1632
|
-
catch {
|
|
1633
|
-
// Continue
|
|
1634
|
-
}
|
|
1635
1625
|
}
|
|
1636
1626
|
}
|
|
1637
1627
|
return obj;
|