codeloop-mcp-server 0.1.63 → 0.1.64

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 (40) hide show
  1. package/dist/auth/critical_floors.d.ts.map +1 -1
  2. package/dist/auth/critical_floors.js +4 -0
  3. package/dist/auth/critical_floors.js.map +1 -1
  4. package/dist/auth/key_resolver.d.ts +55 -0
  5. package/dist/auth/key_resolver.d.ts.map +1 -0
  6. package/dist/auth/key_resolver.js +41 -0
  7. package/dist/auth/key_resolver.js.map +1 -0
  8. package/dist/auth/key_source.d.ts +60 -4
  9. package/dist/auth/key_source.d.ts.map +1 -1
  10. package/dist/auth/key_source.js +281 -48
  11. package/dist/auth/key_source.js.map +1 -1
  12. package/dist/evidence/observability.d.ts +67 -0
  13. package/dist/evidence/observability.d.ts.map +1 -0
  14. package/dist/evidence/observability.js +57 -0
  15. package/dist/evidence/observability.js.map +1 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +52 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/runners/app_logger.d.ts.map +1 -1
  20. package/dist/runners/app_logger.js +31 -3
  21. package/dist/runners/app_logger.js.map +1 -1
  22. package/dist/runners/logging_readiness.d.ts +72 -0
  23. package/dist/runners/logging_readiness.d.ts.map +1 -0
  24. package/dist/runners/logging_readiness.js +419 -0
  25. package/dist/runners/logging_readiness.js.map +1 -0
  26. package/dist/runners/remote_logs.d.ts +105 -0
  27. package/dist/runners/remote_logs.d.ts.map +1 -0
  28. package/dist/runners/remote_logs.js +336 -0
  29. package/dist/runners/remote_logs.js.map +1 -0
  30. package/dist/tools/gate_check.d.ts.map +1 -1
  31. package/dist/tools/gate_check.js +25 -0
  32. package/dist/tools/gate_check.js.map +1 -1
  33. package/dist/tools/interaction_replay.d.ts +18 -0
  34. package/dist/tools/interaction_replay.d.ts.map +1 -1
  35. package/dist/tools/interaction_replay.js +102 -1
  36. package/dist/tools/interaction_replay.js.map +1 -1
  37. package/dist/tools/verify.d.ts.map +1 -1
  38. package/dist/tools/verify.js +61 -5
  39. package/dist/tools/verify.js.map +1 -1
  40. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"app_logger.d.ts","sourceRoot":"","sources":["../../src/runners/app_logger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA6DjE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB1E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY,GAAG,MAAM,CAW3E;AA+ID;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAwCjE"}
1
+ {"version":3,"file":"app_logger.d.ts","sourceRoot":"","sources":["../../src/runners/app_logger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAsBD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA4DjE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB1E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY,GAAG,MAAM,CAW3E;AA+JD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAwCjE"}
@@ -4,6 +4,19 @@ import { mkdirSync, writeFileSync, readFileSync, existsSync } from "fs";
4
4
  import { spawn } from "child_process";
5
5
  import { checkToolAvailable, runCommand } from "./base.js";
6
6
  const activeLogCaptures = new Map();
7
+ /**
8
+ * Cross-platform `tail -f <file>`. On Windows the `tail` binary doesn't
9
+ * exist, so we use PowerShell's `Get-Content -Wait -Tail` (the native
10
+ * streaming-tail equivalent). Returns a ChildProcess whose stdout streams
11
+ * appended lines, so callers can treat it like any other log source.
12
+ */
13
+ function spawnTailProcess(file, lines = 200) {
14
+ if (platform() === "win32") {
15
+ const escaped = file.replace(/'/g, "''"); // PowerShell single-quote escape
16
+ return spawn("powershell", ["-NoProfile", "-Command", `Get-Content -LiteralPath '${escaped}' -Wait -Tail ${lines}`], { cwd: process.cwd(), stdio: "pipe", detached: false });
17
+ }
18
+ return spawn("tail", ["-f", file], { cwd: process.cwd(), stdio: "pipe", detached: false });
19
+ }
7
20
  /**
8
21
  * Start capturing app logs in the background.
9
22
  * Spawns a platform-appropriate log streaming process and buffers output to a file.
@@ -41,11 +54,10 @@ export async function startLogCapture(outputDir, appName, targetType, packageOrB
41
54
  }
42
55
  else {
43
56
  // Fallback: try to find and tail the Next.js dev server log file
57
+ // (cross-platform — uses PowerShell Get-Content -Wait on Windows).
44
58
  const nextLogPath = join(process.cwd(), ".next", "trace");
45
59
  if (existsSync(nextLogPath)) {
46
- handle.process = spawn("tail", ["-f", nextLogPath], {
47
- cwd: process.cwd(), stdio: "pipe", detached: false,
48
- });
60
+ handle.process = spawnTailProcess(nextLogPath);
49
61
  }
50
62
  }
51
63
  }
@@ -235,6 +247,22 @@ async function startDevServerLogCapture(_appName) {
235
247
  }
236
248
  }
237
249
  }
250
+ // Cross-platform fallback (the ONLY dev-server path on Windows, where we
251
+ // can't attach to another process's stdout via /proc): tail a known
252
+ // file-based dev log if one exists. Uses PowerShell Get-Content -Wait on
253
+ // Windows and `tail -f` elsewhere. The browser-console (Playwright) and
254
+ // backend.log (backend_runtime) capture paths remain the primary sources;
255
+ // this just adds dev-server file logs where present.
256
+ for (const rel of [
257
+ join(".next", "trace"),
258
+ join("logs", "dev.log"),
259
+ join("logs", "server.log"),
260
+ "dev-server.log",
261
+ ]) {
262
+ const p = join(process.cwd(), rel);
263
+ if (existsSync(p))
264
+ return spawnTailProcess(p);
265
+ }
238
266
  return null;
239
267
  }
240
268
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"app_logger.js","sourceRoot":"","sources":["../../src/runners/app_logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app_logger.js","sourceRoot":"","sources":["../../src/runners/app_logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import type { LoggingDimensionId, ObservabilityEvidence, ProjectKind } from "../evidence/observability.js";
2
+ /**
3
+ * 0.1.64 — Logging-readiness detector.
4
+ *
5
+ * Scans a project for a real logging system (logger, request/HTTP logging,
6
+ * global error handler, local log sink) and produces ObservabilityEvidence
7
+ * consumed by the `logging_observability_evidence` gate. The pure scoring
8
+ * helpers (classifyProjectKind / resolveRequiredDimensions /
9
+ * buildObservabilityEvidence) are unit-tested without the filesystem; the
10
+ * detect* functions do the bounded source/manifest scan.
11
+ */
12
+ export interface ObservabilityConfig {
13
+ enabled?: boolean;
14
+ severity?: "blocker" | "warning";
15
+ require_logger?: boolean;
16
+ require_request_logging?: boolean;
17
+ require_error_handler?: boolean;
18
+ require_log_sink?: boolean;
19
+ }
20
+ export interface LoggingSignals {
21
+ stack: string;
22
+ project_kind: ProjectKind;
23
+ logger: {
24
+ present: boolean;
25
+ evidence?: string;
26
+ };
27
+ request_logging: {
28
+ present: boolean;
29
+ evidence?: string;
30
+ };
31
+ error_handler: {
32
+ present: boolean;
33
+ evidence?: string;
34
+ };
35
+ log_sink: {
36
+ present: boolean;
37
+ evidence?: string;
38
+ };
39
+ /** False when there's no instrumentable app source (pure lib / static). */
40
+ has_app_source: boolean;
41
+ }
42
+ /** Detect the dominant stack from manifests. Independent of detectPlatform. */
43
+ export declare function detectStack(cwd: string): string;
44
+ /**
45
+ * Classify a project as frontend / backend / fullstack / cli / library.
46
+ * Pure — operates on a small set of boolean signals so it's unit-testable.
47
+ */
48
+ export declare function classifyProjectKind(signals: {
49
+ stack: string;
50
+ hasServerDep: boolean;
51
+ hasFrontendDep: boolean;
52
+ hasHttpRoutes: boolean;
53
+ isLibrary: boolean;
54
+ hasEntrypoint: boolean;
55
+ }): ProjectKind;
56
+ /**
57
+ * Decide which dimensions are required given config + project kind.
58
+ * Pure. request_logging only applies to server-shaped projects.
59
+ */
60
+ export declare function resolveRequiredDimensions(kind: ProjectKind, config: ObservabilityConfig): Record<LoggingDimensionId, boolean>;
61
+ /**
62
+ * Assemble the final evidence from raw signals + config. Pure so the
63
+ * required/missing logic is unit-tested without scanning a real project.
64
+ */
65
+ export declare function buildObservabilityEvidence(signals: LoggingSignals, config: ObservabilityConfig): ObservabilityEvidence;
66
+ /**
67
+ * Detect the logging readiness of a project and build evidence. Best-effort:
68
+ * any failure resolves to a non-blocking, applicable:false evidence so verify
69
+ * never breaks.
70
+ */
71
+ export declare function detectLoggingReadiness(cwd: string, config: ObservabilityConfig): ObservabilityEvidence;
72
+ //# sourceMappingURL=logging_readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging_readiness.d.ts","sourceRoot":"","sources":["../../src/runners/logging_readiness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACZ,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;GASG;AAEH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,eAAe,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,aAAa,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,QAAQ,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,2EAA2E;IAC3E,cAAc,EAAE,OAAO,CAAC;CACzB;AAqFD,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqB/C;AAwBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,WAAW,CASd;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,mBAAmB,GAC1B,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,CASrC;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,mBAAmB,GAC1B,qBAAqB,CAwCvB;AA6ED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,GAC1B,qBAAqB,CAuFvB"}
@@ -0,0 +1,419 @@
1
+ import { existsSync, readFileSync, readdirSync, statSync } from "fs";
2
+ import { join, extname } from "path";
3
+ const SKIP_DIRS = new Set([
4
+ "node_modules", ".git", "dist", "build", "out", ".next", ".nuxt",
5
+ "coverage", "artifacts", ".codeloop", "vendor", "bin", "obj",
6
+ ".venv", "venv", "__pycache__", ".dart_tool", "target", "Pods",
7
+ ".turbo", ".cache", "tmp", ".idea", ".vscode",
8
+ ]);
9
+ const SOURCE_EXTS = new Set([
10
+ ".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".cs",
11
+ ".dart", ".go", ".rs", ".java", ".kt", ".rb", ".php",
12
+ ]);
13
+ const MAX_FILES = 800;
14
+ const MAX_BYTES_PER_FILE = 96 * 1024;
15
+ /**
16
+ * Per-stack recommendation strings — concrete "build this" instructions the
17
+ * agent can act on directly when a dimension is missing.
18
+ */
19
+ const RECOMMENDATIONS = {
20
+ node: {
21
+ logger: "add a structured logger (pino or winston) and replace ad-hoc console.* with leveled log calls",
22
+ request_logging: "add HTTP request logging middleware (pino-http / morgan) so every request is logged with status + latency",
23
+ error_handler: "add a global Express/Koa error-handling middleware (or process 'uncaughtException'/'unhandledRejection' handlers) that logs the stack trace",
24
+ log_sink: "configure a file/rotating transport (pino destination or winston file transport) writing to ./logs so logs persist locally",
25
+ },
26
+ web: {
27
+ logger: "add a logger util wrapping console with levels (or pino/loglevel) and a server-side logger for API routes",
28
+ request_logging: "log every API route/server action with method, path, status, and duration",
29
+ error_handler: "add a React error boundary for the UI AND a server error handler that logs stack traces (e.g. Next.js error.tsx + a logging wrapper)",
30
+ log_sink: "write server logs to ./logs (file transport) in addition to stdout",
31
+ },
32
+ python: {
33
+ logger: "configure the stdlib `logging` module (or structlog/loguru) with a root logger + formatter instead of print()",
34
+ request_logging: "enable request logging middleware (Django LOGGING + middleware, Flask after_request, or FastAPI/Starlette access logs)",
35
+ error_handler: "register a global exception handler that logs the traceback (Django handler500 / Flask errorhandler / FastAPI exception_handler)",
36
+ log_sink: "add a FileHandler/RotatingFileHandler writing to ./logs",
37
+ },
38
+ dotnet: {
39
+ logger: "wire Microsoft.Extensions.Logging (or Serilog/NLog) via the DI ILogger instead of Console.WriteLine",
40
+ request_logging: "enable app.UseHttpLogging() or Serilog request logging middleware",
41
+ error_handler: "add app.UseExceptionHandler(...) (production) that logs the exception, not just UseDeveloperExceptionPage",
42
+ log_sink: "add a file sink (Serilog.Sinks.File or a logging provider) writing to ./logs",
43
+ },
44
+ flutter: {
45
+ logger: "use the `logging` or `logger` package with levels instead of print()",
46
+ request_logging: "log every API/network call (e.g. a Dio interceptor) with method, path, and status",
47
+ error_handler: "set FlutterError.onError and runZonedGuarded / PlatformDispatcher.onError to log uncaught errors",
48
+ log_sink: "persist logs to a file (path_provider + a file output) for offline diagnosis",
49
+ },
50
+ go: {
51
+ logger: "use log/slog (or zap/zerolog) with structured levels instead of fmt.Println",
52
+ request_logging: "add HTTP request logging middleware that records method, path, status, and latency",
53
+ error_handler: "add panic-recovery middleware that logs the stack trace and returns 500",
54
+ log_sink: "tee logs to a file in ./logs in addition to stdout",
55
+ },
56
+ rust: {
57
+ logger: "use the `tracing` (or `log` + `env_logger`) crate with leveled events instead of println!",
58
+ request_logging: "add a request-logging layer (tower-http TraceLayer) recording method, path, and status",
59
+ error_handler: "install a panic hook / error middleware that logs the error chain",
60
+ log_sink: "add a file appender (tracing-appender) writing to ./logs",
61
+ },
62
+ generic: {
63
+ logger: "add a structured, leveled logger and route all diagnostics through it",
64
+ request_logging: "log every inbound request with method, path, status, and duration",
65
+ error_handler: "add a global error handler that logs the full stack trace at the boundary",
66
+ log_sink: "persist logs to a local ./logs directory in addition to stdout",
67
+ },
68
+ };
69
+ function rec(stack, id) {
70
+ return RECOMMENDATIONS[stack]?.[id] ?? RECOMMENDATIONS.generic[id];
71
+ }
72
+ /** Read a manifest file as text, or "" when absent/unreadable. */
73
+ function readIf(path) {
74
+ try {
75
+ return existsSync(path) ? readFileSync(path, "utf-8") : "";
76
+ }
77
+ catch {
78
+ return "";
79
+ }
80
+ }
81
+ /** Detect the dominant stack from manifests. Independent of detectPlatform. */
82
+ export function detectStack(cwd) {
83
+ if (existsSync(join(cwd, "pubspec.yaml")))
84
+ return "flutter";
85
+ if (existsSync(join(cwd, "package.json"))) {
86
+ const pkg = readIf(join(cwd, "package.json"));
87
+ if (/"(react|next|vue|nuxt|svelte|@sveltejs\/kit|@angular\/core|gatsby|remix|astro)"/.test(pkg)) {
88
+ return "web";
89
+ }
90
+ return "node";
91
+ }
92
+ if (existsSync(join(cwd, "go.mod")))
93
+ return "go";
94
+ if (existsSync(join(cwd, "Cargo.toml")) || existsSync(join(cwd, "src-tauri", "Cargo.toml")))
95
+ return "rust";
96
+ if (existsSync(join(cwd, "requirements.txt")) ||
97
+ existsSync(join(cwd, "pyproject.toml")) ||
98
+ existsSync(join(cwd, "manage.py")) ||
99
+ existsSync(join(cwd, "Pipfile"))) {
100
+ return "python";
101
+ }
102
+ if (hasFileMatching(cwd, (f) => f.endsWith(".csproj") || f.endsWith(".sln"), 2))
103
+ return "dotnet";
104
+ return "unknown";
105
+ }
106
+ function hasFileMatching(dir, pred, depth) {
107
+ let entries;
108
+ try {
109
+ entries = readdirSync(dir);
110
+ }
111
+ catch {
112
+ return false;
113
+ }
114
+ for (const e of entries) {
115
+ if (SKIP_DIRS.has(e))
116
+ continue;
117
+ const full = join(dir, e);
118
+ let st;
119
+ try {
120
+ st = statSync(full);
121
+ }
122
+ catch {
123
+ continue;
124
+ }
125
+ if (st.isFile() && pred(e))
126
+ return true;
127
+ if (st.isDirectory() && depth > 0 && hasFileMatching(full, pred, depth - 1))
128
+ return true;
129
+ }
130
+ return false;
131
+ }
132
+ /**
133
+ * Classify a project as frontend / backend / fullstack / cli / library.
134
+ * Pure — operates on a small set of boolean signals so it's unit-testable.
135
+ */
136
+ export function classifyProjectKind(signals) {
137
+ const { hasServerDep, hasFrontendDep, hasHttpRoutes, isLibrary, hasEntrypoint } = signals;
138
+ const backendish = hasServerDep || hasHttpRoutes;
139
+ if (hasFrontendDep && backendish)
140
+ return "fullstack";
141
+ if (hasFrontendDep)
142
+ return "frontend";
143
+ if (backendish)
144
+ return "backend";
145
+ if (isLibrary)
146
+ return "library";
147
+ if (hasEntrypoint)
148
+ return "cli";
149
+ return "unknown";
150
+ }
151
+ /**
152
+ * Decide which dimensions are required given config + project kind.
153
+ * Pure. request_logging only applies to server-shaped projects.
154
+ */
155
+ export function resolveRequiredDimensions(kind, config) {
156
+ const serverShaped = kind === "backend" || kind === "fullstack";
157
+ const instrumentable = kind !== "library";
158
+ return {
159
+ logger: instrumentable && config.require_logger !== false,
160
+ request_logging: serverShaped && config.require_request_logging !== false,
161
+ error_handler: instrumentable && config.require_error_handler !== false,
162
+ log_sink: config.require_log_sink === true,
163
+ };
164
+ }
165
+ /**
166
+ * Assemble the final evidence from raw signals + config. Pure so the
167
+ * required/missing logic is unit-tested without scanning a real project.
168
+ */
169
+ export function buildObservabilityEvidence(signals, config) {
170
+ const required = resolveRequiredDimensions(signals.project_kind, config);
171
+ const severity = config.severity === "warning" ? "warning" : "blocker";
172
+ const dims = [
173
+ { id: "logger", label: "Structured logger", present: signals.logger.present, evidence: signals.logger.evidence },
174
+ { id: "request_logging", label: "Request/HTTP logging", present: signals.request_logging.present, evidence: signals.request_logging.evidence },
175
+ { id: "error_handler", label: "Global error handler / boundary", present: signals.error_handler.present, evidence: signals.error_handler.evidence },
176
+ { id: "log_sink", label: "Local log sink", present: signals.log_sink.present, evidence: signals.log_sink.evidence },
177
+ ];
178
+ const dimensions = dims.map((d) => ({
179
+ id: d.id,
180
+ label: d.label,
181
+ present: d.present,
182
+ required: required[d.id],
183
+ evidence: d.present ? d.evidence : undefined,
184
+ recommendation: d.present ? undefined : rec(signals.stack, d.id),
185
+ }));
186
+ const missing_required = dimensions
187
+ .filter((d) => d.required && !d.present)
188
+ .map((d) => d.id);
189
+ const applicable = signals.has_app_source && signals.project_kind !== "library";
190
+ return {
191
+ generated_at: new Date().toISOString(),
192
+ applicable,
193
+ stack: signals.stack,
194
+ project_kind: signals.project_kind,
195
+ dimensions,
196
+ missing_required: applicable ? missing_required : [],
197
+ severity,
198
+ reason: applicable
199
+ ? undefined
200
+ : signals.project_kind === "library"
201
+ ? "library project — request/UI logging not enforced"
202
+ : "no instrumentable app source detected",
203
+ };
204
+ }
205
+ /**
206
+ * Bounded recursive source scan. Returns which regexes matched (by index)
207
+ * plus a sample file for the first match of each. Caps file count + bytes so
208
+ * it never dominates a verify run.
209
+ */
210
+ function scanSource(cwd, patterns) {
211
+ const matched = patterns.map(() => false);
212
+ const sampleFile = patterns.map(() => undefined);
213
+ let routeHits = 0;
214
+ let filesRead = 0;
215
+ const ROUTE_RE = /(\.(get|post|put|patch|delete)\s*\(|@(app|router)\.(get|post|put|patch|delete)|app\.Map(Get|Post|Put|Delete)|HttpGet|HttpPost|router\.(get|post|put|patch|delete))/i;
216
+ const walk = (dir) => {
217
+ if (filesRead >= MAX_FILES)
218
+ return;
219
+ let entries;
220
+ try {
221
+ entries = readdirSync(dir);
222
+ }
223
+ catch {
224
+ return;
225
+ }
226
+ for (const e of entries) {
227
+ if (filesRead >= MAX_FILES)
228
+ return;
229
+ if (SKIP_DIRS.has(e) || e.startsWith("."))
230
+ continue;
231
+ const full = join(dir, e);
232
+ let st;
233
+ try {
234
+ st = statSync(full);
235
+ }
236
+ catch {
237
+ continue;
238
+ }
239
+ if (st.isDirectory()) {
240
+ walk(full);
241
+ continue;
242
+ }
243
+ if (!st.isFile())
244
+ continue;
245
+ if (!SOURCE_EXTS.has(extname(e)))
246
+ continue;
247
+ filesRead++;
248
+ let text;
249
+ try {
250
+ text = readFileSync(full, "utf-8").slice(0, MAX_BYTES_PER_FILE);
251
+ }
252
+ catch {
253
+ continue;
254
+ }
255
+ if (ROUTE_RE.test(text))
256
+ routeHits++;
257
+ for (let i = 0; i < patterns.length; i++) {
258
+ if (!matched[i] && patterns[i].test(text)) {
259
+ matched[i] = true;
260
+ sampleFile[i] = full;
261
+ }
262
+ }
263
+ }
264
+ };
265
+ walk(cwd);
266
+ return { matched, sampleFile, routeHits };
267
+ }
268
+ const LOG_SINK_DIR_NAMES = ["logs", "log"];
269
+ function hasLocalLogSink(cwd) {
270
+ for (const name of LOG_SINK_DIR_NAMES) {
271
+ const p = join(cwd, name);
272
+ try {
273
+ if (existsSync(p) && statSync(p).isDirectory())
274
+ return { present: true, evidence: `${name}/ directory` };
275
+ }
276
+ catch {
277
+ /* ignore */
278
+ }
279
+ }
280
+ return { present: false };
281
+ }
282
+ /**
283
+ * Detect the logging readiness of a project and build evidence. Best-effort:
284
+ * any failure resolves to a non-blocking, applicable:false evidence so verify
285
+ * never breaks.
286
+ */
287
+ export function detectLoggingReadiness(cwd, config) {
288
+ try {
289
+ const stack = detectStack(cwd);
290
+ const pkg = readIf(join(cwd, "package.json"));
291
+ const pyReq = readIf(join(cwd, "requirements.txt")) + readIf(join(cwd, "pyproject.toml")) + readIf(join(cwd, "Pipfile"));
292
+ const csproj = collectDotnetManifests(cwd);
293
+ const goMod = readIf(join(cwd, "go.mod"));
294
+ const cargo = readIf(join(cwd, "Cargo.toml")) + readIf(join(cwd, "src-tauri", "Cargo.toml"));
295
+ const pubspec = readIf(join(cwd, "pubspec.yaml"));
296
+ // ── Source-pattern scan (bounded) ──────────────────────────────
297
+ // Index map: 0=logger-use, 1=request-logging, 2=error-handler, 3=console-only
298
+ const patterns = [
299
+ /\b(logger|getLogger|LoggerFactory|ILogger|slog\.|tracing::|log::(info|warn|error|debug)|logging\.getLogger|loguru|structlog|Serilog|Log\.(Information|Error|Warning)|zap\.|zerolog)\b/,
300
+ /\b(morgan|pino-http|UseHttpLogging|RequestLoggingMiddleware|access[_-]?log|LoggingMiddleware|after_request|TraceLayer|requestLogger|httpLogger|Dio.*Interceptor)\b/i,
301
+ /(ErrorBoundary|componentDidCatch|getDerivedStateFromError|UseExceptionHandler|app\.use\(\s*\(?err|uncaughtException|unhandledRejection|errorhandler|exception_handler|handler500|FlutterError\.onError|runZonedGuarded|catch_unwind|panic::set_hook|recover\(\))/,
302
+ /\b(console\.(log|error|warn)|print\(|fmt\.Print|println!|System\.out\.print|Console\.WriteLine|debugPrint)\b/,
303
+ ];
304
+ const scan = scanSource(cwd, patterns);
305
+ const hasFrontendDep = /"(react|next|vue|nuxt|svelte|@sveltejs\/kit|@angular\/core|gatsby|remix|astro)"/.test(pkg) || stack === "flutter";
306
+ const hasServerDep = /"(express|fastify|koa|@nestjs\/core|hapi|next)"/.test(pkg) ||
307
+ /\b(flask|django|fastapi|starlette|aiohttp|tornado)\b/i.test(pyReq) ||
308
+ /\b(Microsoft\.AspNetCore|Microsoft\.NET\.Sdk\.Web)\b/.test(csproj) ||
309
+ /\b(net\/http|gin-gonic|echo|fiber|chi)\b/.test(goMod) ||
310
+ /\b(actix-web|axum|rocket|warp|hyper)\b/.test(cargo);
311
+ const isLibrary = (stack === "node" && !!pkg && /"main"\s*:/.test(pkg) && !/"(start|dev|serve)"\s*:/.test(pkg) && !hasServerDep) ||
312
+ /\[lib\]/.test(cargo) ||
313
+ (stack === "python" && !existsSync(join(cwd, "manage.py")) && !hasServerDep && /\[project\]/.test(pyReq) && !/scripts\s*=/.test(pyReq));
314
+ const hasEntrypoint = existsSync(join(cwd, "main.py")) || existsSync(join(cwd, "manage.py")) ||
315
+ /"(start|dev|serve)"\s*:/.test(pkg) || stack === "dotnet" || stack === "go" || stack === "rust";
316
+ const project_kind = classifyProjectKind({
317
+ stack,
318
+ hasServerDep,
319
+ hasFrontendDep,
320
+ hasHttpRoutes: scan.routeHits > 0,
321
+ isLibrary,
322
+ hasEntrypoint,
323
+ });
324
+ // ── Logger dimension: dependency OR source use ─────────────────
325
+ const loggerDep = detectLoggerDependency({ pkg, pyReq, csproj, goMod, cargo, pubspec });
326
+ const logger = loggerDep.present
327
+ ? loggerDep
328
+ : scan.matched[0]
329
+ ? { present: true, evidence: `logger use in ${shortPath(cwd, scan.sampleFile[0])}` }
330
+ : { present: false };
331
+ const request_logging = scan.matched[1]
332
+ ? { present: true, evidence: `request logging in ${shortPath(cwd, scan.sampleFile[1])}` }
333
+ : { present: false };
334
+ const error_handler = scan.matched[2]
335
+ ? { present: true, evidence: `error handler in ${shortPath(cwd, scan.sampleFile[2])}` }
336
+ : { present: false };
337
+ const log_sink = hasLocalLogSink(cwd);
338
+ const has_app_source = scan.routeHits > 0 || scan.matched.some(Boolean) || stack !== "unknown";
339
+ const signals = {
340
+ stack,
341
+ project_kind,
342
+ logger,
343
+ request_logging,
344
+ error_handler,
345
+ log_sink,
346
+ has_app_source,
347
+ };
348
+ return buildObservabilityEvidence(signals, config);
349
+ }
350
+ catch {
351
+ return {
352
+ generated_at: new Date().toISOString(),
353
+ applicable: false,
354
+ stack: "unknown",
355
+ project_kind: "unknown",
356
+ dimensions: [],
357
+ missing_required: [],
358
+ severity: config.severity === "warning" ? "warning" : "blocker",
359
+ reason: "logging-readiness scan failed (best-effort)",
360
+ };
361
+ }
362
+ }
363
+ function shortPath(cwd, full) {
364
+ if (!full)
365
+ return "source";
366
+ return full.startsWith(cwd) ? full.slice(cwd.length).replace(/^[/\\]/, "") : full;
367
+ }
368
+ function collectDotnetManifests(cwd) {
369
+ let text = "";
370
+ let count = 0;
371
+ const walk = (dir, depth) => {
372
+ if (count >= 30)
373
+ return;
374
+ let entries;
375
+ try {
376
+ entries = readdirSync(dir);
377
+ }
378
+ catch {
379
+ return;
380
+ }
381
+ for (const e of entries) {
382
+ if (SKIP_DIRS.has(e))
383
+ continue;
384
+ const full = join(dir, e);
385
+ let st;
386
+ try {
387
+ st = statSync(full);
388
+ }
389
+ catch {
390
+ continue;
391
+ }
392
+ if (st.isFile() && e.endsWith(".csproj")) {
393
+ text += readIf(full);
394
+ count++;
395
+ }
396
+ else if (st.isDirectory() && depth > 0) {
397
+ walk(full, depth - 1);
398
+ }
399
+ }
400
+ };
401
+ walk(cwd, 2);
402
+ return text;
403
+ }
404
+ function detectLoggerDependency(m) {
405
+ const checks = [
406
+ [/"(winston|pino|bunyan|loglevel|@nestjs\/common)"/, m.pkg, "logger dependency in package.json"],
407
+ [/\b(loguru|structlog|python-json-logger)\b/i, m.pyReq, "logger dependency in Python manifest"],
408
+ [/\b(Serilog|NLog|Microsoft\.Extensions\.Logging)\b/, m.csproj, "logging package in .csproj"],
409
+ [/\b(go\.uber\.org\/zap|rs\/zerolog|sirupsen\/logrus)\b/, m.goMod, "logger dependency in go.mod"],
410
+ [/\b(tracing|env_logger|log|slog|fern)\s*=/, m.cargo, "logger crate in Cargo.toml"],
411
+ [/\b(logger|logging):\s/, m.pubspec, "logger package in pubspec.yaml"],
412
+ ];
413
+ for (const [re, text, evidence] of checks) {
414
+ if (text && re.test(text))
415
+ return { present: true, evidence };
416
+ }
417
+ return { present: false };
418
+ }
419
+ //# sourceMappingURL=logging_readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging_readiness.js","sourceRoot":"","sources":["../../src/runners/logging_readiness.ts"],"names":[],"mappings":"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"}