@machina.ai/cell-cli-core 1.18.4-rc1 → 1.19.4-rc2

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 (164) hide show
  1. package/dist/package.json +2 -2
  2. package/dist/src/agents/codebase-investigator.js +1 -1
  3. package/dist/src/availability/modelAvailabilityService.d.ts +34 -0
  4. package/dist/src/availability/modelAvailabilityService.js +84 -0
  5. package/dist/src/availability/modelAvailabilityService.js.map +1 -0
  6. package/dist/src/availability/modelAvailabilityService.test.d.ts +6 -0
  7. package/dist/src/availability/modelAvailabilityService.test.js +140 -0
  8. package/dist/src/availability/modelAvailabilityService.test.js.map +1 -0
  9. package/dist/src/availability/modelPolicy.d.ts +42 -0
  10. package/dist/src/availability/modelPolicy.js +7 -0
  11. package/dist/src/availability/modelPolicy.js.map +1 -0
  12. package/dist/src/availability/policyCatalog.d.ts +20 -0
  13. package/dist/src/availability/policyCatalog.js +83 -0
  14. package/dist/src/availability/policyCatalog.js.map +1 -0
  15. package/dist/src/availability/policyCatalog.test.d.ts +6 -0
  16. package/dist/src/availability/policyCatalog.test.js +70 -0
  17. package/dist/src/availability/policyCatalog.test.js.map +1 -0
  18. package/dist/src/config/config.d.ts +10 -5
  19. package/dist/src/config/config.js +31 -18
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +4 -73
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/config/defaultModelConfigs.js +25 -0
  24. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  25. package/dist/src/confirmation-bus/message-bus.d.ts +6 -0
  26. package/dist/src/confirmation-bus/message-bus.js +63 -2
  27. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  28. package/dist/src/confirmation-bus/types.d.ts +25 -2
  29. package/dist/src/confirmation-bus/types.js +3 -0
  30. package/dist/src/confirmation-bus/types.js.map +1 -1
  31. package/dist/src/core/AuthenticatedContentGenerator.d.ts +20 -0
  32. package/dist/src/core/AuthenticatedContentGenerator.js +115 -0
  33. package/dist/src/core/AuthenticatedContentGenerator.js.map +1 -0
  34. package/dist/src/core/baseLlmClient.d.ts +27 -1
  35. package/dist/src/core/baseLlmClient.js +66 -45
  36. package/dist/src/core/baseLlmClient.js.map +1 -1
  37. package/dist/src/core/baseLlmClient.test.js +94 -6
  38. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  39. package/dist/src/core/client.js +77 -4
  40. package/dist/src/core/client.js.map +1 -1
  41. package/dist/src/core/client.test.js +57 -3
  42. package/dist/src/core/client.test.js.map +1 -1
  43. package/dist/src/core/clientHookTriggers.d.ts +36 -0
  44. package/dist/src/core/clientHookTriggers.js +76 -0
  45. package/dist/src/core/clientHookTriggers.js.map +1 -0
  46. package/dist/src/core/contentGenerator.js +8 -2
  47. package/dist/src/core/contentGenerator.js.map +1 -1
  48. package/dist/src/core/contentGenerator.test.js +108 -0
  49. package/dist/src/core/contentGenerator.test.js.map +1 -1
  50. package/dist/src/core/coreToolScheduler.test.js +2 -1
  51. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  52. package/dist/src/core/geminiChat.js +1 -1
  53. package/dist/src/core/geminiChat.js.map +1 -1
  54. package/dist/src/core/nonInteractiveToolExecutor.test.js +10 -2
  55. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  56. package/dist/src/core/prompts.js +21 -6
  57. package/dist/src/core/prompts.js.map +1 -1
  58. package/dist/src/core/prompts.test.js +23 -0
  59. package/dist/src/core/prompts.test.js.map +1 -1
  60. package/dist/src/core/turn.d.ts +5 -0
  61. package/dist/src/core/turn.js +10 -0
  62. package/dist/src/core/turn.js.map +1 -1
  63. package/dist/src/fallback/handler.js +1 -1
  64. package/dist/src/fallback/handler.js.map +1 -1
  65. package/dist/src/generated/git-commit.d.ts +2 -2
  66. package/dist/src/generated/git-commit.js +2 -2
  67. package/dist/src/hooks/hookEventHandler.d.ts +109 -0
  68. package/dist/src/hooks/hookEventHandler.js +486 -0
  69. package/dist/src/hooks/hookEventHandler.js.map +1 -0
  70. package/dist/src/hooks/hookEventHandler.test.d.ts +6 -0
  71. package/dist/src/hooks/hookEventHandler.test.js +384 -0
  72. package/dist/src/hooks/hookEventHandler.test.js.map +1 -0
  73. package/dist/src/hooks/hookSystem.d.ts +48 -0
  74. package/dist/src/hooks/hookSystem.js +83 -0
  75. package/dist/src/hooks/hookSystem.js.map +1 -0
  76. package/dist/src/hooks/hookSystem.test.d.ts +6 -0
  77. package/dist/src/hooks/hookSystem.test.js +213 -0
  78. package/dist/src/hooks/hookSystem.test.js.map +1 -0
  79. package/dist/src/hooks/index.d.ts +15 -0
  80. package/dist/src/hooks/index.js +15 -0
  81. package/dist/src/hooks/index.js.map +1 -0
  82. package/dist/src/index.d.ts +1 -0
  83. package/dist/src/index.js +2 -0
  84. package/dist/src/index.js.map +1 -1
  85. package/dist/src/policy/policy-engine.d.ts +17 -1
  86. package/dist/src/policy/policy-engine.js +90 -1
  87. package/dist/src/policy/policy-engine.js.map +1 -1
  88. package/dist/src/policy/policy-engine.test.js +222 -0
  89. package/dist/src/policy/policy-engine.test.js.map +1 -1
  90. package/dist/src/policy/types.d.ts +51 -1
  91. package/dist/src/policy/types.js +21 -0
  92. package/dist/src/policy/types.js.map +1 -1
  93. package/dist/src/services/chatCompressionService.d.ts +1 -0
  94. package/dist/src/services/chatCompressionService.js +22 -6
  95. package/dist/src/services/chatCompressionService.js.map +1 -1
  96. package/dist/src/services/chatCompressionService.test.js +27 -32
  97. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  98. package/dist/src/services/gitService.js +3 -1
  99. package/dist/src/services/gitService.js.map +1 -1
  100. package/dist/src/services/gitService.test.js +10 -0
  101. package/dist/src/services/gitService.test.js.map +1 -1
  102. package/dist/src/services/modelConfigService.d.ts +1 -0
  103. package/dist/src/services/modelConfigService.js +6 -2
  104. package/dist/src/services/modelConfigService.js.map +1 -1
  105. package/dist/src/services/modelConfigService.test.js +111 -0
  106. package/dist/src/services/modelConfigService.test.js.map +1 -1
  107. package/dist/src/services/shellExecutionService.d.ts +2 -0
  108. package/dist/src/services/shellExecutionService.js +31 -3
  109. package/dist/src/services/shellExecutionService.js.map +1 -1
  110. package/dist/src/services/shellExecutionService.test.js +78 -1
  111. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  112. package/dist/src/services/test-data/resolved-aliases.golden.json +20 -0
  113. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -1
  114. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +64 -30
  115. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  116. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +6 -16
  117. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  118. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +1 -0
  119. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +2 -0
  120. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  121. package/dist/src/telemetry/loggers.d.ts +2 -1
  122. package/dist/src/telemetry/loggers.js +12 -1
  123. package/dist/src/telemetry/loggers.js.map +1 -1
  124. package/dist/src/telemetry/loggers.test.js +0 -3
  125. package/dist/src/telemetry/loggers.test.js.map +1 -1
  126. package/dist/src/telemetry/metrics.d.ts +22 -0
  127. package/dist/src/telemetry/metrics.js +32 -0
  128. package/dist/src/telemetry/metrics.js.map +1 -1
  129. package/dist/src/telemetry/metrics.test.js +64 -0
  130. package/dist/src/telemetry/metrics.test.js.map +1 -1
  131. package/dist/src/telemetry/sanitize.d.ts +25 -0
  132. package/dist/src/telemetry/sanitize.js +48 -0
  133. package/dist/src/telemetry/sanitize.js.map +1 -0
  134. package/dist/src/telemetry/sanitize.test.d.ts +6 -0
  135. package/dist/src/telemetry/sanitize.test.js +279 -0
  136. package/dist/src/telemetry/sanitize.test.js.map +1 -0
  137. package/dist/src/telemetry/semantic.js +1 -1
  138. package/dist/src/telemetry/semantic.js.map +1 -1
  139. package/dist/src/telemetry/types.d.ts +19 -0
  140. package/dist/src/telemetry/types.js +65 -0
  141. package/dist/src/telemetry/types.js.map +1 -1
  142. package/dist/src/test-utils/mock-message-bus.d.ts +60 -0
  143. package/dist/src/test-utils/mock-message-bus.js +131 -0
  144. package/dist/src/test-utils/mock-message-bus.js.map +1 -0
  145. package/dist/src/test-utils/mock-tool.js +1 -1
  146. package/dist/src/test-utils/mock-tool.js.map +1 -1
  147. package/dist/src/tools/mcp-client.js +31 -0
  148. package/dist/src/tools/mcp-client.js.map +1 -1
  149. package/dist/src/tools/smart-edit.test.js +1 -1
  150. package/dist/src/tools/smart-edit.test.js.map +1 -1
  151. package/dist/src/utils/customHeaderUtils.d.ts +9 -0
  152. package/dist/src/utils/customHeaderUtils.js +34 -0
  153. package/dist/src/utils/customHeaderUtils.js.map +1 -0
  154. package/dist/src/utils/customHeaderUtils.test.d.ts +6 -0
  155. package/dist/src/utils/customHeaderUtils.test.js +77 -0
  156. package/dist/src/utils/customHeaderUtils.test.js.map +1 -0
  157. package/dist/src/utils/package.d.ts +14 -0
  158. package/dist/src/utils/package.js +15 -2
  159. package/dist/src/utils/package.js.map +1 -1
  160. package/dist/src/utils/schemaValidator.d.ts +1 -1
  161. package/dist/src/utils/schemaValidator.js +1 -1
  162. package/dist/src/utils/shell-utils.js +1 -1
  163. package/dist/tsconfig.tsbuildinfo +1 -1
  164. package/package.json +2 -2
@@ -180,6 +180,31 @@ export const DEFAULT_MODEL_CONFIGS = {
180
180
  extends: 'gemini-2.5-flash-base',
181
181
  modelConfig: {},
182
182
  },
183
+ 'chat-compression-3-pro': {
184
+ modelConfig: {
185
+ model: 'gemini-3-pro-preview',
186
+ },
187
+ },
188
+ 'chat-compression-2.5-pro': {
189
+ modelConfig: {
190
+ model: 'gemini-2.5-pro',
191
+ },
192
+ },
193
+ 'chat-compression-2.5-flash': {
194
+ modelConfig: {
195
+ model: 'gemini-2.5-flash',
196
+ },
197
+ },
198
+ 'chat-compression-2.5-flash-lite': {
199
+ modelConfig: {
200
+ model: 'gemini-2.5-flash-lite',
201
+ },
202
+ },
203
+ 'chat-compression-default': {
204
+ modelConfig: {
205
+ model: 'gemini-2.5-pro',
206
+ },
207
+ },
183
208
  },
184
209
  };
185
210
  //# sourceMappingURL=defaultModelConfigs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultModelConfigs.js","sourceRoot":"","sources":["../../../src/config/defaultModelConfigs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaultModelConfigs.js","sourceRoot":"","sources":["../../../src/config/defaultModelConfigs.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,10 @@ export declare class MessageBus extends EventEmitter {
15
15
  publish(message: Message): Promise<void>;
16
16
  subscribe<T extends Message>(type: T['type'], listener: (message: T) => void): void;
17
17
  unsubscribe<T extends Message>(type: T['type'], listener: (message: T) => void): void;
18
+ /**
19
+ * Request-response pattern: Publish a message and wait for a correlated response
20
+ * This enables synchronous-style communication over the async MessageBus
21
+ * The correlation ID is generated internally and added to the request
22
+ */
23
+ request<TRequest extends Message, TResponse extends Message>(request: Omit<TRequest, 'correlationId'>, responseType: TResponse['type'], timeoutMs?: number): Promise<TResponse>;
18
24
  }
@@ -3,9 +3,10 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { randomUUID } from 'node:crypto';
6
7
  import { EventEmitter } from 'node:events';
7
- import { PolicyDecision } from '../policy/types.js';
8
- import { MessageBusType } from './types.js';
8
+ import { PolicyDecision, getHookSource } from '../policy/types.js';
9
+ import { MessageBusType, } from './types.js';
9
10
  import { safeJsonStringify } from '../utils/safeJsonStringify.js';
10
11
  export class MessageBus extends EventEmitter {
11
12
  policyEngine;
@@ -68,6 +69,36 @@ export class MessageBus extends EventEmitter {
68
69
  throw new Error(`Unknown policy decision: ${decision}`);
69
70
  }
70
71
  }
72
+ else if (message.type === MessageBusType.HOOK_EXECUTION_REQUEST) {
73
+ // Handle hook execution requests through policy evaluation
74
+ const hookRequest = message;
75
+ const decision = await this.policyEngine.checkHook(hookRequest);
76
+ // Map decision to allow/deny for observability (ASK_USER treated as deny for hooks)
77
+ const effectiveDecision = decision === PolicyDecision.ALLOW ? 'allow' : 'deny';
78
+ // Emit policy decision for observability
79
+ this.emitMessage({
80
+ type: MessageBusType.HOOK_POLICY_DECISION,
81
+ eventName: hookRequest.eventName,
82
+ hookSource: getHookSource(hookRequest.input),
83
+ decision: effectiveDecision,
84
+ reason: decision !== PolicyDecision.ALLOW
85
+ ? 'Hook execution denied by policy'
86
+ : undefined,
87
+ });
88
+ // If allowed, emit the request for hook system to handle
89
+ if (decision === PolicyDecision.ALLOW) {
90
+ this.emitMessage(message);
91
+ }
92
+ else {
93
+ // If denied or ASK_USER, emit error response (hooks don't support interactive confirmation)
94
+ this.emitMessage({
95
+ type: MessageBusType.HOOK_EXECUTION_RESPONSE,
96
+ correlationId: hookRequest.correlationId,
97
+ success: false,
98
+ error: new Error('Hook execution denied by policy'),
99
+ });
100
+ }
101
+ }
71
102
  else {
72
103
  // For all other message types, just emit them
73
104
  this.emitMessage(message);
@@ -83,5 +114,35 @@ export class MessageBus extends EventEmitter {
83
114
  unsubscribe(type, listener) {
84
115
  this.off(type, listener);
85
116
  }
117
+ /**
118
+ * Request-response pattern: Publish a message and wait for a correlated response
119
+ * This enables synchronous-style communication over the async MessageBus
120
+ * The correlation ID is generated internally and added to the request
121
+ */
122
+ async request(request, responseType, timeoutMs = 60000) {
123
+ const correlationId = randomUUID();
124
+ return new Promise((resolve, reject) => {
125
+ const timeoutId = setTimeout(() => {
126
+ cleanup();
127
+ reject(new Error(`Request timed out waiting for ${responseType}`));
128
+ }, timeoutMs);
129
+ const cleanup = () => {
130
+ clearTimeout(timeoutId);
131
+ this.unsubscribe(responseType, responseHandler);
132
+ };
133
+ const responseHandler = (response) => {
134
+ // Check if this response matches our request
135
+ if ('correlationId' in response &&
136
+ response.correlationId === correlationId) {
137
+ cleanup();
138
+ resolve(response);
139
+ }
140
+ };
141
+ // Subscribe to responses
142
+ this.subscribe(responseType, responseHandler);
143
+ // Publish the request with correlation ID
144
+ this.publish({ ...request, correlationId });
145
+ });
146
+ }
86
147
  }
87
148
  //# sourceMappingURL=message-bus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-bus.js","sourceRoot":"","sources":["../../../src/confirmation-bus/message-bus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-bus.js","sourceRoot":"","sources":["../../../src/confirmation-bus/message-bus.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,10 @@ export declare enum MessageBusType {
10
10
  TOOL_POLICY_REJECTION = "tool-policy-rejection",
11
11
  TOOL_EXECUTION_SUCCESS = "tool-execution-success",
12
12
  TOOL_EXECUTION_FAILURE = "tool-execution-failure",
13
- UPDATE_POLICY = "update-policy"
13
+ UPDATE_POLICY = "update-policy",
14
+ HOOK_EXECUTION_REQUEST = "hook-execution-request",
15
+ HOOK_EXECUTION_RESPONSE = "hook-execution-response",
16
+ HOOK_POLICY_DECISION = "hook-policy-decision"
14
17
  }
15
18
  export interface ToolConfirmationRequest {
16
19
  type: MessageBusType.TOOL_CONFIRMATION_REQUEST;
@@ -46,4 +49,24 @@ export interface ToolExecutionFailure<E = Error> {
46
49
  toolCall: FunctionCall;
47
50
  error: E;
48
51
  }
49
- export type Message = ToolConfirmationRequest | ToolConfirmationResponse | ToolPolicyRejection | ToolExecutionSuccess | ToolExecutionFailure | UpdatePolicy;
52
+ export interface HookExecutionRequest {
53
+ type: MessageBusType.HOOK_EXECUTION_REQUEST;
54
+ eventName: string;
55
+ input: Record<string, unknown>;
56
+ correlationId: string;
57
+ }
58
+ export interface HookExecutionResponse {
59
+ type: MessageBusType.HOOK_EXECUTION_RESPONSE;
60
+ correlationId: string;
61
+ success: boolean;
62
+ output?: Record<string, unknown>;
63
+ error?: Error;
64
+ }
65
+ export interface HookPolicyDecision {
66
+ type: MessageBusType.HOOK_POLICY_DECISION;
67
+ eventName: string;
68
+ hookSource: 'project' | 'user' | 'system' | 'extension';
69
+ decision: 'allow' | 'deny';
70
+ reason?: string;
71
+ }
72
+ export type Message = ToolConfirmationRequest | ToolConfirmationResponse | ToolPolicyRejection | ToolExecutionSuccess | ToolExecutionFailure | UpdatePolicy | HookExecutionRequest | HookExecutionResponse | HookPolicyDecision;
@@ -12,5 +12,8 @@ export var MessageBusType;
12
12
  MessageBusType["TOOL_EXECUTION_SUCCESS"] = "tool-execution-success";
13
13
  MessageBusType["TOOL_EXECUTION_FAILURE"] = "tool-execution-failure";
14
14
  MessageBusType["UPDATE_POLICY"] = "update-policy";
15
+ MessageBusType["HOOK_EXECUTION_REQUEST"] = "hook-execution-request";
16
+ MessageBusType["HOOK_EXECUTION_RESPONSE"] = "hook-execution-response";
17
+ MessageBusType["HOOK_POLICY_DECISION"] = "hook-policy-decision";
15
18
  })(MessageBusType || (MessageBusType = {}));
16
19
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/confirmation-bus/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,MAAM,eAAe,CAAC;AAElD,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,yEAAuD,CAAA;IACvD,2EAAyD,CAAA;IACzD,iEAA+C,CAAA;IAC/C,mEAAiD,CAAA;IACjD,mEAAiD,CAAA;IACjD,iDAA+B,CAAA;AACjC,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/confirmation-bus/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,MAAM,eAAe,CAAC;AAElD,MAAM,CAAN,IAAY,cAUX;AAVD,WAAY,cAAc;IACxB,yEAAuD,CAAA;IACvD,2EAAyD,CAAA;IACzD,iEAA+C,CAAA;IAC/C,mEAAiD,CAAA;IACjD,mEAAiD,CAAA;IACjD,iDAA+B,CAAA;IAC/B,mEAAiD,CAAA;IACjD,qEAAmD,CAAA;IACnD,+DAA6C,CAAA;AAC/C,CAAC,EAVW,cAAc,KAAd,cAAc,QAUzB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type CountTokensResponse, type EmbedContentResponse, type GenerateContentResponse, type GenerateContentParameters, type CountTokensParameters, type EmbedContentParameters } from '@google/genai';
7
+ import type { ContentGenerator } from './contentGenerator.js';
8
+ import type { Config } from '../config/config.js';
9
+ import type { UserTierId } from '../code_assist/types.js';
10
+ export declare class AuthenticatedContentGenerator implements ContentGenerator {
11
+ private generator;
12
+ private config;
13
+ constructor(generator: ContentGenerator, config: Config);
14
+ generateContent(request: GenerateContentParameters, userPromptId: string): Promise<GenerateContentResponse>;
15
+ generateContentStream(request: GenerateContentParameters, userPromptId: string): Promise<AsyncGenerator<GenerateContentResponse>>;
16
+ countTokens(request: CountTokensParameters): Promise<CountTokensResponse>;
17
+ embedContent(request: EmbedContentParameters): Promise<EmbedContentResponse>;
18
+ private refreshToken;
19
+ get userTier(): UserTierId | undefined;
20
+ }
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { GoogleGenAI, } from '@google/genai';
7
+ import { AuthProviderKeycloak } from '@machina.ai/auth-keycloak';
8
+ import { LoggingContentGenerator } from './loggingContentGenerator.js';
9
+ function isAuthError(e) {
10
+ // Case 1: The error itself is an object with a `code` property (like GaxiosError)
11
+ if (e && typeof e === 'object' && 'code' in e) {
12
+ const error = e;
13
+ if (error.code === 401 || error.code === '401') {
14
+ return true;
15
+ }
16
+ }
17
+ // Case 2: The error is an `Error` instance with a JSON message.
18
+ if (e instanceof Error) {
19
+ try {
20
+ const parsed = JSON.parse(e.message);
21
+ const error = parsed.error || parsed;
22
+ if (error.code === 401 || error.status === 'UNAUTHENTICATED') {
23
+ return true;
24
+ }
25
+ }
26
+ catch {
27
+ // Not a JSON message, fall back to simple string check
28
+ return e.message.includes('401');
29
+ }
30
+ }
31
+ return false;
32
+ }
33
+ export class AuthenticatedContentGenerator {
34
+ generator;
35
+ config;
36
+ constructor(generator, config) {
37
+ this.generator = generator;
38
+ this.config = config;
39
+ }
40
+ async generateContent(request, userPromptId) {
41
+ try {
42
+ return await this.generator.generateContent(request, userPromptId);
43
+ }
44
+ catch (e) {
45
+ if (isAuthError(e)) {
46
+ await this.refreshToken();
47
+ return await this.generator.generateContent(request, userPromptId);
48
+ }
49
+ throw e;
50
+ }
51
+ }
52
+ async generateContentStream(request, userPromptId) {
53
+ try {
54
+ return await this.generator.generateContentStream(request, userPromptId);
55
+ }
56
+ catch (e) {
57
+ if (isAuthError(e)) {
58
+ await this.refreshToken();
59
+ return await this.generator.generateContentStream(request, userPromptId);
60
+ }
61
+ throw e;
62
+ }
63
+ }
64
+ async countTokens(request) {
65
+ try {
66
+ return await this.generator.countTokens(request);
67
+ }
68
+ catch (e) {
69
+ if (isAuthError(e)) {
70
+ await this.refreshToken();
71
+ return await this.generator.countTokens(request);
72
+ }
73
+ throw e;
74
+ }
75
+ }
76
+ async embedContent(request) {
77
+ try {
78
+ return await this.generator.embedContent(request);
79
+ }
80
+ catch (e) {
81
+ if (isAuthError(e)) {
82
+ await this.refreshToken();
83
+ return await this.generator.embedContent(request);
84
+ }
85
+ throw e;
86
+ }
87
+ }
88
+ async refreshToken() {
89
+ const provider = new AuthProviderKeycloak();
90
+ // First, try to refresh silently.
91
+ let token = await provider.forceRefreshToken();
92
+ // If silent refresh fails, try the full authentication flow which may be interactive.
93
+ if (!token) {
94
+ token = await provider.getToken();
95
+ }
96
+ // If we still don't have a token, then we must fail.
97
+ if (!token) {
98
+ throw new Error('Authentication failed. Unable to get a new token.');
99
+ }
100
+ // Re-create the underlying generator with the new token to avoid recursive wrapping.
101
+ const httpOptions = {};
102
+ if (token) {
103
+ httpOptions.headers = { Authorization: `Bearer ${token}` };
104
+ }
105
+ const googleGenAI = new GoogleGenAI({
106
+ apiKey: 'dummy',
107
+ httpOptions,
108
+ });
109
+ this.generator = new LoggingContentGenerator(googleGenAI.models, this.config);
110
+ }
111
+ get userTier() {
112
+ return this.generator.userTier;
113
+ }
114
+ }
115
+ //# sourceMappingURL=AuthenticatedContentGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticatedContentGenerator.js","sourceRoot":"","sources":["../../../src/core/AuthenticatedContentGenerator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,GAOZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,SAAS,WAAW,CAAC,CAAU;IAC7B,kFAAkF;IAClF,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,CAA+B,CAAC;QAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;YACrC,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;gBAC7D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;YACvD,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,6BAA6B;IAChC,SAAS,CAAmB;IAC5B,MAAM,CAAS;IAEvB,YAAY,SAA2B,EAAE,MAAc;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,OAAkC,EAClC,YAAoB;QAEpB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,OAAkC,EAClC,YAAoB;QAEpB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAC/C,OAAO,EACP,YAAY,CACb,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAA8B;QAE9B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,OAA+B;QAE/B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC5C,kCAAkC;QAClC,IAAI,KAAK,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAE/C,sFAAsF;QACtF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,qFAAqF;QACrF,MAAM,WAAW,GAAyC,EAAE,CAAC;QAC7D,IAAI,KAAK,EAAE,CAAC;YACV,WAAW,CAAC,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC;QAC7D,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;YAClC,MAAM,EAAE,OAAO;YACf,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,uBAAuB,CAC1C,WAAW,CAAC,MAAM,EAClB,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACjC,CAAC;CACF"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { Content, Part } from '@google/genai';
6
+ import type { Content, Part, GenerateContentResponse } from '@google/genai';
7
7
  import type { Config } from '../config/config.js';
8
8
  import type { ContentGenerator } from './contentGenerator.js';
9
9
  import type { ModelConfigKey } from '../services/modelConfigService.js';
@@ -33,6 +33,30 @@ export interface GenerateJsonOptions {
33
33
  */
34
34
  maxAttempts?: number;
35
35
  }
36
+ /**
37
+ * Options for the generateContent utility function.
38
+ */
39
+ export interface GenerateContentOptions {
40
+ /** The desired model config. */
41
+ modelConfigKey: ModelConfigKey;
42
+ /** The input prompt or history. */
43
+ contents: Content[];
44
+ /**
45
+ * Task-specific system instructions.
46
+ * If omitted, no system instruction is sent.
47
+ */
48
+ systemInstruction?: string | Part | Part[] | Content;
49
+ /** Signal for cancellation. */
50
+ abortSignal: AbortSignal;
51
+ /**
52
+ * A unique ID for the prompt, used for logging/telemetry correlation.
53
+ */
54
+ promptId: string;
55
+ /**
56
+ * The maximum number of attempts for the request.
57
+ */
58
+ maxAttempts?: number;
59
+ }
36
60
  /**
37
61
  * A client dedicated to stateless, utility-focused LLM calls.
38
62
  */
@@ -43,4 +67,6 @@ export declare class BaseLlmClient {
43
67
  generateJson(options: GenerateJsonOptions): Promise<Record<string, unknown>>;
44
68
  generateEmbedding(texts: string[]): Promise<number[][]>;
45
69
  private cleanJsonResponse;
70
+ generateContent(options: GenerateContentOptions): Promise<GenerateContentResponse>;
71
+ private _generateWithRetry;
46
72
  }
@@ -21,55 +21,35 @@ export class BaseLlmClient {
21
21
  this.config = config;
22
22
  }
23
23
  async generateJson(options) {
24
- const { modelConfigKey, contents, schema, abortSignal, systemInstruction, promptId, maxAttempts, } = options;
24
+ const { schema, modelConfigKey, contents, systemInstruction, abortSignal, promptId, maxAttempts, } = options;
25
25
  const { model, generateContentConfig } = this.config.modelConfigService.getResolvedConfig(modelConfigKey);
26
- const requestConfig = {
27
- abortSignal,
28
- ...generateContentConfig,
29
- ...(systemInstruction && { systemInstruction }),
30
- responseJsonSchema: schema,
31
- responseMimeType: 'application/json',
32
- };
33
- try {
34
- const apiCall = () => this.contentGenerator.generateContent({
35
- model,
36
- config: requestConfig,
37
- contents,
38
- }, promptId);
39
- const shouldRetryOnContent = (response) => {
40
- const text = getResponseText(response)?.trim();
41
- if (!text) {
42
- return true; // Retry on empty response
43
- }
44
- try {
45
- JSON.parse(this.cleanJsonResponse(text, model));
46
- return false;
47
- }
48
- catch (_e) {
49
- return true;
50
- }
51
- };
52
- const result = await retryWithBackoff(apiCall, {
53
- shouldRetryOnContent,
54
- maxAttempts: maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
55
- });
56
- // If we are here, the content is valid (not empty and parsable).
57
- return JSON.parse(this.cleanJsonResponse(getResponseText(result).trim(), model));
58
- }
59
- catch (error) {
60
- if (abortSignal.aborted) {
61
- throw error;
26
+ const shouldRetryOnContent = (response) => {
27
+ const text = getResponseText(response)?.trim();
28
+ if (!text) {
29
+ return true; // Retry on empty response
62
30
  }
63
- // Check if the error is from exhausting retries, and report accordingly.
64
- if (error instanceof Error &&
65
- error.message.includes('Retry attempts exhausted')) {
66
- await reportError(error, 'API returned invalid content (empty or unparsable JSON) after all retries.', contents, 'generateJson-invalid-content');
31
+ try {
32
+ // We don't use the result, just check if it's valid JSON
33
+ JSON.parse(this.cleanJsonResponse(text, model));
34
+ return false; // It's valid, don't retry
67
35
  }
68
- else {
69
- await reportError(error, 'Error generating JSON content via API.', contents, 'generateJson-api');
36
+ catch (_e) {
37
+ return true; // It's not valid, retry
70
38
  }
71
- throw new Error(`Failed to generate JSON content: ${getErrorMessage(error)}`);
72
- }
39
+ };
40
+ const result = await this._generateWithRetry({
41
+ model,
42
+ contents,
43
+ config: {
44
+ ...generateContentConfig,
45
+ ...(systemInstruction && { systemInstruction }),
46
+ responseJsonSchema: schema,
47
+ responseMimeType: 'application/json',
48
+ abortSignal,
49
+ },
50
+ }, promptId, maxAttempts, shouldRetryOnContent, 'generateJson');
51
+ // If we are here, the content is valid (not empty and parsable).
52
+ return JSON.parse(this.cleanJsonResponse(getResponseText(result).trim(), model));
73
53
  }
74
54
  async generateEmbedding(texts) {
75
55
  if (!texts || texts.length === 0) {
@@ -104,5 +84,46 @@ export class BaseLlmClient {
104
84
  }
105
85
  return text;
106
86
  }
87
+ async generateContent(options) {
88
+ const { modelConfigKey, contents, systemInstruction, abortSignal, promptId, maxAttempts, } = options;
89
+ const { model, generateContentConfig } = this.config.modelConfigService.getResolvedConfig(modelConfigKey);
90
+ const shouldRetryOnContent = (response) => {
91
+ const text = getResponseText(response)?.trim();
92
+ return !text; // Retry on empty response
93
+ };
94
+ return this._generateWithRetry({
95
+ model,
96
+ contents,
97
+ config: {
98
+ ...generateContentConfig,
99
+ ...(systemInstruction && { systemInstruction }),
100
+ abortSignal,
101
+ },
102
+ }, promptId, maxAttempts, shouldRetryOnContent, 'generateContent');
103
+ }
104
+ async _generateWithRetry(requestParams, promptId, maxAttempts, shouldRetryOnContent, errorContext) {
105
+ const abortSignal = requestParams.config?.abortSignal;
106
+ try {
107
+ const apiCall = () => this.contentGenerator.generateContent(requestParams, promptId);
108
+ return await retryWithBackoff(apiCall, {
109
+ shouldRetryOnContent,
110
+ maxAttempts: maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
111
+ });
112
+ }
113
+ catch (error) {
114
+ if (abortSignal?.aborted) {
115
+ throw error;
116
+ }
117
+ // Check if the error is from exhausting retries, and report accordingly.
118
+ if (error instanceof Error &&
119
+ error.message.includes('Retry attempts exhausted')) {
120
+ await reportError(error, `API returned invalid content after all retries.`, requestParams.contents, `${errorContext}-invalid-content`);
121
+ }
122
+ else {
123
+ await reportError(error, `Error generating content via API.`, requestParams.contents, `${errorContext}-api`);
124
+ }
125
+ throw new Error(`Failed to generate content: ${getErrorMessage(error)}`);
126
+ }
127
+ }
107
128
  }
108
129
  //# sourceMappingURL=baseLlmClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseLlmClient.js","sourceRoot":"","sources":["../../../src/core/baseLlmClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseLlmClient.js","sourceRoot":"","sources":["../../../src/core/baseLlmClient.ts"],"names":[],"mappings":"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"}