@mnemonik/codex-hooks 0.8.16 → 0.8.17
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/hook.js +49 -40
- package/dist/hook.js.map +1 -1
- package/dist/install.d.ts +5 -6
- package/dist/install.js +216 -79
- package/dist/install.js.map +1 -1
- package/dist/lib/behavior.d.ts +4 -3
- package/dist/lib/behavior.js +4 -3
- package/dist/lib/behavior.js.map +1 -1
- package/dist/lib/codexOutput.js +4 -2
- package/dist/lib/codexOutput.js.map +1 -1
- package/dist/lib/http.d.ts +5 -1
- package/dist/lib/http.js +39 -23
- package/dist/lib/http.js.map +1 -1
- package/dist/lib/installerSupport.d.ts +32 -0
- package/dist/lib/installerSupport.js +554 -0
- package/dist/lib/installerSupport.js.map +1 -0
- package/package.json +1 -1
package/dist/hook.js
CHANGED
|
@@ -176,6 +176,7 @@ async function handlePreEdit(input, config) {
|
|
|
176
176
|
event: 'PreToolUse',
|
|
177
177
|
toolName: input.tool_name ?? '',
|
|
178
178
|
toolArgs: input.tool_input,
|
|
179
|
+
eventId: input.tool_use_id,
|
|
179
180
|
filePaths: existingTargets.map((t) => t.path),
|
|
180
181
|
});
|
|
181
182
|
if (!injectionsResult?.ok) {
|
|
@@ -247,6 +248,7 @@ async function handlePreBash(input, config) {
|
|
|
247
248
|
event: 'PreToolUse',
|
|
248
249
|
toolName: input.tool_name ?? 'Bash',
|
|
249
250
|
toolArgs: input.tool_input,
|
|
251
|
+
eventId: input.tool_use_id,
|
|
250
252
|
});
|
|
251
253
|
if (!injectionsResp?.ok) {
|
|
252
254
|
await emitGateFired(input, config, 'Bash', 'advisory', injectionsResp ? 'no_match' : 'unreachable');
|
|
@@ -329,6 +331,16 @@ function resolveMcpToolArgs(raw) {
|
|
|
329
331
|
return { code: obj.code.slice(0, MAX_TOOL_ARGS_BYTES) };
|
|
330
332
|
return undefined;
|
|
331
333
|
}
|
|
334
|
+
/** MCP CallToolResult success is optional-isError=false by specification. */
|
|
335
|
+
function mcpResultSucceeded(result) {
|
|
336
|
+
if (!result || typeof result !== 'object' || Array.isArray(result))
|
|
337
|
+
return false;
|
|
338
|
+
const record = result;
|
|
339
|
+
return (record.isError !== true &&
|
|
340
|
+
record.is_error !== true &&
|
|
341
|
+
record.ok !== false &&
|
|
342
|
+
!('error' in record && record.error != null));
|
|
343
|
+
}
|
|
332
344
|
/**
|
|
333
345
|
* PreToolUse handler for the `mcp__mnemonik__.*` matcher. Calls the server's
|
|
334
346
|
* ordering-rule engine and maps the verdict to a Codex output shape.
|
|
@@ -392,63 +404,60 @@ async function handlePreMcp(input, config) {
|
|
|
392
404
|
async function handlePostTool(input, config) {
|
|
393
405
|
const tool = input.tool_name ?? '';
|
|
394
406
|
const targets = extractToolFileTargets(tool, input.tool_input, input.cwd);
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
if (
|
|
407
|
+
const editConfirmations = await Promise.all(targets.map((target) => trackIdeEdit({
|
|
408
|
+
server: config.server,
|
|
409
|
+
apiKey: config.apiKey,
|
|
410
|
+
sessionId: sessionId(input),
|
|
411
|
+
filePath: target.path,
|
|
412
|
+
cwd: input.cwd,
|
|
413
|
+
eventId: input.tool_use_id,
|
|
414
|
+
})));
|
|
415
|
+
const editsConfirmed = editConfirmations.every(Boolean);
|
|
416
|
+
if (targets.length > 0 && !editsConfirmed)
|
|
417
|
+
writeAllow();
|
|
418
|
+
const isMnemonikMcpExecution = MNEMONIK_MCP_PREFIX.test(tool) && input.tool_response !== undefined;
|
|
419
|
+
const projectId = config.apiKey ? (await findProjectIdentity(input.cwd))?.projectId : undefined;
|
|
420
|
+
if (isMnemonikMcpExecution && config.apiKey) {
|
|
405
421
|
await fetchMcpRecord({
|
|
406
422
|
server: config.server,
|
|
407
423
|
apiKey: config.apiKey,
|
|
408
424
|
cwd: input.cwd,
|
|
409
|
-
projectId
|
|
425
|
+
projectId,
|
|
410
426
|
codexSessionId: sessionId(input),
|
|
411
427
|
tool,
|
|
412
428
|
args: (input.tool_input ?? {}),
|
|
413
429
|
result: input.tool_response,
|
|
414
430
|
});
|
|
415
|
-
// temporal-grounding Phase 1 (best-effort on Codex) — forward tool identity
|
|
416
|
-
// on a PostToolUse /injections so the server's host-agnostic epoch writer can
|
|
417
|
-
// mark the code_search obligation for Codex too. Codex fires MCP PostToolUse
|
|
418
|
-
// hooks only intermittently (official docs), so this is best-effort and the
|
|
419
|
-
// 'either'-precedence MCP-side floor still covers the gaps. Runs regardless of
|
|
420
|
-
// CHECKPOINT_PRESSURE (that gate governs checkpoint prose, not the epoch
|
|
421
|
-
// write). Fail-open; response ignored.
|
|
422
|
-
await fetchInjections({
|
|
423
|
-
server: config.server,
|
|
424
|
-
apiKey: config.apiKey,
|
|
425
|
-
cwd: input.cwd,
|
|
426
|
-
projectId: (await findProjectIdentity(input.cwd))?.projectId,
|
|
427
|
-
codexSessionId: sessionId(input),
|
|
428
|
-
event: 'PostToolUse',
|
|
429
|
-
toolName: tool,
|
|
430
|
-
toolArgs: resolveMcpToolArgs(input.tool_input),
|
|
431
|
-
});
|
|
432
431
|
}
|
|
433
|
-
//
|
|
434
|
-
//
|
|
435
|
-
//
|
|
436
|
-
//
|
|
437
|
-
|
|
438
|
-
if (CHECKPOINT_PRESSURE !== 'off' && config.apiKey) {
|
|
432
|
+
// One PostToolUse lookup owns both concerns, but Mnemonik MCP results are
|
|
433
|
+
// always observe-only: persist their lifecycle metadata without consuming or
|
|
434
|
+
// rendering a checkpoint candidate on the result that may have satisfied it.
|
|
435
|
+
// Visible volume pressure belongs to the next non-Mnemonik PostToolUse.
|
|
436
|
+
if (config.apiKey && (CHECKPOINT_PRESSURE !== 'off' || isMnemonikMcpExecution)) {
|
|
439
437
|
const injectionsResp = await fetchInjections({
|
|
440
438
|
server: config.server,
|
|
441
439
|
apiKey: config.apiKey,
|
|
442
440
|
cwd: input.cwd,
|
|
443
|
-
projectId
|
|
441
|
+
projectId,
|
|
444
442
|
codexSessionId: sessionId(input),
|
|
445
443
|
event: 'PostToolUse',
|
|
444
|
+
eventId: input.tool_use_id,
|
|
445
|
+
...(isMnemonikMcpExecution
|
|
446
|
+
? {
|
|
447
|
+
toolName: tool,
|
|
448
|
+
toolArgs: resolveMcpToolArgs(input.tool_input),
|
|
449
|
+
toolSucceeded: mcpResultSucceeded(input.tool_response),
|
|
450
|
+
observeOnly: true,
|
|
451
|
+
}
|
|
452
|
+
: {}),
|
|
446
453
|
});
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
454
|
+
if (CHECKPOINT_PRESSURE !== 'off' && !isMnemonikMcpExecution) {
|
|
455
|
+
const checkpoint = injectionsResp?.ok && Array.isArray(injectionsResp.injections)
|
|
456
|
+
? injectionsResp.injections.find((inj) => inj.signal === 'checkpoint_required')
|
|
457
|
+
: undefined;
|
|
458
|
+
if (checkpoint) {
|
|
459
|
+
writeOutput(additionalContext(input.hook_event_name, trimContext(renderVisibleMnemonikText(checkpoint.envelope), 4_000)));
|
|
460
|
+
}
|
|
452
461
|
}
|
|
453
462
|
}
|
|
454
463
|
writeAllow();
|
package/dist/hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
|
package/dist/install.d.ts
CHANGED
|
@@ -4,23 +4,22 @@ interface HookCommand {
|
|
|
4
4
|
command: string;
|
|
5
5
|
timeout?: number;
|
|
6
6
|
statusMessage?: string;
|
|
7
|
+
[k: string]: unknown;
|
|
7
8
|
}
|
|
8
9
|
interface HookGroup {
|
|
9
10
|
matcher?: string;
|
|
10
11
|
hooks?: HookCommand[];
|
|
12
|
+
[k: string]: unknown;
|
|
11
13
|
}
|
|
12
14
|
type InstallTarget = 'host' | 'project';
|
|
13
15
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* send-message-v2` on 0.142.0), so a SessionStart matcher such as
|
|
17
|
-
* `startup|resume|clear` suppresses the hook entirely on the path we care
|
|
18
|
-
* about most. Leave SessionStart unfiltered and let the dispatcher self-skip
|
|
19
|
-
* compact resumes at runtime instead.
|
|
16
|
+
* App-server-backed Codex threads can start with sessionStartSource=null, so
|
|
17
|
+
* SessionStart must remain unfiltered. Compact resumes are skipped at runtime.
|
|
20
18
|
*/
|
|
21
19
|
declare const SESSION_START_MATCHER: string | undefined;
|
|
22
20
|
declare function buildHookEntry(dispatcher: string, timeout?: number): HookCommand;
|
|
23
21
|
declare function patchHookGroup(groups: HookGroup[] | undefined, matcher: string | undefined, entry: HookCommand): HookGroup[];
|
|
22
|
+
/** Edit only the canonical [features] table; same-named keys elsewhere stay. */
|
|
24
23
|
declare function ensureCodexHooksFeature(configToml: string): string;
|
|
25
24
|
declare function parseArgs(argv: string[]): {
|
|
26
25
|
target: InstallTarget;
|
package/dist/install.js
CHANGED
|
@@ -1,98 +1,170 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { existsSync, realpathSync } from 'node:fs';
|
|
3
|
-
import {
|
|
4
|
-
import { dirname, join, resolve } from 'node:path';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
5
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { atomicWriteTransaction, buildManagedCommand, canonicalizeConfigTargets, installerConfigLockPath, installDurableRuntime, isManagedCommand, parseManagedCommand, readTextIfExists, resolvePackageRoot, resolveRuntimeParent, withFileLocks, } from './lib/installerSupport.js';
|
|
6
6
|
const HOOK_TAG = 'mnemonik-codex-hooks';
|
|
7
|
+
const HOOK_OWNER = 'codex-hooks';
|
|
8
|
+
const PACKAGE_NAME = '@mnemonik/codex-hooks';
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* send-message-v2` on 0.142.0), so a SessionStart matcher such as
|
|
11
|
-
* `startup|resume|clear` suppresses the hook entirely on the path we care
|
|
12
|
-
* about most. Leave SessionStart unfiltered and let the dispatcher self-skip
|
|
13
|
-
* compact resumes at runtime instead.
|
|
10
|
+
* App-server-backed Codex threads can start with sessionStartSource=null, so
|
|
11
|
+
* SessionStart must remain unfiltered. Compact resumes are skipped at runtime.
|
|
14
12
|
*/
|
|
15
13
|
const SESSION_START_MATCHER = undefined;
|
|
16
14
|
function resolveDispatcherPath() {
|
|
17
|
-
|
|
18
|
-
return resolve(dirname(here), 'hook.js');
|
|
15
|
+
return resolve(fileURLToPath(new URL('./hook.js', import.meta.url)));
|
|
19
16
|
}
|
|
20
|
-
// Hook exec timeout is 5s here (Codex) vs 30s in @mnemonik/cursor-hooks
|
|
21
|
-
// (install.ts buildHookEntry). The asymmetry is intentional and host-driven:
|
|
22
|
-
// Codex fires MCP hooks intermittently and expects fast dispatchers, while
|
|
23
|
-
// Cursor's afterMCPExecution can carry larger tool payloads. Do NOT "unify"
|
|
24
|
-
// these to one value — it would force both packages to republish for no gain.
|
|
25
17
|
function buildHookEntry(dispatcher, timeout = 5) {
|
|
26
18
|
return {
|
|
27
19
|
type: 'command',
|
|
28
|
-
command:
|
|
20
|
+
command: buildManagedCommand(dispatcher, HOOK_OWNER),
|
|
29
21
|
timeout,
|
|
30
22
|
};
|
|
31
23
|
}
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
return true;
|
|
35
|
-
return Boolean(group.hooks?.some((h) => typeof h.command === 'string' && h.command.includes('codex-hooks')));
|
|
24
|
+
function isMnemonikHookCommand(command, currentDispatcher) {
|
|
25
|
+
return isManagedCommand(command, HOOK_OWNER, PACKAGE_NAME, 'hook.js', currentDispatcher);
|
|
36
26
|
}
|
|
37
27
|
function patchHookGroup(groups, matcher, entry) {
|
|
38
|
-
const
|
|
28
|
+
const currentDispatcher = parseManagedCommand(entry.command, HOOK_OWNER) ?? undefined;
|
|
29
|
+
const filtered = removeMnemonikHookGroups(groups, currentDispatcher);
|
|
39
30
|
const group = { hooks: [entry] };
|
|
40
31
|
if (matcher !== undefined)
|
|
41
32
|
group.matcher = matcher;
|
|
42
33
|
filtered.push(group);
|
|
43
34
|
return filtered;
|
|
44
35
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
36
|
+
function removeMnemonikHookGroups(groups, currentDispatcher) {
|
|
37
|
+
const filtered = [];
|
|
38
|
+
for (const group of groups ?? []) {
|
|
39
|
+
const originalHooks = group.hooks ?? [];
|
|
40
|
+
const remainingHooks = originalHooks.filter((hook) => typeof hook.command !== 'string' || !isMnemonikHookCommand(hook.command, currentDispatcher));
|
|
41
|
+
const removedManagedHook = remainingHooks.length !== originalHooks.length;
|
|
42
|
+
if (removedManagedHook) {
|
|
43
|
+
if (remainingHooks.length > 0)
|
|
44
|
+
filtered.push({ ...group, hooks: remainingHooks });
|
|
45
|
+
}
|
|
46
|
+
else if (!(group.matcher === HOOK_TAG && originalHooks.length === 0)) {
|
|
47
|
+
filtered.push(group);
|
|
48
|
+
}
|
|
54
49
|
}
|
|
50
|
+
return filtered;
|
|
55
51
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
await writeFile(path, JSON.stringify(value, null, 2) + '\n', 'utf8');
|
|
52
|
+
function isRecord(value) {
|
|
53
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
59
54
|
}
|
|
60
|
-
function
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
55
|
+
function validateHooksJson(parsed) {
|
|
56
|
+
if (!isRecord(parsed))
|
|
57
|
+
throw new Error('expected a top-level JSON object');
|
|
58
|
+
if (parsed.hooks !== undefined) {
|
|
59
|
+
if (!isRecord(parsed.hooks))
|
|
60
|
+
throw new Error('expected "hooks" to be a JSON object');
|
|
61
|
+
for (const [event, groups] of Object.entries(parsed.hooks)) {
|
|
62
|
+
if (!Array.isArray(groups) || !groups.every(isRecord)) {
|
|
63
|
+
throw new Error(`expected "hooks.${event}" to be an array of hook groups`);
|
|
64
|
+
}
|
|
65
|
+
for (const group of groups) {
|
|
66
|
+
if (group.hooks === undefined)
|
|
67
|
+
continue;
|
|
68
|
+
if (!Array.isArray(group.hooks) || !group.hooks.every(isRecord)) {
|
|
69
|
+
throw new Error(`expected "hooks.${event}[].hooks" to be an array of hook objects`);
|
|
70
|
+
}
|
|
71
|
+
for (const hook of group.hooks) {
|
|
72
|
+
if (hook.command !== undefined && typeof hook.command !== 'string') {
|
|
73
|
+
throw new Error(`expected "hooks.${event}[].hooks[].command" to be a string`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
67
78
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
79
|
+
return parsed;
|
|
80
|
+
}
|
|
81
|
+
async function readHooksJson(path) {
|
|
82
|
+
const raw = await readTextIfExists(path);
|
|
83
|
+
if (raw === null)
|
|
84
|
+
return { hooksJson: {}, raw: null };
|
|
85
|
+
try {
|
|
86
|
+
return { hooksJson: validateHooksJson(JSON.parse(raw)), raw };
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
throw new Error(`Could not parse ${path}: ${error instanceof Error ? error.message : String(error)}`);
|
|
72
90
|
}
|
|
73
|
-
const insertAt = featureHeader.index + featureHeader[0].length;
|
|
74
|
-
return `${configToml.slice(0, insertAt)}\n${key} = true${configToml.slice(insertAt)}`;
|
|
75
91
|
}
|
|
92
|
+
/** Edit only the canonical [features] table; same-named keys elsewhere stay. */
|
|
76
93
|
function ensureCodexHooksFeature(configToml) {
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
94
|
+
const newline = configToml.includes('\r\n') ? '\r\n' : '\n';
|
|
95
|
+
const trailingNewline = configToml.endsWith('\n');
|
|
96
|
+
const lines = configToml.split(/\r?\n/);
|
|
97
|
+
if (trailingNewline)
|
|
98
|
+
lines.pop();
|
|
99
|
+
const featureHeaders = [];
|
|
100
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
101
|
+
if (/^\s*\[\s*(?:features|"features"|'features')\s*\]\s*(?:#.*)?$/.test(lines[index])) {
|
|
102
|
+
featureHeaders.push(index);
|
|
103
|
+
}
|
|
87
104
|
}
|
|
105
|
+
if (featureHeaders.length > 1)
|
|
106
|
+
throw new Error('Duplicate [features] tables in Codex config');
|
|
107
|
+
if (featureHeaders.length === 0) {
|
|
108
|
+
const firstTable = lines.findIndex((line) => /^\s*\[\[?.+?\]\]?\s*(?:#.*)?$/.test(line));
|
|
109
|
+
const rootLines = firstTable === -1 ? lines : lines.slice(0, firstTable);
|
|
110
|
+
if (rootLines.some((line) => /^\s*(?:features|"features"|'features')\s*(?:=|\.)/.test(line))) {
|
|
111
|
+
throw new Error('Unsupported inline or dotted features table representation in Codex config');
|
|
112
|
+
}
|
|
113
|
+
const prefix = configToml.length === 0
|
|
114
|
+
? ''
|
|
115
|
+
: configToml.endsWith('\n')
|
|
116
|
+
? configToml
|
|
117
|
+
: `${configToml}${newline}`;
|
|
118
|
+
return `${prefix}${prefix ? newline : ''}[features]${newline}hooks = true${newline}`;
|
|
119
|
+
}
|
|
120
|
+
const start = featureHeaders[0];
|
|
121
|
+
let end = lines.length;
|
|
122
|
+
for (let index = start + 1; index < lines.length; index += 1) {
|
|
123
|
+
if (/^\s*\[\[?.+?\]\]?\s*(?:#.*)?$/.test(lines[index])) {
|
|
124
|
+
end = index;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const section = [];
|
|
129
|
+
let sawHooks = false;
|
|
130
|
+
for (const line of lines.slice(start + 1, end)) {
|
|
131
|
+
if (/^\s*(?:codex_hooks|"codex_hooks"|'codex_hooks')\s*=/.test(line))
|
|
132
|
+
continue;
|
|
133
|
+
const hooks = line.match(/^(\s*)(?:hooks|"hooks"|'hooks')\s*=.*?(\s+#.*)?$/);
|
|
134
|
+
if (!hooks) {
|
|
135
|
+
section.push(line);
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (sawHooks)
|
|
139
|
+
throw new Error('Duplicate hooks keys in Codex [features] table');
|
|
140
|
+
sawHooks = true;
|
|
141
|
+
section.push(`${hooks[1]}hooks = true${hooks[2] ?? ''}`);
|
|
142
|
+
}
|
|
143
|
+
if (!sawHooks)
|
|
144
|
+
section.unshift('hooks = true');
|
|
145
|
+
return `${[...lines.slice(0, start + 1), ...section, ...lines.slice(end)].join(newline)}${trailingNewline ? newline : ''}`;
|
|
88
146
|
}
|
|
89
147
|
function parseArgs(argv) {
|
|
90
148
|
let target = 'host';
|
|
149
|
+
let explicitTarget = null;
|
|
150
|
+
let sawInstall = false;
|
|
91
151
|
for (const arg of argv) {
|
|
152
|
+
if (arg === 'install' && !sawInstall) {
|
|
153
|
+
sawInstall = true;
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
let parsedTarget;
|
|
92
157
|
if (arg === '--scope=project')
|
|
93
|
-
|
|
158
|
+
parsedTarget = 'project';
|
|
94
159
|
else if (arg === '--scope=user' || arg === '--scope=host')
|
|
95
|
-
|
|
160
|
+
parsedTarget = 'host';
|
|
161
|
+
else
|
|
162
|
+
throw new Error(`Unknown installer argument: ${arg}`);
|
|
163
|
+
if (explicitTarget && explicitTarget !== parsedTarget) {
|
|
164
|
+
throw new Error('Conflicting --scope arguments');
|
|
165
|
+
}
|
|
166
|
+
explicitTarget = parsedTarget;
|
|
167
|
+
target = parsedTarget;
|
|
96
168
|
}
|
|
97
169
|
return { target };
|
|
98
170
|
}
|
|
@@ -101,39 +173,104 @@ function resolveCodexDir(target, cwd, env = process.env) {
|
|
|
101
173
|
return join(cwd, '.codex');
|
|
102
174
|
if (env.CODEX_HOME?.trim())
|
|
103
175
|
return resolve(env.CODEX_HOME);
|
|
104
|
-
const home = env.HOME
|
|
105
|
-
if (!home)
|
|
176
|
+
const home = env.HOME?.trim() || env.USERPROFILE?.trim();
|
|
177
|
+
if (!home)
|
|
106
178
|
throw new Error('Could not determine home directory for Codex host install');
|
|
107
|
-
}
|
|
108
179
|
return join(home, '.codex');
|
|
109
180
|
}
|
|
181
|
+
function removeMnemonikHooks(hooksJson, currentDispatcher) {
|
|
182
|
+
if (!hooksJson.hooks)
|
|
183
|
+
return false;
|
|
184
|
+
let changed = false;
|
|
185
|
+
for (const [event, groups] of Object.entries(hooksJson.hooks)) {
|
|
186
|
+
const remaining = removeMnemonikHookGroups(groups, currentDispatcher);
|
|
187
|
+
const eventChanged = remaining.length !== groups.length ||
|
|
188
|
+
remaining.some((group, index) => group !== groups[index]);
|
|
189
|
+
if (!eventChanged)
|
|
190
|
+
continue;
|
|
191
|
+
changed = true;
|
|
192
|
+
if (remaining.length === 0)
|
|
193
|
+
delete hooksJson.hooks[event];
|
|
194
|
+
else
|
|
195
|
+
hooksJson.hooks[event] = remaining;
|
|
196
|
+
}
|
|
197
|
+
return changed;
|
|
198
|
+
}
|
|
110
199
|
async function main(argv) {
|
|
111
200
|
const { target } = parseArgs(argv);
|
|
112
201
|
const cwd = process.cwd();
|
|
113
202
|
const codexDir = resolveCodexDir(target, cwd);
|
|
114
|
-
const
|
|
115
|
-
const
|
|
203
|
+
const requestedHooksPath = join(codexDir, 'hooks.json');
|
|
204
|
+
const requestedConfigPath = join(codexDir, 'config.toml');
|
|
205
|
+
const alternateDir = resolveCodexDir(target === 'host' ? 'project' : 'host', cwd);
|
|
206
|
+
const requestedAlternateHooksPath = join(alternateDir, 'hooks.json');
|
|
207
|
+
const [hooksPath, alternateHooksPath, configPath] = await canonicalizeConfigTargets([
|
|
208
|
+
requestedHooksPath,
|
|
209
|
+
requestedAlternateHooksPath,
|
|
210
|
+
requestedConfigPath,
|
|
211
|
+
]);
|
|
212
|
+
if (configPath === hooksPath || configPath === alternateHooksPath) {
|
|
213
|
+
throw new Error('Codex hooks.json and config.toml must not alias the same file');
|
|
214
|
+
}
|
|
215
|
+
const runtimeParent = resolveRuntimeParent();
|
|
116
216
|
const dispatcher = resolveDispatcherPath();
|
|
117
217
|
if (!existsSync(dispatcher)) {
|
|
118
218
|
console.error(`mnemonik-codex-hooks: dispatcher not found at ${dispatcher}. Did the package install correctly?`);
|
|
119
219
|
return 1;
|
|
120
220
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
221
|
+
let installedDispatcher = dispatcher;
|
|
222
|
+
let alternateMigrated = false;
|
|
223
|
+
await withFileLocks([
|
|
224
|
+
installerConfigLockPath(hooksPath, runtimeParent),
|
|
225
|
+
installerConfigLockPath(alternateHooksPath, runtimeParent),
|
|
226
|
+
installerConfigLockPath(configPath, runtimeParent),
|
|
227
|
+
], async () => {
|
|
228
|
+
const { hooksJson, raw: hooksRaw } = await readHooksJson(hooksPath);
|
|
229
|
+
const configRaw = await readTextIfExists(configPath);
|
|
230
|
+
const nextConfig = ensureCodexHooksFeature(configRaw ?? '');
|
|
231
|
+
const alternate = alternateHooksPath === hooksPath ? null : await readHooksJson(alternateHooksPath);
|
|
232
|
+
// Validate the requested hooks/config and the alternate hooks file before
|
|
233
|
+
// installing the runtime or mutating any configuration.
|
|
234
|
+
const runtime = await installDurableRuntime({
|
|
235
|
+
sourcePackageRoot: resolvePackageRoot(import.meta.url),
|
|
236
|
+
runtimeParent,
|
|
237
|
+
runtimeName: HOOK_OWNER,
|
|
238
|
+
entrypoints: ['hook.js'],
|
|
239
|
+
});
|
|
240
|
+
installedDispatcher = runtime.entrypoints['hook.js'];
|
|
241
|
+
const entry = buildHookEntry(installedDispatcher);
|
|
242
|
+
const hooks = (hooksJson.hooks ?? {});
|
|
243
|
+
hooks.SessionStart = patchHookGroup(hooks.SessionStart, SESSION_START_MATCHER, entry);
|
|
244
|
+
hooks.UserPromptSubmit = patchHookGroup(hooks.UserPromptSubmit, undefined, entry);
|
|
245
|
+
hooks.PreToolUse = patchHookGroup(hooks.PreToolUse, 'Bash|shell|apply_patch|Edit|Write|mcp__mnemonik__.*', entry);
|
|
246
|
+
hooks.PostToolUse = patchHookGroup(hooks.PostToolUse, 'apply_patch|Edit|Write|mcp__mnemonik__.*', entry);
|
|
247
|
+
hooks.Stop = patchHookGroup(hooks.Stop, undefined, entry);
|
|
248
|
+
hooksJson.hooks = hooks;
|
|
249
|
+
const nextHooks = `${JSON.stringify(hooksJson, null, 2)}\n`;
|
|
250
|
+
const changes = [
|
|
251
|
+
{ path: configPath, expected: configRaw, next: nextConfig },
|
|
252
|
+
{ path: hooksPath, expected: hooksRaw, next: nextHooks },
|
|
253
|
+
];
|
|
254
|
+
if (alternate !== null && alternate.raw !== null) {
|
|
255
|
+
alternateMigrated = removeMnemonikHooks(alternate.hooksJson, dispatcher);
|
|
256
|
+
if (alternateMigrated) {
|
|
257
|
+
changes.push({
|
|
258
|
+
path: alternateHooksPath,
|
|
259
|
+
expected: alternate.raw,
|
|
260
|
+
next: `${JSON.stringify(alternate.hooksJson, null, 2)}\n`,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
await atomicWriteTransaction(changes);
|
|
265
|
+
});
|
|
132
266
|
console.log([
|
|
133
|
-
`mnemonik-codex-hooks: wired into ${
|
|
267
|
+
`mnemonik-codex-hooks: wired into ${requestedHooksPath}`,
|
|
134
268
|
` target -> ${target}`,
|
|
135
|
-
|
|
136
|
-
|
|
269
|
+
...(alternateMigrated
|
|
270
|
+
? [` migration -> removed duplicate Mnemonik hooks from ${requestedAlternateHooksPath}`]
|
|
271
|
+
: []),
|
|
272
|
+
` feature flag -> ${requestedConfigPath}`,
|
|
273
|
+
` dispatcher -> ${installedDispatcher}`,
|
|
137
274
|
'',
|
|
138
275
|
'Installed Codex hooks only. This does not install or modify skills, rules, AGENTS.md, .mnemonik.json, or MCP config.',
|
|
139
276
|
'Bash policy reminders are server-driven. The dispatcher posts the command to /api/v1/hooks/policy-reminder; matched policies come back as a systemMessage. No per-kind knobs in the client.',
|
|
@@ -155,8 +292,8 @@ function isDirectExecution() {
|
|
|
155
292
|
if (isDirectExecution()) {
|
|
156
293
|
main(process.argv.slice(2))
|
|
157
294
|
.then((code) => process.exit(code))
|
|
158
|
-
.catch((
|
|
159
|
-
console.error(`mnemonik-codex-hooks: ${
|
|
295
|
+
.catch((error) => {
|
|
296
|
+
console.error(`mnemonik-codex-hooks: ${error instanceof Error ? error.message : String(error)}`);
|
|
160
297
|
process.exit(1);
|
|
161
298
|
});
|
|
162
299
|
}
|