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,39 @@
|
|
|
1
|
+
const DIAGNOSTIC_MESSAGE_LIMIT = 4_096;
|
|
2
|
+
const DIAGNOSTIC_TAG_LIMIT = 128;
|
|
3
|
+
|
|
4
|
+
const boundedDiagnostic = (value: string, maxCharacters: number): string =>
|
|
5
|
+
value.length <= maxCharacters ? value : value.slice(0, maxCharacters);
|
|
6
|
+
|
|
7
|
+
const ownStringDiagnostic = (
|
|
8
|
+
input: unknown,
|
|
9
|
+
key: "message" | "_tag",
|
|
10
|
+
maxCharacters: number,
|
|
11
|
+
): string | undefined => {
|
|
12
|
+
if (input === null || (typeof input !== "object" && typeof input !== "function")) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const descriptor = Object.getOwnPropertyDescriptor(input, key);
|
|
17
|
+
|
|
18
|
+
return descriptor !== undefined && "value" in descriptor && typeof descriptor.value === "string"
|
|
19
|
+
? boundedDiagnostic(descriptor.value, maxCharacters)
|
|
20
|
+
: undefined;
|
|
21
|
+
} catch {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/** Total, bounded projection for opaque failures. It never invokes arbitrary coercion hooks. */
|
|
27
|
+
export const errorMessage = (error: unknown): string => {
|
|
28
|
+
const message = ownStringDiagnostic(error, "message", DIAGNOSTIC_MESSAGE_LIMIT);
|
|
29
|
+
|
|
30
|
+
if (message !== undefined) return message;
|
|
31
|
+
|
|
32
|
+
return typeof error === "string"
|
|
33
|
+
? boundedDiagnostic(error, DIAGNOSTIC_MESSAGE_LIMIT)
|
|
34
|
+
: "Unknown error";
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/** Total, bounded tag projection for opaque failures. */
|
|
38
|
+
export const errorTag = (error: unknown): string =>
|
|
39
|
+
ownStringDiagnostic(error, "_tag", DIAGNOSTIC_TAG_LIMIT) ?? "UnknownError";
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import { Prompt, Tool } from "effect/unstable/ai";
|
|
3
|
+
|
|
4
|
+
import type * as Agent from "../../core/Agent.ts";
|
|
5
|
+
|
|
6
|
+
const outputFormatAnnotation = "@effect-agent/engine/Output/format";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Declare ordinary assistant text as an Agent's final-output wire format. Apply this to the
|
|
10
|
+
* complete output Schema after composing transformations. Its encoded type must be string;
|
|
11
|
+
* decoding, checks, transformations, and service requirements remain owned by that Schema.
|
|
12
|
+
* Text is preserved verbatim, including whitespace, quotes, and an empty reply when allowed.
|
|
13
|
+
* Required completion Tools still take precedence. Unmarked Schemas use JSON final output.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* output: Output.text(Schema.String.check(Schema.isMaxLength(20_000)))
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export const textOutput = <S extends Schema.Top & { readonly Encoded: string }>(
|
|
21
|
+
schema: S,
|
|
22
|
+
): S["Rebuild"] => schema.annotate({ [outputFormatAnnotation]: "text" });
|
|
23
|
+
|
|
24
|
+
export const isTextOutput = (schema: Schema.Top): boolean =>
|
|
25
|
+
Schema.resolveAnnotations(schema)?.[outputFormatAnnotation] === "text";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Model-visible final-output contract (RUN-028).
|
|
29
|
+
*
|
|
30
|
+
* For ordinary text completion, the interpreter's only output-conformance
|
|
31
|
+
* point is `decodeFinalOutput`, which validates the final text after the
|
|
32
|
+
* model has already finished. This module renders that Schema's wire contract
|
|
33
|
+
* with the same Effect AI derivation the providers use for Tool parameters
|
|
34
|
+
* and states it as one framework-owned system message on every model request.
|
|
35
|
+
* A required completion Tool instead gets a native-tool directive: its Tool
|
|
36
|
+
* parameter Schema is already carried by the provider request, and ordinary
|
|
37
|
+
* final text is not an allowed completion path.
|
|
38
|
+
*
|
|
39
|
+
* The contract is a per-request projection of the immutable definition —
|
|
40
|
+
* exactly like the Tool schemas the request already carries. It is inserted
|
|
41
|
+
* at model-request materialization (after context preparation) and never
|
|
42
|
+
* into official history, so canonical records, run events, and the committed
|
|
43
|
+
* DN/DC golden are unchanged.
|
|
44
|
+
*
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/** Rendering outcome for one definition's output Schema. */
|
|
48
|
+
type OutputContract =
|
|
49
|
+
| {
|
|
50
|
+
readonly _tag: "rendered";
|
|
51
|
+
/** The complete system-message text: directive plus the derived JSON Schema. */
|
|
52
|
+
readonly message: string;
|
|
53
|
+
readonly part: Prompt.SystemMessage;
|
|
54
|
+
}
|
|
55
|
+
| {
|
|
56
|
+
readonly _tag: "unrenderable";
|
|
57
|
+
/** Why Effect AI's JSON-Schema derivation rejected the output Schema. */
|
|
58
|
+
readonly reason: string;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const contractDirective = (definition: Agent.AnyDefinition): string =>
|
|
62
|
+
definition.completion === undefined
|
|
63
|
+
? "Final output contract: when the task is complete, the final assistant message must be only " +
|
|
64
|
+
"JSON that is valid against this JSON Schema — no prose, no Markdown code fences, nothing " +
|
|
65
|
+
"before or after the JSON."
|
|
66
|
+
: `Final output contract: when the task is complete without calling the "${definition.completion.tool}" completion Tool, the final assistant message must be only ` +
|
|
67
|
+
"JSON that is valid against this JSON Schema — no prose, no Markdown code fences, nothing " +
|
|
68
|
+
`before or after the JSON. When calling the "${definition.completion.tool}" completion Tool, never place this private Agent output JSON in any Tool argument; follow the Tool's parameter schema instead. Call it as the sole application Tool Call, after receiving any other needed application Tool results. Completed provider Tool results may accompany it. The engine projects the successful completion Tool result into the Agent output.`;
|
|
69
|
+
|
|
70
|
+
const requiredCompletionDirective = (tool: string, hasAlternatives: boolean): string =>
|
|
71
|
+
`Final output contract: ${hasAlternatives ? "otherwise complete" : "complete only"} by calling the required completion Tool ${JSON.stringify(tool)} ` +
|
|
72
|
+
"as the sole application Tool Call in its batch. Completed provider Tool results may accompany it. Do not emit an ordinary final assistant text answer. " +
|
|
73
|
+
"The Tool's canonical parameters and successful result are projected and validated as the Agent output.";
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Render the model-visible final-output contract for one definition. The
|
|
77
|
+
* derivation and message identity are stable for an immutable definition.
|
|
78
|
+
* An output Schema the Effect AI derivation cannot represent is reported as
|
|
79
|
+
* `unrenderable`; the caller falls back to the prior behavior — the contract
|
|
80
|
+
* is guidance, and a Schema that decodes but does not render must not become
|
|
81
|
+
* a new failure mode.
|
|
82
|
+
*/
|
|
83
|
+
const rendered = (message: string): OutputContract => ({
|
|
84
|
+
_tag: "rendered",
|
|
85
|
+
message,
|
|
86
|
+
part: Prompt.makeMessage("system", { content: message }),
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
const renderOutputSchemaContract = (definition: Agent.AnyDefinition): OutputContract => {
|
|
90
|
+
if (definition.completion?.required === true) {
|
|
91
|
+
return rendered(
|
|
92
|
+
requiredCompletionDirective(
|
|
93
|
+
definition.completion.tool,
|
|
94
|
+
(definition.completionFromTools?.length ?? 0) > 0,
|
|
95
|
+
),
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
if (isTextOutput(definition.output)) {
|
|
99
|
+
return rendered(
|
|
100
|
+
"Final output contract: write the final reply as ordinary assistant text, without JSON wrapping. " +
|
|
101
|
+
"An empty reply is valid only when allowed by the output Schema and the task instructions." +
|
|
102
|
+
(definition.completion === undefined
|
|
103
|
+
? ""
|
|
104
|
+
: ` When calling the "${definition.completion.tool}" completion Tool, follow its parameter schema instead and call it as the sole application Tool Call, after receiving any other needed application Tool results; completed provider Tool results may accompany it; the engine projects its successful result into the Agent output.`),
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
const jsonSchema = Tool.getJsonSchemaFromSchema(definition.output);
|
|
109
|
+
|
|
110
|
+
return rendered(
|
|
111
|
+
`${contractDirective(definition)}\n\n${JSON.stringify(jsonSchema, undefined, 2)}`,
|
|
112
|
+
);
|
|
113
|
+
} catch (cause) {
|
|
114
|
+
return {
|
|
115
|
+
_tag: "unrenderable",
|
|
116
|
+
reason: cause instanceof Error ? cause.message : String(cause),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// Native incremental-response tracking recognizes message objects, not rendered text.
|
|
122
|
+
// Weak keys retain neither discarded definitions nor their Schema graphs.
|
|
123
|
+
const outputContracts = new WeakMap<Agent.AnyDefinition, OutputContract>();
|
|
124
|
+
|
|
125
|
+
export const outputSchemaContract = (definition: Agent.AnyDefinition): OutputContract => {
|
|
126
|
+
const cached = outputContracts.get(definition);
|
|
127
|
+
|
|
128
|
+
if (cached !== undefined) return cached;
|
|
129
|
+
const base = renderOutputSchemaContract(definition);
|
|
130
|
+
const alternatives = definition.completionFromTools ?? [];
|
|
131
|
+
|
|
132
|
+
const contract =
|
|
133
|
+
base._tag === "rendered" && alternatives.length > 0
|
|
134
|
+
? rendered(
|
|
135
|
+
`The following action Tools may complete the Run from their successful canonical result: ${alternatives.map((declaration) => JSON.stringify(declaration.tool)).join(", ")}. ` +
|
|
136
|
+
"Call such a Tool as the sole application Tool Call, following its parameter schema. Completed provider Tool results may accompany it. It may complete the Run only when it satisfies the whole request. " +
|
|
137
|
+
"An incomplete or pending result continues the Run. These actions are unavailable during finalization after budget exhaustion.\n\n" +
|
|
138
|
+
base.message,
|
|
139
|
+
)
|
|
140
|
+
: base;
|
|
141
|
+
|
|
142
|
+
outputContracts.set(definition, contract);
|
|
143
|
+
|
|
144
|
+
return contract;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Insert the contract immediately after the request prompt's last system
|
|
149
|
+
* message (position 0 when none exists), extending the last contiguous
|
|
150
|
+
* system block. Placement is normative: the Anthropic provider replaces its
|
|
151
|
+
* top-level `system` parameter per contiguous system group, so only the last
|
|
152
|
+
* block survives there — an isolated trailing contract message would discard
|
|
153
|
+
* the author's instructions, and a contract inside an earlier block (for
|
|
154
|
+
* example a resumed Thread's original instructions ahead of this Run's
|
|
155
|
+
* evaluated instructions) would itself be discarded. Extending the last
|
|
156
|
+
* block keeps author content and contract together on every provider and
|
|
157
|
+
* preserves the author's per-message cache-control annotations.
|
|
158
|
+
*/
|
|
159
|
+
export const insertOutputContract = (
|
|
160
|
+
prompt: Prompt.Prompt,
|
|
161
|
+
message: Prompt.SystemMessage,
|
|
162
|
+
): Prompt.Prompt => {
|
|
163
|
+
const content = prompt.content;
|
|
164
|
+
let insertAt = 0;
|
|
165
|
+
|
|
166
|
+
for (let index = 0; index < content.length; index += 1) {
|
|
167
|
+
if (content[index]?.role === "system") {
|
|
168
|
+
insertAt = index + 1;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return Prompt.fromMessages([...content.slice(0, insertAt), message, ...content.slice(insertAt)]);
|
|
173
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Option, Schema } from "effect";
|
|
2
|
+
import { Response } from "effect/unstable/ai";
|
|
3
|
+
|
|
4
|
+
import { utf8ByteLength } from "../../core/internal/utf8.ts";
|
|
5
|
+
import { boundedValueFootprint } from "./bounded-value.ts";
|
|
6
|
+
|
|
7
|
+
const brand = "~effect/ai/Content/Part";
|
|
8
|
+
const keys = [brand, "type", "id", "delta", "metadata"];
|
|
9
|
+
|
|
10
|
+
const decode = Schema.decodeUnknownOption(
|
|
11
|
+
Schema.toType(Schema.Union([Response.TextDeltaPart, Response.ReasoningDeltaPart])),
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
const overhead = (type: "text-delta" | "reasoning-delta") => ({
|
|
15
|
+
source: boundedValueFootprint(
|
|
16
|
+
Response.makePart(type, { id: "", delta: "" }),
|
|
17
|
+
Number.MAX_SAFE_INTEGER,
|
|
18
|
+
),
|
|
19
|
+
encoded: boundedValueFootprint(
|
|
20
|
+
{ type, id: "", delta: "", metadata: {} },
|
|
21
|
+
Number.MAX_SAFE_INTEGER,
|
|
22
|
+
),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const overheads = {
|
|
26
|
+
"text-delta": overhead("text-delta"),
|
|
27
|
+
"reasoning-delta": overhead("reasoning-delta"),
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Copy the common primitive delta into owned data before native Schema validation.
|
|
32
|
+
* Descriptor checks select this optimization; they do not replace the native codec.
|
|
33
|
+
* Extra fields, accessors, and nonempty metadata use the general ownership path.
|
|
34
|
+
* No provider object survives, including an empty metadata object's hidden storage.
|
|
35
|
+
* Unlike a generic footprint shortcut, this cannot retain an exotic backing buffer.
|
|
36
|
+
*/
|
|
37
|
+
export const ownPrimitiveDelta = (part: unknown, maxBytes: number) => {
|
|
38
|
+
try {
|
|
39
|
+
if (part === null || typeof part !== "object") return undefined;
|
|
40
|
+
if (Array.isArray(part) || ArrayBuffer.isView(part)) return undefined;
|
|
41
|
+
const prototype = Object.getPrototypeOf(part);
|
|
42
|
+
|
|
43
|
+
if (prototype !== Object.prototype && prototype !== null) return undefined;
|
|
44
|
+
if (Reflect.ownKeys(part).length !== keys.length) return undefined;
|
|
45
|
+
const snapshot: Record<string, unknown> = {};
|
|
46
|
+
|
|
47
|
+
for (const key of keys) {
|
|
48
|
+
const descriptor = Object.getOwnPropertyDescriptor(part, key);
|
|
49
|
+
|
|
50
|
+
if (descriptor === undefined || !("value" in descriptor)) return undefined;
|
|
51
|
+
snapshot[key] = descriptor.value;
|
|
52
|
+
}
|
|
53
|
+
const { type, id, delta, metadata } = snapshot;
|
|
54
|
+
|
|
55
|
+
if (type !== "text-delta" && type !== "reasoning-delta") return undefined;
|
|
56
|
+
if (typeof id !== "string" || typeof delta !== "string") return undefined;
|
|
57
|
+
if (metadata === null || typeof metadata !== "object") return undefined;
|
|
58
|
+
if (Array.isArray(metadata) || ArrayBuffer.isView(metadata)) return undefined;
|
|
59
|
+
const metadataPrototype = Object.getPrototypeOf(metadata);
|
|
60
|
+
|
|
61
|
+
if (metadataPrototype !== Object.prototype && metadataPrototype !== null) return undefined;
|
|
62
|
+
if (Reflect.ownKeys(metadata).length !== 0) return undefined;
|
|
63
|
+
const fixed = overheads[type];
|
|
64
|
+
|
|
65
|
+
if (fixed.source === undefined || fixed.encoded === undefined) return undefined;
|
|
66
|
+
const bytes = utf8ByteLength(id) + utf8ByteLength(delta);
|
|
67
|
+
|
|
68
|
+
if (bytes + fixed.source > maxBytes || bytes + fixed.encoded > maxBytes) return undefined;
|
|
69
|
+
// Never pass the provider's metadata object (or any other object) to the decoder.
|
|
70
|
+
snapshot.metadata = {};
|
|
71
|
+
const validated = decode(snapshot);
|
|
72
|
+
|
|
73
|
+
if (Option.isNone(validated)) return undefined;
|
|
74
|
+
|
|
75
|
+
return { ownedPart: validated.value, retainedBytes: bytes + fixed.encoded };
|
|
76
|
+
} catch {
|
|
77
|
+
// Reflection may throw for proxies. The general path owns the typed failure.
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import type { Schema } from "effect";
|
|
2
|
+
|
|
3
|
+
const MAX_JSON_DEPTH = 128;
|
|
4
|
+
|
|
5
|
+
export interface BoundedJsonSnapshot {
|
|
6
|
+
readonly value: Schema.Json;
|
|
7
|
+
readonly bytes: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const FailedSnapshot = Symbol("@effect-agent/engine/FailedProviderResultSnapshot");
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @internal Normalize one untrusted JSON value into an owned, frozen snapshot while counting the
|
|
14
|
+
* exact UTF-8 bytes of that same snapshot. The traversal never invokes `toJSON` or accessors,
|
|
15
|
+
* rejects non-plain objects and excessive nesting, and stops as soon as the byte budget is spent.
|
|
16
|
+
*/
|
|
17
|
+
const snapshotJson = (
|
|
18
|
+
root: unknown,
|
|
19
|
+
maxBytes: number,
|
|
20
|
+
maxDepth: number,
|
|
21
|
+
rejectNonFiniteNumbers: boolean,
|
|
22
|
+
): BoundedJsonSnapshot | undefined => {
|
|
23
|
+
if (
|
|
24
|
+
!Number.isSafeInteger(maxBytes) ||
|
|
25
|
+
maxBytes < 0 ||
|
|
26
|
+
!Number.isSafeInteger(maxDepth) ||
|
|
27
|
+
maxDepth < 0
|
|
28
|
+
) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
let total = 0;
|
|
32
|
+
const ancestors = new WeakSet<object>();
|
|
33
|
+
|
|
34
|
+
const add = (bytes: number): boolean => {
|
|
35
|
+
if (bytes > maxBytes - total) return false;
|
|
36
|
+
total += bytes;
|
|
37
|
+
|
|
38
|
+
return true;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const addString = (value: string): boolean => {
|
|
42
|
+
if (!add(2)) return false;
|
|
43
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
44
|
+
const code = value.charCodeAt(index);
|
|
45
|
+
|
|
46
|
+
if (code === 0x22 || code === 0x5c) {
|
|
47
|
+
if (!add(2)) return false;
|
|
48
|
+
} else if (code <= 0x1f) {
|
|
49
|
+
// Backspace, tab, newline, form-feed, and carriage-return use two-byte escapes; all other
|
|
50
|
+
// control characters use a six-byte `\\u00xx` escape.
|
|
51
|
+
if (!add(code >= 0x08 && code <= 0x0d && code !== 0x0b ? 2 : 6)) return false;
|
|
52
|
+
} else if (code <= 0x7f) {
|
|
53
|
+
if (!add(1)) return false;
|
|
54
|
+
} else if (code <= 0x7ff) {
|
|
55
|
+
if (!add(2)) return false;
|
|
56
|
+
} else if (code >= 0xd800 && code <= 0xdbff) {
|
|
57
|
+
const low = value.charCodeAt(index + 1);
|
|
58
|
+
|
|
59
|
+
if (low >= 0xdc00 && low <= 0xdfff) {
|
|
60
|
+
if (!add(4)) return false;
|
|
61
|
+
index += 1;
|
|
62
|
+
} else if (!add(6)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
} else if (code >= 0xdc00 && code <= 0xdfff) {
|
|
66
|
+
if (!add(6)) return false;
|
|
67
|
+
} else if (!add(3)) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return true;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const visit = (value: unknown, depth: number): Schema.Json | typeof FailedSnapshot => {
|
|
76
|
+
if (depth > maxDepth) return FailedSnapshot;
|
|
77
|
+
if (value === null) return add(4) ? null : FailedSnapshot;
|
|
78
|
+
switch (typeof value) {
|
|
79
|
+
case "string":
|
|
80
|
+
return addString(value) ? value : FailedSnapshot;
|
|
81
|
+
case "boolean":
|
|
82
|
+
return add(value ? 4 : 5) ? value : FailedSnapshot;
|
|
83
|
+
case "number": {
|
|
84
|
+
// JSON's numeric representation is inherently bounded for one IEEE-754 value. Retain the
|
|
85
|
+
// wire-equivalent null for non-finite values so counting and later serialization agree.
|
|
86
|
+
if (!Number.isFinite(value)) {
|
|
87
|
+
return rejectNonFiniteNumbers ? FailedSnapshot : add(4) ? null : FailedSnapshot;
|
|
88
|
+
}
|
|
89
|
+
const encoded = JSON.stringify(value);
|
|
90
|
+
|
|
91
|
+
return encoded !== undefined && add(encoded.length) ? value : FailedSnapshot;
|
|
92
|
+
}
|
|
93
|
+
case "object": {
|
|
94
|
+
if (ancestors.has(value)) return FailedSnapshot;
|
|
95
|
+
const isArray = Array.isArray(value);
|
|
96
|
+
const prototype = Object.getPrototypeOf(value);
|
|
97
|
+
|
|
98
|
+
if (prototype !== (isArray ? Array.prototype : Object.prototype) && prototype !== null) {
|
|
99
|
+
return FailedSnapshot;
|
|
100
|
+
}
|
|
101
|
+
if (
|
|
102
|
+
Object.getOwnPropertyDescriptor(value, "toJSON") !== undefined ||
|
|
103
|
+
(prototype !== null && Object.getOwnPropertyDescriptor(prototype, "toJSON") !== undefined)
|
|
104
|
+
) {
|
|
105
|
+
return FailedSnapshot;
|
|
106
|
+
}
|
|
107
|
+
ancestors.add(value);
|
|
108
|
+
try {
|
|
109
|
+
if (isArray) {
|
|
110
|
+
const lengthDescriptor = Object.getOwnPropertyDescriptor(value, "length");
|
|
111
|
+
|
|
112
|
+
if (
|
|
113
|
+
lengthDescriptor === undefined ||
|
|
114
|
+
!("value" in lengthDescriptor) ||
|
|
115
|
+
typeof lengthDescriptor.value !== "number" ||
|
|
116
|
+
!Number.isSafeInteger(lengthDescriptor.value) ||
|
|
117
|
+
lengthDescriptor.value < 0
|
|
118
|
+
) {
|
|
119
|
+
return FailedSnapshot;
|
|
120
|
+
}
|
|
121
|
+
if (!add(1)) return FailedSnapshot;
|
|
122
|
+
const snapshot: Array<Schema.Json> = [];
|
|
123
|
+
|
|
124
|
+
for (let index = 0; index < lengthDescriptor.value; index += 1) {
|
|
125
|
+
if (index > 0 && !add(1)) return FailedSnapshot;
|
|
126
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, index);
|
|
127
|
+
|
|
128
|
+
if (descriptor === undefined) {
|
|
129
|
+
if (!add(4)) return FailedSnapshot;
|
|
130
|
+
snapshot.push(null);
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (!("value" in descriptor)) return FailedSnapshot;
|
|
134
|
+
const item = visit(descriptor.value, depth + 1);
|
|
135
|
+
|
|
136
|
+
if (item === FailedSnapshot) return FailedSnapshot;
|
|
137
|
+
snapshot.push(item);
|
|
138
|
+
}
|
|
139
|
+
if (!add(1)) return FailedSnapshot;
|
|
140
|
+
Object.setPrototypeOf(snapshot, null);
|
|
141
|
+
|
|
142
|
+
return Object.freeze(snapshot);
|
|
143
|
+
}
|
|
144
|
+
if (!add(1)) return FailedSnapshot;
|
|
145
|
+
const entries: Array<readonly [string, Schema.Json]> = [];
|
|
146
|
+
let first = true;
|
|
147
|
+
|
|
148
|
+
for (const key in value) {
|
|
149
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
150
|
+
|
|
151
|
+
if (descriptor === undefined || !descriptor.enumerable) continue;
|
|
152
|
+
if (!("value" in descriptor)) return FailedSnapshot;
|
|
153
|
+
if (!first && !add(1)) return FailedSnapshot;
|
|
154
|
+
first = false;
|
|
155
|
+
if (!addString(key) || !add(1)) return FailedSnapshot;
|
|
156
|
+
const item = visit(descriptor.value, depth + 1);
|
|
157
|
+
|
|
158
|
+
if (item === FailedSnapshot) return FailedSnapshot;
|
|
159
|
+
entries.push([key, item]);
|
|
160
|
+
}
|
|
161
|
+
if (!add(1)) return FailedSnapshot;
|
|
162
|
+
const snapshot: Record<string, Schema.Json> = Object.fromEntries(entries);
|
|
163
|
+
|
|
164
|
+
Object.setPrototypeOf(snapshot, null);
|
|
165
|
+
|
|
166
|
+
return Object.freeze(snapshot);
|
|
167
|
+
} finally {
|
|
168
|
+
ancestors.delete(value);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
case "bigint":
|
|
172
|
+
case "function":
|
|
173
|
+
case "symbol":
|
|
174
|
+
case "undefined":
|
|
175
|
+
return FailedSnapshot;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return FailedSnapshot;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
try {
|
|
182
|
+
const value = visit(root, 0);
|
|
183
|
+
|
|
184
|
+
return value === FailedSnapshot ? undefined : { value, bytes: total };
|
|
185
|
+
} catch {
|
|
186
|
+
// Revoked or adversarial proxies and reflection failures are protocol-invalid, never trusted.
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Normalize provider-owned JSON using JSON serialization's `NaN`/infinity to
|
|
193
|
+
* `null` behavior. Provider events use this form so byte accounting matches
|
|
194
|
+
* their eventual JSON representation.
|
|
195
|
+
*/
|
|
196
|
+
export const boundedJsonSnapshot = (
|
|
197
|
+
root: unknown,
|
|
198
|
+
maxBytes: number,
|
|
199
|
+
maxDepth = MAX_JSON_DEPTH,
|
|
200
|
+
): BoundedJsonSnapshot | undefined => snapshotJson(root, maxBytes, maxDepth, false);
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Validate canonical JSON without repairing non-finite numbers. Recovery
|
|
204
|
+
* inputs use this form because changing a recorded value would fabricate
|
|
205
|
+
* history.
|
|
206
|
+
*/
|
|
207
|
+
export const boundedCanonicalJsonSnapshot = (
|
|
208
|
+
root: unknown,
|
|
209
|
+
maxBytes: number,
|
|
210
|
+
maxDepth = MAX_JSON_DEPTH,
|
|
211
|
+
): BoundedJsonSnapshot | undefined => snapshotJson(root, maxBytes, maxDepth, true);
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Cause, Effect, ErrorReporter, Exit, Stream } from "effect";
|
|
2
|
+
|
|
3
|
+
import type { RunToolFailureObserver, ToolFailureObservation } from "../RunOptions.ts";
|
|
4
|
+
|
|
5
|
+
/** @internal Only the explicitly installed trusted observer sees this live value. */
|
|
6
|
+
export const deliverToolFailure = (
|
|
7
|
+
observer: RunToolFailureObserver,
|
|
8
|
+
observation: ToolFailureObservation,
|
|
9
|
+
): Effect.Effect<void> =>
|
|
10
|
+
isolateToolDerivative(Effect.suspend(() => observer.observe(observation)));
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Report failures of derivative work without consuming external interruption. Reporter defects
|
|
14
|
+
* are isolated too. Neither observer delivery nor telemetry owns the authoritative Tool outcome.
|
|
15
|
+
*/
|
|
16
|
+
const reportDerivativeCause = <E>(cause: Cause.Cause<E>): Effect.Effect<void> => {
|
|
17
|
+
const reportableReasons: Array<Cause.Reason<E>> = [];
|
|
18
|
+
const interruptionReasons: Array<Cause.Interrupt> = [];
|
|
19
|
+
|
|
20
|
+
for (const reason of cause.reasons) {
|
|
21
|
+
if (Cause.isInterruptReason(reason)) interruptionReasons.push(reason);
|
|
22
|
+
else reportableReasons.push(reason);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const reportExit =
|
|
26
|
+
reportableReasons.length === 0
|
|
27
|
+
? Effect.succeed(Exit.succeed(undefined))
|
|
28
|
+
: Effect.exit(ErrorReporter.report(Cause.fromReasons(reportableReasons)));
|
|
29
|
+
|
|
30
|
+
return Effect.flatMap(reportExit, (exit) => {
|
|
31
|
+
if (Exit.isFailure(exit)) {
|
|
32
|
+
for (const reason of exit.cause.reasons) {
|
|
33
|
+
if (Cause.isInterruptReason(reason)) interruptionReasons.push(reason);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return interruptionReasons.length === 0
|
|
38
|
+
? Effect.void
|
|
39
|
+
: Effect.failCause(Cause.fromReasons<never>(interruptionReasons));
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/** @internal Isolate reporting defects independently of Logger/Tracer configuration. */
|
|
44
|
+
export const isolateToolDerivative = <R>(
|
|
45
|
+
effect: Effect.Effect<void, never, R>,
|
|
46
|
+
): Effect.Effect<void, never, R> => effect.pipe(Effect.catchCause(reportDerivativeCause));
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @internal Emit one authoritative value, then run derivative work from either the next pull or
|
|
50
|
+
* structured finalization on early close. Telemetry and application observation share this one
|
|
51
|
+
* owner. A started action is never retried after interruption.
|
|
52
|
+
*/
|
|
53
|
+
export const emitThenAfter = <A, E, R, E2, R2>(
|
|
54
|
+
event: Effect.Effect<A, E, R>,
|
|
55
|
+
after: Effect.Effect<void, E2, R2>,
|
|
56
|
+
): Stream.Stream<A, E | E2, R | R2> =>
|
|
57
|
+
Stream.unwrap(
|
|
58
|
+
Effect.sync(() => {
|
|
59
|
+
let firstPull = true;
|
|
60
|
+
let afterPhase: "unarmed" | "pending" | "running" | "completed" = "unarmed";
|
|
61
|
+
|
|
62
|
+
const runAfter = Effect.suspend((): Effect.Effect<void, E2, R2> => {
|
|
63
|
+
if (afterPhase !== "pending") return Effect.void;
|
|
64
|
+
afterPhase = "running";
|
|
65
|
+
|
|
66
|
+
return after.pipe(
|
|
67
|
+
Effect.onExit(() =>
|
|
68
|
+
Effect.sync(() => {
|
|
69
|
+
afterPhase = "completed";
|
|
70
|
+
}),
|
|
71
|
+
),
|
|
72
|
+
);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
const pull = Effect.suspend(
|
|
76
|
+
(): Effect.Effect<readonly [A], E | E2 | Cause.Done<void>, R | R2> => {
|
|
77
|
+
if (firstPull) {
|
|
78
|
+
return Effect.map(event, (value) => {
|
|
79
|
+
firstPull = false;
|
|
80
|
+
afterPhase = "pending";
|
|
81
|
+
|
|
82
|
+
return [value] as const;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return Effect.andThen(runAfter, Cause.done());
|
|
87
|
+
},
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
return Stream.fromPull(Effect.succeed(pull)).pipe(
|
|
91
|
+
Stream.ensuring(
|
|
92
|
+
// A typed `after` failure remains visible to an ordinary second pull. Cleanup owns
|
|
93
|
+
// only early close; capture its Exit after terminal annotation. The isolated Tool span
|
|
94
|
+
// derives its export status from that annotation even if cleanup consumes the private
|
|
95
|
+
// span marker. External interruption still escapes.
|
|
96
|
+
Effect.exit(Effect.interruptible(runAfter)).pipe(
|
|
97
|
+
Effect.flatMap((exit) => {
|
|
98
|
+
if (Exit.isSuccess(exit)) return Effect.void;
|
|
99
|
+
|
|
100
|
+
return reportDerivativeCause(exit.cause);
|
|
101
|
+
}),
|
|
102
|
+
),
|
|
103
|
+
),
|
|
104
|
+
);
|
|
105
|
+
}),
|
|
106
|
+
);
|