@nexus-cortex/core 4.51.1 → 4.53.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.
Files changed (68) hide show
  1. package/dist/adapters/GatewayTranslationLayer.d.ts +9 -0
  2. package/dist/adapters/GatewayTranslationLayer.d.ts.map +1 -1
  3. package/dist/adapters/GatewayTranslationLayer.js +24 -1
  4. package/dist/adapters/GatewayTranslationLayer.js.map +1 -1
  5. package/dist/adapters/ResponsesAPIAdapter.d.ts +66 -0
  6. package/dist/adapters/ResponsesAPIAdapter.d.ts.map +1 -1
  7. package/dist/adapters/ResponsesAPIAdapter.js +66 -0
  8. package/dist/adapters/ResponsesAPIAdapter.js.map +1 -1
  9. package/dist/adapters/node/GitHistoryStore.d.ts +80 -0
  10. package/dist/adapters/node/GitHistoryStore.d.ts.map +1 -0
  11. package/dist/adapters/node/GitHistoryStore.js +179 -0
  12. package/dist/adapters/node/GitHistoryStore.js.map +1 -0
  13. package/dist/adapters/node/index.d.ts +2 -0
  14. package/dist/adapters/node/index.d.ts.map +1 -1
  15. package/dist/adapters/node/index.js +1 -0
  16. package/dist/adapters/node/index.js.map +1 -1
  17. package/dist/adapters/servedModelDrift.d.ts +44 -0
  18. package/dist/adapters/servedModelDrift.d.ts.map +1 -0
  19. package/dist/adapters/servedModelDrift.js +0 -0
  20. package/dist/adapters/servedModelDrift.js.map +1 -0
  21. package/dist/conversation/ToolResultPruner.d.ts +45 -0
  22. package/dist/conversation/ToolResultPruner.d.ts.map +1 -0
  23. package/dist/conversation/ToolResultPruner.js +94 -0
  24. package/dist/conversation/ToolResultPruner.js.map +1 -0
  25. package/dist/index.d.ts +2 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/middleware/ErrorClassificationMiddleware.d.ts +19 -0
  30. package/dist/middleware/ErrorClassificationMiddleware.d.ts.map +1 -1
  31. package/dist/middleware/ErrorClassificationMiddleware.js +55 -1
  32. package/dist/middleware/ErrorClassificationMiddleware.js.map +1 -1
  33. package/dist/middleware/RetryMiddleware.d.ts.map +1 -1
  34. package/dist/middleware/RetryMiddleware.js +8 -2
  35. package/dist/middleware/RetryMiddleware.js.map +1 -1
  36. package/dist/middleware/contracts/MiddlewareContracts.d.ts +4 -0
  37. package/dist/middleware/contracts/MiddlewareContracts.d.ts.map +1 -1
  38. package/dist/orchestrator/APIClient.d.ts +10 -0
  39. package/dist/orchestrator/APIClient.d.ts.map +1 -1
  40. package/dist/orchestrator/APIClient.js +81 -6
  41. package/dist/orchestrator/APIClient.js.map +1 -1
  42. package/dist/orchestrator/CortexOrchestrator.d.ts +30 -0
  43. package/dist/orchestrator/CortexOrchestrator.d.ts.map +1 -1
  44. package/dist/orchestrator/CortexOrchestrator.js +243 -21
  45. package/dist/orchestrator/CortexOrchestrator.js.map +1 -1
  46. package/dist/orchestrator/apiErrorClassifier.d.ts.map +1 -1
  47. package/dist/orchestrator/apiErrorClassifier.js +8 -1
  48. package/dist/orchestrator/apiErrorClassifier.js.map +1 -1
  49. package/dist/orchestrator/emptyResponseClassifier.d.ts +29 -0
  50. package/dist/orchestrator/emptyResponseClassifier.d.ts.map +1 -0
  51. package/dist/orchestrator/emptyResponseClassifier.js +42 -0
  52. package/dist/orchestrator/emptyResponseClassifier.js.map +1 -0
  53. package/dist/orchestrator/index.d.ts +1 -0
  54. package/dist/orchestrator/index.d.ts.map +1 -1
  55. package/dist/orchestrator/index.js +3 -0
  56. package/dist/orchestrator/index.js.map +1 -1
  57. package/dist/orchestrator/structuredOutput.d.ts +144 -0
  58. package/dist/orchestrator/structuredOutput.d.ts.map +1 -0
  59. package/dist/orchestrator/structuredOutput.js +230 -0
  60. package/dist/orchestrator/structuredOutput.js.map +1 -0
  61. package/dist/orchestrator/tailRepetitionDetector.d.ts +57 -0
  62. package/dist/orchestrator/tailRepetitionDetector.d.ts.map +1 -0
  63. package/dist/orchestrator/tailRepetitionDetector.js +98 -0
  64. package/dist/orchestrator/tailRepetitionDetector.js.map +1 -0
  65. package/dist/system-messages/messages/WORK_QUALITY.md +2 -0
  66. package/dist/tools/registries/BaseToolRegistry.js +1 -1
  67. package/dist/tools/registries/BaseToolRegistry.js.map +1 -1
  68. package/package.json +18 -4
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Git-backed HistoryStore — "your agent memory is a git repo you own."
3
+ *
4
+ * A published `HistoryStore` backend whose durable store is a git working
5
+ * clone: sessions are canonical JSONL under `{repoDir}/{sessionsSubdir}`,
6
+ * writes are committed (and optionally pushed), reads optionally pull first.
7
+ * It DECORATES the existing Node session store (JSONLHistoryStore via
8
+ * NodeHistoryStoreAdapter) — the canonical record format is reused verbatim,
9
+ * never re-implemented; this class only adds the git state-machine layer
10
+ * (push = append, pull = rehydrate).
11
+ *
12
+ * Dependency-free (Node built-ins only). git identity is passed per-commit
13
+ * with `-c user.name/-c user.email` so global git config is never mutated.
14
+ * All git invocations set GIT_TERMINAL_PROMPT=0 so a missing credential fails
15
+ * fast instead of hanging on a prompt.
16
+ *
17
+ * Scope: the SESSION dimension (canonical Message records). The capability/
18
+ * artifact dimension (skills/agents/mcp/plugins manifests) is a separate arc
19
+ * (CANON_CROSS_HARNESS_PLAN.md §27p) and is intentionally not modeled here.
20
+ *
21
+ * @module adapters/node/GitHistoryStore
22
+ */
23
+ import { execFile } from 'child_process';
24
+ import { promisify } from 'util';
25
+ import * as fs from 'fs/promises';
26
+ import * as path from 'path';
27
+ import { JSONLHistoryStore } from '../../session/JSONLHistoryStore.js';
28
+ import { NodeHistoryStoreAdapter } from './NodeHistoryStoreAdapter.js';
29
+ const execFileAsync = promisify(execFile);
30
+ /**
31
+ * Git-backed session history store. Decorates JSONLHistoryStore with a git
32
+ * state machine; implements the runtime-agnostic HistoryStore interface.
33
+ */
34
+ export class GitHistoryStore {
35
+ cfg;
36
+ inner;
37
+ readyPromise = null;
38
+ constructor(config) {
39
+ this.cfg = {
40
+ repoDir: config.repoDir,
41
+ sessionsSubdir: config.sessionsSubdir ?? '.cortex/sessions',
42
+ branch: config.branch ?? 'main',
43
+ autoPull: config.autoPull ?? false,
44
+ autoCommit: config.autoCommit ?? true,
45
+ autoPush: config.autoPush ?? false,
46
+ commitPrefix: config.commitPrefix ?? 'canon',
47
+ authorName: config.authorName ?? 'nexus-cortex canon',
48
+ authorEmail: config.authorEmail ?? 'canon@nexus-cortex.local',
49
+ remote: config.remote,
50
+ };
51
+ const baseDir = path.join(this.cfg.repoDir, this.cfg.sessionsSubdir);
52
+ // git IS the history — no sidecar .backup files inside a versioned repo.
53
+ this.inner = new NodeHistoryStoreAdapter(new JSONLHistoryStore({ baseDir, enableBackups: false }));
54
+ }
55
+ // ---- git plumbing (dependency-free) -------------------------------------
56
+ async git(args, cwd = this.cfg.repoDir) {
57
+ const { stdout } = await execFileAsync('git', args, {
58
+ cwd,
59
+ encoding: 'utf8',
60
+ maxBuffer: 64 * 1024 * 1024,
61
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
62
+ });
63
+ return stdout;
64
+ }
65
+ /** Idempotent: clone/init the repo and ensure the sessions subdir exists. */
66
+ ensureRepo() {
67
+ if (!this.readyPromise)
68
+ this.readyPromise = this.doEnsureRepo();
69
+ return this.readyPromise;
70
+ }
71
+ async doEnsureRepo() {
72
+ const hasGit = await this.pathExists(path.join(this.cfg.repoDir, '.git'));
73
+ if (!hasGit) {
74
+ if (this.cfg.remote) {
75
+ await fs.mkdir(path.dirname(this.cfg.repoDir), { recursive: true });
76
+ await execFileAsync('git', ['clone', '-q', '--branch', this.cfg.branch, this.cfg.remote, this.cfg.repoDir], {
77
+ encoding: 'utf8',
78
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
79
+ }).catch(async () => {
80
+ // remote may not yet have the branch — clone default then checkout.
81
+ await execFileAsync('git', ['clone', '-q', this.cfg.remote, this.cfg.repoDir], {
82
+ encoding: 'utf8',
83
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
84
+ });
85
+ });
86
+ }
87
+ else {
88
+ await fs.mkdir(this.cfg.repoDir, { recursive: true });
89
+ await this.git(['init', '-q', '-b', this.cfg.branch]);
90
+ }
91
+ }
92
+ await fs.mkdir(path.join(this.cfg.repoDir, this.cfg.sessionsSubdir), { recursive: true });
93
+ }
94
+ async pathExists(p) {
95
+ try {
96
+ await fs.access(p);
97
+ return true;
98
+ }
99
+ catch {
100
+ return false;
101
+ }
102
+ }
103
+ async pullIfEnabled() {
104
+ if (!this.cfg.autoPull || !this.cfg.remote)
105
+ return;
106
+ // Non-fatal: an offline pull must not break a local read.
107
+ await this.git(['pull', '-q', '--ff-only', 'origin', this.cfg.branch]).catch(() => undefined);
108
+ }
109
+ /** Commit anything staged under the sessions subdir; push if configured. */
110
+ async commitAndPush(message) {
111
+ if (!this.cfg.autoCommit)
112
+ return;
113
+ await this.git(['add', '--', this.cfg.sessionsSubdir]);
114
+ const status = (await this.git(['status', '--porcelain', '--', this.cfg.sessionsSubdir])).trim();
115
+ if (!status)
116
+ return; // nothing changed — no empty commits
117
+ await this.git([
118
+ '-c', `user.name=${this.cfg.authorName}`,
119
+ '-c', `user.email=${this.cfg.authorEmail}`,
120
+ 'commit', '-q', '-m', message,
121
+ ]);
122
+ if (this.cfg.autoPush && this.cfg.remote) {
123
+ await this.git(['push', '-q', 'origin', this.cfg.branch]);
124
+ }
125
+ }
126
+ // ---- HistoryStore: reads ------------------------------------------------
127
+ async loadSession(sessionId) {
128
+ await this.ensureRepo();
129
+ await this.pullIfEnabled();
130
+ return this.inner.loadSession(sessionId);
131
+ }
132
+ async listSessions() {
133
+ await this.ensureRepo();
134
+ await this.pullIfEnabled();
135
+ return this.inner.listSessions();
136
+ }
137
+ async sessionExists(sessionId) {
138
+ await this.ensureRepo();
139
+ return this.inner.sessionExists(sessionId);
140
+ }
141
+ async loadMetadata(sessionId) {
142
+ await this.ensureRepo();
143
+ await this.pullIfEnabled();
144
+ return this.inner.loadMetadata(sessionId);
145
+ }
146
+ async getSessionInfo(sessionId) {
147
+ await this.ensureRepo();
148
+ return this.inner.getSessionInfo(sessionId);
149
+ }
150
+ // ---- HistoryStore: writes (each = one git commit) -----------------------
151
+ async appendMessage(sessionId, message) {
152
+ await this.ensureRepo();
153
+ await this.inner.appendMessage(sessionId, message);
154
+ await this.commitAndPush(`${this.cfg.commitPrefix}: append ${sessionId}`);
155
+ }
156
+ async appendMessages(sessionId, messages) {
157
+ await this.ensureRepo();
158
+ await this.inner.appendMessages(sessionId, messages);
159
+ await this.commitAndPush(`${this.cfg.commitPrefix}: append ${messages.length} → ${sessionId}`);
160
+ }
161
+ async saveSession(sessionId, messages) {
162
+ await this.ensureRepo();
163
+ await this.inner.saveSession(sessionId, messages);
164
+ await this.commitAndPush(`${this.cfg.commitPrefix}: save ${sessionId} (${messages.length} msgs)`);
165
+ }
166
+ async saveMetadata(sessionId, metadata) {
167
+ await this.ensureRepo();
168
+ await this.inner.saveMetadata(sessionId, metadata);
169
+ await this.commitAndPush(`${this.cfg.commitPrefix}: metadata ${sessionId}`);
170
+ }
171
+ async deleteSession(sessionId) {
172
+ await this.ensureRepo();
173
+ const deleted = await this.inner.deleteSession(sessionId);
174
+ if (deleted)
175
+ await this.commitAndPush(`${this.cfg.commitPrefix}: delete ${sessionId}`);
176
+ return deleted;
177
+ }
178
+ }
179
+ //# sourceMappingURL=GitHistoryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHistoryStore.js","sourceRoot":"","sources":["../../../src/adapters/node/GitHistoryStore.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@
13
13
  */
14
14
  export { NodeConfigProvider } from './NodeConfigProvider.js';
15
15
  export { NodeHistoryStoreAdapter } from './NodeHistoryStoreAdapter.js';
16
+ export { GitHistoryStore } from './GitHistoryStore.js';
17
+ export type { GitHistoryStoreConfig } from './GitHistoryStore.js';
16
18
  export { NodeToolExecutorAdapter } from './NodeToolExecutorAdapter.js';
17
19
  export { NodePermissionAdapter } from './NodePermissionAdapter.js';
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -13,6 +13,7 @@
13
13
  */
14
14
  export { NodeConfigProvider } from './NodeConfigProvider.js';
15
15
  export { NodeHistoryStoreAdapter } from './NodeHistoryStoreAdapter.js';
16
+ export { GitHistoryStore } from './GitHistoryStore.js';
16
17
  export { NodeToolExecutorAdapter } from './NodeToolExecutorAdapter.js';
17
18
  export { NodePermissionAdapter } from './NodePermissionAdapter.js';
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Served-model drift detection (2026-08-01).
3
+ *
4
+ * Providers can silently serve a request with a DIFFERENT backend model than
5
+ * the slug requested — discovered live on xAI (request grok-4-1-fast-*, the
6
+ * response `model` field says grok-4.3; request grok-code-fast-1, served by
7
+ * grok-build-0.1). When that happens, card-declared limits (context window,
8
+ * output tokens, pricing) may not match the backend actually serving, and
9
+ * budget/compaction calibration silently drifts.
10
+ *
11
+ * This module is the detector only: pure comparison + warn-once bookkeeping.
12
+ * Policy decisions (never auto-adjust budgets from this signal) live with the
13
+ * caller — see the DESIGN NOTE in the bench ledger
14
+ * .cortex/bench/r-structured-output-dialect-canary.md.
15
+ *
16
+ * Snapshot tolerance: OpenAI-style dated snapshots (requested gpt-5-nano,
17
+ * served gpt-5-nano-2025-08-07) are the SAME model resolved to a pinned
18
+ * snapshot — not drift. A served id that merely extends the requested id with
19
+ * a -YYYY-MM-DD (or -YYYYMMDD) suffix is treated as a snapshot variant.
20
+ */
21
+ /** Result of a drift comparison. */
22
+ export interface ServedModelDriftResult {
23
+ /** True when the served backend differs from the requested wire id. */
24
+ drift: boolean;
25
+ /** True when served is a dated snapshot of the requested id (not drift). */
26
+ snapshotVariant: boolean;
27
+ }
28
+ /**
29
+ * Compare the wire model id we requested against the `model` field the
30
+ * provider returned. Pure; case-sensitive except for a trim.
31
+ */
32
+ export declare function detectServedModelDrift(requestedWireId: string, servedModelId: string): ServedModelDriftResult;
33
+ /** Human-readable warning for a detected drift. */
34
+ export declare function formatDriftWarning(requestedWireId: string, servedModelId: string): string;
35
+ /**
36
+ * Record a sighting and report whether it is a drift AND the first time this
37
+ * exact (requested -> served) pair has been seen in this process.
38
+ */
39
+ export declare function noteServedModel(requestedWireId: string, servedModelId: string): ServedModelDriftResult & {
40
+ firstSighting: boolean;
41
+ };
42
+ /** Test hook: clear the warn-once registry. */
43
+ export declare function resetServedModelDriftRegistry(): void;
44
+ //# sourceMappingURL=servedModelDrift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servedModelDrift.d.ts","sourceRoot":"","sources":["../../src/adapters/servedModelDrift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,oCAAoC;AACpC,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,KAAK,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,eAAe,EAAE,OAAO,CAAC;CAC1B;AAID;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GACpB,sBAAsB,CAUxB;AAED,mDAAmD;AACnD,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAMzF;AAOD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GACpB,sBAAsB,GAAG;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAOrD;AAED,+CAA+C;AAC/C,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servedModelDrift.js","sourceRoot":"","sources":["../../src/adapters/servedModelDrift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,eAAuB,EACvB,aAAqB;IAErB,MAAM,SAAS,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAClD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACrF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,kBAAkB,CAAC,eAAuB,EAAE,aAAqB;IAC/E,OAAO,CACL,iCAAiC,eAAe,8BAA8B,aAAa,IAAI;QAC/F,sFAAsF;QACtF,iDAAiD,CAClD,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,2EAA2E;AAC3E,WAAW;AACX,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,eAAuB,EACvB,aAAqB;IAErB,MAAM,MAAM,GAAG,sBAAsB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAC9D,MAAM,GAAG,GAAG,GAAG,eAAe,IAAI,aAAa,EAAE,CAAC;IAClD,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,aAAa;QAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,CAAC;AACtC,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,6BAA6B;IAC3C,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ToolResultPruner — age-tiered tool-result pruning for OUTGOING REQUEST
3
+ * copies of the canonical history.
4
+ *
5
+ * Ported from grok-build's request-builder pruning (2026-08-01): when context
6
+ * pressure is high, tool results outside the most recent turns are
7
+ * middle-trimmed (soft tier) or fully elided (hard tier). This is a relief
8
+ * valve BELOW compaction — it defers whole-message removal/summarization and
9
+ * costs nothing while context is comfortable (the caller gates on
10
+ * utilization; see CortexOrchestrator.pruneAgedForRequest).
11
+ *
12
+ * Contract:
13
+ * - PURE: never mutates the input. Touched messages get a new wrapper, a new
14
+ * content array, new block objects, and a new toolResult object; untouched
15
+ * messages pass through by reference. Canonical history, JSONL, and the
16
+ * canonicalConversionCache are never affected.
17
+ * - ONLY tool_result payloads are touched. text, tool_use, thinking,
18
+ * redacted_thinking, and server-tool blocks are never modified, so
19
+ * tool_use/tool_result pairing stays structurally intact (blocks are
20
+ * rewritten in place, never removed) and provider validators stay happy.
21
+ * - Prompt-cache note: rewriting an old tool result invalidates the cached
22
+ * prefix from that message onward. That is why the CALLER gates this on
23
+ * high utilization — where the alternative is compaction, which busts the
24
+ * entire prefix anyway.
25
+ */
26
+ import type { CanonicalMessage } from '../adapters/FormatAdapter.interface.js';
27
+ export interface ToolResultPruneOptions {
28
+ /** Turns whose tool results are never touched, counting back from newest. Default 3. */
29
+ keepLastNTurns?: number;
30
+ /** Rendered char size above which aged results are middle-trimmed. Default 4000. */
31
+ softTrimThreshold?: number;
32
+ /** Chars kept from each end when middle-trimming. Default 1500. */
33
+ softTrimKeep?: number;
34
+ /** Turn age at which tool results are fully elided. Default 10. */
35
+ hardClearAgeTurns?: number;
36
+ }
37
+ export interface ToolResultPruneResult {
38
+ messages: CanonicalMessage[];
39
+ /** Number of tool-result payloads trimmed or elided. */
40
+ prunedCount: number;
41
+ /** Total rendered characters removed. */
42
+ savedChars: number;
43
+ }
44
+ export declare function pruneAgedToolResults(messages: CanonicalMessage[], options?: ToolResultPruneOptions): ToolResultPruneResult;
45
+ //# sourceMappingURL=ToolResultPruner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolResultPruner.d.ts","sourceRoot":"","sources":["../../src/conversation/ToolResultPruner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAyB,MAAM,wCAAwC,CAAC;AAEtG,MAAM,WAAW,sBAAsB;IACrC,wFAAwF;IACxF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAiBD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CAsDvB"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * ToolResultPruner — age-tiered tool-result pruning for OUTGOING REQUEST
3
+ * copies of the canonical history.
4
+ *
5
+ * Ported from grok-build's request-builder pruning (2026-08-01): when context
6
+ * pressure is high, tool results outside the most recent turns are
7
+ * middle-trimmed (soft tier) or fully elided (hard tier). This is a relief
8
+ * valve BELOW compaction — it defers whole-message removal/summarization and
9
+ * costs nothing while context is comfortable (the caller gates on
10
+ * utilization; see CortexOrchestrator.pruneAgedForRequest).
11
+ *
12
+ * Contract:
13
+ * - PURE: never mutates the input. Touched messages get a new wrapper, a new
14
+ * content array, new block objects, and a new toolResult object; untouched
15
+ * messages pass through by reference. Canonical history, JSONL, and the
16
+ * canonicalConversionCache are never affected.
17
+ * - ONLY tool_result payloads are touched. text, tool_use, thinking,
18
+ * redacted_thinking, and server-tool blocks are never modified, so
19
+ * tool_use/tool_result pairing stays structurally intact (blocks are
20
+ * rewritten in place, never removed) and provider validators stay happy.
21
+ * - Prompt-cache note: rewriting an old tool result invalidates the cached
22
+ * prefix from that message onward. That is why the CALLER gates this on
23
+ * high utilization — where the alternative is compaction, which busts the
24
+ * entire prefix anyway.
25
+ */
26
+ /** A genuine user turn starts at a user message carrying no tool results
27
+ * (tool-result carriers are loop continuations of the previous turn). */
28
+ function isGenuineUserTurn(msg) {
29
+ return msg.role === 'user' && !msg.content.some((b) => b.type === 'tool_result');
30
+ }
31
+ function renderPayload(content) {
32
+ if (typeof content === 'string')
33
+ return content;
34
+ try {
35
+ return JSON.stringify(content);
36
+ }
37
+ catch {
38
+ return String(content);
39
+ }
40
+ }
41
+ export function pruneAgedToolResults(messages, options = {}) {
42
+ const keepLastNTurns = options.keepLastNTurns ?? 3;
43
+ const softTrimThreshold = options.softTrimThreshold ?? 4000;
44
+ const softTrimKeep = options.softTrimKeep ?? 1500;
45
+ const hardClearAgeTurns = options.hardClearAgeTurns ?? 10;
46
+ // Forward pass: assign a turn index to every message.
47
+ const turnIndex = new Array(messages.length);
48
+ let turn = 0;
49
+ for (let i = 0; i < messages.length; i++) {
50
+ if (isGenuineUserTurn(messages[i]))
51
+ turn += 1;
52
+ turnIndex[i] = turn;
53
+ }
54
+ const currentTurn = turn;
55
+ let prunedCount = 0;
56
+ let savedChars = 0;
57
+ const pruneRendered = (rendered, age) => {
58
+ if (age >= hardClearAgeTurns) {
59
+ return `[Tool result omitted - too old (${rendered.length} chars)]`;
60
+ }
61
+ if (rendered.length > softTrimThreshold) {
62
+ const head = rendered.slice(0, softTrimKeep);
63
+ const tail = rendered.slice(-softTrimKeep);
64
+ return `${head}\n[... trimmed ${rendered.length - 2 * softTrimKeep} of ${rendered.length} chars ...]\n${tail}`;
65
+ }
66
+ return null; // untouched
67
+ };
68
+ const result = messages.map((msg, i) => {
69
+ const age = currentTurn - (turnIndex[i] ?? currentTurn);
70
+ if (age <= keepLastNTurns)
71
+ return msg;
72
+ let touched = false;
73
+ const newContent = msg.content.map((block) => {
74
+ if (block.type !== 'tool_result' || !block.toolResult)
75
+ return block;
76
+ const rendered = renderPayload(block.toolResult.content);
77
+ const replaced = pruneRendered(rendered, age);
78
+ if (replaced === null || replaced.length >= rendered.length)
79
+ return block;
80
+ touched = true;
81
+ prunedCount += 1;
82
+ savedChars += rendered.length - replaced.length;
83
+ return {
84
+ ...block,
85
+ toolResult: { ...block.toolResult, content: replaced },
86
+ };
87
+ });
88
+ if (!touched)
89
+ return msg;
90
+ return { ...msg, content: newContent };
91
+ });
92
+ return { messages: result, prunedCount, savedChars };
93
+ }
94
+ //# sourceMappingURL=ToolResultPruner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolResultPruner.js","sourceRoot":"","sources":["../../src/conversation/ToolResultPruner.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -52,5 +52,6 @@ export type { Verifier, TaskSpec, JudgeFn, GradeResult, HarnessRunner, HarnessRu
52
52
  export { runExperiment } from './training/ExperimentRunner.js';
53
53
  export type { ExperimentArms, RunExperimentOptions, ExperimentResult, ExperimentBenchSummaries, } from './training/ExperimentRunner.js';
54
54
  export * as RuntimeInterfaces from './interfaces/index.js';
55
- export { NodeConfigProvider, NodeHistoryStoreAdapter, NodeToolExecutorAdapter, NodePermissionAdapter } from './adapters/node/index.js';
55
+ export { NodeConfigProvider, NodeHistoryStoreAdapter, NodeToolExecutorAdapter, NodePermissionAdapter, GitHistoryStore } from './adapters/node/index.js';
56
+ export type { GitHistoryStoreConfig } from './adapters/node/index.js';
56
57
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -70,5 +70,5 @@ export { runExperiment } from './training/ExperimentRunner.js';
70
70
  // Namespaced to avoid conflicts with existing middleware PermissionDecision/PermissionPolicy exports
71
71
  export * as RuntimeInterfaces from './interfaces/index.js';
72
72
  // Node.js runtime adapters (wraps existing services behind runtime-agnostic interfaces)
73
- export { NodeConfigProvider, NodeHistoryStoreAdapter, NodeToolExecutorAdapter, NodePermissionAdapter } from './adapters/node/index.js';
73
+ export { NodeConfigProvider, NodeHistoryStoreAdapter, NodeToolExecutorAdapter, NodePermissionAdapter, GitHistoryStore } from './adapters/node/index.js';
74
74
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,yBAAyB;AACzB,cAAc,mBAAmB,CAAC;AAElC,uDAAuD;AACvD,kCAAkC;AAClC,2FAA2F;AAC3F,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAExF,oDAAoD;AACpD,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB;AACpB,qBAAqB;AACrB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAAE,sCAAsC;AAC1D,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB;AACjB,oEAAoE;AACpE,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,uBAAuB,CAAC;AAa/B,oDAAoD;AACpD,6BAA6B;AAC7B,oEAAoE;AACpE,iEAAiE;AACjE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,2BAA2B;AAC3B,cAAc,kBAAkB,CAAC;AAEjC,6BAA6B;AAC7B,cAAc,gBAAgB,CAAC;AAE/B,+BAA+B;AAC/B,cAAc,mBAAmB,CAAC;AAElC,wBAAwB;AACxB,uBAAuB;AACvB,cAAc,yBAAyB,CAAC;AAExC,2CAA2C;AAC3C,0BAA0B;AAC1B,cAAc,0BAA0B,CAAC;AAEzC,0BAA0B;AAC1B,cAAc,4BAA4B,CAAC;AAE3C,2BAA2B;AAC3B,cAAc,mBAAmB,CAAC;AAElC,+BAA+B;AAC/B,cAAc,qBAAqB,CAAC;AAEpC,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAE9B,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,YAAY,IAAI,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC9H,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAG3H,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,eAAe,IAAI,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,EACL,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EACjF,eAAe,EAAE,UAAU,GAC5B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,kBAAkB,IAAI,8BAA8B,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEvH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK7E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAK/D,mEAAmE;AACnE,qGAAqG;AACrG,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAE3D,wFAAwF;AACxF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,yBAAyB;AACzB,cAAc,mBAAmB,CAAC;AAElC,uDAAuD;AACvD,kCAAkC;AAClC,2FAA2F;AAC3F,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAExF,oDAAoD;AACpD,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB;AACpB,qBAAqB;AACrB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAAE,sCAAsC;AAC1D,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB;AACjB,oEAAoE;AACpE,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,uBAAuB,CAAC;AAa/B,oDAAoD;AACpD,6BAA6B;AAC7B,oEAAoE;AACpE,iEAAiE;AACjE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,2BAA2B;AAC3B,cAAc,kBAAkB,CAAC;AAEjC,6BAA6B;AAC7B,cAAc,gBAAgB,CAAC;AAE/B,+BAA+B;AAC/B,cAAc,mBAAmB,CAAC;AAElC,wBAAwB;AACxB,uBAAuB;AACvB,cAAc,yBAAyB,CAAC;AAExC,2CAA2C;AAC3C,0BAA0B;AAC1B,cAAc,0BAA0B,CAAC;AAEzC,0BAA0B;AAC1B,cAAc,4BAA4B,CAAC;AAE3C,2BAA2B;AAC3B,cAAc,mBAAmB,CAAC;AAElC,+BAA+B;AAC/B,cAAc,qBAAqB,CAAC;AAEpC,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAE9B,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,YAAY,IAAI,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC9H,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAG3H,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,eAAe,IAAI,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,EACL,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EACjF,eAAe,EAAE,UAAU,GAC5B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,kBAAkB,IAAI,8BAA8B,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEvH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK7E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAK/D,mEAAmE;AACnE,qGAAqG;AACrG,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAE3D,wFAAwF;AACxF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
@@ -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;IAsChC;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,mBAAmB,CAAC,WAAW,CAAC;IAyC1D;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;CASvB"}
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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"}