mthds 0.4.1 → 0.5.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.
@@ -0,0 +1,51 @@
1
+ /**
2
+ * mthds-agent codex apply-config — additively merge required Codex sandbox
3
+ * settings into ~/.codex/config.toml so the mthds PostToolUse hook can run
4
+ * without being blocked by Codex's default workspace-write sandbox.
5
+ *
6
+ * Currently the only required key is `[sandbox_workspace_write] network_access = true`.
7
+ * Without it, any hook that fetches remote pipelex config (or any other
8
+ * outbound request) hangs/fails inside the sandbox.
9
+ *
10
+ * Warning-only checks (we never modify these — too high-risk):
11
+ * - `[features] codex_hooks = false` — explicitly disables hooks
12
+ * (default is on as of Codex 0.124.0; codex-rs/features/src/lib.rs:768).
13
+ * - `sandbox_mode = "read-only"` — hook can't run apply_patch validation.
14
+ *
15
+ * Output statuses (via agentSuccess):
16
+ * - { status: "ALREADY_OK", config_file, warnings? } — no changes needed
17
+ * - { status: "APPLIED", config_file, applied, warnings? } — diff merged + written
18
+ * - { status: "WOULD_APPLY", config_file, applied, warnings? } — --dry-run only
19
+ *
20
+ * Flags:
21
+ * --check exits non-zero if anything would change (no writes, no warnings demoted)
22
+ * --dry-run prints proposed diff and exits 0 without touching the file
23
+ */
24
+ export interface AppliedChange {
25
+ table: string;
26
+ key: string;
27
+ value: string;
28
+ }
29
+ export interface CodexConfigWarning {
30
+ code: string;
31
+ message: string;
32
+ }
33
+ export interface CodexConfigInspection {
34
+ config_file: string;
35
+ exists: boolean;
36
+ needs_change: AppliedChange | null;
37
+ warnings: CodexConfigWarning[];
38
+ parse_error?: string;
39
+ }
40
+ interface ApplyConfigOptions {
41
+ check?: boolean;
42
+ dryRun?: boolean;
43
+ }
44
+ /**
45
+ * Read-only inspection of ~/.codex/config.toml. Used by doctor to surface
46
+ * issues without writing anything. Never throws — parse errors are reported
47
+ * via the `parse_error` field so the caller can decide how to render them.
48
+ */
49
+ export declare function inspectCodexConfig(): CodexConfigInspection;
50
+ export declare function agentCodexApplyConfig(options?: ApplyConfigOptions): Promise<void>;
51
+ export {};
@@ -0,0 +1,301 @@
1
+ /**
2
+ * mthds-agent codex apply-config — additively merge required Codex sandbox
3
+ * settings into ~/.codex/config.toml so the mthds PostToolUse hook can run
4
+ * without being blocked by Codex's default workspace-write sandbox.
5
+ *
6
+ * Currently the only required key is `[sandbox_workspace_write] network_access = true`.
7
+ * Without it, any hook that fetches remote pipelex config (or any other
8
+ * outbound request) hangs/fails inside the sandbox.
9
+ *
10
+ * Warning-only checks (we never modify these — too high-risk):
11
+ * - `[features] codex_hooks = false` — explicitly disables hooks
12
+ * (default is on as of Codex 0.124.0; codex-rs/features/src/lib.rs:768).
13
+ * - `sandbox_mode = "read-only"` — hook can't run apply_patch validation.
14
+ *
15
+ * Output statuses (via agentSuccess):
16
+ * - { status: "ALREADY_OK", config_file, warnings? } — no changes needed
17
+ * - { status: "APPLIED", config_file, applied, warnings? } — diff merged + written
18
+ * - { status: "WOULD_APPLY", config_file, applied, warnings? } — --dry-run only
19
+ *
20
+ * Flags:
21
+ * --check exits non-zero if anything would change (no writes, no warnings demoted)
22
+ * --dry-run prints proposed diff and exits 0 without touching the file
23
+ */
24
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
25
+ import { dirname, join } from "node:path";
26
+ import { homedir } from "node:os";
27
+ import { parse as parseToml } from "smol-toml";
28
+ import { agentError, agentSuccess, AGENT_ERROR_DOMAINS } from "../output.js";
29
+ // ── Constants ──────────────────────────────────────────────────────
30
+ //
31
+ // Single-key invariant: this command currently enforces exactly one
32
+ // (table, key, value) tuple. `diffRequired` and `collectWarnings` are
33
+ // structured around that assumption — if a future requirement adds a
34
+ // second required key (e.g. a sandbox_mode default), both will need to
35
+ // fan out to a list rather than the singleton structure used here.
36
+ const REQUIRED_TABLE = "sandbox_workspace_write";
37
+ const REQUIRED_KEY = "network_access";
38
+ const REQUIRED_VALUE = true;
39
+ // ── Helpers ────────────────────────────────────────────────────────
40
+ function configFilePath() {
41
+ return join(homedir(), ".codex", "config.toml");
42
+ }
43
+ function writeAtomic(path, contents) {
44
+ mkdirSync(dirname(path), { recursive: true });
45
+ const tmp = `${path}.tmp-${process.pid}-${Date.now()}`;
46
+ writeFileSync(tmp, contents, { encoding: "utf8", mode: 0o644 });
47
+ renameSync(tmp, path);
48
+ }
49
+ /**
50
+ * Append a [table] section with key=value to existing TOML text. Used when
51
+ * the table is missing entirely. We append rather than re-serialize so user
52
+ * formatting/comments elsewhere in the file are preserved verbatim.
53
+ */
54
+ function appendTomlTable(existing, table, key, value) {
55
+ const trimmed = existing.replace(/\s+$/, "");
56
+ const sep = trimmed.length === 0 ? "" : "\n\n";
57
+ return `${trimmed}${sep}[${table}]\n${key} = ${value}\n`;
58
+ }
59
+ /**
60
+ * Insert key=value into an existing [table] section without re-serializing
61
+ * the document. Locates the table header line, finds the end of its body
62
+ * (next [section] header or EOF), and inserts the line just before that
63
+ * boundary. This preserves comments and ordering of every other table.
64
+ */
65
+ function insertIntoExistingTable(existing, table, key, value) {
66
+ const lines = existing.split("\n");
67
+ const headerRegex = new RegExp(`^\\s*\\[\\s*${table.replace(/[.*+?^${}()|[\\]\\\\]/g, "\\$&")}\\s*\\]\\s*(#.*)?$`);
68
+ // Treat both `[table]` and `[[array_of_tables]]` as section boundaries —
69
+ // the inner `\[\[?...\]\]?` lets the boundary scan stop at array-of-tables
70
+ // headers too, so we don't accidentally insert into one.
71
+ const anyHeaderRegex = /^\s*\[\[?[^\]]+\]\]?\s*(#.*)?$/;
72
+ let tableStart = -1;
73
+ for (let i = 0; i < lines.length; i++) {
74
+ if (headerRegex.test(lines[i])) {
75
+ tableStart = i;
76
+ break;
77
+ }
78
+ }
79
+ if (tableStart === -1) {
80
+ // Caller should have used appendTomlTable; defensive fallback.
81
+ return appendTomlTable(existing, table, key, value);
82
+ }
83
+ let insertAt = lines.length;
84
+ for (let i = tableStart + 1; i < lines.length; i++) {
85
+ if (anyHeaderRegex.test(lines[i])) {
86
+ insertAt = i;
87
+ break;
88
+ }
89
+ }
90
+ // Walk back over trailing blank lines so the new key sits with its table.
91
+ while (insertAt > tableStart + 1 && lines[insertAt - 1].trim() === "") {
92
+ insertAt--;
93
+ }
94
+ const before = lines.slice(0, insertAt);
95
+ const after = lines.slice(insertAt);
96
+ const newLine = `${key} = ${value}`;
97
+ return [...before, newLine, ...after].join("\n");
98
+ }
99
+ /**
100
+ * Decide whether the parsed config already satisfies the required key.
101
+ * Returns null if satisfied, otherwise an AppliedChange describing what
102
+ * needs to be added.
103
+ */
104
+ function diffRequired(parsed) {
105
+ const table = parsed[REQUIRED_TABLE];
106
+ if (table &&
107
+ typeof table === "object" &&
108
+ !Array.isArray(table) &&
109
+ table[REQUIRED_KEY] === REQUIRED_VALUE) {
110
+ return null;
111
+ }
112
+ return {
113
+ table: REQUIRED_TABLE,
114
+ key: REQUIRED_KEY,
115
+ value: String(REQUIRED_VALUE),
116
+ };
117
+ }
118
+ /** Collect non-fatal warnings about the user's config without modifying it. */
119
+ function collectWarnings(parsed) {
120
+ const warnings = [];
121
+ const features = parsed.features;
122
+ if (features &&
123
+ typeof features === "object" &&
124
+ !Array.isArray(features) &&
125
+ features.codex_hooks === false) {
126
+ warnings.push({
127
+ code: "CODEX_HOOKS_DISABLED",
128
+ message: "[features] codex_hooks is explicitly set to false; the mthds hook will not load. Remove this key (Codex 0.124+ enables hooks by default).",
129
+ });
130
+ }
131
+ if (parsed.sandbox_mode === "read-only") {
132
+ warnings.push({
133
+ code: "SANDBOX_READ_ONLY",
134
+ message: 'sandbox_mode = "read-only" prevents the apply_patch hook from running. Set to "workspace-write" or remove the key.',
135
+ });
136
+ }
137
+ return warnings;
138
+ }
139
+ /**
140
+ * Read-only inspection of ~/.codex/config.toml. Used by doctor to surface
141
+ * issues without writing anything. Never throws — parse errors are reported
142
+ * via the `parse_error` field so the caller can decide how to render them.
143
+ */
144
+ export function inspectCodexConfig() {
145
+ const file = configFilePath();
146
+ const exists = existsSync(file);
147
+ if (!exists) {
148
+ // No config file ⇒ definitely needs a change (the required key is missing).
149
+ return {
150
+ config_file: file,
151
+ exists: false,
152
+ needs_change: {
153
+ table: REQUIRED_TABLE,
154
+ key: REQUIRED_KEY,
155
+ value: String(REQUIRED_VALUE),
156
+ },
157
+ warnings: [],
158
+ };
159
+ }
160
+ let raw = "";
161
+ try {
162
+ raw = readFileSync(file, "utf8");
163
+ }
164
+ catch (err) {
165
+ return {
166
+ config_file: file,
167
+ exists: true,
168
+ needs_change: null,
169
+ warnings: [],
170
+ parse_error: `Failed to read ${file}: ${err.message}`,
171
+ };
172
+ }
173
+ let parsed;
174
+ try {
175
+ parsed = raw.trim().length === 0 ? {} : parseToml(raw);
176
+ }
177
+ catch (err) {
178
+ return {
179
+ config_file: file,
180
+ exists: true,
181
+ needs_change: null,
182
+ warnings: [],
183
+ parse_error: err.message,
184
+ };
185
+ }
186
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
187
+ return {
188
+ config_file: file,
189
+ exists: true,
190
+ needs_change: null,
191
+ warnings: [],
192
+ parse_error: "Top-level value is not a TOML table",
193
+ };
194
+ }
195
+ return {
196
+ config_file: file,
197
+ exists: true,
198
+ needs_change: diffRequired(parsed),
199
+ warnings: collectWarnings(parsed),
200
+ };
201
+ }
202
+ // ── Main ───────────────────────────────────────────────────────────
203
+ export async function agentCodexApplyConfig(options = {}) {
204
+ const file = configFilePath();
205
+ const checkMode = options.check === true;
206
+ const dryRunMode = options.dryRun === true;
207
+ let raw = "";
208
+ if (existsSync(file)) {
209
+ try {
210
+ raw = readFileSync(file, "utf8");
211
+ }
212
+ catch (err) {
213
+ agentError(`Failed to read ${file}: ${err.message}`, "IOError", { error_domain: AGENT_ERROR_DOMAINS.IO });
214
+ return;
215
+ }
216
+ }
217
+ let parsed;
218
+ try {
219
+ parsed = raw.trim().length === 0 ? {} : parseToml(raw);
220
+ }
221
+ catch (err) {
222
+ agentError(`Invalid TOML in ${file}: ${err.message}. Fix the file by hand or delete it and re-run.`, "ConfigError", { error_domain: AGENT_ERROR_DOMAINS.CONFIG });
223
+ return;
224
+ }
225
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
226
+ agentError(`${file} does not contain a TOML table at the top level.`, "ConfigError", { error_domain: AGENT_ERROR_DOMAINS.CONFIG });
227
+ return;
228
+ }
229
+ const change = diffRequired(parsed);
230
+ const warnings = collectWarnings(parsed);
231
+ // --check mode: exit non-zero if anything would change. Warnings count
232
+ // because they signal explicit user state that breaks the hook.
233
+ if (checkMode) {
234
+ if (change || warnings.length > 0) {
235
+ agentError(`Codex config needs attention. Run 'mthds-agent codex apply-config' (and review warnings).`, "ConfigError", { error_domain: AGENT_ERROR_DOMAINS.CONFIG });
236
+ return;
237
+ }
238
+ agentSuccess({ status: "ALREADY_OK", config_file: file });
239
+ return;
240
+ }
241
+ if (!change) {
242
+ agentSuccess({
243
+ status: "ALREADY_OK",
244
+ config_file: file,
245
+ warnings,
246
+ });
247
+ return;
248
+ }
249
+ // Build the new file contents additively.
250
+ //
251
+ // Edge case: `parsed[REQUIRED_TABLE]` may be a TOML-implicit table
252
+ // created by a dotted-key header like `[sandbox_workspace_write.sub]`
253
+ // even when no literal `[sandbox_workspace_write]` header exists in the
254
+ // source text. In that case `insertIntoExistingTable` falls back to
255
+ // appending a fresh header, which would cause smol-toml to reject the
256
+ // result on the sanity-parse below (table redefinition). The sanity
257
+ // parse catches it and we surface a ConfigError — not pretty, but safe.
258
+ // If this becomes a real problem, switch to writing the dotted form
259
+ // `sandbox_workspace_write.network_access = true` at top-of-file.
260
+ let nextRaw;
261
+ const tableExists = parsed[REQUIRED_TABLE] !== undefined &&
262
+ typeof parsed[REQUIRED_TABLE] === "object" &&
263
+ !Array.isArray(parsed[REQUIRED_TABLE]);
264
+ if (tableExists) {
265
+ nextRaw = insertIntoExistingTable(raw, change.table, change.key, change.value);
266
+ }
267
+ else {
268
+ nextRaw = appendTomlTable(raw, change.table, change.key, change.value);
269
+ }
270
+ // Sanity-parse the new contents before committing.
271
+ try {
272
+ parseToml(nextRaw);
273
+ }
274
+ catch (err) {
275
+ agentError(`Generated config would not re-parse: ${err.message}`, "ConfigError", { error_domain: AGENT_ERROR_DOMAINS.CONFIG });
276
+ return;
277
+ }
278
+ if (dryRunMode) {
279
+ agentSuccess({
280
+ status: "WOULD_APPLY",
281
+ config_file: file,
282
+ applied: [change],
283
+ warnings,
284
+ });
285
+ return;
286
+ }
287
+ try {
288
+ writeAtomic(file, nextRaw);
289
+ }
290
+ catch (err) {
291
+ agentError(`Failed to write ${file}: ${err.message}`, "IOError", { error_domain: AGENT_ERROR_DOMAINS.IO });
292
+ return;
293
+ }
294
+ agentSuccess({
295
+ status: "APPLIED",
296
+ config_file: file,
297
+ applied: [change],
298
+ warnings,
299
+ });
300
+ }
301
+ //# sourceMappingURL=codex-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-config.js","sourceRoot":"","sources":["../../../src/agent/commands/codex-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * mthds-agent codex hook — Codex PostToolUse(apply_patch) hook runtime.
3
+ *
4
+ * Wired into ~/.codex/hooks.json by `mthds-agent codex install-hook`. Runs
5
+ * after every apply_patch tool call in a Codex session: parses the patch
6
+ * envelope from tool_input.command, finds touched .mthds files, and validates
7
+ * each one with plxt (lint + fmt). On lint or fmt failure it emits the Codex
8
+ * hook block protocol so the session sees the error.
9
+ *
10
+ * Replaces the bash script previously at ~/.codex/hooks/codex-validate-mthds.sh.
11
+ *
12
+ * Stdout protocol — Codex's hook contract, not the mthds agent JSON:
13
+ * - empty / no output → silent pass (no .mthds touched, or all clean)
14
+ * - {"decision":"block",...} → block the turn with the given reason
15
+ *
16
+ * Stage 3 (`mthds-agent validate bundle`) stays disabled until offline-mode
17
+ * validation lands in mthds-agent (Codex sandbox blocks the eager S3 fetch).
18
+ * Tracked as Phase 2D in mthds-plugins/TODOS.md.
19
+ */
20
+ interface PlxtRunResult {
21
+ exitCode: number;
22
+ stdout: string;
23
+ stderr: string;
24
+ }
25
+ /**
26
+ * Extract every distinct .mthds path mentioned in an apply_patch envelope.
27
+ *
28
+ * The envelope's relevant headers are:
29
+ * *** Update File: <path>
30
+ * *** Add File: <path>
31
+ * *** Move to: <path> (destination of a rename — we validate the dest)
32
+ *
33
+ * `Delete File:` and `Move from:` (the source of a rename) are deliberately
34
+ * skipped because the file no longer exists post-patch.
35
+ */
36
+ export declare function parseMthdsFiles(command: string): string[];
37
+ export declare function formatLintError(file: string, result: PlxtRunResult): string;
38
+ export declare function formatFmtError(file: string, result: PlxtRunResult): string;
39
+ export declare function buildBlockPayload(reason: string): string;
40
+ /**
41
+ * Build the ordered list of candidate paths for `name` on PATH.
42
+ *
43
+ * Pure — no fs access. Exported for testability.
44
+ *
45
+ * On Windows we also try each PATHEXT extension (`plxt.EXE`, `plxt.CMD`, ...)
46
+ * and skip the bare name, because Windows requires an extension to consider
47
+ * a file executable. PATHEXT defaults to `.COM;.EXE;.BAT;.CMD` when unset.
48
+ */
49
+ export declare function buildPathCandidates(name: string, pathEnv: string, platform: NodeJS.Platform, pathExt: string | undefined): string[];
50
+ /**
51
+ * Cross-platform `command -v <name>`. We can't rely on PATH lookup
52
+ * inside spawnSync because we need to detect absence vs. spawn failure
53
+ * before we report "missing tool" to the user.
54
+ *
55
+ * `accessSync(X_OK)` enforces the executable bit on POSIX. On Windows
56
+ * X_OK is satisfied by any readable file, but the PATHEXT loop in
57
+ * buildPathCandidates already restricts us to extensions Windows treats
58
+ * as runnable.
59
+ */
60
+ export declare function commandOnPath(name: string): boolean;
61
+ export interface CodexHookDeps {
62
+ readStdin: () => string;
63
+ fileExists: (path: string) => boolean;
64
+ hasPlxt: () => boolean;
65
+ runPlxt: (args: string[]) => PlxtRunResult;
66
+ emit: (output: string) => void;
67
+ }
68
+ export declare function runCodexHook(deps: CodexHookDeps): Promise<void>;
69
+ export declare function agentCodexHook(): Promise<void>;
70
+ export {};
@@ -0,0 +1,205 @@
1
+ /**
2
+ * mthds-agent codex hook — Codex PostToolUse(apply_patch) hook runtime.
3
+ *
4
+ * Wired into ~/.codex/hooks.json by `mthds-agent codex install-hook`. Runs
5
+ * after every apply_patch tool call in a Codex session: parses the patch
6
+ * envelope from tool_input.command, finds touched .mthds files, and validates
7
+ * each one with plxt (lint + fmt). On lint or fmt failure it emits the Codex
8
+ * hook block protocol so the session sees the error.
9
+ *
10
+ * Replaces the bash script previously at ~/.codex/hooks/codex-validate-mthds.sh.
11
+ *
12
+ * Stdout protocol — Codex's hook contract, not the mthds agent JSON:
13
+ * - empty / no output → silent pass (no .mthds touched, or all clean)
14
+ * - {"decision":"block",...} → block the turn with the given reason
15
+ *
16
+ * Stage 3 (`mthds-agent validate bundle`) stays disabled until offline-mode
17
+ * validation lands in mthds-agent (Codex sandbox blocks the eager S3 fetch).
18
+ * Tracked as Phase 2D in mthds-plugins/TODOS.md.
19
+ */
20
+ import { accessSync, constants as fsConstants, existsSync, readFileSync, statSync } from "node:fs";
21
+ import { spawnSync } from "node:child_process";
22
+ const PLXT_INSTALL_HINT = "uv tool install pipelex-tools";
23
+ // ── Pure helpers (exported for testability) ───────────────────────────
24
+ /**
25
+ * Extract every distinct .mthds path mentioned in an apply_patch envelope.
26
+ *
27
+ * The envelope's relevant headers are:
28
+ * *** Update File: <path>
29
+ * *** Add File: <path>
30
+ * *** Move to: <path> (destination of a rename — we validate the dest)
31
+ *
32
+ * `Delete File:` and `Move from:` (the source of a rename) are deliberately
33
+ * skipped because the file no longer exists post-patch.
34
+ */
35
+ export function parseMthdsFiles(command) {
36
+ const re = /^\*\*\* (?:Update File|Add File|Move to):\s*(.+\.mthds)\s*$/gm;
37
+ const seen = new Set();
38
+ let match;
39
+ while ((match = re.exec(command)) !== null) {
40
+ seen.add(match[1].trim());
41
+ }
42
+ return Array.from(seen);
43
+ }
44
+ export function formatLintError(file, result) {
45
+ const out = result.stderr.trim() ||
46
+ result.stdout.trim() ||
47
+ `lint exited with code ${result.exitCode} (no output)`;
48
+ return `TOML/schema lint errors in ${file}:\n${out}\n\nFix it.`;
49
+ }
50
+ export function formatFmtError(file, result) {
51
+ const out = result.stderr.trim() ||
52
+ result.stdout.trim() ||
53
+ `fmt exited with code ${result.exitCode} (no output)`;
54
+ return `plxt fmt failed on ${file} (exit ${result.exitCode}):\n${out}\n\nFix it.`;
55
+ }
56
+ export function buildBlockPayload(reason) {
57
+ return JSON.stringify({ decision: "block", reason }) + "\n";
58
+ }
59
+ // ── Runtime helpers ───────────────────────────────────────────────────
60
+ function readAllStdin() {
61
+ try {
62
+ return readFileSync(0, "utf8");
63
+ }
64
+ catch {
65
+ return "";
66
+ }
67
+ }
68
+ /**
69
+ * Build the ordered list of candidate paths for `name` on PATH.
70
+ *
71
+ * Pure — no fs access. Exported for testability.
72
+ *
73
+ * On Windows we also try each PATHEXT extension (`plxt.EXE`, `plxt.CMD`, ...)
74
+ * and skip the bare name, because Windows requires an extension to consider
75
+ * a file executable. PATHEXT defaults to `.COM;.EXE;.BAT;.CMD` when unset.
76
+ */
77
+ export function buildPathCandidates(name, pathEnv, platform, pathExt) {
78
+ if (!pathEnv)
79
+ return [];
80
+ const isWin = platform === "win32";
81
+ // Don't use node:path's `delimiter`/`sep` — they're baked at module load
82
+ // from the host platform, so the function would silently behave wrong if
83
+ // we wanted to reason about Windows lookup on a POSIX host (and vice versa).
84
+ const pathDelimiter = isWin ? ";" : ":";
85
+ const pathSep = isWin ? "\\" : "/";
86
+ const exts = isWin
87
+ ? (pathExt ?? ".COM;.EXE;.BAT;.CMD")
88
+ .split(";")
89
+ .map((e) => e.trim())
90
+ .filter(Boolean)
91
+ : [""];
92
+ const candidates = [];
93
+ for (const dir of pathEnv.split(pathDelimiter)) {
94
+ if (!dir)
95
+ continue;
96
+ for (const ext of exts) {
97
+ const fullName = `${name}${ext}`;
98
+ candidates.push(dir.endsWith(pathSep)
99
+ ? `${dir}${fullName}`
100
+ : `${dir}${pathSep}${fullName}`);
101
+ }
102
+ }
103
+ return candidates;
104
+ }
105
+ /**
106
+ * Cross-platform `command -v <name>`. We can't rely on PATH lookup
107
+ * inside spawnSync because we need to detect absence vs. spawn failure
108
+ * before we report "missing tool" to the user.
109
+ *
110
+ * `accessSync(X_OK)` enforces the executable bit on POSIX. On Windows
111
+ * X_OK is satisfied by any readable file, but the PATHEXT loop in
112
+ * buildPathCandidates already restricts us to extensions Windows treats
113
+ * as runnable.
114
+ */
115
+ export function commandOnPath(name) {
116
+ const candidates = buildPathCandidates(name, process.env.PATH ?? "", process.platform, process.env.PATHEXT);
117
+ for (const candidate of candidates) {
118
+ try {
119
+ if (!statSync(candidate).isFile())
120
+ continue;
121
+ accessSync(candidate, fsConstants.X_OK);
122
+ return true;
123
+ }
124
+ catch {
125
+ // ENOENT, EACCES, or non-executable entry — keep scanning.
126
+ }
127
+ }
128
+ return false;
129
+ }
130
+ function runPlxt(args) {
131
+ const result = spawnSync("plxt", args, { encoding: "utf8" });
132
+ if (result.error) {
133
+ return {
134
+ exitCode: 127,
135
+ stdout: "",
136
+ stderr: result.error.message,
137
+ };
138
+ }
139
+ return {
140
+ exitCode: result.status ?? 1,
141
+ stdout: result.stdout ?? "",
142
+ stderr: result.stderr ?? "",
143
+ };
144
+ }
145
+ export async function runCodexHook(deps) {
146
+ const raw = deps.readStdin();
147
+ if (raw.trim().length === 0)
148
+ return; // silent pass
149
+ let parsed;
150
+ try {
151
+ parsed = JSON.parse(raw);
152
+ }
153
+ catch {
154
+ return; // malformed payload — silent pass, not our job to police Codex
155
+ }
156
+ const command = parsed?.tool_input?.command;
157
+ if (typeof command !== "string" || command.length === 0)
158
+ return;
159
+ const files = parseMthdsFiles(command);
160
+ if (files.length === 0)
161
+ return;
162
+ if (!deps.hasPlxt()) {
163
+ deps.emit(buildBlockPayload(`Missing required CLI tool: plxt (install via: ${PLXT_INSTALL_HINT})`));
164
+ return;
165
+ }
166
+ const errors = [];
167
+ for (const file of files) {
168
+ // Renamed-source paths and delete targets won't exist on disk post-patch.
169
+ // Skipping them is the right thing — this is identical to the bash
170
+ // hook's behaviour.
171
+ if (!deps.fileExists(file))
172
+ continue;
173
+ // Stage 1: plxt lint (block on failure)
174
+ const lint = deps.runPlxt(["lint", "--quiet", file]);
175
+ if (lint.exitCode !== 0) {
176
+ errors.push(formatLintError(file, lint));
177
+ continue; // skip fmt for files that failed lint
178
+ }
179
+ // Stage 2: plxt fmt — also blocks on failure (the bash hook this
180
+ // replaces aggregated lint and fmt errors into a single block reason).
181
+ // Re-formatting can fail e.g. when the file becomes invalid mid-edit;
182
+ // surfacing it loudly is better than letting a half-formatted file land.
183
+ const fmt = deps.runPlxt(["fmt", file]);
184
+ if (fmt.exitCode !== 0) {
185
+ errors.push(formatFmtError(file, fmt));
186
+ }
187
+ // Stage 3: mthds-agent validate bundle — DISABLED.
188
+ // Re-enable once mthds-agent supports offline validation
189
+ // (mthds-plugins/TODOS.md Phase 2D).
190
+ }
191
+ if (errors.length > 0) {
192
+ deps.emit(buildBlockPayload(errors.join("\n\n")));
193
+ }
194
+ }
195
+ // ── CLI entry point ───────────────────────────────────────────────────
196
+ export async function agentCodexHook() {
197
+ return runCodexHook({
198
+ readStdin: readAllStdin,
199
+ fileExists: existsSync,
200
+ hasPlxt: () => commandOnPath("plxt"),
201
+ runPlxt,
202
+ emit: (out) => process.stdout.write(out),
203
+ });
204
+ }
205
+ //# sourceMappingURL=codex-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-hook.js","sourceRoot":"","sources":["../../../src/agent/commands/codex-hook.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,24 @@
1
1
  /**
2
- * mthds-agent codex install-hook — idempotently merge the mthds Stop hook
3
- * into ~/.codex/hooks.json.
2
+ * mthds-agent codex install-hook — idempotently wire the mthds
3
+ * PostToolUse(apply_patch) hook into ~/.codex/hooks.json.
4
4
  *
5
- * Codex reads ~/.codex/hooks.json at startup and runs each Stop hook after
6
- * the session ends. We need to add our codex-validate-mthds.sh entry without
7
- * clobbering any other hooks the user may already have configured.
5
+ * Codex reads ~/.codex/hooks.json at startup and runs each registered hook
6
+ * after the matching tool call. We register a PostToolUse hook with
7
+ * matcher=apply_patch whose command is `mthds-agent codex hook` the actual
8
+ * validation runtime, registered under the same `codex` subcommand group as
9
+ * this install command.
8
10
  *
9
- * The companion hook script itself (codex-validate-mthds.sh) is copied into
10
- * place by install-codex.sh — this command only owns the JSON merge.
11
+ * Migration: pre-0.5.0 versions of this command wrote `hooks.Stop[]` entries
12
+ * pointing at a bash script (~/.codex/hooks/codex-validate-mthds.sh). The
13
+ * mthds-plugins WIP 0.9.0 install-codex.sh wrote `hooks.PostToolUse[]`
14
+ * entries pointing at the same bash script. Both are obsolete: the bash
15
+ * script is gone, and the new entry routes through `mthds-agent codex hook`
16
+ * directly. We sweep both legacy shapes here so users coming from any
17
+ * earlier install end up with a clean hooks.json.
11
18
  *
12
19
  * Output statuses (via agentSuccess):
13
- * - { status: "ALREADY_INSTALLED", hooks_file } — entry was already present
14
- * - { status: "INSTALLED_NEW_FILE", hooks_file } — hooks.json did not exist, we created it
15
- * - { status: "MERGED", hooks_file } — entry appended to existing hooks.json
20
+ * - { status: "INSTALLED_NEW_FILE", hooks_file } — hooks.json didn't exist
21
+ * - { status: "ALREADY_INSTALLED", hooks_file } — new-shape entry already present
22
+ * - { status: "MERGED", hooks_file } — entry appended (fresh or post-migration)
16
23
  */
17
24
  export declare function agentCodexInstallHook(): Promise<void>;
@@ -1,46 +1,74 @@
1
1
  /**
2
- * mthds-agent codex install-hook — idempotently merge the mthds Stop hook
3
- * into ~/.codex/hooks.json.
2
+ * mthds-agent codex install-hook — idempotently wire the mthds
3
+ * PostToolUse(apply_patch) hook into ~/.codex/hooks.json.
4
4
  *
5
- * Codex reads ~/.codex/hooks.json at startup and runs each Stop hook after
6
- * the session ends. We need to add our codex-validate-mthds.sh entry without
7
- * clobbering any other hooks the user may already have configured.
5
+ * Codex reads ~/.codex/hooks.json at startup and runs each registered hook
6
+ * after the matching tool call. We register a PostToolUse hook with
7
+ * matcher=apply_patch whose command is `mthds-agent codex hook` the actual
8
+ * validation runtime, registered under the same `codex` subcommand group as
9
+ * this install command.
8
10
  *
9
- * The companion hook script itself (codex-validate-mthds.sh) is copied into
10
- * place by install-codex.sh — this command only owns the JSON merge.
11
+ * Migration: pre-0.5.0 versions of this command wrote `hooks.Stop[]` entries
12
+ * pointing at a bash script (~/.codex/hooks/codex-validate-mthds.sh). The
13
+ * mthds-plugins WIP 0.9.0 install-codex.sh wrote `hooks.PostToolUse[]`
14
+ * entries pointing at the same bash script. Both are obsolete: the bash
15
+ * script is gone, and the new entry routes through `mthds-agent codex hook`
16
+ * directly. We sweep both legacy shapes here so users coming from any
17
+ * earlier install end up with a clean hooks.json.
11
18
  *
12
19
  * Output statuses (via agentSuccess):
13
- * - { status: "ALREADY_INSTALLED", hooks_file } — entry was already present
14
- * - { status: "INSTALLED_NEW_FILE", hooks_file } — hooks.json did not exist, we created it
15
- * - { status: "MERGED", hooks_file } — entry appended to existing hooks.json
20
+ * - { status: "INSTALLED_NEW_FILE", hooks_file } — hooks.json didn't exist
21
+ * - { status: "ALREADY_INSTALLED", hooks_file } — new-shape entry already present
22
+ * - { status: "MERGED", hooks_file } — entry appended (fresh or post-migration)
16
23
  */
17
24
  import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
18
25
  import { dirname, join } from "node:path";
19
26
  import { homedir } from "node:os";
20
27
  import { agentError, agentSuccess, AGENT_ERROR_DOMAINS } from "../output.js";
21
28
  // ── Constants ──────────────────────────────────────────────────────
22
- const HOOK_SCRIPT_PATH = "~/.codex/hooks/codex-validate-mthds.sh";
23
- const HOOK_MARKER = "codex-validate-mthds";
29
+ const HOOK_COMMAND = "mthds-agent codex hook";
30
+ const HOOK_MATCHER = "apply_patch";
24
31
  const HOOK_TIMEOUT = 30;
32
+ // Substrings that identify entries previously written by this command or
33
+ // the retired install-codex.sh script. Any entry whose command contains
34
+ // either is "ours" and gets cleaned up before the new entry is appended.
35
+ const LEGACY_MARKERS = ["codex-validate-mthds", "mthds-agent codex hook"];
25
36
  // ── Helpers ────────────────────────────────────────────────────────
26
37
  function hooksFilePath() {
27
38
  return join(homedir(), ".codex", "hooks.json");
28
39
  }
29
- function buildMthdsStopEntry() {
40
+ function buildPostToolUseEntry() {
30
41
  return {
42
+ matcher: HOOK_MATCHER,
31
43
  hooks: [
32
44
  {
33
45
  type: "command",
34
- command: HOOK_SCRIPT_PATH,
46
+ command: HOOK_COMMAND,
35
47
  timeout: HOOK_TIMEOUT,
36
48
  },
37
49
  ],
38
50
  };
39
51
  }
40
- function stopEntryMentionsMthds(entry) {
41
- if (!entry || !Array.isArray(entry.hooks))
52
+ // "Ours" is a fuzzy substring match across all known shapes (current +
53
+ // legacy bash-script entries) — used to identify entries to clean up.
54
+ // "Current" is an exact-prefix match on the new shape only — used to
55
+ // detect idempotent re-installs. The asymmetry is deliberate: a legacy
56
+ // entry should be removed and replaced, not treated as already-installed.
57
+ function entryIsOurs(entry) {
58
+ if (!entry || typeof entry !== "object")
42
59
  return false;
43
- return entry.hooks.some((h) => typeof h?.command === "string" && h.command.includes(HOOK_MARKER));
60
+ const cmds = entry.hooks;
61
+ if (!Array.isArray(cmds))
62
+ return false;
63
+ return cmds.some((h) => typeof h?.command === "string" &&
64
+ LEGACY_MARKERS.some((m) => h.command.includes(m)));
65
+ }
66
+ function entryIsCurrent(entry) {
67
+ if (entry?.matcher !== HOOK_MATCHER)
68
+ return false;
69
+ if (!Array.isArray(entry.hooks))
70
+ return false;
71
+ return entry.hooks.some((h) => typeof h?.command === "string" && h.command.startsWith(HOOK_COMMAND));
44
72
  }
45
73
  function writeAtomic(path, contents) {
46
74
  mkdirSync(dirname(path), { recursive: true });
@@ -51,11 +79,11 @@ function writeAtomic(path, contents) {
51
79
  // ── Main ───────────────────────────────────────────────────────────
52
80
  export async function agentCodexInstallHook() {
53
81
  const file = hooksFilePath();
54
- // Case 1: hooks.json does not exist — create it fresh.
82
+ // Case 1: hooks.json does not exist — create it fresh with the new shape.
55
83
  if (!existsSync(file)) {
56
84
  const fresh = {
57
85
  hooks: {
58
- Stop: [buildMthdsStopEntry()],
86
+ PostToolUse: [buildPostToolUseEntry()],
59
87
  },
60
88
  };
61
89
  try {
@@ -68,7 +96,7 @@ export async function agentCodexInstallHook() {
68
96
  agentSuccess({ status: "INSTALLED_NEW_FILE", hooks_file: file });
69
97
  return;
70
98
  }
71
- // Case 2: hooks.json exists — read, parse, merge.
99
+ // Case 2: hooks.json exists — read, validate, migrate legacy entries, merge.
72
100
  let raw;
73
101
  try {
74
102
  raw = readFileSync(file, "utf8");
@@ -92,24 +120,58 @@ export async function agentCodexInstallHook() {
92
120
  if (parsed.hooks === undefined) {
93
121
  parsed.hooks = {};
94
122
  }
95
- else if (typeof parsed.hooks !== "object" || parsed.hooks === null || Array.isArray(parsed.hooks)) {
123
+ else if (typeof parsed.hooks !== "object" ||
124
+ parsed.hooks === null ||
125
+ Array.isArray(parsed.hooks)) {
96
126
  agentError(`${file} has an invalid \`hooks\` field (expected object, got ${Array.isArray(parsed.hooks) ? "array" : typeof parsed.hooks}). Fix the file by hand.`, "ConfigError", { error_domain: AGENT_ERROR_DOMAINS.CONFIG });
97
127
  return;
98
128
  }
99
129
  const hooks = parsed.hooks;
100
- if (hooks.Stop === undefined) {
101
- hooks.Stop = [];
130
+ // Validate hooks.PostToolUse if present.
131
+ if (hooks.PostToolUse !== undefined && !Array.isArray(hooks.PostToolUse)) {
132
+ agentError(`${file} has an invalid \`hooks.PostToolUse\` field (expected array, got ${typeof hooks.PostToolUse}). Fix the file by hand.`, "ConfigError", { error_domain: AGENT_ERROR_DOMAINS.CONFIG });
133
+ return;
102
134
  }
103
- else if (!Array.isArray(hooks.Stop)) {
135
+ // Validate hooks.Stop if present (we may need to mutate it).
136
+ if (hooks.Stop !== undefined && !Array.isArray(hooks.Stop)) {
104
137
  agentError(`${file} has an invalid \`hooks.Stop\` field (expected array, got ${typeof hooks.Stop}). Fix the file by hand.`, "ConfigError", { error_domain: AGENT_ERROR_DOMAINS.CONFIG });
105
138
  return;
106
139
  }
107
- // Idempotency: if any existing Stop entry already references our script, no-op.
108
- if (hooks.Stop.some(stopEntryMentionsMthds)) {
140
+ // Track whether we mutated anything in memory. If yes, we must write —
141
+ // even when a current-shape entry already exists, because a stale legacy
142
+ // entry alongside it is still pollution that should be cleaned up.
143
+ let dirty = false;
144
+ // Migration: drop any legacy Stop entry pointing at our old script.
145
+ if (Array.isArray(hooks.Stop)) {
146
+ const before = hooks.Stop.length;
147
+ hooks.Stop = hooks.Stop.filter((e) => !entryIsOurs(e));
148
+ if (hooks.Stop.length !== before)
149
+ dirty = true;
150
+ if (hooks.Stop.length === 0) {
151
+ delete hooks.Stop;
152
+ }
153
+ }
154
+ // Initialise PostToolUse if absent.
155
+ if (hooks.PostToolUse === undefined) {
156
+ hooks.PostToolUse = [];
157
+ }
158
+ // Detect whether a current-shape entry already exists, then strip any
159
+ // legacy PostToolUse(apply_patch) entries that pointed at the old bash
160
+ // script. Doing both in this order means a hooks.json with both a current
161
+ // and a legacy entry gets cleaned up on re-run.
162
+ const hasCurrent = hooks.PostToolUse.some(entryIsCurrent);
163
+ const beforePtu = hooks.PostToolUse.length;
164
+ hooks.PostToolUse = hooks.PostToolUse.filter((e) => entryIsCurrent(e) || !entryIsOurs(e));
165
+ if (hooks.PostToolUse.length !== beforePtu)
166
+ dirty = true;
167
+ if (!hasCurrent) {
168
+ hooks.PostToolUse.push(buildPostToolUseEntry());
169
+ dirty = true;
170
+ }
171
+ if (!dirty) {
109
172
  agentSuccess({ status: "ALREADY_INSTALLED", hooks_file: file });
110
173
  return;
111
174
  }
112
- hooks.Stop.push(buildMthdsStopEntry());
113
175
  try {
114
176
  writeAtomic(file, JSON.stringify(parsed, null, 2) + "\n");
115
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agent/commands/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agent/commands/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE7E,sEAAsE;AAEtE,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAC9C,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,yEAAyE;AACzE,wEAAwE;AACxE,yEAAyE;AACzE,MAAM,cAAc,GAAG,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;AAwB1E,sEAAsE;AAEtE,SAAS,aAAa;IACpB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,YAAY;aACtB;SACF;KACF,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,sEAAsE;AACtE,qEAAqE;AACrE,uEAAuE;AACvE,0EAA0E;AAC1E,SAAS,WAAW,CAAC,KAA0B;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,IAAI,GAAI,KAAmB,CAAC,KAAK,CAAC;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,IAAI,CAAC,IAAI,CACd,CAAC,CAAC,EAAE,EAAE,CACJ,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ;QAC9B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAgB;IACtC,IAAI,KAAK,EAAE,OAAO,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,QAAgB;IACjD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,GAAG,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACvD,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,sEAAsE;AAEtE,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAE7B,0EAA0E;IAC1E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAc;YACvB,KAAK,EAAE;gBACL,WAAW,EAAE,CAAC,qBAAqB,EAAE,CAAC;aACvC;SACF,CAAC;QACF,IAAI,CAAC;YACH,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CACR,oBAAoB,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,EACrD,SAAS,EACT,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,EAAE,CACzC,CAAC;YACF,OAAO;QACT,CAAC;QACD,YAAY,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CACR,kBAAkB,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,EACnD,SAAS,EACT,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,EAAE,CACzC,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,MAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CACR,mBAAmB,IAAI,KAAM,GAAa,CAAC,OAAO,iDAAiD,EACnG,aAAa,EACb,EAAE,YAAY,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAC7C,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,UAAU,CACR,GAAG,IAAI,mDAAmD,EAC1D,aAAa,EACb,EAAE,YAAY,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAC7C,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;IACpB,CAAC;SAAM,IACL,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAChC,MAAM,CAAC,KAAK,KAAK,IAAI;QACrB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAC3B,CAAC;QACD,UAAU,CACR,GAAG,IAAI,yDACL,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,KACxD,0BAA0B,EAC1B,aAAa,EACb,EAAE,YAAY,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAC7C,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAIpB,CAAC;IAEF,yCAAyC;IACzC,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACzE,UAAU,CACR,GAAG,IAAI,oEAAoE,OAAO,KAAK,CAAC,WAAW,0BAA0B,EAC7H,aAAa,EACb,EAAE,YAAY,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAC7C,CAAC;QACF,OAAO;IACT,CAAC;IAED,6DAA6D;IAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,UAAU,CACR,GAAG,IAAI,6DAA6D,OAAO,KAAK,CAAC,IAAI,0BAA0B,EAC/G,aAAa,EACb,EAAE,YAAY,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAC7C,CAAC;QACF,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,yEAAyE;IACzE,mEAAmE;IACnE,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,oEAAoE;IACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,KAAK,GAAG,IAAI,CAAC;QAC/C,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,sEAAsE;IACtE,uEAAuE;IACvE,0EAA0E;IAC1E,gDAAgD;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;IAC3C,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAC5C,CAAC;IACF,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,GAAG,IAAI,CAAC;IAEzD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAChD,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,YAAY,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CACR,mBAAmB,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,EACpD,SAAS,EACT,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,EAAE,CACzC,CAAC;QACF,OAAO;IACT,CAAC;IAED,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC"}
@@ -6,6 +6,7 @@ import { agentSuccess } from "../output.js";
6
6
  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
+ import { inspectCodexConfig } from "./codex-config.js";
9
10
  // ── Output format ───────────────────────────────────────────────────
10
11
  export const OutputFormat = {
11
12
  MARKDOWN: "markdown",
@@ -26,7 +27,7 @@ function getBinaryPath(bin) {
26
27
  function escapeCell(value) {
27
28
  return value.replace(/\|/g, "\\|");
28
29
  }
29
- function formatDoctorMarkdown(healthy, dependencies, config, issues) {
30
+ function formatDoctorMarkdown(healthy, dependencies, config, issues, codex) {
30
31
  const lines = [];
31
32
  lines.push(`# Doctor Report`);
32
33
  lines.push("");
@@ -59,6 +60,27 @@ function formatDoctorMarkdown(healthy, dependencies, config, issues) {
59
60
  lines.push(`| ${escapeCell(entry.key)} | ${escapeCell(entry.value)} | ${escapeCell(entry.source)} |`);
60
61
  }
61
62
  lines.push("");
63
+ // Codex
64
+ lines.push("## Codex");
65
+ lines.push("");
66
+ if (!codex.exists) {
67
+ lines.push(`- No ~/.codex/config.toml found. Run \`mthds-agent codex apply-config\` to create one with sandbox network access.`);
68
+ }
69
+ else if (codex.parse_error) {
70
+ lines.push(`- [ERROR] Could not parse ${codex.config_file}: ${codex.parse_error}`);
71
+ }
72
+ else {
73
+ if (codex.needs_change) {
74
+ lines.push(`- [WARN] Sandbox network access not enabled. Run \`mthds-agent codex apply-config\` to add \`[${codex.needs_change.table}] ${codex.needs_change.key} = ${codex.needs_change.value}\`.`);
75
+ }
76
+ else {
77
+ lines.push(`- Sandbox network access: ok`);
78
+ }
79
+ for (const w of codex.warnings) {
80
+ lines.push(`- [WARN] ${w.message}`);
81
+ }
82
+ }
83
+ lines.push("");
62
84
  // Issues
63
85
  if (issues.length > 0) {
64
86
  lines.push("## Issues");
@@ -155,6 +177,23 @@ export async function agentDoctor(format = OutputFormat.MARKDOWN) {
155
177
  });
156
178
  }
157
179
  }
180
+ // Codex sandbox config (read-only inspection — doctor never writes).
181
+ const codex = inspectCodexConfig();
182
+ if (codex.needs_change) {
183
+ issues.push({
184
+ severity: "warning",
185
+ message: `Codex sandbox network not enabled in ${codex.config_file}. Run \`mthds-agent codex apply-config\`.`,
186
+ });
187
+ }
188
+ for (const w of codex.warnings) {
189
+ issues.push({ severity: "warning", message: `Codex: ${w.message}` });
190
+ }
191
+ if (codex.parse_error) {
192
+ issues.push({
193
+ severity: "error",
194
+ message: `Codex config parse error in ${codex.config_file}: ${codex.parse_error}`,
195
+ });
196
+ }
158
197
  const hasErrors = issues.some((issue) => issue.severity === "error");
159
198
  const healthy = !hasErrors;
160
199
  if (format === OutputFormat.JSON) {
@@ -163,10 +202,11 @@ export async function agentDoctor(format = OutputFormat.MARKDOWN) {
163
202
  dependencies,
164
203
  config: configEntries,
165
204
  issues,
205
+ codex,
166
206
  });
167
207
  }
168
208
  else {
169
- process.stdout.write(formatDoctorMarkdown(healthy, dependencies, configEntries, issues));
209
+ process.stdout.write(formatDoctorMarkdown(healthy, dependencies, configEntries, issues, codex));
170
210
  }
171
211
  }
172
212
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/agent/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/agent/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import type { BinaryCheckEntry } from "./update-cache.js";
12
12
  /** Minimum plugin version this mthds-agent release requires. */
13
- export declare const MIN_PLUGIN_VERSION = ">=0.7.0";
13
+ export declare const MIN_PLUGIN_VERSION = ">=0.9.0";
14
14
  /** Keys in installed_plugins.json for the mthds plugin (prod and dev targets). */
15
15
  export declare const PLUGIN_KEYS: readonly ["mthds@mthds-plugins", "mthds-dev@mthds-plugins"];
16
16
  /** Command to update the plugin (prod). */
@@ -22,7 +22,7 @@ export declare const INSTALLED_PLUGINS_PATH: string;
22
22
  *
23
23
  * Returns:
24
24
  * - `{ s: "ok", v: "0.7.1" }` — plugin installed and satisfies constraint
25
- * - `{ s: "outdated", v: "0.6.2", r: ">=0.7.0" }` — plugin too old
25
+ * - `{ s: "outdated", v: "0.6.2", r: ">=0.9.0" }` — plugin too old
26
26
  * - `{ s: "missing", v: null }` — plugin key exists but no user-scope entry
27
27
  * - `null` — not in Claude Code (file absent or corrupt)
28
28
  */
@@ -14,7 +14,7 @@ import { homedir } from "node:os";
14
14
  import semver from "semver";
15
15
  // ── Constants ──────────────────────────────────────────────────────
16
16
  /** Minimum plugin version this mthds-agent release requires. */
17
- export const MIN_PLUGIN_VERSION = ">=0.7.0";
17
+ export const MIN_PLUGIN_VERSION = ">=0.9.0";
18
18
  /** Keys in installed_plugins.json for the mthds plugin (prod and dev targets). */
19
19
  export const PLUGIN_KEYS = [
20
20
  "mthds@mthds-plugins",
@@ -30,7 +30,7 @@ export const INSTALLED_PLUGINS_PATH = join(homedir(), ".claude", "plugins", "ins
30
30
  *
31
31
  * Returns:
32
32
  * - `{ s: "ok", v: "0.7.1" }` — plugin installed and satisfies constraint
33
- * - `{ s: "outdated", v: "0.6.2", r: ">=0.7.0" }` — plugin too old
33
+ * - `{ s: "outdated", v: "0.6.2", r: ">=0.9.0" }` — plugin too old
34
34
  * - `{ s: "missing", v: null }` — plugin key exists but no user-scope entry
35
35
  * - `null` — not in Claude Code (file absent or corrupt)
36
36
  */
package/dist/agent-cli.js CHANGED
@@ -24,6 +24,8 @@ import { agentUpdateCheck } from "./agent/commands/update-check.js";
24
24
  import { agentUpgrade } from "./agent/commands/upgrade.js";
25
25
  import { agentBootstrap } from "./agent/commands/bootstrap.js";
26
26
  import { agentCodexInstallHook } from "./agent/commands/codex.js";
27
+ import { agentCodexHook } from "./agent/commands/codex-hook.js";
28
+ import { agentCodexApplyConfig } from "./agent/commands/codex-config.js";
27
29
  import { agentConfigGet, agentConfigList, agentConfigSet } from "./agent/commands/config.js";
28
30
  import { agentInstall } from "./agent/commands/install.js";
29
31
  import { agentPublish } from "./agent/commands/publish.js";
@@ -309,15 +311,31 @@ program
309
311
  // ── mthds-agent codex ─────────────────────────────────────────────
310
312
  const codex = program
311
313
  .command("codex")
312
- .description("Codex-plugin install helpers")
314
+ .description("Codex plugin helpers (hook runtime + install)")
313
315
  .exitOverride();
314
316
  codex
315
317
  .command("install-hook")
316
- .description("Idempotently merge the mthds Stop hook into ~/.codex/hooks.json")
318
+ .description("Idempotently wire the mthds PostToolUse(apply_patch) hook into ~/.codex/hooks.json")
317
319
  .exitOverride()
318
320
  .action(async () => {
319
321
  await agentCodexInstallHook();
320
322
  });
323
+ codex
324
+ .command("hook")
325
+ .description("Codex PostToolUse(apply_patch) hook runtime — invoked by Codex, not directly")
326
+ .exitOverride()
327
+ .action(async () => {
328
+ await agentCodexHook();
329
+ });
330
+ codex
331
+ .command("apply-config")
332
+ .description("Additively merge required sandbox settings into ~/.codex/config.toml so the mthds hook can access the network")
333
+ .option("--check", "Exit non-zero if anything would change (no writes)")
334
+ .option("--dry-run", "Print proposed diff and exit without modifying the file")
335
+ .exitOverride()
336
+ .action(async (opts) => {
337
+ await agentCodexApplyConfig({ check: opts.check, dryRun: opts.dryRun });
338
+ });
321
339
  // ── Runner dispatch ──────────────────────────────────────────────────
322
340
  // API runner: register per-command handlers with full arg parsing.
323
341
  // Pipelex runner: register passthrough stubs that forward to pipelex-agent.
@@ -1 +1 @@
1
- {"version":3,"file":"agent-cli.js","sourceRoot":"","sources":["../src/agent-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-cli.js","sourceRoot":"","sources":["../src/agent-cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mthds",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "CLI and SDK for MTHDS — the open standard for executable AI methods. Install, execute, and manage methods.",
5
5
  "license": "MIT",
6
6
  "repository": {