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.
@@ -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":"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"}
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
- * { type: ["string", "null"] } { type: "string", description: "(nullable)" }
383
+ * Also recursively removes nullable fields from 'required' arrays.
384
384
  */
385
- function flattenTypeArrays(schema, nullableFields, currentPath) {
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, idx) => flattenTypeArrays(item, nullableFields, `${currentPath || ""}[${idx}]`));
390
+ return schema.map((item) => flattenTypeArrays(item));
391
391
  }
392
392
  let result = { ...schema };
393
- const localNullableFields = nullableFields || new Map();
394
- // Handle type array
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 propPath = currentPath ? `${currentPath}.properties.${propKey}` : `properties.${propKey}`;
416
- const processed = flattenTypeArrays(propValue, localNullableFields, propPath);
421
+ const processed = flattenTypeArrays(propValue);
417
422
  newProps[propKey] = processed;
418
- // Track nullable fields for required array cleanup
419
- if (processed && typeof processed === "object" &&
420
- typeof processed.description === "string" &&
421
- processed.description.includes("nullable")) {
422
- const objectPath = currentPath || "";
423
- const existing = localNullableFields.get(objectPath) || [];
424
- existing.push(propKey);
425
- localNullableFields.set(objectPath, existing);
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
- // Remove nullable fields from required array
431
- if (Array.isArray(result.required) && !nullableFields) {
432
- // Only at root level, filter out nullable fields
433
- const nullableAtRoot = localNullableFields.get("") || [];
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 nested objects
442
- for (const [key, value] of Object.entries(result)) {
443
- if (key !== "properties" && typeof value === "object" && value !== null) {
444
- result[key] = flattenTypeArrays(value, localNullableFields, `${currentPath || ""}.${key}`);
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
- try {
1262
- const parsed = JSON.parse(rawText);
1263
- if (Array.isArray(parsed)) {
1264
- const firstObject = parsed.find((item) => typeof item === "object" && item !== null);
1265
- if (firstObject && typeof firstObject === "object") {
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
- catch {
1276
- return null;
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
- try {
1313
- const parsed = JSON.parse(jsonText);
1314
- if (parsed && typeof parsed === "object") {
1315
- const usage = extractUsageMetadata({ response: parsed.response });
1316
- if (usage) {
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
- try {
1384
- const parsed = JSON.parse(text);
1385
- // Check for empty candidates (Gemini/Antigravity format)
1386
- if (parsed.candidates !== undefined) {
1387
- if (!Array.isArray(parsed.candidates) || parsed.candidates.length === 0) {
1388
- return true;
1389
- }
1390
- // Check if first candidate has empty content
1391
- const firstCandidate = parsed.candidates[0];
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 for empty choices (OpenAI format - shouldn't occur but handle it)
1421
- if (parsed.choices !== undefined) {
1422
- if (!Array.isArray(parsed.choices) || parsed.choices.length === 0) {
1423
- return true;
1424
- }
1425
- const firstChoice = parsed.choices[0];
1426
- if (!firstChoice) {
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
- // Check response wrapper (Antigravity envelope)
1440
- if (parsed.response !== undefined) {
1441
- const response = parsed.response;
1442
- if (!response || typeof response !== "object") {
1443
- return true;
1444
- }
1445
- return isEmptyResponseBody(JSON.stringify(response));
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
- catch {
1450
- // JSON parse error - treat as empty
1451
- return true;
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
- if (!data) {
1473
+ const parsed = safeJsonParse(data, null);
1474
+ if (parsed === null) {
1480
1475
  return false;
1481
1476
  }
1482
- try {
1483
- const parsed = JSON.parse(data);
1484
- // Check for candidates with content
1485
- if (parsed.candidates && Array.isArray(parsed.candidates)) {
1486
- for (const candidate of parsed.candidates) {
1487
- const parts = candidate?.content?.parts;
1488
- if (Array.isArray(parts) && parts.length > 0) {
1489
- for (const part of parts) {
1490
- if (typeof part?.text === "string" && part.text.length > 0)
1491
- return true;
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
- catch {
1505
- return false;
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
- try {
1582
- // Use JSON.parse with quotes to unescape the string
1583
- return JSON.parse(`"${obj}"`);
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
- try {
1595
- const parsed = JSON.parse(obj);
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
- try {
1605
- const lastBracket = stripped.lastIndexOf("]");
1606
- if (lastBracket > 0) {
1607
- const cleaned = stripped.slice(0, lastBracket + 1);
1608
- const parsed = JSON.parse(cleaned);
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
- try {
1622
- const lastBrace = stripped.lastIndexOf("}");
1623
- if (lastBrace > 0) {
1624
- const cleaned = stripped.slice(0, lastBrace + 1);
1625
- const parsed = JSON.parse(cleaned);
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;