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 @@
|
|
|
1
|
+
{"version":3,"file":"SubagentContract.mjs","names":[],"sources":["../../src/core/SubagentContract.ts"],"sourcesContent":["import { Context, Schema } from \"effect\";\n\nimport { AgentId, ThreadId, DelegationId, RunId, ToolCallId, SubmissionId } from \"./Identifiers.ts\";\n\nconst Natural = Schema.Natural;\n\n/** Tree authority ceiling. Each child exposes only its own Toolkit's permitted names. */\nexport class SubagentGrant extends Schema.Class<SubagentGrant>(\n \"@effect-agent/capabilities/SubagentGrant\",\n)({\n allowedToolNames: Schema.Array(Schema.NonEmptyString).check(Schema.isMaxLength(128)),\n maxDepth: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 16 })),\n /** Omitted permits either lifetime within the depth and reserved subtree budgets. */\n childLifetimes: Schema.optionalKey(\n Schema.Array(Schema.Literals([\"attached\", \"background\"])).check(Schema.isMaxLength(2)),\n ),\n}) {}\n\n/** Intersect inherited authority; another delegation can never restore a removed capability. */\nexport const narrowSubagentGrant = (\n declared: SubagentGrant,\n inherited?: SubagentGrant,\n): SubagentGrant =>\n inherited === undefined\n ? declared\n : SubagentGrant.make({\n allowedToolNames: declared.allowedToolNames.filter((name) =>\n inherited.allowedToolNames.includes(name),\n ),\n maxDepth: Math.min(declared.maxDepth, inherited.maxDepth),\n childLifetimes: (declared.childLifetimes ?? [\"attached\", \"background\"]).filter((lifetime) =>\n (inherited.childLifetimes ?? [\"attached\", \"background\"]).includes(lifetime),\n ),\n });\n\n/** Finite delegable caps for one parent Run. Absent means not configured; present values are finite. */\nexport class SubagentDelegationCaps extends Schema.Class<SubagentDelegationCaps>(\n \"@effect-agent/capabilities/SubagentDelegationCaps\",\n)({\n maxTotalChildInvocations: Schema.optionalKey(Natural),\n maxConcurrentChildren: Schema.optionalKey(Natural),\n maxTurns: Schema.optionalKey(Natural),\n maxToolCalls: Schema.optionalKey(Natural),\n maxDurationMillis: Schema.optionalKey(Natural),\n maxInputTokens: Schema.optionalKey(Natural),\n maxOutputTokens: Schema.optionalKey(Natural),\n maxCostMicrousd: Schema.optionalKey(Natural),\n maxResultBytes: Schema.optionalKey(Natural),\n}) {}\n\nconst AmountFields = {\n turns: Natural,\n toolCalls: Natural,\n durationMillis: Natural,\n inputTokens: Natural,\n outputTokens: Natural,\n costMicrousd: Natural,\n resultBytes: Natural,\n} as const;\n\n/** Exact amounts across every reservable delegation dimension. */\nexport class SubagentReservationAmounts extends Schema.Class<SubagentReservationAmounts>(\n \"@effect-agent/capabilities/SubagentReservationAmounts\",\n)(AmountFields) {}\n\n/** One child reservation against the parent Run's shared delegation pool. */\nexport const SubagentBudgetReservation = Schema.Struct({\n caps: SubagentDelegationCaps,\n allocation: SubagentReservationAmounts,\n /** Slots reserved for every descendant input beneath this input; absent reserves none. */\n descendantInvocations: Schema.optionalKey(Natural),\n});\n\nexport type SubagentBudgetReservation = typeof SubagentBudgetReservation.Type;\n\n/** Root-relative delegation depth; the direct child of a top-level run has depth 1. */\nexport const DelegationDepth = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));\nexport type DelegationDepth = typeof DelegationDepth.Type;\n\n/** @deprecated Names are application-owned; use DelegationTool metadata for classification. */\nexport const delegationToolPrefix = \"delegate_\";\n\n/** @deprecated Checks a legacy spelling only, never execution, nesting or recovery semantics. */\nexport const isDelegationToolName = (toolName: string): boolean =>\n toolName.startsWith(delegationToolPrefix);\n\n/** Marks a Tool implementing the idempotent Subagent establishment protocol. */\nexport const DelegationTool = Context.Reference<boolean>(\"@effect-agent/core/DelegationTool\", {\n defaultValue: () => false,\n});\n\n/** Marks a host-managed idempotent worker operation, independently of its Tool name. */\nexport const WorkerOperationTool = Context.Reference<boolean>(\n \"@effect-agent/core/WorkerOperationTool\",\n {\n defaultValue: () => false,\n },\n);\n\n/** Identifies the background launch operation within a generated management Toolkit. */\nexport const BackgroundSpawnTool = Context.Reference<boolean>(\n \"@effect-agent/core/BackgroundSpawnTool\",\n {\n defaultValue: () => false,\n },\n);\n\n/** Declaration metadata and inherited authority determine the effective visible Tool set. */\nexport const isSubagentToolAllowed = (\n grant: SubagentGrant | undefined,\n depth: number,\n name: string,\n annotations: Context.Context<never>,\n): boolean =>\n grant === undefined ||\n (grant.allowedToolNames.includes(name) &&\n (Context.get(annotations, BackgroundSpawnTool)\n ? depth < grant.maxDepth &&\n (grant.childLifetimes ?? [\"attached\", \"background\"]).includes(\"background\")\n : Context.get(annotations, DelegationTool)\n ? depth < grant.maxDepth &&\n (grant.childLifetimes ?? [\"attached\", \"background\"]).includes(\"attached\")\n : true));\n\n/** Persisted preparation classification, checked against the resolved Tool before replay. */\nexport const ToolExecutionKind = Schema.Literals([\"ordinary\", \"delegation\", \"orchestration\"]);\nexport type ToolExecutionKind = typeof ToolExecutionKind.Type;\n\n/** Resolve only trusted declaration metadata; names never authorize automatic replay. */\nexport const getToolExecutionKind = (annotations: Context.Context<never>): ToolExecutionKind =>\n Context.get(annotations, WorkerOperationTool)\n ? \"orchestration\"\n : Context.get(annotations, DelegationTool)\n ? \"delegation\"\n : \"ordinary\";\n\n/** Immutable lineage from a child Thread to the parent identity that established it. */\nexport class SubagentParentLink extends Schema.Class<SubagentParentLink>(\"SubagentParentLink\")({\n delegationId: DelegationId,\n parentAgentId: AgentId,\n parentThreadId: ThreadId,\n parentRunId: RunId,\n parentToolCallId: ToolCallId,\n depth: DelegationDepth,\n}) {}\n\n/**\n * Classification of one bounded durable delegation failure.\n * `\"child-failed\"` and `\"child-aborted\"` project the\n * child's canonical failed/aborted Settlement; `\"child-compatibility\"`\n * projects the framework's `ChildCompatibilityFailure` child Settlement (the\n * stored child Binding digest was unavailable — recovery never substituted\n * current code); `\"establishment-denied\"` is a fail-closed coordinator\n * refusal (lineage/digest verification, divergent replay); and\n * `\"declaration-unavailable\"` is retained for decoding failures recorded by\n * versions that required an explicit durable digest declaration.\n */\nexport const SubagentExecutionFailureClassification = Schema.Literals([\n \"child-failed\",\n \"child-aborted\",\n \"child-compatibility\",\n \"establishment-denied\",\n \"declaration-unavailable\",\n]);\n\nexport type SubagentExecutionFailureClassification =\n typeof SubagentExecutionFailureClassification.Type;\n\nexport const maxErrorTagLength = 256;\nconst BoundedErrorTag = Schema.NonEmptyString.check(Schema.isMaxLength(maxErrorTagLength));\n\n/**\n * Bounded framework projection of a durable child failure, shared by attached joins and reports.\n * A failed or aborted durable child\n * joins its parent Tool Call as exactly this typed failure: a classification,\n * the child references, and the coordinator's bounded `{errorTag, message}`\n * projection — never a raw Cause, stack, provider response, secret, or child\n * payload. The typed child failure union does not survive a durable\n * Settlement, so `mapChildFailure` remains the ephemeral-path contract;\n * Schema-declared durable domain-failure mapping is a recorded later\n * extension.\n */\nexport class SubagentExecutionFailure extends Schema.TaggedError<SubagentExecutionFailure>()(\n \"SubagentExecutionFailure\",\n {\n delegationId: DelegationId,\n targetAgentId: AgentId,\n classification: SubagentExecutionFailureClassification,\n /** Child references, present once establishment reached a child identity. */\n childThreadId: Schema.optionalKey(ThreadId),\n childSubmissionId: Schema.optionalKey(SubmissionId),\n childRunId: Schema.optionalKey(RunId),\n errorTag: BoundedErrorTag,\n message: Schema.String.check(Schema.isMaxLength(4 * 1024)),\n },\n) {}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as ThreadError, c as ThreadLimitExceeded, d as ThreadText, i as ThreadEncodingError, l as ThreadMessage, m as toPrompt, n as Thread, o as ThreadExport, p as layerMemory, r as ThreadAppend, s as ThreadHistoryDiverged, t as Store, u as ThreadNotFound } from "../Thread-DOBQ0QUY.mjs";
|
|
2
|
+
export { Store, Thread, ThreadAppend, ThreadEncodingError, ThreadError, ThreadExport, ThreadHistoryDiverged, ThreadLimitExceeded, ThreadMessage, ThreadNotFound, ThreadText, layerMemory, toPrompt };
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
+
import { n as utf8ByteLength } from "../utf8-DchGZRBd.mjs";
|
|
3
|
+
import { RunId, ThreadId } from "./Identifiers.mjs";
|
|
4
|
+
import { Prompt } from "effect/unstable/ai";
|
|
5
|
+
import { Clock, Context, DateTime, Effect, Layer, Schema, SynchronizedRef } from "effect";
|
|
6
|
+
//#region src/core/Thread.ts
|
|
7
|
+
var Thread_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
+
Store: () => Store,
|
|
9
|
+
Thread: () => Thread,
|
|
10
|
+
ThreadAppend: () => ThreadAppend,
|
|
11
|
+
ThreadEncodingError: () => ThreadEncodingError,
|
|
12
|
+
ThreadExport: () => ThreadExport,
|
|
13
|
+
ThreadHistoryDiverged: () => ThreadHistoryDiverged,
|
|
14
|
+
ThreadLimitExceeded: () => ThreadLimitExceeded,
|
|
15
|
+
ThreadMessage: () => ThreadMessage,
|
|
16
|
+
ThreadNotFound: () => ThreadNotFound,
|
|
17
|
+
ThreadText: () => ThreadText,
|
|
18
|
+
layerMemory: () => layerMemory,
|
|
19
|
+
toPrompt: () => toPrompt
|
|
20
|
+
});
|
|
21
|
+
/** Bound applied to one text projection before it can enter a model context. */
|
|
22
|
+
const ThreadText = Schema.String.check(Schema.isMaxLength(65536));
|
|
23
|
+
const MAX_THREAD_MESSAGES = 1024;
|
|
24
|
+
const MAX_THREAD_CONTENT_BYTES = 4194304;
|
|
25
|
+
const MAX_THREADS = 256;
|
|
26
|
+
const MAX_STORE_CONTENT_BYTES = 67108864;
|
|
27
|
+
/** One append-only native Effect AI message in a conversation. */
|
|
28
|
+
var ThreadMessage = class extends Schema.Class("@effect-agent/capabilities/ThreadMessage")({
|
|
29
|
+
threadId: ThreadId,
|
|
30
|
+
sequence: Schema.Natural,
|
|
31
|
+
runId: Schema.optionalKey(RunId),
|
|
32
|
+
message: Prompt.Message,
|
|
33
|
+
encodedBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_THREAD_CONTENT_BYTES)),
|
|
34
|
+
timestamp: Schema.DateTimeUtcFromString
|
|
35
|
+
}) {};
|
|
36
|
+
/** An identified, ordered conversation snapshot. Storage and execution recovery are separate concerns. */
|
|
37
|
+
var Thread = class extends Schema.Class("@effect-agent/capabilities/ThreadSnapshot")({
|
|
38
|
+
version: Schema.Literal(1),
|
|
39
|
+
threadId: ThreadId,
|
|
40
|
+
nextSequence: Schema.Natural,
|
|
41
|
+
contentBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_THREAD_CONTENT_BYTES)),
|
|
42
|
+
messages: Schema.Array(ThreadMessage).check(Schema.isMaxLength(MAX_THREAD_MESSAGES))
|
|
43
|
+
}) {};
|
|
44
|
+
/** Portable conversation snapshot. Its format is independent of the durable execution journal. */
|
|
45
|
+
var ThreadExport = class extends Schema.Class("@effect-agent/capabilities/ThreadExport")({
|
|
46
|
+
format: Schema.Literal("effect-agent/ephemeral-thread@1"),
|
|
47
|
+
exportedAt: Schema.DateTimeUtcFromString,
|
|
48
|
+
snapshot: Thread
|
|
49
|
+
}) {};
|
|
50
|
+
/** Native message accepted by the append-only thread. */
|
|
51
|
+
var ThreadAppend = class extends Schema.Class("@effect-agent/capabilities/ThreadAppend")({
|
|
52
|
+
runId: Schema.optionalKey(RunId),
|
|
53
|
+
message: Prompt.Message
|
|
54
|
+
}) {};
|
|
55
|
+
/** The requested Thread has not been created in this store. */
|
|
56
|
+
var ThreadNotFound = class extends Schema.TaggedError()("ThreadNotFound", { threadId: ThreadId }) {};
|
|
57
|
+
/** A process-local Thread store reached an explicit count or encoded-content bound. */
|
|
58
|
+
var ThreadLimitExceeded = class extends Schema.TaggedError()("ThreadLimitExceeded", {
|
|
59
|
+
threadId: ThreadId,
|
|
60
|
+
limit: Schema.Literals([
|
|
61
|
+
"messages",
|
|
62
|
+
"content-bytes",
|
|
63
|
+
"threads",
|
|
64
|
+
"store-content-bytes"
|
|
65
|
+
]),
|
|
66
|
+
limitValue: Schema.Natural,
|
|
67
|
+
observedValue: Schema.Natural
|
|
68
|
+
}) {};
|
|
69
|
+
/** Engine history was not an append-only extension of the official snapshot. */
|
|
70
|
+
var ThreadHistoryDiverged = class extends Schema.TaggedError()("ThreadHistoryDiverged", {
|
|
71
|
+
threadId: ThreadId,
|
|
72
|
+
message: Schema.String
|
|
73
|
+
}) {};
|
|
74
|
+
/** Native Prompt encoding failed before a bounded state mutation. */
|
|
75
|
+
var ThreadEncodingError = class extends Schema.TaggedError()("ThreadEncodingError", {
|
|
76
|
+
threadId: ThreadId,
|
|
77
|
+
message: Schema.String
|
|
78
|
+
}) {};
|
|
79
|
+
/** Reconstruct exact Effect AI Prompt history, including tools, reasoning, files, and options. */
|
|
80
|
+
const toPrompt = (snapshot) => Prompt.fromMessages(snapshot.messages.map((entry) => entry.message));
|
|
81
|
+
/**
|
|
82
|
+
* Process-local state for conversation history. Updates remain visible even
|
|
83
|
+
* when a Run later fails; this service has no successful-Run commit boundary or durable recovery.
|
|
84
|
+
* ThreadHistory.layer uses this store for ordinary Runs and interactive history.
|
|
85
|
+
* Scope closure releases all in-memory state.
|
|
86
|
+
*/
|
|
87
|
+
var Store = class extends Context.Service()("@effect-agent/capabilities/EphemeralThreads") {};
|
|
88
|
+
const encodeMessage = (threadId, message) => Schema.encodeEffect(Prompt.Message)(message).pipe(Effect.map((encoded) => JSON.stringify(encoded)), Effect.mapError((error) => ThreadEncodingError.make({
|
|
89
|
+
threadId,
|
|
90
|
+
message: `Could not encode native Effect AI message: ${error.message}`
|
|
91
|
+
})));
|
|
92
|
+
const findSnapshot = (state, threadId) => {
|
|
93
|
+
const snapshot = state.get(threadId);
|
|
94
|
+
return snapshot === void 0 ? Effect.fail(ThreadNotFound.make({ threadId })) : Effect.succeed(snapshot);
|
|
95
|
+
};
|
|
96
|
+
const totalStoreBytes = (threads) => {
|
|
97
|
+
let total = 0;
|
|
98
|
+
for (const snapshot of threads.values()) total += snapshot.contentBytes;
|
|
99
|
+
return total;
|
|
100
|
+
};
|
|
101
|
+
const appendEncoded = Effect.fn("Thread.Store.appendEncoded")(function* (threads, current, append, encoded, timestamp) {
|
|
102
|
+
const threadId = current.threadId;
|
|
103
|
+
if (current.messages.length >= MAX_THREAD_MESSAGES) return yield* ThreadLimitExceeded.make({
|
|
104
|
+
threadId,
|
|
105
|
+
limit: "messages",
|
|
106
|
+
limitValue: MAX_THREAD_MESSAGES,
|
|
107
|
+
observedValue: current.messages.length + 1
|
|
108
|
+
});
|
|
109
|
+
const messageBytes = utf8ByteLength(encoded);
|
|
110
|
+
const contentBytes = current.contentBytes + messageBytes;
|
|
111
|
+
if (contentBytes > MAX_THREAD_CONTENT_BYTES) return yield* ThreadLimitExceeded.make({
|
|
112
|
+
threadId,
|
|
113
|
+
limit: "content-bytes",
|
|
114
|
+
limitValue: MAX_THREAD_CONTENT_BYTES,
|
|
115
|
+
observedValue: contentBytes
|
|
116
|
+
});
|
|
117
|
+
const storeBytes = totalStoreBytes(threads) + messageBytes;
|
|
118
|
+
if (storeBytes > MAX_STORE_CONTENT_BYTES) return yield* ThreadLimitExceeded.make({
|
|
119
|
+
threadId,
|
|
120
|
+
limit: "store-content-bytes",
|
|
121
|
+
limitValue: MAX_STORE_CONTENT_BYTES,
|
|
122
|
+
observedValue: storeBytes
|
|
123
|
+
});
|
|
124
|
+
const message = ThreadMessage.make({
|
|
125
|
+
threadId,
|
|
126
|
+
sequence: current.nextSequence,
|
|
127
|
+
...append.runId === void 0 ? {} : { runId: append.runId },
|
|
128
|
+
message: append.message,
|
|
129
|
+
encodedBytes: messageBytes,
|
|
130
|
+
timestamp
|
|
131
|
+
});
|
|
132
|
+
const next = Thread.make({
|
|
133
|
+
version: current.version,
|
|
134
|
+
threadId: current.threadId,
|
|
135
|
+
nextSequence: current.nextSequence + 1,
|
|
136
|
+
contentBytes,
|
|
137
|
+
messages: [...current.messages, message]
|
|
138
|
+
});
|
|
139
|
+
return [next, new Map(threads).set(threadId, next)];
|
|
140
|
+
});
|
|
141
|
+
/** In-memory storage shared for the consumer's Scope; it does not survive process loss. */
|
|
142
|
+
const layerMemory = Layer.effect(Store, Effect.gen(function* () {
|
|
143
|
+
const state = yield* SynchronizedRef.make(/* @__PURE__ */ new Map());
|
|
144
|
+
yield* Effect.addFinalizer(() => SynchronizedRef.set(state, /* @__PURE__ */ new Map()));
|
|
145
|
+
return Store.of({
|
|
146
|
+
create: (threadId) => SynchronizedRef.modifyEffect(state, Effect.fn(function* (threads) {
|
|
147
|
+
const existing = threads.get(threadId);
|
|
148
|
+
if (existing !== void 0) return [existing, threads];
|
|
149
|
+
if (threads.size >= MAX_THREADS) return yield* ThreadLimitExceeded.make({
|
|
150
|
+
threadId,
|
|
151
|
+
limit: "threads",
|
|
152
|
+
limitValue: MAX_THREADS,
|
|
153
|
+
observedValue: threads.size + 1
|
|
154
|
+
});
|
|
155
|
+
const created = Thread.make({
|
|
156
|
+
version: 1,
|
|
157
|
+
threadId,
|
|
158
|
+
nextSequence: 0,
|
|
159
|
+
contentBytes: 0,
|
|
160
|
+
messages: []
|
|
161
|
+
});
|
|
162
|
+
return [created, new Map(threads).set(threadId, created)];
|
|
163
|
+
})),
|
|
164
|
+
append: Effect.fn("Thread.Store.append")(function* (threadId, message) {
|
|
165
|
+
const encoded = yield* encodeMessage(threadId, message.message);
|
|
166
|
+
const timestamp = DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis));
|
|
167
|
+
return yield* SynchronizedRef.modifyEffect(state, Effect.fn(function* (threads) {
|
|
168
|
+
const current = yield* findSnapshot(threads, threadId);
|
|
169
|
+
return yield* appendEncoded(threads, current, message, encoded, timestamp);
|
|
170
|
+
}));
|
|
171
|
+
}),
|
|
172
|
+
recordHistory: Effect.fn("Thread.Store.recordHistory")(function* (threadId, historyRunId, history) {
|
|
173
|
+
const incoming = yield* Effect.forEach(history.content, (message) => encodeMessage(threadId, message).pipe(Effect.map((encoded) => ({
|
|
174
|
+
message,
|
|
175
|
+
encoded
|
|
176
|
+
}))));
|
|
177
|
+
return yield* SynchronizedRef.modifyEffect(state, Effect.fn(function* (threads) {
|
|
178
|
+
const current = yield* findSnapshot(threads, threadId);
|
|
179
|
+
const currentEncoded = yield* Effect.forEach(current.messages, (entry) => encodeMessage(threadId, entry.message));
|
|
180
|
+
if (incoming.length < currentEncoded.length || currentEncoded.some((encoded, index) => encoded !== incoming[index]?.encoded)) return yield* ThreadHistoryDiverged.make({
|
|
181
|
+
threadId,
|
|
182
|
+
message: "Engine history is not an append-only extension of official history"
|
|
183
|
+
});
|
|
184
|
+
const timestamp = DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis));
|
|
185
|
+
if (incoming.length === currentEncoded.length) return [current, threads];
|
|
186
|
+
const messages = [...current.messages];
|
|
187
|
+
let contentBytes = current.contentBytes;
|
|
188
|
+
let storeBytes = totalStoreBytes(threads);
|
|
189
|
+
let nextSequence = current.nextSequence;
|
|
190
|
+
for (const entry of incoming.slice(currentEncoded.length)) {
|
|
191
|
+
const append = ThreadAppend.make({
|
|
192
|
+
runId: historyRunId,
|
|
193
|
+
message: entry.message
|
|
194
|
+
});
|
|
195
|
+
if (messages.length >= MAX_THREAD_MESSAGES) return yield* ThreadLimitExceeded.make({
|
|
196
|
+
threadId,
|
|
197
|
+
limit: "messages",
|
|
198
|
+
limitValue: MAX_THREAD_MESSAGES,
|
|
199
|
+
observedValue: messages.length + 1
|
|
200
|
+
});
|
|
201
|
+
const messageBytes = utf8ByteLength(entry.encoded);
|
|
202
|
+
contentBytes += messageBytes;
|
|
203
|
+
if (contentBytes > MAX_THREAD_CONTENT_BYTES) return yield* ThreadLimitExceeded.make({
|
|
204
|
+
threadId,
|
|
205
|
+
limit: "content-bytes",
|
|
206
|
+
limitValue: MAX_THREAD_CONTENT_BYTES,
|
|
207
|
+
observedValue: contentBytes
|
|
208
|
+
});
|
|
209
|
+
storeBytes += messageBytes;
|
|
210
|
+
if (storeBytes > MAX_STORE_CONTENT_BYTES) return yield* ThreadLimitExceeded.make({
|
|
211
|
+
threadId,
|
|
212
|
+
limit: "store-content-bytes",
|
|
213
|
+
limitValue: MAX_STORE_CONTENT_BYTES,
|
|
214
|
+
observedValue: storeBytes
|
|
215
|
+
});
|
|
216
|
+
messages.push(ThreadMessage.make({
|
|
217
|
+
threadId,
|
|
218
|
+
sequence: nextSequence,
|
|
219
|
+
...append.runId === void 0 ? {} : { runId: append.runId },
|
|
220
|
+
message: append.message,
|
|
221
|
+
encodedBytes: messageBytes,
|
|
222
|
+
timestamp
|
|
223
|
+
}));
|
|
224
|
+
nextSequence += 1;
|
|
225
|
+
}
|
|
226
|
+
const snapshot = Thread.make({
|
|
227
|
+
version: current.version,
|
|
228
|
+
threadId,
|
|
229
|
+
nextSequence,
|
|
230
|
+
contentBytes,
|
|
231
|
+
messages
|
|
232
|
+
});
|
|
233
|
+
return [snapshot, new Map(threads).set(threadId, snapshot)];
|
|
234
|
+
}));
|
|
235
|
+
}),
|
|
236
|
+
snapshot: (threadId) => SynchronizedRef.get(state).pipe(Effect.flatMap((all) => findSnapshot(all, threadId))),
|
|
237
|
+
export: (threadId) => Effect.gen(function* () {
|
|
238
|
+
const snapshot = yield* findSnapshot(yield* SynchronizedRef.get(state), threadId);
|
|
239
|
+
return ThreadExport.make({
|
|
240
|
+
format: "effect-agent/ephemeral-thread@1",
|
|
241
|
+
exportedAt: DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis)),
|
|
242
|
+
snapshot
|
|
243
|
+
});
|
|
244
|
+
})
|
|
245
|
+
});
|
|
246
|
+
}));
|
|
247
|
+
//#endregion
|
|
248
|
+
export { Store, Thread, ThreadAppend, ThreadEncodingError, ThreadExport, ThreadHistoryDiverged, ThreadLimitExceeded, ThreadMessage, ThreadNotFound, ThreadText, layerMemory, Thread_exports as t, toPrompt };
|
|
249
|
+
|
|
250
|
+
//# sourceMappingURL=Thread.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Thread.mjs","names":[],"sources":["../../src/core/Thread.ts"],"sourcesContent":["import { Clock, Context, DateTime, Effect, Layer, Schema, SynchronizedRef } from \"effect\";\nimport { Prompt } from \"effect/unstable/ai\";\n\nimport { ThreadId, RunId } from \"./Identifiers.ts\";\nimport { utf8ByteLength } from \"./internal/utf8.ts\";\n\n/** Bound applied to one text projection before it can enter a model context. */\nexport const ThreadText = Schema.String.check(Schema.isMaxLength(64 * 1024));\nconst MAX_THREAD_MESSAGES = 1_024;\nconst MAX_THREAD_CONTENT_BYTES = 4 * 1024 * 1024;\nconst MAX_THREADS = 256;\nconst MAX_STORE_CONTENT_BYTES = 64 * 1024 * 1024;\n\n/** One append-only native Effect AI message in a conversation. */\nexport class ThreadMessage extends Schema.Class<ThreadMessage>(\n \"@effect-agent/capabilities/ThreadMessage\",\n)({\n threadId: ThreadId,\n sequence: Schema.Natural,\n runId: Schema.optionalKey(RunId),\n message: Prompt.Message,\n encodedBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_THREAD_CONTENT_BYTES)),\n timestamp: Schema.DateTimeUtcFromString,\n}) {}\n\n/** An identified, ordered conversation snapshot. Storage and execution recovery are separate concerns. */\nexport class Thread extends Schema.Class<Thread>(\"@effect-agent/capabilities/ThreadSnapshot\")({\n version: Schema.Literal(1),\n threadId: ThreadId,\n nextSequence: Schema.Natural,\n contentBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_THREAD_CONTENT_BYTES)),\n messages: Schema.Array(ThreadMessage).check(Schema.isMaxLength(MAX_THREAD_MESSAGES)),\n}) {}\n\n/** Portable conversation snapshot. Its format is independent of the durable execution journal. */\nexport class ThreadExport extends Schema.Class<ThreadExport>(\n \"@effect-agent/capabilities/ThreadExport\",\n)({\n format: Schema.Literal(\"effect-agent/ephemeral-thread@1\"),\n exportedAt: Schema.DateTimeUtcFromString,\n snapshot: Thread,\n}) {}\n\n/** Native message accepted by the append-only thread. */\nexport class ThreadAppend extends Schema.Class<ThreadAppend>(\n \"@effect-agent/capabilities/ThreadAppend\",\n)({\n runId: Schema.optionalKey(RunId),\n message: Prompt.Message,\n}) {}\n\n/** The requested Thread has not been created in this store. */\nexport class ThreadNotFound extends Schema.TaggedError<ThreadNotFound>()(\"ThreadNotFound\", {\n threadId: ThreadId,\n}) {}\n\n/** A process-local Thread store reached an explicit count or encoded-content bound. */\nexport class ThreadLimitExceeded extends Schema.TaggedError<ThreadLimitExceeded>()(\n \"ThreadLimitExceeded\",\n {\n threadId: ThreadId,\n limit: Schema.Literals([\"messages\", \"content-bytes\", \"threads\", \"store-content-bytes\"]),\n limitValue: Schema.Natural,\n observedValue: Schema.Natural,\n },\n) {}\n\n/** Engine history was not an append-only extension of the official snapshot. */\nexport class ThreadHistoryDiverged extends Schema.TaggedError<ThreadHistoryDiverged>()(\n \"ThreadHistoryDiverged\",\n { threadId: ThreadId, message: Schema.String },\n) {}\n\n/** Native Prompt encoding failed before a bounded state mutation. */\nexport class ThreadEncodingError extends Schema.TaggedError<ThreadEncodingError>()(\n \"ThreadEncodingError\",\n { threadId: ThreadId, message: Schema.String },\n) {}\n\nexport type ThreadError =\n | ThreadNotFound\n | ThreadLimitExceeded\n | ThreadHistoryDiverged\n | ThreadEncodingError;\n\n/** Reconstruct exact Effect AI Prompt history, including tools, reasoning, files, and options. */\nexport const toPrompt = (snapshot: Thread): Prompt.Prompt =>\n Prompt.fromMessages(snapshot.messages.map((entry) => entry.message));\n\n/**\n * Process-local state for conversation history. Updates remain visible even\n * when a Run later fails; this service has no successful-Run commit boundary or durable recovery.\n * ThreadHistory.layer uses this store for ordinary Runs and interactive history.\n * Scope closure releases all in-memory state.\n */\nexport class Store extends Context.Service<\n Store,\n {\n readonly create: (threadId: ThreadId) => Effect.Effect<Thread, ThreadLimitExceeded>;\n readonly append: (\n threadId: ThreadId,\n message: ThreadAppend,\n ) => Effect.Effect<Thread, ThreadNotFound | ThreadLimitExceeded | ThreadEncodingError>;\n /**\n * Record an engine-emitted full history only when it is an append-only\n * extension of the exact official Prompt already stored. The entire\n * suffix commits in one transaction or not at all: concurrent writers are\n * serialized, a writer whose history no longer extends the committed\n * official history fails with ThreadHistoryDiverged, and a limit\n * failure inside the suffix records nothing. Earlier updates remain committed if the Run\n * later fails or is interrupted; this transaction covers one update, not the whole Run.\n */\n readonly recordHistory: (\n threadId: ThreadId,\n runId: RunId,\n history: Prompt.Prompt,\n ) => Effect.Effect<Thread, ThreadError>;\n readonly snapshot: (threadId: ThreadId) => Effect.Effect<Thread, ThreadNotFound>;\n readonly export: (threadId: ThreadId) => Effect.Effect<ThreadExport, ThreadNotFound>;\n }\n>()(\"@effect-agent/capabilities/EphemeralThreads\") {}\n\nconst encodeMessage = (\n threadId: ThreadId,\n message: Prompt.Message,\n): Effect.Effect<string, ThreadEncodingError> =>\n Schema.encodeEffect(Prompt.Message)(message).pipe(\n Effect.map((encoded) => JSON.stringify(encoded)),\n Effect.mapError((error) =>\n ThreadEncodingError.make({\n threadId,\n message: `Could not encode native Effect AI message: ${error.message}`,\n }),\n ),\n );\n\nconst findSnapshot = (\n state: ReadonlyMap<ThreadId, Thread>,\n threadId: ThreadId,\n): Effect.Effect<Thread, ThreadNotFound> => {\n const snapshot = state.get(threadId);\n\n return snapshot === undefined\n ? Effect.fail(ThreadNotFound.make({ threadId }))\n : Effect.succeed(snapshot);\n};\n\nconst totalStoreBytes = (threads: ReadonlyMap<ThreadId, Thread>): number => {\n let total = 0;\n\n for (const snapshot of threads.values()) total += snapshot.contentBytes;\n\n return total;\n};\n\nconst appendEncoded = Effect.fn(\"Thread.Store.appendEncoded\")(function* (\n threads: ReadonlyMap<ThreadId, Thread>,\n current: Thread,\n append: ThreadAppend,\n encoded: string,\n timestamp: DateTime.Utc,\n) {\n const threadId = current.threadId;\n\n if (current.messages.length >= MAX_THREAD_MESSAGES) {\n return yield* ThreadLimitExceeded.make({\n threadId,\n limit: \"messages\",\n limitValue: MAX_THREAD_MESSAGES,\n observedValue: current.messages.length + 1,\n });\n }\n const messageBytes = utf8ByteLength(encoded);\n const contentBytes = current.contentBytes + messageBytes;\n\n if (contentBytes > MAX_THREAD_CONTENT_BYTES) {\n return yield* ThreadLimitExceeded.make({\n threadId,\n limit: \"content-bytes\",\n limitValue: MAX_THREAD_CONTENT_BYTES,\n observedValue: contentBytes,\n });\n }\n const storeBytes = totalStoreBytes(threads) + messageBytes;\n\n if (storeBytes > MAX_STORE_CONTENT_BYTES) {\n return yield* ThreadLimitExceeded.make({\n threadId,\n limit: \"store-content-bytes\",\n limitValue: MAX_STORE_CONTENT_BYTES,\n observedValue: storeBytes,\n });\n }\n\n const message = ThreadMessage.make({\n threadId,\n sequence: current.nextSequence,\n ...(append.runId === undefined ? {} : { runId: append.runId }),\n message: append.message,\n encodedBytes: messageBytes,\n timestamp,\n });\n\n const next = Thread.make({\n version: current.version,\n threadId: current.threadId,\n nextSequence: current.nextSequence + 1,\n contentBytes,\n messages: [...current.messages, message],\n });\n\n return [next, new Map(threads).set(threadId, next)] as const;\n});\n\n/** In-memory storage shared for the consumer's Scope; it does not survive process loss. */\nexport const layerMemory = Layer.effect(\n Store,\n Effect.gen(function* () {\n const state = yield* SynchronizedRef.make<ReadonlyMap<ThreadId, Thread>>(new Map());\n\n yield* Effect.addFinalizer(() => SynchronizedRef.set(state, new Map()));\n\n return Store.of({\n create: (threadId) =>\n SynchronizedRef.modifyEffect(\n state,\n Effect.fn(function* (threads) {\n const existing = threads.get(threadId);\n\n if (existing !== undefined) return [existing, threads] as const;\n if (threads.size >= MAX_THREADS) {\n return yield* ThreadLimitExceeded.make({\n threadId,\n limit: \"threads\",\n limitValue: MAX_THREADS,\n observedValue: threads.size + 1,\n });\n }\n\n const created = Thread.make({\n version: 1,\n threadId,\n nextSequence: 0,\n contentBytes: 0,\n messages: [],\n });\n\n return [created, new Map(threads).set(threadId, created)] as const;\n }),\n ),\n append: Effect.fn(\"Thread.Store.append\")(function* (threadId, message) {\n const encoded = yield* encodeMessage(threadId, message.message);\n const timestamp = DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis));\n\n return yield* SynchronizedRef.modifyEffect(\n state,\n Effect.fn(function* (threads) {\n const current = yield* findSnapshot(threads, threadId);\n\n return yield* appendEncoded(threads, current, message, encoded, timestamp);\n }),\n );\n }),\n recordHistory: Effect.fn(\"Thread.Store.recordHistory\")(\n function* (threadId, historyRunId, history) {\n const incoming = yield* Effect.forEach(history.content, (message) =>\n encodeMessage(threadId, message).pipe(Effect.map((encoded) => ({ message, encoded }))),\n );\n\n // Publish the complete suffix only after verification and every bounded append succeed.\n return yield* SynchronizedRef.modifyEffect(\n state,\n Effect.fn(function* (threads) {\n const current = yield* findSnapshot(threads, threadId);\n\n const currentEncoded = yield* Effect.forEach(current.messages, (entry) =>\n encodeMessage(threadId, entry.message),\n );\n\n if (\n incoming.length < currentEncoded.length ||\n currentEncoded.some((encoded, index) => encoded !== incoming[index]?.encoded)\n ) {\n return yield* ThreadHistoryDiverged.make({\n threadId,\n message: \"Engine history is not an append-only extension of official history\",\n });\n }\n const timestamp = DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis));\n\n if (incoming.length === currentEncoded.length) return [current, threads] as const;\n\n const messages = [...current.messages];\n let contentBytes = current.contentBytes;\n let storeBytes = totalStoreBytes(threads);\n let nextSequence = current.nextSequence;\n\n for (const entry of incoming.slice(currentEncoded.length)) {\n const append = ThreadAppend.make({ runId: historyRunId, message: entry.message });\n\n // Preserve append's first failing bound and observed value without publishing\n // intermediate snapshots or rescanning the store for each suffix message.\n if (messages.length >= MAX_THREAD_MESSAGES) {\n return yield* ThreadLimitExceeded.make({\n threadId,\n limit: \"messages\",\n limitValue: MAX_THREAD_MESSAGES,\n observedValue: messages.length + 1,\n });\n }\n const messageBytes = utf8ByteLength(entry.encoded);\n\n contentBytes += messageBytes;\n if (contentBytes > MAX_THREAD_CONTENT_BYTES) {\n return yield* ThreadLimitExceeded.make({\n threadId,\n limit: \"content-bytes\",\n limitValue: MAX_THREAD_CONTENT_BYTES,\n observedValue: contentBytes,\n });\n }\n storeBytes += messageBytes;\n if (storeBytes > MAX_STORE_CONTENT_BYTES) {\n return yield* ThreadLimitExceeded.make({\n threadId,\n limit: \"store-content-bytes\",\n limitValue: MAX_STORE_CONTENT_BYTES,\n observedValue: storeBytes,\n });\n }\n messages.push(\n ThreadMessage.make({\n threadId,\n sequence: nextSequence,\n ...(append.runId === undefined ? {} : { runId: append.runId }),\n message: append.message,\n encodedBytes: messageBytes,\n timestamp,\n }),\n );\n nextSequence += 1;\n }\n\n const snapshot = Thread.make({\n version: current.version,\n threadId,\n nextSequence,\n contentBytes,\n messages,\n });\n\n return [snapshot, new Map(threads).set(threadId, snapshot)] as const;\n }),\n );\n },\n ),\n snapshot: (threadId) =>\n SynchronizedRef.get(state).pipe(Effect.flatMap((all) => findSnapshot(all, threadId))),\n export: (threadId) =>\n Effect.gen(function* () {\n const snapshot = yield* findSnapshot(yield* SynchronizedRef.get(state), threadId);\n\n return ThreadExport.make({\n format: \"effect-agent/ephemeral-thread@1\",\n exportedAt: DateTime.toUtc(DateTime.makeUnsafe(yield* Clock.currentTimeMillis)),\n snapshot,\n });\n }),\n });\n }),\n);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as applyToolResultBounds, i as UnserializableToolResult, o as unserializableToolResult, r as TruncatedToolResult, t as ToolResultBounds } from "../ToolResult-DmmgoChv.mjs";
|
|
2
|
+
export { ToolResultBounds, TruncatedToolResult, UnserializableToolResult, applyToolResultBounds, unserializableToolResult };
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
+
import { n as utf8ByteLength, t as codePointUtf8Length } from "../utf8-DchGZRBd.mjs";
|
|
3
|
+
import * as Schema from "effect/Schema";
|
|
4
|
+
//#region src/core/ToolResult.ts
|
|
5
|
+
var ToolResult_exports = /* @__PURE__ */ __exportAll({
|
|
6
|
+
ToolResultBounds: () => ToolResultBounds,
|
|
7
|
+
TruncatedToolResult: () => TruncatedToolResult,
|
|
8
|
+
UnserializableToolResult: () => UnserializableToolResult,
|
|
9
|
+
applyToolResultBounds: () => applyToolResultBounds,
|
|
10
|
+
unserializableToolResult: () => unserializableToolResult
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* The minimal `TruncatedToolResult` envelope (empty head/tail, a 16-digit
|
|
14
|
+
* `originalBytes`) encodes to at most 81 UTF-8 bytes; 256 guarantees every
|
|
15
|
+
* accepted bound fits the envelope plus some real content, so the bound is a
|
|
16
|
+
* hard resource guard rather than a best-effort one.
|
|
17
|
+
*/
|
|
18
|
+
const ENVELOPE_FLOOR_BYTES = 256;
|
|
19
|
+
/** Byte bound applied to one encoded application Tool result before it enters history. */
|
|
20
|
+
var ToolResultBounds = class extends Schema.Class("ToolResultBounds")({ maxBytes: Schema.Int.check(Schema.isGreaterThanOrEqualTo(ENVELOPE_FLOOR_BYTES)) }) {};
|
|
21
|
+
/**
|
|
22
|
+
* Canonical envelope replacing an encoded Tool result that exceeded its
|
|
23
|
+
* policy bounds. `head` and `tail` are an exact prefix and suffix of the
|
|
24
|
+
* original encoded JSON text; the middle is dropped, never paraphrased.
|
|
25
|
+
*/
|
|
26
|
+
var TruncatedToolResult = class extends Schema.Class("TruncatedToolResult")({
|
|
27
|
+
truncatedToolResult: Schema.Literal(true),
|
|
28
|
+
originalBytes: Schema.Natural,
|
|
29
|
+
head: Schema.String,
|
|
30
|
+
tail: Schema.String
|
|
31
|
+
}) {};
|
|
32
|
+
/**
|
|
33
|
+
* Canonical fail-closed sentinel replacing an encoded Tool result that could
|
|
34
|
+
* not be JSON-serialized at all (cyclic value, BigInt, `undefined`, throwing
|
|
35
|
+
* `toJSON`). The original value never enters history or durable records —
|
|
36
|
+
* an unserializable value is unbounded by construction, so the bound seam
|
|
37
|
+
* replaces it wholesale rather than passing it through (runtime spec §9).
|
|
38
|
+
*/
|
|
39
|
+
var UnserializableToolResult = class extends Schema.Class("UnserializableToolResult")({
|
|
40
|
+
unserializableToolResult: Schema.Literal(true),
|
|
41
|
+
reason: Schema.String.check(Schema.isMaxLength(256))
|
|
42
|
+
}) {};
|
|
43
|
+
/**
|
|
44
|
+
* Build the encoded sentinel for a serialization failure. Total by
|
|
45
|
+
* construction — the cause is untrusted (a hostile `toString` or an
|
|
46
|
+
* accessor-backed `Error.message` can itself throw on this last-resort
|
|
47
|
+
* path) — and byte-bound: the complete encoded sentinel stays within the
|
|
48
|
+
* 256-byte `ToolResultBounds` schema floor, so it fits every accepted
|
|
49
|
+
* policy without the caller re-applying bounds.
|
|
50
|
+
*/
|
|
51
|
+
const unserializableToolResult = (cause) => {
|
|
52
|
+
let reason;
|
|
53
|
+
try {
|
|
54
|
+
const message = cause instanceof Error ? cause.message : cause;
|
|
55
|
+
reason = typeof message === "string" ? message : String(message);
|
|
56
|
+
} catch {
|
|
57
|
+
reason = "unserializable value";
|
|
58
|
+
}
|
|
59
|
+
const build = (clipped) => Schema.encodeSync(UnserializableToolResult)(UnserializableToolResult.make({
|
|
60
|
+
unserializableToolResult: true,
|
|
61
|
+
reason: clipped
|
|
62
|
+
}));
|
|
63
|
+
let clipped = takePrefixWithinBytes(reason, 128);
|
|
64
|
+
let sentinel = build(clipped);
|
|
65
|
+
while (clipped.length > 0 && utf8ByteLength(JSON.stringify(sentinel)) > 256) {
|
|
66
|
+
const last = clipped.codePointAt(clipped.length - 1);
|
|
67
|
+
clipped = clipped.slice(0, clipped.length - (last !== void 0 && last > 65535 ? 2 : 1));
|
|
68
|
+
sentinel = build(clipped);
|
|
69
|
+
}
|
|
70
|
+
return sentinel;
|
|
71
|
+
};
|
|
72
|
+
const takePrefixWithinBytes = (value, maxBytes) => {
|
|
73
|
+
let bytes = 0;
|
|
74
|
+
let index = 0;
|
|
75
|
+
while (index < value.length) {
|
|
76
|
+
const codePoint = value.codePointAt(index) ?? 0;
|
|
77
|
+
const width = codePointUtf8Length(codePoint);
|
|
78
|
+
if (bytes + width > maxBytes) break;
|
|
79
|
+
bytes += width;
|
|
80
|
+
index += codePoint > 65535 ? 2 : 1;
|
|
81
|
+
}
|
|
82
|
+
return value.slice(0, index);
|
|
83
|
+
};
|
|
84
|
+
const takeSuffixWithinBytes = (value, maxBytes) => {
|
|
85
|
+
let bytes = 0;
|
|
86
|
+
let index = value.length;
|
|
87
|
+
while (index > 0) {
|
|
88
|
+
const unit = value.charCodeAt(index - 1);
|
|
89
|
+
const pairStart = unit >= 56320 && unit <= 57343 && index >= 2 ? index - 2 : index - 1;
|
|
90
|
+
const codePoint = value.codePointAt(pairStart) ?? 0;
|
|
91
|
+
const width = codePointUtf8Length(codePoint);
|
|
92
|
+
if (bytes + width > maxBytes) break;
|
|
93
|
+
bytes += width;
|
|
94
|
+
index = pairStart;
|
|
95
|
+
}
|
|
96
|
+
return value.slice(index);
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Bound one encoded Tool result to `bounds.maxBytes` UTF-8 bytes.
|
|
100
|
+
*
|
|
101
|
+
* Within bounds the input is returned unchanged. Over bounds the result is
|
|
102
|
+
* the JSON-encoded `TruncatedToolResult` envelope preserving an exact prefix
|
|
103
|
+
* and suffix of the input, split ~50/50 across the byte budget left after
|
|
104
|
+
* the envelope's own overhead and shrunk deterministically until the encoded
|
|
105
|
+
* envelope itself fits. Slicing never splits a UTF-16 surrogate pair, so the
|
|
106
|
+
* envelope always re-encodes as valid JSON.
|
|
107
|
+
*
|
|
108
|
+
* The Schema-level 256-byte floor on `ToolResultBounds.maxBytes` guarantees
|
|
109
|
+
* every accepted bound fits the minimal envelope (at most 81 bytes), so the
|
|
110
|
+
* returned value never exceeds `maxBytes` for a decodable bound. The
|
|
111
|
+
* minimal-envelope fallback below survives purely as defense in depth.
|
|
112
|
+
*/
|
|
113
|
+
const applyToolResultBounds = (encodedJson, bounds) => {
|
|
114
|
+
const originalBytes = utf8ByteLength(encodedJson);
|
|
115
|
+
if (originalBytes <= bounds.maxBytes) return encodedJson;
|
|
116
|
+
const render = (head, tail) => JSON.stringify(Schema.encodeSync(TruncatedToolResult)(TruncatedToolResult.make({
|
|
117
|
+
truncatedToolResult: true,
|
|
118
|
+
originalBytes,
|
|
119
|
+
head,
|
|
120
|
+
tail
|
|
121
|
+
})));
|
|
122
|
+
const minimal = render("", "");
|
|
123
|
+
const contentBudget = bounds.maxBytes - utf8ByteLength(minimal);
|
|
124
|
+
if (contentBudget <= 0) return minimal;
|
|
125
|
+
let headBudget = Math.floor(contentBudget / 2);
|
|
126
|
+
let tailBudget = contentBudget - headBudget;
|
|
127
|
+
for (;;) {
|
|
128
|
+
const output = render(takePrefixWithinBytes(encodedJson, headBudget), takeSuffixWithinBytes(encodedJson, tailBudget));
|
|
129
|
+
const outputBytes = utf8ByteLength(output);
|
|
130
|
+
if (outputBytes <= bounds.maxBytes) return output;
|
|
131
|
+
if (headBudget === 0 && tailBudget === 0) return minimal;
|
|
132
|
+
const shrink = Math.max(1, Math.ceil((outputBytes - bounds.maxBytes) / 2));
|
|
133
|
+
headBudget = Math.max(0, headBudget - shrink);
|
|
134
|
+
tailBudget = Math.max(0, tailBudget - shrink);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
//#endregion
|
|
138
|
+
export { ToolResultBounds, TruncatedToolResult, UnserializableToolResult, applyToolResultBounds, ToolResult_exports as t, unserializableToolResult };
|
|
139
|
+
|
|
140
|
+
//# sourceMappingURL=ToolResult.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolResult.mjs","names":[],"sources":["../../src/core/ToolResult.ts"],"sourcesContent":["import * as Schema from \"effect/Schema\";\n\nimport { codePointUtf8Length, utf8ByteLength } from \"./internal/utf8.ts\";\n\n/**\n * The minimal `TruncatedToolResult` envelope (empty head/tail, a 16-digit\n * `originalBytes`) encodes to at most 81 UTF-8 bytes; 256 guarantees every\n * accepted bound fits the envelope plus some real content, so the bound is a\n * hard resource guard rather than a best-effort one.\n */\nconst ENVELOPE_FLOOR_BYTES = 256;\n\n/** Byte bound applied to one encoded application Tool result before it enters history. */\nexport class ToolResultBounds extends Schema.Class<ToolResultBounds>(\"ToolResultBounds\")({\n maxBytes: Schema.Int.check(Schema.isGreaterThanOrEqualTo(ENVELOPE_FLOOR_BYTES)),\n}) {}\n\n/**\n * Canonical envelope replacing an encoded Tool result that exceeded its\n * policy bounds. `head` and `tail` are an exact prefix and suffix of the\n * original encoded JSON text; the middle is dropped, never paraphrased.\n */\nexport class TruncatedToolResult extends Schema.Class<TruncatedToolResult>(\"TruncatedToolResult\")({\n truncatedToolResult: Schema.Literal(true),\n originalBytes: Schema.Natural,\n head: Schema.String,\n tail: Schema.String,\n}) {}\n\n/**\n * Canonical fail-closed sentinel replacing an encoded Tool result that could\n * not be JSON-serialized at all (cyclic value, BigInt, `undefined`, throwing\n * `toJSON`). The original value never enters history or durable records —\n * an unserializable value is unbounded by construction, so the bound seam\n * replaces it wholesale rather than passing it through (runtime spec §9).\n */\nexport class UnserializableToolResult extends Schema.Class<UnserializableToolResult>(\n \"UnserializableToolResult\",\n)({\n unserializableToolResult: Schema.Literal(true),\n reason: Schema.String.check(Schema.isMaxLength(256)),\n}) {}\n\n/**\n * Build the encoded sentinel for a serialization failure. Total by\n * construction — the cause is untrusted (a hostile `toString` or an\n * accessor-backed `Error.message` can itself throw on this last-resort\n * path) — and byte-bound: the complete encoded sentinel stays within the\n * 256-byte `ToolResultBounds` schema floor, so it fits every accepted\n * policy without the caller re-applying bounds.\n */\nexport const unserializableToolResult = (\n cause: unknown,\n): typeof UnserializableToolResult.Encoded => {\n let reason: string;\n\n try {\n const message = cause instanceof Error ? cause.message : cause;\n\n reason = typeof message === \"string\" ? message : String(message);\n } catch {\n reason = \"unserializable value\";\n }\n\n const build = (clipped: string): typeof UnserializableToolResult.Encoded =>\n Schema.encodeSync(UnserializableToolResult)(\n UnserializableToolResult.make({\n unserializableToolResult: true,\n reason: clipped,\n }),\n );\n\n // JSON escaping inflates bytes, so shrink by whole code points until the\n // encoded sentinel fits the floor; the empty reason always fits.\n let clipped = takePrefixWithinBytes(reason, 128);\n let sentinel = build(clipped);\n\n while (clipped.length > 0 && utf8ByteLength(JSON.stringify(sentinel)) > 256) {\n const last = clipped.codePointAt(clipped.length - 1);\n\n clipped = clipped.slice(0, clipped.length - (last !== undefined && last > 0xffff ? 2 : 1));\n sentinel = build(clipped);\n }\n\n return sentinel;\n};\n\nconst takePrefixWithinBytes = (value: string, maxBytes: number): string => {\n let bytes = 0;\n let index = 0;\n\n while (index < value.length) {\n const codePoint = value.codePointAt(index) ?? 0;\n const width = codePointUtf8Length(codePoint);\n\n if (bytes + width > maxBytes) break;\n bytes += width;\n index += codePoint > 0xffff ? 2 : 1;\n }\n\n return value.slice(0, index);\n};\n\nconst takeSuffixWithinBytes = (value: string, maxBytes: number): string => {\n let bytes = 0;\n let index = value.length;\n\n while (index > 0) {\n const unit = value.charCodeAt(index - 1);\n const isLowSurrogate = unit >= 0xdc00 && unit <= 0xdfff;\n const pairStart = isLowSurrogate && index >= 2 ? index - 2 : index - 1;\n const codePoint = value.codePointAt(pairStart) ?? 0;\n const width = codePointUtf8Length(codePoint);\n\n if (bytes + width > maxBytes) break;\n bytes += width;\n index = pairStart;\n }\n\n return value.slice(index);\n};\n\n/**\n * Bound one encoded Tool result to `bounds.maxBytes` UTF-8 bytes.\n *\n * Within bounds the input is returned unchanged. Over bounds the result is\n * the JSON-encoded `TruncatedToolResult` envelope preserving an exact prefix\n * and suffix of the input, split ~50/50 across the byte budget left after\n * the envelope's own overhead and shrunk deterministically until the encoded\n * envelope itself fits. Slicing never splits a UTF-16 surrogate pair, so the\n * envelope always re-encodes as valid JSON.\n *\n * The Schema-level 256-byte floor on `ToolResultBounds.maxBytes` guarantees\n * every accepted bound fits the minimal envelope (at most 81 bytes), so the\n * returned value never exceeds `maxBytes` for a decodable bound. The\n * minimal-envelope fallback below survives purely as defense in depth.\n */\nexport const applyToolResultBounds = (encodedJson: string, bounds: ToolResultBounds): string => {\n const originalBytes = utf8ByteLength(encodedJson);\n\n if (originalBytes <= bounds.maxBytes) return encodedJson;\n\n const render = (head: string, tail: string): string =>\n JSON.stringify(\n Schema.encodeSync(TruncatedToolResult)(\n TruncatedToolResult.make({ truncatedToolResult: true, originalBytes, head, tail }),\n ),\n );\n\n const minimal = render(\"\", \"\");\n const contentBudget = bounds.maxBytes - utf8ByteLength(minimal);\n\n if (contentBudget <= 0) return minimal;\n let headBudget = Math.floor(contentBudget / 2);\n let tailBudget = contentBudget - headBudget;\n\n for (;;) {\n const head = takePrefixWithinBytes(encodedJson, headBudget);\n const tail = takeSuffixWithinBytes(encodedJson, tailBudget);\n const output = render(head, tail);\n const outputBytes = utf8ByteLength(output);\n\n if (outputBytes <= bounds.maxBytes) return output;\n if (headBudget === 0 && tailBudget === 0) return minimal;\n const shrink = Math.max(1, Math.ceil((outputBytes - bounds.maxBytes) / 2));\n\n headBudget = Math.max(0, headBudget - shrink);\n tailBudget = Math.max(0, tailBudget - shrink);\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { _ as unknownRunTotals, a as ModelUsageGroup, c as RunUsageReport, d as UsageCompleteness, g as summarizeModelUsage, h as sumRunTotals, i as ModelResponseIdentity, l as RunUsageSummary, m as runTotalsFromSummary, n as InputTokenUsage, o as OutputTokenUsage, p as emptyRunTotals, r as ModelCallUsage, s as RunTotals, t as ChildRunUsage, u as UsageAggregationError } from "../Usage-Dx0aknfk.mjs";
|
|
2
|
+
export { ChildRunUsage, InputTokenUsage, ModelCallUsage, ModelResponseIdentity, ModelUsageGroup, OutputTokenUsage, RunTotals, RunUsageReport, RunUsageSummary, UsageAggregationError, UsageCompleteness, emptyRunTotals, runTotalsFromSummary, sumRunTotals, summarizeModelUsage, unknownRunTotals };
|