@nexus-cortex/core 4.51.1 → 4.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/GatewayTranslationLayer.d.ts +9 -0
- package/dist/adapters/GatewayTranslationLayer.d.ts.map +1 -1
- package/dist/adapters/GatewayTranslationLayer.js +24 -1
- package/dist/adapters/GatewayTranslationLayer.js.map +1 -1
- package/dist/adapters/ResponsesAPIAdapter.d.ts +66 -0
- package/dist/adapters/ResponsesAPIAdapter.d.ts.map +1 -1
- package/dist/adapters/ResponsesAPIAdapter.js +66 -0
- package/dist/adapters/ResponsesAPIAdapter.js.map +1 -1
- package/dist/adapters/servedModelDrift.d.ts +44 -0
- package/dist/adapters/servedModelDrift.d.ts.map +1 -0
- package/dist/adapters/servedModelDrift.js +0 -0
- package/dist/adapters/servedModelDrift.js.map +1 -0
- package/dist/conversation/ToolResultPruner.d.ts +45 -0
- package/dist/conversation/ToolResultPruner.d.ts.map +1 -0
- package/dist/conversation/ToolResultPruner.js +94 -0
- package/dist/conversation/ToolResultPruner.js.map +1 -0
- package/dist/middleware/ErrorClassificationMiddleware.d.ts +19 -0
- package/dist/middleware/ErrorClassificationMiddleware.d.ts.map +1 -1
- package/dist/middleware/ErrorClassificationMiddleware.js +55 -1
- package/dist/middleware/ErrorClassificationMiddleware.js.map +1 -1
- package/dist/middleware/RetryMiddleware.d.ts.map +1 -1
- package/dist/middleware/RetryMiddleware.js +8 -2
- package/dist/middleware/RetryMiddleware.js.map +1 -1
- package/dist/middleware/contracts/MiddlewareContracts.d.ts +4 -0
- package/dist/middleware/contracts/MiddlewareContracts.d.ts.map +1 -1
- package/dist/orchestrator/APIClient.d.ts +10 -0
- package/dist/orchestrator/APIClient.d.ts.map +1 -1
- package/dist/orchestrator/APIClient.js +81 -6
- package/dist/orchestrator/APIClient.js.map +1 -1
- package/dist/orchestrator/CortexOrchestrator.d.ts +30 -0
- package/dist/orchestrator/CortexOrchestrator.d.ts.map +1 -1
- package/dist/orchestrator/CortexOrchestrator.js +243 -21
- package/dist/orchestrator/CortexOrchestrator.js.map +1 -1
- package/dist/orchestrator/apiErrorClassifier.d.ts.map +1 -1
- package/dist/orchestrator/apiErrorClassifier.js +8 -1
- package/dist/orchestrator/apiErrorClassifier.js.map +1 -1
- package/dist/orchestrator/emptyResponseClassifier.d.ts +29 -0
- package/dist/orchestrator/emptyResponseClassifier.d.ts.map +1 -0
- package/dist/orchestrator/emptyResponseClassifier.js +42 -0
- package/dist/orchestrator/emptyResponseClassifier.js.map +1 -0
- package/dist/orchestrator/index.d.ts +1 -0
- package/dist/orchestrator/index.d.ts.map +1 -1
- package/dist/orchestrator/index.js +3 -0
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/structuredOutput.d.ts +144 -0
- package/dist/orchestrator/structuredOutput.d.ts.map +1 -0
- package/dist/orchestrator/structuredOutput.js +230 -0
- package/dist/orchestrator/structuredOutput.js.map +1 -0
- package/dist/orchestrator/tailRepetitionDetector.d.ts +57 -0
- package/dist/orchestrator/tailRepetitionDetector.d.ts.map +1 -0
- package/dist/orchestrator/tailRepetitionDetector.js +98 -0
- package/dist/orchestrator/tailRepetitionDetector.js.map +1 -0
- package/dist/system-messages/messages/WORK_QUALITY.md +2 -0
- package/dist/tools/registries/BaseToolRegistry.js +1 -1
- package/dist/tools/registries/BaseToolRegistry.js.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolResultPruner.js","sourceRoot":"","sources":["../../src/conversation/ToolResultPruner.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,14 @@ export declare class ErrorClassificationMiddleware implements IErrorClassifier {
|
|
|
45
45
|
* Permission and validation error patterns that are not retryable
|
|
46
46
|
*/
|
|
47
47
|
private readonly nonRetryablePatterns;
|
|
48
|
+
/**
|
|
49
|
+
* Context-window overflow phrasings (grok-build port, 2026-08-01). Kept
|
|
50
|
+
* deliberately STRICTER than ErrorDetector.isGenericContextError — that
|
|
51
|
+
* matcher includes the bare word 'context', which would wrongly veto
|
|
52
|
+
* retrying transient errors like "context deadline exceeded" 503s. These
|
|
53
|
+
* are a retry VETO: replaying an oversized payload fails identically.
|
|
54
|
+
*/
|
|
55
|
+
private readonly contextLengthPatterns;
|
|
48
56
|
/**
|
|
49
57
|
* Classify an error and provide detailed information
|
|
50
58
|
*
|
|
@@ -102,6 +110,17 @@ export declare class ErrorClassificationMiddleware implements IErrorClassifier {
|
|
|
102
110
|
* @param value - The string to normalize
|
|
103
111
|
* @returns Lowercase string or empty string if null/undefined
|
|
104
112
|
*/
|
|
113
|
+
/**
|
|
114
|
+
* Extract an HTTP status embedded in a raw-fetch error message. Anchored on
|
|
115
|
+
* the literal "API error" that every raw-fetch throw site uses, so a bare
|
|
116
|
+
* number in an error body ("Found 400 records") never matches. Covers all
|
|
117
|
+
* four raw-fetch throw shapes (2026-08-02):
|
|
118
|
+
* "XAI Messages API error (429): ..." -> paren form
|
|
119
|
+
* "Google GenerateContent API error (503): ..." -> paren form
|
|
120
|
+
* "XAI Responses API error 429: ..." -> bare form (was a gap)
|
|
121
|
+
* "Gemini API error: 429 - ..." -> colon form (was a gap)
|
|
122
|
+
*/
|
|
123
|
+
private extractStatusFromMessage;
|
|
105
124
|
private normalizeString;
|
|
106
125
|
/**
|
|
107
126
|
* Check if error message or name matches any of the given patterns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorClassificationMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/ErrorClassificationMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAE5C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,6BAA8B,YAAW,gBAAgB;IACpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CASnC;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAkC;IAEvE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuB;IAEhE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CASnC;IAEF;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,mBAAmB;IA4BzC;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"ErrorClassificationMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/ErrorClassificationMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAE5C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,6BAA8B,YAAW,gBAAgB;IACpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CASnC;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAkC;IAEvE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuB;IAEhE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CASnC;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAUpC;IAEF;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,mBAAmB;IA4BzC;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IA0DhC;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,mBAAmB,CAAC,WAAW,CAAC;IA0C1D;;;;;OAKG;IACH;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,eAAe;IAIvB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;CASvB"}
|
|
@@ -62,6 +62,24 @@ export class ErrorClassificationMiddleware {
|
|
|
62
62
|
'unauthorized',
|
|
63
63
|
'forbidden',
|
|
64
64
|
];
|
|
65
|
+
/**
|
|
66
|
+
* Context-window overflow phrasings (grok-build port, 2026-08-01). Kept
|
|
67
|
+
* deliberately STRICTER than ErrorDetector.isGenericContextError — that
|
|
68
|
+
* matcher includes the bare word 'context', which would wrongly veto
|
|
69
|
+
* retrying transient errors like "context deadline exceeded" 503s. These
|
|
70
|
+
* are a retry VETO: replaying an oversized payload fails identically.
|
|
71
|
+
*/
|
|
72
|
+
contextLengthPatterns = [
|
|
73
|
+
'context length',
|
|
74
|
+
'context_length_exceeded',
|
|
75
|
+
'maximum context',
|
|
76
|
+
'context window',
|
|
77
|
+
'prompt is too long',
|
|
78
|
+
'input is too long',
|
|
79
|
+
'too many tokens',
|
|
80
|
+
'exceeds the maximum number of tokens',
|
|
81
|
+
'reduce the length of the messages',
|
|
82
|
+
];
|
|
65
83
|
/**
|
|
66
84
|
* Classify an error and provide detailed information
|
|
67
85
|
*
|
|
@@ -120,6 +138,14 @@ export class ErrorClassificationMiddleware {
|
|
|
120
138
|
isRetryable(error) {
|
|
121
139
|
const errorMessage = this.normalizeString(error?.message);
|
|
122
140
|
const errorName = this.normalizeString(error?.name);
|
|
141
|
+
// Context-length veto (grok-build port, 2026-08-01): a context-window
|
|
142
|
+
// overflow is NEVER retryable — replaying the identical payload fails
|
|
143
|
+
// identically, even when a provider surfaces it under an otherwise
|
|
144
|
+
// retryable status. The remedy is compaction upstream, not a retry.
|
|
145
|
+
// Runs BEFORE the status branch deliberately (the one exception to R13).
|
|
146
|
+
if (this.matchesPattern(errorMessage, errorName, this.contextLengthPatterns)) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
123
149
|
// R13 (parallel-bench): HTTP status code is AUTHORITATIVE. A 401 with
|
|
124
150
|
// "ECONNRESET" in the body is still an auth error — message patterns must
|
|
125
151
|
// not override it. Only fall back to pattern matching when there is no
|
|
@@ -128,6 +154,16 @@ export class ErrorClassificationMiddleware {
|
|
|
128
154
|
if (statusCode) {
|
|
129
155
|
return this.retryableStatusCodes.includes(statusCode) || statusCode >= 500;
|
|
130
156
|
}
|
|
157
|
+
// Raw-fetch provider errors carry no .status property — the status is
|
|
158
|
+
// embedded in the message as "... (429): body" (xAI Messages, xAI
|
|
159
|
+
// Responses, Google HTTP, Gemini paths in APIClient). Without this,
|
|
160
|
+
// provider 429/5xx from those paths were NEVER retried (2026-08 surface
|
|
161
|
+
// map finding). The strict "(NNN):" shape avoids false positives on
|
|
162
|
+
// ordinary numbers in error text.
|
|
163
|
+
const parsedStatus = this.extractStatusFromMessage(errorMessage);
|
|
164
|
+
if (parsedStatus) {
|
|
165
|
+
return this.retryableStatusCodes.includes(parsedStatus) || parsedStatus >= 500;
|
|
166
|
+
}
|
|
131
167
|
// No status code → fall back to message-pattern matching.
|
|
132
168
|
// Network/connection errors - retryable
|
|
133
169
|
if (this.matchesPattern(errorMessage, errorName, this.networkErrorPatterns)) {
|
|
@@ -169,7 +205,8 @@ export class ErrorClassificationMiddleware {
|
|
|
169
205
|
// R13 (parallel-bench): status code is AUTHORITATIVE — a 429 with
|
|
170
206
|
// "invalid" in the body is rate_limit, not validation. Pattern matching
|
|
171
207
|
// only applies when there is no status code.
|
|
172
|
-
const statusCode = error?.status || error?.statusCode
|
|
208
|
+
const statusCode = error?.status || error?.statusCode
|
|
209
|
+
|| this.extractStatusFromMessage(errorMessage);
|
|
173
210
|
if (statusCode) {
|
|
174
211
|
if (statusCode === 429)
|
|
175
212
|
return 'rate_limit';
|
|
@@ -207,6 +244,23 @@ export class ErrorClassificationMiddleware {
|
|
|
207
244
|
* @param value - The string to normalize
|
|
208
245
|
* @returns Lowercase string or empty string if null/undefined
|
|
209
246
|
*/
|
|
247
|
+
/**
|
|
248
|
+
* Extract an HTTP status embedded in a raw-fetch error message. Anchored on
|
|
249
|
+
* the literal "API error" that every raw-fetch throw site uses, so a bare
|
|
250
|
+
* number in an error body ("Found 400 records") never matches. Covers all
|
|
251
|
+
* four raw-fetch throw shapes (2026-08-02):
|
|
252
|
+
* "XAI Messages API error (429): ..." -> paren form
|
|
253
|
+
* "Google GenerateContent API error (503): ..." -> paren form
|
|
254
|
+
* "XAI Responses API error 429: ..." -> bare form (was a gap)
|
|
255
|
+
* "Gemini API error: 429 - ..." -> colon form (was a gap)
|
|
256
|
+
*/
|
|
257
|
+
extractStatusFromMessage(message) {
|
|
258
|
+
const m = /API error[:\s(]*(\d{3})/i.exec(message);
|
|
259
|
+
if (!m)
|
|
260
|
+
return undefined;
|
|
261
|
+
const status = Number(m[1]);
|
|
262
|
+
return status >= 100 && status <= 599 ? status : undefined;
|
|
263
|
+
}
|
|
210
264
|
normalizeString(value) {
|
|
211
265
|
return value?.toLowerCase() || '';
|
|
212
266
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorClassificationMiddleware.js","sourceRoot":"","sources":["../../src/middleware/ErrorClassificationMiddleware.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ErrorClassificationMiddleware.js","sourceRoot":"","sources":["../../src/middleware/ErrorClassificationMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetryMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/RetryMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EAEZ,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"RetryMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/RetryMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EAEZ,MAAM,oCAAoC,CAAC;AAqB5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,eAAgB,YAAW,cAAc;IAUlD,OAAO,CAAC,QAAQ,CAAC,eAAe;IATlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC;;;;;OAKG;gBAEgB,eAAe,EAAE,gBAAgB,EAClD,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM;IA0BrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACG,gBAAgB,CAAC,CAAC,EACtB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAwD1B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAkBvC;;;;;OAKG;IACH,OAAO,CAAC,KAAK;IAIb;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,YAAY;IA4BpB;;;;OAIG;IACH,UAAU,IAAI,QAAQ,CAAC,YAAY,CAAC;CAGrC"}
|
|
@@ -25,6 +25,7 @@ const DEFAULT_OPTIONS = {
|
|
|
25
25
|
maxDelayMs: 30000,
|
|
26
26
|
backoffMultiplier: 2,
|
|
27
27
|
jitterFactor: 0.1,
|
|
28
|
+
rateLimitMaxRetries: 2,
|
|
28
29
|
};
|
|
29
30
|
/**
|
|
30
31
|
* RetryMiddleware
|
|
@@ -160,8 +161,13 @@ export class RetryMiddleware {
|
|
|
160
161
|
// Classify the error
|
|
161
162
|
const classification = this.errorClassifier.classify(error);
|
|
162
163
|
errors.push(classification);
|
|
163
|
-
// Check if we should retry
|
|
164
|
-
|
|
164
|
+
// Check if we should retry. Rate limits get a lower attempt cap than
|
|
165
|
+
// transient faults (grok-build port): a 429 that survives two waits
|
|
166
|
+
// will usually survive a third.
|
|
167
|
+
const attemptCap = classification.errorType === 'rate_limit'
|
|
168
|
+
? Math.min(this.options.maxRetries, this.options.rateLimitMaxRetries ?? this.options.maxRetries)
|
|
169
|
+
: this.options.maxRetries;
|
|
170
|
+
const isLastAttempt = attempt >= attemptCap;
|
|
165
171
|
const shouldRetry = classification.isRetryable && !isLastAttempt;
|
|
166
172
|
if (!shouldRetry) {
|
|
167
173
|
// Either non-retryable or exhausted retries - throw error
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetryMiddleware.js","sourceRoot":"","sources":["../../src/middleware/RetryMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH;;;;;;;;;GASG;AACH,MAAM,eAAe,GAAiB;IACpC,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,KAAK;IACjB,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"RetryMiddleware.js","sourceRoot":"","sources":["../../src/middleware/RetryMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,10 @@ export interface RetryOptions {
|
|
|
67
67
|
maxDelayMs: number;
|
|
68
68
|
backoffMultiplier: number;
|
|
69
69
|
jitterFactor: number;
|
|
70
|
+
/** Separate, lower attempt cap for rate-limit (429) errors — a 429 that
|
|
71
|
+
* survives two waits usually survives a third; burning the full backoff
|
|
72
|
+
* ladder wastes wall-clock (grok-build port, 2026-08-01). Default: 2. */
|
|
73
|
+
rateLimitMaxRetries?: number;
|
|
70
74
|
}
|
|
71
75
|
/**
|
|
72
76
|
* Result of a retry operation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddlewareContracts.d.ts","sourceRoot":"","sources":["../../../src/middleware/contracts/MiddlewareContracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAMnF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,CAAC,EAAE;QACb,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,MAAM,EAAE,OAAO;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,CACL,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAMD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC;IACxF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,mBAAmB,CAAC;IAE1C;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC;IAEjC;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC5D;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"MiddlewareContracts.d.ts","sourceRoot":"","sources":["../../../src/middleware/contracts/MiddlewareContracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,16 @@ export interface APIResponse {
|
|
|
18
18
|
status: number;
|
|
19
19
|
/** Response headers */
|
|
20
20
|
headers: Record<string, string>;
|
|
21
|
+
/**
|
|
22
|
+
* xAI server-advertised effective limits (grok-build parity, 2026-08-01):
|
|
23
|
+
* parsed from x-grok-context-window / x-grok-max-completion-tokens response
|
|
24
|
+
* headers on the xAI Messages path. Optional and additive — informational
|
|
25
|
+
* for budget consumers; nothing in the pipeline requires it.
|
|
26
|
+
*/
|
|
27
|
+
xaiServerLimits?: {
|
|
28
|
+
contextWindow?: number;
|
|
29
|
+
maxCompletionTokens?: number;
|
|
30
|
+
};
|
|
21
31
|
}
|
|
22
32
|
/**
|
|
23
33
|
* Stream chunk for real-time UI updates
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APIClient.d.ts","sourceRoot":"","sources":["../../src/orchestrator/APIClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAqB5D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,IAAI,EAAE,GAAG,CAAC;IAEV,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IAEf,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"APIClient.d.ts","sourceRoot":"","sources":["../../src/orchestrator/APIClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -481,6 +481,17 @@ export class APIClient {
|
|
|
481
481
|
if (request.conversationId) {
|
|
482
482
|
headers['x-grok-conv-id'] = request.conversationId;
|
|
483
483
|
}
|
|
484
|
+
// grok-build parity (2026-08-01, operator-approved): per-request id for
|
|
485
|
+
// server-side tracing/dedup — mirrors grok-build's GrokRequestHeaders
|
|
486
|
+
// (x-grok-req-id alongside x-grok-conv-id). Additive; request content,
|
|
487
|
+
// thinking round-trip, and cache keying are untouched.
|
|
488
|
+
headers['x-grok-req-id'] = uuidv4();
|
|
489
|
+
// Opt-in server-side doom-loop detection (grok-build sampler parity).
|
|
490
|
+
// OFF by default; when XAI_DOOM_LOOP_CHECK=true the server may flag
|
|
491
|
+
// reasoning loops (e.g. tail_repetition triggers) which we surface below.
|
|
492
|
+
if (process.env.XAI_DOOM_LOOP_CHECK === 'true') {
|
|
493
|
+
headers['x-grok-doom-loop-check'] = 'true';
|
|
494
|
+
}
|
|
484
495
|
const httpResponse = await fetch(modelConfig.api.endpoint, {
|
|
485
496
|
method: 'POST',
|
|
486
497
|
headers,
|
|
@@ -491,6 +502,25 @@ export class APIClient {
|
|
|
491
502
|
throw new Error(`XAI Messages API error (${httpResponse.status}): ${errorText}`);
|
|
492
503
|
}
|
|
493
504
|
const data = await httpResponse.json();
|
|
505
|
+
// grok-build parity: xAI advertises the effective serving limits on
|
|
506
|
+
// response headers; parse and surface (informational, additive).
|
|
507
|
+
const xaiCtxHeader = httpResponse.headers.get('x-grok-context-window');
|
|
508
|
+
const xaiMaxOutHeader = httpResponse.headers.get('x-grok-max-completion-tokens');
|
|
509
|
+
const xaiServerLimits = (xaiCtxHeader || xaiMaxOutHeader)
|
|
510
|
+
? {
|
|
511
|
+
...(xaiCtxHeader && Number.isFinite(Number(xaiCtxHeader)) ? { contextWindow: Number(xaiCtxHeader) } : {}),
|
|
512
|
+
...(xaiMaxOutHeader && Number.isFinite(Number(xaiMaxOutHeader)) ? { maxCompletionTokens: Number(xaiMaxOutHeader) } : {}),
|
|
513
|
+
}
|
|
514
|
+
: undefined;
|
|
515
|
+
if (xaiServerLimits && process.env.DEBUG === 'true') {
|
|
516
|
+
console.log(`[APIClient XAI] Server-advertised limits: ${JSON.stringify(xaiServerLimits)}`);
|
|
517
|
+
}
|
|
518
|
+
// Opt-in doom-loop detection surface: if the server flagged a reasoning
|
|
519
|
+
// loop on this terminal response, warn loudly. Pass-through only — the
|
|
520
|
+
// response content is not modified and normal parsing proceeds.
|
|
521
|
+
if (data?.doom_loop_check) {
|
|
522
|
+
console.warn(`[APIClient XAI] Server doom-loop check flagged: ${JSON.stringify(data.doom_loop_check).slice(0, 300)}`);
|
|
523
|
+
}
|
|
494
524
|
// Post-process: extract <thinking> tags from text content into separate thinking blocks
|
|
495
525
|
// grok-4-1-fast-reasoning embeds thinking in text as <thinking>...</thinking> tags
|
|
496
526
|
if (data.content && Array.isArray(data.content)) {
|
|
@@ -499,7 +529,8 @@ export class APIClient {
|
|
|
499
529
|
return {
|
|
500
530
|
data,
|
|
501
531
|
status: httpResponse.status,
|
|
502
|
-
headers: Object.fromEntries(httpResponse.headers.entries())
|
|
532
|
+
headers: Object.fromEntries(httpResponse.headers.entries()),
|
|
533
|
+
...(xaiServerLimits && { xaiServerLimits })
|
|
503
534
|
};
|
|
504
535
|
}
|
|
505
536
|
/**
|
|
@@ -894,6 +925,15 @@ export class APIClient {
|
|
|
894
925
|
// Deferred until we can investigate: possibly needs to be paired with
|
|
895
926
|
// different content-block wiring in ResponsesAPIAdapter, or only applied
|
|
896
927
|
// when we've explicitly asked for reasoning via the `reasoning` param.
|
|
928
|
+
//
|
|
929
|
+
// 2026-08-01 root-cause analysis (grok-build comparison): that include is
|
|
930
|
+
// half of the STATELESS ZDR state model (store:false + full-input replay
|
|
931
|
+
// of the encrypted blobs, grok-build's default) and must never be mixed
|
|
932
|
+
// with the server-stored chaining we run here (store:true +
|
|
933
|
+
// previous_response_id + input slicing) — the regression above is the
|
|
934
|
+
// empirical proof. Full design + implementation recipe for a proper
|
|
935
|
+
// opt-in ZDR mode: "DESIGN NOTE — stateless ZDR mode" in
|
|
936
|
+
// ResponsesAPIAdapter.ts (adapters/).
|
|
897
937
|
}
|
|
898
938
|
// Set extracted system context as instructions (enables provider-side caching)
|
|
899
939
|
// XAI does NOT support the `instructions` parameter — skip for XAI provider.
|
|
@@ -934,12 +974,22 @@ export class APIClient {
|
|
|
934
974
|
// Bearer auth — standard Responses API transport auth.
|
|
935
975
|
// OpenAI's own Responses API still uses the SDK (R20-proven, unaffected).
|
|
936
976
|
if (isXAI) {
|
|
977
|
+
// grok-build parity (2026-08-02): x-grok-req-id (per-request trace/dedup)
|
|
978
|
+
// + opt-in doom-loop check on the Responses path too — the Messages path
|
|
979
|
+
// already carries these. conv-id sticky routing is handled on Responses
|
|
980
|
+
// via the `prompt_cache_key` body field (set above), so no conv-id header
|
|
981
|
+
// here. Additive; body / reasoning round-trip untouched.
|
|
982
|
+
const xaiRespHeaders = {
|
|
983
|
+
'Content-Type': 'application/json',
|
|
984
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
985
|
+
'x-grok-req-id': uuidv4(),
|
|
986
|
+
};
|
|
987
|
+
if (process.env.XAI_DOOM_LOOP_CHECK === 'true') {
|
|
988
|
+
xaiRespHeaders['x-grok-doom-loop-check'] = 'true';
|
|
989
|
+
}
|
|
937
990
|
const httpResponse = await fetch(modelConfig.api.endpoint, {
|
|
938
991
|
method: 'POST',
|
|
939
|
-
headers:
|
|
940
|
-
'Content-Type': 'application/json',
|
|
941
|
-
'Authorization': `Bearer ${apiKey}`,
|
|
942
|
-
},
|
|
992
|
+
headers: xaiRespHeaders,
|
|
943
993
|
body: JSON.stringify(responsesRequest),
|
|
944
994
|
});
|
|
945
995
|
if (!httpResponse.ok) {
|
|
@@ -1482,6 +1532,16 @@ export class APIClient {
|
|
|
1482
1532
|
if (request.conversationId) {
|
|
1483
1533
|
xaiDefaultHeaders['x-grok-conv-id'] = request.conversationId;
|
|
1484
1534
|
}
|
|
1535
|
+
// grok-build parity (2026-08-01, operator-approved): per-request id +
|
|
1536
|
+
// opt-in server-side doom-loop detection header, mirroring the
|
|
1537
|
+
// non-streaming path. Additive headers only — the SDK stream event
|
|
1538
|
+
// handling below is untouched. NOTE: server doom_loop_check SSE events
|
|
1539
|
+
// are NOT consumable on this path (the Anthropic SDK drops unknown
|
|
1540
|
+
// event names); detection surfacing is non-streaming only for now.
|
|
1541
|
+
xaiDefaultHeaders['x-grok-req-id'] = uuidv4();
|
|
1542
|
+
if (process.env.XAI_DOOM_LOOP_CHECK === 'true') {
|
|
1543
|
+
xaiDefaultHeaders['x-grok-doom-loop-check'] = 'true';
|
|
1544
|
+
}
|
|
1485
1545
|
const xaiClient = new Anthropic({
|
|
1486
1546
|
apiKey,
|
|
1487
1547
|
baseURL: modelConfig.api.endpoint.replace('/v1/messages', ''), // Strip path, keep base
|
|
@@ -1955,7 +2015,20 @@ export class APIClient {
|
|
|
1955
2015
|
// Import OpenAI SDK dynamically — set baseURL from model config endpoint
|
|
1956
2016
|
const OpenAI = (await import('openai')).default;
|
|
1957
2017
|
const streamBaseURL = modelConfig.api.endpoint.replace(/\/(messages|responses)$/, '');
|
|
1958
|
-
|
|
2018
|
+
// grok-build parity (2026-08-02): x-grok-req-id + opt-in doom-loop check
|
|
2019
|
+
// on the streaming Responses path (SDK carries them via defaultHeaders).
|
|
2020
|
+
// conv-id sticky routing rides prompt_cache_key in the body (set above).
|
|
2021
|
+
const xaiRespStreamHeaders = isXAI
|
|
2022
|
+
? {
|
|
2023
|
+
'x-grok-req-id': uuidv4(),
|
|
2024
|
+
...(process.env.XAI_DOOM_LOOP_CHECK === 'true' ? { 'x-grok-doom-loop-check': 'true' } : {}),
|
|
2025
|
+
}
|
|
2026
|
+
: {};
|
|
2027
|
+
const client = new OpenAI({
|
|
2028
|
+
apiKey,
|
|
2029
|
+
baseURL: streamBaseURL,
|
|
2030
|
+
...(Object.keys(xaiRespStreamHeaders).length > 0 && { defaultHeaders: xaiRespStreamHeaders }),
|
|
2031
|
+
});
|
|
1959
2032
|
// Create streaming request
|
|
1960
2033
|
// Use modelConfig.modelId if available (for alias models like gpt-5.1-reasoning -> gpt-5.1)
|
|
1961
2034
|
const actualModelId = modelConfig.modelId || request.modelId;
|
|
@@ -1975,6 +2048,8 @@ export class APIClient {
|
|
|
1975
2048
|
// `prompt_cache_key` routes same-session requests to same server for cache hits.
|
|
1976
2049
|
// NOTE: `include: ["reasoning.encrypted_content"]` triggered empty-output regression —
|
|
1977
2050
|
// see sendResponsesAPI comment for details. Not sending it for now.
|
|
2051
|
+
// It belongs to the stateless-ZDR state model, not to chaining: full
|
|
2052
|
+
// recipe in "DESIGN NOTE — stateless ZDR mode" (ResponsesAPIAdapter.ts).
|
|
1978
2053
|
if (isXAI) {
|
|
1979
2054
|
responsesRequest.store = true;
|
|
1980
2055
|
if (request.conversationId) {
|