effect-agent 0.1.0-beta.95 → 0.1.0-beta.97
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/{AgentRuntime-CufqQ4JM.d.mts → AgentRuntime-B64362Id.d.mts} +2 -2
- package/dist/AgentRuntime-Cdvqw7l_.mjs.map +1 -1
- package/dist/{DurableAgentRuntime-BaGsWDHO.mjs → DurableAgentRuntime-DbUvZHDZ.mjs} +82 -66
- package/dist/DurableAgentRuntime-DbUvZHDZ.mjs.map +1 -0
- package/dist/DurableFailpoint-DQJet828.d.mts +41 -0
- package/dist/{EventSource-DVfX1GRH.d.mts → EventSource-D6PAAEyK.d.mts} +3 -3
- package/dist/{PreparedInputAdmission-DoWaMC2R.d.mts → PreparedInputAdmission-omMbwd--.d.mts} +4 -4
- package/dist/{Records-CsEsSW2o.mjs → Records-BAutSSnJ.mjs} +18 -5
- package/dist/Records-BAutSSnJ.mjs.map +1 -0
- package/dist/{Records-B84j3Jq_.d.mts → Records-CV49DgQK.d.mts} +90 -16
- package/dist/{RunJournal-yYpUlTOE.mjs → RunJournal-DRRRZmG7.mjs} +8 -3
- package/dist/RunJournal-DRRRZmG7.mjs.map +1 -0
- package/dist/{RunOptions-CE-G3niT.d.mts → RunOptions-Clj8cLsp.d.mts} +4 -4
- package/dist/{Schedule-DCYBfhgT.d.mts → Schedule-DePbGfgd.d.mts} +2 -2
- package/dist/{Scheduling-CUuYc3-D.mjs → Scheduling-C3QpYn0W.mjs} +2 -2
- package/dist/{Scheduling-CUuYc3-D.mjs.map → Scheduling-C3QpYn0W.mjs.map} +1 -1
- package/dist/{Subagent-DscbtbNY.d.mts → Subagent-Bm1dRecN.d.mts} +3 -3
- package/dist/{Subscription-C8IHdmFk.d.mts → Subscription-BR_8Cxh3.d.mts} +3 -3
- package/dist/{SubscriptionInput-DhM3jUW2.d.mts → SubscriptionInput-B95sQbuk.d.mts} +3 -3
- package/dist/agent-registration-CXGDwvJH.mjs +379 -0
- package/dist/agent-registration-CXGDwvJH.mjs.map +1 -0
- package/dist/capabilities/Commands.d.mts +1 -1
- package/dist/capabilities/RunHooks.d.mts +1 -1
- package/dist/capabilities/Subagent.d.mts +1 -1
- package/dist/durable/ActivityStore.d.mts +1 -1
- package/dist/durable/ActivityStore.mjs +1 -1
- package/dist/durable/Admin.d.mts +1 -1
- package/dist/durable/Admin.mjs +1 -1
- package/dist/durable/AgentRegistration.d.mts +2 -2
- package/dist/durable/AgentRegistration.mjs +7 -3
- package/dist/durable/AgentRegistration.mjs.map +1 -1
- package/dist/durable/Certification.d.mts +2 -2
- package/dist/durable/CommittedActivity.d.mts +1 -1
- package/dist/durable/CommittedActivity.mjs +1 -1
- package/dist/durable/Digest.d.mts +1 -1
- package/dist/durable/Digest.mjs +1 -1
- package/dist/durable/DurableAgentRuntime.d.mts +1 -1
- package/dist/durable/DurableAgentRuntime.mjs +1 -1
- package/dist/durable/DurableFailpoint.d.mts +1 -1
- package/dist/durable/DurableFailpoint.mjs +2 -0
- package/dist/durable/DurableFailpoint.mjs.map +1 -1
- package/dist/durable/DurableFailpointTestControl.d.mts +1 -1
- package/dist/durable/EventSource.d.mts +1 -1
- package/dist/durable/EventSource.mjs +1 -1
- package/dist/durable/GitHubWorkflowSource.d.mts +3 -3
- package/dist/durable/GitHubWorkflowSource.mjs +1 -1
- package/dist/durable/MessageDelivery.d.mts +3 -3
- package/dist/durable/MessageDelivery.mjs +1 -1
- package/dist/durable/MessageDeliveryStoreConformance.d.mts +39 -39
- package/dist/durable/MessageDeliveryStoreConformance.mjs +1 -1
- package/dist/durable/PersistentHistory.d.mts +1 -1
- package/dist/durable/PersistentHistory.mjs +2 -2
- package/dist/durable/PreparedInputAdmission.d.mts +1 -1
- package/dist/durable/Records.d.mts +2 -2
- package/dist/durable/Records.mjs +2 -2
- package/dist/durable/Recovery.d.mts +1 -1
- package/dist/durable/Recovery.mjs +1 -1
- package/dist/durable/RunJournal.d.mts +2 -2
- package/dist/durable/RunJournal.mjs +2 -2
- package/dist/durable/Schedule.d.mts +1 -1
- package/dist/durable/Schedule.mjs +1 -1
- package/dist/durable/ScheduleStoreConformance.d.mts +1 -1
- package/dist/durable/ScheduleStoreConformance.mjs +1 -1
- package/dist/durable/ScheduleTransition.d.mts +1 -1
- package/dist/durable/ScheduleTransition.mjs +1 -1
- package/dist/durable/Scheduling.d.mts +2 -2
- package/dist/durable/Scheduling.mjs +1 -1
- package/dist/durable/SqlStorageV2Upgrade.d.mts +2 -2
- package/dist/durable/SqlStorageV2Upgrade.mjs +1 -1
- package/dist/durable/SqlSubscriptionStore.d.mts +2 -2
- package/dist/durable/SqlSubscriptionStore.mjs +1 -1
- package/dist/durable/SubmissionLedger.d.mts +1 -1
- package/dist/durable/SubmissionLedger.mjs +1 -1
- package/dist/durable/SubmissionLedgerConformance.d.mts +1 -1
- package/dist/durable/SubmissionLedgerConformance.mjs +1 -1
- package/dist/durable/SubmissionStatus.d.mts +1 -1
- package/dist/durable/Subscription.d.mts +1 -1
- package/dist/durable/Subscription.mjs +1 -1
- package/dist/durable/SubscriptionInput.d.mts +1 -1
- package/dist/durable/SubscriptionInput.mjs +2 -2
- package/dist/durable/SubscriptionStoreConformance.d.mts +1 -1
- package/dist/durable/SubscriptionStoreConformance.mjs +1 -1
- package/dist/durable/SubscriptionTools.d.mts +3 -3
- package/dist/durable/SubscriptionTransition.d.mts +1 -1
- package/dist/durable/SubscriptionTransition.mjs +1 -1
- package/dist/durable/Subscriptions.d.mts +5 -5
- package/dist/durable/Subscriptions.mjs +1 -1
- package/dist/durable/ThreadContextHistory.d.mts +1 -1
- package/dist/durable/ThreadContextHistory.mjs +1 -1
- package/dist/durable/ThreadContextHistoryProjection.d.mts +1 -1
- package/dist/durable/ThreadContextHistoryProjection.mjs +1 -1
- package/dist/durable/ThreadInvariants.d.mts +1 -1
- package/dist/durable/ThreadInvariants.mjs +1 -1
- package/dist/durable/ThreadProjection.d.mts +1 -1
- package/dist/durable/ThreadProjection.mjs +1 -1
- package/dist/durable/ThreadProjectionMaintenance.d.mts +1 -1
- package/dist/durable/ThreadStore.d.mts +1 -1
- package/dist/durable/ThreadStore.mjs +1 -1
- package/dist/durable/ThreadStoreConformance.d.mts +1 -1
- package/dist/durable/ThreadStoreConformance.mjs +1 -1
- package/dist/durable/ToolReconciler.mjs +1 -1
- package/dist/durable/WorkerHost.d.mts +1 -1
- package/dist/engine/AgentRuntime.d.mts +1 -1
- package/dist/engine/RunOptions.d.mts +1 -1
- package/dist/engine/RunOptions.mjs.map +1 -1
- package/dist/index.d.mts +10 -10
- package/dist/index.mjs +4 -4
- package/package.json +1 -1
- package/src/durable/AgentRegistration.ts +5 -0
- package/src/durable/DurableAgentRuntime.ts +155 -84
- package/src/durable/DurableFailpoint.ts +2 -0
- package/src/durable/Records.ts +19 -2
- package/src/durable/RunJournal.ts +6 -0
- package/src/durable/internal/agent-registration.ts +427 -14
- package/src/durable/internal/messaging-host.ts +3 -6
- package/src/durable/internal/worker-host.ts +114 -88
- package/src/engine/RunOptions.ts +3 -3
- package/src/engine/internal/agent-runtime.ts +3 -4
- package/dist/DurableAgentRuntime-BaGsWDHO.mjs.map +0 -1
- package/dist/DurableFailpoint-Oinuuedm.d.mts +0 -41
- package/dist/Records-CsEsSW2o.mjs.map +0 -1
- package/dist/RunJournal-yYpUlTOE.mjs.map +0 -1
- package/dist/agent-registration-CWDMOAZA.mjs +0 -172
- package/dist/agent-registration-CWDMOAZA.mjs.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -61,7 +61,7 @@ import { t as ToolDiscovery_exports } from "./capabilities/ToolDiscovery.mjs";
|
|
|
61
61
|
import { t as ToolExposure_exports } from "./ToolExposure.mjs";
|
|
62
62
|
import { t as WebCapture_exports } from "./capabilities/WebCapture.mjs";
|
|
63
63
|
import { t as WebSearch_exports } from "./capabilities/WebSearch.mjs";
|
|
64
|
-
import { A as Records_exports } from "./Records-
|
|
64
|
+
import { A as Records_exports } from "./Records-BAutSSnJ.mjs";
|
|
65
65
|
import { t as ActivityStore_exports } from "./durable/ActivityStore.mjs";
|
|
66
66
|
import { t as SubmissionLedger_exports } from "./durable/SubmissionLedger.mjs";
|
|
67
67
|
import { t as Recovery_exports } from "./durable/Recovery.mjs";
|
|
@@ -75,8 +75,8 @@ import { t as Schedule_exports } from "./durable/Schedule.mjs";
|
|
|
75
75
|
import { t as PreparedInputAdmission_exports } from "./durable/PreparedInputAdmission.mjs";
|
|
76
76
|
import { t as Subscription_exports } from "./durable/Subscription.mjs";
|
|
77
77
|
import { t as MessageDelivery_exports } from "./durable/MessageDelivery.mjs";
|
|
78
|
-
import { n as DurableAgentRuntime_exports } from "./DurableAgentRuntime-
|
|
79
|
-
import { n as RunJournal_exports } from "./RunJournal-
|
|
78
|
+
import { n as DurableAgentRuntime_exports } from "./DurableAgentRuntime-DbUvZHDZ.mjs";
|
|
79
|
+
import { n as RunJournal_exports } from "./RunJournal-DRRRZmG7.mjs";
|
|
80
80
|
import { t as WorkerHost_exports } from "./durable/WorkerHost.mjs";
|
|
81
81
|
import { t as OperationAuthorizer_exports } from "./durable/OperationAuthorizer.mjs";
|
|
82
82
|
import { t as SubmissionStatus_exports } from "./durable/SubmissionStatus.mjs";
|
|
@@ -86,7 +86,7 @@ import { t as WakeScheduler_exports } from "./durable/WakeScheduler.mjs";
|
|
|
86
86
|
import { t as EventSource_exports } from "./durable/EventSource.mjs";
|
|
87
87
|
import { t as PersistentHistory_exports } from "./durable/PersistentHistory.mjs";
|
|
88
88
|
import { t as ScheduleTransition_exports } from "./durable/ScheduleTransition.mjs";
|
|
89
|
-
import { i as Scheduling_exports } from "./Scheduling-
|
|
89
|
+
import { i as Scheduling_exports } from "./Scheduling-C3QpYn0W.mjs";
|
|
90
90
|
import { t as SubscriptionInput_exports } from "./durable/SubscriptionInput.mjs";
|
|
91
91
|
import { t as Subscriptions_exports } from "./durable/Subscriptions.mjs";
|
|
92
92
|
import { t as SubscriptionTools_exports } from "./durable/SubscriptionTools.mjs";
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"effect-agent","version":"0.1.0-beta.95","devDependencies":{"@effect/platform-node":"4.0.0-rc.115","@effect/vitest":"4.0.0-rc.115","effect":"4.0.0-rc.115","typescript":"7.0.2","vite-plus":"0.3.0"},"peerDependencies":{"effect":"^4.0.0-rc.115"},"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"},"./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"},"./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"},"./protected-browser":{"types":"./dist/sandbox/ProtectedBrowser.d.mts","default":"./dist/sandbox/ProtectedBrowser.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"},"./sql-message-delivery-store":{"types":"./dist/durable/SqlMessageDeliveryStore.d.mts","default":"./dist/durable/SqlMessageDeliveryStore.mjs"},"./sql-storage-v2-upgrade":{"types":"./dist/durable/SqlStorageV2Upgrade.d.mts","default":"./dist/durable/SqlStorageV2Upgrade.mjs"},"./sql-subscription-store":{"types":"./dist/durable/SqlSubscriptionStore.d.mts","default":"./dist/durable/SqlSubscriptionStore.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-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.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.97","devDependencies":{"@effect/platform-node":"4.0.0-rc.115","@effect/vitest":"4.0.0-rc.115","effect":"4.0.0-rc.115","typescript":"7.0.2","vite-plus":"0.3.0"},"peerDependencies":{"effect":"^4.0.0-rc.115"},"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"},"./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"},"./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"},"./protected-browser":{"types":"./dist/sandbox/ProtectedBrowser.d.mts","default":"./dist/sandbox/ProtectedBrowser.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"},"./sql-message-delivery-store":{"types":"./dist/durable/SqlMessageDeliveryStore.d.mts","default":"./dist/durable/SqlMessageDeliveryStore.mjs"},"./sql-storage-v2-upgrade":{"types":"./dist/durable/SqlStorageV2Upgrade.d.mts","default":"./dist/durable/SqlStorageV2Upgrade.mjs"},"./sql-subscription-store":{"types":"./dist/durable/SqlSubscriptionStore.d.mts","default":"./dist/durable/SqlSubscriptionStore.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-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.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"}}
|
|
@@ -5,6 +5,11 @@ export {
|
|
|
5
5
|
DurableWorkerBinding,
|
|
6
6
|
compileRegistrations,
|
|
7
7
|
definitionDigestsEqual,
|
|
8
|
+
bindingSupports,
|
|
9
|
+
BindingManifest,
|
|
10
|
+
makeBindingManifest,
|
|
11
|
+
compileBindingManifest,
|
|
12
|
+
type ReplayVersions,
|
|
8
13
|
type AgentRegistration,
|
|
9
14
|
type AgentAttemptContext,
|
|
10
15
|
type ExecutableAgentBinding,
|
|
@@ -139,6 +139,7 @@ import {
|
|
|
139
139
|
BindingUnavailable,
|
|
140
140
|
compileRegistrations,
|
|
141
141
|
definitionDigestsEqual,
|
|
142
|
+
bindingSupports,
|
|
142
143
|
type AgentRegistration,
|
|
143
144
|
type DurableBindingFailure,
|
|
144
145
|
makeLegacyWorkerBinding,
|
|
@@ -184,6 +185,7 @@ import {
|
|
|
184
185
|
RecordId,
|
|
185
186
|
RepairAnnotated,
|
|
186
187
|
RunStartedRecord,
|
|
188
|
+
RunDurationExhausted,
|
|
187
189
|
SettlementFailureDiagnostic,
|
|
188
190
|
SubagentJoined,
|
|
189
191
|
SubagentLineageRecorded,
|
|
@@ -235,6 +237,8 @@ import {
|
|
|
235
237
|
runIdForSubmission,
|
|
236
238
|
runStartedBatchId,
|
|
237
239
|
runStartedRecordId,
|
|
240
|
+
runDurationRecordId,
|
|
241
|
+
runDurationBatchId,
|
|
238
242
|
subagentJoinBatchId,
|
|
239
243
|
subagentJoinedRecordId,
|
|
240
244
|
subagentLineageBatchId,
|
|
@@ -2551,13 +2555,10 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
2551
2555
|
const recordId = runStartedRecordId(runId);
|
|
2552
2556
|
const existing = yield* canonicalRunStartFromRecords(records, runId);
|
|
2553
2557
|
let start: RecordEnvelope;
|
|
2558
|
+
let allowance = maxDurationMillis;
|
|
2554
2559
|
|
|
2555
2560
|
if (existing !== undefined && existing.payload._tag === "RunStarted") {
|
|
2556
|
-
|
|
2557
|
-
return yield* RunJournalError.make({
|
|
2558
|
-
message: `Run ${runId} started with a ${existing.payload.maxDurationMillis}ms duration allowance; the replacement Binding supplies ${maxDurationMillis}ms`,
|
|
2559
|
-
});
|
|
2560
|
-
}
|
|
2561
|
+
allowance = existing.payload.maxDurationMillis;
|
|
2561
2562
|
start = existing;
|
|
2562
2563
|
} else {
|
|
2563
2564
|
const executionStarted = records.some(
|
|
@@ -2567,7 +2568,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
2567
2568
|
|
|
2568
2569
|
if (executionStarted) {
|
|
2569
2570
|
return yield* RunJournalError.make({
|
|
2570
|
-
message: `Run ${runId} has execution records but no canonical start;
|
|
2571
|
+
message: `Run ${runId} has execution records but no canonical start; retain the request for evidence repair`,
|
|
2571
2572
|
});
|
|
2572
2573
|
}
|
|
2573
2574
|
start = yield* makeEnvelope(
|
|
@@ -2588,7 +2589,14 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
2588
2589
|
|
|
2589
2590
|
return {
|
|
2590
2591
|
startedAt: start.createdAt,
|
|
2591
|
-
|
|
2592
|
+
// Downtime is not execution. Reuse the original per-Attempt allowance without
|
|
2593
|
+
// moving the Run start or resetting journaled turn, Tool or cost accounting.
|
|
2594
|
+
deadline: records.some(
|
|
2595
|
+
({ record }) =>
|
|
2596
|
+
record.payload._tag === "RunDurationExhausted" && record.payload.runId === runId,
|
|
2597
|
+
)
|
|
2598
|
+
? start.createdAt
|
|
2599
|
+
: DateTime.addDuration(yield* DateTime.now, Duration.millis(allowance)),
|
|
2592
2600
|
};
|
|
2593
2601
|
});
|
|
2594
2602
|
|
|
@@ -7565,6 +7573,27 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
7565
7573
|
// lane would strand the repair); a reserved row WITHOUT a canonical join is an open
|
|
7566
7574
|
// attached-child obligation and the parent never settles across it (spec §13).
|
|
7567
7575
|
if (outcome._tag === "failed" && outcome.policyLimit === "duration") {
|
|
7576
|
+
const exhaustedId = runDurationRecordId(runIdForSubmission(submissionId));
|
|
7577
|
+
|
|
7578
|
+
if (!(yield* refreshControl()).some(({ record }) => record.recordId === exhaustedId)) {
|
|
7579
|
+
yield* hit("run:before-duration-append");
|
|
7580
|
+
yield* appendBatch(
|
|
7581
|
+
ctx,
|
|
7582
|
+
CanonicalBatch.make({
|
|
7583
|
+
batchId: runDurationBatchId(runIdForSubmission(submissionId)),
|
|
7584
|
+
producerId: config.producerId,
|
|
7585
|
+
records: [
|
|
7586
|
+
yield* makeEnvelope(
|
|
7587
|
+
exhaustedId,
|
|
7588
|
+
RunDurationExhausted.make({
|
|
7589
|
+
runId: runIdForSubmission(submissionId),
|
|
7590
|
+
}),
|
|
7591
|
+
),
|
|
7592
|
+
],
|
|
7593
|
+
}),
|
|
7594
|
+
);
|
|
7595
|
+
yield* hit("run:after-duration-append");
|
|
7596
|
+
}
|
|
7568
7597
|
yield* reconcileExpiredChildren(ctx, submission, yield* Ref.get(tokenRef));
|
|
7569
7598
|
}
|
|
7570
7599
|
const openObligation = yield* completeJoinedReleases(submission);
|
|
@@ -7601,60 +7630,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
7601
7630
|
}
|
|
7602
7631
|
}).pipe(Effect.scoped);
|
|
7603
7632
|
|
|
7604
|
-
/**
|
|
7605
|
-
* Framework-owned Schema-stable `ChildCompatibilityFailure` Settlement for a parent-linked
|
|
7606
|
-
* child whose exact Binding cannot be resolved at claim time (spec §11, SUB-023/SUB-032): no
|
|
7607
|
-
* application code runs, the child never executes, and the parent joins the bounded failure
|
|
7608
|
-
* through the normal verification path. A pre-existing reservation or canonical settlement is
|
|
7609
|
-
* completed instead of re-decided.
|
|
7610
|
-
*/
|
|
7611
|
-
const settleChildCompatibility = Effect.fn("DurableAgentRuntime.settleChildCompatibility")(
|
|
7612
|
-
function* (
|
|
7613
|
-
claim: Claim,
|
|
7614
|
-
submission: SubmissionSnapshot,
|
|
7615
|
-
failure: DurableBindingFailure,
|
|
7616
|
-
): Effect.fn.Return<Settlement, DurableWorkerFailure> {
|
|
7617
|
-
yield* store.materialize(
|
|
7618
|
-
ThreadMaterialization.make({
|
|
7619
|
-
threadId: submission.threadId,
|
|
7620
|
-
producerEpoch: claim.producerEpoch,
|
|
7621
|
-
}),
|
|
7622
|
-
);
|
|
7623
|
-
yield* ensureThreadCreated(submission.threadId, submission.agentId, submission.agentDigests);
|
|
7624
|
-
const ctx = yield* attemptContextFor(submission.threadId, claim.producerEpoch);
|
|
7625
|
-
const tokenRef = yield* Ref.make(claim.ownershipToken);
|
|
7626
|
-
const records = yield* readControl(submission.threadId, [submission.submissionId]);
|
|
7627
|
-
|
|
7628
|
-
const recorded = records.some(
|
|
7629
|
-
(envelope) =>
|
|
7630
|
-
envelope.record.recordId === submissionSettlementRecordId(submission.submissionId),
|
|
7631
|
-
);
|
|
7632
|
-
|
|
7633
|
-
const snapshot = yield* ledger.loadRecoverySnapshot(
|
|
7634
|
-
RecoverySnapshotRequest.make({ submissionId: submission.submissionId }),
|
|
7635
|
-
);
|
|
7636
|
-
|
|
7637
|
-
if (snapshot.reservation !== undefined) {
|
|
7638
|
-
// An earlier pass already reserved the one exact outcome: complete it, never re-decide.
|
|
7639
|
-
return yield* completeReservation(ctx, submission, snapshot.reservation, recorded);
|
|
7640
|
-
}
|
|
7641
|
-
|
|
7642
|
-
const result = yield* Schema.decodeEffect(SettlementFailureDiagnostic)({
|
|
7643
|
-
errorTag: "ChildCompatibilityFailure",
|
|
7644
|
-
message: boundedText(failure.message),
|
|
7645
|
-
}).pipe(Effect.orDie);
|
|
7646
|
-
|
|
7647
|
-
return yield* terminalize(ctx, submission, tokenRef, { _tag: "failed", result }, false);
|
|
7648
|
-
},
|
|
7649
|
-
);
|
|
7650
|
-
|
|
7651
|
-
/**
|
|
7652
|
-
* Drain one Thread lane under claim-time Binding resolution (plan §1.7): every claimed
|
|
7653
|
-
* head resolves through the selected private binding path before any code runs. A refusal
|
|
7654
|
-
* writes the framework `ChildCompatibilityFailure` Settlement for a
|
|
7655
|
-
* parent-linked child and surfaces the typed refusal (after releasing the claim) for a root —
|
|
7656
|
-
* a worker never runs a claimed head against different code (SUB-023).
|
|
7657
|
-
*/
|
|
7633
|
+
/** A missing compatible binding leaves both roots and children owed, with their claims released. */
|
|
7658
7634
|
type CapturedWorkerBinding = Effect.Success<ReturnType<typeof makeLegacyWorkerBinding>>;
|
|
7659
7635
|
|
|
7660
7636
|
// Register cleanup before any interruptible work can observe a granted claim. The token
|
|
@@ -7692,7 +7668,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
7692
7668
|
const processThreadHead = (
|
|
7693
7669
|
resolve: (
|
|
7694
7670
|
submission: SubmissionSnapshot,
|
|
7695
|
-
) => Effect.Effect<CapturedWorkerBinding, DurableBindingFailure>,
|
|
7671
|
+
) => Effect.Effect<CapturedWorkerBinding, DurableBindingFailure | DurableWorkerFailure>,
|
|
7696
7672
|
threadId: ThreadId,
|
|
7697
7673
|
options?: { readonly yieldAfter?: DateTime.Utc },
|
|
7698
7674
|
): Effect.Effect<Option.Option<Settlement>, DurableWorkerFailure | DurableBindingFailure> =>
|
|
@@ -7772,14 +7748,6 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
7772
7748
|
);
|
|
7773
7749
|
|
|
7774
7750
|
if (resolution._tag === "refused") {
|
|
7775
|
-
if (submission.parentLinkage !== undefined) {
|
|
7776
|
-
return Option.some(
|
|
7777
|
-
yield* settleChildCompatibility(claim, submission, resolution.failure),
|
|
7778
|
-
);
|
|
7779
|
-
}
|
|
7780
|
-
|
|
7781
|
-
// Root Submission: release the claim and surface the typed refusal — the obligation
|
|
7782
|
-
// stays visible and no different code ever runs (spec §11).
|
|
7783
7751
|
return yield* resolution.failure;
|
|
7784
7752
|
}
|
|
7785
7753
|
|
|
@@ -7795,7 +7763,7 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
7795
7763
|
const drainThread = (
|
|
7796
7764
|
resolve: (
|
|
7797
7765
|
submission: SubmissionSnapshot,
|
|
7798
|
-
) => Effect.Effect<CapturedWorkerBinding, DurableBindingFailure>,
|
|
7766
|
+
) => Effect.Effect<CapturedWorkerBinding, DurableBindingFailure | DurableWorkerFailure>,
|
|
7799
7767
|
threadId: ThreadId,
|
|
7800
7768
|
): Effect.Effect<ReadonlyArray<Settlement>, DurableWorkerFailure | DurableBindingFailure> =>
|
|
7801
7769
|
Effect.gen(function* () {
|
|
@@ -7867,25 +7835,85 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
7867
7835
|
);
|
|
7868
7836
|
});
|
|
7869
7837
|
|
|
7838
|
+
const resolveRetainedBinding = Effect.fn("DurableAgentRuntime.resolveRetainedBinding")(function* (
|
|
7839
|
+
submission: SubmissionSnapshot,
|
|
7840
|
+
) {
|
|
7841
|
+
const exact = registeredBindings.find(
|
|
7842
|
+
(binding) =>
|
|
7843
|
+
binding.agentId === submission.agentId &&
|
|
7844
|
+
definitionDigestsEqual(binding.digests, submission.agentDigests),
|
|
7845
|
+
);
|
|
7846
|
+
|
|
7847
|
+
if (exact !== undefined) return exact;
|
|
7848
|
+
|
|
7849
|
+
const candidates = registeredBindings.filter(
|
|
7850
|
+
(binding) => binding.agentId === submission.agentId,
|
|
7851
|
+
);
|
|
7852
|
+
|
|
7853
|
+
const candidate = candidates[0];
|
|
7854
|
+
|
|
7855
|
+
// A missing/ambiguous registration needs no history read. If every retained Tool contract
|
|
7856
|
+
// is supported, neither does an ordinary additive deployment.
|
|
7857
|
+
if (candidate === undefined || candidates.length !== 1)
|
|
7858
|
+
return yield* resolveWorkerBinding(
|
|
7859
|
+
registeredBindings,
|
|
7860
|
+
submission.agentId,
|
|
7861
|
+
submission.agentDigests,
|
|
7862
|
+
);
|
|
7863
|
+
if (bindingSupports(candidate, submission.agentDigests, undefined, submission.inputPayload))
|
|
7864
|
+
return candidate;
|
|
7865
|
+
|
|
7866
|
+
// A checkpoint can omit a settled batch that still supplies completion projection.
|
|
7867
|
+
// Compatibility reads the bounded authoritative prefix, never a reduced checkpoint.
|
|
7868
|
+
const records = yield* Effect.gen(function* () {
|
|
7869
|
+
const tail = yield* store.inspectTail(
|
|
7870
|
+
ThreadTailRequest.make({ threadId: submission.threadId }),
|
|
7871
|
+
);
|
|
7872
|
+
|
|
7873
|
+
return yield* Stream.runCollect(
|
|
7874
|
+
canonicalRange(submission.threadId, tail.tailSequence).pipe(
|
|
7875
|
+
Stream.filter(controlRecords([submission.submissionId])),
|
|
7876
|
+
),
|
|
7877
|
+
);
|
|
7878
|
+
}).pipe(Effect.catchTag("ThreadNotMaterialized", () => Effect.succeed([])));
|
|
7879
|
+
|
|
7880
|
+
const completionTools =
|
|
7881
|
+
candidate === undefined
|
|
7882
|
+
? []
|
|
7883
|
+
: [
|
|
7884
|
+
...(candidate.definition.completion === undefined
|
|
7885
|
+
? []
|
|
7886
|
+
: [candidate.definition.completion.tool]),
|
|
7887
|
+
...(candidate.definition.completionFromTools?.map((entry) => entry.tool) ?? []),
|
|
7888
|
+
];
|
|
7889
|
+
|
|
7890
|
+
const pending = yield* pendingToolBatchFor(
|
|
7891
|
+
records,
|
|
7892
|
+
runIdForSubmission(submission.submissionId),
|
|
7893
|
+
completionTools,
|
|
7894
|
+
);
|
|
7895
|
+
|
|
7896
|
+
return yield* resolveWorkerBinding(
|
|
7897
|
+
registeredBindings,
|
|
7898
|
+
submission.agentId,
|
|
7899
|
+
submission.agentDigests,
|
|
7900
|
+
pending?.calls
|
|
7901
|
+
.filter((call) => call.providerExecuted !== true || completionTools.includes(call.name))
|
|
7902
|
+
.map((call) => call.name) ?? [],
|
|
7903
|
+
submission.inputPayload,
|
|
7904
|
+
);
|
|
7905
|
+
});
|
|
7906
|
+
|
|
7870
7907
|
const processThreadResolvedImpl = (
|
|
7871
7908
|
threadId: ThreadId,
|
|
7872
7909
|
): Effect.Effect<ReadonlyArray<Settlement>, DurableWorkerFailure | DurableBindingFailure> =>
|
|
7873
|
-
drainThread(
|
|
7874
|
-
(submission) =>
|
|
7875
|
-
resolveWorkerBinding(registeredBindings, submission.agentId, submission.agentDigests),
|
|
7876
|
-
threadId,
|
|
7877
|
-
);
|
|
7910
|
+
drainThread(resolveRetainedBinding, threadId);
|
|
7878
7911
|
|
|
7879
7912
|
const processThreadHeadImpl = (
|
|
7880
7913
|
threadId: ThreadId,
|
|
7881
7914
|
options?: { readonly yieldAfter?: DateTime.Utc },
|
|
7882
7915
|
): Effect.Effect<Option.Option<Settlement>, DurableWorkerFailure | DurableBindingFailure> =>
|
|
7883
|
-
processThreadHead(
|
|
7884
|
-
(submission) =>
|
|
7885
|
-
resolveWorkerBinding(registeredBindings, submission.agentId, submission.agentDigests),
|
|
7886
|
-
threadId,
|
|
7887
|
-
options,
|
|
7888
|
-
);
|
|
7916
|
+
processThreadHead(resolveRetainedBinding, threadId, options);
|
|
7889
7917
|
|
|
7890
7918
|
const claimFor = Effect.fn("DurableAgentRuntime.claimFor")(function* (
|
|
7891
7919
|
submission: SubmissionSnapshot,
|
|
@@ -8311,8 +8339,13 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
8311
8339
|
if (
|
|
8312
8340
|
start?.payload._tag === "RunStarted" &&
|
|
8313
8341
|
start.payload.runId === runId &&
|
|
8314
|
-
(
|
|
8315
|
-
|
|
8342
|
+
(records.some(
|
|
8343
|
+
({ record }) =>
|
|
8344
|
+
record.payload._tag === "RunDurationExhausted" && record.payload.runId === runId,
|
|
8345
|
+
) ||
|
|
8346
|
+
(submission.workerAdmission !== undefined &&
|
|
8347
|
+
(yield* Clock.currentTimeMillis) >=
|
|
8348
|
+
submission.workerAdmission.origin.expiresAtMillis)) &&
|
|
8316
8349
|
(decision._tag === "CompleteChildAdmission" ||
|
|
8317
8350
|
decision._tag === "RepairSubagentStartLink" ||
|
|
8318
8351
|
decision._tag === "AwaitChildAdmissionResolution" ||
|
|
@@ -9088,6 +9121,44 @@ const make = Effect.fn("DurableAgentRuntime.make")(function* (
|
|
|
9088
9121
|
),
|
|
9089
9122
|
);
|
|
9090
9123
|
|
|
9124
|
+
// Replay metadata is registration authority, never a caller's compatibility assertion.
|
|
9125
|
+
// Frozen native deliveries already proved their original envelope above. Root retries may
|
|
9126
|
+
// reuse only the original row; a new root must name a host-owned contract.
|
|
9127
|
+
if (
|
|
9128
|
+
options.definitions.replay !== undefined &&
|
|
9129
|
+
workerAdmission === undefined &&
|
|
9130
|
+
messageAdmission === undefined &&
|
|
9131
|
+
!registeredBindings.some(
|
|
9132
|
+
(binding) =>
|
|
9133
|
+
binding.agentId === agent.definition.id &&
|
|
9134
|
+
(definitionDigestsEqual(binding.digests, options.definitions) ||
|
|
9135
|
+
binding.retainedManifests?.some((retained) =>
|
|
9136
|
+
definitionDigestsEqual(
|
|
9137
|
+
DefinitionDigests.make({ ...retained.digests, replay: retained.replay }),
|
|
9138
|
+
options.definitions,
|
|
9139
|
+
),
|
|
9140
|
+
)),
|
|
9141
|
+
)
|
|
9142
|
+
) {
|
|
9143
|
+
const retained = yield* ledger.lookup(
|
|
9144
|
+
SubmissionLookupByKey.make({
|
|
9145
|
+
threadId: options.threadId,
|
|
9146
|
+
principal: options.principal,
|
|
9147
|
+
idempotencyKey: options.idempotencyKey,
|
|
9148
|
+
}),
|
|
9149
|
+
);
|
|
9150
|
+
|
|
9151
|
+
if (
|
|
9152
|
+
Option.isNone(retained) ||
|
|
9153
|
+
retained.value.agentId !== agent.definition.id ||
|
|
9154
|
+
!definitionDigestsEqual(retained.value.agentDigests, options.definitions)
|
|
9155
|
+
)
|
|
9156
|
+
return yield* AdmissionPolicyError.make({
|
|
9157
|
+
reason: "refused",
|
|
9158
|
+
code: "unregistered-replay-contract",
|
|
9159
|
+
});
|
|
9160
|
+
}
|
|
9161
|
+
|
|
9091
9162
|
const admitted = yield* ledger.admit(
|
|
9092
9163
|
yield* Schema.decodeEffect(AdmissionRequest)({
|
|
9093
9164
|
threadId: options.threadId,
|
|
@@ -21,6 +21,8 @@ export const DurableRuntimeFailpointLocation = Schema.Literals([
|
|
|
21
21
|
"input:after-canonical-append",
|
|
22
22
|
"run:before-start-append",
|
|
23
23
|
"run:after-start-append",
|
|
24
|
+
"run:before-duration-append",
|
|
25
|
+
"run:after-duration-append",
|
|
24
26
|
"turn:after-canonical-append",
|
|
25
27
|
"turn:after-response-append",
|
|
26
28
|
"turn:after-results-append",
|
package/src/durable/Records.ts
CHANGED
|
@@ -200,13 +200,24 @@ export class DefinitionDigestInput extends Schema.Class<DefinitionDigestInput>(
|
|
|
200
200
|
tools: PersistedJson,
|
|
201
201
|
}) {}
|
|
202
202
|
|
|
203
|
-
/**
|
|
203
|
+
/** The contracts a retained Run may decode or execute, independent of its deployment. */
|
|
204
|
+
export class ReplayContract extends Schema.Class<ReplayContract>(
|
|
205
|
+
"@effect-agent/thread/ReplayContract",
|
|
206
|
+
)({
|
|
207
|
+
agent: Digest,
|
|
208
|
+
/** Agent semantics and output/completion codecs; the saved input is checked separately. */
|
|
209
|
+
agentBehavior: Schema.optionalKey(Digest),
|
|
210
|
+
tools: Schema.Record(Schema.String, Digest),
|
|
211
|
+
}) {}
|
|
212
|
+
|
|
213
|
+
/** Digests identify admission exactly; replay contracts separately authorize continuation. */
|
|
204
214
|
export class DefinitionDigests extends Schema.Class<DefinitionDigests>(
|
|
205
215
|
"@effect-agent/thread/DefinitionDigests",
|
|
206
216
|
)({
|
|
207
217
|
agent: Digest,
|
|
208
218
|
model: Digest,
|
|
209
219
|
tools: Digest,
|
|
220
|
+
replay: Schema.optionalKey(ReplayContract),
|
|
210
221
|
}) {}
|
|
211
222
|
|
|
212
223
|
export class ThreadCreated extends Schema.TaggedClass<ThreadCreated>(
|
|
@@ -230,7 +241,7 @@ export class UserInputRecorded extends Schema.TaggedClass<UserInputRecorded>(
|
|
|
230
241
|
messageAdmission: Schema.optionalKey(InputMessage),
|
|
231
242
|
}) {}
|
|
232
243
|
|
|
233
|
-
/** Immutable
|
|
244
|
+
/** Immutable Run start and per-Attempt duration allowance, before any agent execution. */
|
|
234
245
|
export class RunStartedRecord extends Schema.TaggedClass<RunStartedRecord>(
|
|
235
246
|
"@effect-agent/thread/RunStartedRecord",
|
|
236
247
|
)("RunStarted", {
|
|
@@ -240,6 +251,11 @@ export class RunStartedRecord extends Schema.TaggedClass<RunStartedRecord>(
|
|
|
240
251
|
maxDurationMillis: Schema.Finite.check(Schema.isGreaterThan(0)),
|
|
241
252
|
}) {}
|
|
242
253
|
|
|
254
|
+
/** An active Attempt exhausted its execution allowance; downtime alone never writes this. */
|
|
255
|
+
export class RunDurationExhausted extends Schema.TaggedClass<RunDurationExhausted>(
|
|
256
|
+
"@effect-agent/thread/RunDurationExhausted",
|
|
257
|
+
)("RunDurationExhausted", { runId: RunId }) {}
|
|
258
|
+
|
|
243
259
|
const PersistedPromptMessages = Schema.toEncoded(Prompt.Prompt);
|
|
244
260
|
const isPersistedPromptMessages = Schema.is(PersistedPromptMessages);
|
|
245
261
|
|
|
@@ -940,6 +956,7 @@ export const CanonicalRecordPayload = Schema.Union([
|
|
|
940
956
|
ThreadCreated,
|
|
941
957
|
UserInputRecorded,
|
|
942
958
|
RunStartedRecord,
|
|
959
|
+
RunDurationExhausted,
|
|
943
960
|
RunPolicyUsageReserved,
|
|
944
961
|
ModelCompleted,
|
|
945
962
|
ModelResponseRecorded,
|
|
@@ -62,6 +62,11 @@ export const runStartedRecordId = (runId: RunId): RecordId => decodeRecordId(`ru
|
|
|
62
62
|
|
|
63
63
|
export const runStartedBatchId = (runId: RunId): BatchId => decodeBatchId(`run-start:${runId}`);
|
|
64
64
|
|
|
65
|
+
export const runDurationRecordId = (runId: RunId): RecordId =>
|
|
66
|
+
decodeRecordId(`run-duration:${runId}`);
|
|
67
|
+
|
|
68
|
+
export const runDurationBatchId = (runId: RunId): BatchId => decodeBatchId(`run-duration:${runId}`);
|
|
69
|
+
|
|
65
70
|
/** Deterministic Turn identity: Attempt-independent for one (Run, canonical turn) pair. */
|
|
66
71
|
export const turnIdForRun = (runId: RunId, turn: number): TurnId =>
|
|
67
72
|
decodeTurnId(`turn:${runId}:${turn}`);
|
|
@@ -488,6 +493,7 @@ const withoutApplicationToolCallMessages = (prompt: Prompt.Prompt): ReadonlyArra
|
|
|
488
493
|
const PROMPT_TRANSPARENT_TAGS: ReadonlySet<string> = new Set([
|
|
489
494
|
"RunPolicyUsageReserved",
|
|
490
495
|
"RunStarted",
|
|
496
|
+
"RunDurationExhausted",
|
|
491
497
|
"ToolCallPrepared",
|
|
492
498
|
"ToolCallUnknown",
|
|
493
499
|
"ToolCallResolved",
|