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":"key_source.js","sourceRoot":"","sources":["../../src/auth/key_source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"key_source.js","sourceRoot":"","sources":["../../src/auth/key_source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * 0.1.64 — observability.json evidence + the `logging_observability_evidence`
3
+ * gate verdict.
4
+ *
5
+ * CodeLoop scans the project for an ACTUAL logging system instead of only
6
+ * scanning whatever the app happens to emit. The previous design
7
+ * (runtime_log_scan) could only catch faults when the app already logged
8
+ * them; a project with no structured logger, no request logging, and no
9
+ * global error handler swallowed exceptions invisibly and the gate passed
10
+ * as n/a. This evidence makes the ABSENCE of observability a first-class,
11
+ * blockable signal — pushing the agent to build proper logging so root
12
+ * causes are catchable and fixable permanently.
13
+ *
14
+ * The gate verdict is a pure function over the evidence so it's unit-tested
15
+ * without touching the filesystem. The detector
16
+ * (runners/logging_readiness.ts) is what reads the project and fills the
17
+ * `required` flags from config + project kind.
18
+ *
19
+ * Applicable-or-n/a: a missing file or `applicable: false` evidence yields a
20
+ * PASS — the gate only blocks when the project has real app source AND a
21
+ * required logging dimension is missing.
22
+ */
23
+ export type LoggingDimensionId = "logger" | "request_logging" | "error_handler" | "log_sink";
24
+ export interface LoggingDimension {
25
+ id: LoggingDimensionId;
26
+ /** Human-readable label, e.g. "Structured logger". */
27
+ label: string;
28
+ /** True when the project already satisfies this dimension. */
29
+ present: boolean;
30
+ /** True when this dimension is required for this project (config + kind). */
31
+ required: boolean;
32
+ /** What satisfied it (dependency / file / pattern), when present. */
33
+ evidence?: string;
34
+ /** Concrete, stack-specific "build this" instruction, when missing. */
35
+ recommendation?: string;
36
+ }
37
+ export type ProjectKind = "frontend" | "backend" | "fullstack" | "cli" | "library" | "unknown";
38
+ export interface ObservabilityEvidence {
39
+ generated_at: string;
40
+ /** False when there's no app source to instrument (pure lib / static). */
41
+ applicable: boolean;
42
+ /** Detected stack label, e.g. "node", "python", "dotnet", "flutter". */
43
+ stack: string;
44
+ project_kind: ProjectKind;
45
+ dimensions: LoggingDimension[];
46
+ /** Ids of required dimensions that are missing. */
47
+ missing_required: LoggingDimensionId[];
48
+ /** Gate severity to apply when missing_required is non-empty. */
49
+ severity: "blocker" | "warning";
50
+ reason?: string;
51
+ }
52
+ export declare function writeObservabilityEvidence(runDir: string, ev: ObservabilityEvidence): void;
53
+ export declare function loadObservabilityEvidence(runDir: string): ObservabilityEvidence | null;
54
+ export interface GateVerdict {
55
+ passed: boolean;
56
+ reason: string;
57
+ }
58
+ /**
59
+ * logging_observability_evidence — a required logging dimension must not be
60
+ * missing.
61
+ * - No evidence file (legacy run / verify didn't write one) -> pass.
62
+ * - Not applicable (no app source) -> pass (n/a).
63
+ * - All required dimensions present -> pass.
64
+ * - A required dimension missing -> fail (severity from evidence.severity).
65
+ */
66
+ export declare function evaluateObservabilityGate(ev: ObservabilityEvidence | null): GateVerdict;
67
+ //# sourceMappingURL=observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../src/evidence/observability.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,iBAAiB,GACjB,eAAe,GACf,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,kBAAkB,CAAC;IACvB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,SAAS,GACT,WAAW,GACX,KAAK,GACL,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,UAAU,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,mDAAmD;IACnD,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,iEAAiE;IACjE,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,qBAAqB,GAAG,IAAI,CAO1F;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAQtF;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,qBAAqB,GAAG,IAAI,GAAG,WAAW,CAyBvF"}
@@ -0,0 +1,57 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
2
+ import { join } from "path";
3
+ const FILE = "observability.json";
4
+ export function writeObservabilityEvidence(runDir, ev) {
5
+ try {
6
+ mkdirSync(runDir, { recursive: true });
7
+ writeFileSync(join(runDir, FILE), JSON.stringify(ev, null, 2), "utf-8");
8
+ }
9
+ catch {
10
+ /* best-effort — never throw out of verify */
11
+ }
12
+ }
13
+ export function loadObservabilityEvidence(runDir) {
14
+ const p = join(runDir, FILE);
15
+ if (!existsSync(p))
16
+ return null;
17
+ try {
18
+ return JSON.parse(readFileSync(p, "utf-8"));
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ /**
25
+ * logging_observability_evidence — a required logging dimension must not be
26
+ * missing.
27
+ * - No evidence file (legacy run / verify didn't write one) -> pass.
28
+ * - Not applicable (no app source) -> pass (n/a).
29
+ * - All required dimensions present -> pass.
30
+ * - A required dimension missing -> fail (severity from evidence.severity).
31
+ */
32
+ export function evaluateObservabilityGate(ev) {
33
+ if (!ev) {
34
+ return { passed: true, reason: "No observability.json (run codeloop_verify to scan logging readiness)" };
35
+ }
36
+ if (!ev.applicable) {
37
+ return { passed: true, reason: `n/a — ${ev.reason ?? "no instrumentable app source detected"}` };
38
+ }
39
+ if (ev.missing_required.length === 0) {
40
+ const have = ev.dimensions.filter((d) => d.present).map((d) => d.id);
41
+ return {
42
+ passed: true,
43
+ reason: `Logging system present (${have.join(", ") || "no required dimensions"}) for ${ev.stack} ${ev.project_kind}`,
44
+ };
45
+ }
46
+ const missing = ev.dimensions.filter((d) => ev.missing_required.includes(d.id));
47
+ const detail = missing
48
+ .map((d) => `${d.label} — ${d.recommendation ?? "add it"}`)
49
+ .join(" | ");
50
+ return {
51
+ passed: false,
52
+ reason: `Missing logging system component(s) for this ${ev.stack} ${ev.project_kind}: ${detail}. ` +
53
+ `Build the logging system, then re-run codeloop_verify. ` +
54
+ `(Tune via .codeloop/config.json -> observability.)`,
55
+ };
56
+ }
57
+ //# sourceMappingURL=observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../src/evidence/observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAoE5B,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAElC,MAAM,UAAU,0BAA0B,CAAC,MAAc,EAAE,EAAyB;IAClF,IAAI,CAAC;QACH,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAA0B,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,EAAgC;IACxE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,uEAAuE,EAAE,CAAC;IAC3G,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,IAAI,uCAAuC,EAAE,EAAE,CAAC;IACnG,CAAC;IACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,2BAA2B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,wBAAwB,SAAS,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,EAAE;SACrH,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,OAAO;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,cAAc,IAAI,QAAQ,EAAE,CAAC;SAC1D,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,OAAO;QACL,MAAM,EAAE,KAAK;QACb,MAAM,EACJ,gDAAgD,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,KAAK,MAAM,IAAI;YAC1F,yDAAyD;YACzD,oDAAoD;KACvD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAqiBA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAylBA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEjD"}
package/dist/index.js CHANGED
@@ -18,8 +18,9 @@ import { join, basename, resolve } from "path";
18
18
  import { homedir } from "os";
19
19
  import { isProjectInitialized } from "./init_state.js";
20
20
  import { loadConfig } from "./config.js";
21
- import { validateApiKey, isActivationRequired } from "./auth/api_key.js";
21
+ import { isActivationRequired } from "./auth/api_key.js";
22
22
  import { identifyKeySource, buildRevokedKeyDiagnostic } from "./auth/key_source.js";
23
+ import { resolveActiveApiKey } from "./auth/key_resolver.js";
23
24
  import { warmCliCache } from "./auth/cli_cache_warmer.js";
24
25
  import { recordInitialisedDir, wasInitialisedAtPath, } from "./auth/init_hint_cache.js";
25
26
  import { startUpdateCheck, getUpdateInfo, formatUpdateNotice, getRunningVersion, } from "./auth/update_check.js";
@@ -146,7 +147,18 @@ if (!process.env.CODELOOP_PROJECT_DIR &&
146
147
  }
147
148
  }
148
149
  const config = loadConfig(projectDir);
150
+ // The key as configured (env var injected by mcp.json wins, else config.json).
149
151
  const apiKey = process.env.CODELOOP_API_KEY || config.api_key;
152
+ // The key actually used for this process. Starts as the configured key but
153
+ // may be self-healed to an active on-disk key if the configured one is
154
+ // revoked (see resolveActiveApiKey). Cached here so we only scan disk once.
155
+ let effectiveApiKey = apiKey;
156
+ // One-line notice surfaced (throttled) on every tool response after we
157
+ // self-heal away from a revoked configured key, so the user is told which
158
+ // stale file to clean up even though their run was NOT blocked.
159
+ let keyRecoveryNotice = null;
160
+ let lastKeyRecoveryNoticeAt = 0;
161
+ const KEY_RECOVERY_NOTICE_INTERVAL_MS = 5 * 60 * 1000;
150
162
  // Pre-warm the npx cache for the `codeloop` CLI in the background so
151
163
  // the user's terminal `npx codeloop update` matches the version they
152
164
  // just auto-got via Cursor / Claude Code's MCP-server refresh. Fully
@@ -249,7 +261,29 @@ async function withAuth(fn, tracker) {
249
261
  outcome = { success: true, result: r };
250
262
  return r;
251
263
  }
252
- const result = await validateApiKey(apiKey);
264
+ // Self-heal: validate the effective key, and if it's revoked, fall
265
+ // back to any ACTIVE key found elsewhere on disk (shell, PowerShell,
266
+ // any mcp.json env block, config.json). This makes the "stale
267
+ // hardcoded mcp.json key overrides my active key" trap non-blocking on
268
+ // every client × OS — as long as the user has one active key anywhere.
269
+ const resolved = await resolveActiveApiKey(effectiveApiKey, projectDir);
270
+ const result = resolved.result;
271
+ if (resolved.recovered) {
272
+ // Adopt the recovered key for the rest of this process and arm the
273
+ // (throttled) recovery notice so the user still cleans up the stale
274
+ // file even though their run wasn't blocked.
275
+ effectiveApiKey = resolved.key;
276
+ const loc = resolved.recovered.line
277
+ ? `${resolved.recovered.file} (line ${resolved.recovered.line})`
278
+ : resolved.recovered.file;
279
+ keyRecoveryNotice =
280
+ `⚠ CodeLoop key auto-recovered: your configured key (${resolved.recovered.stale_prefix}…) is REVOKED, ` +
281
+ `so CodeLoop is using an active key (${resolved.recovered.active_prefix}…) found in ${loc}. ` +
282
+ `Your run was NOT blocked, but please remove/replace the revoked key — it's most likely hardcoded in a ` +
283
+ `\`.cursor/mcp.json\` (or Claude/VS Code mcp config) \`env\` block that overrides your shell. ` +
284
+ `Update it to ${resolved.recovered.active_prefix}… (or delete the CODELOOP_API_KEY line) and reload the MCP server.`;
285
+ console.error(`[CodeLoop] ${keyRecoveryNotice}`);
286
+ }
253
287
  if (isActivationRequired(result)) {
254
288
  outcome = { success: false, result };
255
289
  return result;
@@ -259,11 +293,14 @@ async function withAuth(fn, tracker) {
259
293
  // key so the agent can tell the user EXACTLY which file +line to
260
294
  // edit (e.g. `~/.zshrc line 20`) instead of leaving them to guess.
261
295
  // We never include the key value itself, only its first 12 chars.
262
- const diag = buildRevokedKeyDiagnostic(identifyKeySource(apiKey, projectDir));
296
+ const diag = buildRevokedKeyDiagnostic(identifyKeySource(effectiveApiKey, projectDir));
297
+ const triedNote = resolved.tried_count && resolved.tried_count > 0
298
+ ? ` CodeLoop also tried ${resolved.tried_count} other key(s) found on disk — none were active.`
299
+ : "";
263
300
  const r = {
264
301
  error: true,
265
302
  status: result.status,
266
- message: `${result.message || "API key is invalid or expired."} ${diag.message}`,
303
+ message: `${result.message || "API key is invalid or expired."} ${diag.message}${triedNote}`,
267
304
  key_source: diag.source,
268
305
  fix_steps: diag.fix_steps,
269
306
  dashboard_url: "https://codeloop.tech/dashboard/keys",
@@ -431,6 +468,17 @@ function withInitHint(content, dir) {
431
468
  const banner = buildVersionBanner();
432
469
  const withUpdate = withUpdateNotice(content);
433
470
  const head = [];
471
+ // 0.1.64 — key self-heal notice. When CodeLoop recovered from a revoked
472
+ // configured key by using an active on-disk key, surface a throttled
473
+ // one-liner so the user still cleans up the stale config (their run was
474
+ // never blocked). Sits at the very top — it's the most actionable signal.
475
+ if (keyRecoveryNotice) {
476
+ const now = Date.now();
477
+ if (now - lastKeyRecoveryNoticeAt >= KEY_RECOVERY_NOTICE_INTERVAL_MS) {
478
+ lastKeyRecoveryNoticeAt = now;
479
+ head.push({ type: "text", text: keyRecoveryNotice });
480
+ }
481
+ }
434
482
  // Candidate dirs in priority order:
435
483
  // 1. Explicit `dir` arg from the call site (when the handler
436
484
  // bothered to thread it through — the verify / capture /