@nexus-cortex/core 4.51.0 → 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/ChatCompletionsAPIAdapter.d.ts.map +1 -1
- package/dist/adapters/ChatCompletionsAPIAdapter.js +16 -0
- package/dist/adapters/ChatCompletionsAPIAdapter.js.map +1 -1
- package/dist/adapters/FormatAdapter.interface.d.ts +4 -4
- package/dist/adapters/FormatAdapter.interface.js +4 -4
- 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/ToolNamingHandler.d.ts +4 -4
- package/dist/adapters/ToolNamingHandler.js +4 -4
- 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/agents/AgentStore.d.ts.map +1 -1
- package/dist/agents/AgentStore.js +5 -2
- package/dist/agents/AgentStore.js.map +1 -1
- package/dist/config/RuntimeConfigRegistry.d.ts.map +1 -1
- package/dist/config/RuntimeConfigRegistry.js +1 -0
- package/dist/config/RuntimeConfigRegistry.js.map +1 -1
- package/dist/config/SettingsLoader.js +1 -1
- package/dist/config/SettingsLoader.js.map +1 -1
- package/dist/config/SettingsSchema.d.ts +2 -2
- package/dist/config/SettingsSchema.d.ts.map +1 -1
- package/dist/config/SettingsSchema.js +13 -8
- package/dist/config/SettingsSchema.js.map +1 -1
- package/dist/conversation/ContextBudgetManager.d.ts.map +1 -1
- package/dist/conversation/ContextBudgetManager.js +4 -2
- package/dist/conversation/ContextBudgetManager.js.map +1 -1
- 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/PermissionsMiddleware.d.ts +2 -2
- package/dist/middleware/PermissionsMiddleware.js +2 -2
- 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/middleware/permissions/BashCommandPolicy.d.ts +2 -2
- package/dist/middleware/permissions/BashCommandPolicy.js +2 -2
- package/dist/middleware/permissions/BlacklistPolicy.d.ts +1 -1
- package/dist/middleware/permissions/BlacklistPolicy.js +1 -1
- package/dist/middleware/permissions/FileOperationPolicy.d.ts +2 -2
- package/dist/middleware/permissions/FileOperationPolicy.js +2 -2
- package/dist/middleware/permissions/PermissionAuditLogger.d.ts +1 -1
- package/dist/middleware/permissions/PermissionAuditLogger.js +1 -1
- package/dist/middleware/permissions/PermissionConfig.js +2 -2
- package/dist/middleware/permissions/PermissionConfig.js.map +1 -1
- package/dist/middleware/permissions/PermissionEvaluator.d.ts +2 -2
- package/dist/middleware/permissions/PermissionEvaluator.js +2 -2
- package/dist/middleware/permissions/WhitelistPolicy.d.ts +2 -2
- package/dist/middleware/permissions/WhitelistPolicy.js +2 -2
- package/dist/middleware/permissions/WorkspaceBoundaryPolicy.d.ts.map +1 -1
- package/dist/middleware/permissions/WorkspaceBoundaryPolicy.js +2 -3
- package/dist/middleware/permissions/WorkspaceBoundaryPolicy.js.map +1 -1
- package/dist/models/ModelConfig.interface.js +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 +256 -36
- package/dist/orchestrator/CortexOrchestrator.js.map +1 -1
- package/dist/orchestrator/OrchestratorFactory.js +1 -1
- package/dist/orchestrator/OrchestratorFactory.js.map +1 -1
- package/dist/orchestrator/SubAgentPermissionChecker.d.ts.map +1 -1
- package/dist/orchestrator/SubAgentPermissionChecker.js +13 -2
- package/dist/orchestrator/SubAgentPermissionChecker.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/SystemReminderInjector.d.ts +3 -3
- package/dist/system-messages/SystemReminderInjector.d.ts.map +1 -1
- package/dist/system-messages/SystemReminderInjector.js +4 -4
- package/dist/system-messages/SystemReminderInjector.js.map +1 -1
- package/dist/system-messages/messages/EXAMPLES.md +18 -18
- package/dist/system-messages/messages/SYSTEM_PROMPT.md +15 -13
- package/dist/system-messages/messages/TASK_AGENT_GUIDE.md +2 -2
- package/dist/system-messages/messages/TOOL_USAGE_GUIDE.md +43 -42
- package/dist/system-messages/messages/WORK_QUALITY.md +12 -10
- package/dist/tools/ToolFactory.d.ts.map +1 -1
- package/dist/tools/ToolFactory.js +3 -1
- package/dist/tools/ToolFactory.js.map +1 -1
- package/dist/tools/context-management/InitCortexContext.js +1 -1
- package/dist/tools/context-management/InitCortexContext.js.map +1 -1
- package/dist/tools/mcp-management/InitMcpConfig.js +1 -1
- package/dist/tools/registries/BaseToolRegistry.js +45 -45
- package/dist/tools/registries/BaseToolRegistry.js.map +1 -1
- package/package.json +4 -3
|
@@ -14,10 +14,10 @@ import { BasePermissionPolicy, PolicyPriority } from './PermissionPolicy.js';
|
|
|
14
14
|
*
|
|
15
15
|
* @example
|
|
16
16
|
* ```typescript
|
|
17
|
-
* const policy = new WhitelistPolicy(['
|
|
17
|
+
* const policy = new WhitelistPolicy(['Read', 'Write', 'Bash']);
|
|
18
18
|
*
|
|
19
19
|
* await policy.evaluate({
|
|
20
|
-
* toolName: '
|
|
20
|
+
* toolName: 'Read',
|
|
21
21
|
* toolInput: {},
|
|
22
22
|
* sessionId: '123',
|
|
23
23
|
* timestamp: new Date()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceBoundaryPolicy.d.ts","sourceRoot":"","sources":["../../../src/middleware/permissions/WorkspaceBoundaryPolicy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkspaceBoundaryPolicy.d.ts","sourceRoot":"","sources":["../../../src/middleware/permissions/WorkspaceBoundaryPolicy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AA0B7D,qBAAa,uBAAwB,SAAQ,oBAAoB;IAC/D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IAEjC;;;OAGG;gBACS,YAAY,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,MAA0B,EAAE,OAAO,GAAE,OAAc;IAK3F,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsBvE,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;CAUvB"}
|
|
@@ -31,14 +31,13 @@ const PATH_FIELD_BY_TOOL = {
|
|
|
31
31
|
Read: ['file_path', 'path'],
|
|
32
32
|
Write: ['file_path', 'path'],
|
|
33
33
|
Edit: ['file_path', 'path'],
|
|
34
|
-
|
|
34
|
+
NotebookEdit: ['notebook_path', 'file_path', 'path'],
|
|
35
35
|
WriteBinary: ['file_path', 'path'],
|
|
36
36
|
Glob: ['path'],
|
|
37
37
|
Grep: ['path'],
|
|
38
|
-
//
|
|
38
|
+
// Bash: only the explicit working-directory param is gated here. The
|
|
39
39
|
// command string itself is the BashCommandPolicy's concern, not this one.
|
|
40
40
|
Bash: ['directory'],
|
|
41
|
-
Shell: ['directory'],
|
|
42
41
|
};
|
|
43
42
|
export class WorkspaceBoundaryPolicy extends BasePermissionPolicy {
|
|
44
43
|
roots;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceBoundaryPolicy.js","sourceRoot":"","sources":["../../../src/middleware/permissions/WorkspaceBoundaryPolicy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAKlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,wEAAwE;AACxE,MAAM,kBAAkB,GAA6B;IACnD,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IAC3B,
|
|
1
|
+
{"version":3,"file":"WorkspaceBoundaryPolicy.js","sourceRoot":"","sources":["../../../src/middleware/permissions/WorkspaceBoundaryPolicy.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) {
|