@apo-ai/sdk 0.7.1 → 0.9.0

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/README.md CHANGED
@@ -216,7 +216,8 @@ exposes only the deliverables selected by that task.
216
216
  `calledTool(name, opts?)`, `notCalledTool(name, opts?)`, `toolOrder([...])`,
217
217
  `usedNoTools()`, `maxToolCalls(n)`, `noFailedActions()`, `loadedSkill(skill)`,
218
218
  `calledSubagent(agent)`, `messageIncludes(token)`, `maxTurns(n)`,
219
- `maxDurationMs(n)`, `assert(label, predicate)`.
219
+ `maxDurationMs(n, { turn? })`, `maxTokens(n, { turn?, kind? })`,
220
+ `minTokens(n, { turn?, kind? })`, `assert(label, predicate)`.
220
221
 
221
222
  `calledTool` / `notCalledTool` take optional constraints to match a call's
222
223
  **input**, **output**, and **status** (and `count` for an exact number). Each
@@ -1,4 +1,4 @@
1
- import { A as AgentTaskTraceContext } from '../../tracing-DVLUqD-i.js';
1
+ import { A as AgentTaskTraceContext } from '../../tracing-CevT0hQg.js';
2
2
 
3
3
  /**
4
4
  * Vercel AI SDK tracing integration for apo.
@@ -2,8 +2,8 @@
2
2
  // Do not edit by hand — edit the src/ originals and rebuild.
3
3
  import {
4
4
  createApoTracer
5
- } from "../../chunk-QHRWPVPZ.js";
6
- import "../../chunk-HWZVL6TS.js";
5
+ } from "../../chunk-IK4GJX7H.js";
6
+ import "../../chunk-HRYXLRXJ.js";
7
7
  export {
8
8
  createApoTracer
9
9
  };
@@ -1,4 +1,4 @@
1
- import { A as AgentTaskTraceContext } from '../../tracing-DVLUqD-i.js';
1
+ import { A as AgentTaskTraceContext } from '../../tracing-CevT0hQg.js';
2
2
 
3
3
  /**
4
4
  * Anthropic JS SDK tracing integration for apo.
@@ -2,8 +2,8 @@
2
2
  // Do not edit by hand — edit the src/ originals and rebuild.
3
3
  import {
4
4
  createApoAnthropic
5
- } from "../../chunk-SZDSIPXC.js";
6
- import "../../chunk-GDB6SDGN.js";
5
+ } from "../../chunk-43OI6GP7.js";
6
+ import "../../chunk-3OQ3JBFJ.js";
7
7
  export {
8
8
  createApoAnthropic
9
9
  };
@@ -1,4 +1,4 @@
1
- import { A as AgentTaskTraceContext } from '../../tracing-DVLUqD-i.js';
1
+ import { A as AgentTaskTraceContext } from '../../tracing-CevT0hQg.js';
2
2
 
3
3
  /**
4
4
  * OpenAI JS SDK tracing integration for apo.
@@ -22,7 +22,7 @@ import { A as AgentTaskTraceContext } from '../../tracing-DVLUqD-i.js';
22
22
  * { trace, parentSpanId, taskId: ctx.task.id, turnNumber }
23
23
  * );
24
24
  * const response = await client.chat.completions.create({
25
- * model: "google/gemini-2.5-flash-lite",
25
+ * model: "deepseek/deepseek-v4.1-flash",
26
26
  * messages: [{ role: "user", content: String(turn) }],
27
27
  * tools: [...],
28
28
  * });
@@ -2,8 +2,8 @@
2
2
  // Do not edit by hand — edit the src/ originals and rebuild.
3
3
  import {
4
4
  createApoOpenAI
5
- } from "../../chunk-6ZRW5IW6.js";
6
- import "../../chunk-GDB6SDGN.js";
5
+ } from "../../chunk-3B3L2H4Y.js";
6
+ import "../../chunk-3OQ3JBFJ.js";
7
7
  export {
8
8
  createApoOpenAI
9
9
  };
@@ -1,4 +1,4 @@
1
- import { A as AgentTaskTraceContext, a as AgentTaskTraceOptions } from '../tracing-DVLUqD-i.js';
1
+ import { A as AgentTaskTraceContext, a as AgentTaskTraceOptions } from '../tracing-CevT0hQg.js';
2
2
  export { CreateApoTracerOptions, createApoTracer } from './integrations/ai-sdk.js';
3
3
  export { CreateApoOpenAIOptions, createApoOpenAI } from './integrations/openai.js';
4
4
  export { CreateApoAnthropicOptions, createApoAnthropic } from './integrations/anthropic.js';
@@ -47,6 +47,19 @@ interface TraceProjectionCapabilities {
47
47
  timing: EvidenceAvailability;
48
48
  skills: EvidenceAvailability;
49
49
  subagents: EvidenceAvailability;
50
+ /**
51
+ * Token usage on observations. Optional for snapshots written before usage
52
+ * was projected: absent reads as `unavailable`.
53
+ */
54
+ usage?: EvidenceAvailability;
55
+ }
56
+ /**
57
+ * Token counts one observation reported. Each dimension is present only when
58
+ * the source reported it — unknown stays unknown, never zero.
59
+ */
60
+ interface TraceProjectionUsage {
61
+ inputTokens?: number;
62
+ outputTokens?: number;
50
63
  }
51
64
  /** One chat message reconstructed from a generation observation. */
52
65
  interface TraceProjectionMessage {
@@ -75,6 +88,8 @@ interface TraceProjectionObservation {
75
88
  toolParameters?: unknown;
76
89
  toolResult?: unknown;
77
90
  messages?: readonly TraceProjectionMessage[];
91
+ /** Token usage this observation reported. Absent when none was recorded. */
92
+ usage?: TraceProjectionUsage;
78
93
  metadata?: Readonly<Record<string, unknown>>;
79
94
  }
80
95
  /** Trace-level facts. All timing is optional; absence is honest. */
@@ -139,6 +154,34 @@ interface TraceSubagentCall {
139
154
  status: ObservationStatus;
140
155
  startedAt?: string;
141
156
  }
157
+ /** One Task Turn, derived from a `task.turn` observation. */
158
+ interface TraceTurn {
159
+ /** 1-based, in invocation order. */
160
+ turnNumber: number;
161
+ spanId: string;
162
+ durationMs?: number;
163
+ status: ObservationStatus;
164
+ }
165
+ type TokenKind = "input" | "output" | "total";
166
+ /**
167
+ * Token usage summed over a scope (the whole agent execution, or one turn).
168
+ * When `unreported` is non-zero, `tokens` is only a lower bound.
169
+ */
170
+ interface TraceTokenTally {
171
+ tokens: number;
172
+ /**
173
+ * Observations that reported a count, including a step whose count its
174
+ * parent call's own larger count superseded.
175
+ */
176
+ reported: number;
177
+ /**
178
+ * LLM calls in scope whose count is unknown or untrustworthy: a GENERATION
179
+ * that reported no usage for the dimension, or an errored call (a provider
180
+ * error often drops the final usage event, so its count may be short) —
181
+ * except a step beneath a call whose own count is complete, which covers it.
182
+ */
183
+ unreported: number;
184
+ }
142
185
  declare class TraceView {
143
186
  readonly snapshot: TraceProjectionSnapshot;
144
187
  constructor(snapshot: TraceProjectionSnapshot);
@@ -174,6 +217,34 @@ declare class TraceView {
174
217
  * startedAt/endedAt when present.
175
218
  */
176
219
  get durationMs(): number | undefined;
220
+ /**
221
+ * Task Turns in invocation order, or `undefined` when timing evidence is
222
+ * not available. Each is one `task.turn` span: the adapter's whole
223
+ * `sendUserTurn` call for that turn.
224
+ */
225
+ get turns(): readonly TraceTurn[] | undefined;
226
+ /**
227
+ * Tokens the agent under test spent: usage on observations inside
228
+ * `task.turn` spans (every turn, or only turn `turn`). Work outside the
229
+ * turns — the evaluation phase's judges, adapter setup — is not the
230
+ * agent's and is excluded. `undefined` when usage evidence is not
231
+ * available or the requested turn does not exist.
232
+ */
233
+ /** How many Task Turns ran — independent of timing evidence. */
234
+ get turnCountFromSpans(): number;
235
+ tokens(kind: TokenKind, opts?: {
236
+ turn?: number;
237
+ }): TraceTokenTally | undefined;
238
+ /**
239
+ * The run's own Task Turns: `task.turn` observations with no `task.turn`
240
+ * ancestor (a nested run or a user span of the same name inside a turn is
241
+ * part of that turn, not a turn of its own). Turns run sequentially, so
242
+ * invocation order is turn order.
243
+ */
244
+ private get turnSpans();
245
+ private _turnSpans;
246
+ private get childrenByParent();
247
+ private _children;
177
248
  /**
178
249
  * Observations sorted deterministically by invocation time then span ID.
179
250
  * Memoized per TraceView instance since the snapshot is immutable.
@@ -313,15 +384,18 @@ type TypedAdapterDefinition<TName extends string, TDeliverables extends Record<s
313
384
  * it must never silently pass. Value assertions (``t.check``) and LLM
314
385
  * assertions (``t.judge``) do not consult trace capabilities and retain
315
386
  * their existing pass/fail behavior.
387
+ * - ``"error"`` → ``pass=false``. An LLM judge produced no verdict: it was
388
+ * unreachable, returned an HTTP error, or sent an empty or truncated reply
389
+ * (after one retry). The check's quality is unknown, not failed.
316
390
  */
317
- type AssertionOutcome = "pass" | "fail" | "unsupported";
391
+ type AssertionOutcome = "pass" | "fail" | "unsupported" | "error";
318
392
  /**
319
393
  * Metadata about an LLM judge call. Populated by evaluators that use an
320
394
  * LLM to make their pass/fail decision. All fields optional so code-only
321
395
  * evaluators can leave this undefined.
322
396
  */
323
397
  type JudgeMetadata = {
324
- /** Model identifier, e.g. ``"google/gemini-2.5-flash-lite"``. */
398
+ /** Model identifier, e.g. ``"deepseek/deepseek-v4.1-flash"``. */
325
399
  model?: string;
326
400
  /**
327
401
  * Which response contract elicited this judgment (#163): reasoning-first
@@ -357,6 +431,15 @@ type JudgeMetadata = {
357
431
  * content-hashed evidence manifest (replay audit backbone).
358
432
  */
359
433
  session?: AgentJudgeSession;
434
+ /**
435
+ * Trace span id of this judgment itself (issue #288): the span the trace
436
+ * context opens around the judge call / agent session. Lets any surface
437
+ * holding this metadata deep-link into the judge's span in the trace view
438
+ * (`/traces/{trace_run_id}?observation={span_id}`) instead of re-finding
439
+ * it by name. Absent when the run is untraced or the span id can't be
440
+ * trusted (the noop trace context's sentinel).
441
+ */
442
+ span_id?: string;
360
443
  /**
361
444
  * Second-grader evidence: a typed-decision model (Jev via OpenRouter's
362
445
  * `/alpha/decisions`) graded the same deliverable + instruction alongside
@@ -369,7 +452,11 @@ type JudgeMetadata = {
369
452
  /**
370
453
  * Evidence from the second grader. `error` is set when the decisions
371
454
  * endpoint could not be reached — a failed second opinion must never
372
- * affect the check's verdict.
455
+ * affect the check's verdict. `skipped` is set when no verdict was
456
+ * attempted or possible because the second judge could not read the
457
+ * input — a different fact from a transport failure, and rendered
458
+ * distinctly so a run can say "N checks had no second opinion because
459
+ * the value was too large" without grepping error strings (issue #311).
373
460
  */
374
461
  type SecondJudgeEvidence = {
375
462
  /** Decision-model id that graded, e.g. `typesafe/jev-1.13`. */
@@ -386,8 +473,20 @@ type SecondJudgeEvidence = {
386
473
  costUsd?: number;
387
474
  /** Wall-clock latency of the decision call in milliseconds. */
388
475
  latencyMs?: number;
476
+ /**
477
+ * Why no verdict was possible (as opposed to attempted): the input
478
+ * exceeded the second judge model's context limit, so the provider
479
+ * rejected it before judging.
480
+ */
481
+ skipped?: string;
389
482
  /** Why no verdict was recorded (transport/HTTP/parse failure). */
390
483
  error?: string;
484
+ /**
485
+ * True when the second judge graded a `secondJudgeValue` projection
486
+ * instead of the full value the primary judge saw — the verdict
487
+ * corroborates the projection, not the whole deliverable.
488
+ */
489
+ projected?: boolean;
391
490
  };
392
491
  /**
393
492
  * One investigation step of an agentic judge session. Tool results are
@@ -508,6 +607,16 @@ type EvaluationItemResult = {
508
607
  id: string;
509
608
  pass: boolean;
510
609
  reasoning: string;
610
+ /**
611
+ * The outcome category, rolled up from this check's assertions. Set only
612
+ * when the check failed and *every* failing assertion failed for lack of
613
+ * a verdict: ``"error"`` — the judge never answered (unreachable, HTTP
614
+ * error, empty reply), so the check's quality is unknown, not failed;
615
+ * ``"unsupported"`` — the trace projection lacked the evidence. Absent
616
+ * when the check passed or genuinely failed on evidence, so a real FAIL
617
+ * is never masked by an incidental judge error alongside it (issue #323).
618
+ */
619
+ outcome?: AssertionOutcome;
511
620
  /** The rubric instruction from the task definition ("PASS if …"). */
512
621
  instruction?: string;
513
622
  /** Name of the deliverable this check was evaluated against. */
@@ -568,6 +677,12 @@ type EvaluationItemResult = {
568
677
  type TaskEvaluationResult = {
569
678
  checks: EvaluationItemResult[];
570
679
  pass: boolean;
680
+ /**
681
+ * Set when the run has no verdict: every failing check got no answer from
682
+ * the judge (`outcome: "error"`) and nothing genuinely failed. `pass` stays
683
+ * `false`; readers should report "no verdict" rather than FAIL (issue #323).
684
+ */
685
+ noVerdict?: true;
571
686
  };
572
687
  type TaskTranscript = {
573
688
  turns: TaskTranscriptTurn[];
@@ -775,6 +890,19 @@ type ToolCallOptions = {
775
890
  output?: ValueMatcher<unknown>;
776
891
  status?: "ok" | "error";
777
892
  };
893
+ /** Scope for duration budgets: the whole run, or one Task Turn (1-based). */
894
+ type DurationBudgetOptions = {
895
+ turn?: number;
896
+ };
897
+ /**
898
+ * Scope for token budgets. Tokens are the agent's: usage inside `task.turn`
899
+ * spans, summed over every turn or only `turn`. `kind` defaults to `"total"`
900
+ * (input + output).
901
+ */
902
+ type TokenBudgetOptions = {
903
+ turn?: number;
904
+ kind?: TokenKind;
905
+ };
778
906
  /**
779
907
  * LLM judge model config for `t.judge(...)` calls in checks.ts. Threaded
780
908
  * through `runTask({ judge })` from the caller — the runner has no opinion
@@ -782,7 +910,7 @@ type ToolCallOptions = {
782
910
  * `judge` layer of its own; see {@link resolveJudgeConfig} for precedence.
783
911
  */
784
912
  type JudgeConfig = {
785
- /** Model id, e.g. ``"google/gemini-2.5-flash-lite"``. */
913
+ /** Model id, e.g. ``"deepseek/deepseek-v4.1-flash"``. */
786
914
  model: string;
787
915
  /** Override the OpenRouter/OpenAI-compatible base URL. */
788
916
  baseURL?: string;
@@ -828,8 +956,15 @@ interface TestContext {
828
956
  messageIncludes(token: string | RegExp): void;
829
957
  /** Asserts the run took at most `n` turns — anti-flail. */
830
958
  maxTurns(n: number): void;
831
- /** Asserts the run took at most `n` milliseconds — anti-flail. */
832
- maxDurationMs(n: number): void;
959
+ /**
960
+ * Asserts the run took at most `n` milliseconds — anti-flail. With
961
+ * `{ turn }`, bounds that one Task Turn instead.
962
+ */
963
+ maxDurationMs(n: number, opts?: DurationBudgetOptions): void;
964
+ /** Asserts the agent spent at most `n` tokens (whole run, or `{ turn }`). */
965
+ maxTokens(n: number, opts?: TokenBudgetOptions): void;
966
+ /** Asserts the agent spent at least `n` tokens (whole run, or `{ turn }`). */
967
+ minTokens(n: number, opts?: TokenBudgetOptions): void;
833
968
  /** Escape hatch for a named predicate over the complete normalized run. */
834
969
  assert(label: string, predicate: (flow: TraceView) => boolean): void;
835
970
  /** Grades any value (a deliverable, parsed JSON, anything) with a matcher. */
@@ -845,10 +980,22 @@ interface TestContext {
845
980
  * merging field-by-field onto the config threaded in via ``runTask({ judge })``
846
981
  * — set ``{ model }`` to escalate a finicky criterion to a stronger model
847
982
  * without switching the whole run. Absent fields inherit from the base config.
983
+ *
984
+ * ``opts.secondJudgeValue`` grades a smaller view with the second judge
985
+ * only, when the full value exceeds its context limit: the primary judge
986
+ * still sees all of ``value``, so other criteria that need the complete
987
+ * deliverable are unaffected.
848
988
  */
849
989
  judge(values: unknown | unknown[], instruction: string, opts?: {
850
990
  label?: string;
851
991
  judge?: Partial<JudgeConfig>;
992
+ /**
993
+ * What the second judge reads instead of ``values`` — e.g. the
994
+ * tracked-changes section of a redline when the whole marked-up
995
+ * document is too large for the second judge's context. Absent,
996
+ * the second judge sees exactly what the primary judge sees.
997
+ */
998
+ secondJudgeValue?: unknown | unknown[];
852
999
  }): Promise<void>;
853
1000
  /**
854
1001
  * Agentic judge: a tool-using LLM session that investigates the run's own
@@ -878,7 +1025,7 @@ interface TestContext {
878
1025
  * adding a method to the interface without registering it here is a type
879
1026
  * error, and vice versa. See ``tests/test-context-methods.test.ts``.
880
1027
  */
881
- declare const TEST_METHOD_NAMES: readonly ["calledTool", "notCalledTool", "toolOrder", "usedNoTools", "maxToolCalls", "noFailedActions", "loadedSkill", "calledSubagent", "messageIncludes", "maxTurns", "maxDurationMs", "assert", "check", "judge", "agent"];
1028
+ declare const TEST_METHOD_NAMES: readonly ["calledTool", "notCalledTool", "toolOrder", "usedNoTools", "maxToolCalls", "noFailedActions", "loadedSkill", "calledSubagent", "messageIncludes", "maxTurns", "maxDurationMs", "maxTokens", "minTokens", "assert", "check", "judge", "agent"];
882
1029
 
883
1030
  type TaskDefinition<TAdapterName extends string = string, TDeliverable extends string = string> = {
884
1031
  id: string;
@@ -1404,11 +1551,19 @@ interface RejudgeOptions {
1404
1551
  /** Progress sink for human-facing operators (CLI prints to stderr). */
1405
1552
  onProgress?: (message: string) => void;
1406
1553
  }
1407
- /** Per-check pass counts across samples — "fails 2 of 5", not "failed". */
1554
+ /**
1555
+ * Per-check pass counts across samples — "fails 2 of 5", not "failed".
1556
+ *
1557
+ * Samples where the check errored (judge produced no verdict) are tracked
1558
+ * in {@link errored} and count as neither pass nor fail: an unreachable
1559
+ * judge says nothing about stability, so it must not read as a flaky fail.
1560
+ */
1408
1561
  interface RejudgeCheckStability {
1409
1562
  check_id: string;
1410
1563
  passes: number;
1411
1564
  samples: number;
1565
+ /** Samples that produced no verdict (judge error) — issue #323. */
1566
+ errored?: number;
1412
1567
  }
1413
1568
  interface RejudgeOutcome {
1414
1569
  runId: string;
@@ -1426,6 +1581,8 @@ interface RejudgeOutcome {
1426
1581
  /** Full check results from the primary (first) sample. */
1427
1582
  checks: EvaluationItemResult[];
1428
1583
  pass: boolean;
1584
+ /** Every failing check got no answer from the judge — see {@link TaskEvaluationResult.noVerdict}. */
1585
+ noVerdict?: true;
1429
1586
  /** Only meaningful with samples > 1; ordered like the primary sample. */
1430
1587
  stability: RejudgeCheckStability[];
1431
1588
  /** False when the trace projection was unreadable — trajectory assertions were unsupported. */
@@ -1457,6 +1614,8 @@ type AgentTaskRunSummary = {
1457
1614
  taskDir: string;
1458
1615
  taskId: string;
1459
1616
  pass: boolean;
1617
+ /** Every failing check got no answer from the judge — see `TaskEvaluationResult.noVerdict`. */
1618
+ noVerdict?: true;
1460
1619
  checks: EvaluationItemResult[];
1461
1620
  /** Adapter that ran the task. Forwarded to the backend when recording locally. */
1462
1621
  adapterName?: string;
@@ -1711,4 +1870,4 @@ declare function canonicalManifestJson(manifest: TaskRevisionManifestV1): string
1711
1870
  /** SHA-256 (lowercase hex) of the canonical manifest JSON's UTF-8 bytes. */
1712
1871
  declare function contentSha256(manifest: TaskRevisionManifestV1): string;
1713
1872
 
1714
- export { type AISDKResult, type AdapterDefinition, type AdapterRuntimeState, type AdapterSession, type AgentBudget, type AgentEvidence, type AgentJudgeOptions, type AgentJudgeOutcome, type AgentJudgeSession, type AgentJudgeStep, type AgentTaskCliOptions, type AgentTaskRunConfiguration, AgentTaskRunError, type AgentTaskRunSummary, type AgentTaskRuntime, AgentTaskTraceContext, AgentTaskTraceOptions, type AgentTurnResult, type AnthropicMessage, type ApoRunContext, ApoSpanProcessor, type ArtifactUploadConfig, type CheckCompaction, type CheckContext, type CheckGroup, type CleanupContext, type CollectDeliverablesContext, type CollectedDeliverables, type DeliverableDefinition, type DeliverableSummary, type DeliverableValidationResult, type DescribeRegistration, type EvidenceFingerprint, type FileArtifact, type FileArtifactOptions, type FileEntry, type Flow, type FlowEvent, FlowView, type InitializeContext, JUDGE_SEGMENT_LIMIT, type JudgeConfig, type JudgeContext, type JudgePromptBuilder, type JudgeScope, type LoadedTask, type ManifestFile, type ManifestFileInput, type Matcher, type ModeClass, type NameMatcher, type OpenAIMessage, type PreparedTaskResult, RECEIVED_VALUE_LIMIT, type RegisterApoTracingOptions, type RejudgeCheckStability, type RejudgeEndpoints, RejudgeError, type RejudgeOptions, type RejudgeOutcome, type RunTaskOptions, type StartSessionContext, TEST_METHOD_NAMES, type TaskConfig, type TaskDefinition, type TaskEvaluationResult, TaskFiles, type TaskRevisionManifestV1, type TaskRunResult, type TaskScope, type TaskTranscript, type TaskTranscriptTurn, type TestContext, type TestRegistration, type ToolCallOptions, type ToolCallStatus, type TurnContext, type TurnFn, type TurnRecord, type TypedAdapterDefinition, type ValueMatcher, buildManifest, canonicalManifestJson, compactChecksForSubmission, contentSha256, defineAdapter, defineTask, describe, discoverAgentTaskDirs, equals, fileArtifact, filePaths, fromAISDK, fromAnthropicMessages, fromOpenAIMessages, getActiveApoRun, getTaskTurn, includes, isFileArtifact, loadTask, loadTaskRuntime, matchValue, matches, normalizeManifestPath, parseAgentTaskCliArgs, persistFileArtifacts, registerApoTracing, rejudgeTaskRun, resetApoTracing, resetFlowChecks, resetTaskRegistry, resetTaskTurn, resolveTurn, runAgentTaskCli, runTask, runTaskDir, satisfies, sha256Hex, similarity, task, defineCheck as test, turn, withApoRun, withApoRunSync };
1873
+ export { type AISDKResult, type AdapterDefinition, type AdapterRuntimeState, type AdapterSession, type AgentBudget, type AgentEvidence, type AgentJudgeOptions, type AgentJudgeOutcome, type AgentJudgeSession, type AgentJudgeStep, type AgentTaskCliOptions, type AgentTaskRunConfiguration, AgentTaskRunError, type AgentTaskRunSummary, type AgentTaskRuntime, AgentTaskTraceContext, AgentTaskTraceOptions, type AgentTurnResult, type AnthropicMessage, type ApoRunContext, ApoSpanProcessor, type ArtifactUploadConfig, type CheckCompaction, type CheckContext, type CheckGroup, type CleanupContext, type CollectDeliverablesContext, type CollectedDeliverables, type DeliverableDefinition, type DeliverableSummary, type DeliverableValidationResult, type DescribeRegistration, type DurationBudgetOptions, type EvidenceFingerprint, type FileArtifact, type FileArtifactOptions, type FileEntry, type Flow, type FlowEvent, FlowView, type InitializeContext, JUDGE_SEGMENT_LIMIT, type JudgeConfig, type JudgeContext, type JudgePromptBuilder, type JudgeScope, type LoadedTask, type ManifestFile, type ManifestFileInput, type Matcher, type ModeClass, type NameMatcher, type OpenAIMessage, type PreparedTaskResult, RECEIVED_VALUE_LIMIT, type RegisterApoTracingOptions, type RejudgeCheckStability, type RejudgeEndpoints, RejudgeError, type RejudgeOptions, type RejudgeOutcome, type RunTaskOptions, type StartSessionContext, TEST_METHOD_NAMES, type TaskConfig, type TaskDefinition, type TaskEvaluationResult, TaskFiles, type TaskRevisionManifestV1, type TaskRunResult, type TaskScope, type TaskTranscript, type TaskTranscriptTurn, type TestContext, type TestRegistration, type TokenBudgetOptions, type ToolCallOptions, type ToolCallStatus, type TurnContext, type TurnFn, type TurnRecord, type TypedAdapterDefinition, type ValueMatcher, buildManifest, canonicalManifestJson, compactChecksForSubmission, contentSha256, defineAdapter, defineTask, describe, discoverAgentTaskDirs, equals, fileArtifact, filePaths, fromAISDK, fromAnthropicMessages, fromOpenAIMessages, getActiveApoRun, getTaskTurn, includes, isFileArtifact, loadTask, loadTaskRuntime, matchValue, matches, normalizeManifestPath, parseAgentTaskCliArgs, persistFileArtifacts, registerApoTracing, rejudgeTaskRun, resetApoTracing, resetFlowChecks, resetTaskRegistry, resetTaskTurn, resolveTurn, runAgentTaskCli, runTask, runTaskDir, satisfies, sha256Hex, similarity, task, defineCheck as test, turn, withApoRun, withApoRunSync };