effect-agent 0.1.0-beta.85 → 0.1.0-beta.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Agent-CN0EWRsR.d.mts +226 -0
- package/dist/Agent-RklVROrm.mjs +83 -0
- package/dist/Agent-RklVROrm.mjs.map +1 -0
- package/dist/AgentError-CggcAQ7V.d.mts +101 -0
- package/dist/AgentPolicy-CetmQrf3.d.mts +96 -0
- package/dist/AgentRuntime-BLyETCPo.mjs +4562 -0
- package/dist/AgentRuntime-BLyETCPo.mjs.map +1 -0
- package/dist/AgentRuntime-uxR_a4VM.d.mts +346 -0
- package/dist/AgentUpdates-DMJ-_xow.d.mts +53 -0
- package/dist/ContextCompactor-Dxu5zhOL.d.mts +161 -0
- package/dist/ContextWindow-DRQ5Mbm2.d.mts +58 -0
- package/dist/DurableAgentRuntime-uggeJpv3.mjs +6368 -0
- package/dist/DurableAgentRuntime-uggeJpv3.mjs.map +1 -0
- package/dist/DurableFailpoint-Oinuuedm.d.mts +41 -0
- package/dist/DurableStep-Cry_iol4.d.mts +103 -0
- package/dist/Ephemeral.d.mts +22 -0
- package/dist/Ephemeral.mjs +22 -0
- package/dist/Ephemeral.mjs.map +1 -0
- package/dist/EventSource-OqS_P9ug.d.mts +51 -0
- package/dist/Identifiers-CN2s30fF.d.mts +40 -0
- package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
- package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
- package/dist/Messaging-CkcIdt4I.d.mts +490 -0
- package/dist/MessagingHost-CRk0kXzT.d.mts +246 -0
- package/dist/MessagingHost-CWi_PP3g.mjs +137 -0
- package/dist/MessagingHost-CWi_PP3g.mjs.map +1 -0
- package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
- package/dist/Output-D6SkedVx.d.mts +25 -0
- package/dist/PageCapture-Df8Xwskw.d.mts +583 -0
- package/dist/PageScreenshot-BpgZKAxl.d.mts +48 -0
- package/dist/PreparedInputAdmission-C4HbjHgl.d.mts +38 -0
- package/dist/Receipt-BAHyigAF.d.mts +33 -0
- package/dist/Records-BAGkekt8.d.mts +3570 -0
- package/dist/RunEvent-DIrzkjLr.d.mts +460 -0
- package/dist/RunEventSink-D5aVhISG.d.mts +108 -0
- package/dist/RunJournal-Cgg1kNvc.mjs +825 -0
- package/dist/RunJournal-Cgg1kNvc.mjs.map +1 -0
- package/dist/RunOptions-g1aigcKI.d.mts +915 -0
- package/dist/RunPolicyUsage-ClZxyR46.d.mts +21 -0
- package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
- package/dist/Schedule-H3SEYX9g.d.mts +842 -0
- package/dist/Scheduling-C9aIP8zT.mjs +691 -0
- package/dist/Scheduling-C9aIP8zT.mjs.map +1 -0
- package/dist/Subagent-Cy_hU1tv.mjs +1469 -0
- package/dist/Subagent-Cy_hU1tv.mjs.map +1 -0
- package/dist/Subagent-DyfzHNdv.d.mts +826 -0
- package/dist/SubagentContract-DdT7Cqe6.d.mts +116 -0
- package/dist/SubagentHost-CJUBQlcc.d.mts +140 -0
- package/dist/Subscription-BEP8oQO5.d.mts +921 -0
- package/dist/SubscriptionInput-vAAOBrK7.d.mts +41 -0
- package/dist/Thread-DOBQ0QUY.d.mts +96 -0
- package/dist/ThreadHistory-tS1KwxHR.d.mts +60 -0
- package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
- package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
- package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
- package/dist/ToolExposure-C93U1sPu.mjs +30 -0
- package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
- package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
- package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
- package/dist/ToolExposure.d.mts +6 -5
- package/dist/ToolExposure.mjs +17 -9
- package/dist/ToolExposure.mjs.map +1 -1
- package/dist/ToolReconciler-DQVaJfpE.d.mts +76 -0
- package/dist/ToolResult-DmmgoChv.d.mts +61 -0
- package/dist/Usage-Dx0aknfk.d.mts +121 -0
- package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
- package/dist/Worker-CaPYykpe.d.mts +228 -0
- package/dist/agent-registration-CWDMOAZA.mjs +172 -0
- package/dist/agent-registration-CWDMOAZA.mjs.map +1 -0
- package/dist/capabilities/Approval.d.mts +114 -0
- package/dist/capabilities/Approval.mjs +226 -0
- package/dist/capabilities/Approval.mjs.map +1 -0
- package/dist/capabilities/Budget.d.mts +112 -0
- package/dist/capabilities/Budget.mjs +346 -0
- package/dist/capabilities/Budget.mjs.map +1 -0
- package/dist/capabilities/CodeMode.d.mts +157 -0
- package/dist/capabilities/CodeMode.mjs +522 -0
- package/dist/capabilities/CodeMode.mjs.map +1 -0
- package/dist/capabilities/Commands.d.mts +55 -0
- package/dist/capabilities/Commands.mjs +57 -0
- package/dist/capabilities/Commands.mjs.map +1 -0
- package/dist/capabilities/ContextTools.d.mts +321 -0
- package/dist/capabilities/ContextTools.mjs +126 -0
- package/dist/capabilities/ContextTools.mjs.map +1 -0
- package/dist/capabilities/Mcp.d.mts +108 -0
- package/dist/capabilities/Mcp.mjs +260 -0
- package/dist/capabilities/Mcp.mjs.map +1 -0
- package/dist/capabilities/McpClient.d.mts +115 -0
- package/dist/capabilities/McpClient.mjs +506 -0
- package/dist/capabilities/McpClient.mjs.map +1 -0
- package/dist/capabilities/MemoryNotes.d.mts +424 -0
- package/dist/capabilities/MemoryNotes.mjs +128 -0
- package/dist/capabilities/MemoryNotes.mjs.map +1 -0
- package/dist/capabilities/Messaging.d.mts +3 -0
- package/dist/capabilities/Messaging.mjs +151 -0
- package/dist/capabilities/Messaging.mjs.map +1 -0
- package/dist/capabilities/ModelContext.d.mts +89 -0
- package/dist/capabilities/ModelContext.mjs +168 -0
- package/dist/capabilities/ModelContext.mjs.map +1 -0
- package/dist/capabilities/Redaction.d.mts +37 -0
- package/dist/capabilities/Redaction.mjs +104 -0
- package/dist/capabilities/Redaction.mjs.map +1 -0
- package/dist/capabilities/Remembering.d.mts +434 -0
- package/dist/capabilities/Remembering.mjs +290 -0
- package/dist/capabilities/Remembering.mjs.map +1 -0
- package/dist/capabilities/RunHooks.d.mts +82 -0
- package/dist/capabilities/RunHooks.mjs +144 -0
- package/dist/capabilities/RunHooks.mjs.map +1 -0
- package/dist/capabilities/SemanticMemory.d.mts +431 -0
- package/dist/capabilities/SemanticMemory.mjs +315 -0
- package/dist/capabilities/SemanticMemory.mjs.map +1 -0
- package/dist/capabilities/Subagent.d.mts +4 -0
- package/dist/capabilities/Subagent.mjs +5 -0
- package/dist/capabilities/SubagentReservations.d.mts +186 -0
- package/dist/capabilities/SubagentReservations.mjs +479 -0
- package/dist/capabilities/SubagentReservations.mjs.map +1 -0
- package/dist/capabilities/ToolDiscovery.d.mts +109 -0
- package/dist/capabilities/ToolDiscovery.mjs +211 -0
- package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
- package/dist/capabilities/WebCapture.d.mts +163 -0
- package/dist/capabilities/WebCapture.mjs +335 -0
- package/dist/capabilities/WebCapture.mjs.map +1 -0
- package/dist/capabilities/WebSearch.d.mts +71 -0
- package/dist/capabilities/WebSearch.mjs +112 -0
- package/dist/capabilities/WebSearch.mjs.map +1 -0
- package/dist/compaction-C2OTceKw.mjs +505 -0
- package/dist/compaction-C2OTceKw.mjs.map +1 -0
- package/dist/core/Agent.d.mts +2 -0
- package/dist/core/Agent.mjs +2 -0
- package/dist/core/AgentError.d.mts +2 -0
- package/dist/core/AgentError.mjs +117 -0
- package/dist/core/AgentError.mjs.map +1 -0
- package/dist/core/AgentPolicy.d.mts +2 -0
- package/dist/core/AgentPolicy.mjs +94 -0
- package/dist/core/AgentPolicy.mjs.map +1 -0
- package/dist/core/AgentUpdates.d.mts +2 -0
- package/dist/core/AgentUpdates.mjs +63 -0
- package/dist/core/AgentUpdates.mjs.map +1 -0
- package/dist/core/IdGenerator.d.mts +26 -0
- package/dist/core/IdGenerator.mjs +27 -0
- package/dist/core/IdGenerator.mjs.map +1 -0
- package/dist/core/Identifiers.d.mts +2 -0
- package/dist/core/Identifiers.mjs +43 -0
- package/dist/core/Identifiers.mjs.map +1 -0
- package/dist/core/Memory.d.mts +57 -0
- package/dist/core/Memory.mjs +203 -0
- package/dist/core/Memory.mjs.map +1 -0
- package/dist/core/MemoryNamespace.d.mts +2 -0
- package/dist/core/MemoryNamespace.mjs +116 -0
- package/dist/core/MemoryNamespace.mjs.map +1 -0
- package/dist/core/MemoryReference.d.mts +2 -0
- package/dist/core/MemoryReference.mjs +109 -0
- package/dist/core/MemoryReference.mjs.map +1 -0
- package/dist/core/MemoryRevalidation.d.mts +65 -0
- package/dist/core/MemoryRevalidation.mjs +126 -0
- package/dist/core/MemoryRevalidation.mjs.map +1 -0
- package/dist/core/MemoryStore.d.mts +186 -0
- package/dist/core/MemoryStore.mjs +243 -0
- package/dist/core/MemoryStore.mjs.map +1 -0
- package/dist/core/Receipt.d.mts +2 -0
- package/dist/core/Receipt.mjs +36 -0
- package/dist/core/Receipt.mjs.map +1 -0
- package/dist/core/RememberingStore.d.mts +1562 -0
- package/dist/core/RememberingStore.mjs +190 -0
- package/dist/core/RememberingStore.mjs.map +1 -0
- package/dist/core/RunEvent.d.mts +2 -0
- package/dist/core/RunEvent.mjs +337 -0
- package/dist/core/RunEvent.mjs.map +1 -0
- package/dist/core/RunPolicyUsage.d.mts +2 -0
- package/dist/core/RunPolicyUsage.mjs +21 -0
- package/dist/core/RunPolicyUsage.mjs.map +1 -0
- package/dist/core/SemanticMemoryIndex.d.mts +826 -0
- package/dist/core/SemanticMemoryIndex.mjs +185 -0
- package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
- package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
- package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
- package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
- package/dist/core/SubagentContract.d.mts +2 -0
- package/dist/core/SubagentContract.mjs +148 -0
- package/dist/core/SubagentContract.mjs.map +1 -0
- package/dist/core/Thread.d.mts +2 -0
- package/dist/core/Thread.mjs +250 -0
- package/dist/core/Thread.mjs.map +1 -0
- package/dist/core/ToolResult.d.mts +2 -0
- package/dist/core/ToolResult.mjs +140 -0
- package/dist/core/ToolResult.mjs.map +1 -0
- package/dist/core/Usage.d.mts +2 -0
- package/dist/core/Usage.mjs +319 -0
- package/dist/core/Usage.mjs.map +1 -0
- package/dist/core/Worker.d.mts +3 -0
- package/dist/core/Worker.mjs +147 -0
- package/dist/core/Worker.mjs.map +1 -0
- package/dist/durable/ActivityStore.d.mts +116 -0
- package/dist/durable/ActivityStore.mjs +131 -0
- package/dist/durable/ActivityStore.mjs.map +1 -0
- package/dist/durable/Admin.d.mts +2 -0
- package/dist/durable/Admin.mjs +328 -0
- package/dist/durable/Admin.mjs.map +1 -0
- package/dist/durable/AgentRegistration.d.mts +2 -0
- package/dist/durable/AgentRegistration.mjs +14 -0
- package/dist/durable/AgentRegistration.mjs.map +1 -0
- package/dist/durable/Certification.d.mts +111 -0
- package/dist/durable/Certification.mjs +159 -0
- package/dist/durable/Certification.mjs.map +1 -0
- package/dist/durable/CommittedActivity.d.mts +62 -0
- package/dist/durable/CommittedActivity.mjs +159 -0
- package/dist/durable/CommittedActivity.mjs.map +1 -0
- package/dist/durable/Digest.d.mts +2 -0
- package/dist/durable/Digest.mjs +50 -0
- package/dist/durable/Digest.mjs.map +1 -0
- package/dist/durable/DurableAgentRuntime.d.mts +3 -0
- package/dist/durable/DurableAgentRuntime.mjs +3 -0
- package/dist/durable/DurableFailpoint.d.mts +2 -0
- package/dist/durable/DurableFailpoint.mjs +94 -0
- package/dist/durable/DurableFailpoint.mjs.map +1 -0
- package/dist/durable/DurableFailpointTestControl.d.mts +15 -0
- package/dist/durable/DurableFailpointTestControl.mjs +19 -0
- package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
- package/dist/durable/EventSource.d.mts +2 -0
- package/dist/durable/EventSource.mjs +65 -0
- package/dist/durable/EventSource.mjs.map +1 -0
- package/dist/durable/GitHubWorkflowSource.d.mts +144 -0
- package/dist/durable/GitHubWorkflowSource.mjs +209 -0
- package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
- package/dist/durable/MessageDelivery.d.mts +492 -0
- package/dist/durable/MessageDelivery.mjs +495 -0
- package/dist/durable/MessageDelivery.mjs.map +1 -0
- package/dist/durable/MessageDeliveryStoreConformance.d.mts +358 -0
- package/dist/durable/MessageDeliveryStoreConformance.mjs +243 -0
- package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
- package/dist/durable/OperationAuthorizer.d.mts +2 -0
- package/dist/durable/OperationAuthorizer.mjs +70 -0
- package/dist/durable/OperationAuthorizer.mjs.map +1 -0
- package/dist/durable/PersistentHistory.d.mts +16 -0
- package/dist/durable/PersistentHistory.mjs +125 -0
- package/dist/durable/PersistentHistory.mjs.map +1 -0
- package/dist/durable/PreparedInputAdmission.d.mts +2 -0
- package/dist/durable/PreparedInputAdmission.mjs +34 -0
- package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
- package/dist/durable/Records.d.mts +2 -0
- package/dist/durable/Records.mjs +795 -0
- package/dist/durable/Records.mjs.map +1 -0
- package/dist/durable/Recovery.d.mts +2 -0
- package/dist/durable/Recovery.mjs +739 -0
- package/dist/durable/Recovery.mjs.map +1 -0
- package/dist/durable/RunJournal.d.mts +2 -0
- package/dist/durable/RunJournal.mjs +2 -0
- package/dist/durable/Schedule.d.mts +2 -0
- package/dist/durable/Schedule.mjs +382 -0
- package/dist/durable/Schedule.mjs.map +1 -0
- package/dist/durable/ScheduleStoreConformance.d.mts +18 -0
- package/dist/durable/ScheduleStoreConformance.mjs +420 -0
- package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
- package/dist/durable/ScheduleTransition.d.mts +24 -0
- package/dist/durable/ScheduleTransition.mjs +180 -0
- package/dist/durable/ScheduleTransition.mjs.map +1 -0
- package/dist/durable/Scheduling.d.mts +54 -0
- package/dist/durable/Scheduling.mjs +2 -0
- package/dist/durable/SqlMemoryStore.d.mts +30 -0
- package/dist/durable/SqlMemoryStore.mjs +435 -0
- package/dist/durable/SqlMemoryStore.mjs.map +1 -0
- package/dist/durable/SqlMessageDeliveryStore.d.mts +40 -0
- package/dist/durable/SqlMessageDeliveryStore.mjs +167 -0
- package/dist/durable/SqlMessageDeliveryStore.mjs.map +1 -0
- package/dist/durable/SqlStorageV2Upgrade.d.mts +22 -0
- package/dist/durable/SqlStorageV2Upgrade.mjs +459 -0
- package/dist/durable/SqlStorageV2Upgrade.mjs.map +1 -0
- package/dist/durable/SqlSubscriptionStore.d.mts +63 -0
- package/dist/durable/SqlSubscriptionStore.mjs +751 -0
- package/dist/durable/SqlSubscriptionStore.mjs.map +1 -0
- package/dist/durable/SubmissionLedger.d.mts +3 -0
- package/dist/durable/SubmissionLedger.mjs +914 -0
- package/dist/durable/SubmissionLedger.mjs.map +1 -0
- package/dist/durable/SubmissionLedgerConformance.d.mts +30 -0
- package/dist/durable/SubmissionLedgerConformance.mjs +1986 -0
- package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
- package/dist/durable/SubmissionStatus.d.mts +2 -0
- package/dist/durable/SubmissionStatus.mjs +18 -0
- package/dist/durable/SubmissionStatus.mjs.map +1 -0
- package/dist/durable/Subscription.d.mts +2 -0
- package/dist/durable/Subscription.mjs +360 -0
- package/dist/durable/Subscription.mjs.map +1 -0
- package/dist/durable/SubscriptionInput.d.mts +2 -0
- package/dist/durable/SubscriptionInput.mjs +52 -0
- package/dist/durable/SubscriptionInput.mjs.map +1 -0
- package/dist/durable/SubscriptionStoreConformance.d.mts +17 -0
- package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
- package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
- package/dist/durable/SubscriptionTools.d.mts +273 -0
- package/dist/durable/SubscriptionTools.mjs +190 -0
- package/dist/durable/SubscriptionTools.mjs.map +1 -0
- package/dist/durable/SubscriptionTransition.d.mts +21 -0
- package/dist/durable/SubscriptionTransition.mjs +148 -0
- package/dist/durable/SubscriptionTransition.mjs.map +1 -0
- package/dist/durable/Subscriptions.d.mts +73 -0
- package/dist/durable/Subscriptions.mjs +627 -0
- package/dist/durable/Subscriptions.mjs.map +1 -0
- package/dist/durable/ThreadContextHistory.d.mts +32 -0
- package/dist/durable/ThreadContextHistory.mjs +152 -0
- package/dist/durable/ThreadContextHistory.mjs.map +1 -0
- package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
- package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
- package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
- package/dist/durable/ThreadInvariants.d.mts +74 -0
- package/dist/durable/ThreadInvariants.mjs +200 -0
- package/dist/durable/ThreadInvariants.mjs.map +1 -0
- package/dist/durable/ThreadProjection.d.mts +78 -0
- package/dist/durable/ThreadProjection.mjs +158 -0
- package/dist/durable/ThreadProjection.mjs.map +1 -0
- package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
- package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
- package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
- package/dist/durable/ThreadStore.d.mts +2 -0
- package/dist/durable/ThreadStore.mjs +147 -0
- package/dist/durable/ThreadStore.mjs.map +1 -0
- package/dist/durable/ThreadStoreConformance.d.mts +29 -0
- package/dist/durable/ThreadStoreConformance.mjs +248 -0
- package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
- package/dist/durable/ToolReconciler.d.mts +2 -0
- package/dist/durable/ToolReconciler.mjs +81 -0
- package/dist/durable/ToolReconciler.mjs.map +1 -0
- package/dist/durable/WakeScheduler.d.mts +2 -0
- package/dist/durable/WakeScheduler.mjs +85 -0
- package/dist/durable/WakeScheduler.mjs.map +1 -0
- package/dist/durable/WorkerHost.d.mts +129 -0
- package/dist/durable/WorkerHost.mjs +77 -0
- package/dist/durable/WorkerHost.mjs.map +1 -0
- package/dist/engine/AgentRuntime.d.mts +2 -0
- package/dist/engine/AgentRuntime.mjs +2 -0
- package/dist/engine/Compaction.d.mts +7 -0
- package/dist/engine/Compaction.mjs +16 -0
- package/dist/engine/Compaction.mjs.map +1 -0
- package/dist/engine/ContextCompactor.d.mts +2 -0
- package/dist/engine/ContextCompactor.mjs +119 -0
- package/dist/engine/ContextCompactor.mjs.map +1 -0
- package/dist/engine/ContextHistory.d.mts +65 -0
- package/dist/engine/ContextHistory.mjs +76 -0
- package/dist/engine/ContextHistory.mjs.map +1 -0
- package/dist/engine/ContextWindow.d.mts +2 -0
- package/dist/engine/ContextWindow.mjs +59 -0
- package/dist/engine/ContextWindow.mjs.map +1 -0
- package/dist/engine/DurableStep.d.mts +2 -0
- package/dist/engine/DurableStep.mjs +62 -0
- package/dist/engine/DurableStep.mjs.map +1 -0
- package/dist/engine/MessagingHost.d.mts +2 -0
- package/dist/engine/MessagingHost.mjs +2 -0
- package/dist/engine/Output.d.mts +2 -0
- package/dist/engine/Output.mjs +8 -0
- package/dist/engine/Output.mjs.map +1 -0
- package/dist/engine/RunEventSink.d.mts +2 -0
- package/dist/engine/RunEventSink.mjs +22 -0
- package/dist/engine/RunEventSink.mjs.map +1 -0
- package/dist/engine/RunOptions.d.mts +2 -0
- package/dist/engine/RunOptions.mjs +122 -0
- package/dist/engine/RunOptions.mjs.map +1 -0
- package/dist/engine/SubagentHost.d.mts +2 -0
- package/dist/engine/SubagentHost.mjs +72 -0
- package/dist/engine/SubagentHost.mjs.map +1 -0
- package/dist/engine/ThreadHistory.d.mts +2 -0
- package/dist/engine/ThreadHistory.mjs +67 -0
- package/dist/engine/ThreadHistory.mjs.map +1 -0
- package/dist/engine/ToolBroker.d.mts +2 -0
- package/dist/engine/ToolBroker.mjs +42 -0
- package/dist/engine/ToolBroker.mjs.map +1 -0
- package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
- package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
- package/dist/index.d.mts +88 -54
- package/dist/index.mjs +97 -54
- package/dist/output-contract-BC7tjlGw.mjs +84 -0
- package/dist/output-contract-BC7tjlGw.mjs.map +1 -0
- package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
- package/dist/sandbox/CodeExecutor.d.mts +194 -0
- package/dist/sandbox/CodeExecutor.mjs +278 -0
- package/dist/sandbox/CodeExecutor.mjs.map +1 -0
- package/dist/sandbox/InteractiveBrowser.d.mts +142 -0
- package/dist/sandbox/InteractiveBrowser.mjs +165 -0
- package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
- package/dist/sandbox/PageCapture.d.mts +2 -0
- package/dist/sandbox/PageCapture.mjs +450 -0
- package/dist/sandbox/PageCapture.mjs.map +1 -0
- package/dist/sandbox/PageCrawl.d.mts +88 -0
- package/dist/sandbox/PageCrawl.mjs +124 -0
- package/dist/sandbox/PageCrawl.mjs.map +1 -0
- package/dist/sandbox/PageScreenshot.d.mts +2 -0
- package/dist/sandbox/PageScreenshot.mjs +53 -0
- package/dist/sandbox/PageScreenshot.mjs.map +1 -0
- package/dist/sandbox/ProtectedBrowser.d.mts +252 -0
- package/dist/sandbox/ProtectedBrowser.mjs +270 -0
- package/dist/sandbox/ProtectedBrowser.mjs.map +1 -0
- package/dist/sandbox/Sandbox.d.mts +2 -0
- package/dist/sandbox/Sandbox.mjs +208 -0
- package/dist/sandbox/Sandbox.mjs.map +1 -0
- package/dist/utf8-BYfhEkcj.mjs +11 -0
- package/dist/utf8-BYfhEkcj.mjs.map +1 -0
- package/dist/utf8-DchGZRBd.mjs +23 -0
- package/dist/utf8-DchGZRBd.mjs.map +1 -0
- package/package.json +1 -1
- package/src/Ephemeral.ts +17 -0
- package/src/ToolExposure.ts +2 -2
- package/src/capabilities/Approval.ts +352 -0
- package/src/capabilities/Budget.ts +536 -0
- package/src/capabilities/CodeMode.ts +1090 -0
- package/src/capabilities/Commands.ts +86 -0
- package/src/capabilities/ContextTools.ts +184 -0
- package/src/capabilities/Mcp.ts +427 -0
- package/src/capabilities/McpClient.ts +967 -0
- package/src/capabilities/MemoryNotes.ts +174 -0
- package/src/capabilities/Messaging.ts +261 -0
- package/src/capabilities/ModelContext.ts +354 -0
- package/src/capabilities/Redaction.ts +157 -0
- package/src/capabilities/Remembering.ts +550 -0
- package/src/capabilities/RunHooks.ts +280 -0
- package/src/capabilities/SemanticMemory.ts +447 -0
- package/src/capabilities/Subagent.ts +2277 -0
- package/src/capabilities/SubagentReservations.ts +850 -0
- package/src/capabilities/ToolDiscovery.ts +339 -0
- package/src/capabilities/WebCapture.ts +722 -0
- package/src/capabilities/WebSearch.ts +184 -0
- package/src/capabilities/internal/subagent-background.ts +1106 -0
- package/src/capabilities/internal/subagent-contract.ts +142 -0
- package/src/capabilities/internal/subagent-policy.ts +235 -0
- package/src/capabilities/internal/subagent-reporting.ts +261 -0
- package/src/capabilities/internal/utf8.ts +10 -0
- package/src/core/Agent.ts +575 -0
- package/src/core/AgentError.ts +152 -0
- package/src/core/AgentPolicy.ts +153 -0
- package/src/core/AgentUpdates.ts +100 -0
- package/src/core/IdGenerator.ts +39 -0
- package/src/core/Identifiers.ts +48 -0
- package/src/core/Memory.ts +290 -0
- package/src/core/MemoryNamespace.ts +196 -0
- package/src/core/MemoryReference.ts +121 -0
- package/src/core/MemoryRevalidation.ts +185 -0
- package/src/core/MemoryStore.ts +368 -0
- package/src/core/Messaging.ts +90 -0
- package/src/core/Receipt.ts +42 -0
- package/src/core/RememberingStore.ts +300 -0
- package/src/core/RunEvent.ts +366 -0
- package/src/core/RunPolicyUsage.ts +17 -0
- package/src/core/SemanticMemoryIndex.ts +250 -0
- package/src/core/SemanticMemoryRevalidation.ts +254 -0
- package/src/core/SubagentContract.ts +196 -0
- package/src/core/Thread.ts +371 -0
- package/src/core/ToolExposure.ts +74 -0
- package/src/core/ToolResult.ts +170 -0
- package/src/core/Usage.ts +529 -0
- package/src/core/Worker.ts +173 -0
- package/src/core/internal/agent-updates.ts +32 -0
- package/src/core/internal/utf8.ts +23 -0
- package/src/durable/ActivityStore.ts +160 -0
- package/src/durable/Admin.ts +496 -0
- package/src/durable/AgentRegistration.ts +13 -0
- package/src/durable/Certification.ts +210 -0
- package/src/durable/CommittedActivity.ts +296 -0
- package/src/durable/Digest.ts +93 -0
- package/src/durable/DurableAgentRuntime.ts +10340 -0
- package/src/durable/DurableFailpoint.ts +103 -0
- package/src/durable/DurableFailpointTestControl.ts +39 -0
- package/src/durable/EventSource.ts +172 -0
- package/src/durable/GitHubWorkflowSource.ts +453 -0
- package/src/durable/MessageDelivery.ts +708 -0
- package/src/durable/MessageDeliveryStoreConformance.ts +363 -0
- package/src/durable/OperationAuthorizer.ts +85 -0
- package/src/durable/PersistentHistory.ts +260 -0
- package/src/durable/PreparedInputAdmission.ts +44 -0
- package/src/durable/Records.ts +1010 -0
- package/src/durable/Recovery.ts +1018 -0
- package/src/durable/RunJournal.ts +1479 -0
- package/src/durable/Schedule.ts +504 -0
- package/src/durable/ScheduleStoreConformance.ts +638 -0
- package/src/durable/ScheduleTransition.ts +265 -0
- package/src/durable/Scheduling.ts +1077 -0
- package/src/durable/SqlMemoryStore.ts +774 -0
- package/src/durable/SqlMessageDeliveryStore.ts +302 -0
- package/src/durable/SqlStorageV2Upgrade.ts +500 -0
- package/src/durable/SqlSubscriptionStore.ts +1440 -0
- package/src/durable/SubmissionLedger.ts +1201 -0
- package/src/durable/SubmissionLedgerConformance.ts +4579 -0
- package/src/durable/SubmissionStatus.ts +14 -0
- package/src/durable/Subscription.ts +544 -0
- package/src/durable/SubscriptionInput.ts +144 -0
- package/src/durable/SubscriptionStoreConformance.ts +945 -0
- package/src/durable/SubscriptionTools.ts +327 -0
- package/src/durable/SubscriptionTransition.ts +302 -0
- package/src/durable/Subscriptions.ts +1210 -0
- package/src/durable/ThreadContextHistory.ts +227 -0
- package/src/durable/ThreadContextHistoryProjection.ts +216 -0
- package/src/durable/ThreadInvariants.ts +442 -0
- package/src/durable/ThreadProjection.ts +269 -0
- package/src/durable/ThreadProjectionMaintenance.ts +67 -0
- package/src/durable/ThreadStore.ts +242 -0
- package/src/durable/ThreadStoreConformance.ts +710 -0
- package/src/durable/ToolReconciler.ts +105 -0
- package/src/durable/WakeScheduler.ts +134 -0
- package/src/durable/WorkerHost.ts +171 -0
- package/src/durable/internal/agent-registration.ts +525 -0
- package/src/durable/internal/agent-updates.ts +302 -0
- package/src/durable/internal/foreign-diagnostic.ts +47 -0
- package/src/durable/internal/journal-checkpoint.ts +104 -0
- package/src/durable/internal/journal-metadata.ts +107 -0
- package/src/durable/internal/messaging-host.ts +608 -0
- package/src/durable/internal/schedule-time.ts +303 -0
- package/src/durable/internal/storage-v2-layout.ts +163 -0
- package/src/durable/internal/storage-v2.ts +73 -0
- package/src/durable/internal/worker-host.ts +2467 -0
- package/src/durable/internal/worker-runtime.ts +9 -0
- package/src/engine/AgentRuntime.ts +37 -0
- package/src/engine/Compaction.ts +11 -0
- package/src/engine/ContextCompactor.ts +277 -0
- package/src/engine/ContextHistory.ts +73 -0
- package/src/engine/ContextWindow.ts +72 -0
- package/src/engine/DurableStep.ts +132 -0
- package/src/engine/MessagingHost.ts +110 -0
- package/src/engine/Output.ts +2 -0
- package/src/engine/RunEventSink.ts +132 -0
- package/src/engine/RunOptions.ts +1077 -0
- package/src/engine/SubagentHost.ts +181 -0
- package/src/engine/ThreadHistory.ts +120 -0
- package/src/engine/ToolBroker.ts +157 -0
- package/src/engine/ToolExposure.ts +48 -0
- package/src/engine/internal/agent-runtime.ts +10117 -0
- package/src/engine/internal/bounded-value.ts +315 -0
- package/src/engine/internal/compaction.ts +678 -0
- package/src/engine/internal/error-diagnostic.ts +39 -0
- package/src/engine/internal/output-contract.ts +173 -0
- package/src/engine/internal/primitive-delta.ts +80 -0
- package/src/engine/internal/provider-result-staging.ts +211 -0
- package/src/engine/internal/tool-derivative.ts +106 -0
- package/src/engine/internal/tool-exposure.ts +224 -0
- package/src/engine/internal/tool-telemetry.ts +484 -0
- package/src/index.ts +96 -53
- package/src/sandbox/CodeExecutor.ts +352 -0
- package/src/sandbox/InteractiveBrowser.ts +257 -0
- package/src/sandbox/PageCapture.ts +692 -0
- package/src/sandbox/PageCrawl.ts +148 -0
- package/src/sandbox/PageScreenshot.ts +81 -0
- package/src/sandbox/ProtectedBrowser.ts +413 -0
- package/src/sandbox/Sandbox.ts +241 -0
- package/dist/Agent.d.mts +0 -5
- package/dist/Agent.mjs +0 -10
- package/dist/Agent.mjs.map +0 -1
- package/dist/AgentError.d.mts +0 -5
- package/dist/AgentError.mjs +0 -10
- package/dist/AgentError.mjs.map +0 -1
- package/dist/AgentPolicy.d.mts +0 -5
- package/dist/AgentPolicy.mjs +0 -10
- package/dist/AgentPolicy.mjs.map +0 -1
- package/dist/AgentRuntime.d.mts +0 -5
- package/dist/AgentRuntime.mjs +0 -10
- package/dist/AgentRuntime.mjs.map +0 -1
- package/dist/AgentUpdates.d.mts +0 -5
- package/dist/AgentUpdates.mjs +0 -10
- package/dist/AgentUpdates.mjs.map +0 -1
- package/dist/Approval.d.mts +0 -5
- package/dist/Approval.mjs +0 -10
- package/dist/Approval.mjs.map +0 -1
- package/dist/Budget.d.mts +0 -5
- package/dist/Budget.mjs +0 -10
- package/dist/Budget.mjs.map +0 -1
- package/dist/CodeMode.d.mts +0 -5
- package/dist/CodeMode.mjs +0 -10
- package/dist/CodeMode.mjs.map +0 -1
- package/dist/Commands.d.mts +0 -5
- package/dist/Commands.mjs +0 -10
- package/dist/Commands.mjs.map +0 -1
- package/dist/Compaction.d.mts +0 -5
- package/dist/Compaction.mjs +0 -10
- package/dist/Compaction.mjs.map +0 -1
- package/dist/ContextCompactor.d.mts +0 -5
- package/dist/ContextCompactor.mjs +0 -10
- package/dist/ContextCompactor.mjs.map +0 -1
- package/dist/ContextHistory.d.mts +0 -5
- package/dist/ContextHistory.mjs +0 -10
- package/dist/ContextHistory.mjs.map +0 -1
- package/dist/ContextTools.d.mts +0 -5
- package/dist/ContextTools.mjs +0 -10
- package/dist/ContextTools.mjs.map +0 -1
- package/dist/ContextWindow.d.mts +0 -5
- package/dist/ContextWindow.mjs +0 -10
- package/dist/ContextWindow.mjs.map +0 -1
- package/dist/DurableStep.d.mts +0 -5
- package/dist/DurableStep.mjs +0 -10
- package/dist/DurableStep.mjs.map +0 -1
- package/dist/EphemeralThreads.d.mts +0 -5
- package/dist/EphemeralThreads.mjs +0 -10
- package/dist/EphemeralThreads.mjs.map +0 -1
- package/dist/IdGenerator.d.mts +0 -5
- package/dist/IdGenerator.mjs +0 -10
- package/dist/IdGenerator.mjs.map +0 -1
- package/dist/Identifiers.d.mts +0 -5
- package/dist/Identifiers.mjs +0 -10
- package/dist/Identifiers.mjs.map +0 -1
- package/dist/Mcp.d.mts +0 -5
- package/dist/Mcp.mjs +0 -10
- package/dist/Mcp.mjs.map +0 -1
- package/dist/McpClient.d.mts +0 -5
- package/dist/McpClient.mjs +0 -10
- package/dist/McpClient.mjs.map +0 -1
- package/dist/Memory.d.mts +0 -5
- package/dist/Memory.mjs +0 -10
- package/dist/Memory.mjs.map +0 -1
- package/dist/MemoryNamespace.d.mts +0 -5
- package/dist/MemoryNamespace.mjs +0 -10
- package/dist/MemoryNamespace.mjs.map +0 -1
- package/dist/MemoryNotes.d.mts +0 -5
- package/dist/MemoryNotes.mjs +0 -10
- package/dist/MemoryNotes.mjs.map +0 -1
- package/dist/MemoryReference.d.mts +0 -5
- package/dist/MemoryReference.mjs +0 -10
- package/dist/MemoryReference.mjs.map +0 -1
- package/dist/MemoryRevalidation.d.mts +0 -5
- package/dist/MemoryRevalidation.mjs +0 -10
- package/dist/MemoryRevalidation.mjs.map +0 -1
- package/dist/MemoryStore.d.mts +0 -5
- package/dist/MemoryStore.mjs +0 -10
- package/dist/MemoryStore.mjs.map +0 -1
- package/dist/Messaging.d.mts +0 -5
- package/dist/Messaging.mjs +0 -10
- package/dist/Messaging.mjs.map +0 -1
- package/dist/MessagingHost.d.mts +0 -5
- package/dist/MessagingHost.mjs +0 -10
- package/dist/MessagingHost.mjs.map +0 -1
- package/dist/ModelContext.d.mts +0 -5
- package/dist/ModelContext.mjs +0 -10
- package/dist/ModelContext.mjs.map +0 -1
- package/dist/Receipt.d.mts +0 -5
- package/dist/Receipt.mjs +0 -10
- package/dist/Receipt.mjs.map +0 -1
- package/dist/Redaction.d.mts +0 -5
- package/dist/Redaction.mjs +0 -10
- package/dist/Redaction.mjs.map +0 -1
- package/dist/Remembering.d.mts +0 -5
- package/dist/Remembering.mjs +0 -10
- package/dist/Remembering.mjs.map +0 -1
- package/dist/RememberingStore.d.mts +0 -5
- package/dist/RememberingStore.mjs +0 -10
- package/dist/RememberingStore.mjs.map +0 -1
- package/dist/RunEvent.d.mts +0 -5
- package/dist/RunEvent.mjs +0 -10
- package/dist/RunEvent.mjs.map +0 -1
- package/dist/RunEventSink.d.mts +0 -5
- package/dist/RunEventSink.mjs +0 -10
- package/dist/RunEventSink.mjs.map +0 -1
- package/dist/RunHooks.d.mts +0 -5
- package/dist/RunHooks.mjs +0 -10
- package/dist/RunHooks.mjs.map +0 -1
- package/dist/RunOptions.d.mts +0 -5
- package/dist/RunOptions.mjs +0 -10
- package/dist/RunOptions.mjs.map +0 -1
- package/dist/RunPolicyUsage.d.mts +0 -5
- package/dist/RunPolicyUsage.mjs +0 -10
- package/dist/RunPolicyUsage.mjs.map +0 -1
- package/dist/SemanticMemory.d.mts +0 -5
- package/dist/SemanticMemory.mjs +0 -10
- package/dist/SemanticMemory.mjs.map +0 -1
- package/dist/SemanticMemoryIndex.d.mts +0 -5
- package/dist/SemanticMemoryIndex.mjs +0 -10
- package/dist/SemanticMemoryIndex.mjs.map +0 -1
- package/dist/SemanticMemoryRevalidation.d.mts +0 -5
- package/dist/SemanticMemoryRevalidation.mjs +0 -10
- package/dist/SemanticMemoryRevalidation.mjs.map +0 -1
- package/dist/Subagent.d.mts +0 -5
- package/dist/Subagent.mjs +0 -10
- package/dist/Subagent.mjs.map +0 -1
- package/dist/SubagentContract.d.mts +0 -5
- package/dist/SubagentContract.mjs +0 -10
- package/dist/SubagentContract.mjs.map +0 -1
- package/dist/SubagentHost.d.mts +0 -5
- package/dist/SubagentHost.mjs +0 -10
- package/dist/SubagentHost.mjs.map +0 -1
- package/dist/SubagentReservations.d.mts +0 -5
- package/dist/SubagentReservations.mjs +0 -10
- package/dist/SubagentReservations.mjs.map +0 -1
- package/dist/ThreadHistory.d.mts +0 -5
- package/dist/ThreadHistory.mjs +0 -10
- package/dist/ThreadHistory.mjs.map +0 -1
- package/dist/ToolBroker.d.mts +0 -5
- package/dist/ToolBroker.mjs +0 -10
- package/dist/ToolBroker.mjs.map +0 -1
- package/dist/ToolDiscovery.d.mts +0 -5
- package/dist/ToolDiscovery.mjs +0 -10
- package/dist/ToolDiscovery.mjs.map +0 -1
- package/dist/ToolResult.d.mts +0 -5
- package/dist/ToolResult.mjs +0 -10
- package/dist/ToolResult.mjs.map +0 -1
- package/dist/Usage.d.mts +0 -5
- package/dist/Usage.mjs +0 -10
- package/dist/Usage.mjs.map +0 -1
- package/dist/WebCapture.d.mts +0 -5
- package/dist/WebCapture.mjs +0 -10
- package/dist/WebCapture.mjs.map +0 -1
- package/dist/WebSearch.d.mts +0 -5
- package/dist/WebSearch.mjs +0 -10
- package/dist/WebSearch.mjs.map +0 -1
- package/dist/Worker.d.mts +0 -5
- package/dist/Worker.mjs +0 -10
- package/dist/Worker.mjs.map +0 -1
- package/dist/rolldown-runtime-BBjsoOtd.mjs +0 -27
- package/src/Agent.ts +0 -1
- package/src/AgentError.ts +0 -1
- package/src/AgentPolicy.ts +0 -1
- package/src/AgentRuntime.ts +0 -1
- package/src/AgentUpdates.ts +0 -1
- package/src/Approval.ts +0 -1
- package/src/Budget.ts +0 -1
- package/src/CodeMode.ts +0 -1
- package/src/Commands.ts +0 -1
- package/src/Compaction.ts +0 -1
- package/src/ContextCompactor.ts +0 -1
- package/src/ContextHistory.ts +0 -1
- package/src/ContextTools.ts +0 -1
- package/src/ContextWindow.ts +0 -1
- package/src/DurableStep.ts +0 -1
- package/src/EphemeralThreads.ts +0 -1
- package/src/IdGenerator.ts +0 -1
- package/src/Identifiers.ts +0 -1
- package/src/Mcp.ts +0 -1
- package/src/McpClient.ts +0 -1
- package/src/Memory.ts +0 -1
- package/src/MemoryNamespace.ts +0 -1
- package/src/MemoryNotes.ts +0 -1
- package/src/MemoryReference.ts +0 -1
- package/src/MemoryRevalidation.ts +0 -1
- package/src/MemoryStore.ts +0 -1
- package/src/Messaging.ts +0 -1
- package/src/MessagingHost.ts +0 -1
- package/src/ModelContext.ts +0 -1
- package/src/Receipt.ts +0 -1
- package/src/Redaction.ts +0 -1
- package/src/Remembering.ts +0 -1
- package/src/RememberingStore.ts +0 -1
- package/src/RunEvent.ts +0 -1
- package/src/RunEventSink.ts +0 -1
- package/src/RunHooks.ts +0 -1
- package/src/RunOptions.ts +0 -1
- package/src/RunPolicyUsage.ts +0 -1
- package/src/SemanticMemory.ts +0 -1
- package/src/SemanticMemoryIndex.ts +0 -1
- package/src/SemanticMemoryRevalidation.ts +0 -1
- package/src/Subagent.ts +0 -1
- package/src/SubagentContract.ts +0 -1
- package/src/SubagentHost.ts +0 -1
- package/src/SubagentReservations.ts +0 -1
- package/src/ThreadHistory.ts +0 -1
- package/src/ToolBroker.ts +0 -1
- package/src/ToolDiscovery.ts +0 -1
- package/src/ToolResult.ts +0 -1
- package/src/Usage.ts +0 -1
- package/src/WebCapture.ts +0 -1
- package/src/WebSearch.ts +0 -1
- package/src/Worker.ts +0 -1
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
+
import { RunId, ToolCallId } from "../core/Identifiers.mjs";
|
|
3
|
+
import { SubagentDelegationCaps, SubagentReservationAmounts } from "../core/SubagentContract.mjs";
|
|
4
|
+
import { Context, Effect, Layer, Ref, Schema, Semaphore } from "effect";
|
|
5
|
+
//#region src/capabilities/SubagentReservations.ts
|
|
6
|
+
var SubagentReservations_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
BudgetReservationId: () => BudgetReservationId,
|
|
8
|
+
SubagentAvailableAmounts: () => SubagentAvailableAmounts,
|
|
9
|
+
SubagentBudgetDimension: () => SubagentBudgetDimension,
|
|
10
|
+
SubagentBudgetExhausted: () => SubagentBudgetExhausted,
|
|
11
|
+
SubagentObservedUsage: () => SubagentObservedUsage,
|
|
12
|
+
SubagentParentBudgetActive: () => SubagentParentBudgetActive,
|
|
13
|
+
SubagentParentBudgetConflict: () => SubagentParentBudgetConflict,
|
|
14
|
+
SubagentParentBudgetUnknown: () => SubagentParentBudgetUnknown,
|
|
15
|
+
SubagentParentBudgetView: () => SubagentParentBudgetView,
|
|
16
|
+
SubagentReservationConflict: () => SubagentReservationConflict,
|
|
17
|
+
SubagentReservationRequest: () => SubagentReservationRequest,
|
|
18
|
+
SubagentReservationStatus: () => SubagentReservationStatus,
|
|
19
|
+
SubagentReservationUnknown: () => SubagentReservationUnknown,
|
|
20
|
+
SubagentReservationView: () => SubagentReservationView,
|
|
21
|
+
SubagentReservations: () => SubagentReservations,
|
|
22
|
+
SubagentReservationsMemoryLive: () => SubagentReservationsMemoryLive,
|
|
23
|
+
makeBudgetReservationId: () => makeBudgetReservationId
|
|
24
|
+
});
|
|
25
|
+
const Natural = Schema.Natural;
|
|
26
|
+
/**
|
|
27
|
+
* Stable identity of one parent-owned Subagent budget reservation.
|
|
28
|
+
*
|
|
29
|
+
* Derivation rule (see {@link makeBudgetReservationId}):
|
|
30
|
+
* `encodeURIComponent(parentRunId) + ":" + encodeURIComponent(parentToolCallId)`.
|
|
31
|
+
* Component encoding escapes `:`; the mapping is injective for every
|
|
32
|
+
* `(parentRunId, parentToolCallId)` pair.
|
|
33
|
+
*/
|
|
34
|
+
const BudgetReservationId = Schema.NonEmptyString.pipe(Schema.brand("@effect-agent/capabilities/BudgetReservationId"));
|
|
35
|
+
const decodeBudgetReservationId = Schema.decodeSync(BudgetReservationId);
|
|
36
|
+
/** Derive the stable reservation identity of one Subagent Invocation. */
|
|
37
|
+
const makeBudgetReservationId = (parentRunId, parentToolCallId) => decodeBudgetReservationId(`${encodeURIComponent(parentRunId)}:${encodeURIComponent(parentToolCallId)}`);
|
|
38
|
+
/** One enforced hierarchical delegation budget dimension. */
|
|
39
|
+
const SubagentBudgetDimension = Schema.Literals([
|
|
40
|
+
"total-child-invocations",
|
|
41
|
+
"concurrent-children",
|
|
42
|
+
"turns",
|
|
43
|
+
"tool-calls",
|
|
44
|
+
"duration",
|
|
45
|
+
"input-tokens",
|
|
46
|
+
"output-tokens",
|
|
47
|
+
"cost",
|
|
48
|
+
"result-bytes"
|
|
49
|
+
]);
|
|
50
|
+
SubagentReservationAmounts.fields;
|
|
51
|
+
const OptionalAmountFields = {
|
|
52
|
+
turns: Schema.optionalKey(Natural),
|
|
53
|
+
toolCalls: Schema.optionalKey(Natural),
|
|
54
|
+
durationMillis: Schema.optionalKey(Natural),
|
|
55
|
+
inputTokens: Schema.optionalKey(Natural),
|
|
56
|
+
outputTokens: Schema.optionalKey(Natural),
|
|
57
|
+
costMicrousd: Schema.optionalKey(Natural),
|
|
58
|
+
resultBytes: Schema.optionalKey(Natural)
|
|
59
|
+
};
|
|
60
|
+
/** Observed child usage. An absent dimension was never reported and settles conservatively. */
|
|
61
|
+
var SubagentObservedUsage = class extends Schema.Class("@effect-agent/capabilities/SubagentObservedUsage")(OptionalAmountFields) {};
|
|
62
|
+
/** Remaining delegable allocation per configured dimension. Absent means not configured. */
|
|
63
|
+
var SubagentAvailableAmounts = class extends Schema.Class("@effect-agent/capabilities/SubagentAvailableAmounts")(OptionalAmountFields) {};
|
|
64
|
+
/** Reservation lifecycle: absent → reserved → releasePending → released. */
|
|
65
|
+
const SubagentReservationStatus = Schema.Literals([
|
|
66
|
+
"reserved",
|
|
67
|
+
"releasePending",
|
|
68
|
+
"released"
|
|
69
|
+
]);
|
|
70
|
+
/** All-or-nothing allocation request for one Subagent Invocation. */
|
|
71
|
+
var SubagentReservationRequest = class extends Schema.Class("@effect-agent/capabilities/SubagentReservationRequest")({
|
|
72
|
+
parentRunId: RunId,
|
|
73
|
+
parentToolCallId: ToolCallId,
|
|
74
|
+
allocation: SubagentReservationAmounts,
|
|
75
|
+
/** Additional invocation slots held for this child's entire subtree. */
|
|
76
|
+
descendantInvocations: Schema.optionalKey(Natural)
|
|
77
|
+
}) {};
|
|
78
|
+
/** Accounting snapshot of one reservation: allocated, observed, covered, released, and overrun. */
|
|
79
|
+
var SubagentReservationView = class extends Schema.Class("@effect-agent/capabilities/SubagentReservationView")({
|
|
80
|
+
reservationId: BudgetReservationId,
|
|
81
|
+
parentRunId: RunId,
|
|
82
|
+
parentToolCallId: ToolCallId,
|
|
83
|
+
status: SubagentReservationStatus,
|
|
84
|
+
allocated: SubagentReservationAmounts,
|
|
85
|
+
observedConsumed: SubagentObservedUsage,
|
|
86
|
+
coveredConsumed: SubagentReservationAmounts,
|
|
87
|
+
released: SubagentReservationAmounts,
|
|
88
|
+
overrun: SubagentReservationAmounts
|
|
89
|
+
}) {};
|
|
90
|
+
/** Aggregate parent delegation budget snapshot including every reservation it owns. */
|
|
91
|
+
var SubagentParentBudgetView = class extends Schema.Class("@effect-agent/capabilities/SubagentParentBudgetView")({
|
|
92
|
+
parentRunId: RunId,
|
|
93
|
+
caps: SubagentDelegationCaps,
|
|
94
|
+
totalChildInvocations: Natural,
|
|
95
|
+
available: SubagentAvailableAmounts,
|
|
96
|
+
cumulativeOverrun: SubagentReservationAmounts,
|
|
97
|
+
reservations: Schema.Array(SubagentReservationView)
|
|
98
|
+
}) {};
|
|
99
|
+
/** All-or-nothing admission failed: one dimension cannot cover the requested allocation. */
|
|
100
|
+
var SubagentBudgetExhausted = class extends Schema.TaggedError()("SubagentBudgetExhausted", {
|
|
101
|
+
parentRunId: RunId,
|
|
102
|
+
dimension: SubagentBudgetDimension,
|
|
103
|
+
limitValue: Natural,
|
|
104
|
+
observedValue: Natural
|
|
105
|
+
}) {};
|
|
106
|
+
/** The stable key is already reserved with a different allocation; neither request may win silently. */
|
|
107
|
+
var SubagentReservationConflict = class extends Schema.TaggedError()("SubagentReservationConflict", {
|
|
108
|
+
reservationId: BudgetReservationId,
|
|
109
|
+
existingAllocation: SubagentReservationAmounts,
|
|
110
|
+
requestedAllocation: SubagentReservationAmounts
|
|
111
|
+
}) {};
|
|
112
|
+
/** No reservation exists for this identity. */
|
|
113
|
+
var SubagentReservationUnknown = class extends Schema.TaggedError()("SubagentReservationUnknown", { reservationId: BudgetReservationId }) {};
|
|
114
|
+
/** No delegation budget was registered for this parent Run. */
|
|
115
|
+
var SubagentParentBudgetUnknown = class extends Schema.TaggedError()("SubagentParentBudgetUnknown", { parentRunId: RunId }) {};
|
|
116
|
+
/** The parent Run is already registered with different caps; neither set may win silently. */
|
|
117
|
+
var SubagentParentBudgetConflict = class extends Schema.TaggedError()("SubagentParentBudgetConflict", { parentRunId: RunId }) {};
|
|
118
|
+
/** A parent budget cannot retire while one of its child reservations is unsettled. */
|
|
119
|
+
var SubagentParentBudgetActive = class extends Schema.TaggedError()("SubagentParentBudgetActive", {
|
|
120
|
+
parentRunId: RunId,
|
|
121
|
+
openReservations: Natural
|
|
122
|
+
}) {};
|
|
123
|
+
/**
|
|
124
|
+
* Parent-owned hierarchical Subagent budget reservation authority.
|
|
125
|
+
*
|
|
126
|
+
* Every transition is a single atomic `Ref` update, so parallel children can
|
|
127
|
+
* never observe and spend the same remainder. The post-response usage hook in
|
|
128
|
+
* `budget.ts` is deliberately not reused here: it accounts after the fact and
|
|
129
|
+
* is not a reservation service.
|
|
130
|
+
*/
|
|
131
|
+
var SubagentReservations = class extends Context.Service()("@effect-agent/capabilities/SubagentReservations") {};
|
|
132
|
+
const dimensionSpecs = [
|
|
133
|
+
{
|
|
134
|
+
key: "turns",
|
|
135
|
+
dimension: "turns",
|
|
136
|
+
cap: (caps) => caps.maxTurns
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
key: "toolCalls",
|
|
140
|
+
dimension: "tool-calls",
|
|
141
|
+
cap: (caps) => caps.maxToolCalls
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
key: "durationMillis",
|
|
145
|
+
dimension: "duration",
|
|
146
|
+
cap: (caps) => caps.maxDurationMillis
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
key: "inputTokens",
|
|
150
|
+
dimension: "input-tokens",
|
|
151
|
+
cap: (caps) => caps.maxInputTokens
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
key: "outputTokens",
|
|
155
|
+
dimension: "output-tokens",
|
|
156
|
+
cap: (caps) => caps.maxOutputTokens
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
key: "costMicrousd",
|
|
160
|
+
dimension: "cost",
|
|
161
|
+
cap: (caps) => caps.maxCostMicrousd
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
key: "resultBytes",
|
|
165
|
+
dimension: "result-bytes",
|
|
166
|
+
cap: (caps) => caps.maxResultBytes
|
|
167
|
+
}
|
|
168
|
+
];
|
|
169
|
+
const zeroAmounts = {
|
|
170
|
+
turns: 0,
|
|
171
|
+
toolCalls: 0,
|
|
172
|
+
durationMillis: 0,
|
|
173
|
+
inputTokens: 0,
|
|
174
|
+
outputTokens: 0,
|
|
175
|
+
costMicrousd: 0,
|
|
176
|
+
resultBytes: 0
|
|
177
|
+
};
|
|
178
|
+
const ok = (value) => ({
|
|
179
|
+
_tag: "ok",
|
|
180
|
+
value
|
|
181
|
+
});
|
|
182
|
+
const fail = (error) => ({
|
|
183
|
+
_tag: "error",
|
|
184
|
+
error
|
|
185
|
+
});
|
|
186
|
+
const resolve = (result) => {
|
|
187
|
+
switch (result._tag) {
|
|
188
|
+
case "ok": return Effect.succeed(result.value);
|
|
189
|
+
case "error": return Effect.fail(result.error);
|
|
190
|
+
case "corrupt": return Effect.die(new Error(result.message));
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
const sameCaps = (a, b) => a.maxTotalChildInvocations === b.maxTotalChildInvocations && a.maxConcurrentChildren === b.maxConcurrentChildren && a.maxTurns === b.maxTurns && a.maxToolCalls === b.maxToolCalls && a.maxDurationMillis === b.maxDurationMillis && a.maxInputTokens === b.maxInputTokens && a.maxOutputTokens === b.maxOutputTokens && a.maxCostMicrousd === b.maxCostMicrousd && a.maxResultBytes === b.maxResultBytes;
|
|
194
|
+
const sameAmounts = (a, b) => dimensionSpecs.every((spec) => a[spec.key] === b[spec.key]);
|
|
195
|
+
const optionalAmounts = (partial) => {
|
|
196
|
+
const out = {};
|
|
197
|
+
for (const spec of dimensionSpecs) {
|
|
198
|
+
const value = partial[spec.key];
|
|
199
|
+
if (value !== void 0) out[spec.key] = value;
|
|
200
|
+
}
|
|
201
|
+
return out;
|
|
202
|
+
};
|
|
203
|
+
/** Covered usage freezes at settlement, so the unused allocation remains stable afterward. */
|
|
204
|
+
const unusedAllocation = (reservation) => {
|
|
205
|
+
const unused = { ...zeroAmounts };
|
|
206
|
+
for (const spec of dimensionSpecs) unused[spec.key] = reservation.allocated[spec.key] - reservation.covered[spec.key];
|
|
207
|
+
return unused;
|
|
208
|
+
};
|
|
209
|
+
const reservationView = (reservationId, state) => SubagentReservationView.make({
|
|
210
|
+
reservationId,
|
|
211
|
+
parentRunId: state.parentRunId,
|
|
212
|
+
parentToolCallId: state.parentToolCallId,
|
|
213
|
+
status: state.status,
|
|
214
|
+
allocated: SubagentReservationAmounts.make(state.allocated),
|
|
215
|
+
observedConsumed: SubagentObservedUsage.make(optionalAmounts(state.observed)),
|
|
216
|
+
coveredConsumed: SubagentReservationAmounts.make(state.covered),
|
|
217
|
+
released: SubagentReservationAmounts.make(state.status === "released" ? unusedAllocation(state) : zeroAmounts),
|
|
218
|
+
overrun: SubagentReservationAmounts.make(state.overrun)
|
|
219
|
+
});
|
|
220
|
+
const parentView = (ledger, parent) => {
|
|
221
|
+
const reservations = [];
|
|
222
|
+
for (const [reservationId, reservation] of ledger.reservations) if (reservation.parentRunId === parent.parentRunId) reservations.push(reservationView(reservationId, reservation));
|
|
223
|
+
return SubagentParentBudgetView.make({
|
|
224
|
+
parentRunId: parent.parentRunId,
|
|
225
|
+
caps: parent.caps,
|
|
226
|
+
totalChildInvocations: parent.totalChildInvocations,
|
|
227
|
+
available: SubagentAvailableAmounts.make(optionalAmounts(parent.available)),
|
|
228
|
+
cumulativeOverrun: SubagentReservationAmounts.make(parent.cumulativeOverrun),
|
|
229
|
+
reservations
|
|
230
|
+
});
|
|
231
|
+
};
|
|
232
|
+
const corruptParent = (parentRunId) => ({
|
|
233
|
+
_tag: "corrupt",
|
|
234
|
+
message: `SubagentReservations ledger invariant violated: reservation references unregistered parent Run ${parentRunId}`
|
|
235
|
+
});
|
|
236
|
+
const registerTransition = (ledger, parentRunId, caps, gate) => {
|
|
237
|
+
const existing = ledger.parents.get(parentRunId);
|
|
238
|
+
if (existing !== void 0) return sameCaps(existing.caps, caps) ? [ok(parentView(ledger, existing)), ledger] : [fail(SubagentParentBudgetConflict.make({ parentRunId })), ledger];
|
|
239
|
+
const available = {};
|
|
240
|
+
for (const spec of dimensionSpecs) {
|
|
241
|
+
const cap = spec.cap(caps);
|
|
242
|
+
if (cap !== void 0) available[spec.key] = cap;
|
|
243
|
+
}
|
|
244
|
+
const parent = {
|
|
245
|
+
parentRunId,
|
|
246
|
+
caps,
|
|
247
|
+
gate,
|
|
248
|
+
totalChildInvocations: 0,
|
|
249
|
+
available,
|
|
250
|
+
cumulativeOverrun: zeroAmounts
|
|
251
|
+
};
|
|
252
|
+
const next = {
|
|
253
|
+
parents: new Map(ledger.parents).set(parentRunId, parent),
|
|
254
|
+
reservations: ledger.reservations
|
|
255
|
+
};
|
|
256
|
+
return [ok(parentView(next, parent)), next];
|
|
257
|
+
};
|
|
258
|
+
const reserveTransition = (ledger, request) => {
|
|
259
|
+
const parent = ledger.parents.get(request.parentRunId);
|
|
260
|
+
if (parent === void 0) return [fail(SubagentParentBudgetUnknown.make({ parentRunId: request.parentRunId })), ledger];
|
|
261
|
+
const reservationId = makeBudgetReservationId(request.parentRunId, request.parentToolCallId);
|
|
262
|
+
const existing = ledger.reservations.get(reservationId);
|
|
263
|
+
if (existing !== void 0) return sameAmounts(existing.allocated, request.allocation) && existing.descendantInvocations === (request.descendantInvocations ?? 0) ? [ok(reservationView(reservationId, existing)), ledger] : [fail(SubagentReservationConflict.make({
|
|
264
|
+
reservationId,
|
|
265
|
+
existingAllocation: SubagentReservationAmounts.make(existing.allocated),
|
|
266
|
+
requestedAllocation: request.allocation
|
|
267
|
+
})), ledger];
|
|
268
|
+
const maxInvocations = parent.caps.maxTotalChildInvocations;
|
|
269
|
+
const slots = 1 + (request.descendantInvocations ?? 0);
|
|
270
|
+
if (maxInvocations !== void 0 && parent.totalChildInvocations + slots > maxInvocations) return [fail(SubagentBudgetExhausted.make({
|
|
271
|
+
parentRunId: request.parentRunId,
|
|
272
|
+
dimension: "total-child-invocations",
|
|
273
|
+
limitValue: maxInvocations,
|
|
274
|
+
observedValue: parent.totalChildInvocations + slots
|
|
275
|
+
})), ledger];
|
|
276
|
+
for (const spec of dimensionSpecs) {
|
|
277
|
+
const cap = spec.cap(parent.caps);
|
|
278
|
+
if (cap === void 0) continue;
|
|
279
|
+
const headroom = (parent.available[spec.key] ?? 0) - parent.cumulativeOverrun[spec.key];
|
|
280
|
+
const requested = request.allocation[spec.key];
|
|
281
|
+
if (requested > headroom) return [fail(SubagentBudgetExhausted.make({
|
|
282
|
+
parentRunId: request.parentRunId,
|
|
283
|
+
dimension: spec.dimension,
|
|
284
|
+
limitValue: cap,
|
|
285
|
+
observedValue: cap - headroom + requested
|
|
286
|
+
})), ledger];
|
|
287
|
+
}
|
|
288
|
+
const nextAvailable = { ...parent.available };
|
|
289
|
+
for (const spec of dimensionSpecs) {
|
|
290
|
+
const available = parent.available[spec.key];
|
|
291
|
+
if (available !== void 0) nextAvailable[spec.key] = available - request.allocation[spec.key];
|
|
292
|
+
}
|
|
293
|
+
const reservation = {
|
|
294
|
+
parentRunId: request.parentRunId,
|
|
295
|
+
parentToolCallId: request.parentToolCallId,
|
|
296
|
+
descendantInvocations: request.descendantInvocations ?? 0,
|
|
297
|
+
status: "reserved",
|
|
298
|
+
allocated: request.allocation,
|
|
299
|
+
observed: {},
|
|
300
|
+
covered: zeroAmounts,
|
|
301
|
+
overrun: zeroAmounts
|
|
302
|
+
};
|
|
303
|
+
const next = {
|
|
304
|
+
parents: new Map(ledger.parents).set(request.parentRunId, {
|
|
305
|
+
...parent,
|
|
306
|
+
totalChildInvocations: parent.totalChildInvocations + slots,
|
|
307
|
+
available: nextAvailable
|
|
308
|
+
}),
|
|
309
|
+
reservations: new Map(ledger.reservations).set(reservationId, reservation)
|
|
310
|
+
};
|
|
311
|
+
return [ok(reservationView(reservationId, reservation)), next];
|
|
312
|
+
};
|
|
313
|
+
const observeTransition = (ledger, reservationId, usage) => {
|
|
314
|
+
const reservation = ledger.reservations.get(reservationId);
|
|
315
|
+
if (reservation === void 0) return [fail(SubagentReservationUnknown.make({ reservationId })), ledger];
|
|
316
|
+
const parent = ledger.parents.get(reservation.parentRunId);
|
|
317
|
+
if (parent === void 0) return [corruptParent(reservation.parentRunId), ledger];
|
|
318
|
+
const observed = { ...reservation.observed };
|
|
319
|
+
const covered = { ...reservation.covered };
|
|
320
|
+
const overrun = { ...reservation.overrun };
|
|
321
|
+
const cumulativeOverrun = { ...parent.cumulativeOverrun };
|
|
322
|
+
for (const spec of dimensionSpecs) {
|
|
323
|
+
const delta = usage[spec.key];
|
|
324
|
+
if (delta === void 0) continue;
|
|
325
|
+
observed[spec.key] = (observed[spec.key] ?? 0) + delta;
|
|
326
|
+
const coverable = reservation.status === "reserved" ? Math.min(delta, reservation.allocated[spec.key] - covered[spec.key]) : 0;
|
|
327
|
+
covered[spec.key] += coverable;
|
|
328
|
+
const overrunDelta = delta - coverable;
|
|
329
|
+
overrun[spec.key] += overrunDelta;
|
|
330
|
+
cumulativeOverrun[spec.key] += overrunDelta;
|
|
331
|
+
}
|
|
332
|
+
const nextReservation = {
|
|
333
|
+
...reservation,
|
|
334
|
+
observed,
|
|
335
|
+
covered,
|
|
336
|
+
overrun
|
|
337
|
+
};
|
|
338
|
+
const next = {
|
|
339
|
+
parents: new Map(ledger.parents).set(parent.parentRunId, {
|
|
340
|
+
...parent,
|
|
341
|
+
cumulativeOverrun
|
|
342
|
+
}),
|
|
343
|
+
reservations: new Map(ledger.reservations).set(reservationId, nextReservation)
|
|
344
|
+
};
|
|
345
|
+
return [ok(reservationView(reservationId, nextReservation)), next];
|
|
346
|
+
};
|
|
347
|
+
/**
|
|
348
|
+
* Freeze the settlement decision. A dimension that was never observed
|
|
349
|
+
* conservatively consumes its full reserved amount.
|
|
350
|
+
*/
|
|
351
|
+
const freezeSettlement = (reservation) => {
|
|
352
|
+
const observed = { ...reservation.observed };
|
|
353
|
+
const covered = { ...reservation.covered };
|
|
354
|
+
for (const spec of dimensionSpecs) if (observed[spec.key] === void 0) {
|
|
355
|
+
observed[spec.key] = reservation.allocated[spec.key];
|
|
356
|
+
covered[spec.key] = reservation.allocated[spec.key];
|
|
357
|
+
}
|
|
358
|
+
return {
|
|
359
|
+
...reservation,
|
|
360
|
+
status: "releasePending",
|
|
361
|
+
observed,
|
|
362
|
+
covered
|
|
363
|
+
};
|
|
364
|
+
};
|
|
365
|
+
const beginReleaseTransition = (ledger, reservationId) => {
|
|
366
|
+
const reservation = ledger.reservations.get(reservationId);
|
|
367
|
+
if (reservation === void 0) return [fail(SubagentReservationUnknown.make({ reservationId })), ledger];
|
|
368
|
+
if (reservation.status !== "reserved") return [ok(reservationView(reservationId, reservation)), ledger];
|
|
369
|
+
const frozen = freezeSettlement(reservation);
|
|
370
|
+
const next = {
|
|
371
|
+
parents: ledger.parents,
|
|
372
|
+
reservations: new Map(ledger.reservations).set(reservationId, frozen)
|
|
373
|
+
};
|
|
374
|
+
return [ok(reservationView(reservationId, frozen)), next];
|
|
375
|
+
};
|
|
376
|
+
const releaseTransition = (ledger, reservationId) => {
|
|
377
|
+
const reservation = ledger.reservations.get(reservationId);
|
|
378
|
+
if (reservation === void 0) return [fail(SubagentReservationUnknown.make({ reservationId })), ledger];
|
|
379
|
+
if (reservation.status === "released") return [ok(reservationView(reservationId, reservation)), ledger];
|
|
380
|
+
const parent = ledger.parents.get(reservation.parentRunId);
|
|
381
|
+
if (parent === void 0) return [corruptParent(reservation.parentRunId), ledger];
|
|
382
|
+
const frozen = reservation.status === "reserved" ? freezeSettlement(reservation) : reservation;
|
|
383
|
+
const unused = unusedAllocation(frozen);
|
|
384
|
+
const nextAvailable = { ...parent.available };
|
|
385
|
+
for (const spec of dimensionSpecs) {
|
|
386
|
+
const available = parent.available[spec.key];
|
|
387
|
+
if (available !== void 0) nextAvailable[spec.key] = available + unused[spec.key];
|
|
388
|
+
}
|
|
389
|
+
const settled = {
|
|
390
|
+
...frozen,
|
|
391
|
+
status: "released"
|
|
392
|
+
};
|
|
393
|
+
const next = {
|
|
394
|
+
parents: new Map(ledger.parents).set(parent.parentRunId, {
|
|
395
|
+
...parent,
|
|
396
|
+
available: nextAvailable
|
|
397
|
+
}),
|
|
398
|
+
reservations: new Map(ledger.reservations).set(reservationId, settled)
|
|
399
|
+
};
|
|
400
|
+
return [ok(reservationView(reservationId, settled)), next];
|
|
401
|
+
};
|
|
402
|
+
const retireParentTransition = (ledger, parentRunId) => {
|
|
403
|
+
if (!ledger.parents.has(parentRunId)) return [ok(void 0), ledger];
|
|
404
|
+
let openReservations = 0;
|
|
405
|
+
for (const reservation of ledger.reservations.values()) if (reservation.parentRunId === parentRunId && reservation.status !== "released") openReservations += 1;
|
|
406
|
+
if (openReservations > 0) return [fail(SubagentParentBudgetActive.make({
|
|
407
|
+
parentRunId,
|
|
408
|
+
openReservations
|
|
409
|
+
})), ledger];
|
|
410
|
+
const parents = new Map(ledger.parents);
|
|
411
|
+
parents.delete(parentRunId);
|
|
412
|
+
const reservations = new Map(ledger.reservations);
|
|
413
|
+
for (const [reservationId, reservation] of reservations) if (reservation.parentRunId === parentRunId) reservations.delete(reservationId);
|
|
414
|
+
return [ok(void 0), {
|
|
415
|
+
parents,
|
|
416
|
+
reservations
|
|
417
|
+
}];
|
|
418
|
+
};
|
|
419
|
+
/**
|
|
420
|
+
* In-memory reservation ledger. All state lives in one `Ref` owned by the
|
|
421
|
+
* Layer's Scope; every transition is a single atomic `Ref.modify`.
|
|
422
|
+
*/
|
|
423
|
+
const SubagentReservationsMemoryLive = Layer.effect(SubagentReservations, Effect.gen(function* () {
|
|
424
|
+
const state = yield* Ref.make({
|
|
425
|
+
parents: /* @__PURE__ */ new Map(),
|
|
426
|
+
reservations: /* @__PURE__ */ new Map()
|
|
427
|
+
});
|
|
428
|
+
return SubagentReservations.of({
|
|
429
|
+
registerParent: Effect.fn("SubagentReservations.registerParent")(function* (parentRunId, caps) {
|
|
430
|
+
const gate = caps.maxConcurrentChildren !== void 0 && caps.maxConcurrentChildren > 0 ? yield* Semaphore.make(caps.maxConcurrentChildren) : void 0;
|
|
431
|
+
const result = yield* Ref.modify(state, (ledger) => registerTransition(ledger, parentRunId, caps, gate));
|
|
432
|
+
return yield* resolve(result);
|
|
433
|
+
}),
|
|
434
|
+
reserve: Effect.fn("SubagentReservations.reserve")(function* (request) {
|
|
435
|
+
const result = yield* Ref.modify(state, (ledger) => reserveTransition(ledger, request));
|
|
436
|
+
return yield* resolve(result);
|
|
437
|
+
}),
|
|
438
|
+
observe: Effect.fn("SubagentReservations.observe")(function* (reservationId, usage) {
|
|
439
|
+
const result = yield* Ref.modify(state, (ledger) => observeTransition(ledger, reservationId, usage));
|
|
440
|
+
return yield* resolve(result);
|
|
441
|
+
}),
|
|
442
|
+
beginRelease: Effect.fn("SubagentReservations.beginRelease")(function* (reservationId) {
|
|
443
|
+
const result = yield* Ref.modify(state, (ledger) => beginReleaseTransition(ledger, reservationId));
|
|
444
|
+
return yield* resolve(result);
|
|
445
|
+
}),
|
|
446
|
+
release: Effect.fn("SubagentReservations.release")(function* (reservationId) {
|
|
447
|
+
const result = yield* Ref.modify(state, (ledger) => releaseTransition(ledger, reservationId));
|
|
448
|
+
return yield* resolve(result);
|
|
449
|
+
}),
|
|
450
|
+
acquireChildSlot: Effect.fn("SubagentReservations.acquireChildSlot")(function* (parentRunId, slots = 1) {
|
|
451
|
+
const parent = (yield* Ref.get(state)).parents.get(parentRunId);
|
|
452
|
+
if (parent === void 0) return yield* SubagentParentBudgetUnknown.make({ parentRunId });
|
|
453
|
+
const cap = parent.caps.maxConcurrentChildren;
|
|
454
|
+
if (cap === void 0) return;
|
|
455
|
+
if (!Number.isSafeInteger(slots) || slots < 1 || slots > cap || parent.gate === void 0) return yield* SubagentBudgetExhausted.make({
|
|
456
|
+
parentRunId,
|
|
457
|
+
dimension: "concurrent-children",
|
|
458
|
+
limitValue: cap,
|
|
459
|
+
observedValue: Number.isSafeInteger(slots) && slots > 0 ? slots : 0
|
|
460
|
+
});
|
|
461
|
+
const gate = parent.gate;
|
|
462
|
+
yield* Effect.acquireRelease(gate.take(slots), (permits) => gate.release(permits).pipe(Effect.asVoid), { interruptible: true });
|
|
463
|
+
}),
|
|
464
|
+
retireParent: Effect.fn("SubagentReservations.retireParent")(function* (parentRunId) {
|
|
465
|
+
const result = yield* Ref.modify(state, (ledger) => retireParentTransition(ledger, parentRunId));
|
|
466
|
+
return yield* resolve(result);
|
|
467
|
+
}),
|
|
468
|
+
parentSnapshot: Effect.fn("SubagentReservations.parentSnapshot")(function* (parentRunId) {
|
|
469
|
+
const ledger = yield* Ref.get(state);
|
|
470
|
+
const parent = ledger.parents.get(parentRunId);
|
|
471
|
+
if (parent === void 0) return yield* SubagentParentBudgetUnknown.make({ parentRunId });
|
|
472
|
+
return parentView(ledger, parent);
|
|
473
|
+
})
|
|
474
|
+
});
|
|
475
|
+
}));
|
|
476
|
+
//#endregion
|
|
477
|
+
export { BudgetReservationId, SubagentAvailableAmounts, SubagentBudgetDimension, SubagentBudgetExhausted, SubagentObservedUsage, SubagentParentBudgetActive, SubagentParentBudgetConflict, SubagentParentBudgetUnknown, SubagentParentBudgetView, SubagentReservationConflict, SubagentReservationRequest, SubagentReservationStatus, SubagentReservationUnknown, SubagentReservationView, SubagentReservations, SubagentReservationsMemoryLive, makeBudgetReservationId, SubagentReservations_exports as t };
|
|
478
|
+
|
|
479
|
+
//# sourceMappingURL=SubagentReservations.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubagentReservations.mjs","names":[],"sources":["../../src/capabilities/SubagentReservations.ts"],"sourcesContent":["import { Context, Effect, Layer, Ref, Schema, type Scope, Semaphore } from \"effect\";\n\nimport { RunId, ToolCallId } from \"../core/Identifiers.ts\";\nimport { SubagentDelegationCaps, SubagentReservationAmounts } from \"../core/SubagentContract.ts\";\n\nconst Natural = Schema.Natural;\n\n/**\n * Stable identity of one parent-owned Subagent budget reservation.\n *\n * Derivation rule (see {@link makeBudgetReservationId}):\n * `encodeURIComponent(parentRunId) + \":\" + encodeURIComponent(parentToolCallId)`.\n * Component encoding escapes `:`; the mapping is injective for every\n * `(parentRunId, parentToolCallId)` pair.\n */\nexport const BudgetReservationId = Schema.NonEmptyString.pipe(\n Schema.brand(\"@effect-agent/capabilities/BudgetReservationId\"),\n);\n\nexport type BudgetReservationId = typeof BudgetReservationId.Type;\n\nconst decodeBudgetReservationId = Schema.decodeSync(BudgetReservationId);\n\n/** Derive the stable reservation identity of one Subagent Invocation. */\nexport const makeBudgetReservationId = (\n parentRunId: RunId,\n parentToolCallId: ToolCallId,\n): BudgetReservationId =>\n decodeBudgetReservationId(\n `${encodeURIComponent(parentRunId)}:${encodeURIComponent(parentToolCallId)}`,\n );\n\n/** One enforced hierarchical delegation budget dimension. */\nexport const SubagentBudgetDimension = Schema.Literals([\n \"total-child-invocations\",\n \"concurrent-children\",\n \"turns\",\n \"tool-calls\",\n \"duration\",\n \"input-tokens\",\n \"output-tokens\",\n \"cost\",\n \"result-bytes\",\n]);\n\nexport type SubagentBudgetDimension = typeof SubagentBudgetDimension.Type;\n\nconst AmountFields = SubagentReservationAmounts.fields;\n\nconst OptionalAmountFields = {\n turns: Schema.optionalKey(Natural),\n toolCalls: Schema.optionalKey(Natural),\n durationMillis: Schema.optionalKey(Natural),\n inputTokens: Schema.optionalKey(Natural),\n outputTokens: Schema.optionalKey(Natural),\n costMicrousd: Schema.optionalKey(Natural),\n resultBytes: Schema.optionalKey(Natural),\n} as const;\n\n/** Observed child usage. An absent dimension was never reported and settles conservatively. */\nexport class SubagentObservedUsage extends Schema.Class<SubagentObservedUsage>(\n \"@effect-agent/capabilities/SubagentObservedUsage\",\n)(OptionalAmountFields) {}\n\n/** Remaining delegable allocation per configured dimension. Absent means not configured. */\nexport class SubagentAvailableAmounts extends Schema.Class<SubagentAvailableAmounts>(\n \"@effect-agent/capabilities/SubagentAvailableAmounts\",\n)(OptionalAmountFields) {}\n\n/** Reservation lifecycle: absent → reserved → releasePending → released. */\nexport const SubagentReservationStatus = Schema.Literals([\n \"reserved\",\n \"releasePending\",\n \"released\",\n]);\n\nexport type SubagentReservationStatus = typeof SubagentReservationStatus.Type;\n\n/** All-or-nothing allocation request for one Subagent Invocation. */\nexport class SubagentReservationRequest extends Schema.Class<SubagentReservationRequest>(\n \"@effect-agent/capabilities/SubagentReservationRequest\",\n)({\n parentRunId: RunId,\n parentToolCallId: ToolCallId,\n allocation: SubagentReservationAmounts,\n /** Additional invocation slots held for this child's entire subtree. */\n descendantInvocations: Schema.optionalKey(Natural),\n}) {}\n\n/** Accounting snapshot of one reservation: allocated, observed, covered, released, and overrun. */\nexport class SubagentReservationView extends Schema.Class<SubagentReservationView>(\n \"@effect-agent/capabilities/SubagentReservationView\",\n)({\n reservationId: BudgetReservationId,\n parentRunId: RunId,\n parentToolCallId: ToolCallId,\n status: SubagentReservationStatus,\n allocated: SubagentReservationAmounts,\n observedConsumed: SubagentObservedUsage,\n coveredConsumed: SubagentReservationAmounts,\n released: SubagentReservationAmounts,\n overrun: SubagentReservationAmounts,\n}) {}\n\n/** Aggregate parent delegation budget snapshot including every reservation it owns. */\nexport class SubagentParentBudgetView extends Schema.Class<SubagentParentBudgetView>(\n \"@effect-agent/capabilities/SubagentParentBudgetView\",\n)({\n parentRunId: RunId,\n caps: SubagentDelegationCaps,\n totalChildInvocations: Natural,\n available: SubagentAvailableAmounts,\n cumulativeOverrun: SubagentReservationAmounts,\n reservations: Schema.Array(SubagentReservationView),\n}) {}\n\n/** All-or-nothing admission failed: one dimension cannot cover the requested allocation. */\nexport class SubagentBudgetExhausted extends Schema.TaggedError<SubagentBudgetExhausted>()(\n \"SubagentBudgetExhausted\",\n {\n parentRunId: RunId,\n dimension: SubagentBudgetDimension,\n limitValue: Natural,\n observedValue: Natural,\n },\n) {}\n\n/** The stable key is already reserved with a different allocation; neither request may win silently. */\nexport class SubagentReservationConflict extends Schema.TaggedError<SubagentReservationConflict>()(\n \"SubagentReservationConflict\",\n {\n reservationId: BudgetReservationId,\n existingAllocation: SubagentReservationAmounts,\n requestedAllocation: SubagentReservationAmounts,\n },\n) {}\n\n/** No reservation exists for this identity. */\nexport class SubagentReservationUnknown extends Schema.TaggedError<SubagentReservationUnknown>()(\n \"SubagentReservationUnknown\",\n {\n reservationId: BudgetReservationId,\n },\n) {}\n\n/** No delegation budget was registered for this parent Run. */\nexport class SubagentParentBudgetUnknown extends Schema.TaggedError<SubagentParentBudgetUnknown>()(\n \"SubagentParentBudgetUnknown\",\n {\n parentRunId: RunId,\n },\n) {}\n\n/** The parent Run is already registered with different caps; neither set may win silently. */\nexport class SubagentParentBudgetConflict extends Schema.TaggedError<SubagentParentBudgetConflict>()(\n \"SubagentParentBudgetConflict\",\n {\n parentRunId: RunId,\n },\n) {}\n\n/** A parent budget cannot retire while one of its child reservations is unsettled. */\nexport class SubagentParentBudgetActive extends Schema.TaggedError<SubagentParentBudgetActive>()(\n \"SubagentParentBudgetActive\",\n {\n parentRunId: RunId,\n openReservations: Natural,\n },\n) {}\n\n/**\n * Parent-owned hierarchical Subagent budget reservation authority.\n *\n * Every transition is a single atomic `Ref` update, so parallel children can\n * never observe and spend the same remainder. The post-response usage hook in\n * `budget.ts` is deliberately not reused here: it accounts after the fact and\n * is not a reservation service.\n */\nexport class SubagentReservations extends Context.Service<\n SubagentReservations,\n {\n /**\n * Register the finite delegable budget of one parent Run. Re-registering\n * identical caps returns the existing registration; different caps fail\n * rather than silently winning.\n */\n readonly registerParent: (\n parentRunId: RunId,\n caps: SubagentDelegationCaps,\n ) => Effect.Effect<SubagentParentBudgetView, SubagentParentBudgetConflict>;\n /**\n * Atomically reserve an all-or-nothing child allocation from the parent's\n * remaining delegable budget, checking every dimension before committing\n * any. The same key with the same allocation is idempotent and never\n * double-reserves; a distinct key charges the monotonic total-invocation\n * counter by one plus its reserved descendant slots, which release never refunds.\n */\n readonly reserve: (\n request: SubagentReservationRequest,\n ) => Effect.Effect<\n SubagentReservationView,\n SubagentBudgetExhausted | SubagentReservationConflict | SubagentParentBudgetUnknown\n >;\n /**\n * Record observed child usage against a reservation. Usage above the\n * reserved amount is recorded as overrun and charged to the parent\n * aggregate, never clipped. Usage observed after settlement begins is\n * pure overrun and cannot create budget.\n */\n readonly observe: (\n reservationId: BudgetReservationId,\n usage: SubagentObservedUsage,\n ) => Effect.Effect<SubagentReservationView, SubagentReservationUnknown>;\n /**\n * `reserved → releasePending`: freeze the settlement decision. A dimension\n * with no observed usage conservatively consumes its reserved amount.\n * Idempotent once settlement has begun.\n */\n readonly beginRelease: (\n reservationId: BudgetReservationId,\n ) => Effect.Effect<SubagentReservationView, SubagentReservationUnknown>;\n /**\n * `releasePending → released`: return the unused allocation to the parent\n * exactly once. Called on a still-reserved reservation it settles through\n * `releasePending` in the same atomic update. Idempotent once released.\n */\n readonly release: (\n reservationId: BudgetReservationId,\n ) => Effect.Effect<SubagentReservationView, SubagentReservationUnknown>;\n /**\n * Acquire bounded child execution slots as a Scope-owned resource, so\n * an interrupted child always frees its slot. The Semaphore bounds only\n * concurrent children; a subtree holds one plus its possible descendants up front.\n * Total invocations are enforced separately by\n * `reserve`'s monotonic counter. A configured cap of zero fails closed\n * instead of queueing forever; an unconfigured cap leaves execution\n * ungated by this service.\n */\n readonly acquireChildSlot: (\n parentRunId: RunId,\n slots?: number,\n ) => Effect.Effect<void, SubagentParentBudgetUnknown | SubagentBudgetExhausted, Scope.Scope>;\n /**\n * Reclaim one terminal parent registration and all of its released child\n * reservations. Retirement is idempotent; an unknown parent is already\n * retired. Open reservations fail typed and leave the ledger unchanged.\n * The Run owner must call this after its final accounting snapshot no\n * longer needs to be observable.\n */\n readonly retireParent: (parentRunId: RunId) => Effect.Effect<void, SubagentParentBudgetActive>;\n /** Read the aggregate parent view for auditing and conservation checks. */\n readonly parentSnapshot: (\n parentRunId: RunId,\n ) => Effect.Effect<SubagentParentBudgetView, SubagentParentBudgetUnknown>;\n }\n>()(\"@effect-agent/capabilities/SubagentReservations\") {}\n\ntype ReservableDimensionKey = keyof typeof AmountFields;\n\ntype Amounts = Readonly<Record<ReservableDimensionKey, number>>;\ntype PartialAmounts = Readonly<Partial<Record<ReservableDimensionKey, number>>>;\n\ninterface DimensionSpec {\n readonly key: ReservableDimensionKey;\n readonly dimension: SubagentBudgetDimension;\n readonly cap: (caps: SubagentDelegationCaps) => number | undefined;\n}\n\nconst dimensionSpecs: ReadonlyArray<DimensionSpec> = [\n { key: \"turns\", dimension: \"turns\", cap: (caps) => caps.maxTurns },\n { key: \"toolCalls\", dimension: \"tool-calls\", cap: (caps) => caps.maxToolCalls },\n { key: \"durationMillis\", dimension: \"duration\", cap: (caps) => caps.maxDurationMillis },\n { key: \"inputTokens\", dimension: \"input-tokens\", cap: (caps) => caps.maxInputTokens },\n { key: \"outputTokens\", dimension: \"output-tokens\", cap: (caps) => caps.maxOutputTokens },\n { key: \"costMicrousd\", dimension: \"cost\", cap: (caps) => caps.maxCostMicrousd },\n { key: \"resultBytes\", dimension: \"result-bytes\", cap: (caps) => caps.maxResultBytes },\n];\n\nconst zeroAmounts: Amounts = {\n turns: 0,\n toolCalls: 0,\n durationMillis: 0,\n inputTokens: 0,\n outputTokens: 0,\n costMicrousd: 0,\n resultBytes: 0,\n};\n\ninterface ReservationState {\n readonly parentRunId: RunId;\n readonly parentToolCallId: ToolCallId;\n readonly descendantInvocations: number;\n readonly status: SubagentReservationStatus;\n readonly allocated: Amounts;\n readonly observed: PartialAmounts;\n readonly covered: Amounts;\n readonly overrun: Amounts;\n}\n\ninterface ParentBudgetState {\n readonly parentRunId: RunId;\n readonly caps: SubagentDelegationCaps;\n readonly gate: Semaphore.Semaphore | undefined;\n /** Monotonic count of distinct reservations; never refunded by release. */\n readonly totalChildInvocations: number;\n /** Remaining delegable allocation for configured dimensions only. */\n readonly available: PartialAmounts;\n readonly cumulativeOverrun: Amounts;\n}\n\ninterface ReservationLedger {\n readonly parents: ReadonlyMap<RunId, ParentBudgetState>;\n readonly reservations: ReadonlyMap<BudgetReservationId, ReservationState>;\n}\n\ntype TransitionResult<A, E> =\n | { readonly _tag: \"ok\"; readonly value: A }\n | { readonly _tag: \"error\"; readonly error: E }\n | { readonly _tag: \"corrupt\"; readonly message: string };\n\nconst ok = <A>(value: A): TransitionResult<A, never> => ({ _tag: \"ok\", value });\nconst fail = <E>(error: E): TransitionResult<never, E> => ({ _tag: \"error\", error });\n\nconst resolve = <A, E>(result: TransitionResult<A, E>): Effect.Effect<A, E> => {\n switch (result._tag) {\n case \"ok\":\n return Effect.succeed(result.value);\n case \"error\":\n return Effect.fail(result.error);\n case \"corrupt\":\n return Effect.die(new Error(result.message));\n }\n};\n\nconst sameCaps = (a: SubagentDelegationCaps, b: SubagentDelegationCaps): boolean =>\n a.maxTotalChildInvocations === b.maxTotalChildInvocations &&\n a.maxConcurrentChildren === b.maxConcurrentChildren &&\n a.maxTurns === b.maxTurns &&\n a.maxToolCalls === b.maxToolCalls &&\n a.maxDurationMillis === b.maxDurationMillis &&\n a.maxInputTokens === b.maxInputTokens &&\n a.maxOutputTokens === b.maxOutputTokens &&\n a.maxCostMicrousd === b.maxCostMicrousd &&\n a.maxResultBytes === b.maxResultBytes;\n\nconst sameAmounts = (a: Amounts, b: Amounts): boolean =>\n dimensionSpecs.every((spec) => a[spec.key] === b[spec.key]);\n\nconst optionalAmounts = (partial: PartialAmounts): { [K in ReservableDimensionKey]?: number } => {\n const out: { [K in ReservableDimensionKey]?: number } = {};\n\n for (const spec of dimensionSpecs) {\n const value = partial[spec.key];\n\n if (value !== undefined) {\n out[spec.key] = value;\n }\n }\n\n return out;\n};\n\n/** Covered usage freezes at settlement, so the unused allocation remains stable afterward. */\nconst unusedAllocation = (reservation: ReservationState): Amounts => {\n const unused = { ...zeroAmounts };\n\n for (const spec of dimensionSpecs) {\n unused[spec.key] = reservation.allocated[spec.key] - reservation.covered[spec.key];\n }\n\n return unused;\n};\n\nconst reservationView = (\n reservationId: BudgetReservationId,\n state: ReservationState,\n): SubagentReservationView =>\n SubagentReservationView.make({\n reservationId,\n parentRunId: state.parentRunId,\n parentToolCallId: state.parentToolCallId,\n status: state.status,\n allocated: SubagentReservationAmounts.make(state.allocated),\n observedConsumed: SubagentObservedUsage.make(optionalAmounts(state.observed)),\n coveredConsumed: SubagentReservationAmounts.make(state.covered),\n released: SubagentReservationAmounts.make(\n state.status === \"released\" ? unusedAllocation(state) : zeroAmounts,\n ),\n overrun: SubagentReservationAmounts.make(state.overrun),\n });\n\nconst parentView = (\n ledger: ReservationLedger,\n parent: ParentBudgetState,\n): SubagentParentBudgetView => {\n const reservations: Array<SubagentReservationView> = [];\n\n for (const [reservationId, reservation] of ledger.reservations) {\n if (reservation.parentRunId === parent.parentRunId) {\n reservations.push(reservationView(reservationId, reservation));\n }\n }\n\n return SubagentParentBudgetView.make({\n parentRunId: parent.parentRunId,\n caps: parent.caps,\n totalChildInvocations: parent.totalChildInvocations,\n available: SubagentAvailableAmounts.make(optionalAmounts(parent.available)),\n cumulativeOverrun: SubagentReservationAmounts.make(parent.cumulativeOverrun),\n reservations,\n });\n};\n\nconst corruptParent = (parentRunId: RunId): TransitionResult<never, never> => ({\n _tag: \"corrupt\",\n message: `SubagentReservations ledger invariant violated: reservation references unregistered parent Run ${parentRunId}`,\n});\n\nconst registerTransition = (\n ledger: ReservationLedger,\n parentRunId: RunId,\n caps: SubagentDelegationCaps,\n gate: Semaphore.Semaphore | undefined,\n): readonly [\n TransitionResult<SubagentParentBudgetView, SubagentParentBudgetConflict>,\n ReservationLedger,\n] => {\n const existing = ledger.parents.get(parentRunId);\n\n if (existing !== undefined) {\n return sameCaps(existing.caps, caps)\n ? [ok(parentView(ledger, existing)), ledger]\n : [fail(SubagentParentBudgetConflict.make({ parentRunId })), ledger];\n }\n const available: { [K in ReservableDimensionKey]?: number } = {};\n\n for (const spec of dimensionSpecs) {\n const cap = spec.cap(caps);\n\n if (cap !== undefined) {\n available[spec.key] = cap;\n }\n }\n\n const parent: ParentBudgetState = {\n parentRunId,\n caps,\n gate,\n totalChildInvocations: 0,\n available,\n cumulativeOverrun: zeroAmounts,\n };\n\n const next: ReservationLedger = {\n parents: new Map(ledger.parents).set(parentRunId, parent),\n reservations: ledger.reservations,\n };\n\n return [ok(parentView(next, parent)), next];\n};\n\nconst reserveTransition = (\n ledger: ReservationLedger,\n request: SubagentReservationRequest,\n): readonly [\n TransitionResult<\n SubagentReservationView,\n SubagentBudgetExhausted | SubagentReservationConflict | SubagentParentBudgetUnknown\n >,\n ReservationLedger,\n] => {\n const parent = ledger.parents.get(request.parentRunId);\n\n if (parent === undefined) {\n return [fail(SubagentParentBudgetUnknown.make({ parentRunId: request.parentRunId })), ledger];\n }\n const reservationId = makeBudgetReservationId(request.parentRunId, request.parentToolCallId);\n const existing = ledger.reservations.get(reservationId);\n\n if (existing !== undefined) {\n return sameAmounts(existing.allocated, request.allocation) &&\n existing.descendantInvocations === (request.descendantInvocations ?? 0)\n ? [ok(reservationView(reservationId, existing)), ledger]\n : [\n fail(\n SubagentReservationConflict.make({\n reservationId,\n existingAllocation: SubagentReservationAmounts.make(existing.allocated),\n requestedAllocation: request.allocation,\n }),\n ),\n ledger,\n ];\n }\n const maxInvocations = parent.caps.maxTotalChildInvocations;\n const slots = 1 + (request.descendantInvocations ?? 0);\n\n if (maxInvocations !== undefined && parent.totalChildInvocations + slots > maxInvocations) {\n return [\n fail(\n SubagentBudgetExhausted.make({\n parentRunId: request.parentRunId,\n dimension: \"total-child-invocations\",\n limitValue: maxInvocations,\n observedValue: parent.totalChildInvocations + slots,\n }),\n ),\n ledger,\n ];\n }\n for (const spec of dimensionSpecs) {\n const cap = spec.cap(parent.caps);\n\n if (cap === undefined) {\n continue;\n }\n // Overrun already charged to the parent aggregate reduces delegable\n // headroom without mutating `available`.\n const headroom = (parent.available[spec.key] ?? 0) - parent.cumulativeOverrun[spec.key];\n const requested = request.allocation[spec.key];\n\n if (requested > headroom) {\n return [\n fail(\n SubagentBudgetExhausted.make({\n parentRunId: request.parentRunId,\n dimension: spec.dimension,\n limitValue: cap,\n observedValue: cap - headroom + requested,\n }),\n ),\n ledger,\n ];\n }\n }\n\n const nextAvailable: { [K in ReservableDimensionKey]?: number } = {\n ...parent.available,\n };\n\n for (const spec of dimensionSpecs) {\n const available = parent.available[spec.key];\n\n if (available !== undefined) {\n nextAvailable[spec.key] = available - request.allocation[spec.key];\n }\n }\n\n const reservation: ReservationState = {\n parentRunId: request.parentRunId,\n parentToolCallId: request.parentToolCallId,\n descendantInvocations: request.descendantInvocations ?? 0,\n status: \"reserved\",\n allocated: request.allocation,\n observed: {},\n covered: zeroAmounts,\n overrun: zeroAmounts,\n };\n\n const next: ReservationLedger = {\n parents: new Map(ledger.parents).set(request.parentRunId, {\n ...parent,\n totalChildInvocations: parent.totalChildInvocations + slots,\n available: nextAvailable,\n }),\n reservations: new Map(ledger.reservations).set(reservationId, reservation),\n };\n\n return [ok(reservationView(reservationId, reservation)), next];\n};\n\nconst observeTransition = (\n ledger: ReservationLedger,\n reservationId: BudgetReservationId,\n usage: SubagentObservedUsage,\n): readonly [\n TransitionResult<SubagentReservationView, SubagentReservationUnknown>,\n ReservationLedger,\n] => {\n const reservation = ledger.reservations.get(reservationId);\n\n if (reservation === undefined) {\n return [fail(SubagentReservationUnknown.make({ reservationId })), ledger];\n }\n const parent = ledger.parents.get(reservation.parentRunId);\n\n if (parent === undefined) {\n return [corruptParent(reservation.parentRunId), ledger];\n }\n const observed: { [K in ReservableDimensionKey]?: number } = { ...reservation.observed };\n const covered: Record<ReservableDimensionKey, number> = { ...reservation.covered };\n const overrun: Record<ReservableDimensionKey, number> = { ...reservation.overrun };\n\n const cumulativeOverrun: Record<ReservableDimensionKey, number> = {\n ...parent.cumulativeOverrun,\n };\n\n for (const spec of dimensionSpecs) {\n const delta = usage[spec.key];\n\n if (delta === undefined) {\n continue;\n }\n observed[spec.key] = (observed[spec.key] ?? 0) + delta;\n\n // Once settlement began the accounting decision is frozen, so late or\n // corrected usage is pure overrun and cannot silently create budget.\n const coverable =\n reservation.status === \"reserved\"\n ? Math.min(delta, reservation.allocated[spec.key] - covered[spec.key])\n : 0;\n\n covered[spec.key] += coverable;\n const overrunDelta = delta - coverable;\n\n overrun[spec.key] += overrunDelta;\n cumulativeOverrun[spec.key] += overrunDelta;\n }\n const nextReservation: ReservationState = { ...reservation, observed, covered, overrun };\n\n const next: ReservationLedger = {\n parents: new Map(ledger.parents).set(parent.parentRunId, { ...parent, cumulativeOverrun }),\n reservations: new Map(ledger.reservations).set(reservationId, nextReservation),\n };\n\n return [ok(reservationView(reservationId, nextReservation)), next];\n};\n\n/**\n * Freeze the settlement decision. A dimension that was never observed\n * conservatively consumes its full reserved amount.\n */\nconst freezeSettlement = (reservation: ReservationState): ReservationState => {\n const observed: { [K in ReservableDimensionKey]?: number } = { ...reservation.observed };\n const covered: Record<ReservableDimensionKey, number> = { ...reservation.covered };\n\n for (const spec of dimensionSpecs) {\n if (observed[spec.key] === undefined) {\n observed[spec.key] = reservation.allocated[spec.key];\n covered[spec.key] = reservation.allocated[spec.key];\n }\n }\n\n return { ...reservation, status: \"releasePending\", observed, covered };\n};\n\nconst beginReleaseTransition = (\n ledger: ReservationLedger,\n reservationId: BudgetReservationId,\n): readonly [\n TransitionResult<SubagentReservationView, SubagentReservationUnknown>,\n ReservationLedger,\n] => {\n const reservation = ledger.reservations.get(reservationId);\n\n if (reservation === undefined) {\n return [fail(SubagentReservationUnknown.make({ reservationId })), ledger];\n }\n if (reservation.status !== \"reserved\") {\n return [ok(reservationView(reservationId, reservation)), ledger];\n }\n const frozen = freezeSettlement(reservation);\n\n const next: ReservationLedger = {\n parents: ledger.parents,\n reservations: new Map(ledger.reservations).set(reservationId, frozen),\n };\n\n return [ok(reservationView(reservationId, frozen)), next];\n};\n\nconst releaseTransition = (\n ledger: ReservationLedger,\n reservationId: BudgetReservationId,\n): readonly [\n TransitionResult<SubagentReservationView, SubagentReservationUnknown>,\n ReservationLedger,\n] => {\n const reservation = ledger.reservations.get(reservationId);\n\n if (reservation === undefined) {\n return [fail(SubagentReservationUnknown.make({ reservationId })), ledger];\n }\n if (reservation.status === \"released\") {\n return [ok(reservationView(reservationId, reservation)), ledger];\n }\n const parent = ledger.parents.get(reservation.parentRunId);\n\n if (parent === undefined) {\n return [corruptParent(reservation.parentRunId), ledger];\n }\n const frozen = reservation.status === \"reserved\" ? freezeSettlement(reservation) : reservation;\n const unused = unusedAllocation(frozen);\n const nextAvailable: { [K in ReservableDimensionKey]?: number } = { ...parent.available };\n\n for (const spec of dimensionSpecs) {\n const available = parent.available[spec.key];\n\n if (available !== undefined) {\n nextAvailable[spec.key] = available + unused[spec.key];\n }\n }\n const settled: ReservationState = { ...frozen, status: \"released\" };\n\n const next: ReservationLedger = {\n parents: new Map(ledger.parents).set(parent.parentRunId, {\n ...parent,\n available: nextAvailable,\n }),\n reservations: new Map(ledger.reservations).set(reservationId, settled),\n };\n\n return [ok(reservationView(reservationId, settled)), next];\n};\n\nconst retireParentTransition = (\n ledger: ReservationLedger,\n parentRunId: RunId,\n): readonly [TransitionResult<void, SubagentParentBudgetActive>, ReservationLedger] => {\n if (!ledger.parents.has(parentRunId)) {\n return [ok(undefined), ledger];\n }\n let openReservations = 0;\n\n for (const reservation of ledger.reservations.values()) {\n if (reservation.parentRunId === parentRunId && reservation.status !== \"released\") {\n openReservations += 1;\n }\n }\n if (openReservations > 0) {\n return [fail(SubagentParentBudgetActive.make({ parentRunId, openReservations })), ledger];\n }\n const parents = new Map(ledger.parents);\n\n parents.delete(parentRunId);\n const reservations = new Map(ledger.reservations);\n\n for (const [reservationId, reservation] of reservations) {\n if (reservation.parentRunId === parentRunId) {\n reservations.delete(reservationId);\n }\n }\n\n return [ok(undefined), { parents, reservations }];\n};\n\n/**\n * In-memory reservation ledger. All state lives in one `Ref` owned by the\n * Layer's Scope; every transition is a single atomic `Ref.modify`.\n */\nexport const SubagentReservationsMemoryLive: Layer.Layer<SubagentReservations> = Layer.effect(\n SubagentReservations,\n Effect.gen(function* () {\n const state = yield* Ref.make<ReservationLedger>({\n parents: new Map(),\n reservations: new Map(),\n });\n\n return SubagentReservations.of({\n registerParent: Effect.fn(\"SubagentReservations.registerParent\")(\n function* (parentRunId, caps) {\n const gate =\n caps.maxConcurrentChildren !== undefined && caps.maxConcurrentChildren > 0\n ? yield* Semaphore.make(caps.maxConcurrentChildren)\n : undefined;\n\n const result = yield* Ref.modify(state, (ledger) =>\n registerTransition(ledger, parentRunId, caps, gate),\n );\n\n return yield* resolve(result);\n },\n ),\n reserve: Effect.fn(\"SubagentReservations.reserve\")(function* (request) {\n const result = yield* Ref.modify(state, (ledger) => reserveTransition(ledger, request));\n\n return yield* resolve(result);\n }),\n observe: Effect.fn(\"SubagentReservations.observe\")(function* (reservationId, usage) {\n const result = yield* Ref.modify(state, (ledger) =>\n observeTransition(ledger, reservationId, usage),\n );\n\n return yield* resolve(result);\n }),\n beginRelease: Effect.fn(\"SubagentReservations.beginRelease\")(function* (reservationId) {\n const result = yield* Ref.modify(state, (ledger) =>\n beginReleaseTransition(ledger, reservationId),\n );\n\n return yield* resolve(result);\n }),\n release: Effect.fn(\"SubagentReservations.release\")(function* (reservationId) {\n const result = yield* Ref.modify(state, (ledger) =>\n releaseTransition(ledger, reservationId),\n );\n\n return yield* resolve(result);\n }),\n acquireChildSlot: Effect.fn(\"SubagentReservations.acquireChildSlot\")(function* (\n parentRunId,\n slots = 1,\n ) {\n const ledger = yield* Ref.get(state);\n const parent = ledger.parents.get(parentRunId);\n\n if (parent === undefined) {\n return yield* SubagentParentBudgetUnknown.make({ parentRunId });\n }\n const cap = parent.caps.maxConcurrentChildren;\n\n if (cap === undefined) {\n return;\n }\n if (!Number.isSafeInteger(slots) || slots < 1 || slots > cap || parent.gate === undefined) {\n return yield* SubagentBudgetExhausted.make({\n parentRunId,\n dimension: \"concurrent-children\",\n limitValue: cap,\n observedValue: Number.isSafeInteger(slots) && slots > 0 ? slots : 0,\n });\n }\n const gate = parent.gate;\n\n yield* Effect.acquireRelease(\n gate.take(slots),\n (permits) => gate.release(permits).pipe(Effect.asVoid),\n { interruptible: true },\n );\n }),\n retireParent: Effect.fn(\"SubagentReservations.retireParent\")(function* (parentRunId) {\n const result = yield* Ref.modify(state, (ledger) =>\n retireParentTransition(ledger, parentRunId),\n );\n\n return yield* resolve(result);\n }),\n parentSnapshot: Effect.fn(\"SubagentReservations.parentSnapshot\")(function* (parentRunId) {\n const ledger = yield* Ref.get(state);\n const parent = ledger.parents.get(parentRunId);\n\n if (parent === undefined) {\n return yield* SubagentParentBudgetUnknown.make({ parentRunId });\n }\n\n return parentView(ledger, parent);\n }),\n });\n }),\n);\n"],"mappings":"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"}
|