oh-my-codex 0.21.13 → 0.21.15
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/Cargo.lock +6 -6
- package/Cargo.toml +1 -1
- package/README.md +17 -0
- package/dist/adapt/herdr/__tests__/wiring.test.js +21 -0
- package/dist/adapt/herdr/__tests__/wiring.test.js.map +1 -1
- package/dist/adapt/herdr/wiring.d.ts.map +1 -1
- package/dist/adapt/herdr/wiring.js +5 -0
- package/dist/adapt/herdr/wiring.js.map +1 -1
- package/dist/auth/__tests__/hotswap.test.js +28 -0
- package/dist/auth/__tests__/hotswap.test.js.map +1 -1
- package/dist/auth/hotswap.d.ts +1 -0
- package/dist/auth/hotswap.d.ts.map +1 -1
- package/dist/auth/hotswap.js +4 -1
- package/dist/auth/hotswap.js.map +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js +196 -0
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +2 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +14 -1
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/session-timeline.test.d.ts +2 -0
- package/dist/cli/__tests__/session-timeline.test.d.ts.map +1 -0
- package/dist/cli/__tests__/session-timeline.test.js +155 -0
- package/dist/cli/__tests__/session-timeline.test.js.map +1 -0
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js +1 -0
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +1 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +11 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/session-search.d.ts.map +1 -1
- package/dist/cli/session-search.js +7 -0
- package/dist/cli/session-search.js.map +1 -1
- package/dist/cli/session-timeline.d.ts +9 -0
- package/dist/cli/session-timeline.d.ts.map +1 -0
- package/dist/cli/session-timeline.js +174 -0
- package/dist/cli/session-timeline.js.map +1 -0
- package/dist/config/__tests__/codex-hooks.test.js +3 -1
- package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +1 -0
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/codex-hooks.d.ts +1 -1
- package/dist/config/codex-hooks.d.ts.map +1 -1
- package/dist/config/codex-hooks.js +5 -0
- package/dist/config/codex-hooks.js.map +1 -1
- package/dist/evals/astra-defaults/__tests__/collector.test.js +51 -23
- package/dist/evals/astra-defaults/__tests__/collector.test.js.map +1 -1
- package/dist/evals/astra-defaults/collector.d.ts +2 -0
- package/dist/evals/astra-defaults/collector.d.ts.map +1 -1
- package/dist/evals/astra-defaults/collector.js +19 -8
- package/dist/evals/astra-defaults/collector.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js +143 -0
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +1 -1
- package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
- package/dist/hooks/extensibility/dispatcher.js +120 -28
- package/dist/hooks/extensibility/dispatcher.js.map +1 -1
- package/dist/hooks/extensibility/runtime.d.ts.map +1 -1
- package/dist/hooks/extensibility/runtime.js +1 -0
- package/dist/hooks/extensibility/runtime.js.map +1 -1
- package/dist/hooks/extensibility/types.d.ts +2 -0
- package/dist/hooks/extensibility/types.d.ts.map +1 -1
- package/dist/hooks/native/types.d.ts +1 -1
- package/dist/hooks/native/types.d.ts.map +1 -1
- package/dist/hooks/native/types.js.map +1 -1
- package/dist/notifications/__tests__/lifecycle-dedupe.test.js +200 -2
- package/dist/notifications/__tests__/lifecycle-dedupe.test.js.map +1 -1
- package/dist/notifications/lifecycle-dedupe.d.ts +10 -0
- package/dist/notifications/lifecycle-dedupe.d.ts.map +1 -1
- package/dist/notifications/lifecycle-dedupe.js +175 -19
- package/dist/notifications/lifecycle-dedupe.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +278 -6
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/native-hook-protocol.test.d.ts +2 -0
- package/dist/scripts/__tests__/native-hook-protocol.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/native-hook-protocol.test.js +329 -0
- package/dist/scripts/__tests__/native-hook-protocol.test.js.map +1 -0
- package/dist/scripts/__tests__/smoke-packed-install.test.js +7 -6
- package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
- package/dist/scripts/codex-execution-surface.d.ts +1 -1
- package/dist/scripts/codex-execution-surface.d.ts.map +1 -1
- package/dist/scripts/codex-execution-surface.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts +1 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +124 -13
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/hook-payload-guard.d.ts +1 -1
- package/dist/scripts/hook-payload-guard.d.ts.map +1 -1
- package/dist/scripts/hook-payload-guard.js +1 -0
- package/dist/scripts/hook-payload-guard.js.map +1 -1
- package/dist/scripts/smoke-packed-install.d.ts +2 -2
- package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
- package/dist/scripts/smoke-packed-install.js +12 -1
- package/dist/scripts/smoke-packed-install.js.map +1 -1
- package/dist/session-history/__tests__/timeline.test.d.ts +2 -0
- package/dist/session-history/__tests__/timeline.test.d.ts.map +1 -0
- package/dist/session-history/__tests__/timeline.test.js +459 -0
- package/dist/session-history/__tests__/timeline.test.js.map +1 -0
- package/dist/session-history/export.d.ts +2 -3
- package/dist/session-history/export.d.ts.map +1 -1
- package/dist/session-history/export.js +5 -66
- package/dist/session-history/export.js.map +1 -1
- package/dist/session-history/timeline.d.ts +97 -0
- package/dist/session-history/timeline.d.ts.map +1 -0
- package/dist/session-history/timeline.js +325 -0
- package/dist/session-history/timeline.js.map +1 -0
- package/dist/session-history/transcript.d.ts +16 -0
- package/dist/session-history/transcript.d.ts.map +1 -0
- package/dist/session-history/transcript.js +111 -0
- package/dist/session-history/transcript.js.map +1 -0
- package/dist/subagents/tracker.d.ts +6 -0
- package/dist/subagents/tracker.d.ts.map +1 -1
- package/dist/subagents/tracker.js +32 -0
- package/dist/subagents/tracker.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +12 -3
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +25 -0
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +30 -0
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +9 -1
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/wiki/__tests__/session-hooks.test.js +26 -0
- package/dist/wiki/__tests__/session-hooks.test.js.map +1 -1
- package/dist/wiki/lifecycle.d.ts.map +1 -1
- package/dist/wiki/lifecycle.js +6 -1
- package/dist/wiki/lifecycle.js.map +1 -1
- package/package.json +1 -1
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/oh-my-codex/hooks/codex-native-hook.mjs +85 -18
- package/plugins/oh-my-codex/hooks/hooks.json +10 -0
- package/src/scripts/__tests__/codex-native-hook.test.ts +273 -5
- package/src/scripts/__tests__/native-hook-protocol.test.ts +362 -0
- package/src/scripts/__tests__/smoke-packed-install.test.ts +7 -6
- package/src/scripts/codex-execution-surface.ts +1 -0
- package/src/scripts/codex-native-hook.ts +130 -11
- package/src/scripts/hook-payload-guard.ts +1 -0
- package/src/scripts/smoke-packed-install.ts +12 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Tests for Wiki lifecycle hooks
|
|
3
3
|
*/
|
|
4
4
|
import { afterEach, beforeEach, describe, it } from 'node:test';
|
|
5
|
+
import assert from 'node:assert/strict';
|
|
5
6
|
import { expect } from './test-helpers.js';
|
|
6
7
|
import fs from 'fs';
|
|
7
8
|
import fsp from 'fs/promises';
|
|
@@ -60,5 +61,30 @@ describe('Wiki lifecycle hooks', () => {
|
|
|
60
61
|
expect(result.additionalContext).toContain('legacy pages at .omx/wiki/');
|
|
61
62
|
expect(fs.existsSync(getWikiDir(tempDir))).toBe(false);
|
|
62
63
|
});
|
|
64
|
+
for (const fixture of [{ pages: 1, titleChars: 8192 }, { pages: 24, titleChars: 96 }, { pages: 1, titleChars: 32 }]) {
|
|
65
|
+
it(`bounds startup context for ${fixture.pages} pages with ${fixture.titleChars}-character titles`, () => {
|
|
66
|
+
const wikiDir = ensureWikiDir(tempDir);
|
|
67
|
+
const title = 'T'.repeat(fixture.titleChars);
|
|
68
|
+
for (let i = 0; i < fixture.pages; i++) {
|
|
69
|
+
fs.writeFileSync(path.join(wikiDir, `page-${i}.md`), serializePage({
|
|
70
|
+
filename: `page-${i}.md`,
|
|
71
|
+
frontmatter: {
|
|
72
|
+
title, tags: [], sources: [], links: [], category: 'reference', confidence: 'high',
|
|
73
|
+
created: '2026-10-16T00:00:00.000Z', updated: '2026-10-16T00:00:00.000Z',
|
|
74
|
+
schemaVersion: WIKI_SCHEMA_VERSION,
|
|
75
|
+
},
|
|
76
|
+
content: `\n${'Summary '.repeat(10)}\n`,
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
const context = onSessionStart({ cwd: tempDir }).additionalContext ?? '';
|
|
80
|
+
assert.ok(context.length <= 3500, `received ${context.length} characters`);
|
|
81
|
+
assert.match(context, /wiki_query/);
|
|
82
|
+
assert.equal(context.includes('Wiki index truncated'), fixture.titleChars === 8192 || fixture.pages === 24);
|
|
83
|
+
if (fixture.titleChars === 32)
|
|
84
|
+
assert.ok(context.includes(title));
|
|
85
|
+
assert.ok(context.split('\n').filter(line => line.startsWith('- [')).every(line => line.includes(') — ')));
|
|
86
|
+
assert.equal(fs.readFileSync(path.join(wikiDir, 'page-0.md'), 'utf8').includes(title), true);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
63
89
|
});
|
|
64
90
|
//# sourceMappingURL=session-hooks.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-hooks.test.js","sourceRoot":"","sources":["../../../src/wiki/__tests__/session-hooks.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-hooks.test.js","sourceRoot":"","sources":["../../../src/wiki/__tests__/session-hooks.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/wiki/lifecycle.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/wiki/lifecycle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuCH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CAkDrF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAsD/F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CAsBnF;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CAgBpF"}
|
package/dist/wiki/lifecycle.js
CHANGED
|
@@ -6,6 +6,7 @@ import { join } from 'path';
|
|
|
6
6
|
import { codexHome, resolveProjectMemoryPath } from '../utils/paths.js';
|
|
7
7
|
import { appendLogUnsafe, getWikiDir, isLegacyWikiFallbackActive, listPages, readAllPages, readIndex, readPage, updateIndexUnsafe, withWikiLock, writePageUnsafe, } from './storage.js';
|
|
8
8
|
import { DEFAULT_WIKI_CONFIG, WIKI_SCHEMA_VERSION } from './types.js';
|
|
9
|
+
const MAX_SESSION_START_CONTEXT_CHARS = 3500;
|
|
9
10
|
function loadWikiConfig(root) {
|
|
10
11
|
const candidates = [join(root, '.omx-config.json'), join(codexHome(), '.omx-config.json')];
|
|
11
12
|
for (const path of candidates) {
|
|
@@ -62,7 +63,11 @@ export function onSessionStart(data) {
|
|
|
62
63
|
'',
|
|
63
64
|
...index.split('\n').slice(0, config.maxContextLines),
|
|
64
65
|
].join('\n');
|
|
65
|
-
|
|
66
|
+
if (summary.length <= MAX_SESSION_START_CONTEXT_CHARS)
|
|
67
|
+
return { additionalContext: summary };
|
|
68
|
+
const notice = '\n[Wiki index truncated; use wiki_list or wiki_query for more.]';
|
|
69
|
+
const bounded = summary.slice(0, MAX_SESSION_START_CONTEXT_CHARS - notice.length);
|
|
70
|
+
return { additionalContext: bounded.slice(0, bounded.lastIndexOf('\n')) + notice };
|
|
66
71
|
}
|
|
67
72
|
catch {
|
|
68
73
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/wiki/lifecycle.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/wiki/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@ const OMX_PLUGIN_HOOK_LAUNCHER_CONTRACT_MARKER = 'omx-plugin-hook-launcher:v1';
|
|
|
11
11
|
const OMX_PLUGIN_HOOK_ROUTING_ONLY_MARKER = 'omx-plugin-hook-routing-only:v1';
|
|
12
12
|
const MAX_WRAPPER_STDIN_BYTES = 1024 * 1024;
|
|
13
13
|
const RAW_EVENT_SCAN_BYTES = 64 * 1024;
|
|
14
|
-
const
|
|
14
|
+
const MAX_BUFFERED_HOOK_STDOUT_BYTES = 1024 * 1024;
|
|
15
15
|
const MAX_ROUTING_RECORD_BYTES = 4 * 1024;
|
|
16
16
|
const CODEX_HOOK_EVENT_NAMES = new Set([
|
|
17
17
|
'SessionStart',
|
|
@@ -20,6 +20,7 @@ const CODEX_HOOK_EVENT_NAMES = new Set([
|
|
|
20
20
|
'UserPromptSubmit',
|
|
21
21
|
'PreCompact',
|
|
22
22
|
'PostCompact',
|
|
23
|
+
'SubagentStop',
|
|
23
24
|
'Stop',
|
|
24
25
|
]);
|
|
25
26
|
|
|
@@ -170,6 +171,8 @@ function isSafeRoutingSessionId(value) {
|
|
|
170
171
|
function isChildRoutingSessionStart(payload, ownerSessionId) {
|
|
171
172
|
if ((payload?.hook_event_name ?? payload?.hookEventName) !== 'SessionStart' || !ownerSessionId) return false;
|
|
172
173
|
const childSessionId = hookPayloadSessionId(null, payload);
|
|
174
|
+
const cwd = typeof payload.cwd === 'string' && payload.cwd.trim() ? payload.cwd : process.cwd();
|
|
175
|
+
const stateDir = listAuthoritativeStateBaseDirs(cwd)[0];
|
|
173
176
|
const transcriptCandidate = payload?.transcript_path ?? payload?.transcriptPath;
|
|
174
177
|
const transcriptPath = typeof transcriptCandidate === 'string' ? transcriptCandidate.trim() : '';
|
|
175
178
|
if (!childSessionId || !transcriptPath) return false;
|
|
@@ -183,11 +186,19 @@ function isChildRoutingSessionStart(payload, ownerSessionId) {
|
|
|
183
186
|
const record = JSON.parse(firstLine);
|
|
184
187
|
const metadata = record?.type === 'session_meta' && record?.payload && typeof record.payload === 'object' ? record.payload : null;
|
|
185
188
|
const spawn = metadata?.source?.subagent?.thread_spawn;
|
|
189
|
+
const parentThreadId = spawn && typeof spawn === 'object' ? spawn.parent_thread_id : null;
|
|
186
190
|
const metadataIds = [metadata?.id, metadata?.session_id].filter((value) => value !== undefined);
|
|
187
191
|
return metadataIds.length > 0
|
|
188
192
|
&& metadataIds.every((value) => value === childSessionId)
|
|
189
193
|
&& spawn && typeof spawn === 'object'
|
|
190
|
-
&&
|
|
194
|
+
&& typeof parentThreadId === 'string'
|
|
195
|
+
&& (parentThreadId === ownerSessionId
|
|
196
|
+
|| (isSafeRoutingSessionId(parentThreadId)
|
|
197
|
+
&& isTrackedSubagentInSessionTree(
|
|
198
|
+
readJsonFile(join(stateDir, 'subagent-tracking.json')),
|
|
199
|
+
ownerSessionId,
|
|
200
|
+
parentThreadId,
|
|
201
|
+
)));
|
|
191
202
|
} catch {
|
|
192
203
|
return false;
|
|
193
204
|
} finally {
|
|
@@ -195,6 +206,38 @@ function isChildRoutingSessionStart(payload, ownerSessionId) {
|
|
|
195
206
|
}
|
|
196
207
|
}
|
|
197
208
|
|
|
209
|
+
function isTrackedSubagentInSessionTree(tracking, rootSessionId, targetThreadId) {
|
|
210
|
+
const pendingSessionIds = [rootSessionId];
|
|
211
|
+
const visitedSessionIds = new Set();
|
|
212
|
+
while (pendingSessionIds.length > 0) {
|
|
213
|
+
const sessionId = pendingSessionIds.pop();
|
|
214
|
+
if (!sessionId || visitedSessionIds.has(sessionId)) continue;
|
|
215
|
+
visitedSessionIds.add(sessionId);
|
|
216
|
+
const threads = tracking?.sessions?.[sessionId]?.threads;
|
|
217
|
+
if (!threads || typeof threads !== 'object' || Array.isArray(threads)) continue;
|
|
218
|
+
if (threads[targetThreadId]?.kind === 'subagent') return true;
|
|
219
|
+
for (const [threadId, thread] of Object.entries(threads)) {
|
|
220
|
+
if (thread?.kind !== 'subagent' || !isSafeRoutingSessionId(threadId)) continue;
|
|
221
|
+
if (tracking?.sessions?.[threadId] && !visitedSessionIds.has(threadId)) pendingSessionIds.push(threadId);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
function isChildRoutingSubagentStop(payload, ownerSessionId) {
|
|
228
|
+
if ((payload?.hook_event_name ?? payload?.hookEventName) !== 'SubagentStop' || !ownerSessionId) return false;
|
|
229
|
+
const cwd = typeof payload.cwd === 'string' && payload.cwd.trim() ? payload.cwd : process.cwd();
|
|
230
|
+
const stateDir = listAuthoritativeStateBaseDirs(cwd)[0];
|
|
231
|
+
const parentSessionId = hookPayloadSessionId(null, payload);
|
|
232
|
+
if (!isSafeRoutingSessionId(parentSessionId)) return false;
|
|
233
|
+
const tracking = readJsonFile(join(stateDir, 'subagent-tracking.json'));
|
|
234
|
+
if (isTrackedSubagentInSessionTree(tracking, ownerSessionId, parentSessionId)) return true;
|
|
235
|
+
const session = readJsonFile(join(stateDir, 'session.json'));
|
|
236
|
+
if (!isSessionStateAuthoritativeForCwd(session, cwd)
|
|
237
|
+
|| ![session.session_id, session.native_session_id, session.owner_omx_session_id, session.owner_codex_session_id, session.codex_session_id].includes(ownerSessionId)) return false;
|
|
238
|
+
return isTrackedSubagentInSessionTree(tracking, session.session_id, parentSessionId);
|
|
239
|
+
}
|
|
240
|
+
|
|
198
241
|
function readPinnedRoutingRecord(routingPath) {
|
|
199
242
|
let fd;
|
|
200
243
|
try {
|
|
@@ -233,7 +276,8 @@ function isPluginHookRoutingSession(input, payload) {
|
|
|
233
276
|
const ownerSessionId = routing.routing === OMX_PLUGIN_HOOK_ROUTING_ONLY_MARKER && isSafeRoutingSessionId(routing.ownerSessionId)
|
|
234
277
|
? routing.ownerSessionId
|
|
235
278
|
: '';
|
|
236
|
-
return ownerSessionId === sessionId || isChildRoutingSessionStart(payload, ownerSessionId)
|
|
279
|
+
return ownerSessionId === sessionId || isChildRoutingSessionStart(payload, ownerSessionId)
|
|
280
|
+
|| isChildRoutingSubagentStop(payload, ownerSessionId);
|
|
237
281
|
}
|
|
238
282
|
mkdirSync(dirname(routingPath), { recursive: true });
|
|
239
283
|
writeFileSync(routingPath, `${JSON.stringify({ routing: OMX_PLUGIN_HOOK_ROUTING_ONLY_MARKER, ownerSessionId: sessionId })}\n`, { encoding: 'utf8', mode: 0o600, flag: 'wx' });
|
|
@@ -243,8 +287,8 @@ function isPluginHookRoutingSession(input, payload) {
|
|
|
243
287
|
}
|
|
244
288
|
}
|
|
245
289
|
|
|
246
|
-
function writePlainCodexNoop(
|
|
247
|
-
if (
|
|
290
|
+
function writePlainCodexNoop(emitJson) {
|
|
291
|
+
if (emitJson) process.stdout.write('{}\n');
|
|
248
292
|
process.exitCode = 0;
|
|
249
293
|
}
|
|
250
294
|
|
|
@@ -328,13 +372,17 @@ function writeCompactFallback() {
|
|
|
328
372
|
process.exitCode = 0;
|
|
329
373
|
}
|
|
330
374
|
|
|
331
|
-
function failLauncher(error, isStop, isCompact, stopReason = 'plugin_stop_hook_launcher_failure') {
|
|
375
|
+
function failLauncher(error, isStop, isCompact, isSubagentStop, stopReason = 'plugin_stop_hook_launcher_failure') {
|
|
332
376
|
const detail = error instanceof Error ? error.message : String(error);
|
|
333
377
|
console.error(`[oh-my-codex] ${detail}`);
|
|
334
378
|
if (isStop) {
|
|
335
379
|
writeStopFallback(stopReason, detail);
|
|
336
380
|
return;
|
|
337
381
|
}
|
|
382
|
+
if (isSubagentStop) {
|
|
383
|
+
writePlainCodexNoop(true);
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
338
386
|
if (isCompact) {
|
|
339
387
|
writeCompactFallback();
|
|
340
388
|
return;
|
|
@@ -503,12 +551,14 @@ function parseSingleJsonObjectOutput(raw) {
|
|
|
503
551
|
async function main() {
|
|
504
552
|
const { input, oversized, totalBytes } = await readBoundedStdin({ drainOversized: true });
|
|
505
553
|
const payload = parseHookPayload(input);
|
|
554
|
+
const eventName = extractTopLevelHookEventName(input.toString('utf8'));
|
|
506
555
|
const routedByLaunchCorrelation = isPluginHookRoutingSession(input, payload);
|
|
507
556
|
const isStop = detectStopHookInput(input);
|
|
557
|
+
const isSubagentStop = eventName === 'SubagentStop';
|
|
508
558
|
const isCompact = detectCompactHookInput(input);
|
|
509
559
|
|
|
510
560
|
if (!routedByLaunchCorrelation) {
|
|
511
|
-
writePlainCodexNoop(isStop);
|
|
561
|
+
writePlainCodexNoop(isStop || isSubagentStop);
|
|
512
562
|
return;
|
|
513
563
|
}
|
|
514
564
|
|
|
@@ -523,11 +573,14 @@ async function main() {
|
|
|
523
573
|
writeOversizedStopNoop();
|
|
524
574
|
return;
|
|
525
575
|
}
|
|
526
|
-
const eventName = extractTopLevelHookEventName(input.toString('utf8'));
|
|
527
576
|
if (eventName === 'PreToolUse' || eventName === 'PostToolUse') {
|
|
528
577
|
writeOversizedToolHookOutput(eventName);
|
|
529
578
|
return;
|
|
530
579
|
}
|
|
580
|
+
if (eventName === 'SubagentStop') {
|
|
581
|
+
writePlainCodexNoop(true);
|
|
582
|
+
return;
|
|
583
|
+
}
|
|
531
584
|
console.error(`[oh-my-codex] ${message}`);
|
|
532
585
|
process.exitCode = 1;
|
|
533
586
|
return;
|
|
@@ -537,7 +590,7 @@ async function main() {
|
|
|
537
590
|
try {
|
|
538
591
|
launcher = readConfiguredLauncher();
|
|
539
592
|
} catch (error) {
|
|
540
|
-
failLauncher(error, isStop, isCompact);
|
|
593
|
+
failLauncher(error, isStop, isCompact, isSubagentStop);
|
|
541
594
|
return;
|
|
542
595
|
}
|
|
543
596
|
|
|
@@ -546,24 +599,24 @@ async function main() {
|
|
|
546
599
|
|
|
547
600
|
const stdoutChunks = [];
|
|
548
601
|
let stdoutBytes = 0;
|
|
549
|
-
let
|
|
550
|
-
let
|
|
602
|
+
let bufferedHookStdoutBytes = 0;
|
|
603
|
+
let hookStdoutOversized = false;
|
|
551
604
|
let childSpawnError = null;
|
|
552
605
|
let childStdinError = null;
|
|
553
606
|
|
|
554
607
|
child.stdout.on('data', (chunk) => {
|
|
555
608
|
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
556
609
|
stdoutBytes += buffer.byteLength;
|
|
557
|
-
if (isStop) {
|
|
558
|
-
if (!
|
|
559
|
-
const remaining =
|
|
610
|
+
if (isStop || isSubagentStop) {
|
|
611
|
+
if (!hookStdoutOversized) {
|
|
612
|
+
const remaining = MAX_BUFFERED_HOOK_STDOUT_BYTES - bufferedHookStdoutBytes;
|
|
560
613
|
if (remaining > 0) {
|
|
561
614
|
const slice = buffer.subarray(0, remaining);
|
|
562
615
|
stdoutChunks.push(slice);
|
|
563
|
-
|
|
616
|
+
bufferedHookStdoutBytes += slice.byteLength;
|
|
564
617
|
}
|
|
565
618
|
if (buffer.byteLength > remaining) {
|
|
566
|
-
|
|
619
|
+
hookStdoutOversized = true;
|
|
567
620
|
child.stdout.destroy();
|
|
568
621
|
child.kill();
|
|
569
622
|
}
|
|
@@ -580,8 +633,22 @@ async function main() {
|
|
|
580
633
|
childSpawnError = error;
|
|
581
634
|
});
|
|
582
635
|
child.on('close', (code, signal) => {
|
|
583
|
-
if (isStop &&
|
|
584
|
-
writeStopFallback('plugin_stop_hook_launcher_stdout_oversized', `codex-native-hook produced more than ${
|
|
636
|
+
if (isStop && hookStdoutOversized) {
|
|
637
|
+
writeStopFallback('plugin_stop_hook_launcher_stdout_oversized', `codex-native-hook produced more than ${MAX_BUFFERED_HOOK_STDOUT_BYTES} bytes of Stop hook stdout`);
|
|
638
|
+
return;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
if (isSubagentStop) {
|
|
642
|
+
if (!hookStdoutOversized && !childSpawnError && !childStdinError && !signal && code === 0) {
|
|
643
|
+
const stdoutText = Buffer.concat(stdoutChunks).toString('utf8');
|
|
644
|
+
const parsed = parseSingleJsonObjectOutput(stdoutText);
|
|
645
|
+
if (parsed) {
|
|
646
|
+
process.stdout.write(`${JSON.stringify(parsed)}\n`);
|
|
647
|
+
process.exitCode = 0;
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
writePlainCodexNoop(true);
|
|
585
652
|
return;
|
|
586
653
|
}
|
|
587
654
|
|