effect-agent 0.1.0-beta.157 → 0.1.0-beta.158

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/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"effect-agent","version":"0.1.0-beta.157","devDependencies":{"@effect/platform-node":"4.0.0-rc.117","@effect/vitest":"4.0.0-rc.117","effect":"4.0.0-rc.117","typescript":"7.0.2","vite-plus":"0.3.3"},"peerDependencies":{"effect":"^4.0.0-rc.117"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./browser-use":{"types":"./dist/capabilities/BrowserUse.d.mts","default":"./dist/capabilities/BrowserUse.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./failure-diagnostic":{"types":"./dist/core/FailureDiagnostic.d.mts","default":"./dist/core/FailureDiagnostic.mjs"},"./git-hub-workflow-source":{"types":"./dist/durable/GitHubWorkflowSource.d.mts","default":"./dist/durable/GitHubWorkflowSource.mjs"},"./id-generator":{"types":"./dist/core/IdGenerator.d.mts","default":"./dist/core/IdGenerator.mjs"},"./identifiers":{"types":"./dist/core/Identifiers.d.mts","default":"./dist/core/Identifiers.mjs"},"./in-memory":{"types":"./dist/InMemory.d.mts","default":"./dist/InMemory.mjs"},"./interactive-browser":{"types":"./dist/sandbox/InteractiveBrowser.d.mts","default":"./dist/sandbox/InteractiveBrowser.mjs"},"./mcp":{"types":"./dist/capabilities/Mcp.d.mts","default":"./dist/capabilities/Mcp.mjs"},"./mcp-client":{"types":"./dist/capabilities/McpClient.d.mts","default":"./dist/capabilities/McpClient.mjs"},"./memory":{"types":"./dist/core/Memory.d.mts","default":"./dist/core/Memory.mjs"},"./memory-namespace":{"types":"./dist/core/MemoryNamespace.d.mts","default":"./dist/core/MemoryNamespace.mjs"},"./memory-notes":{"types":"./dist/capabilities/MemoryNotes.d.mts","default":"./dist/capabilities/MemoryNotes.mjs"},"./memory-reference":{"types":"./dist/core/MemoryReference.d.mts","default":"./dist/core/MemoryReference.mjs"},"./memory-revalidation":{"types":"./dist/core/MemoryRevalidation.d.mts","default":"./dist/core/MemoryRevalidation.mjs"},"./memory-store":{"types":"./dist/core/MemoryStore.d.mts","default":"./dist/core/MemoryStore.mjs"},"./message-delivery":{"types":"./dist/durable/MessageDelivery.d.mts","default":"./dist/durable/MessageDelivery.mjs"},"./messaging":{"types":"./dist/capabilities/Messaging.d.mts","default":"./dist/capabilities/Messaging.mjs"},"./messaging-host":{"types":"./dist/engine/MessagingHost.d.mts","default":"./dist/engine/MessagingHost.mjs"},"./model-context":{"types":"./dist/capabilities/ModelContext.d.mts","default":"./dist/capabilities/ModelContext.mjs"},"./operation-authorizer":{"types":"./dist/durable/OperationAuthorizer.d.mts","default":"./dist/durable/OperationAuthorizer.mjs"},"./output":{"types":"./dist/engine/Output.d.mts","default":"./dist/engine/Output.mjs"},"./page-capture":{"types":"./dist/sandbox/PageCapture.d.mts","default":"./dist/sandbox/PageCapture.mjs"},"./page-crawl":{"types":"./dist/sandbox/PageCrawl.d.mts","default":"./dist/sandbox/PageCrawl.mjs"},"./page-screenshot":{"types":"./dist/sandbox/PageScreenshot.d.mts","default":"./dist/sandbox/PageScreenshot.mjs"},"./persistent-history":{"types":"./dist/durable/PersistentHistory.d.mts","default":"./dist/durable/PersistentHistory.mjs"},"./prepared-input-admission":{"types":"./dist/durable/PreparedInputAdmission.d.mts","default":"./dist/durable/PreparedInputAdmission.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-admission":{"types":"./dist/durable/WorkerAdmission.d.mts","default":"./dist/durable/WorkerAdmission.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"},"./lifecycle-publication":{"types":"./dist/durable/LifecyclePublication.d.mts","default":"./dist/durable/LifecyclePublication.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
1
+ {"name":"effect-agent","version":"0.1.0-beta.158","devDependencies":{"@effect/platform-node":"4.0.0-rc.117","@effect/vitest":"4.0.0-rc.117","effect":"4.0.0-rc.117","typescript":"7.0.2","vite-plus":"0.3.3"},"peerDependencies":{"effect":"^4.0.0-rc.117"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./browser-use":{"types":"./dist/capabilities/BrowserUse.d.mts","default":"./dist/capabilities/BrowserUse.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./failure-diagnostic":{"types":"./dist/core/FailureDiagnostic.d.mts","default":"./dist/core/FailureDiagnostic.mjs"},"./git-hub-workflow-source":{"types":"./dist/durable/GitHubWorkflowSource.d.mts","default":"./dist/durable/GitHubWorkflowSource.mjs"},"./id-generator":{"types":"./dist/core/IdGenerator.d.mts","default":"./dist/core/IdGenerator.mjs"},"./identifiers":{"types":"./dist/core/Identifiers.d.mts","default":"./dist/core/Identifiers.mjs"},"./in-memory":{"types":"./dist/InMemory.d.mts","default":"./dist/InMemory.mjs"},"./interactive-browser":{"types":"./dist/sandbox/InteractiveBrowser.d.mts","default":"./dist/sandbox/InteractiveBrowser.mjs"},"./mcp":{"types":"./dist/capabilities/Mcp.d.mts","default":"./dist/capabilities/Mcp.mjs"},"./mcp-client":{"types":"./dist/capabilities/McpClient.d.mts","default":"./dist/capabilities/McpClient.mjs"},"./memory":{"types":"./dist/core/Memory.d.mts","default":"./dist/core/Memory.mjs"},"./memory-namespace":{"types":"./dist/core/MemoryNamespace.d.mts","default":"./dist/core/MemoryNamespace.mjs"},"./memory-notes":{"types":"./dist/capabilities/MemoryNotes.d.mts","default":"./dist/capabilities/MemoryNotes.mjs"},"./memory-reference":{"types":"./dist/core/MemoryReference.d.mts","default":"./dist/core/MemoryReference.mjs"},"./memory-revalidation":{"types":"./dist/core/MemoryRevalidation.d.mts","default":"./dist/core/MemoryRevalidation.mjs"},"./memory-store":{"types":"./dist/core/MemoryStore.d.mts","default":"./dist/core/MemoryStore.mjs"},"./message-delivery":{"types":"./dist/durable/MessageDelivery.d.mts","default":"./dist/durable/MessageDelivery.mjs"},"./messaging":{"types":"./dist/capabilities/Messaging.d.mts","default":"./dist/capabilities/Messaging.mjs"},"./messaging-host":{"types":"./dist/engine/MessagingHost.d.mts","default":"./dist/engine/MessagingHost.mjs"},"./model-context":{"types":"./dist/capabilities/ModelContext.d.mts","default":"./dist/capabilities/ModelContext.mjs"},"./operation-authorizer":{"types":"./dist/durable/OperationAuthorizer.d.mts","default":"./dist/durable/OperationAuthorizer.mjs"},"./output":{"types":"./dist/engine/Output.d.mts","default":"./dist/engine/Output.mjs"},"./page-capture":{"types":"./dist/sandbox/PageCapture.d.mts","default":"./dist/sandbox/PageCapture.mjs"},"./page-crawl":{"types":"./dist/sandbox/PageCrawl.d.mts","default":"./dist/sandbox/PageCrawl.mjs"},"./page-screenshot":{"types":"./dist/sandbox/PageScreenshot.d.mts","default":"./dist/sandbox/PageScreenshot.mjs"},"./persistent-history":{"types":"./dist/durable/PersistentHistory.d.mts","default":"./dist/durable/PersistentHistory.mjs"},"./prepared-input-admission":{"types":"./dist/durable/PreparedInputAdmission.d.mts","default":"./dist/durable/PreparedInputAdmission.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-admission":{"types":"./dist/durable/WorkerAdmission.d.mts","default":"./dist/durable/WorkerAdmission.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"},"./lifecycle-publication":{"types":"./dist/durable/LifecyclePublication.d.mts","default":"./dist/durable/LifecyclePublication.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
@@ -167,6 +167,7 @@ import { makeMessagingRuntime } from "./internal/messaging-host.ts";
167
167
  import * as ThreadInitialization from "./internal/thread-initialization.ts";
168
168
  import { makeWorkerRuntime, WorkerInputControl } from "./internal/worker-host.ts";
169
169
  import { WorkerRuntime } from "./internal/worker-runtime.ts";
170
+ import { MessageDeliveryStore } from "./MessageDelivery.ts";
170
171
  import {
171
172
  OperationAuthorizationRequest,
172
173
  OperationAuthorizer,
@@ -1266,6 +1267,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
1266
1267
  const ledger = yield* SubmissionLedger;
1267
1268
  const submissionScheduling = yield* SubmissionScheduling;
1268
1269
  const store = yield* ThreadStore;
1270
+ const deliveries = yield* Effect.serviceOption(MessageDeliveryStore);
1269
1271
 
1270
1272
  // Disposable: canonical tail and owner identify the exact projection, never ownership.
1271
1273
  // Retain only the most recent view; persisted checkpoints still govern cold recovery.
@@ -3112,7 +3114,75 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
3112
3114
  */
3113
3115
  const notifyParentOfChildSettlement = Effect.fn(
3114
3116
  "DurableAgentRuntime.notifyParentOfChildSettlement",
3115
- )(function* (submission: SubmissionSnapshot): Effect.fn.Return<void, LedgerError> {
3117
+ )(function* (
3118
+ submission: SubmissionSnapshot,
3119
+ record: RecordEnvelope,
3120
+ ): Effect.fn.Return<void, LedgerError> {
3121
+ const admission = submission.messageAdmission;
3122
+ const worker = submission.workerAdmission;
3123
+
3124
+ const key =
3125
+ admission === undefined
3126
+ ? worker === undefined
3127
+ ? undefined
3128
+ : {
3129
+ ownerThreadId: worker.origin.source.threadId,
3130
+ messageId: worker.messageId,
3131
+ }
3132
+ : Schema.is(MessageAdmission)(admission)
3133
+ ? admission.message
3134
+ : {
3135
+ ownerThreadId:
3136
+ admission._tag === "WorkerCompletion"
3137
+ ? admission.report.worker.threadId
3138
+ : admission.worker.threadId,
3139
+ messageId: submission.idempotencyKey,
3140
+ };
3141
+
3142
+ // Commit the destination's exact canonical acknowledgement at the source before
3143
+ // making the ledger terminal. A failed/lost response is replayed during recovery.
3144
+ if (key !== undefined && Option.isSome(deliveries)) {
3145
+ const settled = yield* settlementPayloadFromRecord(record, submission.submissionId);
3146
+
3147
+ yield* deliveries.value
3148
+ .change(key, {
3149
+ _tag: "Complete",
3150
+ nowMillis: yield* Clock.currentTimeMillis,
3151
+ admissionKey: submission.idempotencyKey,
3152
+ inputDigest: submission.inputDigest,
3153
+ receipt: Receipt.make({
3154
+ threadId: submission.threadId,
3155
+ submissionId: submission.submissionId,
3156
+ receiptId: submission.receiptId,
3157
+ queueSequence: submission.queueSequence,
3158
+ }),
3159
+ settlement: Settlement.make({
3160
+ submissionId: settled.submissionId,
3161
+ receiptId: settled.receiptId,
3162
+ settlementId: settled.settlementId,
3163
+ outcome: settled.outcome,
3164
+ settledAt: record.createdAt,
3165
+ ...(settled.outcome === "failed" ? { failure: settled.result } : {}),
3166
+ ...(settled.usageSummary === undefined ? {} : { usageSummary: settled.usageSummary }),
3167
+ ...(settled.runDisposition === undefined
3168
+ ? {}
3169
+ : { runDisposition: settled.runDisposition }),
3170
+ }),
3171
+ })
3172
+ .pipe(
3173
+ Effect.catchCause((cause) =>
3174
+ Effect.failCause(
3175
+ Cause.map(cause, (error) =>
3176
+ LedgerError.make({
3177
+ operation: "delivery-completion",
3178
+ message: "Destination acknowledgement remains pending",
3179
+ cause: error,
3180
+ }),
3181
+ ),
3182
+ ),
3183
+ ),
3184
+ );
3185
+ }
3116
3186
  if (submission.workerAdmission?.origin.reporting?.mode === "standard")
3117
3187
  yield* updateRuntime.repair(submission.threadId).pipe(
3118
3188
  Effect.mapError(() =>
@@ -3227,14 +3297,14 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
3227
3297
  Effect.asVoid,
3228
3298
  );
3229
3299
  yield* hit("terminalize:after-canonical-append");
3230
- yield* notifyParentOfChildSettlement(submission);
3300
+ yield* notifyParentOfChildSettlement(submission, record);
3231
3301
 
3232
3302
  const settlement = yield* ledger.finalizeSettlement(
3233
3303
  SettlementFinalization.make({ submissionId, settlementId }),
3234
3304
  );
3235
3305
 
3236
3306
  yield* wake.notify(submission.threadId);
3237
- yield* notifyParentOfChildSettlement(submission);
3307
+ yield* notifyParentOfChildSettlement(submission, record);
3238
3308
 
3239
3309
  return settlement;
3240
3310
  });
@@ -3349,7 +3419,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
3349
3419
  Effect.asVoid,
3350
3420
  );
3351
3421
  yield* hit("terminalize:after-canonical-append");
3352
- yield* notifyParentOfChildSettlement(submission);
3422
+ yield* notifyParentOfChildSettlement(submission, reserved.record);
3353
3423
 
3354
3424
  const settlement = yield* ledger.finalizeSettlement(
3355
3425
  SettlementFinalization.make({ submissionId, settlementId }),
@@ -3358,7 +3428,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
3358
3428
  const canonicalSettlement = yield* settlementPayloadFromRecord(reserved.record, submissionId);
3359
3429
 
3360
3430
  yield* wake.notify(submission.threadId);
3361
- yield* notifyParentOfChildSettlement(submission);
3431
+ yield* notifyParentOfChildSettlement(submission, reserved.record);
3362
3432
  yield* settleJoinedSubmissions(ctx, canonicalSettlement);
3363
3433
 
3364
3434
  return materializeSettlement(settlement, reserved.record);
@@ -3385,7 +3455,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
3385
3455
  );
3386
3456
  yield* hit("terminalize:after-canonical-append");
3387
3457
  }
3388
- yield* notifyParentOfChildSettlement(submission);
3458
+ yield* notifyParentOfChildSettlement(submission, reservation.record);
3389
3459
 
3390
3460
  const settlement = yield* ledger.finalizeSettlement(
3391
3461
  SettlementFinalization.make({
@@ -3400,7 +3470,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
3400
3470
  );
3401
3471
 
3402
3472
  yield* wake.notify(submission.threadId);
3403
- yield* notifyParentOfChildSettlement(submission);
3473
+ yield* notifyParentOfChildSettlement(submission, reservation.record);
3404
3474
  yield* settleJoinedSubmissions(ctx, canonicalSettlement);
3405
3475
 
3406
3476
  return materializeSettlement(settlement, reservation.record);
@@ -3413,7 +3483,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
3413
3483
  ): Effect.fn.Return<Settlement, LedgerError | SettlementConflict> {
3414
3484
  const canonicalSettlement = yield* settlementPayloadFromRecord(record, submission.submissionId);
3415
3485
 
3416
- yield* notifyParentOfChildSettlement(submission);
3486
+ yield* notifyParentOfChildSettlement(submission, record);
3417
3487
 
3418
3488
  const settlement = yield* ledger.finalizeSettlement(
3419
3489
  SettlementFinalization.make({
@@ -3427,7 +3497,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
3427
3497
  );
3428
3498
 
3429
3499
  yield* wake.notify(submission.threadId);
3430
- yield* notifyParentOfChildSettlement(submission);
3500
+ yield* notifyParentOfChildSettlement(submission, record);
3431
3501
 
3432
3502
  return materializeSettlement(settlement, snapshot.reservation?.record);
3433
3503
  });
@@ -14,6 +14,8 @@ import { PreparedInput } from "./Subscription.ts";
14
14
 
15
15
  const Positive = Schema.Int.check(Schema.isGreaterThan(0));
16
16
  const BoundedName = Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256));
17
+ const receiptsEqual = Schema.toEquivalence(Receipt);
18
+ const settlementsEqual = Schema.toEquivalence(Settlement);
17
19
 
18
20
  /** An owner is always a source Thread. Destination admission has its own frozen key. */
19
21
  export const MessageDeliveryKey = Schema.Struct({
@@ -66,7 +68,12 @@ export const defaultMessageDeliveryStoreLimits: MessageDeliveryStoreLimits = {
66
68
  maxRetainedUpdatesPerOwner: 256,
67
69
  };
68
70
 
69
- const ParkReason = Schema.Literals(["exhausted", "deadline", "status-unavailable"]);
71
+ const ParkReason = Schema.Literals([
72
+ "exhausted",
73
+ "deadline",
74
+ "status-unavailable",
75
+ "awaiting-settlement",
76
+ ]);
70
77
 
71
78
  export const MessageDeliveryRecord = Schema.Struct({
72
79
  schemaVersion: Schema.Literal(1),
@@ -152,7 +159,20 @@ export const MessageDeliveryFailpoint = Context.Reference<{
152
159
 
153
160
  const fence = { expectedVersion: Positive, nowMillis: ScheduleInstant };
154
161
 
162
+ /** Terminal destination evidence, independent of an expiring source transport claim. */
163
+ export const MessageDeliveryCompletion = Schema.Struct({
164
+ receipt: Receipt,
165
+ settlement: Settlement,
166
+ admissionKey: IdempotencyKey,
167
+ inputDigest: Digest,
168
+ });
169
+
155
170
  export const MessageDeliveryChange = Schema.Union([
171
+ Schema.Struct({
172
+ _tag: Schema.Literal("Complete"),
173
+ nowMillis: ScheduleInstant,
174
+ ...MessageDeliveryCompletion.fields,
175
+ }),
156
176
  Schema.Struct({ _tag: Schema.Literal("Claim"), ...fence }),
157
177
  Schema.Struct({ _tag: Schema.Literal("Accept"), ...fence, receipt: Receipt }),
158
178
  Schema.Struct({ _tag: Schema.Literal("Process"), ...fence, settlement: Settlement }),
@@ -424,6 +444,34 @@ export const applyMessageDeliveryChange = (
424
444
  ): Result.Result<MessageDeliveryRecord, MessageDeliveryError> => {
425
445
  const conflict = () => Result.fail(error("conflict", change._tag));
426
446
 
447
+ if (change._tag === "Complete") {
448
+ if (
449
+ change.admissionKey !== record.envelope.admissionKey ||
450
+ change.inputDigest !== record.envelope.inputDigest ||
451
+ change.receipt.threadId !== record.envelope.threadId ||
452
+ change.settlement.submissionId !== change.receipt.submissionId ||
453
+ change.settlement.receiptId !== change.receipt.receiptId ||
454
+ (record.receipt !== null && !receiptsEqual(record.receipt, change.receipt))
455
+ )
456
+ return Result.fail(error("corrupt", "completion-identity"));
457
+ if (record.status === "refused") return conflict();
458
+ if (record.status === "processed")
459
+ return record.settlement !== null && settlementsEqual(record.settlement, change.settlement)
460
+ ? Result.succeed(record)
461
+ : Result.fail(error("corrupt", "completion-identity"));
462
+
463
+ return Result.succeed({
464
+ ...record,
465
+ version: record.version + 1,
466
+ status: "processed",
467
+ receipt: change.receipt,
468
+ settlement: change.settlement,
469
+ leaseUntilMillis: null,
470
+ parkReason: null,
471
+ retry: { ...record.retry, parked: false },
472
+ });
473
+ }
474
+
427
475
  if (record.version !== change.expectedVersion) return conflict();
428
476
  if (record.status === "processed" || record.status === "refused") return conflict();
429
477
  const now = change.nowMillis;
@@ -540,21 +588,8 @@ export const applyMessageDeliveryChange = (
540
588
  }
541
589
  if (change._tag === "ObservePending") {
542
590
  if (record.status !== "accepted") return conflict();
543
- if (now >= record.deadlineAtMillis) return Result.succeed(parked("deadline"));
544
591
 
545
- return Result.succeed({
546
- ...base,
547
- leaseUntilMillis: null,
548
- retry: {
549
- ...record.retry,
550
- automaticAttempts: 0,
551
- lastFailure: null,
552
- nextAttemptAtMillis: Math.min(
553
- now + record.policy.settlementPollMillis,
554
- record.deadlineAtMillis,
555
- ),
556
- },
557
- });
592
+ return Result.succeed(parked("awaiting-settlement"));
558
593
  }
559
594
  if (change._tag === "Refuse") {
560
595
  if (record.status !== "pending") return conflict();
@@ -700,9 +735,10 @@ export class MessageDeliveryDriver extends Context.Service<
700
735
  // Digest computation cannot extend this claim's admission authority.
701
736
  if (timeout <= 0) return claimed;
702
737
 
703
- type WithoutFence<T> = T extends MessageDeliveryChange
704
- ? Omit<T, "expectedVersion" | "nowMillis">
705
- : never;
738
+ type WithoutFence<T> =
739
+ T extends Exclude<MessageDeliveryChange, { _tag: "Complete" }>
740
+ ? Omit<T, "expectedVersion" | "nowMillis">
741
+ : never;
706
742
 
707
743
  const commit = (change: WithoutFence<MessageDeliveryChange>) =>
708
744
  Clock.currentTimeMillis.pipe(
@@ -722,8 +758,16 @@ export class MessageDeliveryDriver extends Context.Service<
722
758
  ).pipe(Effect.mapError((cause) => error("corrupt", "admission", cause)));
723
759
 
724
760
  yield* failpoint.hit("message-delivery:admission:after");
725
- if (outcome._tag === "Receipt")
726
- return yield* commit({ _tag: "Accept", receipt: outcome.receipt });
761
+ if (outcome._tag === "Receipt") {
762
+ const accepted = yield* commit({ _tag: "Accept", receipt: outcome.receipt });
763
+
764
+ return yield* store.change(key, {
765
+ _tag: "Park",
766
+ reason: "awaiting-settlement",
767
+ expectedVersion: accepted.version,
768
+ nowMillis: yield* Clock.currentTimeMillis,
769
+ });
770
+ }
727
771
  if (outcome._tag === "Refused")
728
772
  return yield* commit({
729
773
  _tag: "Refuse",
@@ -7977,23 +7977,31 @@ const enforceDurationDeadline = <A, E, R>(
7977
7977
  execution: Stream.Stream<A, E, R>,
7978
7978
  durationDeadlineMillis: number,
7979
7979
  durationLimit: AgentPolicyError,
7980
- ): Stream.Stream<A, E | AgentPolicyError, R> =>
7981
- Stream.unwrap(
7982
- Effect.gen(function* () {
7983
- const now = yield* Clock.currentTimeMillis;
7984
- const remaining = durationDeadlineMillis - now;
7980
+ ): Stream.Stream<A, E | AgentPolicyError, R> => {
7981
+ const beforeDeadline = Effect.fnUntraced(function* <Value, Error, Requirements>(
7982
+ effect: Effect.Effect<Value, Error, Requirements>,
7983
+ ): Effect.fn.Return<Value, Error | AgentPolicyError, Requirements> {
7984
+ const now = yield* Clock.currentTimeMillis;
7985
+ const remaining = durationDeadlineMillis - now;
7985
7986
 
7986
- if (remaining <= 0) {
7987
- return Stream.fail(durationLimit);
7988
- }
7987
+ if (remaining <= 0) {
7988
+ return yield* Effect.fail(durationLimit);
7989
+ }
7989
7990
 
7990
- return execution.pipe(
7991
- Stream.interruptWhen(
7992
- Effect.sleep(remaining).pipe(Effect.andThen(Effect.fail(durationLimit))),
7993
- ),
7994
- );
7995
- }),
7996
- );
7991
+ return yield* effect.pipe(
7992
+ Effect.timeoutOrElse({
7993
+ duration: remaining,
7994
+ orElse: () => Effect.fail(durationLimit),
7995
+ }),
7996
+ );
7997
+ });
7998
+
7999
+ // Guard acquisition and each pull against the same deadline. A merged timer
8000
+ // stream can deadlock at a cooperative scheduler yield (see #692).
8001
+ return Stream.fromPull(
8002
+ beforeDeadline(Stream.toPull(execution)).pipe(Effect.map(beforeDeadline)),
8003
+ ).pipe(Stream.scoped);
8004
+ };
7997
8005
 
7998
8006
  const guardBudgetStream = <A, E, R, HookError, HookRequirements>(
7999
8007
  stream: Stream.Stream<A, E, R>,