codeloop-mcp-server 0.1.63 → 0.1.65
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/auth/critical_floors.d.ts.map +1 -1
- package/dist/auth/critical_floors.js +8 -0
- package/dist/auth/critical_floors.js.map +1 -1
- package/dist/auth/key_resolver.d.ts +55 -0
- package/dist/auth/key_resolver.d.ts.map +1 -0
- package/dist/auth/key_resolver.js +41 -0
- package/dist/auth/key_resolver.js.map +1 -0
- package/dist/auth/key_source.d.ts +60 -4
- package/dist/auth/key_source.d.ts.map +1 -1
- package/dist/auth/key_source.js +281 -48
- package/dist/auth/key_source.js.map +1 -1
- package/dist/evidence/observability.d.ts +67 -0
- package/dist/evidence/observability.d.ts.map +1 -0
- package/dist/evidence/observability.js +57 -0
- package/dist/evidence/observability.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -5
- package/dist/index.js.map +1 -1
- package/dist/runners/app_logger.d.ts.map +1 -1
- package/dist/runners/app_logger.js +31 -3
- package/dist/runners/app_logger.js.map +1 -1
- package/dist/runners/logging_readiness.d.ts +72 -0
- package/dist/runners/logging_readiness.d.ts.map +1 -0
- package/dist/runners/logging_readiness.js +419 -0
- package/dist/runners/logging_readiness.js.map +1 -0
- package/dist/runners/modal_detector.d.ts +27 -7
- package/dist/runners/modal_detector.d.ts.map +1 -1
- package/dist/runners/modal_detector.js +124 -31
- package/dist/runners/modal_detector.js.map +1 -1
- package/dist/runners/remote_logs.d.ts +105 -0
- package/dist/runners/remote_logs.d.ts.map +1 -0
- package/dist/runners/remote_logs.js +336 -0
- package/dist/runners/remote_logs.js.map +1 -0
- package/dist/tools/gate_check.d.ts.map +1 -1
- package/dist/tools/gate_check.js +25 -0
- package/dist/tools/gate_check.js.map +1 -1
- package/dist/tools/interaction_replay.d.ts +18 -0
- package/dist/tools/interaction_replay.d.ts.map +1 -1
- package/dist/tools/interaction_replay.js +102 -1
- package/dist/tools/interaction_replay.js.map +1 -1
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +61 -5
- package/dist/tools/verify.js.map +1 -1
- 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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
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 {
|
|
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
|
-
|
|
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(
|
|
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 /
|
|
@@ -3920,7 +3968,12 @@ Wait 1-2 seconds between interactions so video frames capture state changes.`, {
|
|
|
3920
3968
|
"(3) if one is present call codeloop_handle_modal with the appropriate `decision` " +
|
|
3921
3969
|
"(\"confirm\" to proceed / \"cancel\" to abort / \"dismiss\" to close), and " +
|
|
3922
3970
|
"(4) only then continue the planned journey. " +
|
|
3923
|
-
"Do NOT skip modals \"to keep moving\" — an unhandled modal will block every subsequent click and the user_journey_evidence gate will block ready_for_review."
|
|
3971
|
+
"Do NOT skip modals \"to keep moving\" — an unhandled modal will block every subsequent click and the user_journey_evidence gate will block ready_for_review. " +
|
|
3972
|
+
// 0.1.65 H13 — a window-scoped capture (method "powershell (window: …)") renders ONLY
|
|
3973
|
+
// the named app window via PrintWindow, so a SEPARATE native dialog drawn on top of it
|
|
3974
|
+
// is invisible in that shot. A clean app-window screenshot is NOT proof there is no modal.
|
|
3975
|
+
"NOTE (desktop): a window-scoped screenshot does NOT render a separate native dialog (Win32/WPF MessageBox, OS file picker) drawn over the app — a clean app-window shot is NOT proof there is no modal. " +
|
|
3976
|
+
"If CodeLoop emits a [CodeLoop F4] modal directive below, or your click did not produce the expected effect, TRUST that and call codeloop_handle_modal (which detects via the Win32 owner-chain and clicks the dialog's button directly) rather than re-clicking the now-blocked control beneath the dialog.";
|
|
3924
3977
|
// 0.1.55 F4 — when desktop click-effect verification detected a
|
|
3925
3978
|
// modal that has now persisted across one or more interactions, the
|
|
3926
3979
|
// F4 directive is stronger than the soft H11 reminder. Append it
|