@miller-tech/uap 1.4.1 → 1.4.3
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/benchmarks/improved-benchmark.js +1 -1
- package/dist/benchmarks/improved-benchmark.js.map +1 -1
- package/dist/cli/dashboard.d.ts.map +1 -1
- package/dist/cli/dashboard.js +2 -1
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/visualize.d.ts.map +1 -1
- package/dist/cli/visualize.js +46 -22
- package/dist/cli/visualize.js.map +1 -1
- package/dist/dashboard/data-service.js +7 -1
- package/dist/dashboard/data-service.js.map +1 -1
- package/dist/mcp-router/executor/client.d.ts +30 -0
- package/dist/mcp-router/executor/client.d.ts.map +1 -1
- package/dist/mcp-router/executor/client.js +40 -11
- package/dist/mcp-router/executor/client.js.map +1 -1
- package/dist/mcp-router/output-compressor.d.ts.map +1 -1
- package/dist/mcp-router/output-compressor.js +48 -4
- package/dist/mcp-router/output-compressor.js.map +1 -1
- package/dist/mcp-router/server.d.ts +2 -1
- package/dist/mcp-router/server.d.ts.map +1 -1
- package/dist/mcp-router/server.js +115 -40
- package/dist/mcp-router/server.js.map +1 -1
- package/dist/mcp-router/session-stats.d.ts.map +1 -1
- package/dist/mcp-router/session-stats.js +5 -0
- package/dist/mcp-router/session-stats.js.map +1 -1
- package/dist/mcp-router/tools/execute.d.ts.map +1 -1
- package/dist/mcp-router/tools/execute.js +39 -13
- package/dist/mcp-router/tools/execute.js.map +1 -1
- package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -1
- package/dist/memory/backends/qdrant-cloud.js +14 -13
- package/dist/memory/backends/qdrant-cloud.js.map +1 -1
- package/dist/policies/policy-gate.d.ts +3 -0
- package/dist/policies/policy-gate.d.ts.map +1 -1
- package/dist/policies/policy-gate.js +17 -6
- package/dist/policies/policy-gate.js.map +1 -1
- package/package.json +1 -1
- package/tools/agents/scripts/tool-choice-proxy.cjs +11 -5
|
@@ -113,12 +113,23 @@ export class PolicyGate {
|
|
|
113
113
|
/**
|
|
114
114
|
* Evaluate a single policy against an operation.
|
|
115
115
|
* Parses the policy's rawMarkdown for rules and checks them.
|
|
116
|
+
* Serializes args ONCE and passes the cached string to each rule check
|
|
117
|
+
* to avoid redundant JSON.stringify calls per-rule.
|
|
116
118
|
*/
|
|
117
119
|
evaluatePolicy(policy, operation, args) {
|
|
118
120
|
const rules = this.extractRules(policy.rawMarkdown);
|
|
119
121
|
const violations = [];
|
|
122
|
+
// Cache serialized args once per policy evaluation (not per rule)
|
|
123
|
+
const opLower = operation.toLowerCase();
|
|
124
|
+
let argsStr;
|
|
125
|
+
try {
|
|
126
|
+
argsStr = JSON.stringify(args ?? {}).toLowerCase();
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
argsStr = '';
|
|
130
|
+
}
|
|
120
131
|
for (const rule of rules) {
|
|
121
|
-
const violation = this.checkRule(rule,
|
|
132
|
+
const violation = this.checkRule(rule, opLower, argsStr);
|
|
122
133
|
if (violation) {
|
|
123
134
|
violations.push(violation);
|
|
124
135
|
}
|
|
@@ -134,18 +145,18 @@ export class PolicyGate {
|
|
|
134
145
|
/**
|
|
135
146
|
* Check a single rule against an operation.
|
|
136
147
|
* Returns a violation message if the rule is violated, null otherwise.
|
|
148
|
+
* Accepts pre-computed lowercase strings to avoid redundant serialization.
|
|
137
149
|
*/
|
|
138
|
-
checkRule(rule,
|
|
139
|
-
const opLower = operation.toLowerCase();
|
|
140
|
-
const argsStr = JSON.stringify(args).toLowerCase();
|
|
150
|
+
checkRule(rule, opLower, argsStr) {
|
|
141
151
|
// Check if this rule is relevant to the operation
|
|
142
152
|
const isRelevant = rule.keywords.some((kw) => opLower.includes(kw) || argsStr.includes(kw));
|
|
143
153
|
if (!isRelevant)
|
|
144
154
|
return null;
|
|
145
155
|
// Check for anti-patterns
|
|
156
|
+
const ruleTitle = rule.title || 'Untitled rule';
|
|
146
157
|
for (const antiPattern of rule.antiPatterns) {
|
|
147
158
|
if (opLower.includes(antiPattern) || argsStr.includes(antiPattern)) {
|
|
148
|
-
return `Rule "${
|
|
159
|
+
return `Rule "${ruleTitle}" violated: detected anti-pattern "${antiPattern}"`;
|
|
149
160
|
}
|
|
150
161
|
}
|
|
151
162
|
return null;
|
|
@@ -184,7 +195,7 @@ export class PolicyGate {
|
|
|
184
195
|
for (const rule of parsed.rules) {
|
|
185
196
|
if (rule.title && (Array.isArray(rule.keywords) || Array.isArray(rule.antiPatterns))) {
|
|
186
197
|
rules.push({
|
|
187
|
-
title: String(rule.title),
|
|
198
|
+
title: String(rule.title ?? 'Untitled rule'),
|
|
188
199
|
keywords: (rule.keywords || []).map(String),
|
|
189
200
|
antiPatterns: (rule.antiPatterns || []).map(String),
|
|
190
201
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-gate.js","sourceRoot":"","sources":["../../src/policies/policy-gate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"policy-gate.js","sourceRoot":"","sources":["../../src/policies/policy-gate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -32,9 +32,10 @@ const PROXY_PORT = parseInt(process.env.PROXY_PORT || '11435', 10);
|
|
|
32
32
|
const TARGET_URL = process.env.TARGET_URL || 'http://127.0.0.1:8080';
|
|
33
33
|
const FORCE_TOOL_CHOICE = process.env.FORCE_TOOL_CHOICE || 'required';
|
|
34
34
|
|
|
35
|
-
// Temperature cap: clamp temperature to this value when tools are present
|
|
36
|
-
//
|
|
37
|
-
|
|
35
|
+
// Temperature cap: clamp temperature to this value when tools are present.
|
|
36
|
+
// Must be >= the wrapper's dynamic_temp_floor (0.2 for Qwen3.5) to avoid
|
|
37
|
+
// overriding the wrapper's retry temperature strategy. Set to 0 to disable.
|
|
38
|
+
const MAX_TOOL_TEMPERATURE = parseFloat(process.env.MAX_TOOL_TEMPERATURE || '0.4');
|
|
38
39
|
|
|
39
40
|
// Budget: stop forcing tool calls after this many chat/completions requests
|
|
40
41
|
const SOFT_BUDGET = parseInt(process.env.PROXY_SOFT_BUDGET || '35', 10);
|
|
@@ -224,6 +225,13 @@ const server = http.createServer((req, res) => {
|
|
|
224
225
|
},
|
|
225
226
|
},
|
|
226
227
|
(proxyRes) => {
|
|
228
|
+
// CRITICAL: writeHead MUST be called before any res.write() calls.
|
|
229
|
+
// Previously this was after the event listener setup, causing a race
|
|
230
|
+
// condition where data events could fire before headers were sent,
|
|
231
|
+
// producing malformed HTTP responses that broke OpenAI client parsing
|
|
232
|
+
// and caused Qwen3.5 tool call test failures.
|
|
233
|
+
res.writeHead(proxyRes.statusCode || 200, proxyRes.headers);
|
|
234
|
+
|
|
227
235
|
// === Track response for output-diff detection ===
|
|
228
236
|
const responseChunks = [];
|
|
229
237
|
proxyRes.on('data', (chunk) => {
|
|
@@ -265,8 +273,6 @@ const server = http.createServer((req, res) => {
|
|
|
265
273
|
}
|
|
266
274
|
}
|
|
267
275
|
});
|
|
268
|
-
|
|
269
|
-
res.writeHead(proxyRes.statusCode || 200, proxyRes.headers);
|
|
270
276
|
}
|
|
271
277
|
);
|
|
272
278
|
|