@ponythewhite/base-context 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"inference-coordinator.js","sourceRoot":"","sources":["../../src/core/inference-coordinator.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { setTimeout as delay } from \"node:timers/promises\";\nimport type { AgentMessage, AgentOwnedStreamFn, StreamFn } from \"@ponythewhite/base-context-agent\";\nimport {\n\ttype Api,\n\ttype AssistantMessage,\n\tassertBuiltInAttemptSupport,\n\ttype Context,\n\tcompleteSimple,\n\tinvokeRequestMeasurement,\n\tisLocalFauxStream,\n\tisTransientProviderFailure,\n\ttype Model,\n\ttype ProviderAttemptObserver,\n\ttype ProviderInputTokenCounter,\n\ttype ProviderRequestRepresentation,\n\ttype RequestTokenAssessment,\n\tRequestTokenBudget,\n\ttype RequestTokenBudgetOptions,\n\ttype SimpleStreamOptions,\n\tstreamSimple,\n} from \"@ponythewhite/base-context-ai\";\nimport type { AuthSourceToken } from \"./auth-storage.js\";\nimport type {\n\tBoundRequestSink,\n\tContextEpochEntryRef,\n\tNativeBranchRequestOutputWriter,\n\tNativeCompactionRequestOutputAssociation,\n\tNativePlannerRequestOutputWriter,\n\tNativeRequestMetadata,\n\tNativeRequestOutputWriter,\n\tRequestOwnerRef,\n\tRequestPurpose,\n\tResolvedModelContract,\n\tSourceSnapshotRef,\n} from \"./request-events.js\";\nimport {\n\ttype CapturedRequestViewBoundary,\n\tcaptureRequestViewBoundary,\n\tmatchesRequestView,\n\tprepareFixedRequestView,\n\ttype RequestViewCommit,\n\ttype RequestViewFixedPrepare,\n\ttype RequestViewValidate,\n\tselectRequestView,\n} from \"./request-view-selection.js\";\nimport { hashTurnBody, MODEL_REQUEST_ID_HEADER, unwrapSemanticEdgeStreamFn } from \"./semantic-edges.js\";\nimport type { SessionHistoryReadView } from \"./session-history-index.js\";\nimport {\n\tcaptureNativeBranchOutputSource,\n\tcaptureNativeCompactionOutputSource,\n\tcaptureNativePlannerOutputSource,\n\tcaptureNativeRequestOutputSource,\n} from \"./session-manager.js\";\n\nexport interface InferenceRequestOptions {\n\treadonly purpose: RequestPurpose;\n\treadonly purposeDetail?: string;\n\treadonly operationId?: string;\n\treadonly parentOperationId?: string;\n\treadonly semanticEdgeId?: string;\n}\n\nexport interface InferenceSettlement {\n\treadonly message: AssistantMessage;\n\treadonly operationId: string;\n\treadonly attemptIds: readonly string[];\n\t/** Reporting is not a guarantee about an opaque adapter's hidden retries. */\n\treadonly physicalCoverage: \"reported\" | \"unestablished\" | \"local-simulation\";\n}\n\n/** Private completion identity carries this actual source, never descriptive sink labels. */\nexport interface NativeCompactionOutputBinding {\n\treadonly sink: BoundRequestSink;\n\treadonly output: NativeCompactionRequestOutputAssociation;\n}\n\ninterface NativeBranchOutputBinding {\n\treadonly owner: InferenceCoordinator;\n\treadonly write: NativeBranchRequestOutputWriter;\n}\n\ninterface NativePlannerOutputBinding {\n\treadonly owner: InferenceCoordinator;\n\treadonly write: NativePlannerRequestOutputWriter;\n}\n\nexport interface InferenceRun {\n\treadonly events: Awaited<ReturnType<StreamFn>>;\n\treadonly settled: Promise<InferenceSettlement>;\n}\n\nexport interface SessionRuntimeServices {\n\treadonly requests: InferenceCoordinator;\n}\n\ninterface ProviderRecoveryPolicy {\n\tenabled: boolean;\n\tbaseDelayMs: number;\n\tmaxRetryDelayMs: number;\n}\n\ninterface SinkUse {\n\treadonly sink: BoundRequestSink;\n\tactiveUsers: number;\n\tcaptures: number;\n\trelease?: Promise<void>;\n}\n\ninterface BoundOperation {\n\treadonly binding: SinkUse;\n\treadonly owner: Omit<RequestOwnerRef, \"sessionId\">;\n\treadonly metadata: Omit<NativeRequestMetadata, \"source\" | \"owner\" | \"contextEpoch\">;\n}\n\nconst REQUEST_STREAM_BINDING = Symbol(\"base-context.request-stream-binding\");\n/** Internal AgentSession built-in compaction entry, not a public inference option. */\nexport const captureNativeCompactionRequests = Symbol(\"base-context.native-compaction-requests\");\n/** Internal AgentSession built-in branch-summary invocation, never inherited by generic capture. */\nexport const captureNativeBranchRequests = Symbol(\"base-context.native-branch-requests\");\n/** Internal native AgentSession planner capture, never inherited by generic capture. */\nexport const captureNativePlannerRequests = Symbol(\"base-context.native-planner-requests\");\n/** Internal native AgentSession reviewer invocation. */\nexport const captureNativeReviewerRequests = Symbol(\"base-context.native-reviewer-requests\");\ninterface StreamBinding {\n\treadonly coordinator: InferenceCoordinator;\n\treadonly inner: StreamFn;\n}\ntype BoundStreamFn = AgentOwnedStreamFn & { [REQUEST_STREAM_BINDING]?: StreamBinding };\n\nfunction modelContract(model: Model<Api>): ResolvedModelContract {\n\treturn {\n\t\tapi: model.api,\n\t\tprovider: model.provider,\n\t\tmodel: model.id,\n\t\tprofile: { id: \"native-default\", status: \"unvalidated\" },\n\t\tpricing: {\n\t\t\tstatus: \"unvalidated\",\n\t\t\tcurrency: \"USD\",\n\t\t\tunit: \"million-tokens\",\n\t\t\tcatalogRates: {\n\t\t\t\tinput: model.cost.input,\n\t\t\t\toutput: model.cost.output,\n\t\t\t\tcacheRead: model.cost.cacheRead,\n\t\t\t\tcacheWrite: model.cost.cacheWrite,\n\t\t\t},\n\t\t},\n\t};\n}\n\nconst nativeStreamFunctions = new WeakSet<StreamFn>();\nconst nativeAuthSources = new WeakMap<AssistantMessage, AuthSourceToken>();\n\n/** Consume the credential source resolved for this exact native request. Never persisted or sent to providers. */\nexport function takeNativeInferenceAuthSource(message: AssistantMessage): AuthSourceToken | undefined {\n\tconst source = nativeAuthSources.get(message);\n\tnativeAuthSources.delete(message);\n\treturn source;\n}\n\n/** Internal SDK auth/options resolver; transport stays the known instrumented AI dispatcher. */\nexport function createNativeInferenceStream(\n\tresolveOptions: (\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t) => Promise<SimpleStreamOptions & { authSourceToken?: AuthSourceToken }>,\n): StreamFn {\n\tconst dispatch: StreamFn = async (model, context, options) => {\n\t\tconst { authSourceToken, ...resolved } = await resolveOptions(model, context, options);\n\t\tconst events = streamSimple(model, context, {\n\t\t\t...resolved,\n\t\t\tsignal: options?.signal,\n\t\t\tattempts: options?.attempts,\n\t\t\trequireProviderAttempts: true,\n\t\t});\n\t\tif (authSourceToken) {\n\t\t\tconst source = { ...authSourceToken };\n\t\t\tconst result = events.result().then((message) => {\n\t\t\t\tnativeAuthSources.set(message, source);\n\t\t\t\treturn message;\n\t\t\t});\n\t\t\tevents.result = () => result;\n\t\t}\n\t\treturn events;\n\t};\n\tnativeStreamFunctions.add(dispatch);\n\treturn dispatch;\n}\n\n/** Routes physical observations to the source writer. It owns no receipt store. */\nexport class InferenceCoordinator {\n\t#nativeCompactionOutput = false;\n\t#nativeBranchOutput = false;\n\t#nativePlannerOutput = false;\n\t#auxiliaryAttempts?: { remaining: number };\n\tprivate retryTurn = false;\n\tprivate requestViewBoundary?: CapturedRequestViewBoundary;\n\tprivate active = new Set<Promise<void>>();\n\tprivate capturedSink?: SinkUse;\n\tprivate captureReserved = false;\n\tprivate finishCapturePending?: () => void;\n\tprivate disposed = false;\n\tprivate disposal?: Promise<void>;\n\tprivate work = {\n\t\tpending: new Set<Promise<void>>(),\n\t\tresponsesMessageIds: new Map<string, number>(),\n\t\tresponsesIdentity: randomUUID(),\n\t\tsinks: new WeakMap<BoundRequestSink, SinkUse>(),\n\t\tmainOutputs: new WeakMap<AssistantMessage, NativeRequestOutputWriter>(),\n\t\tcompactionSettlements: new WeakMap<InferenceSettlement, NativeCompactionOutputBinding>(),\n\t\tcompactionCompletions: new WeakMap<Promise<AssistantMessage>, NativeCompactionOutputBinding>(),\n\t\tbranchSettlements: new WeakMap<InferenceSettlement, NativeBranchOutputBinding>(),\n\t\tbranchCompletions: new WeakMap<Promise<AssistantMessage>, NativeBranchOutputBinding>(),\n\t\tplannerSettlements: new WeakMap<InferenceSettlement, NativePlannerOutputBinding>(),\n\t\tplannerCompletions: new WeakMap<Promise<AssistantMessage>, NativePlannerOutputBinding>(),\n\t\tlisteners: new Set<() => void>(),\n\t\tadmissionOpen: true,\n\t\tcancellation: new AbortController(),\n\t\tbudget: undefined as RequestTokenBudget | undefined,\n\t\tbudgetMode: undefined as RequestTokenBudgetOptions[\"mode\"] | undefined,\n\t\tproviderRecoveryPolicy: undefined as (() => ProviderRecoveryPolicy) | undefined,\n\t};\n\n\tsetProviderRecoveryPolicy(policy: () => ProviderRecoveryPolicy): void {\n\t\tthis.work.providerRecoveryPolicy = policy;\n\t}\n\n\tget hasPending(): boolean {\n\t\treturn this.work.pending.size > 0;\n\t}\n\tget pendingCount(): number {\n\t\treturn this.work.pending.size;\n\t}\n\n\tonActivityChange(listener: () => void): () => void {\n\t\tthis.work.listeners.add(listener);\n\t\treturn () => this.work.listeners.delete(listener);\n\t}\n\n\tprivate notifyActivity(): void {\n\t\t// Observers can wake an existing owner, but cannot own request settlement.\n\t\tfor (const listener of this.work.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener();\n\t\t\t} catch {\n\t\t\t\t/* Notification is not execution. */\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Consume only this owner's real returned object. Labels and replacement messages remain unassociated. */\n\tappendMainOutput(message: AssistantMessage, owner: object): Promise<string | undefined> | undefined {\n\t\tconst write = this.work.mainOutputs.get(message);\n\t\tthis.work.mainOutputs.delete(message);\n\t\treturn write?.(owner, message);\n\t}\n\n\t/** Opt this native invocation into output association; ordinary captures do not inherit that authority. */\n\t[captureNativeCompactionRequests](): InferenceCoordinator {\n\t\tconst captured = InferenceCoordinator.prototype.capture.call(this);\n\t\tcaptured.#nativeCompactionOutput = true;\n\t\tcaptured.#auxiliaryAttempts ??= { remaining: 4 };\n\t\treturn captured;\n\t}\n\n\t[captureNativeBranchRequests](sink: BoundRequestSink): InferenceCoordinator {\n\t\tconst captured = InferenceCoordinator.prototype.capture.call(this, sink);\n\t\tcaptured.#nativeBranchOutput = true;\n\t\tcaptured.#auxiliaryAttempts ??= { remaining: 2 };\n\t\treturn captured;\n\t}\n\n\ttakeBranchOutput(completion: Promise<AssistantMessage>): NativeBranchRequestOutputWriter | undefined {\n\t\tconst binding = this.work.branchCompletions.get(completion);\n\t\tthis.work.branchCompletions.delete(completion);\n\t\tif (!binding || !this.#nativeBranchOutput || binding.owner !== this) return undefined;\n\t\treturn binding.write;\n\t}\n\n\t[captureNativePlannerRequests](sink: BoundRequestSink): InferenceCoordinator {\n\t\tconst captured = InferenceCoordinator.prototype.capture.call(this, sink);\n\t\tcaptured.#nativePlannerOutput = true;\n\t\tcaptured.#auxiliaryAttempts ??= { remaining: 2 };\n\t\treturn captured;\n\t}\n\n\t[captureNativeReviewerRequests](): InferenceCoordinator {\n\t\tconst captured = InferenceCoordinator.prototype.capture.call(this);\n\t\tcaptured.#auxiliaryAttempts ??= { remaining: 2 };\n\t\treturn captured;\n\t}\n\n\ttakePlannerOutput(completion: Promise<AssistantMessage>): NativePlannerRequestOutputWriter | undefined {\n\t\tconst binding = this.work.plannerCompletions.get(completion);\n\t\tthis.work.plannerCompletions.delete(completion);\n\t\tif (!binding || !this.#nativePlannerOutput || binding.owner !== this) return undefined;\n\t\treturn binding.write;\n\t}\n\n\t/** Only the original completion promise and captured source can supply a projected-output link. */\n\ttakeCompactionOutput(completion: Promise<AssistantMessage>): NativeCompactionOutputBinding | undefined {\n\t\tconst binding = this.work.compactionCompletions.get(completion);\n\t\tthis.work.compactionCompletions.delete(completion);\n\t\treturn binding?.sink === this.capturedSink?.sink ? binding : undefined;\n\t}\n\n\t/** Owner teardown stops new sends, but never suppresses an admitted request's settlement. */\n\tstopAdmission(): void {\n\t\tthis.work.admissionOpen = false;\n\t\tthis.work.cancellation.abort();\n\t\tthis.notifyActivity();\n\t}\n\n\tasync waitForIdle(): Promise<void> {\n\t\twhile (this.work.pending.size > 0) await Promise.all([...this.work.pending]);\n\t}\n\n\tprepareTurnRetry(): void {\n\t\tthis.retryTurn = true;\n\t}\n\tclearTurnRetry(): void {\n\t\tthis.retryTurn = false;\n\t}\n\n\tconstructor(\n\t\tprivate readonly bindSink: () => BoundRequestSink,\n\t\tprivate readonly owner: () => Omit<RequestOwnerRef, \"sessionId\"> = () => ({}),\n\t\trequestTokenBudget?: RequestTokenBudgetOptions,\n\t) {\n\t\tif (requestTokenBudget) {\n\t\t\tthis.work.budget = new RequestTokenBudget(requestTokenBudget);\n\t\t\tthis.work.budgetMode = requestTokenBudget.mode;\n\t\t}\n\t}\n\n\t/** Copy the configured policy, not this owner's learned request observations. */\n\tgetRequestTokenBudgetOptions(): RequestTokenBudgetOptions | undefined {\n\t\treturn this.work.budget?.getOptions();\n\t}\n\n\tprivate assertAdmission(): void {\n\t\tif (this.disposed || !this.work.admissionOpen) throw new Error(\"Inference owner is closing\");\n\t}\n\n\tprivate sinkUse(sink: BoundRequestSink): SinkUse {\n\t\tlet binding = this.work.sinks.get(sink);\n\t\tif (!binding) {\n\t\t\tbinding = { sink, activeUsers: 0, captures: 0 };\n\t\t\tthis.work.sinks.set(sink, binding);\n\t\t}\n\t\treturn binding;\n\t}\n\n\tprivate releaseCapture(): void {\n\t\tif (this.captureReserved && this.capturedSink) {\n\t\t\tthis.captureReserved = false;\n\t\t\tthis.capturedSink.captures--;\n\t\t}\n\t}\n\n\t/** Capture an auxiliary operation's subject before asynchronous auth or UI work. */\n\tcapture(sink?: BoundRequestSink): InferenceCoordinator {\n\t\tthis.assertAdmission();\n\t\tconst owner = Object.freeze({ ...this.owner() });\n\t\tconst binding = this.sinkUse(sink ?? this.bindSink());\n\t\tbinding.sink.retain();\n\t\tbinding.release = undefined;\n\t\tbinding.captures++;\n\t\tconst captured = new InferenceCoordinator(\n\t\t\t() => binding.sink,\n\t\t\t() => owner,\n\t\t);\n\t\tcaptured.work = this.work;\n\t\t// Nested captures share the invocation's allowance, not its native output authority.\n\t\tcaptured.#auxiliaryAttempts = this.#auxiliaryAttempts;\n\t\tcaptured.capturedSink = binding;\n\t\tcaptured.captureReserved = true;\n\t\tlet release!: () => void;\n\t\tconst pending = new Promise<void>((resolve) => {\n\t\t\trelease = resolve;\n\t\t});\n\t\tthis.work.pending.add(pending);\n\t\tcaptured.finishCapturePending = () => {\n\t\t\tthis.work.pending.delete(pending);\n\t\t\tcaptured.finishCapturePending = undefined;\n\t\t\trelease();\n\t\t\tthis.notifyActivity();\n\t\t};\n\t\tthis.notifyActivity();\n\t\treturn captured;\n\t}\n\n\t/** Explicit Root-owned epoch boundary, on this same captured MAIN source only. */\n\tbindRequestViewBoundary(\n\t\tmessages: readonly AgentMessage[],\n\t\tcommit: RequestViewCommit,\n\t\tvalidate?: RequestViewValidate,\n\t\tfixedPrepare?: RequestViewFixedPrepare,\n\t): void {\n\t\tthis.assertAdmission();\n\t\tif (!this.capturedSink) throw new Error(\"Request view boundary requires a captured inference owner\");\n\t\tif (this.requestViewBoundary) throw new Error(\"Request view boundary is already bound\");\n\t\tthis.requestViewBoundary = captureRequestViewBoundary(messages, commit, validate, fixedPrepare);\n\t}\n\n\t/** Read through an explicit capture, never by recapturing the mutable current session. */\n\tasync readHistory<T>(read: (view: SessionHistoryReadView) => Promise<T>): Promise<T> {\n\t\tthis.assertAdmission();\n\t\tconst sink = this.capturedSink?.sink;\n\t\tif (!sink?.readHistory) throw new Error(\"Captured canonical history is unavailable\");\n\t\tlet finish!: () => void;\n\t\tconst pending = new Promise<void>((resolve) => {\n\t\t\tfinish = resolve;\n\t\t});\n\t\tthis.work.pending.add(pending);\n\t\tthis.active.add(pending);\n\t\tthis.notifyActivity();\n\t\ttry {\n\t\t\treturn await sink.readHistory(read);\n\t\t} finally {\n\t\t\tthis.active.delete(pending);\n\t\t\tthis.work.pending.delete(pending);\n\t\t\tfinish();\n\t\t\tthis.notifyActivity();\n\t\t}\n\t}\n\n\t/** Release an unused capture, or join this capture's admitted requests. */\n\tdispose(): Promise<void> {\n\t\tthis.disposed = true;\n\t\tthis.disposal ??= (async () => {\n\t\t\tthis.releaseCapture();\n\t\t\ttry {\n\t\t\t\tawait Promise.all([...this.active]);\n\t\t\t\tif (this.capturedSink) await this.finishSink(this.capturedSink, [], false, []);\n\t\t\t} finally {\n\t\t\t\tthis.finishCapturePending?.();\n\t\t\t}\n\t\t})();\n\t\treturn this.disposal;\n\t}\n\n\tprivate bindOperation(model: Model<Api>, request: InferenceRequestOptions, operationId: string): BoundOperation {\n\t\tthis.assertAdmission();\n\t\tconst owner = Object.freeze({ ...this.owner() });\n\t\tconst metadata = Object.freeze({\n\t\t\toperationId,\n\t\t\tparentOperationId: request.parentOperationId,\n\t\t\tsemanticEdgeId: request.semanticEdgeId,\n\t\t\tpurpose: request.purpose,\n\t\t\tpurposeDetail: request.purposeDetail,\n\t\t\tmodelContract: modelContract(model),\n\t\t});\n\t\treturn { binding: this.sinkUse(this.bindSink()), owner, metadata };\n\t}\n\n\tprivate async finishSink(\n\t\tbinding: SinkUse,\n\t\twrites: readonly Promise<void>[],\n\t\tactiveUser: boolean,\n\t\tfailures: unknown[],\n\t): Promise<void> {\n\t\tconst results = await Promise.allSettled([binding.sink.source, ...writes]);\n\t\tfor (const result of results) {\n\t\t\tif (result.status === \"rejected\") failures.push(result.reason);\n\t\t}\n\t\tif (activeUser) binding.activeUsers--;\n\t\ttry {\n\t\t\tif (binding.activeUsers === 0 && binding.captures === 0) {\n\t\t\t\tbinding.release ??= binding.sink.release();\n\t\t\t\tawait binding.release;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t\tconst distinct = [...new Set(failures)];\n\t\tif (distinct.length === 1) throw distinct[0];\n\t\tif (distinct.length > 1) throw new AggregateError(distinct, \"Inference request or source cleanup failed\");\n\t}\n\n\t/** Hold one logical operation through settled sends and recovery delays. */\n\tprivate retainWork(binding: SinkUse): (failures?: unknown[]) => Promise<void> {\n\t\tthis.assertAdmission();\n\t\tbinding.sink.retain();\n\t\tbinding.release = undefined;\n\t\tbinding.captures++;\n\t\tlet finish!: () => void;\n\t\tconst pending = new Promise<void>((resolve) => {\n\t\t\tfinish = resolve;\n\t\t});\n\t\tthis.work.pending.add(pending);\n\t\tthis.active.add(pending);\n\t\tthis.notifyActivity();\n\t\tlet release: Promise<void> | undefined;\n\t\treturn (failures = []) => {\n\t\t\trelease ??= (async () => {\n\t\t\t\tbinding.captures--;\n\t\t\t\ttry {\n\t\t\t\t\tawait this.finishSink(binding, [], false, failures);\n\t\t\t\t} finally {\n\t\t\t\t\tthis.active.delete(pending);\n\t\t\t\t\tthis.work.pending.delete(pending);\n\t\t\t\t\tfinish();\n\t\t\t\t\tthis.notifyActivity();\n\t\t\t\t}\n\t\t\t})();\n\t\t\treturn release;\n\t\t};\n\t}\n\n\tprivate providerRecoveryWait(): (message: AssistantMessage, signal?: AbortSignal) => Promise<boolean> {\n\t\tlet nextDelayMs: number | undefined;\n\t\treturn async (message, callerSignal) => {\n\t\t\tconst policy = this.work.providerRecoveryPolicy?.();\n\t\t\tif (!policy?.enabled || !isTransientProviderFailure(message)) return false;\n\t\t\tthis.assertAdmission();\n\t\t\tconst signal = callerSignal\n\t\t\t\t? AbortSignal.any([callerSignal, this.work.cancellation.signal])\n\t\t\t\t: this.work.cancellation.signal;\n\t\t\tsignal.throwIfAborted();\n\t\t\tconst delayMs = Math.min(nextDelayMs ?? policy.baseDelayMs, policy.maxRetryDelayMs);\n\t\t\tawait delay(delayMs, undefined, { signal });\n\t\t\tsignal.throwIfAborted();\n\t\t\tthis.assertAdmission();\n\t\t\tnextDelayMs = Math.min(delayMs * 2, policy.maxRetryDelayMs);\n\t\t\treturn this.work.providerRecoveryPolicy?.().enabled === true;\n\t\t};\n\t}\n\n\tprivate async execute(\n\t\toperation: BoundOperation,\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t\tsend: StreamFn,\n\t\tbindMainOutput = false,\n\t): Promise<InferenceRun> {\n\t\tconst outputSource = bindMainOutput ? captureNativeRequestOutputSource(operation.binding.sink) : undefined;\n\t\tconst part =\n\t\t\toperation.metadata.purpose === \"summary\"\n\t\t\t\t? operation.metadata.purposeDetail === \"compaction\"\n\t\t\t\t\t? \"history\"\n\t\t\t\t\t: operation.metadata.purposeDetail === \"compaction-turn-prefix\"\n\t\t\t\t\t\t? \"turn-prefix\"\n\t\t\t\t\t\t: undefined\n\t\t\t\t: undefined;\n\t\tconst compactionSource =\n\t\t\tthis.#nativeCompactionOutput && part && this.capturedSink?.sink === operation.binding.sink\n\t\t\t\t? captureNativeCompactionOutputSource(operation.binding.sink)\n\t\t\t\t: undefined;\n\t\tconst branchSource =\n\t\t\tthis.#nativeBranchOutput &&\n\t\t\toperation.metadata.purpose === \"summary\" &&\n\t\t\toperation.metadata.purposeDetail === \"branch\" &&\n\t\t\tthis.capturedSink?.sink === operation.binding.sink\n\t\t\t\t? captureNativeBranchOutputSource(operation.binding.sink)\n\t\t\t\t: undefined;\n\t\tconst plannerSource =\n\t\t\tthis.#nativePlannerOutput &&\n\t\t\toperation.metadata.purpose === \"refine\" &&\n\t\t\toperation.metadata.purposeDetail === \"plan\" &&\n\t\t\tthis.capturedSink?.sink === operation.binding.sink\n\t\t\t\t? captureNativePlannerOutputSource(operation.binding.sink)\n\t\t\t\t: undefined;\n\t\tlet outputSourceRef: SourceSnapshotRef | undefined;\n\t\tlet release!: (completion?: PromiseLike<void>) => void;\n\t\tconst pending = new Promise<void>((resolve) => {\n\t\t\trelease = resolve;\n\t\t});\n\t\tthis.work.pending.add(pending);\n\t\tthis.active.add(pending);\n\t\tthis.notifyActivity();\n\t\tconst finish = () => {\n\t\t\tthis.work.pending.delete(pending);\n\t\t\tthis.active.delete(pending);\n\t\t\tthis.notifyActivity();\n\t\t};\n\t\tconst admittedAttempts: Array<{ attemptId: string; contextEpoch?: ContextEpochEntryRef }> = [];\n\t\tconst inputCountAttempts = new Map<string, NativeRequestMetadata>();\n\t\tconst receiptWrites: Promise<void>[] = [];\n\t\tlet activeUser = false;\n\t\tlet localSimulation = false;\n\t\tlet budgetFailure: unknown;\n\t\tconst settle = async (result: Promise<AssistantMessage>): Promise<InferenceSettlement> => {\n\t\t\tconst failures: unknown[] = [];\n\t\t\tlet message: AssistantMessage | undefined;\n\t\t\ttry {\n\t\t\t\tmessage = await result;\n\t\t\t} catch (error) {\n\t\t\t\tfailures.push(error);\n\t\t\t}\n\t\t\tif (budgetFailure !== undefined && !failures.includes(budgetFailure)) failures.push(budgetFailure);\n\t\t\tawait this.finishSink(operation.binding, receiptWrites, activeUser, failures);\n\t\t\tif (message && outputSource && outputSourceRef) {\n\t\t\t\tconst write = outputSource({\n\t\t\t\t\toperationId: operation.metadata.operationId,\n\t\t\t\t\tattemptIds: admittedAttempts.map(({ attemptId }) => attemptId),\n\t\t\t\t\tsource: outputSourceRef,\n\t\t\t\t});\n\t\t\t\tif (write) this.work.mainOutputs.set(message, write);\n\t\t\t}\n\t\t\tconst settlement: InferenceSettlement = {\n\t\t\t\tmessage: message!,\n\t\t\t\toperationId: operation.metadata.operationId,\n\t\t\t\tattemptIds: admittedAttempts.map(({ attemptId }) => attemptId),\n\t\t\t\tphysicalCoverage: admittedAttempts.length\n\t\t\t\t\t? \"reported\"\n\t\t\t\t\t: localSimulation\n\t\t\t\t\t\t? \"local-simulation\"\n\t\t\t\t\t\t: \"unestablished\",\n\t\t\t};\n\t\t\tif (part && compactionSource && outputSourceRef) {\n\t\t\t\tconst output = compactionSource({\n\t\t\t\t\toperationId: settlement.operationId,\n\t\t\t\t\tattemptIds: settlement.attemptIds,\n\t\t\t\t\tsource: outputSourceRef,\n\t\t\t\t});\n\t\t\t\tif (output)\n\t\t\t\t\tthis.work.compactionSettlements.set(settlement, {\n\t\t\t\t\t\tsink: operation.binding.sink,\n\t\t\t\t\t\toutput: { ...output, part },\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (branchSource && outputSourceRef) {\n\t\t\t\tconst write = branchSource({\n\t\t\t\t\toperationId: settlement.operationId,\n\t\t\t\t\tattemptIds: settlement.attemptIds,\n\t\t\t\t\tsource: outputSourceRef,\n\t\t\t\t});\n\t\t\t\tif (write) this.work.branchSettlements.set(settlement, { owner: this, write });\n\t\t\t}\n\t\t\tif (plannerSource && outputSourceRef) {\n\t\t\t\tconst write = plannerSource({\n\t\t\t\t\toperationId: settlement.operationId,\n\t\t\t\t\tattemptIds: settlement.attemptIds,\n\t\t\t\t\tsource: outputSourceRef,\n\t\t\t\t});\n\t\t\t\tif (write) this.work.plannerSettlements.set(settlement, { owner: this, write });\n\t\t\t}\n\t\t\treturn settlement;\n\t\t};\n\t\ttry {\n\t\t\tthis.assertAdmission();\n\t\t\toperation.binding.sink.retain();\n\t\t\toperation.binding.release = undefined;\n\t\t\toperation.binding.activeUsers++;\n\t\t\tactiveUser = true;\n\t\t\tthis.releaseCapture();\n\t\t\tthis.finishCapturePending?.();\n\t\t\t// Capture the opted-in budgeted invocation before source/auth waits. Callbacks and signals stay live handles.\n\t\t\tif (this.work.budget || (this.requestViewBoundary && operation.metadata.purpose === \"main\")) {\n\t\t\t\tmodel = structuredClone(model);\n\t\t\t\t// Agent tool objects also carry live executors. Snapshot only the native Tool definition.\n\t\t\t\tcontext = structuredClone({\n\t\t\t\t\t...context,\n\t\t\t\t\t...(context.tools\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttools: context.tools.map(({ name, description, parameters }) => ({\n\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\tparameters,\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t});\n\t\t\t\toptions = options\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t\theaders: options.headers ? { ...options.headers } : undefined,\n\t\t\t\t\t\t\tthinkingBudgets: options.thinkingBudgets ? { ...options.thinkingBudgets } : undefined,\n\t\t\t\t\t\t\tmetadata: options.metadata ? structuredClone(options.metadata) : undefined,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined;\n\t\t\t}\n\t\t\tconst source = Object.freeze({ ...(await operation.binding.sink.source) });\n\t\t\toutputSourceRef = source;\n\t\t\tconst metadata: NativeRequestMetadata = {\n\t\t\t\t...operation.metadata,\n\t\t\t\tsource,\n\t\t\t\towner: Object.freeze({ ...operation.owner, sessionId: source.sessionId }),\n\t\t\t};\n\t\t\tif (send !== streamSimple && !nativeStreamFunctions.has(send)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Native inference cannot admit a custom or proxy StreamFn with unestablished physical-attempt coverage. Use the SDK's instrumented built-in API route instead.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tassertBuiltInAttemptSupport(model.api);\n\t\t\tif (!this.work.admissionOpen) throw new Error(\"Inference owner is closing\");\n\t\t\tconst parentBudget = this.work.budget;\n\t\t\tconst boundary = operation.metadata.purpose === \"main\" ? this.requestViewBoundary : undefined;\n\t\t\tconst budget = boundary ? parentBudget?.capture() : parentBudget;\n\t\t\tlet measuredForAdmission = false;\n\t\t\tlet countingInput = false;\n\t\t\tlet countedInput: { request: ProviderRequestRepresentation; tokens: number } | undefined;\n\t\t\tconst measure = (request: ProviderRequestRepresentation) => {\n\t\t\t\tconst same =\n\t\t\t\t\tcountedInput &&\n\t\t\t\t\t!request.retainedPrefix &&\n\t\t\t\t\tcountedInput.request.api === request.api &&\n\t\t\t\t\tcountedInput.request.provider === request.provider &&\n\t\t\t\t\tcountedInput.request.url === request.url &&\n\t\t\t\t\tcountedInput.request.body === request.body;\n\t\t\t\treturn budget?.measure(\n\t\t\t\t\trequest,\n\t\t\t\t\tsame\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tinputTokens: countedInput!.tokens,\n\t\t\t\t\t\t\t\tmethod: \"openai-responses-input-count\",\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t);\n\t\t\t};\n\t\t\tconst finalizeMeasurement = async (\n\t\t\t\trequest: ProviderRequestRepresentation,\n\t\t\t\tcountInput?: ProviderInputTokenCounter,\n\t\t\t\tpreparedAssessment?: RequestTokenAssessment,\n\t\t\t) => {\n\t\t\t\tlet assessment = countedInput ? measure(request) : (preparedAssessment ?? measure(request));\n\t\t\t\tconst estimated = assessment?.estimatedInputTokens;\n\t\t\t\tconst available = assessment?.availableInputTokens;\n\t\t\t\tif (\n\t\t\t\t\tcountInput &&\n\t\t\t\t\tassessment?.counter === \"openai-o200k-base-estimate\" &&\n\t\t\t\t\tassessment.status !== \"unknown\" &&\n\t\t\t\t\testimated !== null &&\n\t\t\t\t\testimated !== undefined &&\n\t\t\t\t\tavailable !== null &&\n\t\t\t\t\tavailable !== undefined &&\n\t\t\t\t\tavailable > 0 &&\n\t\t\t\t\testimated >= available * 0.9 &&\n\t\t\t\t\testimated <= available * 1.1\n\t\t\t\t) {\n\t\t\t\t\tthis.assertAdmission();\n\t\t\t\t\toptions?.signal?.throwIfAborted();\n\t\t\t\t\tthis.work.cancellation.signal.throwIfAborted();\n\t\t\t\t\tcountingInput = true;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst tokens = await countInput(request);\n\t\t\t\t\t\tcountedInput = { request: Object.freeze({ ...request }), tokens };\n\t\t\t\t\t\tassessment = measure(request);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tcountingInput = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn assessment;\n\t\t\t};\n\t\t\tconst measureRequest: ProviderAttemptObserver[\"measureRequest\"] =\n\t\t\t\tbudget || boundary?.validate\n\t\t\t\t\t? (representation) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst assessment = measure(representation);\n\t\t\t\t\t\t\t\tboundary?.validate?.(representation, assessment);\n\t\t\t\t\t\t\t\tif (budget && assessment) budget.assert(assessment);\n\t\t\t\t\t\t\t\tmeasuredForAdmission = true;\n\t\t\t\t\t\t\t\treturn assessment;\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tbudgetFailure = error;\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined;\n\t\t\tconst requiredPublic = Boolean(boundary?.pendingPublicMessageGroups?.length);\n\t\t\tconst requiredEpoch = boundary?.requiresEpoch === true;\n\t\t\tconst canSelect =\n\t\t\t\t(budget || boundary?.fixedPrepare || requiredPublic || requiredEpoch) &&\n\t\t\t\tboundary &&\n\t\t\t\tmatchesRequestView(boundary, source, context);\n\t\t\tif (requiredPublic && (!canSelect || boundary?.fixedPrepare))\n\t\t\t\tthrow new Error(\"Tool continuation requires a selectable native public request boundary\");\n\t\t\tconst responsesMessageIds =\n\t\t\t\tcanSelect &&\n\t\t\t\t!boundary.fixedPrepare &&\n\t\t\t\t(model.api === \"openai-responses\" || model.api === \"openai-codex-responses\")\n\t\t\t\t\t? boundary.providerMessageIndices.map((index) => {\n\t\t\t\t\t\t\tconst unit = boundary.units[index];\n\t\t\t\t\t\t\tconst key = JSON.stringify([\n\t\t\t\t\t\t\t\tboundary.source.sessionId,\n\t\t\t\t\t\t\t\tboundary.source.sessionFile,\n\t\t\t\t\t\t\t\tunit.id,\n\t\t\t\t\t\t\t\tunit.sourceRevision,\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\tlet id = this.work.responsesMessageIds.get(key);\n\t\t\t\t\t\t\tif (id === undefined) {\n\t\t\t\t\t\t\t\tid = this.work.responsesMessageIds.size;\n\t\t\t\t\t\t\t\tthis.work.responsesMessageIds.set(key, id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn id;\n\t\t\t\t\t\t})\n\t\t\t\t\t: undefined;\n\t\t\tlet publicAccepted = false;\n\t\t\tlet selectedContextEpoch: ContextEpochEntryRef | undefined;\n\t\t\tconst attempts: ProviderAttemptObserver = {\n\t\t\t\t...(responsesMessageIds ? { responsesMessageIds } : {}),\n\t\t\t\t...(requiredPublic\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tpendingPublicMessageGroups: boundary!.providerPendingPublicMessageGroups!.map((group) => [\n\t\t\t\t\t\t\t\t...group,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\t...(measureRequest ? { measureRequest } : {}),\n\t\t\t\t...(budget || canSelect\n\t\t\t\t\t? ({\n\t\t\t\t\t\t\tprepareRequest: async (representation, projection, countInput) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tselectedContextEpoch = undefined;\n\t\t\t\t\t\t\t\t\tpublicAccepted = false;\n\t\t\t\t\t\t\t\t\tif (JSON.parse(representation.body!).model !== model.id) return;\n\t\t\t\t\t\t\t\t\tif (!canSelect) {\n\t\t\t\t\t\t\t\t\t\tconst assessment = await finalizeMeasurement(representation, countInput);\n\t\t\t\t\t\t\t\t\t\tif (budget && assessment) budget.assert(assessment);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// An unmapped native body must pass the existing final boundary\n\t\t\t\t\t\t\t\t\t// validator before any provider call, including an input count.\n\t\t\t\t\t\t\t\t\tif (!projection) return;\n\t\t\t\t\t\t\t\t\tif (boundary!.fixedPrepare) {\n\t\t\t\t\t\t\t\t\t\tconst assessment = await finalizeMeasurement(representation, countInput);\n\t\t\t\t\t\t\t\t\t\tif (budget && assessment) budget.assert(assessment);\n\t\t\t\t\t\t\t\t\t\tconst accepted = await prepareFixedRequestView(\n\t\t\t\t\t\t\t\t\t\t\tboundary!,\n\t\t\t\t\t\t\t\t\t\t\trepresentation,\n\t\t\t\t\t\t\t\t\t\t\tprojection,\n\t\t\t\t\t\t\t\t\t\t\tassessment,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tif (accepted) selectedContextEpoch = Object.freeze({ ...accepted });\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn await selectRequestView(\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t...boundary!,\n\t\t\t\t\t\t\t\t\t\t\t...(responsesMessageIds ? { responseItemIdentity: this.work.responsesIdentity } : {}),\n\t\t\t\t\t\t\t\t\t\t\tcommit: async (candidate) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst accepted = await boundary!.commit(candidate);\n\t\t\t\t\t\t\t\t\t\t\t\tif (accepted) selectedContextEpoch = Object.freeze({ ...accepted });\n\t\t\t\t\t\t\t\t\t\t\t\tpublicAccepted = Boolean(\n\t\t\t\t\t\t\t\t\t\t\t\t\taccepted &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcandidate.publicMessages &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcandidate.projection.publicWindow &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!candidate.projection.pendingPublicMessageGroups?.length,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\treturn accepted || undefined;\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\trepresentation,\n\t\t\t\t\t\t\t\t\t\tprojection,\n\t\t\t\t\t\t\t\t\t\tbudget,\n\t\t\t\t\t\t\t\t\t\tthis.work.budgetMode === \"enforce\",\n\t\t\t\t\t\t\t\t\t\t(request, assessment) => finalizeMeasurement(request, countInput, assessment),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tbudgetFailure = error;\n\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} satisfies Pick<ProviderAttemptObserver, \"prepareRequest\">)\n\t\t\t\t\t: {}),\n\t\t\t\tadmit: async (descriptor) => {\n\t\t\t\t\tconst inputCount = descriptor.kind === \"input-count\";\n\t\t\t\t\tif (inputCount && !countingInput) throw new Error(\"Input count requires its owned prepared request\");\n\t\t\t\t\toptions?.signal?.throwIfAborted();\n\t\t\t\t\tthis.work.cancellation.signal.throwIfAborted();\n\t\t\t\t\tif (!inputCount && requiredEpoch && !selectedContextEpoch)\n\t\t\t\t\t\tthrow new Error(\"Context transition requires an acknowledged native epoch\");\n\t\t\t\t\tif (!inputCount && requiredPublic && !publicAccepted)\n\t\t\t\t\t\tthrow new Error(\"Unaccepted tool continuation cannot enter native transport\");\n\t\t\t\t\tif (!this.work.admissionOpen) throw new Error(\"Inference owner is closing\");\n\t\t\t\t\t// An adapter without a serializer meter must not bypass an enforced budget.\n\t\t\t\t\tif (!inputCount && measureRequest && !descriptor.requestBudget && (budget || !measuredForAdmission)) {\n\t\t\t\t\t\tconst assessment = invokeRequestMeasurement(attempts, {\n\t\t\t\t\t\t\tapi: descriptor.api,\n\t\t\t\t\t\t\tprovider: descriptor.provider,\n\t\t\t\t\t\t\turl: \"\",\n\t\t\t\t\t\t\tbody: undefined,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (assessment) descriptor = { ...descriptor, requestBudget: assessment };\n\t\t\t\t\t}\n\t\t\t\t\tmeasuredForAdmission = false;\n\t\t\t\t\tif (this.#auxiliaryAttempts) {\n\t\t\t\t\t\tif (this.#auxiliaryAttempts.remaining === 0) {\n\t\t\t\t\t\t\tbudgetFailure ??= new Error(\"Native auxiliary operation attempt limit exhausted\");\n\t\t\t\t\t\t\tthrow budgetFailure;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Reserve synchronously before persistence; failures and cancellation do not refund it.\n\t\t\t\t\t\tthis.#auxiliaryAttempts.remaining--;\n\t\t\t\t\t}\n\t\t\t\t\tconst attemptId = randomUUID();\n\t\t\t\t\tconst contextEpoch =\n\t\t\t\t\t\t!inputCount && selectedContextEpoch ? Object.freeze({ ...selectedContextEpoch }) : undefined;\n\t\t\t\t\tconst attemptMetadata: NativeRequestMetadata = inputCount\n\t\t\t\t\t\t? { ...metadata, purpose: \"native-control\", purposeDetail: \"input-token-count\" }\n\t\t\t\t\t\t: metadata;\n\t\t\t\t\tconst write = operation.binding.sink.persist({\n\t\t\t\t\t\t...attemptMetadata,\n\t\t\t\t\t\t...(contextEpoch ? { contextEpoch } : {}),\n\t\t\t\t\t\ttype: \"attempt_admitted\",\n\t\t\t\t\t\tattemptId,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\tdescriptor,\n\t\t\t\t\t});\n\t\t\t\t\treceiptWrites.push(write);\n\t\t\t\t\tawait write;\n\t\t\t\t\tif (inputCount) inputCountAttempts.set(attemptId, attemptMetadata);\n\t\t\t\t\telse admittedAttempts.push({ attemptId, contextEpoch });\n\t\t\t\t\treturn attemptId;\n\t\t\t\t},\n\t\t\t\tsettle: async (receipt) => {\n\t\t\t\t\tconst contextEpoch = admittedAttempts.find(\n\t\t\t\t\t\t(attempt) => attempt.attemptId === receipt.attemptId,\n\t\t\t\t\t)?.contextEpoch;\n\t\t\t\t\tconst inputCountMetadata = inputCountAttempts.get(receipt.attemptId);\n\t\t\t\t\tconst write = operation.binding.sink.persist({\n\t\t\t\t\t\t...(inputCountMetadata ?? metadata),\n\t\t\t\t\t\t...(contextEpoch ? { contextEpoch } : {}),\n\t\t\t\t\t\ttype: \"attempt_settled\",\n\t\t\t\t\t\tattemptId: receipt.attemptId,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\treceipt,\n\t\t\t\t\t});\n\t\t\t\t\treceiptWrites.push(write);\n\t\t\t\t\tawait write;\n\t\t\t\t\tif (!inputCountMetadata) parentBudget?.observe(receipt);\n\t\t\t\t},\n\t\t\t};\n\t\t\tconst signal = options?.signal\n\t\t\t\t? AbortSignal.any([options.signal, this.work.cancellation.signal])\n\t\t\t\t: this.work.cancellation.signal;\n\t\t\tconst events = await send(model, context, { ...options, signal, attempts, requireProviderAttempts: true });\n\t\t\tlocalSimulation = isLocalFauxStream(events);\n\t\t\tconst settled = settle(events.result());\n\t\t\tevents.result = async () => (await settled).message;\n\t\t\t// Idle tracking observes rejection; callers still receive it through settled/result().\n\t\t\trelease(settled.then(finish, finish));\n\t\t\treturn { events, settled };\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\tawait settle(Promise.reject(error));\n\t\t\t} finally {\n\t\t\t\tfinish();\n\t\t\t\trelease();\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync start(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t\trequest: InferenceRequestOptions,\n\t): Promise<InferenceRun> {\n\t\tconst semanticEdgeId = request.semanticEdgeId ?? options?.headers?.[MODEL_REQUEST_ID_HEADER];\n\t\tconst operationId = request.operationId ?? semanticEdgeId ?? randomUUID();\n\t\treturn this.execute(\n\t\t\tthis.bindOperation(model, { ...request, semanticEdgeId }, operationId),\n\t\t\tmodel,\n\t\t\tcontext,\n\t\t\toptions,\n\t\t\tstreamSimple,\n\t\t);\n\t}\n\n\tprivate async completeWithProviderRecovery(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t\trequest: InferenceRequestOptions,\n\t): Promise<InferenceSettlement> {\n\t\t// Retry the same request, not a caller's later mutable inputs. Keep callbacks/signals live.\n\t\tmodel = structuredClone(model);\n\t\tcontext = structuredClone({\n\t\t\t...context,\n\t\t\t...(context.tools\n\t\t\t\t? { tools: context.tools.map(({ name, description, parameters }) => ({ name, description, parameters })) }\n\t\t\t\t: {}),\n\t\t});\n\t\toptions = options\n\t\t\t? {\n\t\t\t\t\t...options,\n\t\t\t\t\theaders: options.headers ? { ...options.headers } : undefined,\n\t\t\t\t\tthinkingBudgets: options.thinkingBudgets ? { ...options.thinkingBudgets } : undefined,\n\t\t\t\t\tmetadata: options.metadata ? structuredClone(options.metadata) : undefined,\n\t\t\t\t}\n\t\t\t: undefined;\n\t\tconst semanticEdgeId = request.semanticEdgeId ?? options?.headers?.[MODEL_REQUEST_ID_HEADER];\n\t\tconst operationId = request.operationId ?? semanticEdgeId ?? randomUUID();\n\t\tconst operation = this.bindOperation(model, { ...request, semanticEdgeId }, operationId);\n\t\tconst release = this.retainWork(operation.binding);\n\t\tconst recover = this.providerRecoveryWait();\n\t\tlet failure: unknown;\n\t\ttry {\n\t\t\twhile (true) {\n\t\t\t\tconst settlement = await (await this.execute(operation, model, context, options, streamSimple)).settled;\n\t\t\t\t// Rejected execution/settlement, including local allowance exhaustion, never reaches recovery.\n\t\t\t\tif (!(await recover(settlement.message, options?.signal))) return settlement;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tfailure = error;\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tawait release(failure === undefined ? [] : [failure]);\n\t\t}\n\t}\n\n\tcomplete(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t\trequest: InferenceRequestOptions,\n\t): Promise<AssistantMessage> {\n\t\tlet completion!: Promise<AssistantMessage>;\n\t\tcompletion = (async () => {\n\t\t\tconst settlement = this.work.providerRecoveryPolicy?.().enabled\n\t\t\t\t? await this.completeWithProviderRecovery(model, context, options, request)\n\t\t\t\t: await (await this.start(model, context, options, request)).settled;\n\t\t\tconst binding = this.work.compactionSettlements.get(settlement);\n\t\t\tthis.work.compactionSettlements.delete(settlement);\n\t\t\tif (binding) this.work.compactionCompletions.set(completion, binding);\n\t\t\tconst branchBinding = this.work.branchSettlements.get(settlement);\n\t\t\tthis.work.branchSettlements.delete(settlement);\n\t\t\tif (branchBinding) this.work.branchCompletions.set(completion, branchBinding);\n\t\t\tconst plannerBinding = this.work.plannerSettlements.get(settlement);\n\t\t\tthis.work.plannerSettlements.delete(settlement);\n\t\t\tif (plannerBinding) this.work.plannerCompletions.set(completion, plannerBinding);\n\t\t\treturn settlement.message;\n\t\t})();\n\t\treturn completion;\n\t}\n\n\tbindAuxiliaryStream(streamFn: StreamFn, request: InferenceRequestOptions): DisposableInferenceStream {\n\t\tconst captured = this.capture();\n\t\tconst release = captured.retainWork(captured.capturedSink!);\n\t\tconst recover = captured.providerRecoveryWait();\n\t\tconst stream = captured.bindStream(streamFn, request);\n\t\tlet disposal: Promise<void> | undefined;\n\t\treturn Object.assign(stream, {\n\t\t\trecoverProviderFailure: async (message: AssistantMessage, signal?: AbortSignal) => {\n\t\t\t\tif (!(await recover(message, signal))) return false;\n\t\t\t\tcaptured.prepareTurnRetry();\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tdispose: () => {\n\t\t\t\tdisposal ??= (async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait release();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tawait captured.dispose();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t\treturn disposal;\n\t\t\t},\n\t\t});\n\t}\n\n\tbindStream(streamFn: StreamFn, request: InferenceRequestOptions): AgentOwnedStreamFn {\n\t\tconst unwrapped = unwrapSemanticEdgeStreamFn(streamFn) as BoundStreamFn;\n\t\tconst inner = unwrapped[REQUEST_STREAM_BINDING]?.inner ?? unwrapped;\n\t\t// One Agent stream is serial. Keep only its latest binding for semantic retries.\n\t\t// A side question or child gets its own closure, not the parent's source binding.\n\t\tlet previous: BoundOperation | undefined;\n\t\tlet previousBody: string | undefined;\n\t\tconst wrapped: BoundStreamFn = async (model, context, options, streamContext) => {\n\t\t\tlet captured: InferenceCoordinator | undefined;\n\t\t\tif (streamContext !== undefined) {\n\t\t\t\tif (\n\t\t\t\t\t!(streamContext instanceof InferenceCoordinator) ||\n\t\t\t\t\tstreamContext.work !== this.work ||\n\t\t\t\t\t!streamContext.capturedSink\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(\"Native stream context is not a capture of this inference owner\");\n\t\t\t\tcaptured = streamContext;\n\t\t\t}\n\t\t\tconst executor = captured ?? this;\n\t\t\tconst semanticEdgeId = request.semanticEdgeId ?? options?.headers?.[MODEL_REQUEST_ID_HEADER];\n\t\t\t// Reuse the existing semantic body identity if its best-effort recorder is unavailable.\n\t\t\tconst body = semanticEdgeId ? undefined : hashTurnBody(model, context, options);\n\t\t\tconst retryId =\n\t\t\t\tthis.retryTurn && body !== undefined && body === previousBody ? previous?.metadata.operationId : undefined;\n\t\t\tthis.retryTurn = false;\n\t\t\tconst operationId = request.operationId ?? semanticEdgeId ?? retryId ?? randomUUID();\n\t\t\tpreviousBody = body;\n\t\t\tif (captured || previous?.metadata.operationId !== operationId) {\n\t\t\t\t// A semantic retry can reuse its operation ID, but compilation owns this exact source frontier.\n\t\t\t\tprevious = executor.bindOperation(model, { ...request, semanticEdgeId }, operationId);\n\t\t\t}\n\t\t\treturn (\n\t\t\t\tawait executor.execute(\n\t\t\t\t\tprevious,\n\t\t\t\t\tmodel,\n\t\t\t\t\tcontext,\n\t\t\t\t\toptions,\n\t\t\t\t\tinner,\n\t\t\t\t\tcaptured !== undefined && request.purpose === \"main\",\n\t\t\t\t)\n\t\t\t).events;\n\t\t};\n\t\twrapped[REQUEST_STREAM_BINDING] = { coordinator: this, inner };\n\t\treturn wrapped;\n\t}\n}\n\n/** Standalone helper embedding stays optional; native session callers always supply requests. */\nexport function completeInference(\n\trequests: InferenceCoordinator | undefined,\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions: SimpleStreamOptions | undefined,\n\trequest: InferenceRequestOptions,\n): Promise<AssistantMessage> {\n\treturn requests ? requests.complete(model, context, options, request) : completeSimple(model, context, options);\n}\n\nexport type DisposableInferenceStream = StreamFn & {\n\tdispose(): Promise<void>;\n\trecoverProviderFailure?(message: AssistantMessage, signal?: AbortSignal): Promise<boolean>;\n};\n\n/** Side questions keep the subject's writer, but get their own operation and purpose. */\nexport function bindAuxiliaryInferenceStream(\n\tstreamFn: StreamFn,\n\trequest: InferenceRequestOptions,\n): DisposableInferenceStream {\n\tconst inner = unwrapSemanticEdgeStreamFn(streamFn) as BoundStreamFn;\n\tconst binding = inner[REQUEST_STREAM_BINDING];\n\tif (binding) return binding.coordinator.bindAuxiliaryStream(binding.inner, request);\n\tconst stream: StreamFn = (model, context, options) => inner(model, context, options);\n\treturn Object.assign(stream, { dispose: async () => {} });\n}\n"]}
1
+ {"version":3,"file":"inference-coordinator.js","sourceRoot":"","sources":["../../src/core/inference-coordinator.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { setTimeout as delay } from \"node:timers/promises\";\nimport type { AgentMessage, AgentOwnedStreamFn, StreamFn } from \"@ponythewhite/base-context-agent\";\nimport {\n\ttype Api,\n\ttype AssistantMessage,\n\tassertBuiltInAttemptSupport,\n\ttype Context,\n\tcompleteSimple,\n\tinvokeRequestMeasurement,\n\tisLocalFauxStream,\n\tisTransientProviderFailure,\n\ttype Model,\n\ttype ProviderAttemptObserver,\n\ttype ProviderInputTokenCounter,\n\ttype ProviderRequestRepresentation,\n\ttype RequestTokenAssessment,\n\tRequestTokenBudget,\n\ttype RequestTokenBudgetOptions,\n\ttype SimpleStreamOptions,\n\tstreamSimple,\n} from \"@ponythewhite/base-context-ai\";\nimport type { AuthSourceToken } from \"./auth-storage.js\";\nimport type {\n\tBoundRequestSink,\n\tContextEpochEntryRef,\n\tNativeBranchRequestOutputWriter,\n\tNativeCompactionRequestOutputAssociation,\n\tNativePlannerRequestOutputWriter,\n\tNativeRequestMetadata,\n\tNativeRequestOutputWriter,\n\tRequestOwnerRef,\n\tRequestPurpose,\n\tResolvedModelContract,\n\tSourceSnapshotRef,\n} from \"./request-events.js\";\nimport {\n\ttype CapturedRequestViewBoundary,\n\tcaptureRequestViewBoundary,\n\tmatchesRequestView,\n\tprepareFixedRequestView,\n\ttype RequestViewCommit,\n\ttype RequestViewFixedPrepare,\n\ttype RequestViewValidate,\n\tselectRequestView,\n} from \"./request-view-selection.js\";\nimport { hashTurnBody, MODEL_REQUEST_ID_HEADER, unwrapSemanticEdgeStreamFn } from \"./semantic-edges.js\";\nimport type { SessionHistoryReadView } from \"./session-history-index.js\";\nimport {\n\tcaptureNativeBranchOutputSource,\n\tcaptureNativeCompactionOutputSource,\n\tcaptureNativePlannerOutputSource,\n\tcaptureNativeRequestOutputSource,\n} from \"./session-manager.js\";\n\nexport interface InferenceRequestOptions {\n\treadonly purpose: RequestPurpose;\n\treadonly purposeDetail?: string;\n\treadonly operationId?: string;\n\treadonly parentOperationId?: string;\n\treadonly semanticEdgeId?: string;\n}\n\nexport interface InferenceSettlement {\n\treadonly message: AssistantMessage;\n\treadonly operationId: string;\n\treadonly attemptIds: readonly string[];\n\t/** Reporting is not a guarantee about an opaque adapter's hidden retries. */\n\treadonly physicalCoverage: \"reported\" | \"unestablished\" | \"local-simulation\";\n}\n\n/** Private completion identity carries this actual source, never descriptive sink labels. */\nexport interface NativeCompactionOutputBinding {\n\treadonly sink: BoundRequestSink;\n\treadonly output: NativeCompactionRequestOutputAssociation;\n}\n\ninterface NativeBranchOutputBinding {\n\treadonly owner: InferenceCoordinator;\n\treadonly write: NativeBranchRequestOutputWriter;\n}\n\ninterface NativePlannerOutputBinding {\n\treadonly owner: InferenceCoordinator;\n\treadonly write: NativePlannerRequestOutputWriter;\n}\n\nexport interface InferenceRun {\n\treadonly events: Awaited<ReturnType<StreamFn>>;\n\treadonly settled: Promise<InferenceSettlement>;\n}\n\nexport interface SessionRuntimeServices {\n\treadonly requests: InferenceCoordinator;\n}\n\ninterface ProviderRecoveryPolicy {\n\tenabled: boolean;\n\tbaseDelayMs: number;\n\tmaxRetryDelayMs: number;\n}\n\ninterface SinkUse {\n\treadonly sink: BoundRequestSink;\n\tactiveUsers: number;\n\tcaptures: number;\n\trelease?: Promise<void>;\n}\n\ninterface BoundOperation {\n\treadonly binding: SinkUse;\n\treadonly owner: Omit<RequestOwnerRef, \"sessionId\">;\n\treadonly metadata: Omit<NativeRequestMetadata, \"source\" | \"owner\" | \"contextEpoch\">;\n}\n\nconst REQUEST_STREAM_BINDING = Symbol(\"base-context.request-stream-binding\");\n/** Internal AgentSession built-in compaction entry, not a public inference option. */\nexport const captureNativeCompactionRequests = Symbol(\"base-context.native-compaction-requests\");\n/** Internal AgentSession built-in branch-summary invocation, never inherited by generic capture. */\nexport const captureNativeBranchRequests = Symbol(\"base-context.native-branch-requests\");\n/** Internal native AgentSession planner capture, never inherited by generic capture. */\nexport const captureNativePlannerRequests = Symbol(\"base-context.native-planner-requests\");\n/** Internal native AgentSession reviewer invocation. */\nexport const captureNativeReviewerRequests = Symbol(\"base-context.native-reviewer-requests\");\ninterface StreamBinding {\n\treadonly coordinator: InferenceCoordinator;\n\treadonly inner: StreamFn;\n}\ntype BoundStreamFn = AgentOwnedStreamFn & { [REQUEST_STREAM_BINDING]?: StreamBinding };\n\nfunction modelContract(model: Model<Api>): ResolvedModelContract {\n\treturn {\n\t\tapi: model.api,\n\t\tprovider: model.provider,\n\t\tmodel: model.id,\n\t\tprofile: { id: \"native-default\", status: \"unvalidated\" },\n\t\tpricing: {\n\t\t\tstatus: \"unvalidated\",\n\t\t\tcurrency: \"USD\",\n\t\t\tunit: \"million-tokens\",\n\t\t\tcatalogRates: {\n\t\t\t\tinput: model.cost.input,\n\t\t\t\toutput: model.cost.output,\n\t\t\t\tcacheRead: model.cost.cacheRead,\n\t\t\t\tcacheWrite: model.cost.cacheWrite,\n\t\t\t},\n\t\t},\n\t};\n}\n\nconst nativeStreamFunctions = new WeakSet<StreamFn>();\nconst nativeAuthSources = new WeakMap<AssistantMessage, AuthSourceToken>();\n\n/** Consume the credential source resolved for this exact native request. Never persisted or sent to providers. */\nexport function takeNativeInferenceAuthSource(message: AssistantMessage): AuthSourceToken | undefined {\n\tconst source = nativeAuthSources.get(message);\n\tnativeAuthSources.delete(message);\n\treturn source;\n}\n\n/** Internal SDK auth/options resolver; transport stays the known instrumented AI dispatcher. */\nexport function createNativeInferenceStream(\n\tresolveOptions: (\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t) => Promise<SimpleStreamOptions & { authSourceToken?: AuthSourceToken }>,\n): StreamFn {\n\tconst dispatch: StreamFn = async (model, context, options) => {\n\t\tconst { authSourceToken, ...resolved } = await resolveOptions(model, context, options);\n\t\tconst events = streamSimple(model, context, {\n\t\t\t...resolved,\n\t\t\tsignal: options?.signal,\n\t\t\tattempts: options?.attempts,\n\t\t\trequireProviderAttempts: true,\n\t\t});\n\t\tif (authSourceToken) {\n\t\t\tconst source = { ...authSourceToken };\n\t\t\tconst result = events.result().then((message) => {\n\t\t\t\tnativeAuthSources.set(message, source);\n\t\t\t\treturn message;\n\t\t\t});\n\t\t\tevents.result = () => result;\n\t\t}\n\t\treturn events;\n\t};\n\tnativeStreamFunctions.add(dispatch);\n\treturn dispatch;\n}\n\n/** Routes physical observations to the source writer. It owns no receipt store. */\nexport class InferenceCoordinator {\n\t#nativeCompactionOutput = false;\n\t#nativeBranchOutput = false;\n\t#nativePlannerOutput = false;\n\t#auxiliaryAttempts?: { remaining: number };\n\tprivate retryTurn = false;\n\tprivate requestViewBoundary?: CapturedRequestViewBoundary;\n\tprivate active = new Set<Promise<void>>();\n\tprivate capturedSink?: SinkUse;\n\tprivate captureReserved = false;\n\tprivate finishCapturePending?: () => void;\n\tprivate disposed = false;\n\tprivate disposal?: Promise<void>;\n\tprivate work = {\n\t\tpending: new Set<Promise<void>>(),\n\t\tresponsesMessageIds: new Map<string, number>(),\n\t\tresponsesIdentity: randomUUID(),\n\t\tsinks: new WeakMap<BoundRequestSink, SinkUse>(),\n\t\tmainOutputs: new WeakMap<AssistantMessage, NativeRequestOutputWriter>(),\n\t\tcompactionSettlements: new WeakMap<InferenceSettlement, NativeCompactionOutputBinding>(),\n\t\tcompactionCompletions: new WeakMap<Promise<AssistantMessage>, NativeCompactionOutputBinding>(),\n\t\tbranchSettlements: new WeakMap<InferenceSettlement, NativeBranchOutputBinding>(),\n\t\tbranchCompletions: new WeakMap<Promise<AssistantMessage>, NativeBranchOutputBinding>(),\n\t\tplannerSettlements: new WeakMap<InferenceSettlement, NativePlannerOutputBinding>(),\n\t\tplannerCompletions: new WeakMap<Promise<AssistantMessage>, NativePlannerOutputBinding>(),\n\t\tlisteners: new Set<() => void>(),\n\t\tadmissionOpen: true,\n\t\tcancellation: new AbortController(),\n\t\tbudget: undefined as RequestTokenBudget | undefined,\n\t\tbudgetMode: undefined as RequestTokenBudgetOptions[\"mode\"] | undefined,\n\t\tproviderRecoveryPolicy: undefined as (() => ProviderRecoveryPolicy) | undefined,\n\t};\n\n\tsetProviderRecoveryPolicy(policy: () => ProviderRecoveryPolicy): void {\n\t\tthis.work.providerRecoveryPolicy = policy;\n\t}\n\n\tget hasPending(): boolean {\n\t\treturn this.work.pending.size > 0;\n\t}\n\tget pendingCount(): number {\n\t\treturn this.work.pending.size;\n\t}\n\n\tonActivityChange(listener: () => void): () => void {\n\t\tthis.work.listeners.add(listener);\n\t\treturn () => this.work.listeners.delete(listener);\n\t}\n\n\tprivate notifyActivity(): void {\n\t\t// Observers can wake an existing owner, but cannot own request settlement.\n\t\tfor (const listener of this.work.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener();\n\t\t\t} catch {\n\t\t\t\t/* Notification is not execution. */\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Consume only this owner's real returned object. Labels and replacement messages remain unassociated. */\n\tappendMainOutput(message: AssistantMessage, owner: object): Promise<string | undefined> | undefined {\n\t\tconst write = this.work.mainOutputs.get(message);\n\t\tthis.work.mainOutputs.delete(message);\n\t\treturn write?.(owner, message);\n\t}\n\n\t/** Opt this native invocation into output association; ordinary captures do not inherit that authority. */\n\t[captureNativeCompactionRequests](): InferenceCoordinator {\n\t\tconst captured = InferenceCoordinator.prototype.capture.call(this);\n\t\tcaptured.#nativeCompactionOutput = true;\n\t\tcaptured.#auxiliaryAttempts ??= { remaining: 4 };\n\t\treturn captured;\n\t}\n\n\t[captureNativeBranchRequests](sink: BoundRequestSink): InferenceCoordinator {\n\t\tconst captured = InferenceCoordinator.prototype.capture.call(this, sink);\n\t\tcaptured.#nativeBranchOutput = true;\n\t\tcaptured.#auxiliaryAttempts ??= { remaining: 2 };\n\t\treturn captured;\n\t}\n\n\ttakeBranchOutput(completion: Promise<AssistantMessage>): NativeBranchRequestOutputWriter | undefined {\n\t\tconst binding = this.work.branchCompletions.get(completion);\n\t\tthis.work.branchCompletions.delete(completion);\n\t\tif (!binding || !this.#nativeBranchOutput || binding.owner !== this) return undefined;\n\t\treturn binding.write;\n\t}\n\n\t[captureNativePlannerRequests](sink: BoundRequestSink): InferenceCoordinator {\n\t\tconst captured = InferenceCoordinator.prototype.capture.call(this, sink);\n\t\tcaptured.#nativePlannerOutput = true;\n\t\tcaptured.#auxiliaryAttempts ??= { remaining: 2 };\n\t\treturn captured;\n\t}\n\n\t[captureNativeReviewerRequests](): InferenceCoordinator {\n\t\tconst captured = InferenceCoordinator.prototype.capture.call(this);\n\t\tcaptured.#auxiliaryAttempts ??= { remaining: 2 };\n\t\treturn captured;\n\t}\n\n\ttakePlannerOutput(completion: Promise<AssistantMessage>): NativePlannerRequestOutputWriter | undefined {\n\t\tconst binding = this.work.plannerCompletions.get(completion);\n\t\tthis.work.plannerCompletions.delete(completion);\n\t\tif (!binding || !this.#nativePlannerOutput || binding.owner !== this) return undefined;\n\t\treturn binding.write;\n\t}\n\n\t/** Only the original completion promise and captured source can supply a projected-output link. */\n\ttakeCompactionOutput(completion: Promise<AssistantMessage>): NativeCompactionOutputBinding | undefined {\n\t\tconst binding = this.work.compactionCompletions.get(completion);\n\t\tthis.work.compactionCompletions.delete(completion);\n\t\treturn binding?.sink === this.capturedSink?.sink ? binding : undefined;\n\t}\n\n\t/** Owner teardown stops new sends, but never suppresses an admitted request's settlement. */\n\tstopAdmission(): void {\n\t\tthis.work.admissionOpen = false;\n\t\tthis.work.cancellation.abort();\n\t\tthis.notifyActivity();\n\t}\n\n\tasync waitForIdle(): Promise<void> {\n\t\twhile (this.work.pending.size > 0) await Promise.all([...this.work.pending]);\n\t}\n\n\tprepareTurnRetry(): void {\n\t\tthis.retryTurn = true;\n\t}\n\tclearTurnRetry(): void {\n\t\tthis.retryTurn = false;\n\t}\n\n\tconstructor(\n\t\tprivate readonly bindSink: () => BoundRequestSink,\n\t\tprivate readonly owner: () => Omit<RequestOwnerRef, \"sessionId\"> = () => ({}),\n\t\trequestTokenBudget?: RequestTokenBudgetOptions,\n\t) {\n\t\tif (requestTokenBudget) {\n\t\t\tthis.work.budget = new RequestTokenBudget(requestTokenBudget);\n\t\t\tthis.work.budgetMode = requestTokenBudget.mode;\n\t\t}\n\t}\n\n\t/** Copy the configured policy, not this owner's learned request observations. */\n\tgetRequestTokenBudgetOptions(): RequestTokenBudgetOptions | undefined {\n\t\treturn this.work.budget?.getOptions();\n\t}\n\n\tprivate assertAdmission(): void {\n\t\tif (this.disposed || !this.work.admissionOpen) throw new Error(\"Inference owner is closing\");\n\t}\n\n\tprivate sinkUse(sink: BoundRequestSink): SinkUse {\n\t\tlet binding = this.work.sinks.get(sink);\n\t\tif (!binding) {\n\t\t\tbinding = { sink, activeUsers: 0, captures: 0 };\n\t\t\tthis.work.sinks.set(sink, binding);\n\t\t}\n\t\treturn binding;\n\t}\n\n\tprivate releaseCapture(): void {\n\t\tif (this.captureReserved && this.capturedSink) {\n\t\t\tthis.captureReserved = false;\n\t\t\tthis.capturedSink.captures--;\n\t\t}\n\t}\n\n\t/** Capture an auxiliary operation's subject before asynchronous auth or UI work. */\n\tcapture(sink?: BoundRequestSink): InferenceCoordinator {\n\t\tthis.assertAdmission();\n\t\tconst owner = Object.freeze({ ...this.owner() });\n\t\tconst binding = this.sinkUse(sink ?? this.bindSink());\n\t\tbinding.sink.retain();\n\t\tbinding.release = undefined;\n\t\tbinding.captures++;\n\t\tconst captured = new InferenceCoordinator(\n\t\t\t() => binding.sink,\n\t\t\t() => owner,\n\t\t);\n\t\tcaptured.work = this.work;\n\t\t// Nested captures share the invocation's allowance, not its native output authority.\n\t\tcaptured.#auxiliaryAttempts = this.#auxiliaryAttempts;\n\t\tcaptured.capturedSink = binding;\n\t\tcaptured.captureReserved = true;\n\t\tlet release!: () => void;\n\t\tconst pending = new Promise<void>((resolve) => {\n\t\t\trelease = resolve;\n\t\t});\n\t\tthis.work.pending.add(pending);\n\t\tcaptured.finishCapturePending = () => {\n\t\t\tthis.work.pending.delete(pending);\n\t\t\tcaptured.finishCapturePending = undefined;\n\t\t\trelease();\n\t\t\tthis.notifyActivity();\n\t\t};\n\t\tthis.notifyActivity();\n\t\treturn captured;\n\t}\n\n\t/** Explicit Root-owned epoch boundary, on this same captured MAIN source only. */\n\tbindRequestViewBoundary(\n\t\tmessages: readonly AgentMessage[],\n\t\tcommit: RequestViewCommit,\n\t\tvalidate?: RequestViewValidate,\n\t\tfixedPrepare?: RequestViewFixedPrepare,\n\t\tisSourceCurrent?: () => boolean,\n\t): void {\n\t\tthis.assertAdmission();\n\t\tif (!this.capturedSink) throw new Error(\"Request view boundary requires a captured inference owner\");\n\t\tif (this.requestViewBoundary) throw new Error(\"Request view boundary is already bound\");\n\t\tthis.requestViewBoundary = captureRequestViewBoundary(messages, commit, validate, fixedPrepare, isSourceCurrent);\n\t}\n\n\t/** Read through an explicit capture, never by recapturing the mutable current session. */\n\tasync readHistory<T>(read: (view: SessionHistoryReadView) => Promise<T>): Promise<T> {\n\t\tthis.assertAdmission();\n\t\tconst sink = this.capturedSink?.sink;\n\t\tif (!sink?.readHistory) throw new Error(\"Captured canonical history is unavailable\");\n\t\tlet finish!: () => void;\n\t\tconst pending = new Promise<void>((resolve) => {\n\t\t\tfinish = resolve;\n\t\t});\n\t\tthis.work.pending.add(pending);\n\t\tthis.active.add(pending);\n\t\tthis.notifyActivity();\n\t\ttry {\n\t\t\treturn await sink.readHistory(read);\n\t\t} finally {\n\t\t\tthis.active.delete(pending);\n\t\t\tthis.work.pending.delete(pending);\n\t\t\tfinish();\n\t\t\tthis.notifyActivity();\n\t\t}\n\t}\n\n\t/** Release an unused capture, or join this capture's admitted requests. */\n\tdispose(): Promise<void> {\n\t\tthis.disposed = true;\n\t\tthis.disposal ??= (async () => {\n\t\t\tthis.releaseCapture();\n\t\t\ttry {\n\t\t\t\tawait Promise.all([...this.active]);\n\t\t\t\tif (this.capturedSink) await this.finishSink(this.capturedSink, [], false, []);\n\t\t\t} finally {\n\t\t\t\tthis.finishCapturePending?.();\n\t\t\t}\n\t\t})();\n\t\treturn this.disposal;\n\t}\n\n\tprivate bindOperation(model: Model<Api>, request: InferenceRequestOptions, operationId: string): BoundOperation {\n\t\tthis.assertAdmission();\n\t\tconst owner = Object.freeze({ ...this.owner() });\n\t\tconst metadata = Object.freeze({\n\t\t\toperationId,\n\t\t\tparentOperationId: request.parentOperationId,\n\t\t\tsemanticEdgeId: request.semanticEdgeId,\n\t\t\tpurpose: request.purpose,\n\t\t\tpurposeDetail: request.purposeDetail,\n\t\t\tmodelContract: modelContract(model),\n\t\t});\n\t\treturn { binding: this.sinkUse(this.bindSink()), owner, metadata };\n\t}\n\n\tprivate async finishSink(\n\t\tbinding: SinkUse,\n\t\twrites: readonly Promise<void>[],\n\t\tactiveUser: boolean,\n\t\tfailures: unknown[],\n\t): Promise<void> {\n\t\tconst results = await Promise.allSettled([binding.sink.source, ...writes]);\n\t\tfor (const result of results) {\n\t\t\tif (result.status === \"rejected\") failures.push(result.reason);\n\t\t}\n\t\tif (activeUser) binding.activeUsers--;\n\t\ttry {\n\t\t\tif (binding.activeUsers === 0 && binding.captures === 0) {\n\t\t\t\tbinding.release ??= binding.sink.release();\n\t\t\t\tawait binding.release;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t\tconst distinct = [...new Set(failures)];\n\t\tif (distinct.length === 1) throw distinct[0];\n\t\tif (distinct.length > 1) throw new AggregateError(distinct, \"Inference request or source cleanup failed\");\n\t}\n\n\t/** Hold one logical operation through settled sends and recovery delays. */\n\tprivate retainWork(binding: SinkUse): (failures?: unknown[]) => Promise<void> {\n\t\tthis.assertAdmission();\n\t\tbinding.sink.retain();\n\t\tbinding.release = undefined;\n\t\tbinding.captures++;\n\t\tlet finish!: () => void;\n\t\tconst pending = new Promise<void>((resolve) => {\n\t\t\tfinish = resolve;\n\t\t});\n\t\tthis.work.pending.add(pending);\n\t\tthis.active.add(pending);\n\t\tthis.notifyActivity();\n\t\tlet release: Promise<void> | undefined;\n\t\treturn (failures = []) => {\n\t\t\trelease ??= (async () => {\n\t\t\t\tbinding.captures--;\n\t\t\t\ttry {\n\t\t\t\t\tawait this.finishSink(binding, [], false, failures);\n\t\t\t\t} finally {\n\t\t\t\t\tthis.active.delete(pending);\n\t\t\t\t\tthis.work.pending.delete(pending);\n\t\t\t\t\tfinish();\n\t\t\t\t\tthis.notifyActivity();\n\t\t\t\t}\n\t\t\t})();\n\t\t\treturn release;\n\t\t};\n\t}\n\n\tprivate providerRecoveryWait(): (message: AssistantMessage, signal?: AbortSignal) => Promise<boolean> {\n\t\tlet nextDelayMs: number | undefined;\n\t\treturn async (message, callerSignal) => {\n\t\t\tconst policy = this.work.providerRecoveryPolicy?.();\n\t\t\tif (!policy?.enabled || !isTransientProviderFailure(message)) return false;\n\t\t\tthis.assertAdmission();\n\t\t\tconst signal = callerSignal\n\t\t\t\t? AbortSignal.any([callerSignal, this.work.cancellation.signal])\n\t\t\t\t: this.work.cancellation.signal;\n\t\t\tsignal.throwIfAborted();\n\t\t\tconst delayMs = Math.min(nextDelayMs ?? policy.baseDelayMs, policy.maxRetryDelayMs);\n\t\t\tawait delay(delayMs, undefined, { signal });\n\t\t\tsignal.throwIfAborted();\n\t\t\tthis.assertAdmission();\n\t\t\tnextDelayMs = Math.min(delayMs * 2, policy.maxRetryDelayMs);\n\t\t\treturn this.work.providerRecoveryPolicy?.().enabled === true;\n\t\t};\n\t}\n\n\tprivate async execute(\n\t\toperation: BoundOperation,\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t\tsend: StreamFn,\n\t\tbindMainOutput = false,\n\t): Promise<InferenceRun> {\n\t\tconst outputSource = bindMainOutput ? captureNativeRequestOutputSource(operation.binding.sink) : undefined;\n\t\tconst part =\n\t\t\toperation.metadata.purpose === \"summary\"\n\t\t\t\t? operation.metadata.purposeDetail === \"compaction\"\n\t\t\t\t\t? \"history\"\n\t\t\t\t\t: operation.metadata.purposeDetail === \"compaction-turn-prefix\"\n\t\t\t\t\t\t? \"turn-prefix\"\n\t\t\t\t\t\t: undefined\n\t\t\t\t: undefined;\n\t\tconst compactionSource =\n\t\t\tthis.#nativeCompactionOutput && part && this.capturedSink?.sink === operation.binding.sink\n\t\t\t\t? captureNativeCompactionOutputSource(operation.binding.sink)\n\t\t\t\t: undefined;\n\t\tconst branchSource =\n\t\t\tthis.#nativeBranchOutput &&\n\t\t\toperation.metadata.purpose === \"summary\" &&\n\t\t\toperation.metadata.purposeDetail === \"branch\" &&\n\t\t\tthis.capturedSink?.sink === operation.binding.sink\n\t\t\t\t? captureNativeBranchOutputSource(operation.binding.sink)\n\t\t\t\t: undefined;\n\t\tconst plannerSource =\n\t\t\tthis.#nativePlannerOutput &&\n\t\t\toperation.metadata.purpose === \"refine\" &&\n\t\t\toperation.metadata.purposeDetail === \"plan\" &&\n\t\t\tthis.capturedSink?.sink === operation.binding.sink\n\t\t\t\t? captureNativePlannerOutputSource(operation.binding.sink)\n\t\t\t\t: undefined;\n\t\tlet outputSourceRef: SourceSnapshotRef | undefined;\n\t\tlet release!: (completion?: PromiseLike<void>) => void;\n\t\tconst pending = new Promise<void>((resolve) => {\n\t\t\trelease = resolve;\n\t\t});\n\t\tthis.work.pending.add(pending);\n\t\tthis.active.add(pending);\n\t\tthis.notifyActivity();\n\t\tconst finish = () => {\n\t\t\tthis.work.pending.delete(pending);\n\t\t\tthis.active.delete(pending);\n\t\t\tthis.notifyActivity();\n\t\t};\n\t\tconst admittedAttempts: Array<{ attemptId: string; contextEpoch?: ContextEpochEntryRef }> = [];\n\t\tconst inputCountAttempts = new Map<string, NativeRequestMetadata>();\n\t\tconst receiptWrites: Promise<void>[] = [];\n\t\tlet activeUser = false;\n\t\tlet localSimulation = false;\n\t\tlet budgetFailure: unknown;\n\t\tconst settle = async (result: Promise<AssistantMessage>): Promise<InferenceSettlement> => {\n\t\t\tconst failures: unknown[] = [];\n\t\t\tlet message: AssistantMessage | undefined;\n\t\t\ttry {\n\t\t\t\tmessage = await result;\n\t\t\t} catch (error) {\n\t\t\t\tfailures.push(error);\n\t\t\t}\n\t\t\tif (budgetFailure !== undefined && !failures.includes(budgetFailure)) failures.push(budgetFailure);\n\t\t\tawait this.finishSink(operation.binding, receiptWrites, activeUser, failures);\n\t\t\tif (message && outputSource && outputSourceRef) {\n\t\t\t\tconst write = outputSource({\n\t\t\t\t\toperationId: operation.metadata.operationId,\n\t\t\t\t\tattemptIds: admittedAttempts.map(({ attemptId }) => attemptId),\n\t\t\t\t\tsource: outputSourceRef,\n\t\t\t\t});\n\t\t\t\tif (write) this.work.mainOutputs.set(message, write);\n\t\t\t}\n\t\t\tconst settlement: InferenceSettlement = {\n\t\t\t\tmessage: message!,\n\t\t\t\toperationId: operation.metadata.operationId,\n\t\t\t\tattemptIds: admittedAttempts.map(({ attemptId }) => attemptId),\n\t\t\t\tphysicalCoverage: admittedAttempts.length\n\t\t\t\t\t? \"reported\"\n\t\t\t\t\t: localSimulation\n\t\t\t\t\t\t? \"local-simulation\"\n\t\t\t\t\t\t: \"unestablished\",\n\t\t\t};\n\t\t\tif (part && compactionSource && outputSourceRef) {\n\t\t\t\tconst output = compactionSource({\n\t\t\t\t\toperationId: settlement.operationId,\n\t\t\t\t\tattemptIds: settlement.attemptIds,\n\t\t\t\t\tsource: outputSourceRef,\n\t\t\t\t});\n\t\t\t\tif (output)\n\t\t\t\t\tthis.work.compactionSettlements.set(settlement, {\n\t\t\t\t\t\tsink: operation.binding.sink,\n\t\t\t\t\t\toutput: { ...output, part },\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (branchSource && outputSourceRef) {\n\t\t\t\tconst write = branchSource({\n\t\t\t\t\toperationId: settlement.operationId,\n\t\t\t\t\tattemptIds: settlement.attemptIds,\n\t\t\t\t\tsource: outputSourceRef,\n\t\t\t\t});\n\t\t\t\tif (write) this.work.branchSettlements.set(settlement, { owner: this, write });\n\t\t\t}\n\t\t\tif (plannerSource && outputSourceRef) {\n\t\t\t\tconst write = plannerSource({\n\t\t\t\t\toperationId: settlement.operationId,\n\t\t\t\t\tattemptIds: settlement.attemptIds,\n\t\t\t\t\tsource: outputSourceRef,\n\t\t\t\t});\n\t\t\t\tif (write) this.work.plannerSettlements.set(settlement, { owner: this, write });\n\t\t\t}\n\t\t\treturn settlement;\n\t\t};\n\t\ttry {\n\t\t\tthis.assertAdmission();\n\t\t\toperation.binding.sink.retain();\n\t\t\toperation.binding.release = undefined;\n\t\t\toperation.binding.activeUsers++;\n\t\t\tactiveUser = true;\n\t\t\tthis.releaseCapture();\n\t\t\tthis.finishCapturePending?.();\n\t\t\t// Capture the opted-in budgeted invocation before source/auth waits. Callbacks and signals stay live handles.\n\t\t\tif (this.work.budget || (this.requestViewBoundary && operation.metadata.purpose === \"main\")) {\n\t\t\t\tmodel = structuredClone(model);\n\t\t\t\t// Agent tool objects also carry live executors. Snapshot only the native Tool definition.\n\t\t\t\tcontext = structuredClone({\n\t\t\t\t\t...context,\n\t\t\t\t\t...(context.tools\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttools: context.tools.map(({ name, description, parameters }) => ({\n\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\tparameters,\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t});\n\t\t\t\toptions = options\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t\theaders: options.headers ? { ...options.headers } : undefined,\n\t\t\t\t\t\t\tthinkingBudgets: options.thinkingBudgets ? { ...options.thinkingBudgets } : undefined,\n\t\t\t\t\t\t\tmetadata: options.metadata ? structuredClone(options.metadata) : undefined,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined;\n\t\t\t}\n\t\t\tconst source = Object.freeze({ ...(await operation.binding.sink.source) });\n\t\t\toutputSourceRef = source;\n\t\t\tconst metadata: NativeRequestMetadata = {\n\t\t\t\t...operation.metadata,\n\t\t\t\tsource,\n\t\t\t\towner: Object.freeze({ ...operation.owner, sessionId: source.sessionId }),\n\t\t\t};\n\t\t\tif (send !== streamSimple && !nativeStreamFunctions.has(send)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Native inference cannot admit a custom or proxy StreamFn with unestablished physical-attempt coverage. Use the SDK's instrumented built-in API route instead.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tassertBuiltInAttemptSupport(model.api);\n\t\t\tif (!this.work.admissionOpen) throw new Error(\"Inference owner is closing\");\n\t\t\tconst parentBudget = this.work.budget;\n\t\t\tconst boundary = operation.metadata.purpose === \"main\" ? this.requestViewBoundary : undefined;\n\t\t\tconst budget = boundary ? parentBudget?.capture() : parentBudget;\n\t\t\tlet measuredForAdmission = false;\n\t\t\tlet countingInput = false;\n\t\t\tlet countedInput: { request: ProviderRequestRepresentation; tokens: number } | undefined;\n\t\t\tconst measure = (request: ProviderRequestRepresentation) => {\n\t\t\t\tconst same =\n\t\t\t\t\tcountedInput &&\n\t\t\t\t\t!request.retainedPrefix &&\n\t\t\t\t\tcountedInput.request.api === request.api &&\n\t\t\t\t\tcountedInput.request.provider === request.provider &&\n\t\t\t\t\tcountedInput.request.url === request.url &&\n\t\t\t\t\tcountedInput.request.body === request.body;\n\t\t\t\treturn budget?.measure(\n\t\t\t\t\trequest,\n\t\t\t\t\tsame\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tinputTokens: countedInput!.tokens,\n\t\t\t\t\t\t\t\tmethod: \"openai-responses-input-count\",\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t);\n\t\t\t};\n\t\t\tconst finalizeMeasurement = async (\n\t\t\t\trequest: ProviderRequestRepresentation,\n\t\t\t\tcountInput?: ProviderInputTokenCounter,\n\t\t\t\tpreparedAssessment?: RequestTokenAssessment,\n\t\t\t) => {\n\t\t\t\tlet assessment = countedInput ? measure(request) : (preparedAssessment ?? measure(request));\n\t\t\t\tconst estimated = assessment?.estimatedInputTokens;\n\t\t\t\tconst available = assessment?.availableInputTokens;\n\t\t\t\tif (\n\t\t\t\t\tcountInput &&\n\t\t\t\t\tassessment?.counter === \"openai-o200k-base-estimate\" &&\n\t\t\t\t\tassessment.status !== \"unknown\" &&\n\t\t\t\t\testimated !== null &&\n\t\t\t\t\testimated !== undefined &&\n\t\t\t\t\tavailable !== null &&\n\t\t\t\t\tavailable !== undefined &&\n\t\t\t\t\tavailable > 0 &&\n\t\t\t\t\testimated >= available * 0.9 &&\n\t\t\t\t\testimated <= available * 1.1\n\t\t\t\t) {\n\t\t\t\t\tthis.assertAdmission();\n\t\t\t\t\toptions?.signal?.throwIfAborted();\n\t\t\t\t\tthis.work.cancellation.signal.throwIfAborted();\n\t\t\t\t\tcountingInput = true;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst tokens = await countInput(request);\n\t\t\t\t\t\tcountedInput = { request: Object.freeze({ ...request }), tokens };\n\t\t\t\t\t\tassessment = measure(request);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tcountingInput = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn assessment;\n\t\t\t};\n\t\t\tconst measureRequest: ProviderAttemptObserver[\"measureRequest\"] =\n\t\t\t\tbudget || boundary?.validate\n\t\t\t\t\t? (representation) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst assessment = measure(representation);\n\t\t\t\t\t\t\t\tboundary?.validate?.(representation, assessment);\n\t\t\t\t\t\t\t\tif (budget && assessment) budget.assert(assessment);\n\t\t\t\t\t\t\t\tmeasuredForAdmission = true;\n\t\t\t\t\t\t\t\treturn assessment;\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tbudgetFailure = error;\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined;\n\t\t\tconst requiredPublic = Boolean(boundary?.pendingPublicMessageGroups?.length);\n\t\t\tconst requiredEpoch = boundary?.requiresEpoch === true;\n\t\t\tconst canSelect =\n\t\t\t\t(budget || boundary?.fixedPrepare || requiredPublic || requiredEpoch) &&\n\t\t\t\tboundary &&\n\t\t\t\tmatchesRequestView(boundary, source, context);\n\t\t\tif (requiredPublic && (!canSelect || boundary?.fixedPrepare))\n\t\t\t\tthrow new Error(\"Tool continuation requires a selectable native public request boundary\");\n\t\t\tconst responsesMessageIds =\n\t\t\t\tcanSelect &&\n\t\t\t\t!boundary.fixedPrepare &&\n\t\t\t\t(model.api === \"openai-responses\" || model.api === \"openai-codex-responses\")\n\t\t\t\t\t? boundary.providerMessageIndices.map((index) => {\n\t\t\t\t\t\t\tconst unit = boundary.units[index];\n\t\t\t\t\t\t\tconst key = JSON.stringify([\n\t\t\t\t\t\t\t\tboundary.source.sessionId,\n\t\t\t\t\t\t\t\tboundary.source.sessionFile,\n\t\t\t\t\t\t\t\tunit.id,\n\t\t\t\t\t\t\t\tunit.sourceRevision,\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\tlet id = this.work.responsesMessageIds.get(key);\n\t\t\t\t\t\t\tif (id === undefined) {\n\t\t\t\t\t\t\t\tid = this.work.responsesMessageIds.size;\n\t\t\t\t\t\t\t\tthis.work.responsesMessageIds.set(key, id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn id;\n\t\t\t\t\t\t})\n\t\t\t\t\t: undefined;\n\t\t\tlet publicAccepted = false;\n\t\t\tlet selectedContextEpoch: ContextEpochEntryRef | undefined;\n\t\t\tconst attempts: ProviderAttemptObserver = {\n\t\t\t\t...(responsesMessageIds ? { responsesMessageIds } : {}),\n\t\t\t\t...(requiredPublic\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tpendingPublicMessageGroups: boundary!.providerPendingPublicMessageGroups!.map((group) => [\n\t\t\t\t\t\t\t\t...group,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\t...(measureRequest ? { measureRequest } : {}),\n\t\t\t\t...(budget || canSelect\n\t\t\t\t\t? ({\n\t\t\t\t\t\t\tprepareRequest: async (representation, projection, countInput) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tselectedContextEpoch = undefined;\n\t\t\t\t\t\t\t\t\tpublicAccepted = false;\n\t\t\t\t\t\t\t\t\tif (JSON.parse(representation.body!).model !== model.id) return;\n\t\t\t\t\t\t\t\t\tif (!canSelect) {\n\t\t\t\t\t\t\t\t\t\tconst assessment = await finalizeMeasurement(representation, countInput);\n\t\t\t\t\t\t\t\t\t\tif (budget && assessment) budget.assert(assessment);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// An unmapped native body must pass the existing final boundary\n\t\t\t\t\t\t\t\t\t// validator before any provider call, including an input count.\n\t\t\t\t\t\t\t\t\tif (!projection) return;\n\t\t\t\t\t\t\t\t\tif (boundary!.fixedPrepare) {\n\t\t\t\t\t\t\t\t\t\tconst assessment = await finalizeMeasurement(representation, countInput);\n\t\t\t\t\t\t\t\t\t\tif (budget && assessment) budget.assert(assessment);\n\t\t\t\t\t\t\t\t\t\tconst accepted = await prepareFixedRequestView(\n\t\t\t\t\t\t\t\t\t\t\tboundary!,\n\t\t\t\t\t\t\t\t\t\t\trepresentation,\n\t\t\t\t\t\t\t\t\t\t\tprojection,\n\t\t\t\t\t\t\t\t\t\t\tassessment,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tif (accepted) selectedContextEpoch = Object.freeze({ ...accepted });\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn await selectRequestView(\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t...boundary!,\n\t\t\t\t\t\t\t\t\t\t\t...(responsesMessageIds ? { responseItemIdentity: this.work.responsesIdentity } : {}),\n\t\t\t\t\t\t\t\t\t\t\tcommit: async (candidate) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst accepted = await boundary!.commit(candidate);\n\t\t\t\t\t\t\t\t\t\t\t\tif (accepted) selectedContextEpoch = Object.freeze({ ...accepted });\n\t\t\t\t\t\t\t\t\t\t\t\tpublicAccepted = Boolean(\n\t\t\t\t\t\t\t\t\t\t\t\t\taccepted &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcandidate.publicMessages &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcandidate.projection.publicWindow &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!candidate.projection.pendingPublicMessageGroups?.length,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\treturn accepted || undefined;\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\trepresentation,\n\t\t\t\t\t\t\t\t\t\tprojection,\n\t\t\t\t\t\t\t\t\t\tbudget,\n\t\t\t\t\t\t\t\t\t\tthis.work.budgetMode === \"enforce\",\n\t\t\t\t\t\t\t\t\t\t(request, assessment) => finalizeMeasurement(request, countInput, assessment),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tbudgetFailure = error;\n\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} satisfies Pick<ProviderAttemptObserver, \"prepareRequest\">)\n\t\t\t\t\t: {}),\n\t\t\t\tadmit: async (descriptor) => {\n\t\t\t\t\tconst inputCount = descriptor.kind === \"input-count\";\n\t\t\t\t\tif (inputCount && !countingInput) throw new Error(\"Input count requires its owned prepared request\");\n\t\t\t\t\toptions?.signal?.throwIfAborted();\n\t\t\t\t\tthis.work.cancellation.signal.throwIfAborted();\n\t\t\t\t\tif (!inputCount && requiredEpoch && !selectedContextEpoch)\n\t\t\t\t\t\tthrow new Error(\"Context transition requires an acknowledged native epoch\");\n\t\t\t\t\tif (!inputCount && requiredPublic && !publicAccepted)\n\t\t\t\t\t\tthrow new Error(\"Unaccepted tool continuation cannot enter native transport\");\n\t\t\t\t\tif (!this.work.admissionOpen) throw new Error(\"Inference owner is closing\");\n\t\t\t\t\t// An adapter without a serializer meter must not bypass an enforced budget.\n\t\t\t\t\tif (!inputCount && measureRequest && !descriptor.requestBudget && (budget || !measuredForAdmission)) {\n\t\t\t\t\t\tconst assessment = invokeRequestMeasurement(attempts, {\n\t\t\t\t\t\t\tapi: descriptor.api,\n\t\t\t\t\t\t\tprovider: descriptor.provider,\n\t\t\t\t\t\t\turl: \"\",\n\t\t\t\t\t\t\tbody: undefined,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (assessment) descriptor = { ...descriptor, requestBudget: assessment };\n\t\t\t\t\t}\n\t\t\t\t\tmeasuredForAdmission = false;\n\t\t\t\t\tif (this.#auxiliaryAttempts) {\n\t\t\t\t\t\tif (this.#auxiliaryAttempts.remaining === 0) {\n\t\t\t\t\t\t\tbudgetFailure ??= new Error(\"Native auxiliary operation attempt limit exhausted\");\n\t\t\t\t\t\t\tthrow budgetFailure;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Reserve synchronously before persistence; failures and cancellation do not refund it.\n\t\t\t\t\t\tthis.#auxiliaryAttempts.remaining--;\n\t\t\t\t\t}\n\t\t\t\t\tconst attemptId = randomUUID();\n\t\t\t\t\tconst contextEpoch =\n\t\t\t\t\t\t!inputCount && selectedContextEpoch ? Object.freeze({ ...selectedContextEpoch }) : undefined;\n\t\t\t\t\tconst attemptMetadata: NativeRequestMetadata = inputCount\n\t\t\t\t\t\t? { ...metadata, purpose: \"native-control\", purposeDetail: \"input-token-count\" }\n\t\t\t\t\t\t: metadata;\n\t\t\t\t\tconst write = operation.binding.sink.persist({\n\t\t\t\t\t\t...attemptMetadata,\n\t\t\t\t\t\t...(contextEpoch ? { contextEpoch } : {}),\n\t\t\t\t\t\ttype: \"attempt_admitted\",\n\t\t\t\t\t\tattemptId,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\tdescriptor,\n\t\t\t\t\t});\n\t\t\t\t\treceiptWrites.push(write);\n\t\t\t\t\tawait write;\n\t\t\t\t\tif (inputCount) inputCountAttempts.set(attemptId, attemptMetadata);\n\t\t\t\t\telse admittedAttempts.push({ attemptId, contextEpoch });\n\t\t\t\t\treturn attemptId;\n\t\t\t\t},\n\t\t\t\tsettle: async (receipt) => {\n\t\t\t\t\tconst contextEpoch = admittedAttempts.find(\n\t\t\t\t\t\t(attempt) => attempt.attemptId === receipt.attemptId,\n\t\t\t\t\t)?.contextEpoch;\n\t\t\t\t\tconst inputCountMetadata = inputCountAttempts.get(receipt.attemptId);\n\t\t\t\t\tconst write = operation.binding.sink.persist({\n\t\t\t\t\t\t...(inputCountMetadata ?? metadata),\n\t\t\t\t\t\t...(contextEpoch ? { contextEpoch } : {}),\n\t\t\t\t\t\ttype: \"attempt_settled\",\n\t\t\t\t\t\tattemptId: receipt.attemptId,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\treceipt,\n\t\t\t\t\t});\n\t\t\t\t\treceiptWrites.push(write);\n\t\t\t\t\tawait write;\n\t\t\t\t\tif (!inputCountMetadata) parentBudget?.observe(receipt);\n\t\t\t\t},\n\t\t\t};\n\t\t\tconst signal = options?.signal\n\t\t\t\t? AbortSignal.any([options.signal, this.work.cancellation.signal])\n\t\t\t\t: this.work.cancellation.signal;\n\t\t\tconst events = await send(model, context, { ...options, signal, attempts, requireProviderAttempts: true });\n\t\t\tlocalSimulation = isLocalFauxStream(events);\n\t\t\tconst settled = settle(events.result());\n\t\t\tevents.result = async () => (await settled).message;\n\t\t\t// Idle tracking observes rejection; callers still receive it through settled/result().\n\t\t\trelease(settled.then(finish, finish));\n\t\t\treturn { events, settled };\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\tawait settle(Promise.reject(error));\n\t\t\t} finally {\n\t\t\t\tfinish();\n\t\t\t\trelease();\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync start(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t\trequest: InferenceRequestOptions,\n\t): Promise<InferenceRun> {\n\t\tconst semanticEdgeId = request.semanticEdgeId ?? options?.headers?.[MODEL_REQUEST_ID_HEADER];\n\t\tconst operationId = request.operationId ?? semanticEdgeId ?? randomUUID();\n\t\treturn this.execute(\n\t\t\tthis.bindOperation(model, { ...request, semanticEdgeId }, operationId),\n\t\t\tmodel,\n\t\t\tcontext,\n\t\t\toptions,\n\t\t\tstreamSimple,\n\t\t);\n\t}\n\n\tprivate async completeWithProviderRecovery(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t\trequest: InferenceRequestOptions,\n\t): Promise<InferenceSettlement> {\n\t\t// Retry the same request, not a caller's later mutable inputs. Keep callbacks/signals live.\n\t\tmodel = structuredClone(model);\n\t\tcontext = structuredClone({\n\t\t\t...context,\n\t\t\t...(context.tools\n\t\t\t\t? { tools: context.tools.map(({ name, description, parameters }) => ({ name, description, parameters })) }\n\t\t\t\t: {}),\n\t\t});\n\t\toptions = options\n\t\t\t? {\n\t\t\t\t\t...options,\n\t\t\t\t\theaders: options.headers ? { ...options.headers } : undefined,\n\t\t\t\t\tthinkingBudgets: options.thinkingBudgets ? { ...options.thinkingBudgets } : undefined,\n\t\t\t\t\tmetadata: options.metadata ? structuredClone(options.metadata) : undefined,\n\t\t\t\t}\n\t\t\t: undefined;\n\t\tconst semanticEdgeId = request.semanticEdgeId ?? options?.headers?.[MODEL_REQUEST_ID_HEADER];\n\t\tconst operationId = request.operationId ?? semanticEdgeId ?? randomUUID();\n\t\tconst operation = this.bindOperation(model, { ...request, semanticEdgeId }, operationId);\n\t\tconst release = this.retainWork(operation.binding);\n\t\tconst recover = this.providerRecoveryWait();\n\t\tlet failure: unknown;\n\t\ttry {\n\t\t\twhile (true) {\n\t\t\t\tconst settlement = await (await this.execute(operation, model, context, options, streamSimple)).settled;\n\t\t\t\t// Rejected execution/settlement, including local allowance exhaustion, never reaches recovery.\n\t\t\t\tif (!(await recover(settlement.message, options?.signal))) return settlement;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tfailure = error;\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tawait release(failure === undefined ? [] : [failure]);\n\t\t}\n\t}\n\n\tcomplete(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions | undefined,\n\t\trequest: InferenceRequestOptions,\n\t): Promise<AssistantMessage> {\n\t\tlet completion!: Promise<AssistantMessage>;\n\t\tcompletion = (async () => {\n\t\t\tconst settlement = this.work.providerRecoveryPolicy?.().enabled\n\t\t\t\t? await this.completeWithProviderRecovery(model, context, options, request)\n\t\t\t\t: await (await this.start(model, context, options, request)).settled;\n\t\t\tconst binding = this.work.compactionSettlements.get(settlement);\n\t\t\tthis.work.compactionSettlements.delete(settlement);\n\t\t\tif (binding) this.work.compactionCompletions.set(completion, binding);\n\t\t\tconst branchBinding = this.work.branchSettlements.get(settlement);\n\t\t\tthis.work.branchSettlements.delete(settlement);\n\t\t\tif (branchBinding) this.work.branchCompletions.set(completion, branchBinding);\n\t\t\tconst plannerBinding = this.work.plannerSettlements.get(settlement);\n\t\t\tthis.work.plannerSettlements.delete(settlement);\n\t\t\tif (plannerBinding) this.work.plannerCompletions.set(completion, plannerBinding);\n\t\t\treturn settlement.message;\n\t\t})();\n\t\treturn completion;\n\t}\n\n\tbindAuxiliaryStream(streamFn: StreamFn, request: InferenceRequestOptions): DisposableInferenceStream {\n\t\tconst captured = this.capture();\n\t\tconst release = captured.retainWork(captured.capturedSink!);\n\t\tconst recover = captured.providerRecoveryWait();\n\t\tconst stream = captured.bindStream(streamFn, request);\n\t\tlet disposal: Promise<void> | undefined;\n\t\treturn Object.assign(stream, {\n\t\t\trecoverProviderFailure: async (message: AssistantMessage, signal?: AbortSignal) => {\n\t\t\t\tif (!(await recover(message, signal))) return false;\n\t\t\t\tcaptured.prepareTurnRetry();\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tdispose: () => {\n\t\t\t\tdisposal ??= (async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait release();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tawait captured.dispose();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t\treturn disposal;\n\t\t\t},\n\t\t});\n\t}\n\n\tbindStream(streamFn: StreamFn, request: InferenceRequestOptions): AgentOwnedStreamFn {\n\t\tconst unwrapped = unwrapSemanticEdgeStreamFn(streamFn) as BoundStreamFn;\n\t\tconst inner = unwrapped[REQUEST_STREAM_BINDING]?.inner ?? unwrapped;\n\t\t// One Agent stream is serial. Keep only its latest binding for semantic retries.\n\t\t// A side question or child gets its own closure, not the parent's source binding.\n\t\tlet previous: BoundOperation | undefined;\n\t\tlet previousBody: string | undefined;\n\t\tconst wrapped: BoundStreamFn = async (model, context, options, streamContext) => {\n\t\t\tlet captured: InferenceCoordinator | undefined;\n\t\t\tif (streamContext !== undefined) {\n\t\t\t\tif (\n\t\t\t\t\t!(streamContext instanceof InferenceCoordinator) ||\n\t\t\t\t\tstreamContext.work !== this.work ||\n\t\t\t\t\t!streamContext.capturedSink\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(\"Native stream context is not a capture of this inference owner\");\n\t\t\t\tcaptured = streamContext;\n\t\t\t}\n\t\t\tconst executor = captured ?? this;\n\t\t\tconst semanticEdgeId = request.semanticEdgeId ?? options?.headers?.[MODEL_REQUEST_ID_HEADER];\n\t\t\t// Reuse the existing semantic body identity if its best-effort recorder is unavailable.\n\t\t\tconst body = semanticEdgeId ? undefined : hashTurnBody(model, context, options);\n\t\t\tconst retryId =\n\t\t\t\tthis.retryTurn && body !== undefined && body === previousBody ? previous?.metadata.operationId : undefined;\n\t\t\tthis.retryTurn = false;\n\t\t\tconst operationId = request.operationId ?? semanticEdgeId ?? retryId ?? randomUUID();\n\t\t\tpreviousBody = body;\n\t\t\tif (captured || previous?.metadata.operationId !== operationId) {\n\t\t\t\t// A semantic retry can reuse its operation ID, but compilation owns this exact source frontier.\n\t\t\t\tprevious = executor.bindOperation(model, { ...request, semanticEdgeId }, operationId);\n\t\t\t}\n\t\t\treturn (\n\t\t\t\tawait executor.execute(\n\t\t\t\t\tprevious,\n\t\t\t\t\tmodel,\n\t\t\t\t\tcontext,\n\t\t\t\t\toptions,\n\t\t\t\t\tinner,\n\t\t\t\t\tcaptured !== undefined && request.purpose === \"main\",\n\t\t\t\t)\n\t\t\t).events;\n\t\t};\n\t\twrapped[REQUEST_STREAM_BINDING] = { coordinator: this, inner };\n\t\treturn wrapped;\n\t}\n}\n\n/** Standalone helper embedding stays optional; native session callers always supply requests. */\nexport function completeInference(\n\trequests: InferenceCoordinator | undefined,\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions: SimpleStreamOptions | undefined,\n\trequest: InferenceRequestOptions,\n): Promise<AssistantMessage> {\n\treturn requests ? requests.complete(model, context, options, request) : completeSimple(model, context, options);\n}\n\nexport type DisposableInferenceStream = StreamFn & {\n\tdispose(): Promise<void>;\n\trecoverProviderFailure?(message: AssistantMessage, signal?: AbortSignal): Promise<boolean>;\n};\n\n/** Side questions keep the subject's writer, but get their own operation and purpose. */\nexport function bindAuxiliaryInferenceStream(\n\tstreamFn: StreamFn,\n\trequest: InferenceRequestOptions,\n): DisposableInferenceStream {\n\tconst inner = unwrapSemanticEdgeStreamFn(streamFn) as BoundStreamFn;\n\tconst binding = inner[REQUEST_STREAM_BINDING];\n\tif (binding) return binding.coordinator.bindAuxiliaryStream(binding.inner, request);\n\tconst stream: StreamFn = (model, context, options) => inner(model, context, options);\n\treturn Object.assign(stream, { dispose: async () => {} });\n}\n"]}
@@ -8,10 +8,11 @@ export declare class PublicContextBudgetError extends RequestTokenBudgetError {
8
8
  readonly originalAssessment: RequestTokenAssessment;
9
9
  readonly mandatoryAssessment?: RequestTokenAssessment | undefined;
10
10
  readonly taskFrameRebaseAvailable: boolean;
11
+ readonly isSourceCurrent?: (() => boolean) | undefined;
11
12
  readonly source: SourceSnapshotRef;
12
13
  remainingSummaryTokens(retained: ReadonlySet<string>, wrapper: string): number | undefined;
13
14
  getCompactionKey(): string | undefined;
14
- constructor(source: SourceSnapshotRef, assessment: RequestTokenAssessment, originalAssessment: RequestTokenAssessment, mandatoryAssessment?: RequestTokenAssessment | undefined, taskFrameRebaseAvailable?: boolean, compactionKey?: string, summaryCapacity?: (retained: ReadonlySet<string>, wrapper: string) => number | undefined);
15
+ constructor(source: SourceSnapshotRef, assessment: RequestTokenAssessment, originalAssessment: RequestTokenAssessment, mandatoryAssessment?: RequestTokenAssessment | undefined, taskFrameRebaseAvailable?: boolean, compactionKey?: string, summaryCapacity?: (retained: ReadonlySet<string>, wrapper: string) => number | undefined, isSourceCurrent?: (() => boolean) | undefined);
15
16
  }
16
17
  export interface RequestViewCandidate {
17
18
  /** Session-local Responses ID namespace; a new owner requires a fresh representation. */
@@ -38,8 +39,9 @@ export interface CapturedRequestViewBoundary extends CanonicalViewSelectionSourc
38
39
  readonly commit: RequestViewCommit;
39
40
  readonly validate?: RequestViewValidate;
40
41
  readonly fixedPrepare?: RequestViewFixedPrepare;
42
+ readonly isSourceCurrent?: () => boolean;
41
43
  }
42
- export declare function captureRequestViewBoundary(messages: readonly AgentMessage[], commit: RequestViewCommit, validate?: RequestViewValidate, fixedPrepare?: RequestViewFixedPrepare): CapturedRequestViewBoundary;
44
+ export declare function captureRequestViewBoundary(messages: readonly AgentMessage[], commit: RequestViewCommit, validate?: RequestViewValidate, fixedPrepare?: RequestViewFixedPrepare, isSourceCurrent?: () => boolean): CapturedRequestViewBoundary;
43
45
  export declare function matchesRequestView(boundary: CapturedRequestViewBoundary, source: SourceSnapshotRef, context: Context): boolean;
44
46
  /** Check the actual final mapping without selecting, converting, or committing another view. */
45
47
  export declare function prepareFixedRequestView(boundary: CapturedRequestViewBoundary, request: ProviderRequestRepresentation, projection: ProviderRequestProjection, assessment: RequestTokenAssessment | undefined): Promise<void | ContextEpochEntryRef | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"request-view-selection.d.ts","sourceRoot":"","sources":["../../src/core/request-view-selection.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@ponythewhite/base-context-agent\";\nimport {\n\ttype Context,\n\ttype ProviderRequestProjection,\n\ttype ProviderRequestPublicMessage,\n\ttype ProviderRequestRepresentation,\n\ttype RequestTokenAssessment,\n\tRequestTokenBudgetError,\n\ttype RequestTokenBudgetEvaluator,\n\twithRequestBody,\n} from \"@ponythewhite/base-context-ai\";\nimport {\n\ttype CanonicalViewSelectionSource,\n\tcaptureCanonicalRequestMessages,\n\tgetCanonicalEpochContext,\n\tgetCanonicalViewSelectionSource,\n\tpreparePublicContextWindow,\n\tprepareToolContinuationWindow,\n} from \"./canonical-context.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport type { ContextEpochEntryRef, SourceSnapshotRef } from \"./request-events.js\";\nimport { bindMessageReplayUnits, closeViewSelection, prepareViewSelection } from \"./view-units.js\";\n\n/** Actual adapter-public measurement, not a verdict about the opaque native request. */\nexport class PublicContextBudgetError extends RequestTokenBudgetError {\n\treadonly source: SourceSnapshotRef;\n\t#compactionKey?: string;\n\t#summaryCapacity?: (retained: ReadonlySet<string>, wrapper: string) => number | undefined;\n\n\tremainingSummaryTokens(retained: ReadonlySet<string>, wrapper: string): number | undefined {\n\t\treturn this.#summaryCapacity?.(retained, wrapper);\n\t}\n\n\tgetCompactionKey(): string | undefined {\n\t\treturn this.#compactionKey;\n\t}\n\n\tconstructor(\n\t\tsource: SourceSnapshotRef,\n\t\tassessment: RequestTokenAssessment,\n\t\treadonly originalAssessment: RequestTokenAssessment,\n\t\treadonly mandatoryAssessment?: RequestTokenAssessment,\n\t\treadonly taskFrameRebaseAvailable = false,\n\t\tcompactionKey?: string,\n\t\tsummaryCapacity?: (retained: ReadonlySet<string>, wrapper: string) => number | undefined,\n\t) {\n\t\tsuper(assessment);\n\t\tthis.name = \"PublicContextBudgetError\";\n\t\tif (mandatoryAssessment?.status === \"over-budget\")\n\t\t\tthis.message =\n\t\t\t\t\"Context capacity exceeded: instructions, tools, mandatory evidence and output allowance cannot fit. Summarizing unrelated history cannot resolve this request.\";\n\t\tthis.source = Object.freeze({ ...source });\n\t\tthis.#compactionKey = compactionKey;\n\t\tthis.#summaryCapacity = summaryCapacity;\n\t}\n}\n\nexport interface RequestViewCandidate {\n\t/** Session-local Responses ID namespace; a new owner requires a fresh representation. */\n\treadonly responseItemIdentity?: string;\n\treadonly source: SourceSnapshotRef;\n\treadonly selectedUnitIds: readonly string[];\n\treadonly request: ProviderRequestRepresentation;\n\treadonly projection: ProviderRequestProjection;\n\t// Absent only for mandatory full-view admission without a configured token budget.\n\treadonly assessment: RequestTokenAssessment | undefined;\n\treadonly originalAssessment: RequestTokenAssessment | undefined;\n\t/** Exact public messages represented by the accepted candidate, with captured source recipes. */\n\treadonly publicMessages?: readonly AgentMessage[];\n}\n\n/** Root resolves only after its canonical epoch checkpoint ACK. This module owns no epoch state. */\nexport type RequestViewCommit = (\n\tcandidate: RequestViewCandidate,\n) => Promise<ContextEpochEntryRef | undefined> | Promise<void>;\nexport type RequestViewValidate = (\n\trequest: ProviderRequestRepresentation,\n\tassessment: RequestTokenAssessment | undefined,\n) => void;\n\nexport type RequestViewFixedPrepare = (\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tassessment: RequestTokenAssessment | undefined,\n) => ContextEpochEntryRef | void | Promise<ContextEpochEntryRef | undefined> | Promise<void>;\n\nexport interface CapturedRequestViewBoundary extends CanonicalViewSelectionSource {\n\treadonly responseItemIdentity?: string;\n\treadonly messages: readonly AgentMessage[];\n\t/** Provider logical positions mapped to the unchanged canonical messages/units. */\n\treadonly providerMessageIndices: readonly number[];\n\treadonly providerPendingPublicMessageGroups?: readonly (readonly number[])[];\n\treadonly commit: RequestViewCommit;\n\treadonly validate?: RequestViewValidate;\n\treadonly fixedPrepare?: RequestViewFixedPrepare;\n}\n\nexport function captureRequestViewBoundary(\n\tmessages: readonly AgentMessage[],\n\tcommit: RequestViewCommit,\n\tvalidate?: RequestViewValidate,\n\tfixedPrepare?: RequestViewFixedPrepare,\n): CapturedRequestViewBoundary {\n\tconst source = getCanonicalViewSelectionSource(messages);\n\tif (!source) throw new Error(\"Request view boundary requires compiled canonical messages\");\n\tconst providerMessageIndices = messages.flatMap((message, index) => convertToLlm([message]).map(() => index));\n\treturn {\n\t\t...source,\n\t\tmessages: captureCanonicalRequestMessages(messages),\n\t\tproviderMessageIndices,\n\t\t...(source.pendingPublicMessageGroups\n\t\t\t? {\n\t\t\t\t\tproviderPendingPublicMessageGroups: source.pendingPublicMessageGroups.map((group) =>\n\t\t\t\t\t\tgroup.map((index) => providerMessageIndex(providerMessageIndices, index)),\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\tcommit,\n\t\tvalidate,\n\t\tfixedPrepare,\n\t};\n}\n\nfunction providerMessageIndex(indices: readonly number[], canonicalIndex: number): number {\n\tconst index = indices.indexOf(canonicalIndex);\n\tif (index < 0) throw new Error(\"Provider projection cannot address a filtered canonical message\");\n\treturn index;\n}\n\n/** Keep canonical UI barriers while translating the native serializer's provider-only positions. */\nfunction canonicalRequestProjection(\n\tboundary: CapturedRequestViewBoundary,\n\tprojection: ProviderRequestProjection,\n): ProviderRequestProjection {\n\tconst indices = boundary.providerMessageIndices;\n\tif (indices.length === boundary.messages.length) return projection;\n\tconst canonicalIndex = (index: number): number => {\n\t\tconst canonical = indices[index];\n\t\tif (canonical === undefined) throw new Error(\"Provider projection message index is outside its captured view\");\n\t\treturn canonical;\n\t};\n\treturn {\n\t\t...projection,\n\t\tmessageIndices: projection.messageIndices.map((index) => (index === null ? null : canonicalIndex(index))),\n\t\t...(projection.optionalMessageIndices\n\t\t\t? { optionalMessageIndices: projection.optionalMessageIndices.map(canonicalIndex) }\n\t\t\t: {}),\n\t\t...(projection.generatedMessageIndices\n\t\t\t? { generatedMessageIndices: projection.generatedMessageIndices.map(canonicalIndex) }\n\t\t\t: {}),\n\t\t...(projection.publicMessageGroups\n\t\t\t? { publicMessageGroups: projection.publicMessageGroups.map((group) => group.map(canonicalIndex)) }\n\t\t\t: {}),\n\t\t...(projection.pendingPublicMessageGroups\n\t\t\t? {\n\t\t\t\t\tpendingPublicMessageGroups: projection.pendingPublicMessageGroups.map((group) =>\n\t\t\t\t\t\tgroup.map(canonicalIndex),\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(projection.encodePublicWindow\n\t\t\t? {\n\t\t\t\t\tencodePublicWindow: (replacements: readonly ProviderRequestPublicMessage[]) => {\n\t\t\t\t\t\tconst encoded = projection.encodePublicWindow!(\n\t\t\t\t\t\t\treplacements.map((replacement) => ({\n\t\t\t\t\t\t\t\t...replacement,\n\t\t\t\t\t\t\t\tmessageIndex: providerMessageIndex(indices, replacement.messageIndex),\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tencoded && { ...encoded, projection: canonicalRequestProjection(boundary, encoded.projection) }\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n}\n\nexport function matchesRequestView(\n\tboundary: CapturedRequestViewBoundary,\n\tsource: SourceSnapshotRef,\n\tcontext: Context,\n): boolean {\n\tconst expected = boundary.source;\n\tif (\n\t\texpected.sessionId !== source.sessionId ||\n\t\texpected.sessionFile !== source.sessionFile ||\n\t\texpected.leafId !== source.leafId ||\n\t\texpected.sourceSequence !== source.sourceSequence\n\t)\n\t\treturn false;\n\tconst rendered = convertToLlm([...boundary.messages]);\n\treturn (\n\t\tboundary.messages.length === boundary.units.length &&\n\t\trendered.length === boundary.providerMessageIndices.length &&\n\t\tJSON.stringify(rendered) === JSON.stringify(context.messages)\n\t);\n}\n\n/** Projection kinds describe their actual provider body, never an OpenAI-format route alias. */\nfunction requestInputKey(\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n): \"input\" | \"messages\" | undefined {\n\tif (\n\t\t(request.api === \"openai-responses\" || request.api === \"openai-codex-responses\") &&\n\t\t(projection.kind === \"openai-responses-text-v1\" || projection.kind === \"openai-responses-replay-v1\")\n\t)\n\t\treturn \"input\";\n\tif (\n\t\trequest.api === \"openai-completions\" &&\n\t\trequest.provider === \"deepseek\" &&\n\t\trequest.url === \"https://api.deepseek.com/chat/completions\" &&\n\t\tprojection.kind === \"deepseek-completions-text-tools-v1\" &&\n\t\trequest.body !== undefined &&\n\t\tJSON.parse(request.body).model === \"deepseek-flash\"\n\t)\n\t\treturn \"messages\";\n\treturn undefined;\n}\n\n/** A lower bound for compaction: fixed policy, current tail and required recorded evidence. */\nfunction publicBudgetFailure(\n\tboundary: CapturedRequestViewBoundary,\n\tmessages: readonly AgentMessage[],\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tbudget: RequestTokenBudgetEvaluator,\n\tassessment: RequestTokenAssessment,\n\toriginal: RequestTokenAssessment,\n): PublicContextBudgetError {\n\tconst context = getCanonicalEpochContext(messages)!;\n\tconst source = getCanonicalViewSelectionSource(messages)!;\n\tconst toolEntries = new Set(\n\t\tcontext.toolContinuations?.flatMap((group) => [\n\t\t\tgroup.assistantEntryId,\n\t\t\t...group.calls.flatMap((call) => (call.result ? [call.result.id] : [])),\n\t\t]),\n\t);\n\tlet tailSequence = -1;\n\tfor (const reference of context.references)\n\t\tif (reference && reference.ref.kind !== \"compaction\")\n\t\t\ttailSequence = Math.max(tailSequence, reference.ref.sequence);\n\tconst required = new Set(\n\t\tsource.units.flatMap((unit, index) => {\n\t\t\tconst reference = context.references[index];\n\t\t\treturn [\"task-frame\", \"resource-view\", \"recovery\"].includes(unit.kind) ||\n\t\t\t\tunit.id === \"native-selected-skill-versions\" ||\n\t\t\t\t(reference && (reference.ref.sequence === tailSequence || toolEntries.has(reference.ref.entryId)))\n\t\t\t\t? [index]\n\t\t\t\t: [];\n\t\t}),\n\t);\n\tconst inputKey = requestInputKey(request, projection)!;\n\tconst body = JSON.parse(request.body!) as Record<string, unknown>;\n\tconst input = body[inputKey];\n\tif (!Array.isArray(input) || input.length !== projection.messageIndices.length)\n\t\treturn new PublicContextBudgetError(boundary.source, assessment, original);\n\tconst graph = prepareViewSelection(source.units, boundary.limits);\n\tconst retainedInput = (retained: ReadonlySet<string>) => {\n\t\tconst roots = source.units\n\t\t\t.filter((_, index) => required.has(index) || retained.has(context.references[index]?.ref.entryId ?? \"\"))\n\t\t\t.map((unit) => unit.id);\n\t\tconst selected = new Set(graph.close(roots).map((unit) => unit.id));\n\t\treturn input.filter((_, index) => {\n\t\t\tconst messageIndex = projection.messageIndices[index];\n\t\t\treturn messageIndex === null || selected.has(source.units[messageIndex].id);\n\t\t});\n\t};\n\tconst minimum = withRequestBody(request, JSON.stringify({ ...body, [inputKey]: retainedInput(new Set()) }));\n\treturn new PublicContextBudgetError(\n\t\tboundary.source,\n\t\tassessment,\n\t\toriginal,\n\t\tbudget.measure(minimum),\n\t\t(context.taskFrame?.messages.length ?? 0) > 1,\n\t\tJSON.stringify([\n\t\t\tboundary.source.sessionId,\n\t\t\tboundary.source.sessionFile,\n\t\t\tsource.units.map((unit) => [unit.id, unit.sourceRevision]),\n\t\t\tassessment.api,\n\t\t\tassessment.provider,\n\t\t\tassessment.model,\n\t\t\tassessment.route,\n\t\t\tassessment.profile,\n\t\t\tassessment.availableInputTokens,\n\t\t\tassessment.outputReserveTokens,\n\t\t]),\n\t\t(retained, wrapper) => {\n\t\t\t// Meter only; this synthetic empty summary is never admitted or sent.\n\t\t\tconst summary =\n\t\t\t\tinputKey === \"messages\"\n\t\t\t\t\t? { role: \"user\", content: wrapper }\n\t\t\t\t\t: { role: \"user\", content: [{ type: \"input_text\", text: wrapper }] };\n\t\t\tconst kept = retainedInput(retained);\n\t\t\tconst position = kept.findIndex((item) => item?.role !== \"system\" && item?.role !== \"developer\");\n\t\t\tkept.splice(position < 0 ? kept.length : position, 0, summary);\n\t\t\tconst measured = budget.measure(withRequestBody(request, JSON.stringify({ ...body, [inputKey]: kept })));\n\t\t\treturn measured.status === \"unknown\" ||\n\t\t\t\tmeasured.availableInputTokens === null ||\n\t\t\t\tmeasured.estimatedInputTokens === null\n\t\t\t\t? undefined\n\t\t\t\t: Math.floor(measured.availableInputTokens - measured.estimatedInputTokens);\n\t\t},\n\t);\n}\n\n/** Check the actual final mapping without selecting, converting, or committing another view. */\nexport async function prepareFixedRequestView(\n\tboundary: CapturedRequestViewBoundary,\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tassessment: RequestTokenAssessment | undefined,\n) {\n\tprojection = canonicalRequestProjection(boundary, projection);\n\tconst inputKey = requestInputKey(request, projection);\n\tconst payload = JSON.parse(request.body!) as Record<string, unknown> | null;\n\tconst input = inputKey && payload ? payload[inputKey] : undefined;\n\tif (!Array.isArray(input) || input.length !== projection.messageIndices.length)\n\t\tthrow new Error(\"Fixed context requires its final provider projection\");\n\tif (\n\t\tprojection.kind === \"openai-responses-text-v1\" &&\n\t\tboundary.messages.some(\n\t\t\t(message) =>\n\t\t\t\tmessage.role === \"toolResult\" ||\n\t\t\t\t(message.role === \"assistant\" && (message.content.length !== 1 || message.content[0].type !== \"text\")),\n\t\t)\n\t)\n\t\tthrow new Error(\"Fixed context requires its native replay adapter\");\n\tconst units = bindMessageReplayUnits(\n\t\tboundary.messages,\n\t\tboundary.units,\n\t\tboundary.limits,\n\t\tprojection.replayContract ?? \"complete-context\",\n\t);\n\tcloseViewSelection(\n\t\tunits,\n\t\tunits.map((unit) => unit.id),\n\t\tboundary.limits,\n\t);\n\treturn await boundary.fixedPrepare!(request, projection, assessment);\n}\n\n/** Reuse the same legal omission policy for native and already-converted public requests. */\nasync function offerOptionalSubset(\n\tmessages: readonly AgentMessage[],\n\tunits: CanonicalViewSelectionSource[\"units\"],\n\tselection: ReturnType<typeof prepareViewSelection>,\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tbudget: RequestTokenBudgetEvaluator,\n\toffer: (\n\t\tids: readonly string[],\n\t\trequest: ProviderRequestRepresentation,\n\t\tprojection: ProviderRequestProjection,\n\t\tassessment: RequestTokenAssessment,\n\t) => Promise<unknown>,\n): Promise<string | undefined> {\n\tconst inputKey = requestInputKey(request, projection);\n\tif (!inputKey) return;\n\tconst payload = JSON.parse(request.body!) as Record<string, unknown>;\n\tconst input = payload[inputKey];\n\tif (!Array.isArray(input) || input.length !== projection.messageIndices.length) return;\n\tlet latestAssistant = -1;\n\tfor (const [index, message] of messages.entries()) if (message.role === \"assistant\") latestAssistant = index;\n\tconst retained = new Set(projection.messageIndices.slice(0, request.retainedPrefix?.inputItems ?? 0));\n\tconst projectedOptional =\n\t\tprojection.kind !== \"openai-responses-text-v1\" ? new Set(projection.optionalMessageIndices ?? []) : undefined;\n\tconst optional = units.filter((unit, index) => {\n\t\tconst message = messages[index];\n\t\treturn (\n\t\t\tindex !== latestAssistant &&\n\t\t\t!retained.has(index) &&\n\t\t\t(!projectedOptional || projectedOptional.has(index)) &&\n\t\t\tunit.kind === \"literal\" &&\n\t\t\tunit.authority === \"assistant-public\" &&\n\t\t\tmessage.role === \"assistant\" &&\n\t\t\tmessage.stopReason === \"stop\" &&\n\t\t\tmessage.content.length === 1 &&\n\t\t\tmessage.content[0].type === \"text\"\n\t\t);\n\t});\n\tconst generatedPositions = new Map<string, number>();\n\tconst generated =\n\t\tprojection.generatedMessageIndices ??\n\t\tmessages.flatMap((message, index) =>\n\t\t\tmessage.role === \"assistant\" &&\n\t\t\tmessage.content.some((block) => block.type === \"text\" && block.textSignature === undefined)\n\t\t\t\t? [index]\n\t\t\t\t: [],\n\t\t);\n\tfor (const index of generated) generatedPositions.set(units[index].id, index);\n\t// All user inputs, the latest assistant, fixed/TaskFrame/recovery units and errors stay selected.\n\tconst selected = new Set(units.map((unit) => unit.id));\n\tfor (const unit of optional) {\n\t\tselected.delete(unit.id);\n\t\tconst closed = selection.close([...selected]);\n\t\t// Normal Responses rendering uses msg_<message index> for unsigned assistants.\n\t\t// Reject any subset that would change a retained generated item ID on reconstruction.\n\t\tif (closed.some((item, index) => generatedPositions.has(item.id) && generatedPositions.get(item.id) !== index))\n\t\t\tcontinue;\n\t\tconst closedIds = new Set(closed.map((item) => item.id));\n\t\tconst keepItem = (index: number) => {\n\t\t\tconst messageIndex = projection.messageIndices[index];\n\t\t\treturn messageIndex === null || closedIds.has(units[messageIndex].id);\n\t\t};\n\t\tconst body = JSON.stringify({ ...payload, [inputKey]: input.filter((_, index) => keepItem(index)) });\n\t\tconst candidateRequest = { ...request, body };\n\t\tconst assessment = budget.measure(candidateRequest);\n\t\tif (assessment.status !== \"within-estimate\") continue;\n\t\tawait offer(\n\t\t\tclosed.map((item) => item.id),\n\t\t\tcandidateRequest,\n\t\t\t{\n\t\t\t\t...projection,\n\t\t\t\tmessageIndices: projection.messageIndices.filter((_, index) => keepItem(index)),\n\t\t\t\t...(projection.optionalMessageIndices\n\t\t\t\t\t? {\n\t\t\t\t\t\t\toptionalMessageIndices: projection.optionalMessageIndices.filter((index) =>\n\t\t\t\t\t\t\t\tclosedIds.has(units[index].id),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\t...(projection.generatedMessageIndices\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tgeneratedMessageIndices: projection.generatedMessageIndices.filter((index) =>\n\t\t\t\t\t\t\t\tclosedIds.has(units[index].id),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t\tassessment,\n\t\t);\n\t\treturn body;\n\t}\n\treturn;\n}\n\n/** Only the actual serializer's established replay contract authorizes historical-literal omission. */\nexport async function selectRequestView(\n\tboundary: CapturedRequestViewBoundary,\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tbudget: RequestTokenBudgetEvaluator | undefined,\n\tallowShrink: boolean,\n\tfinalizeMeasurement?: (\n\t\trequest: ProviderRequestRepresentation,\n\t\tassessment: RequestTokenAssessment | undefined,\n\t) => Promise<RequestTokenAssessment | undefined>,\n): Promise<string | undefined> {\n\tprojection = canonicalRequestProjection(boundary, projection);\n\tlet full = budget?.measure(request);\n\tconst inputKey = requestInputKey(request, projection);\n\tif ((budget && full?.limitSource !== \"explicit-profile\") || !inputKey) return;\n\tif (!budget && !boundary.requiresEpoch && !boundary.pendingPublicMessageGroups?.length) return;\n\tconst payload = JSON.parse(request.body!) as Record<string, unknown>;\n\tconst input = payload[inputKey];\n\tif (!Array.isArray(input) || input.length !== projection.messageIndices.length) return;\n\t// Resolve a near-limit estimate before discarding a stable native prefix. Original\n\t// protected tool groups must first pass their public conversion below.\n\tif (\n\t\tfull?.status === \"over-budget\" &&\n\t\t!boundary.pendingPublicMessageGroups?.length &&\n\t\t!projection.pendingPublicMessageGroups?.length\n\t)\n\t\tfull = (await finalizeMeasurement?.(request, full)) ?? full;\n\n\t// Absence is complete-context; a profile or tool-shaped message is never group authority.\n\tconst replayContract = projection.replayContract ?? \"complete-context\";\n\tif (\n\t\tprojection.kind === \"openai-responses-text-v1\" &&\n\t\tboundary.messages.some(\n\t\t\t(message) =>\n\t\t\t\tmessage.role === \"toolResult\" ||\n\t\t\t\t(message.role === \"assistant\" && (message.content.length !== 1 || message.content[0].type !== \"text\")),\n\t\t)\n\t)\n\t\treturn;\n\tconst units = bindMessageReplayUnits(\n\t\tboundary.messages,\n\t\tboundary.units,\n\t\tboundary.limits,\n\t\treplayContract,\n\t\tboundary.pendingPublicMessageGroups,\n\t);\n\tconst selection = prepareViewSelection(units, boundary.limits);\n\tconst offer = async (\n\t\tselectedUnitIds: readonly string[],\n\t\tcandidateRequest: ProviderRequestRepresentation,\n\t\tcandidateProjection: ProviderRequestProjection,\n\t\tassessment: RequestTokenAssessment | undefined,\n\t\tpublicMessages?: readonly AgentMessage[],\n\t) => {\n\t\tassessment = (await finalizeMeasurement?.(candidateRequest, assessment)) ?? assessment;\n\t\tif (budget && assessment) {\n\t\t\tif (assessment.status === \"over-budget\" && full)\n\t\t\t\tthrow publicBudgetFailure(\n\t\t\t\t\tboundary,\n\t\t\t\t\tpublicMessages ?? boundary.messages,\n\t\t\t\t\tcandidateRequest,\n\t\t\t\t\tcandidateProjection,\n\t\t\t\t\tbudget,\n\t\t\t\t\tassessment,\n\t\t\t\t\tfull,\n\t\t\t\t);\n\t\t\tbudget.assert(assessment);\n\t\t}\n\t\treturn boundary.commit(\n\t\t\tObject.freeze({\n\t\t\t\t...(boundary.responseItemIdentity ? { responseItemIdentity: boundary.responseItemIdentity } : {}),\n\t\t\t\tsource: Object.freeze({ ...boundary.source }),\n\t\t\t\tselectedUnitIds: Object.freeze([...selectedUnitIds]),\n\t\t\t\trequest: Object.freeze({ ...candidateRequest }),\n\t\t\t\tprojection: Object.freeze({\n\t\t\t\t\t...candidateProjection,\n\t\t\t\t\treplayContract,\n\t\t\t\t\tmessageIndices: Object.freeze([...candidateProjection.messageIndices]),\n\t\t\t\t\t...(candidateProjection.optionalMessageIndices\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\toptionalMessageIndices: Object.freeze([...candidateProjection.optionalMessageIndices]),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(candidateProjection.generatedMessageIndices\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tgeneratedMessageIndices: Object.freeze([...candidateProjection.generatedMessageIndices]),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t}),\n\t\t\t\tassessment,\n\t\t\t\toriginalAssessment: full,\n\t\t\t\t...(publicMessages ? { publicMessages } : {}),\n\t\t\t}),\n\t\t);\n\t};\n\tconst offerPublicSubset = async (\n\t\tmessages: readonly AgentMessage[],\n\t\trequest: ProviderRequestRepresentation,\n\t\tprojection: ProviderRequestProjection,\n\t): Promise<string | undefined> => {\n\t\tif (!allowShrink || !budget || replayContract !== \"message-groups\") return;\n\t\tconst source = getCanonicalViewSelectionSource(messages)!;\n\t\tconst units = bindMessageReplayUnits(messages, source.units, boundary.limits, replayContract);\n\t\treturn offerOptionalSubset(\n\t\t\tmessages,\n\t\t\tunits,\n\t\t\tprepareViewSelection(units, boundary.limits),\n\t\t\trequest,\n\t\t\tprojection,\n\t\t\tbudget,\n\t\t\t(ids, candidate, mapping, assessment) => offer(ids, candidate, mapping, assessment, messages),\n\t\t);\n\t};\n\tif (boundary.pendingPublicMessageGroups?.length) {\n\t\tif (\n\t\t\treplayContract !== \"message-groups\" ||\n\t\t\t!projection.publicWindow ||\n\t\t\t!projection.encodePublicWindow ||\n\t\t\tJSON.stringify(projection.pendingPublicMessageGroups) !== JSON.stringify(boundary.pendingPublicMessageGroups)\n\t\t)\n\t\t\tthrow new Error(\"Original tool group requires current native adapter public conversion\");\n\t\tconst publicView = prepareToolContinuationWindow(boundary.messages);\n\t\tconst encoded = projection.encodePublicWindow(publicView.replacements);\n\t\tif (!encoded || encoded.projection.pendingPublicMessageGroups?.length)\n\t\t\tthrow new Error(\"Native adapter did not convert the whole required tool group\");\n\t\tconst publicSource = getCanonicalViewSelectionSource(publicView.messages)!;\n\t\tconst publicUnits = bindMessageReplayUnits(\n\t\t\tpublicView.messages,\n\t\t\tpublicSource.units,\n\t\t\tboundary.limits,\n\t\t\treplayContract,\n\t\t);\n\t\tconst closed = closeViewSelection(\n\t\t\tpublicUnits,\n\t\t\tpublicUnits.map((unit) => unit.id),\n\t\t\tboundary.limits,\n\t\t);\n\t\tlet assessment = budget?.measure(encoded.request);\n\t\tif (assessment?.status === \"over-budget\")\n\t\t\tassessment = (await finalizeMeasurement?.(encoded.request, assessment)) ?? assessment;\n\t\tif (assessment && full) {\n\t\t\tif (assessment.status === \"over-budget\") {\n\t\t\t\tconst subset = await offerPublicSubset(publicView.messages, encoded.request, encoded.projection);\n\t\t\t\tif (subset !== undefined) return subset;\n\t\t\t\tthrow publicBudgetFailure(\n\t\t\t\t\tboundary,\n\t\t\t\t\tpublicView.messages,\n\t\t\t\t\tencoded.request,\n\t\t\t\t\tencoded.projection,\n\t\t\t\t\tbudget!,\n\t\t\t\t\tassessment,\n\t\t\t\t\tfull,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (assessment.status !== \"within-estimate\")\n\t\t\t\tthrow new Error(\"Tool continuation public request exceeds its token budget\");\n\t\t}\n\t\tawait offer(\n\t\t\tclosed.map((unit) => unit.id),\n\t\t\tencoded.request,\n\t\t\tencoded.projection,\n\t\t\tassessment,\n\t\t\tpublicView.messages,\n\t\t);\n\t\treturn encoded.request.body;\n\t}\n\tif (projection.pendingPublicMessageGroups?.length)\n\t\tthrow new Error(\"Adapter pending group has no original owned source plan\");\n\t// Without a configured budget, admit only the exact full native view. Never shrink it.\n\tif (!budget) {\n\t\tconst closed = selection.close(units.map((unit) => unit.id));\n\t\tawait offer(\n\t\t\tclosed.map((unit) => unit.id),\n\t\t\trequest,\n\t\t\tprojection,\n\t\t\tundefined,\n\t\t);\n\t\treturn request.body;\n\t}\n\tif (!full) return;\n\tconst offerPublicWindow = async (): Promise<string | undefined> => {\n\t\tif (\n\t\t\t!allowShrink ||\n\t\t\treplayContract !== \"message-groups\" ||\n\t\t\t!projection.publicWindow ||\n\t\t\t!projection.encodePublicWindow\n\t\t)\n\t\t\treturn;\n\t\tconst closed = selection.close(units.map((unit) => unit.id));\n\t\tlet firstMessageIndex = 0;\n\t\tif (\n\t\t\tfull.status === \"unknown\" &&\n\t\t\tfull.unknown.length === 1 &&\n\t\t\tfull.unknown[0] === \"media, opaque or unsupported replay token coverage unknown\"\n\t\t) {\n\t\t\t// Credited items are not part of the unknown input. Keep original projection indices.\n\t\t\tconst firstUnmeteredItem = request.retainedPrefix?.inputItems ?? 0;\n\t\t\tconst reasoningItemIndex = input.findIndex(\n\t\t\t\t(item, index) => index >= firstUnmeteredItem && item?.type === \"reasoning\",\n\t\t\t);\n\t\t\tconst messageIndex = projection.messageIndices[reasoningItemIndex];\n\t\t\tconst group =\n\t\t\t\tmessageIndex == null\n\t\t\t\t\t? undefined\n\t\t\t\t\t: projection.publicMessageGroups?.find((members) => members.includes(messageIndex));\n\t\t\t// The adapter still accepts only complete groups; earlier meterable groups stay native.\n\t\t\tfirstMessageIndex = group ? Math.min(...group) : 0;\n\t\t}\n\t\tconst publicView = preparePublicContextWindow(boundary.messages, firstMessageIndex);\n\t\tif (!publicView) {\n\t\t\t// Keep the original measured refusal when no public conversion can be offered.\n\t\t\t// This is not a new recovery signal or permission to reprepare again.\n\t\t\tif (full.status === \"over-budget\") throw new RequestTokenBudgetError(full);\n\t\t\treturn;\n\t\t}\n\t\tconst encoded = projection.encodePublicWindow(publicView.replacements);\n\t\tif (!encoded) return;\n\t\tlet assessment = budget.measure(encoded.request);\n\t\tif (assessment.status === \"over-budget\")\n\t\t\tassessment = (await finalizeMeasurement?.(encoded.request, assessment)) ?? assessment;\n\t\tif (assessment.status === \"over-budget\") {\n\t\t\tconst subset = await offerPublicSubset(publicView.messages, encoded.request, encoded.projection);\n\t\t\tif (subset !== undefined) return subset;\n\t\t\tthrow publicBudgetFailure(\n\t\t\t\tboundary,\n\t\t\t\tpublicView.messages,\n\t\t\t\tencoded.request,\n\t\t\t\tencoded.projection,\n\t\t\t\tbudget,\n\t\t\t\tassessment,\n\t\t\t\tfull,\n\t\t\t);\n\t\t}\n\t\tif (assessment.status !== \"within-estimate\") return;\n\t\tawait offer(\n\t\t\tclosed.map((unit) => unit.id),\n\t\t\tencoded.request,\n\t\t\tencoded.projection,\n\t\t\tassessment,\n\t\t\tpublicView.messages,\n\t\t);\n\t\treturn encoded.request.body;\n\t};\n\tif (full.status === \"within-estimate\") {\n\t\tconst closed = selection.close(units.map((unit) => unit.id));\n\t\tawait offer(\n\t\t\tclosed.map((unit) => unit.id),\n\t\t\trequest,\n\t\t\tprojection,\n\t\t\tfull,\n\t\t);\n\t\treturn request.body;\n\t}\n\tif (!allowShrink || replayContract !== \"message-groups\") return;\n\tif (full.status !== \"over-budget\") return offerPublicWindow();\n\tconst subset = await offerOptionalSubset(boundary.messages, units, selection, request, projection, budget, offer);\n\tif (subset !== undefined) return subset;\n\treturn offerPublicWindow();\n}\n"]}
1
+ {"version":3,"file":"request-view-selection.d.ts","sourceRoot":"","sources":["../../src/core/request-view-selection.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@ponythewhite/base-context-agent\";\nimport {\n\ttype Context,\n\ttype ProviderRequestProjection,\n\ttype ProviderRequestPublicMessage,\n\ttype ProviderRequestRepresentation,\n\ttype RequestTokenAssessment,\n\tRequestTokenBudgetError,\n\ttype RequestTokenBudgetEvaluator,\n\twithRequestBody,\n} from \"@ponythewhite/base-context-ai\";\nimport {\n\ttype CanonicalViewSelectionSource,\n\tcaptureCanonicalRequestMessages,\n\tgetCanonicalEpochContext,\n\tgetCanonicalViewSelectionSource,\n\tpreparePublicContextWindow,\n\tprepareToolContinuationWindow,\n} from \"./canonical-context.js\";\nimport { convertToLlm } from \"./messages.js\";\nimport type { ContextEpochEntryRef, SourceSnapshotRef } from \"./request-events.js\";\nimport { bindMessageReplayUnits, closeViewSelection, prepareViewSelection } from \"./view-units.js\";\n\n/** Actual adapter-public measurement, not a verdict about the opaque native request. */\nexport class PublicContextBudgetError extends RequestTokenBudgetError {\n\treadonly source: SourceSnapshotRef;\n\t#compactionKey?: string;\n\t#summaryCapacity?: (retained: ReadonlySet<string>, wrapper: string) => number | undefined;\n\n\tremainingSummaryTokens(retained: ReadonlySet<string>, wrapper: string): number | undefined {\n\t\treturn this.#summaryCapacity?.(retained, wrapper);\n\t}\n\n\tgetCompactionKey(): string | undefined {\n\t\treturn this.#compactionKey;\n\t}\n\n\tconstructor(\n\t\tsource: SourceSnapshotRef,\n\t\tassessment: RequestTokenAssessment,\n\t\treadonly originalAssessment: RequestTokenAssessment,\n\t\treadonly mandatoryAssessment?: RequestTokenAssessment,\n\t\treadonly taskFrameRebaseAvailable = false,\n\t\tcompactionKey?: string,\n\t\tsummaryCapacity?: (retained: ReadonlySet<string>, wrapper: string) => number | undefined,\n\t\treadonly isSourceCurrent?: () => boolean,\n\t) {\n\t\tsuper(assessment);\n\t\tthis.name = \"PublicContextBudgetError\";\n\t\tif (mandatoryAssessment?.status === \"over-budget\")\n\t\t\tthis.message =\n\t\t\t\t\"Context capacity exceeded: instructions, tools, mandatory evidence and output allowance cannot fit. Summarizing unrelated history cannot resolve this request.\";\n\t\tthis.source = Object.freeze({ ...source });\n\t\tthis.#compactionKey = compactionKey;\n\t\tthis.#summaryCapacity = summaryCapacity;\n\t}\n}\n\nexport interface RequestViewCandidate {\n\t/** Session-local Responses ID namespace; a new owner requires a fresh representation. */\n\treadonly responseItemIdentity?: string;\n\treadonly source: SourceSnapshotRef;\n\treadonly selectedUnitIds: readonly string[];\n\treadonly request: ProviderRequestRepresentation;\n\treadonly projection: ProviderRequestProjection;\n\t// Absent only for mandatory full-view admission without a configured token budget.\n\treadonly assessment: RequestTokenAssessment | undefined;\n\treadonly originalAssessment: RequestTokenAssessment | undefined;\n\t/** Exact public messages represented by the accepted candidate, with captured source recipes. */\n\treadonly publicMessages?: readonly AgentMessage[];\n}\n\n/** Root resolves only after its canonical epoch checkpoint ACK. This module owns no epoch state. */\nexport type RequestViewCommit = (\n\tcandidate: RequestViewCandidate,\n) => Promise<ContextEpochEntryRef | undefined> | Promise<void>;\nexport type RequestViewValidate = (\n\trequest: ProviderRequestRepresentation,\n\tassessment: RequestTokenAssessment | undefined,\n) => void;\n\nexport type RequestViewFixedPrepare = (\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tassessment: RequestTokenAssessment | undefined,\n) => ContextEpochEntryRef | void | Promise<ContextEpochEntryRef | undefined> | Promise<void>;\n\nexport interface CapturedRequestViewBoundary extends CanonicalViewSelectionSource {\n\treadonly responseItemIdentity?: string;\n\treadonly messages: readonly AgentMessage[];\n\t/** Provider logical positions mapped to the unchanged canonical messages/units. */\n\treadonly providerMessageIndices: readonly number[];\n\treadonly providerPendingPublicMessageGroups?: readonly (readonly number[])[];\n\treadonly commit: RequestViewCommit;\n\treadonly validate?: RequestViewValidate;\n\treadonly fixedPrepare?: RequestViewFixedPrepare;\n\treadonly isSourceCurrent?: () => boolean;\n}\n\nexport function captureRequestViewBoundary(\n\tmessages: readonly AgentMessage[],\n\tcommit: RequestViewCommit,\n\tvalidate?: RequestViewValidate,\n\tfixedPrepare?: RequestViewFixedPrepare,\n\tisSourceCurrent?: () => boolean,\n): CapturedRequestViewBoundary {\n\tconst source = getCanonicalViewSelectionSource(messages);\n\tif (!source) throw new Error(\"Request view boundary requires compiled canonical messages\");\n\tconst providerMessageIndices = messages.flatMap((message, index) => convertToLlm([message]).map(() => index));\n\treturn {\n\t\t...source,\n\t\tmessages: captureCanonicalRequestMessages(messages),\n\t\tproviderMessageIndices,\n\t\t...(source.pendingPublicMessageGroups\n\t\t\t? {\n\t\t\t\t\tproviderPendingPublicMessageGroups: source.pendingPublicMessageGroups.map((group) =>\n\t\t\t\t\t\tgroup.map((index) => providerMessageIndex(providerMessageIndices, index)),\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\tcommit,\n\t\tvalidate,\n\t\tfixedPrepare,\n\t\tisSourceCurrent,\n\t};\n}\n\nfunction providerMessageIndex(indices: readonly number[], canonicalIndex: number): number {\n\tconst index = indices.indexOf(canonicalIndex);\n\tif (index < 0) throw new Error(\"Provider projection cannot address a filtered canonical message\");\n\treturn index;\n}\n\n/** Keep canonical UI barriers while translating the native serializer's provider-only positions. */\nfunction canonicalRequestProjection(\n\tboundary: CapturedRequestViewBoundary,\n\tprojection: ProviderRequestProjection,\n): ProviderRequestProjection {\n\tconst indices = boundary.providerMessageIndices;\n\tif (indices.length === boundary.messages.length) return projection;\n\tconst canonicalIndex = (index: number): number => {\n\t\tconst canonical = indices[index];\n\t\tif (canonical === undefined) throw new Error(\"Provider projection message index is outside its captured view\");\n\t\treturn canonical;\n\t};\n\treturn {\n\t\t...projection,\n\t\tmessageIndices: projection.messageIndices.map((index) => (index === null ? null : canonicalIndex(index))),\n\t\t...(projection.optionalMessageIndices\n\t\t\t? { optionalMessageIndices: projection.optionalMessageIndices.map(canonicalIndex) }\n\t\t\t: {}),\n\t\t...(projection.generatedMessageIndices\n\t\t\t? { generatedMessageIndices: projection.generatedMessageIndices.map(canonicalIndex) }\n\t\t\t: {}),\n\t\t...(projection.publicMessageGroups\n\t\t\t? { publicMessageGroups: projection.publicMessageGroups.map((group) => group.map(canonicalIndex)) }\n\t\t\t: {}),\n\t\t...(projection.pendingPublicMessageGroups\n\t\t\t? {\n\t\t\t\t\tpendingPublicMessageGroups: projection.pendingPublicMessageGroups.map((group) =>\n\t\t\t\t\t\tgroup.map(canonicalIndex),\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(projection.encodePublicWindow\n\t\t\t? {\n\t\t\t\t\tencodePublicWindow: (replacements: readonly ProviderRequestPublicMessage[]) => {\n\t\t\t\t\t\tconst encoded = projection.encodePublicWindow!(\n\t\t\t\t\t\t\treplacements.map((replacement) => ({\n\t\t\t\t\t\t\t\t...replacement,\n\t\t\t\t\t\t\t\tmessageIndex: providerMessageIndex(indices, replacement.messageIndex),\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tencoded && { ...encoded, projection: canonicalRequestProjection(boundary, encoded.projection) }\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n}\n\nexport function matchesRequestView(\n\tboundary: CapturedRequestViewBoundary,\n\tsource: SourceSnapshotRef,\n\tcontext: Context,\n): boolean {\n\tconst expected = boundary.source;\n\tif (\n\t\texpected.sessionId !== source.sessionId ||\n\t\texpected.sessionFile !== source.sessionFile ||\n\t\texpected.leafId !== source.leafId ||\n\t\texpected.sourceSequence !== source.sourceSequence\n\t)\n\t\treturn false;\n\tconst rendered = convertToLlm([...boundary.messages]);\n\treturn (\n\t\tboundary.messages.length === boundary.units.length &&\n\t\trendered.length === boundary.providerMessageIndices.length &&\n\t\tJSON.stringify(rendered) === JSON.stringify(context.messages)\n\t);\n}\n\n/** Projection kinds describe their actual provider body, never an OpenAI-format route alias. */\nfunction requestInputKey(\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n): \"input\" | \"messages\" | undefined {\n\tif (\n\t\t(request.api === \"openai-responses\" || request.api === \"openai-codex-responses\") &&\n\t\t(projection.kind === \"openai-responses-text-v1\" || projection.kind === \"openai-responses-replay-v1\")\n\t)\n\t\treturn \"input\";\n\tif (\n\t\trequest.api === \"openai-completions\" &&\n\t\trequest.provider === \"deepseek\" &&\n\t\trequest.url === \"https://api.deepseek.com/chat/completions\" &&\n\t\tprojection.kind === \"deepseek-completions-text-tools-v1\" &&\n\t\trequest.body !== undefined &&\n\t\tJSON.parse(request.body).model === \"deepseek-flash\"\n\t)\n\t\treturn \"messages\";\n\treturn undefined;\n}\n\n/** A lower bound for compaction: fixed policy, current tail and required recorded evidence. */\nfunction publicBudgetFailure(\n\tboundary: CapturedRequestViewBoundary,\n\tmessages: readonly AgentMessage[],\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tbudget: RequestTokenBudgetEvaluator,\n\tassessment: RequestTokenAssessment,\n\toriginal: RequestTokenAssessment,\n): PublicContextBudgetError {\n\tconst context = getCanonicalEpochContext(messages)!;\n\tconst source = getCanonicalViewSelectionSource(messages)!;\n\tconst toolEntries = new Set(\n\t\tcontext.toolContinuations?.flatMap((group) => [\n\t\t\tgroup.assistantEntryId,\n\t\t\t...group.calls.flatMap((call) => (call.result ? [call.result.id] : [])),\n\t\t]),\n\t);\n\tlet tailSequence = -1;\n\tfor (const reference of context.references)\n\t\tif (reference && reference.ref.kind !== \"compaction\")\n\t\t\ttailSequence = Math.max(tailSequence, reference.ref.sequence);\n\tconst required = new Set(\n\t\tsource.units.flatMap((unit, index) => {\n\t\t\tconst reference = context.references[index];\n\t\t\treturn [\"task-frame\", \"resource-view\", \"recovery\"].includes(unit.kind) ||\n\t\t\t\tunit.id === \"native-selected-skill-versions\" ||\n\t\t\t\t(reference && (reference.ref.sequence === tailSequence || toolEntries.has(reference.ref.entryId)))\n\t\t\t\t? [index]\n\t\t\t\t: [];\n\t\t}),\n\t);\n\tconst inputKey = requestInputKey(request, projection)!;\n\tconst body = JSON.parse(request.body!) as Record<string, unknown>;\n\tconst input = body[inputKey];\n\tif (!Array.isArray(input) || input.length !== projection.messageIndices.length)\n\t\treturn new PublicContextBudgetError(\n\t\t\tboundary.source,\n\t\t\tassessment,\n\t\t\toriginal,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tboundary.isSourceCurrent,\n\t\t);\n\tconst graph = prepareViewSelection(source.units, boundary.limits);\n\tconst retainedInput = (retained: ReadonlySet<string>) => {\n\t\tconst roots = source.units\n\t\t\t.filter((_, index) => required.has(index) || retained.has(context.references[index]?.ref.entryId ?? \"\"))\n\t\t\t.map((unit) => unit.id);\n\t\tconst selected = new Set(graph.close(roots).map((unit) => unit.id));\n\t\treturn input.filter((_, index) => {\n\t\t\tconst messageIndex = projection.messageIndices[index];\n\t\t\treturn messageIndex === null || selected.has(source.units[messageIndex].id);\n\t\t});\n\t};\n\tconst minimum = withRequestBody(request, JSON.stringify({ ...body, [inputKey]: retainedInput(new Set()) }));\n\treturn new PublicContextBudgetError(\n\t\tboundary.source,\n\t\tassessment,\n\t\toriginal,\n\t\tbudget.measure(minimum),\n\t\t(context.taskFrame?.messages.length ?? 0) > 1,\n\t\tJSON.stringify([\n\t\t\tboundary.source.sessionId,\n\t\t\tboundary.source.sessionFile,\n\t\t\tsource.units.map((unit) => [unit.id, unit.sourceRevision]),\n\t\t\tassessment.api,\n\t\t\tassessment.provider,\n\t\t\tassessment.model,\n\t\t\tassessment.route,\n\t\t\tassessment.profile,\n\t\t\tassessment.availableInputTokens,\n\t\t\tassessment.outputReserveTokens,\n\t\t]),\n\t\t(retained, wrapper) => {\n\t\t\t// Meter only; this synthetic empty summary is never admitted or sent.\n\t\t\tconst summary =\n\t\t\t\tinputKey === \"messages\"\n\t\t\t\t\t? { role: \"user\", content: wrapper }\n\t\t\t\t\t: { role: \"user\", content: [{ type: \"input_text\", text: wrapper }] };\n\t\t\tconst kept = retainedInput(retained);\n\t\t\tconst position = kept.findIndex((item) => item?.role !== \"system\" && item?.role !== \"developer\");\n\t\t\tkept.splice(position < 0 ? kept.length : position, 0, summary);\n\t\t\tconst measured = budget.measure(withRequestBody(request, JSON.stringify({ ...body, [inputKey]: kept })));\n\t\t\treturn measured.status === \"unknown\" ||\n\t\t\t\tmeasured.availableInputTokens === null ||\n\t\t\t\tmeasured.estimatedInputTokens === null\n\t\t\t\t? undefined\n\t\t\t\t: Math.floor(measured.availableInputTokens - measured.estimatedInputTokens);\n\t\t},\n\t\tboundary.isSourceCurrent,\n\t);\n}\n\n/** Check the actual final mapping without selecting, converting, or committing another view. */\nexport async function prepareFixedRequestView(\n\tboundary: CapturedRequestViewBoundary,\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tassessment: RequestTokenAssessment | undefined,\n) {\n\tprojection = canonicalRequestProjection(boundary, projection);\n\tconst inputKey = requestInputKey(request, projection);\n\tconst payload = JSON.parse(request.body!) as Record<string, unknown> | null;\n\tconst input = inputKey && payload ? payload[inputKey] : undefined;\n\tif (!Array.isArray(input) || input.length !== projection.messageIndices.length)\n\t\tthrow new Error(\"Fixed context requires its final provider projection\");\n\tif (\n\t\tprojection.kind === \"openai-responses-text-v1\" &&\n\t\tboundary.messages.some(\n\t\t\t(message) =>\n\t\t\t\tmessage.role === \"toolResult\" ||\n\t\t\t\t(message.role === \"assistant\" && (message.content.length !== 1 || message.content[0].type !== \"text\")),\n\t\t)\n\t)\n\t\tthrow new Error(\"Fixed context requires its native replay adapter\");\n\tconst units = bindMessageReplayUnits(\n\t\tboundary.messages,\n\t\tboundary.units,\n\t\tboundary.limits,\n\t\tprojection.replayContract ?? \"complete-context\",\n\t);\n\tcloseViewSelection(\n\t\tunits,\n\t\tunits.map((unit) => unit.id),\n\t\tboundary.limits,\n\t);\n\treturn await boundary.fixedPrepare!(request, projection, assessment);\n}\n\n/** Reuse the same legal omission policy for native and already-converted public requests. */\nasync function offerOptionalSubset(\n\tmessages: readonly AgentMessage[],\n\tunits: CanonicalViewSelectionSource[\"units\"],\n\tselection: ReturnType<typeof prepareViewSelection>,\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tbudget: RequestTokenBudgetEvaluator,\n\toffer: (\n\t\tids: readonly string[],\n\t\trequest: ProviderRequestRepresentation,\n\t\tprojection: ProviderRequestProjection,\n\t\tassessment: RequestTokenAssessment,\n\t) => Promise<unknown>,\n): Promise<string | undefined> {\n\tconst inputKey = requestInputKey(request, projection);\n\tif (!inputKey) return;\n\tconst payload = JSON.parse(request.body!) as Record<string, unknown>;\n\tconst input = payload[inputKey];\n\tif (!Array.isArray(input) || input.length !== projection.messageIndices.length) return;\n\tlet latestAssistant = -1;\n\tfor (const [index, message] of messages.entries()) if (message.role === \"assistant\") latestAssistant = index;\n\tconst retained = new Set(projection.messageIndices.slice(0, request.retainedPrefix?.inputItems ?? 0));\n\tconst projectedOptional =\n\t\tprojection.kind !== \"openai-responses-text-v1\" ? new Set(projection.optionalMessageIndices ?? []) : undefined;\n\tconst optional = units.filter((unit, index) => {\n\t\tconst message = messages[index];\n\t\treturn (\n\t\t\tindex !== latestAssistant &&\n\t\t\t!retained.has(index) &&\n\t\t\t(!projectedOptional || projectedOptional.has(index)) &&\n\t\t\tunit.kind === \"literal\" &&\n\t\t\tunit.authority === \"assistant-public\" &&\n\t\t\tmessage.role === \"assistant\" &&\n\t\t\tmessage.stopReason === \"stop\" &&\n\t\t\tmessage.content.length === 1 &&\n\t\t\tmessage.content[0].type === \"text\"\n\t\t);\n\t});\n\tconst generatedPositions = new Map<string, number>();\n\tconst generated =\n\t\tprojection.generatedMessageIndices ??\n\t\tmessages.flatMap((message, index) =>\n\t\t\tmessage.role === \"assistant\" &&\n\t\t\tmessage.content.some((block) => block.type === \"text\" && block.textSignature === undefined)\n\t\t\t\t? [index]\n\t\t\t\t: [],\n\t\t);\n\tfor (const index of generated) generatedPositions.set(units[index].id, index);\n\t// All user inputs, the latest assistant, fixed/TaskFrame/recovery units and errors stay selected.\n\tconst selected = new Set(units.map((unit) => unit.id));\n\tfor (const unit of optional) {\n\t\tselected.delete(unit.id);\n\t\tconst closed = selection.close([...selected]);\n\t\t// Normal Responses rendering uses msg_<message index> for unsigned assistants.\n\t\t// Reject any subset that would change a retained generated item ID on reconstruction.\n\t\tif (closed.some((item, index) => generatedPositions.has(item.id) && generatedPositions.get(item.id) !== index))\n\t\t\tcontinue;\n\t\tconst closedIds = new Set(closed.map((item) => item.id));\n\t\tconst keepItem = (index: number) => {\n\t\t\tconst messageIndex = projection.messageIndices[index];\n\t\t\treturn messageIndex === null || closedIds.has(units[messageIndex].id);\n\t\t};\n\t\tconst body = JSON.stringify({ ...payload, [inputKey]: input.filter((_, index) => keepItem(index)) });\n\t\tconst candidateRequest = { ...request, body };\n\t\tconst assessment = budget.measure(candidateRequest);\n\t\tif (assessment.status !== \"within-estimate\") continue;\n\t\tawait offer(\n\t\t\tclosed.map((item) => item.id),\n\t\t\tcandidateRequest,\n\t\t\t{\n\t\t\t\t...projection,\n\t\t\t\tmessageIndices: projection.messageIndices.filter((_, index) => keepItem(index)),\n\t\t\t\t...(projection.optionalMessageIndices\n\t\t\t\t\t? {\n\t\t\t\t\t\t\toptionalMessageIndices: projection.optionalMessageIndices.filter((index) =>\n\t\t\t\t\t\t\t\tclosedIds.has(units[index].id),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\t...(projection.generatedMessageIndices\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tgeneratedMessageIndices: projection.generatedMessageIndices.filter((index) =>\n\t\t\t\t\t\t\t\tclosedIds.has(units[index].id),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t\tassessment,\n\t\t);\n\t\treturn body;\n\t}\n\treturn;\n}\n\n/** Only the actual serializer's established replay contract authorizes historical-literal omission. */\nexport async function selectRequestView(\n\tboundary: CapturedRequestViewBoundary,\n\trequest: ProviderRequestRepresentation,\n\tprojection: ProviderRequestProjection,\n\tbudget: RequestTokenBudgetEvaluator | undefined,\n\tallowShrink: boolean,\n\tfinalizeMeasurement?: (\n\t\trequest: ProviderRequestRepresentation,\n\t\tassessment: RequestTokenAssessment | undefined,\n\t) => Promise<RequestTokenAssessment | undefined>,\n): Promise<string | undefined> {\n\tprojection = canonicalRequestProjection(boundary, projection);\n\tlet full = budget?.measure(request);\n\tconst inputKey = requestInputKey(request, projection);\n\tif ((budget && full?.limitSource !== \"explicit-profile\") || !inputKey) return;\n\tif (!budget && !boundary.requiresEpoch && !boundary.pendingPublicMessageGroups?.length) return;\n\tconst payload = JSON.parse(request.body!) as Record<string, unknown>;\n\tconst input = payload[inputKey];\n\tif (!Array.isArray(input) || input.length !== projection.messageIndices.length) return;\n\t// Resolve a near-limit estimate before discarding a stable native prefix. Original\n\t// protected tool groups must first pass their public conversion below.\n\tif (\n\t\tfull?.status === \"over-budget\" &&\n\t\t!boundary.pendingPublicMessageGroups?.length &&\n\t\t!projection.pendingPublicMessageGroups?.length\n\t)\n\t\tfull = (await finalizeMeasurement?.(request, full)) ?? full;\n\n\t// Absence is complete-context; a profile or tool-shaped message is never group authority.\n\tconst replayContract = projection.replayContract ?? \"complete-context\";\n\tif (\n\t\tprojection.kind === \"openai-responses-text-v1\" &&\n\t\tboundary.messages.some(\n\t\t\t(message) =>\n\t\t\t\tmessage.role === \"toolResult\" ||\n\t\t\t\t(message.role === \"assistant\" && (message.content.length !== 1 || message.content[0].type !== \"text\")),\n\t\t)\n\t)\n\t\treturn;\n\tconst units = bindMessageReplayUnits(\n\t\tboundary.messages,\n\t\tboundary.units,\n\t\tboundary.limits,\n\t\treplayContract,\n\t\tboundary.pendingPublicMessageGroups,\n\t);\n\tconst selection = prepareViewSelection(units, boundary.limits);\n\tconst offer = async (\n\t\tselectedUnitIds: readonly string[],\n\t\tcandidateRequest: ProviderRequestRepresentation,\n\t\tcandidateProjection: ProviderRequestProjection,\n\t\tassessment: RequestTokenAssessment | undefined,\n\t\tpublicMessages?: readonly AgentMessage[],\n\t) => {\n\t\tassessment = (await finalizeMeasurement?.(candidateRequest, assessment)) ?? assessment;\n\t\tif (budget && assessment) {\n\t\t\tif (assessment.status === \"over-budget\" && full)\n\t\t\t\tthrow publicBudgetFailure(\n\t\t\t\t\tboundary,\n\t\t\t\t\tpublicMessages ?? boundary.messages,\n\t\t\t\t\tcandidateRequest,\n\t\t\t\t\tcandidateProjection,\n\t\t\t\t\tbudget,\n\t\t\t\t\tassessment,\n\t\t\t\t\tfull,\n\t\t\t\t);\n\t\t\tbudget.assert(assessment);\n\t\t}\n\t\treturn boundary.commit(\n\t\t\tObject.freeze({\n\t\t\t\t...(boundary.responseItemIdentity ? { responseItemIdentity: boundary.responseItemIdentity } : {}),\n\t\t\t\tsource: Object.freeze({ ...boundary.source }),\n\t\t\t\tselectedUnitIds: Object.freeze([...selectedUnitIds]),\n\t\t\t\trequest: Object.freeze({ ...candidateRequest }),\n\t\t\t\tprojection: Object.freeze({\n\t\t\t\t\t...candidateProjection,\n\t\t\t\t\treplayContract,\n\t\t\t\t\tmessageIndices: Object.freeze([...candidateProjection.messageIndices]),\n\t\t\t\t\t...(candidateProjection.optionalMessageIndices\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\toptionalMessageIndices: Object.freeze([...candidateProjection.optionalMessageIndices]),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\t...(candidateProjection.generatedMessageIndices\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tgeneratedMessageIndices: Object.freeze([...candidateProjection.generatedMessageIndices]),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t}),\n\t\t\t\tassessment,\n\t\t\t\toriginalAssessment: full,\n\t\t\t\t...(publicMessages ? { publicMessages } : {}),\n\t\t\t}),\n\t\t);\n\t};\n\tconst offerPublicSubset = async (\n\t\tmessages: readonly AgentMessage[],\n\t\trequest: ProviderRequestRepresentation,\n\t\tprojection: ProviderRequestProjection,\n\t): Promise<string | undefined> => {\n\t\tif (!allowShrink || !budget || replayContract !== \"message-groups\") return;\n\t\tconst source = getCanonicalViewSelectionSource(messages)!;\n\t\tconst units = bindMessageReplayUnits(messages, source.units, boundary.limits, replayContract);\n\t\treturn offerOptionalSubset(\n\t\t\tmessages,\n\t\t\tunits,\n\t\t\tprepareViewSelection(units, boundary.limits),\n\t\t\trequest,\n\t\t\tprojection,\n\t\t\tbudget,\n\t\t\t(ids, candidate, mapping, assessment) => offer(ids, candidate, mapping, assessment, messages),\n\t\t);\n\t};\n\tif (boundary.pendingPublicMessageGroups?.length) {\n\t\tif (\n\t\t\treplayContract !== \"message-groups\" ||\n\t\t\t!projection.publicWindow ||\n\t\t\t!projection.encodePublicWindow ||\n\t\t\tJSON.stringify(projection.pendingPublicMessageGroups) !== JSON.stringify(boundary.pendingPublicMessageGroups)\n\t\t)\n\t\t\tthrow new Error(\"Original tool group requires current native adapter public conversion\");\n\t\tconst publicView = prepareToolContinuationWindow(boundary.messages);\n\t\tconst encoded = projection.encodePublicWindow(publicView.replacements);\n\t\tif (!encoded || encoded.projection.pendingPublicMessageGroups?.length)\n\t\t\tthrow new Error(\"Native adapter did not convert the whole required tool group\");\n\t\tconst publicSource = getCanonicalViewSelectionSource(publicView.messages)!;\n\t\tconst publicUnits = bindMessageReplayUnits(\n\t\t\tpublicView.messages,\n\t\t\tpublicSource.units,\n\t\t\tboundary.limits,\n\t\t\treplayContract,\n\t\t);\n\t\tconst closed = closeViewSelection(\n\t\t\tpublicUnits,\n\t\t\tpublicUnits.map((unit) => unit.id),\n\t\t\tboundary.limits,\n\t\t);\n\t\tlet assessment = budget?.measure(encoded.request);\n\t\tif (assessment?.status === \"over-budget\")\n\t\t\tassessment = (await finalizeMeasurement?.(encoded.request, assessment)) ?? assessment;\n\t\tif (assessment && full) {\n\t\t\tif (assessment.status === \"over-budget\") {\n\t\t\t\tconst subset = await offerPublicSubset(publicView.messages, encoded.request, encoded.projection);\n\t\t\t\tif (subset !== undefined) return subset;\n\t\t\t\tthrow publicBudgetFailure(\n\t\t\t\t\tboundary,\n\t\t\t\t\tpublicView.messages,\n\t\t\t\t\tencoded.request,\n\t\t\t\t\tencoded.projection,\n\t\t\t\t\tbudget!,\n\t\t\t\t\tassessment,\n\t\t\t\t\tfull,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (assessment.status !== \"within-estimate\")\n\t\t\t\tthrow new Error(\"Tool continuation public request exceeds its token budget\");\n\t\t}\n\t\tawait offer(\n\t\t\tclosed.map((unit) => unit.id),\n\t\t\tencoded.request,\n\t\t\tencoded.projection,\n\t\t\tassessment,\n\t\t\tpublicView.messages,\n\t\t);\n\t\treturn encoded.request.body;\n\t}\n\tif (projection.pendingPublicMessageGroups?.length)\n\t\tthrow new Error(\"Adapter pending group has no original owned source plan\");\n\t// Without a configured budget, admit only the exact full native view. Never shrink it.\n\tif (!budget) {\n\t\tconst closed = selection.close(units.map((unit) => unit.id));\n\t\tawait offer(\n\t\t\tclosed.map((unit) => unit.id),\n\t\t\trequest,\n\t\t\tprojection,\n\t\t\tundefined,\n\t\t);\n\t\treturn request.body;\n\t}\n\tif (!full) return;\n\tconst offerPublicWindow = async (): Promise<string | undefined> => {\n\t\tif (\n\t\t\t!allowShrink ||\n\t\t\treplayContract !== \"message-groups\" ||\n\t\t\t!projection.publicWindow ||\n\t\t\t!projection.encodePublicWindow\n\t\t)\n\t\t\treturn;\n\t\tconst closed = selection.close(units.map((unit) => unit.id));\n\t\tlet firstMessageIndex = 0;\n\t\tif (\n\t\t\tfull.status === \"unknown\" &&\n\t\t\tfull.unknown.length === 1 &&\n\t\t\tfull.unknown[0] === \"media, opaque or unsupported replay token coverage unknown\"\n\t\t) {\n\t\t\t// Credited items are not part of the unknown input. Keep original projection indices.\n\t\t\tconst firstUnmeteredItem = request.retainedPrefix?.inputItems ?? 0;\n\t\t\tconst reasoningItemIndex = input.findIndex(\n\t\t\t\t(item, index) => index >= firstUnmeteredItem && item?.type === \"reasoning\",\n\t\t\t);\n\t\t\tconst messageIndex = projection.messageIndices[reasoningItemIndex];\n\t\t\tconst group =\n\t\t\t\tmessageIndex == null\n\t\t\t\t\t? undefined\n\t\t\t\t\t: projection.publicMessageGroups?.find((members) => members.includes(messageIndex));\n\t\t\t// The adapter still accepts only complete groups; earlier meterable groups stay native.\n\t\t\tfirstMessageIndex = group ? Math.min(...group) : 0;\n\t\t}\n\t\tconst publicView = preparePublicContextWindow(boundary.messages, firstMessageIndex);\n\t\tif (!publicView) {\n\t\t\t// Keep the original measured refusal when no public conversion can be offered.\n\t\t\t// This is not a new recovery signal or permission to reprepare again.\n\t\t\tif (full.status === \"over-budget\") throw new RequestTokenBudgetError(full);\n\t\t\treturn;\n\t\t}\n\t\tconst encoded = projection.encodePublicWindow(publicView.replacements);\n\t\tif (!encoded) return;\n\t\tlet assessment = budget.measure(encoded.request);\n\t\tif (assessment.status === \"over-budget\")\n\t\t\tassessment = (await finalizeMeasurement?.(encoded.request, assessment)) ?? assessment;\n\t\tif (assessment.status === \"over-budget\") {\n\t\t\tconst subset = await offerPublicSubset(publicView.messages, encoded.request, encoded.projection);\n\t\t\tif (subset !== undefined) return subset;\n\t\t\tthrow publicBudgetFailure(\n\t\t\t\tboundary,\n\t\t\t\tpublicView.messages,\n\t\t\t\tencoded.request,\n\t\t\t\tencoded.projection,\n\t\t\t\tbudget,\n\t\t\t\tassessment,\n\t\t\t\tfull,\n\t\t\t);\n\t\t}\n\t\tif (assessment.status !== \"within-estimate\") return;\n\t\tawait offer(\n\t\t\tclosed.map((unit) => unit.id),\n\t\t\tencoded.request,\n\t\t\tencoded.projection,\n\t\t\tassessment,\n\t\t\tpublicView.messages,\n\t\t);\n\t\treturn encoded.request.body;\n\t};\n\tif (full.status === \"within-estimate\") {\n\t\tconst closed = selection.close(units.map((unit) => unit.id));\n\t\tawait offer(\n\t\t\tclosed.map((unit) => unit.id),\n\t\t\trequest,\n\t\t\tprojection,\n\t\t\tfull,\n\t\t);\n\t\treturn request.body;\n\t}\n\tif (!allowShrink || replayContract !== \"message-groups\") return;\n\tif (full.status !== \"over-budget\") return offerPublicWindow();\n\tconst subset = await offerOptionalSubset(boundary.messages, units, selection, request, projection, budget, offer);\n\tif (subset !== undefined) return subset;\n\treturn offerPublicWindow();\n}\n"]}