@sunerpy/opencode-kiro-auth 0.13.4 → 0.13.6
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.
|
@@ -75,12 +75,26 @@ export class RequestHandler {
|
|
|
75
75
|
else
|
|
76
76
|
inboundSignal?.addEventListener('abort', abortFromInbound, { once: true });
|
|
77
77
|
let timeout;
|
|
78
|
-
const beginUpstreamWait = (phase) => {
|
|
78
|
+
const beginUpstreamWait = (phase, timeoutMs, details = {}) => {
|
|
79
79
|
if (requestController.signal.aborted)
|
|
80
80
|
return;
|
|
81
81
|
if (timeout)
|
|
82
82
|
clearDeadlineTimeout(timeout);
|
|
83
|
-
|
|
83
|
+
if (timeoutMs <= 0) {
|
|
84
|
+
timeout = undefined;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const startedAt = Date.now();
|
|
88
|
+
timeout = setDeadlineTimeout(() => {
|
|
89
|
+
logger.warn('Kiro upstream wait timed out', {
|
|
90
|
+
phase,
|
|
91
|
+
configuredTimeoutMs: timeoutMs,
|
|
92
|
+
elapsedMs: Date.now() - startedAt,
|
|
93
|
+
platform: process.platform,
|
|
94
|
+
...details
|
|
95
|
+
});
|
|
96
|
+
requestController.abort(new DOMException(`Kiro request timed out waiting for ${phase}`, 'TimeoutError'));
|
|
97
|
+
}, timeoutMs);
|
|
84
98
|
};
|
|
85
99
|
const endUpstreamWait = () => {
|
|
86
100
|
if (!timeout)
|
|
@@ -201,7 +215,17 @@ export class RequestHandler {
|
|
|
201
215
|
await this.usageTracker.syncUsage(acc, auth, isCurrentAttempt);
|
|
202
216
|
};
|
|
203
217
|
let sdkResponse;
|
|
204
|
-
|
|
218
|
+
if (this.config.sdk_response_timeout_enabled) {
|
|
219
|
+
const messageContext = sdkPrep.conversationState.currentMessage?.userInputMessage?.userInputMessageContext;
|
|
220
|
+
beginUpstreamWait('SDK response', this.config.sdk_response_timeout_ms, {
|
|
221
|
+
model,
|
|
222
|
+
effectiveModel: sdkPrep.effectiveModel,
|
|
223
|
+
effort: sdkPrep.effort,
|
|
224
|
+
region: sdkPrep.region,
|
|
225
|
+
historyLength: sdkPrep.conversationState.history?.length ?? 0,
|
|
226
|
+
toolCount: messageContext?.tools?.length ?? 0
|
|
227
|
+
});
|
|
228
|
+
}
|
|
205
229
|
try {
|
|
206
230
|
sdkResponse = await client.send(command, { abortSignal: signal });
|
|
207
231
|
}
|
|
@@ -214,7 +238,11 @@ export class RequestHandler {
|
|
|
214
238
|
}
|
|
215
239
|
const response = await this.responseHandler.handleSdkSuccess(sdkResponse, model, sdkPrep.conversationId, sdkPrep.streaming, {
|
|
216
240
|
signal,
|
|
217
|
-
onUpstreamWaitStart: () => beginUpstreamWait('stream event'
|
|
241
|
+
onUpstreamWaitStart: () => beginUpstreamWait('stream event', this.config.request_timeout_ms, {
|
|
242
|
+
model,
|
|
243
|
+
effectiveModel: sdkPrep.effectiveModel,
|
|
244
|
+
region: sdkPrep.region
|
|
245
|
+
}),
|
|
218
246
|
onUpstreamWaitEnd: endUpstreamWait,
|
|
219
247
|
onComplete: completeRequest,
|
|
220
248
|
onTerminal: cleanupRequest,
|
|
@@ -135,6 +135,8 @@ function applyEnvOverrides(config) {
|
|
|
135
135
|
rate_limit_retry_delay_ms: parseNumberEnv(env.KIRO_RATE_LIMIT_RETRY_DELAY_MS, config.rate_limit_retry_delay_ms),
|
|
136
136
|
rate_limit_max_retries: parseNumberEnv(env.KIRO_RATE_LIMIT_MAX_RETRIES, config.rate_limit_max_retries),
|
|
137
137
|
max_request_iterations: parseNumberEnv(env.KIRO_MAX_REQUEST_ITERATIONS, config.max_request_iterations),
|
|
138
|
+
sdk_response_timeout_enabled: parseBooleanEnv(env.KIRO_SDK_RESPONSE_TIMEOUT_ENABLED, config.sdk_response_timeout_enabled),
|
|
139
|
+
sdk_response_timeout_ms: parseNumberEnv(env.KIRO_SDK_RESPONSE_TIMEOUT_MS, config.sdk_response_timeout_ms),
|
|
138
140
|
request_timeout_ms: parseNumberEnv(env.KIRO_REQUEST_TIMEOUT_MS, config.request_timeout_ms),
|
|
139
141
|
token_expiry_buffer_ms: parseNumberEnv(env.KIRO_TOKEN_EXPIRY_BUFFER_MS, config.token_expiry_buffer_ms),
|
|
140
142
|
usage_sync_max_retries: parseNumberEnv(env.KIRO_USAGE_SYNC_MAX_RETRIES, config.usage_sync_max_retries),
|
|
@@ -55,6 +55,20 @@ export declare const KiroConfigSchema: z.ZodObject<{
|
|
|
55
55
|
rate_limit_retry_delay_ms: z.ZodDefault<z.ZodNumber>;
|
|
56
56
|
rate_limit_max_retries: z.ZodDefault<z.ZodNumber>;
|
|
57
57
|
max_request_iterations: z.ZodDefault<z.ZodNumber>;
|
|
58
|
+
/**
|
|
59
|
+
* Opt into a fixed deadline while waiting for client.send() to return.
|
|
60
|
+
* Disabled by default because a pending request is ambiguous: Kiro may
|
|
61
|
+
* still be performing a valid long-running generation.
|
|
62
|
+
*/
|
|
63
|
+
sdk_response_timeout_enabled: z.ZodDefault<z.ZodBoolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Maximum wait for client.send() to return the initial SDK response.
|
|
66
|
+
* Only used when sdk_response_timeout_enabled is true.
|
|
67
|
+
*/
|
|
68
|
+
sdk_response_timeout_ms: z.ZodDefault<z.ZodNumber>;
|
|
69
|
+
/**
|
|
70
|
+
* Maximum inactivity while waiting for the next upstream stream event.
|
|
71
|
+
*/
|
|
58
72
|
request_timeout_ms: z.ZodDefault<z.ZodNumber>;
|
|
59
73
|
token_expiry_buffer_ms: z.ZodDefault<z.ZodNumber>;
|
|
60
74
|
/**
|
|
@@ -104,6 +118,8 @@ export declare const KiroConfigSchema: z.ZodObject<{
|
|
|
104
118
|
rate_limit_retry_delay_ms: number;
|
|
105
119
|
rate_limit_max_retries: number;
|
|
106
120
|
max_request_iterations: number;
|
|
121
|
+
sdk_response_timeout_enabled: boolean;
|
|
122
|
+
sdk_response_timeout_ms: number;
|
|
107
123
|
request_timeout_ms: number;
|
|
108
124
|
token_expiry_buffer_ms: number;
|
|
109
125
|
token_keepalive_enabled: boolean;
|
|
@@ -137,6 +153,8 @@ export declare const KiroConfigSchema: z.ZodObject<{
|
|
|
137
153
|
rate_limit_retry_delay_ms?: number | undefined;
|
|
138
154
|
rate_limit_max_retries?: number | undefined;
|
|
139
155
|
max_request_iterations?: number | undefined;
|
|
156
|
+
sdk_response_timeout_enabled?: boolean | undefined;
|
|
157
|
+
sdk_response_timeout_ms?: number | undefined;
|
|
140
158
|
request_timeout_ms?: number | undefined;
|
|
141
159
|
token_expiry_buffer_ms?: number | undefined;
|
|
142
160
|
token_keepalive_enabled?: boolean | undefined;
|
|
@@ -87,6 +87,20 @@ export const KiroConfigSchema = z.object({
|
|
|
87
87
|
rate_limit_retry_delay_ms: z.number().min(1000).max(60000).default(5000),
|
|
88
88
|
rate_limit_max_retries: z.number().min(0).max(10).default(3),
|
|
89
89
|
max_request_iterations: z.number().min(5).max(1000).default(20),
|
|
90
|
+
/**
|
|
91
|
+
* Opt into a fixed deadline while waiting for client.send() to return.
|
|
92
|
+
* Disabled by default because a pending request is ambiguous: Kiro may
|
|
93
|
+
* still be performing a valid long-running generation.
|
|
94
|
+
*/
|
|
95
|
+
sdk_response_timeout_enabled: z.boolean().default(false),
|
|
96
|
+
/**
|
|
97
|
+
* Maximum wait for client.send() to return the initial SDK response.
|
|
98
|
+
* Only used when sdk_response_timeout_enabled is true.
|
|
99
|
+
*/
|
|
100
|
+
sdk_response_timeout_ms: z.number().min(30000).max(600000).default(300000),
|
|
101
|
+
/**
|
|
102
|
+
* Maximum inactivity while waiting for the next upstream stream event.
|
|
103
|
+
*/
|
|
90
104
|
request_timeout_ms: z.number().min(30000).max(600000).default(120000),
|
|
91
105
|
token_expiry_buffer_ms: z.number().min(30000).max(300000).default(300000),
|
|
92
106
|
/**
|
|
@@ -137,6 +151,8 @@ export const DEFAULT_CONFIG = {
|
|
|
137
151
|
rate_limit_retry_delay_ms: 5000,
|
|
138
152
|
rate_limit_max_retries: 3,
|
|
139
153
|
max_request_iterations: 20,
|
|
154
|
+
sdk_response_timeout_enabled: false,
|
|
155
|
+
sdk_response_timeout_ms: 300000,
|
|
140
156
|
request_timeout_ms: 120000,
|
|
141
157
|
token_expiry_buffer_ms: 300000,
|
|
142
158
|
token_keepalive_enabled: false,
|