@yielded/agent 0.1.0-beta.182 → 0.1.0-beta.183

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.
Files changed (162) hide show
  1. package/dist/{Admin-C4mPa0M2.d.mts → Admin-BgCHCGSl.d.mts} +5 -5
  2. package/dist/{AgentRuntime-CVsnQBPe.d.mts → AgentRuntime-DhRchFzv.d.mts} +4 -1
  3. package/dist/{AgentRuntime-1OjlOCa9.mjs → AgentRuntime-ILtyHuQG.mjs} +52 -40
  4. package/dist/AgentRuntime-ILtyHuQG.mjs.map +1 -0
  5. package/dist/{Digest-DjUgS5PG.d.mts → Digest-1iVcDLVm.d.mts} +2 -2
  6. package/dist/{Digest-ft4ku9pj.mjs → Digest-CzLJcsWv.mjs} +2 -2
  7. package/dist/{Digest-ft4ku9pj.mjs.map → Digest-CzLJcsWv.mjs.map} +1 -1
  8. package/dist/{DurableAgentRuntime-D2I_T2Yt.mjs → DurableAgentRuntime-Cj263rW9.mjs} +20 -55
  9. package/dist/DurableAgentRuntime-Cj263rW9.mjs.map +1 -0
  10. package/dist/{EventSource-gc82d-f6.d.mts → EventSource-CaA6RAtC.d.mts} +3 -3
  11. package/dist/{MessageDelivery-DrQKvh93.d.mts → MessageDelivery-rlLpakO8.d.mts} +43 -43
  12. package/dist/{PreparedInputAdmission-CrqdFUd8.d.mts → PreparedInputAdmission-DjbWz2lW.d.mts} +4 -4
  13. package/dist/{RecordFormat-BNiLpe43.d.mts → RecordFormat-CjMl0uu8.d.mts} +2 -2
  14. package/dist/{Records-BTnGRdcf.d.mts → Records-BP67Yz6n.d.mts} +20 -8
  15. package/dist/{Records-CZRedCE7.mjs → Records-bbGVHprv.mjs} +14 -10
  16. package/dist/Records-bbGVHprv.mjs.map +1 -0
  17. package/dist/{RunContinuation-DMbA81sZ.d.mts → RunContinuation-CIJRN_vC.d.mts} +4 -4
  18. package/dist/{RunContinuation-DWiO2K9D.mjs → RunContinuation-DJ6kkbQG.mjs} +17 -58
  19. package/dist/RunContinuation-DJ6kkbQG.mjs.map +1 -0
  20. package/dist/{RunJournal-oJLo-pjS.mjs → RunJournal-DQr2dUgg.mjs} +4 -7
  21. package/dist/RunJournal-DQr2dUgg.mjs.map +1 -0
  22. package/dist/{RunStorage-DlfvMfHM.mjs → RunStorage-DblN-cmM.mjs} +2 -2
  23. package/dist/{RunStorage-DlfvMfHM.mjs.map → RunStorage-DblN-cmM.mjs.map} +1 -1
  24. package/dist/{Schedule-CDgTz0vj.d.mts → Schedule-CVLtl5rP.d.mts} +2 -2
  25. package/dist/{Scheduling-BebkRVc2.mjs → Scheduling-B6l0lWdr.mjs} +3 -3
  26. package/dist/{Scheduling-BebkRVc2.mjs.map → Scheduling-B6l0lWdr.mjs.map} +1 -1
  27. package/dist/{Subagent-BRiDyUS4.mjs → Subagent-Bm842K7J.mjs} +43 -17
  28. package/dist/Subagent-Bm842K7J.mjs.map +1 -0
  29. package/dist/{Subagent-FypBXZP1.d.mts → Subagent-CWWmA1UQ.d.mts} +15 -3
  30. package/dist/{Subscription-Bx0LiX3x.d.mts → Subscription-BRsNy0TA.d.mts} +4 -4
  31. package/dist/{SubscriptionInput-CBFCfuOF.d.mts → SubscriptionInput-ClCaW_kX.d.mts} +3 -3
  32. package/dist/{ThreadImport-DlCLjRHK.mjs → ThreadImport-CkPAxXU5.mjs} +7 -7
  33. package/dist/{ThreadImport-DlCLjRHK.mjs.map → ThreadImport-CkPAxXU5.mjs.map} +1 -1
  34. package/dist/{ThreadImport-DTV_ario.d.mts → ThreadImport-DtRNoHIr.d.mts} +5 -5
  35. package/dist/{ThreadStore-D2rqtt7k.mjs → ThreadStore-C_ofHc7h.mjs} +4 -4
  36. package/dist/{ThreadStore-D2rqtt7k.mjs.map → ThreadStore-C_ofHc7h.mjs.map} +1 -1
  37. package/dist/{ThreadTransfer-BFolkpEp.mjs → ThreadTransfer-C_TRuo_9.mjs} +4 -4
  38. package/dist/{ThreadTransfer-BFolkpEp.mjs.map → ThreadTransfer-C_TRuo_9.mjs.map} +1 -1
  39. package/dist/{WorkerAdmission-Cxg_REhE.mjs → WorkerAdmission-9Ka3edXj.mjs} +5 -5
  40. package/dist/{WorkerAdmission-Cxg_REhE.mjs.map → WorkerAdmission-9Ka3edXj.mjs.map} +1 -1
  41. package/dist/{agent-registration-C6tkQz8r.mjs → agent-registration-7kp1dHT0.mjs} +4 -4
  42. package/dist/{agent-registration-C6tkQz8r.mjs.map → agent-registration-7kp1dHT0.mjs.map} +1 -1
  43. package/dist/capabilities/Subagent.d.mts +1 -1
  44. package/dist/capabilities/Subagent.mjs +1 -1
  45. package/dist/capabilities/SubagentReservations.d.mts +4 -1
  46. package/dist/capabilities/SubagentReservations.mjs +4 -1
  47. package/dist/capabilities/SubagentReservations.mjs.map +1 -1
  48. package/dist/durable/ActivityStore.d.mts +1 -1
  49. package/dist/durable/ActivityStore.mjs +1 -1
  50. package/dist/durable/Admin.d.mts +1 -1
  51. package/dist/durable/Admin.mjs +1 -1
  52. package/dist/durable/AgentRegistration.d.mts +1 -1
  53. package/dist/durable/AgentRegistration.mjs +1 -1
  54. package/dist/durable/Certification.d.mts +1 -1
  55. package/dist/durable/CommittedActivity.d.mts +3 -3
  56. package/dist/durable/CommittedActivity.mjs +3 -3
  57. package/dist/durable/Digest.d.mts +1 -1
  58. package/dist/durable/Digest.mjs +1 -1
  59. package/dist/durable/DurableAgentRuntime.d.mts +1 -1
  60. package/dist/durable/DurableAgentRuntime.mjs +2 -2
  61. package/dist/durable/EventSource.d.mts +1 -1
  62. package/dist/durable/EventSource.mjs +1 -1
  63. package/dist/durable/GitHubWorkflowSource.d.mts +3 -3
  64. package/dist/durable/LifecyclePublication.d.mts +1 -1
  65. package/dist/durable/LifecyclePublication.mjs +2 -2
  66. package/dist/durable/MessageDelivery.d.mts +1 -1
  67. package/dist/durable/MessageDelivery.mjs +2 -2
  68. package/dist/durable/MessageDeliveryStoreConformance.d.mts +4 -4
  69. package/dist/durable/MessageDeliveryStoreConformance.mjs +2 -2
  70. package/dist/durable/PersistentHistory.d.mts +1 -1
  71. package/dist/durable/PersistentHistory.mjs +4 -4
  72. package/dist/durable/PreparedInputAdmission.d.mts +1 -1
  73. package/dist/durable/RecordFormat.d.mts +1 -1
  74. package/dist/durable/RecordFormat.mjs +1 -1
  75. package/dist/durable/Records.d.mts +1 -1
  76. package/dist/durable/Records.mjs +1 -1
  77. package/dist/durable/Recovery.d.mts +1 -1
  78. package/dist/durable/Recovery.mjs +1 -1
  79. package/dist/durable/RunContinuation.d.mts +3 -3
  80. package/dist/durable/RunContinuation.mjs +3 -3
  81. package/dist/durable/RunJournal.d.mts +1 -1
  82. package/dist/durable/RunJournal.mjs +1 -1
  83. package/dist/durable/RunStorage.d.mts +1 -1
  84. package/dist/durable/RunStorage.mjs +1 -1
  85. package/dist/durable/Schedule.d.mts +1 -1
  86. package/dist/durable/Schedule.mjs +1 -1
  87. package/dist/durable/ScheduleStoreConformance.d.mts +1 -1
  88. package/dist/durable/ScheduleStoreConformance.mjs +1 -1
  89. package/dist/durable/ScheduleTransition.d.mts +1 -1
  90. package/dist/durable/ScheduleTransition.mjs +1 -1
  91. package/dist/durable/Scheduling.d.mts +3 -3
  92. package/dist/durable/Scheduling.mjs +1 -1
  93. package/dist/durable/SettlementPublisher.d.mts +1 -1
  94. package/dist/durable/SettlementPublisher.mjs +3 -3
  95. package/dist/durable/SubmissionLedger.d.mts +1 -1
  96. package/dist/durable/SubmissionLedger.mjs +2 -2
  97. package/dist/durable/SubmissionLedgerConformance.d.mts +2 -2
  98. package/dist/durable/SubmissionLedgerConformance.mjs +5 -5
  99. package/dist/durable/SubmissionStatus.d.mts +1 -1
  100. package/dist/durable/Subscription.d.mts +1 -1
  101. package/dist/durable/Subscription.mjs +1 -1
  102. package/dist/durable/SubscriptionInput.d.mts +1 -1
  103. package/dist/durable/SubscriptionInput.mjs +2 -2
  104. package/dist/durable/SubscriptionStoreConformance.d.mts +1 -1
  105. package/dist/durable/SubscriptionStoreConformance.mjs +1 -1
  106. package/dist/durable/SubscriptionTools.d.mts +4 -4
  107. package/dist/durable/SubscriptionTransition.d.mts +1 -1
  108. package/dist/durable/SubscriptionTransition.mjs +1 -1
  109. package/dist/durable/Subscriptions.d.mts +6 -6
  110. package/dist/durable/Subscriptions.mjs +2 -2
  111. package/dist/durable/ThreadArchiveRange.d.mts +1 -1
  112. package/dist/durable/ThreadArchiveRange.mjs +1 -1
  113. package/dist/durable/ThreadContextHistory.d.mts +1 -1
  114. package/dist/durable/ThreadContextHistory.mjs +2 -2
  115. package/dist/durable/ThreadContextHistoryProjection.d.mts +1 -1
  116. package/dist/durable/ThreadContextHistoryProjection.mjs +1 -1
  117. package/dist/durable/ThreadImport.d.mts +1 -1
  118. package/dist/durable/ThreadImport.mjs +1 -1
  119. package/dist/durable/ThreadInvariants.d.mts +3 -3
  120. package/dist/durable/ThreadInvariants.mjs +4 -4
  121. package/dist/durable/ThreadProjection.d.mts +1 -1
  122. package/dist/durable/ThreadProjection.mjs +1 -1
  123. package/dist/durable/ThreadProjectionMaintenance.d.mts +1 -1
  124. package/dist/durable/ThreadReader.d.mts +1 -1
  125. package/dist/durable/ThreadReader.mjs +1 -1
  126. package/dist/durable/ThreadStore.d.mts +2 -2
  127. package/dist/durable/ThreadStore.mjs +2 -2
  128. package/dist/durable/ThreadStoreConformance.d.mts +2 -2
  129. package/dist/durable/ThreadStoreConformance.mjs +4 -4
  130. package/dist/durable/ThreadTransfer.d.mts +2 -2
  131. package/dist/durable/ThreadTransfer.mjs +1 -1
  132. package/dist/durable/ThreadWork.d.mts +1 -1
  133. package/dist/durable/ThreadWork.mjs +5 -5
  134. package/dist/durable/ToolReconciler.mjs +1 -1
  135. package/dist/durable/WorkerAdmission.d.mts +2 -2
  136. package/dist/durable/WorkerAdmission.mjs +1 -1
  137. package/dist/durable/WorkerHost.d.mts +2 -2
  138. package/dist/engine/AgentRuntime.d.mts +1 -1
  139. package/dist/engine/AgentRuntime.mjs +1 -1
  140. package/dist/index.d.mts +14 -14
  141. package/dist/index.mjs +12 -12
  142. package/dist/{run-context-reader-CIdG5tdJ.d.mts → run-context-reader-DEU4REfD.d.mts} +3 -3
  143. package/package.json +1 -1
  144. package/src/capabilities/Subagent.ts +83 -28
  145. package/src/capabilities/SubagentReservations.ts +4 -1
  146. package/src/capabilities/internal/subagent-contract.ts +23 -3
  147. package/src/durable/DurableAgentRuntime.ts +24 -10
  148. package/src/durable/Records.ts +21 -15
  149. package/src/durable/RunContinuation.ts +54 -125
  150. package/src/durable/RunJournal.ts +4 -12
  151. package/src/durable/internal/history-prompt.ts +10 -4
  152. package/src/durable/internal/initial-context.ts +1 -1
  153. package/src/durable/internal/prompt-history-cache.ts +8 -63
  154. package/src/engine/internal/agent-runtime.ts +379 -381
  155. package/dist/AgentRuntime-1OjlOCa9.mjs.map +0 -1
  156. package/dist/DurableAgentRuntime-D2I_T2Yt.mjs.map +0 -1
  157. package/dist/Records-CZRedCE7.mjs.map +0 -1
  158. package/dist/RunContinuation-DWiO2K9D.mjs.map +0 -1
  159. package/dist/RunJournal-oJLo-pjS.mjs.map +0 -1
  160. package/dist/Subagent-BRiDyUS4.mjs.map +0 -1
  161. package/dist/json-BlJVQZxN.mjs +0 -15
  162. package/dist/json-BlJVQZxN.mjs.map +0 -1
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@yielded/agent","version":"0.1.0-beta.182","devDependencies":{"@effect/platform-node":"4.0.4","@effect/vitest":"4.0.4","effect":"4.0.4","typescript":"7.0.2","vite":"npm:@voidzero-dev/vite-plus-core@1.1.0","vite-plus":"1.1.0","vitest":"5.0.3"},"peerDependencies":{"effect":"^4.0.3"},"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"},"./provisional-text":{"types":"./dist/core/ProvisionalText.d.mts","default":"./dist/core/ProvisionalText.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-continuation":{"types":"./dist/durable/RunContinuation.d.mts","default":"./dist/durable/RunContinuation.mjs"},"./thread-work":{"types":"./dist/durable/ThreadWork.d.mts","default":"./dist/durable/ThreadWork.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"},"./run-storage":{"types":"./dist/durable/RunStorage.d.mts","default":"./dist/durable/RunStorage.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"},"./settlement-publisher":{"types":"./dist/durable/SettlementPublisher.d.mts","default":"./dist/durable/SettlementPublisher.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./sql-storage-owner":{"types":"./dist/durable/SqlStorageOwner.d.mts","default":"./dist/durable/SqlStorageOwner.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-reader":{"types":"./dist/durable/ThreadReader.d.mts","default":"./dist/durable/ThreadReader.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"},"./record-format":{"types":"./dist/durable/RecordFormat.d.mts","default":"./dist/durable/RecordFormat.mjs"},"./thread-import":{"types":"./dist/durable/ThreadImport.d.mts","default":"./dist/durable/ThreadImport.mjs"},"./thread-archive-range":{"types":"./dist/durable/ThreadArchiveRange.d.mts","default":"./dist/durable/ThreadArchiveRange.mjs"},"./thread-transfer":{"types":"./dist/durable/ThreadTransfer.d.mts","default":"./dist/durable/ThreadTransfer.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/yielded-dev/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":"@yielded/agent","version":"0.1.0-beta.183","devDependencies":{"@effect/platform-node":"4.0.4","@effect/vitest":"4.0.4","effect":"4.0.4","typescript":"7.0.2","vite":"npm:@voidzero-dev/vite-plus-core@1.1.0","vite-plus":"1.1.0","vitest":"5.0.3"},"peerDependencies":{"effect":"^4.0.3"},"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"},"./provisional-text":{"types":"./dist/core/ProvisionalText.d.mts","default":"./dist/core/ProvisionalText.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-continuation":{"types":"./dist/durable/RunContinuation.d.mts","default":"./dist/durable/RunContinuation.mjs"},"./thread-work":{"types":"./dist/durable/ThreadWork.d.mts","default":"./dist/durable/ThreadWork.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"},"./run-storage":{"types":"./dist/durable/RunStorage.d.mts","default":"./dist/durable/RunStorage.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"},"./settlement-publisher":{"types":"./dist/durable/SettlementPublisher.d.mts","default":"./dist/durable/SettlementPublisher.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./sql-storage-owner":{"types":"./dist/durable/SqlStorageOwner.d.mts","default":"./dist/durable/SqlStorageOwner.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-reader":{"types":"./dist/durable/ThreadReader.d.mts","default":"./dist/durable/ThreadReader.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"},"./record-format":{"types":"./dist/durable/RecordFormat.d.mts","default":"./dist/durable/RecordFormat.mjs"},"./thread-import":{"types":"./dist/durable/ThreadImport.d.mts","default":"./dist/durable/ThreadImport.mjs"},"./thread-archive-range":{"types":"./dist/durable/ThreadArchiveRange.d.mts","default":"./dist/durable/ThreadArchiveRange.mjs"},"./thread-transfer":{"types":"./dist/durable/ThreadTransfer.d.mts","default":"./dist/durable/ThreadTransfer.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/yielded-dev/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,4 +1,16 @@
1
- import { Cause, Clock, Duration, Effect, Exit, Layer, Option, Ref, Schema, Scope } from "effect";
1
+ import {
2
+ Cause,
3
+ Clock,
4
+ DateTime,
5
+ Duration,
6
+ Effect,
7
+ Exit,
8
+ Layer,
9
+ Option,
10
+ Ref,
11
+ Schema,
12
+ Scope,
13
+ } from "effect";
2
14
  import { Tool, Toolkit } from "effect/ai";
3
15
 
4
16
  import {
@@ -8,6 +20,7 @@ import {
8
20
  type ModelServices,
9
21
  type RunDispositionDeclaration,
10
22
  } from "../core/Agent.ts";
23
+ import { AgentPolicyError } from "../core/AgentError.ts";
11
24
  import type { AgentPolicy } from "../core/AgentPolicy.ts";
12
25
  import { type AgentId, DelegationId, ToolCallId } from "../core/Identifiers.ts";
13
26
  import { IdGenerator } from "../core/IdGenerator.ts";
@@ -1018,6 +1031,9 @@ const boundedEventText = (text: string): string =>
1018
1031
  const ErrorMessage = Schema.Struct({ message: Schema.String });
1019
1032
  const ErrorTag = Schema.Struct({ _tag: Schema.NonEmptyString });
1020
1033
 
1034
+ const isDurationPolicyError = (error: unknown): boolean =>
1035
+ Schema.is(AgentPolicyError)(error) && error.limit === "duration";
1036
+
1021
1037
  const errorMessageOf = (error: unknown): string =>
1022
1038
  Option.match(Schema.decodeUnknownOption(ErrorMessage)(error), {
1023
1039
  onNone: () => String(error),
@@ -1794,8 +1810,40 @@ export function layer<
1794
1810
 
1795
1811
  const toolCallAllowance = childToolCallAllowance(parameters, policy, childPolicy);
1796
1812
 
1813
+ // Preparation and waiting for a concurrency permit spend the parent's time too.
1814
+ // Keep the reservation unchanged; settlement refunds unused execution duration.
1815
+ const childStartedAt = yield* Clock.currentTimeMillis;
1816
+
1817
+ const durationMillis = Math.max(
1818
+ 0,
1819
+ Math.min(
1820
+ allocation.durationMillis,
1821
+ Math.floor(
1822
+ DateTime.toEpochMillis(spawner.durationDeadline) -
1823
+ childStartedAt -
1824
+ Duration.toMillis(policy.parentReserveDuration ?? Duration.zero),
1825
+ ),
1826
+ ),
1827
+ );
1828
+
1829
+ if (durationMillis === 0) {
1830
+ return yield* SubagentBudgetExhausted.make({
1831
+ parentRunId,
1832
+ dimension: "duration",
1833
+ limitValue: 0,
1834
+ observedValue: 0,
1835
+ });
1836
+ }
1837
+
1838
+ const durationDeadlineMillis = childStartedAt + durationMillis;
1839
+ const durationDeadline = DateTime.makeUnsafe(durationDeadlineMillis);
1840
+
1797
1841
  const childOptions: SpawnRunOptions<never, HookRequirements> = {
1798
1842
  ...seededChild,
1843
+ durationDeadline:
1844
+ seededChild?.durationDeadline === undefined
1845
+ ? durationDeadline
1846
+ : DateTime.min(durationDeadline, seededChild.durationDeadline),
1799
1847
  subagentGrant: grant,
1800
1848
  delegationDepth: depth,
1801
1849
  subagentBudget: SubagentBudgetReservation.make({
@@ -1809,7 +1857,7 @@ export function layer<
1809
1857
  ...(toolCallAllowance === undefined ? {} : { toolCallAllowance }),
1810
1858
  };
1811
1859
 
1812
- yield* Ref.set(startedAt, yield* Clock.currentTimeMillis);
1860
+ yield* Ref.set(startedAt, childStartedAt);
1813
1861
 
1814
1862
  const childScope = yield* Scope.make();
1815
1863
 
@@ -1859,31 +1907,38 @@ export function layer<
1859
1907
  const joined = Effect.gen(function* () {
1860
1908
  const result = yield* child.await.pipe(
1861
1909
  Effect.catch((childFailure) =>
1862
- child.usageReport.pipe(
1863
- Effect.flatMap((report) =>
1864
- emit({
1865
- _tag: "SubagentFailed",
1866
- ...payload,
1867
- ...report,
1868
- errorTag: errorTagOf(childFailure),
1869
- message: boundedEventText(errorMessageOf(childFailure)),
1870
- }),
1871
- ),
1872
- Effect.andThen(
1873
- Effect.fail(
1874
- options.mapChildFailure === undefined
1875
- ? executionFailure(
1876
- "child-failed",
1877
- errorTagOf(childFailure),
1878
- "The child Run failed",
1879
- )
1880
- : options.mapChildFailure(childFailure),
1881
- ),
1882
- ),
1883
- ),
1910
+ Effect.gen(function* () {
1911
+ // The child's own deadline and this handler's timeout can win in either
1912
+ // order. Both must deliver the same typed delegation duration failure.
1913
+ if (
1914
+ isDurationPolicyError(childFailure) &&
1915
+ (yield* Clock.currentTimeMillis) >= durationDeadlineMillis
1916
+ )
1917
+ return undefined;
1918
+
1919
+ const report = yield* child.usageReport;
1920
+
1921
+ yield* emit({
1922
+ _tag: "SubagentFailed",
1923
+ ...payload,
1924
+ ...report,
1925
+ errorTag: errorTagOf(childFailure),
1926
+ message: boundedEventText(errorMessageOf(childFailure)),
1927
+ });
1928
+
1929
+ return yield* Effect.fail(
1930
+ options.mapChildFailure === undefined
1931
+ ? executionFailure(
1932
+ "child-failed",
1933
+ errorTagOf(childFailure),
1934
+ "The child Run failed",
1935
+ )
1936
+ : options.mapChildFailure(childFailure),
1937
+ );
1938
+ }),
1884
1939
  ),
1885
1940
  Effect.timeoutOrElse({
1886
- duration: Duration.millis(allocation.durationMillis),
1941
+ duration: Math.max(0, durationDeadlineMillis - (yield* Clock.currentTimeMillis)),
1887
1942
  orElse: () => Effect.succeed(undefined),
1888
1943
  }),
1889
1944
  Effect.tapCause((cause) =>
@@ -1915,14 +1970,14 @@ export function layer<
1915
1970
  ...payload,
1916
1971
  ...report,
1917
1972
  errorTag: "SubagentBudgetExhausted",
1918
- message: `Attached child exceeded its ${allocation.durationMillis}ms delegation duration budget`,
1973
+ message: `Attached child exceeded its ${durationMillis}ms delegation duration budget`,
1919
1974
  });
1920
1975
 
1921
1976
  return yield* SubagentBudgetExhausted.make({
1922
1977
  parentRunId,
1923
1978
  dimension: "duration",
1924
- limitValue: allocation.durationMillis,
1925
- observedValue: allocation.durationMillis,
1979
+ limitValue: durationMillis,
1980
+ observedValue: durationMillis,
1926
1981
  });
1927
1982
  }
1928
1983
  const report = yield* child.usageReport;
@@ -120,7 +120,10 @@ export class SubagentParentBudgetView extends Schema.Class<SubagentParentBudgetV
120
120
  reservations: Schema.Array(SubagentReservationView),
121
121
  }) {}
122
122
 
123
- /** All-or-nothing admission failed: one dimension cannot cover the requested allocation. */
123
+ /**
124
+ * Delegation admission or execution exhausted a bound. A child refused at the
125
+ * in-process parent's reserved finish window reports zero duration limit and usage.
126
+ */
124
127
  export class SubagentBudgetExhausted extends Schema.TaggedError<SubagentBudgetExhausted>()(
125
128
  "SubagentBudgetExhausted",
126
129
  {
@@ -15,6 +15,14 @@ const FinitePositiveDuration = Schema.Duration.pipe(
15
15
  ),
16
16
  );
17
17
 
18
+ const FiniteNonNegativeDuration = Schema.Duration.pipe(
19
+ Schema.refine(
20
+ (duration): duration is Duration.Duration =>
21
+ Duration.isFinite(duration) && !Duration.isNegative(duration),
22
+ { expected: "a finite nonnegative duration" },
23
+ ),
24
+ );
25
+
18
26
  const SubagentPolicyFields = Schema.Struct({
19
27
  /** Total invocation slots, including reserved descendants, available through this delegation budget. */
20
28
  maxChildren: PositiveInt,
@@ -28,6 +36,11 @@ const SubagentPolicyFields = Schema.Struct({
28
36
  maxToolCalls: PositiveInt,
29
37
  /** Wall-clock duration reserved for each child invocation. */
30
38
  maxDuration: FinitePositiveDuration,
39
+ /**
40
+ * Time held back before the in-process parent's deadline; omitted reserves zero.
41
+ * Does not apply to durable attached children or background workers.
42
+ */
43
+ parentReserveDuration: Schema.optionalKey(FiniteNonNegativeDuration),
31
44
  maxInputTokens: Schema.optionalKey(PositiveInt),
32
45
  maxOutputTokens: Schema.optionalKey(PositiveInt),
33
46
  maxCostMicrousd: Schema.optionalKey(Natural),
@@ -38,9 +51,11 @@ type SubagentPolicyFields = typeof SubagentPolicyFields.Type;
38
51
 
39
52
  /** Inputs normalized and validated by `SubagentPolicy.make`. */
40
53
  export type SubagentPolicyInput = Readonly<
41
- Omit<SubagentPolicyFields, "maxDuration"> & {
54
+ Omit<SubagentPolicyFields, "maxDuration" | "parentReserveDuration"> & {
42
55
  /** Finite, positive wall-clock duration accepted in any Effect Duration input form. */
43
56
  readonly maxDuration: Duration.Input;
57
+ /** Finite, nonnegative time reserved for the in-process parent to finish. */
58
+ readonly parentReserveDuration?: Duration.Input;
44
59
  }
45
60
  >;
46
61
 
@@ -55,9 +70,14 @@ export class SubagentPolicy extends Schema.Class<SubagentPolicy>(
55
70
  )(SubagentPolicyFields) {
56
71
  /** Normalize and validate finite delegation bounds, throwing on invalid input. */
57
72
  static override make(input: SubagentPolicyInput): SubagentPolicy {
73
+ const { maxDuration, parentReserveDuration, ...bounds } = input;
74
+
58
75
  return super.make({
59
- ...input,
60
- maxDuration: Duration.fromInputUnsafe(input.maxDuration),
76
+ ...bounds,
77
+ maxDuration: Duration.fromInputUnsafe(maxDuration),
78
+ ...(parentReserveDuration === undefined
79
+ ? {}
80
+ : { parentReserveDuration: Duration.fromInputUnsafe(parentReserveDuration) }),
61
81
  });
62
82
  }
63
83
  }
@@ -6221,17 +6221,31 @@ const make = Effect.fnUntraced(function* (bindings: ReadonlyArray<ResolvedBindin
6221
6221
  ? undefined
6222
6222
  : {
6223
6223
  ...input.usage,
6224
+ // These usage values were validated by the engine. Copy their
6225
+ // owned fields without repeating the same constructor checks.
6224
6226
  modelUsage: input.usage.modelUsage?.map((usage) =>
6225
- ModelCallUsage.make({
6226
- ...usage,
6227
- ...(usage.response === undefined
6228
- ? {}
6229
- : {
6230
- response: ModelResponseIdentity.make({ ...usage.response }),
6231
- }),
6232
- inputTokens: InputTokenUsage.make({ ...usage.inputTokens }),
6233
- outputTokens: OutputTokenUsage.make({ ...usage.outputTokens }),
6234
- }),
6227
+ ModelCallUsage.make(
6228
+ {
6229
+ ...usage,
6230
+ ...(usage.response === undefined
6231
+ ? {}
6232
+ : {
6233
+ response: ModelResponseIdentity.make(
6234
+ { ...usage.response },
6235
+ { disableChecks: true },
6236
+ ),
6237
+ }),
6238
+ inputTokens: InputTokenUsage.make(
6239
+ { ...usage.inputTokens },
6240
+ { disableChecks: true },
6241
+ ),
6242
+ outputTokens: OutputTokenUsage.make(
6243
+ { ...usage.outputTokens },
6244
+ { disableChecks: true },
6245
+ ),
6246
+ },
6247
+ { disableChecks: true },
6248
+ ),
6235
6249
  ),
6236
6250
  },
6237
6251
  }),
@@ -285,6 +285,17 @@ export class RunDurationExhausted extends Schema.TaggedClass<RunDurationExhauste
285
285
  const PersistedPromptMessages = Schema.toEncoded(Prompt.Prompt);
286
286
  const isPersistedPromptMessages = Schema.is(PersistedPromptMessages);
287
287
 
288
+ // Carry the native Prompt proof while preserving the existing JSON wire identity.
289
+ const PersistedResponseMessages = PersistedJson.pipe(
290
+ Schema.refine(
291
+ (input): input is Schema.Json & Prompt.PromptEncoded => isPersistedPromptMessages(input),
292
+ {
293
+ identifier: "@effect-agent/thread/PersistedJson",
294
+ expected: "persisted Effect AI Prompt messages",
295
+ },
296
+ ),
297
+ );
298
+
288
299
  /**
289
300
  * Final model output. Immediate history records the successful Run's source messages for
290
301
  * recall and a full retained model-context snapshot for the next Run. Durable execution
@@ -377,7 +388,7 @@ const ModelResponseRecordedFields = Schema.Struct({
377
388
  runId: RunId,
378
389
  turnId: TurnId,
379
390
  turn: TurnNumber,
380
- messages: PersistedJson,
391
+ messages: PersistedResponseMessages,
381
392
  /**
382
393
  * Number of leading messages that belong only to this Run's evaluated instructions and wake
383
394
  * input. They remain canonical. An unfinished Run retains this exact evaluated prefix;
@@ -399,8 +410,6 @@ const ModelResponseRecordedFields = Schema.Struct({
399
410
  }).check(
400
411
  Schema.makeFilter(
401
412
  (response) => {
402
- if (!isPersistedPromptMessages(response.messages)) return false;
403
-
404
413
  const declarations = response.messages.content.flatMap((message) =>
405
414
  message.role === "assistant" && typeof message.content !== "string"
406
415
  ? message.content.filter(
@@ -426,21 +435,18 @@ const ModelResponseRecordedFields = Schema.Struct({
426
435
  seen.add(operation.toolCallId);
427
436
  }
428
437
 
429
- return declarations.every((call) => call.type === "tool-call" && seen.has(call.id));
438
+ // Equal counts and unique matching operation IDs already cover every declaration.
439
+ return (
440
+ response.runScopedPrefixLength === undefined ||
441
+ (response.runScopedPrefixLength < response.messages.content.length &&
442
+ response.messages.content
443
+ .slice(0, response.runScopedPrefixLength)
444
+ .every((message) => message.role === "system" || message.role === "user"))
445
+ );
430
446
  },
431
- { title: "Every application Tool declaration has unique original operation evidence" },
432
- ),
433
- Schema.makeFilter(
434
- (response) =>
435
- response.runScopedPrefixLength === undefined ||
436
- (isPersistedPromptMessages(response.messages) &&
437
- response.runScopedPrefixLength < response.messages.content.length &&
438
- response.messages.content
439
- .slice(0, response.runScopedPrefixLength)
440
- .every((message) => message.role === "system" || message.role === "user")),
441
447
  {
442
448
  title:
443
- "Run-scoped Prompt prefix contains only instruction/wake messages and leaves one response",
449
+ "Model response has unique original Tool operation evidence and a valid instruction/wake prefix",
444
450
  },
445
451
  ),
446
452
  );