repoburg 1.3.136 → 1.3.138

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 (172) hide show
  1. package/CODEMAP.md +3 -11
  2. package/README.md +4 -4
  3. package/backend/.env +2 -2
  4. package/backend/CODEMAP.md +2 -3
  5. package/backend/dist/src/core-entities/llm-call-log.entity.d.ts +1 -1
  6. package/backend/dist/src/core-entities/llm-call-log.entity.js +3 -3
  7. package/backend/dist/src/core-entities/llm-call-log.entity.js.map +1 -1
  8. package/backend/dist/src/core-entities/session.entity.js +2 -2
  9. package/backend/dist/src/core-entities/session.entity.js.map +1 -1
  10. package/backend/dist/src/core-entities/system-prompt.entity.js +1 -1
  11. package/backend/dist/src/core-entities/system-prompt.entity.js.map +1 -1
  12. package/backend/dist/src/llm-call-logs/dto/llm-call-log.dto.d.ts +1 -1
  13. package/backend/dist/src/llm-call-logs/dto/llm-call-log.dto.js +1 -1
  14. package/backend/dist/src/llm-call-logs/dto/llm-call-log.dto.js.map +1 -1
  15. package/backend/dist/src/llm-call-logs/llm-call-logs.controller.js +1 -1
  16. package/backend/dist/src/llm-orchestration/action-handlers/manage-sub-agents.handler.js +1 -1
  17. package/backend/dist/src/llm-orchestration/action-handlers/overwrite-file.handler.js +1 -0
  18. package/backend/dist/src/llm-orchestration/action-handlers/overwrite-file.handler.js.map +1 -1
  19. package/backend/dist/src/llm-orchestration/action-handlers/quick-edit.handler.js +3 -0
  20. package/backend/dist/src/llm-orchestration/action-handlers/quick-edit.handler.js.map +1 -1
  21. package/backend/dist/src/llm-provider/llm-provider.interface.d.ts +3 -9
  22. package/backend/dist/src/llm-provider/llm-provider.interface.js +2 -9
  23. package/backend/dist/src/llm-provider/llm-provider.interface.js.map +1 -1
  24. package/backend/dist/src/llm-provider/llm-provider.module.js +1 -2
  25. package/backend/dist/src/llm-provider/llm-provider.module.js.map +1 -1
  26. package/backend/dist/src/llm-provider/proxy-llm.provider.d.ts +1 -3
  27. package/backend/dist/src/llm-provider/proxy-llm.provider.js +4 -12
  28. package/backend/dist/src/llm-provider/proxy-llm.provider.js.map +1 -1
  29. package/backend/dist/src/llm-responses/dto/sync-conversation.dto.js +2 -2
  30. package/backend/dist/src/llm-responses/dto/sync-conversation.dto.js.map +1 -1
  31. package/backend/dist/src/sessions/dto/session.dto.d.ts +1 -1
  32. package/backend/dist/src/sessions/dto/session.dto.js +7 -7
  33. package/backend/dist/src/sessions/dto/session.dto.js.map +1 -1
  34. package/backend/dist/src/sessions/sessions.service.js +14 -5
  35. package/backend/dist/src/sessions/sessions.service.js.map +1 -1
  36. package/backend/dist/src/sub-agents/dto/create-sub-agent.dto.js +1 -1
  37. package/backend/dist/src/sub-agents/dto/create-sub-agent.dto.js.map +1 -1
  38. package/backend/dist/src/sub-agents/dto/update-sub-agent.dto.js +1 -1
  39. package/backend/dist/src/sub-agents/dto/update-sub-agent.dto.js.map +1 -1
  40. package/backend/dist/src/sub-agents/sub-agent.entity.js +1 -1
  41. package/backend/dist/src/sub-agents/sub-agent.entity.js.map +1 -1
  42. package/backend/dist/src/system-prompts/dto/system-prompt.dto.js +2 -2
  43. package/backend/dist/src/system-prompts/dto/system-prompt.dto.js.map +1 -1
  44. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  45. package/package.json +1 -2
  46. package/backend/dist/packages/gemini-core/examples/simple.d.ts +0 -1
  47. package/backend/dist/packages/gemini-core/examples/simple.js +0 -73
  48. package/backend/dist/packages/gemini-core/examples/simple.js.map +0 -1
  49. package/backend/dist/packages/gemini-core/index.d.ts +0 -3
  50. package/backend/dist/packages/gemini-core/index.js +0 -27
  51. package/backend/dist/packages/gemini-core/index.js.map +0 -1
  52. package/backend/dist/packages/gemini-core/src/code_assist/codeAssist.d.ts +0 -5
  53. package/backend/dist/packages/gemini-core/src/code_assist/codeAssist.js +0 -17
  54. package/backend/dist/packages/gemini-core/src/code_assist/codeAssist.js.map +0 -1
  55. package/backend/dist/packages/gemini-core/src/code_assist/converter.d.ts +0 -69
  56. package/backend/dist/packages/gemini-core/src/code_assist/converter.js +0 -129
  57. package/backend/dist/packages/gemini-core/src/code_assist/converter.js.map +0 -1
  58. package/backend/dist/packages/gemini-core/src/code_assist/oauth-credential-storage.d.ts +0 -8
  59. package/backend/dist/packages/gemini-core/src/code_assist/oauth-credential-storage.js +0 -84
  60. package/backend/dist/packages/gemini-core/src/code_assist/oauth-credential-storage.js.map +0 -1
  61. package/backend/dist/packages/gemini-core/src/code_assist/oauth2.d.ts +0 -12
  62. package/backend/dist/packages/gemini-core/src/code_assist/oauth2.js +0 -371
  63. package/backend/dist/packages/gemini-core/src/code_assist/oauth2.js.map +0 -1
  64. package/backend/dist/packages/gemini-core/src/code_assist/server.d.ts +0 -28
  65. package/backend/dist/packages/gemini-core/src/code_assist/server.js +0 -135
  66. package/backend/dist/packages/gemini-core/src/code_assist/server.js.map +0 -1
  67. package/backend/dist/packages/gemini-core/src/code_assist/setup.d.ts +0 -10
  68. package/backend/dist/packages/gemini-core/src/code_assist/setup.js +0 -94
  69. package/backend/dist/packages/gemini-core/src/code_assist/setup.js.map +0 -1
  70. package/backend/dist/packages/gemini-core/src/code_assist/types.d.ts +0 -106
  71. package/backend/dist/packages/gemini-core/src/code_assist/types.js +0 -28
  72. package/backend/dist/packages/gemini-core/src/code_assist/types.js.map +0 -1
  73. package/backend/dist/packages/gemini-core/src/config/config.d.ts +0 -22
  74. package/backend/dist/packages/gemini-core/src/config/config.js +0 -38
  75. package/backend/dist/packages/gemini-core/src/config/config.js.map +0 -1
  76. package/backend/dist/packages/gemini-core/src/config/models.d.ts +0 -6
  77. package/backend/dist/packages/gemini-core/src/config/models.js +0 -13
  78. package/backend/dist/packages/gemini-core/src/config/models.js.map +0 -1
  79. package/backend/dist/packages/gemini-core/src/config/storage.d.ts +0 -8
  80. package/backend/dist/packages/gemini-core/src/config/storage.js +0 -25
  81. package/backend/dist/packages/gemini-core/src/config/storage.js.map +0 -1
  82. package/backend/dist/packages/gemini-core/src/core/contentGenerator.d.ts +0 -23
  83. package/backend/dist/packages/gemini-core/src/core/contentGenerator.js +0 -63
  84. package/backend/dist/packages/gemini-core/src/core/contentGenerator.js.map +0 -1
  85. package/backend/dist/packages/gemini-core/src/core/geminiChat.d.ts +0 -34
  86. package/backend/dist/packages/gemini-core/src/core/geminiChat.js +0 -247
  87. package/backend/dist/packages/gemini-core/src/core/geminiChat.js.map +0 -1
  88. package/backend/dist/packages/gemini-core/src/core/geminiRequest.d.ts +0 -3
  89. package/backend/dist/packages/gemini-core/src/core/geminiRequest.js +0 -8
  90. package/backend/dist/packages/gemini-core/src/core/geminiRequest.js.map +0 -1
  91. package/backend/dist/packages/gemini-core/src/core/prompts.d.ts +0 -7
  92. package/backend/dist/packages/gemini-core/src/core/prompts.js +0 -69
  93. package/backend/dist/packages/gemini-core/src/core/prompts.js.map +0 -1
  94. package/backend/dist/packages/gemini-core/src/core/tokenLimits.d.ts +0 -5
  95. package/backend/dist/packages/gemini-core/src/core/tokenLimits.js +0 -25
  96. package/backend/dist/packages/gemini-core/src/core/tokenLimits.js.map +0 -1
  97. package/backend/dist/packages/gemini-core/src/index.d.ts +0 -18
  98. package/backend/dist/packages/gemini-core/src/index.js +0 -37
  99. package/backend/dist/packages/gemini-core/src/index.js.map +0 -1
  100. package/backend/dist/packages/gemini-core/src/mcp/token-storage/base-token-storage.d.ts +0 -14
  101. package/backend/dist/packages/gemini-core/src/mcp/token-storage/base-token-storage.js +0 -34
  102. package/backend/dist/packages/gemini-core/src/mcp/token-storage/base-token-storage.js.map +0 -1
  103. package/backend/dist/packages/gemini-core/src/mcp/token-storage/file-token-storage.d.ts +0 -19
  104. package/backend/dist/packages/gemini-core/src/mcp/token-storage/file-token-storage.js +0 -141
  105. package/backend/dist/packages/gemini-core/src/mcp/token-storage/file-token-storage.js.map +0 -1
  106. package/backend/dist/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.d.ts +0 -18
  107. package/backend/dist/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.js +0 -74
  108. package/backend/dist/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.js.map +0 -1
  109. package/backend/dist/packages/gemini-core/src/mcp/token-storage/index.d.ts +0 -6
  110. package/backend/dist/packages/gemini-core/src/mcp/token-storage/index.js +0 -24
  111. package/backend/dist/packages/gemini-core/src/mcp/token-storage/index.js.map +0 -1
  112. package/backend/dist/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.d.ts +0 -26
  113. package/backend/dist/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.js +0 -188
  114. package/backend/dist/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.js.map +0 -1
  115. package/backend/dist/packages/gemini-core/src/mcp/token-storage/types.d.ts +0 -27
  116. package/backend/dist/packages/gemini-core/src/mcp/token-storage/types.js +0 -9
  117. package/backend/dist/packages/gemini-core/src/mcp/token-storage/types.js.map +0 -1
  118. package/backend/dist/packages/gemini-core/src/utils/errors.d.ts +0 -34
  119. package/backend/dist/packages/gemini-core/src/utils/errors.js +0 -103
  120. package/backend/dist/packages/gemini-core/src/utils/errors.js.map +0 -1
  121. package/backend/dist/packages/gemini-core/src/utils/partUtils.d.ts +0 -7
  122. package/backend/dist/packages/gemini-core/src/utils/partUtils.js +0 -108
  123. package/backend/dist/packages/gemini-core/src/utils/partUtils.js.map +0 -1
  124. package/backend/dist/packages/gemini-core/src/utils/quotaErrorDetection.d.ts +0 -16
  125. package/backend/dist/packages/gemini-core/src/utils/quotaErrorDetection.js +0 -60
  126. package/backend/dist/packages/gemini-core/src/utils/quotaErrorDetection.js.map +0 -1
  127. package/backend/dist/packages/gemini-core/src/utils/retry.d.ts +0 -14
  128. package/backend/dist/packages/gemini-core/src/utils/retry.js +0 -154
  129. package/backend/dist/packages/gemini-core/src/utils/retry.js.map +0 -1
  130. package/backend/dist/packages/gemini-core/src/utils/session.d.ts +0 -1
  131. package/backend/dist/packages/gemini-core/src/utils/session.js +0 -6
  132. package/backend/dist/packages/gemini-core/src/utils/session.js.map +0 -1
  133. package/backend/dist/packages/gemini-core/src/utils/userAccountManager.d.ts +0 -10
  134. package/backend/dist/packages/gemini-core/src/utils/userAccountManager.js +0 -106
  135. package/backend/dist/packages/gemini-core/src/utils/userAccountManager.js.map +0 -1
  136. package/backend/dist/src/gemini/gemini-llm.provider.d.ts +0 -12
  137. package/backend/dist/src/gemini/gemini-llm.provider.js +0 -126
  138. package/backend/dist/src/gemini/gemini-llm.provider.js.map +0 -1
  139. package/backend/dist/src/gemini/gemini.module.d.ts +0 -2
  140. package/backend/dist/src/gemini/gemini.module.js +0 -21
  141. package/backend/dist/src/gemini/gemini.module.js.map +0 -1
  142. package/backend/packages/gemini-core/CODEMAP.md +0 -30
  143. package/backend/packages/gemini-core/examples/simple.ts +0 -120
  144. package/backend/packages/gemini-core/index.ts +0 -15
  145. package/backend/packages/gemini-core/src/code_assist/codeAssist.ts +0 -37
  146. package/backend/packages/gemini-core/src/code_assist/converter.ts +0 -250
  147. package/backend/packages/gemini-core/src/code_assist/oauth-credential-storage.ts +0 -129
  148. package/backend/packages/gemini-core/src/code_assist/oauth2.ts +0 -541
  149. package/backend/packages/gemini-core/src/code_assist/server.ts +0 -236
  150. package/backend/packages/gemini-core/src/code_assist/setup.ts +0 -124
  151. package/backend/packages/gemini-core/src/code_assist/types.ts +0 -201
  152. package/backend/packages/gemini-core/src/config/config.ts +0 -75
  153. package/backend/packages/gemini-core/src/config/models.ts +0 -23
  154. package/backend/packages/gemini-core/src/config/storage.ts +0 -30
  155. package/backend/packages/gemini-core/src/core/contentGenerator.ts +0 -136
  156. package/backend/packages/gemini-core/src/core/geminiChat.ts +0 -385
  157. package/backend/packages/gemini-core/src/core/geminiRequest.ts +0 -19
  158. package/backend/packages/gemini-core/src/core/prompts.ts +0 -109
  159. package/backend/packages/gemini-core/src/core/tokenLimits.ts +0 -32
  160. package/backend/packages/gemini-core/src/index.ts +0 -35
  161. package/backend/packages/gemini-core/src/mcp/token-storage/base-token-storage.ts +0 -49
  162. package/backend/packages/gemini-core/src/mcp/token-storage/file-token-storage.ts +0 -184
  163. package/backend/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.ts +0 -97
  164. package/backend/packages/gemini-core/src/mcp/token-storage/index.ts +0 -14
  165. package/backend/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.ts +0 -251
  166. package/backend/packages/gemini-core/src/mcp/token-storage/types.ts +0 -42
  167. package/backend/packages/gemini-core/src/utils/errors.ts +0 -112
  168. package/backend/packages/gemini-core/src/utils/partUtils.ts +0 -169
  169. package/backend/packages/gemini-core/src/utils/quotaErrorDetection.ts +0 -102
  170. package/backend/packages/gemini-core/src/utils/retry.ts +0 -265
  171. package/backend/packages/gemini-core/src/utils/session.ts +0 -9
  172. package/backend/packages/gemini-core/src/utils/userAccountManager.ts +0 -140
@@ -1,154 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retryWithBackoff = retryWithBackoff;
4
- exports.getErrorStatus = getErrorStatus;
5
- const DEFAULT_RETRY_OPTIONS = {
6
- maxAttempts: 5,
7
- initialDelayMs: 5000,
8
- maxDelayMs: 30000,
9
- shouldRetryOnError: defaultShouldRetry,
10
- };
11
- function defaultShouldRetry(error) {
12
- if (error && typeof error.status === 'number') {
13
- const status = error.status;
14
- if (status === 429 || (status >= 500 && status < 600)) {
15
- return true;
16
- }
17
- }
18
- if (error instanceof Error && error.message) {
19
- if (error.message.includes('429'))
20
- return true;
21
- if (error.message.match(/5\d{2}/))
22
- return true;
23
- }
24
- return false;
25
- }
26
- function delay(ms) {
27
- return new Promise((resolve) => setTimeout(resolve, ms));
28
- }
29
- async function retryWithBackoff(fn, options) {
30
- if (options?.maxAttempts !== undefined && options.maxAttempts <= 0) {
31
- throw new Error('maxAttempts must be a positive number.');
32
- }
33
- const cleanOptions = options
34
- ? Object.fromEntries(Object.entries(options).filter(([_, v]) => v != null))
35
- : {};
36
- const { maxAttempts, initialDelayMs, maxDelayMs, shouldRetryOnError, shouldRetryOnContent, } = {
37
- ...DEFAULT_RETRY_OPTIONS,
38
- ...cleanOptions,
39
- };
40
- let attempt = 0;
41
- let currentDelay = initialDelayMs;
42
- while (attempt < maxAttempts) {
43
- attempt++;
44
- try {
45
- const result = await fn();
46
- if (shouldRetryOnContent &&
47
- shouldRetryOnContent(result)) {
48
- const jitter = currentDelay * 0.3 * (Math.random() * 2 - 1);
49
- const delayWithJitter = Math.max(0, currentDelay + jitter);
50
- await delay(delayWithJitter);
51
- currentDelay = Math.min(maxDelayMs, currentDelay * 2);
52
- continue;
53
- }
54
- return result;
55
- }
56
- catch (error) {
57
- if (attempt >= maxAttempts || !shouldRetryOnError(error)) {
58
- throw error;
59
- }
60
- const { delayDurationMs, errorStatus: delayErrorStatus } = getDelayDurationAndStatus(error);
61
- if (delayDurationMs > 0) {
62
- console.warn(`Attempt ${attempt} failed with status ${delayErrorStatus ?? 'unknown'}. Retrying after explicit delay of ${delayDurationMs}ms...`, error);
63
- await delay(delayDurationMs);
64
- currentDelay = initialDelayMs;
65
- }
66
- else {
67
- const errorStatus = getErrorStatus(error);
68
- logRetryAttempt(attempt, error, errorStatus);
69
- const jitter = currentDelay * 0.3 * (Math.random() * 2 - 1);
70
- const delayWithJitter = Math.max(0, currentDelay + jitter);
71
- await delay(delayWithJitter);
72
- currentDelay = Math.min(maxDelayMs, currentDelay * 2);
73
- }
74
- }
75
- }
76
- throw new Error('Retry attempts exhausted');
77
- }
78
- function getErrorStatus(error) {
79
- if (typeof error === 'object' && error !== null) {
80
- if ('status' in error && typeof error.status === 'number') {
81
- return error.status;
82
- }
83
- if ('response' in error &&
84
- typeof error.response === 'object' &&
85
- error.response !== null) {
86
- const response = error.response;
87
- if ('status' in response && typeof response.status === 'number') {
88
- return response.status;
89
- }
90
- }
91
- }
92
- return undefined;
93
- }
94
- function getRetryAfterDelayMs(error) {
95
- if (typeof error === 'object' && error !== null) {
96
- if ('response' in error &&
97
- typeof error.response === 'object' &&
98
- error.response !== null) {
99
- const response = error.response;
100
- if ('headers' in response &&
101
- typeof response.headers === 'object' &&
102
- response.headers !== null) {
103
- const headers = response.headers;
104
- const retryAfterHeader = headers['retry-after'];
105
- if (typeof retryAfterHeader === 'string') {
106
- const retryAfterSeconds = parseInt(retryAfterHeader, 10);
107
- if (!isNaN(retryAfterSeconds)) {
108
- return retryAfterSeconds * 1000;
109
- }
110
- const retryAfterDate = new Date(retryAfterHeader);
111
- if (!isNaN(retryAfterDate.getTime())) {
112
- return Math.max(0, retryAfterDate.getTime() - Date.now());
113
- }
114
- }
115
- }
116
- }
117
- }
118
- return 0;
119
- }
120
- function getDelayDurationAndStatus(error) {
121
- const errorStatus = getErrorStatus(error);
122
- let delayDurationMs = 0;
123
- if (errorStatus === 429) {
124
- delayDurationMs = getRetryAfterDelayMs(error);
125
- }
126
- return { delayDurationMs, errorStatus };
127
- }
128
- function logRetryAttempt(attempt, error, errorStatus) {
129
- let message = `Attempt ${attempt} failed. Retrying with backoff...`;
130
- if (errorStatus) {
131
- message = `Attempt ${attempt} failed with status ${errorStatus}. Retrying with backoff...`;
132
- }
133
- if (errorStatus === 429) {
134
- console.warn(message, error);
135
- }
136
- else if (errorStatus && errorStatus >= 500 && errorStatus < 600) {
137
- console.error(message, error);
138
- }
139
- else if (error instanceof Error) {
140
- if (error.message.includes('429')) {
141
- console.warn(`Attempt ${attempt} failed with 429 error (no Retry-After header). Retrying with backoff...`, error);
142
- }
143
- else if (error.message.match(/5\d{2}/)) {
144
- console.error(`Attempt ${attempt} failed with 5xx error. Retrying with backoff...`, error);
145
- }
146
- else {
147
- console.warn(message, error);
148
- }
149
- }
150
- else {
151
- console.warn(message, error);
152
- }
153
- }
154
- //# sourceMappingURL=retry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../../../packages/gemini-core/src/utils/retry.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const sessionId: `${string}-${string}-${string}-${string}-${string}`;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sessionId = void 0;
4
- const node_crypto_1 = require("node:crypto");
5
- exports.sessionId = (0, node_crypto_1.randomUUID)();
6
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../packages/gemini-core/src/utils/session.ts"],"names":[],"mappings":";;;AAMA,6CAAyC;AAE5B,QAAA,SAAS,GAAG,IAAA,wBAAU,GAAE,CAAC"}
@@ -1,10 +0,0 @@
1
- export declare class UserAccountManager {
2
- private getGoogleAccountsCachePath;
3
- private parseAndValidateAccounts;
4
- private readAccountsSync;
5
- private readAccounts;
6
- cacheGoogleAccount(email: string): Promise<void>;
7
- getCachedGoogleAccount(): string | null;
8
- getLifetimeGoogleAccounts(): number;
9
- clearCachedGoogleAccount(): Promise<void>;
10
- }
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UserAccountManager = void 0;
4
- const node_path_1 = require("node:path");
5
- const node_fs_1 = require("node:fs");
6
- const storage_1 = require("../config/storage");
7
- class UserAccountManager {
8
- getGoogleAccountsCachePath() {
9
- return storage_1.Storage.getGoogleAccountsPath();
10
- }
11
- parseAndValidateAccounts(content) {
12
- const defaultState = { active: null, old: [] };
13
- if (!content.trim()) {
14
- return defaultState;
15
- }
16
- const parsed = JSON.parse(content);
17
- if (typeof parsed !== 'object' || parsed === null) {
18
- console.log('Invalid accounts file schema, starting fresh.');
19
- return defaultState;
20
- }
21
- const { active, old } = parsed;
22
- const isValid = (active === undefined || active === null || typeof active === 'string') &&
23
- (old === undefined ||
24
- (Array.isArray(old) && old.every((i) => typeof i === 'string')));
25
- if (!isValid) {
26
- console.log('Invalid accounts file schema, starting fresh.');
27
- return defaultState;
28
- }
29
- return {
30
- active: parsed.active ?? null,
31
- old: parsed.old ?? [],
32
- };
33
- }
34
- readAccountsSync(filePath) {
35
- const defaultState = { active: null, old: [] };
36
- try {
37
- const content = (0, node_fs_1.readFileSync)(filePath, 'utf-8');
38
- return this.parseAndValidateAccounts(content);
39
- }
40
- catch (error) {
41
- if (error instanceof Error &&
42
- 'code' in error &&
43
- error.code === 'ENOENT') {
44
- return defaultState;
45
- }
46
- console.log('Error during sync read of accounts, starting fresh.', error);
47
- return defaultState;
48
- }
49
- }
50
- async readAccounts(filePath) {
51
- const defaultState = { active: null, old: [] };
52
- try {
53
- const content = await node_fs_1.promises.readFile(filePath, 'utf-8');
54
- return this.parseAndValidateAccounts(content);
55
- }
56
- catch (error) {
57
- if (error instanceof Error &&
58
- 'code' in error &&
59
- error.code === 'ENOENT') {
60
- return defaultState;
61
- }
62
- console.log('Could not parse accounts file, starting fresh.', error);
63
- return defaultState;
64
- }
65
- }
66
- async cacheGoogleAccount(email) {
67
- const filePath = this.getGoogleAccountsCachePath();
68
- await node_fs_1.promises.mkdir(node_path_1.default.dirname(filePath), { recursive: true });
69
- const accounts = await this.readAccounts(filePath);
70
- if (accounts.active && accounts.active !== email) {
71
- if (!accounts.old.includes(accounts.active)) {
72
- accounts.old.push(accounts.active);
73
- }
74
- }
75
- accounts.old = accounts.old.filter((oldEmail) => oldEmail !== email);
76
- accounts.active = email;
77
- await node_fs_1.promises.writeFile(filePath, JSON.stringify(accounts, null, 2), 'utf-8');
78
- }
79
- getCachedGoogleAccount() {
80
- const filePath = this.getGoogleAccountsCachePath();
81
- const accounts = this.readAccountsSync(filePath);
82
- return accounts.active;
83
- }
84
- getLifetimeGoogleAccounts() {
85
- const filePath = this.getGoogleAccountsCachePath();
86
- const accounts = this.readAccountsSync(filePath);
87
- const allAccounts = new Set(accounts.old);
88
- if (accounts.active) {
89
- allAccounts.add(accounts.active);
90
- }
91
- return allAccounts.size;
92
- }
93
- async clearCachedGoogleAccount() {
94
- const filePath = this.getGoogleAccountsCachePath();
95
- const accounts = await this.readAccounts(filePath);
96
- if (accounts.active) {
97
- if (!accounts.old.includes(accounts.active)) {
98
- accounts.old.push(accounts.active);
99
- }
100
- accounts.active = null;
101
- }
102
- await node_fs_1.promises.writeFile(filePath, JSON.stringify(accounts, null, 2), 'utf-8');
103
- }
104
- }
105
- exports.UserAccountManager = UserAccountManager;
106
- //# sourceMappingURL=userAccountManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userAccountManager.js","sourceRoot":"","sources":["../../../../../packages/gemini-core/src/utils/userAccountManager.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { OnModuleInit } from '@nestjs/common';
2
- import { LlmProvider, LlmProviderRequest, LlmModel, LlmResponse } from '../llm-provider/llm-provider.interface';
3
- export declare class GeminiLlmProvider implements LlmProvider, OnModuleInit {
4
- private config;
5
- private initializationPromise;
6
- private readonly tokenizer;
7
- constructor();
8
- onModuleInit(): void;
9
- private initialize;
10
- getModels(): Promise<LlmModel[]>;
11
- generateContent(request: LlmProviderRequest): Promise<LlmResponse>;
12
- }
@@ -1,126 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.GeminiLlmProvider = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const index_1 = require("../../packages/gemini-core/src/index");
15
- const crypto_1 = require("crypto");
16
- const tiktoken_tokenizer_1 = require("../../packages/tokenpatch/strategies/tiktoken-tokenizer");
17
- function getResponseText(response) {
18
- if (response.candidates && response.candidates.length > 0) {
19
- const candidate = response.candidates[0];
20
- if (candidate.content &&
21
- candidate.content.parts &&
22
- candidate.content.parts.length > 0) {
23
- return candidate.content.parts
24
- .filter((part) => part.text)
25
- .map((part) => part.text)
26
- .join('');
27
- }
28
- }
29
- return null;
30
- }
31
- let GeminiLlmProvider = class GeminiLlmProvider {
32
- constructor() {
33
- this.tokenizer = new tiktoken_tokenizer_1.TiktokenTokenizer();
34
- this.config = new index_1.Config({
35
- sessionId: `repoburg-backend-session-${(0, crypto_1.randomUUID)()}`,
36
- model: 'gemini-2.0-flash',
37
- });
38
- }
39
- onModuleInit() {
40
- this.initializationPromise = this.initialize();
41
- }
42
- async initialize() {
43
- try {
44
- await this.config.refreshAuth(index_1.AuthType.LOGIN_WITH_GOOGLE);
45
- }
46
- catch (error) {
47
- }
48
- }
49
- async getModels() {
50
- return [
51
- {
52
- id: 'gemini-2.0-flash',
53
- name: 'Gemini 2.0 Flash (Local)',
54
- provider: 'gemini',
55
- },
56
- {
57
- id: 'gemini-2.0-pro-exp-02-05',
58
- name: 'Gemini 2.0 Pro Exp (Local)',
59
- provider: 'gemini',
60
- },
61
- {
62
- id: 'gemini-1.5-pro',
63
- name: 'Gemini 1.5 Pro (Local)',
64
- provider: 'gemini',
65
- },
66
- {
67
- id: 'gemini-1.5-flash',
68
- name: 'Gemini 1.5 Flash (Local)',
69
- provider: 'gemini',
70
- },
71
- ];
72
- }
73
- async generateContent(request) {
74
- try {
75
- await this.initializationPromise;
76
- }
77
- catch (error) {
78
- throw new Error('Gemini LLM Provider failed to initialize. Please check Google authentication.');
79
- }
80
- const { prompt, systemInstruction, history, modelId, generationConfig } = request;
81
- const model = (modelId || this.config.getModel()).replace('gemini/', '');
82
- let inputTokenText = (systemInstruction || '') + '\n' + prompt;
83
- if (history) {
84
- inputTokenText += history
85
- .map((h) => h.parts.map((p) => p.text).join(''))
86
- .join('\n');
87
- }
88
- const inputTokenCount = this.tokenizer.tokenize(inputTokenText).length;
89
- try {
90
- const finalGenerationConfig = {
91
- ...generationConfig,
92
- };
93
- if (systemInstruction) {
94
- finalGenerationConfig.systemInstruction = systemInstruction;
95
- }
96
- const chat = new index_1.GeminiChat(this.config, finalGenerationConfig, history);
97
- const result = await chat.sendMessageStream(model, { message: prompt }, `prompt-${(0, crypto_1.randomUUID)()}`);
98
- let fullResponse = '';
99
- for await (const chunk of result) {
100
- if (chunk.type === 'chunk' && chunk.value) {
101
- const text = getResponseText(chunk.value);
102
- if (text) {
103
- fullResponse += text;
104
- }
105
- }
106
- }
107
- const outputTokenCount = this.tokenizer.tokenize(fullResponse).length;
108
- return {
109
- text: fullResponse,
110
- usage: {
111
- inputTokens: inputTokenCount,
112
- outputTokens: outputTokenCount,
113
- },
114
- };
115
- }
116
- catch (error) {
117
- throw new Error(`Gemini Error: ${error.message}`);
118
- }
119
- }
120
- };
121
- exports.GeminiLlmProvider = GeminiLlmProvider;
122
- exports.GeminiLlmProvider = GeminiLlmProvider = __decorate([
123
- (0, common_1.Injectable)(),
124
- __metadata("design:paramtypes", [])
125
- ], GeminiLlmProvider);
126
- //# sourceMappingURL=gemini-llm.provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini-llm.provider.js","sourceRoot":"","sources":["../../../src/gemini/gemini-llm.provider.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare class GeminiModule {
2
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.GeminiModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const gemini_llm_provider_1 = require("./gemini-llm.provider");
12
- let GeminiModule = class GeminiModule {
13
- };
14
- exports.GeminiModule = GeminiModule;
15
- exports.GeminiModule = GeminiModule = __decorate([
16
- (0, common_1.Module)({
17
- providers: [gemini_llm_provider_1.GeminiLlmProvider],
18
- exports: [gemini_llm_provider_1.GeminiLlmProvider],
19
- })
20
- ], GeminiModule);
21
- //# sourceMappingURL=gemini.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.module.js","sourceRoot":"","sources":["../../../src/gemini/gemini.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+DAA0D;AAMnD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IAJxB,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,uCAAiB,CAAC;QAC9B,OAAO,EAAE,CAAC,uCAAiB,CAAC;KAC7B,CAAC;GACW,YAAY,CAAG"}
@@ -1,30 +0,0 @@
1
- # Gemini Core Codemap
2
-
3
- A robust, standalone wrapper for Google Gemini and Code Assist APIs, handling the complexities of OAuth2, streaming, and token management.
4
-
5
- ## 🚀 Overview
6
- This package encapsulates the logic for communicating with Google's LLM infrastructure, providing a clean interface for the rest of the Repoburg backend.
7
-
8
- ## ✨ Key Components (`src/`)
9
-
10
- ### Core AI Logic (`core/`)
11
- - `contentGenerator.ts`: Low-level generator for model responses.
12
- - `geminiChat.ts`: Manages multi-turn conversation state.
13
- - `geminiRequest.ts`: Orchestrates the raw HTTP/gRPC requests to Gemini.
14
- - `tokenLimits.ts`: Logic for calculating and enforcing model context windows.
15
-
16
- ### Code Assist & Auth (`code_assist/`)
17
- - `oauth2.ts` & `server.ts`: Handles the OAuth2 flow for Google Cloud credentials.
18
- - `oauth-credential-storage.ts`: Secure storage interface for persistent tokens.
19
- - `codeAssist.ts`: Specialized logic for Google's Enterprise Code Assist features.
20
-
21
- ### Configuration (`config/`)
22
- - `models.ts`: Registry of supported Gemini model IDs (Flash, Pro, Lite).
23
- - `storage.ts`: Abstract and concrete implementations for storing session and auth data.
24
-
25
- ### Utilities (`utils/`)
26
- - `quotaErrorDetection.ts`: Detects and parses specific Google API quota failures.
27
- - `retry.ts`: Implementation of exponential backoff for transient failures.
28
-
29
- ## 🛠 Usage
30
- The package is exported via `index.ts`, exposing the `ContentGenerator` and model constants. It is primarily consumed by the `InteractiveChatModule` in the NestJS backend.
@@ -1,120 +0,0 @@
1
- import { randomUUID } from 'crypto';
2
- import {
3
- Content,
4
- GenerateContentConfig,
5
- GenerateContentResponse,
6
- } from '@google/genai';
7
- import { AuthType, Config, GeminiChat, StreamEventType } from '../src';
8
-
9
- /**
10
- * A helper function to extract the text content from a streaming response chunk.
11
- * The Gemini API streams responses, and this function helps aggregate the text.
12
- * @param response A GenerateContentResponse chunk from the stream.
13
- * @returns The text content of the chunk, or null if there is none.
14
- */
15
- function getResponseText(response: GenerateContentResponse): string | null {
16
- if (response.candidates && response.candidates.length > 0) {
17
- const candidate = response.candidates[0];
18
-
19
- if (
20
- candidate.content &&
21
- candidate.content.parts &&
22
- candidate.content.parts.length > 0
23
- ) {
24
- return candidate.content.parts
25
- .filter((part: any) => part.text)
26
- .map((part: any) => part.text)
27
- .join('');
28
- }
29
- }
30
- return null;
31
- }
32
-
33
- async function main() {
34
- console.log('--- Gemini Chat API Example (with Google Login) ---');
35
-
36
- // 1. Set up for Google Login
37
- // For this example, we'll authenticate using your Google account.
38
- // The first time you run this, a browser window will open for you to log in.
39
- // Your credentials will be cached for future runs in `~/.gemini/`.
40
- console.log('✓ Using Google Login for authentication.');
41
-
42
- // 2. Create a Configuration Object
43
- // The Config object holds settings for the session. For this example,
44
- // we provide a few essential parameters.
45
- const config = new Config({
46
- sessionId: `session-${randomUUID()}`,
47
- model: 'gemini-2.5-pro', // A default model for the session
48
- });
49
- console.log('✓ Configuration created.');
50
-
51
- // 3. Authenticate and Prepare the API Client (ContentGenerator)
52
- // The GeminiChat class relies on a `ContentGenerator` instance being available
53
- // on the Config object to make API calls. `refreshAuth` sets this up.
54
- try {
55
- // This will trigger the OAuth2 flow in the browser on the first run.
56
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
57
- } catch (e) {
58
- console.error('Authentication failed:', e);
59
- return;
60
- }
61
- console.log('✓ Authenticated with your Google account.');
62
-
63
- // 4. Define System Instruction and Conversation History
64
- const systemInstruction =
65
- 'You are a poetic assistant. All your responses must be in the form of a haiku.';
66
-
67
- const initialHistory: Content[] = [
68
- { role: 'user', parts: [{ text: 'What is the largest mammal?' }] },
69
- {
70
- role: 'model',
71
- parts: [
72
- {
73
- text: "Giant blue whale swims,\nOcean's gentle, massive king,\nLargest on the Earth.",
74
- },
75
- ],
76
- },
77
- ];
78
-
79
- const generationConfig: GenerateContentConfig = {
80
- systemInstruction,
81
- temperature: 0.7,
82
- };
83
- console.log('✓ System instruction and history prepared.');
84
-
85
- // 5. Instantiate GeminiChat
86
- // We provide the config, generation settings (with system instruction), and initial history.
87
- const chat = new GeminiChat(config, generationConfig, initialHistory);
88
- console.log('✓ GeminiChat instance created.');
89
-
90
- // 6. Send a New Message with History and System Instruction
91
- console.log('\nUser: How much does it weigh?');
92
- const responseStream = await chat.sendMessageStream(
93
- 'gemini-2.5-pro', // You can specify a model here to override the config default for this call
94
- { message: 'How much does it weigh?' },
95
- `prompt-${randomUUID()}`,
96
- );
97
-
98
- // 7. Process and Display the Streaming Response
99
- let fullResponse = '';
100
- process.stdout.write('Gemini: ');
101
- for await (const chunk of responseStream) {
102
- // The stream yields events. We are interested in 'chunk' events which contain response data.
103
- if (chunk.type === StreamEventType.CHUNK && chunk.value) {
104
- const text = getResponseText(chunk.value);
105
- if (text) {
106
- process.stdout.write(text);
107
- fullResponse += text;
108
- }
109
- }
110
- }
111
- console.log(); // Newline after the stream ends
112
-
113
- // 8. Verify the updated history
114
- // The chat history now contains the full conversation, including the latest turn.
115
- console.log('\n--- Full Conversation History ---');
116
- console.log(JSON.stringify(chat.getHistory(), null, 2));
117
- console.log('--- End of Example ---');
118
- }
119
-
120
- main().catch(console.error);
@@ -1,15 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- export * from './src/index';
8
- export { Storage } from './src/config/storage';
9
- export {
10
- DEFAULT_GEMINI_MODEL,
11
- DEFAULT_GEMINI_MODEL_AUTO,
12
- DEFAULT_GEMINI_FLASH_MODEL,
13
- DEFAULT_GEMINI_FLASH_LITE_MODEL,
14
- DEFAULT_GEMINI_EMBEDDING_MODEL,
15
- } from './src/config/models';