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.
Files changed (141) hide show
  1. package/Cargo.lock +6 -6
  2. package/Cargo.toml +1 -1
  3. package/README.md +17 -0
  4. package/dist/adapt/herdr/__tests__/wiring.test.js +21 -0
  5. package/dist/adapt/herdr/__tests__/wiring.test.js.map +1 -1
  6. package/dist/adapt/herdr/wiring.d.ts.map +1 -1
  7. package/dist/adapt/herdr/wiring.js +5 -0
  8. package/dist/adapt/herdr/wiring.js.map +1 -1
  9. package/dist/auth/__tests__/hotswap.test.js +28 -0
  10. package/dist/auth/__tests__/hotswap.test.js.map +1 -1
  11. package/dist/auth/hotswap.d.ts +1 -0
  12. package/dist/auth/hotswap.d.ts.map +1 -1
  13. package/dist/auth/hotswap.js +4 -1
  14. package/dist/auth/hotswap.js.map +1 -1
  15. package/dist/cli/__tests__/codex-plugin-layout.test.js +196 -0
  16. package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
  17. package/dist/cli/__tests__/doctor-warning-copy.test.js +2 -1
  18. package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
  19. package/dist/cli/__tests__/index.test.js +14 -1
  20. package/dist/cli/__tests__/index.test.js.map +1 -1
  21. package/dist/cli/__tests__/session-timeline.test.d.ts +2 -0
  22. package/dist/cli/__tests__/session-timeline.test.d.ts.map +1 -0
  23. package/dist/cli/__tests__/session-timeline.test.js +155 -0
  24. package/dist/cli/__tests__/session-timeline.test.js.map +1 -0
  25. package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js +1 -0
  26. package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js.map +1 -1
  27. package/dist/cli/doctor.d.ts.map +1 -1
  28. package/dist/cli/doctor.js +1 -0
  29. package/dist/cli/doctor.js.map +1 -1
  30. package/dist/cli/index.d.ts +1 -0
  31. package/dist/cli/index.d.ts.map +1 -1
  32. package/dist/cli/index.js +11 -0
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/session-search.d.ts.map +1 -1
  35. package/dist/cli/session-search.js +7 -0
  36. package/dist/cli/session-search.js.map +1 -1
  37. package/dist/cli/session-timeline.d.ts +9 -0
  38. package/dist/cli/session-timeline.d.ts.map +1 -0
  39. package/dist/cli/session-timeline.js +174 -0
  40. package/dist/cli/session-timeline.js.map +1 -0
  41. package/dist/config/__tests__/codex-hooks.test.js +3 -1
  42. package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
  43. package/dist/config/__tests__/generator-idempotent.test.js +1 -0
  44. package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
  45. package/dist/config/codex-hooks.d.ts +1 -1
  46. package/dist/config/codex-hooks.d.ts.map +1 -1
  47. package/dist/config/codex-hooks.js +5 -0
  48. package/dist/config/codex-hooks.js.map +1 -1
  49. package/dist/evals/astra-defaults/__tests__/collector.test.js +51 -23
  50. package/dist/evals/astra-defaults/__tests__/collector.test.js.map +1 -1
  51. package/dist/evals/astra-defaults/collector.d.ts +2 -0
  52. package/dist/evals/astra-defaults/collector.d.ts.map +1 -1
  53. package/dist/evals/astra-defaults/collector.js +19 -8
  54. package/dist/evals/astra-defaults/collector.js.map +1 -1
  55. package/dist/hooks/extensibility/__tests__/dispatcher.test.js +143 -0
  56. package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +1 -1
  57. package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
  58. package/dist/hooks/extensibility/dispatcher.js +120 -28
  59. package/dist/hooks/extensibility/dispatcher.js.map +1 -1
  60. package/dist/hooks/extensibility/runtime.d.ts.map +1 -1
  61. package/dist/hooks/extensibility/runtime.js +1 -0
  62. package/dist/hooks/extensibility/runtime.js.map +1 -1
  63. package/dist/hooks/extensibility/types.d.ts +2 -0
  64. package/dist/hooks/extensibility/types.d.ts.map +1 -1
  65. package/dist/hooks/native/types.d.ts +1 -1
  66. package/dist/hooks/native/types.d.ts.map +1 -1
  67. package/dist/hooks/native/types.js.map +1 -1
  68. package/dist/notifications/__tests__/lifecycle-dedupe.test.js +200 -2
  69. package/dist/notifications/__tests__/lifecycle-dedupe.test.js.map +1 -1
  70. package/dist/notifications/lifecycle-dedupe.d.ts +10 -0
  71. package/dist/notifications/lifecycle-dedupe.d.ts.map +1 -1
  72. package/dist/notifications/lifecycle-dedupe.js +175 -19
  73. package/dist/notifications/lifecycle-dedupe.js.map +1 -1
  74. package/dist/scripts/__tests__/codex-native-hook.test.js +278 -6
  75. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  76. package/dist/scripts/__tests__/native-hook-protocol.test.d.ts +2 -0
  77. package/dist/scripts/__tests__/native-hook-protocol.test.d.ts.map +1 -0
  78. package/dist/scripts/__tests__/native-hook-protocol.test.js +329 -0
  79. package/dist/scripts/__tests__/native-hook-protocol.test.js.map +1 -0
  80. package/dist/scripts/__tests__/smoke-packed-install.test.js +7 -6
  81. package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
  82. package/dist/scripts/codex-execution-surface.d.ts +1 -1
  83. package/dist/scripts/codex-execution-surface.d.ts.map +1 -1
  84. package/dist/scripts/codex-execution-surface.js.map +1 -1
  85. package/dist/scripts/codex-native-hook.d.ts +1 -1
  86. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  87. package/dist/scripts/codex-native-hook.js +124 -13
  88. package/dist/scripts/codex-native-hook.js.map +1 -1
  89. package/dist/scripts/hook-payload-guard.d.ts +1 -1
  90. package/dist/scripts/hook-payload-guard.d.ts.map +1 -1
  91. package/dist/scripts/hook-payload-guard.js +1 -0
  92. package/dist/scripts/hook-payload-guard.js.map +1 -1
  93. package/dist/scripts/smoke-packed-install.d.ts +2 -2
  94. package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
  95. package/dist/scripts/smoke-packed-install.js +12 -1
  96. package/dist/scripts/smoke-packed-install.js.map +1 -1
  97. package/dist/session-history/__tests__/timeline.test.d.ts +2 -0
  98. package/dist/session-history/__tests__/timeline.test.d.ts.map +1 -0
  99. package/dist/session-history/__tests__/timeline.test.js +459 -0
  100. package/dist/session-history/__tests__/timeline.test.js.map +1 -0
  101. package/dist/session-history/export.d.ts +2 -3
  102. package/dist/session-history/export.d.ts.map +1 -1
  103. package/dist/session-history/export.js +5 -66
  104. package/dist/session-history/export.js.map +1 -1
  105. package/dist/session-history/timeline.d.ts +97 -0
  106. package/dist/session-history/timeline.d.ts.map +1 -0
  107. package/dist/session-history/timeline.js +325 -0
  108. package/dist/session-history/timeline.js.map +1 -0
  109. package/dist/session-history/transcript.d.ts +16 -0
  110. package/dist/session-history/transcript.d.ts.map +1 -0
  111. package/dist/session-history/transcript.js +111 -0
  112. package/dist/session-history/transcript.js.map +1 -0
  113. package/dist/subagents/tracker.d.ts +6 -0
  114. package/dist/subagents/tracker.d.ts.map +1 -1
  115. package/dist/subagents/tracker.js +32 -0
  116. package/dist/subagents/tracker.js.map +1 -1
  117. package/dist/team/__tests__/runtime.test.js +12 -3
  118. package/dist/team/__tests__/runtime.test.js.map +1 -1
  119. package/dist/team/__tests__/scaling.test.js +25 -0
  120. package/dist/team/__tests__/scaling.test.js.map +1 -1
  121. package/dist/team/__tests__/tmux-session.test.js +30 -0
  122. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  123. package/dist/team/tmux-session.d.ts.map +1 -1
  124. package/dist/team/tmux-session.js +9 -1
  125. package/dist/team/tmux-session.js.map +1 -1
  126. package/dist/wiki/__tests__/session-hooks.test.js +26 -0
  127. package/dist/wiki/__tests__/session-hooks.test.js.map +1 -1
  128. package/dist/wiki/lifecycle.d.ts.map +1 -1
  129. package/dist/wiki/lifecycle.js +6 -1
  130. package/dist/wiki/lifecycle.js.map +1 -1
  131. package/package.json +1 -1
  132. package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
  133. package/plugins/oh-my-codex/hooks/codex-native-hook.mjs +85 -18
  134. package/plugins/oh-my-codex/hooks/hooks.json +10 -0
  135. package/src/scripts/__tests__/codex-native-hook.test.ts +273 -5
  136. package/src/scripts/__tests__/native-hook-protocol.test.ts +362 -0
  137. package/src/scripts/__tests__/smoke-packed-install.test.ts +7 -6
  138. package/src/scripts/codex-execution-surface.ts +1 -0
  139. package/src/scripts/codex-native-hook.ts +130 -11
  140. package/src/scripts/hook-payload-guard.ts +1 -0
  141. 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;AAqCH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CA+CrF;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"}
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"}
@@ -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
- return { additionalContext: summary };
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":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,eAAe,EACf,UAAU,EACV,0BAA0B,EAC1B,SAAS,EACT,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAmB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEvF,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAE7C,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE3F,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAmC,CAAC;YACxF,IAAI,MAAM,EAAE,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpD,OAAO,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACpD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAE/B,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO,EAAE,CAAC;QAE7D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElC,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG;gBACd,cAAc,KAAK,CAAC,MAAM,8DAA8D;gBACxF,EAAE;gBACF,qGAAqG;aACtG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE;gBACtB,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,wBAAwB,EAAE,CAAC;YACpC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,OAAO,GAAG;YACd,cAAc,KAAK,CAAC,MAAM,sBAAsB;YAChD,EAAE;YACF,4EAA4E;YAC5E,EAAE;YACF,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC;SACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,IAAI,OAAO,CAAC,MAAM,IAAI,+BAA+B;YAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;QAC7F,MAAM,MAAM,GAAG,iEAAiE,CAAC;QACjF,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAClF,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAA2C;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,eAAe,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAErE,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS;gBAAE,OAAO;YAE/C,eAAe,CAAC,IAAI,EAAE;gBACpB,QAAQ;gBACR,WAAW,EAAE;oBACX,KAAK,EAAE,eAAe,QAAQ,EAAE;oBAChC,IAAI,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;oBACtC,OAAO,EAAE,GAAG;oBACZ,OAAO,EAAE,GAAG;oBACZ,OAAO,EAAE,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,EAAE;oBACT,QAAQ,EAAE,aAAa;oBACvB,UAAU,EAAE,QAAQ;oBACpB,aAAa,EAAE,mBAAmB;iBACnC;gBACD,OAAO,EAAE,mBAAmB,QAAQ,oDAAoD,SAAS,0FAA0F;aAC5L,CAAC,CAAC;YAEH,eAAe,CAAC,IAAI,EAAE;gBACpB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,aAAa;gBACxB,aAAa,EAAE,CAAC,QAAQ,CAAC;gBACzB,OAAO,EAAE,iCAAiC,SAAS,EAAE;aACtD,CAAC,CAAC;YAEH,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,mBAAmB;IACrB,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAE/B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,YAAY,GAAG,QAAQ;aAC1B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;aACvC,IAAI,EAAE;aACN,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;QAE7B,OAAO;YACL,iBAAiB,EAAE,UAAU,KAAK,CAAC,MAAM,wBAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,YAAY,GAAG;SAC1H,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAGD,MAAM,UAAU,aAAa,CAAC,IAAsB;IAClD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAE/B,OAAO;YACL,iBAAiB,EAAE;gBACjB,8BAA8B;gBAC9B,0HAA0H;gBAC1H,qNAAqN;aACtN,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAAE,OAAO;QAEjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAA4B,CAAC;QAC9F,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;QACxD,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,QAAQ,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAa,CAAC,2BAA2B,CAAC,CAAC;QACzD,MAAM,YAAY,GAA6B;YAC7C,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;YAChC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;YACvB,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC;YACnC,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC;SAChC,CAAC;QAEF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrD,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,OAAQ,IAA8B,CAAC,OAAO,KAAK,QAAQ;oBACzE,CAAC,CAAE,IAA4B,CAAC,OAAO,CAAC,IAAI,EAAE;oBAC9C,CAAC,CAAC,EAAE,CAAC;gBACP,IAAI,OAAO;oBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC/B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACvD,MAAM,OAAO,GAAG,OAAQ,SAAqC,CAAC,SAAS,KAAK,QAAQ;oBAClF,CAAC,CAAE,SAAmC,CAAC,SAAS,CAAC,IAAI,EAAE;oBACvD,CAAC,CAAC,EAAE,CAAC;gBACP,IAAI,OAAO;oBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE;YACtB,eAAe,CAAC,IAAI,EAAE;gBACpB,QAAQ,EAAE,gBAAgB;gBAC1B,WAAW,EAAE;oBACX,KAAK,EAAE,qBAAqB;oBAC5B,IAAI,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;oBACtC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,OAAO,IAAI,GAAG;oBAC7C,OAAO,EAAE,GAAG;oBACZ,OAAO,EAAE,CAAC,4BAA4B,CAAC;oBACvC,KAAK,EAAE,EAAE;oBACT,QAAQ,EAAE,aAAa;oBACvB,UAAU,EAAE,MAAM;oBAClB,aAAa,EAAE,mBAAmB;iBACnC;gBACD,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;aAC7B,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5B,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,eAAe,CAAC,IAAI,EAAE;gBACpB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,eAAe;gBAC1B,aAAa,EAAE,CAAC,gBAAgB,CAAC;gBACjC,OAAO,EAAE,qDAAqD;aAC/D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,mBAAmB;IACrB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-codex",
3
- "version": "0.21.13",
3
+ "version": "0.21.15",
4
4
  "description": "Multi-agent orchestration layer for OpenAI Codex CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-codex",
3
- "version": "0.21.13",
3
+ "version": "0.21.15",
4
4
  "description": "Multi-agent orchestration layer for OpenAI Codex CLI",
5
5
  "author": {
6
6
  "name": "Yeachan Heo",
@@ -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 MAX_STOP_STDOUT_BYTES = 1024 * 1024;
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
- && spawn.parent_thread_id === ownerSessionId;
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(isStop) {
247
- if (isStop) process.stdout.write('{}\n');
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 bufferedStopStdoutBytes = 0;
550
- let stopStdoutOversized = false;
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 (!stopStdoutOversized) {
559
- const remaining = MAX_STOP_STDOUT_BYTES - bufferedStopStdoutBytes;
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
- bufferedStopStdoutBytes += slice.byteLength;
616
+ bufferedHookStdoutBytes += slice.byteLength;
564
617
  }
565
618
  if (buffer.byteLength > remaining) {
566
- stopStdoutOversized = true;
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 && stopStdoutOversized) {
584
- writeStopFallback('plugin_stop_hook_launcher_stdout_oversized', `codex-native-hook produced more than ${MAX_STOP_STDOUT_BYTES} bytes of Stop hook stdout`);
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
 
@@ -61,6 +61,16 @@
61
61
  ]
62
62
  }
63
63
  ],
64
+ "SubagentStop": [
65
+ {
66
+ "hooks": [
67
+ {
68
+ "type": "command",
69
+ "command": "node \"${PLUGIN_ROOT}/hooks/codex-native-hook.mjs\""
70
+ }
71
+ ]
72
+ }
73
+ ],
64
74
  "Stop": [
65
75
  {
66
76
  "hooks": [