Compare commits
5
Commits
5a6847c774
...
9a523c038c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a523c038c | ||
|
|
8e60268caf | ||
|
|
2291336300 | ||
|
|
ff2870ba2a | ||
|
|
ad90b92dcd |
@@ -1,7 +1,7 @@
|
|||||||
# Graph Report - 2e709500-79ab-403f-9ca0-3f027ac9f36e (2026-06-17)
|
# Graph Report - 2e709500-79ab-403f-9ca0-3f027ac9f36e (2026-06-17)
|
||||||
|
|
||||||
## Corpus Check
|
## Corpus Check
|
||||||
- 58 files · ~324,818 words
|
- 58 files · ~328,409 words
|
||||||
- Verdict: corpus is large enough that graph structure adds value.
|
- Verdict: corpus is large enough that graph structure adds value.
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
{"nodes": [{"id": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "label": "middleware.ts", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L1"}, {"id": "src_middleware_validatecsrforigin", "label": "validateCsrfOrigin()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L19"}], "edges": [{"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "astro_middleware", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L1", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_utils_logger_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L2", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "utils_logger_logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L2", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_utils_sentry_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L3", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "utils_sentry_captureexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L3", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_middleware_ts", "target": "src_middleware_validatecsrforigin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L19", "weight": 1.0}], "raw_calls": [{"caller_nid": "src_middleware_validatecsrforigin", "callee": "includes", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L24"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "startsWith", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L25"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "get", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L36"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "get", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L37"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "startsWith", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L52"}, {"caller_nid": "src_middleware_validatecsrforigin", "callee": "startsWith", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/middleware.ts", "source_location": "L52"}]}
|
||||||
+20
-1
@@ -106,7 +106,26 @@ export const onRequest = defineMiddleware(async (context, next) => {
|
|||||||
if (status >= 500) {
|
if (status >= 500) {
|
||||||
logger.error('middleware', `SSR error ${status}`, { method, path, status, durationMs });
|
logger.error('middleware', `SSR error ${status}`, { method, path, status, durationMs });
|
||||||
} else if (status === 404) {
|
} else if (status === 404) {
|
||||||
logger.warn('middleware', `Not found`, { method, path, status, durationMs });
|
// 404s are dominated by bots/scanners probing malformed or garbage paths
|
||||||
|
// (e.g. "/)"), which would otherwise flood warn-level logs and trip alerts.
|
||||||
|
// Treat a 404 as a warning only when it likely originated from our own site
|
||||||
|
// (same-origin referer) — that indicates a real broken internal link worth
|
||||||
|
// fixing. Everything else (no referer / external referer) is logged at info.
|
||||||
|
const referer = context.request.headers.get('referer');
|
||||||
|
let internalNavigation = false;
|
||||||
|
if (referer) {
|
||||||
|
try {
|
||||||
|
internalNavigation = new URL(referer).hostname === context.url.hostname;
|
||||||
|
} catch {
|
||||||
|
// Malformed referer header → treat as external/untrusted
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const notFoundMeta = { method, path, status, durationMs, referer: referer ?? undefined };
|
||||||
|
if (internalNavigation) {
|
||||||
|
logger.warn('middleware', `Not found (broken internal link)`, notFoundMeta);
|
||||||
|
} else {
|
||||||
|
logger.info('middleware', `Not found`, notFoundMeta);
|
||||||
|
}
|
||||||
} else if (status >= 400) {
|
} else if (status >= 400) {
|
||||||
logger.warn('middleware', `Client error ${status}`, { method, path, status, durationMs });
|
logger.warn('middleware', `Client error ${status}`, { method, path, status, durationMs });
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user