effect-agent 0.1.0-beta.9 → 0.1.0-beta.91
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-CHipL2jG.mjs +4598 -0
- package/dist/AgentRuntime-CHipL2jG.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-D7gDKGjH.mjs +6368 -0
- package/dist/DurableAgentRuntime-D7gDKGjH.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-DyfzHNdv.d.mts +826 -0
- package/dist/Subagent-U5qXOFE8.mjs +1469 -0
- package/dist/Subagent-U5qXOFE8.mjs.map +1 -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 +8 -0
- package/dist/ToolExposure.mjs +21 -0
- package/dist/ToolExposure.mjs.map +1 -0
- 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 +436 -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 +89 -6
- package/dist/index.mjs +98 -6
- 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 +273 -0
- package/dist/sandbox/ProtectedBrowser.mjs +287 -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 -40
- package/src/Ephemeral.ts +17 -0
- package/src/ToolExposure.ts +2 -0
- 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 +778 -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 +10162 -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 +97 -22
- 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 +436 -0
- package/src/sandbox/Sandbox.ts +241 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
+
import { InteractiveBrowserHost, InteractiveBrowserPolicy, InteractiveBrowserTargetUrl } from "./InteractiveBrowser.mjs";
|
|
3
|
+
import { Context, Effect, Layer, Schema, Scope } from "effect";
|
|
4
|
+
//#region src/sandbox/ProtectedBrowser.ts
|
|
5
|
+
var ProtectedBrowser_exports = /* @__PURE__ */ __exportAll({
|
|
6
|
+
BrowserCredentialAccess: () => BrowserCredentialAccess,
|
|
7
|
+
BrowserCredentialMaterial: () => BrowserCredentialMaterial,
|
|
8
|
+
BrowserReference: () => BrowserReference,
|
|
9
|
+
CardCredential: () => CardCredential,
|
|
10
|
+
CredentialAccessError: () => CredentialAccessError,
|
|
11
|
+
CredentialDispatch: () => CredentialDispatch,
|
|
12
|
+
CredentialFieldRole: () => CredentialFieldRole,
|
|
13
|
+
CredentialKind: () => CredentialKind,
|
|
14
|
+
CredentialMilestone: () => CredentialMilestone,
|
|
15
|
+
CredentialObservationDecision: () => CredentialObservationDecision,
|
|
16
|
+
CredentialObservationGrant: () => CredentialObservationGrant,
|
|
17
|
+
CredentialOffer: () => CredentialOffer,
|
|
18
|
+
CredentialOfferMetadata: () => CredentialOfferMetadata,
|
|
19
|
+
CredentialOrigin: () => CredentialOrigin,
|
|
20
|
+
CredentialTarget: () => CredentialTarget,
|
|
21
|
+
CredentialUseResult: () => CredentialUseResult,
|
|
22
|
+
ListCredentialOffers: () => ListCredentialOffers,
|
|
23
|
+
LoginCredential: () => LoginCredential,
|
|
24
|
+
ProtectedBrowser: () => ProtectedBrowser,
|
|
25
|
+
ProtectedBrowserAction: () => ProtectedBrowserAction,
|
|
26
|
+
ProtectedBrowserCheckpoint: () => ProtectedBrowserCheckpoint,
|
|
27
|
+
ProtectedBrowserClick: () => ProtectedBrowserClick,
|
|
28
|
+
ProtectedBrowserControl: () => ProtectedBrowserControl,
|
|
29
|
+
ProtectedBrowserError: () => ProtectedBrowserError,
|
|
30
|
+
ProtectedBrowserFill: () => ProtectedBrowserFill,
|
|
31
|
+
ProtectedBrowserNavigate: () => ProtectedBrowserNavigate,
|
|
32
|
+
ProtectedBrowserObservation: () => ProtectedBrowserObservation,
|
|
33
|
+
ProtectedBrowserSession: () => ProtectedBrowserSession,
|
|
34
|
+
ProtectedCleanup: () => ProtectedCleanup,
|
|
35
|
+
ProtectedObservationState: () => ProtectedObservationState,
|
|
36
|
+
UseCredential: () => UseCredential
|
|
37
|
+
});
|
|
38
|
+
/** Canonical HTTPS origin, including a non-default port. Host grants match exactly. */
|
|
39
|
+
const CredentialOrigin = Schema.String.check(Schema.makeFilter((value) => value.startsWith("https://") && Schema.is(InteractiveBrowserHost)(value.slice(8))));
|
|
40
|
+
const BrowserReference = Schema.String.check(Schema.isUUID());
|
|
41
|
+
const CredentialKind = Schema.Literals(["login", "card"]);
|
|
42
|
+
const CredentialFieldRole = Schema.Literals([
|
|
43
|
+
"username",
|
|
44
|
+
"password",
|
|
45
|
+
"card-name",
|
|
46
|
+
"card-number",
|
|
47
|
+
"card-expiry",
|
|
48
|
+
"card-expiry-month",
|
|
49
|
+
"card-expiry-year",
|
|
50
|
+
"card-security-code"
|
|
51
|
+
]);
|
|
52
|
+
const Label = Schema.String.check(Schema.isMaxLength(200));
|
|
53
|
+
const LinkUrl = InteractiveBrowserTargetUrl.check(Schema.isStartsWith("https://"));
|
|
54
|
+
var CredentialTarget = class extends Schema.Class("CredentialTarget")({
|
|
55
|
+
topOrigin: CredentialOrigin,
|
|
56
|
+
frameOrigin: CredentialOrigin,
|
|
57
|
+
recipientOrigin: CredentialOrigin,
|
|
58
|
+
document: BrowserReference,
|
|
59
|
+
frame: BrowserReference,
|
|
60
|
+
form: BrowserReference
|
|
61
|
+
}) {};
|
|
62
|
+
var ProtectedBrowserControl = class extends Schema.Class("ProtectedBrowserControl")({
|
|
63
|
+
ref: BrowserReference,
|
|
64
|
+
target: CredentialTarget,
|
|
65
|
+
role: Schema.Union([CredentialFieldRole, Schema.Literals([
|
|
66
|
+
"text",
|
|
67
|
+
"select",
|
|
68
|
+
"radio",
|
|
69
|
+
"checkbox",
|
|
70
|
+
"submit",
|
|
71
|
+
"link",
|
|
72
|
+
"button",
|
|
73
|
+
"unsupported"
|
|
74
|
+
])]),
|
|
75
|
+
label: Label,
|
|
76
|
+
/** Current native radio/checkbox state; field values are never included. */
|
|
77
|
+
checked: Schema.optionalKey(Schema.Boolean),
|
|
78
|
+
/** Resolved HTTPS destination for a native link; target.recipientOrigin is its origin. */
|
|
79
|
+
url: Schema.optionalKey(LinkUrl)
|
|
80
|
+
}) {};
|
|
81
|
+
var ProtectedBrowserObservation = class extends Schema.Class("ProtectedBrowserObservation")({
|
|
82
|
+
document: BrowserReference,
|
|
83
|
+
topOrigin: CredentialOrigin,
|
|
84
|
+
text: Schema.String.check(Schema.isMaxLength(65536)),
|
|
85
|
+
controls: Schema.Array(ProtectedBrowserControl).check(Schema.isMaxLength(64)),
|
|
86
|
+
truncated: Schema.Boolean,
|
|
87
|
+
observation: Schema.Literals(["before-exposure", "approved-after-exposure"])
|
|
88
|
+
}) {};
|
|
89
|
+
var CredentialOfferMetadata = class extends Schema.Class("CredentialOfferMetadata")({
|
|
90
|
+
label: Label,
|
|
91
|
+
brand: Schema.optionalKey(Label),
|
|
92
|
+
lastFour: Schema.optionalKey(Schema.String.check(Schema.isPattern(/^\d{4}$/))),
|
|
93
|
+
/** Plaintext metadata disclosed only when the host authorizes listing this offer. */
|
|
94
|
+
billingAddress: Schema.optionalKey(Schema.Struct({
|
|
95
|
+
name: Schema.optionalKey(Label),
|
|
96
|
+
line1: Schema.optionalKey(Label),
|
|
97
|
+
line2: Schema.optionalKey(Label),
|
|
98
|
+
city: Schema.optionalKey(Label),
|
|
99
|
+
region: Schema.optionalKey(Label),
|
|
100
|
+
postalCode: Schema.optionalKey(Label),
|
|
101
|
+
country: Schema.optionalKey(Label)
|
|
102
|
+
}))
|
|
103
|
+
}) {};
|
|
104
|
+
var CredentialOffer = class extends Schema.Class("CredentialOffer")({
|
|
105
|
+
ref: BrowserReference,
|
|
106
|
+
kind: CredentialKind,
|
|
107
|
+
metadata: CredentialOfferMetadata
|
|
108
|
+
}) {};
|
|
109
|
+
var ListCredentialOffers = class extends Schema.Class("ListCredentialOffers")({
|
|
110
|
+
kind: CredentialKind,
|
|
111
|
+
target: BrowserReference
|
|
112
|
+
}) {};
|
|
113
|
+
var UseCredential = class extends Schema.Class("UseCredential")({
|
|
114
|
+
offer: BrowserReference,
|
|
115
|
+
fields: Schema.Array(Schema.Struct({
|
|
116
|
+
ref: BrowserReference,
|
|
117
|
+
role: CredentialFieldRole
|
|
118
|
+
})).check(Schema.isMinLength(1), Schema.isMaxLength(8)),
|
|
119
|
+
submit: Schema.optionalKey(BrowserReference)
|
|
120
|
+
}) {};
|
|
121
|
+
var ProtectedBrowserNavigate = class extends Schema.Class("ProtectedBrowserNavigate")({ url: Schema.String.check(Schema.isMaxLength(8192)) }) {};
|
|
122
|
+
var ProtectedBrowserClick = class extends Schema.Class("ProtectedBrowserClick")({ ref: BrowserReference }) {};
|
|
123
|
+
/**
|
|
124
|
+
* Non-secret text for an ordinary text control or native single select in the current observation.
|
|
125
|
+
* Never pass credential material. Credential roles, including username, require useCredential.
|
|
126
|
+
* Selects match a unique enabled option value, then a unique exact trimmed label. Empty text clears.
|
|
127
|
+
*/
|
|
128
|
+
var ProtectedBrowserFill = class extends Schema.Class("ProtectedBrowserFill")(Schema.Struct({
|
|
129
|
+
ref: BrowserReference,
|
|
130
|
+
value: Schema.String.check(Schema.isMaxLength(8192))
|
|
131
|
+
}).pipe(Schema.annotate({ parseOptions: { onExcessProperty: "error" } }))) {};
|
|
132
|
+
const CredentialDispatch = Schema.Literals([
|
|
133
|
+
"not-dispatched",
|
|
134
|
+
"possibly-dispatched",
|
|
135
|
+
"dispatched"
|
|
136
|
+
]);
|
|
137
|
+
const CredentialMilestone = Schema.Literals([
|
|
138
|
+
"none",
|
|
139
|
+
"partial-fill",
|
|
140
|
+
"filled",
|
|
141
|
+
"submission-dispatched"
|
|
142
|
+
]);
|
|
143
|
+
const ProtectedObservationState = Schema.Literals([
|
|
144
|
+
"before-exposure",
|
|
145
|
+
"protected",
|
|
146
|
+
"approved-after-exposure",
|
|
147
|
+
"closed"
|
|
148
|
+
]);
|
|
149
|
+
const ProtectedCleanup = Schema.Literals([
|
|
150
|
+
"not-requested",
|
|
151
|
+
"confirmed",
|
|
152
|
+
"unconfirmed"
|
|
153
|
+
]);
|
|
154
|
+
const Evidence = {
|
|
155
|
+
dispatch: CredentialDispatch,
|
|
156
|
+
milestone: CredentialMilestone,
|
|
157
|
+
observation: ProtectedObservationState,
|
|
158
|
+
cleanup: ProtectedCleanup
|
|
159
|
+
};
|
|
160
|
+
/** No foreign message/cause or page data may enter this failure. Closure does not undo dispatch. */
|
|
161
|
+
var ProtectedBrowserError = class extends Schema.TaggedError()("ProtectedBrowserError", {
|
|
162
|
+
reason: Schema.Literals([
|
|
163
|
+
"denied",
|
|
164
|
+
"missing-credential",
|
|
165
|
+
"stale-reference",
|
|
166
|
+
"unsupported",
|
|
167
|
+
"needs-attention",
|
|
168
|
+
"busy",
|
|
169
|
+
"closed",
|
|
170
|
+
"limit",
|
|
171
|
+
"timeout",
|
|
172
|
+
"provider",
|
|
173
|
+
"resolver",
|
|
174
|
+
"outcome-unknown",
|
|
175
|
+
"observation-blocked"
|
|
176
|
+
]),
|
|
177
|
+
...Evidence
|
|
178
|
+
}) {};
|
|
179
|
+
var CredentialUseResult = class extends Schema.Class("CredentialUseResult")({
|
|
180
|
+
...Evidence,
|
|
181
|
+
authentication: Schema.Literal("unverified")
|
|
182
|
+
}) {};
|
|
183
|
+
const SecretText = Schema.Redacted(Schema.NonEmptyString.check(Schema.isMaxLength(1024)));
|
|
184
|
+
/** Host-only material. Never encode it into Tool results, checkpoints, or storage. */
|
|
185
|
+
const LoginCredential = Schema.TaggedStruct("LoginCredential", {
|
|
186
|
+
username: SecretText,
|
|
187
|
+
password: SecretText
|
|
188
|
+
});
|
|
189
|
+
/** Security codes are transient, never persisted. Dummy tests are not PCI compliance evidence. */
|
|
190
|
+
const CardCredential = Schema.TaggedStruct("CardCredential", {
|
|
191
|
+
name: SecretText,
|
|
192
|
+
number: Schema.Redacted(Schema.String.check(Schema.isPattern(/^\d{12,19}$/))),
|
|
193
|
+
expiry: SecretText,
|
|
194
|
+
expiryMonth: Schema.Redacted(Schema.String.check(Schema.isPattern(/^(0[1-9]|1[0-2])$/))),
|
|
195
|
+
expiryYear: Schema.Redacted(Schema.String.check(Schema.isPattern(/^\d{4}$/))),
|
|
196
|
+
securityCode: Schema.optionalKey(Schema.Redacted(Schema.String.check(Schema.isPattern(/^\d{3,4}$/))))
|
|
197
|
+
});
|
|
198
|
+
const BrowserCredentialMaterial = Schema.Union([LoginCredential, CardCredential]);
|
|
199
|
+
var CredentialAccessError = class extends Schema.TaggedError()("CredentialAccessError", { reason: Schema.Literals([
|
|
200
|
+
"denied",
|
|
201
|
+
"missing-credential",
|
|
202
|
+
"needs-attention",
|
|
203
|
+
"resolver"
|
|
204
|
+
]) }) {};
|
|
205
|
+
/** Exact current action proposed to host authority; no ordinary fill value or secret is included. */
|
|
206
|
+
const ProtectedBrowserAction = Schema.Union([
|
|
207
|
+
Schema.TaggedStruct("Navigate", { url: ProtectedBrowserNavigate.fields.url }),
|
|
208
|
+
Schema.TaggedStruct("Fill", {
|
|
209
|
+
ref: BrowserReference,
|
|
210
|
+
target: CredentialTarget,
|
|
211
|
+
role: Schema.Literals(["text", "select"])
|
|
212
|
+
}),
|
|
213
|
+
Schema.TaggedStruct("Click", {
|
|
214
|
+
ref: BrowserReference,
|
|
215
|
+
target: CredentialTarget,
|
|
216
|
+
role: Schema.Literals([
|
|
217
|
+
"button",
|
|
218
|
+
"radio",
|
|
219
|
+
"checkbox"
|
|
220
|
+
])
|
|
221
|
+
}),
|
|
222
|
+
Schema.TaggedStruct("Click", {
|
|
223
|
+
ref: BrowserReference,
|
|
224
|
+
target: CredentialTarget,
|
|
225
|
+
role: Schema.Literal("link"),
|
|
226
|
+
url: LinkUrl
|
|
227
|
+
}),
|
|
228
|
+
Schema.TaggedStruct("Submit", {
|
|
229
|
+
ref: BrowserReference,
|
|
230
|
+
target: CredentialTarget
|
|
231
|
+
})
|
|
232
|
+
]);
|
|
233
|
+
/**
|
|
234
|
+
* Trust only these current observation origins. The top origin must be included. Other frames
|
|
235
|
+
* supply neither text nor usable refs. This does not expand network policy or credential grants.
|
|
236
|
+
*/
|
|
237
|
+
var CredentialObservationGrant = class extends Schema.Class("CredentialObservationGrant")({
|
|
238
|
+
decision: Schema.Literal("trust-recipient-no-credential-echo"),
|
|
239
|
+
origins: Schema.Array(CredentialOrigin).check(Schema.isMinLength(1), Schema.isMaxLength(16), Schema.isUnique())
|
|
240
|
+
}) {};
|
|
241
|
+
const CredentialObservationDecision = Schema.Union([Schema.Literals(["trust-recipient-no-credential-echo", "deny"]), CredentialObservationGrant]);
|
|
242
|
+
/**
|
|
243
|
+
* Host-only vault and grant port. Derive caller from the authorized invocation, never Tool input.
|
|
244
|
+
* Recheck account ownership, current grants, merchant/frame/recipient pairing, and any side
|
|
245
|
+
* effects caused by filling. Listing authorizes metadata only. Grant checks never widen network
|
|
246
|
+
* policy. Implementations must not log material or put it in defects/traces.
|
|
247
|
+
*/
|
|
248
|
+
var BrowserCredentialAccess = class extends Context.Service()("@effect-agent/sandbox/BrowserCredentialAccess") {};
|
|
249
|
+
/**
|
|
250
|
+
* Host-only suspended-pass state. Persist with the host's fenced controller receipt, never in
|
|
251
|
+
* a Tool result. It contains no credential material, offers, DOM references usable after resume,
|
|
252
|
+
* cookies, page text, or provider capability. A host must restore its own credential exposure
|
|
253
|
+
* ledger as well. The original deadline and action allowance include time spent with the human.
|
|
254
|
+
*/
|
|
255
|
+
var ProtectedBrowserCheckpoint = class extends Schema.Class("ProtectedBrowserCheckpoint")({
|
|
256
|
+
policy: InteractiveBrowserPolicy,
|
|
257
|
+
startedAt: Schema.Natural,
|
|
258
|
+
actions: Schema.Natural,
|
|
259
|
+
exposures: Schema.Array(CredentialTarget).check(Schema.isMaxLength(1e3)),
|
|
260
|
+
humanExposure: Schema.Boolean,
|
|
261
|
+
humanOrigins: Schema.Array(CredentialOrigin).check(Schema.isMaxLength(16)),
|
|
262
|
+
dispatch: CredentialDispatch,
|
|
263
|
+
milestone: CredentialMilestone
|
|
264
|
+
}) {};
|
|
265
|
+
var ProtectedBrowser = class extends Context.Service()("@effect-agent/sandbox/ProtectedBrowser") {};
|
|
266
|
+
/** Build once in an execution/Attempt Layer. Acquires lazily and shares one pass across Tools. */
|
|
267
|
+
var ProtectedBrowserSession = class extends Context.Service()("@effect-agent/sandbox/ProtectedBrowserSession") {
|
|
268
|
+
static layer(policy) {
|
|
269
|
+
return Layer.effect(this)(Effect.gen(function* () {
|
|
270
|
+
const browser = yield* ProtectedBrowser;
|
|
271
|
+
const access = yield* BrowserCredentialAccess;
|
|
272
|
+
const scope = yield* Effect.scope;
|
|
273
|
+
const cached = yield* Effect.cached(browser.open(policy).pipe(Effect.provideService(BrowserCredentialAccess, access), Effect.provideService(Scope.Scope, scope)));
|
|
274
|
+
return { get: Effect.suspend(() => scope.state._tag === "Closed" ? Effect.fail(new ProtectedBrowserError({
|
|
275
|
+
reason: "closed",
|
|
276
|
+
dispatch: "not-dispatched",
|
|
277
|
+
milestone: "none",
|
|
278
|
+
observation: "closed",
|
|
279
|
+
cleanup: "not-requested"
|
|
280
|
+
})) : cached) };
|
|
281
|
+
}));
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
//#endregion
|
|
285
|
+
export { BrowserCredentialAccess, BrowserCredentialMaterial, BrowserReference, CardCredential, CredentialAccessError, CredentialDispatch, CredentialFieldRole, CredentialKind, CredentialMilestone, CredentialObservationDecision, CredentialObservationGrant, CredentialOffer, CredentialOfferMetadata, CredentialOrigin, CredentialTarget, CredentialUseResult, ListCredentialOffers, LoginCredential, ProtectedBrowser, ProtectedBrowserAction, ProtectedBrowserCheckpoint, ProtectedBrowserClick, ProtectedBrowserControl, ProtectedBrowserError, ProtectedBrowserFill, ProtectedBrowserNavigate, ProtectedBrowserObservation, ProtectedBrowserSession, ProtectedCleanup, ProtectedObservationState, UseCredential, ProtectedBrowser_exports as t };
|
|
286
|
+
|
|
287
|
+
//# sourceMappingURL=ProtectedBrowser.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtectedBrowser.mjs","names":[],"sources":["../../src/sandbox/ProtectedBrowser.ts"],"sourcesContent":["import { Context, Effect, Layer, Schema, Scope, type Redacted } from \"effect\";\n\nimport {\n InteractiveBrowserHost,\n InteractiveBrowserTargetUrl,\n InteractiveBrowserPolicy,\n} from \"./InteractiveBrowser.ts\";\n\n/** Canonical HTTPS origin, including a non-default port. Host grants match exactly. */\nexport const CredentialOrigin = Schema.String.check(\n Schema.makeFilter(\n (value) => value.startsWith(\"https://\") && Schema.is(InteractiveBrowserHost)(value.slice(8)),\n ),\n);\n\nexport const BrowserReference = Schema.String.check(Schema.isUUID());\nexport const CredentialKind = Schema.Literals([\"login\", \"card\"]);\n\nexport const CredentialFieldRole = Schema.Literals([\n \"username\",\n \"password\",\n \"card-name\",\n \"card-number\",\n \"card-expiry\",\n \"card-expiry-month\",\n \"card-expiry-year\",\n \"card-security-code\",\n]);\n\nconst Label = Schema.String.check(Schema.isMaxLength(200));\nconst LinkUrl = InteractiveBrowserTargetUrl.check(Schema.isStartsWith(\"https://\"));\n\nexport class CredentialTarget extends Schema.Class<CredentialTarget>(\"CredentialTarget\")({\n topOrigin: CredentialOrigin,\n frameOrigin: CredentialOrigin,\n recipientOrigin: CredentialOrigin,\n document: BrowserReference,\n frame: BrowserReference,\n form: BrowserReference,\n}) {}\n\nexport class ProtectedBrowserControl extends Schema.Class<ProtectedBrowserControl>(\n \"ProtectedBrowserControl\",\n)({\n ref: BrowserReference,\n target: CredentialTarget,\n role: Schema.Union([\n CredentialFieldRole,\n Schema.Literals([\n \"text\",\n \"select\",\n \"radio\",\n \"checkbox\",\n \"submit\",\n \"link\",\n \"button\",\n \"unsupported\",\n ]),\n ]),\n label: Label,\n /** Current native radio/checkbox state; field values are never included. */\n checked: Schema.optionalKey(Schema.Boolean),\n /** Resolved HTTPS destination for a native link; target.recipientOrigin is its origin. */\n url: Schema.optionalKey(LinkUrl),\n}) {}\n\nexport class ProtectedBrowserObservation extends Schema.Class<ProtectedBrowserObservation>(\n \"ProtectedBrowserObservation\",\n)({\n document: BrowserReference,\n topOrigin: CredentialOrigin,\n text: Schema.String.check(Schema.isMaxLength(64 * 1024)),\n controls: Schema.Array(ProtectedBrowserControl).check(Schema.isMaxLength(64)),\n truncated: Schema.Boolean,\n observation: Schema.Literals([\"before-exposure\", \"approved-after-exposure\"]),\n}) {}\n\nexport class CredentialOfferMetadata extends Schema.Class<CredentialOfferMetadata>(\n \"CredentialOfferMetadata\",\n)({\n label: Label,\n brand: Schema.optionalKey(Label),\n lastFour: Schema.optionalKey(Schema.String.check(Schema.isPattern(/^\\d{4}$/))),\n /** Plaintext metadata disclosed only when the host authorizes listing this offer. */\n billingAddress: Schema.optionalKey(\n Schema.Struct({\n name: Schema.optionalKey(Label),\n line1: Schema.optionalKey(Label),\n line2: Schema.optionalKey(Label),\n city: Schema.optionalKey(Label),\n region: Schema.optionalKey(Label),\n postalCode: Schema.optionalKey(Label),\n country: Schema.optionalKey(Label),\n }),\n ),\n}) {}\n\nexport class CredentialOffer extends Schema.Class<CredentialOffer>(\"CredentialOffer\")({\n ref: BrowserReference,\n kind: CredentialKind,\n metadata: CredentialOfferMetadata,\n}) {}\n\nexport class ListCredentialOffers extends Schema.Class<ListCredentialOffers>(\n \"ListCredentialOffers\",\n)({\n kind: CredentialKind,\n target: BrowserReference,\n}) {}\n\nexport class UseCredential extends Schema.Class<UseCredential>(\"UseCredential\")({\n offer: BrowserReference,\n fields: Schema.Array(Schema.Struct({ ref: BrowserReference, role: CredentialFieldRole })).check(\n Schema.isMinLength(1),\n Schema.isMaxLength(8),\n ),\n submit: Schema.optionalKey(BrowserReference),\n}) {}\n\nexport class ProtectedBrowserNavigate extends Schema.Class<ProtectedBrowserNavigate>(\n \"ProtectedBrowserNavigate\",\n)({\n url: Schema.String.check(Schema.isMaxLength(8192)),\n}) {}\n\nexport class ProtectedBrowserClick extends Schema.Class<ProtectedBrowserClick>(\n \"ProtectedBrowserClick\",\n)({\n ref: BrowserReference,\n}) {}\n\n/**\n * Non-secret text for an ordinary text control or native single select in the current observation.\n * Never pass credential material. Credential roles, including username, require useCredential.\n * Selects match a unique enabled option value, then a unique exact trimmed label. Empty text clears.\n */\nexport class ProtectedBrowserFill extends Schema.Class<ProtectedBrowserFill>(\n \"ProtectedBrowserFill\",\n)(\n Schema.Struct({\n ref: BrowserReference,\n value: Schema.String.check(Schema.isMaxLength(8192)),\n }).pipe(Schema.annotate({ parseOptions: { onExcessProperty: \"error\" } })),\n) {}\n\nexport const CredentialDispatch = Schema.Literals([\n \"not-dispatched\",\n \"possibly-dispatched\",\n \"dispatched\",\n]);\n\nexport const CredentialMilestone = Schema.Literals([\n \"none\",\n \"partial-fill\",\n \"filled\",\n \"submission-dispatched\",\n]);\n\nexport const ProtectedObservationState = Schema.Literals([\n \"before-exposure\",\n \"protected\",\n \"approved-after-exposure\",\n \"closed\",\n]);\n\nexport const ProtectedCleanup = Schema.Literals([\"not-requested\", \"confirmed\", \"unconfirmed\"]);\n\nconst Evidence = {\n dispatch: CredentialDispatch,\n milestone: CredentialMilestone,\n observation: ProtectedObservationState,\n cleanup: ProtectedCleanup,\n};\n\n/** No foreign message/cause or page data may enter this failure. Closure does not undo dispatch. */\nexport class ProtectedBrowserError extends Schema.TaggedError<ProtectedBrowserError>()(\n \"ProtectedBrowserError\",\n {\n reason: Schema.Literals([\n \"denied\",\n \"missing-credential\",\n \"stale-reference\",\n \"unsupported\",\n \"needs-attention\",\n \"busy\",\n \"closed\",\n \"limit\",\n \"timeout\",\n \"provider\",\n \"resolver\",\n \"outcome-unknown\",\n \"observation-blocked\",\n ]),\n ...Evidence,\n },\n) {}\n\nexport class CredentialUseResult extends Schema.Class<CredentialUseResult>(\"CredentialUseResult\")({\n ...Evidence,\n authentication: Schema.Literal(\"unverified\"),\n}) {}\n\nconst SecretText = Schema.Redacted(Schema.NonEmptyString.check(Schema.isMaxLength(1024)));\n\n/** Host-only material. Never encode it into Tool results, checkpoints, or storage. */\nexport const LoginCredential = Schema.TaggedStruct(\"LoginCredential\", {\n username: SecretText,\n password: SecretText,\n});\n\n/** Security codes are transient, never persisted. Dummy tests are not PCI compliance evidence. */\nexport const CardCredential = Schema.TaggedStruct(\"CardCredential\", {\n name: SecretText,\n number: Schema.Redacted(Schema.String.check(Schema.isPattern(/^\\d{12,19}$/))),\n expiry: SecretText,\n expiryMonth: Schema.Redacted(Schema.String.check(Schema.isPattern(/^(0[1-9]|1[0-2])$/))),\n expiryYear: Schema.Redacted(Schema.String.check(Schema.isPattern(/^\\d{4}$/))),\n securityCode: Schema.optionalKey(\n Schema.Redacted(Schema.String.check(Schema.isPattern(/^\\d{3,4}$/))),\n ),\n});\n\nexport const BrowserCredentialMaterial = Schema.Union([LoginCredential, CardCredential]);\nexport type BrowserCredentialMaterial = typeof BrowserCredentialMaterial.Type;\n\nexport class CredentialAccessError extends Schema.TaggedError<CredentialAccessError>()(\n \"CredentialAccessError\",\n {\n reason: Schema.Literals([\"denied\", \"missing-credential\", \"needs-attention\", \"resolver\"]),\n },\n) {}\n\nexport interface CredentialAccessRequest {\n readonly caller: Redacted.Redacted<string>;\n readonly kind: typeof CredentialKind.Type;\n readonly target: CredentialTarget;\n}\n\nexport interface CredentialUseAuthorization extends CredentialAccessRequest {\n readonly key: Redacted.Redacted<string>;\n readonly roles: ReadonlyArray<typeof CredentialFieldRole.Type>;\n readonly submit: boolean;\n}\n\n/** Exact current action proposed to host authority; no ordinary fill value or secret is included. */\nexport const ProtectedBrowserAction = Schema.Union([\n Schema.TaggedStruct(\"Navigate\", { url: ProtectedBrowserNavigate.fields.url }),\n Schema.TaggedStruct(\"Fill\", {\n ref: BrowserReference,\n target: CredentialTarget,\n role: Schema.Literals([\"text\", \"select\"]),\n }),\n Schema.TaggedStruct(\"Click\", {\n ref: BrowserReference,\n target: CredentialTarget,\n role: Schema.Literals([\"button\", \"radio\", \"checkbox\"]),\n }),\n Schema.TaggedStruct(\"Click\", {\n ref: BrowserReference,\n target: CredentialTarget,\n role: Schema.Literal(\"link\"),\n url: LinkUrl,\n }),\n Schema.TaggedStruct(\"Submit\", { ref: BrowserReference, target: CredentialTarget }),\n]);\n\nexport type ProtectedBrowserAction = typeof ProtectedBrowserAction.Type;\n\n/**\n * Trust only these current observation origins. The top origin must be included. Other frames\n * supply neither text nor usable refs. This does not expand network policy or credential grants.\n */\nexport class CredentialObservationGrant extends Schema.Class<CredentialObservationGrant>(\n \"CredentialObservationGrant\",\n)({\n decision: Schema.Literal(\"trust-recipient-no-credential-echo\"),\n origins: Schema.Array(CredentialOrigin).check(\n Schema.isMinLength(1),\n Schema.isMaxLength(16),\n Schema.isUnique(),\n ),\n}) {}\n\nexport const CredentialObservationDecision = Schema.Union([\n Schema.Literals([\"trust-recipient-no-credential-echo\", \"deny\"]),\n CredentialObservationGrant,\n]);\n\n/**\n * Host-only vault and grant port. Derive caller from the authorized invocation, never Tool input.\n * Recheck account ownership, current grants, merchant/frame/recipient pairing, and any side\n * effects caused by filling. Listing authorizes metadata only. Grant checks never widen network\n * policy. Implementations must not log material or put it in defects/traces.\n */\nexport class BrowserCredentialAccess extends Context.Service<\n BrowserCredentialAccess,\n {\n readonly caller: Effect.Effect<Redacted.Redacted<string>, CredentialAccessError>;\n readonly list: (request: CredentialAccessRequest) => Effect.Effect<\n ReadonlyArray<{\n readonly key: Redacted.Redacted<string>;\n readonly metadata: CredentialOfferMetadata;\n }>,\n CredentialAccessError\n >;\n readonly authorize: (\n request: CredentialUseAuthorization,\n ) => Effect.Effect<void, CredentialAccessError>;\n readonly resolve: (\n request: CredentialUseAuthorization,\n ) => Effect.Effect<BrowserCredentialMaterial, CredentialAccessError>;\n /**\n * Optional host authority for every ordinary navigate/fill/click, mandatory for Submit.\n * Recheck caller ownership, user intent, current submission/continuation grants for ALL prior\n * exposures, and this exact target. Exposures may come from separate credential frames/forms.\n * Without this hook, ordinary actions retain their observation gate and Submit is unsupported.\n * Observation trust alone never authorizes a new native submit. Called again on each action;\n * approvals are not cached. The pass revalidates caller and target after this hook returns.\n */\n readonly authorizeAction?: (request: {\n readonly caller: Redacted.Redacted<string>;\n readonly action: ProtectedBrowserAction;\n readonly exposures: ReadonlyArray<CredentialTarget>;\n }) => Effect.Effect<void, CredentialAccessError>;\n /**\n * Explicitly trust all observed destinations not to echo credentials, including transformed\n * or delayed echoes. Called for every observation and non-secret action after exposure.\n * The string grant trusts all current observed origins. Return CredentialObservationGrant\n * to select an explicit subset instead. This is recipient trust, not submission authority,\n * a universal secrecy guarantee, or a login verifier.\n */\n readonly observation: (request: {\n readonly caller: Redacted.Redacted<string>;\n readonly topOrigin: typeof CredentialOrigin.Type;\n readonly frameOrigins: ReadonlyArray<typeof CredentialOrigin.Type>;\n readonly exposures: ReadonlyArray<CredentialTarget>;\n /** A human may have entered secrets; explicitly authorize observation even with no vault exposures. */\n readonly humanExposure?: boolean;\n /** Origins present when the human received control, retained across durable suspension. */\n readonly humanOrigins?: ReadonlyArray<typeof CredentialOrigin.Type>;\n }) => Effect.Effect<typeof CredentialObservationDecision.Type, CredentialAccessError>;\n }\n>()(\"@effect-agent/sandbox/BrowserCredentialAccess\") {}\n\n/**\n * Host-only suspended-pass state. Persist with the host's fenced controller receipt, never in\n * a Tool result. It contains no credential material, offers, DOM references usable after resume,\n * cookies, page text, or provider capability. A host must restore its own credential exposure\n * ledger as well. The original deadline and action allowance include time spent with the human.\n */\nexport class ProtectedBrowserCheckpoint extends Schema.Class<ProtectedBrowserCheckpoint>(\n \"ProtectedBrowserCheckpoint\",\n)({\n policy: InteractiveBrowserPolicy,\n startedAt: Schema.Natural,\n actions: Schema.Natural,\n exposures: Schema.Array(CredentialTarget).check(Schema.isMaxLength(1000)),\n humanExposure: Schema.Boolean,\n humanOrigins: Schema.Array(CredentialOrigin).check(Schema.isMaxLength(16)),\n dispatch: CredentialDispatch,\n milestone: CredentialMilestone,\n}) {}\n\n/** A private ephemeral pass. No selectors, JavaScript, screenshots, viewer, or provider identity. */\nexport interface ProtectedBrowserHandle {\n readonly navigate: (\n request: ProtectedBrowserNavigate,\n ) => Effect.Effect<void, ProtectedBrowserError>;\n readonly observe: Effect.Effect<ProtectedBrowserObservation, ProtectedBrowserError>;\n readonly click: (request: ProtectedBrowserClick) => Effect.Effect<void, ProtectedBrowserError>;\n /** Uses the same lock, budgets, current-target checks and post-exposure grant as other actions. */\n readonly fill: (request: ProtectedBrowserFill) => Effect.Effect<void, ProtectedBrowserError>;\n readonly listCredentialOffers: (\n request: ListCredentialOffers,\n ) => Effect.Effect<ReadonlyArray<CredentialOffer>, ProtectedBrowserError>;\n readonly useCredential: (\n request: UseCredential,\n ) => Effect.Effect<CredentialUseResult, ProtectedBrowserError>;\n readonly close: Effect.Effect<typeof ProtectedCleanup.Type>;\n}\n\nexport class ProtectedBrowser extends Context.Service<\n ProtectedBrowser,\n {\n readonly open: (\n policy: InteractiveBrowserPolicy,\n ) => Effect.Effect<\n ProtectedBrowserHandle,\n ProtectedBrowserError,\n Scope.Scope | BrowserCredentialAccess\n >;\n }\n>()(\"@effect-agent/sandbox/ProtectedBrowser\") {}\n\n/** Build once in an execution/Attempt Layer. Acquires lazily and shares one pass across Tools. */\nexport class ProtectedBrowserSession extends Context.Service<\n ProtectedBrowserSession,\n {\n readonly get: Effect.Effect<ProtectedBrowserHandle, ProtectedBrowserError>;\n }\n>()(\"@effect-agent/sandbox/ProtectedBrowserSession\") {\n static layer(policy: InteractiveBrowserPolicy) {\n return Layer.effect(this)(\n Effect.gen(function* () {\n const browser = yield* ProtectedBrowser;\n const access = yield* BrowserCredentialAccess;\n const scope = yield* Effect.scope;\n\n const cached = yield* Effect.cached(\n browser\n .open(policy)\n .pipe(\n Effect.provideService(BrowserCredentialAccess, access),\n Effect.provideService(Scope.Scope, scope),\n ),\n );\n\n return {\n get: Effect.suspend(() =>\n scope.state._tag === \"Closed\"\n ? Effect.fail(\n new ProtectedBrowserError({\n reason: \"closed\",\n dispatch: \"not-dispatched\",\n milestone: \"none\",\n observation: \"closed\",\n cleanup: \"not-requested\",\n }),\n )\n : cached,\n ),\n };\n }),\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { C as SandboxSpawnError, E as SandboxUnsupportedRequestError, S as SandboxSecretHandle, T as SandboxTimeoutError, _ as SandboxOutput, a as SandboxArtifact, b as SandboxResourceUse, c as SandboxError, d as SandboxExitError, f as SandboxExited, g as SandboxNetworkPolicy, h as SandboxMount, i as Sandbox, l as SandboxEvent, m as SandboxLimits, n as NetworkDisabled, o as SandboxArtifactRule, p as SandboxImplementation, r as SANDBOX_DIAGNOSTIC_MAX_LENGTH, s as SandboxEnvironment, t as NetworkAllowlist, u as SandboxExecute, v as SandboxOutputLimitError, w as SandboxStarted, x as SandboxRuntime, y as SandboxRequest } from "../Sandbox-CEsDWBLq.mjs";
|
|
2
|
+
export { NetworkAllowlist, NetworkDisabled, SANDBOX_DIAGNOSTIC_MAX_LENGTH, Sandbox, SandboxArtifact, SandboxArtifactRule, SandboxEnvironment, SandboxError, SandboxEvent, SandboxExecute, SandboxExitError, SandboxExited, SandboxImplementation, SandboxLimits, SandboxMount, SandboxNetworkPolicy, SandboxOutput, SandboxOutputLimitError, SandboxRequest, SandboxResourceUse, SandboxRuntime, SandboxSecretHandle, SandboxSpawnError, SandboxStarted, SandboxTimeoutError, SandboxUnsupportedRequestError };
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
+
import { Context, Duration, Schema } from "effect";
|
|
3
|
+
//#region src/sandbox/Sandbox.ts
|
|
4
|
+
var Sandbox_exports = /* @__PURE__ */ __exportAll({
|
|
5
|
+
NetworkAllowlist: () => NetworkAllowlist,
|
|
6
|
+
NetworkDisabled: () => NetworkDisabled,
|
|
7
|
+
SANDBOX_DIAGNOSTIC_MAX_LENGTH: () => SANDBOX_DIAGNOSTIC_MAX_LENGTH,
|
|
8
|
+
Sandbox: () => Sandbox,
|
|
9
|
+
SandboxArtifact: () => SandboxArtifact,
|
|
10
|
+
SandboxArtifactRule: () => SandboxArtifactRule,
|
|
11
|
+
SandboxEnvironment: () => SandboxEnvironment,
|
|
12
|
+
SandboxError: () => SandboxError,
|
|
13
|
+
SandboxEvent: () => SandboxEvent,
|
|
14
|
+
SandboxExitError: () => SandboxExitError,
|
|
15
|
+
SandboxExited: () => SandboxExited,
|
|
16
|
+
SandboxImplementation: () => SandboxImplementation,
|
|
17
|
+
SandboxLimits: () => SandboxLimits,
|
|
18
|
+
SandboxMount: () => SandboxMount,
|
|
19
|
+
SandboxNetworkPolicy: () => SandboxNetworkPolicy,
|
|
20
|
+
SandboxOutput: () => SandboxOutput,
|
|
21
|
+
SandboxOutputLimitError: () => SandboxOutputLimitError,
|
|
22
|
+
SandboxRequest: () => SandboxRequest,
|
|
23
|
+
SandboxResourceUse: () => SandboxResourceUse,
|
|
24
|
+
SandboxRuntime: () => SandboxRuntime,
|
|
25
|
+
SandboxSecretHandle: () => SandboxSecretHandle,
|
|
26
|
+
SandboxSpawnError: () => SandboxSpawnError,
|
|
27
|
+
SandboxStarted: () => SandboxStarted,
|
|
28
|
+
SandboxTimeoutError: () => SandboxTimeoutError,
|
|
29
|
+
SandboxUnsupportedRequestError: () => SandboxUnsupportedRequestError
|
|
30
|
+
});
|
|
31
|
+
const BoundedName = Schema.NonEmptyString.check(Schema.isMaxLength(256));
|
|
32
|
+
const BoundedPath = Schema.NonEmptyString.check(Schema.isMaxLength(4096));
|
|
33
|
+
const BoundedArgument = Schema.String.check(Schema.isMaxLength(32768));
|
|
34
|
+
const MAX_OUTPUT_BYTES = 16777216;
|
|
35
|
+
const MAX_ARTIFACT_RULES = 64;
|
|
36
|
+
const BoundedOutputText = Schema.String.check(Schema.isMaxLength(MAX_OUTPUT_BYTES));
|
|
37
|
+
const SANDBOX_DIAGNOSTIC_MAX_LENGTH = 8192;
|
|
38
|
+
const BoundedDiagnostic = Schema.String.check(Schema.isMaxLength(SANDBOX_DIAGNOSTIC_MAX_LENGTH));
|
|
39
|
+
const PositiveInt = Schema.Int.check(Schema.isGreaterThan(0));
|
|
40
|
+
const PositiveNumber = Schema.Finite.check(Schema.isGreaterThan(0));
|
|
41
|
+
const MaxOutputBytes = PositiveInt.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES));
|
|
42
|
+
const BoundedArguments = Schema.Array(BoundedArgument).check(Schema.isMaxLength(256));
|
|
43
|
+
const BoundedEnvironmentNames = Schema.Array(BoundedName).check(Schema.isMaxLength(128));
|
|
44
|
+
const FinitePositiveDuration = Schema.Duration.pipe(Schema.refine((duration) => Duration.isFinite(duration) && Duration.isPositive(duration), { expected: "a finite positive duration" }));
|
|
45
|
+
const FiniteNonNegativeDuration = Schema.Duration.pipe(Schema.refine((duration) => Duration.isFinite(duration) && !Duration.isNegative(duration), { expected: "a finite non-negative duration" }));
|
|
46
|
+
/** A requested runtime image or executable environment. */
|
|
47
|
+
var SandboxRuntime = class extends Schema.Class("SandboxRuntime")({
|
|
48
|
+
kind: Schema.Literals([
|
|
49
|
+
"container",
|
|
50
|
+
"microvm",
|
|
51
|
+
"wasm",
|
|
52
|
+
"unisolated-process"
|
|
53
|
+
]),
|
|
54
|
+
identity: BoundedName
|
|
55
|
+
}) {};
|
|
56
|
+
/** The implementation and its isolation posture that executed a request. */
|
|
57
|
+
var SandboxImplementation = class extends Schema.Class("SandboxImplementation")({
|
|
58
|
+
isolation: Schema.Literals(["isolated", "unisolated"]),
|
|
59
|
+
identity: BoundedName
|
|
60
|
+
}) {};
|
|
61
|
+
/** A host path made available to the requested runtime. */
|
|
62
|
+
var SandboxMount = class extends Schema.Class("SandboxMount")({
|
|
63
|
+
source: BoundedPath,
|
|
64
|
+
target: BoundedPath,
|
|
65
|
+
access: Schema.Literals(["read-only", "read-write"])
|
|
66
|
+
}) {};
|
|
67
|
+
/** Explicitly denies all workload network access. */
|
|
68
|
+
var NetworkDisabled = class extends Schema.TaggedClass()("NetworkDisabled", {}) {};
|
|
69
|
+
/** Explicitly permits connections only to the named destination and port allowlists. */
|
|
70
|
+
var NetworkAllowlist = class extends Schema.TaggedClass()("NetworkAllowlist", {
|
|
71
|
+
domains: Schema.Array(BoundedName).check(Schema.isMaxLength(256)),
|
|
72
|
+
ports: Schema.Array(PositiveInt.check(Schema.isLessThanOrEqualTo(65535))).check(Schema.isMaxLength(256))
|
|
73
|
+
}) {};
|
|
74
|
+
/** Network access policy supplied to a sandbox implementation. */
|
|
75
|
+
const SandboxNetworkPolicy = Schema.Union([NetworkDisabled, NetworkAllowlist]);
|
|
76
|
+
/** Names of ambient variables that may be copied into the workload environment. */
|
|
77
|
+
var SandboxEnvironment = class extends Schema.Class("SandboxEnvironment")({ allow: BoundedEnvironmentNames }) {};
|
|
78
|
+
/** Limits that a sandbox implementation must either enforce or reject. */
|
|
79
|
+
var SandboxLimits = class extends Schema.Class("SandboxLimits")({
|
|
80
|
+
cpuCores: Schema.optionalKey(PositiveNumber.check(Schema.isLessThanOrEqualTo(1024))),
|
|
81
|
+
memoryBytes: Schema.optionalKey(PositiveInt.check(Schema.isLessThanOrEqualTo(1099511627776))),
|
|
82
|
+
maxOutputBytes: MaxOutputBytes,
|
|
83
|
+
maxWallTime: FinitePositiveDuration
|
|
84
|
+
}) {};
|
|
85
|
+
/** A secret reference; raw secret values are never part of a sandbox request. */
|
|
86
|
+
var SandboxSecretHandle = class extends Schema.Class("SandboxSecretHandle")({
|
|
87
|
+
id: BoundedName,
|
|
88
|
+
purpose: Schema.NonEmptyString.check(Schema.isMaxLength(2048))
|
|
89
|
+
}) {};
|
|
90
|
+
/** Rules for copying selected workload output out of an isolated runtime. */
|
|
91
|
+
var SandboxArtifactRule = class extends Schema.Class("SandboxArtifactRule")({
|
|
92
|
+
path: BoundedPath,
|
|
93
|
+
maxBytes: MaxOutputBytes
|
|
94
|
+
}) {};
|
|
95
|
+
/** Metadata for an artifact that a sandbox implementation released after applying its rules. */
|
|
96
|
+
var SandboxArtifact = class extends Schema.Class("SandboxArtifact")({
|
|
97
|
+
path: BoundedPath,
|
|
98
|
+
bytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES)),
|
|
99
|
+
digest: BoundedName,
|
|
100
|
+
mediaType: Schema.optionalKey(BoundedName)
|
|
101
|
+
}) {};
|
|
102
|
+
/** Schema-first command execution request. Command and arguments are intentionally separate. */
|
|
103
|
+
var SandboxRequest = class extends Schema.Class("SandboxRequest")({
|
|
104
|
+
runtime: SandboxRuntime,
|
|
105
|
+
command: BoundedPath,
|
|
106
|
+
args: BoundedArguments,
|
|
107
|
+
cwd: BoundedPath,
|
|
108
|
+
environment: SandboxEnvironment,
|
|
109
|
+
mounts: Schema.Array(SandboxMount).check(Schema.isMaxLength(64)),
|
|
110
|
+
network: SandboxNetworkPolicy,
|
|
111
|
+
limits: SandboxLimits,
|
|
112
|
+
secretHandles: Schema.Array(SandboxSecretHandle).check(Schema.isMaxLength(64)),
|
|
113
|
+
artifactRules: Schema.Array(SandboxArtifactRule).check(Schema.isMaxLength(MAX_ARTIFACT_RULES))
|
|
114
|
+
}) {};
|
|
115
|
+
/** Accounting that a sandbox implementation was able to observe for one execution. */
|
|
116
|
+
var SandboxResourceUse = class extends Schema.Class("SandboxResourceUse")({
|
|
117
|
+
wallTime: FiniteNonNegativeDuration,
|
|
118
|
+
stdoutBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES)),
|
|
119
|
+
stderrBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES)),
|
|
120
|
+
cpuMillis: Schema.optionalKey(Schema.Natural),
|
|
121
|
+
memoryBytes: Schema.optionalKey(Schema.Natural)
|
|
122
|
+
}) {};
|
|
123
|
+
const SandboxEventBase = {
|
|
124
|
+
eventVersion: Schema.Literal(1),
|
|
125
|
+
implementation: SandboxImplementation
|
|
126
|
+
};
|
|
127
|
+
/** Signals that the implementation has accepted the request and started its workload. */
|
|
128
|
+
var SandboxStarted = class extends Schema.TaggedClass()("SandboxStarted", {
|
|
129
|
+
...SandboxEventBase,
|
|
130
|
+
runtime: SandboxRuntime
|
|
131
|
+
}) {};
|
|
132
|
+
/** A bounded text fragment from stdout or stderr. Sandbox output is sensitive by default. */
|
|
133
|
+
var SandboxOutput = class extends Schema.TaggedClass()("SandboxOutput", {
|
|
134
|
+
...SandboxEventBase,
|
|
135
|
+
stream: Schema.Literals(["stdout", "stderr"]),
|
|
136
|
+
text: BoundedOutputText,
|
|
137
|
+
bytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES))
|
|
138
|
+
}) {};
|
|
139
|
+
/** The terminal process status and observed bounded resource usage. */
|
|
140
|
+
var SandboxExited = class extends Schema.TaggedClass()("SandboxExited", {
|
|
141
|
+
...SandboxEventBase,
|
|
142
|
+
exitCode: Schema.Int,
|
|
143
|
+
resourceUse: SandboxResourceUse,
|
|
144
|
+
artifacts: Schema.Array(SandboxArtifact).check(Schema.isMaxLength(MAX_ARTIFACT_RULES))
|
|
145
|
+
}) {};
|
|
146
|
+
/** Versioned execution event stream. */
|
|
147
|
+
const SandboxEvent = Schema.Union([
|
|
148
|
+
SandboxStarted,
|
|
149
|
+
SandboxOutput,
|
|
150
|
+
SandboxExited
|
|
151
|
+
]);
|
|
152
|
+
/** The runtime could not start the requested process. */
|
|
153
|
+
var SandboxSpawnError = class extends Schema.TaggedError()("SandboxSpawnError", {
|
|
154
|
+
implementation: SandboxImplementation,
|
|
155
|
+
command: BoundedPath,
|
|
156
|
+
message: BoundedDiagnostic,
|
|
157
|
+
cause: Schema.optionalKey(Schema.Defect())
|
|
158
|
+
}) {};
|
|
159
|
+
/** The process ended unsuccessfully after starting. */
|
|
160
|
+
var SandboxExitError = class extends Schema.TaggedError()("SandboxExitError", {
|
|
161
|
+
implementation: SandboxImplementation,
|
|
162
|
+
exitCode: Schema.Int,
|
|
163
|
+
message: BoundedDiagnostic,
|
|
164
|
+
cause: Schema.optionalKey(Schema.Defect())
|
|
165
|
+
}) {};
|
|
166
|
+
/** The wall-clock execution limit elapsed and the owned process was interrupted. */
|
|
167
|
+
var SandboxTimeoutError = class extends Schema.TaggedError()("SandboxTimeoutError", {
|
|
168
|
+
implementation: SandboxImplementation,
|
|
169
|
+
maxWallTime: FinitePositiveDuration
|
|
170
|
+
}) {};
|
|
171
|
+
/** A stdout or stderr stream exceeded its configured bounded-output limit. */
|
|
172
|
+
var SandboxOutputLimitError = class extends Schema.TaggedError()("SandboxOutputLimitError", {
|
|
173
|
+
implementation: SandboxImplementation,
|
|
174
|
+
stream: Schema.Literals(["stdout", "stderr"]),
|
|
175
|
+
limit: PositiveInt,
|
|
176
|
+
observed: PositiveInt
|
|
177
|
+
}) {};
|
|
178
|
+
/** The selected implementation cannot honestly enforce one requested security or resource feature. */
|
|
179
|
+
var SandboxUnsupportedRequestError = class extends Schema.TaggedError()("SandboxUnsupportedRequestError", {
|
|
180
|
+
implementation: SandboxImplementation,
|
|
181
|
+
feature: Schema.Literals([
|
|
182
|
+
"runtime",
|
|
183
|
+
"mounts",
|
|
184
|
+
"network",
|
|
185
|
+
"cpu-limit",
|
|
186
|
+
"memory-limit",
|
|
187
|
+
"secret-handles",
|
|
188
|
+
"artifacts"
|
|
189
|
+
]),
|
|
190
|
+
message: BoundedDiagnostic
|
|
191
|
+
}) {};
|
|
192
|
+
/** Expected sandbox execution failures. Interruption remains an Effect interruption, never a fabricated exit. */
|
|
193
|
+
const SandboxError = Schema.Union([
|
|
194
|
+
SandboxSpawnError,
|
|
195
|
+
SandboxExitError,
|
|
196
|
+
SandboxTimeoutError,
|
|
197
|
+
SandboxOutputLimitError,
|
|
198
|
+
SandboxUnsupportedRequestError
|
|
199
|
+
]);
|
|
200
|
+
/**
|
|
201
|
+
* Scoped command/code execution capability. Implementations must identify their isolation posture
|
|
202
|
+
* in every emitted event; an `unisolated` implementation is never a security sandbox.
|
|
203
|
+
*/
|
|
204
|
+
var Sandbox = class extends Context.Service()("@effect-agent/sandbox/Sandbox") {};
|
|
205
|
+
//#endregion
|
|
206
|
+
export { NetworkAllowlist, NetworkDisabled, SANDBOX_DIAGNOSTIC_MAX_LENGTH, Sandbox, SandboxArtifact, SandboxArtifactRule, SandboxEnvironment, SandboxError, SandboxEvent, SandboxExitError, SandboxExited, SandboxImplementation, SandboxLimits, SandboxMount, SandboxNetworkPolicy, SandboxOutput, SandboxOutputLimitError, SandboxRequest, SandboxResourceUse, SandboxRuntime, SandboxSecretHandle, SandboxSpawnError, SandboxStarted, SandboxTimeoutError, SandboxUnsupportedRequestError, Sandbox_exports as t };
|
|
207
|
+
|
|
208
|
+
//# sourceMappingURL=Sandbox.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sandbox.mjs","names":[],"sources":["../../src/sandbox/Sandbox.ts"],"sourcesContent":["import { Context, Duration, Schema, type Stream } from \"effect\";\n\nconst BoundedName = Schema.NonEmptyString.check(Schema.isMaxLength(256));\nconst BoundedPath = Schema.NonEmptyString.check(Schema.isMaxLength(4 * 1024));\nconst BoundedArgument = Schema.String.check(Schema.isMaxLength(32 * 1024));\nconst MAX_OUTPUT_BYTES = 16 * 1024 * 1024;\nconst MAX_ARTIFACT_RULES = 64;\nconst BoundedOutputText = Schema.String.check(Schema.isMaxLength(MAX_OUTPUT_BYTES));\n\nexport const SANDBOX_DIAGNOSTIC_MAX_LENGTH = 8 * 1024;\nconst BoundedDiagnostic = Schema.String.check(Schema.isMaxLength(SANDBOX_DIAGNOSTIC_MAX_LENGTH));\nconst PositiveInt = Schema.Int.check(Schema.isGreaterThan(0));\nconst PositiveNumber = Schema.Finite.check(Schema.isGreaterThan(0));\nconst MaxOutputBytes = PositiveInt.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES));\nconst BoundedArguments = Schema.Array(BoundedArgument).check(Schema.isMaxLength(256));\nconst BoundedEnvironmentNames = Schema.Array(BoundedName).check(Schema.isMaxLength(128));\n\nconst FinitePositiveDuration = Schema.Duration.pipe(\n Schema.refine(\n (duration): duration is Duration.Duration =>\n Duration.isFinite(duration) && Duration.isPositive(duration),\n { expected: \"a finite positive duration\" },\n ),\n);\n\nconst FiniteNonNegativeDuration = Schema.Duration.pipe(\n Schema.refine(\n (duration): duration is Duration.Duration =>\n Duration.isFinite(duration) && !Duration.isNegative(duration),\n { expected: \"a finite non-negative duration\" },\n ),\n);\n\n/** A requested runtime image or executable environment. */\nexport class SandboxRuntime extends Schema.Class<SandboxRuntime>(\"SandboxRuntime\")({\n kind: Schema.Literals([\"container\", \"microvm\", \"wasm\", \"unisolated-process\"]),\n identity: BoundedName,\n}) {}\n\n/** The implementation and its isolation posture that executed a request. */\nexport class SandboxImplementation extends Schema.Class<SandboxImplementation>(\n \"SandboxImplementation\",\n)({\n isolation: Schema.Literals([\"isolated\", \"unisolated\"]),\n identity: BoundedName,\n}) {}\n\n/** A host path made available to the requested runtime. */\nexport class SandboxMount extends Schema.Class<SandboxMount>(\"SandboxMount\")({\n source: BoundedPath,\n target: BoundedPath,\n access: Schema.Literals([\"read-only\", \"read-write\"]),\n}) {}\n\n/** Explicitly denies all workload network access. */\nexport class NetworkDisabled extends Schema.TaggedClass<NetworkDisabled>()(\"NetworkDisabled\", {}) {}\n\n/** Explicitly permits connections only to the named destination and port allowlists. */\nexport class NetworkAllowlist extends Schema.TaggedClass<NetworkAllowlist>()(\"NetworkAllowlist\", {\n domains: Schema.Array(BoundedName).check(Schema.isMaxLength(256)),\n ports: Schema.Array(PositiveInt.check(Schema.isLessThanOrEqualTo(65_535))).check(\n Schema.isMaxLength(256),\n ),\n}) {}\n\n/** Network access policy supplied to a sandbox implementation. */\nexport const SandboxNetworkPolicy = Schema.Union([NetworkDisabled, NetworkAllowlist]);\nexport type SandboxNetworkPolicy = typeof SandboxNetworkPolicy.Type;\n\n/** Names of ambient variables that may be copied into the workload environment. */\nexport class SandboxEnvironment extends Schema.Class<SandboxEnvironment>(\"SandboxEnvironment\")({\n allow: BoundedEnvironmentNames,\n}) {}\n\n/** Limits that a sandbox implementation must either enforce or reject. */\nexport class SandboxLimits extends Schema.Class<SandboxLimits>(\"SandboxLimits\")({\n cpuCores: Schema.optionalKey(PositiveNumber.check(Schema.isLessThanOrEqualTo(1_024))),\n memoryBytes: Schema.optionalKey(\n PositiveInt.check(Schema.isLessThanOrEqualTo(1024 * 1024 * 1024 * 1024)),\n ),\n maxOutputBytes: MaxOutputBytes,\n maxWallTime: FinitePositiveDuration,\n}) {}\n\n/** A secret reference; raw secret values are never part of a sandbox request. */\nexport class SandboxSecretHandle extends Schema.Class<SandboxSecretHandle>(\"SandboxSecretHandle\")({\n id: BoundedName,\n purpose: Schema.NonEmptyString.check(Schema.isMaxLength(2 * 1024)),\n}) {}\n\n/** Rules for copying selected workload output out of an isolated runtime. */\nexport class SandboxArtifactRule extends Schema.Class<SandboxArtifactRule>(\"SandboxArtifactRule\")({\n path: BoundedPath,\n maxBytes: MaxOutputBytes,\n}) {}\n\n/** Metadata for an artifact that a sandbox implementation released after applying its rules. */\nexport class SandboxArtifact extends Schema.Class<SandboxArtifact>(\"SandboxArtifact\")({\n path: BoundedPath,\n bytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES)),\n digest: BoundedName,\n mediaType: Schema.optionalKey(BoundedName),\n}) {}\n\n/** Schema-first command execution request. Command and arguments are intentionally separate. */\nexport class SandboxRequest extends Schema.Class<SandboxRequest>(\"SandboxRequest\")({\n runtime: SandboxRuntime,\n command: BoundedPath,\n args: BoundedArguments,\n cwd: BoundedPath,\n environment: SandboxEnvironment,\n mounts: Schema.Array(SandboxMount).check(Schema.isMaxLength(64)),\n network: SandboxNetworkPolicy,\n limits: SandboxLimits,\n secretHandles: Schema.Array(SandboxSecretHandle).check(Schema.isMaxLength(64)),\n artifactRules: Schema.Array(SandboxArtifactRule).check(Schema.isMaxLength(MAX_ARTIFACT_RULES)),\n}) {}\n\n/** Accounting that a sandbox implementation was able to observe for one execution. */\nexport class SandboxResourceUse extends Schema.Class<SandboxResourceUse>(\"SandboxResourceUse\")({\n wallTime: FiniteNonNegativeDuration,\n stdoutBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES)),\n stderrBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES)),\n cpuMillis: Schema.optionalKey(Schema.Natural),\n memoryBytes: Schema.optionalKey(Schema.Natural),\n}) {}\n\nconst SandboxEventBase = {\n eventVersion: Schema.Literal(1),\n implementation: SandboxImplementation,\n};\n\n/** Signals that the implementation has accepted the request and started its workload. */\nexport class SandboxStarted extends Schema.TaggedClass<SandboxStarted>()(\"SandboxStarted\", {\n ...SandboxEventBase,\n runtime: SandboxRuntime,\n}) {}\n\n/** A bounded text fragment from stdout or stderr. Sandbox output is sensitive by default. */\nexport class SandboxOutput extends Schema.TaggedClass<SandboxOutput>()(\"SandboxOutput\", {\n ...SandboxEventBase,\n stream: Schema.Literals([\"stdout\", \"stderr\"]),\n text: BoundedOutputText,\n bytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_OUTPUT_BYTES)),\n}) {}\n\n/** The terminal process status and observed bounded resource usage. */\nexport class SandboxExited extends Schema.TaggedClass<SandboxExited>()(\"SandboxExited\", {\n ...SandboxEventBase,\n exitCode: Schema.Int,\n resourceUse: SandboxResourceUse,\n artifacts: Schema.Array(SandboxArtifact).check(Schema.isMaxLength(MAX_ARTIFACT_RULES)),\n}) {}\n\n/** Versioned execution event stream. */\nexport const SandboxEvent = Schema.Union([SandboxStarted, SandboxOutput, SandboxExited]);\nexport type SandboxEvent = typeof SandboxEvent.Type;\n\n/** The runtime could not start the requested process. */\nexport class SandboxSpawnError extends Schema.TaggedError<SandboxSpawnError>()(\n \"SandboxSpawnError\",\n {\n implementation: SandboxImplementation,\n command: BoundedPath,\n message: BoundedDiagnostic,\n cause: Schema.optionalKey(Schema.Defect()),\n },\n) {}\n\n/** The process ended unsuccessfully after starting. */\nexport class SandboxExitError extends Schema.TaggedError<SandboxExitError>()(\"SandboxExitError\", {\n implementation: SandboxImplementation,\n exitCode: Schema.Int,\n message: BoundedDiagnostic,\n cause: Schema.optionalKey(Schema.Defect()),\n}) {}\n\n/** The wall-clock execution limit elapsed and the owned process was interrupted. */\nexport class SandboxTimeoutError extends Schema.TaggedError<SandboxTimeoutError>()(\n \"SandboxTimeoutError\",\n {\n implementation: SandboxImplementation,\n maxWallTime: FinitePositiveDuration,\n },\n) {}\n\n/** A stdout or stderr stream exceeded its configured bounded-output limit. */\nexport class SandboxOutputLimitError extends Schema.TaggedError<SandboxOutputLimitError>()(\n \"SandboxOutputLimitError\",\n {\n implementation: SandboxImplementation,\n stream: Schema.Literals([\"stdout\", \"stderr\"]),\n limit: PositiveInt,\n observed: PositiveInt,\n },\n) {}\n\n/** The selected implementation cannot honestly enforce one requested security or resource feature. */\nexport class SandboxUnsupportedRequestError extends Schema.TaggedError<SandboxUnsupportedRequestError>()(\n \"SandboxUnsupportedRequestError\",\n {\n implementation: SandboxImplementation,\n feature: Schema.Literals([\n \"runtime\",\n \"mounts\",\n \"network\",\n \"cpu-limit\",\n \"memory-limit\",\n \"secret-handles\",\n \"artifacts\",\n ]),\n message: BoundedDiagnostic,\n },\n) {}\n\n/** Expected sandbox execution failures. Interruption remains an Effect interruption, never a fabricated exit. */\nexport const SandboxError = Schema.Union([\n SandboxSpawnError,\n SandboxExitError,\n SandboxTimeoutError,\n SandboxOutputLimitError,\n SandboxUnsupportedRequestError,\n]);\n\nexport type SandboxError = typeof SandboxError.Type;\n\n/**\n * Scoped command/code execution capability. Implementations must identify their isolation posture\n * in every emitted event; an `unisolated` implementation is never a security sandbox.\n */\nexport class Sandbox extends Context.Service<\n Sandbox,\n {\n readonly execute: (request: SandboxRequest) => Stream.Stream<SandboxEvent, SandboxError>;\n }\n>()(\"@effect-agent/sandbox/Sandbox\") {}\n\n/** Type helper for implementations that preserve the public Sandbox service contract. */\nexport type SandboxExecute = (\n request: SandboxRequest,\n) => Stream.Stream<SandboxEvent, SandboxError, never>;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Encoding } from "effect";
|
|
2
|
+
//#region src/capabilities/internal/utf8.ts
|
|
3
|
+
/** Encode through Effect without requiring browser or Node ambient types in consumers. */
|
|
4
|
+
const utf8Bytes = (value) => {
|
|
5
|
+
const hex = Encoding.encodeHex(value);
|
|
6
|
+
return Uint8Array.from({ length: hex.length / 2 }, (_, index) => Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16));
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { utf8Bytes as t };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=utf8-BYfhEkcj.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utf8-BYfhEkcj.mjs","names":[],"sources":["../src/capabilities/internal/utf8.ts"],"sourcesContent":["import { Encoding } from \"effect\";\n\n/** Encode through Effect without requiring browser or Node ambient types in consumers. */\nexport const utf8Bytes = (value: string): Uint8Array => {\n const hex = Encoding.encodeHex(value);\n\n return Uint8Array.from({ length: hex.length / 2 }, (_, index) =>\n Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16),\n );\n};\n"],"mappings":";;;AAGA,MAAa,aAAa,UAA8B;CACtD,MAAM,MAAM,SAAS,UAAU,KAAK;CAEpC,OAAO,WAAW,KAAK,EAAE,QAAQ,IAAI,SAAS,EAAE,IAAI,GAAG,UACrD,OAAO,SAAS,IAAI,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CACzD;AACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/core/internal/utf8.ts
|
|
2
|
+
/** UTF-8 width, including the replacement encoding used for lone UTF-16 surrogates. */
|
|
3
|
+
const codePointUtf8Length = (codePoint) => {
|
|
4
|
+
if (codePoint < 128) return 1;
|
|
5
|
+
if (codePoint < 2048) return 2;
|
|
6
|
+
if (codePoint < 65536) return 3;
|
|
7
|
+
return 4;
|
|
8
|
+
};
|
|
9
|
+
/** Count encoded bytes without allocating an encoded copy of the text. */
|
|
10
|
+
const utf8ByteLength = (value) => {
|
|
11
|
+
let bytes = 0;
|
|
12
|
+
let index = 0;
|
|
13
|
+
while (index < value.length) {
|
|
14
|
+
const codePoint = value.codePointAt(index) ?? 0;
|
|
15
|
+
bytes += codePointUtf8Length(codePoint);
|
|
16
|
+
index += codePoint > 65535 ? 2 : 1;
|
|
17
|
+
}
|
|
18
|
+
return bytes;
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { utf8ByteLength as n, codePointUtf8Length as t };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=utf8-DchGZRBd.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utf8-DchGZRBd.mjs","names":[],"sources":["../src/core/internal/utf8.ts"],"sourcesContent":["/** UTF-8 width, including the replacement encoding used for lone UTF-16 surrogates. */\nexport const codePointUtf8Length = (codePoint: number): number => {\n if (codePoint < 0x80) return 1;\n if (codePoint < 0x800) return 2;\n if (codePoint < 0x10000) return 3;\n\n return 4;\n};\n\n/** Count encoded bytes without allocating an encoded copy of the text. */\nexport const utf8ByteLength = (value: string): number => {\n let bytes = 0;\n let index = 0;\n\n while (index < value.length) {\n const codePoint = value.codePointAt(index) ?? 0;\n\n bytes += codePointUtf8Length(codePoint);\n index += codePoint > 0xffff ? 2 : 1;\n }\n\n return bytes;\n};\n"],"mappings":";;AACA,MAAa,uBAAuB,cAA8B;CAChE,IAAI,YAAY,KAAM,OAAO;CAC7B,IAAI,YAAY,MAAO,OAAO;CAC9B,IAAI,YAAY,OAAS,OAAO;CAEhC,OAAO;AACT;;AAGA,MAAa,kBAAkB,UAA0B;CACvD,IAAI,QAAQ;CACZ,IAAI,QAAQ;CAEZ,OAAO,QAAQ,MAAM,QAAQ;EAC3B,MAAM,YAAY,MAAM,YAAY,KAAK,KAAK;EAE9C,SAAS,oBAAoB,SAAS;EACtC,SAAS,YAAY,QAAS,IAAI;CACpC;CAEA,OAAO;AACT"}
|