@probelabs/probe 0.6.0-rc337 → 0.6.0-rc341

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 (32) hide show
  1. package/bin/binaries/{probe-v0.6.0-rc337-x86_64-pc-windows-msvc.zip → probe-v0.6.0-rc341-aarch64-apple-darwin.tar.gz} +0 -0
  2. package/bin/binaries/{probe-v0.6.0-rc337-aarch64-unknown-linux-musl.tar.gz → probe-v0.6.0-rc341-aarch64-unknown-linux-musl.tar.gz} +0 -0
  3. package/bin/binaries/{probe-v0.6.0-rc337-x86_64-apple-darwin.tar.gz → probe-v0.6.0-rc341-x86_64-apple-darwin.tar.gz} +0 -0
  4. package/bin/binaries/probe-v0.6.0-rc341-x86_64-pc-windows-msvc.zip +0 -0
  5. package/bin/binaries/{probe-v0.6.0-rc337-x86_64-unknown-linux-musl.tar.gz → probe-v0.6.0-rc341-x86_64-unknown-linux-musl.tar.gz} +0 -0
  6. package/build/agent/ProbeAgent.d.ts +37 -9
  7. package/build/agent/ProbeAgent.js +196 -62
  8. package/build/agent/acp/tools.js +1 -1
  9. package/build/agent/engines/codex.js +189 -52
  10. package/build/agent/engines/governed-answer-failure.js +164 -5
  11. package/build/agent/engines/governed-codex-exec.js +1227 -0
  12. package/build/agent/engines/governed-codex-profile.js +80 -28
  13. package/build/agent/governance/index.d.ts +18 -0
  14. package/build/agent/governance/index.js +14 -0
  15. package/build/agent/mcp/client.js +10 -56
  16. package/build/index.js +26 -0
  17. package/cjs/agent/ProbeAgent.cjs +3623 -1476
  18. package/cjs/index.cjs +3650 -1478
  19. package/index.d.ts +53 -7
  20. package/package.json +1 -1
  21. package/src/agent/ProbeAgent.d.ts +37 -9
  22. package/src/agent/ProbeAgent.js +196 -62
  23. package/src/agent/acp/tools.js +1 -1
  24. package/src/agent/engines/codex.js +189 -52
  25. package/src/agent/engines/governed-answer-failure.js +164 -5
  26. package/src/agent/engines/governed-codex-exec.js +1227 -0
  27. package/src/agent/engines/governed-codex-profile.js +80 -28
  28. package/src/agent/governance/index.d.ts +18 -0
  29. package/src/agent/governance/index.js +14 -0
  30. package/src/agent/mcp/client.js +10 -56
  31. package/src/index.js +26 -0
  32. package/bin/binaries/probe-v0.6.0-rc337-aarch64-apple-darwin.tar.gz +0 -0
package/index.d.ts CHANGED
@@ -45,6 +45,24 @@ export interface GovernedProcessHandle {
45
45
 
46
46
  export declare function spawnGovernedProcess(spec: GovernedProcessSpec): GovernedProcessHandle;
47
47
 
48
+ export declare const GOVERNED_CODEX_EXEC_PROTOCOL: 'probe.governed-codex-exec/v1';
49
+ export declare const GOVERNED_CODEX_EXEC_ATTESTATION_VERSION: 'probe.governed-codex-exec-attestation/v1';
50
+ export declare const GOVERNED_CODEX_EXEC_TRANSPORT: 'exec-jsonl-default-auth-v1';
51
+ export declare function buildGovernedCodexExecLaunch(options: Record<string, unknown>): Readonly<Record<string, unknown>>;
52
+ export declare function createGovernedCodexExecEngine(options: Record<string, unknown>): Promise<Readonly<{
53
+ run(prompt?: string, options?: Record<string, unknown>): Promise<Readonly<Record<string, unknown>>>;
54
+ query(prompt: string, options?: Record<string, unknown>): AsyncGenerator<Readonly<Record<string, unknown>>>;
55
+ close(): Promise<void>;
56
+ readonly launch: Readonly<Record<string, unknown>> | null;
57
+ }>>;
58
+ export declare function runGovernedCodexExec(options: Record<string, unknown>): Promise<Readonly<Record<string, unknown>>>;
59
+ export declare function formatGovernedCodexExecAttestation(input: Record<string, unknown>): Readonly<Record<string, unknown>>;
60
+ export declare const buildGovernedCodexExecAttestation: typeof formatGovernedCodexExecAttestation;
61
+ export declare function validateGovernedCodexExecAttestation(input: Record<string, unknown>): Readonly<Record<string, unknown>>;
62
+ export declare function projectGovernedCodexExecFailure(error: unknown): Readonly<Record<string, unknown>> | null;
63
+ export declare function normalizeGovernedCodexExecFailure(error: unknown, boundary: 'acquire' | 'query' | 'close'): Error;
64
+ export declare function previewGovernedCodexExecDispatch(prompt: string, systemPrompt?: string): Readonly<{ source: 'probe-host-exec'; tool: 'codex-exec'; promptDigest: `sha256:${string}`; promptBytes: number }>;
65
+
48
66
  /**
49
67
  * Configuration options for creating a ProbeAgent instance
50
68
  */
@@ -91,6 +109,12 @@ export interface ProbeAgentOptions {
91
109
  allowedTools?: string[] | null;
92
110
  /** Attested, fail-closed Codex runtime profile. Requires provider codex and an exact allowedTools match. */
93
111
  governedCodexProfile?: GovernedCodexProfile;
112
+ /** Transport for an attested governed Codex profile. */
113
+ governedCodexTransport?: 'mcp-server-v1' | 'exec-jsonl-default-auth-v1';
114
+ /** Absolute Codex executable for the governed exec transport. */
115
+ codexBin?: string;
116
+ /** Caller-supplied SHA-256 for codexBin. */
117
+ codexSha256?: string;
94
118
  /** Convenience flag to disable all tools (equivalent to allowedTools: []). Takes precedence over allowedTools if set. */
95
119
  disableTools?: boolean;
96
120
  /** Disable automatic mermaid diagram validation and fixing */
@@ -346,7 +370,9 @@ export interface GovernedResultIdentity {
346
370
  export type GovernedCodexProfile =
347
371
  { version: 'probe.governed-codex-profile/v1'; profileId: 'luna-xhigh-readonly-v1'; engine: 'codex'; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; cwd: string; probeTools: ['search', 'extract', 'listFiles']; fallback: false; retries: 0; }
348
372
  /** Admits pinned-protocol `exec` inside the attested sandbox; does not claim commands are semantically safe. */
349
- | { version: 'probe.governed-codex-profile/v2'; profileId: 'luna-xhigh-readonly-native-exec-v1'; engine: 'codex'; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; cwd: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['exec']; fallback: false; retries: 0; };
373
+ | { version: 'probe.governed-codex-profile/v2'; profileId: 'luna-xhigh-readonly-native-exec-v1'; engine: 'codex'; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; cwd: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['exec']; fallback: false; retries: 0; }
374
+ /** Admits observed native `apply_patch` and `exec` inside the configured workspace-write cwd; callers bind that cwd to an isolated worktree. */
375
+ | { version: 'probe.governed-codex-profile/v3'; profileId: 'luna-xhigh-isolated-writer-v1'; engine: 'codex'; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'workspace-write'; approvalPolicy: 'never'; cwd: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['apply_patch', 'exec']; fallback: false; retries: 0; };
350
376
 
351
377
  export interface GovernedCodexRuntimeAttestation {
352
378
  version: 'probe.governed-codex-attestation/v1';
@@ -359,7 +385,7 @@ export interface GovernedCodexRuntimeAttestation {
359
385
 
360
386
  export interface GovernedAnswerResult {
361
387
  data: unknown;
362
- runtimeAttestation: GovernedCodexRuntimeAttestation | GovernedCodexRuntimeAttestationV3;
388
+ runtimeAttestation: GovernedCodexRuntimeAttestation | GovernedCodexRuntimeAttestationV3 | GovernedCodexExecAttestation;
363
389
  }
364
390
 
365
391
  export interface GovernedCodexRuntimeAttestationV2 {
@@ -375,26 +401,46 @@ export interface GovernedCodexRuntimeAttestationV2 {
375
401
 
376
402
  export interface GovernedInvocationAnswerResult {
377
403
  data: unknown;
378
- runtimeAttestation: GovernedCodexRuntimeAttestationV2 | GovernedCodexRuntimeAttestationV3;
404
+ runtimeAttestation: GovernedCodexRuntimeAttestationV2 | GovernedCodexRuntimeAttestationV3 | GovernedCodexExecAttestation;
379
405
  }
380
406
 
381
407
  export interface GovernedIdentifiedAnswerResult {
382
408
  data: unknown;
383
- runtimeAttestation: GovernedCodexRuntimeAttestationV2 | GovernedCodexRuntimeAttestationV3;
409
+ runtimeAttestation: GovernedCodexRuntimeAttestationV2 | GovernedCodexRuntimeAttestationV3 | GovernedCodexExecAttestation;
384
410
  resultIdentity: GovernedResultIdentity;
385
411
  }
386
412
 
387
413
  export interface GovernedCodexRuntimeAttestationV3 {
388
414
  version: 'probe.governed-codex-attestation/v3';
389
- profileId: 'luna-xhigh-readonly-native-exec-v1';
390
- requested: { profileDigest: string; cwdDigest: string; probeMcpToolsDigest: string; codexNativeToolsDigest: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['exec']; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; };
391
- observed: { source: 'session_configured+raw_response_item'; model: 'gpt-5.6-luna'; modelProviderId: 'openai'; reasoningEffort: 'xhigh'; approvalPolicy: 'never'; cwdDigest: string; permissionProfileDigest: string; filesystem: 'restricted-read-root'; network: 'restricted'; nativeTools: { total: number; tools: GovernedCodexNativeToolAggregate[]; }; };
415
+ profileId: 'luna-xhigh-readonly-native-exec-v1' | 'luna-xhigh-isolated-writer-v1';
416
+ requested:
417
+ | { profileDigest: string; cwdDigest: string; probeMcpToolsDigest: string; codexNativeToolsDigest: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['exec']; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; }
418
+ | { profileDigest: string; cwdDigest: string; probeMcpToolsDigest: string; codexNativeToolsDigest: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['apply_patch', 'exec']; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'workspace-write'; approvalPolicy: 'never'; };
419
+ observed:
420
+ | { source: 'session_configured+raw_response_item'; model: 'gpt-5.6-luna'; modelProviderId: 'openai'; reasoningEffort: 'xhigh'; approvalPolicy: 'never'; cwdDigest: string; permissionProfileDigest: string; filesystem: 'restricted-read-root'; network: 'restricted'; nativeTools: { total: number; tools: GovernedCodexNativeToolAggregate[]; }; }
421
+ | { source: 'session_configured+raw_response_item'; model: 'gpt-5.6-luna'; modelProviderId: 'openai'; reasoningEffort: 'xhigh'; approvalPolicy: 'never'; cwdDigest: string; permissionProfileDigest: string; filesystem: 'restricted-write-cwd'; network: 'restricted'; nativeTools: { total: number; tools: GovernedCodexNativeToolAggregate[]; }; };
392
422
  executionContext?: { source: 'caller'; invocationDigest: string; };
393
423
  dispatch?: { source: 'probe-host-tools-call'; tool: 'codex'; promptDigest: string; promptBytes: number; };
394
424
  evidence: { sessionEventCount: 1; nativeCallCount: number; probeMcpCallCount: number; };
395
425
  usage: { status: 'unavailable'; };
396
426
  }
397
427
 
428
+ export interface GovernedCodexExecAttestation {
429
+ version: 'probe.governed-codex-exec-attestation/v1';
430
+ profileId: 'luna-xhigh-readonly-v1' | 'luna-xhigh-readonly-native-exec-v1' | 'luna-xhigh-isolated-writer-v1';
431
+ requested: Record<string, unknown>;
432
+ enforced: {
433
+ source: 'probe-host-codex-exec-argv/v1'; transport: 'exec-jsonl-default-auth-v1'; cliPath: string; cliSha256: `sha256:${string}`; cliVersion: string;
434
+ configDigest: `sha256:${string}`; launchDigest: `sha256:${string}`; cwdDigest: string; codexHome: 'omitted';
435
+ environmentPolicy: 'inherit-with-CODEX_HOME-omitted-v1'; ignoreUserConfig: true; ignoreRules: true; ephemeral: true; noShell: true; loopbackMcpDigest: `sha256:${string}`;
436
+ };
437
+ observed: { source: 'codex-exec-jsonl/v1'; threadDigest: string; streamDigest: string; terminal: 'turn.completed'; eventCount: number; completedItemCount: number; agentMessageCount: number; usedToolItems: Array<{ category: 'mcp_tool_call' | 'command_execution' | 'file_change'; name: string | null; status: 'completed'; count: number }>; probeMcpCallCount: number; finalDigest: string; finalBytes: number; processExitCode: 0; processSignal: null; };
438
+ executionContext?: { source: 'caller'; invocationDigest: string };
439
+ dispatch: { source: 'probe-host-exec'; tool: 'codex-exec'; promptDigest: string; promptBytes: number };
440
+ evidence: { eventCount: number; completedItemCount: number; agentMessageCount: number; probeMcpCallCount: number };
441
+ usage: { status: 'observed'; inputTokens: number; cachedInputTokens: number; outputTokens: number };
442
+ }
443
+
398
444
  /**
399
445
  * Clone options for creating a new agent with shared history
400
446
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@probelabs/probe",
3
- "version": "0.6.0-rc337",
3
+ "version": "0.6.0-rc341",
4
4
  "description": "Node.js wrapper for the probe code search tool",
5
5
  "main": "src/index.js",
6
6
  "module": "src/index.js",
@@ -82,6 +82,12 @@ export interface ProbeAgentOptions {
82
82
  allowedTools?: string[] | null;
83
83
  /** Attested, fail-closed Codex runtime profile. Requires provider codex and an exact allowedTools match. */
84
84
  governedCodexProfile?: GovernedCodexProfile;
85
+ /** Transport for an attested governed Codex profile. The exec transport requires codexBin and codexSha256. */
86
+ governedCodexTransport?: 'mcp-server-v1' | 'exec-jsonl-default-auth-v1';
87
+ /** Absolute Codex executable used by exec-jsonl-default-auth-v1. */
88
+ codexBin?: string;
89
+ /** Caller-supplied SHA-256 (sha256:<64 hex> or bare 64 hex) for codexBin. */
90
+ codexSha256?: string;
85
91
  /** Convenience flag to disable all tools (equivalent to allowedTools: []). Takes precedence over allowedTools if set. */
86
92
  disableTools?: boolean;
87
93
  /** Retry configuration for handling transient API failures */
@@ -104,9 +110,9 @@ export interface ProbeAgentOptions {
104
110
  completionPrompt?: string;
105
111
  /** Enable task management system for tracking multi-step progress */
106
112
  enableTasks?: boolean;
107
- /** Timeout in ms for AI requests (default: 120000 or REQUEST_TIMEOUT env var). Used to abort hung requests. */
113
+ /** Timeout in ms for AI requests (default: 120000 or REQUEST_TIMEOUT env var). `0` disables the per-request deadline; Codex startup remains bounded. */
108
114
  requestTimeout?: number;
109
- /** Maximum timeout in ms for the entire operation including all retries and fallbacks (default: 300000 or MAX_OPERATION_TIMEOUT env var). This is the absolute maximum time for streamTextWithRetryAndFallback. */
115
+ /** Maximum timeout in ms for the entire operation including all retries and fallbacks (default: 300000 or MAX_OPERATION_TIMEOUT env var). `0` disables the overall operation deadline. */
110
116
  maxOperationTimeout?: number;
111
117
  /** Timeout behavior: 'graceful' winds down with bonus steps, 'hard' aborts immediately, 'negotiated' uses a timeout observer (separate LLM call) to decide extensions (default: 'graceful'). Env var: TIMEOUT_BEHAVIOR */
112
118
  timeoutBehavior?: 'graceful' | 'hard' | 'negotiated';
@@ -272,7 +278,9 @@ export interface GovernedResultIdentity {
272
278
  export type GovernedCodexProfile =
273
279
  { version: 'probe.governed-codex-profile/v1'; profileId: 'luna-xhigh-readonly-v1'; engine: 'codex'; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; cwd: string; probeTools: ['search', 'extract', 'listFiles']; fallback: false; retries: 0; }
274
280
  /** Admits pinned-protocol `exec` inside the attested sandbox; does not claim commands are semantically safe. */
275
- | { version: 'probe.governed-codex-profile/v2'; profileId: 'luna-xhigh-readonly-native-exec-v1'; engine: 'codex'; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; cwd: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['exec']; fallback: false; retries: 0; };
281
+ | { version: 'probe.governed-codex-profile/v2'; profileId: 'luna-xhigh-readonly-native-exec-v1'; engine: 'codex'; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; cwd: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['exec']; fallback: false; retries: 0; }
282
+ /** Admits observed native `apply_patch` and `exec` inside the configured workspace-write cwd; callers bind that cwd to an isolated worktree. */
283
+ | { version: 'probe.governed-codex-profile/v3'; profileId: 'luna-xhigh-isolated-writer-v1'; engine: 'codex'; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'workspace-write'; approvalPolicy: 'never'; cwd: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['apply_patch', 'exec']; fallback: false; retries: 0; };
276
284
 
277
285
  export interface GovernedCodexRuntimeAttestation {
278
286
  version: 'probe.governed-codex-attestation/v1';
@@ -285,7 +293,7 @@ export interface GovernedCodexRuntimeAttestation {
285
293
 
286
294
  export interface GovernedAnswerResult {
287
295
  data: unknown;
288
- runtimeAttestation: GovernedCodexRuntimeAttestation | GovernedCodexRuntimeAttestationV3;
296
+ runtimeAttestation: GovernedCodexRuntimeAttestation | GovernedCodexRuntimeAttestationV3 | GovernedCodexExecAttestation;
289
297
  }
290
298
 
291
299
  export interface GovernedCodexRuntimeAttestationV2 {
@@ -301,26 +309,46 @@ export interface GovernedCodexRuntimeAttestationV2 {
301
309
 
302
310
  export interface GovernedInvocationAnswerResult {
303
311
  data: unknown;
304
- runtimeAttestation: GovernedCodexRuntimeAttestationV2 | GovernedCodexRuntimeAttestationV3;
312
+ runtimeAttestation: GovernedCodexRuntimeAttestationV2 | GovernedCodexRuntimeAttestationV3 | GovernedCodexExecAttestation;
305
313
  }
306
314
 
307
315
  export interface GovernedIdentifiedAnswerResult {
308
316
  data: unknown;
309
- runtimeAttestation: GovernedCodexRuntimeAttestationV2 | GovernedCodexRuntimeAttestationV3;
317
+ runtimeAttestation: GovernedCodexRuntimeAttestationV2 | GovernedCodexRuntimeAttestationV3 | GovernedCodexExecAttestation;
310
318
  resultIdentity: GovernedResultIdentity;
311
319
  }
312
320
 
313
321
  export interface GovernedCodexRuntimeAttestationV3 {
314
322
  version: 'probe.governed-codex-attestation/v3';
315
- profileId: 'luna-xhigh-readonly-native-exec-v1';
316
- requested: { profileDigest: string; cwdDigest: string; probeMcpToolsDigest: string; codexNativeToolsDigest: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['exec']; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; };
317
- observed: { source: 'session_configured+raw_response_item'; model: 'gpt-5.6-luna'; modelProviderId: 'openai'; reasoningEffort: 'xhigh'; approvalPolicy: 'never'; cwdDigest: string; permissionProfileDigest: string; filesystem: 'restricted-read-root'; network: 'restricted'; nativeTools: { total: number; tools: GovernedCodexNativeToolAggregate[]; }; };
323
+ profileId: 'luna-xhigh-readonly-native-exec-v1' | 'luna-xhigh-isolated-writer-v1';
324
+ requested:
325
+ | { profileDigest: string; cwdDigest: string; probeMcpToolsDigest: string; codexNativeToolsDigest: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['exec']; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'read-only'; approvalPolicy: 'never'; }
326
+ | { profileDigest: string; cwdDigest: string; probeMcpToolsDigest: string; codexNativeToolsDigest: string; probeMcpTools: ['search', 'extract', 'listFiles']; codexNativeTools: ['apply_patch', 'exec']; model: 'gpt-5.6-luna'; reasoningEffort: 'xhigh'; sandbox: 'workspace-write'; approvalPolicy: 'never'; };
327
+ observed:
328
+ | { source: 'session_configured+raw_response_item'; model: 'gpt-5.6-luna'; modelProviderId: 'openai'; reasoningEffort: 'xhigh'; approvalPolicy: 'never'; cwdDigest: string; permissionProfileDigest: string; filesystem: 'restricted-read-root'; network: 'restricted'; nativeTools: { total: number; tools: GovernedCodexNativeToolAggregate[]; }; }
329
+ | { source: 'session_configured+raw_response_item'; model: 'gpt-5.6-luna'; modelProviderId: 'openai'; reasoningEffort: 'xhigh'; approvalPolicy: 'never'; cwdDigest: string; permissionProfileDigest: string; filesystem: 'restricted-write-cwd'; network: 'restricted'; nativeTools: { total: number; tools: GovernedCodexNativeToolAggregate[]; }; };
318
330
  executionContext?: { source: 'caller'; invocationDigest: string; };
319
331
  dispatch?: { source: 'probe-host-tools-call'; tool: 'codex'; promptDigest: string; promptBytes: number; };
320
332
  evidence: { sessionEventCount: 1; nativeCallCount: number; probeMcpCallCount: number; };
321
333
  usage: { status: 'unavailable'; };
322
334
  }
323
335
 
336
+ export interface GovernedCodexExecAttestation {
337
+ version: 'probe.governed-codex-exec-attestation/v1';
338
+ profileId: 'luna-xhigh-readonly-v1' | 'luna-xhigh-readonly-native-exec-v1' | 'luna-xhigh-isolated-writer-v1';
339
+ requested: Record<string, unknown>;
340
+ enforced: {
341
+ source: 'probe-host-codex-exec-argv/v1'; transport: 'exec-jsonl-default-auth-v1'; cliPath: string; cliSha256: `sha256:${string}`; cliVersion: string;
342
+ configDigest: `sha256:${string}`; launchDigest: `sha256:${string}`; cwdDigest: string; codexHome: 'omitted';
343
+ environmentPolicy: 'inherit-with-CODEX_HOME-omitted-v1'; ignoreUserConfig: true; ignoreRules: true; ephemeral: true; noShell: true; loopbackMcpDigest: `sha256:${string}`;
344
+ };
345
+ observed: { source: 'codex-exec-jsonl/v1'; threadDigest: string; streamDigest: string; terminal: 'turn.completed'; eventCount: number; completedItemCount: number; agentMessageCount: number; usedToolItems: Array<{ category: 'mcp_tool_call' | 'command_execution' | 'file_change'; name: string | null; status: 'completed'; count: number }>; probeMcpCallCount: number; finalDigest: string; finalBytes: number; processExitCode: 0; processSignal: null; };
346
+ executionContext?: { source: 'caller'; invocationDigest: string };
347
+ dispatch: { source: 'probe-host-exec'; tool: 'codex-exec'; promptDigest: string; promptBytes: number };
348
+ evidence: { eventCount: number; completedItemCount: number; agentMessageCount: number; probeMcpCallCount: number };
349
+ usage: { status: 'observed'; inputTokens: number; cachedInputTokens: number; outputTokens: number };
350
+ }
351
+
324
352
  /**
325
353
  * Clone options for creating a new agent with shared history
326
354
  */