@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.
Files changed (117) hide show
  1. package/dist/adapters/ChatCompletionsAPIAdapter.d.ts.map +1 -1
  2. package/dist/adapters/ChatCompletionsAPIAdapter.js +16 -0
  3. package/dist/adapters/ChatCompletionsAPIAdapter.js.map +1 -1
  4. package/dist/adapters/FormatAdapter.interface.d.ts +4 -4
  5. package/dist/adapters/FormatAdapter.interface.js +4 -4
  6. package/dist/adapters/GatewayTranslationLayer.d.ts +9 -0
  7. package/dist/adapters/GatewayTranslationLayer.d.ts.map +1 -1
  8. package/dist/adapters/GatewayTranslationLayer.js +24 -1
  9. package/dist/adapters/GatewayTranslationLayer.js.map +1 -1
  10. package/dist/adapters/ResponsesAPIAdapter.d.ts +66 -0
  11. package/dist/adapters/ResponsesAPIAdapter.d.ts.map +1 -1
  12. package/dist/adapters/ResponsesAPIAdapter.js +66 -0
  13. package/dist/adapters/ResponsesAPIAdapter.js.map +1 -1
  14. package/dist/adapters/ToolNamingHandler.d.ts +4 -4
  15. package/dist/adapters/ToolNamingHandler.js +4 -4
  16. package/dist/adapters/servedModelDrift.d.ts +44 -0
  17. package/dist/adapters/servedModelDrift.d.ts.map +1 -0
  18. package/dist/adapters/servedModelDrift.js +0 -0
  19. package/dist/adapters/servedModelDrift.js.map +1 -0
  20. package/dist/agents/AgentStore.d.ts.map +1 -1
  21. package/dist/agents/AgentStore.js +5 -2
  22. package/dist/agents/AgentStore.js.map +1 -1
  23. package/dist/config/RuntimeConfigRegistry.d.ts.map +1 -1
  24. package/dist/config/RuntimeConfigRegistry.js +1 -0
  25. package/dist/config/RuntimeConfigRegistry.js.map +1 -1
  26. package/dist/config/SettingsLoader.js +1 -1
  27. package/dist/config/SettingsLoader.js.map +1 -1
  28. package/dist/config/SettingsSchema.d.ts +2 -2
  29. package/dist/config/SettingsSchema.d.ts.map +1 -1
  30. package/dist/config/SettingsSchema.js +13 -8
  31. package/dist/config/SettingsSchema.js.map +1 -1
  32. package/dist/conversation/ContextBudgetManager.d.ts.map +1 -1
  33. package/dist/conversation/ContextBudgetManager.js +4 -2
  34. package/dist/conversation/ContextBudgetManager.js.map +1 -1
  35. package/dist/conversation/ToolResultPruner.d.ts +45 -0
  36. package/dist/conversation/ToolResultPruner.d.ts.map +1 -0
  37. package/dist/conversation/ToolResultPruner.js +94 -0
  38. package/dist/conversation/ToolResultPruner.js.map +1 -0
  39. package/dist/middleware/ErrorClassificationMiddleware.d.ts +19 -0
  40. package/dist/middleware/ErrorClassificationMiddleware.d.ts.map +1 -1
  41. package/dist/middleware/ErrorClassificationMiddleware.js +55 -1
  42. package/dist/middleware/ErrorClassificationMiddleware.js.map +1 -1
  43. package/dist/middleware/PermissionsMiddleware.d.ts +2 -2
  44. package/dist/middleware/PermissionsMiddleware.js +2 -2
  45. package/dist/middleware/RetryMiddleware.d.ts.map +1 -1
  46. package/dist/middleware/RetryMiddleware.js +8 -2
  47. package/dist/middleware/RetryMiddleware.js.map +1 -1
  48. package/dist/middleware/contracts/MiddlewareContracts.d.ts +4 -0
  49. package/dist/middleware/contracts/MiddlewareContracts.d.ts.map +1 -1
  50. package/dist/middleware/permissions/BashCommandPolicy.d.ts +2 -2
  51. package/dist/middleware/permissions/BashCommandPolicy.js +2 -2
  52. package/dist/middleware/permissions/BlacklistPolicy.d.ts +1 -1
  53. package/dist/middleware/permissions/BlacklistPolicy.js +1 -1
  54. package/dist/middleware/permissions/FileOperationPolicy.d.ts +2 -2
  55. package/dist/middleware/permissions/FileOperationPolicy.js +2 -2
  56. package/dist/middleware/permissions/PermissionAuditLogger.d.ts +1 -1
  57. package/dist/middleware/permissions/PermissionAuditLogger.js +1 -1
  58. package/dist/middleware/permissions/PermissionConfig.js +2 -2
  59. package/dist/middleware/permissions/PermissionConfig.js.map +1 -1
  60. package/dist/middleware/permissions/PermissionEvaluator.d.ts +2 -2
  61. package/dist/middleware/permissions/PermissionEvaluator.js +2 -2
  62. package/dist/middleware/permissions/WhitelistPolicy.d.ts +2 -2
  63. package/dist/middleware/permissions/WhitelistPolicy.js +2 -2
  64. package/dist/middleware/permissions/WorkspaceBoundaryPolicy.d.ts.map +1 -1
  65. package/dist/middleware/permissions/WorkspaceBoundaryPolicy.js +2 -3
  66. package/dist/middleware/permissions/WorkspaceBoundaryPolicy.js.map +1 -1
  67. package/dist/models/ModelConfig.interface.js +1 -1
  68. package/dist/orchestrator/APIClient.d.ts +10 -0
  69. package/dist/orchestrator/APIClient.d.ts.map +1 -1
  70. package/dist/orchestrator/APIClient.js +81 -6
  71. package/dist/orchestrator/APIClient.js.map +1 -1
  72. package/dist/orchestrator/CortexOrchestrator.d.ts +30 -0
  73. package/dist/orchestrator/CortexOrchestrator.d.ts.map +1 -1
  74. package/dist/orchestrator/CortexOrchestrator.js +256 -36
  75. package/dist/orchestrator/CortexOrchestrator.js.map +1 -1
  76. package/dist/orchestrator/OrchestratorFactory.js +1 -1
  77. package/dist/orchestrator/OrchestratorFactory.js.map +1 -1
  78. package/dist/orchestrator/SubAgentPermissionChecker.d.ts.map +1 -1
  79. package/dist/orchestrator/SubAgentPermissionChecker.js +13 -2
  80. package/dist/orchestrator/SubAgentPermissionChecker.js.map +1 -1
  81. package/dist/orchestrator/apiErrorClassifier.d.ts.map +1 -1
  82. package/dist/orchestrator/apiErrorClassifier.js +8 -1
  83. package/dist/orchestrator/apiErrorClassifier.js.map +1 -1
  84. package/dist/orchestrator/emptyResponseClassifier.d.ts +29 -0
  85. package/dist/orchestrator/emptyResponseClassifier.d.ts.map +1 -0
  86. package/dist/orchestrator/emptyResponseClassifier.js +42 -0
  87. package/dist/orchestrator/emptyResponseClassifier.js.map +1 -0
  88. package/dist/orchestrator/index.d.ts +1 -0
  89. package/dist/orchestrator/index.d.ts.map +1 -1
  90. package/dist/orchestrator/index.js +3 -0
  91. package/dist/orchestrator/index.js.map +1 -1
  92. package/dist/orchestrator/structuredOutput.d.ts +144 -0
  93. package/dist/orchestrator/structuredOutput.d.ts.map +1 -0
  94. package/dist/orchestrator/structuredOutput.js +230 -0
  95. package/dist/orchestrator/structuredOutput.js.map +1 -0
  96. package/dist/orchestrator/tailRepetitionDetector.d.ts +57 -0
  97. package/dist/orchestrator/tailRepetitionDetector.d.ts.map +1 -0
  98. package/dist/orchestrator/tailRepetitionDetector.js +98 -0
  99. package/dist/orchestrator/tailRepetitionDetector.js.map +1 -0
  100. package/dist/system-messages/SystemReminderInjector.d.ts +3 -3
  101. package/dist/system-messages/SystemReminderInjector.d.ts.map +1 -1
  102. package/dist/system-messages/SystemReminderInjector.js +4 -4
  103. package/dist/system-messages/SystemReminderInjector.js.map +1 -1
  104. package/dist/system-messages/messages/EXAMPLES.md +18 -18
  105. package/dist/system-messages/messages/SYSTEM_PROMPT.md +15 -13
  106. package/dist/system-messages/messages/TASK_AGENT_GUIDE.md +2 -2
  107. package/dist/system-messages/messages/TOOL_USAGE_GUIDE.md +43 -42
  108. package/dist/system-messages/messages/WORK_QUALITY.md +12 -10
  109. package/dist/tools/ToolFactory.d.ts.map +1 -1
  110. package/dist/tools/ToolFactory.js +3 -1
  111. package/dist/tools/ToolFactory.js.map +1 -1
  112. package/dist/tools/context-management/InitCortexContext.js +1 -1
  113. package/dist/tools/context-management/InitCortexContext.js.map +1 -1
  114. package/dist/tools/mcp-management/InitMcpConfig.js +1 -1
  115. package/dist/tools/registries/BaseToolRegistry.js +45 -45
  116. package/dist/tools/registries/BaseToolRegistry.js.map +1 -1
  117. package/package.json +4 -3
@@ -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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"}
@@ -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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"}
@@ -59,7 +59,7 @@ export interface PermissionsMiddlewareOptions {
59
59
  * ```typescript
60
60
  * const middleware = new PermissionsMiddleware({
61
61
  * policies: [
62
- * new WhitelistPolicy(['read_file', 'write_file']),
62
+ * new WhitelistPolicy(['Read', 'Write']),
63
63
  * new FileOperationPolicy({
64
64
  * allowedPaths: ['/workspace'],
65
65
  * blockedPaths: ['/etc', '/root']
@@ -74,7 +74,7 @@ export interface PermissionsMiddlewareOptions {
74
74
  * });
75
75
  *
76
76
  * const decision = await middleware.checkPermission(
77
- * 'read_file',
77
+ * 'Read',
78
78
  * { file_path: '/workspace/file.txt' },
79
79
  * context
80
80
  * );
@@ -23,7 +23,7 @@ import { PermissionAuditLogger } from './permissions/PermissionAuditLogger.js';
23
23
  * ```typescript
24
24
  * const middleware = new PermissionsMiddleware({
25
25
  * policies: [
26
- * new WhitelistPolicy(['read_file', 'write_file']),
26
+ * new WhitelistPolicy(['Read', 'Write']),
27
27
  * new FileOperationPolicy({
28
28
  * allowedPaths: ['/workspace'],
29
29
  * blockedPaths: ['/etc', '/root']
@@ -38,7 +38,7 @@ import { PermissionAuditLogger } from './permissions/PermissionAuditLogger.js';
38
38
  * });
39
39
  *
40
40
  * const decision = await middleware.checkPermission(
41
- * 'read_file',
41
+ * 'Read',
42
42
  * { file_path: '/workspace/file.txt' },
43
43
  * context
44
44
  * );
@@ -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;AAoB5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;IAmD1B;;;;;;;;;;;;;;;;;;;;;;;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"}
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
- const isLastAttempt = attempt === this.options.maxRetries;
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":"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"}
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;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC;IACV,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAChB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CACzC;AAMD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,GACrC;IACE,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;CACjC,CAAC;AAEN;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;OAQG;IACH,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnF;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B;;;;OAIG;IACH,eAAe,CACb,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAAC;CACxD;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,KAAK,CAAC,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,oBAAoB,CAClB,WAAW,EAAE,MAAM,GAAG,GAAG,EAAE,EAC3B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAElB;;OAEG;IACH,qBAAqB,CACnB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,CAAC;IAEpB;;OAEG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,iBAAiB,CAAC;CACtB;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,uBAAuB,CACrB,UAAU,EAAE,oBAAoB,EAChC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC;IAEX;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtD;;OAEG;IACH,sBAAsB,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;IAE1D;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IAEpD;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC;IACnD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B"}
1
+ {"version":3,"file":"MiddlewareContracts.d.ts","sourceRoot":"","sources":["../../../src/middleware/contracts/MiddlewareContracts.ts"],"names":[],"mappings":"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"}
@@ -51,14 +51,14 @@ export interface BashCommandPolicyConfig {
51
51
  * });
52
52
  *
53
53
  * await policy.evaluate({
54
- * toolName: 'execute_bash',
54
+ * toolName: 'Bash',
55
55
  * toolInput: { command: 'ls -la' },
56
56
  * sessionId: '123',
57
57
  * timestamp: new Date()
58
58
  * }); // Returns { allowed: true }
59
59
  *
60
60
  * await policy.evaluate({
61
- * toolName: 'execute_bash',
61
+ * toolName: 'Bash',
62
62
  * toolInput: { command: 'rm -rf /' },
63
63
  * sessionId: '123',
64
64
  * timestamp: new Date()
@@ -66,14 +66,14 @@ const DEFAULT_DANGEROUS_PATTERNS = [
66
66
  * });
67
67
  *
68
68
  * await policy.evaluate({
69
- * toolName: 'execute_bash',
69
+ * toolName: 'Bash',
70
70
  * toolInput: { command: 'ls -la' },
71
71
  * sessionId: '123',
72
72
  * timestamp: new Date()
73
73
  * }); // Returns { allowed: true }
74
74
  *
75
75
  * await policy.evaluate({
76
- * toolName: 'execute_bash',
76
+ * toolName: 'Bash',
77
77
  * toolInput: { command: 'rm -rf /' },
78
78
  * sessionId: '123',
79
79
  * timestamp: new Date()
@@ -25,7 +25,7 @@ import { BasePermissionPolicy } from './PermissionPolicy.js';
25
25
  * }); // Returns { allowed: false, reason: '...', canApprove: false }
26
26
  *
27
27
  * await policy.evaluate({
28
- * toolName: 'read_file',
28
+ * toolName: 'Read',
29
29
  * toolInput: {},
30
30
  * sessionId: '123',
31
31
  * timestamp: new Date()
@@ -24,7 +24,7 @@ import { BasePermissionPolicy, PolicyPriority } from './PermissionPolicy.js';
24
24
  * }); // Returns { allowed: false, reason: '...', canApprove: false }
25
25
  *
26
26
  * await policy.evaluate({
27
- * toolName: 'read_file',
27
+ * toolName: 'Read',
28
28
  * toolInput: {},
29
29
  * sessionId: '123',
30
30
  * timestamp: new Date()
@@ -57,14 +57,14 @@ export interface FileOperationPolicyConfig {
57
57
  * });
58
58
  *
59
59
  * await policy.evaluate({
60
- * toolName: 'read_file',
60
+ * toolName: 'Read',
61
61
  * toolInput: { file_path: '/home/user/workspace/file.txt' },
62
62
  * sessionId: '123',
63
63
  * timestamp: new Date()
64
64
  * }); // Returns { allowed: true }
65
65
  *
66
66
  * await policy.evaluate({
67
- * toolName: 'read_file',
67
+ * toolName: 'Read',
68
68
  * toolInput: { file_path: '/etc/passwd' },
69
69
  * sessionId: '123',
70
70
  * timestamp: new Date()
@@ -53,14 +53,14 @@ const SENSITIVE_DIRECTORIES = [
53
53
  * });
54
54
  *
55
55
  * await policy.evaluate({
56
- * toolName: 'read_file',
56
+ * toolName: 'Read',
57
57
  * toolInput: { file_path: '/home/user/workspace/file.txt' },
58
58
  * sessionId: '123',
59
59
  * timestamp: new Date()
60
60
  * }); // Returns { allowed: true }
61
61
  *
62
62
  * await policy.evaluate({
63
- * toolName: 'read_file',
63
+ * toolName: 'Read',
64
64
  * toolInput: { file_path: '/etc/passwd' },
65
65
  * sessionId: '123',
66
66
  * timestamp: new Date()
@@ -76,7 +76,7 @@ export interface AuditQueryOptions {
76
76
  * await logger.log({
77
77
  * timestamp: new Date(),
78
78
  * sessionId: '123',
79
- * toolName: 'read_file',
79
+ * toolName: 'Read',
80
80
  * toolInput: { file_path: '/workspace/file.txt' },
81
81
  * decision: { allowed: true },
82
82
  * approvalRequested: false
@@ -26,7 +26,7 @@ import { createInterface } from 'node:readline';
26
26
  * await logger.log({
27
27
  * timestamp: new Date(),
28
28
  * sessionId: '123',
29
- * toolName: 'read_file',
29
+ * toolName: 'Read',
30
30
  * toolInput: { file_path: '/workspace/file.txt' },
31
31
  * decision: { allowed: true },
32
32
  * approvalRequested: false
@@ -49,14 +49,14 @@ export const PermissionPresets = {
49
49
  {
50
50
  type: 'whitelist',
51
51
  config: {
52
- allowedTools: ['read_file', 'list_files', 'grep', 'create_artifact'],
52
+ allowedTools: ['Read', 'Glob', 'Grep', 'CreateArtifactTool'],
53
53
  },
54
54
  },
55
55
  {
56
56
  type: 'blacklist',
57
57
  priority: 100,
58
58
  config: {
59
- blockedTools: ['execute_bash', 'write_file', 'delete_file'],
59
+ blockedTools: ['Bash', 'Write', 'Edit'],
60
60
  },
61
61
  },
62
62
  {
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionConfig.js","sourceRoot":"","sources":["../../../src/middleware/permissions/PermissionConfig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoLH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B;;OAEG;IACH,WAAW,EAAE,GAAqB,EAAE,CAAC,CAAC;QACpC,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;oBAC7B,YAAY,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC;oBACjD,wBAAwB,EAAE,IAAI;iBAC/B;aACF;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE;oBACN,eAAe,EAAE,EAAE;oBACnB,eAAe,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;oBACxC,2BAA2B,EAAE,IAAI;iBAClC;aACF;SACF;QACD,eAAe,EAAE,KAAK;QACtB,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,qCAAqC;SAC5C;KACF,CAAC;IAEF;;OAEG;IACH,UAAU,EAAE,GAAqB,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,CAAC;iBACrE;aACF;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,aAAa,CAAC;iBAC5D;aACF;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,YAAY,EAAE,CAAC,GAAG,CAAC;oBACnB,wBAAwB,EAAE,KAAK;iBAChC;aACF;SACF;QACD,eAAe,EAAE,UAAU;QAC3B,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,iCAAiC;SACxC;KACF,CAAC;IAEF;;OAEG;IACH,OAAO,EAAE,GAAqB,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,YAAY,EAAE,EAAE;oBAChB,wBAAwB,EAAE,KAAK;iBAChC;aACF;SACF;QACD,eAAe,EAAE,cAAc;QAC/B,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF;;OAEG;IACH,QAAQ,EAAE,GAAqB,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;SACf;KACF,CAAC;CACM,CAAC"}
1
+ {"version":3,"file":"PermissionConfig.js","sourceRoot":"","sources":["../../../src/middleware/permissions/PermissionConfig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoLH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B;;OAEG;IACH,WAAW,EAAE,GAAqB,EAAE,CAAC,CAAC;QACpC,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;oBAC7B,YAAY,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC;oBACjD,wBAAwB,EAAE,IAAI;iBAC/B;aACF;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE;oBACN,eAAe,EAAE,EAAE;oBACnB,eAAe,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;oBACxC,2BAA2B,EAAE,IAAI;iBAClC;aACF;SACF;QACD,eAAe,EAAE,KAAK;QACtB,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,qCAAqC;SAC5C;KACF,CAAC;IAEF;;OAEG;IACH,UAAU,EAAE,GAAqB,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,CAAC;iBAC7D;aACF;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;iBACxC;aACF;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,YAAY,EAAE,CAAC,GAAG,CAAC;oBACnB,wBAAwB,EAAE,KAAK;iBAChC;aACF;SACF;QACD,eAAe,EAAE,UAAU;QAC3B,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,iCAAiC;SACxC;KACF,CAAC;IAEF;;OAEG;IACH,OAAO,EAAE,GAAqB,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE;oBACN,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,YAAY,EAAE,EAAE;oBAChB,wBAAwB,EAAE,KAAK;iBAChC;aACF;SACF;QACD,eAAe,EAAE,cAAc;QAC/B,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF;;OAEG;IACH,QAAQ,EAAE,GAAqB,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;SACf;KACF,CAAC;CACM,CAAC"}
@@ -55,11 +55,11 @@ export interface EvaluationResult {
55
55
  * @example
56
56
  * ```typescript
57
57
  * const evaluator = new PermissionEvaluator();
58
- * evaluator.registerPolicy(new WhitelistPolicy(['read_file', 'write_file']));
58
+ * evaluator.registerPolicy(new WhitelistPolicy(['Read', 'Write']));
59
59
  * evaluator.registerPolicy(new FileOperationPolicy(['/workspace'], ['/etc']));
60
60
  *
61
61
  * const result = await evaluator.evaluate({
62
- * toolName: 'read_file',
62
+ * toolName: 'Read',
63
63
  * toolInput: { file_path: '/workspace/file.txt' },
64
64
  * sessionId: '123',
65
65
  * timestamp: new Date()
@@ -18,11 +18,11 @@
18
18
  * @example
19
19
  * ```typescript
20
20
  * const evaluator = new PermissionEvaluator();
21
- * evaluator.registerPolicy(new WhitelistPolicy(['read_file', 'write_file']));
21
+ * evaluator.registerPolicy(new WhitelistPolicy(['Read', 'Write']));
22
22
  * evaluator.registerPolicy(new FileOperationPolicy(['/workspace'], ['/etc']));
23
23
  *
24
24
  * const result = await evaluator.evaluate({
25
- * toolName: 'read_file',
25
+ * toolName: 'Read',
26
26
  * toolInput: { file_path: '/workspace/file.txt' },
27
27
  * sessionId: '123',
28
28
  * timestamp: new Date()
@@ -15,10 +15,10 @@ import { BasePermissionPolicy } from './PermissionPolicy.js';
15
15
  *
16
16
  * @example
17
17
  * ```typescript
18
- * const policy = new WhitelistPolicy(['read_file', 'write_file', 'execute_bash']);
18
+ * const policy = new WhitelistPolicy(['Read', 'Write', 'Bash']);
19
19
  *
20
20
  * await policy.evaluate({
21
- * toolName: 'read_file',
21
+ * toolName: 'Read',
22
22
  * toolInput: {},
23
23
  * sessionId: '123',
24
24
  * timestamp: new Date()