@tangle-network/agent-runtime 0.300.0 → 0.306.1
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/dist/{activation-DqWmWTyB.js → activation-C5wesfzd.js} +3 -3
- package/dist/{activation-DqWmWTyB.js.map → activation-C5wesfzd.js.map} +1 -1
- package/dist/{activation-Bhp8dYV5.d.ts → activation-wZ-8vOjV.d.ts} +88 -13
- package/dist/agent.d.ts +2 -2
- package/dist/agent.js +2 -2
- package/dist/{bundle-C9v5TH_H.js → bundle-C8EO05u3.js} +2 -2
- package/dist/{bundle-C9v5TH_H.js.map → bundle-C8EO05u3.js.map} +1 -1
- package/dist/candidate-execution/index.d.ts +3 -26
- package/dist/candidate-execution/index.js +6 -6
- package/dist/{coordination-driver-DzTvehd6.js → coordination-driver-yj9HPXef.js} +322 -223
- package/dist/coordination-driver-yj9HPXef.js.map +1 -0
- package/dist/{delegate-vJ2g76r6.js → delegate-KtrL9HWq.js} +5 -5
- package/dist/delegate-KtrL9HWq.js.map +1 -0
- package/dist/durable.d.ts +3 -15
- package/dist/durable.js +158 -124
- package/dist/durable.js.map +1 -1
- package/dist/{graph-BDQh3qry.js → graph-DcdyHbgf.js} +5 -6
- package/dist/graph-DcdyHbgf.js.map +1 -0
- package/dist/{improvement-cycle-D6cPLi6k.js → improvement-cycle-DsN-TVXR.js} +1129 -10
- package/dist/improvement-cycle-DsN-TVXR.js.map +1 -0
- package/dist/{index-sC6sl88d.d.ts → index-DflDZq_I.d.ts} +188 -748
- package/dist/index.d.ts +378 -12
- package/dist/index.js +223 -320
- package/dist/index.js.map +1 -1
- package/dist/intelligence.d.ts +5 -5
- package/dist/intelligence.js +7 -8
- package/dist/intelligence.js.map +1 -1
- package/dist/kernel.d.ts +4 -4
- package/dist/kernel.js +9 -9
- package/dist/{loop-runner-bin-DZglq4Cf.d.ts → loop-runner-bin-DZfRUVWy.d.ts} +3 -3
- package/dist/{loop-runner-bin-DQIHnCL0.js → loop-runner-bin-rVrSX5l1.js} +3 -3
- package/dist/{loop-runner-bin-DQIHnCL0.js.map → loop-runner-bin-rVrSX5l1.js.map} +1 -1
- package/dist/loop-runner-bin.d.ts +1 -1
- package/dist/loop-runner-bin.js +1 -1
- package/dist/mcp/bin.js +3 -3
- package/dist/mcp/index.d.ts +6 -35
- package/dist/mcp/index.js +311 -364
- package/dist/mcp/index.js.map +1 -1
- package/dist/model-policy-DydyWTQg.js.map +1 -1
- package/dist/{openai-tools-DvR82zEo.d.ts → openai-tools-YO30D2s3.d.ts} +2 -2
- package/dist/{prepare-CGVNMb1o.js → prepare--nWcazPr.js} +7 -13
- package/dist/prepare--nWcazPr.js.map +1 -0
- package/dist/{profile-BetOB4_Q.js → profile-h04LDjV6.js} +2 -2
- package/dist/{profile-BetOB4_Q.js.map → profile-h04LDjV6.js.map} +1 -1
- package/dist/profiles.d.ts +2 -94
- package/dist/profiles.js +2 -451
- package/dist/profiles.js.map +1 -1
- package/dist/{protected-model-port-CAa0t1MT.d.ts → protected-model-port-C9QtEf3y.d.ts} +2 -2
- package/dist/{protected-model-port-CuVHkhti.js → protected-model-port-wwalbyXM.js} +4 -4
- package/dist/{protected-model-port-CuVHkhti.js.map → protected-model-port-wwalbyXM.js.map} +1 -1
- package/dist/{provision-supervisor-IXBlLHE0.js → provision-supervisor-WxFEFQeJ.js} +14 -24
- package/dist/provision-supervisor-WxFEFQeJ.js.map +1 -0
- package/dist/{runtime-DpEt5v42.js → runtime-B9eBIyws.js} +86 -496
- package/dist/runtime-B9eBIyws.js.map +1 -0
- package/dist/{search-method-DvU-fc-f.js → search-executor-2tWr38Qw.js} +239 -1132
- package/dist/search-executor-2tWr38Qw.js.map +1 -0
- package/dist/{server-CIE8s4AN.js → server-CpKcrOPj.js} +5 -12
- package/dist/server-CpKcrOPj.js.map +1 -0
- package/dist/{stream-agent-turn-I3bb0eqF.d.ts → stream-agent-turn-B1giFgOg.d.ts} +4 -2
- package/dist/{substrate-UjsxukjZ.d.ts → substrate-L_sC7jCD.d.ts} +2 -2
- package/dist/{supervise-C5mktzrh.js → supervise-DllOHM4M.js} +206 -80
- package/dist/supervise-DllOHM4M.js.map +1 -0
- package/dist/{supervisor-CQSu5XGl.js → supervisor-gCfG6K1-.js} +1130 -1667
- package/dist/supervisor-gCfG6K1-.js.map +1 -0
- package/dist/testing.d.ts +2 -2
- package/dist/testing.js +14 -14
- package/dist/tui/index.d.ts +1 -1
- package/dist/tui/index.js +1 -1
- package/dist/{types-C73caP0U.d.ts → types-DeuEkBhI.d.ts} +167 -261
- package/dist/{workspace-archive-pz8YJ1fr.d.ts → workspace-streams-CpSmt3zx.d.ts} +67 -3
- package/dist/{workspace-streams-D5gHJdTb.js → workspace-streams-ILw0eWZ0.js} +694 -2
- package/dist/workspace-streams-ILw0eWZ0.js.map +1 -0
- package/package.json +8 -8
- package/skills/generate-eval/SKILL.md +1 -1
- package/skills/profile-authoring/SKILL.md +5 -5
- package/skills/supervise/SKILL.md +2 -2
- package/dist/coordination-driver-DzTvehd6.js.map +0 -1
- package/dist/delegate-vJ2g76r6.js.map +0 -1
- package/dist/graph-BDQh3qry.js.map +0 -1
- package/dist/improvement-cycle-D6cPLi6k.js.map +0 -1
- package/dist/prepare-CGVNMb1o.js.map +0 -1
- package/dist/provision-supervisor-IXBlLHE0.js.map +0 -1
- package/dist/runtime-DpEt5v42.js.map +0 -1
- package/dist/search-method-DvU-fc-f.js.map +0 -1
- package/dist/server-CIE8s4AN.js.map +0 -1
- package/dist/supervise-C5mktzrh.js.map +0 -1
- package/dist/supervisor-CQSu5XGl.js.map +0 -1
- package/dist/workspace-streams-D5gHJdTb.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { l as RuntimeHooks } from "./runtime-hooks-Bj6wJHlH.js";
|
|
2
|
-
import {
|
|
2
|
+
import { g as AgentCandidateArtifactPort, l as AgentCandidateWorkspaceArchiveLimits, n as AgentCandidateWorkspaceTree } from "./workspace-streams-CpSmt3zx.js";
|
|
3
3
|
import { AgentCandidateArtifactRef, AgentCandidateWorkspaceSnapshotEvidence, AgentExactRunControlRef, AgentInteractiveSession, AgentInteractiveSessionPromptAcknowledgement, AgentInteractiveSessionPromptCommand, AgentInteractiveSessionRef, AgentInteractiveSessionStart, AgentInteractiveSessionStatus, AgentNativeContextContinuationOptions, AgentNativeContextContinuationResult, AgentProfile, AgentSessionStatus, AgentTurnResult, ChildTaskEvent, ContextTransferRequest, HarnessType, InputPart, InteractionAcknowledgement, InteractionRequest, InteractionResponseCommand, NativeContextBoundaryProof, NativeContextContinuationRequest, NativeContextContinuationTurn, RequestedInteractions, RuntimeEventEnvelope, Sha256Digest, StreamEvent, WorkspaceCheckpointRef, WorkspaceCheckpointRequest } from "@tangle-network/agent-interface";
|
|
4
4
|
import { AgentEvalError, AgentEvalError as AgentEvalError$1, AgentEvalErrorCode, ConfigError, ControlBudget, ControlDecision, ControlEvalResult, ControlRunResult, ControlStep, DataAcquisitionPlan, DefaultVerdict, DefaultVerdict as DefaultVerdict$1, JudgeError, KnowledgeReadinessReport, KnowledgeRequirement, NotFoundError, RunRecord, ToolSpan, TraceAnalysisStore, TraceStore, UserQuestion, ValidationError } from "@tangle-network/agent-eval";
|
|
5
5
|
import { AgentRunOutcome } from "@tangle-network/sandbox/runtime";
|
|
@@ -991,21 +991,6 @@ interface LoopResult<Task, Output, Decision> {
|
|
|
991
991
|
interface SandboxClient {
|
|
992
992
|
create(options?: CreateSandboxOptions, requestOptions?: CreateRequestOptions): Promise<SandboxInstance>;
|
|
993
993
|
describePlacement?(box: SandboxInstance): LoopSandboxPlacement;
|
|
994
|
-
/**
|
|
995
|
-
* Optional legacy CRIU capability probe. When present and it resolves
|
|
996
|
-
* `{ available: true }`, the loop's `lineage.fork` seam may checkpoint and fork
|
|
997
|
-
* a parent box when live `branch(count)` is unavailable. Current Sandbox boxes
|
|
998
|
-
* expose live branching directly. The kernel reads this ONLY through the
|
|
999
|
-
* capability probe — it never branches on backend kind.
|
|
1000
|
-
* The raw `Sandbox` SDK class satisfies it; the loop's test fakes omit it
|
|
1001
|
-
* (⇒ `canFork = false`).
|
|
1002
|
-
* @experimental
|
|
1003
|
-
*/
|
|
1004
|
-
criuStatus?(): Promise<{
|
|
1005
|
-
available: boolean;
|
|
1006
|
-
criuVersion?: string;
|
|
1007
|
-
reason?: string;
|
|
1008
|
-
}>;
|
|
1009
994
|
}
|
|
1010
995
|
/**
|
|
1011
996
|
* Opt-in box-lineage controls for `runAgentRounds`. Default OFF — with both flags
|
|
@@ -1791,20 +1776,24 @@ interface RecoverRetainedRunOptions {
|
|
|
1791
1776
|
readonly now?: () => number;
|
|
1792
1777
|
}
|
|
1793
1778
|
/**
|
|
1794
|
-
* Outcome of one recovery attempt
|
|
1779
|
+
* Outcome of one recovery attempt.
|
|
1795
1780
|
*
|
|
1796
|
-
* `
|
|
1797
|
-
*
|
|
1798
|
-
*
|
|
1799
|
-
*
|
|
1800
|
-
*
|
|
1801
|
-
* `
|
|
1802
|
-
*
|
|
1781
|
+
* `recovered` with `via: 'reattached'`: the provider self-identified the
|
|
1782
|
+
* original session with a strict exact reference matching the recorded
|
|
1783
|
+
* environment coordinates. `recovered` with `via: 'resumed'`: a pre-create
|
|
1784
|
+
* intent was replayed through the exact, idempotent create and dispatch; the
|
|
1785
|
+
* handle controls the admitted run, whether this call or the crashed one
|
|
1786
|
+
* dispatched it. `not_found`: the provider no longer holds the environment;
|
|
1787
|
+
* nothing remains to destroy. `unverifiable`: the environment exists but the
|
|
1788
|
+
* provider cannot self-identify the session. Never destroy on this outcome:
|
|
1789
|
+
* keep the environment, retry `reconnectRetainedRun` with a dispatched
|
|
1790
|
+
* admission record, or inspect it with provider-native tools.
|
|
1803
1791
|
*
|
|
1804
1792
|
* @stable
|
|
1805
1793
|
*/
|
|
1806
1794
|
type RecoverRetainedRunResult = {
|
|
1807
1795
|
readonly outcome: 'recovered';
|
|
1796
|
+
readonly via: 'reattached' | 'resumed';
|
|
1808
1797
|
readonly handle: RetainedRunHandle;
|
|
1809
1798
|
} | {
|
|
1810
1799
|
readonly outcome: 'not_found';
|
|
@@ -2273,11 +2262,6 @@ interface ContinuationNoteInput {
|
|
|
2273
2262
|
/** Whether the check's score comes from cases the director cannot see. */
|
|
2274
2263
|
readonly sealed?: boolean;
|
|
2275
2264
|
}
|
|
2276
|
-
/**
|
|
2277
|
-
* Write one continuation note, sections 1 to 8 of docs/38. Section 9, the run's state, is
|
|
2278
|
-
* `composeReentryTask`, which wraps this text. Pure: the same input writes the same note.
|
|
2279
|
-
*/
|
|
2280
|
-
declare function composeContinuationNote(input: ContinuationNoteInput): string;
|
|
2281
2265
|
/** One continuation as the settle record carries it (`DriverContinuationRecord.continuations`). */
|
|
2282
2266
|
interface ContinuationEntry {
|
|
2283
2267
|
/** 1-based. */
|
|
@@ -2314,9 +2298,6 @@ interface VerdictSummary {
|
|
|
2314
2298
|
readonly failed?: number;
|
|
2315
2299
|
readonly total?: number;
|
|
2316
2300
|
}
|
|
2317
|
-
/** A run directory's continuation files: the root's at `<runDir>/continuations/<n>/`, a nested
|
|
2318
|
-
* manager's at `<runDir>/continuations/managers/<owner>/<n>/`. */
|
|
2319
|
-
declare const CONTINUATIONS_DIR = "continuations";
|
|
2320
2301
|
/** The readout a continuation is composed from. */
|
|
2321
2302
|
interface ContinuationContext {
|
|
2322
2303
|
/** The attempt that just completed, 1-based. */
|
|
@@ -2403,6 +2384,9 @@ interface DriverAttemptRecord {
|
|
|
2403
2384
|
readonly contract?: DriverContractState;
|
|
2404
2385
|
/** True when this COMPLETED attempt's unmet contract sent the loop back with a continuation. */
|
|
2405
2386
|
readonly reprompted?: boolean;
|
|
2387
|
+
/** For a completed attempt that left work open: how long the manager then waited, with no
|
|
2388
|
+
* model turn, before the wake that started the next attempt. */
|
|
2389
|
+
readonly waitedMs?: number;
|
|
2406
2390
|
/** Why an unmet contract did NOT re-enter the session. Absent when the contract was met, when
|
|
2407
2391
|
* the manager has no continuation policy, or when the continuation was sent. */
|
|
2408
2392
|
readonly repromptRefusedBy?: DriverRepromptRefusal;
|
|
@@ -2453,6 +2437,14 @@ type DriverReentry = {
|
|
|
2453
2437
|
readonly failure: string;
|
|
2454
2438
|
/** 1-based: which failure retry this is. */
|
|
2455
2439
|
readonly retry: number;
|
|
2440
|
+
} | {
|
|
2441
|
+
/** The previous turn ended with work open, and Runtime woke the manager when something
|
|
2442
|
+
* happened. Not a continuation: the manager chose to wait, and `input` is what it waited for. */
|
|
2443
|
+
readonly reason: 'wake';
|
|
2444
|
+
/** The wake input: every event since the last turn, or the heartbeat or deadline notice. */
|
|
2445
|
+
readonly input: string;
|
|
2446
|
+
/** 1-based: which wake this is. */
|
|
2447
|
+
readonly wake: number;
|
|
2456
2448
|
} | {
|
|
2457
2449
|
/** The upstream refused the previous drive for capacity, or the check could not run, and the
|
|
2458
2450
|
* loop paused before this one. Re-entered like a failure, with the original task and the
|
|
@@ -2523,6 +2515,10 @@ interface DriverLoopRecord {
|
|
|
2523
2515
|
readonly unavailableMs: number;
|
|
2524
2516
|
/** Re-entered drives, in a row at the end, that completed without a delivery. */
|
|
2525
2517
|
readonly barrenReentries: number;
|
|
2518
|
+
/** Turns started by a wake: the manager ended its turn with work open and Runtime resumed it. */
|
|
2519
|
+
readonly wakes: number;
|
|
2520
|
+
/** Time the manager waited between turns with no model turn, summed over its wakes. */
|
|
2521
|
+
readonly waitedMs: number;
|
|
2526
2522
|
/** Why the loop ended: its last record's stop, or `unrecorded` when it ended without one (an
|
|
2527
2523
|
* admission refusal before the first attempt, or a throw from outside the loop). */
|
|
2528
2524
|
readonly ended: DriverAttemptStop | 'unrecorded';
|
|
@@ -2587,6 +2583,23 @@ interface ProviderWorkspaceRetentionPort {
|
|
|
2587
2583
|
* Its captures use their own queue and bound, so they never wait behind workspace captures.
|
|
2588
2584
|
*/
|
|
2589
2585
|
captureNative?(context: ProviderWorkspaceRetentionContext): Promise<ProviderWorkspaceCaptureResult>;
|
|
2586
|
+
/**
|
|
2587
|
+
* Store one workspace checkpoint's files in the run's content-addressed store, before Runtime
|
|
2588
|
+
* deletes the checkpoint. Return what `captureAgentCandidateWorkspaceTreeToArtifacts` returns
|
|
2589
|
+
* for the files the environment holds, written to {@link artifacts}.
|
|
2590
|
+
*
|
|
2591
|
+
* A checkpoint is a provider snapshot that Runtime takes while a director works and deletes
|
|
2592
|
+
* once two newer ones exist. Its files are read from a fork Runtime creates from the snapshot
|
|
2593
|
+
* for this call alone: the fork holds exactly the checkpoint's workspace and runs no harness,
|
|
2594
|
+
* so the capture has no session to copy. Runtime verifies the tree against the store and the
|
|
2595
|
+
* checkpoint's marker file, journals its digest, and destroys the fork. Without this method, or
|
|
2596
|
+
* when a capture fails, Runtime keeps the checkpoint: on Discovery Lab run
|
|
2597
|
+
* terraform-dc-tokens-20261006d, 76 of the first 101 checkpoint deletions removed the only copy
|
|
2598
|
+
* of a director's workspace at that moment.
|
|
2599
|
+
*
|
|
2600
|
+
* Captures run on their own queue of {@link maxConcurrentCaptures} slots, under {@link timeoutMs}.
|
|
2601
|
+
*/
|
|
2602
|
+
captureCheckpoint?(context: ProviderCheckpointCaptureContext): Promise<AgentCandidateWorkspaceTree>;
|
|
2590
2603
|
/** Milliseconds between native captures of a running turn. Default 120,000. */
|
|
2591
2604
|
readonly nativeIntervalMs?: number;
|
|
2592
2605
|
/** Bound on one native capture, including its queue wait. Default 120,000. */
|
|
@@ -2734,6 +2747,20 @@ interface ProviderWorkspaceRetentionContext {
|
|
|
2734
2747
|
/** A fresh signal bounded by {@link ProviderWorkspaceRetentionPort.timeoutMs}. */
|
|
2735
2748
|
readonly signal: AbortSignal;
|
|
2736
2749
|
}
|
|
2750
|
+
/** What {@link ProviderWorkspaceRetentionPort.captureCheckpoint} receives. */
|
|
2751
|
+
interface ProviderCheckpointCaptureContext {
|
|
2752
|
+
/** A fork of the checkpoint, created for this capture alone. It holds the checkpoint's
|
|
2753
|
+
* workspace and runs no harness. */
|
|
2754
|
+
readonly environment: AgentEnvironment;
|
|
2755
|
+
/** The checkpoint the fork was created from. */
|
|
2756
|
+
readonly checkpoint: WorkspaceCheckpointRef;
|
|
2757
|
+
/** Runtime artifact identity of this capture: `<node>:checkpoint:<checkpoint id>`. */
|
|
2758
|
+
readonly executionId: string;
|
|
2759
|
+
/** The owner's profile; its harness names what the fork's source ran. */
|
|
2760
|
+
readonly profile: AgentProfile;
|
|
2761
|
+
/** A fresh signal bounded by {@link ProviderWorkspaceRetentionPort.timeoutMs}. */
|
|
2762
|
+
readonly signal: AbortSignal;
|
|
2763
|
+
}
|
|
2737
2764
|
/** Durable join from one provider box to the verified bytes retained before cleanup. */
|
|
2738
2765
|
interface ProviderWorkspaceCaptureReceipt {
|
|
2739
2766
|
readonly executionId: string;
|
|
@@ -3280,149 +3307,6 @@ declare function sandboxSessionTraceSource(box: SessionTraceBox, sessionId: stri
|
|
|
3280
3307
|
now?: () => number;
|
|
3281
3308
|
}): TraceSource;
|
|
3282
3309
|
//#endregion
|
|
3283
|
-
//#region src/runtime/supervise/wait.d.ts
|
|
3284
|
-
/**
|
|
3285
|
-
*
|
|
3286
|
-
* WAIT-STATES — a supervision-tree node that waits on wall-clock time or an external condition
|
|
3287
|
-
* without holding a worker, an executor, a sandbox, or a single LLM turn.
|
|
3288
|
-
*
|
|
3289
|
-
* A long-horizon run spends most of its wall-clock NOT computing: waiting for CI to finish,
|
|
3290
|
-
* for a nightly job to land, for a human to reply, for a rate-limit window to reopen. Before
|
|
3291
|
-
* this, the only way to express that was to keep something alive and re-ask — which spends
|
|
3292
|
-
* driver tokens per re-ask and pins a process to the wait.
|
|
3293
|
-
*
|
|
3294
|
-
* Two node kinds, both first-class:
|
|
3295
|
-
* - `timer` — wake at an ABSOLUTE wall-clock instant (`untilMs`).
|
|
3296
|
-
* - `poll` — re-run a named predicate every `intervalMs` until it returns true, or until an
|
|
3297
|
-
* absolute `timeoutAtMs` passes (CI status, file existence, an HTTP probe, an
|
|
3298
|
-
* inbox message).
|
|
3299
|
-
*
|
|
3300
|
-
* ── How this differs from `await_event`'s 45s poll fence (`DEFAULT_AWAIT_EVENT_TIMEOUT_MS`) ──
|
|
3301
|
-
*
|
|
3302
|
-
* They look similar and are not the same mechanism. `await_event` is an IN-RUN RENDEZVOUS: the
|
|
3303
|
-
* driver blocks on the coordination bus for the next event from a live worker, and the 45s fence
|
|
3304
|
-
* exists only so a remote MCP request does not exceed the client's timeout — the caller re-polls.
|
|
3305
|
-
* Every re-poll is another driver inference turn (real tokens) against a process that must stay
|
|
3306
|
-
* up, and nothing about that wait is recorded: kill the process and the wait is simply gone.
|
|
3307
|
-
*
|
|
3308
|
-
* A wait-state is a NODE, not a call. It has a node id in the tree, a journal record carrying its
|
|
3309
|
-
* ABSOLUTE deadline, and it settles through the same `Scope.next()` cursor as any worker. Nobody
|
|
3310
|
-
* is blocked on it — the driver can stop reasoning entirely, and the process can die. Cost while
|
|
3311
|
-
* waiting: zero LLM calls, zero executor, zero sandbox, zero conserved budget (a wait reserves
|
|
3312
|
-
* nothing from the pool). The only in-process residue is one timer entry.
|
|
3313
|
-
*
|
|
3314
|
-
* ── Why probes are NAMED, not passed as closures ────────────────────────────────────────────
|
|
3315
|
-
*
|
|
3316
|
-
* A wait must survive a process restart with its original deadline intact, and a closure cannot
|
|
3317
|
-
* be journaled. So a `poll` names its predicate (`probe: 'ci-green'`) and the run resolves it
|
|
3318
|
-
* through a `WaitProbeRegistry`. A brand-new process re-resolves the SAME name against its own
|
|
3319
|
-
* registry and re-arms the wait — which is what makes "kill the box, the wait keeps waiting"
|
|
3320
|
-
* true rather than aspirational.
|
|
3321
|
-
*
|
|
3322
|
-
* Absolute instants for the same reason: `untilMs` / `timeoutAtMs` are epoch ms, not durations,
|
|
3323
|
-
* so a resumed wait counts down from the original arm, not from the restart. `timerAt`/`pollFor`
|
|
3324
|
-
* build them from a duration when that is what the caller has.
|
|
3325
|
-
*
|
|
3326
|
-
* @experimental
|
|
3327
|
-
*/
|
|
3328
|
-
/** What a wait node is waiting for. Both variants carry ABSOLUTE epoch-ms instants so a wait
|
|
3329
|
-
* re-armed by a later process keeps the deadline the first process set. */
|
|
3330
|
-
type WaitSpec = {
|
|
3331
|
-
readonly kind: 'timer';
|
|
3332
|
-
/** Absolute epoch ms to wake at. A past instant fires immediately. */
|
|
3333
|
-
readonly untilMs: number;
|
|
3334
|
-
} | {
|
|
3335
|
-
/** A graph-engine suspension: the host holds the content-addressed token and wakes it via
|
|
3336
|
-
* `resume`/`expire`; the engine owns the transition table (agent-runtime#976). */
|
|
3337
|
-
readonly kind: 'token';
|
|
3338
|
-
readonly token: string;
|
|
3339
|
-
/** Absent ⇒ `onExpire: 'wait'` (never expires). */
|
|
3340
|
-
readonly expiresAtMs?: number;
|
|
3341
|
-
readonly onExpire: 'wait' | 'fail' | 'default';
|
|
3342
|
-
/** `onExpire: 'default'`: the pre-admitted payload the expiry resolves with. */
|
|
3343
|
-
readonly defaultRef?: string;
|
|
3344
|
-
} | {
|
|
3345
|
-
readonly kind: 'poll';
|
|
3346
|
-
/** Name of the predicate in the run's `WaitProbeRegistry`. Named (not a closure) so a
|
|
3347
|
-
* resumed process can re-resolve it — see the module header. */
|
|
3348
|
-
readonly probe: string;
|
|
3349
|
-
/** How often to re-run the predicate, in ms. Must be > 0. */
|
|
3350
|
-
readonly intervalMs: number;
|
|
3351
|
-
/** Absolute epoch ms after which an unfired poll settles `timeout`. Omit = no timeout
|
|
3352
|
-
* (then the run's own deadline is the only bound, and a run WITH a deadline refuses an
|
|
3353
|
-
* unbounded poll — see `assertWaitWithinDeadline`). */
|
|
3354
|
-
readonly timeoutAtMs?: number;
|
|
3355
|
-
/** Opaque JSON handed to the probe on every check. Journaled with the spec, so a resumed
|
|
3356
|
-
* probe gets the same arguments. */
|
|
3357
|
-
readonly args?: Record<string, unknown>;
|
|
3358
|
-
};
|
|
3359
|
-
/** Build a `timer` spec from a DURATION. The instant is resolved once, at arm time — a resumed
|
|
3360
|
-
* wait re-uses the journaled instant, never a fresh `now + ms`. */
|
|
3361
|
-
declare function timerAt(ms: number, now: number): WaitSpec;
|
|
3362
|
-
/** Build a bounded `poll` spec from a duration. */
|
|
3363
|
-
declare function pollFor(probe: string, opts: {
|
|
3364
|
-
readonly intervalMs: number;
|
|
3365
|
-
readonly timeoutMs?: number;
|
|
3366
|
-
readonly args?: Record<string, unknown>;
|
|
3367
|
-
}, now: number): WaitSpec;
|
|
3368
|
-
/**
|
|
3369
|
-
* A named predicate a `poll` node re-checks. Returns true when the condition it watches has
|
|
3370
|
-
* flipped. A throw is treated as "not yet" (an unreachable CI endpoint is not a settled answer),
|
|
3371
|
-
* and is counted in the outcome's `probeErrors` so a probe that never works is visible rather
|
|
3372
|
-
* than silently polling forever.
|
|
3373
|
-
*/
|
|
3374
|
-
type WaitProbe = (args: Record<string, unknown> | undefined, signal: AbortSignal) => boolean | Promise<boolean>;
|
|
3375
|
-
/** Resolves a `poll` spec's `probe` name to its predicate. Threaded through `SupervisorOpts` so
|
|
3376
|
-
* the SAME registry a fresh run used is what a resumed run re-resolves against. */
|
|
3377
|
-
interface WaitProbeRegistry {
|
|
3378
|
-
resolve(name: string): WaitProbe | undefined;
|
|
3379
|
-
}
|
|
3380
|
-
/** Registry over a plain name→predicate record. */
|
|
3381
|
-
declare function createWaitProbes(entries: Record<string, WaitProbe>): WaitProbeRegistry;
|
|
3382
|
-
/** The `out` a settled wait node delivers through `Scope.next()`. `settled` is the outcome the
|
|
3383
|
-
* caller branches on: `'fired'` = the timer reached its instant or the predicate flipped;
|
|
3384
|
-
* `'timeout'` = a bounded poll gave up. A timeout is a first-class ANSWER, not a failure — a
|
|
3385
|
-
* wait only settles `down` when it is cancelled or aborted. */
|
|
3386
|
-
interface WaitOutcome {
|
|
3387
|
-
/** Tag for `isWaitOutcome` — a wait outcome arrives on the same cursor as worker outputs. */
|
|
3388
|
-
readonly waitOutcome: true;
|
|
3389
|
-
readonly kind: WaitSpec['kind'];
|
|
3390
|
-
readonly settled: 'fired' | 'timeout';
|
|
3391
|
-
readonly label: string;
|
|
3392
|
-
/** The absolute instant this wait was armed for (timer `untilMs` / poll `timeoutAtMs`); absent
|
|
3393
|
-
* for an unbounded poll. */
|
|
3394
|
-
readonly untilMs?: number;
|
|
3395
|
-
/** Epoch ms the wait was FIRST armed — preserved across a resume, so `wokenAt - armedAt` is
|
|
3396
|
-
* the true end-to-end wait even when it spanned several processes. */
|
|
3397
|
-
readonly armedAt: number;
|
|
3398
|
-
readonly wokenAt: number;
|
|
3399
|
-
/** Predicate checks performed in the process that settled it (a resume restarts this count). */
|
|
3400
|
-
readonly polls: number;
|
|
3401
|
-
/** Probe checks that threw (counted, not fatal). */
|
|
3402
|
-
readonly probeErrors: number;
|
|
3403
|
-
/** True when a later process re-armed this wait from the journal instead of creating it. */
|
|
3404
|
-
readonly resumed: boolean;
|
|
3405
|
-
}
|
|
3406
|
-
/** Narrow a settlement's `out` to a wait outcome — a wait settles on the SAME cursor as workers,
|
|
3407
|
-
* so a driver that mixes them tags them apart with this. */
|
|
3408
|
-
declare function isWaitOutcome(value: unknown): value is WaitOutcome;
|
|
3409
|
-
/** A wait recorded in the journal that never woke — what a resumed run re-arms. */
|
|
3410
|
-
interface PendingWait {
|
|
3411
|
-
readonly id: string;
|
|
3412
|
-
readonly label: string;
|
|
3413
|
-
readonly spec: WaitSpec;
|
|
3414
|
-
/** The ORIGINAL arm instant. A re-armed wait keeps it, so its deadline never slides. */
|
|
3415
|
-
readonly armedAt: number;
|
|
3416
|
-
/** The wait ordinal in its parent scope, so a resumed scope continues past it. */
|
|
3417
|
-
readonly ordinal: number;
|
|
3418
|
-
}
|
|
3419
|
-
/** Reject reasons for `Scope.wait`, mirroring `Scope.spawn`'s fail-closed admission shape. */
|
|
3420
|
-
type WaitRejection = 'invalid-spec' | 'unknown-probe' | 'deadline-exceeded';
|
|
3421
|
-
/** The absolute instant a spec is bounded by, or `undefined` for an unbounded wait. */
|
|
3422
|
-
declare function waitUntil(spec: WaitSpec): number | undefined;
|
|
3423
|
-
/** Structural validation, independent of the run. Returns null when the spec is usable. */
|
|
3424
|
-
declare function validateWaitSpec(spec: WaitSpec): string | null;
|
|
3425
|
-
//#endregion
|
|
3426
3310
|
//#region src/sanitize.d.ts
|
|
3427
3311
|
/** @stable */
|
|
3428
3312
|
interface RuntimeTelemetryOptions {
|
|
@@ -3823,12 +3707,6 @@ declare function workerTraceEnv(ctx: WorkerTraceSeamCarrier): Record<string, str
|
|
|
3823
3707
|
declare function workerTraceHeaders(ctx: WorkerTraceSeamCarrier): Record<string, string>;
|
|
3824
3708
|
//#endregion
|
|
3825
3709
|
//#region src/runtime/supervise/types.d.ts
|
|
3826
|
-
/** Options for `Scope.wait`. `label` is the wait's identity within its parent scope — it is what
|
|
3827
|
-
* a resumed run matches to re-adopt a journaled, still-unfired wait, so it must be stable across
|
|
3828
|
-
* processes (a label derived from wall-clock would resume as a NEW wait). */
|
|
3829
|
-
interface WaitOpts {
|
|
3830
|
-
readonly label: string;
|
|
3831
|
-
}
|
|
3832
3710
|
/**
|
|
3833
3711
|
* One self-similar atom. A leaf is an `Agent` that never calls `scope.spawn`; a driver
|
|
3834
3712
|
* is an `Agent` whose `act` spawns children and reacts to them via `scope.next()`. An
|
|
@@ -3859,6 +3737,13 @@ interface Agent<Task, Out> {
|
|
|
3859
3737
|
*/
|
|
3860
3738
|
harnessTranscript?(): HarnessTranscriptCapture | undefined; /** Forwarded the same way: resolves once {@link harnessTranscript} is final (see `Executor`). */
|
|
3861
3739
|
harnessTranscriptSettled?(): Promise<void>;
|
|
3740
|
+
/**
|
|
3741
|
+
* True once this agent's result is committed: its completion check accepted a submission and
|
|
3742
|
+
* the coordination record holds it. `act` then resolves with that result once the turn that
|
|
3743
|
+
* submitted it has ended, so an abort that arrives after acceptance waits for it, bounded,
|
|
3744
|
+
* instead of discarding it (see `Executor.resultAccepted`).
|
|
3745
|
+
*/
|
|
3746
|
+
resultAccepted?(): boolean;
|
|
3862
3747
|
}
|
|
3863
3748
|
/**
|
|
3864
3749
|
* The leaf runtime — ONE open interface, not a closed union. `execute` returns a
|
|
@@ -4033,9 +3918,18 @@ interface Executor<Out> {
|
|
|
4033
3918
|
* Never rejects. An executor whose transcript is final when `execute` ends omits it.
|
|
4034
3919
|
*/
|
|
4035
3920
|
harnessTranscriptSettled?(): Promise<void>;
|
|
3921
|
+
/**
|
|
3922
|
+
* True once this execution's result is committed and `execute` will resolve with it: a
|
|
3923
|
+
* manager whose completion check accepted its submission. The scope does not settle such a node
|
|
3924
|
+
* `down` when its deadline or an abort arrives while the accepted turn is still ending; it waits
|
|
3925
|
+
* for `execute` to resolve, and the executor bounds that wait itself. Measured on Discovery Lab
|
|
3926
|
+
* run terraform-economics-20261005f: 5 of 20 nodes with accepted results were settled `down` by
|
|
3927
|
+
* deadlines that fell while their turns were still ending.
|
|
3928
|
+
*/
|
|
3929
|
+
resultAccepted?(): boolean;
|
|
4036
3930
|
}
|
|
4037
3931
|
/** Why Runtime cannot provide structured tool-call evidence for one settled execution. */
|
|
4038
|
-
type WorkerTraceUnavailableReason = 'execution-did-not-start' | 'executor-did-not-expose-trace-source' | 'trace-source-unavailable' | 'no-tool-spans-captured' | 'invalid-tool-spans' | 'trace-collection-failed' | 'trace-persistence-failed' | 'legacy-settlement-without-trace-evidence'
|
|
3932
|
+
type WorkerTraceUnavailableReason = 'execution-did-not-start' | 'executor-did-not-expose-trace-source' | 'trace-source-unavailable' | 'no-tool-spans-captured' | 'invalid-tool-spans' | 'trace-collection-failed' | 'trace-persistence-failed' | 'legacy-settlement-without-trace-evidence';
|
|
4039
3933
|
/** Durable proof of a worker's structured tool trace, or the exact reason it is unavailable. */
|
|
4040
3934
|
type WorkerTraceEvidence = {
|
|
4041
3935
|
readonly status: 'available';
|
|
@@ -4050,7 +3944,7 @@ type WorkerTraceEvidence = {
|
|
|
4050
3944
|
type WorkerInteractiveUnavailableReason =
|
|
4051
3945
|
/** No child of this scope carries that node id. */
|
|
4052
3946
|
'unknown-node' |
|
|
4053
|
-
/** The child settled
|
|
3947
|
+
/** The child settled or was cancelled: there is no process to attach to. */
|
|
4054
3948
|
'not-live' |
|
|
4055
3949
|
/** The worker runs headless. Its executor exposes no interactive session, so there is no
|
|
4056
3950
|
* terminal — a headless execution is never converted into an attachment. */
|
|
@@ -4612,11 +4506,8 @@ interface Spend {
|
|
|
4612
4506
|
/** `'queued'` is an admitted child that holds its budget slice and waits for a worker slot
|
|
4613
4507
|
* (`workerSlots`); it runs nothing until the allocator grants one. `'acquiring'` is first-class
|
|
4614
4508
|
* (M1): a node spends real time + reaps an orphan box during sandbox acquire BEFORE it is
|
|
4615
|
-
* `running`, so abort must be defined over it.
|
|
4616
|
-
|
|
4617
|
-
* box, and no conserved budget — it is neither in flight nor settled, so neither `inFlight` nor
|
|
4618
|
-
* a terminal status describes it (see `Scope.wait`). */
|
|
4619
|
-
type NodeStatus = 'pending' | 'queued' | 'acquiring' | 'running' | 'waiting' | 'done' | 'failed' | 'cancelled';
|
|
4509
|
+
* `running`, so abort must be defined over it. */
|
|
4510
|
+
type NodeStatus = 'pending' | 'queued' | 'acquiring' | 'running' | 'done' | 'failed' | 'cancelled';
|
|
4620
4511
|
/** Deterministic node id — `${parent}:s${seq}` from the cursor order, never wall-clock. */
|
|
4621
4512
|
type NodeId = string;
|
|
4622
4513
|
interface SpawnOpts {
|
|
@@ -4857,32 +4748,6 @@ interface Scope<Out> {
|
|
|
4857
4748
|
* is a direct call; the sandbox/Agent-Bus transports surface the SAME verb as an MCP tool.
|
|
4858
4749
|
*/
|
|
4859
4750
|
send(nodeId: NodeId, msg: unknown): boolean;
|
|
4860
|
-
/**
|
|
4861
|
-
* Arm a WAIT-STATE node: a first-class tree node that waits on wall-clock time (`timer`) or on
|
|
4862
|
-
* a named external predicate (`poll`) and settles through THIS scope's `next()` cursor like any
|
|
4863
|
-
* other child — but holds no executor, no sandbox, and no conserved budget. Waiting costs zero
|
|
4864
|
-
* tokens and zero dollars by construction.
|
|
4865
|
-
*
|
|
4866
|
-
* It is journaled (`waiting` → `woken`) with its ABSOLUTE deadline, so a run that dies mid-wait
|
|
4867
|
-
* resumes still waiting: the supervisor surfaces the un-woken waits on `Scope.resume.waits`, and
|
|
4868
|
-
* re-arming the same `label` adopts the recorded node id and original instant instead of
|
|
4869
|
-
* restarting the countdown.
|
|
4870
|
-
*
|
|
4871
|
-
* Fail-closed admission, mirroring `spawn`: `invalid-spec`, `unknown-probe` (a `poll` naming a
|
|
4872
|
-
* predicate this run's registry cannot resolve), or `deadline-exceeded` (the wait would outlive
|
|
4873
|
-
* the pool's hard wall-clock ceiling — a wait never extends a budget guard).
|
|
4874
|
-
*
|
|
4875
|
-
* NOT `await_event`: that is an in-run rendezvous on the coordination bus whose 45s fence makes
|
|
4876
|
-
* the caller re-poll — each re-poll a driver inference turn against a process that must stay up,
|
|
4877
|
-
* and nothing about it survives a restart. See `supervise/wait.ts`.
|
|
4878
|
-
*/
|
|
4879
|
-
wait(spec: WaitSpec, opts: WaitOpts): {
|
|
4880
|
-
ok: true;
|
|
4881
|
-
handle: Handle<WaitOutcome>;
|
|
4882
|
-
} | {
|
|
4883
|
-
ok: false;
|
|
4884
|
-
reason: WaitRejection;
|
|
4885
|
-
};
|
|
4886
4751
|
/**
|
|
4887
4752
|
* The LIVE read-model of one child, valid WHILE it runs: last-activity timestamp, idle time,
|
|
4888
4753
|
* a derived `stalled` flag, tokens/turns spent so far, whether a steer can even reach it
|
|
@@ -4994,13 +4859,6 @@ interface UnconfirmedTeardown {
|
|
|
4994
4859
|
interface ResumedWork<Out> {
|
|
4995
4860
|
readonly settled: ReadonlyArray<Settled<Out>>;
|
|
4996
4861
|
readonly view: TreeView;
|
|
4997
|
-
/**
|
|
4998
|
-
* Wait-state nodes the journal shows as ARMED but never woken — the run died mid-wait. Each
|
|
4999
|
-
* carries the ORIGINAL arm instant and absolute deadline, so re-arming the same `label` through
|
|
5000
|
-
* `Scope.wait` resumes the countdown instead of restarting it. Empty on a fresh run and on a
|
|
5001
|
-
* resumed run that was not waiting.
|
|
5002
|
-
*/
|
|
5003
|
-
readonly waits: ReadonlyArray<PendingWait>;
|
|
5004
4862
|
/**
|
|
5005
4863
|
* Keyed assignments from the prior journal: `SpawnOpts.key` → what the journal proves about it.
|
|
5006
4864
|
* `completed`/`down` carry the rehydrated settlement; `in-doubt` means the spawn was journaled
|
|
@@ -5058,7 +4916,7 @@ interface NodeSnapshot {
|
|
|
5058
4916
|
readonly spent: Spend;
|
|
5059
4917
|
/**
|
|
5060
4918
|
* The node's executor has FINISHED and its settlement is queued for the manager to drain with
|
|
5061
|
-
*
|
|
4919
|
+
* its next wake/`next()`, but `status` still reads as it did while running because the settle
|
|
5062
4920
|
* transition happens at drain time. Present only in that window; absent once drained or while
|
|
5063
4921
|
* the executor is still live. Carries the terminal kind so a manager polling `observe_agent`
|
|
5064
4922
|
* can tell "still working" from "finished, waiting for you to read it".
|
|
@@ -5093,10 +4951,6 @@ interface TreeView {
|
|
|
5093
4951
|
readonly nodes: ReadonlyArray<NodeSnapshot>;
|
|
5094
4952
|
/** Count of nodes in `queued`, `acquiring`, or `running` — the "what's in flow?" answer. */
|
|
5095
4953
|
readonly inFlight: number;
|
|
5096
|
-
/** Count of nodes in `waiting` — armed wait-states. Deliberately NOT folded into `inFlight`:
|
|
5097
|
-
* a wait burns no executor and no budget, so counting it as flow would misreport both idle
|
|
5098
|
-
* capacity and how much work is actually running. */
|
|
5099
|
-
readonly waiting: number;
|
|
5100
4954
|
}
|
|
5101
4955
|
/** Journaled spawn-tree events (B1/B2). `seq` is the cursor order; `at` is an ISO
|
|
5102
4956
|
* timestamp for human inspection only (NOT a replay input). */
|
|
@@ -5300,33 +5154,6 @@ type SpawnEvent = {
|
|
|
5300
5154
|
instance: string;
|
|
5301
5155
|
seq: number;
|
|
5302
5156
|
at: string;
|
|
5303
|
-
} | {
|
|
5304
|
-
/** A wait-state node was ARMED. Lives in the SPAWN-ORDINAL namespace (`seq` is the wait
|
|
5305
|
-
* ordinal within its parent scope), exactly like `spawned` — it creates a node, it does not
|
|
5306
|
-
* settle one. It carries the whole `spec` and the original `armedAt` so a brand-new process
|
|
5307
|
-
* re-arms the identical wait with the identical ABSOLUTE deadline. */
|
|
5308
|
-
kind: 'waiting';
|
|
5309
|
-
id: NodeId;
|
|
5310
|
-
parent?: NodeId;
|
|
5311
|
-
label: string;
|
|
5312
|
-
spec: WaitSpec;
|
|
5313
|
-
armedAt: number;
|
|
5314
|
-
seq: number;
|
|
5315
|
-
at: string;
|
|
5316
|
-
} | {
|
|
5317
|
-
/** A wait-state node SETTLED — the cursor-namespace twin of `settled`, kept distinct so a
|
|
5318
|
-
* reader can tell zero-cost waiting apart from paid work without inspecting payloads. A
|
|
5319
|
-
* wait carries no `spent` (it is free by construction, not by measurement); `outRef`
|
|
5320
|
-
* rehydrates its `WaitOutcome`, absent when the wait was cancelled. */
|
|
5321
|
-
kind: 'woken';
|
|
5322
|
-
id: NodeId;
|
|
5323
|
-
/** `expired`: a graph suspension whose `onExpire: 'fail'` deadline passed — distinct from
|
|
5324
|
-
* `timeout` (a poll wait's own deadline), so a consumer can tell "the human never
|
|
5325
|
-
* answered" from "the probe never fired". */
|
|
5326
|
-
by: 'fired' | 'timeout' | 'cancelled' | 'expired';
|
|
5327
|
-
outRef?: string;
|
|
5328
|
-
seq: number;
|
|
5329
|
-
at: string;
|
|
5330
5157
|
} | {
|
|
5331
5158
|
/** A driver's OWN inference spend, journaled separately from spawned-child work — the journal
|
|
5332
5159
|
* TWIN of `BudgetPool.observe`, exactly as `settled` is the twin of `reconcile`. So every
|
|
@@ -5511,15 +5338,77 @@ type SpawnEvent = {
|
|
|
5511
5338
|
marker?: WorkspaceCheckpointMarker;
|
|
5512
5339
|
seq: number;
|
|
5513
5340
|
at: string;
|
|
5341
|
+
} | {
|
|
5342
|
+
/** Runtime is about to ask the provider for a fork of a checkpoint, to read its files. The
|
|
5343
|
+
* record comes first, so a fork that a crash left alive is found by this key and destroyed
|
|
5344
|
+
* at the owner's release. Informational, like `workspace-checkpoint`. */
|
|
5345
|
+
kind: 'workspace-checkpoint-fork-requested';
|
|
5346
|
+
id: NodeId;
|
|
5347
|
+
provider: string;
|
|
5348
|
+
/** The environment the checkpoint was taken from. */
|
|
5349
|
+
environmentId: string;
|
|
5350
|
+
checkpointId: string;
|
|
5351
|
+
idempotencyKey: string;
|
|
5352
|
+
requestDigest: Sha256Digest;
|
|
5353
|
+
seq: number;
|
|
5354
|
+
at: string;
|
|
5355
|
+
} | {
|
|
5356
|
+
/** Whether the provider confirmed destroying a checkpoint capture's fork. A fork without a
|
|
5357
|
+
* `destroyed` record is asked for again at the owner's release. Informational, like
|
|
5358
|
+
* `workspace-checkpoint`. */
|
|
5359
|
+
kind: 'workspace-checkpoint-fork-teardown';
|
|
5360
|
+
id: NodeId;
|
|
5361
|
+
provider: string;
|
|
5362
|
+
/** The environment the checkpoint was taken from. */
|
|
5363
|
+
environmentId: string;
|
|
5364
|
+
checkpointId: string;
|
|
5365
|
+
fork: {
|
|
5366
|
+
idempotencyKey: string;
|
|
5367
|
+
environmentId: string;
|
|
5368
|
+
};
|
|
5369
|
+
destroyed: boolean;
|
|
5370
|
+
seq: number;
|
|
5371
|
+
at: string;
|
|
5372
|
+
} | {
|
|
5373
|
+
/** A checkpoint's files, read from a fork of it, stored in the run's content-addressed
|
|
5374
|
+
* store as a tree before the checkpoint may be deleted. `tree.digest` names the manifest;
|
|
5375
|
+
* every file it lists is an object of the same store. Informational, like
|
|
5376
|
+
* `workspace-checkpoint`. */
|
|
5377
|
+
kind: 'workspace-checkpoint-capture';
|
|
5378
|
+
id: NodeId;
|
|
5379
|
+
provider: string;
|
|
5380
|
+
/** The environment the checkpoint was taken from. */
|
|
5381
|
+
environmentId: string;
|
|
5382
|
+
checkpointId: string;
|
|
5383
|
+
/** The fork the capture read, by its request key and environment; destroyed once this
|
|
5384
|
+
* record is written. */
|
|
5385
|
+
fork: {
|
|
5386
|
+
idempotencyKey: string;
|
|
5387
|
+
environmentId: string;
|
|
5388
|
+
};
|
|
5389
|
+
tree: {
|
|
5390
|
+
digest: Sha256Digest;
|
|
5391
|
+
manifest: AgentCandidateArtifactRef;
|
|
5392
|
+
files: number;
|
|
5393
|
+
bytes: number;
|
|
5394
|
+
storedBytes: number;
|
|
5395
|
+
};
|
|
5396
|
+
seq: number;
|
|
5397
|
+
at: string;
|
|
5514
5398
|
} | {
|
|
5515
5399
|
/** Exact checkpoint cleanup outcome; unconfirmed resources remain pending across resume.
|
|
5516
|
-
*
|
|
5400
|
+
* `capturedDigest` is the tree of the checkpoint's files that a `workspace-checkpoint-capture`
|
|
5401
|
+
* stored before the delete was asked for. `refused` says why the checkpoint was kept
|
|
5402
|
+
* without a delete: its files are in no capture, so deleting it would lose them.
|
|
5403
|
+
* Informational, like `workspace-checkpoint`. */
|
|
5517
5404
|
kind: 'workspace-checkpoint-cleanup';
|
|
5518
5405
|
id: NodeId;
|
|
5519
5406
|
provider: string;
|
|
5520
5407
|
environmentId: string;
|
|
5521
5408
|
checkpointId: string;
|
|
5522
5409
|
confirmed: boolean;
|
|
5410
|
+
capturedDigest?: Sha256Digest;
|
|
5411
|
+
refused?: string;
|
|
5523
5412
|
seq: number;
|
|
5524
5413
|
at: string;
|
|
5525
5414
|
} | {
|
|
@@ -5539,6 +5428,27 @@ type SpawnEvent = {
|
|
|
5539
5428
|
detail?: string;
|
|
5540
5429
|
seq: number;
|
|
5541
5430
|
at: string;
|
|
5431
|
+
} | {
|
|
5432
|
+
/** One end-of-turn workspace capture of this node's environment and where its time went.
|
|
5433
|
+
* Captures queue on one port that every recursive environment shares, so `queuedMs` is
|
|
5434
|
+
* the wait behind other nodes' captures and `captureMs` the capture and its verification.
|
|
5435
|
+
* Informational, like `workspace-checkpoint`; `seq` counts this node's records. */
|
|
5436
|
+
kind: 'workspace-capture';
|
|
5437
|
+
id: NodeId;
|
|
5438
|
+
/** The Runtime invocation the capture belongs to. */
|
|
5439
|
+
executionId: string;
|
|
5440
|
+
environmentId: string;
|
|
5441
|
+
/** Captures holding or waiting for a slot when this one was requested. */
|
|
5442
|
+
ahead: number;
|
|
5443
|
+
queuedMs: number;
|
|
5444
|
+
/** Absent when the capture never held a slot. */
|
|
5445
|
+
captureMs?: number;
|
|
5446
|
+
/** Bytes of the verified workspace archive. */
|
|
5447
|
+
archiveBytes?: number;
|
|
5448
|
+
outcome: 'captured' | 'failed';
|
|
5449
|
+
error?: string;
|
|
5450
|
+
seq: number;
|
|
5451
|
+
at: string;
|
|
5542
5452
|
} | {
|
|
5543
5453
|
/** One GRAPH-EDGE traversal (`runGraph`): what the runtime actually DELIVERED across a
|
|
5544
5454
|
* delegates/analyzes edge, with byte counts — the observability that makes an edge's
|
|
@@ -5622,7 +5532,7 @@ type SpawnEvent = {
|
|
|
5622
5532
|
at: string;
|
|
5623
5533
|
};
|
|
5624
5534
|
/**
|
|
5625
|
-
* The spawn-tree event source (
|
|
5535
|
+
* The spawn-tree event source (begin/append/load).
|
|
5626
5536
|
* `loadTree` returns events for inspection and completed-settlement replay, not live process
|
|
5627
5537
|
* recovery; `appendEvent` runs only AFTER the event is observed-committed (never speculative).
|
|
5628
5538
|
*/
|
|
@@ -5674,10 +5584,6 @@ interface SupervisorOpts {
|
|
|
5674
5584
|
readonly executors: ExecutorRegistry;
|
|
5675
5585
|
/** Reconstruct configured executors for interrupted children before resuming the driver. */
|
|
5676
5586
|
readonly recoverExecutor?: ExecutorFactory<unknown>;
|
|
5677
|
-
/** Predicate resolution for `poll` wait-states (`Scope.wait`). A `poll` names its predicate so
|
|
5678
|
-
* the wait can be journaled and re-armed by a later process; this is what the name resolves
|
|
5679
|
-
* against. Unset ⇒ `poll` waits are refused (`unknown-probe`); `timer` waits are unaffected. */
|
|
5680
|
-
readonly probes?: WaitProbeRegistry;
|
|
5681
5587
|
/** Recursion ceiling (root = 0). The conserved pool bounds depth; this only stops a runaway
|
|
5682
5588
|
* recursion. Omit = `DEFAULT_MAX_DEPTH` (16). */
|
|
5683
5589
|
readonly maxDepth?: number;
|
|
@@ -6167,5 +6073,5 @@ interface WidenGate<Out> {
|
|
|
6167
6073
|
readonly judgeExempt?: boolean;
|
|
6168
6074
|
}
|
|
6169
6075
|
//#endregion
|
|
6170
|
-
export { SpawnJournal as $,
|
|
6171
|
-
//# sourceMappingURL=types-
|
|
6076
|
+
export { SpawnJournal as $, RuntimeSessionStore as $a, ExecCtx as $i, ProviderWorkspaceAttemptProvenance as $n, RetainedInteractiveAdmissionError as $r, RuntimeStreamEventSink as $t, NodeExecutionIdentity as A, RuntimeRunRow as Aa, RetainedRunSnapshot as Ai, RetainedInteractiveEnvironmentInput as An, ContinuationNoteInput as Ar, createPropagatingTraceEmitter as At, ResultBlobStore as B, AgentTaskContext as Ba, ReservationFloor as Bi, ReadableEnvironment as Bn, checkVerdictOf as Br, RuntimeEventOtelOptions as Bt, ExecutorToolCall as C, ValidationCtx as Ca, RetainedRunDispatchedAdmission as Ci, TeamProgress as Cn, CONTINUATION_FACTS as Cr, WorkerTraceResolver as Ct, MaterializedExecutionIdentity as D, RuntimeRunHandle as Da, RetainedRunHandle as Di, ReconnectRetainedInteractiveRunOptions as Dn, ContinuationAppend as Dr, workerTraceHeaders as Dt, HeldEnvironment as E, RuntimeRunCost as Ea, RetainedRunEventOptions as Ei, readWorkerProgress as En, CheckVerdict as Er, workerTraceEnv as Et, ProviderModelAttemptEvidence as F, AgentBackendInput as Fa, BudgetPool as Fi, HarnessTranscriptCapture as Fn, ContinuationProfile as Fr, OtelAttribute as Ft, RootMaterialization as G, KnowledgeReadinessDecision as Ga, ReservationTicket as Gi, HarnessTranscriptReadLimits as Gn, verdictFromJudgeScore as Gr, createOtelExporter as Gt, ResumedWork as H, AgentTaskSpec as Ha, ReservationRejection as Hi, harnessTranscriptArtifact as Hn, expandQuestions as Hr, buildLoopSpanNodes as Ht, ProviderModelExecutionEvidence as I, AgentExecutionBackend as Ia, BudgetPoolRestore as Ii, HarnessTranscriptEvidence as In, PanelFinding as Ir, OtelExportConfig as It, RootStreamReceipt as J, OpenAIChatToolChoice as Ja, createBudgetPool as Ji, RetainedHarnessTranscriptDescriptor as Jn, BackendTransportError as Jr, padSpanId as Jt, RootProviderModelEvidence as K, OpenAIChatResponseFormat as Ka, ReservationWaitRefused as Ki, HarnessTranscriptReadOptions as Kn, AgentEvalError$1 as Kr, generateSpanId as Kt, RecursiveReservationPolicy as L, AgentKnowledgeProvider as La, BudgetReadout as Li, HarnessTranscriptFile as Ln, VerdictSummary as Lr, OtelExportStats as Lt, NodeSnapshot as M, startRuntimeRun as Ma, RetainedRunTurnInput as Mi, RetainedInteractiveStartMaterial as Mn, ContinuationPanelInput as Mr, readTraceContextFromEnv as Mt, NodeStatus as N, AgentAdapter as Na, StartRetainedRunInEnvironmentOptions as Ni, StartRetainedInteractiveRunOptions as Nn, ContinuationPanelResult as Nr, traceContextToEnv as Nt, MaterializedModelIdentity as O, RuntimeRunOptions as Oa, RetainedRunIntentAdmission as Oi, RecoverRetainedInteractiveRunOptions as On, ContinuationContext as Or, workerTraceSeamKey as Ot, ProfileMaterializationReceipt as P, AgentBackendContext as Pa, StartRetainedRunOptions as Pi, HarnessTranscriptArtifact as Pn, ContinuationPolicy as Pr, LoopSpanNode as Pt, SpawnEvent as Q, RuntimeSession as Qa, Driver as Qi, ProviderNativeCapturePhase as Qn, PlannerError as Qr, RuntimeStreamEventCollector as Qt, ResourceLimit as R, AgentRuntimeEvent as Ra, BudgetReconcileFault as Ri, HarnessTranscriptUnavailable as Rn, admitContinuationPolicy as Rr, OtelExporter as Rt, ExecutorTeardownWarning as S, SelectionReceipt as Sa, RetainedRunCancellation as Si, ScopeProgressInput as Sn, AdmittedFinding as Sr, WorkspaceCheckpointMarker as St, Handle as T, RuntimeRunCompleteInput as Ta, RetainedRunEnvironmentAdmission as Ti, createActivityLog as Tn, CheckUnavailableError as Tr, readWorkerTraceContext as Tt, RetainedExecutionState as U, AgentTaskStatus as Ua, ReservationShortfall as Ui, persistHarnessTranscript as Un, failedItems as Ur, buildRuntimeEventOtelSpans as Ut, ResumedKeyState as V, AgentTaskRunResult as Va, ReservationHolder as Vi, captureHarnessTranscript as Vn, distillFindings as Vr, buildLoopOtelSpans as Vt, RootHandle as W, BackendErrorDetail as Wa, ReservationStage as Wi, HarnessTranscriptMetadata as Wn, passedItems as Wr, createOpenInferenceFileExporter as Wt, Scope as X, RunAgentTaskStreamOptions as Xa, AgentRunSpec as Xi, retainHarnessTranscript as Xn, JudgeError as Xr, toOtelAttributes as Xt, Runtime as Y, RunAgentTaskOptions as Ya, spendFromUsageEvents as Yi, resolveHarnessTranscriptCapture as Yn, ConfigError as Yr, padTraceId as Yt, Settled as Z, RuntimeCanonicalStreamEvent as Za, DefaultVerdict$1 as Zi, ProviderCheckpointCaptureContext as Zn, NotFoundError as Zr, RuntimeEventCollector as Zt, ExecutorMaterialization as _, MountManifestEntry as _a, RetainedInteractiveIntentAdmission as _i, RetainedPendingCause as _n, DriverRetryPolicy as _r, WidenGate as _t, BudgetOverspend as a, LoopIterationStartedPayload as aa, SlotPermit as ai, createRuntimeStreamEventCollector as an, ProviderWorkspaceRetentionPort as ar, SpendGap as at, ExecutorRegistry as b, RunProvenance as ba, RetainedRunAdmissionHook as bi, DEFAULT_STALL_AFTER_MS as bn, upstreamUnavailableSignal as br, WorkerTraceEvidence as bt, EnvironmentTeardownReceipt as c, LoopPlanPayload as ca, NativeContextContinuationExecution as ci, sanitizeRuntimeStreamEvent as cn, DriverAttemptsExhaustedError as cr, SubtreeSummary as ct, ExecutorAccounting as d, LoopStartedPayload as da, ReconnectRetainedRunOptions as di, ToolStepInput as dn, DriverContractState as dr, SupervisorOpts as dt, Iteration as ea, RetainedInteractiveBindingError as ei, RuntimeStreamEventSummary as en, RuntimeStreamEvent as eo, ProviderWorkspaceCaptureProvenance as er, SpawnOpts as et, ExecutorCancellation as f, LoopTeardownFailedPayload as fa, RecoverRetainedRunIntentOptions as fi, TraceSource as fn, DriverFailureClass as fr, TokenUsageProvenance as ft, ExecutorFactory as g, LoopWinner as ga, RetainedInteractiveEnvironmentAdmission as gi, RetainedChildRecovery as gn, DriverRepromptRefusal as gr, UsageEvent as gt, ExecutorExecutionBinding as h, LoopTraceEvent as ha, RetainedInteractiveAdmission as hi, sandboxSessionTraceSource as hn, DriverReentry as hr, UnknownMaterializationReason as ht, Budget as i, LoopIterationEndedPayload as ia, ValidationError as ii, createRuntimeEventCollector as in, ProviderWorkspaceRetentionContext as ir, SpendChannel as it, NodeId as j, RuntimeRunStatus as ja, RetainedRunStartMaterial as ji, RetainedInteractiveRunHandle as jn, ContinuationPanel as jr, mergeTraceEnv as jt, NoWinnerError as k, RuntimeRunPersistenceAdapter as ka, RetainedRunReplayPoint as ki, RetainedInteractiveAdmissionHook as kn, ContinuationEntry as kr, TraceContext as kt, ExecutionBindingReceipt as l, LoopResult as la, NativeContextContinuationHandle as li, SessionMessageLike as ln, DriverBudgetReadout as lr, SupervisedResult as lt, ExecutorContext as m, LoopTraceEmitter as ma, RecoverRetainedRunResult as mi, decodeToolPart as mn, DriverProgressMark as mr, UnconfirmedTeardown as mt, AgentExecutionRef as n, LoopEndedPayload as na, RetainedRunDispatchBindingError as ni, SanitizedKnowledgeReadinessReport as nn, ProviderWorkspaceCaptureResult as nr, SpawnRejection as nt, BudgetViolation as o, LoopLineageOptions as oa, WorkerSlots as oi, sanitizeAgentRuntimeEvent as on, DriverAttemptRecord as or, SteerableRootHandle as ot, ExecutorCancellationRequest as p, LoopTokenUsage as pa, RecoverRetainedRunOptions as pi, createPushTraceSource as pn, DriverLoopRecord as pr, TreeView as pt, RootSignal as q, OpenAIChatTool as qa, ReserveOptions as qi, RetainedHarnessTranscriptCapture as qn, AgentEvalErrorCode as qr, loopEventToOtelSpan as qt, AgentSpec as r, LoopIterationDispatchPayload as ra, RuntimeRunStateError as ri, SanitizedKnowledgeRequirement as rn, ProviderWorkspaceEntryMetadata as rr, Spend as rt, DefaultVerdict as s, LoopPlanDescription as sa, createWorkerSlots as si, sanitizeKnowledgeReadinessReport as sn, DriverAttemptStop as sr, SubtreeResult as st, Agent as t, LoopDecisionPayload as ta, RetainedRunAdmissionError as ti, RuntimeTelemetryOptions as tn, ProviderWorkspaceCaptureReceipt as tr, SpawnPrior as tt, Executor as u, LoopSandboxPlacement as ua, NativeContextContinuationInput as ui, SessionTraceBox as un, DriverContinuationRecord as ur, Supervisor as ut, ExecutorNodeContext as v, MountRecorder as va, RetainedInteractiveStartedAdmission as vi, ActivityLog as vn, classifyDriverFailure as vr, WorkerInteractiveSession as vt, FleetYield as w, Validator as wa, RetainedRunEffect as wi, WorkerProgress as wn, CheckRead as wr, WorkerTraceSeamCarrier as wt, ExecutorResult as x, SandboxClient as xa, RetainedRunCancelOptions as xi, ExecutorProgress as xn, UnavailablePausePolicy as xr, WorkerTraceUnavailableReason as xt, ExecutorProgressEvent as y, OutputAdapter as ya, RetainedRunAdmission as yi, ActivityNote as yn, summarizeDriverAttempts as yr, WorkerInteractiveUnavailableReason as yt, ResourceSpend as z, AgentRuntimeEventSink as za, LeakedReservation as zi, HarnessTranscriptUnavailableReason as zn, admitFinding as zr, OtelSpan as zt };
|
|
6077
|
+
//# sourceMappingURL=types-DeuEkBhI.d.ts.map
|