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,210 @@
|
|
|
1
|
+
import type { Crypto } from "effect";
|
|
2
|
+
import { Cause, Effect, Exit, Option, Schema } from "effect";
|
|
3
|
+
|
|
4
|
+
import { DurableRuntimeFailpointLocation } from "./DurableFailpoint.ts";
|
|
5
|
+
import { inspectForeignDiagnostic, safeUnknownString } from "./internal/foreign-diagnostic.ts";
|
|
6
|
+
import type { SubmissionLedger } from "./SubmissionLedger.ts";
|
|
7
|
+
import { LedgerCapabilities } from "./SubmissionLedger.ts";
|
|
8
|
+
import { submissionLedgerConformanceCases } from "./SubmissionLedgerConformance.ts";
|
|
9
|
+
import type { ThreadStore } from "./ThreadStore.ts";
|
|
10
|
+
import { threadStoreConformanceCases } from "./ThreadStoreConformance.ts";
|
|
11
|
+
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Certification report vocabulary (WP2, plan §1)
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
|
|
16
|
+
const BoundedCertificationDetail = Schema.String.check(Schema.isMaxLength(4_096));
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Adapter self-description carried by a certificate. `durability` is read from the candidate
|
|
20
|
+
* ledger's `capabilities` — the adapter's honest claim (persistence.md), never inferred by the
|
|
21
|
+
* certification runner.
|
|
22
|
+
*/
|
|
23
|
+
export class CertifiedAdapterIdentity extends Schema.Class<CertifiedAdapterIdentity>(
|
|
24
|
+
"@effect-agent/thread/CertifiedAdapterIdentity",
|
|
25
|
+
)({
|
|
26
|
+
/** Workspace/package name of the adapter pair under certification. */
|
|
27
|
+
name: Schema.NonEmptyString.check(Schema.isMaxLength(256)),
|
|
28
|
+
version: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(256))),
|
|
29
|
+
durability: LedgerCapabilities.fields.durability,
|
|
30
|
+
}) {}
|
|
31
|
+
|
|
32
|
+
/** Which shared suite one Tier-1 (or lever-driven Tier-3) case belongs to. */
|
|
33
|
+
export const CertificationSuite = Schema.Literals([
|
|
34
|
+
"submission-ledger",
|
|
35
|
+
"thread-store",
|
|
36
|
+
"real-loss",
|
|
37
|
+
]);
|
|
38
|
+
|
|
39
|
+
export type CertificationSuite = typeof CertificationSuite.Type;
|
|
40
|
+
|
|
41
|
+
/** One executed certification case: a conformance contract case or a Tier-3 lever row. */
|
|
42
|
+
export class CertificationCaseResult extends Schema.Class<CertificationCaseResult>(
|
|
43
|
+
"@effect-agent/thread/CertificationCaseResult",
|
|
44
|
+
)({
|
|
45
|
+
suite: CertificationSuite,
|
|
46
|
+
name: Schema.NonEmptyString.check(Schema.isMaxLength(512)),
|
|
47
|
+
status: Schema.Literals(["passed", "failed"]),
|
|
48
|
+
detail: Schema.optionalKey(BoundedCertificationDetail),
|
|
49
|
+
}) {}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The six Tier-2 scenario shapes: each reached coordinator fault boundary is armed once
|
|
53
|
+
* per shape. Locations outside a shape's path share its verified clean run.
|
|
54
|
+
*/
|
|
55
|
+
export const CertificationScenario = Schema.Literals([
|
|
56
|
+
"plain",
|
|
57
|
+
"uncertain-tool",
|
|
58
|
+
"durable-steps",
|
|
59
|
+
"approval",
|
|
60
|
+
"join",
|
|
61
|
+
"delegation",
|
|
62
|
+
]);
|
|
63
|
+
|
|
64
|
+
export type CertificationScenario = typeof CertificationScenario.Type;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Outcome of one Tier-2 sweep cell:
|
|
68
|
+
*
|
|
69
|
+
* - `converged` — the armed fault fired once, recovery classified the state, and the re-drive
|
|
70
|
+
* converged to verified invariants;
|
|
71
|
+
* - `not-triggered` — the location was not reached with that fault armed, or was absent from
|
|
72
|
+
* the scenario's verified clean path (shared across such locations). Never fault coverage;
|
|
73
|
+
* - `failed` — anything else.
|
|
74
|
+
*/
|
|
75
|
+
export const CertificationSweepStatus = Schema.Literals(["converged", "not-triggered", "failed"]);
|
|
76
|
+
export type CertificationSweepStatus = typeof CertificationSweepStatus.Type;
|
|
77
|
+
|
|
78
|
+
/** One Tier-2 scenario/location result, including locations outside the verified path. */
|
|
79
|
+
export class CertificationSweepResult extends Schema.Class<CertificationSweepResult>(
|
|
80
|
+
"@effect-agent/thread/CertificationSweepResult",
|
|
81
|
+
)({
|
|
82
|
+
scenario: CertificationScenario,
|
|
83
|
+
location: DurableRuntimeFailpointLocation,
|
|
84
|
+
/** The armed fault actually fired (one-shot) somewhere in the cell's drive or re-drive. */
|
|
85
|
+
failpointFired: Schema.Boolean,
|
|
86
|
+
status: CertificationSweepStatus,
|
|
87
|
+
/**
|
|
88
|
+
* Every lane's digest chain recomputed from `EMPTY_TAIL_DIGEST` and matched the exported
|
|
89
|
+
* tail — fully discharged here because the runner captures per-batch producer identity at
|
|
90
|
+
* append time (the port-only admin `verify` reports this check `skipped` instead).
|
|
91
|
+
* Unreached locations may share the scenario's clean-run verification.
|
|
92
|
+
*/
|
|
93
|
+
digestChainVerified: Schema.Boolean,
|
|
94
|
+
detail: Schema.optionalKey(BoundedCertificationDetail),
|
|
95
|
+
}) {}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* How the real-loss tier was discharged. Tier 3 is never silently claimed: an adapter either
|
|
99
|
+
* exercised a real loss lever in this run (`exercised`), cites committed real-loss evidence
|
|
100
|
+
* (`recorded-evidence`), honestly records that nothing exercised it (`not-exercised`), or is a
|
|
101
|
+
* non-durable reference adapter with no real loss to exercise (`not-applicable`).
|
|
102
|
+
*/
|
|
103
|
+
export const CertificationTierThreeStatus = Schema.Literals([
|
|
104
|
+
"exercised",
|
|
105
|
+
"recorded-evidence",
|
|
106
|
+
"not-exercised",
|
|
107
|
+
"not-applicable",
|
|
108
|
+
]);
|
|
109
|
+
|
|
110
|
+
export type CertificationTierThreeStatus = typeof CertificationTierThreeStatus.Type;
|
|
111
|
+
|
|
112
|
+
/** The Tier-3 (real loss lever) section of a certificate. */
|
|
113
|
+
export class CertificationTierThreeReport extends Schema.Class<CertificationTierThreeReport>(
|
|
114
|
+
"@effect-agent/thread/CertificationTierThreeReport",
|
|
115
|
+
)({
|
|
116
|
+
status: CertificationTierThreeStatus,
|
|
117
|
+
/** Cited real-loss suites. The runner does not execute or verify these references. */
|
|
118
|
+
evidence: Schema.Array(BoundedCertificationDetail),
|
|
119
|
+
/** Rows executed by a supplied crash lever in THIS run (`suite: "real-loss"`). */
|
|
120
|
+
cases: Schema.Array(CertificationCaseResult),
|
|
121
|
+
detail: Schema.optionalKey(BoundedCertificationDetail),
|
|
122
|
+
}) {}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* The Schema-encoded certification report (plan §1): Tier 1 = the two shared port contract
|
|
126
|
+
* suites verbatim; Tier 2 = the coordinator failpoint convergence sweep; Tier 3 = the real
|
|
127
|
+
* loss lever record. `ok` is true exactly when every EXECUTED check passed — honest scope
|
|
128
|
+
* statements (`not-triggered`, `recorded-evidence`, `not-exercised`, `not-applicable`) never
|
|
129
|
+
* count as failures and never count as silent coverage. `fullyCertified` additionally requires
|
|
130
|
+
* a durable adapter and passing real-loss cases executed in this run. Citations alone do not
|
|
131
|
+
* certify recovery. A non-durable adapter can pass conformance but is never fully certified.
|
|
132
|
+
* The semantic assertions live in the runner tests.
|
|
133
|
+
*/
|
|
134
|
+
export class CertificationReport extends Schema.Class<CertificationReport>(
|
|
135
|
+
"@effect-agent/thread/CertificationReport",
|
|
136
|
+
)({
|
|
137
|
+
format: Schema.Literal("effect-agent/certification@2"),
|
|
138
|
+
adapter: CertifiedAdapterIdentity,
|
|
139
|
+
generatedAt: Schema.DateTimeUtcFromString,
|
|
140
|
+
tier1: Schema.Array(CertificationCaseResult),
|
|
141
|
+
tier2: Schema.Array(CertificationSweepResult),
|
|
142
|
+
tier3: CertificationTierThreeReport,
|
|
143
|
+
ok: Schema.Boolean,
|
|
144
|
+
fullyCertified: Schema.Boolean,
|
|
145
|
+
}) {}
|
|
146
|
+
|
|
147
|
+
/** Bounded operator-readable rendering of one failure Cause for a certification detail. */
|
|
148
|
+
const causeDetail = (cause: Cause.Cause<unknown>): string => {
|
|
149
|
+
const failure = Cause.findErrorOption(cause);
|
|
150
|
+
|
|
151
|
+
if (Option.isSome(failure)) {
|
|
152
|
+
const diagnostic = inspectForeignDiagnostic(failure.value);
|
|
153
|
+
|
|
154
|
+
if (diagnostic.tag !== undefined || diagnostic.message !== undefined) {
|
|
155
|
+
const tag = diagnostic.tag ?? "Error";
|
|
156
|
+
|
|
157
|
+
return `${tag}${diagnostic.message === undefined ? "" : `: ${diagnostic.message}`}`.slice(
|
|
158
|
+
0,
|
|
159
|
+
4_096,
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return safeUnknownString(failure.value, "Unknown foreign failure").slice(0, 4_096);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return `defect: ${safeUnknownString(cause, "Unknown defect")}`.slice(0, 4_096);
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const caseResult = <A, E>(
|
|
170
|
+
suite: CertificationSuite,
|
|
171
|
+
name: string,
|
|
172
|
+
exit: Exit.Exit<A, E>,
|
|
173
|
+
): CertificationCaseResult =>
|
|
174
|
+
Exit.isSuccess(exit)
|
|
175
|
+
? CertificationCaseResult.make({ suite, name, status: "passed" })
|
|
176
|
+
: CertificationCaseResult.make({
|
|
177
|
+
suite,
|
|
178
|
+
name,
|
|
179
|
+
status: "failed",
|
|
180
|
+
detail: causeDetail(exit.cause),
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Tier 1 — port contract (plan §1): run BOTH shared conformance case arrays verbatim against
|
|
185
|
+
* the provided candidate adapters and fold every case into a typed result. Case failures are
|
|
186
|
+
* captured per-case (never short-circuiting the sweep), so a certificate always reports the
|
|
187
|
+
* complete contract surface. Requires the candidate `SubmissionLedger` and `ThreadStore`
|
|
188
|
+
* plus `Crypto.Crypto`, and must run under a TestClock (the ledger cases drive lease expiry
|
|
189
|
+
* through virtual time).
|
|
190
|
+
*/
|
|
191
|
+
export const certifyPorts = Effect.fn("Thread.certifyPorts")(function* (): Effect.fn.Return<
|
|
192
|
+
ReadonlyArray<CertificationCaseResult>,
|
|
193
|
+
never,
|
|
194
|
+
SubmissionLedger | ThreadStore | Crypto.Crypto
|
|
195
|
+
> {
|
|
196
|
+
const results: Array<CertificationCaseResult> = [];
|
|
197
|
+
|
|
198
|
+
for (const contractCase of submissionLedgerConformanceCases) {
|
|
199
|
+
const exit = yield* Effect.exit(contractCase.run);
|
|
200
|
+
|
|
201
|
+
results.push(caseResult("submission-ledger", contractCase.name, exit));
|
|
202
|
+
}
|
|
203
|
+
for (const contractCase of threadStoreConformanceCases) {
|
|
204
|
+
const exit = yield* Effect.exit(contractCase.run);
|
|
205
|
+
|
|
206
|
+
results.push(caseResult("thread-store", contractCase.name, exit));
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return results;
|
|
210
|
+
});
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { Clock, Effect, Schema, Stream, type Crypto, type Scope } from "effect";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
ActivityClaim,
|
|
5
|
+
ActivityClaimRequest,
|
|
6
|
+
ActivityProcessorKey,
|
|
7
|
+
ActivityProcessorStore,
|
|
8
|
+
PreparedActivity,
|
|
9
|
+
type ActivityStoreFailure,
|
|
10
|
+
} from "./ActivityStore.ts";
|
|
11
|
+
import { digestJson, type DigestError } from "./Digest.ts";
|
|
12
|
+
import {
|
|
13
|
+
CanonicalRecordEnvelope,
|
|
14
|
+
CanonicalSequence,
|
|
15
|
+
PersistedJson,
|
|
16
|
+
RecordEnvelope,
|
|
17
|
+
} from "./Records.ts";
|
|
18
|
+
import {
|
|
19
|
+
ThreadRead,
|
|
20
|
+
ThreadStore,
|
|
21
|
+
ThreadTail,
|
|
22
|
+
ThreadTailRequest,
|
|
23
|
+
type ThreadNotMaterialized,
|
|
24
|
+
type ThreadStoreError,
|
|
25
|
+
} from "./ThreadStore.ts";
|
|
26
|
+
|
|
27
|
+
export class ActivityPassLimits extends Schema.Class<ActivityPassLimits>(
|
|
28
|
+
"@effect-agent/thread/ActivityPassLimits",
|
|
29
|
+
)({
|
|
30
|
+
maxRecords: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 4_096 })),
|
|
31
|
+
pageSize: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 128 })),
|
|
32
|
+
timeoutMillis: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 300_000 })),
|
|
33
|
+
leaseMillis: ActivityClaimRequest.fields.leaseMillis,
|
|
34
|
+
}) {}
|
|
35
|
+
|
|
36
|
+
export class ActivityProcessingError extends Schema.TaggedError<ActivityProcessingError>()(
|
|
37
|
+
"ActivityProcessingError",
|
|
38
|
+
{
|
|
39
|
+
reason: Schema.Literals(["invalid-input", "noncontiguous", "timeout"]),
|
|
40
|
+
message: Schema.String.check(Schema.isMaxLength(1_024)),
|
|
41
|
+
},
|
|
42
|
+
) {}
|
|
43
|
+
|
|
44
|
+
export class ActivityPassResult extends Schema.Class<ActivityPassResult>(
|
|
45
|
+
"@effect-agent/thread/ActivityPassResult",
|
|
46
|
+
)({
|
|
47
|
+
key: ActivityProcessorKey,
|
|
48
|
+
capturedTail: CanonicalSequence,
|
|
49
|
+
throughSequence: CanonicalSequence,
|
|
50
|
+
processed: Schema.Natural,
|
|
51
|
+
pendingRecords: Schema.Natural,
|
|
52
|
+
startedAt: Schema.Finite,
|
|
53
|
+
finishedAt: Schema.Finite,
|
|
54
|
+
}) {}
|
|
55
|
+
|
|
56
|
+
export interface CommittedActivityProcessor<E = never, R = never, EApply = never, RApply = never> {
|
|
57
|
+
readonly key: ActivityProcessorKey;
|
|
58
|
+
/** Unique to this worker lifetime; it is not canonical Thread ownership. */
|
|
59
|
+
readonly owner: string;
|
|
60
|
+
readonly limits: ActivityPassLimits;
|
|
61
|
+
/** Select eligibility and encode an application Schema; null can represent no output. */
|
|
62
|
+
readonly extract: (record: CanonicalRecordEnvelope) => Effect.Effect<PersistedJson, E, R>;
|
|
63
|
+
/**
|
|
64
|
+
* Must durably reconcile workId before returning, using atomic idempotency and conditional
|
|
65
|
+
* writes. This may run again after any lost acknowledgement. A stale invocation can finish
|
|
66
|
+
* only the already pinned output; it must not overwrite a later correction or withdrawal.
|
|
67
|
+
* Retain reconciliation evidence for the lifetime of pending work, including any supported
|
|
68
|
+
* backup/restore window. Returning before durable application would permit skipped output.
|
|
69
|
+
*/
|
|
70
|
+
readonly apply: (work: PreparedActivity) => Effect.Effect<void, EApply, RApply>;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const invalid = (message: string) =>
|
|
74
|
+
ActivityProcessingError.make({ reason: "invalid-input", message });
|
|
75
|
+
|
|
76
|
+
const contiguous = () =>
|
|
77
|
+
ActivityProcessingError.make({
|
|
78
|
+
reason: "noncontiguous",
|
|
79
|
+
message: "Committed activity does not match its captured Thread prefix or pinned record",
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
/** Stable work identity independent of worker claims, retry count, extraction, and clocks. */
|
|
83
|
+
export const activityWorkId = Effect.fn("activityWorkId")(function* (
|
|
84
|
+
key: ActivityProcessorKey,
|
|
85
|
+
sequence: CanonicalSequence,
|
|
86
|
+
) {
|
|
87
|
+
return yield* digestJson([
|
|
88
|
+
"effect-agent/activity@1",
|
|
89
|
+
key.processorId,
|
|
90
|
+
key.processorVersion,
|
|
91
|
+
key.threadId,
|
|
92
|
+
sequence,
|
|
93
|
+
]);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Process one bounded committed prefix of one application-selected Thread. Nothing runs until
|
|
98
|
+
* invoked, and no daemon, global Thread directory, admission ledger, or engine checkpoint is
|
|
99
|
+
* involved. PersistentHistory makes a successful Run's batch visible together; durable Runs
|
|
100
|
+
* expose incremental committed records. The application decides what each record means.
|
|
101
|
+
*
|
|
102
|
+
* A durable pending output wins over a new extraction after restart. Apply finishes before
|
|
103
|
+
* progress advances, so separate output stores require durable idempotency. This does not
|
|
104
|
+
* promise exactly-once external side effects. Each callback owns a Scope; the finite pass has
|
|
105
|
+
* a timeout and a longer lease. Claim release has a separate 500ms deadline; failure leaves
|
|
106
|
+
* the bounded lease to expire.
|
|
107
|
+
*/
|
|
108
|
+
export const processCommittedActivity = Effect.fn("processCommittedActivity")(function* <
|
|
109
|
+
E = never,
|
|
110
|
+
R = never,
|
|
111
|
+
EApply = never,
|
|
112
|
+
RApply = never,
|
|
113
|
+
>(
|
|
114
|
+
processor: CommittedActivityProcessor<E, R, EApply, RApply>,
|
|
115
|
+
): Effect.fn.Return<
|
|
116
|
+
ActivityPassResult,
|
|
117
|
+
| E
|
|
118
|
+
| EApply
|
|
119
|
+
| ActivityStoreFailure
|
|
120
|
+
| ActivityProcessingError
|
|
121
|
+
| DigestError
|
|
122
|
+
| ThreadStoreError
|
|
123
|
+
| ThreadNotMaterialized,
|
|
124
|
+
ActivityProcessorStore | ThreadStore | Crypto.Crypto | Exclude<R | RApply, Scope.Scope>
|
|
125
|
+
> {
|
|
126
|
+
const key = yield* Schema.decodeEffect(ActivityProcessorKey)(processor.key).pipe(
|
|
127
|
+
Effect.mapError(() => invalid("Invalid activity processor key")),
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
const limits = yield* Schema.decodeEffect(ActivityPassLimits)(processor.limits).pipe(
|
|
131
|
+
Effect.mapError(() => invalid("Invalid activity pass limits")),
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
if (limits.leaseMillis < limits.timeoutMillis + 1_000) {
|
|
135
|
+
return yield* invalid("The activity lease must exceed the pass timeout by at least 1000ms");
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const request = yield* ActivityClaimRequest.makeEffect({
|
|
139
|
+
key,
|
|
140
|
+
owner: processor.owner,
|
|
141
|
+
leaseMillis: limits.leaseMillis,
|
|
142
|
+
}).pipe(Effect.mapError(() => invalid("Invalid activity worker identity")));
|
|
143
|
+
|
|
144
|
+
const progress = yield* ActivityProcessorStore;
|
|
145
|
+
const threads = yield* ThreadStore;
|
|
146
|
+
|
|
147
|
+
return yield* Effect.scoped(
|
|
148
|
+
Effect.gen(function* () {
|
|
149
|
+
const acquired = yield* Effect.acquireRelease(
|
|
150
|
+
progress.claim(request).pipe(Effect.interruptible),
|
|
151
|
+
(claim) =>
|
|
152
|
+
progress
|
|
153
|
+
.release(claim)
|
|
154
|
+
.pipe(Effect.interruptible, Effect.timeoutOption(500), Effect.ignore),
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
let claim = yield* Schema.decodeEffect(ActivityClaim)(acquired).pipe(
|
|
158
|
+
Effect.mapError(() => invalid("Malformed activity claim")),
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
if (
|
|
162
|
+
!Schema.toEquivalence(ActivityProcessorKey)(claim.key, key) ||
|
|
163
|
+
claim.owner !== request.owner
|
|
164
|
+
)
|
|
165
|
+
return yield* invalid("Activity claim identity does not match its request");
|
|
166
|
+
const startedAt = yield* Clock.currentTimeMillis;
|
|
167
|
+
|
|
168
|
+
const tail = yield* threads
|
|
169
|
+
.inspectTail(ThreadTailRequest.make({ threadId: key.threadId }))
|
|
170
|
+
.pipe(
|
|
171
|
+
Effect.flatMap((value) =>
|
|
172
|
+
Schema.decodeEffect(ThreadTail)(value).pipe(Effect.mapError(contiguous)),
|
|
173
|
+
),
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
if (
|
|
177
|
+
tail.threadId !== key.threadId ||
|
|
178
|
+
tail.tailSequence < claim.throughSequence ||
|
|
179
|
+
(claim.pending !== null && tail.tailSequence < claim.pending.sequence)
|
|
180
|
+
) {
|
|
181
|
+
return yield* contiguous();
|
|
182
|
+
}
|
|
183
|
+
const through = Math.min(tail.tailSequence, claim.throughSequence + limits.maxRecords);
|
|
184
|
+
let processed = 0;
|
|
185
|
+
|
|
186
|
+
while (claim.throughSequence < through) {
|
|
187
|
+
const limit = Math.min(limits.pageSize, through - claim.throughSequence);
|
|
188
|
+
|
|
189
|
+
const page = yield* threads
|
|
190
|
+
.read(
|
|
191
|
+
ThreadRead.make({
|
|
192
|
+
threadId: key.threadId,
|
|
193
|
+
afterSequence: claim.throughSequence,
|
|
194
|
+
limit,
|
|
195
|
+
}),
|
|
196
|
+
)
|
|
197
|
+
.pipe(Stream.take(limit + 1), Stream.runCollect);
|
|
198
|
+
|
|
199
|
+
if (page.length !== limit) return yield* contiguous();
|
|
200
|
+
for (const rawRecord of page) {
|
|
201
|
+
const record = yield* Schema.decodeEffect(Schema.toType(CanonicalRecordEnvelope))(
|
|
202
|
+
rawRecord,
|
|
203
|
+
).pipe(Effect.mapError(contiguous));
|
|
204
|
+
|
|
205
|
+
if (record.threadId !== key.threadId || record.sequence !== claim.throughSequence + 1) {
|
|
206
|
+
return yield* contiguous();
|
|
207
|
+
}
|
|
208
|
+
const workId = yield* activityWorkId(key, record.sequence);
|
|
209
|
+
|
|
210
|
+
const encodedRecord = yield* Schema.encodeEffect(RecordEnvelope)(record.record).pipe(
|
|
211
|
+
Effect.mapError(contiguous),
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
const recordDigest = yield* digestJson(encodedRecord);
|
|
215
|
+
let work = claim.pending;
|
|
216
|
+
|
|
217
|
+
if (work === null) {
|
|
218
|
+
const output = yield* Effect.scoped(processor.extract(record)).pipe(
|
|
219
|
+
Effect.flatMap((value) =>
|
|
220
|
+
Schema.decodeEffect(PersistedJson)(value).pipe(
|
|
221
|
+
Effect.mapError(() => invalid("Malformed activity output")),
|
|
222
|
+
),
|
|
223
|
+
),
|
|
224
|
+
);
|
|
225
|
+
|
|
226
|
+
work = yield* progress.prepare({
|
|
227
|
+
claim,
|
|
228
|
+
work: PreparedActivity.make({
|
|
229
|
+
version: 1,
|
|
230
|
+
key,
|
|
231
|
+
sequence: record.sequence,
|
|
232
|
+
workId,
|
|
233
|
+
recordId: record.record.recordId,
|
|
234
|
+
recordDigest,
|
|
235
|
+
output,
|
|
236
|
+
}),
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
const prepared = yield* Schema.decodeEffect(PreparedActivity)(work).pipe(
|
|
241
|
+
Effect.mapError(() => invalid("Malformed prepared activity")),
|
|
242
|
+
);
|
|
243
|
+
|
|
244
|
+
if (
|
|
245
|
+
!Schema.toEquivalence(ActivityProcessorKey)(prepared.key, key) ||
|
|
246
|
+
prepared.sequence !== record.sequence ||
|
|
247
|
+
prepared.workId !== workId ||
|
|
248
|
+
prepared.recordId !== record.record.recordId ||
|
|
249
|
+
prepared.recordDigest !== recordDigest
|
|
250
|
+
)
|
|
251
|
+
return yield* contiguous();
|
|
252
|
+
yield* Effect.scoped(processor.apply(prepared));
|
|
253
|
+
|
|
254
|
+
const next = yield* progress
|
|
255
|
+
.advance({ claim, workId })
|
|
256
|
+
.pipe(
|
|
257
|
+
Effect.flatMap((value) =>
|
|
258
|
+
Schema.decodeEffect(ActivityClaim)(value).pipe(
|
|
259
|
+
Effect.mapError(() => invalid("Malformed activity progress")),
|
|
260
|
+
),
|
|
261
|
+
),
|
|
262
|
+
);
|
|
263
|
+
|
|
264
|
+
if (
|
|
265
|
+
!Schema.toEquivalence(ActivityProcessorKey)(next.key, key) ||
|
|
266
|
+
next.owner !== claim.owner ||
|
|
267
|
+
next.epoch !== claim.epoch ||
|
|
268
|
+
next.throughSequence !== record.sequence ||
|
|
269
|
+
next.pending !== null
|
|
270
|
+
)
|
|
271
|
+
return yield* invalid("Activity progress advanced outside the claimed record");
|
|
272
|
+
claim = next;
|
|
273
|
+
processed += 1;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return ActivityPassResult.make({
|
|
278
|
+
key,
|
|
279
|
+
capturedTail: tail.tailSequence,
|
|
280
|
+
throughSequence: claim.throughSequence,
|
|
281
|
+
processed,
|
|
282
|
+
pendingRecords: tail.tailSequence - claim.throughSequence,
|
|
283
|
+
startedAt,
|
|
284
|
+
finishedAt: yield* Clock.currentTimeMillis,
|
|
285
|
+
});
|
|
286
|
+
}),
|
|
287
|
+
).pipe(
|
|
288
|
+
Effect.timeoutOrElse({
|
|
289
|
+
duration: limits.timeoutMillis,
|
|
290
|
+
orElse: () =>
|
|
291
|
+
Effect.fail(
|
|
292
|
+
ActivityProcessingError.make({ reason: "timeout", message: "Activity pass timed out" }),
|
|
293
|
+
),
|
|
294
|
+
}),
|
|
295
|
+
);
|
|
296
|
+
});
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { PlatformError } from "effect";
|
|
2
|
+
import { Array, Crypto, Effect, Encoding, Schema } from "effect";
|
|
3
|
+
|
|
4
|
+
import type { DefinitionDigestInput } from "./Records.ts";
|
|
5
|
+
import { CanonicalBatch, DefinitionDigests, Digest } from "./Records.ts";
|
|
6
|
+
|
|
7
|
+
export class DigestError extends Schema.TaggedError<DigestError>()("DigestError", {
|
|
8
|
+
message: Schema.String,
|
|
9
|
+
cause: Schema.optionalKey(Schema.Defect()),
|
|
10
|
+
}) {}
|
|
11
|
+
|
|
12
|
+
const utf8 = new TextEncoder();
|
|
13
|
+
|
|
14
|
+
const canonicalJson = (value: Schema.Json): string => {
|
|
15
|
+
if (
|
|
16
|
+
value === null ||
|
|
17
|
+
typeof value === "boolean" ||
|
|
18
|
+
typeof value === "number" ||
|
|
19
|
+
typeof value === "string"
|
|
20
|
+
) {
|
|
21
|
+
return JSON.stringify(value);
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray<Schema.Json>(value)) {
|
|
24
|
+
return `[${globalThis.Array.from(value, canonicalJson).join(",")}]`;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const entries = Object.entries(value).sort(([left], [right]) =>
|
|
28
|
+
left < right ? -1 : left > right ? 1 : 0,
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
return `{${entries
|
|
32
|
+
.map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`)
|
|
33
|
+
.join(",")}}`;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/** Digest a JSON value using a stable, locale-independent object-key ordering (UTF-16 code units, RFC 8785 style). */
|
|
37
|
+
export const digestJson = Effect.fn("Thread.digestJson")(function* (
|
|
38
|
+
value: Schema.Json,
|
|
39
|
+
): Effect.fn.Return<Digest, DigestError, Crypto.Crypto> {
|
|
40
|
+
const crypto = yield* Crypto.Crypto;
|
|
41
|
+
|
|
42
|
+
const bytes = utf8.encode(canonicalJson(value));
|
|
43
|
+
|
|
44
|
+
const digest = yield* crypto
|
|
45
|
+
.digest("SHA-256", bytes)
|
|
46
|
+
.pipe(
|
|
47
|
+
Effect.mapError((error: PlatformError.PlatformError) =>
|
|
48
|
+
DigestError.make({ message: `SHA-256 failed: ${error.message}`, cause: error }),
|
|
49
|
+
),
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
return yield* Schema.decodeEffect(Digest)(Encoding.encodeHex(digest)).pipe(
|
|
53
|
+
Effect.mapError(() => DigestError.make({ message: "SHA-256 returned an invalid digest" })),
|
|
54
|
+
);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
/** Digest a canonical batch together with the prior tail to form an append-only hash chain. */
|
|
58
|
+
export const digestCanonicalBatch = Effect.fn("Thread.digestCanonicalBatch")(
|
|
59
|
+
(
|
|
60
|
+
previousTailDigest: Digest,
|
|
61
|
+
batch: CanonicalBatch,
|
|
62
|
+
): Effect.Effect<Digest, DigestError, Crypto.Crypto> =>
|
|
63
|
+
Schema.encodeEffect(CanonicalBatch)(batch).pipe(
|
|
64
|
+
Effect.mapError(() => DigestError.make({ message: "Canonical batch encoding failed" })),
|
|
65
|
+
Effect.flatMap((encoded) =>
|
|
66
|
+
digestJson({
|
|
67
|
+
previousTailDigest,
|
|
68
|
+
batch: encoded,
|
|
69
|
+
}),
|
|
70
|
+
),
|
|
71
|
+
),
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
/** Digest one schema-encoded Agent, Model, or Toolkit definition. */
|
|
75
|
+
export const digestDefinition = Effect.fn("Thread.digestDefinition")((definition: Schema.Json) =>
|
|
76
|
+
digestJson(definition),
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
/** Digest all replay-relevant definitions without hiding which authority changed. */
|
|
80
|
+
export const digestDefinitions = Effect.fn("Thread.digestDefinitions")(
|
|
81
|
+
(
|
|
82
|
+
definitions: DefinitionDigestInput,
|
|
83
|
+
): Effect.Effect<DefinitionDigests, DigestError, Crypto.Crypto> =>
|
|
84
|
+
Effect.all({
|
|
85
|
+
agent: digestDefinition(definitions.agent),
|
|
86
|
+
model: digestDefinition(definitions.model),
|
|
87
|
+
tools: digestDefinition(definitions.tools),
|
|
88
|
+
}).pipe(Effect.map((digests) => DefinitionDigests.make(digests))),
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
export const EMPTY_TAIL_DIGEST = Schema.decodeSync(Digest)(
|
|
92
|
+
"0000000000000000000000000000000000000000000000000000000000000000",
|
|
93
|
+
);
|