lynkr 9.7.2 → 9.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -19
- package/bin/cli.js +11 -0
- package/bin/lynkr-init.js +14 -1
- package/bin/lynkr-usage.js +78 -0
- package/bin/wrap.js +60 -35
- package/config/difficulty-anchors.json +22 -0
- package/package.json +24 -3
- package/scripts/audit-log-reader.js +399 -0
- package/scripts/calibrate-thresholds.js +38 -157
- package/scripts/compact-dictionary.js +204 -0
- package/scripts/test-deduplication.js +448 -0
- package/scripts/ws7-anchor-replay.js +108 -0
- package/skills/lynkr/SKILL.md +195 -0
- package/src/agents/context-manager.js +18 -2
- package/src/agents/definitions/loader.js +90 -0
- package/src/agents/executor.js +24 -2
- package/src/agents/index.js +9 -1
- package/src/agents/parallel-coordinator.js +2 -2
- package/src/agents/reflector.js +11 -1
- package/src/api/middleware/loop-guard.js +87 -0
- package/src/api/middleware/request-logging.js +5 -64
- package/src/api/middleware/session.js +0 -0
- package/src/api/openai-router.js +120 -101
- package/src/api/providers-handler.js +27 -2
- package/src/api/router.js +450 -125
- package/src/budget/index.js +2 -19
- package/src/cache/semantic.js +9 -0
- package/src/clients/databricks.js +459 -146
- package/src/clients/gpt-utils.js +11 -105
- package/src/clients/openai-format.js +10 -3
- package/src/clients/openrouter-utils.js +49 -24
- package/src/clients/prompt-cache-injection.js +1 -0
- package/src/clients/provider-capabilities.js +1 -1
- package/src/clients/responses-format.js +34 -3
- package/src/clients/routing.js +15 -0
- package/src/config/index.js +36 -2
- package/src/context/gcf.js +275 -0
- package/src/context/tool-result-compressor.js +51 -9
- package/src/dashboard/api.js +1 -0
- package/src/logger/index.js +14 -1
- package/src/memory/search.js +12 -40
- package/src/memory/tools.js +3 -24
- package/src/orchestrator/bypass.js +4 -2
- package/src/orchestrator/index.js +144 -88
- package/src/routing/affinity-store.js +194 -0
- package/src/routing/agentic-detector.js +36 -6
- package/src/routing/bandit.js +25 -6
- package/src/routing/calibration.js +212 -0
- package/src/routing/client-profiles.js +292 -0
- package/src/routing/complexity-analyzer.js +48 -11
- package/src/routing/deescalator.js +148 -0
- package/src/routing/degradation.js +109 -0
- package/src/routing/feedback.js +157 -0
- package/src/routing/index.js +897 -87
- package/src/routing/intent-score.js +339 -0
- package/src/routing/interaction.js +3 -0
- package/src/routing/knn-router.js +70 -21
- package/src/routing/model-registry.js +28 -7
- package/src/routing/model-tiers.js +25 -2
- package/src/routing/reward-pipeline.js +68 -2
- package/src/routing/risk-analyzer.js +30 -1
- package/src/routing/risk-classifier.js +6 -2
- package/src/routing/session-affinity.js +162 -34
- package/src/routing/telemetry.js +298 -10
- package/src/routing/verifier.js +267 -0
- package/src/server.js +66 -21
- package/src/sessions/cleanup.js +17 -0
- package/src/tools/index.js +1 -15
- package/src/tools/smart-selection.js +10 -0
- package/src/tools/web-client.js +3 -3
- package/.eslintrc.cjs +0 -12
- package/benchmark-configs/litellm_config.yaml +0 -86
- package/benchmark-configs/lynkr.env +0 -48
- package/benchmark-configs/portkey-config.json +0 -60
- package/benchmark-configs/portkey-docker.sh +0 -23
- package/benchmark-tier-routing.js +0 -449
- package/funding.json +0 -110
- package/src/api/middleware/validation.js +0 -261
- package/src/routing/drift-monitor.js +0 -113
- package/src/workers/helpers.js +0 -185
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
const crypto = require("crypto");
|
|
2
|
-
const logger = require("../../logger");
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
4
|
+
* Request ID middleware.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* -
|
|
10
|
-
*
|
|
11
|
-
* - Minimal overhead
|
|
6
|
+
* Assigns req.requestId (honouring an inbound X-Request-ID header) and
|
|
7
|
+
* echoes it on the response. Request/response logging itself is handled
|
|
8
|
+
* by pino-http in middleware/logging.js — don't log here or every
|
|
9
|
+
* request gets logged twice.
|
|
12
10
|
*/
|
|
13
11
|
|
|
14
12
|
function generateRequestId() {
|
|
@@ -16,66 +14,9 @@ function generateRequestId() {
|
|
|
16
14
|
}
|
|
17
15
|
|
|
18
16
|
function requestLoggingMiddleware(req, res, next) {
|
|
19
|
-
const startTime = Date.now();
|
|
20
|
-
|
|
21
|
-
// Generate or use existing request ID
|
|
22
17
|
const requestId = req.headers["x-request-id"] || generateRequestId();
|
|
23
18
|
req.requestId = requestId;
|
|
24
|
-
|
|
25
|
-
// Add to response headers
|
|
26
19
|
res.setHeader("X-Request-ID", requestId);
|
|
27
|
-
|
|
28
|
-
// Log request start
|
|
29
|
-
logger.info(
|
|
30
|
-
{
|
|
31
|
-
requestId,
|
|
32
|
-
method: req.method,
|
|
33
|
-
path: req.path || req.url,
|
|
34
|
-
query: req.query,
|
|
35
|
-
ip: req.ip || req.socket.remoteAddress,
|
|
36
|
-
userAgent: req.headers["user-agent"],
|
|
37
|
-
},
|
|
38
|
-
"Request started"
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
// Capture response finish
|
|
42
|
-
const originalSend = res.send;
|
|
43
|
-
res.send = function (body) {
|
|
44
|
-
const duration = Date.now() - startTime;
|
|
45
|
-
|
|
46
|
-
// Log request completion
|
|
47
|
-
logger.info(
|
|
48
|
-
{
|
|
49
|
-
requestId,
|
|
50
|
-
method: req.method,
|
|
51
|
-
path: req.path || req.url,
|
|
52
|
-
status: res.statusCode,
|
|
53
|
-
duration,
|
|
54
|
-
contentLength: res.getHeader("content-length"),
|
|
55
|
-
},
|
|
56
|
-
"Request completed"
|
|
57
|
-
);
|
|
58
|
-
|
|
59
|
-
return originalSend.call(this, body);
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
// Handle errors
|
|
63
|
-
res.on("finish", () => {
|
|
64
|
-
if (res.statusCode >= 400) {
|
|
65
|
-
const duration = Date.now() - startTime;
|
|
66
|
-
logger.warn(
|
|
67
|
-
{
|
|
68
|
-
requestId,
|
|
69
|
-
method: req.method,
|
|
70
|
-
path: req.path || req.url,
|
|
71
|
-
status: res.statusCode,
|
|
72
|
-
duration,
|
|
73
|
-
},
|
|
74
|
-
"Request failed"
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
|
|
79
20
|
next();
|
|
80
21
|
}
|
|
81
22
|
|
|
Binary file
|