oh-my-codex 0.21.8 → 0.21.9

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 (56) hide show
  1. package/Cargo.lock +8 -8
  2. package/Cargo.toml +1 -1
  3. package/README.md +14 -0
  4. package/dist/cli/__tests__/native-assets.test.js +1 -1
  5. package/dist/cli/__tests__/native-assets.test.js.map +1 -1
  6. package/dist/cli/__tests__/session-usage.test.d.ts +2 -0
  7. package/dist/cli/__tests__/session-usage.test.d.ts.map +1 -0
  8. package/dist/cli/__tests__/session-usage.test.js +88 -0
  9. package/dist/cli/__tests__/session-usage.test.js.map +1 -0
  10. package/dist/cli/session-search.d.ts.map +1 -1
  11. package/dist/cli/session-search.js +7 -0
  12. package/dist/cli/session-search.js.map +1 -1
  13. package/dist/cli/session-usage.d.ts +8 -0
  14. package/dist/cli/session-usage.d.ts.map +1 -0
  15. package/dist/cli/session-usage.js +100 -0
  16. package/dist/cli/session-usage.js.map +1 -0
  17. package/dist/evals/astra-defaults/__tests__/collector.test.d.ts +2 -0
  18. package/dist/evals/astra-defaults/__tests__/collector.test.d.ts.map +1 -0
  19. package/dist/evals/astra-defaults/__tests__/collector.test.js +139 -0
  20. package/dist/evals/astra-defaults/__tests__/collector.test.js.map +1 -0
  21. package/dist/evals/astra-defaults/collector.d.ts +31 -0
  22. package/dist/evals/astra-defaults/collector.d.ts.map +1 -0
  23. package/dist/evals/astra-defaults/collector.js +215 -0
  24. package/dist/evals/astra-defaults/collector.js.map +1 -0
  25. package/dist/native-assets/archive.js +2 -2
  26. package/dist/native-assets/archive.js.map +1 -1
  27. package/dist/scripts/__tests__/codex-native-hook.test.js +129 -0
  28. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  29. package/dist/scripts/__tests__/verify-native-release-assets.test.js +1 -1
  30. package/dist/scripts/__tests__/verify-native-release-assets.test.js.map +1 -1
  31. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  32. package/dist/scripts/codex-native-hook.js +29 -1
  33. package/dist/scripts/codex-native-hook.js.map +1 -1
  34. package/dist/scripts/eval/collect-astra-defaults.d.ts +2 -0
  35. package/dist/scripts/eval/collect-astra-defaults.d.ts.map +1 -0
  36. package/dist/scripts/eval/collect-astra-defaults.js +89 -0
  37. package/dist/scripts/eval/collect-astra-defaults.js.map +1 -0
  38. package/dist/session-history/__tests__/usage.test.d.ts +2 -0
  39. package/dist/session-history/__tests__/usage.test.d.ts.map +1 -0
  40. package/dist/session-history/__tests__/usage.test.js +216 -0
  41. package/dist/session-history/__tests__/usage.test.js.map +1 -0
  42. package/dist/session-history/search.d.ts +1 -1
  43. package/dist/session-history/search.d.ts.map +1 -1
  44. package/dist/session-history/search.js +6 -2
  45. package/dist/session-history/search.js.map +1 -1
  46. package/dist/session-history/usage.d.ts +44 -0
  47. package/dist/session-history/usage.d.ts.map +1 -0
  48. package/dist/session-history/usage.js +211 -0
  49. package/dist/session-history/usage.js.map +1 -0
  50. package/dist/verification/__tests__/native-release-manifest.test.js.map +1 -1
  51. package/package.json +3 -3
  52. package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
  53. package/src/scripts/__tests__/codex-native-hook.test.ts +182 -0
  54. package/src/scripts/__tests__/verify-native-release-assets.test.ts +3 -3
  55. package/src/scripts/codex-native-hook.ts +29 -0
  56. package/src/scripts/eval/collect-astra-defaults.ts +140 -0
@@ -0,0 +1,211 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { open, realpath } from 'node:fs/promises';
3
+ import { basename, join, resolve } from 'node:path';
4
+ import { createInterface } from 'node:readline';
5
+ import { listRolloutFiles, parseSinceSpec, resolveSessionSearchCodexHomeDirs } from './search.js';
6
+ export const SESSION_TOKEN_FIELDS = [
7
+ 'input_tokens', 'cached_input_tokens', 'output_tokens', 'reasoning_output_tokens', 'total_tokens',
8
+ ];
9
+ function object(value) {
10
+ return value !== null && typeof value === 'object' && !Array.isArray(value) ? value : null;
11
+ }
12
+ function string(value) {
13
+ return typeof value === 'string' && value.trim() !== '' ? value : null;
14
+ }
15
+ function timestamp(value) {
16
+ return typeof value === 'string' && Number.isFinite(Date.parse(value)) ? new Date(value).toISOString() : null;
17
+ }
18
+ function time(value) {
19
+ return value === null ? Number.NEGATIVE_INFINITY : Date.parse(value);
20
+ }
21
+ function emptyUsage() {
22
+ return { input_tokens: null, cached_input_tokens: null, output_tokens: null, reasoning_output_tokens: null, total_tokens: null };
23
+ }
24
+ function hasUsage(usage) {
25
+ return SESSION_TOKEN_FIELDS.some((field) => usage[field] !== null);
26
+ }
27
+ function readUsage(value, diagnostics) {
28
+ const raw = object(value);
29
+ if (!raw)
30
+ return null;
31
+ const usage = emptyUsage();
32
+ for (const field of SESSION_TOKEN_FIELDS) {
33
+ const count = raw[field];
34
+ if (typeof count === 'number' && Number.isSafeInteger(count) && count >= 0)
35
+ usage[field] = count;
36
+ else if (count !== undefined && count !== null)
37
+ diagnostics.invalid_usage_fields++;
38
+ }
39
+ return hasUsage(usage) ? usage : null;
40
+ }
41
+ async function inspectTranscript(path, archived, diagnostics) {
42
+ const handle = await open(path, 'r').catch((error) => {
43
+ if (error.code === 'ENOENT')
44
+ return null;
45
+ throw error;
46
+ });
47
+ if (!handle)
48
+ return null;
49
+ try {
50
+ const info = await handle.stat();
51
+ if (!info.isFile() || info.size === 0)
52
+ return null;
53
+ // Bound the read to this snapshot even while the session keeps appending.
54
+ const stream = handle.createReadStream({ encoding: 'utf-8', end: info.size - 1, autoClose: false });
55
+ const reader = createInterface({ input: stream, crlfDelay: Infinity });
56
+ let candidate = null;
57
+ try {
58
+ for await (const line of reader) {
59
+ if (!line.trim())
60
+ continue;
61
+ let record = null;
62
+ try {
63
+ record = object(JSON.parse(line));
64
+ }
65
+ catch { /* Partial trailing records are ignored. */ }
66
+ if (!record) {
67
+ diagnostics.malformed_records++;
68
+ if (!candidate)
69
+ return null;
70
+ continue;
71
+ }
72
+ const payload = object(record.payload);
73
+ if (!candidate) {
74
+ const id = string(payload?.id);
75
+ if (record.type !== 'session_meta' || !id)
76
+ return null;
77
+ const project = string(payload?.cwd);
78
+ const startedAt = timestamp(payload?.timestamp) ?? timestamp(record.timestamp);
79
+ candidate = { project, row: {
80
+ session_id: id, started_at: startedAt, last_activity_at: startedAt, usage_at: null,
81
+ cwd_basename: project ? basename(project.replace(/\\/g, '/')) : null,
82
+ cwd_hash: project ? createHash('sha256').update(project).digest('hex').slice(0, 12) : null,
83
+ archived, transcript_copies: 1, usage: emptyUsage(),
84
+ } };
85
+ }
86
+ const at = timestamp(record.timestamp) ?? timestamp(payload?.timestamp);
87
+ if (time(at) > time(candidate.row.last_activity_at))
88
+ candidate.row.last_activity_at = at;
89
+ if (record.type !== 'event_msg' || payload?.type !== 'token_count')
90
+ continue;
91
+ const usage = readUsage(object(payload.info)?.total_token_usage, diagnostics);
92
+ if (usage) {
93
+ // The last cumulative snapshot replaces earlier counters; last_token_usage
94
+ // and repeated rate-limit events must never be summed into it.
95
+ candidate.row.usage = usage;
96
+ candidate.row.usage_at = at;
97
+ }
98
+ }
99
+ }
100
+ finally {
101
+ reader.close();
102
+ stream.destroy();
103
+ }
104
+ return candidate;
105
+ }
106
+ finally {
107
+ await handle.close();
108
+ }
109
+ }
110
+ function preferSnapshot(a, b) {
111
+ if (hasUsage(a.usage) !== hasUsage(b.usage))
112
+ return hasUsage(a.usage);
113
+ if (time(a.usage_at) !== time(b.usage_at))
114
+ return time(a.usage_at) > time(b.usage_at);
115
+ // Timestamp ties favor the more advanced recorded total, then field coverage.
116
+ if (a.usage.total_tokens !== b.usage.total_tokens)
117
+ return (a.usage.total_tokens ?? -1) > (b.usage.total_tokens ?? -1);
118
+ return SESSION_TOKEN_FIELDS.filter((field) => a.usage[field] !== null).length
119
+ > SESSION_TOKEN_FIELDS.filter((field) => b.usage[field] !== null).length;
120
+ }
121
+ async function matchesProject(project, filter, cwd) {
122
+ if (!filter || filter === 'all')
123
+ return true;
124
+ if (!project)
125
+ return false;
126
+ if (filter !== 'current')
127
+ return project.toLowerCase().includes(filter.toLowerCase());
128
+ const [actual, expected] = await Promise.all([
129
+ realpath(project).catch(() => resolve(project)),
130
+ realpath(cwd).catch(() => resolve(cwd)),
131
+ ]);
132
+ return process.platform === 'win32' ? actual.toLowerCase() === expected.toLowerCase() : actual === expected;
133
+ }
134
+ export function summarizeSessionUsage(rows) {
135
+ return Object.fromEntries(SESSION_TOKEN_FIELDS.map((field) => {
136
+ let known = null;
137
+ let knownSessions = 0;
138
+ for (const row of rows) {
139
+ const value = row.usage[field];
140
+ if (value === null)
141
+ continue;
142
+ known = (known ?? 0) + value;
143
+ if (!Number.isSafeInteger(known))
144
+ throw new Error(`Session usage total exceeds the safe integer range: ${field}`);
145
+ knownSessions++;
146
+ }
147
+ return [field, { known, known_sessions: knownSessions, unknown_sessions: rows.length - knownSessions }];
148
+ }));
149
+ }
150
+ export async function buildSessionUsageReport(options = {}) {
151
+ const limit = options.limit ?? 20;
152
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 500)
153
+ throw new Error('Session usage limit must be an integer between 1 and 500.');
154
+ const sort = options.sort ?? 'recent';
155
+ if (sort !== 'recent' && sort !== 'tokens')
156
+ throw new Error('Session usage sort must be recent or tokens.');
157
+ const now = options.now ?? Date.now();
158
+ const cutoff = parseSinceSpec(options.since, now);
159
+ if (cutoff !== null && !Number.isFinite(cutoff))
160
+ throw new Error('Invalid --since duration.');
161
+ const diagnostics = { scanned_files: 0, skipped_files: 0, malformed_records: 0, invalid_usage_fields: 0, duplicate_transcripts: 0 };
162
+ const sessions = new Map();
163
+ for (const home of await resolveSessionSearchCodexHomeDirs(options)) {
164
+ for (const archived of [false, true]) {
165
+ for (const path of await listRolloutFiles(join(home, archived ? 'archived_sessions' : 'sessions'), true)) {
166
+ diagnostics.scanned_files++;
167
+ const candidate = await inspectTranscript(path, archived, diagnostics);
168
+ if (!candidate) {
169
+ diagnostics.skipped_files++;
170
+ continue;
171
+ }
172
+ const row = candidate.row;
173
+ if (options.session && !row.session_id.toLowerCase().includes(options.session.toLowerCase()))
174
+ continue;
175
+ if (!await matchesProject(candidate.project, options.project, options.cwd ?? process.cwd()))
176
+ continue;
177
+ const existing = sessions.get(row.session_id);
178
+ if (!existing) {
179
+ sessions.set(row.session_id, row);
180
+ continue;
181
+ }
182
+ diagnostics.duplicate_transcripts++;
183
+ if (preferSnapshot(row, existing)) {
184
+ existing.usage = row.usage;
185
+ existing.usage_at = row.usage_at;
186
+ }
187
+ if (time(row.last_activity_at) > time(existing.last_activity_at))
188
+ existing.last_activity_at = row.last_activity_at;
189
+ if (row.started_at !== null && (existing.started_at === null || time(row.started_at) < time(existing.started_at)))
190
+ existing.started_at = row.started_at;
191
+ existing.archived = existing.archived && row.archived;
192
+ existing.transcript_copies++;
193
+ }
194
+ }
195
+ }
196
+ const rows = [...sessions.values()].filter((row) => cutoff === null || time(row.last_activity_at) >= cutoff);
197
+ rows.sort((a, b) => {
198
+ if (sort === 'tokens' && a.usage.total_tokens !== b.usage.total_tokens)
199
+ return (b.usage.total_tokens ?? -1) - (a.usage.total_tokens ?? -1);
200
+ if (time(a.last_activity_at) !== time(b.last_activity_at))
201
+ return time(b.last_activity_at) - time(a.last_activity_at);
202
+ return a.session_id.localeCompare(b.session_id);
203
+ });
204
+ return {
205
+ schema_version: 1, scope: 'session-cumulative', generated_at: new Date(now).toISOString(),
206
+ matched_sessions: rows.length, sessions_with_usage: rows.filter((row) => hasUsage(row.usage)).length,
207
+ truncated: rows.length > limit, totals: summarizeSessionUsage(rows), diagnostics,
208
+ sessions: rows.slice(0, limit),
209
+ };
210
+ }
211
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/session-history/usage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"native-release-manifest.test.js","sourceRoot":"","sources":["../../../src/verification/__tests__/native-release-manifest.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-release-manifest.test.js","sourceRoot":"","sources":["../../../src/verification/__tests__/native-release-manifest.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-codex",
3
- "version": "0.21.8",
3
+ "version": "0.21.9",
4
4
  "description": "Multi-agent orchestration layer for OpenAI Codex CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -100,14 +100,14 @@
100
100
  "@iarna/toml": "^2.2.5",
101
101
  "@modelcontextprotocol/sdk": "^1.26.0",
102
102
  "@napi-rs/lzma": "1.4.1",
103
- "tar-stream": "3.2.0",
103
+ "tar-stream": "3.2.2",
104
104
  "yauzl": "3.4.0",
105
105
  "zod": "^4.3.6"
106
106
  },
107
107
  "devDependencies": {
108
108
  "@biomejs/biome": "^2.4.4",
109
109
  "@types/node": "^26.0.0",
110
- "@types/tar-stream": "3.1.4",
110
+ "@types/tar-stream": "3.1.5",
111
111
  "@types/yauzl": "3.4.0",
112
112
  "@types/yazl": "3.3.1",
113
113
  "c8": "^11.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-codex",
3
- "version": "0.21.8",
3
+ "version": "0.21.9",
4
4
  "description": "Multi-agent orchestration layer for OpenAI Codex CLI",
5
5
  "author": {
6
6
  "name": "Yeachan Heo",
@@ -66,6 +66,7 @@ import {
66
66
  readUltragoalPlan,
67
67
  } from "../../ultragoal/artifacts.js";
68
68
  import { getBaseStateDir } from "../../state/paths.js";
69
+ import { recordNativeSubagentAuthorityObservation } from "../../subagents/tracker.js";
69
70
  import { maybeNudgeLeaderForAllowedWorkerStop } from "../notify-hook/team-worker-stop.js";
70
71
  import { MAX_NATIVE_STDIN_JSON_BYTES } from "../hook-payload-guard.js";
71
72
  import {
@@ -1278,6 +1279,187 @@ describe("codex native hook dispatch", { concurrency: false }, () => {
1278
1279
  }
1279
1280
  });
1280
1281
 
1282
+ it("records bounded completion evidence for native subagent Stop events (#3729)", async () => {
1283
+ const cwd = await mkdtemp(
1284
+ join(tmpdir(), "omx-native-hook-stop-completion-evidence-"),
1285
+ );
1286
+ try {
1287
+ const stateDir = join(cwd, ".omx", "state");
1288
+ const sessionId = "sess-stop-subagent";
1289
+ const threadId = "thread-stop-subagent";
1290
+ const leaderThreadId = "leader-thread";
1291
+ await mkdir(join(stateDir, "sessions", sessionId), { recursive: true });
1292
+ await writeSessionStart(cwd, sessionId, { nativeSessionId: leaderThreadId, pid: process.pid });
1293
+
1294
+ // Create transcript with thread_spawn metadata to make dispatcher detect as subagent
1295
+ const stopTranscriptPath = join(cwd, "stop-transcript.jsonl");
1296
+ await writeFile(stopTranscriptPath, JSON.stringify({
1297
+ type: "session_meta",
1298
+ payload: { id: threadId, source: { subagent: { thread_spawn: { parent_thread_id: leaderThreadId } } } }
1299
+ }) + "\n");
1300
+
1301
+ // Initialize subagent tracking by recording the native subagent observation
1302
+ await recordNativeSubagentAuthorityObservation(cwd, {
1303
+ sessionIds: [sessionId],
1304
+ childThreadId: threadId,
1305
+ parentThreadId: leaderThreadId,
1306
+ rootNativeSessionId: leaderThreadId,
1307
+ authorityEvidence: "valid",
1308
+ });
1309
+
1310
+ // Send Stop event from subagent thread
1311
+ const result = await dispatchCodexNativeHook(
1312
+ {
1313
+ hook_event_name: "Stop",
1314
+ cwd,
1315
+ session_id: sessionId,
1316
+ thread_id: threadId,
1317
+ stop_hook_active: true,
1318
+ },
1319
+ { cwd, sessionOwnerPid: process.pid },
1320
+ );
1321
+
1322
+ // Verify completion evidence was recorded
1323
+ const tracking = JSON.parse(
1324
+ await readFile(join(stateDir, "subagent-tracking.json"), "utf-8"),
1325
+ ) as {
1326
+ sessions?: Record<
1327
+ string,
1328
+ { threads?: Record<string, { completed_at?: string; completion_source?: string; turn_count?: number }> }
1329
+ >;
1330
+ };
1331
+
1332
+ const thread = tracking.sessions?.[sessionId]?.threads?.[threadId];
1333
+ assert.ok(thread?.completed_at, "completion evidence must record completed_at timestamp");
1334
+ assert.equal(thread?.completion_source, "native_stop_event", "completion evidence must mark completionSource as native_stop_event");
1335
+ } finally {
1336
+ await rm(cwd, { recursive: true, force: true });
1337
+ }
1338
+ });
1339
+
1340
+ it("records bounded delivery evidence for native subagent SessionStart events (#3729)", async () => {
1341
+ const cwd = await mkdtemp(
1342
+ join(tmpdir(), "omx-native-hook-sessionstart-delivery-evidence-"),
1343
+ );
1344
+ try {
1345
+ const stateDir = join(cwd, ".omx", "state");
1346
+ const sessionId = "sess-sessionstart-subagent";
1347
+ const threadId = "thread-sessionstart-subagent";
1348
+ const leaderThreadId = "leader-thread";
1349
+ await mkdir(join(stateDir, "sessions", sessionId), { recursive: true });
1350
+ await writeSessionStart(cwd, sessionId, { nativeSessionId: leaderThreadId, pid: process.pid });
1351
+
1352
+ // Create transcript with thread_spawn metadata to make dispatcher detect as subagent
1353
+ const transcriptPath = join(cwd, "sessionstart-transcript.jsonl");
1354
+ await writeFile(transcriptPath, JSON.stringify({
1355
+ type: "session_meta",
1356
+ payload: { id: threadId, source: { subagent: { thread_spawn: { parent_thread_id: leaderThreadId } } } }
1357
+ }) + "\n");
1358
+
1359
+
1360
+
1361
+ // Send SessionStart event from subagent thread
1362
+ // Note: session_id should be the child's thread ID, thread_id is required for evidence recording
1363
+ const result = await dispatchCodexNativeHook(
1364
+ {
1365
+ hook_event_name: "SessionStart",
1366
+ cwd,
1367
+ session_id: threadId,
1368
+ thread_id: threadId,
1369
+ transcript_path: transcriptPath,
1370
+ },
1371
+ { cwd, sessionOwnerPid: process.pid },
1372
+ );
1373
+
1374
+ // Verify delivery evidence was recorded (without completion_source)
1375
+ // Note: Sessions are keyed by canonical session ID in tracking state
1376
+ const canonicalFromPointer = JSON.parse(
1377
+ await readFile(join(stateDir, "session.json"), "utf-8"),
1378
+ ) as { session_id?: string };
1379
+ const canonicalSessionIdResult = canonicalFromPointer.session_id || sessionId;
1380
+ const tracking = JSON.parse(
1381
+ await readFile(join(stateDir, "subagent-tracking.json"), "utf-8"),
1382
+ ) as {
1383
+ sessions?: Record<
1384
+ string,
1385
+ { threads?: Record<string, { completed_at?: string; completion_source?: string; turn_count?: number }> }
1386
+ >;
1387
+ };
1388
+
1389
+ const thread = tracking.sessions?.[canonicalSessionIdResult]?.threads?.[threadId];
1390
+ assert.ok(thread, "thread should exist in tracking");
1391
+ // SessionStart should record the turn (turn_count should be incremented to 1)
1392
+ assert.equal(thread?.turn_count, 1, "SessionStart must record the turn (turn_count should be 1)");
1393
+ // SessionStart should NOT set completed_at
1394
+ assert.ok(!thread?.completed_at, "SessionStart must not set completed_at timestamp");
1395
+ // SessionStart should NOT set completion_source
1396
+ assert.ok(!thread?.completion_source, "SessionStart must not set completion_source");
1397
+ } finally {
1398
+ await rm(cwd, { recursive: true, force: true });
1399
+ }
1400
+ });
1401
+
1402
+ it("does NOT record completion evidence for leader Stop events (#3729)", async () => {
1403
+ const cwd = await mkdtemp(
1404
+ join(tmpdir(), "omx-native-hook-stop-leader-no-record-"),
1405
+ );
1406
+ try {
1407
+ const stateDir = join(cwd, ".omx", "state");
1408
+ const sessionId = "sess-stop-leader";
1409
+ const leaderThreadId = "leader-thread-stop";
1410
+ await mkdir(join(stateDir, "sessions", sessionId), { recursive: true });
1411
+
1412
+ // Initialize subagent tracking with only leader thread BEFORE writeSessionStart
1413
+ await writeJson(join(stateDir, "subagent-tracking.json"), {
1414
+ schemaVersion: 1,
1415
+ sessions: {
1416
+ [sessionId]: {
1417
+ session_id: sessionId,
1418
+ leader_thread_id: leaderThreadId,
1419
+ updated_at: new Date().toISOString(),
1420
+ threads: {
1421
+ [leaderThreadId]: {
1422
+ thread_id: leaderThreadId,
1423
+ kind: "leader",
1424
+ status: "available",
1425
+ first_seen_at: new Date().toISOString(),
1426
+ last_seen_at: new Date().toISOString(),
1427
+ },
1428
+ },
1429
+ },
1430
+ },
1431
+ });
1432
+
1433
+ // Send Stop event from leader thread
1434
+ const result = await dispatchCodexNativeHook(
1435
+ {
1436
+ hook_event_name: "Stop",
1437
+ cwd,
1438
+ session_id: sessionId,
1439
+ thread_id: leaderThreadId,
1440
+ stop_hook_active: true,
1441
+ },
1442
+ { cwd },
1443
+ );
1444
+
1445
+ // Verify NO completion evidence was recorded for leader
1446
+ const tracking = JSON.parse(
1447
+ await readFile(join(stateDir, "subagent-tracking.json"), "utf-8"),
1448
+ ) as {
1449
+ sessions?: Record<
1450
+ string,
1451
+ { threads?: Record<string, { completed_at?: string; completion_source?: string; turn_count?: number }> }
1452
+ >;
1453
+ };
1454
+
1455
+ const thread = tracking.sessions?.[sessionId]?.threads?.[leaderThreadId];
1456
+ assert.ok(!thread?.completed_at, "leader Stop must not record completed_at timestamp");
1457
+ assert.ok(!thread?.completion_source, "leader Stop must not record completion_source");
1458
+ } finally {
1459
+ await rm(cwd, { recursive: true, force: true });
1460
+ }
1461
+ });
1462
+
1281
1463
  it("emits no-op JSON for oversized Stop stdin without parsing or creating inactive state", async () => {
1282
1464
  const cwd = await mkdtemp(
1283
1465
  join(tmpdir(), "omx-native-hook-cli-stop-oversized-"),
@@ -20,16 +20,16 @@ function verify(manifest: string, artifacts: string) {
20
20
  return spawnSync(process.execPath, [fileURLToPath(new URL('../verify-native-release-assets.js', import.meta.url)), '--manifest', manifest, '--artifacts-dir', artifacts], { encoding: 'utf-8' });
21
21
  }
22
22
 
23
- async function collect(stream: NodeJS.ReadableStream): Promise<Buffer> {
23
+ async function collect(stream: AsyncIterable<any>): Promise<Buffer> {
24
24
  const output: Buffer[] = [];
25
25
  for await (const chunk of stream) output.push(Buffer.from(chunk));
26
26
  return Buffer.concat(output);
27
27
  }
28
28
 
29
- async function tarArchive(entries: Array<{ name: string; data?: Buffer; type?: tar.Headers['type']; linkname?: string }>, format: 'tar.gz' | 'tar.xz'): Promise<Buffer> {
29
+ async function tarArchive(entries: Array<{ name: string; data?: Buffer; type?: tar.Header['type']; linkname?: string }>, format: 'tar.gz' | 'tar.xz'): Promise<Buffer> {
30
30
  const archive = tar.pack();
31
31
  for (const item of entries) {
32
- const header: tar.Headers = { name: item.name, type: item.type ?? 'file', size: item.data?.length ?? 0, linkname: item.linkname };
32
+ const header = { name: item.name, type: item.type ?? 'file', size: item.data?.length ?? 0, linkname: item.linkname ?? '' };
33
33
  if ((item.type ?? 'file') === 'file') archive.entry(header, item.data ?? Buffer.alloc(0));
34
34
  else archive.entry(header);
35
35
  }
@@ -25,6 +25,7 @@ import {
25
25
  readSubagentSessionSummary,
26
26
  readSubagentTrackingState,
27
27
  recordNativeSubagentAuthorityObservation,
28
+ recordSubagentTurnForSession,
28
29
  repairPersistedRootIdentity,
29
30
  quarantinePersistedRootAuthority,
30
31
  revokeNativeSubagentAuthorities,
@@ -21957,6 +21958,7 @@ export async function dispatchCodexNativeHook(
21957
21958
  let resolvedNativeSessionId = nativeSessionId;
21958
21959
  let skipCanonicalSessionStartContext = false;
21959
21960
  let isSubagentSessionStart = false;
21961
+ let recordedNativeSubagentSessionStart = false;
21960
21962
  const authoritativeTeamWorker = authoritativeTeamWorkerEvidence !== null;
21961
21963
  const authoritativeWorkerPayloadSessionId = authoritativeTeamWorker
21962
21964
  && candidateWorkerPayloadSessionId
@@ -21999,6 +22001,7 @@ export async function dispatchCodexNativeHook(
21999
22001
  );
22000
22002
  if (belongsToCanonicalSession) {
22001
22003
  resolvedNativeSessionId = nativeSessionId;
22004
+ recordedNativeSubagentSessionStart = true;
22002
22005
  await recordNativeSubagentSessionStart(
22003
22006
  cwd,
22004
22007
  canonicalSessionId,
@@ -22591,6 +22594,19 @@ export async function dispatchCodexNativeHook(
22591
22594
  goalWorkflowAdditionalContext,
22592
22595
  triageAdditionalContext,
22593
22596
  ].filter((entry): entry is string => Boolean(entry)).join("\n\n") || null;
22597
+ // Record bounded delivery evidence for native subagent SessionStart events
22598
+ // Skip if recordNativeSubagentSessionStart already recorded the turn (to avoid duplicate increment)
22599
+ if (hookEventName === "SessionStart" && isSubagentSessionStart && allowImplicitSessionSideEffects && !recordedNativeSubagentSessionStart) {
22600
+ const threadId = readPayloadThreadId(payload);
22601
+ if (canonicalSessionId?.trim() && threadId?.trim()) {
22602
+ await recordSubagentTurnForSession(cwd, {
22603
+ sessionId: canonicalSessionId.trim(),
22604
+ threadId: threadId.trim(),
22605
+ completed: false,
22606
+ timestamp: new Date().toISOString(),
22607
+ }).catch(() => {});
22608
+ }
22609
+ }
22594
22610
  if (additionalContext) {
22595
22611
  outputJson = {
22596
22612
  hookSpecificOutput: {
@@ -22665,6 +22681,19 @@ export async function dispatchCodexNativeHook(
22665
22681
  skipAutoNudge: isSubagentStop,
22666
22682
  sessionScopedOnly: !allowGlobalSideEffects,
22667
22683
  });
22684
+ // Record bounded completion evidence for native subagent Stop events
22685
+ if (isSubagentStop) {
22686
+ const threadId = readPayloadThreadId(payload);
22687
+ if (canonicalSessionId?.trim() && threadId?.trim()) {
22688
+ await recordSubagentTurnForSession(cwd, {
22689
+ sessionId: canonicalSessionId.trim(),
22690
+ threadId: threadId.trim(),
22691
+ completed: true,
22692
+ completionSource: 'native_stop_event',
22693
+ timestamp: new Date().toISOString(),
22694
+ }).catch(() => {});
22695
+ }
22696
+ }
22668
22697
  outputJson = stopOutput ?? (
22669
22698
  allowGlobalSideEffects
22670
22699
  ? await buildCompletedGoalCleanupStopOutput(payload, cwd)