@aws/lsp-codewhisperer 0.0.82 → 0.0.84

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 (135) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/out/language-server/agenticChat/agenticChatController.js +105 -35
  3. package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
  4. package/out/language-server/agenticChat/agenticChatResultStream.d.ts +1 -0
  5. package/out/language-server/agenticChat/agenticChatResultStream.js +21 -0
  6. package/out/language-server/agenticChat/agenticChatResultStream.js.map +1 -1
  7. package/out/language-server/agenticChat/constants/constants.d.ts +30 -0
  8. package/out/language-server/agenticChat/constants/constants.js +44 -1
  9. package/out/language-server/agenticChat/constants/constants.js.map +1 -1
  10. package/out/language-server/agenticChat/constants/modelSelection.d.ts +2 -2
  11. package/out/language-server/agenticChat/constants/modelSelection.js +6 -5
  12. package/out/language-server/agenticChat/constants/modelSelection.js.map +1 -1
  13. package/out/language-server/agenticChat/context/agenticChatTriggerContext.d.ts +2 -1
  14. package/out/language-server/agenticChat/context/agenticChatTriggerContext.js +3 -1
  15. package/out/language-server/agenticChat/context/agenticChatTriggerContext.js.map +1 -1
  16. package/out/language-server/agenticChat/context/memorybank/memoryBankController.js +4 -3
  17. package/out/language-server/agenticChat/context/memorybank/memoryBankController.js.map +1 -1
  18. package/out/language-server/agenticChat/retry/delayInterceptor.d.ts +33 -0
  19. package/out/language-server/agenticChat/retry/delayInterceptor.js +79 -0
  20. package/out/language-server/agenticChat/retry/delayInterceptor.js.map +1 -0
  21. package/out/language-server/agenticChat/retry/errorTransformer.d.ts +15 -0
  22. package/out/language-server/agenticChat/retry/errorTransformer.js +152 -0
  23. package/out/language-server/agenticChat/retry/errorTransformer.js.map +1 -0
  24. package/out/language-server/agenticChat/retry/index.d.ts +3 -0
  25. package/out/language-server/agenticChat/retry/index.js +11 -0
  26. package/out/language-server/agenticChat/retry/index.js.map +1 -0
  27. package/out/language-server/agenticChat/retry/qRetryStrategy.d.ts +20 -0
  28. package/out/language-server/agenticChat/retry/qRetryStrategy.js +71 -0
  29. package/out/language-server/agenticChat/retry/qRetryStrategy.js.map +1 -0
  30. package/out/language-server/agenticChat/retry/retryClassifier.d.ts +32 -0
  31. package/out/language-server/agenticChat/retry/retryClassifier.js +122 -0
  32. package/out/language-server/agenticChat/retry/retryClassifier.js.map +1 -0
  33. package/out/language-server/agenticChat/tabBarController.d.ts +4 -0
  34. package/out/language-server/agenticChat/tabBarController.js +19 -2
  35. package/out/language-server/agenticChat/tabBarController.js.map +1 -1
  36. package/out/language-server/agenticChat/tools/chatDb/chatDb.d.ts +3 -25
  37. package/out/language-server/agenticChat/tools/chatDb/chatDb.js +12 -107
  38. package/out/language-server/agenticChat/tools/chatDb/chatDb.js.map +1 -1
  39. package/out/language-server/agenticChat/tools/chatDb/util.js +1 -2
  40. package/out/language-server/agenticChat/tools/chatDb/util.js.map +1 -1
  41. package/out/language-server/agenticChat/tools/fsRead.d.ts +3 -1
  42. package/out/language-server/agenticChat/tools/fsRead.js +12 -7
  43. package/out/language-server/agenticChat/tools/fsRead.js.map +1 -1
  44. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js +30 -14
  45. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js.map +1 -1
  46. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js +1 -1
  47. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js.map +1 -1
  48. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.d.ts +8 -0
  49. package/out/language-server/chat/chatController.js.map +1 -1
  50. package/out/language-server/chat/chatSessionService.d.ts +8 -1
  51. package/out/language-server/chat/chatSessionService.js +38 -81
  52. package/out/language-server/chat/chatSessionService.js.map +1 -1
  53. package/out/language-server/chat/constants.d.ts +1 -0
  54. package/out/language-server/chat/constants.js +2 -1
  55. package/out/language-server/chat/constants.js.map +1 -1
  56. package/out/language-server/chat/telemetry/chatTelemetryController.d.ts +2 -1
  57. package/out/language-server/chat/telemetry/chatTelemetryController.js +12 -1
  58. package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
  59. package/out/language-server/inline-completion/codeWhispererServer.d.ts +0 -1
  60. package/out/language-server/inline-completion/codeWhispererServer.js +17 -481
  61. package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -1
  62. package/out/language-server/inline-completion/contants/constants.js.map +1 -0
  63. package/out/language-server/inline-completion/{editCompletionHandler.d.ts → handler/editCompletionHandler.d.ts} +10 -10
  64. package/out/language-server/inline-completion/{editCompletionHandler.js → handler/editCompletionHandler.js} +17 -14
  65. package/out/language-server/inline-completion/handler/editCompletionHandler.js.map +1 -0
  66. package/out/language-server/inline-completion/handler/inlineCompletionHandler.d.ts +32 -0
  67. package/out/language-server/inline-completion/handler/inlineCompletionHandler.js +377 -0
  68. package/out/language-server/inline-completion/handler/inlineCompletionHandler.js.map +1 -0
  69. package/out/language-server/inline-completion/handler/sessionResultsHandler.d.ts +23 -0
  70. package/out/language-server/inline-completion/handler/sessionResultsHandler.js +119 -0
  71. package/out/language-server/inline-completion/handler/sessionResultsHandler.js.map +1 -0
  72. package/out/language-server/inline-completion/{telemetry.d.ts → telemetry/telemetry.d.ts} +2 -2
  73. package/out/language-server/inline-completion/{telemetry.js → telemetry/telemetry.js} +2 -2
  74. package/out/language-server/inline-completion/telemetry/telemetry.js.map +1 -0
  75. package/out/language-server/inline-completion/{codeDiffTracker.d.ts → tracker/codeDiffTracker.d.ts} +2 -2
  76. package/out/language-server/inline-completion/{codeDiffTracker.js → tracker/codeDiffTracker.js} +1 -1
  77. package/out/language-server/inline-completion/tracker/codeDiffTracker.js.map +1 -0
  78. package/out/language-server/inline-completion/tracker/codeEditTracker.js +1 -1
  79. package/out/language-server/inline-completion/tracker/codeEditTracker.js.map +1 -1
  80. package/out/language-server/inline-completion/{codePercentage.d.ts → tracker/codePercentageTracker.d.ts} +1 -1
  81. package/out/language-server/inline-completion/{codePercentage.js → tracker/codePercentageTracker.js} +1 -1
  82. package/out/language-server/inline-completion/tracker/codePercentageTracker.js.map +1 -0
  83. package/out/language-server/inline-completion/{diffUtils.d.ts → utils/diffUtils.d.ts} +29 -12
  84. package/out/language-server/inline-completion/utils/diffUtils.js +407 -0
  85. package/out/language-server/inline-completion/utils/diffUtils.js.map +1 -0
  86. package/out/language-server/inline-completion/utils/mergeRightUtils.d.ts +9 -0
  87. package/out/language-server/inline-completion/utils/mergeRightUtils.js +67 -0
  88. package/out/language-server/inline-completion/utils/mergeRightUtils.js.map +1 -0
  89. package/out/language-server/inline-completion/utils/textDocumentUtils.d.ts +3 -0
  90. package/out/language-server/inline-completion/utils/textDocumentUtils.js +37 -0
  91. package/out/language-server/inline-completion/utils/textDocumentUtils.js.map +1 -0
  92. package/out/language-server/inline-completion/{trigger.d.ts → utils/triggerUtils.d.ts} +4 -4
  93. package/out/language-server/inline-completion/{trigger.js → utils/triggerUtils.js} +3 -3
  94. package/out/language-server/inline-completion/utils/triggerUtils.js.map +1 -0
  95. package/out/language-server/netTransform/artifactManager.d.ts +2 -2
  96. package/out/language-server/netTransform/artifactManager.js +6 -10
  97. package/out/language-server/netTransform/artifactManager.js.map +1 -1
  98. package/out/language-server/workspaceContext/workspaceFolderManager.js +3 -1
  99. package/out/language-server/workspaceContext/workspaceFolderManager.js.map +1 -1
  100. package/out/shared/amazonQServiceManager/AmazonQIAMServiceManager.d.ts +1 -1
  101. package/out/shared/amazonQServiceManager/AmazonQIAMServiceManager.js +8 -2
  102. package/out/shared/amazonQServiceManager/AmazonQIAMServiceManager.js.map +1 -1
  103. package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js +1 -0
  104. package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js.map +1 -1
  105. package/out/shared/amazonQServiceManager/BaseAmazonQServiceManager.js +6 -0
  106. package/out/shared/amazonQServiceManager/BaseAmazonQServiceManager.js.map +1 -1
  107. package/out/shared/codeWhispererService.js +52 -20
  108. package/out/shared/codeWhispererService.js.map +1 -1
  109. package/out/shared/streamingClientService.d.ts +7 -1
  110. package/out/shared/streamingClientService.js +53 -15
  111. package/out/shared/streamingClientService.js.map +1 -1
  112. package/out/shared/telemetry/telemetryService.js.map +1 -1
  113. package/out/shared/telemetry/types.d.ts +8 -0
  114. package/out/shared/telemetry/types.js +1 -0
  115. package/out/shared/telemetry/types.js.map +1 -1
  116. package/out/shared/testUtils.d.ts +0 -3
  117. package/out/shared/testUtils.js +1 -22
  118. package/out/shared/testUtils.js.map +1 -1
  119. package/out/shared/utils.d.ts +10 -4
  120. package/out/shared/utils.js +20 -11
  121. package/out/shared/utils.js.map +1 -1
  122. package/package.json +4 -5
  123. package/out/language-server/inline-completion/codeDiffTracker.js.map +0 -1
  124. package/out/language-server/inline-completion/codePercentage.js.map +0 -1
  125. package/out/language-server/inline-completion/constants.js.map +0 -1
  126. package/out/language-server/inline-completion/diffUtils.js +0 -255
  127. package/out/language-server/inline-completion/diffUtils.js.map +0 -1
  128. package/out/language-server/inline-completion/editCompletionHandler.js.map +0 -1
  129. package/out/language-server/inline-completion/mergeRightUtils.d.ts +0 -25
  130. package/out/language-server/inline-completion/mergeRightUtils.js +0 -114
  131. package/out/language-server/inline-completion/mergeRightUtils.js.map +0 -1
  132. package/out/language-server/inline-completion/telemetry.js.map +0 -1
  133. package/out/language-server/inline-completion/trigger.js.map +0 -1
  134. /package/out/language-server/inline-completion/{constants.d.ts → contants/constants.d.ts} +0 -0
  135. /package/out/language-server/inline-completion/{constants.js → contants/constants.js} +0 -0
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QErrorTransformer = void 0;
4
+ const utils_1 = require("../../../shared/utils");
5
+ const errors_1 = require("../errors");
6
+ const errors_2 = require("../../../shared/amazonQServiceManager/errors");
7
+ const constants_1 = require("../constants/constants");
8
+ /**
9
+ * Q-specific error transformation for AWS SDK native retry.
10
+ * AWS SDK handles retries, this transforms final errors into user-friendly Q messages.
11
+ */
12
+ class QErrorTransformer {
13
+ logging;
14
+ isModelSelectionEnabled;
15
+ constructor(logging, isModelSelectionEnabled = false) {
16
+ this.logging = logging;
17
+ this.isModelSelectionEnabled =
18
+ typeof isModelSelectionEnabled === 'function' ? isModelSelectionEnabled : () => isModelSelectionEnabled;
19
+ }
20
+ extractResponseBody(error) {
21
+ return (this.extractTextFromBody(error.cause?.$metadata?.body) ||
22
+ this.extractTextFromBody(error.$metadata?.body) ||
23
+ this.extractTextFromBody(error.cause?.body) ||
24
+ this.extractTextFromBody(error.body) ||
25
+ this.extractTextFromBody(error.response?.data) ||
26
+ this.extractTextFromBody(error.response?.body) ||
27
+ error.message ||
28
+ null);
29
+ }
30
+ extractTextFromBody(body) {
31
+ try {
32
+ if (typeof body === 'string') {
33
+ return body;
34
+ }
35
+ if (body instanceof Uint8Array) {
36
+ return new TextDecoder('utf-8', { fatal: false }).decode(body);
37
+ }
38
+ if (body instanceof ArrayBuffer) {
39
+ return new TextDecoder('utf-8', { fatal: false }).decode(body);
40
+ }
41
+ if (typeof body === 'object' && body !== null) {
42
+ return JSON.stringify(body);
43
+ }
44
+ return null;
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
50
+ transformFinalError(error, attemptCount) {
51
+ // Use default attempt count if not provided
52
+ const attempts = attemptCount ?? constants_1.MAX_REQUEST_ATTEMPTS;
53
+ const requestId = (0, utils_1.getRequestID)(error);
54
+ // Don't transform authentication errors - let them pass through for auth follow-up handling
55
+ if (error instanceof errors_2.AmazonQServicePendingSigninError || error instanceof errors_2.AmazonQServicePendingProfileError) {
56
+ return error;
57
+ }
58
+ // Handle specific error types with retry context
59
+ if ((0, utils_1.isUsageLimitError)(error)) {
60
+ return new errors_1.AgenticChatError(`Request failed after ${attempts} attempts`, 'AmazonQUsageLimitError', error instanceof Error ? error : undefined, requestId);
61
+ }
62
+ // Check response body for monthly limits
63
+ const bodyStr = this.extractResponseBody(error);
64
+ if (bodyStr && bodyStr.includes(constants_1.MONTHLY_LIMIT_ERROR_MARKER)) {
65
+ return new errors_1.AgenticChatError(`Request failed after ${attempts} attempts`, 'AmazonQUsageLimitError', error instanceof Error ? error : undefined, requestId);
66
+ }
67
+ if (error?.name === 'AbortError' ||
68
+ error?.code === 'RequestAborted' ||
69
+ error?.name === 'RequestAborted' ||
70
+ (0, errors_1.isRequestAbortedError)(error)) {
71
+ return new errors_1.AgenticChatError('Request aborted', 'RequestAborted', error instanceof Error ? error : undefined, requestId);
72
+ }
73
+ if (error?.name === 'InputTooLong' ||
74
+ error?.code === 'InputTooLong' ||
75
+ error?.message?.includes('input too long') ||
76
+ (0, errors_1.isInputTooLongError)(error)) {
77
+ return new errors_1.AgenticChatError('Too much context loaded. I have cleared the conversation history. Please retry your request with smaller input.', 'InputTooLong', error instanceof Error ? error : undefined, requestId);
78
+ }
79
+ // Check for model unavailability first (before general throttling)
80
+ const statusCode = this.getStatusCode(error);
81
+ const isModelUnavailable = (statusCode === constants_1.HTTP_STATUS_TOO_MANY_REQUESTS &&
82
+ (error.cause?.reason === constants_1.INSUFFICIENT_MODEL_CAPACITY ||
83
+ error.reason === constants_1.INSUFFICIENT_MODEL_CAPACITY)) ||
84
+ (statusCode === constants_1.HTTP_STATUS_INTERNAL_SERVER_ERROR && error.message === constants_1.HIGH_LOAD_ERROR_MESSAGE);
85
+ if (isModelUnavailable) {
86
+ const message = this.isModelSelectionEnabled()
87
+ ? `The model you selected is temporarily unavailable. Please switch to a different model and try again.`
88
+ : `I am experiencing high traffic, please try again shortly.`;
89
+ return new errors_1.AgenticChatError(message, 'QModelResponse', error instanceof Error ? error : undefined, requestId);
90
+ }
91
+ if ((0, utils_1.isAwsThrottlingError)(error) || (0, errors_1.isThrottlingRelated)(error) || this.isThrottlingError(error)) {
92
+ return new errors_1.AgenticChatError(`Service is currently experiencing high traffic. Request failed after ${attempts} attempts. Please try again later.`, 'RequestThrottled', error instanceof Error ? error : undefined, requestId);
93
+ }
94
+ // Handle other errors - fallback to QModelResponse with request ID
95
+ return new errors_1.AgenticChatError(error instanceof Error ? error.message : String(error), 'QModelResponse', error instanceof Error ? error : undefined, requestId);
96
+ }
97
+ isThrottlingError(error) {
98
+ const statusCode = this.getStatusCode(error);
99
+ // Check for AWS throttling patterns
100
+ if (statusCode === constants_1.HTTP_STATUS_TOO_MANY_REQUESTS ||
101
+ error?.name === 'ThrottlingException' ||
102
+ error?.code === 'ThrottlingException')
103
+ return true;
104
+ // Check for service overloaded errors (status 500 with specific messages)
105
+ if (statusCode === constants_1.HTTP_STATUS_INTERNAL_SERVER_ERROR) {
106
+ // Check response body directly (not error message) to avoid conflict with model unavailability
107
+ const responseBody = error.cause?.$metadata?.body || error.$metadata?.body;
108
+ if (responseBody) {
109
+ const isOverloaded = responseBody.includes(constants_1.HIGH_LOAD_ERROR_MESSAGE) ||
110
+ responseBody.includes(constants_1.SERVICE_UNAVAILABLE_EXCEPTION);
111
+ this.logging?.debug(`QErrorTransformer: Service overloaded error detected (status 500): ${isOverloaded}`);
112
+ return isOverloaded;
113
+ }
114
+ }
115
+ // Model capacity issues - but these should be handled by model unavailability check first
116
+ if (statusCode === constants_1.HTTP_STATUS_TOO_MANY_REQUESTS &&
117
+ (error.cause?.reason === constants_1.INSUFFICIENT_MODEL_CAPACITY || error.reason === constants_1.INSUFFICIENT_MODEL_CAPACITY)) {
118
+ return true;
119
+ }
120
+ return false;
121
+ }
122
+ getStatusCode(error) {
123
+ try {
124
+ // AWS SDK v3 metadata patterns
125
+ if (error.cause?.$metadata?.httpStatusCode)
126
+ return error.cause.$metadata.httpStatusCode;
127
+ if (error.$metadata?.httpStatusCode)
128
+ return error.$metadata.httpStatusCode;
129
+ // Direct status properties
130
+ if (error.statusCode)
131
+ return error.statusCode;
132
+ if (error.status)
133
+ return error.status;
134
+ // Response object patterns
135
+ if (error.response?.status)
136
+ return error.response.status;
137
+ if (error.response?.statusCode)
138
+ return error.response.statusCode;
139
+ // Nested error patterns
140
+ if (error.cause?.statusCode)
141
+ return error.cause.statusCode;
142
+ if (error.cause?.status)
143
+ return error.cause.status;
144
+ return undefined;
145
+ }
146
+ catch {
147
+ return undefined;
148
+ }
149
+ }
150
+ }
151
+ exports.QErrorTransformer = QErrorTransformer;
152
+ //# sourceMappingURL=errorTransformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorTransformer.js","sourceRoot":"","sources":["../../../../src/language-server/agenticChat/retry/errorTransformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { QRetryClassifier, RetryAction, type RetryClassifierPriority, type InterceptorContext } from './retryClassifier';
2
+ export { QDelayTrackingInterceptor, type DelayNotification } from './delayInterceptor';
3
+ export { QErrorTransformer } from './errorTransformer';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QErrorTransformer = exports.QDelayTrackingInterceptor = exports.RetryAction = exports.QRetryClassifier = void 0;
4
+ var retryClassifier_1 = require("./retryClassifier");
5
+ Object.defineProperty(exports, "QRetryClassifier", { enumerable: true, get: function () { return retryClassifier_1.QRetryClassifier; } });
6
+ Object.defineProperty(exports, "RetryAction", { enumerable: true, get: function () { return retryClassifier_1.RetryAction; } });
7
+ var delayInterceptor_1 = require("./delayInterceptor");
8
+ Object.defineProperty(exports, "QDelayTrackingInterceptor", { enumerable: true, get: function () { return delayInterceptor_1.QDelayTrackingInterceptor; } });
9
+ var errorTransformer_1 = require("./errorTransformer");
10
+ Object.defineProperty(exports, "QErrorTransformer", { enumerable: true, get: function () { return errorTransformer_1.QErrorTransformer; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/language-server/agenticChat/retry/index.ts"],"names":[],"mappings":";;;AAAA,qDAAwH;AAA/G,mHAAA,gBAAgB,OAAA;AAAE,8GAAA,WAAW,OAAA;AACtC,uDAAsF;AAA7E,6HAAA,yBAAyB,OAAA;AAClC,uDAAsD;AAA7C,qHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,20 @@
1
+ import { RetryToken, RetryErrorInfo } from '@aws-sdk/types';
2
+ import { AdaptiveRetryStrategy } from '@smithy/util-retry';
3
+ import { QRetryClassifier } from './retryClassifier';
4
+ import { QDelayTrackingInterceptor } from './delayInterceptor';
5
+ import { Logging } from '@aws/language-server-runtimes/server-interface';
6
+ /**
7
+ * Custom retry strategy that extends AWS SDK v3's AdaptiveRetryStrategy with Q-specific logic
8
+ */
9
+ export declare class QRetryStrategy extends AdaptiveRetryStrategy {
10
+ private retryClassifier;
11
+ private delayInterceptor;
12
+ private maxAttempts;
13
+ private logging?;
14
+ private attemptCount;
15
+ constructor(retryClassifier: QRetryClassifier, delayInterceptor: QDelayTrackingInterceptor, maxAttempts: number, logging?: Logging);
16
+ acquireInitialRetryToken(retryTokenScope: string): Promise<RetryToken>;
17
+ refreshRetryTokenForRetry(token: RetryToken, errorInfo: RetryErrorInfo): Promise<RetryToken>;
18
+ recordSuccess(token: RetryToken): void;
19
+ getAttemptCount(): number;
20
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QRetryStrategy = void 0;
4
+ const util_retry_1 = require("@smithy/util-retry");
5
+ const retryClassifier_1 = require("./retryClassifier");
6
+ const utils_1 = require("../../../shared/utils");
7
+ /**
8
+ * Custom retry strategy that extends AWS SDK v3's AdaptiveRetryStrategy with Q-specific logic
9
+ */
10
+ class QRetryStrategy extends util_retry_1.AdaptiveRetryStrategy {
11
+ retryClassifier;
12
+ delayInterceptor;
13
+ maxAttempts;
14
+ logging;
15
+ attemptCount = 0;
16
+ constructor(retryClassifier, delayInterceptor, maxAttempts, logging) {
17
+ super(() => Promise.resolve(maxAttempts));
18
+ this.retryClassifier = retryClassifier;
19
+ this.delayInterceptor = delayInterceptor;
20
+ this.maxAttempts = maxAttempts;
21
+ this.logging = logging;
22
+ }
23
+ async acquireInitialRetryToken(retryTokenScope) {
24
+ this.attemptCount = 0;
25
+ this.logging?.log(`QRetryStrategy: Initial retry token acquired for scope: ${retryTokenScope}, attempt count reset to 0`);
26
+ // AdaptiveRetryStrategy returns StandardRetryToken, but interface expects RetryToken
27
+ return super.acquireInitialRetryToken(retryTokenScope);
28
+ }
29
+ async refreshRetryTokenForRetry(token, errorInfo) {
30
+ const currentAttempt = token.getRetryCount() + 1;
31
+ this.attemptCount = currentAttempt;
32
+ const errorCode = (0, utils_1.sanitizeLogInput)(errorInfo.error?.name || errorInfo.error?.code || 'Unknown');
33
+ this.logging?.log(`QRetryStrategy: Retry attempt ${currentAttempt} for error: ${errorCode}`);
34
+ // Apply Q-specific retry classification
35
+ const context = { error: errorInfo.error, response: errorInfo.error?.$response };
36
+ const action = this.retryClassifier.classifyRetry(context);
37
+ this.logging?.log(`QRetryStrategy: Retry classification result: ${action}`);
38
+ // Check if we should retry based on Q classification
39
+ if (action === retryClassifier_1.RetryAction.RetryForbidden) {
40
+ this.logging?.log(`QRetryStrategy: Retry forbidden, stopping retries after ${currentAttempt} attempts`);
41
+ throw errorInfo.error;
42
+ }
43
+ // Track delay for UI notifications - CALL BEFORE ATTEMPT
44
+ this.delayInterceptor.beforeAttempt(currentAttempt + 1);
45
+ // Delegate to adaptive strategy for delay calculation and max attempts check
46
+ // AdaptiveRetryStrategy expects StandardRetryToken but we receive RetryToken
47
+ // The token from acquireInitialRetryToken is actually StandardRetryToken, so this cast is safe
48
+ return super.refreshRetryTokenForRetry(token, errorInfo);
49
+ }
50
+ recordSuccess(token) {
51
+ try {
52
+ this.logging?.log(`QRetryStrategy: Request succeeded after ${this.attemptCount + 1} total attempts`);
53
+ // Reset delay tracking on success
54
+ this.delayInterceptor.reset();
55
+ this.attemptCount = 0;
56
+ // Call parent to maintain adaptive strategy state
57
+ // Token is actually StandardRetryToken from AdaptiveRetryStrategy
58
+ super.recordSuccess(token);
59
+ }
60
+ catch (error) {
61
+ // Log but don't throw - success recording should not fail
62
+ this.logging?.log(`QRetryStrategy: Warning - failed to reset state after success: ${error}`);
63
+ }
64
+ }
65
+ // Test helper method to get current attempt count
66
+ getAttemptCount() {
67
+ return this.attemptCount;
68
+ }
69
+ }
70
+ exports.QRetryStrategy = QRetryStrategy;
71
+ //# sourceMappingURL=qRetryStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qRetryStrategy.js","sourceRoot":"","sources":["../../../../src/language-server/agenticChat/retry/qRetryStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { Logging } from '@aws/language-server-runtimes/server-interface';
2
+ export declare enum RetryAction {
3
+ NoActionIndicated = "no_action",
4
+ RetryForbidden = "retry_forbidden",
5
+ ThrottlingError = "throttling_error"
6
+ }
7
+ export interface RetryClassifierPriority {
8
+ value: number;
9
+ }
10
+ export interface InterceptorContext {
11
+ error: any;
12
+ response?: {
13
+ status?: number;
14
+ body?: string | Uint8Array;
15
+ };
16
+ }
17
+ /**
18
+ * Retry classifier that matches CLI's QCliRetryClassifier behavior.
19
+ * Runs after AWS SDK's transient error classifier with higher priority.
20
+ */
21
+ export declare class QRetryClassifier {
22
+ private logging?;
23
+ constructor(logging?: Logging);
24
+ static priority(): RetryClassifierPriority;
25
+ classifyRetry(context: InterceptorContext): RetryAction;
26
+ private extractResponseBody;
27
+ private extractTextFromBody;
28
+ private isMonthlyLimitError;
29
+ private isServiceOverloadedError;
30
+ name(): string;
31
+ priority(): RetryClassifierPriority;
32
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QRetryClassifier = exports.RetryAction = void 0;
4
+ const errors_1 = require("../errors");
5
+ const constants_1 = require("../constants/constants");
6
+ var RetryAction;
7
+ (function (RetryAction) {
8
+ RetryAction["NoActionIndicated"] = "no_action";
9
+ RetryAction["RetryForbidden"] = "retry_forbidden";
10
+ RetryAction["ThrottlingError"] = "throttling_error";
11
+ })(RetryAction || (exports.RetryAction = RetryAction = {}));
12
+ /**
13
+ * Retry classifier that matches CLI's QCliRetryClassifier behavior.
14
+ * Runs after AWS SDK's transient error classifier with higher priority.
15
+ */
16
+ class QRetryClassifier {
17
+ logging;
18
+ constructor(logging) {
19
+ this.logging = logging;
20
+ }
21
+ static priority() {
22
+ // Run after transient error classifier (higher priority number)
23
+ return { value: 100 };
24
+ }
25
+ classifyRetry(context) {
26
+ const error = context.error;
27
+ // Handle non-retryable errors first (matching original + enhanced detection)
28
+ if (error?.name === 'AccessDeniedException' ||
29
+ error?.name === 'SERVICE_QUOTA_EXCEPTION' ||
30
+ error?.name === 'AbortError' ||
31
+ error?.code === 'RequestAborted' ||
32
+ error?.name === 'RequestAborted' ||
33
+ (0, errors_1.isRequestAbortedError)(error)) {
34
+ return RetryAction.RetryForbidden;
35
+ }
36
+ if (error?.reason === constants_1.CONTENT_LENGTH_EXCEEDS_THRESHOLD ||
37
+ (0, errors_1.isInputTooLongError)(error) ||
38
+ error?.reason === constants_1.INVALID_MODEL_ID) {
39
+ return RetryAction.RetryForbidden;
40
+ }
41
+ // Check for monthly limit error in error object
42
+ if (this.isMonthlyLimitError(error)) {
43
+ return RetryAction.RetryForbidden;
44
+ }
45
+ if (error?.message === constants_1.MAXIMUM_CHAT_CONTENT_MESSAGE) {
46
+ return RetryAction.RetryForbidden;
47
+ }
48
+ const bodyStr = this.extractResponseBody(context);
49
+ if (bodyStr && this.isServiceOverloadedError(context, bodyStr)) {
50
+ return RetryAction.ThrottlingError;
51
+ }
52
+ // Check for model capacity issues
53
+ const status = context.response?.status || context.error?.$metadata?.httpStatusCode;
54
+ if (status === 429 && error?.reason === constants_1.INSUFFICIENT_MODEL_CAPACITY) {
55
+ return RetryAction.ThrottlingError;
56
+ }
57
+ // Check for throttling related errors (from errors.ts)
58
+ if ((0, errors_1.isThrottlingRelated)(error)) {
59
+ return RetryAction.ThrottlingError;
60
+ }
61
+ return RetryAction.NoActionIndicated;
62
+ }
63
+ extractResponseBody(context) {
64
+ // Try context response first
65
+ const contextBody = this.extractTextFromBody(context.response?.body);
66
+ if (contextBody)
67
+ return contextBody;
68
+ // Fallback to error-based extraction
69
+ const error = context.error;
70
+ return (error?.message ||
71
+ this.extractTextFromBody(error?.cause?.$metadata?.body) ||
72
+ this.extractTextFromBody(error?.$metadata?.body) ||
73
+ this.extractTextFromBody(error?.cause?.body) ||
74
+ this.extractTextFromBody(error?.body) ||
75
+ this.extractTextFromBody(error?.response?.data) ||
76
+ this.extractTextFromBody(error?.response?.body) ||
77
+ null);
78
+ }
79
+ extractTextFromBody(body) {
80
+ try {
81
+ if (typeof body === 'string') {
82
+ return body;
83
+ }
84
+ if (body instanceof Uint8Array) {
85
+ const decoded = new TextDecoder('utf-8', { fatal: false }).decode(body);
86
+ return decoded || null;
87
+ }
88
+ if (body instanceof ArrayBuffer) {
89
+ return new TextDecoder('utf-8', { fatal: false }).decode(body);
90
+ }
91
+ if (typeof body === 'object' && body !== null) {
92
+ return JSON.stringify(body);
93
+ }
94
+ return null;
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ isMonthlyLimitError(error) {
101
+ const isMonthlyLimit = error?.reason === constants_1.MONTHLY_LIMIT_ERROR_MARKER;
102
+ this.logging?.debug(`QRetryClassifier: Monthly limit error detected: ${isMonthlyLimit}`);
103
+ return isMonthlyLimit;
104
+ }
105
+ isServiceOverloadedError(context, bodyStr) {
106
+ const status = context.response?.status || context.error?.status || context.error?.$metadata?.httpStatusCode;
107
+ if (status !== constants_1.HTTP_STATUS_INTERNAL_SERVER_ERROR) {
108
+ return false;
109
+ }
110
+ const isOverloaded = bodyStr.includes(constants_1.HIGH_LOAD_ERROR_MESSAGE) || bodyStr.includes(constants_1.SERVICE_UNAVAILABLE_EXCEPTION);
111
+ this.logging?.debug(`QRetryClassifier: Service overloaded error detected (status 500): ${isOverloaded}`);
112
+ return isOverloaded;
113
+ }
114
+ name() {
115
+ return 'Q Language Server Retry Classifier';
116
+ }
117
+ priority() {
118
+ return QRetryClassifier.priority();
119
+ }
120
+ }
121
+ exports.QRetryClassifier = QRetryClassifier;
122
+ //# sourceMappingURL=retryClassifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retryClassifier.js","sourceRoot":"","sources":["../../../../src/language-server/agenticChat/retry/retryClassifier.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,10 @@ export declare class TabBarController {
61
61
  * When IDE is opened, restore chats that were previously open in IDE for the current workspace.
62
62
  */
63
63
  loadChats(): Promise<void>;
64
+ /**
65
+ * Determines if the environment is JupyterLab.
66
+ */
67
+ private isJupyterLabEnvironment;
64
68
  static enableChatExport(params?: InitializeParams): boolean;
65
69
  static enableShowLogs(params?: InitializeParams): boolean;
66
70
  }
@@ -11,6 +11,7 @@ const vscode_uri_1 = require("vscode-uri");
11
11
  const types_1 = require("../../shared/telemetry/types");
12
12
  const lsp_core_1 = require("@aws/lsp-core");
13
13
  const MaxRestoredHistoryMessages = 250;
14
+ const JUPYTERLAB_APP_TYPE_VALUE = 'jupyterlab';
14
15
  /**
15
16
  * Controller for managing chat history and export functionality.
16
17
  *
@@ -259,10 +260,14 @@ class TabBarController {
259
260
  * When IDE is opened, restore chats that were previously open in IDE for the current workspace.
260
261
  */
261
262
  async loadChats() {
262
- if (this.#loadedChats) {
263
+ const isJupyterLab = this.isJupyterLabEnvironment();
264
+ // For non-JupyterLab environments, prevent multiple loads
265
+ if (!isJupyterLab && this.#loadedChats) {
263
266
  return;
264
267
  }
265
- this.#loadedChats = true;
268
+ if (!isJupyterLab) {
269
+ this.#loadedChats = true;
270
+ }
266
271
  const openConversations = this.#chatHistoryDb.getOpenTabs();
267
272
  if (openConversations) {
268
273
  for (const conversation of openConversations) {
@@ -277,6 +282,18 @@ class TabBarController {
277
282
  });
278
283
  }
279
284
  }
285
+ /**
286
+ * Determines if the environment is JupyterLab.
287
+ */
288
+ isJupyterLabEnvironment() {
289
+ try {
290
+ return process.env.SAGEMAKER_APP_TYPE_LOWERCASE === JUPYTERLAB_APP_TYPE_VALUE;
291
+ }
292
+ catch (error) {
293
+ this.#features.logging.error(`Failed to read SAGEMAKER_APP_TYPE_LOWERCASE environment variable: ${error}`);
294
+ return false;
295
+ }
296
+ }
280
297
  static enableChatExport(params) {
281
298
  if (params?.initializationOptions?.aws?.awsClientCapabilities?.window?.showSaveFileDialog) {
282
299
  // Export Chat UX flow relies on show Save File dialog protocol supported by client
@@ -1 +1 @@
1
- {"version":3,"file":"tabBarController.js","sourceRoot":"","sources":["../../../src/language-server/agenticChat/tabBarController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabBarController.js","sourceRoot":"","sources":["../../../src/language-server/agenticChat/tabBarController.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@ export declare class ToolResultValidationError extends Error {
6
6
  constructor(message?: string);
7
7
  }
8
8
  export declare const EMPTY_CONVERSATION_LIST_ID = "empty";
9
- export declare const MaxOverallCharacters = 570000;
10
9
  /**
11
10
  * A singleton database class that manages chat history persistence using LokiJS.
12
11
  * This class handles storage and retrieval of chat conversations, messages, and tab states
@@ -107,36 +106,15 @@ export declare class ChatDatabase {
107
106
  * This method manages chat messages by creating a new history with compacted summary and dummy response pairs
108
107
  */
109
108
  replaceWithSummary(tabId: string, tabType: TabType, conversationId: string, message: Message): void;
110
- /**
111
- * Replace history with summary/dummyResponse pair within a specified tab.
112
- *
113
- * This method manages chat messages by creating a new history with compacted summary and dummy response pairs
114
- */
115
- replaceHistory(tabId: string, tabType: TabType, conversationId: string, messages: Message[]): void;
116
109
  formatChatHistoryMessage(message: Message): Message;
117
110
  /**
118
111
  * Prepare the history messages for service request and fix the persisted history in DB to maintain the following invariants:
119
- * 1. The history contains at most MaxConversationHistoryMessages messages. Oldest messages are dropped.
120
- * 2. The first message is from the user and without any tool usage results, and the last message is from the assistant.
112
+ * 1. The first message is from the user and without any tool usage results, and the last message is from the assistant.
121
113
  * The history contains alternating sequene of userMessage followed by assistantMessages
122
- * 3. The toolUse and toolResult relationship is valid
123
- * 4. The history character length is <= MaxConversationHistoryCharacters - newUserMessageCharacterCount. Oldest messages are dropped.
124
- */
125
- fixAndGetHistory(tabId: string, conversationId: string, newUserMessage: ChatMessage, pinnedContextMessages: ChatMessage[]): MessagesWithCharacterCount;
126
- /**
127
- * Finds a suitable "break point" index in the message sequence.
128
- *
129
- * It ensures that the "break point" is at a clean conversation boundary where:
130
- * 1. The message is from a user (type === 'prompt')
131
- * 2. The message doesn't contain tool results that would break tool use/result pairs
132
- * 3. The message has a non-empty body
133
- *
134
- * @param allMessages The array of conversation messages to search through
135
- * @returns The index to trim from, or undefined if no suitable trimming point is found
114
+ * 2. The toolUse and toolResult relationship is valid
136
115
  */
137
- private findIndexToTrim;
116
+ fixAndGetHistory(tabId: string, newUserMessage: ChatMessage, pinnedContextMessages: ChatMessage[]): MessagesWithCharacterCount;
138
117
  private isValidUserMessageWithoutToolResults;
139
- private trimMessagesToMaxLength;
140
118
  private calculateToolSpecCharacterCount;
141
119
  calculateNewMessageCharacterCount(newUserMessage: ChatMessage, pinnedContextMessages: ChatMessage[]): number;
142
120
  calculateMessagesCharacterCount(allMessages: Message[]): number;