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.
- package/Cargo.lock +8 -8
- package/Cargo.toml +1 -1
- package/README.md +14 -0
- package/dist/cli/__tests__/native-assets.test.js +1 -1
- package/dist/cli/__tests__/native-assets.test.js.map +1 -1
- package/dist/cli/__tests__/session-usage.test.d.ts +2 -0
- package/dist/cli/__tests__/session-usage.test.d.ts.map +1 -0
- package/dist/cli/__tests__/session-usage.test.js +88 -0
- package/dist/cli/__tests__/session-usage.test.js.map +1 -0
- 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-usage.d.ts +8 -0
- package/dist/cli/session-usage.d.ts.map +1 -0
- package/dist/cli/session-usage.js +100 -0
- package/dist/cli/session-usage.js.map +1 -0
- package/dist/evals/astra-defaults/__tests__/collector.test.d.ts +2 -0
- package/dist/evals/astra-defaults/__tests__/collector.test.d.ts.map +1 -0
- package/dist/evals/astra-defaults/__tests__/collector.test.js +139 -0
- package/dist/evals/astra-defaults/__tests__/collector.test.js.map +1 -0
- package/dist/evals/astra-defaults/collector.d.ts +31 -0
- package/dist/evals/astra-defaults/collector.d.ts.map +1 -0
- package/dist/evals/astra-defaults/collector.js +215 -0
- package/dist/evals/astra-defaults/collector.js.map +1 -0
- package/dist/native-assets/archive.js +2 -2
- package/dist/native-assets/archive.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +129 -0
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/verify-native-release-assets.test.js +1 -1
- package/dist/scripts/__tests__/verify-native-release-assets.test.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +29 -1
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/eval/collect-astra-defaults.d.ts +2 -0
- package/dist/scripts/eval/collect-astra-defaults.d.ts.map +1 -0
- package/dist/scripts/eval/collect-astra-defaults.js +89 -0
- package/dist/scripts/eval/collect-astra-defaults.js.map +1 -0
- package/dist/session-history/__tests__/usage.test.d.ts +2 -0
- package/dist/session-history/__tests__/usage.test.d.ts.map +1 -0
- package/dist/session-history/__tests__/usage.test.js +216 -0
- package/dist/session-history/__tests__/usage.test.js.map +1 -0
- package/dist/session-history/search.d.ts +1 -1
- package/dist/session-history/search.d.ts.map +1 -1
- package/dist/session-history/search.js +6 -2
- package/dist/session-history/search.js.map +1 -1
- package/dist/session-history/usage.d.ts +44 -0
- package/dist/session-history/usage.d.ts.map +1 -0
- package/dist/session-history/usage.js +211 -0
- package/dist/session-history/usage.js.map +1 -0
- package/dist/verification/__tests__/native-release-manifest.test.js.map +1 -1
- package/package.json +3 -3
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/src/scripts/__tests__/codex-native-hook.test.ts +182 -0
- package/src/scripts/__tests__/verify-native-release-assets.test.ts +3 -3
- package/src/scripts/codex-native-hook.ts +29 -0
- package/src/scripts/eval/collect-astra-defaults.ts +140 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { test } from 'node:test';
|
|
3
|
+
import { collectRecord } from '../collector.js';
|
|
4
|
+
// Stub fixture with response checks
|
|
5
|
+
const fixture = {
|
|
6
|
+
id: 'test-fixture',
|
|
7
|
+
surface: 'explore',
|
|
8
|
+
title: 'Test explore task',
|
|
9
|
+
prompt: 'Find the bug in this code',
|
|
10
|
+
inputs: { 'code.ts': 'const x = 1\nconsole.log(x)' },
|
|
11
|
+
checks: [
|
|
12
|
+
{ kind: 'must-include', name: 'mentions-code', values: ['code', 'bug'] },
|
|
13
|
+
{ kind: 'must-not-include', name: 'no-vague-words', values: ['maybe', 'perhaps'] },
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
// Stub config
|
|
17
|
+
const config = {
|
|
18
|
+
id: 'test-config',
|
|
19
|
+
label: 'Test config',
|
|
20
|
+
isBaseline: false,
|
|
21
|
+
omxRevision: 'abc123',
|
|
22
|
+
roles: {
|
|
23
|
+
explore: { model: 'gpt-6-test', reasoningEffort: 'medium' },
|
|
24
|
+
executor: { model: 'gpt-6-test', reasoningEffort: 'medium' },
|
|
25
|
+
'code-reviewer': { model: 'gpt-6-test', reasoningEffort: 'medium' },
|
|
26
|
+
'team-worker': { model: 'gpt-6-test', reasoningEffort: 'medium' },
|
|
27
|
+
sparkshell: { model: 'gpt-6-test', reasoningEffort: 'medium' },
|
|
28
|
+
},
|
|
29
|
+
serviceTier: 'test',
|
|
30
|
+
cacheConditions: 'test',
|
|
31
|
+
};
|
|
32
|
+
test('collector: pass when response matches checks', async () => {
|
|
33
|
+
const mockCodexInvoker = async () => ({
|
|
34
|
+
exitCode: 0,
|
|
35
|
+
stdout: JSON.stringify({
|
|
36
|
+
response: 'Found a bug in the code. The variable is used correctly.',
|
|
37
|
+
usage: { input_tokens: 100, output_tokens: 50 },
|
|
38
|
+
}),
|
|
39
|
+
stderr: '',
|
|
40
|
+
});
|
|
41
|
+
const result = await collectRecord(fixture, config, { invokeCodex: mockCodexInvoker });
|
|
42
|
+
assert.strictEqual(result.record.outcome, 'pass');
|
|
43
|
+
assert.strictEqual(result.record.checks.length, 2);
|
|
44
|
+
assert.ok(result.record.checks.every((c) => c.passed));
|
|
45
|
+
assert.deepStrictEqual(result.record.usage, {
|
|
46
|
+
inputTokens: 100,
|
|
47
|
+
outputTokens: 50,
|
|
48
|
+
uncachedInputTokens: null,
|
|
49
|
+
cacheReadTokens: null,
|
|
50
|
+
cacheWriteTokens: null,
|
|
51
|
+
source: 'codex exec --json',
|
|
52
|
+
});
|
|
53
|
+
assert.ok((result.record.latencyMs ?? 0) >= 0); // Latency is always recorded, even if 0
|
|
54
|
+
});
|
|
55
|
+
test('collector: fail when response does not match checks', async () => {
|
|
56
|
+
const mockCodexInvoker = async () => ({
|
|
57
|
+
exitCode: 0,
|
|
58
|
+
stdout: JSON.stringify({
|
|
59
|
+
response: 'Maybe this is a bug. Perhaps you should check.',
|
|
60
|
+
usage: { input_tokens: 100, output_tokens: 50 },
|
|
61
|
+
}),
|
|
62
|
+
stderr: '',
|
|
63
|
+
});
|
|
64
|
+
const result = await collectRecord(fixture, config, { invokeCodex: mockCodexInvoker });
|
|
65
|
+
assert.strictEqual(result.record.outcome, 'fail');
|
|
66
|
+
assert.ok(result.record.checks.some((c) => !c.passed));
|
|
67
|
+
});
|
|
68
|
+
test('collector: error when Codex exits non-zero', async () => {
|
|
69
|
+
const mockCodexInvoker = async () => ({
|
|
70
|
+
exitCode: 1,
|
|
71
|
+
stdout: '',
|
|
72
|
+
stderr: 'Codex error: authentication failed',
|
|
73
|
+
});
|
|
74
|
+
const result = await collectRecord(fixture, config, { invokeCodex: mockCodexInvoker });
|
|
75
|
+
assert.strictEqual(result.record.outcome, 'error');
|
|
76
|
+
assert.ok(result.record.notes?.includes('exit code 1'));
|
|
77
|
+
assert.strictEqual(result.record.usage, null);
|
|
78
|
+
});
|
|
79
|
+
test('collector: error when JSON parsing fails', async () => {
|
|
80
|
+
const mockCodexInvoker = async () => ({
|
|
81
|
+
exitCode: 0,
|
|
82
|
+
stdout: 'not valid json',
|
|
83
|
+
stderr: '',
|
|
84
|
+
});
|
|
85
|
+
const result = await collectRecord(fixture, config, { invokeCodex: mockCodexInvoker });
|
|
86
|
+
assert.strictEqual(result.record.outcome, 'error');
|
|
87
|
+
assert.ok(result.record.notes?.includes('Failed to parse'));
|
|
88
|
+
});
|
|
89
|
+
test('collector: error when missing role config', async () => {
|
|
90
|
+
const badConfig = {
|
|
91
|
+
...config,
|
|
92
|
+
roles: { explore: { model: 'gpt-6-test', reasoningEffort: 'medium' } }, // Missing other surfaces
|
|
93
|
+
};
|
|
94
|
+
const mockCodexInvoker = async () => ({
|
|
95
|
+
exitCode: 0,
|
|
96
|
+
stdout: '{}',
|
|
97
|
+
stderr: '',
|
|
98
|
+
});
|
|
99
|
+
const result = await collectRecord({ ...fixture, surface: 'executor' }, badConfig, { invokeCodex: mockCodexInvoker });
|
|
100
|
+
assert.strictEqual(result.record.outcome, 'error');
|
|
101
|
+
assert.ok(result.record.notes?.includes('No role config'));
|
|
102
|
+
});
|
|
103
|
+
test('collector: handle null usage data gracefully', async () => {
|
|
104
|
+
const mockCodexInvoker = async () => ({
|
|
105
|
+
exitCode: 0,
|
|
106
|
+
stdout: JSON.stringify({ response: 'Found a bug in the code. The variable is used correctly.' }),
|
|
107
|
+
stderr: '',
|
|
108
|
+
});
|
|
109
|
+
const result = await collectRecord(fixture, config, { invokeCodex: mockCodexInvoker });
|
|
110
|
+
assert.strictEqual(result.record.outcome, 'pass');
|
|
111
|
+
assert.strictEqual(result.record.usage, null);
|
|
112
|
+
});
|
|
113
|
+
test('collector: records latency on success', async () => {
|
|
114
|
+
const mockCodexInvoker = async () => {
|
|
115
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
116
|
+
return {
|
|
117
|
+
exitCode: 0,
|
|
118
|
+
stdout: JSON.stringify({
|
|
119
|
+
response: 'Found a bug in the code. The variable is used correctly.',
|
|
120
|
+
}),
|
|
121
|
+
stderr: '',
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
const result = await collectRecord(fixture, config, { invokeCodex: mockCodexInvoker });
|
|
125
|
+
assert.ok((result.record.latencyMs ?? 0) >= 10);
|
|
126
|
+
});
|
|
127
|
+
test('collector: records latency even on error', async () => {
|
|
128
|
+
const mockCodexInvoker = async () => {
|
|
129
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
130
|
+
return {
|
|
131
|
+
exitCode: 1,
|
|
132
|
+
stdout: '',
|
|
133
|
+
stderr: 'Error',
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
const result = await collectRecord(fixture, config, { invokeCodex: mockCodexInvoker });
|
|
137
|
+
assert.ok((result.record.latencyMs ?? 0) >= 10);
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=collector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.test.js","sourceRoot":"","sources":["../../../../src/evals/astra-defaults/__tests__/collector.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { EvalConfig, EvalFixture, RunRecord } from './types.js';
|
|
2
|
+
export interface CollectorOptions {
|
|
3
|
+
timeoutMs?: number;
|
|
4
|
+
/** Called to invoke Codex CLI. Default: npx -y @openai/codex */
|
|
5
|
+
invokeCodex?: (args: string[], cwd: string) => Promise<CodexOutput>;
|
|
6
|
+
}
|
|
7
|
+
export interface CodexOutput {
|
|
8
|
+
exitCode: number;
|
|
9
|
+
stdout: string;
|
|
10
|
+
stderr: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CollectionResult {
|
|
13
|
+
record: RunRecord;
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Collects a single RunRecord by executing Codex CLI against a fixture/config pair.
|
|
18
|
+
* Creates a disposable temp workspace, seeds it with fixture inputs, runs Codex,
|
|
19
|
+
* captures output/token usage/latency, and grades against fixture checks.
|
|
20
|
+
*/
|
|
21
|
+
export declare function collectRecord(fixture: EvalFixture, config: EvalConfig, options?: CollectorOptions): Promise<CollectionResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Collects RunRecords for a matrix of fixtures x configs.
|
|
24
|
+
* Yields results as they complete, allowing progress reporting and early abort.
|
|
25
|
+
*/
|
|
26
|
+
export declare function collectMatrix(fixtures: EvalFixture[], configs: EvalConfig[], options?: CollectorOptions): AsyncGenerator<{
|
|
27
|
+
fixture: EvalFixture;
|
|
28
|
+
config: EvalConfig;
|
|
29
|
+
result: CollectionResult;
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/evals/astra-defaults/collector.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CA2K3B;AAwCD;;;GAGG;AACH,wBAAuB,aAAa,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,GAAE,gBAAqB,GAC7B,cAAc,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAOxF"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { mkdtempSync, writeFileSync, rmSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { scoreResponse } from './suite.js';
|
|
6
|
+
/**
|
|
7
|
+
* Collects a single RunRecord by executing Codex CLI against a fixture/config pair.
|
|
8
|
+
* Creates a disposable temp workspace, seeds it with fixture inputs, runs Codex,
|
|
9
|
+
* captures output/token usage/latency, and grades against fixture checks.
|
|
10
|
+
*/
|
|
11
|
+
export async function collectRecord(fixture, config, options = {}) {
|
|
12
|
+
const timeoutMs = options.timeoutMs ?? 15 * 60 * 1000; // 15 minutes default
|
|
13
|
+
const invokeCodex = options.invokeCodex ?? defaultCodexInvoker;
|
|
14
|
+
const startTime = Date.now();
|
|
15
|
+
const tempDir = mkdtempSync(join(tmpdir(), 'codex-eval-'));
|
|
16
|
+
let output = null;
|
|
17
|
+
try {
|
|
18
|
+
// Seed temp workspace with fixture inputs
|
|
19
|
+
for (const [name, content] of Object.entries(fixture.inputs)) {
|
|
20
|
+
writeFileSync(join(tempDir, name), content, 'utf-8');
|
|
21
|
+
}
|
|
22
|
+
// Build Codex args with config model/reasoning overrides
|
|
23
|
+
// Use the surface from the fixture to select the right role config
|
|
24
|
+
const roleConfig = config.roles[fixture.surface];
|
|
25
|
+
if (!roleConfig) {
|
|
26
|
+
throw new Error(`No role config for surface "${fixture.surface}" in config "${config.id}"`);
|
|
27
|
+
}
|
|
28
|
+
// Build args for: codex exec --json --skip-git-repo-check --ephemeral -m <model> -c reasoning_effort=<effort> <prompt>
|
|
29
|
+
const args = [
|
|
30
|
+
'exec',
|
|
31
|
+
'--json',
|
|
32
|
+
'--skip-git-repo-check',
|
|
33
|
+
'--ephemeral',
|
|
34
|
+
'-m',
|
|
35
|
+
roleConfig.model,
|
|
36
|
+
'-c',
|
|
37
|
+
`reasoning_effort='${roleConfig.reasoningEffort}'`,
|
|
38
|
+
fixture.prompt,
|
|
39
|
+
];
|
|
40
|
+
// Run Codex CLI with timeout
|
|
41
|
+
output = await Promise.race([
|
|
42
|
+
invokeCodex(args, tempDir),
|
|
43
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Codex execution timeout after ${timeoutMs}ms`)), timeoutMs)),
|
|
44
|
+
]);
|
|
45
|
+
// Parse output and grade response
|
|
46
|
+
const latencyMs = Date.now() - startTime;
|
|
47
|
+
if (output.exitCode !== 0) {
|
|
48
|
+
// Codex failed; record error outcome
|
|
49
|
+
return {
|
|
50
|
+
record: {
|
|
51
|
+
fixtureId: fixture.id,
|
|
52
|
+
configId: config.id,
|
|
53
|
+
outcome: 'error',
|
|
54
|
+
checks: [],
|
|
55
|
+
requiredChecksPassed: null,
|
|
56
|
+
retries: 0,
|
|
57
|
+
latencyMs,
|
|
58
|
+
usage: null, // No usage data on error
|
|
59
|
+
operatorMinutes: null,
|
|
60
|
+
difficult: false,
|
|
61
|
+
notes: `Codex exit code ${output.exitCode}; stderr: ${output.stderr.slice(0, 200)}`,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Parse JSONL output (--json outputs one JSON object per line)
|
|
66
|
+
// The final event should contain the agent's final response
|
|
67
|
+
let finalEvent = null;
|
|
68
|
+
try {
|
|
69
|
+
const lines = output.stdout.trim().split('\n');
|
|
70
|
+
for (const line of lines) {
|
|
71
|
+
if (line.trim()) {
|
|
72
|
+
finalEvent = JSON.parse(line);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
return {
|
|
78
|
+
record: {
|
|
79
|
+
fixtureId: fixture.id,
|
|
80
|
+
configId: config.id,
|
|
81
|
+
outcome: 'error',
|
|
82
|
+
checks: [],
|
|
83
|
+
requiredChecksPassed: null,
|
|
84
|
+
retries: 0,
|
|
85
|
+
latencyMs,
|
|
86
|
+
usage: null,
|
|
87
|
+
operatorMinutes: null,
|
|
88
|
+
difficult: false,
|
|
89
|
+
notes: `Failed to parse Codex JSONL output: ${e.message}`,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (!finalEvent) {
|
|
94
|
+
return {
|
|
95
|
+
record: {
|
|
96
|
+
fixtureId: fixture.id,
|
|
97
|
+
configId: config.id,
|
|
98
|
+
outcome: 'error',
|
|
99
|
+
checks: [],
|
|
100
|
+
requiredChecksPassed: null,
|
|
101
|
+
retries: 0,
|
|
102
|
+
latencyMs,
|
|
103
|
+
usage: null,
|
|
104
|
+
operatorMinutes: null,
|
|
105
|
+
difficult: false,
|
|
106
|
+
notes: 'No output from Codex exec',
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// Extract response text and usage from final event
|
|
111
|
+
// The structure depends on what Codex outputs
|
|
112
|
+
const responseText = String(finalEvent.response ?? finalEvent.message ?? '');
|
|
113
|
+
const usageData = finalEvent.usage;
|
|
114
|
+
// Grade response
|
|
115
|
+
const checks = scoreResponse(fixture, responseText);
|
|
116
|
+
const passed = checks.every((check) => check.passed);
|
|
117
|
+
// Build usage record from Codex output
|
|
118
|
+
const usage = usageData
|
|
119
|
+
? {
|
|
120
|
+
inputTokens: usageData.input_tokens ?? null,
|
|
121
|
+
outputTokens: usageData.output_tokens ?? null,
|
|
122
|
+
uncachedInputTokens: usageData.uncached_input_tokens ?? null,
|
|
123
|
+
cacheReadTokens: usageData.cache_read_tokens ?? null,
|
|
124
|
+
cacheWriteTokens: usageData.cache_write_tokens ?? null,
|
|
125
|
+
source: 'codex exec --json',
|
|
126
|
+
}
|
|
127
|
+
: null;
|
|
128
|
+
return {
|
|
129
|
+
record: {
|
|
130
|
+
fixtureId: fixture.id,
|
|
131
|
+
configId: config.id,
|
|
132
|
+
outcome: passed ? 'pass' : 'fail',
|
|
133
|
+
checks,
|
|
134
|
+
requiredChecksPassed: null, // Fixture repos not evaluated in this pass
|
|
135
|
+
retries: 0,
|
|
136
|
+
latencyMs,
|
|
137
|
+
usage,
|
|
138
|
+
operatorMinutes: null,
|
|
139
|
+
difficult: false,
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
const latencyMs = Date.now() - startTime;
|
|
145
|
+
return {
|
|
146
|
+
record: {
|
|
147
|
+
fixtureId: fixture.id,
|
|
148
|
+
configId: config.id,
|
|
149
|
+
outcome: 'error',
|
|
150
|
+
checks: [],
|
|
151
|
+
requiredChecksPassed: null,
|
|
152
|
+
retries: 0,
|
|
153
|
+
latencyMs,
|
|
154
|
+
usage: null,
|
|
155
|
+
operatorMinutes: null,
|
|
156
|
+
difficult: false,
|
|
157
|
+
notes: `Collection failed: ${error.message}`,
|
|
158
|
+
},
|
|
159
|
+
error: error.message,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
// Clean up temp workspace
|
|
164
|
+
try {
|
|
165
|
+
rmSync(tempDir, { recursive: true, force: true });
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
// Best effort cleanup
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Default Codex invoker using npx -y @openai/codex
|
|
174
|
+
*/
|
|
175
|
+
async function defaultCodexInvoker(args, cwd) {
|
|
176
|
+
return new Promise((resolve, reject) => {
|
|
177
|
+
const child = spawn('npx', ['-y', '@openai/codex', ...args], {
|
|
178
|
+
cwd,
|
|
179
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
180
|
+
timeout: 16 * 60 * 1000, // 16 min hard timeout in spawn
|
|
181
|
+
});
|
|
182
|
+
let stdout = '';
|
|
183
|
+
let stderr = '';
|
|
184
|
+
child.stdout?.on('data', (data) => {
|
|
185
|
+
stdout += String(data);
|
|
186
|
+
});
|
|
187
|
+
child.stderr?.on('data', (data) => {
|
|
188
|
+
stderr += String(data);
|
|
189
|
+
});
|
|
190
|
+
child.on('error', (err) => {
|
|
191
|
+
reject(err);
|
|
192
|
+
});
|
|
193
|
+
child.on('exit', (code) => {
|
|
194
|
+
resolve({
|
|
195
|
+
exitCode: code ?? -1,
|
|
196
|
+
stdout,
|
|
197
|
+
stderr,
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
child.stdin?.end();
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Collects RunRecords for a matrix of fixtures x configs.
|
|
205
|
+
* Yields results as they complete, allowing progress reporting and early abort.
|
|
206
|
+
*/
|
|
207
|
+
export async function* collectMatrix(fixtures, configs, options = {}) {
|
|
208
|
+
for (const config of configs) {
|
|
209
|
+
for (const fixture of fixtures) {
|
|
210
|
+
const result = await collectRecord(fixture, config, options);
|
|
211
|
+
yield { fixture, config, result };
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../src/evals/astra-defaults/collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmB3C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAoB,EACpB,MAAkB,EAClB,OAAO,GAAqB,EAAE;IAE9B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,qBAAqB;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3D,IAAI,MAAM,GAAuB,IAAI,CAAC;IAEtC,IAAI,CAAC;QACH,0CAA0C;QAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7D,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;QAED,yDAAyD;QACzD,mEAAmE;QACnE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,OAAO,gBAAgB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9F,CAAC;QAED,uHAAuH;QACvH,MAAM,IAAI,GAAG;YACX,MAAM;YACN,QAAQ;YACR,uBAAuB;YACvB,aAAa;YACb,IAAI;YACJ,UAAU,CAAC,KAAK;YAChB,IAAI;YACJ,qBAAqB,UAAU,CAAC,eAAe,GAAG;YAClD,OAAO,CAAC,MAAM;SACf,CAAC;QAEF,6BAA6B;QAC7B,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAC1B,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;YAC1B,IAAI,OAAO,CAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACrC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,SAAS,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAC/F;SACF,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEzC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,qCAAqC;YACrC,OAAO;gBACL,MAAM,EAAE;oBACN,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,EAAE;oBACV,oBAAoB,EAAE,IAAI;oBAC1B,OAAO,EAAE,CAAC;oBACV,SAAS;oBACT,KAAK,EAAE,IAAI,EAAE,yBAAyB;oBACtC,eAAe,EAAE,IAAI;oBACrB,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,mBAAmB,MAAM,CAAC,QAAQ,aAAa,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;iBACpF;aACF,CAAC;QACJ,CAAC;QAED,+DAA+D;QAC/D,4DAA4D;QAC5D,IAAI,UAAU,GAAmC,IAAI,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,MAAM,EAAE;oBACN,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,EAAE;oBACV,oBAAoB,EAAE,IAAI;oBAC1B,OAAO,EAAE,CAAC;oBACV,SAAS;oBACT,KAAK,EAAE,IAAI;oBACX,eAAe,EAAE,IAAI;oBACrB,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,uCAAwC,CAAW,CAAC,OAAO,EAAE;iBACrE;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,MAAM,EAAE;oBACN,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,EAAE;oBACV,oBAAoB,EAAE,IAAI;oBAC1B,OAAO,EAAE,CAAC;oBACV,SAAS;oBACT,KAAK,EAAE,IAAI;oBACX,eAAe,EAAE,IAAI;oBACrB,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,2BAA2B;iBACnC;aACF,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,8CAA8C;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,UAAU,CAAC,KAA2C,CAAC;QAEzE,iBAAiB;QACjB,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAErD,uCAAuC;QACvC,MAAM,KAAK,GAAG,SAAS;YACrB,CAAC,CAAC;gBACE,WAAW,EAAE,SAAS,CAAC,YAAY,IAAI,IAAI;gBAC3C,YAAY,EAAE,SAAS,CAAC,aAAa,IAAI,IAAI;gBAC7C,mBAAmB,EAAE,SAAS,CAAC,qBAAqB,IAAI,IAAI;gBAC5D,eAAe,EAAE,SAAS,CAAC,iBAAiB,IAAI,IAAI;gBACpD,gBAAgB,EAAE,SAAS,CAAC,kBAAkB,IAAI,IAAI;gBACtD,MAAM,EAAE,mBAAmB;aAC5B;YACH,CAAC,CAAC,IAAI,CAAC;QAET,OAAO;YACL,MAAM,EAAE;gBACN,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBACjC,MAAM;gBACN,oBAAoB,EAAE,IAAI,EAAE,2CAA2C;gBACvE,OAAO,EAAE,CAAC;gBACV,SAAS;gBACT,KAAK;gBACL,eAAe,EAAE,IAAI;gBACrB,SAAS,EAAE,KAAK;aACjB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACzC,OAAO;YACL,MAAM,EAAE;gBACN,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,EAAE;gBACV,oBAAoB,EAAE,IAAI;gBAC1B,OAAO,EAAE,CAAC;gBACV,SAAS;gBACT,KAAK,EAAE,IAAI;gBACX,eAAe,EAAE,IAAI;gBACrB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,sBAAuB,KAAe,CAAC,OAAO,EAAE;aACxD;YACD,KAAK,EAAG,KAAe,CAAC,OAAO;SAChC,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,sBAAsB;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,IAAc,EAAE,GAAW;IAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE;YAC3D,GAAG;YACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,+BAA+B;SACzD,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC;gBACN,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;gBACpB,MAAM;gBACN,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,aAAa,CAClC,QAAuB,EACvB,OAAqB,EACrB,OAAO,GAAqB,EAAE;IAE9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -48,7 +48,7 @@ async function inspectTar(archivePath, format) {
|
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
source.resume();
|
|
51
|
-
next(error);
|
|
51
|
+
next(error instanceof Error ? error : new Error(String(error)));
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
54
|
try {
|
|
@@ -153,7 +153,7 @@ async function streamTarMember(archivePath, format, rawName) {
|
|
|
153
153
|
found = true;
|
|
154
154
|
source.once('error', next);
|
|
155
155
|
source.once('end', next);
|
|
156
|
-
source.pipe(output
|
|
156
|
+
source.pipe(output);
|
|
157
157
|
});
|
|
158
158
|
void pipeline(await tarInput(archivePath, format), extractor).then(() => {
|
|
159
159
|
if (!found)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/native-assets/archive.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/native-assets/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ import { getLegacyWikiDir, serializePage, writePage, } from "../../wiki/storage.
|
|
|
23
23
|
import { WIKI_SCHEMA_VERSION } from "../../wiki/types.js";
|
|
24
24
|
import { createUltragoalPlan, readUltragoalPlan, } from "../../ultragoal/artifacts.js";
|
|
25
25
|
import { getBaseStateDir } from "../../state/paths.js";
|
|
26
|
+
import { recordNativeSubagentAuthorityObservation } from "../../subagents/tracker.js";
|
|
26
27
|
import { maybeNudgeLeaderForAllowedWorkerStop } from "../notify-hook/team-worker-stop.js";
|
|
27
28
|
import { MAX_NATIVE_STDIN_JSON_BYTES } from "../hook-payload-guard.js";
|
|
28
29
|
import { injectExecFollowup, readPendingExecFollowups, } from "../../exec/followup.js";
|
|
@@ -911,6 +912,134 @@ describe("codex native hook dispatch", { concurrency: false }, () => {
|
|
|
911
912
|
await rm(cwd, { recursive: true, force: true });
|
|
912
913
|
}
|
|
913
914
|
});
|
|
915
|
+
it("records bounded completion evidence for native subagent Stop events (#3729)", async () => {
|
|
916
|
+
const cwd = await mkdtemp(join(tmpdir(), "omx-native-hook-stop-completion-evidence-"));
|
|
917
|
+
try {
|
|
918
|
+
const stateDir = join(cwd, ".omx", "state");
|
|
919
|
+
const sessionId = "sess-stop-subagent";
|
|
920
|
+
const threadId = "thread-stop-subagent";
|
|
921
|
+
const leaderThreadId = "leader-thread";
|
|
922
|
+
await mkdir(join(stateDir, "sessions", sessionId), { recursive: true });
|
|
923
|
+
await writeSessionStart(cwd, sessionId, { nativeSessionId: leaderThreadId, pid: process.pid });
|
|
924
|
+
// Create transcript with thread_spawn metadata to make dispatcher detect as subagent
|
|
925
|
+
const stopTranscriptPath = join(cwd, "stop-transcript.jsonl");
|
|
926
|
+
await writeFile(stopTranscriptPath, JSON.stringify({
|
|
927
|
+
type: "session_meta",
|
|
928
|
+
payload: { id: threadId, source: { subagent: { thread_spawn: { parent_thread_id: leaderThreadId } } } }
|
|
929
|
+
}) + "\n");
|
|
930
|
+
// Initialize subagent tracking by recording the native subagent observation
|
|
931
|
+
await recordNativeSubagentAuthorityObservation(cwd, {
|
|
932
|
+
sessionIds: [sessionId],
|
|
933
|
+
childThreadId: threadId,
|
|
934
|
+
parentThreadId: leaderThreadId,
|
|
935
|
+
rootNativeSessionId: leaderThreadId,
|
|
936
|
+
authorityEvidence: "valid",
|
|
937
|
+
});
|
|
938
|
+
// Send Stop event from subagent thread
|
|
939
|
+
const result = await dispatchCodexNativeHook({
|
|
940
|
+
hook_event_name: "Stop",
|
|
941
|
+
cwd,
|
|
942
|
+
session_id: sessionId,
|
|
943
|
+
thread_id: threadId,
|
|
944
|
+
stop_hook_active: true,
|
|
945
|
+
}, { cwd, sessionOwnerPid: process.pid });
|
|
946
|
+
// Verify completion evidence was recorded
|
|
947
|
+
const tracking = JSON.parse(await readFile(join(stateDir, "subagent-tracking.json"), "utf-8"));
|
|
948
|
+
const thread = tracking.sessions?.[sessionId]?.threads?.[threadId];
|
|
949
|
+
assert.ok(thread?.completed_at, "completion evidence must record completed_at timestamp");
|
|
950
|
+
assert.equal(thread?.completion_source, "native_stop_event", "completion evidence must mark completionSource as native_stop_event");
|
|
951
|
+
}
|
|
952
|
+
finally {
|
|
953
|
+
await rm(cwd, { recursive: true, force: true });
|
|
954
|
+
}
|
|
955
|
+
});
|
|
956
|
+
it("records bounded delivery evidence for native subagent SessionStart events (#3729)", async () => {
|
|
957
|
+
const cwd = await mkdtemp(join(tmpdir(), "omx-native-hook-sessionstart-delivery-evidence-"));
|
|
958
|
+
try {
|
|
959
|
+
const stateDir = join(cwd, ".omx", "state");
|
|
960
|
+
const sessionId = "sess-sessionstart-subagent";
|
|
961
|
+
const threadId = "thread-sessionstart-subagent";
|
|
962
|
+
const leaderThreadId = "leader-thread";
|
|
963
|
+
await mkdir(join(stateDir, "sessions", sessionId), { recursive: true });
|
|
964
|
+
await writeSessionStart(cwd, sessionId, { nativeSessionId: leaderThreadId, pid: process.pid });
|
|
965
|
+
// Create transcript with thread_spawn metadata to make dispatcher detect as subagent
|
|
966
|
+
const transcriptPath = join(cwd, "sessionstart-transcript.jsonl");
|
|
967
|
+
await writeFile(transcriptPath, JSON.stringify({
|
|
968
|
+
type: "session_meta",
|
|
969
|
+
payload: { id: threadId, source: { subagent: { thread_spawn: { parent_thread_id: leaderThreadId } } } }
|
|
970
|
+
}) + "\n");
|
|
971
|
+
// Send SessionStart event from subagent thread
|
|
972
|
+
// Note: session_id should be the child's thread ID, thread_id is required for evidence recording
|
|
973
|
+
const result = await dispatchCodexNativeHook({
|
|
974
|
+
hook_event_name: "SessionStart",
|
|
975
|
+
cwd,
|
|
976
|
+
session_id: threadId,
|
|
977
|
+
thread_id: threadId,
|
|
978
|
+
transcript_path: transcriptPath,
|
|
979
|
+
}, { cwd, sessionOwnerPid: process.pid });
|
|
980
|
+
// Verify delivery evidence was recorded (without completion_source)
|
|
981
|
+
// Note: Sessions are keyed by canonical session ID in tracking state
|
|
982
|
+
const canonicalFromPointer = JSON.parse(await readFile(join(stateDir, "session.json"), "utf-8"));
|
|
983
|
+
const canonicalSessionIdResult = canonicalFromPointer.session_id || sessionId;
|
|
984
|
+
const tracking = JSON.parse(await readFile(join(stateDir, "subagent-tracking.json"), "utf-8"));
|
|
985
|
+
const thread = tracking.sessions?.[canonicalSessionIdResult]?.threads?.[threadId];
|
|
986
|
+
assert.ok(thread, "thread should exist in tracking");
|
|
987
|
+
// SessionStart should record the turn (turn_count should be incremented to 1)
|
|
988
|
+
assert.equal(thread?.turn_count, 1, "SessionStart must record the turn (turn_count should be 1)");
|
|
989
|
+
// SessionStart should NOT set completed_at
|
|
990
|
+
assert.ok(!thread?.completed_at, "SessionStart must not set completed_at timestamp");
|
|
991
|
+
// SessionStart should NOT set completion_source
|
|
992
|
+
assert.ok(!thread?.completion_source, "SessionStart must not set completion_source");
|
|
993
|
+
}
|
|
994
|
+
finally {
|
|
995
|
+
await rm(cwd, { recursive: true, force: true });
|
|
996
|
+
}
|
|
997
|
+
});
|
|
998
|
+
it("does NOT record completion evidence for leader Stop events (#3729)", async () => {
|
|
999
|
+
const cwd = await mkdtemp(join(tmpdir(), "omx-native-hook-stop-leader-no-record-"));
|
|
1000
|
+
try {
|
|
1001
|
+
const stateDir = join(cwd, ".omx", "state");
|
|
1002
|
+
const sessionId = "sess-stop-leader";
|
|
1003
|
+
const leaderThreadId = "leader-thread-stop";
|
|
1004
|
+
await mkdir(join(stateDir, "sessions", sessionId), { recursive: true });
|
|
1005
|
+
// Initialize subagent tracking with only leader thread BEFORE writeSessionStart
|
|
1006
|
+
await writeJson(join(stateDir, "subagent-tracking.json"), {
|
|
1007
|
+
schemaVersion: 1,
|
|
1008
|
+
sessions: {
|
|
1009
|
+
[sessionId]: {
|
|
1010
|
+
session_id: sessionId,
|
|
1011
|
+
leader_thread_id: leaderThreadId,
|
|
1012
|
+
updated_at: new Date().toISOString(),
|
|
1013
|
+
threads: {
|
|
1014
|
+
[leaderThreadId]: {
|
|
1015
|
+
thread_id: leaderThreadId,
|
|
1016
|
+
kind: "leader",
|
|
1017
|
+
status: "available",
|
|
1018
|
+
first_seen_at: new Date().toISOString(),
|
|
1019
|
+
last_seen_at: new Date().toISOString(),
|
|
1020
|
+
},
|
|
1021
|
+
},
|
|
1022
|
+
},
|
|
1023
|
+
},
|
|
1024
|
+
});
|
|
1025
|
+
// Send Stop event from leader thread
|
|
1026
|
+
const result = await dispatchCodexNativeHook({
|
|
1027
|
+
hook_event_name: "Stop",
|
|
1028
|
+
cwd,
|
|
1029
|
+
session_id: sessionId,
|
|
1030
|
+
thread_id: leaderThreadId,
|
|
1031
|
+
stop_hook_active: true,
|
|
1032
|
+
}, { cwd });
|
|
1033
|
+
// Verify NO completion evidence was recorded for leader
|
|
1034
|
+
const tracking = JSON.parse(await readFile(join(stateDir, "subagent-tracking.json"), "utf-8"));
|
|
1035
|
+
const thread = tracking.sessions?.[sessionId]?.threads?.[leaderThreadId];
|
|
1036
|
+
assert.ok(!thread?.completed_at, "leader Stop must not record completed_at timestamp");
|
|
1037
|
+
assert.ok(!thread?.completion_source, "leader Stop must not record completion_source");
|
|
1038
|
+
}
|
|
1039
|
+
finally {
|
|
1040
|
+
await rm(cwd, { recursive: true, force: true });
|
|
1041
|
+
}
|
|
1042
|
+
});
|
|
914
1043
|
it("emits no-op JSON for oversized Stop stdin without parsing or creating inactive state", async () => {
|
|
915
1044
|
const cwd = await mkdtemp(join(tmpdir(), "omx-native-hook-cli-stop-oversized-"));
|
|
916
1045
|
try {
|