mthds 0.6.4 → 0.7.0
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/binaries.js +2 -2
- package/dist/agent/commands/bootstrap.js +2 -10
- package/dist/agent/commands/bootstrap.js.map +1 -1
- package/dist/agent/commands/codex-config.d.ts +29 -15
- package/dist/agent/commands/codex-config.js +206 -127
- package/dist/agent/commands/codex-config.js.map +1 -1
- package/dist/agent/commands/codex-hook.d.ts +4 -6
- package/dist/agent/commands/codex-hook.js +6 -8
- package/dist/agent/commands/codex-hook.js.map +1 -1
- package/dist/agent/commands/codex.d.ts +32 -19
- package/dist/agent/commands/codex.js +87 -134
- package/dist/agent/commands/codex.js.map +1 -1
- package/dist/agent/commands/doctor.js +49 -13
- package/dist/agent/commands/doctor.js.map +1 -1
- package/dist/agent/commands/update-check.js +1 -30
- package/dist/agent/commands/update-check.js.map +1 -1
- package/dist/agent/commands/upgrade.js +3 -12
- package/dist/agent/commands/upgrade.js.map +1 -1
- package/dist/agent/plugin-version.d.ts +1 -1
- package/dist/agent/plugin-version.js +1 -1
- package/dist/agent/snooze.d.ts +30 -4
- package/dist/agent/snooze.js +99 -35
- package/dist/agent/snooze.js.map +1 -1
- package/dist/agent/update-cache.d.ts +54 -13
- package/dist/agent/update-cache.js +160 -20
- package/dist/agent/update-cache.js.map +1 -1
- package/dist/agent-cli.js +2 -10
- package/dist/agent-cli.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@ import { BINARY_RECOVERY, buildInstallCommand } from "../binaries.js";
|
|
|
7
7
|
import { checkBinaryVersion } from "../../installer/runtime/version-check.js";
|
|
8
8
|
import { listConfig } from "../../config/config.js";
|
|
9
9
|
import { inspectCodexConfig } from "./codex-config.js";
|
|
10
|
+
import { inspectLegacyCodexHook } from "./codex.js";
|
|
10
11
|
// ── Output format ───────────────────────────────────────────────────
|
|
11
12
|
export const OutputFormat = {
|
|
12
13
|
MARKDOWN: "markdown",
|
|
@@ -27,7 +28,7 @@ function getBinaryPath(bin) {
|
|
|
27
28
|
function escapeCell(value) {
|
|
28
29
|
return value.replace(/\|/g, "\\|");
|
|
29
30
|
}
|
|
30
|
-
function formatDoctorMarkdown(healthy, dependencies, config, issues, codex) {
|
|
31
|
+
function formatDoctorMarkdown(healthy, dependencies, config, issues, codex, legacyHook) {
|
|
31
32
|
const lines = [];
|
|
32
33
|
lines.push(`# Doctor Report`);
|
|
33
34
|
lines.push("");
|
|
@@ -64,21 +65,33 @@ function formatDoctorMarkdown(healthy, dependencies, config, issues, codex) {
|
|
|
64
65
|
lines.push("## Codex");
|
|
65
66
|
lines.push("");
|
|
66
67
|
if (!codex.exists) {
|
|
67
|
-
lines.push(`- No ~/.codex/config.toml found. Run \`mthds-agent codex apply-config\` to create one
|
|
68
|
+
lines.push(`- No ~/.codex/config.toml found. Run \`mthds-agent codex apply-config\` to create one.`);
|
|
68
69
|
}
|
|
69
70
|
else if (codex.parse_error) {
|
|
70
71
|
lines.push(`- [ERROR] Could not parse ${codex.config_file}: ${codex.parse_error}`);
|
|
71
72
|
}
|
|
72
73
|
else {
|
|
73
|
-
if (codex.
|
|
74
|
-
|
|
74
|
+
if (codex.needs_changes.length > 0) {
|
|
75
|
+
const keys = codex.needs_changes
|
|
76
|
+
.map((change) => `[${change.table}] ${change.key} = ${change.value}`)
|
|
77
|
+
.join(", ");
|
|
78
|
+
lines.push(`- [WARN] Required config not set (${keys}). Run \`mthds-agent codex apply-config\`.`);
|
|
75
79
|
}
|
|
76
80
|
else {
|
|
77
|
-
lines.push(`-
|
|
81
|
+
lines.push(`- Required config: ok`);
|
|
78
82
|
}
|
|
79
|
-
for (const
|
|
80
|
-
lines.push(`- [
|
|
83
|
+
for (const conflict of codex.conflicts) {
|
|
84
|
+
lines.push(`- [ERROR] [${conflict.table}] ${conflict.key} = ${conflict.current} conflicts with the mthds plugin (needs ${conflict.required}). Fix it by hand.`);
|
|
81
85
|
}
|
|
86
|
+
for (const warning of codex.warnings) {
|
|
87
|
+
lines.push(`- [WARN] ${warning.message}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (legacyHook.parse_error) {
|
|
91
|
+
lines.push(`- [WARN] Could not read ${legacyHook.hooks_file}: ${legacyHook.parse_error}`);
|
|
92
|
+
}
|
|
93
|
+
else if (legacyHook.has_legacy_entry) {
|
|
94
|
+
lines.push(`- [WARN] Obsolete mthds hook entry in ${legacyHook.hooks_file}. Run \`mthds-agent codex apply-config\` to remove it — the hook now ships with the plugin.`);
|
|
82
95
|
}
|
|
83
96
|
lines.push("");
|
|
84
97
|
// Issues
|
|
@@ -177,16 +190,25 @@ export async function agentDoctor(format = OutputFormat.MARKDOWN) {
|
|
|
177
190
|
});
|
|
178
191
|
}
|
|
179
192
|
}
|
|
180
|
-
// Codex
|
|
193
|
+
// Codex config + hooks (read-only inspection — doctor never writes).
|
|
181
194
|
const codex = inspectCodexConfig();
|
|
182
|
-
if (codex.
|
|
195
|
+
if (codex.needs_changes.length > 0) {
|
|
196
|
+
const keys = codex.needs_changes
|
|
197
|
+
.map((change) => `[${change.table}] ${change.key} = ${change.value}`)
|
|
198
|
+
.join(", ");
|
|
183
199
|
issues.push({
|
|
184
200
|
severity: "warning",
|
|
185
|
-
message: `Codex
|
|
201
|
+
message: `Codex config missing required keys (${keys}) in ${codex.config_file}. Run \`mthds-agent codex apply-config\`.`,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
for (const conflict of codex.conflicts) {
|
|
205
|
+
issues.push({
|
|
206
|
+
severity: "error",
|
|
207
|
+
message: `Codex config conflict: [${conflict.table}] ${conflict.key} = ${conflict.current} (the mthds plugin needs ${conflict.required}). Fix it by hand in ${codex.config_file}.`,
|
|
186
208
|
});
|
|
187
209
|
}
|
|
188
|
-
for (const
|
|
189
|
-
issues.push({ severity: "warning", message: `Codex: ${
|
|
210
|
+
for (const warning of codex.warnings) {
|
|
211
|
+
issues.push({ severity: "warning", message: `Codex: ${warning.message}` });
|
|
190
212
|
}
|
|
191
213
|
if (codex.parse_error) {
|
|
192
214
|
issues.push({
|
|
@@ -194,6 +216,19 @@ export async function agentDoctor(format = OutputFormat.MARKDOWN) {
|
|
|
194
216
|
message: `Codex config parse error in ${codex.config_file}: ${codex.parse_error}`,
|
|
195
217
|
});
|
|
196
218
|
}
|
|
219
|
+
const legacyHook = inspectLegacyCodexHook();
|
|
220
|
+
if (legacyHook.has_legacy_entry) {
|
|
221
|
+
issues.push({
|
|
222
|
+
severity: "warning",
|
|
223
|
+
message: `Obsolete mthds hook entry in ${legacyHook.hooks_file}. Run \`mthds-agent codex apply-config\` to remove it — the hook now ships with the plugin.`,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
if (legacyHook.parse_error) {
|
|
227
|
+
issues.push({
|
|
228
|
+
severity: "warning",
|
|
229
|
+
message: `Could not read ${legacyHook.hooks_file} to check for an obsolete mthds hook entry: ${legacyHook.parse_error}`,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
197
232
|
const hasErrors = issues.some((issue) => issue.severity === "error");
|
|
198
233
|
const healthy = !hasErrors;
|
|
199
234
|
if (format === OutputFormat.JSON) {
|
|
@@ -203,10 +238,11 @@ export async function agentDoctor(format = OutputFormat.MARKDOWN) {
|
|
|
203
238
|
config: configEntries,
|
|
204
239
|
issues,
|
|
205
240
|
codex,
|
|
241
|
+
legacy_hook: legacyHook,
|
|
206
242
|
});
|
|
207
243
|
}
|
|
208
244
|
else {
|
|
209
|
-
process.stdout.write(formatDoctorMarkdown(healthy, dependencies, configEntries, issues, codex));
|
|
245
|
+
process.stdout.write(formatDoctorMarkdown(healthy, dependencies, configEntries, issues, codex, legacyHook));
|
|
210
246
|
}
|
|
211
247
|
}
|
|
212
248
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/agent/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/agent/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,20 +9,17 @@
|
|
|
9
9
|
* The preamble captures stdout via: mthds-agent update-check 2>/dev/null || true
|
|
10
10
|
* and checks for the presence of these keywords. Plain text, not agentSuccess JSON.
|
|
11
11
|
*/
|
|
12
|
-
import { readFileSync, unlinkSync } from "node:fs";
|
|
13
|
-
import { join } from "node:path";
|
|
14
12
|
import { createRequire } from "node:module";
|
|
15
13
|
import { agentSuccess } from "../output.js";
|
|
16
14
|
import { BINARY_RECOVERY } from "../binaries.js";
|
|
17
15
|
import { checkBinaryVersion } from "../../installer/runtime/version-check.js";
|
|
18
16
|
import { loadConfig } from "../../config/config.js";
|
|
19
17
|
import { Runners } from "../../runners/types.js";
|
|
20
|
-
import { readCache, writeCache, clearCache, computeAggregate,
|
|
18
|
+
import { readCache, writeCache, clearCache, computeAggregate, readAndClearUpgradeMarker, } from "../update-cache.js";
|
|
21
19
|
import { isSnoozed, writeSnooze, clearSnooze, computeVersionKey, } from "../snooze.js";
|
|
22
20
|
import { checkPluginVersion, detectHost } from "../plugin-version.js";
|
|
23
21
|
const require = createRequire(import.meta.url);
|
|
24
22
|
const pkg = require("../../../package.json");
|
|
25
|
-
const JUST_UPGRADED_PATH = join(STATE_DIR, "just-upgraded-from");
|
|
26
23
|
// ── Main ───────────────────────────────────────────────────────────
|
|
27
24
|
export async function agentUpdateCheck(options) {
|
|
28
25
|
// Let errors propagate to non-zero exit so the preamble's
|
|
@@ -153,32 +150,6 @@ function getOrRefreshPayload(runner) {
|
|
|
153
150
|
writeCache({ aggregate, payload });
|
|
154
151
|
return payload;
|
|
155
152
|
}
|
|
156
|
-
function readAndClearUpgradeMarker() {
|
|
157
|
-
let content;
|
|
158
|
-
try {
|
|
159
|
-
content = readFileSync(JUST_UPGRADED_PATH, "utf-8");
|
|
160
|
-
}
|
|
161
|
-
catch {
|
|
162
|
-
return null; // File doesn't exist or unreadable
|
|
163
|
-
}
|
|
164
|
-
// Delete marker before parsing — even corrupt markers should be consumed
|
|
165
|
-
try {
|
|
166
|
-
unlinkSync(JUST_UPGRADED_PATH);
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
// ignore
|
|
170
|
-
}
|
|
171
|
-
try {
|
|
172
|
-
const parsed = JSON.parse(content);
|
|
173
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
174
|
-
return null;
|
|
175
|
-
}
|
|
176
|
-
return parsed;
|
|
177
|
-
}
|
|
178
|
-
catch {
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
153
|
function payloadVersions(payload) {
|
|
183
154
|
const result = {
|
|
184
155
|
mthds_agent: payload.mthds_agent.v,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../../src/agent/commands/update-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../../src/agent/commands/update-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,13 +14,11 @@
|
|
|
14
14
|
* depends on the configured runner: always plxt; add pipelex-agent when
|
|
15
15
|
* runner === "pipelex".
|
|
16
16
|
*/
|
|
17
|
-
import { writeFileSync } from "node:fs";
|
|
18
|
-
import { join } from "node:path";
|
|
19
17
|
import { requireUv, uvToolInstallSync } from "../../installer/runtime/installer.js";
|
|
20
18
|
import { checkBinaryVersion } from "../../installer/runtime/version-check.js";
|
|
21
19
|
import { BINARY_RECOVERY } from "../binaries.js";
|
|
22
20
|
import { agentError, AGENT_ERROR_DOMAINS } from "../output.js";
|
|
23
|
-
import { clearCache,
|
|
21
|
+
import { clearCache, writeUpgradeMarker } from "../update-cache.js";
|
|
24
22
|
import { clearSnooze } from "../snooze.js";
|
|
25
23
|
import { loadConfig } from "../../config/config.js";
|
|
26
24
|
import { Runners } from "../../runners/types.js";
|
|
@@ -128,15 +126,8 @@ export async function agentUpgrade() {
|
|
|
128
126
|
const allSucceeded = failed.size === 0;
|
|
129
127
|
const allFailed = succeeded.size === 0;
|
|
130
128
|
if (allSucceeded) {
|
|
131
|
-
// Write marker, clear cache + snooze
|
|
132
|
-
|
|
133
|
-
ensureStateDir();
|
|
134
|
-
writeFileSync(join(STATE_DIR, "just-upgraded-from"), JSON.stringify(markerData), "utf-8");
|
|
135
|
-
}
|
|
136
|
-
catch (err) {
|
|
137
|
-
// Marker write failure should not prevent reporting success
|
|
138
|
-
process.stderr.write(`Warning: could not write upgrade marker: ${errorMsg(err)}.\n`);
|
|
139
|
-
}
|
|
129
|
+
// Write marker (sandbox-aware via $TMPDIR fallback), clear cache + snooze
|
|
130
|
+
writeUpgradeMarker(markerData);
|
|
140
131
|
clearCache();
|
|
141
132
|
clearSnooze();
|
|
142
133
|
process.stdout.write("UPGRADE_COMPLETE " + JSON.stringify({ upgraded: upgradedEntries }) + "\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/agent/commands/upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/agent/commands/upgrade.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import type { BinaryCheckEntry } from "./update-cache.js";
|
|
13
13
|
/** Minimum plugin version this mthds-agent release requires. */
|
|
14
|
-
export declare const MIN_PLUGIN_VERSION = ">=0.
|
|
14
|
+
export declare const MIN_PLUGIN_VERSION = ">=0.11.0";
|
|
15
15
|
/** Keys in installed_plugins.json for the mthds plugin (prod and dev targets). */
|
|
16
16
|
export declare const PLUGIN_KEYS: readonly ["mthds@mthds-plugins", "mthds-dev@mthds-plugins"];
|
|
17
17
|
/** Path to Claude Code's installed plugins registry. */
|
|
@@ -15,7 +15,7 @@ import { homedir } from "node:os";
|
|
|
15
15
|
import semver from "semver";
|
|
16
16
|
// ── Constants ──────────────────────────────────────────────────────
|
|
17
17
|
/** Minimum plugin version this mthds-agent release requires. */
|
|
18
|
-
export const MIN_PLUGIN_VERSION = ">=0.
|
|
18
|
+
export const MIN_PLUGIN_VERSION = ">=0.11.0";
|
|
19
19
|
/** Keys in installed_plugins.json for the mthds plugin (prod and dev targets). */
|
|
20
20
|
export const PLUGIN_KEYS = [
|
|
21
21
|
"mthds@mthds-plugins",
|
package/dist/agent/snooze.d.ts
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Snooze state for update-check upgrade prompts.
|
|
3
3
|
*
|
|
4
|
-
* Manages
|
|
4
|
+
* Manages a single-line file:
|
|
5
5
|
* <versionKey> <level> <epoch>
|
|
6
6
|
*
|
|
7
|
+
* Primary location: ~/.mthds/state/update-snoozed.
|
|
8
|
+
* Fallback location: $TMPDIR/mthds-agent/update-snoozed — used when the
|
|
9
|
+
* primary location is not writable (Codex `workspaceWrite` sandbox permits
|
|
10
|
+
* writes only under cwd / configured roots / $TMPDIR, not under the user's
|
|
11
|
+
* home dir). Same dual-path policy as the update-check cache and the
|
|
12
|
+
* just-upgraded marker — see update-cache.ts.
|
|
13
|
+
*
|
|
14
|
+
* Reads consult both paths and prefer the newer mtime, so escalation
|
|
15
|
+
* (level 1 → 2 → 3+) stays correct as sessions move between sandboxed and
|
|
16
|
+
* non-sandboxed contexts.
|
|
17
|
+
*
|
|
7
18
|
* Version key is a plain concatenation of binary statuses (human-readable).
|
|
8
19
|
* Escalating backoff: level 1 = 24h, level 2 = 48h, level 3+ = 7d.
|
|
9
20
|
* Snooze resets when the version key changes (any binary constraint updated).
|
|
@@ -20,13 +31,28 @@ export interface SnoozeState {
|
|
|
20
31
|
* Changes whenever any binary's status or constraint changes.
|
|
21
32
|
*/
|
|
22
33
|
export declare function computeVersionKey(payload: CachePayload): string;
|
|
23
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Read current snooze state. Returns null if missing or corrupt.
|
|
36
|
+
*
|
|
37
|
+
* Inspects both the primary and the fallback path; when both have valid
|
|
38
|
+
* contents, the one with the newer mtime wins. This keeps escalation
|
|
39
|
+
* correct when a session moves between sandboxed and non-sandboxed contexts:
|
|
40
|
+
* the older file is a stale snapshot from before the redirect happened.
|
|
41
|
+
*/
|
|
24
42
|
export declare function readSnooze(): SnoozeState | null;
|
|
25
43
|
/**
|
|
26
|
-
* Write snooze state. Escalates level if same versionKey, resets if
|
|
44
|
+
* Write snooze state. Escalates level if same versionKey, resets to 1 if
|
|
45
|
+
* different. Sandbox-aware: falls back to $TMPDIR when ~/.mthds/state/ is
|
|
46
|
+
* not writable. Write failures emit a one-shot stderr warning per process.
|
|
27
47
|
*/
|
|
28
48
|
export declare function writeSnooze(versionKey: string): void;
|
|
29
49
|
/** Check if snooze is active for the given versionKey. */
|
|
30
50
|
export declare function isSnoozed(versionKey: string): boolean;
|
|
31
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Clear snooze. Hits both primary and fallback paths. When unlink is blocked
|
|
53
|
+
* (sandbox EPERM), overwrites with empty content so the next read parses as
|
|
54
|
+
* null. Warns at most once per process when a present file cannot be cleared
|
|
55
|
+
* by either route. Silent when both paths were absent to begin with — no
|
|
56
|
+
* spurious 0-byte file is created in that case.
|
|
57
|
+
*/
|
|
32
58
|
export declare function clearSnooze(): void;
|
package/dist/agent/snooze.js
CHANGED
|
@@ -1,23 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Snooze state for update-check upgrade prompts.
|
|
3
3
|
*
|
|
4
|
-
* Manages
|
|
4
|
+
* Manages a single-line file:
|
|
5
5
|
* <versionKey> <level> <epoch>
|
|
6
6
|
*
|
|
7
|
+
* Primary location: ~/.mthds/state/update-snoozed.
|
|
8
|
+
* Fallback location: $TMPDIR/mthds-agent/update-snoozed — used when the
|
|
9
|
+
* primary location is not writable (Codex `workspaceWrite` sandbox permits
|
|
10
|
+
* writes only under cwd / configured roots / $TMPDIR, not under the user's
|
|
11
|
+
* home dir). Same dual-path policy as the update-check cache and the
|
|
12
|
+
* just-upgraded marker — see update-cache.ts.
|
|
13
|
+
*
|
|
14
|
+
* Reads consult both paths and prefer the newer mtime, so escalation
|
|
15
|
+
* (level 1 → 2 → 3+) stays correct as sessions move between sandboxed and
|
|
16
|
+
* non-sandboxed contexts.
|
|
17
|
+
*
|
|
7
18
|
* Version key is a plain concatenation of binary statuses (human-readable).
|
|
8
19
|
* Escalating backoff: level 1 = 24h, level 2 = 48h, level 3+ = 7d.
|
|
9
20
|
* Snooze resets when the version key changes (any binary constraint updated).
|
|
10
21
|
*/
|
|
11
22
|
import { join } from "node:path";
|
|
12
|
-
import { readFileSync,
|
|
13
|
-
import {
|
|
23
|
+
import { readFileSync, statSync, existsSync } from "node:fs";
|
|
24
|
+
import { homedir, tmpdir } from "node:os";
|
|
25
|
+
import { SANDBOX_WRITE_ERRORS, writeFileAt, invalidateFileAt, } from "./update-cache.js";
|
|
14
26
|
// ── Constants ──────────────────────────────────────────────────────
|
|
15
|
-
const
|
|
27
|
+
const STATE_DIR = join(homedir(), ".mthds", "state");
|
|
28
|
+
const PRIMARY_SNOOZE_PATH = join(STATE_DIR, "update-snoozed");
|
|
29
|
+
const FALLBACK_DIR = join(tmpdir(), "mthds-agent");
|
|
30
|
+
const FALLBACK_SNOOZE_PATH = join(FALLBACK_DIR, "update-snoozed");
|
|
16
31
|
const SNOOZE_DURATIONS_MS = {
|
|
17
32
|
1: 24 * 60 * 60 * 1000, // 24h
|
|
18
33
|
2: 48 * 60 * 60 * 1000, // 48h
|
|
19
34
|
};
|
|
20
35
|
const SNOOZE_DEFAULT_MS = 7 * 24 * 60 * 60 * 1000; // 7d for level 3+
|
|
36
|
+
// ── Per-process warning latches ────────────────────────────────────
|
|
37
|
+
let warnedAboutSnoozeWrite = false;
|
|
38
|
+
let warnedAboutSnoozeClear = false;
|
|
21
39
|
// ── Functions ──────────────────────────────────────────────────────
|
|
22
40
|
/**
|
|
23
41
|
* Compute a human-readable version key from a cache payload.
|
|
@@ -37,22 +55,17 @@ export function computeVersionKey(payload) {
|
|
|
37
55
|
}
|
|
38
56
|
return parts.join(":");
|
|
39
57
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
content = readFileSync(SNOOZE_PATH, "utf-8").trim();
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
58
|
+
function parseSnoozeContent(content) {
|
|
59
|
+
const trimmed = content.trim();
|
|
60
|
+
if (!trimmed)
|
|
47
61
|
return null;
|
|
48
|
-
}
|
|
49
62
|
// Format: "<versionKey> <level> <epoch>"
|
|
50
63
|
// The version key may contain colons but not spaces, so split from the right.
|
|
51
|
-
const lastSpace =
|
|
64
|
+
const lastSpace = trimmed.lastIndexOf(" ");
|
|
52
65
|
if (lastSpace === -1)
|
|
53
66
|
return null;
|
|
54
|
-
const epochStr =
|
|
55
|
-
const rest =
|
|
67
|
+
const epochStr = trimmed.slice(lastSpace + 1);
|
|
68
|
+
const rest = trimmed.slice(0, lastSpace);
|
|
56
69
|
const secondLastSpace = rest.lastIndexOf(" ");
|
|
57
70
|
if (secondLastSpace === -1)
|
|
58
71
|
return null;
|
|
@@ -64,27 +77,67 @@ export function readSnooze() {
|
|
|
64
77
|
return null;
|
|
65
78
|
return { versionKey, level, epoch };
|
|
66
79
|
}
|
|
80
|
+
function readSnoozeAt(path) {
|
|
81
|
+
let mtimeMs;
|
|
82
|
+
let content;
|
|
83
|
+
try {
|
|
84
|
+
mtimeMs = statSync(path).mtimeMs;
|
|
85
|
+
content = readFileSync(path, "utf-8");
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const state = parseSnoozeContent(content);
|
|
91
|
+
if (!state)
|
|
92
|
+
return null;
|
|
93
|
+
return { state, mtimeMs };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Read current snooze state. Returns null if missing or corrupt.
|
|
97
|
+
*
|
|
98
|
+
* Inspects both the primary and the fallback path; when both have valid
|
|
99
|
+
* contents, the one with the newer mtime wins. This keeps escalation
|
|
100
|
+
* correct when a session moves between sandboxed and non-sandboxed contexts:
|
|
101
|
+
* the older file is a stale snapshot from before the redirect happened.
|
|
102
|
+
*/
|
|
103
|
+
export function readSnooze() {
|
|
104
|
+
const primary = readSnoozeAt(PRIMARY_SNOOZE_PATH);
|
|
105
|
+
const fallback = readSnoozeAt(FALLBACK_SNOOZE_PATH);
|
|
106
|
+
if (!primary)
|
|
107
|
+
return fallback?.state ?? null;
|
|
108
|
+
if (!fallback)
|
|
109
|
+
return primary.state;
|
|
110
|
+
return fallback.mtimeMs > primary.mtimeMs ? fallback.state : primary.state;
|
|
111
|
+
}
|
|
67
112
|
/**
|
|
68
|
-
* Write snooze state. Escalates level if same versionKey, resets if
|
|
113
|
+
* Write snooze state. Escalates level if same versionKey, resets to 1 if
|
|
114
|
+
* different. Sandbox-aware: falls back to $TMPDIR when ~/.mthds/state/ is
|
|
115
|
+
* not writable. Write failures emit a one-shot stderr warning per process.
|
|
69
116
|
*/
|
|
70
117
|
export function writeSnooze(versionKey) {
|
|
71
|
-
ensureStateDir();
|
|
72
118
|
const existing = readSnooze();
|
|
73
|
-
|
|
74
|
-
if (existing && existing.versionKey === versionKey) {
|
|
75
|
-
level = existing.level + 1;
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
level = 1;
|
|
79
|
-
}
|
|
119
|
+
const level = existing && existing.versionKey === versionKey ? existing.level + 1 : 1;
|
|
80
120
|
const content = `${versionKey} ${level} ${Date.now()}\n`;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
121
|
+
const primary = writeFileAt(STATE_DIR, PRIMARY_SNOOZE_PATH, content);
|
|
122
|
+
if (primary.ok)
|
|
123
|
+
return;
|
|
124
|
+
if (primary.code && SANDBOX_WRITE_ERRORS.has(primary.code)) {
|
|
125
|
+
const fallback = writeFileAt(FALLBACK_DIR, FALLBACK_SNOOZE_PATH, content);
|
|
126
|
+
if (fallback.ok)
|
|
127
|
+
return;
|
|
128
|
+
emitSnoozeWriteWarning(primary.code, fallback.code);
|
|
129
|
+
return;
|
|
87
130
|
}
|
|
131
|
+
emitSnoozeWriteWarning(primary.code);
|
|
132
|
+
}
|
|
133
|
+
function emitSnoozeWriteWarning(primaryCode, fallbackCode) {
|
|
134
|
+
if (warnedAboutSnoozeWrite)
|
|
135
|
+
return;
|
|
136
|
+
warnedAboutSnoozeWrite = true;
|
|
137
|
+
const detail = fallbackCode
|
|
138
|
+
? `primary=${primaryCode ?? "?"}, fallback=${fallbackCode}`
|
|
139
|
+
: (primaryCode ?? "?");
|
|
140
|
+
process.stderr.write(`Warning: could not write snooze state (${detail}). The upgrade prompt may re-appear next time.\n`);
|
|
88
141
|
}
|
|
89
142
|
/** Check if snooze is active for the given versionKey. */
|
|
90
143
|
export function isSnoozed(versionKey) {
|
|
@@ -99,13 +152,24 @@ export function isSnoozed(versionKey) {
|
|
|
99
152
|
// Negative elapsed beyond 1 minute means clock skew — treat snooze as expired
|
|
100
153
|
return elapsed >= -60_000 && elapsed < duration;
|
|
101
154
|
}
|
|
102
|
-
/**
|
|
155
|
+
/**
|
|
156
|
+
* Clear snooze. Hits both primary and fallback paths. When unlink is blocked
|
|
157
|
+
* (sandbox EPERM), overwrites with empty content so the next read parses as
|
|
158
|
+
* null. Warns at most once per process when a present file cannot be cleared
|
|
159
|
+
* by either route. Silent when both paths were absent to begin with — no
|
|
160
|
+
* spurious 0-byte file is created in that case.
|
|
161
|
+
*/
|
|
103
162
|
export function clearSnooze() {
|
|
104
|
-
|
|
105
|
-
|
|
163
|
+
let blocked = false;
|
|
164
|
+
for (const path of [PRIMARY_SNOOZE_PATH, FALLBACK_SNOOZE_PATH]) {
|
|
165
|
+
if (!existsSync(path))
|
|
166
|
+
continue;
|
|
167
|
+
if (!invalidateFileAt(path))
|
|
168
|
+
blocked = true;
|
|
106
169
|
}
|
|
107
|
-
|
|
108
|
-
|
|
170
|
+
if (blocked && !warnedAboutSnoozeClear) {
|
|
171
|
+
warnedAboutSnoozeClear = true;
|
|
172
|
+
process.stderr.write(`Warning: could not clear snooze state. The upgrade prompt may stay suppressed until the TTL expires.\n`);
|
|
109
173
|
}
|
|
110
174
|
}
|
|
111
175
|
//# sourceMappingURL=snooze.js.map
|
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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"}
|