@google/gemini-cli-core 0.1.9-nightly.250709.c8cf954e → 0.1.9-rc.0

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.
Files changed (138) hide show
  1. package/README.md +3 -17
  2. package/dist/google-gemini-cli-core-0.1.9-rc.0.tgz +0 -0
  3. package/dist/src/code_assist/codeAssist.d.ts +1 -1
  4. package/dist/src/code_assist/codeAssist.js +4 -5
  5. package/dist/src/code_assist/codeAssist.js.map +1 -1
  6. package/dist/src/code_assist/converter.d.ts +1 -2
  7. package/dist/src/code_assist/converter.js +3 -4
  8. package/dist/src/code_assist/converter.js.map +1 -1
  9. package/dist/src/code_assist/converter.test.js +0 -24
  10. package/dist/src/code_assist/converter.test.js.map +1 -1
  11. package/dist/src/code_assist/oauth2.d.ts +2 -3
  12. package/dist/src/code_assist/oauth2.js +25 -56
  13. package/dist/src/code_assist/oauth2.js.map +1 -1
  14. package/dist/src/code_assist/oauth2.test.js +7 -83
  15. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  16. package/dist/src/code_assist/server.d.ts +1 -2
  17. package/dist/src/code_assist/server.js +4 -5
  18. package/dist/src/code_assist/server.js.map +1 -1
  19. package/dist/src/code_assist/setup.js +1 -1
  20. package/dist/src/code_assist/setup.js.map +1 -1
  21. package/dist/src/config/config.d.ts +2 -19
  22. package/dist/src/config/config.js +56 -78
  23. package/dist/src/config/config.js.map +1 -1
  24. package/dist/src/config/config.test.js +0 -25
  25. package/dist/src/config/config.test.js.map +1 -1
  26. package/dist/src/core/client.d.ts +3 -18
  27. package/dist/src/core/client.js +15 -56
  28. package/dist/src/core/client.js.map +1 -1
  29. package/dist/src/core/client.test.js +4 -209
  30. package/dist/src/core/client.test.js.map +1 -1
  31. package/dist/src/core/contentGenerator.d.ts +5 -4
  32. package/dist/src/core/contentGenerator.js +15 -16
  33. package/dist/src/core/contentGenerator.js.map +1 -1
  34. package/dist/src/core/contentGenerator.test.js +3 -49
  35. package/dist/src/core/contentGenerator.test.js.map +1 -1
  36. package/dist/src/core/coreToolScheduler.d.ts +2 -9
  37. package/dist/src/core/coreToolScheduler.js +2 -28
  38. package/dist/src/core/coreToolScheduler.js.map +1 -1
  39. package/dist/src/core/coreToolScheduler.test.js +0 -78
  40. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  41. package/dist/src/core/logger.d.ts +4 -3
  42. package/dist/src/core/logger.js +11 -7
  43. package/dist/src/core/logger.js.map +1 -1
  44. package/dist/src/core/logger.test.js +15 -6
  45. package/dist/src/core/logger.test.js.map +1 -1
  46. package/dist/src/core/modelCheck.js +1 -1
  47. package/dist/src/core/modelCheck.js.map +1 -1
  48. package/dist/src/services/fileDiscoveryService.d.ts +0 -4
  49. package/dist/src/services/fileDiscoveryService.js +0 -13
  50. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  51. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +11 -34
  52. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  53. package/dist/src/tools/edit.d.ts +2 -1
  54. package/dist/src/tools/edit.js +12 -11
  55. package/dist/src/tools/edit.js.map +1 -1
  56. package/dist/src/tools/edit.test.js +9 -7
  57. package/dist/src/tools/edit.test.js.map +1 -1
  58. package/dist/src/tools/glob.d.ts +1 -5
  59. package/dist/src/tools/glob.js +9 -14
  60. package/dist/src/tools/glob.js.map +1 -1
  61. package/dist/src/tools/glob.test.js +3 -3
  62. package/dist/src/tools/glob.test.js.map +1 -1
  63. package/dist/src/tools/grep.js +7 -8
  64. package/dist/src/tools/grep.js.map +1 -1
  65. package/dist/src/tools/grep.test.js +3 -3
  66. package/dist/src/tools/grep.test.js.map +1 -1
  67. package/dist/src/tools/ls.js +8 -9
  68. package/dist/src/tools/ls.js.map +1 -1
  69. package/dist/src/tools/mcp-client.d.ts +2 -0
  70. package/dist/src/tools/mcp-client.js +30 -31
  71. package/dist/src/tools/mcp-client.js.map +1 -1
  72. package/dist/src/tools/mcp-client.test.js +4 -85
  73. package/dist/src/tools/mcp-client.test.js.map +1 -1
  74. package/dist/src/tools/mcp-tool.d.ts +3 -3
  75. package/dist/src/tools/mcp-tool.js.map +1 -1
  76. package/dist/src/tools/memoryTool.js +2 -3
  77. package/dist/src/tools/memoryTool.js.map +1 -1
  78. package/dist/src/tools/read-file.js +8 -8
  79. package/dist/src/tools/read-file.js.map +1 -1
  80. package/dist/src/tools/read-file.test.js +4 -4
  81. package/dist/src/tools/read-file.test.js.map +1 -1
  82. package/dist/src/tools/read-many-files.js +38 -24
  83. package/dist/src/tools/read-many-files.js.map +1 -1
  84. package/dist/src/tools/read-many-files.test.js +4 -4
  85. package/dist/src/tools/read-many-files.test.js.map +1 -1
  86. package/dist/src/tools/shell.d.ts +1 -20
  87. package/dist/src/tools/shell.js +16 -53
  88. package/dist/src/tools/shell.js.map +1 -1
  89. package/dist/src/tools/shell.test.js +65 -85
  90. package/dist/src/tools/shell.test.js.map +1 -1
  91. package/dist/src/tools/tool-registry.d.ts +2 -16
  92. package/dist/src/tools/tool-registry.js +19 -150
  93. package/dist/src/tools/tool-registry.js.map +1 -1
  94. package/dist/src/tools/tool-registry.test.js +75 -186
  95. package/dist/src/tools/tool-registry.test.js.map +1 -1
  96. package/dist/src/tools/tools.d.ts +4 -7
  97. package/dist/src/tools/tools.js.map +1 -1
  98. package/dist/src/tools/web-fetch.js +5 -6
  99. package/dist/src/tools/web-fetch.js.map +1 -1
  100. package/dist/src/tools/web-search.d.ts +0 -5
  101. package/dist/src/tools/web-search.js +6 -12
  102. package/dist/src/tools/web-search.js.map +1 -1
  103. package/dist/src/tools/write-file.d.ts +1 -7
  104. package/dist/src/tools/write-file.js +11 -17
  105. package/dist/src/tools/write-file.js.map +1 -1
  106. package/dist/src/tools/write-file.test.js +4 -4
  107. package/dist/src/tools/write-file.test.js.map +1 -1
  108. package/dist/src/utils/editCorrector.d.ts +1 -1
  109. package/dist/src/utils/editCorrector.js +2 -106
  110. package/dist/src/utils/editCorrector.js.map +1 -1
  111. package/dist/src/utils/editCorrector.test.js +19 -65
  112. package/dist/src/utils/editCorrector.test.js.map +1 -1
  113. package/dist/src/utils/editor.d.ts +1 -1
  114. package/dist/src/utils/editor.js +1 -1
  115. package/dist/src/utils/fileUtils.d.ts +1 -1
  116. package/dist/src/utils/fileUtils.js +0 -17
  117. package/dist/src/utils/fileUtils.js.map +1 -1
  118. package/dist/src/utils/fileUtils.test.js +0 -17
  119. package/dist/src/utils/fileUtils.test.js.map +1 -1
  120. package/dist/src/utils/messageInspectors.d.ts +0 -1
  121. package/dist/src/utils/messageInspectors.js +0 -5
  122. package/dist/src/utils/messageInspectors.js.map +1 -1
  123. package/dist/src/utils/nextSpeakerChecker.js +1 -1
  124. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  125. package/dist/src/utils/schemaValidator.d.ts +5 -10
  126. package/dist/src/utils/schemaValidator.js +32 -44
  127. package/dist/src/utils/schemaValidator.js.map +1 -1
  128. package/dist/src/utils/user_id.d.ts +1 -1
  129. package/dist/src/utils/user_id.js +5 -5
  130. package/dist/src/utils/user_id.js.map +1 -1
  131. package/dist/src/utils/user_id.test.js +11 -15
  132. package/dist/src/utils/user_id.test.js.map +1 -1
  133. package/dist/tsconfig.tsbuildinfo +1 -1
  134. package/package.json +12 -11
  135. package/dist/google-gemini-cli-core-0.1.9.tgz +0 -0
  136. package/dist/src/code_assist/setup.test.d.ts +0 -6
  137. package/dist/src/code_assist/setup.test.js +0 -62
  138. package/dist/src/code_assist/setup.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nextSpeakerChecker.js","sourceRoot":"","sources":["../../../src/utils/nextSpeakerChecker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAwB,IAAI,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBpB,CAAC;AAEF,MAAM,eAAe,GAAgB;IACnC,IAAI,EAAE,IAAI,CAAC,MAAM;IACjB,UAAU,EAAE;QACV,SAAS,EAAE;YACT,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,WAAW,EACT,iJAAiJ;SACpJ;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YACvB,WAAW,EACT,iFAAiF;SACpF;KACF;IACD,QAAQ,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;CACxC,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAgB,EAChB,YAA0B,EAC1B,WAAwB;IAExB,iHAAiH;IACjH,qHAAqH;IACrH,oHAAoH;IACpH,kEAAkE;IAClE,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE3D,6CAA6C;IAC7C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,qDAAqD;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/C,uEAAuE;IACvE,iFAAiF;IACjF,sBAAsB;IACtB,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,wBAAwB,GAC5B,oBAAoB,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAExD,4EAA4E;IAC5E,oCAAoC;IACpC,IACE,wBAAwB;QACxB,kBAAkB,CAAC,wBAAwB,CAAC,EAC5C,CAAC;QACD,OAAO;YACL,SAAS,EACP,2EAA2E;YAC7E,YAAY,EAAE,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,IACE,wBAAwB;QACxB,wBAAwB,CAAC,IAAI,KAAK,OAAO;QACzC,wBAAwB,CAAC,KAAK;QAC9B,wBAAwB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAC3C,CAAC;QACD,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,OAAO;YACL,SAAS,EACP,oHAAoH;YACtH,YAAY,EAAE,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,0EAA0E;IAE1E,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACjD,uEAAuE;QACvE,0BAA0B;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAc;QAC1B,GAAG,cAAc;QACjB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;KAClD,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CACrD,QAAQ,EACR,eAAe,EACf,WAAW,CACZ,CAAmC,CAAC;QAErC,IACE,cAAc;YACd,cAAc,CAAC,YAAY;YAC3B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EACvD,CAAC;YACD,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,gFAAgF,EAChF,KAAK,CACN,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"nextSpeakerChecker.js","sourceRoot":"","sources":["../../../src/utils/nextSpeakerChecker.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,15 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Schema } from '@google/genai';
7
6
  /**
8
7
  * Simple utility to validate objects against JSON Schemas
9
8
  */
10
9
  export declare class SchemaValidator {
11
10
  /**
12
- * Returns null if the data confroms to the schema described by schema (or if schema
13
- * is null). Otherwise, returns a string describing the error.
11
+ * Validates data against a JSON schema
12
+ * @param schema JSON Schema to validate against
13
+ * @param data Data to validate
14
+ * @returns True if valid, false otherwise
14
15
  */
15
- static validate(schema: Schema | undefined, data: unknown): string | null;
16
- /**
17
- * Converts @google/genai's Schema to an object compatible with avj.
18
- * This is necessry because it represents Types as an Enum (with
19
- * UPPERCASE values) and minItems and minLength as strings, when they should be numbers.
20
- */
21
- private static toObjectSchema;
16
+ static validate(schema: Record<string, unknown>, data: unknown): boolean;
22
17
  }
@@ -3,60 +3,48 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import * as ajv from 'ajv';
7
- const ajValidator = new ajv.Ajv();
8
6
  /**
9
7
  * Simple utility to validate objects against JSON Schemas
10
8
  */
11
9
  export class SchemaValidator {
12
10
  /**
13
- * Returns null if the data confroms to the schema described by schema (or if schema
14
- * is null). Otherwise, returns a string describing the error.
11
+ * Validates data against a JSON schema
12
+ * @param schema JSON Schema to validate against
13
+ * @param data Data to validate
14
+ * @returns True if valid, false otherwise
15
15
  */
16
16
  static validate(schema, data) {
17
- if (!schema) {
18
- return null;
19
- }
20
- if (typeof data !== 'object' || data === null) {
21
- return 'Value of params must be an object';
22
- }
23
- const validate = ajValidator.compile(this.toObjectSchema(schema));
24
- const valid = validate(data);
25
- if (!valid && validate.errors) {
26
- return ajValidator.errorsText(validate.errors, { dataVar: 'params' });
27
- }
28
- return null;
29
- }
30
- /**
31
- * Converts @google/genai's Schema to an object compatible with avj.
32
- * This is necessry because it represents Types as an Enum (with
33
- * UPPERCASE values) and minItems and minLength as strings, when they should be numbers.
34
- */
35
- static toObjectSchema(schema) {
36
- const newSchema = { ...schema };
37
- if (newSchema.anyOf && Array.isArray(newSchema.anyOf)) {
38
- newSchema.anyOf = newSchema.anyOf.map((v) => this.toObjectSchema(v));
39
- }
40
- if (newSchema.items) {
41
- newSchema.items = this.toObjectSchema(newSchema.items);
42
- }
43
- if (newSchema.properties && typeof newSchema.properties === 'object') {
44
- const newProperties = {};
45
- for (const [key, value] of Object.entries(newSchema.properties)) {
46
- newProperties[key] = this.toObjectSchema(value);
17
+ // This is a simplified implementation
18
+ // In a real application, you would use a library like Ajv for proper validation
19
+ // Check for required fields
20
+ if (schema.required && Array.isArray(schema.required)) {
21
+ const required = schema.required;
22
+ const dataObj = data;
23
+ for (const field of required) {
24
+ if (dataObj[field] === undefined) {
25
+ console.error(`Missing required field: ${field}`);
26
+ return false;
27
+ }
47
28
  }
48
- newSchema.properties = newProperties;
49
- }
50
- if (newSchema.type) {
51
- newSchema.type = String(newSchema.type).toLowerCase();
52
29
  }
53
- if (newSchema.minItems) {
54
- newSchema.minItems = Number(newSchema.minItems);
55
- }
56
- if (newSchema.minLength) {
57
- newSchema.minLength = Number(newSchema.minLength);
30
+ // Check property types if properties are defined
31
+ if (schema.properties && typeof schema.properties === 'object') {
32
+ const properties = schema.properties;
33
+ const dataObj = data;
34
+ for (const [key, prop] of Object.entries(properties)) {
35
+ if (dataObj[key] !== undefined && prop.type) {
36
+ const expectedType = prop.type;
37
+ const actualType = Array.isArray(dataObj[key])
38
+ ? 'array'
39
+ : typeof dataObj[key];
40
+ if (expectedType !== actualType) {
41
+ console.error(`Type mismatch for property "${key}": expected ${expectedType}, got ${actualType}`);
42
+ return false;
43
+ }
44
+ }
45
+ }
58
46
  }
59
- return newSchema;
47
+ return true;
60
48
  }
61
49
  }
62
50
  //# sourceMappingURL=schemaValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaValidator.js","sourceRoot":"","sources":["../../../src/utils/schemaValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,MAA0B,EAAE,IAAa;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,mCAAmC,CAAC;QAC7C,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,cAAc,CAAC,MAAc;QAC1C,MAAM,SAAS,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;QACzD,IAAI,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,SAAS,CAAC,UAAU,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACrE,MAAM,aAAa,GAA4B,EAAE,CAAC;YAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAe,CAAC,CAAC;YAC5D,CAAC;YACD,SAAS,CAAC,UAAU,GAAG,aAAa,CAAC;QACvC,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACxD,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACxB,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"schemaValidator.js","sourceRoot":"","sources":["../../../src/utils/schemaValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,MAA+B,EAAE,IAAa;QAC5D,sCAAsC;QACtC,gFAAgF;QAEhF,4BAA4B;QAC5B,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAoB,CAAC;YAC7C,MAAM,OAAO,GAAG,IAA+B,CAAC;YAEhD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;oBACjC,OAAO,CAAC,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;oBAClD,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,UAA+C,CAAC;YAC1E,MAAM,OAAO,GAAG,IAA+B,CAAC;YAEhD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBAC5C,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;oBAExB,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;wBAChC,OAAO,CAAC,KAAK,CACX,+BAA+B,GAAG,eAAe,YAAY,SAAS,UAAU,EAAE,CACnF,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -14,4 +14,4 @@ export declare function getInstallationId(): string;
14
14
  * When OAuth is available, returns the user's cached Google Account ID. Otherwise, returns the installation ID.
15
15
  * @returns A string ID for the user (Google Account ID if available, otherwise installation ID).
16
16
  */
17
- export declare function getGoogleAccountId(): Promise<string>;
17
+ export declare function getObfuscatedGoogleAccountId(): string;
@@ -51,19 +51,19 @@ export function getInstallationId() {
51
51
  * When OAuth is available, returns the user's cached Google Account ID. Otherwise, returns the installation ID.
52
52
  * @returns A string ID for the user (Google Account ID if available, otherwise installation ID).
53
53
  */
54
- export async function getGoogleAccountId() {
54
+ export function getObfuscatedGoogleAccountId() {
55
55
  // Try to get cached Google Account ID first
56
56
  try {
57
- // Dynamic import to avoid circular dependencies
58
- const { getCachedGoogleAccountId } = await import('../code_assist/oauth2.js');
57
+ // Dynamically import to avoid circular dependencies
58
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, no-restricted-syntax
59
+ const { getCachedGoogleAccountId } = require('../code_assist/oauth2.js');
59
60
  const googleAccountId = getCachedGoogleAccountId();
60
61
  if (googleAccountId) {
61
62
  return googleAccountId;
62
63
  }
63
64
  }
64
- catch (error) {
65
+ catch (_error) {
65
66
  // If there's any error accessing Google Account ID, just return empty string
66
- console.debug('Could not get cached Google Account ID:', error);
67
67
  }
68
68
  return '';
69
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user_id.js","sourceRoot":"","sources":["../../../src/utils/user_id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAEnE,SAAS,qBAAqB;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,OAAO,cAAc,IAAI,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAsB;IACvD,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,qBAAqB,EAAE,CAAC;QACxB,IAAI,cAAc,GAAG,0BAA0B,EAAE,CAAC;QAElD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,UAAU,EAAE,CAAC;YAC9B,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,gEAAgE,EAChE,KAAK,CACN,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,4CAA4C;IAC5C,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAC/C,0BAA0B,CAC3B,CAAC;QACF,MAAM,eAAe,GAAG,wBAAwB,EAAE,CAAC;QACnD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6EAA6E;QAC7E,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"user_id.js","sourceRoot":"","sources":["../../../src/utils/user_id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAEnE,SAAS,qBAAqB;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,OAAO,cAAc,IAAI,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAsB;IACvD,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,qBAAqB,EAAE,CAAC;QACxB,IAAI,cAAc,GAAG,0BAA0B,EAAE,CAAC;QAElD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,UAAU,EAAE,CAAC;YAC9B,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,gEAAgE,EAChE,KAAK,CACN,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,4CAA4C;IAC5C,IAAI,CAAC;QACH,oDAAoD;QACpD,uFAAuF;QACvF,MAAM,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,wBAAwB,EAAE,CAAC;QACnD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,6EAA6E;IAC/E,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect } from 'vitest';
7
- import { getInstallationId, getGoogleAccountId } from './user_id.js';
7
+ import { getInstallationId, getObfuscatedGoogleAccountId } from './user_id.js';
8
8
  describe('user_id', () => {
9
9
  describe('getInstallationId', () => {
10
10
  it('should return a valid UUID format string', () => {
@@ -17,25 +17,21 @@ describe('user_id', () => {
17
17
  expect(secondCall).toBe(installationId);
18
18
  });
19
19
  });
20
- describe('getGoogleAccountId', () => {
21
- it('should return a non-empty string', async () => {
22
- const result = await getGoogleAccountId();
20
+ describe('getObfuscatedGoogleAccountId', () => {
21
+ it('should return a non-empty string', () => {
22
+ const result = getObfuscatedGoogleAccountId();
23
23
  expect(result).toBeDefined();
24
24
  expect(typeof result).toBe('string');
25
25
  // Should be consistent on subsequent calls
26
- const secondCall = await getGoogleAccountId();
26
+ const secondCall = getObfuscatedGoogleAccountId();
27
27
  expect(secondCall).toBe(result);
28
28
  });
29
- it('should return empty string when no Google Account ID is cached, or a valid ID when cached', async () => {
30
- // The function can return either an empty string (if no cached ID) or a valid Google Account ID (if cached)
31
- const googleAccountIdResult = await getGoogleAccountId();
32
- expect(googleAccountIdResult).toBeDefined();
33
- expect(typeof googleAccountIdResult).toBe('string');
34
- // Should be either empty string or a numeric string (Google Account ID)
35
- if (googleAccountIdResult !== '') {
36
- // If we have a cached ID, it should be a numeric string
37
- expect(googleAccountIdResult).toMatch(/^\d+$/);
38
- }
29
+ it('should return empty string when no Google Account ID is cached', () => {
30
+ // In a clean test environment, there should be no cached Google Account ID
31
+ // so getObfuscatedGoogleAccountId should fall back to installation ID
32
+ const googleAccountIdResult = getObfuscatedGoogleAccountId();
33
+ // They should be the same when no Google Account ID is cached
34
+ expect(googleAccountIdResult).toBe('');
39
35
  });
40
36
  });
41
37
  });
@@ -1 +1 @@
1
- {"version":3,"file":"user_id.test.js","sourceRoot":"","sources":["../../../src/utils/user_id.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAErE,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAE3C,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAEjD,6DAA6D;YAC7D,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErC,2CAA2C;YAC3C,MAAM,UAAU,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC9C,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2FAA2F,EAAE,KAAK,IAAI,EAAE;YACzG,4GAA4G;YAC5G,MAAM,qBAAqB,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAEzD,MAAM,CAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEpD,wEAAwE;YACxE,IAAI,qBAAqB,KAAK,EAAE,EAAE,CAAC;gBACjC,wDAAwD;gBACxD,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"user_id.test.js","sourceRoot":"","sources":["../../../src/utils/user_id.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE/E,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAE3C,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAEjD,6DAA6D;YAC7D,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,MAAM,GAAG,4BAA4B,EAAE,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErC,2CAA2C;YAC3C,MAAM,UAAU,GAAG,4BAA4B,EAAE,CAAC;YAClD,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,2EAA2E;YAC3E,sEAAsE;YACtE,MAAM,qBAAqB,GAAG,4BAA4B,EAAE,CAAC;YAE7D,8DAA8D;YAC9D,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}