mthds 0.7.0 → 0.7.1
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/agent/commands/codex-config.js +16 -5
- package/dist/agent/commands/codex-config.js.map +1 -1
- package/dist/agent/snooze.d.ts +9 -7
- package/dist/agent/snooze.js +21 -24
- package/dist/agent/snooze.js.map +1 -1
- package/dist/agent/update-cache.d.ts +59 -9
- package/dist/agent/update-cache.js +272 -48
- package/dist/agent/update-cache.js.map +1 -1
- package/package.json +1 -1
|
@@ -335,7 +335,11 @@ export async function agentCodexApplyConfig(options = {}) {
|
|
|
335
335
|
const allWarnings = legacy.parse_error !== undefined
|
|
336
336
|
? [...warnings, legacyHookWarning(legacy.parse_error)]
|
|
337
337
|
: warnings;
|
|
338
|
-
|
|
338
|
+
// parse_error counts: a real apply against an unreadable hooks.json would
|
|
339
|
+
// surface a hard error, so dry-run must not report ALREADY_OK for it.
|
|
340
|
+
const wouldChange = changes.length > 0 ||
|
|
341
|
+
legacy.has_legacy_entry ||
|
|
342
|
+
legacy.parse_error !== undefined;
|
|
339
343
|
agentSuccess({
|
|
340
344
|
status: wouldChange ? "WOULD_APPLY" : "ALREADY_OK",
|
|
341
345
|
config_file: file,
|
|
@@ -365,16 +369,23 @@ export async function agentCodexApplyConfig(options = {}) {
|
|
|
365
369
|
}
|
|
366
370
|
}
|
|
367
371
|
const removal = removeLegacyCodexHook();
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
372
|
+
// A hooks.json we cannot read/parse leaves us unable to confirm no obsolete
|
|
373
|
+
// entry double-fires the validation hook. `apply-config --check` already
|
|
374
|
+
// treats that as a hard failure, so the apply path must too — otherwise the
|
|
375
|
+
// two modes report opposite verdicts (and opposite exit codes) for the same
|
|
376
|
+
// state. Required config.toml keys, if any, were already written above, so
|
|
377
|
+
// re-running converges the config and only this hand-fixable issue remains.
|
|
378
|
+
if (removal.status === "error") {
|
|
379
|
+
agentError(legacyHookWarning(removal.error ?? `Failed to update ${removal.hooks_file}`).message, "ConfigError", { error_domain: AGENT_ERROR_DOMAINS.CONFIG });
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
371
382
|
const didChange = changes.length > 0 || removal.status === "removed";
|
|
372
383
|
agentSuccess({
|
|
373
384
|
status: didChange ? "APPLIED" : "ALREADY_OK",
|
|
374
385
|
config_file: file,
|
|
375
386
|
applied: changes,
|
|
376
387
|
legacy_hook: { hooks_file: removal.hooks_file, status: removal.status },
|
|
377
|
-
warnings
|
|
388
|
+
warnings,
|
|
378
389
|
});
|
|
379
390
|
}
|
|
380
391
|
//# sourceMappingURL=codex-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-config.js","sourceRoot":"","sources":["../../../src/agent/commands/codex-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-config.js","sourceRoot":"","sources":["../../../src/agent/commands/codex-config.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/snooze.d.ts
CHANGED
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
* <versionKey> <level> <epoch>
|
|
6
6
|
*
|
|
7
7
|
* Primary location: ~/.mthds/state/update-snoozed.
|
|
8
|
-
* Fallback location: $TMPDIR/mthds-agent
|
|
8
|
+
* Fallback location: $TMPDIR/mthds-agent-<uid>/update-snoozed — used when the
|
|
9
9
|
* primary location is not writable (Codex `workspaceWrite` sandbox permits
|
|
10
10
|
* writes only under cwd / configured roots / $TMPDIR, not under the user's
|
|
11
11
|
* home dir). Same dual-path policy as the update-check cache and the
|
|
12
|
-
* just-upgraded marker
|
|
12
|
+
* just-upgraded marker, including the symlink/TOCTOU hardening of the
|
|
13
|
+
* fallback directory — see update-cache.ts.
|
|
13
14
|
*
|
|
14
15
|
* Reads consult both paths and prefer the newer mtime, so escalation
|
|
15
16
|
* (level 1 → 2 → 3+) stays correct as sessions move between sandboxed and
|
|
@@ -49,10 +50,11 @@ export declare function writeSnooze(versionKey: string): void;
|
|
|
49
50
|
/** Check if snooze is active for the given versionKey. */
|
|
50
51
|
export declare function isSnoozed(versionKey: string): boolean;
|
|
51
52
|
/**
|
|
52
|
-
* Clear snooze. Hits
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* spurious 0-byte file
|
|
53
|
+
* Clear snooze. Hits the primary path and — when its directory passes the
|
|
54
|
+
* hardening check — the fallback path. When unlink is blocked (sandbox EPERM),
|
|
55
|
+
* overwrites with empty content so the next read parses as null. Warns at most
|
|
56
|
+
* once per process when a present file cannot be cleared by either route.
|
|
57
|
+
* Silent when both paths were absent to begin with — no spurious 0-byte file
|
|
58
|
+
* is created in that case.
|
|
57
59
|
*/
|
|
58
60
|
export declare function clearSnooze(): void;
|
package/dist/agent/snooze.js
CHANGED
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
* <versionKey> <level> <epoch>
|
|
6
6
|
*
|
|
7
7
|
* Primary location: ~/.mthds/state/update-snoozed.
|
|
8
|
-
* Fallback location: $TMPDIR/mthds-agent
|
|
8
|
+
* Fallback location: $TMPDIR/mthds-agent-<uid>/update-snoozed — used when the
|
|
9
9
|
* primary location is not writable (Codex `workspaceWrite` sandbox permits
|
|
10
10
|
* writes only under cwd / configured roots / $TMPDIR, not under the user's
|
|
11
11
|
* home dir). Same dual-path policy as the update-check cache and the
|
|
12
|
-
* just-upgraded marker
|
|
12
|
+
* just-upgraded marker, including the symlink/TOCTOU hardening of the
|
|
13
|
+
* fallback directory — see update-cache.ts.
|
|
13
14
|
*
|
|
14
15
|
* Reads consult both paths and prefer the newer mtime, so escalation
|
|
15
16
|
* (level 1 → 2 → 3+) stays correct as sessions move between sandboxed and
|
|
@@ -21,12 +22,9 @@
|
|
|
21
22
|
*/
|
|
22
23
|
import { join } from "node:path";
|
|
23
24
|
import { readFileSync, statSync, existsSync } from "node:fs";
|
|
24
|
-
import {
|
|
25
|
-
import { SANDBOX_WRITE_ERRORS, writeFileAt, invalidateFileAt, } from "./update-cache.js";
|
|
25
|
+
import { MS_PER_MINUTE, STATE_DIR, FALLBACK_DIR, ensureFallbackDir, writeWithFallback, invalidateFileAt, } from "./update-cache.js";
|
|
26
26
|
// ── Constants ──────────────────────────────────────────────────────
|
|
27
|
-
const STATE_DIR = join(homedir(), ".mthds", "state");
|
|
28
27
|
const PRIMARY_SNOOZE_PATH = join(STATE_DIR, "update-snoozed");
|
|
29
|
-
const FALLBACK_DIR = join(tmpdir(), "mthds-agent");
|
|
30
28
|
const FALLBACK_SNOOZE_PATH = join(FALLBACK_DIR, "update-snoozed");
|
|
31
29
|
const SNOOZE_DURATIONS_MS = {
|
|
32
30
|
1: 24 * 60 * 60 * 1000, // 24h
|
|
@@ -102,7 +100,9 @@ function readSnoozeAt(path) {
|
|
|
102
100
|
*/
|
|
103
101
|
export function readSnooze() {
|
|
104
102
|
const primary = readSnoozeAt(PRIMARY_SNOOZE_PATH);
|
|
105
|
-
const fallback =
|
|
103
|
+
const fallback = ensureFallbackDir(false).usable
|
|
104
|
+
? readSnoozeAt(FALLBACK_SNOOZE_PATH)
|
|
105
|
+
: null;
|
|
106
106
|
if (!primary)
|
|
107
107
|
return fallback?.state ?? null;
|
|
108
108
|
if (!fallback)
|
|
@@ -118,17 +118,10 @@ export function writeSnooze(versionKey) {
|
|
|
118
118
|
const existing = readSnooze();
|
|
119
119
|
const level = existing && existing.versionKey === versionKey ? existing.level + 1 : 1;
|
|
120
120
|
const content = `${versionKey} ${level} ${Date.now()}\n`;
|
|
121
|
-
const
|
|
122
|
-
if (
|
|
121
|
+
const res = writeWithFallback(STATE_DIR, PRIMARY_SNOOZE_PATH, FALLBACK_SNOOZE_PATH, content);
|
|
122
|
+
if (res.ok)
|
|
123
123
|
return;
|
|
124
|
-
|
|
125
|
-
const fallback = writeFileAt(FALLBACK_DIR, FALLBACK_SNOOZE_PATH, content);
|
|
126
|
-
if (fallback.ok)
|
|
127
|
-
return;
|
|
128
|
-
emitSnoozeWriteWarning(primary.code, fallback.code);
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
emitSnoozeWriteWarning(primary.code);
|
|
124
|
+
emitSnoozeWriteWarning(res.code, res.fallbackCode);
|
|
132
125
|
}
|
|
133
126
|
function emitSnoozeWriteWarning(primaryCode, fallbackCode) {
|
|
134
127
|
if (warnedAboutSnoozeWrite)
|
|
@@ -150,18 +143,22 @@ export function isSnoozed(versionKey) {
|
|
|
150
143
|
const duration = SNOOZE_DURATIONS_MS[state.level] ?? SNOOZE_DEFAULT_MS;
|
|
151
144
|
const elapsed = Date.now() - state.epoch;
|
|
152
145
|
// Negative elapsed beyond 1 minute means clock skew — treat snooze as expired
|
|
153
|
-
return elapsed >= -
|
|
146
|
+
return elapsed >= -MS_PER_MINUTE && elapsed < duration;
|
|
154
147
|
}
|
|
155
148
|
/**
|
|
156
|
-
* Clear snooze. Hits
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
* spurious 0-byte file
|
|
149
|
+
* Clear snooze. Hits the primary path and — when its directory passes the
|
|
150
|
+
* hardening check — the fallback path. When unlink is blocked (sandbox EPERM),
|
|
151
|
+
* overwrites with empty content so the next read parses as null. Warns at most
|
|
152
|
+
* once per process when a present file cannot be cleared by either route.
|
|
153
|
+
* Silent when both paths were absent to begin with — no spurious 0-byte file
|
|
154
|
+
* is created in that case.
|
|
161
155
|
*/
|
|
162
156
|
export function clearSnooze() {
|
|
163
157
|
let blocked = false;
|
|
164
|
-
|
|
158
|
+
const paths = [PRIMARY_SNOOZE_PATH];
|
|
159
|
+
if (ensureFallbackDir(false).usable)
|
|
160
|
+
paths.push(FALLBACK_SNOOZE_PATH);
|
|
161
|
+
for (const path of paths) {
|
|
165
162
|
if (!existsSync(path))
|
|
166
163
|
continue;
|
|
167
164
|
if (!invalidateFileAt(path))
|
package/dist/agent/snooze.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snooze.js","sourceRoot":"","sources":["../../src/agent/snooze.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"snooze.js","sourceRoot":"","sources":["../../src/agent/snooze.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
* Cache for update-check results, plus the just-upgraded marker.
|
|
3
3
|
*
|
|
4
4
|
* Primary location: ~/.mthds/state/.
|
|
5
|
-
* Fallback location: $TMPDIR/mthds-agent
|
|
6
|
-
* not writable (e.g. Codex's workspaceWrite sandbox permits writes
|
|
7
|
-
* cwd / configured roots / $TMPDIR, not under the user's home dir).
|
|
5
|
+
* Fallback location: $TMPDIR/mthds-agent-<uid>/ — used when the primary
|
|
6
|
+
* location is not writable (e.g. Codex's workspaceWrite sandbox permits writes
|
|
7
|
+
* only under cwd / configured roots / $TMPDIR, not under the user's home dir).
|
|
8
|
+
* The fallback path is predictable, so it is validated against symlink/TOCTOU
|
|
9
|
+
* tampering before use — see `ensureFallbackDir`.
|
|
8
10
|
*
|
|
9
11
|
* Two files live in each location:
|
|
10
12
|
*
|
|
@@ -40,9 +42,38 @@ export interface CacheResult {
|
|
|
40
42
|
aggregate: AggregateStatus;
|
|
41
43
|
payload: CachePayload;
|
|
42
44
|
}
|
|
45
|
+
/** Why the fallback directory is or isn't usable. The `symlink`,
|
|
46
|
+
* `foreign-owner`, `not-a-dir`, and `insecure-tmp` reasons are *suspicious*
|
|
47
|
+
* (possible tampering) and trigger a one-shot warning; `absent`/`error` are
|
|
48
|
+
* benign (the dir simply isn't there yet, or a transient FS error). */
|
|
49
|
+
export type FallbackDirReason = "ok" | "absent" | "symlink" | "foreign-owner" | "not-a-dir" | "insecure-tmp" | "error";
|
|
50
|
+
export interface FallbackDirStatus {
|
|
51
|
+
usable: boolean;
|
|
52
|
+
reason: FallbackDirReason;
|
|
53
|
+
}
|
|
54
|
+
/** One minute in milliseconds. Base unit for the TTLs below and for the
|
|
55
|
+
* clock-skew tolerance applied when comparing file mtimes to the wall clock. */
|
|
56
|
+
export declare const MS_PER_MINUTE = 60000;
|
|
57
|
+
/** Primary state directory (~/.mthds/state). Exported so snooze.ts shares the
|
|
58
|
+
* same dual-path layout from a single source of truth. */
|
|
59
|
+
export declare const STATE_DIR: string;
|
|
60
|
+
/** Fallback state directory, used when STATE_DIR is not writable (Codex's
|
|
61
|
+
* workspaceWrite sandbox). The name carries the current uid so that multiple
|
|
62
|
+
* users on a shared host never collide on ownership — an unsuffixed name
|
|
63
|
+
* created by user A would fail user B's ownership check and permanently deny
|
|
64
|
+
* them the fallback. Exported for snooze.ts. */
|
|
65
|
+
export declare const FALLBACK_DIR: string;
|
|
43
66
|
export declare const SANDBOX_WRITE_ERRORS: ReadonlySet<string>;
|
|
44
67
|
/** Compute aggregate status from a payload. */
|
|
45
68
|
export declare function computeAggregate(payload: CachePayload): AggregateStatus;
|
|
69
|
+
/**
|
|
70
|
+
* Validate — and, when `create` is true, create — the per-uid fallback
|
|
71
|
+
* directory. Returns whether it is safe to read or write state files inside
|
|
72
|
+
* it; callers skip the fallback path entirely on `{usable: false}`.
|
|
73
|
+
*
|
|
74
|
+
* Exported so snooze.ts gates its own fallback access through the same check.
|
|
75
|
+
*/
|
|
76
|
+
export declare function ensureFallbackDir(create: boolean): FallbackDirStatus;
|
|
46
77
|
/**
|
|
47
78
|
* Read the update-check cache.
|
|
48
79
|
*
|
|
@@ -58,12 +89,29 @@ export interface WriteAttempt {
|
|
|
58
89
|
code?: string;
|
|
59
90
|
}
|
|
60
91
|
/**
|
|
61
|
-
* Best-effort `mkdir -p` + `writeFile
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
92
|
+
* Best-effort `mkdir -p` + `writeFile` for the PRIMARY state directory
|
|
93
|
+
* (~/.mthds/state, under $HOME — not a shared-/tmp attack surface). Returns
|
|
94
|
+
* `{ok: true}` on success, or `{ok: false, code}` on any failure (errno code
|
|
95
|
+
* if available, else stringified error). Callers decide whether to retry on
|
|
96
|
+
* the fallback path based on `code` — see `SANDBOX_WRITE_ERRORS`. The fallback
|
|
97
|
+
* directory has its own hardened path; see `ensureFallbackDir`.
|
|
65
98
|
*/
|
|
66
99
|
export declare function writeFileAt(dir: string, file: string, content: string): WriteAttempt;
|
|
100
|
+
/**
|
|
101
|
+
* Write `content` to `primaryPath`; on a sandbox/permission failure (see
|
|
102
|
+
* `SANDBOX_WRITE_ERRORS`) retry once at `fallbackPath` inside the hardened
|
|
103
|
+
* fallback directory. Other failure classes (ENOSPC, IO errors) are not
|
|
104
|
+
* improved by retrying elsewhere, so they are reported without a fallback
|
|
105
|
+
* attempt. The single owner of the try-primary-then-fallback policy shared by
|
|
106
|
+
* the cache, marker, and snooze writers — callers only supply their own
|
|
107
|
+
* one-shot warning text.
|
|
108
|
+
*
|
|
109
|
+
* `fallbackPath` must be a file inside `FALLBACK_DIR`; the directory is
|
|
110
|
+
* created/validated here via `ensureFallbackDir`.
|
|
111
|
+
*/
|
|
112
|
+
export declare function writeWithFallback(primaryDir: string, primaryPath: string, fallbackPath: string, content: string): WriteAttempt & {
|
|
113
|
+
fallbackCode?: string;
|
|
114
|
+
};
|
|
67
115
|
/**
|
|
68
116
|
* Write cache. Tries the primary path first; on sandbox / permission failures
|
|
69
117
|
* falls back to $TMPDIR. Both failing emits at most one warning per process.
|
|
@@ -81,8 +129,10 @@ export declare function writeUpgradeMarker(data: Record<string, unknown>): void;
|
|
|
81
129
|
* Best-effort invalidation. unlinkSync first (the desired outcome); if that
|
|
82
130
|
* fails — typically EPERM under the sandbox — overwrite with empty content so
|
|
83
131
|
* the next read parses as invalid (empty content fails JSON.parse and is also
|
|
84
|
-
* rejected by the single-line snooze parser).
|
|
85
|
-
*
|
|
132
|
+
* rejected by the single-line snooze parser). The overwrite goes through
|
|
133
|
+
* `writeFileNoFollow`, so a symlink swapped in for the file is rejected
|
|
134
|
+
* (`ELOOP`) and reported as a failed invalidation rather than followed.
|
|
135
|
+
* Returns true when the file is either gone or guaranteed unparseable.
|
|
86
136
|
*/
|
|
87
137
|
export declare function invalidateFileAt(path: string): boolean;
|
|
88
138
|
/**
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
* Cache for update-check results, plus the just-upgraded marker.
|
|
3
3
|
*
|
|
4
4
|
* Primary location: ~/.mthds/state/.
|
|
5
|
-
* Fallback location: $TMPDIR/mthds-agent
|
|
6
|
-
* not writable (e.g. Codex's workspaceWrite sandbox permits writes
|
|
7
|
-
* cwd / configured roots / $TMPDIR, not under the user's home dir).
|
|
5
|
+
* Fallback location: $TMPDIR/mthds-agent-<uid>/ — used when the primary
|
|
6
|
+
* location is not writable (e.g. Codex's workspaceWrite sandbox permits writes
|
|
7
|
+
* only under cwd / configured roots / $TMPDIR, not under the user's home dir).
|
|
8
|
+
* The fallback path is predictable, so it is validated against symlink/TOCTOU
|
|
9
|
+
* tampering before use — see `ensureFallbackDir`.
|
|
8
10
|
*
|
|
9
11
|
* Two files live in each location:
|
|
10
12
|
*
|
|
@@ -22,21 +24,43 @@
|
|
|
22
24
|
*/
|
|
23
25
|
import { join } from "node:path";
|
|
24
26
|
import { homedir, tmpdir } from "node:os";
|
|
25
|
-
import { mkdirSync, readFileSync, writeFileSync, unlinkSync, statSync, } from "node:fs";
|
|
27
|
+
import { mkdirSync, chmodSync, readFileSync, writeFileSync, unlinkSync, statSync, lstatSync, openSync, closeSync, constants as fsConstants, } from "node:fs";
|
|
26
28
|
// ── Constants ──────────────────────────────────────────────────────
|
|
27
|
-
|
|
29
|
+
/** One minute in milliseconds. Base unit for the TTLs below and for the
|
|
30
|
+
* clock-skew tolerance applied when comparing file mtimes to the wall clock. */
|
|
31
|
+
export const MS_PER_MINUTE = 60_000;
|
|
32
|
+
/** Primary state directory (~/.mthds/state). Exported so snooze.ts shares the
|
|
33
|
+
* same dual-path layout from a single source of truth. */
|
|
34
|
+
export const STATE_DIR = join(homedir(), ".mthds", "state");
|
|
35
|
+
/** uid of the current process, or null on Windows where `process.getuid` is
|
|
36
|
+
* absent. The /tmp symlink/TOCTOU hardening is POSIX-specific; on Windows the
|
|
37
|
+
* fallback keeps the legacy unsuffixed name and skips the strict checks. */
|
|
38
|
+
const FALLBACK_UID = typeof process.getuid === "function" ? process.getuid() : null;
|
|
39
|
+
/** Fallback state directory, used when STATE_DIR is not writable (Codex's
|
|
40
|
+
* workspaceWrite sandbox). The name carries the current uid so that multiple
|
|
41
|
+
* users on a shared host never collide on ownership — an unsuffixed name
|
|
42
|
+
* created by user A would fail user B's ownership check and permanently deny
|
|
43
|
+
* them the fallback. Exported for snooze.ts. */
|
|
44
|
+
export const FALLBACK_DIR = join(tmpdir(), FALLBACK_UID === null ? "mthds-agent" : `mthds-agent-${FALLBACK_UID}`);
|
|
45
|
+
/** O_NOFOLLOW makes a write refuse a symlink as the final path component
|
|
46
|
+
* (throws ELOOP) rather than following it. Undefined on Windows — `?? 0`
|
|
47
|
+
* makes it a no-op there. */
|
|
48
|
+
const O_NOFOLLOW = fsConstants.O_NOFOLLOW ?? 0;
|
|
49
|
+
/** Flags for a create-or-truncate write — equivalent to the default `"w"`
|
|
50
|
+
* (O_WRONLY|O_CREAT|O_TRUNC) plus O_NOFOLLOW, so a hijacked leaf symlink is
|
|
51
|
+
* rejected instead of followed. */
|
|
52
|
+
const WRITE_FLAGS = fsConstants.O_WRONLY | fsConstants.O_CREAT | fsConstants.O_TRUNC | O_NOFOLLOW;
|
|
28
53
|
const PRIMARY_CACHE_PATH = join(STATE_DIR, "last-update-check");
|
|
29
54
|
const PRIMARY_MARKER_PATH = join(STATE_DIR, "just-upgraded-from");
|
|
30
|
-
const FALLBACK_DIR = join(tmpdir(), "mthds-agent");
|
|
31
55
|
const FALLBACK_CACHE_PATH = join(FALLBACK_DIR, "last-update-check");
|
|
32
56
|
const FALLBACK_MARKER_PATH = join(FALLBACK_DIR, "just-upgraded-from");
|
|
33
|
-
const TTL_UP_TO_DATE_MS = 60 *
|
|
34
|
-
const TTL_UPGRADE_AVAILABLE_MS = 720 *
|
|
57
|
+
const TTL_UP_TO_DATE_MS = 60 * MS_PER_MINUTE; // 60 min
|
|
58
|
+
const TTL_UPGRADE_AVAILABLE_MS = 720 * MS_PER_MINUTE; // 720 min (12 hours)
|
|
35
59
|
// Real markers are consumed within seconds (skill flow re-runs preamble
|
|
36
60
|
// immediately after upgrade). Anything markedly older is almost certainly
|
|
37
61
|
// stuck because the sandbox blocked cleanup last time — ignore it instead of
|
|
38
62
|
// replaying the announcement on every update-check.
|
|
39
|
-
const MARKER_TTL_MS = 60 *
|
|
63
|
+
const MARKER_TTL_MS = 60 * MS_PER_MINUTE; // 60 min
|
|
40
64
|
const VALID_AGGREGATES = new Set([
|
|
41
65
|
"UP_TO_DATE",
|
|
42
66
|
"UPGRADE_AVAILABLE",
|
|
@@ -46,6 +70,15 @@ export const SANDBOX_WRITE_ERRORS = new Set([
|
|
|
46
70
|
"EACCES",
|
|
47
71
|
"EROFS",
|
|
48
72
|
]);
|
|
73
|
+
/** Fallback-dir refusal reasons that indicate possible tampering (as opposed
|
|
74
|
+
* to a benign "not there yet" / transient error). These get a one-shot
|
|
75
|
+
* warning and a `unsafe:` prefix in the write-failure detail. */
|
|
76
|
+
const SUSPICIOUS_REASONS = new Set([
|
|
77
|
+
"symlink",
|
|
78
|
+
"foreign-owner",
|
|
79
|
+
"not-a-dir",
|
|
80
|
+
"insecure-tmp",
|
|
81
|
+
]);
|
|
49
82
|
// ── Validation ──────────────────────────────────────────────────────
|
|
50
83
|
function isValidPayload(p) {
|
|
51
84
|
if (!p || typeof p !== "object")
|
|
@@ -81,6 +114,7 @@ function isValidPayload(p) {
|
|
|
81
114
|
let warnedAboutCacheWrite = false;
|
|
82
115
|
let warnedAboutMarkerWrite = false;
|
|
83
116
|
let warnedAboutMarkerClear = false;
|
|
117
|
+
let warnedAboutFallbackUnsafe = false;
|
|
84
118
|
// ── Functions ──────────────────────────────────────────────────────
|
|
85
119
|
/** Compute aggregate status from a payload. */
|
|
86
120
|
export function computeAggregate(payload) {
|
|
@@ -96,6 +130,145 @@ export function computeAggregate(payload) {
|
|
|
96
130
|
? "UP_TO_DATE"
|
|
97
131
|
: "UPGRADE_AVAILABLE";
|
|
98
132
|
}
|
|
133
|
+
// ── Fallback directory hardening ────────────────────────────────────
|
|
134
|
+
//
|
|
135
|
+
// $TMPDIR/mthds-agent-<uid> is a predictable path on a shared, world-writable
|
|
136
|
+
// /tmp. A *different-uid* local attacker could pre-create it as a symlink, or
|
|
137
|
+
// as a directory they own, so that our writes land somewhere they control or
|
|
138
|
+
// our chmod follows a symlink. `ensureFallbackDir` closes this: once we hold a
|
|
139
|
+
// real directory we own at mode 0o700 under a sticky parent, that attacker can
|
|
140
|
+
// neither rename/delete/swap it (sticky bit) nor enter it (0o700) — so it
|
|
141
|
+
// stays safe for the rest of the process, and the result is memoized.
|
|
142
|
+
//
|
|
143
|
+
// NOT defended: a *same-uid* attacker (a compromised sibling process). POSIX
|
|
144
|
+
// permissions cannot defend a uid against itself. O_NOFOLLOW on every fallback
|
|
145
|
+
// file write (see `writeFileNoFollow`) is the per-operation backstop there.
|
|
146
|
+
/** Memoized sticky outcome: a validated-safe directory or a suspicious
|
|
147
|
+
* refusal. A benign `absent`/`error` is never memoized — a later call may
|
|
148
|
+
* legitimately create the directory, or the transient error may clear. */
|
|
149
|
+
let fallbackDirMemo = null;
|
|
150
|
+
function memoizeFallback(status) {
|
|
151
|
+
fallbackDirMemo = status;
|
|
152
|
+
return status;
|
|
153
|
+
}
|
|
154
|
+
function refuseFallback(reason) {
|
|
155
|
+
emitFallbackUnsafeWarning(reason);
|
|
156
|
+
return memoizeFallback({ usable: false, reason });
|
|
157
|
+
}
|
|
158
|
+
function emitFallbackUnsafeWarning(reason) {
|
|
159
|
+
if (warnedAboutFallbackUnsafe)
|
|
160
|
+
return;
|
|
161
|
+
warnedAboutFallbackUnsafe = true;
|
|
162
|
+
const why = {
|
|
163
|
+
symlink: "it is a symlink (possible tampering)",
|
|
164
|
+
"foreign-owner": "it is owned by another user (possible tampering)",
|
|
165
|
+
"not-a-dir": "it exists but is not a directory",
|
|
166
|
+
"insecure-tmp": `its parent ${tmpdir()} is world-writable without the sticky bit`,
|
|
167
|
+
};
|
|
168
|
+
process.stderr.write(`Warning: refusing fallback state directory ${FALLBACK_DIR} — ${why[reason] ?? reason}. Update state will not be cached this run.\n`);
|
|
169
|
+
}
|
|
170
|
+
/** Validate an already-existing FALLBACK_DIR via `lstatSync` (which does not
|
|
171
|
+
* follow a symlinked leaf). Owned-but-loose permissions are corrected in
|
|
172
|
+
* place; anything else suspicious is refused. */
|
|
173
|
+
function validateExistingFallbackDir() {
|
|
174
|
+
let st;
|
|
175
|
+
try {
|
|
176
|
+
st = lstatSync(FALLBACK_DIR);
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
// ENOENT on a read-only (create:false) probe just means "nothing cached".
|
|
180
|
+
if (err.code === "ENOENT") {
|
|
181
|
+
return { usable: false, reason: "absent" };
|
|
182
|
+
}
|
|
183
|
+
return { usable: false, reason: "error" };
|
|
184
|
+
}
|
|
185
|
+
if (st.isSymbolicLink())
|
|
186
|
+
return refuseFallback("symlink");
|
|
187
|
+
if (!st.isDirectory())
|
|
188
|
+
return refuseFallback("not-a-dir");
|
|
189
|
+
if (st.uid !== FALLBACK_UID)
|
|
190
|
+
return refuseFallback("foreign-owner");
|
|
191
|
+
// Owned by us but group/other have access (e.g. created by a version before
|
|
192
|
+
// the 0o700 hardening). chmod it back and re-check rather than refuse.
|
|
193
|
+
if ((st.mode & 0o077) !== 0) {
|
|
194
|
+
try {
|
|
195
|
+
chmodSync(FALLBACK_DIR, 0o700);
|
|
196
|
+
if ((lstatSync(FALLBACK_DIR).mode & 0o077) !== 0) {
|
|
197
|
+
return { usable: false, reason: "error" };
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return { usable: false, reason: "error" };
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return memoizeFallback({ usable: true, reason: "ok" });
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Validate — and, when `create` is true, create — the per-uid fallback
|
|
208
|
+
* directory. Returns whether it is safe to read or write state files inside
|
|
209
|
+
* it; callers skip the fallback path entirely on `{usable: false}`.
|
|
210
|
+
*
|
|
211
|
+
* Exported so snooze.ts gates its own fallback access through the same check.
|
|
212
|
+
*/
|
|
213
|
+
export function ensureFallbackDir(create) {
|
|
214
|
+
if (fallbackDirMemo)
|
|
215
|
+
return fallbackDirMemo;
|
|
216
|
+
// Windows: process.getuid is absent and the /tmp symlink class of attack is
|
|
217
|
+
// POSIX-specific (%TEMP% is per-user). Keep the legacy behavior — create on
|
|
218
|
+
// demand, no strict checks — and do not memoize, so a later create:true
|
|
219
|
+
// still makes the directory after an earlier create:false probe.
|
|
220
|
+
if (FALLBACK_UID === null) {
|
|
221
|
+
if (create) {
|
|
222
|
+
try {
|
|
223
|
+
mkdirSync(FALLBACK_DIR, { recursive: true, mode: 0o700 });
|
|
224
|
+
return { usable: true, reason: "ok" };
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
return { usable: false, reason: "error" };
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
try {
|
|
231
|
+
lstatSync(FALLBACK_DIR);
|
|
232
|
+
return { usable: true, reason: "ok" };
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
return { usable: false, reason: "absent" };
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// Parent check: a world-writable $TMPDIR without the sticky bit lets a
|
|
239
|
+
// different-uid attacker rename our directory out from under us; a symlinked
|
|
240
|
+
// $TMPDIR redirects everything. lstatSync (not statSync) so a symlinked
|
|
241
|
+
// tmpdir is seen as a symlink, not as its target.
|
|
242
|
+
try {
|
|
243
|
+
const parent = lstatSync(tmpdir());
|
|
244
|
+
if (parent.isSymbolicLink() || !parent.isDirectory()) {
|
|
245
|
+
return refuseFallback("insecure-tmp");
|
|
246
|
+
}
|
|
247
|
+
const worldWritable = (parent.mode & 0o002) !== 0;
|
|
248
|
+
const sticky = (parent.mode & 0o1000) !== 0;
|
|
249
|
+
if (worldWritable && !sticky)
|
|
250
|
+
return refuseFallback("insecure-tmp");
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
return { usable: false, reason: "error" };
|
|
254
|
+
}
|
|
255
|
+
// Atomic create: a non-recursive mkdir either makes a fresh 0o700 directory
|
|
256
|
+
// we own, or throws EEXIST for ANY pre-existing entry (real dir, symlink, or
|
|
257
|
+
// file alike — so an lstat must follow to tell them apart).
|
|
258
|
+
if (create) {
|
|
259
|
+
try {
|
|
260
|
+
mkdirSync(FALLBACK_DIR, { mode: 0o700 });
|
|
261
|
+
return memoizeFallback({ usable: true, reason: "ok" });
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
if (err.code !== "EEXIST") {
|
|
265
|
+
return { usable: false, reason: "error" };
|
|
266
|
+
}
|
|
267
|
+
// EEXIST — fall through to validate what is already there.
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return validateExistingFallbackDir();
|
|
271
|
+
}
|
|
99
272
|
/** Read a cache file at the given path. Returns null on any failure. */
|
|
100
273
|
function readCacheAt(path) {
|
|
101
274
|
let mtimeMs;
|
|
@@ -126,7 +299,7 @@ function readCacheAt(path) {
|
|
|
126
299
|
const ttl = aggregate === "UP_TO_DATE" ? TTL_UP_TO_DATE_MS : TTL_UPGRADE_AVAILABLE_MS;
|
|
127
300
|
const age = Date.now() - mtimeMs;
|
|
128
301
|
// Negative age beyond 1 minute means clock skew — treat as expired
|
|
129
|
-
if (age < -
|
|
302
|
+
if (age < -MS_PER_MINUTE || age > ttl)
|
|
130
303
|
return null;
|
|
131
304
|
return {
|
|
132
305
|
result: { aggregate: aggregate, payload },
|
|
@@ -144,7 +317,9 @@ function readCacheAt(path) {
|
|
|
144
317
|
*/
|
|
145
318
|
export function readCache() {
|
|
146
319
|
const primary = readCacheAt(PRIMARY_CACHE_PATH);
|
|
147
|
-
const fallback =
|
|
320
|
+
const fallback = ensureFallbackDir(false).usable
|
|
321
|
+
? readCacheAt(FALLBACK_CACHE_PATH)
|
|
322
|
+
: null;
|
|
148
323
|
if (!primary)
|
|
149
324
|
return fallback?.result ?? null;
|
|
150
325
|
if (!fallback)
|
|
@@ -154,15 +329,37 @@ export function readCache() {
|
|
|
154
329
|
: primary.result;
|
|
155
330
|
}
|
|
156
331
|
/**
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
332
|
+
* Write `content` to `file` without following a symlinked leaf. The file is
|
|
333
|
+
* opened with O_NOFOLLOW (so a symlink planted as the final path component
|
|
334
|
+
* throws `ELOOP` instead of redirecting the write) at an owner-only mode; the
|
|
335
|
+
* write goes through the fd via `writeFileSync` (which handles partial
|
|
336
|
+
* writes), and the fd is always closed.
|
|
337
|
+
*/
|
|
338
|
+
function writeFileNoFollow(file, content) {
|
|
339
|
+
const fd = openSync(file, WRITE_FLAGS, 0o600);
|
|
340
|
+
try {
|
|
341
|
+
writeFileSync(fd, content);
|
|
342
|
+
}
|
|
343
|
+
finally {
|
|
344
|
+
closeSync(fd);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Best-effort `mkdir -p` + `writeFile` for the PRIMARY state directory
|
|
349
|
+
* (~/.mthds/state, under $HOME — not a shared-/tmp attack surface). Returns
|
|
350
|
+
* `{ok: true}` on success, or `{ok: false, code}` on any failure (errno code
|
|
351
|
+
* if available, else stringified error). Callers decide whether to retry on
|
|
352
|
+
* the fallback path based on `code` — see `SANDBOX_WRITE_ERRORS`. The fallback
|
|
353
|
+
* directory has its own hardened path; see `ensureFallbackDir`.
|
|
161
354
|
*/
|
|
162
355
|
export function writeFileAt(dir, file, content) {
|
|
163
356
|
try {
|
|
164
|
-
mkdirSync
|
|
165
|
-
|
|
357
|
+
// mode 0o700 is honored only when mkdirSync creates the directory, so
|
|
358
|
+
// chmodSync re-asserts it on every write — correcting a directory left
|
|
359
|
+
// loose by an older version.
|
|
360
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
361
|
+
chmodSync(dir, 0o700);
|
|
362
|
+
writeFileNoFollow(file, content);
|
|
166
363
|
return { ok: true };
|
|
167
364
|
}
|
|
168
365
|
catch (err) {
|
|
@@ -170,26 +367,51 @@ export function writeFileAt(dir, file, content) {
|
|
|
170
367
|
return { ok: false, code };
|
|
171
368
|
}
|
|
172
369
|
}
|
|
370
|
+
/**
|
|
371
|
+
* Write `content` to `primaryPath`; on a sandbox/permission failure (see
|
|
372
|
+
* `SANDBOX_WRITE_ERRORS`) retry once at `fallbackPath` inside the hardened
|
|
373
|
+
* fallback directory. Other failure classes (ENOSPC, IO errors) are not
|
|
374
|
+
* improved by retrying elsewhere, so they are reported without a fallback
|
|
375
|
+
* attempt. The single owner of the try-primary-then-fallback policy shared by
|
|
376
|
+
* the cache, marker, and snooze writers — callers only supply their own
|
|
377
|
+
* one-shot warning text.
|
|
378
|
+
*
|
|
379
|
+
* `fallbackPath` must be a file inside `FALLBACK_DIR`; the directory is
|
|
380
|
+
* created/validated here via `ensureFallbackDir`.
|
|
381
|
+
*/
|
|
382
|
+
export function writeWithFallback(primaryDir, primaryPath, fallbackPath, content) {
|
|
383
|
+
const primary = writeFileAt(primaryDir, primaryPath, content);
|
|
384
|
+
if (primary.ok)
|
|
385
|
+
return { ok: true };
|
|
386
|
+
if (primary.code && SANDBOX_WRITE_ERRORS.has(primary.code)) {
|
|
387
|
+
const dir = ensureFallbackDir(true);
|
|
388
|
+
if (!dir.usable) {
|
|
389
|
+
const fallbackCode = SUSPICIOUS_REASONS.has(dir.reason)
|
|
390
|
+
? `unsafe:${dir.reason}`
|
|
391
|
+
: dir.reason;
|
|
392
|
+
return { ok: false, code: primary.code, fallbackCode };
|
|
393
|
+
}
|
|
394
|
+
try {
|
|
395
|
+
writeFileNoFollow(fallbackPath, content);
|
|
396
|
+
return { ok: true };
|
|
397
|
+
}
|
|
398
|
+
catch (err) {
|
|
399
|
+
const fallbackCode = err.code ?? String(err);
|
|
400
|
+
return { ok: false, code: primary.code, fallbackCode };
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return { ok: false, code: primary.code };
|
|
404
|
+
}
|
|
173
405
|
/**
|
|
174
406
|
* Write cache. Tries the primary path first; on sandbox / permission failures
|
|
175
407
|
* falls back to $TMPDIR. Both failing emits at most one warning per process.
|
|
176
408
|
*/
|
|
177
409
|
export function writeCache(result) {
|
|
178
410
|
const content = result.aggregate + "\n" + JSON.stringify(result.payload) + "\n";
|
|
179
|
-
const
|
|
180
|
-
if (
|
|
181
|
-
return;
|
|
182
|
-
// Only fall back for the sandbox/perm family of errors. Other failures
|
|
183
|
-
// (ENOSPC, IO errors, ...) are not improved by retrying in $TMPDIR, so we
|
|
184
|
-
// surface them via the same one-shot warning path.
|
|
185
|
-
if (primary.code && SANDBOX_WRITE_ERRORS.has(primary.code)) {
|
|
186
|
-
const fallback = writeFileAt(FALLBACK_DIR, FALLBACK_CACHE_PATH, content);
|
|
187
|
-
if (fallback.ok)
|
|
188
|
-
return;
|
|
189
|
-
emitWriteWarning(primary.code, fallback.code);
|
|
411
|
+
const res = writeWithFallback(STATE_DIR, PRIMARY_CACHE_PATH, FALLBACK_CACHE_PATH, content);
|
|
412
|
+
if (res.ok)
|
|
190
413
|
return;
|
|
191
|
-
|
|
192
|
-
emitWriteWarning(primary.code);
|
|
414
|
+
emitWriteWarning(res.code, res.fallbackCode);
|
|
193
415
|
}
|
|
194
416
|
function emitWriteWarning(primaryCode, fallbackCode) {
|
|
195
417
|
if (warnedAboutCacheWrite)
|
|
@@ -202,7 +424,12 @@ function emitWriteWarning(primaryCode, fallbackCode) {
|
|
|
202
424
|
}
|
|
203
425
|
/** Delete cache files (used by --force and after upgrade). */
|
|
204
426
|
export function clearCache() {
|
|
205
|
-
|
|
427
|
+
const paths = [PRIMARY_CACHE_PATH];
|
|
428
|
+
// Only touch the fallback path when its directory passes the hardening
|
|
429
|
+
// check — never unlink through a symlinked or foreign-owned directory.
|
|
430
|
+
if (ensureFallbackDir(false).usable)
|
|
431
|
+
paths.push(FALLBACK_CACHE_PATH);
|
|
432
|
+
for (const p of paths) {
|
|
206
433
|
try {
|
|
207
434
|
unlinkSync(p);
|
|
208
435
|
}
|
|
@@ -229,18 +456,10 @@ export function clearCache() {
|
|
|
229
456
|
* failure is warned (once per process) but never thrown.
|
|
230
457
|
*/
|
|
231
458
|
export function writeUpgradeMarker(data) {
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
if (primary.ok)
|
|
235
|
-
return;
|
|
236
|
-
if (primary.code && SANDBOX_WRITE_ERRORS.has(primary.code)) {
|
|
237
|
-
const fallback = writeFileAt(FALLBACK_DIR, FALLBACK_MARKER_PATH, content);
|
|
238
|
-
if (fallback.ok)
|
|
239
|
-
return;
|
|
240
|
-
emitMarkerWriteWarning(primary.code, fallback.code);
|
|
459
|
+
const res = writeWithFallback(STATE_DIR, PRIMARY_MARKER_PATH, FALLBACK_MARKER_PATH, JSON.stringify(data));
|
|
460
|
+
if (res.ok)
|
|
241
461
|
return;
|
|
242
|
-
|
|
243
|
-
emitMarkerWriteWarning(primary.code);
|
|
462
|
+
emitMarkerWriteWarning(res.code, res.fallbackCode);
|
|
244
463
|
}
|
|
245
464
|
function emitMarkerWriteWarning(primaryCode, fallbackCode) {
|
|
246
465
|
if (warnedAboutMarkerWrite)
|
|
@@ -277,8 +496,10 @@ function readMarkerAt(path) {
|
|
|
277
496
|
* Best-effort invalidation. unlinkSync first (the desired outcome); if that
|
|
278
497
|
* fails — typically EPERM under the sandbox — overwrite with empty content so
|
|
279
498
|
* the next read parses as invalid (empty content fails JSON.parse and is also
|
|
280
|
-
* rejected by the single-line snooze parser).
|
|
281
|
-
*
|
|
499
|
+
* rejected by the single-line snooze parser). The overwrite goes through
|
|
500
|
+
* `writeFileNoFollow`, so a symlink swapped in for the file is rejected
|
|
501
|
+
* (`ELOOP`) and reported as a failed invalidation rather than followed.
|
|
502
|
+
* Returns true when the file is either gone or guaranteed unparseable.
|
|
282
503
|
*/
|
|
283
504
|
export function invalidateFileAt(path) {
|
|
284
505
|
try {
|
|
@@ -289,7 +510,7 @@ export function invalidateFileAt(path) {
|
|
|
289
510
|
// fall through
|
|
290
511
|
}
|
|
291
512
|
try {
|
|
292
|
-
|
|
513
|
+
writeFileNoFollow(path, "");
|
|
293
514
|
return true;
|
|
294
515
|
}
|
|
295
516
|
catch {
|
|
@@ -308,8 +529,11 @@ export function invalidateFileAt(path) {
|
|
|
308
529
|
* regain write access to its directory.
|
|
309
530
|
*/
|
|
310
531
|
export function readAndClearUpgradeMarker() {
|
|
532
|
+
// Skip the fallback path entirely when its directory fails the hardening
|
|
533
|
+
// check — both the read and the cleanup below stay off a suspicious dir.
|
|
534
|
+
const fallbackUsable = ensureFallbackDir(false).usable;
|
|
311
535
|
const primary = readMarkerAt(PRIMARY_MARKER_PATH);
|
|
312
|
-
const fallback = readMarkerAt(FALLBACK_MARKER_PATH);
|
|
536
|
+
const fallback = fallbackUsable ? readMarkerAt(FALLBACK_MARKER_PATH) : null;
|
|
313
537
|
let chosen;
|
|
314
538
|
if (!primary)
|
|
315
539
|
chosen = fallback;
|
|
@@ -322,7 +546,7 @@ export function readAndClearUpgradeMarker() {
|
|
|
322
546
|
// Negative age beyond 1 minute means clock skew — treat as stale so a
|
|
323
547
|
// future-dated marker can't replay the announcement forever.
|
|
324
548
|
const ageMs = Date.now() - chosen.mtimeMs;
|
|
325
|
-
const isStale = ageMs < -
|
|
549
|
+
const isStale = ageMs < -MS_PER_MINUTE || ageMs > MARKER_TTL_MS;
|
|
326
550
|
// Clean up both paths whether or not we honor the marker. We only attempt
|
|
327
551
|
// invalidation for paths that actually had content; otherwise an existsSync
|
|
328
552
|
// miss-then-create race could leave a zero-byte file we just created.
|
|
@@ -330,7 +554,7 @@ export function readAndClearUpgradeMarker() {
|
|
|
330
554
|
const fallbackCleared = fallback ? invalidateFileAt(FALLBACK_MARKER_PATH) : true;
|
|
331
555
|
if ((!primaryCleared || !fallbackCleared) && !warnedAboutMarkerClear) {
|
|
332
556
|
warnedAboutMarkerClear = true;
|
|
333
|
-
process.stderr.write(`Warning: could not clear upgrade marker (primary=${primaryCleared ? "ok" : "blocked"}, fallback=${fallbackCleared ? "ok" : "blocked"}). It will be ignored after ${MARKER_TTL_MS /
|
|
557
|
+
process.stderr.write(`Warning: could not clear upgrade marker (primary=${primaryCleared ? "ok" : "blocked"}, fallback=${fallbackCleared ? "ok" : "blocked"}). It will be ignored after ${MARKER_TTL_MS / MS_PER_MINUTE}min.\n`);
|
|
334
558
|
}
|
|
335
559
|
if (isStale)
|
|
336
560
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-cache.js","sourceRoot":"","sources":["../../src/agent/update-cache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"update-cache.js","sourceRoot":"","sources":["../../src/agent/update-cache.ts"],"names":[],"mappings":"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"}
|