@apo-ai/sdk 0.10.1 → 0.12.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.
@@ -1,4 +1,4 @@
1
- import { A as AgentTaskTraceContext } from '../../tracing-DoIGvJW1.js';
1
+ import { A as AgentTaskTraceContext } from '../../tracing-FqFObrmt.js';
2
2
 
3
3
  /**
4
4
  * Vercel AI SDK tracing integration for apo.
@@ -1,4 +1,4 @@
1
- import { A as AgentTaskTraceContext } from '../../tracing-DoIGvJW1.js';
1
+ import { A as AgentTaskTraceContext } from '../../tracing-FqFObrmt.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-6H2GACBG.js";
6
- import "../../chunk-Z64A566W.js";
5
+ } from "../../chunk-X73JGMK3.js";
6
+ import "../../chunk-JTWQD27M.js";
7
7
  export {
8
8
  createApoAnthropic
9
9
  };
@@ -1,4 +1,4 @@
1
- import { A as AgentTaskTraceContext } from '../../tracing-DoIGvJW1.js';
1
+ import { A as AgentTaskTraceContext } from '../../tracing-FqFObrmt.js';
2
2
 
3
3
  /**
4
4
  * OpenAI 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
  createApoOpenAI
5
- } from "../../chunk-P43KL5AR.js";
6
- import "../../chunk-Z64A566W.js";
5
+ } from "../../chunk-A3UYQ7M4.js";
6
+ import "../../chunk-JTWQD27M.js";
7
7
  export {
8
8
  createApoOpenAI
9
9
  };
@@ -1,4 +1,4 @@
1
- import { A as AgentTaskTraceContext, a as AgentTaskTraceOptions } from '../tracing-DoIGvJW1.js';
1
+ import { A as AgentTaskTraceContext, a as AgentTaskTraceOptions } from '../tracing-FqFObrmt.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';
@@ -131,6 +131,37 @@ interface TraceProjectionSnapshot {
131
131
  * the drift where concurrent tools appeared in completion order.
132
132
  */
133
133
 
134
+ /** One mid-run steer, derived from a `task.steer` observation. */
135
+ interface TraceSteer {
136
+ /** 1-based, registration order across the run. */
137
+ number: number;
138
+ /** Scripted turn the steer targeted. */
139
+ turn: number;
140
+ label?: string;
141
+ /**
142
+ * The serialized trigger (`{"toolResults":2}`, `"runStart"`). Records
143
+ * carry the trigger as an object — the local tee embeds the SteerRecord
144
+ * directly and the canonical path re-parses its JSON — while the event
145
+ * metadata carries the pre-stringified form; both render identically.
146
+ */
147
+ trigger: string;
148
+ message: unknown;
149
+ status: "delivered" | "undelivered" | "error";
150
+ /** ISO timestamp of successful delivery (wall clock, display only). */
151
+ deliveredAt?: string;
152
+ /**
153
+ * The steer observation's own `startedAt` — the snapshot-clock position of
154
+ * the delivery. Window/delivery comparisons use THIS, not `deliveredAt`:
155
+ * local tee snapshots timestamp with a monotonic clock (performance.now
156
+ * epoch), so a wall-clock deliveredAt is not comparable to sibling
157
+ * observations, while the steer observation's own timestamp always is.
158
+ */
159
+ spanStartedAt?: string;
160
+ /** The steer observation's span id — the deterministic tie-breaker. */
161
+ spanId: string;
162
+ boundary?: string;
163
+ reason?: string;
164
+ }
134
165
  /** A tool call derived from a `TOOL` observation. */
135
166
  interface TraceToolCall {
136
167
  spanId: string;
@@ -199,6 +230,29 @@ declare class TraceView {
199
230
  get skillLoads(): readonly TraceSkillLoad[];
200
231
  /** Subagent delegations derived from `AGENT` observations, in invocation order. */
201
232
  get subagentCalls(): readonly TraceSubagentCall[];
233
+ /**
234
+ * Mid-run steers, derived from `task.steer` observations, in number order.
235
+ * Empty when the trace carries none — steering assertions fail closed on
236
+ * the empty case instead of passing vacuously.
237
+ */
238
+ get steers(): readonly TraceSteer[];
239
+ /**
240
+ * Whether an observation started after the steer observation, using the
241
+ * same ordering key as everywhere else in this class (startedAt, then
242
+ * span id). The id tie-break matters on the local tee path, whose ISO
243
+ * timestamps truncate to milliseconds — a steer and the generation that
244
+ * consumes it can share one.
245
+ */
246
+ private static startedAfter;
247
+ /**
248
+ * A TraceView over the run after steer n was delivered: observations that
249
+ * started after the steer's delivery timestamp (the first generation that
250
+ * consumed it through run end). Missing timestamps sort after timestamped
251
+ * observations per the projection contract, so they belong to the window
252
+ * too. An undelivered steer yields an empty view — assertions inside it
253
+ * fail on missing evidence rather than passing vacuously.
254
+ */
255
+ windowAfterSteer(n: number): TraceView;
202
256
  /** Last assistant message content — the agent's "reply". Empty if none. */
203
257
  get reply(): string;
204
258
  /**
@@ -348,6 +402,38 @@ type CollectedDeliverables = Record<string, unknown>;
348
402
  type AgentTurnResult = {
349
403
  response: unknown;
350
404
  };
405
+ /**
406
+ * Live progress signal from the agent under test, fired while a turn runs.
407
+ * The adapter forwards these from its harness's event stream via the
408
+ * `notifyAgentEvent` callback on `sendUserTurn`'s context — the runner cannot
409
+ * observe subprocess spans live (the projection tee only sees spans created
410
+ * through the runner's trace context), so the adapter is the source of
411
+ * progress. `run_start` MUST be the first event a turn emits.
412
+ */
413
+ type AgentProgressEvent = {
414
+ kind: "run_start";
415
+ } | {
416
+ kind: "tool_result";
417
+ toolName?: string;
418
+ } | {
419
+ kind: "assistant_reply";
420
+ };
421
+ /** Where the harness actually queued/landed an injected message. */
422
+ type SteerDeliveryBoundary = "run_start" | "tool_results" | "assistant_reply";
423
+ type SteerResult = {
424
+ /**
425
+ * The boundary the harness reports for the injection. Harness truth wins
426
+ * over the scheduler's trigger intent — a `{ toolResults: 2 }` steer may
427
+ * land at `assistant_reply` on a harness that drains its queue there.
428
+ */
429
+ boundary: SteerDeliveryBoundary;
430
+ };
431
+ /** Context handed to `session.steer()`. */
432
+ type SteerContext = {
433
+ trace: AgentTaskTraceContext;
434
+ turnNumber: number;
435
+ steerNumber: number;
436
+ };
351
437
  /**
352
438
  * The adapter-reported identity of the agent under test for one Task Run
353
439
  * The adapter resolves its configuration (env vars, aliases,
@@ -431,7 +517,22 @@ type AdapterSession = {
431
517
  trace: AgentTaskTraceContext;
432
518
  turnNumber: number;
433
519
  parentSpanId?: string;
520
+ /**
521
+ * The adapter calls this for every agent progress event while the turn
522
+ * runs. Fire-and-forget (sync void); the runner serializes internally
523
+ * and never lets scheduler errors break the turn. MUST be called with
524
+ * `{ kind: "run_start" }` before the first model call.
525
+ */
526
+ notifyAgentEvent: (event: AgentProgressEvent) => void;
434
527
  }) => Promise<AgentTurnResult>;
528
+ /**
529
+ * Mid-run injection primitive. Optional = negotiated capability: a task
530
+ * with registered steers fails closed before turn 1 when this is absent.
531
+ * Resolve when the harness has accepted/queued the message, not when the
532
+ * agent has reacted to it — reaction is asserted afterward by
533
+ * `t.steerDelivered` / `t.afterSteer`.
534
+ */
535
+ steer?: (input: unknown, context: SteerContext) => Promise<SteerResult>;
435
536
  close?: () => Promise<void>;
436
537
  };
437
538
  type AdapterDefinition = {
@@ -449,6 +550,47 @@ type TypedAdapterDefinition<TName extends string, TDeliverables extends Record<s
449
550
  collectDeliverables: (ctx: CollectDeliverablesContext) => Promise<TCollected>;
450
551
  };
451
552
 
553
+ /**
554
+ * Mid-run steering registration — the task-plane half of steering.
555
+ *
556
+ * `steer({...})` is called at eval-file top level next to `turn()`: it
557
+ * declares that a user message will be injected into a turn that is already
558
+ * running, at a boundary described relative to that turn's progress (after
559
+ * its n-th tool result, its n-th assistant reply, or right at run start).
560
+ *
561
+ * Registration mechanics mirror `turn.ts`: a module-global array under a
562
+ * `Symbol.for` key so the registry survives the eval module being imported
563
+ * from a temp path, reset by `loadTask` before each import and read by the
564
+ * runner's turn loop afterwards.
565
+ */
566
+ type SteerTrigger =
567
+ /** After the n-th completed tool result of the target turn (1-based). */
568
+ {
569
+ toolResults: number;
570
+ }
571
+ /** After the n-th completed assistant message of the target turn (1-based). */
572
+ | {
573
+ assistantReply: number;
574
+ }
575
+ /** Immediately after the turn's user input is handed to the agent. */
576
+ | "runStart";
577
+ /** One scripted steer, registered from the eval file (or legacy checks.ts). */
578
+ type SteerSpec = {
579
+ when: SteerTrigger;
580
+ /** The injected user message — same shape a `turn()` return value has. */
581
+ message: unknown;
582
+ /** Human label shown in the trace, transcript, and check failures. */
583
+ label?: string;
584
+ /** 1-based scripted turn this steer belongs to. Default 1. */
585
+ turn?: number;
586
+ };
587
+ /** Register a mid-run steer. Call at eval-file top level, next to turn(). */
588
+ declare function steer(spec: SteerSpec): void;
589
+ /** All steers registered so far, in registration order (runner use). */
590
+ declare function getTaskSteers(): SteerSpec[];
591
+ /** Clear registrations (loadTask use — mirrors resetTaskTurn). */
592
+ declare function resetTaskSteers(): void;
593
+
452
594
  /**
453
595
  * The outcome of a single assertion.
454
596
  *
@@ -524,6 +666,20 @@ type JudgeMetadata = {
524
666
  * as extra signals per check, not a second vote.
525
667
  */
526
668
  secondJudge?: SecondJudgeEvidence;
669
+ /**
670
+ * Present only when the second judge's verdict decided this check (cascade
671
+ * mode, `judge.mode: "cascade"`): the primary LLM judge was not called.
672
+ * Absent = the primary judge decided. The `model` field above then names
673
+ * the decision model, and `response` carries its typed verdict.
674
+ */
675
+ verdict_by?: "second-judge";
676
+ /**
677
+ * How many attempts of this call were cut because the judge's stream fell
678
+ * into a repetition loop (`t.judge` only). Absent = none. 1 with a verdict:
679
+ * the first draw looped and the retry answered. A call whose last draw
680
+ * looped has no verdict and is recorded as a judge error.
681
+ */
682
+ reasoning_loops?: number;
527
683
  };
528
684
  /**
529
685
  * Evidence from the second grader. `error` is set when the decisions
@@ -766,10 +922,36 @@ type TaskEvaluationResult = {
766
922
  type TaskTranscript = {
767
923
  turns: TaskTranscriptTurn[];
768
924
  };
925
+ /**
926
+ * Outcome of one scripted steer. Steers never fail the run by themselves —
927
+ * a dropped or errored steer is recorded here and on the trace, and
928
+ * `t.steerDelivered` is what turns it red.
929
+ */
930
+ type SteerRecord = {
931
+ /** 1-based, registration order across the whole run. */
932
+ number: number;
933
+ /** Scripted turn the steer targeted. */
934
+ turn: number;
935
+ label?: string;
936
+ trigger: SteerTrigger;
937
+ message: unknown;
938
+ status: "delivered" | "undelivered" | "error";
939
+ /** ISO timestamp of successful delivery. */
940
+ deliveredAt?: string;
941
+ boundary?: SteerDeliveryBoundary;
942
+ /**
943
+ * Why undelivered ("turn ended before trigger fired", "no progress events
944
+ * observed for this turn", "target turn never ran"), or the injection
945
+ * error message when status === "error".
946
+ */
947
+ reason?: string;
948
+ };
769
949
  type TaskTranscriptTurn = {
770
950
  turnNumber: number;
771
951
  userAction: unknown;
772
952
  agentResponse: unknown;
953
+ /** Steers that targeted this turn, in steerNumber order. */
954
+ steers?: SteerRecord[];
773
955
  };
774
956
  type TaskRunResult = {
775
957
  task: TaskDefinition;
@@ -1118,6 +1300,13 @@ type JudgeConfig = {
1118
1300
  * {@link JudgePromptBuilder}.
1119
1301
  */
1120
1302
  prompt?: JudgePromptBuilder;
1303
+ /**
1304
+ * `"cascade"`: the second judge (decision model, `APO_SECOND_JUDGE_MODEL`)
1305
+ * answers first and a confident verdict (native confidence ≥ 0.95) stands
1306
+ * without calling the primary judge — the cost tier. Unset = the default
1307
+ * dual behavior (second judge as parallel, evidence-only shadow).
1308
+ */
1309
+ mode?: "cascade";
1121
1310
  };
1122
1311
  /**
1123
1312
  * What a check knows about its scope when it invokes the judge — the
@@ -1163,6 +1352,20 @@ interface TestContext {
1163
1352
  minTokens(n: number, opts?: TokenBudgetOptions): void;
1164
1353
  /** Escape hatch for a named predicate over the complete normalized run. */
1165
1354
  assert(label: string, predicate: (flow: TraceView) => boolean): void;
1355
+ /**
1356
+ * Asserts steer n was delivered AND consumed: at least one generation
1357
+ * observation started after the steer's delivery timestamp. Fails closed —
1358
+ * a trace with no steering evidence at all is a failure, never a pass.
1359
+ */
1360
+ steerDelivered(n: number): void;
1361
+ /**
1362
+ * Scopes trace-based assertions to what the agent did after steer n: the
1363
+ * fn receives a TestContext over `view.windowAfterSteer(n)`, and every
1364
+ * existing matcher works unchanged inside it. When the steer is missing
1365
+ * from the trace, records one failure and skips fn (inner assertions must
1366
+ * not run — they would pass vacuously against an empty window).
1367
+ */
1368
+ afterSteer(n: number, fn: (t: TestContext) => void): void;
1166
1369
  /** Grades any value (a deliverable, parsed JSON, anything) with a matcher. */
1167
1370
  check<T>(value: T, matcher: Matcher<T>, label?: string): void;
1168
1371
  /**
@@ -1238,7 +1441,7 @@ interface TestContext {
1238
1441
  * adding a method to the interface without registering it here is a type
1239
1442
  * error, and vice versa. See ``tests/test-context-methods.test.ts``.
1240
1443
  */
1241
- declare const TEST_METHOD_NAMES: readonly ["calledTool", "notCalledTool", "toolOrder", "usedNoTools", "maxToolCalls", "noFailedActions", "loadedSkill", "calledSubagent", "messageIncludes", "maxTurns", "maxDurationMs", "maxTokens", "minTokens", "assert", "check", "judge", "agent"];
1444
+ declare const TEST_METHOD_NAMES: readonly ["calledTool", "notCalledTool", "toolOrder", "usedNoTools", "maxToolCalls", "noFailedActions", "loadedSkill", "calledSubagent", "messageIncludes", "maxTurns", "maxDurationMs", "maxTokens", "minTokens", "steerDelivered", "afterSteer", "assert", "check", "judge", "agent"];
1242
1445
 
1243
1446
  type TaskDefinition<TAdapterName extends string = string, TDeliverable extends string = string> = {
1244
1447
  id: string;
@@ -1516,6 +1719,65 @@ interface PreparedTaskResult {
1516
1719
  */
1517
1720
  declare function persistFileArtifacts(deliverables: Record<string, unknown>, config: ArtifactUploadConfig): Promise<PreparedTaskResult>;
1518
1721
 
1722
+ /**
1723
+ * Second grader: a typed-decision model (System One / Jev) that grades the
1724
+ * same deliverable + instruction as the primary LLM judge, in parallel.
1725
+ *
1726
+ * Why a second grader at all: the primary judge's verdict is the product,
1727
+ * but its trustworthiness is invisible. A non-generative decision model
1728
+ * cannot fabricate quoted evidence the way text judges measurably do, and
1729
+ * its calibrated confidence acts as a difficulty meter — so agreement +
1730
+ * confidence turn every check into self-describing evidence (auto-verified /
1731
+ * borderline / disputed) at ~1/100th of a cent per call.
1732
+ *
1733
+ * The second opinion NEVER changes the verdict. It is opt-in
1734
+ * (`APO_SECOND_JUDGE_MODEL`), runs on a decisions endpoint (not
1735
+ * chat/completions — decision models reject it), and any failure is
1736
+ * recorded as `error` on the evidence instead of affecting the check.
1737
+ *
1738
+ * Providers: every decisions endpoint speaks its own request/response
1739
+ * dialect, selected via `APO_SECOND_JUDGE_PROVIDER` (or auto-detected from
1740
+ * the base URL). Adding a provider means adding one object to `PROVIDERS`
1741
+ * — nothing else in this file or the caller changes.
1742
+ */
1743
+
1744
+ /** How a recorded second-judge opinion relates to the check's verdict. */
1745
+ type SecondJudgeFacts = {
1746
+ kind: "none";
1747
+ } | {
1748
+ kind: "error";
1749
+ } | {
1750
+ kind: "skipped";
1751
+ } | {
1752
+ kind: "split";
1753
+ confidence: number;
1754
+ } | {
1755
+ kind: "agree";
1756
+ confidence: number;
1757
+ } | {
1758
+ kind: "unsure";
1759
+ confidence: number;
1760
+ };
1761
+ /**
1762
+ * Structural input for {@link secondJudgeFacts}: any check shape carrying a
1763
+ * verdict and optional judge evidence — the SDK's own results and the wire
1764
+ * types the CLI and dashboard read from the backend are all assignable.
1765
+ */
1766
+ type SecondJudgeFactsInput = {
1767
+ pass: boolean;
1768
+ judge?: {
1769
+ secondJudge?: {
1770
+ choice?: "pass" | "fail";
1771
+ confidence?: number;
1772
+ skipped?: string;
1773
+ error?: string;
1774
+ };
1775
+ };
1776
+ };
1777
+ declare function secondJudgeFacts(check: SecondJudgeFactsInput): SecondJudgeFacts;
1778
+ /** One honest sentence about the relation; null when corroborated. */
1779
+ declare function secondJudgeTakeaway(check: SecondJudgeFactsInput): string | null;
1780
+
1519
1781
  /**
1520
1782
  * Check submission compaction (issue #175).
1521
1783
  *
@@ -1721,6 +1983,8 @@ type RunTaskOptions = {
1721
1983
  */
1722
1984
  judgeTools?: JudgeToolsConfig;
1723
1985
  onTurn?: (turnNumber: number, userAction: TaskTranscriptTurn["userAction"], agentResponse: unknown) => void;
1986
+ /** Called for every steer outcome (delivered / undelivered / error). */
1987
+ onSteer?: (record: SteerRecord) => void;
1724
1988
  /**
1725
1989
  * Skip the internal `loadTask(taskDir)` call and reuse an already-loaded
1726
1990
  * task definition.
@@ -1741,6 +2005,20 @@ type RunTaskOptions = {
1741
2005
  };
1742
2006
  declare function runTask(taskDir: string, options?: RunTaskOptions): Promise<TaskRunResult>;
1743
2007
 
2008
+ /**
2009
+ * Issue #8: shown when a run ends with zero registered checks. A bare
2010
+ * `FAIL <task>` with no Checks section looked like a real failure but was
2011
+ * almost always a silent registration bug (e.g. a double-import that wiped
2012
+ * the check registry). Naming `test()` matches the documented registration
2013
+ * function — `apps/docs` reference/task.md.
2014
+ *
2015
+ * Lives next to {@link aggregateResult} because the empty-checks verdict is
2016
+ * the single source of truth for "why did this run fail with no checks?".
2017
+ * The CLI and the standalone e2e runner both import this so the wording
2018
+ * stays in one place.
2019
+ */
2020
+ declare const NO_CHECKS_REGISTERED_MESSAGE = "No tests were registered by the eval module \u2014 a task must define at least one test().";
2021
+
1744
2022
  /**
1745
2023
  * Issue #159: replay Phase 2 of a completed Run against its stored
1746
2024
  * Deliverables — without re-running the agent.
@@ -2047,8 +2325,8 @@ declare function getActiveApoRun(): ApoRunContext | undefined;
2047
2325
  *
2048
2326
  * Pure, dependency-free canonicalizer. Both this module and its Python twin
2049
2327
  * (`backend/apo/execution/task_revision_manifest.py`) MUST produce
2050
- * byte-identical canonical JSON and digests for every fixture under
2051
- * `specs/contracts/task-revision/v1/cases/`.
2328
+ * byte-identical canonical JSON and digests for any given file tree — the
2329
+ * task-revision identity is content-addressed on both sides of the wire.
2052
2330
  *
2053
2331
  * Canonicalization rules:
2054
2332
  * - `/` path separators (caller `\` normalized to `/`);
@@ -2328,4 +2606,4 @@ type TranscriptCaptureResult = {
2328
2606
  };
2329
2607
  declare function replayAdapterTranscript(capture: AdapterTranscriptCapture, options: ReplayAdapterTranscriptOptions): Promise<TranscriptCaptureResult>;
2330
2608
 
2331
- export { type AISDKResult, type AdapterDefinition, type AdapterRuntimeState, type AdapterSession, type AdapterTranscriptCapture, 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 ExportOtlpTracesOptions, 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 JudgeToolsConfig, type LoadedTask, type ManifestFile, type ManifestFileInput, type Matcher, type McpHttpTransport, type McpServerConfig, type McpStdioTransport, type ModeClass, type NameMatcher, type OpenAIMessage, type OtlpAttribute, type OtlpAttributeValue, type OtlpSpan, type OtlpTracesPayload, type ParsedTranscriptSession, type PreparedTaskResult, RECEIVED_VALUE_LIMIT, type RegisterApoTracingOptions, type RejudgeCheckStability, type RejudgeEndpoints, RejudgeError, type RejudgeOptions, type RejudgeOutcome, type ReplayAdapterTranscriptOptions, 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 TranscriptCaptureResult, TranscriptReplayError, type TranscriptReplayOptions, type TranscriptSource, type TranscriptToolCall, type TranscriptTurn, type TranscriptUsage, type TurnContext, type TurnFn, type TurnRecord, type TypedAdapterDefinition, type ValueMatcher, buildApoAuthHeaders, buildManifest, canonicalManifestJson, compactChecksForSubmission, connectMcpServers, contentSha256, defineAdapter, defineTask, describe, detectTranscriptSource, discoverAgentTaskDirs, equals, expandSecretPlaceholders, exportOtlpTraces, fileArtifact, filePaths, fromAISDK, fromAnthropicMessages, fromOpenAIMessages, getActiveApoRun, getTaskTurn, includes, isFileArtifact, loadTask, loadTaskRuntime, matchValue, matches, normalizeManifestPath, parseAgentTaskCliArgs, parseClaudeCodeTranscript, parseCodexTranscript, persistFileArtifacts, registerApoTracing, rejudgeTaskRun, replayAdapterTranscript, resetApoTracing, resetFlowChecks, resetTaskRegistry, resetTaskTurn, resolveMcpServerPaths, resolveOtlpTracesUrl, resolveTurn, runAgentTaskCli, runTask, runTaskDir, satisfies, sha256Hex, similarity, task, defineCheck as test, transcriptSessionToOtlp, turn, withApoRun, withApoRunSync };
2609
+ export { type AISDKResult, type AdapterDefinition, type AdapterRuntimeState, type AdapterSession, type AdapterTranscriptCapture, type AgentBudget, type AgentEvidence, type AgentJudgeOptions, type AgentJudgeOutcome, type AgentJudgeSession, type AgentJudgeStep, type AgentProgressEvent, 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 ExportOtlpTracesOptions, 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 JudgeToolsConfig, type LoadedTask, type ManifestFile, type ManifestFileInput, type Matcher, type McpHttpTransport, type McpServerConfig, type McpStdioTransport, type ModeClass, NO_CHECKS_REGISTERED_MESSAGE, type NameMatcher, type OpenAIMessage, type OtlpAttribute, type OtlpAttributeValue, type OtlpSpan, type OtlpTracesPayload, type ParsedTranscriptSession, type PreparedTaskResult, RECEIVED_VALUE_LIMIT, type RegisterApoTracingOptions, type RejudgeCheckStability, type RejudgeEndpoints, RejudgeError, type RejudgeOptions, type RejudgeOutcome, type ReplayAdapterTranscriptOptions, type RunTaskOptions, type SecondJudgeFacts, type SecondJudgeFactsInput, type StartSessionContext, type SteerContext, type SteerDeliveryBoundary, type SteerRecord, type SteerResult, type SteerSpec, type SteerTrigger, 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 TranscriptCaptureResult, TranscriptReplayError, type TranscriptReplayOptions, type TranscriptSource, type TranscriptToolCall, type TranscriptTurn, type TranscriptUsage, type TurnContext, type TurnFn, type TurnRecord, type TypedAdapterDefinition, type ValueMatcher, buildApoAuthHeaders, buildManifest, canonicalManifestJson, compactChecksForSubmission, connectMcpServers, contentSha256, defineAdapter, defineTask, describe, detectTranscriptSource, discoverAgentTaskDirs, equals, expandSecretPlaceholders, exportOtlpTraces, fileArtifact, filePaths, fromAISDK, fromAnthropicMessages, fromOpenAIMessages, getActiveApoRun, getTaskSteers, getTaskTurn, includes, isFileArtifact, loadTask, loadTaskRuntime, matchValue, matches, normalizeManifestPath, parseAgentTaskCliArgs, parseClaudeCodeTranscript, parseCodexTranscript, persistFileArtifacts, registerApoTracing, rejudgeTaskRun, replayAdapterTranscript, resetApoTracing, resetFlowChecks, resetTaskRegistry, resetTaskSteers, resetTaskTurn, resolveMcpServerPaths, resolveOtlpTracesUrl, resolveTurn, runAgentTaskCli, runTask, runTaskDir, satisfies, secondJudgeFacts, secondJudgeTakeaway, sha256Hex, similarity, steer, task, defineCheck as test, transcriptSessionToOtlp, turn, withApoRun, withApoRunSync };