@tangle-network/agent-runtime 0.134.5 → 0.134.7
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-CuSUhjsU.js → activation-CG9bkirD.js} +2 -2
- package/dist/{activation-CuSUhjsU.js.map → activation-CG9bkirD.js.map} +1 -1
- package/dist/agent.d.ts +1 -1
- package/dist/agent.js +2 -2
- package/dist/{authoring-DDHudCL3.js → authoring-CK6iXftK.js} +2 -2
- package/dist/{authoring-DDHudCL3.js.map → authoring-CK6iXftK.js.map} +1 -1
- package/dist/{conversation-DYVSghi8.js → conversation-DIUtiLkC.js} +2 -2
- package/dist/{conversation-DYVSghi8.js.map → conversation-DIUtiLkC.js.map} +1 -1
- package/dist/conversation.d.ts +1 -1
- package/dist/conversation.js +1 -1
- package/dist/{environment-provider-DIRm41xB.d.ts → environment-provider-BIZMHOQw.d.ts} +2 -2
- package/dist/environment-provider.d.ts +1 -1
- package/dist/{graph-BBPlG9Gp.js → graph-9KF7mJM3.js} +2 -2
- package/dist/{graph-BBPlG9Gp.js.map → graph-9KF7mJM3.js.map} +1 -1
- package/dist/{improvement-cycle-6Vb0Ctl7.js → improvement-cycle-5XDmxqzr.js} +4 -4
- package/dist/{improvement-cycle-6Vb0Ctl7.js.map → improvement-cycle-5XDmxqzr.js.map} +1 -1
- package/dist/{index-DHA5Oq5I.d.ts → index-0qU8jNOJ.d.ts} +5 -5
- package/dist/{index-iyZFnLdC.d.ts → index-DJ9qeOi3.d.ts} +4 -4
- package/dist/{index-BbdLlSh6.d.ts → index-RYbM0cUo.d.ts} +2 -2
- package/dist/index.d.ts +7 -7
- package/dist/index.js +9 -9
- package/dist/intelligence.d.ts +4 -4
- package/dist/intelligence.js +3 -3
- package/dist/kernel.d.ts +5 -5
- package/dist/kernel.js +7 -7
- package/dist/{knowledge-oUglku41.js → knowledge-DWTOug6a.js} +3 -3
- package/dist/{knowledge-oUglku41.js.map → knowledge-DWTOug6a.js.map} +1 -1
- package/dist/knowledge.d.ts +1 -1
- package/dist/knowledge.js +1 -1
- package/dist/{loop-runner-bin-vVCZrAF2.js → loop-runner-bin-BCvwX9rk.js} +3 -3
- package/dist/{loop-runner-bin-vVCZrAF2.js.map → loop-runner-bin-BCvwX9rk.js.map} +1 -1
- package/dist/{loop-runner-bin-BLnkJfSV.d.ts → loop-runner-bin-W7MjoHUk.d.ts} +3 -3
- 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 +3 -3
- package/dist/mcp/index.js +4 -4
- package/dist/{openai-tools-DfoZEyvI.js → openai-tools-ClNr92Bx.js} +2 -2
- package/dist/{openai-tools-DfoZEyvI.js.map → openai-tools-ClNr92Bx.js.map} +1 -1
- package/dist/primeintellect/index.d.ts +1 -1
- package/dist/{redact-DTVIFTeR.d.ts → redact-Bojh05mQ.d.ts} +3 -3
- package/dist/{runtime-DZql0Fnh.js → runtime-CnQ_-DF_.js} +7 -7
- package/dist/{runtime-DZql0Fnh.js.map → runtime-CnQ_-DF_.js.map} +1 -1
- package/dist/{runtime-C60zv0Q4.d.ts → runtime-DHrzFy2v.d.ts} +3 -3
- package/dist/{stream-agent-turn-BLuTjcvw.d.ts → stream-agent-turn-BEv31Log.d.ts} +2 -2
- package/dist/{stream-agent-turn-DYBpzMmq.js → stream-agent-turn-Q5ellSUu.js} +10 -1
- package/dist/stream-agent-turn-Q5ellSUu.js.map +1 -0
- package/dist/{structural-rollout-DkYIjD2D.js → structural-rollout-CbQjaMwW.js} +3 -3
- package/dist/{structural-rollout-DkYIjD2D.js.map → structural-rollout-CbQjaMwW.js.map} +1 -1
- package/dist/{supervise-B8qbdlFz.js → supervise-B8Ykk8GO.js} +2 -2
- package/dist/{supervise-B8qbdlFz.js.map → supervise-B8Ykk8GO.js.map} +1 -1
- package/dist/{supervisor-lbWTSscK.js → supervisor-BU01azdt.js} +58 -5
- package/dist/{supervisor-lbWTSscK.js.map → supervisor-BU01azdt.js.map} +1 -1
- package/dist/testing.d.ts +2 -2
- package/dist/testing.js +11 -11
- package/dist/{types-CfQbuWgo.d.ts → types-C7UNjVce.d.ts} +10 -3
- package/package.json +1 -1
- package/dist/stream-agent-turn-DYBpzMmq.js.map +0 -1
package/dist/testing.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Lt as RunGraphTestOptions, Vt as runGraphWithTestBrain, Ya as superviseWithTestBrain, ao as SupervisorAgentTestDeps, gn as driverAgent, hn as DriverAgentOptions, mo as supervisorAgentWithTestBrain, qa as SuperviseTestOptions } from "./index-
|
|
2
|
-
import { it as ToolLoopChat, rt as ToolLoopCallContext } from "./runtime-
|
|
1
|
+
import { Lt as RunGraphTestOptions, Vt as runGraphWithTestBrain, Ya as superviseWithTestBrain, ao as SupervisorAgentTestDeps, gn as driverAgent, hn as DriverAgentOptions, mo as supervisorAgentWithTestBrain, qa as SuperviseTestOptions } from "./index-0qU8jNOJ.js";
|
|
2
|
+
import { it as ToolLoopChat, rt as ToolLoopCallContext } from "./runtime-DHrzFy2v.js";
|
|
3
3
|
import { AgentImprovementProposal, AgentProfile, AgentProfileImprovementMeasuredComparison, SandboxSizePreset } from "@tangle-network/agent-interface";
|
|
4
4
|
//#region src/testing/index.d.ts
|
|
5
5
|
/** A proposal produced by Runtime's opaque profile-improvement path. */
|
package/dist/testing.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { $ as parseExactAgentProfile, K as applyExactAgentProfileDiff, rt as canonicalCandidateDigest$1, st as immutableCandidateValue } from "./prepare-Czki1LBy.js";
|
|
2
|
-
import { f as verifyAgentImprovementProposal } from "./improvement-cycle-
|
|
3
|
-
import { c as supervisorAgentWithTestBrain, dt as driverAgent, r as superviseWithTestBrain } from "./supervise-
|
|
4
|
-
import { i as runGraphWithTestBrain } from "./graph-
|
|
2
|
+
import { f as verifyAgentImprovementProposal } from "./improvement-cycle-5XDmxqzr.js";
|
|
3
|
+
import { c as supervisorAgentWithTestBrain, dt as driverAgent, r as superviseWithTestBrain } from "./supervise-B8Ykk8GO.js";
|
|
4
|
+
import { i as runGraphWithTestBrain } from "./graph-9KF7mJM3.js";
|
|
5
5
|
import { SANDBOX_SIZE_PRESET_NAMES } from "@tangle-network/agent-interface";
|
|
6
6
|
//#region src/testing/fixtures/agent-improvement-proposal.json
|
|
7
7
|
var agent_improvement_proposal_default = {
|
|
8
8
|
changedSurfaces: ["prompt"],
|
|
9
|
-
digest: "sha256:
|
|
9
|
+
digest: "sha256:f093f45bec21855f60bf2a74a405ac893e454bdc77439975f9ae9ddd536729fa",
|
|
10
10
|
evaluation: {
|
|
11
11
|
"decision": {
|
|
12
12
|
"contributingChecks": [
|
|
@@ -4577,7 +4577,7 @@ var agent_improvement_proposal_default = {
|
|
|
4577
4577
|
],
|
|
4578
4578
|
"metadata": {
|
|
4579
4579
|
"fixture": "agent-improvement-proposal",
|
|
4580
|
-
"runtimeVersion": "0.134.
|
|
4580
|
+
"runtimeVersion": "0.134.7"
|
|
4581
4581
|
},
|
|
4582
4582
|
"objectives": [
|
|
4583
4583
|
{
|
|
@@ -4688,8 +4688,8 @@ var agent_improvement_proposal_default = {
|
|
|
4688
4688
|
"baselineContentHash": "sha256:5c21ee53e513fc604cb09754e21c392b24a424da0ef37dbf8f1ee4a8a0b08f09",
|
|
4689
4689
|
"candidateContentHash": "sha256:60fcbb1c728194bd51d7d19cb732d1c3f1881dce7e0a6266b41c8b98cfd65693",
|
|
4690
4690
|
"kind": "agent-eval-loop",
|
|
4691
|
-
"recordDigest": "sha256:
|
|
4692
|
-
"runId": "agent-runtime-0.134.
|
|
4691
|
+
"recordDigest": "sha256:33ebff3cc78a0ca9b05cfc2f8189beb927a932564987dc2492bb82daf771fee7",
|
|
4692
|
+
"runId": "agent-runtime-0.134.7-proposal-fixture",
|
|
4693
4693
|
"schema": "agent-candidate-experiment"
|
|
4694
4694
|
}
|
|
4695
4695
|
},
|
|
@@ -4712,13 +4712,13 @@ var agent_improvement_proposal_default = {
|
|
|
4712
4712
|
}],
|
|
4713
4713
|
kind: "agent-improvement-proposal",
|
|
4714
4714
|
proposedAt: "2026-07-10T01:00:00.000Z",
|
|
4715
|
-
runId: "agent-runtime-0.134.
|
|
4715
|
+
runId: "agent-runtime-0.134.7-proposal-fixture"
|
|
4716
4716
|
};
|
|
4717
4717
|
//#endregion
|
|
4718
4718
|
//#region src/testing/fixtures/agent-profile-improvement-proposal.json
|
|
4719
4719
|
var agent_profile_improvement_proposal_default = {
|
|
4720
4720
|
changedSurfaces: ["prompt", "skills"],
|
|
4721
|
-
digest: "sha256:
|
|
4721
|
+
digest: "sha256:52f08498aa1fd2f4c1ca54f32c5d5f8a9569bb61ee232e105e8934fe7296350f",
|
|
4722
4722
|
evaluation: {
|
|
4723
4723
|
"decision": {
|
|
4724
4724
|
"contributingChecks": [
|
|
@@ -6352,7 +6352,7 @@ var agent_profile_improvement_proposal_default = {
|
|
|
6352
6352
|
],
|
|
6353
6353
|
"metadata": {
|
|
6354
6354
|
"fixture": "agent-profile-improvement-proposal",
|
|
6355
|
-
"runtimeVersion": "0.134.
|
|
6355
|
+
"runtimeVersion": "0.134.7"
|
|
6356
6356
|
},
|
|
6357
6357
|
"objectives": [
|
|
6358
6358
|
{
|
|
@@ -6463,7 +6463,7 @@ var agent_profile_improvement_proposal_default = {
|
|
|
6463
6463
|
"baselineContentHash": "sha256:21c495a37c418c10bde64fbaa188beddeed31f1f051ea60a6a6582a9ee0db704",
|
|
6464
6464
|
"candidateContentHash": "sha256:103f77bc8481601eef1ad5fe6ba84a40dffabc3a44f421f8c8559121edab84e9",
|
|
6465
6465
|
"kind": "agent-eval-loop",
|
|
6466
|
-
"recordDigest": "sha256:
|
|
6466
|
+
"recordDigest": "sha256:9f42e89a9e3bf4486227556bb2fed21d9d0b64aba60c5e4565201acbbec8d01c",
|
|
6467
6467
|
"runId": "profile-improvement-1",
|
|
6468
6468
|
"schema": "agent-profile-improvement-experiment"
|
|
6469
6469
|
}
|
|
@@ -1005,8 +1005,15 @@ interface ExecutorExecutionBinding {
|
|
|
1005
1005
|
readonly binding: unknown;
|
|
1006
1006
|
readonly descriptor: Readonly<Record<string, string | number | boolean | null>>;
|
|
1007
1007
|
}
|
|
1008
|
-
/** Why exact materialization evidence is unavailable for a node.
|
|
1009
|
-
|
|
1008
|
+
/** Why exact materialization evidence is unavailable for a node.
|
|
1009
|
+
*
|
|
1010
|
+
* `executor-receipt-pending` is an IN-FLIGHT value only. It states that a pending executor has
|
|
1011
|
+
* declared its plan and has not yet sent the terminal acknowledgement, so the answer can still
|
|
1012
|
+
* arrive. A terminal record must never carry it: the attempt is over and no receipt is coming.
|
|
1013
|
+
* A terminal attempt that ended before its acknowledgement records
|
|
1014
|
+
* `executor-failed-before-receipt` instead, which names the outcome rather than a wait that
|
|
1015
|
+
* already finished. */
|
|
1016
|
+
type UnknownMaterializationReason = 'executor-did-not-report' | 'executor-failed-before-receipt' | 'executor-receipt-pending' | 'invalid-executor-report' | 'root-agent-did-not-report';
|
|
1010
1017
|
/** What the kernel can prove about one node's actual execution plan. */
|
|
1011
1018
|
type ProfileMaterializationReceipt = {
|
|
1012
1019
|
readonly status: 'known';
|
|
@@ -1926,4 +1933,4 @@ interface WidenGate<Out> {
|
|
|
1926
1933
|
}
|
|
1927
1934
|
//#endregion
|
|
1928
1935
|
export { WaitOpts as $, WaitSpec as $t, ResumedWork as A, exportEvalRuns as At, SpawnOpts as B, RuntimeTelemetryOptions as Bt, NodeStatus as C, OtelSpan as Ct, Restart as D, buildRuntimeEventOtelSpans as Dt, ProviderModelExecutionEvidence as E, buildLoopSpanNodes as Et, Runtime as F, toOtelAttributes as Ft, SpendGap as G, sanitizeAgentRuntimeEvent as Gt, SpawnRejection as H, SanitizedKnowledgeRequirement as Ht, Scope as I, RuntimeEventCollector as It, Supervisor as J, PendingWait as Jt, SteerableRootHandle as K, sanitizeKnowledgeReadinessReport as Kt, Settled as L, RuntimeStreamEventCollector as Lt, RootMaterialization as M, loopEventToOtelSpan as Mt, RootProviderModelEvidence as N, padSpanId as Nt, ResultBlobStore as O, createOpenInferenceFileExporter as Ot, RootSignal as P, padTraceId as Pt, UsageEvent as Q, WaitRejection as Qt, SpawnEvent as R, RuntimeStreamEventSink as Rt, NodeSnapshot as S, OtelExporter as St, ProviderModelAttemptEvidence as T, buildLoopOtelSpans as Tt, Spend as U, createRuntimeEventCollector as Ut, SpawnPrior as V, SanitizedKnowledgeReadinessReport as Vt, SpendChannel as W, createRuntimeStreamEventCollector as Wt, TreeView as X, WaitProbe as Xt, SupervisorOpts as Y, WaitOutcome as Yt, UnknownMaterializationReason as Z, WaitProbeRegistry as Zt, MaterializedExecutionIdentity as _, ScopeProgressInput as _n, EvalRunsExportResult as _t, DefaultVerdict as a, waitUntil as an, readWorkerTraceContext as at, NodeExecutionIdentity as b, readWorkerProgress as bn, OtelAttribute as bt, ExecutorAccounting as c, ToolStepInput as cn, workerTraceSeamKey as ct, ExecutorFactory as d, decodeToolPart as dn, mergeTraceEnv as dt, createWaitProbes as en, WidenGate as et, ExecutorMaterialization as f, sandboxSessionTraceSource as fn, readTraceContextFromEnv as ft, Handle as g, ExecutorProgress as gn, EvalRunsExportConfig as gt, ExecutorResult as h, DEFAULT_STALL_AFTER_MS as hn, EvalRunGeneration as ht, Budget as i, validateWaitSpec as in, WorkerTraceSeamCarrier as it, RootHandle as j, generateSpanId as jt, ResumedKeyState as k, createOtelExporter as kt, ExecutorContext as l, TraceSource as ln, TraceContext as lt, ExecutorRegistry as m, ActivityNote as mn, EvalRunEvent as mt, AgentExecutionRef as n, pollFor as nn, WorkerTraceUnavailableReason as nt, ExecutionBindingReceipt as o, SessionMessageLike as on, workerTraceEnv as ot, ExecutorNodeContext as p, ActivityLog as pn, traceContextToEnv as pt, SupervisedResult as q, sanitizeRuntimeStreamEvent as qt, AgentSpec as r, timerAt as rn, WorkerTraceResolver as rt, Executor as s, SessionTraceBox as sn, workerTraceHeaders as st, Agent as t, isWaitOutcome as tn, WorkerTraceEvidence as tt, ExecutorExecutionBinding as u, createPushTraceSource as un, createPropagatingTraceEmitter as ut, MaterializedModelIdentity as v, WorkerProgress as vn, INTELLIGENCE_WIRE_VERSION as vt, ProfileMaterializationReceipt as w, RuntimeEventOtelOptions as wt, NodeId as x, OtelExportConfig as xt, NoWinnerError as y, createActivityLog as yn, LoopSpanNode as yt, SpawnJournal as z, RuntimeStreamEventSummary as zt };
|
|
1929
|
-
//# sourceMappingURL=types-
|
|
1936
|
+
//# sourceMappingURL=types-C7UNjVce.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/agent-runtime",
|
|
3
|
-
"version": "0.134.
|
|
3
|
+
"version": "0.134.7",
|
|
4
4
|
"description": "Shared task-lifecycle skeleton for agents: a recursive loop kernel for chat turns, one-shot tasks, and multi-attempt loops, with trace capture and eval-gated self-improvement. Domain behavior lives in adapters; scoring and ship-gates in @tangle-network/agent-eval.",
|
|
5
5
|
"homepage": "https://github.com/tangle-network/agent-runtime#readme",
|
|
6
6
|
"repository": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream-agent-turn-DYBpzMmq.js","names":["taskInput"],"sources":["../src/sessions.ts","../src/backends.ts","../src/runtime/stream-agent-turn.ts"],"sourcesContent":["/**\n *\n * Session helpers + an in-memory `RuntimeSessionStore` implementation suitable\n * for tests, scratch processes, and per-request scratch storage in serverless\n * runtimes. Durable stores (D1, postgres, Durable Objects) implement the same\n * interface from `./types`.\n *\n * @stable\n */\n\nimport { SessionMismatchError } from './errors'\nimport type {\n AgentBackendContext,\n AgentBackendInput,\n AgentExecutionBackend,\n RuntimeSession,\n RuntimeSessionStore,\n RuntimeStreamEvent,\n} from './types'\n\n/** @internal */\nexport function newRuntimeSession(\n backend: string,\n requestedId?: string,\n metadata?: Record<string, unknown>,\n): RuntimeSession {\n const now = nowIso()\n return {\n id: requestedId || crypto.randomUUID(),\n backend,\n status: 'active',\n createdAt: now,\n updatedAt: now,\n metadata,\n }\n}\n\n/** @internal */\nexport function touchSession(session: RuntimeSession): RuntimeSession {\n return { ...session, updatedAt: nowIso() }\n}\n\n/** @internal */\nexport function nowIso(): string {\n return new Date().toISOString()\n}\n\ninterface StartOrResumeRuntimeSessionOptions<TInput extends AgentBackendInput> {\n backend: AgentExecutionBackend<TInput>\n input: TInput | (() => TInput)\n /** Smaller input used only when the backend can continue its native session. */\n continuationInput?: TInput | (() => TInput)\n context: Omit<AgentBackendContext, 'session'>\n store?: RuntimeSessionStore\n sessionId?: string\n resume?: boolean\n validateSession?: (session: RuntimeSession) => void\n}\n\ninterface RuntimeSessionCall<TInput extends AgentBackendInput> {\n session: RuntimeSession\n input: TInput\n resumed: boolean\n}\n\n/** Start or resume one backend session and persist its current identity. @internal */\nexport async function startOrResumeRuntimeSession<TInput extends AgentBackendInput>(\n options: StartOrResumeRuntimeSessionOptions<TInput>,\n): Promise<RuntimeSessionCall<TInput>> {\n const existing =\n options.resume && options.sessionId ? await options.store?.get(options.sessionId) : undefined\n if (!existing) {\n const input = resolveSessionInput(options.input)\n const session = options.backend.start\n ? await options.backend.start(input, {\n ...options.context,\n requestedSessionId: options.sessionId,\n })\n : newRuntimeSession(options.backend.kind, options.sessionId)\n assertSessionBackend(session, options.backend.kind)\n options.validateSession?.(session)\n await options.store?.put(session)\n return { session, input, resumed: false }\n }\n\n assertSessionBackend(existing, options.backend.kind)\n const continued = options.backend.resume !== undefined\n const input = resolveSessionInput(\n continued ? (options.continuationInput ?? options.input) : options.input,\n )\n const session = options.backend.resume\n ? await options.backend.resume(existing, input, options.context)\n : touchSession({ ...existing, status: 'active' })\n assertSessionBackend(session, options.backend.kind)\n options.validateSession?.(session)\n await options.store?.put(session)\n return { session, input, resumed: true }\n}\n\nfunction resolveSessionInput<TInput extends AgentBackendInput>(\n input: TInput | (() => TInput),\n): TInput {\n return typeof input === 'function' ? input() : input\n}\n\nfunction assertSessionBackend(session: RuntimeSession, backend: string): void {\n if (session.backend !== backend) throw new SessionMismatchError(session.backend, backend)\n}\n\n/** In-memory `RuntimeSessionStore` for single-process use and tests. @stable */\nexport class InMemoryRuntimeSessionStore implements RuntimeSessionStore {\n private readonly sessions = new Map<string, RuntimeSession>()\n private readonly events = new Map<string, RuntimeStreamEvent[]>()\n\n get(sessionId: string): RuntimeSession | undefined {\n return this.sessions.get(sessionId)\n }\n\n put(session: RuntimeSession): void {\n this.sessions.set(session.id, session)\n }\n\n appendEvent(sessionId: string, event: RuntimeStreamEvent): void {\n const existing = this.events.get(sessionId) ?? []\n existing.push(event)\n this.events.set(sessionId, existing)\n }\n\n listEvents(sessionId: string): RuntimeStreamEvent[] {\n return [...(this.events.get(sessionId) ?? [])]\n }\n}\n","/**\n * Provider-neutral backend adapters for `runAgentTaskStream`.\n *\n * Model inference is deliberately absent. Paid model work enters the Runtime executor with an\n * exact `AgentProfile`; these adapters only normalize a caller-owned iterable or sandbox stream.\n *\n * @stable\n */\n\nimport { newRuntimeSession, nowIso, touchSession } from './sessions'\nimport type {\n AgentBackendContext,\n AgentBackendInput,\n AgentExecutionBackend,\n RuntimeSession,\n RuntimeStreamEvent,\n} from './types'\n\n/** Wrap any custom async-iterable stream into a typed `AgentExecutionBackend`. @stable */\nexport function createIterableBackend<TInput extends AgentBackendInput>(options: {\n kind: string\n start?: AgentExecutionBackend<TInput>['start']\n resume?: AgentExecutionBackend<TInput>['resume']\n stream: AgentExecutionBackend<TInput>['stream']\n stop?: AgentExecutionBackend<TInput>['stop']\n}): AgentExecutionBackend<TInput> {\n return options\n}\n\n/** Build an `AgentExecutionBackend` backed by a sandbox/sidecar `streamPrompt` call. @stable */\nexport function createSandboxPromptBackend<\n TBox,\n TInput extends AgentBackendInput = AgentBackendInput,\n>(options: {\n kind?: string\n getBox(input: TInput, context: Omit<AgentBackendContext, 'session'>): Promise<TBox> | TBox\n streamPrompt(box: TBox, message: string, context: AgentBackendContext): AsyncIterable<unknown>\n mapEvent?: (event: unknown, context: AgentBackendContext) => RuntimeStreamEvent | undefined\n getSessionId?: (box: TBox, input: TInput) => string | undefined\n}): AgentExecutionBackend<TInput> {\n const kind = options.kind ?? 'sandbox'\n return {\n kind,\n async start(input, context) {\n const box = await options.getBox(input, context)\n return newRuntimeSession(\n kind,\n options.getSessionId?.(box, input) ?? context.requestedSessionId,\n { resumable: true },\n )\n },\n resume(session) {\n return touchSession({ ...session, status: 'active' })\n },\n async *stream(input, context) {\n const box = await options.getBox(input, context)\n const message = input.message ?? input.messages?.at(-1)?.content ?? context.task.intent\n for await (const event of options.streamPrompt(box, message, context)) {\n const mapped = options.mapEvent?.(event, context) ?? mapCommonBackendEvent(event, context)\n if (mapped) yield mapped\n }\n },\n }\n}\n\n/** @internal */\nexport function normalizeBackendStreamEvent(\n event: RuntimeStreamEvent,\n task: AgentBackendContext['task'],\n session: RuntimeSession,\n): RuntimeStreamEvent {\n if (\n 'task' in event &&\n event.task &&\n 'session' in event &&\n event.session &&\n 'timestamp' in event &&\n event.timestamp\n ) {\n return event\n }\n return {\n ...event,\n task: 'task' in event && event.task ? event.task : task,\n session: 'session' in event && event.session ? event.session : session,\n timestamp: 'timestamp' in event && event.timestamp ? event.timestamp : nowIso(),\n } as RuntimeStreamEvent\n}\n\nfunction mapCommonBackendEvent(\n event: unknown,\n context: AgentBackendContext,\n): RuntimeStreamEvent | undefined {\n if (!event || typeof event !== 'object') return undefined\n const record = event as Record<string, unknown>\n const type = String(record.type ?? '')\n const data =\n record.data && typeof record.data === 'object'\n ? (record.data as Record<string, unknown>)\n : record\n if (type === 'message.part.updated' || type === 'text_delta' || type === 'delta') {\n const part = data.part as Record<string, unknown> | undefined\n const partText =\n part !== undefined &&\n typeof part === 'object' &&\n (part.type === 'text' || part.type === undefined)\n ? stringValue(part.text)\n : undefined\n const text =\n stringValue(data.text) ?? stringValue(data.delta) ?? stringValue(record.text) ?? partText\n return text\n ? {\n type: 'text_delta',\n task: context.task,\n session: context.session,\n text,\n timestamp: nowIso(),\n }\n : undefined\n }\n if (type === 'reasoning_delta') {\n const text = stringValue(data.text) ?? stringValue(record.text)\n return text\n ? {\n type: 'reasoning_delta',\n task: context.task,\n session: context.session,\n text,\n timestamp: nowIso(),\n }\n : undefined\n }\n if (type === 'tool_call') {\n return {\n type: 'tool_call',\n task: context.task,\n session: context.session,\n toolName: stringValue(data.name) ?? stringValue(record.toolName) ?? 'tool',\n toolCallId: stringValue(data.id) ?? stringValue(record.toolCallId),\n args: data.args ?? data.input ?? record.args,\n timestamp: nowIso(),\n }\n }\n if (type === 'tool_result') {\n return {\n type: 'tool_result',\n task: context.task,\n session: context.session,\n toolName: stringValue(data.name) ?? stringValue(record.toolName) ?? 'tool',\n toolCallId: stringValue(data.id) ?? stringValue(record.toolCallId),\n result: data.result ?? data.output ?? record.result,\n timestamp: nowIso(),\n }\n }\n if (type === 'artifact') {\n const artifactId =\n stringValue(data.artifactId) ?? stringValue(data.id) ?? stringValue(record.artifactId)\n if (!artifactId) return undefined\n return {\n type: 'artifact',\n task: context.task,\n session: context.session,\n artifactId,\n name: stringValue(data.name) ?? stringValue(record.name),\n mimeType: stringValue(data.mimeType) ?? stringValue(record.mimeType),\n uri: stringValue(data.uri) ?? stringValue(record.uri),\n content: stringValue(data.content) ?? stringValue(data.body) ?? stringValue(record.content),\n metadata:\n data.metadata && typeof data.metadata === 'object'\n ? (data.metadata as Record<string, unknown>)\n : undefined,\n timestamp: nowIso(),\n }\n }\n if (type === 'proposal_created' || type === 'proposal' || type === 'filing') {\n const proposalId =\n stringValue(data.proposalId) ?? stringValue(data.id) ?? stringValue(record.proposalId)\n if (!proposalId) return undefined\n const status = stringValue(data.status) ?? stringValue(record.status)\n return {\n type: 'proposal_created',\n task: context.task,\n session: context.session,\n proposalId,\n title: stringValue(data.title) ?? stringValue(record.title) ?? proposalId,\n status:\n status === 'pending' || status === 'approved' || status === 'rejected' ? status : undefined,\n content: stringValue(data.content) ?? stringValue(data.body) ?? stringValue(record.content),\n timestamp: nowIso(),\n }\n }\n if (type === 'result' || type === 'final') {\n const text = stringValue(data.finalText) ?? stringValue(data.text) ?? stringValue(record.text)\n return text\n ? {\n type: 'text_delta',\n task: context.task,\n session: context.session,\n text,\n timestamp: nowIso(),\n }\n : undefined\n }\n return undefined\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n","/**\n * `streamAgentTurn` — the ONE run-a-turn event-stream contract over every\n * execution substrate: a sandbox box (`SandboxInstance.streamPrompt`), a\n * one-shot Runtime-owned `Executor` (cli-bridge / router / sandbox, via\n * `ExecutorFactory`), and an in-process `AgentExecutionBackend`.\n *\n * One function, one vocabulary: every backend kind yields the existing\n * `RuntimeStreamEvent` union incrementally and ALWAYS terminates with a\n * `final` event whose `text` is the turn's final text and whose\n * `metadata.tokenUsage` / `metadata.costUsd` / `metadata.model` carry the\n * turn's metered usage. `collectAgentTurn` drains a stream into that terminal\n * summary plus the full event list.\n *\n * This is a UNIFICATION seam, not a new stream parser — each kind is a thin\n * adapter over code that already exists and is already hardened:\n * - `box` — `mapSandboxEvent` + `extractLlmCallEvent` (sandbox-events.ts)\n * project the sandbox event stream; its requested profile is\n * explicitly recorded as unverified because the box already exists.\n * - `executor` — Runtime materializes the exact `AgentProfile`, records its\n * identity receipts, drives the executor once, and tears it\n * down after capturing the terminal artifact.\n * - `chat` — the backend's own `stream()` surface, normalized by\n * `normalizeBackendStreamEvent`; its requested profile is likewise\n * unverified because an arbitrary backend cannot attest its setup.\n *\n * Distinct from `openSandboxRun` (box-only, session resume over one persistent\n * artifact, raw `SandboxEvent` deliverables) and from `runAgentTaskStream`\n * (full task lifecycle: knowledge preflight, session store, resume). This is\n * the minimal turn primitive underneath both worlds: prompt in, one normalized\n * event stream out, terminal result+usage guaranteed on every non-thrown path.\n *\n * Stream envelope: `backend_start` → incremental events → (`backend_error` on\n * failure) → `final`. A caller-initiated abort terminates with\n * `final.status: 'aborted'`; an expired `timeoutMs` deadline with\n * `final.status: 'failed'` — so cancellation stays distinguishable from a\n * blown deadline.\n *\n * Mid-stream lifecycle work needs NO extra API: the generator is pull-based,\n * so the producer is suspended between yields and resumes only when the caller\n * pulls again. A consumer can therefore run arbitrary async work between\n * events — sync state on each `tool_result`, decide a no-op retry after\n * draining, run a pre-`done` flush when it receives `final` and BEFORE it\n * forwards its own terminal event downstream. The interleaving is guaranteed\n * (and locked by test): nothing is produced past the event the caller is\n * holding.\n *\n * @stable\n */\n\nimport { scoreKnowledgeReadiness } from '@tangle-network/agent-eval'\nimport { type AgentProfile, canonicalCandidateDigest } from '@tangle-network/agent-interface'\nimport type { PromptOptions, SandboxEvent, SandboxInstance } from '@tangle-network/sandbox'\nimport { normalizeBackendStreamEvent } from '../backends'\nimport { BackendTransportError, ValidationError } from '../errors'\nimport { newRuntimeSession, nowIso } from '../sessions'\nimport type {\n AgentBackendInput,\n AgentExecutionBackend,\n AgentTaskSpec,\n AgentTaskStatus,\n BackendErrorDetail,\n RuntimeSession,\n RuntimeStreamEvent,\n} from '../types'\nimport { createSandboxToolPartState, mapSandboxEvent, mapSandboxToolEvent } from './sandbox-events'\nimport { executableAgentProfileSnapshot } from './supervise/executable-spec'\nimport {\n authoredProfileDigest,\n knownExecutionBindingReceipt,\n knownMaterializationReceipt,\n runtimeOwnedExecutorExecutionBinding,\n runtimeOwnedExecutorMaterialization,\n runtimeOwnedPendingExecutorMaterialization,\n unknownExecutionBindingReceipt,\n unknownMaterializationReceipt,\n} from './supervise/materialization'\nimport {\n concreteModelId,\n profileBridgeWireModel,\n profileProviderModel,\n} from './supervise/model-policy'\nimport type {\n ExecutionBindingReceipt,\n Executor,\n ExecutorFactory,\n ExecutorResult,\n NodeExecutionIdentity,\n ProfileMaterializationReceipt,\n UsageEvent,\n} from './supervise/types'\n\n/**\n * The execution substrate one turn runs on — a closed discriminated union over\n * the three stream surfaces the runtime already owns.\n *\n * @stable\n */\nexport type AgentTurnBackend = {\n /** A Runtime-owned executor factory materialized from this exact canonical profile. */\n kind: 'executor'\n factory: ExecutorFactory<unknown>\n /** Exact canonical identity materialized by the executor. */\n profile: AgentProfile\n /** Model label stamped on cost-only `llm_call` events. Default `'agent'`. */\n agentRunName?: string\n}\n\n/** Lower-level observation adapters. They normalize an already-created execution surface but do\n * not bind an AgentProfile to it, so they are deliberately absent from the public kernel export. */\ntype ObservedAgentTurnBackend =\n | {\n /** A live sandbox box: the turn is one `box.streamPrompt(prompt)` call. */\n kind: 'box'\n box: SandboxInstance\n /**\n * Per-turn `PromptOptions` forwarded verbatim to `streamPrompt`\n * (`sessionId`, `turnId`, `model`, `backend` profile, `timeoutMs`, …).\n * The turn's derived abort signal (caller `signal` + `timeoutMs`\n * deadline) is always installed as `signal` — pass cancellation through\n * `StreamAgentTurnOptions`, not here.\n */\n options?: Omit<PromptOptions, 'signal'>\n /** Model label stamped on cost-only `llm_call` events. Default `'agent'`. */\n agentRunName?: string\n }\n | {\n /**\n * A caller-supplied in-process `AgentExecutionBackend`: the turn is one\n * `backend.stream()` call.\n */\n kind: 'chat'\n backend: AgentExecutionBackend\n }\n\n/** One prompt or an exact OpenAI-compatible conversation carried as the turn input. */\nexport type AgentTurnInput =\n | string\n | { readonly messages: ReadonlyArray<Readonly<Record<string, unknown>>> }\n\n/** @stable */\nexport interface StreamAgentTurnOptions {\n /** Caller-initiated cancellation. Terminates the stream with `final.status: 'aborted'`. */\n signal?: AbortSignal\n /**\n * Wall-clock deadline for the whole turn in ms. An expired deadline aborts\n * the backend and terminates the stream with `final.status: 'failed'`\n * (a blown deadline is a turn failure, not a caller cancellation).\n */\n timeoutMs?: number\n /** Stable logical paid-call id, forwarded as the provider idempotency key and retained in evidence. */\n callId?: string\n /** Caller trace tag retained in evidence and forwarded when the transport supports it. */\n correlationId?: string\n /**\n * Opt-in tool-part projection for box and executor backends: sandbox tool\n * parts additionally surface in-stream as\n * `tool_call` / `tool_result` events (`mapSandboxToolEvent`), so a consumer\n * rendering tool activity needs no bespoke sandbox-event parser. Default\n * off — the stream vocabulary existing consumers see is unchanged. No-op\n * for the `chat` kind (its backend emits `RuntimeStreamEvent`s directly,\n * tool events included when the backend produces them).\n */\n preserveToolParts?: boolean\n /**\n * Raw-event tap for box-kind backends: called (and awaited) with every\n * unmapped `SandboxEvent` BEFORE it is projected, so a consumer can read\n * parts the chat-UX projection drops (part ids, step markers, custom\n * backend events) without forking the mapper. Purely observational — it\n * cannot alter the mapped stream. Never called for the `chat` kind, which\n * has no sandbox events.\n */\n onRawEvent?: (event: SandboxEvent) => void | Promise<void>\n}\n\nfunction turnIntent(input: AgentTurnInput): string {\n if (typeof input === 'string') return input\n for (let index = input.messages.length - 1; index >= 0; index -= 1) {\n const message = input.messages[index]\n if (message?.role === 'user' && typeof message.content === 'string') return message.content\n }\n return 'structured agent turn'\n}\n\nfunction turnBackendInput(task: AgentTaskSpec, input: AgentTurnInput): AgentBackendInput {\n if (typeof input === 'string') return { task, message: input }\n return {\n task,\n messages: input.messages.map((message) => ({ ...message })) as AgentBackendInput['messages'],\n }\n}\n\nfunction executorEvidence(\n executor: Executor<unknown>,\n profile: AgentProfile,\n attemptId: string,\n): {\n materialization: ProfileMaterializationReceipt\n executionBinding: ExecutionBindingReceipt\n} {\n const profileDigest = authoredProfileDigest(profile)\n const declaration = runtimeOwnedExecutorMaterialization(executor)\n if (!profileDigest || !declaration) {\n const materialization = unknownMaterializationReceipt({\n ...(profileDigest ? { authoredProfileDigest: profileDigest } : {}),\n runtime: executor.runtime,\n reason: declaration ? 'invalid-executor-report' : 'executor-did-not-report',\n })\n return {\n materialization,\n executionBinding: unknownExecutionBindingReceipt(\n materialization,\n attemptId,\n declaration ? 'invalid-executor-report' : 'executor-did-not-report',\n ),\n }\n }\n try {\n const materialization = knownMaterializationReceipt({\n authoredProfileDigest: profileDigest,\n runtime: executor.runtime,\n declaration,\n })\n const binding = runtimeOwnedExecutorExecutionBinding(executor)\n if (!binding || binding.attemptId !== attemptId) throw new Error('executor attempt id mismatch')\n return {\n materialization,\n executionBinding: knownExecutionBindingReceipt(materialization, binding),\n }\n } catch {\n const materialization = unknownMaterializationReceipt({\n authoredProfileDigest: profileDigest,\n runtime: executor.runtime,\n reason: 'invalid-executor-report',\n })\n return {\n materialization,\n executionBinding: unknownExecutionBindingReceipt(\n materialization,\n attemptId,\n 'invalid-executor-report',\n ),\n }\n }\n}\n\n/** Exact turns require the model-bearing profile to be the sole behavioral authority. Runtime\n * checks the trusted declaration before execution so a seam fallback cannot hide behind the same\n * profile digest. */\nfunction assertExactExecutorDeclaration(executor: Executor<unknown>, profile: AgentProfile): void {\n const profileModel = profileProviderModel(profile)\n if (!profileModel) {\n throw new ValidationError(\n 'streamAgentTurn: exact AgentProfile.model.default must name the concrete model',\n )\n }\n const declaration =\n runtimeOwnedExecutorMaterialization(executor) ??\n runtimeOwnedPendingExecutorMaterialization(executor)?.declaration\n if (!declaration) return\n if (declaration.model.status !== 'known') {\n throw new ValidationError(\n 'streamAgentTurn: exact executor did not materialize a known model identity',\n )\n }\n if (declaration.backend === 'router' || declaration.backend === 'router-tools') {\n const plan = declaration.plan as {\n configuredModel?: unknown\n configuredReasoningEffort?: unknown\n reasoningEffort?: unknown\n }\n if (declaration.model.id !== profileModel) {\n throw new ValidationError(\n 'streamAgentTurn: Router executor model differs from AgentProfile.model.default',\n )\n }\n if (\n plan.configuredModel !== null &&\n plan.configuredModel !== undefined &&\n concreteModelId(String(plan.configuredModel)) !== profileModel\n ) {\n throw new ValidationError(\n 'streamAgentTurn: configured Router model conflicts with AgentProfile.model.default',\n )\n }\n const expectedEffort = profile.model?.reasoningEffort ?? null\n if (\n plan.configuredReasoningEffort !== null &&\n plan.configuredReasoningEffort !== undefined &&\n plan.configuredReasoningEffort !== expectedEffort\n ) {\n throw new ValidationError(\n 'streamAgentTurn: configured Router reasoning conflicts with AgentProfile.model.reasoningEffort',\n )\n }\n if ((plan.reasoningEffort ?? null) !== expectedEffort) {\n throw new ValidationError(\n 'streamAgentTurn: Router reasoning effort must come from AgentProfile.model.reasoningEffort',\n )\n }\n }\n if (declaration.backend === 'bridge' || declaration.backend === 'bridge-worktree') {\n const expectedWireModel = profileBridgeWireModel(profile)\n if (!expectedWireModel || declaration.model.id !== expectedWireModel) {\n throw new ValidationError(\n 'streamAgentTurn: bridge executor model differs from the AgentProfile harness/provider/model wire id',\n )\n }\n const plan = declaration.plan as { configuredModel?: unknown }\n if (\n plan.configuredModel !== null &&\n plan.configuredModel !== undefined &&\n concreteModelId(String(plan.configuredModel)) !== expectedWireModel\n ) {\n throw new ValidationError(\n 'streamAgentTurn: configured bridge model conflicts with the AgentProfile harness/provider/model wire id',\n )\n }\n }\n}\n\nfunction turnProvenance(\n startedAt: number,\n timeoutMs: number | undefined,\n profileDigest: string | undefined,\n taskDigest: string,\n materialization: ProfileMaterializationReceipt | undefined,\n executionBinding: ExecutionBindingReceipt | undefined,\n correlation: Readonly<Record<string, string>>,\n): Record<string, unknown> {\n const endedAt = Date.now()\n return {\n ...(profileDigest\n ? {\n identity: {\n profileDigest,\n taskDigest,\n ...(Object.keys(correlation).length > 0 ? { correlation } : {}),\n },\n }\n : { taskDigest }),\n ...(materialization ? { materialization } : {}),\n ...(executionBinding ? { executionBindings: [executionBinding] } : {}),\n budget: { timeoutMs: timeoutMs ?? null },\n timing: {\n startedAt: new Date(startedAt).toISOString(),\n endedAt: new Date(endedAt).toISOString(),\n durationMs: endedAt - startedAt,\n },\n }\n}\n\n/**\n * Metered usage of one turn, summed over every cost-bearing event the backend\n * emitted. `input`/`output` are token counts and are accompanied by\n * `tokensKnown: false` when the backend did not report them. `costUsd`/`model`\n * are present only when the backend actually reported them.\n *\n * @stable\n */\nexport interface AgentTurnUsage {\n input: number\n output: number\n /** Present when a real turn ran but the provider did not report token usage. */\n tokensKnown?: false\n costUsd?: number\n /** Present when Runtime could not prove the full dollar amount. */\n usdKnown?: false\n /** Separately-labelled local/catalog estimate; never billed spend. */\n estimatedCostUsd?: number\n /** Provider-reported prompt-cache fields; absent fields remain unknown. */\n promptCache?: Readonly<Record<string, number | string>>\n /** Provider-reported reasoning-token subset of output, when available. */\n reasoningTokens?: number\n model?: string\n}\n\n/**\n * A drained turn: the terminal summary plus every event the stream yielded.\n * `status`/`error` mirror the terminal `final` event so a failed or aborted\n * turn stays inspectable without re-scanning `events`.\n *\n * @stable\n */\nexport interface CollectedAgentTurn {\n finalText: string\n /** Exact terminal artifact output from a Runtime-owned executor. */\n output?: unknown\n usage: AgentTurnUsage\n /** Exact underlying transport calls when the Runtime-owned executor reports them. */\n transportAttempts?: number\n toolCalls: Array<{ id?: string; name: string; arguments: string }>\n events: RuntimeStreamEvent[]\n status: AgentTaskStatus\n error?: BackendErrorDetail\n}\n\n/** Mutable per-turn accumulator threaded through the backend adapters. */\ninterface TurnAccumulator {\n /** Concatenated incremental text (`text_delta` events). */\n deltaText: string\n /** Final text read off a terminal `result`/`done`/`final` event, when the\n * backend emitted one. Preferred over `deltaText` for box streams, whose\n * `message.part.updated` fallback carries running accumulations. */\n terminalText?: string\n input: number\n output: number\n costUsd: number\n estimatedCostUsd: number\n sawEstimatedCost: boolean\n promptCache: Record<string, number | string>\n reasoningTokens?: number\n tokensKnown: boolean\n usdKnown: boolean\n sawLlmCall: boolean\n model?: string\n stopReason?: string\n transportAttempts?: number\n result?: ExecutorResult<unknown>\n}\n\n/**\n * Run ONE agent turn on any backend kind and stream its events. Yields the\n * `RuntimeStreamEvent` vocabulary incrementally and always ends with a `final`\n * event carrying the turn's text and usage (`metadata.tokenUsage`,\n * `metadata.costUsd?`, `metadata.model?`) — on success, failure, abort, and\n * timeout alike. The generator never throws; failures surface in-band as\n * `backend_error` + `final` with a typed `error` detail.\n *\n * @stable\n */\nexport async function* streamAgentTurn(\n backend: AgentTurnBackend,\n input: AgentTurnInput,\n opts: StreamAgentTurnOptions = {},\n): AsyncGenerator<RuntimeStreamEvent> {\n assertTurnTimeout(opts.timeoutMs)\n if ((backend as { kind?: unknown }).kind !== 'executor') {\n throw new ValidationError(\n \"streamAgentTurn: exact execution accepts only kind 'executor'; use Runtime-owned creation\",\n )\n }\n yield* streamAgentTurnInternal(backend, input, opts)\n}\n\n/** @internal Normalize a pre-created box/chat stream without asserting an AgentProfile identity. */\nexport async function* streamObservedAgentTurn(\n backend: ObservedAgentTurnBackend,\n input: AgentTurnInput,\n opts: StreamAgentTurnOptions = {},\n): AsyncGenerator<RuntimeStreamEvent> {\n assertTurnTimeout(opts.timeoutMs)\n yield* streamAgentTurnInternal(backend, input, opts)\n}\n\nfunction assertTurnTimeout(timeoutMs: number | undefined): void {\n if (timeoutMs === undefined) return\n if (!Number.isSafeInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > 2_147_483_647) {\n throw new ValidationError('streamAgentTurn: timeoutMs must be an integer from 1 to 2147483647')\n }\n}\n\nfunction assertTurnIdentity(value: string | undefined, field: string): void {\n if (value !== undefined && (typeof value !== 'string' || value.trim().length === 0)) {\n throw new ValidationError(`streamAgentTurn: ${field} must be a non-empty string`)\n }\n}\n\nasync function* streamAgentTurnInternal(\n backend: AgentTurnBackend | ObservedAgentTurnBackend,\n input: AgentTurnInput,\n opts: StreamAgentTurnOptions,\n): AsyncGenerator<RuntimeStreamEvent> {\n const label = backend.kind === 'chat' ? backend.backend.kind : backend.kind\n const profile =\n backend.kind === 'executor'\n ? executableAgentProfileSnapshot(backend.profile, 'streamAgentTurn')\n : undefined\n const profileDigest = profile ? authoredProfileDigest(profile) : undefined\n assertTurnIdentity(opts.callId, 'callId')\n assertTurnIdentity(opts.correlationId, 'correlationId')\n const correlation = {\n ...(opts.callId ? { callId: opts.callId } : {}),\n ...(opts.correlationId ? { correlationId: opts.correlationId } : {}),\n }\n const taskInput = input\n const taskDigest = canonicalCandidateDigest(taskInput)\n const task: AgentTaskSpec = {\n id: `turn-${crypto.randomUUID()}`,\n intent: turnIntent(input),\n ...(profileDigest\n ? {\n metadata: {\n identity: {\n profileDigest,\n taskDigest,\n ...(Object.keys(correlation).length > 0 ? { correlation } : {}),\n } satisfies NodeExecutionIdentity,\n },\n }\n : {}),\n }\n const acc: TurnAccumulator = {\n deltaText: '',\n input: 0,\n output: 0,\n costUsd: 0,\n estimatedCostUsd: 0,\n sawEstimatedCost: false,\n promptCache: {},\n tokensKnown: false,\n usdKnown: false,\n sawLlmCall: false,\n }\n const deadline = deriveTurnSignal(opts.signal, opts.timeoutMs ?? 0)\n const startedAt = Date.now()\n\n let session: RuntimeSession | undefined\n let executor: Executor<unknown> | undefined\n let materialization: ProfileMaterializationReceipt | undefined\n let executionBinding: ExecutionBindingReceipt | undefined\n try {\n const nodeId = task.id\n const attemptId = `${nodeId}:attempt:${crypto.randomUUID()}`\n if (backend.kind === 'executor') {\n executor = backend.factory(\n { profile: profile!, harness: null },\n {\n signal: deadline.signal,\n seams: {},\n node: {\n rootId: nodeId,\n parentId: nodeId,\n nodeId,\n attemptId,\n identity: {\n profileDigest: profileDigest!,\n taskDigest,\n ...(Object.keys(correlation).length > 0 ? { correlation } : {}),\n },\n },\n },\n )\n assertExactExecutorDeclaration(executor, profile!)\n const pending = runtimeOwnedPendingExecutorMaterialization(executor)\n if (pending !== undefined) {\n if (pending.runtime !== executor.runtime || pending.binding.attemptId !== attemptId) {\n throw new ValidationError(\n 'streamAgentTurn: pending executor did not bind the kernel-minted attempt',\n )\n }\n if (authoredProfileDigest(pending.declaration.effectiveProfile) !== profileDigest) {\n throw new ValidationError(\n 'streamAgentTurn: pending executor changed the authored AgentProfile before execution',\n )\n }\n materialization = unknownMaterializationReceipt({\n authoredProfileDigest: profileDigest!,\n runtime: executor.runtime,\n reason: 'executor-receipt-pending',\n })\n executionBinding = unknownExecutionBindingReceipt(\n materialization,\n attemptId,\n 'executor-receipt-pending',\n )\n } else {\n ;({ materialization, executionBinding } = executorEvidence(executor, profile!, attemptId))\n assertExactExecutorEvidence(materialization, executionBinding)\n }\n } else {\n materialization = unknownMaterializationReceipt({\n runtime: backend.kind === 'box' ? 'sandbox' : label,\n reason: 'executor-did-not-report',\n })\n executionBinding = unknownExecutionBindingReceipt(\n materialization,\n attemptId,\n 'executor-did-not-report',\n )\n }\n session = await startTurnSession(backend, task, input, deadline.signal, label)\n yield {\n type: 'backend_start',\n task,\n session,\n backend: executor?.runtime ?? label,\n metadata: {\n ...(profileDigest\n ? {\n identity: {\n profileDigest,\n taskDigest,\n ...(Object.keys(correlation).length > 0 ? { correlation } : {}),\n },\n }\n : { taskDigest }),\n ...(materialization ? { materialization } : {}),\n ...(executionBinding ? { executionBindings: [executionBinding] } : {}),\n budget: { timeoutMs: opts.timeoutMs ?? null },\n timing: { startedAt: new Date(startedAt).toISOString() },\n },\n timestamp: nowIso(),\n }\n\n const inner =\n backend.kind === 'chat'\n ? driveChatTurn(backend.backend, task, session, input, deadline.signal, acc)\n : backend.kind === 'executor'\n ? driveExecutorTurn(\n executor!,\n task,\n session,\n input,\n deadline.signal,\n acc,\n materializedModel(materialization, profile!),\n )\n : driveBoxTurn(\n backend.box,\n turnIntent(input),\n deadline.signal,\n backend.agentRunName ?? 'agent',\n acc,\n {\n ...(backend.options ? { options: backend.options } : {}),\n preserveToolParts: opts.preserveToolParts === true,\n ...(opts.onRawEvent ? { onRawEvent: opts.onRawEvent } : {}),\n },\n )\n for await (const event of inner) {\n yield event\n throwIfAborted(deadline.signal)\n }\n\n if (backend.kind === 'executor') {\n ;({ materialization, executionBinding } = executorEvidence(executor!, profile!, attemptId))\n assertExactExecutorEvidence(materialization, executionBinding)\n }\n\n yield buildFinalEvent(\n task,\n session,\n acc,\n { status: 'completed', reason: 'turn completed' },\n turnProvenance(\n startedAt,\n opts.timeoutMs,\n profileDigest,\n taskDigest,\n materialization,\n executionBinding,\n correlation,\n ),\n )\n } catch (err) {\n const callerAborted = opts.signal?.aborted === true\n const status: AgentTaskStatus = callerAborted ? 'aborted' : 'failed'\n const message = err instanceof Error ? err.message : String(err)\n const error: BackendErrorDetail =\n err instanceof BackendTransportError\n ? { kind: 'transport', message, status: err.status, body: err.body }\n : { kind: 'backend', message }\n yield {\n type: 'backend_error',\n task,\n ...(session ? { session } : {}),\n backend: label,\n message,\n recoverable: !callerAborted,\n error,\n timestamp: nowIso(),\n }\n yield buildFinalEvent(\n task,\n session,\n acc,\n { status, reason: message, error },\n turnProvenance(\n startedAt,\n opts.timeoutMs,\n profileDigest,\n taskDigest,\n materialization,\n executionBinding,\n correlation,\n ),\n )\n } finally {\n await executor?.teardown('brutalKill').catch(() => undefined)\n deadline.dispose()\n }\n}\n\nfunction assertExactExecutorEvidence(\n materialization: ProfileMaterializationReceipt,\n executionBinding: ExecutionBindingReceipt,\n): void {\n if (materialization.status !== 'known' || executionBinding.status !== 'known') {\n throw new ValidationError(\n 'streamAgentTurn: exact profile execution requires terminally validated Runtime materialization and execution binding evidence',\n )\n }\n if (materialization.effectiveProfileDigest !== materialization.authoredProfileDigest) {\n throw new ValidationError(\n 'streamAgentTurn: executor changed the authored AgentProfile; exact turn execution refuses profile overlays',\n )\n }\n}\n\n/**\n * Drain a `streamAgentTurn` stream (or any `RuntimeStreamEvent` stream that\n * honors its terminal contract) into the turn summary plus the full event\n * list. Fail-loud: throws when the stream ends without a terminal `final`\n * event — a stream that violates the contract must not read as an empty turn.\n *\n * @stable\n */\nexport async function collectAgentTurn(\n stream: AsyncIterable<RuntimeStreamEvent>,\n): Promise<CollectedAgentTurn> {\n const events: RuntimeStreamEvent[] = []\n for await (const event of stream) events.push(event)\n const final = events.at(-1)\n if (final?.type !== 'final') {\n throw new Error(\n `collectAgentTurn: stream ended without a terminal 'final' event (last: ${final ? final.type : 'none'})`,\n )\n }\n const metadata = final.metadata ?? {}\n const resultMetadata =\n metadata.result && typeof metadata.result === 'object'\n ? (metadata.result as Record<string, unknown>)\n : undefined\n const tokenUsage =\n metadata.tokenUsage && typeof metadata.tokenUsage === 'object'\n ? (metadata.tokenUsage as Record<string, unknown>)\n : {}\n const usage: AgentTurnUsage = {\n input: finiteNumber(tokenUsage.input) ?? 0,\n output: finiteNumber(tokenUsage.output) ?? 0,\n ...(metadata.tokensKnown === false ? { tokensKnown: false as const } : {}),\n }\n const costUsd = finiteNumber(metadata.costUsd)\n if (costUsd !== undefined) usage.costUsd = costUsd\n if (metadata.usdKnown === false) usage.usdKnown = false\n const estimatedCostUsd = finiteNumber(metadata.estimatedCostUsd)\n if (estimatedCostUsd !== undefined) usage.estimatedCostUsd = estimatedCostUsd\n if (metadata.promptCache && typeof metadata.promptCache === 'object') {\n usage.promptCache = metadata.promptCache as Record<string, number | string>\n }\n const reasoningTokens = finiteNumber(metadata.reasoningTokens)\n if (reasoningTokens !== undefined) usage.reasoningTokens = reasoningTokens\n if (typeof metadata.model === 'string' && metadata.model.length > 0) {\n usage.model = metadata.model\n }\n const transportAttempts = finiteNumber(metadata.transportAttempts)\n const toolCalls = events\n .filter((event) => event.type === 'tool_call')\n .map((event) => ({\n ...(event.toolCallId ? { id: event.toolCallId } : {}),\n name: event.toolName,\n arguments: typeof event.args === 'string' ? event.args : JSON.stringify(event.args ?? {}),\n }))\n return {\n finalText: final.text ?? '',\n ...(resultMetadata && 'output' in resultMetadata ? { output: resultMetadata.output } : {}),\n usage,\n ...(transportAttempts !== undefined ? { transportAttempts } : {}),\n toolCalls,\n events,\n status: final.status,\n ...(final.error ? { error: final.error } : {}),\n }\n}\n\n/** Start the backend's session when it owns one (`chat` kind); mint a local\n * correlation session otherwise. Box/executor turns carry no server session\n * here — resume lives in `openSandboxRun`/`SandboxLineage`, not this primitive. */\nasync function startTurnSession(\n backend: AgentTurnBackend | ObservedAgentTurnBackend,\n task: AgentTaskSpec,\n input: AgentTurnInput,\n signal: AbortSignal,\n label: string,\n): Promise<RuntimeSession> {\n if (backend.kind === 'chat' && backend.backend.start) {\n return backend.backend.start(turnBackendInput(task, input), {\n task,\n knowledge: emptyReadiness(task),\n signal,\n })\n }\n return newRuntimeSession(label)\n}\n\n/** Box-drive configuration derived from the backend kind + turn options. */\ninterface BoxTurnConfig {\n /** Caller `PromptOptions` forwarded to `streamPrompt`; the turn's derived\n * signal is installed over any caller value. */\n options?: Omit<PromptOptions, 'signal'>\n /** Project tool parts to `tool_call`/`tool_result` (see `mapSandboxToolEvent`). */\n preserveToolParts: boolean\n /** Awaited raw-event tap, before projection. */\n onRawEvent?: (event: SandboxEvent) => void | Promise<void>\n}\n\n/**\n * One turn over a box: `box.streamPrompt` projected through the existing\n * `mapSandboxEvent` (text/reasoning deltas +\n * cost-bearing `llm_call`s), plus the opt-in `mapSandboxToolEvent` tool-part\n * projection. Usage accumulates off the mapped `llm_call` events — the same\n * fold `sumSandboxUsage` applies. Final text prefers the terminal\n * `result`/`done`/`final` payload over concatenated deltas, because the\n * sandbox `message.part.updated` fallback may carry running accumulations.\n */\nasync function* driveBoxTurn(\n box: SandboxInstance,\n prompt: string,\n signal: AbortSignal,\n agentRunName: string,\n acc: TurnAccumulator,\n cfg: BoxTurnConfig,\n): AsyncGenerator<RuntimeStreamEvent> {\n const callOptions: PromptOptions = { ...(cfg.options ?? {}), signal }\n const stream = box.streamPrompt(prompt, callOptions)\n const toolParts = cfg.preserveToolParts ? createSandboxToolPartState() : undefined\n for await (const event of stream) {\n if (cfg.onRawEvent) await cfg.onRawEvent(event)\n const terminalText = terminalTextFromSandboxEvent(event)\n if (terminalText !== undefined) acc.terminalText = terminalText\n if (toolParts) {\n for (const toolEvent of mapSandboxToolEvent(event, toolParts)) yield toolEvent\n }\n const mapped = mapSandboxEvent(event, { agentRunName })\n if (!mapped) continue\n // `mapSandboxEvent` stamps `agentRunName` as the model label when the\n // event carried none — a run label, not a reported model. Exclude it from\n // the terminal usage so `usage.model` is never a fabricated value.\n foldEvent(mapped, acc, agentRunName)\n yield mapped\n }\n}\n\n/** One turn over an in-process backend: its own `stream()` surface, projected\n * through the same `normalizeBackendStreamEvent` the task lifecycle applies. */\nasync function* driveChatTurn(\n backend: AgentExecutionBackend,\n task: AgentTaskSpec,\n session: RuntimeSession,\n input: AgentTurnInput,\n signal: AbortSignal,\n acc: TurnAccumulator,\n): AsyncGenerator<RuntimeStreamEvent> {\n const backendInput = turnBackendInput(task, input)\n const context = { task, knowledge: emptyReadiness(task), session, signal }\n for await (const raw of backend.stream(backendInput, context)) {\n const event = normalizeBackendStreamEvent(raw, task, session)\n foldEvent(event, acc)\n yield event\n }\n}\n\nasync function* driveExecutorTurn(\n executor: Executor<unknown>,\n task: AgentTaskSpec,\n session: RuntimeSession,\n input: AgentTurnInput,\n signal: AbortSignal,\n acc: TurnAccumulator,\n declaredModel: string | undefined,\n): AsyncGenerator<RuntimeStreamEvent> {\n const taskValue = typeof input === 'string' ? input : { messages: input.messages }\n const run = executor.execute(taskValue, signal)\n let result: ExecutorResult<unknown>\n if (isAsyncIterable(run)) {\n for await (const _usage of run) {\n throwIfAborted(signal)\n }\n result = executor.resultArtifact()\n } else {\n result = await run\n }\n acc.result = result\n acc.terminalText = executorResultText(result.out)\n acc.input = result.spent.tokens.input\n acc.output = result.spent.tokens.output\n acc.costUsd = result.spent.usd\n const estimatedCostUsd = executorResultEstimatedCost(result.out)\n if (estimatedCostUsd !== undefined) {\n acc.estimatedCostUsd = estimatedCostUsd\n acc.sawEstimatedCost = true\n }\n Object.assign(acc.promptCache, executorResultPromptCache(result.out))\n acc.reasoningTokens = executorResultReasoningTokens(result.out)\n acc.tokensKnown = result.spent.tokensKnown !== false\n acc.usdKnown = result.spent.usdKnown !== false\n acc.sawLlmCall = true\n\n // Usage model identity is observational: the executor must report what answered. The profile's\n // declared model remains available in materialization evidence, but it is not fabricated into\n // `usage.model` when the provider/transport omitted an actual response model.\n const model = executorResultModel(result.out)\n if (model) acc.model = model\n acc.stopReason = executorResultStopReason(result.out)\n acc.transportAttempts = executorResultTransportAttempts(result.out)\n const latencyMs = result.spent.ms\n yield {\n type: 'llm_call',\n task,\n session,\n model: model ?? declaredModel ?? executor.runtime,\n ...(acc.tokensKnown ? { tokensIn: acc.input, tokensOut: acc.output } : {}),\n ...(acc.usdKnown ? { costUsd: acc.costUsd } : {}),\n ...(acc.tokensKnown ? {} : { tokensKnown: false }),\n ...(acc.usdKnown ? {} : { usdKnown: false }),\n ...(acc.sawEstimatedCost ? { estimatedCostUsd: acc.estimatedCostUsd } : {}),\n ...(Object.keys(acc.promptCache).length > 0 ? { promptCache: acc.promptCache } : {}),\n latencyMs,\n timestamp: nowIso(),\n }\n for (const call of executorResultToolCalls(result.out)) {\n yield {\n type: 'tool_call',\n task,\n session,\n toolName: call.name,\n ...(call.id ? { toolCallId: call.id } : {}),\n args: call.arguments,\n timestamp: nowIso(),\n }\n }\n yield {\n type: 'artifact',\n task,\n session,\n artifactId: result.outRef,\n name: 'agent-turn-result',\n metadata: {\n spend: result.spent,\n ...(result.verdict ? { verdict: result.verdict } : {}),\n },\n timestamp: nowIso(),\n }\n}\n\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<UsageEvent> {\n return typeof value === 'object' && value !== null && Symbol.asyncIterator in value\n}\n\nfunction executorResultText(value: unknown): string {\n if (typeof value === 'string') return value\n if (!value || typeof value !== 'object') return ''\n const content = (value as Record<string, unknown>).content\n return typeof content === 'string' ? content : ''\n}\n\nfunction executorResultModel(value: unknown): string | undefined {\n if (!value || typeof value !== 'object') return undefined\n const model = (value as Record<string, unknown>).model\n return typeof model === 'string' && model.length > 0 ? model : undefined\n}\n\nfunction executorResultStopReason(value: unknown): string | undefined {\n if (!value || typeof value !== 'object') return undefined\n const reason = (value as Record<string, unknown>).finishReason\n return typeof reason === 'string' && reason.length > 0 ? reason : undefined\n}\n\nfunction executorResultTransportAttempts(value: unknown): number | undefined {\n if (!value || typeof value !== 'object') return undefined\n const attempts = (value as Record<string, unknown>).transportAttempts\n return typeof attempts === 'number' && Number.isSafeInteger(attempts) && attempts > 0\n ? attempts\n : undefined\n}\n\nfunction executorResultEstimatedCost(value: unknown): number | undefined {\n if (!value || typeof value !== 'object') return undefined\n return finiteNumber((value as Record<string, unknown>).estimatedCostUsd)\n}\n\nfunction executorResultPromptCache(value: unknown): Record<string, number | string> {\n if (!value || typeof value !== 'object') return {}\n const raw = (value as Record<string, unknown>).promptCache\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return {}\n const cache: Record<string, number | string> = {}\n for (const [key, entry] of Object.entries(raw)) {\n if ((typeof entry === 'number' && Number.isFinite(entry)) || typeof entry === 'string') {\n cache[key] = entry\n }\n }\n return cache\n}\n\nfunction executorResultReasoningTokens(value: unknown): number | undefined {\n if (!value || typeof value !== 'object') return undefined\n const count = (value as Record<string, unknown>).reasoningTokens\n return Number.isSafeInteger(count) && (count as number) >= 0 ? (count as number) : undefined\n}\n\nfunction executorResultToolCalls(\n value: unknown,\n): Array<{ id?: string; name: string; arguments: string }> {\n if (!value || typeof value !== 'object') return []\n const raw = (value as Record<string, unknown>).toolCalls\n if (!Array.isArray(raw)) return []\n return raw.flatMap((entry) => {\n if (!entry || typeof entry !== 'object') return []\n const call = entry as Record<string, unknown>\n if (typeof call.name !== 'string') return []\n return [\n {\n ...(typeof call.id === 'string' ? { id: call.id } : {}),\n name: call.name,\n arguments:\n typeof call.arguments === 'string'\n ? call.arguments\n : JSON.stringify(call.arguments ?? {}),\n },\n ]\n })\n}\n\n/** Fold one normalized event into the turn accumulator (text + usage).\n * `fallbackModelLabel` — a mapper-stamped run label to exclude from\n * `usage.model` (it is not a backend-reported model). */\nfunction foldEvent(\n event: RuntimeStreamEvent,\n acc: TurnAccumulator,\n fallbackModelLabel?: string,\n): void {\n if (event.type === 'text_delta') {\n acc.deltaText += event.text\n return\n }\n if (event.type === 'llm_call') {\n const tokensReported =\n event.tokensKnown !== false && event.tokensIn !== undefined && event.tokensOut !== undefined\n const usdReported = event.usdKnown !== false && event.costUsd !== undefined\n if (!acc.sawLlmCall) {\n acc.tokensKnown = tokensReported\n acc.usdKnown = usdReported\n acc.sawLlmCall = true\n } else {\n acc.tokensKnown &&= tokensReported\n acc.usdKnown &&= usdReported\n }\n acc.input += event.tokensIn ?? 0\n acc.output += event.tokensOut ?? 0\n acc.costUsd += event.costUsd ?? 0\n if (event.estimatedCostUsd !== undefined) {\n acc.estimatedCostUsd += event.estimatedCostUsd\n acc.sawEstimatedCost = true\n }\n if (event.promptCache) Object.assign(acc.promptCache, event.promptCache)\n if (event.model && event.model !== fallbackModelLabel) acc.model = event.model\n }\n}\n\n/** Read the final text off a terminal sandbox event, when present. */\nfunction terminalTextFromSandboxEvent(event: SandboxEvent): string | undefined {\n if (!event || typeof event !== 'object') return undefined\n const type = String(event.type ?? '')\n if (type !== 'result' && type !== 'done' && type !== 'final') return undefined\n const data =\n event.data && typeof event.data === 'object'\n ? (event.data as Record<string, unknown>)\n : ({} as Record<string, unknown>)\n for (const key of ['finalText', 'text', 'response', 'content']) {\n const value = data[key]\n if (typeof value === 'string') return value\n }\n return undefined\n}\n\nfunction buildFinalEvent(\n task: AgentTaskSpec,\n session: RuntimeSession | undefined,\n acc: TurnAccumulator,\n outcome: { status: AgentTaskStatus; reason: string; error?: BackendErrorDetail },\n provenance: Record<string, unknown>,\n): RuntimeStreamEvent {\n const finalText = acc.terminalText ?? acc.deltaText\n return {\n type: 'final',\n task,\n ...(session ? { session } : {}),\n status: outcome.status,\n reason: outcome.status === 'completed' ? (acc.stopReason ?? outcome.reason) : outcome.reason,\n ...(finalText ? { text: finalText } : {}),\n metadata: {\n tokenUsage: { input: acc.input, output: acc.output },\n ...(acc.tokensKnown ? {} : { tokensKnown: false }),\n ...(acc.usdKnown ? { costUsd: acc.costUsd } : { usdKnown: false }),\n ...(acc.sawEstimatedCost ? { estimatedCostUsd: acc.estimatedCostUsd } : {}),\n ...(Object.keys(acc.promptCache).length > 0 ? { promptCache: acc.promptCache } : {}),\n ...(acc.reasoningTokens !== undefined ? { reasoningTokens: acc.reasoningTokens } : {}),\n ...(acc.model ? { model: acc.model } : {}),\n ...(acc.stopReason ? { stopReason: acc.stopReason } : {}),\n ...(acc.transportAttempts !== undefined ? { transportAttempts: acc.transportAttempts } : {}),\n ...(acc.result\n ? {\n result: {\n outRef: acc.result.outRef,\n output: acc.result.out,\n ...(acc.result.verdict ? { verdict: acc.result.verdict } : {}),\n spent: acc.result.spent,\n },\n }\n : {}),\n ...provenance,\n },\n ...(outcome.error ? { error: outcome.error } : {}),\n timestamp: nowIso(),\n }\n}\n\nfunction materializedModel(\n receipt: ProfileMaterializationReceipt | undefined,\n profile: AgentProfile,\n): string | undefined {\n if (receipt?.status === 'known' && receipt.model.status === 'known') return receipt.model.id\n const fallback = profile.model?.default\n return typeof fallback === 'string' && fallback.length > 0 ? fallback : undefined\n}\n\n/** Minimal ready-by-construction readiness report for a requirement-free turn. */\nfunction emptyReadiness(task: AgentTaskSpec) {\n return scoreKnowledgeReadiness({ taskId: task.id, requirements: [] })\n}\n\nfunction finiteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction throwIfAborted(signal: AbortSignal): void {\n if (!signal.aborted) return\n throw signal.reason instanceof Error ? signal.reason : new Error(String(signal.reason))\n}\n\n/**\n * Derive the turn's effective abort signal: fires when EITHER the caller's\n * signal aborts OR the `timeoutMs` deadline elapses. `dispose()` clears the\n * timer so a finished turn never leaks a pending timeout. `timeoutMs <= 0`\n * disables the deadline. Node-portable (no `AbortSignal.any`, which needs\n * >=20.3 — the package floor is >=20).\n */\nfunction deriveTurnSignal(\n callerSignal: AbortSignal | undefined,\n timeoutMs: number,\n): { signal: AbortSignal; dispose: () => void } {\n const controller = new AbortController()\n const timer =\n timeoutMs > 0\n ? setTimeout(\n () => controller.abort(new Error(`agent turn timed out after ${timeoutMs}ms`)),\n timeoutMs,\n )\n : undefined\n if (timer && typeof (timer as { unref?: () => void }).unref === 'function') {\n ;(timer as { unref: () => void }).unref()\n }\n const onCallerAbort = () =>\n controller.abort(callerSignal?.reason ?? new Error('agent turn aborted'))\n if (callerSignal) {\n if (callerSignal.aborted) onCallerAbort()\n else callerSignal.addEventListener('abort', onCallerAbort, { once: true })\n }\n return {\n signal: controller.signal,\n dispose: () => {\n if (timer) clearTimeout(timer)\n callerSignal?.removeEventListener('abort', onCallerAbort)\n },\n }\n}\n"],"mappings":"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"}
|